1
1
import { type Interpolation , type Theme , useTheme } from "@emotion/react" ;
2
+ import { Button } from "@mui/material" ;
2
3
import DialogActions from "@mui/material/DialogActions" ;
3
4
import TextField from "@mui/material/TextField" ;
4
5
import type { BannerConfig } from "api/typesGenerated" ;
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 { useState , type FC } 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 */ }
@@ -63,29 +66,62 @@ export const AnnouncementBannerDialog: FC<AnnouncementBannerDialogProps> = ({
63
66
</ div >
64
67
< div >
65
68
< h4 css = { styles . settingName } > Background color</ h4 >
66
- < BlockPicker
67
- color = { bannerForm . values . background_color }
68
- onChange = { async ( color ) => {
69
- await bannerForm . setFieldValue ( "background_color" , color . hex ) ;
70
- } }
71
- triangle = "hide"
72
- colors = { [ "#004852" , "#D65D0F" , "#4CD473" , "#D94A5D" , "#5A00CF" ] }
73
- styles = { {
74
- default : {
75
- input : {
76
- color : "white" ,
77
- backgroundColor : theme . palette . background . default ,
78
- } ,
79
- body : {
80
- backgroundColor : "black" ,
81
- color : "white" ,
82
- } ,
83
- card : {
84
- backgroundColor : "black" ,
85
- } ,
86
- } ,
87
- } }
88
- />
69
+ < Stack spacing = { 2 } >
70
+ { showHuePicker ? (
71
+ < SliderPicker
72
+ color = { bannerForm . values . background_color }
73
+ onChange = { async ( color ) => {
74
+ await bannerForm . setFieldValue (
75
+ "background_color" ,
76
+ color . hex ,
77
+ ) ;
78
+ } }
79
+ />
80
+ ) : (
81
+ < TwitterPicker
82
+ color = { bannerForm . values . background_color }
83
+ onChange = { async ( color ) => {
84
+ await bannerForm . setFieldValue (
85
+ "background_color" ,
86
+ color . hex ,
87
+ ) ;
88
+ } }
89
+ triangle = "hide"
90
+ colors = { [
91
+ "#8b5cf6" ,
92
+ "#d94a5d" ,
93
+ "#f78da7" ,
94
+ "#d65d0f" ,
95
+ "#ff6900" ,
96
+ "#fcb900" ,
97
+ "#0693e3" ,
98
+
99
+ "#8ed1fc" ,
100
+ "#4cd473" ,
101
+ "#abb8c3" ,
102
+ ] }
103
+ styles = { {
104
+ default : {
105
+ input : {
106
+ color : "white" ,
107
+ backgroundColor : theme . palette . background . default ,
108
+ } ,
109
+ body : {
110
+ backgroundColor : "transparent" ,
111
+ color : "white" ,
112
+ padding : 0 ,
113
+ } ,
114
+ card : {
115
+ backgroundColor : "transparent" ,
116
+ } ,
117
+ } ,
118
+ } }
119
+ />
120
+ ) }
121
+ < Button onClick = { ( ) => setShowHuePicker ( ( it ) => ! it ) } >
122
+ Show { showHuePicker ? "palette" : "slider" }
123
+ </ Button >
124
+ </ Stack >
89
125
</ div >
90
126
</ Stack >
91
127
</ div >
0 commit comments