@@ -2,12 +2,13 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react";
2
2
import DialogActions from "@mui/material/DialogActions" ;
3
3
import TextField from "@mui/material/TextField" ;
4
4
import type { BannerConfig } from "api/typesGenerated" ;
5
+ import { Button } from "components/Button/Button" ;
5
6
import { Dialog , DialogActionButtons } from "components/Dialogs/Dialog" ;
6
7
import { Stack } from "components/Stack/Stack" ;
7
8
import { useFormik } from "formik" ;
8
9
import { AnnouncementBannerView } from "modules/dashboard/AnnouncementBanners/AnnouncementBannerView" ;
9
- import type { FC } from "react" ;
10
- import { BlockPicker } from "react-color" ;
10
+ import { type FC , useState } from "react" ;
11
+ import { SliderPicker , TwitterPicker } from "react-color" ;
11
12
import { getFormHelpers } from "utils/formUtils" ;
12
13
13
14
interface AnnouncementBannerDialogProps {
@@ -29,12 +30,14 @@ export const AnnouncementBannerDialog: FC<AnnouncementBannerDialogProps> = ({
29
30
} > ( {
30
31
initialValues : {
31
32
message : banner . message ?? "" ,
32
- background_color : banner . background_color ?? "#004852 " ,
33
+ background_color : banner . background_color ?? "#ABB8C3 " ,
33
34
} ,
34
35
onSubmit : ( banner ) => onUpdate ( banner ) ,
35
36
} ) ;
36
37
const bannerFieldHelpers = getFormHelpers ( bannerForm ) ;
37
38
39
+ const [ showHuePicker , setShowHuePicker ] = useState ( false ) ;
40
+
38
41
return (
39
42
< Dialog css = { styles . dialogWrapper } open onClose = { onCancel } >
40
43
{ /* Banner preview */ }
@@ -64,29 +67,67 @@ export const AnnouncementBannerDialog: FC<AnnouncementBannerDialogProps> = ({
64
67
</ div >
65
68
< div >
66
69
< h4 css = { styles . settingName } > Background color</ h4 >
67
- < BlockPicker
68
- color = { bannerForm . values . background_color }
69
- onChange = { async ( color ) => {
70
- await bannerForm . setFieldValue ( "background_color" , color . hex ) ;
71
- } }
72
- triangle = "hide"
73
- colors = { [ "#004852" , "#D65D0F" , "#4CD473" , "#D94A5D" , "#5A00CF" ] }
74
- styles = { {
75
- default : {
76
- input : {
77
- color : "white" ,
78
- backgroundColor : theme . palette . background . default ,
79
- } ,
80
- body : {
81
- backgroundColor : "black" ,
82
- color : "white" ,
83
- } ,
84
- card : {
85
- backgroundColor : "black" ,
86
- } ,
87
- } ,
88
- } }
89
- />
70
+ < Stack spacing = { 2 } >
71
+ { showHuePicker ? (
72
+ < SliderPicker
73
+ color = { bannerForm . values . background_color }
74
+ onChange = { async ( color ) => {
75
+ await bannerForm . setFieldValue (
76
+ "background_color" ,
77
+ color . hex ,
78
+ ) ;
79
+ } }
80
+ />
81
+ ) : (
82
+ < TwitterPicker
83
+ color = { bannerForm . values . background_color }
84
+ onChange = { async ( color ) => {
85
+ await bannerForm . setFieldValue (
86
+ "background_color" ,
87
+ color . hex ,
88
+ ) ;
89
+ } }
90
+ triangle = "hide"
91
+ colors = { [
92
+ "#8b5cf6" ,
93
+ "#d94a5d" ,
94
+ "#f78da7" ,
95
+ "#d65d0f" ,
96
+ "#ff6900" ,
97
+ "#fcb900" ,
98
+ "#0693e3" ,
99
+
100
+ "#8ed1fc" ,
101
+ "#4cd473" ,
102
+ "#abb8c3" ,
103
+ ] }
104
+ styles = { {
105
+ default : {
106
+ input : {
107
+ color : "white" ,
108
+ backgroundColor : theme . palette . background . default ,
109
+ } ,
110
+ body : {
111
+ backgroundColor : "transparent" ,
112
+ color : "white" ,
113
+ padding : 0 ,
114
+ } ,
115
+ card : {
116
+ backgroundColor : "transparent" ,
117
+ } ,
118
+ } ,
119
+ } }
120
+ />
121
+ ) }
122
+ < div >
123
+ < Button
124
+ variant = "outline"
125
+ onClick = { ( ) => setShowHuePicker ( ( it ) => ! it ) }
126
+ >
127
+ Show { showHuePicker ? "palette" : "slider" }
128
+ </ Button >
129
+ </ div >
130
+ </ Stack >
90
131
</ div >
91
132
</ Stack >
92
133
</ div >
0 commit comments