@quillsql/react 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/example/src/App.tsx +3 -3
  2. package/lib/BarList.js +17 -11
  3. package/lib/BarList.js.map +1 -1
  4. package/lib/Chart.d.ts +4 -2
  5. package/lib/Chart.js +67 -24
  6. package/lib/Chart.js.map +1 -1
  7. package/lib/Dashboard.js +10 -7
  8. package/lib/Dashboard.js.map +1 -1
  9. package/lib/DateRangePicker/Calendar.d.ts +2 -1
  10. package/lib/DateRangePicker/Calendar.js +29 -9
  11. package/lib/DateRangePicker/Calendar.js.map +1 -1
  12. package/lib/DateRangePicker/DateRangePicker.d.ts +1 -0
  13. package/lib/DateRangePicker/DateRangePicker.js +4 -4
  14. package/lib/DateRangePicker/DateRangePicker.js.map +1 -1
  15. package/lib/DateRangePicker/DateRangePickerButton.d.ts +2 -1
  16. package/lib/DateRangePicker/DateRangePickerButton.js +22 -4
  17. package/lib/DateRangePicker/DateRangePickerButton.js.map +1 -1
  18. package/lib/PieChart.d.ts +5 -3
  19. package/lib/PieChart.js +31 -12
  20. package/lib/PieChart.js.map +1 -1
  21. package/lib/components/Dropdown/Dropdown.d.ts +1 -0
  22. package/lib/components/Dropdown/Dropdown.js +8 -3
  23. package/lib/components/Dropdown/Dropdown.js.map +1 -1
  24. package/lib/components/Dropdown/DropdownItem.d.ts +1 -0
  25. package/lib/components/Dropdown/DropdownItem.js +19 -3
  26. package/lib/components/Dropdown/DropdownItem.js.map +1 -1
  27. package/lib/styles.css +10192 -5444
  28. package/package.json +1 -1
  29. package/src/BarList.tsx +21 -6
  30. package/src/Chart.tsx +84 -20
  31. package/src/Dashboard.tsx +10 -6
  32. package/src/DateRangePicker/Calendar.tsx +33 -0
  33. package/src/DateRangePicker/DateRangePicker.tsx +10 -1
  34. package/src/DateRangePicker/DateRangePickerButton.tsx +24 -0
  35. package/src/PieChart.tsx +36 -6
  36. package/src/components/Dropdown/Dropdown.tsx +9 -0
  37. package/src/components/Dropdown/DropdownItem.tsx +19 -2
  38. package/tailwind.config.js +3 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quillsql/react",
3
- "version": "1.1.2",
3
+ "version": "1.1.4",
4
4
  "access": "public",
5
5
  "description": "Quill React components for building dashboards and reporting.",
6
6
  "main": "lib/index.js",
package/src/BarList.tsx CHANGED
@@ -138,6 +138,7 @@ const BarList = React.forwardRef<HTMLDivElement, BarListProps>((props, ref) => {
138
138
  ref={ref}
139
139
  style={{
140
140
  width: '100%',
141
+ height: '100%',
141
142
  marginLeft: 25,
142
143
  // background: 'red',
143
144
  marginTop: 20,
@@ -155,7 +156,7 @@ const BarList = React.forwardRef<HTMLDivElement, BarListProps>((props, ref) => {
155
156
  <div
156
157
  // className={twMerge(makeBarListClassName('bars'), 'relative w-full')}
157
158
  className="qq-relative-w-full"
158
- style={{ width: '100%' }}
159
+ style={{ width: '100%', height: '100%' }}
159
160
  >
160
161
  {data.slice(0, Math.floor(NUM_TO_SHOW / 2)).map((item, idx) => {
161
162
  // const Icon = item.icon;
@@ -171,6 +172,7 @@ const BarList = React.forwardRef<HTMLDivElement, BarListProps>((props, ref) => {
171
172
  style={{ maxWidth: 130, minWidth: 130, overflow: 'hidden' }}
172
173
  >
173
174
  <p
175
+ style={{ fontFamily: theme?.fontFamily }}
174
176
  className={twMerge(
175
177
  // makeBarListClassName('barText'),
176
178
  'qq-whitespace-nowrap truncate',
@@ -181,7 +183,10 @@ const BarList = React.forwardRef<HTMLDivElement, BarListProps>((props, ref) => {
181
183
  {item[xAxisField]}
182
184
  </p>
183
185
  </div>
184
- <div style={{ width: '100%' }} className="qq-flex qq-flex-col">
186
+ <div
187
+ style={{ width: '100%', height: '100%' }}
188
+ className="qq-flex qq-flex-col"
189
+ >
185
190
  <div
186
191
  className={`qq-flex qq-items-center qq-h-9 qq-rounded qq-mb-2`}
187
192
  style={{
@@ -197,6 +202,7 @@ const BarList = React.forwardRef<HTMLDivElement, BarListProps>((props, ref) => {
197
202
  )}
198
203
  >
199
204
  <p
205
+ style={{ fontFamily: theme?.fontFamily }}
200
206
  className={twMerge(
201
207
  // makeBarListClassName('barText'),
202
208
  'qq-whitespace-nowrap truncate',
@@ -223,6 +229,7 @@ const BarList = React.forwardRef<HTMLDivElement, BarListProps>((props, ref) => {
223
229
  )}
224
230
  >
225
231
  <p
232
+ style={{ fontFamily: theme?.fontFamily }}
226
233
  className={twMerge(
227
234
  // makeBarListClassName('barText'),
228
235
  'qq-whitespace-nowrap truncate',
@@ -241,7 +248,10 @@ const BarList = React.forwardRef<HTMLDivElement, BarListProps>((props, ref) => {
241
248
  })}
242
249
  {data.length > NUM_TO_SHOW && (
243
250
  <div
244
- style={{ color: theme.chartLabelColor }}
251
+ style={{
252
+ color: theme?.chartLabelColor,
253
+ fontFamily: theme?.fontFamily,
254
+ }}
245
255
  className="qq-text-sm"
246
256
  >
247
257
  ...{data.length - NUM_TO_SHOW} more
@@ -265,6 +275,7 @@ const BarList = React.forwardRef<HTMLDivElement, BarListProps>((props, ref) => {
265
275
  )}
266
276
  >
267
277
  <p
278
+ style={{ fontFamily: theme?.fontFamily }}
268
279
  className={twMerge(
269
280
  makeBarListClassName('labelText'),
270
281
  'qq-whitespace-nowrap truncate',
@@ -286,7 +297,9 @@ const BarList = React.forwardRef<HTMLDivElement, BarListProps>((props, ref) => {
286
297
  ref={ref}
287
298
  style={{
288
299
  width: '100%',
289
- marginLeft: 25,
300
+ height: '100%',
301
+ // height: hei
302
+ // marginLeft: 25,
290
303
  // background: 'red',
291
304
  marginTop: 20,
292
305
  paddingRight: 25,
@@ -294,7 +307,7 @@ const BarList = React.forwardRef<HTMLDivElement, BarListProps>((props, ref) => {
294
307
  }}
295
308
  className={twMerge(
296
309
  // makeBarListClassName('root'),
297
- 'qq-flex qq-justify-between',
310
+ 'qq-flex qq-justify-between qq-h-full qq-w-full',
298
311
  'qq-space-x-6',
299
312
  className
300
313
  )}
@@ -303,7 +316,7 @@ const BarList = React.forwardRef<HTMLDivElement, BarListProps>((props, ref) => {
303
316
  <div
304
317
  // className={twMerge(makeBarListClassName('bars'), 'relative w-full')}
305
318
  className="qq-relative-w-full"
306
- style={{ width: '100%' }}
319
+ style={{ width: 'calc(100%)', height: '100%', paddingLeft: 25 }}
307
320
  >
308
321
  {data.slice(0, NUM_TO_SHOW).map((item, idx) => {
309
322
  // const Icon = item.icon;
@@ -326,6 +339,7 @@ const BarList = React.forwardRef<HTMLDivElement, BarListProps>((props, ref) => {
326
339
  )}
327
340
  >
328
341
  <p
342
+ style={{ fontFamily: theme?.fontFamily }}
329
343
  className={twMerge(
330
344
  // makeBarListClassName('barText'),
331
345
  'qq-whitespace-nowrap truncate',
@@ -362,6 +376,7 @@ const BarList = React.forwardRef<HTMLDivElement, BarListProps>((props, ref) => {
362
376
  )}
363
377
  >
364
378
  <p
379
+ style={{ fontFamily: theme?.fontFamily }}
365
380
  className={twMerge(
366
381
  makeBarListClassName('labelText'),
367
382
  'qq-whitespace-nowrap qq-truncate',
package/src/Chart.tsx CHANGED
@@ -199,11 +199,17 @@ const labelFormatter = (name: string) => {
199
199
 
200
200
  export const ChartTooltipFrame = ({
201
201
  children,
202
+ theme,
202
203
  }: {
203
204
  children: React.ReactNode;
204
205
  }) => (
205
206
  <div
206
- className="qq-bg-white qq-text-sm qq-rounded-md qq-border qq-shadow-lg"
207
+ style={{
208
+ borderStyle: 'solid',
209
+ borderColor: theme.borderColor || '#E5E7EB',
210
+ borderWidth: 1,
211
+ }}
212
+ className="qq-bg-white qq-text-sm qq-rounded-md qq-shadow-lg"
207
213
  // className={twMerge(
208
214
  // 'bg-white',
209
215
  // 'font-normal',
@@ -221,17 +227,24 @@ export interface ChartTooltipRowProps {
221
227
  value: string;
222
228
  name: string;
223
229
  color: Color;
230
+ thee: any;
224
231
  }
225
232
 
226
233
  export const ChartTooltipRow = ({
227
234
  value,
228
235
  name,
229
236
  color,
237
+ theme,
230
238
  }: ChartTooltipRowProps) => (
231
239
  <div className="qq-flex qq-items-center qq-justify-between qq-space-x-8">
232
240
  <div className="qq-flex qq-items-center qq-space-x-2">
233
241
  <span
234
- style={{ background: color, borderWidth: 2, borderColor: 'white' }}
242
+ style={{
243
+ background: color,
244
+ borderWidth: 2,
245
+ borderStyle: 'solid',
246
+ borderColor: 'white',
247
+ }}
235
248
  className={twMerge(
236
249
  // 'shrink-0',
237
250
  // 'bg-black',
@@ -252,12 +265,24 @@ export const ChartTooltipRow = ({
252
265
  // 'font-medium tabular-nums text-right whitespace-nowrap',
253
266
  // 'text-[#212121] !important'
254
267
  // )}
268
+ style={{
269
+ marginTop: 0,
270
+ marginBottom: 0,
271
+ fontFamily: theme.fontFamily,
272
+ color: theme.primaryTextColor,
273
+ }}
255
274
  className="qq-font-medium qq-tabular-nums qq-text-right qq-whitespace-nowrap qq-text-black"
256
275
  >
257
276
  {value}
258
277
  </p>
259
278
  </div>
260
279
  <p
280
+ style={{
281
+ marginTop: 0,
282
+ marginBottom: 0,
283
+ fontFamily: theme.fontFamily,
284
+ color: theme.secondaryTextColor,
285
+ }}
261
286
  className={twMerge(
262
287
  'qq-text-right qq-whitespace-nowrap',
263
288
  // getColorClassNames(DEFAULT_COLOR, colorPalette.text).textColor,
@@ -276,6 +301,7 @@ export interface ChartTooltipProps {
276
301
  label: string;
277
302
  colors: string[];
278
303
  valueFormatter: any;
304
+ theme: any;
279
305
  }
280
306
 
281
307
  const ChartTooltip = ({
@@ -284,12 +310,21 @@ const ChartTooltip = ({
284
310
  label,
285
311
  colors,
286
312
  valueFormatter,
313
+ theme,
287
314
  }: ChartTooltipProps) => {
288
315
  if (active && payload) {
289
316
  return (
290
- <ChartTooltipFrame>
317
+ <ChartTooltipFrame theme={theme}>
291
318
  <div
292
- className="qq-flex qq-flex-col qq-py-2 qq-px-4 qq-border-b qq-gray-200"
319
+ style={{
320
+ borderStyle: 'solid',
321
+ borderBottomColor: theme.borderColor || '#E5E7EB',
322
+ borderTop: 'none',
323
+ borderLeft: 'none',
324
+ borderRight: 'none',
325
+ borderBottomWidth: 1,
326
+ }}
327
+ className="qq-flex qq-flex-col qq-py-2 qq-px-4 qq-gray-200"
293
328
  // className={
294
329
  // twMerge()
295
330
  // getColorClassNames(DEFAULT_COLOR, colorPalette.lightBorder)
@@ -300,7 +335,13 @@ const ChartTooltip = ({
300
335
  // }
301
336
  >
302
337
  <p
303
- style={{ textAlign: 'left' }}
338
+ style={{
339
+ textAlign: 'left',
340
+ marginTop: 0,
341
+ marginBottom: 0,
342
+ fontFamily: theme.fontFamily,
343
+ color: theme.primaryTextColor,
344
+ }}
304
345
  className={twMerge(
305
346
  'qq-text-elem',
306
347
  'qq-text-black',
@@ -335,6 +376,7 @@ const ChartTooltip = ({
335
376
  name={labelFormatter(name)}
336
377
  // color={categoryColors.get(name) ?? BaseColors.Blue}
337
378
  color={colors[idx]}
379
+ theme={theme}
338
380
  />
339
381
  )
340
382
  )}
@@ -519,16 +561,25 @@ const ChartUpdater: React.FC<ChartProps> = ({
519
561
  className="flex flex-col flex-1 h-[100%]"
520
562
  style={{ ...containerStyle, marginLeft: 25 }}
521
563
  >
522
- <Skeleton
523
- count={1}
524
- height={containerStyle?.height}
525
- borderRadius={8}
526
- // highlightColor="#F7F7F8"
527
- highlightColor="#FDFDFD"
528
- // baseColor="#F3F4F6"
529
- baseColor="#F9F9FA"
530
- width={'calc(100% - 50px)'}
531
- />
564
+ <div style={{ height: containerStyle?.height || 300, width: '100%' }}>
565
+ <Skeleton
566
+ count={1}
567
+ // height={containerStyle?.height}
568
+ height={
569
+ containerStyle?.height && containerStyle?.marginTop
570
+ ? containerStyle?.height + containerStyle?.marginTop
571
+ : containerStyle?.height
572
+ ? containerStyle?.height
573
+ : 300
574
+ }
575
+ borderRadius={8}
576
+ // highlightColor="#F7F7F8"
577
+ highlightColor="#FDFDFD"
578
+ // baseColor="#F3F4F6"
579
+ baseColor="#F9F9FA"
580
+ width="100%"
581
+ />
582
+ </div>
532
583
  </div>
533
584
  );
534
585
  }
@@ -550,6 +601,7 @@ const ChartUpdater: React.FC<ChartProps> = ({
550
601
  category={yAxisFields[0].field}
551
602
  index={xAxisField}
552
603
  colors={colors}
604
+ theme={theme}
553
605
  />
554
606
  );
555
607
  }
@@ -597,7 +649,7 @@ const ChartUpdater: React.FC<ChartProps> = ({
597
649
  return (
598
650
  <div
599
651
  style={{
600
- // fontFamily: theme.fontFamily,
652
+ fontFamily: theme.fontFamily,
601
653
  fontSize: 32,
602
654
  color: theme.primaryTextColor,
603
655
  fontWeight: '600',
@@ -609,7 +661,7 @@ const ChartUpdater: React.FC<ChartProps> = ({
609
661
  maxWidth: '100%',
610
662
  textAlign: 'left',
611
663
  overflow: 'hidden',
612
- height: '100%',
664
+ height: containerStyle?.height || '100%',
613
665
  // background: 'red',
614
666
  }}
615
667
  className="qq-flex qq-flex-col qq-text-xl"
@@ -631,6 +683,7 @@ const ChartUpdater: React.FC<ChartProps> = ({
631
683
  xAxisField={chartConfig.xAxisField}
632
684
  xAxisLabel={chartConfig.xAxisLabel}
633
685
  containerStyle={containerStyle}
686
+ theme={theme}
634
687
  />
635
688
  );
636
689
  };
@@ -803,6 +856,7 @@ function BarChart({
803
856
  content={({ active, payload, label }) => {
804
857
  return (
805
858
  <ChartTooltip
859
+ theme={theme}
806
860
  active={active}
807
861
  payload={payload}
808
862
  label={label}
@@ -845,6 +899,7 @@ function LineChart({
845
899
  containerStyle,
846
900
  xAxisField,
847
901
  xAxisLabel,
902
+ theme,
848
903
  }: {
849
904
  colors: string[];
850
905
  yAxisFields: any[];
@@ -852,6 +907,7 @@ function LineChart({
852
907
  containerStyle?: React.CSSProperties;
853
908
  xAxisField: string;
854
909
  xAxisLabel: string;
910
+ theme: any;
855
911
  }) {
856
912
  // console.log('CONTAINER: ', containerStyle);
857
913
  if (!yAxisFields || !yAxisFields.length) {
@@ -880,8 +936,11 @@ function LineChart({
880
936
  // }
881
937
  style={{
882
938
  fontSize: '12px',
883
- fontFamily: 'Inter; Helvetica',
884
- // color: '#6269E9',
939
+ fontFamily:
940
+ theme?.chartLabelFontFamily ||
941
+ theme?.fontFamily ||
942
+ 'Inter; Helvetica',
943
+ color: theme?.chartLabelColor || '#666666',
885
944
  }}
886
945
  // interval="preserveStartEnd"
887
946
  interval="preserveStartEnd"
@@ -906,7 +965,11 @@ function LineChart({
906
965
  tick={{ transform: 'translate(-3, 0)' }}
907
966
  style={{
908
967
  fontSize: '12px',
909
- fontFamily: 'Inter; Helvetica',
968
+ fontFamily:
969
+ theme?.chartLabelFontFamily ||
970
+ theme?.fontFamily ||
971
+ 'Inter; Helvetica',
972
+ color: theme?.chartLabelColor || '#666666',
910
973
  }}
911
974
  tickFormatter={valueFormatter}
912
975
  />
@@ -922,6 +985,7 @@ function LineChart({
922
985
  label={label}
923
986
  valueFormatter={valueFormatter}
924
987
  colors={colors}
988
+ theme={theme}
925
989
  />
926
990
  );
927
991
  }}
package/src/Dashboard.tsx CHANGED
@@ -99,6 +99,7 @@ export default function Dashboard({
99
99
  // change to be set on the dashboard / section as default date range
100
100
  defaultValue={[undefined, undefined, '90d']}
101
101
  onValueChange={onChangeDateFilter}
102
+ theme={theme}
102
103
  />
103
104
  </div>
104
105
  {Object.keys(dashboardSections)
@@ -148,7 +149,7 @@ export default function Dashboard({
148
149
  gridTemplateColumns: `repeat(auto-fill,minmax(${
149
150
  maxColumnWidth || 400
150
151
  }px, 1fr))`,
151
- // gridTemplateRows: `repeat(${170}px)`,
152
+ gridTemplateRows: `repeat(${170}px)`,
152
153
  }}
153
154
  >
154
155
  {dashboardSections[section]
@@ -272,8 +273,8 @@ export default function Dashboard({
272
273
  containerStyle={{
273
274
  display: 'flex',
274
275
  width: '100%',
275
- height: 120,
276
- marginBottom: 50,
276
+ height: 30,
277
+ // marginBottom: 50,
277
278
  marginTop: 20,
278
279
  }}
279
280
  isDateFilter={true}
@@ -293,7 +294,7 @@ export default function Dashboard({
293
294
  ) : null}
294
295
  <div
295
296
  style={{
296
- width: `100%`,
297
+ // width: `100%`,
297
298
  listStyleType: 'none',
298
299
  display: 'grid',
299
300
  gridGap: 25,
@@ -345,8 +346,9 @@ export default function Dashboard({
345
346
  // boxShadow: theme.boxShadow,
346
347
  height: '100%',
347
348
  cursor: 'pointer',
348
- width: '100%',
349
+ // width: '100%',
349
350
  paddingRight: 25,
351
+ minHeight: rowHeight || 400,
350
352
  borderRadius: 8,
351
353
  paddingTop: 20,
352
354
  }}
@@ -368,6 +370,7 @@ export default function Dashboard({
368
370
  display: 'flex',
369
371
  flexDirection: 'column',
370
372
  justifyContent: 'space-between',
373
+ height: '100%',
371
374
  }}
372
375
  >
373
376
  <div
@@ -423,11 +426,12 @@ export default function Dashboard({
423
426
  {/* <Arrow fill={theme.fontColor} /> */}
424
427
  </div>
425
428
  {/* <div style={{ height: 20 }} /> */}
426
- <div style={{ padding: 0 }}>
429
+ <div style={{ padding: 0, height: '100%' }}>
427
430
  <Chart
428
431
  containerStyle={{
429
432
  display: 'flex',
430
433
  width: '100%',
434
+ // TODO: fix fixed height
431
435
  height: 300,
432
436
  marginBottom: 50,
433
437
  marginTop: 30,
@@ -50,6 +50,7 @@ interface CalendarHeaderProps {
50
50
  anchorDate: Date;
51
51
  setStartOfCurrMonth: Dispatch<SetStateAction<Date | null>>;
52
52
  locale: Locale;
53
+ theme: any;
53
54
  }
54
55
 
55
56
  const CalendarHeader = ({
@@ -57,6 +58,7 @@ const CalendarHeader = ({
57
58
  anchorDate,
58
59
  setStartOfCurrMonth,
59
60
  locale,
61
+ theme,
60
62
  }: CalendarHeaderProps) => {
61
63
  const firstDayOfMonth = startOfMonth(anchorDate);
62
64
  const handlePaginationClick = (
@@ -99,6 +101,12 @@ const CalendarHeader = ({
99
101
  )}
100
102
  >
101
103
  <button
104
+ style={{
105
+ borderStyle: 'solid',
106
+ borderBottomWidth: 1,
107
+ borderBottomColor: theme?.borderColor || '#E5E7EB',
108
+ background: theme?.backgroundColor || 'white',
109
+ }}
102
110
  type="button"
103
111
  className={twMerge(
104
112
  makeDateRangePickerClassName('calendarHeaderPrevYearButton'),
@@ -130,6 +138,12 @@ const CalendarHeader = ({
130
138
  />
131
139
  </button>
132
140
  <button
141
+ style={{
142
+ borderStyle: 'solid',
143
+ borderBottomWidth: 1,
144
+ borderBottomColor: theme?.borderColor || '#E5E7EB',
145
+ background: theme?.backgroundColor || 'white',
146
+ }}
133
147
  type="button"
134
148
  name="prevMonth"
135
149
  className={twMerge(
@@ -178,6 +192,12 @@ const CalendarHeader = ({
178
192
  )}
179
193
  >
180
194
  <button
195
+ style={{
196
+ borderStyle: 'solid',
197
+ borderBottomWidth: 1,
198
+ borderBottomColor: theme?.borderColor || '#E5E7EB',
199
+ background: theme?.backgroundColor || 'white',
200
+ }}
181
201
  type="button"
182
202
  name="nextMonth"
183
203
  className={twMerge(
@@ -208,6 +228,12 @@ const CalendarHeader = ({
208
228
  />
209
229
  </button>
210
230
  <button
231
+ style={{
232
+ background: theme?.backgroundColor || 'white',
233
+ borderStyle: 'solid',
234
+ borderWidth: 1,
235
+ borderColor: theme?.borderColor || '#E5E7EB',
236
+ }}
211
237
  type="button"
212
238
  className={twMerge(
213
239
  makeDateRangePickerClassName('calendarHeaderNextYearButton'),
@@ -252,6 +278,7 @@ interface CalendarBodyProps {
252
278
  minDate: Date | null;
253
279
  maxDate: Date | null;
254
280
  locale: Locale;
281
+ theme: any;
255
282
  }
256
283
 
257
284
  const CalendarBody = ({
@@ -262,6 +289,7 @@ const CalendarBody = ({
262
289
  minDate,
263
290
  maxDate,
264
291
  locale,
292
+ theme,
265
293
  }: CalendarBodyProps) => {
266
294
  const [hoveredDate, setHoveredDate] = useState<Date | undefined>();
267
295
  const color = useContext(BaseColorContext);
@@ -347,6 +375,7 @@ const CalendarBody = ({
347
375
  )}
348
376
  >
349
377
  <button
378
+ style={{ border: 'none' }}
350
379
  type="button"
351
380
  onClick={() => onDateClick(date)}
352
381
  onPointerEnter={() => setHoveredDate?.(date)}
@@ -388,6 +417,7 @@ export interface CalendarProps {
388
417
  maxDate: Date | null;
389
418
  onDateClick: (date: Date) => void;
390
419
  locale: Locale;
420
+ theme: any;
391
421
  }
392
422
 
393
423
  const Calendar = ({
@@ -400,6 +430,7 @@ const Calendar = ({
400
430
  maxDate,
401
431
  onDateClick,
402
432
  locale,
433
+ theme,
403
434
  }: CalendarProps) => {
404
435
  return (
405
436
  <div className={twMerge(spacing.lg.paddingX, spacing.twoXs.paddingY)}>
@@ -408,6 +439,7 @@ const Calendar = ({
408
439
  anchorDate={anchorDate}
409
440
  setStartOfCurrMonth={setStartOfCurrMonth}
410
441
  locale={locale}
442
+ theme={theme}
411
443
  />
412
444
  <CalendarBody
413
445
  anchorDate={anchorDate}
@@ -417,6 +449,7 @@ const Calendar = ({
417
449
  minDate={minDate}
418
450
  maxDate={maxDate}
419
451
  locale={locale}
452
+ theme={theme}
420
453
  />
421
454
  </div>
422
455
  );
@@ -57,6 +57,7 @@ export interface DateRangePickerProps
57
57
  disabled?: boolean;
58
58
  color?: string;
59
59
  locale?: Locale;
60
+ theme: any;
60
61
  }
61
62
 
62
63
  const DateRangePicker = React.forwardRef<HTMLDivElement, DateRangePickerProps>(
@@ -76,6 +77,7 @@ const DateRangePicker = React.forwardRef<HTMLDivElement, DateRangePickerProps>(
76
77
  enableYearPagination = false,
77
78
  locale = enUS,
78
79
  className,
80
+ theme,
79
81
  ...other
80
82
  } = props;
81
83
 
@@ -196,6 +198,7 @@ const DateRangePicker = React.forwardRef<HTMLDivElement, DateRangePickerProps>(
196
198
  onDropdownKeyDown={handleDropdownKeyDown}
197
199
  locale={locale}
198
200
  dropdownPlaceholder={dropdownPlaceholder}
201
+ theme={theme}
199
202
  />
200
203
  {/* Calendar Modal */}
201
204
  <Modal
@@ -217,6 +220,7 @@ const DateRangePicker = React.forwardRef<HTMLDivElement, DateRangePickerProps>(
217
220
  onDateClick={handleDateClick}
218
221
  locale={locale}
219
222
  setStartOfCurrMonth={setStartOfCurrMonth}
223
+ theme={theme}
220
224
  />
221
225
  </Modal>
222
226
  {/* Dropdpown Modal */}
@@ -237,7 +241,12 @@ const DateRangePicker = React.forwardRef<HTMLDivElement, DateRangePickerProps>(
237
241
  >
238
242
  {dropdownOptions.map(
239
243
  ({ value, text }: DateRangePickerOption) => (
240
- <DropdownItem key={value} value={value} text={text} />
244
+ <DropdownItem
245
+ key={value}
246
+ value={value}
247
+ text={text}
248
+ theme={theme}
249
+ />
241
250
  )
242
251
  )}
243
252
  </HoveredValueContext.Provider>
@@ -39,6 +39,7 @@ interface DateRangePickerButtonProps {
39
39
  onDropdownKeyDown: (e: React.KeyboardEvent<HTMLButtonElement>) => void;
40
40
  locale?: Locale;
41
41
  dropdownPlaceholder?: string;
42
+ theme: any;
42
43
  }
43
44
 
44
45
  const DateRangePickerButton = ({
@@ -57,6 +58,7 @@ const DateRangePickerButton = ({
57
58
  onDropdownKeyDown,
58
59
  locale,
59
60
  dropdownPlaceholder = 'Select',
61
+ theme,
60
62
  }: DateRangePickerButtonProps) => {
61
63
  const [startDate, endDate, dropdownValue] = value;
62
64
 
@@ -83,6 +85,13 @@ const DateRangePickerButton = ({
83
85
  >
84
86
  <button
85
87
  type="button"
88
+ style={{
89
+ borderColor: theme?.borderColor || '#E5E7EB',
90
+ borderStyle: 'solid',
91
+ fontFamily: theme?.fontFamily,
92
+ color: theme?.primaryTextColor,
93
+ cursor: 'pointer',
94
+ }}
86
95
  ref={calendarRef}
87
96
  onClick={() => setShowCalendar(!showCalendar)}
88
97
  onKeyDown={onCalendarKeyDown}
@@ -115,6 +124,11 @@ const DateRangePickerButton = ({
115
124
  aria-hidden="true"
116
125
  />
117
126
  <p
127
+ style={{
128
+ margin: 0,
129
+ fontFamily: theme?.fontFamily,
130
+ color: theme?.primaryTextColor,
131
+ }}
118
132
  className={twMerge(
119
133
  makeDateRangePickerClassName('calendarButtonText'),
120
134
  'qq-whitespace-nowrap qq-truncate',
@@ -128,6 +142,11 @@ const DateRangePickerButton = ({
128
142
  {enableDropdown ? (
129
143
  <button
130
144
  type="button"
145
+ style={{
146
+ borderColor: theme?.borderColor || '#E5E7EB',
147
+ borderStyle: 'solid',
148
+ cursor: 'pointer',
149
+ }}
131
150
  ref={dropdownRef}
132
151
  onClick={() => setShowDropdown(!showDropdown)}
133
152
  className={twMerge(
@@ -146,6 +165,11 @@ const DateRangePickerButton = ({
146
165
  disabled={disabled}
147
166
  >
148
167
  <p
168
+ style={{
169
+ margin: 0,
170
+ fontFamily: theme?.fontFamily,
171
+ color: theme?.primaryTextColor,
172
+ }}
149
173
  className={twMerge(
150
174
  makeDateRangePickerClassName('dropdownButtonText'),
151
175
  'qq-whitespace-nowrap qq-truncate',