@clickhouse/click-ui 0.2.0-rc.6 → 0.2.0-rc.8

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 (86) hide show
  1. package/README.md +67 -0
  2. package/dist/cjs/click-ui.css +3861 -0
  3. package/dist/cjs/components/Button/Button.css +261 -0
  4. package/dist/cjs/components/Button/Button.module.css.cjs +38 -0
  5. package/dist/cjs/components/Button/Button.module.css.cjs.map +1 -0
  6. package/dist/cjs/components/Button/index.cjs +42 -126
  7. package/dist/cjs/components/Button/index.cjs.map +1 -1
  8. package/dist/cjs/components/ButtonGroup/index.cjs +1 -1
  9. package/dist/cjs/components/ButtonGroup/index.cjs.map +1 -1
  10. package/dist/cjs/components/DatePicker/Common.cjs +100 -73
  11. package/dist/cjs/components/DatePicker/Common.cjs.map +1 -1
  12. package/dist/cjs/components/DatePicker/DateRangePicker.cjs +24 -24
  13. package/dist/cjs/components/DatePicker/DateRangePicker.cjs.map +1 -1
  14. package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs +96 -50
  15. package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs.map +1 -1
  16. package/dist/cjs/components/DatePicker/index.cjs +29 -18
  17. package/dist/cjs/components/DatePicker/index.cjs.map +1 -1
  18. package/dist/cjs/components/DatePicker/utils.cjs +42 -14
  19. package/dist/cjs/components/DatePicker/utils.cjs.map +1 -1
  20. package/dist/cjs/components/GenericMenu/index.cjs +1 -1
  21. package/dist/cjs/components/GenericMenu/index.cjs.map +1 -1
  22. package/dist/cjs/lib/cva.cjs +15 -0
  23. package/dist/cjs/lib/cva.cjs.map +1 -0
  24. package/dist/cjs/providers/ThemeProvider.cjs +4 -0
  25. package/dist/cjs/providers/ThemeProvider.cjs.map +1 -1
  26. package/dist/cjs/theme/styles/tokens-dark.css +1806 -0
  27. package/dist/cjs/theme/styles/tokens-light.css +1795 -0
  28. package/dist/cjs/theme/theme.config.json.cjs +12 -0
  29. package/dist/cjs/theme/theme.config.json.cjs.map +1 -0
  30. package/dist/cjs/theme/tokens/variables.dark.cjs +2 -4
  31. package/dist/cjs/theme/tokens/variables.dark.cjs.map +1 -1
  32. package/dist/cjs/theme/tokens/variables.light.cjs +1 -6
  33. package/dist/cjs/theme/tokens/variables.light.cjs.map +1 -1
  34. package/dist/cjs/utils/localStorage.cjs +3 -1
  35. package/dist/cjs/utils/localStorage.cjs.map +1 -1
  36. package/dist/esm/click-ui.css +3861 -0
  37. package/dist/esm/components/Button/Button.css +261 -0
  38. package/dist/esm/components/Button/Button.module.css.js +25 -0
  39. package/dist/esm/components/Button/Button.module.css.js.map +1 -0
  40. package/dist/esm/components/Button/index.js +42 -126
  41. package/dist/esm/components/Button/index.js.map +1 -1
  42. package/dist/esm/components/ButtonGroup/index.js +1 -1
  43. package/dist/esm/components/ButtonGroup/index.js.map +1 -1
  44. package/dist/esm/components/DatePicker/Common.js +101 -74
  45. package/dist/esm/components/DatePicker/Common.js.map +1 -1
  46. package/dist/esm/components/DatePicker/DateRangePicker.js +25 -25
  47. package/dist/esm/components/DatePicker/DateRangePicker.js.map +1 -1
  48. package/dist/esm/components/DatePicker/DateTimeRangePicker.js +97 -51
  49. package/dist/esm/components/DatePicker/DateTimeRangePicker.js.map +1 -1
  50. package/dist/esm/components/DatePicker/index.js +30 -19
  51. package/dist/esm/components/DatePicker/index.js.map +1 -1
  52. package/dist/esm/components/DatePicker/utils.js +36 -10
  53. package/dist/esm/components/DatePicker/utils.js.map +1 -1
  54. package/dist/esm/components/GenericMenu/index.js +1 -1
  55. package/dist/esm/components/GenericMenu/index.js.map +1 -1
  56. package/dist/esm/lib/cva.js +7 -0
  57. package/dist/esm/lib/cva.js.map +1 -0
  58. package/dist/esm/providers/ThemeProvider.js +4 -0
  59. package/dist/esm/providers/ThemeProvider.js.map +1 -1
  60. package/dist/esm/theme/styles/tokens-dark.css +1806 -0
  61. package/dist/esm/theme/styles/tokens-light.css +1795 -0
  62. package/dist/esm/theme/theme.config.json.js +7 -0
  63. package/dist/esm/theme/theme.config.json.js.map +1 -0
  64. package/dist/esm/theme/tokens/variables.dark.js +2 -4
  65. package/dist/esm/theme/tokens/variables.dark.js.map +1 -1
  66. package/dist/esm/theme/tokens/variables.light.js +1 -6
  67. package/dist/esm/theme/tokens/variables.light.js.map +1 -1
  68. package/dist/esm/utils/localStorage.js +3 -1
  69. package/dist/esm/utils/localStorage.js.map +1 -1
  70. package/dist/types/components/Button/Button.d.ts +25 -2
  71. package/dist/types/components/DatePicker/Common.d.ts +9 -4
  72. package/dist/types/components/DatePicker/DatePicker.d.ts +11 -2
  73. package/dist/types/components/DatePicker/DateRangePicker.d.ts +3 -2
  74. package/dist/types/components/DatePicker/DateTimeRangePicker.d.ts +7 -3
  75. package/dist/types/components/DatePicker/index.d.ts +3 -2
  76. package/dist/types/components/DatePicker/utils.d.ts +9 -8
  77. package/dist/types/index.d.ts +1 -1
  78. package/dist/types/lib/cva.d.ts +3 -0
  79. package/dist/types/theme/theme.config.json.d.ts +6 -0
  80. package/dist/types/theme/theme.core.d.ts +0 -7
  81. package/dist/types/theme/tokens/variables.dark.d.ts +0 -2
  82. package/dist/types/theme/tokens/variables.light.d.ts +0 -5
  83. package/dist/types/utils/dom.d.ts +1 -1
  84. package/dist/types/utils/localStorage.d.ts +1 -1
  85. package/package.json +26 -10
  86. package/dist/types/components/DatePicker/DatePicker.types.d.ts +0 -9
@@ -1,9 +1,10 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useState, useEffect, useCallback, useRef } from 'react';
2
+ import { useState, useEffect, useCallback, useMemo, useRef } from 'react';
3
3
  import { isSameDate } from '@h6s/calendar';
4
4
  import * as RadixPopover from '@radix-ui/react-popover';
5
5
  import { styled } from 'styled-components';
6
6
  import { DatePickerInput, CalendarRenderer, DateTableCell } from './Common.js';
7
+ import { shiftToTimezone, shiftFromTimezone } from './utils.js';
7
8
 
8
9
  const DAYS_IN_WEEK = 7;
9
10
  const PopoverTrigger = styled(RadixPopover.Trigger).withConfig({
@@ -26,12 +27,19 @@ const Calendar = ({
26
27
  futureDatesDisabled,
27
28
  selectedDate,
28
29
  setSelectedDate,
29
- autoFocus = false
30
+ autoFocus = false,
31
+ timezone
30
32
  }) => {
31
33
  const allDays = calendarBody.value.flatMap((week) => week.value);
32
34
  const totalDays = allDays.length;
33
- const today = /* @__PURE__ */ new Date();
34
- const initialFocusIndex = allDays.findIndex((day) => selectedDate ? isSameDate(selectedDate, day.value) : isSameDate(today, day.value));
35
+ const today = shiftToTimezone(/* @__PURE__ */ new Date(), timezone);
36
+ const shiftedSelected = selectedDate ? shiftToTimezone(selectedDate, timezone) : void 0;
37
+ const shiftedAllowList = useMemo(() => {
38
+ return allowOnlyDatesList?.map((date) => {
39
+ return shiftToTimezone(date, timezone);
40
+ });
41
+ }, [allowOnlyDatesList, timezone]);
42
+ const initialFocusIndex = allDays.findIndex((day) => shiftedSelected ? isSameDate(shiftedSelected, day.value) : isSameDate(today, day.value));
35
43
  const [focusedDayIndex, setFocusedDayIndex] = useState(initialFocusIndex >= 0 ? initialFocusIndex : 0);
36
44
  const dayRefs = useRef([]);
37
45
  useEffect(() => {
@@ -45,30 +53,30 @@ const Calendar = ({
45
53
  return () => clearTimeout(timeoutId);
46
54
  }
47
55
  }, [autoFocus, initialFocusIndex]);
48
- const onDayKeyDown = useCallback((e, index, fullDate, isDisabled) => {
56
+ const onDayKeyDown = useCallback((event, index, fullDate, isDisabled) => {
49
57
  let newIndex = index;
50
- switch (e.key) {
58
+ switch (event.key) {
51
59
  case "ArrowRight":
52
- e.preventDefault();
60
+ event.preventDefault();
53
61
  newIndex = (index + 1) % totalDays;
54
62
  break;
55
63
  case "ArrowLeft":
56
- e.preventDefault();
64
+ event.preventDefault();
57
65
  newIndex = (index - 1 + totalDays) % totalDays;
58
66
  break;
59
67
  case "ArrowDown":
60
- e.preventDefault();
68
+ event.preventDefault();
61
69
  newIndex = (index + DAYS_IN_WEEK) % totalDays;
62
70
  break;
63
71
  case "ArrowUp":
64
- e.preventDefault();
72
+ event.preventDefault();
65
73
  newIndex = (index - DAYS_IN_WEEK + totalDays) % totalDays;
66
74
  break;
67
75
  case "Enter":
68
76
  case " ":
69
- e.preventDefault();
77
+ event.preventDefault();
70
78
  if (!isDisabled) {
71
- setSelectedDate(fullDate);
79
+ setSelectedDate(shiftFromTimezone(fullDate, timezone));
72
80
  closeDatepicker();
73
81
  }
74
82
  return;
@@ -77,7 +85,7 @@ const Calendar = ({
77
85
  }
78
86
  setFocusedDayIndex(newIndex);
79
87
  dayRefs.current[newIndex]?.focus();
80
- }, [totalDays, setSelectedDate, closeDatepicker]);
88
+ }, [totalDays, setSelectedDate, closeDatepicker, timezone]);
81
89
  let dayIndex = 0;
82
90
  return calendarBody.value.map(({
83
91
  key: weekKey,
@@ -89,9 +97,11 @@ const Calendar = ({
89
97
  key: dayKey,
90
98
  value: fullDate
91
99
  }) => {
92
- const isSelected = selectedDate && isSameDate(selectedDate, fullDate);
100
+ const isSelected = shiftedSelected && isSameDate(shiftedSelected, fullDate);
93
101
  const isPresent = isSameDate(today, fullDate);
94
- const isNotAllowed = allowOnlyDatesList && allowOnlyDatesList.length > 0 && !allowOnlyDatesList.some((d) => isSameDate(d, fullDate));
102
+ const isNotAllowed = shiftedAllowList && shiftedAllowList.length > 0 && !shiftedAllowList.some((shiftedDate) => {
103
+ return isSameDate(shiftedDate, fullDate);
104
+ });
95
105
  const isFutureDisabled = futureDatesDisabled && fullDate > today;
96
106
  const isDisabled = isNotAllowed || isFutureDisabled;
97
107
  const currentIndex = dayIndex;
@@ -100,7 +110,7 @@ const Calendar = ({
100
110
  if (isDisabled) {
101
111
  return false;
102
112
  }
103
- setSelectedDate(fullDate);
113
+ setSelectedDate(shiftFromTimezone(fullDate, timezone));
104
114
  closeDatepicker();
105
115
  };
106
116
  return /* @__PURE__ */ jsx(DateTableCell, { ref: (el) => {
@@ -115,7 +125,8 @@ const DatePicker = ({
115
125
  disabled = false,
116
126
  futureDatesDisabled = false,
117
127
  onSelectDate,
118
- placeholder
128
+ placeholder,
129
+ timezone = "system"
119
130
  }) => {
120
131
  const [isOpen, setIsOpen] = useState(false);
121
132
  const [selectedDate, setSelectedDate] = useState();
@@ -167,8 +178,8 @@ const DatePicker = ({
167
178
  }
168
179
  }, []);
169
180
  return /* @__PURE__ */ jsxs(RadixPopover.Root, { onOpenChange, open: isOpen, children: [
170
- /* @__PURE__ */ jsx(PopoverTrigger, { disabled, onKeyDown: onTriggerKeyDown, children: /* @__PURE__ */ jsx(DatePickerInput, { "data-testid": "datepicker-input-container", disabled, isActive: isOpen, partialMonth, partialYear, placeholder, selectedDate }) }),
171
- /* @__PURE__ */ jsx(RadixPopover.Portal, { children: /* @__PURE__ */ jsx(PopoverContent, { align: "start", sideOffset: 4, children: /* @__PURE__ */ jsx(CalendarRenderer, { calendarOptions, onYearSelect, onMonthSelect, selectedDate, children: (body) => /* @__PURE__ */ jsx(Calendar, { allowOnlyDatesList, autoFocus: autoFocusCalendar, calendarBody: body, closeDatepicker: onCloseDatePicker, futureDatesDisabled, selectedDate, setSelectedDate: onDateSelect }) }) }) })
181
+ /* @__PURE__ */ jsx(PopoverTrigger, { disabled, onKeyDown: onTriggerKeyDown, children: /* @__PURE__ */ jsx(DatePickerInput, { "data-testid": "datepicker-input-container", disabled, isActive: isOpen, partialMonth, partialYear, placeholder, selectedDate, timezone }) }),
182
+ /* @__PURE__ */ jsx(RadixPopover.Portal, { children: /* @__PURE__ */ jsx(PopoverContent, { align: "start", sideOffset: 4, children: /* @__PURE__ */ jsx(CalendarRenderer, { calendarOptions, onYearSelect, onMonthSelect, selectedDate, timezone, children: (body) => /* @__PURE__ */ jsx(Calendar, { allowOnlyDatesList, autoFocus: autoFocusCalendar, calendarBody: body, closeDatepicker: onCloseDatePicker, futureDatesDisabled, selectedDate, setSelectedDate: onDateSelect, timezone }) }) }) })
172
183
  ] });
173
184
  };
174
185
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { KeyboardEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport { isSameDate, UseCalendarOptions } from '@h6s/calendar';\nimport * as Popover from '@radix-ui/react-popover';\nimport { styled } from 'styled-components';\nimport { Body, CalendarRenderer, DatePickerInput, DateTableCell } from './Common';\nimport { DatePickerProps } from './DatePicker.types';\n\nconst DAYS_IN_WEEK = 7;\n\nconst PopoverTrigger = styled(Popover.Trigger)`\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n width: fit-content;\n\n &:disabled {\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: none;\n }\n`;\n\nconst PopoverContent = styled(Popover.Content)`\n z-index: 1;\n outline: none;\n\n ${({ theme }) => `\n border: 1px solid ${theme.click.genericMenu.panel.color.stroke.default};\n background: ${theme.click.genericMenu.panel.color.background.default};\n box-shadow: ${theme.click.genericMenu.panel.shadow.default};\n border-radius: ${theme.click.genericMenu.panel.radii.all};\n `}\n\n &:focus {\n outline: none;\n }\n`;\n\ninterface CalendarProps {\n allowOnlyDatesList?: Array<Date>;\n calendarBody: Body;\n closeDatepicker: () => void;\n futureDatesDisabled: boolean;\n selectedDate?: Date;\n setSelectedDate: (selectedDate: Date) => void;\n autoFocus?: boolean;\n}\n\nconst Calendar = ({\n allowOnlyDatesList,\n calendarBody,\n closeDatepicker,\n futureDatesDisabled,\n selectedDate,\n setSelectedDate,\n autoFocus = false,\n}: CalendarProps) => {\n const allDays = calendarBody.value.flatMap(week => week.value);\n const totalDays = allDays.length;\n\n const today = new Date();\n const initialFocusIndex = allDays.findIndex(day =>\n selectedDate ? isSameDate(selectedDate, day.value) : isSameDate(today, day.value)\n );\n\n const [focusedDayIndex, setFocusedDayIndex] = useState<number>(\n initialFocusIndex >= 0 ? initialFocusIndex : 0\n );\n const dayRefs = useRef<Array<HTMLTableCellElement | null>>([]);\n\n useEffect(() => {\n dayRefs.current[focusedDayIndex]?.focus();\n }, [focusedDayIndex]);\n\n useEffect(() => {\n if (autoFocus && initialFocusIndex >= 0) {\n const timeoutId = setTimeout(() => {\n dayRefs.current[initialFocusIndex]?.focus();\n }, 0);\n return () => clearTimeout(timeoutId);\n }\n }, [autoFocus, initialFocusIndex]);\n\n const onDayKeyDown = useCallback(\n (\n e: KeyboardEvent<HTMLTableCellElement>,\n index: number,\n fullDate: Date,\n isDisabled: boolean\n ) => {\n let newIndex = index;\n\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n newIndex = (index + 1) % totalDays;\n break;\n case 'ArrowLeft':\n e.preventDefault();\n newIndex = (index - 1 + totalDays) % totalDays;\n break;\n case 'ArrowDown':\n e.preventDefault();\n newIndex = (index + DAYS_IN_WEEK) % totalDays;\n break;\n case 'ArrowUp':\n e.preventDefault();\n newIndex = (index - DAYS_IN_WEEK + totalDays) % totalDays;\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n if (!isDisabled) {\n setSelectedDate(fullDate);\n closeDatepicker();\n }\n return;\n default:\n return;\n }\n\n setFocusedDayIndex(newIndex);\n dayRefs.current[newIndex]?.focus();\n },\n [totalDays, setSelectedDate, closeDatepicker]\n );\n\n let dayIndex = 0;\n\n return calendarBody.value.map(({ key: weekKey, value: week }) => {\n return (\n <tr key={weekKey}>\n {week.map(({ date, isCurrentMonth, key: dayKey, value: fullDate }) => {\n const isSelected = selectedDate && isSameDate(selectedDate, fullDate);\n const isPresent = isSameDate(today, fullDate);\n const isNotAllowed =\n allowOnlyDatesList &&\n allowOnlyDatesList.length > 0 &&\n !allowOnlyDatesList.some(d => isSameDate(d, fullDate));\n const isFutureDisabled = futureDatesDisabled && fullDate > today;\n const isDisabled = isNotAllowed || isFutureDisabled;\n const currentIndex = dayIndex;\n dayIndex++;\n\n const handleClick = () => {\n if (isDisabled) {\n return false;\n }\n setSelectedDate(fullDate);\n closeDatepicker();\n };\n\n return (\n <DateTableCell\n ref={el => {\n dayRefs.current[currentIndex] = el;\n }}\n $isCurrentMonth={isCurrentMonth}\n $isDisabled={isDisabled}\n $isSelected={isSelected}\n $isPresent={isPresent}\n key={dayKey}\n onClick={handleClick}\n onKeyDown={e => onDayKeyDown(e, currentIndex, fullDate, isDisabled)}\n tabIndex={currentIndex === focusedDayIndex ? 0 : -1}\n role=\"gridcell\"\n aria-label={fullDate.toDateString()}\n >\n {date}\n </DateTableCell>\n );\n })}\n </tr>\n );\n });\n};\n\nexport const DatePicker = ({\n allowOnlyDatesList,\n date,\n disabled = false,\n futureDatesDisabled = false,\n onSelectDate,\n placeholder,\n}: DatePickerProps) => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [selectedDate, setSelectedDate] = useState<Date>();\n const [partialYear, setPartialYear] = useState<number>();\n const [partialMonth, setPartialMonth] = useState<number>();\n const [autoFocusCalendar, setAutoFocusCalendar] = useState<boolean>(false);\n\n const calendarOptions: UseCalendarOptions = {};\n\n if (selectedDate) {\n calendarOptions.defaultDate = selectedDate;\n }\n\n useEffect(() => {\n if (date) {\n setSelectedDate(date);\n }\n }, [date]);\n\n const resetPartialState = useCallback(() => {\n setPartialYear(undefined);\n setPartialMonth(undefined);\n }, []);\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n setIsOpen(open);\n if (!open) {\n resetPartialState();\n setAutoFocusCalendar(false);\n }\n },\n [resetPartialState]\n );\n\n const onCloseDatePicker = useCallback(() => {\n setIsOpen(false);\n resetPartialState();\n }, [resetPartialState]);\n\n const onDateSelect = useCallback(\n (date: Date): void => {\n setSelectedDate(date);\n onSelectDate(date);\n resetPartialState();\n },\n [onSelectDate, resetPartialState]\n );\n\n const onYearSelect = useCallback((year: number) => {\n setPartialYear(year);\n setPartialMonth(undefined);\n }, []);\n\n const onMonthSelect = useCallback((year: number, month: number) => {\n setPartialYear(year);\n setPartialMonth(month);\n }, []);\n\n const onTriggerKeyDown = useCallback((e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(true);\n setAutoFocusCalendar(true);\n }\n }, []);\n\n return (\n <Popover.Root\n onOpenChange={onOpenChange}\n open={isOpen}\n >\n <PopoverTrigger\n disabled={disabled}\n onKeyDown={onTriggerKeyDown}\n >\n <DatePickerInput\n data-testid=\"datepicker-input-container\"\n disabled={disabled}\n isActive={isOpen}\n partialMonth={partialMonth}\n partialYear={partialYear}\n placeholder={placeholder}\n selectedDate={selectedDate}\n />\n </PopoverTrigger>\n <Popover.Portal>\n <PopoverContent\n align=\"start\"\n sideOffset={4}\n >\n <CalendarRenderer\n calendarOptions={calendarOptions}\n onYearSelect={onYearSelect}\n onMonthSelect={onMonthSelect}\n selectedDate={selectedDate}\n >\n {body => (\n <Calendar\n allowOnlyDatesList={allowOnlyDatesList}\n autoFocus={autoFocusCalendar}\n calendarBody={body}\n closeDatepicker={onCloseDatePicker}\n futureDatesDisabled={futureDatesDisabled}\n selectedDate={selectedDate}\n setSelectedDate={onDateSelect}\n />\n )}\n </CalendarRenderer>\n </PopoverContent>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n"],"names":["DAYS_IN_WEEK","PopoverTrigger","styled","Popover","Trigger","withConfig","componentId","PopoverContent","Content","theme","click","genericMenu","panel","color","stroke","default","background","shadow","radii","all","Calendar","allowOnlyDatesList","calendarBody","closeDatepicker","futureDatesDisabled","selectedDate","setSelectedDate","autoFocus","allDays","value","flatMap","week","totalDays","length","today","Date","initialFocusIndex","findIndex","day","isSameDate","focusedDayIndex","setFocusedDayIndex","useState","dayRefs","useRef","useEffect","current","focus","timeoutId","setTimeout","clearTimeout","onDayKeyDown","useCallback","e","index","fullDate","isDisabled","newIndex","key","preventDefault","dayIndex","map","weekKey","date","isCurrentMonth","dayKey","isSelected","isPresent","isNotAllowed","some","d","isFutureDisabled","currentIndex","handleClick","el","toDateString","DatePicker","disabled","onSelectDate","placeholder","isOpen","setIsOpen","partialYear","setPartialYear","partialMonth","setPartialMonth","autoFocusCalendar","setAutoFocusCalendar","calendarOptions","defaultDate","resetPartialState","undefined","onOpenChange","open","onCloseDatePicker","onDateSelect","onYearSelect","year","onMonthSelect","month","onTriggerKeyDown","body"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { KeyboardEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { isSameDate, UseCalendarOptions } from '@h6s/calendar';\nimport * as Popover from '@radix-ui/react-popover';\nimport { styled } from 'styled-components';\nimport { Body, CalendarRenderer, DatePickerInput, DateTableCell } from './Common';\nimport { shiftFromTimezone, shiftToTimezone, Timezone } from './utils';\n\nconst DAYS_IN_WEEK = 7;\n\nconst PopoverTrigger = styled(Popover.Trigger)`\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n width: fit-content;\n\n &:disabled {\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: none;\n }\n`;\n\nconst PopoverContent = styled(Popover.Content)`\n z-index: 1;\n outline: none;\n\n ${({ theme }) => `\n border: 1px solid ${theme.click.genericMenu.panel.color.stroke.default};\n background: ${theme.click.genericMenu.panel.color.background.default};\n box-shadow: ${theme.click.genericMenu.panel.shadow.default};\n border-radius: ${theme.click.genericMenu.panel.radii.all};\n `}\n\n &:focus {\n outline: none;\n }\n`;\n\ninterface CalendarProps {\n allowOnlyDatesList?: Array<Date>;\n calendarBody: Body;\n closeDatepicker: () => void;\n futureDatesDisabled: boolean;\n selectedDate?: Date;\n setSelectedDate: (selectedDate: Date) => void;\n autoFocus?: boolean;\n timezone: Timezone;\n}\n\nconst Calendar = ({\n allowOnlyDatesList,\n calendarBody,\n closeDatepicker,\n futureDatesDisabled,\n selectedDate,\n setSelectedDate,\n autoFocus = false,\n timezone,\n}: CalendarProps) => {\n const allDays = calendarBody.value.flatMap(week => week.value);\n const totalDays = allDays.length;\n\n const today = shiftToTimezone(new Date(), timezone);\n\n const shiftedSelected = selectedDate\n ? shiftToTimezone(selectedDate, timezone)\n : undefined;\n\n const shiftedAllowList = useMemo(() => {\n return allowOnlyDatesList?.map(date => {\n return shiftToTimezone(date, timezone);\n });\n }, [allowOnlyDatesList, timezone]);\n\n const initialFocusIndex = allDays.findIndex(day =>\n shiftedSelected\n ? isSameDate(shiftedSelected, day.value)\n : isSameDate(today, day.value)\n );\n\n const [focusedDayIndex, setFocusedDayIndex] = useState<number>(\n initialFocusIndex >= 0 ? initialFocusIndex : 0\n );\n const dayRefs = useRef<Array<HTMLTableCellElement | null>>([]);\n\n useEffect(() => {\n dayRefs.current[focusedDayIndex]?.focus();\n }, [focusedDayIndex]);\n\n useEffect(() => {\n if (autoFocus && initialFocusIndex >= 0) {\n const timeoutId = setTimeout(() => {\n dayRefs.current[initialFocusIndex]?.focus();\n }, 0);\n return () => clearTimeout(timeoutId);\n }\n }, [autoFocus, initialFocusIndex]);\n\n const onDayKeyDown = useCallback(\n (\n event: KeyboardEvent<HTMLTableCellElement>,\n index: number,\n fullDate: Date,\n isDisabled: boolean\n ) => {\n let newIndex = index;\n\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n newIndex = (index + 1) % totalDays;\n break;\n case 'ArrowLeft':\n event.preventDefault();\n newIndex = (index - 1 + totalDays) % totalDays;\n break;\n case 'ArrowDown':\n event.preventDefault();\n newIndex = (index + DAYS_IN_WEEK) % totalDays;\n break;\n case 'ArrowUp':\n event.preventDefault();\n newIndex = (index - DAYS_IN_WEEK + totalDays) % totalDays;\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (!isDisabled) {\n setSelectedDate(shiftFromTimezone(fullDate, timezone));\n closeDatepicker();\n }\n return;\n default:\n return;\n }\n\n setFocusedDayIndex(newIndex);\n dayRefs.current[newIndex]?.focus();\n },\n [totalDays, setSelectedDate, closeDatepicker, timezone]\n );\n\n let dayIndex = 0;\n\n return calendarBody.value.map(({ key: weekKey, value: week }) => {\n return (\n <tr key={weekKey}>\n {week.map(({ date, isCurrentMonth, key: dayKey, value: fullDate }) => {\n const isSelected = shiftedSelected && isSameDate(shiftedSelected, fullDate);\n const isPresent = isSameDate(today, fullDate);\n\n const isNotAllowed =\n shiftedAllowList &&\n shiftedAllowList.length > 0 &&\n !shiftedAllowList.some((shiftedDate: Date) => {\n return isSameDate(shiftedDate, fullDate);\n });\n\n const isFutureDisabled = futureDatesDisabled && fullDate > today;\n const isDisabled = isNotAllowed || isFutureDisabled;\n const currentIndex = dayIndex;\n dayIndex++;\n\n const handleClick = () => {\n if (isDisabled) {\n return false;\n }\n setSelectedDate(shiftFromTimezone(fullDate, timezone));\n closeDatepicker();\n };\n\n return (\n <DateTableCell\n ref={el => {\n dayRefs.current[currentIndex] = el;\n }}\n $isCurrentMonth={isCurrentMonth}\n $isDisabled={isDisabled}\n $isSelected={isSelected}\n $isPresent={isPresent}\n key={dayKey}\n onClick={handleClick}\n onKeyDown={e => onDayKeyDown(e, currentIndex, fullDate, isDisabled)}\n tabIndex={currentIndex === focusedDayIndex ? 0 : -1}\n role=\"gridcell\"\n aria-label={fullDate.toDateString()}\n >\n {date}\n </DateTableCell>\n );\n })}\n </tr>\n );\n });\n};\n\nexport interface DatePickerProps {\n allowOnlyDatesList?: Array<Date>;\n date?: Date;\n disabled?: boolean;\n futureDatesDisabled?: boolean;\n onSelectDate: (selectedDate: Date) => void;\n placeholder?: string;\n timezone?: Timezone;\n}\n\nexport const DatePicker = ({\n allowOnlyDatesList,\n date,\n disabled = false,\n futureDatesDisabled = false,\n onSelectDate,\n placeholder,\n timezone = 'system',\n}: DatePickerProps) => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [selectedDate, setSelectedDate] = useState<Date>();\n const [partialYear, setPartialYear] = useState<number>();\n const [partialMonth, setPartialMonth] = useState<number>();\n const [autoFocusCalendar, setAutoFocusCalendar] = useState<boolean>(false);\n\n const calendarOptions: UseCalendarOptions = {};\n\n if (selectedDate) {\n calendarOptions.defaultDate = selectedDate;\n }\n\n useEffect(() => {\n if (date) {\n setSelectedDate(date);\n }\n }, [date]);\n\n const resetPartialState = useCallback(() => {\n setPartialYear(undefined);\n setPartialMonth(undefined);\n }, []);\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n setIsOpen(open);\n if (!open) {\n resetPartialState();\n setAutoFocusCalendar(false);\n }\n },\n [resetPartialState]\n );\n\n const onCloseDatePicker = useCallback(() => {\n setIsOpen(false);\n resetPartialState();\n }, [resetPartialState]);\n\n const onDateSelect = useCallback(\n (date: Date): void => {\n setSelectedDate(date);\n onSelectDate(date);\n resetPartialState();\n },\n [onSelectDate, resetPartialState]\n );\n\n const onYearSelect = useCallback((year: number) => {\n setPartialYear(year);\n setPartialMonth(undefined);\n }, []);\n\n const onMonthSelect = useCallback((year: number, month: number) => {\n setPartialYear(year);\n setPartialMonth(month);\n }, []);\n\n const onTriggerKeyDown = useCallback((e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(true);\n setAutoFocusCalendar(true);\n }\n }, []);\n\n return (\n <Popover.Root\n onOpenChange={onOpenChange}\n open={isOpen}\n >\n <PopoverTrigger\n disabled={disabled}\n onKeyDown={onTriggerKeyDown}\n >\n <DatePickerInput\n data-testid=\"datepicker-input-container\"\n disabled={disabled}\n isActive={isOpen}\n partialMonth={partialMonth}\n partialYear={partialYear}\n placeholder={placeholder}\n selectedDate={selectedDate}\n timezone={timezone}\n />\n </PopoverTrigger>\n <Popover.Portal>\n <PopoverContent\n align=\"start\"\n sideOffset={4}\n >\n <CalendarRenderer\n calendarOptions={calendarOptions}\n onYearSelect={onYearSelect}\n onMonthSelect={onMonthSelect}\n selectedDate={selectedDate}\n timezone={timezone}\n >\n {body => (\n <Calendar\n allowOnlyDatesList={allowOnlyDatesList}\n autoFocus={autoFocusCalendar}\n calendarBody={body}\n closeDatepicker={onCloseDatePicker}\n futureDatesDisabled={futureDatesDisabled}\n selectedDate={selectedDate}\n setSelectedDate={onDateSelect}\n timezone={timezone}\n />\n )}\n </CalendarRenderer>\n </PopoverContent>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n"],"names":["DAYS_IN_WEEK","PopoverTrigger","styled","Popover","Trigger","withConfig","componentId","PopoverContent","Content","theme","click","genericMenu","panel","color","stroke","default","background","shadow","radii","all","Calendar","allowOnlyDatesList","calendarBody","closeDatepicker","futureDatesDisabled","selectedDate","setSelectedDate","autoFocus","timezone","allDays","value","flatMap","week","totalDays","length","today","shiftToTimezone","Date","shiftedSelected","undefined","shiftedAllowList","useMemo","map","date","initialFocusIndex","findIndex","day","isSameDate","focusedDayIndex","setFocusedDayIndex","useState","dayRefs","useRef","useEffect","current","focus","timeoutId","setTimeout","clearTimeout","onDayKeyDown","useCallback","event","index","fullDate","isDisabled","newIndex","key","preventDefault","shiftFromTimezone","dayIndex","weekKey","isCurrentMonth","dayKey","isSelected","isPresent","isNotAllowed","some","shiftedDate","isFutureDisabled","currentIndex","handleClick","el","e","toDateString","DatePicker","disabled","onSelectDate","placeholder","isOpen","setIsOpen","partialYear","setPartialYear","partialMonth","setPartialMonth","autoFocusCalendar","setAutoFocusCalendar","calendarOptions","defaultDate","resetPartialState","onOpenChange","open","onCloseDatePicker","onDateSelect","onYearSelect","year","onMonthSelect","month","onTriggerKeyDown","body"],"mappings":"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"}
@@ -1,31 +1,57 @@
1
+ import '../../utils/date.js';
1
2
  import dayjs from 'dayjs';
2
3
 
3
4
  const locale = "en-US";
4
- const selectedDateFormatter = new Intl.DateTimeFormat(locale, {
5
+ const createFormatter = (options) => {
6
+ const timezoneFormatters = {};
7
+ return (timezone, date) => {
8
+ if (!timezoneFormatters[timezone]) {
9
+ const opts = timezone === "UTC" ? {
10
+ ...options,
11
+ timeZone: "UTC"
12
+ } : options;
13
+ timezoneFormatters[timezone] = new Intl.DateTimeFormat(locale, opts);
14
+ }
15
+ return timezoneFormatters[timezone].format(date);
16
+ };
17
+ };
18
+ const formatSelectedDate = createFormatter({
5
19
  day: "2-digit",
6
20
  month: "short",
7
21
  year: "numeric"
8
22
  });
9
- const weekdayFormatter = new Intl.DateTimeFormat(locale, {
23
+ const formatWeekday = createFormatter({
10
24
  weekday: "short"
11
25
  });
12
- const selectedDateTimeFormatter = new Intl.DateTimeFormat(locale, {
26
+ const formatSelectedDateTime = createFormatter({
13
27
  day: "2-digit",
14
28
  month: "short",
15
29
  hour: "2-digit",
16
30
  minute: "2-digit"
17
31
  });
18
- const selectedDateTimeFormatterWithSeconds = new Intl.DateTimeFormat(locale, {
32
+ const formatSelectedDateTimeWithSeconds = createFormatter({
19
33
  day: "2-digit",
20
34
  month: "short",
21
35
  hour: "2-digit",
22
36
  minute: "2-digit",
23
37
  second: "2-digit"
24
38
  });
25
- const headerDateFormatter = new Intl.DateTimeFormat(locale, {
39
+ const formatDateHeader = createFormatter({
26
40
  month: "short",
27
41
  year: "numeric"
28
42
  });
43
+ const shiftToTimezone = (date, timezone) => {
44
+ if (timezone !== "UTC") {
45
+ return date;
46
+ }
47
+ return new Date(date.getTime() + date.getTimezoneOffset() * 6e4);
48
+ };
49
+ const shiftFromTimezone = (date, timezone) => {
50
+ if (timezone !== "UTC") {
51
+ return date;
52
+ }
53
+ return new Date(date.getTime() - date.getTimezoneOffset() * 6e4);
54
+ };
29
55
  const getPredefinedMonthsForDateRangePicker = (numberOfMonths) => {
30
56
  const now = dayjs();
31
57
  if (numberOfMonths < 0) {
@@ -59,16 +85,16 @@ const datesAreWithinMaxRange = (startDate, endDate, maxRangeLength) => {
59
85
  const isDateRangeTheWholeMonth = ({
60
86
  startDate,
61
87
  endDate
62
- }) => {
63
- if (startDate.getMonth() !== endDate.getMonth()) {
88
+ }, timezone = "system") => {
89
+ const start = timezone === "UTC" ? dayjs.utc(startDate) : dayjs(startDate);
90
+ const end = timezone === "UTC" ? dayjs.utc(endDate) : dayjs(endDate);
91
+ if (start.month() !== end.month()) {
64
92
  return false;
65
93
  }
66
- const start = dayjs(startDate);
67
- const end = dayjs(endDate);
68
94
  const startDateIsFirstDay = start.isSame(start.startOf("month"), "day");
69
95
  const endDateIsLastDay = end.isSame(end.endOf("month"), "day");
70
96
  return startDateIsFirstDay && endDateIsLastDay;
71
97
  };
72
98
 
73
- export { datesAreWithinMaxRange, getPredefinedMonthsForDateRangePicker, headerDateFormatter, isDateRangeTheWholeMonth, selectedDateFormatter, selectedDateTimeFormatter, selectedDateTimeFormatterWithSeconds, weekdayFormatter };
99
+ export { datesAreWithinMaxRange, formatDateHeader, formatSelectedDate, formatSelectedDateTime, formatSelectedDateTimeWithSeconds, formatWeekday, getPredefinedMonthsForDateRangePicker, isDateRangeTheWholeMonth, shiftFromTimezone, shiftToTimezone };
74
100
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../src/components/DatePicker/utils.ts"],"sourcesContent":["import dayjs from 'dayjs';\n\nexport interface DateRange {\n startDate: Date;\n endDate: Date;\n}\n\nconst locale = 'en-US';\n\nexport type Meridiem = 'am' | 'pm';\n\nexport interface Time {\n hour: number;\n minutes: number;\n}\n\nexport interface DateRangeListItem {\n dateRange: DateRange;\n label: string;\n}\n\nexport const selectedDateFormatter = new Intl.DateTimeFormat(locale, {\n day: '2-digit',\n month: 'short',\n year: 'numeric',\n});\n\nexport const weekdayFormatter = new Intl.DateTimeFormat(locale, { weekday: 'short' });\n\nexport const selectedDateTimeFormatter = new Intl.DateTimeFormat(locale, {\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n});\n\nexport const selectedDateTimeFormatterWithSeconds = new Intl.DateTimeFormat(locale, {\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n});\n\nexport const selectedDateTimeDateFormatter = new Intl.DateTimeFormat(locale, {\n day: '2-digit',\n month: 'short',\n});\n\nexport const timeFormatter = new Intl.DateTimeFormat(locale, {\n hour: '2-digit',\n minute: '2-digit',\n});\n\nexport const headerDateFormatter = new Intl.DateTimeFormat(locale, {\n month: 'short',\n year: 'numeric',\n});\n\nexport const getPredefinedMonthsForDateRangePicker = (\n numberOfMonths: number\n): DateRange[] => {\n const now = dayjs();\n\n if (numberOfMonths < 0) {\n const lastSixMonths: DateRange[] = [];\n for (let i = 0; i < Math.abs(numberOfMonths); i++) {\n const date = now.subtract(i, 'month');\n if (date.date() === 1 && date.month() === now.month()) {\n continue;\n }\n lastSixMonths.push({\n startDate: date.startOf('month').toDate(),\n endDate: i === 0 ? now.toDate() : date.endOf('month').toDate(),\n });\n }\n\n return lastSixMonths.reverse();\n }\n\n const nextSixMonths: DateRange[] = [];\n for (let i = 0; i < numberOfMonths; i++) {\n const date = now.add(i, 'month');\n nextSixMonths.push({\n startDate: date.startOf('month').toDate(),\n endDate: date.endOf('month').toDate(),\n });\n }\n\n return nextSixMonths;\n};\n\nexport const getPredefinedTimePeriodsForDateTimePicker = (): DateRangeListItem[] => {\n const now = dayjs();\n\n const fifteenMinutesAgo = now.subtract(15, 'minute');\n const thirtyMinutesAgo = now.subtract(30, 'minute');\n const oneHourAgo = now.subtract(1, 'hour');\n const sixHoursAgo = now.subtract(6, 'hour');\n const oneDayAgo = now.subtract(1, 'day');\n const oneMonthAgo = now.subtract(1, 'month');\n\n const dateRangeList: DateRangeListItem[] = [\n {\n dateRange: {\n startDate: fifteenMinutesAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past 15 minutes',\n },\n {\n dateRange: {\n startDate: thirtyMinutesAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past 30 minutes',\n },\n {\n dateRange: {\n startDate: oneHourAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past hour',\n },\n {\n dateRange: {\n startDate: sixHoursAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past 6 hours',\n },\n {\n dateRange: {\n startDate: oneDayAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past day',\n },\n {\n dateRange: {\n startDate: oneMonthAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past month',\n },\n ];\n\n return dateRangeList;\n};\n\nexport const getNextNDatesForDatePickerAllowOnlyList = (numberOfDays: number): Date[] => {\n const now = dayjs();\n\n return Array.from({ length: numberOfDays }, (_, i) =>\n now.add(i, 'day').startOf('day').toDate()\n );\n};\n\nexport const datesAreWithinMaxRange = (\n startDate: Date,\n endDate: Date,\n maxRangeLength: number\n): boolean => {\n const daysDifference = Math.abs(dayjs(startDate).diff(dayjs(endDate), 'days'));\n\n return daysDifference <= maxRangeLength;\n};\n\nexport const isDateRangeTheWholeMonth = ({ startDate, endDate }: DateRange): boolean => {\n if (startDate.getMonth() !== endDate.getMonth()) {\n return false;\n }\n\n const start = dayjs(startDate);\n const end = dayjs(endDate);\n const startDateIsFirstDay = start.isSame(start.startOf('month'), 'day');\n const endDateIsLastDay = end.isSame(end.endOf('month'), 'day');\n\n return startDateIsFirstDay && endDateIsLastDay;\n};\n"],"names":["locale","selectedDateFormatter","Intl","DateTimeFormat","day","month","year","weekdayFormatter","weekday","selectedDateTimeFormatter","hour","minute","selectedDateTimeFormatterWithSeconds","second","headerDateFormatter","getPredefinedMonthsForDateRangePicker","numberOfMonths","now","dayjs","lastSixMonths","i","Math","abs","date","subtract","push","startDate","startOf","toDate","endDate","endOf","reverse","nextSixMonths","add","datesAreWithinMaxRange","maxRangeLength","daysDifference","diff","isDateRangeTheWholeMonth","getMonth","start","end","startDateIsFirstDay","isSame","endDateIsLastDay"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/components/DatePicker/utils.ts"],"sourcesContent":["import { dayjs } from '@/utils/date';\n\nexport type Timezone = 'system' | 'UTC';\n\nexport interface DateRange {\n startDate: Date;\n endDate: Date;\n}\n\nconst locale = 'en-US';\n\nexport type Meridiem = 'am' | 'pm';\n\nexport interface Time {\n hour: number;\n minutes: number;\n}\n\nexport interface DateRangeListItem {\n dateRange: DateRange;\n label: string;\n}\n\nconst createFormatter = (options: Intl.DateTimeFormatOptions) => {\n const timezoneFormatters: Partial<Record<Timezone, Intl.DateTimeFormat>> = {};\n\n return (timezone: Timezone, date: Date): string => {\n if (!timezoneFormatters[timezone]) {\n const opts = timezone === 'UTC' ? { ...options, timeZone: 'UTC' } : options;\n timezoneFormatters[timezone] = new Intl.DateTimeFormat(locale, opts);\n }\n return timezoneFormatters[timezone].format(date);\n };\n};\n\nexport const formatSelectedDate = createFormatter({\n day: '2-digit',\n month: 'short',\n year: 'numeric',\n});\n\nexport const formatWeekday = createFormatter({ weekday: 'short' });\n\nexport const formatSelectedDateTime = createFormatter({\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n});\n\nexport const formatSelectedDateTimeWithSeconds = createFormatter({\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n});\n\nexport const formatDateHeader = createFormatter({\n month: 'short',\n year: 'numeric',\n});\n\n// In UTC mode, shift by the host offset so local-time getters return UTC\n// values. shiftFromTimezone reverses it.\n//\n// Caveat: round-tripping across a DST boundary drifts by an hour — each\n// direction reads getTimezoneOffset on its own input. Call sites don't\n// round-trip the same Date, so this hasn't bitten us.\nexport const shiftToTimezone = (date: Date, timezone: Timezone): Date => {\n if (timezone !== 'UTC') {\n return date;\n }\n return new Date(date.getTime() + date.getTimezoneOffset() * 60_000);\n};\n\nexport const shiftFromTimezone = (date: Date, timezone: Timezone): Date => {\n if (timezone !== 'UTC') {\n return date;\n }\n return new Date(date.getTime() - date.getTimezoneOffset() * 60_000);\n};\n\nexport const getPredefinedMonthsForDateRangePicker = (\n numberOfMonths: number\n): DateRange[] => {\n const now = dayjs();\n\n if (numberOfMonths < 0) {\n const lastSixMonths: DateRange[] = [];\n for (let i = 0; i < Math.abs(numberOfMonths); i++) {\n const date = now.subtract(i, 'month');\n if (date.date() === 1 && date.month() === now.month()) {\n continue;\n }\n lastSixMonths.push({\n startDate: date.startOf('month').toDate(),\n endDate: i === 0 ? now.toDate() : date.endOf('month').toDate(),\n });\n }\n\n return lastSixMonths.reverse();\n }\n\n const nextSixMonths: DateRange[] = [];\n for (let i = 0; i < numberOfMonths; i++) {\n const date = now.add(i, 'month');\n nextSixMonths.push({\n startDate: date.startOf('month').toDate(),\n endDate: date.endOf('month').toDate(),\n });\n }\n\n return nextSixMonths;\n};\n\nexport const getPredefinedTimePeriodsForDateTimePicker = (): DateRangeListItem[] => {\n const now = dayjs();\n\n const fifteenMinutesAgo = now.subtract(15, 'minute');\n const thirtyMinutesAgo = now.subtract(30, 'minute');\n const oneHourAgo = now.subtract(1, 'hour');\n const sixHoursAgo = now.subtract(6, 'hour');\n const oneDayAgo = now.subtract(1, 'day');\n const oneMonthAgo = now.subtract(1, 'month');\n\n const dateRangeList: DateRangeListItem[] = [\n {\n dateRange: {\n startDate: fifteenMinutesAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past 15 minutes',\n },\n {\n dateRange: {\n startDate: thirtyMinutesAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past 30 minutes',\n },\n {\n dateRange: {\n startDate: oneHourAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past hour',\n },\n {\n dateRange: {\n startDate: sixHoursAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past 6 hours',\n },\n {\n dateRange: {\n startDate: oneDayAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past day',\n },\n {\n dateRange: {\n startDate: oneMonthAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past month',\n },\n ];\n\n return dateRangeList;\n};\n\nexport const getNextNDatesForDatePickerAllowOnlyList = (numberOfDays: number): Date[] => {\n const now = dayjs();\n\n return Array.from({ length: numberOfDays }, (_, i) =>\n now.add(i, 'day').startOf('day').toDate()\n );\n};\n\nexport const datesAreWithinMaxRange = (\n startDate: Date,\n endDate: Date,\n maxRangeLength: number\n): boolean => {\n const daysDifference = Math.abs(dayjs(startDate).diff(dayjs(endDate), 'days'));\n\n return daysDifference <= maxRangeLength;\n};\n\nexport const isDateRangeTheWholeMonth = (\n { startDate, endDate }: DateRange,\n timezone: Timezone = 'system'\n): boolean => {\n const start = timezone === 'UTC' ? dayjs.utc(startDate) : dayjs(startDate);\n const end = timezone === 'UTC' ? dayjs.utc(endDate) : dayjs(endDate);\n\n if (start.month() !== end.month()) {\n return false;\n }\n\n const startDateIsFirstDay = start.isSame(start.startOf('month'), 'day');\n const endDateIsLastDay = end.isSame(end.endOf('month'), 'day');\n\n return startDateIsFirstDay && endDateIsLastDay;\n};\n"],"names":["locale","createFormatter","options","timezoneFormatters","timezone","date","opts","timeZone","Intl","DateTimeFormat","format","formatSelectedDate","day","month","year","formatWeekday","weekday","formatSelectedDateTime","hour","minute","formatSelectedDateTimeWithSeconds","second","formatDateHeader","shiftToTimezone","Date","getTime","getTimezoneOffset","shiftFromTimezone","getPredefinedMonthsForDateRangePicker","numberOfMonths","now","dayjs","lastSixMonths","i","Math","abs","subtract","push","startDate","startOf","toDate","endDate","endOf","reverse","nextSixMonths","add","datesAreWithinMaxRange","maxRangeLength","daysDifference","diff","isDateRangeTheWholeMonth","start","utc","end","startDateIsFirstDay","isSame","endDateIsLastDay"],"mappings":"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"}
@@ -75,7 +75,7 @@ const GenericMenuItem = styled.div.withConfig({
75
75
  cursor: pointer;
76
76
  }
77
77
  [data-input-modality="keyboard"] &[data-highlighted] {
78
- outline: 2px solid ${theme.click.genericMenu.item.color[colorKey].stroke.focus};
78
+ outline: 2px solid ${theme.click.global.color.accent.default};
79
79
  outline-offset: -2px;
80
80
  }
81
81
  &[data-state="open"] {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/GenericMenu/GenericMenu.tsx"],"sourcesContent":["import { styled } from 'styled-components';\n\nexport const GenericMenuPanel = styled.div<{\n $type: 'popover' | 'dropdown-menu' | 'context-menu';\n $showArrow?: boolean;\n}>`\n outline: none;\n max-width: var(--radix-${({ $type }) => $type}-content-available-width);\n max-height: var(--radix-${({ $type }) => $type}-content-available-height);\n overflow: hidden;\n display: flex;\n align-items: flex-start;\n pointer-events: auto;\n\n ${({ theme }) => `\n border: 1px solid ${theme.click.genericMenu.panel.color.stroke.default};\n background: ${theme.click.genericMenu.panel.color.background.default};\n box-shadow: ${theme.click.genericMenu.panel.shadow.default};\n border-radius: ${theme.click.genericMenu.panel.radii.all};\n `};\n ${({ $showArrow }) =>\n $showArrow\n ? `\n &[data-side=\"bottom\"] {\n margin-top: -1px;\n }\n &[data-side=\"top\"] {\n margin-bottom: 1px;\n }\n &[data-side=\"left\"] {\n margin-right: -1px;\n }\n }\n &[data-side=\"right\"] {\n margin-left: -1px;\n }\n `\n : ''};\n`;\n\nexport const GenericPopoverMenuPanel = styled.div<{\n $type: 'popover' | 'hover-card';\n $showArrow?: boolean;\n}>`\n outline: none;\n max-width: var(--radix-${({ $type }) => $type}-content-available-width);\n max-height: var(--radix-${({ $type }) => $type}-content-available-height);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n z-index: 1;\n\n ${({ theme }) => `\n border: 1px solid ${theme.click.popover.color.panel.stroke.default};\n background: ${theme.click.popover.color.panel.background.default};\n padding: ${theme.click.popover.space.y} ${theme.click.popover.space.x};\n border-radius: ${theme.click.popover.radii.all};\n box-shadow: ${theme.click.popover.shadow.default};\n `}\n ${({ $showArrow }) => ($showArrow ? 'margin: -1px 0;' : '')};\n`;\n\nexport const Arrow = styled.svg`\n filter: drop-shadow(rgba(0, 0, 0, 0.1) 0px 4px 6px);\n ${({ theme }) => `\n fill: ${theme.click.genericMenu.panel.color.background.default};\n stroke: ${theme.click.genericMenu.panel.color.stroke.default};\n `};\n`;\n\nexport const GenericMenuItem = styled.div<{ $type?: 'default' | 'danger' }>`\n display: flex;\n width: 100%;\n width: -moz-available;\n width: -webkit-fill-available;\n width: fill-available;\n width: stretch;\n align-items: center;\n justify-content: flex-start;\n cursor: default;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n &:focus {\n outline: none;\n }\n\n ${({ theme, $type = 'default' }) => {\n const colorKey = $type === 'danger' ? 'danger' : 'default';\n return `\n padding: ${theme.click.genericMenu.item.space.y} ${theme.click.genericMenu.item.space.x};\n gap: ${theme.click.genericMenu.item.space.gap};\n font: ${theme.click.genericMenu.item.typography.label.default};\n background: ${theme.click.genericMenu.item.color[colorKey].background.default};\n color: ${theme.click.genericMenu.item.color[colorKey].text.default};\n &[data-highlighted] {\n font: ${theme.click.genericMenu.item.typography.label.hover};\n background: ${theme.click.genericMenu.item.color[colorKey].background.hover};\n color:${theme.click.genericMenu.item.color[colorKey].text.hover};\n cursor: pointer;\n }\n [data-input-modality=\"keyboard\"] &[data-highlighted] {\n outline: 2px solid ${theme.click.genericMenu.item.color[colorKey].stroke.focus};\n outline-offset: -2px;\n }\n &[data-state=\"open\"] {\n background:${theme.click.genericMenu.item.color[colorKey].background.hover};\n color:${theme.click.genericMenu.item.color[colorKey].text.hover};\n font: ${theme.click.genericMenu.item.typography.label.hover};\n cursor: pointer;\n }\n &[data-state=\"checked\"], &[data-selected=\"true\"] {\n background:${theme.click.genericMenu.item.color[colorKey].background.active};\n color:${theme.click.genericMenu.item.color[colorKey].text.active};\n font: ${theme.click.genericMenu.item.typography.label.active};\n }\n &[data-disabled] {\n color:${theme.click.genericMenu.item.color[colorKey].text.disabled};\n font: ${theme.click.genericMenu.item.typography.label.disabled};\n pointer-events: none;\n }\n &:visited {\n color: ${theme.click.genericMenu.item.color[colorKey].text.default};\n a {\n color: ${theme.click.genericMenu.item.color[colorKey].text.default};\n }\n }\n `;\n }};\n position: relative;\n &:hover .dropdown-arrow,\n &[data-state='open'] .dropdown-arrow {\n left: 0.5rem;\n }\n &[hidden] {\n display: none;\n }\n`;\n"],"names":["GenericMenuPanel","styled","div","withConfig","componentId","$type","theme","click","genericMenu","panel","color","stroke","default","background","shadow","radii","all","$showArrow","GenericPopoverMenuPanel","popover","space","y","x","Arrow","svg","GenericMenuItem","colorKey","item","gap","typography","label","text","hover","focus","active","disabled"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/GenericMenu/GenericMenu.tsx"],"sourcesContent":["import { styled } from 'styled-components';\n\nexport const GenericMenuPanel = styled.div<{\n $type: 'popover' | 'dropdown-menu' | 'context-menu';\n $showArrow?: boolean;\n}>`\n outline: none;\n max-width: var(--radix-${({ $type }) => $type}-content-available-width);\n max-height: var(--radix-${({ $type }) => $type}-content-available-height);\n overflow: hidden;\n display: flex;\n align-items: flex-start;\n pointer-events: auto;\n\n ${({ theme }) => `\n border: 1px solid ${theme.click.genericMenu.panel.color.stroke.default};\n background: ${theme.click.genericMenu.panel.color.background.default};\n box-shadow: ${theme.click.genericMenu.panel.shadow.default};\n border-radius: ${theme.click.genericMenu.panel.radii.all};\n `};\n ${({ $showArrow }) =>\n $showArrow\n ? `\n &[data-side=\"bottom\"] {\n margin-top: -1px;\n }\n &[data-side=\"top\"] {\n margin-bottom: 1px;\n }\n &[data-side=\"left\"] {\n margin-right: -1px;\n }\n }\n &[data-side=\"right\"] {\n margin-left: -1px;\n }\n `\n : ''};\n`;\n\nexport const GenericPopoverMenuPanel = styled.div<{\n $type: 'popover' | 'hover-card';\n $showArrow?: boolean;\n}>`\n outline: none;\n max-width: var(--radix-${({ $type }) => $type}-content-available-width);\n max-height: var(--radix-${({ $type }) => $type}-content-available-height);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n z-index: 1;\n\n ${({ theme }) => `\n border: 1px solid ${theme.click.popover.color.panel.stroke.default};\n background: ${theme.click.popover.color.panel.background.default};\n padding: ${theme.click.popover.space.y} ${theme.click.popover.space.x};\n border-radius: ${theme.click.popover.radii.all};\n box-shadow: ${theme.click.popover.shadow.default};\n `}\n ${({ $showArrow }) => ($showArrow ? 'margin: -1px 0;' : '')};\n`;\n\nexport const Arrow = styled.svg`\n filter: drop-shadow(rgba(0, 0, 0, 0.1) 0px 4px 6px);\n ${({ theme }) => `\n fill: ${theme.click.genericMenu.panel.color.background.default};\n stroke: ${theme.click.genericMenu.panel.color.stroke.default};\n `};\n`;\n\nexport const GenericMenuItem = styled.div<{ $type?: 'default' | 'danger' }>`\n display: flex;\n width: 100%;\n width: -moz-available;\n width: -webkit-fill-available;\n width: fill-available;\n width: stretch;\n align-items: center;\n justify-content: flex-start;\n cursor: default;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n &:focus {\n outline: none;\n }\n\n ${({ theme, $type = 'default' }) => {\n const colorKey = $type === 'danger' ? 'danger' : 'default';\n return `\n padding: ${theme.click.genericMenu.item.space.y} ${theme.click.genericMenu.item.space.x};\n gap: ${theme.click.genericMenu.item.space.gap};\n font: ${theme.click.genericMenu.item.typography.label.default};\n background: ${theme.click.genericMenu.item.color[colorKey].background.default};\n color: ${theme.click.genericMenu.item.color[colorKey].text.default};\n &[data-highlighted] {\n font: ${theme.click.genericMenu.item.typography.label.hover};\n background: ${theme.click.genericMenu.item.color[colorKey].background.hover};\n color:${theme.click.genericMenu.item.color[colorKey].text.hover};\n cursor: pointer;\n }\n [data-input-modality=\"keyboard\"] &[data-highlighted] {\n outline: 2px solid ${theme.click.global.color.accent.default};\n outline-offset: -2px;\n }\n &[data-state=\"open\"] {\n background:${theme.click.genericMenu.item.color[colorKey].background.hover};\n color:${theme.click.genericMenu.item.color[colorKey].text.hover};\n font: ${theme.click.genericMenu.item.typography.label.hover};\n cursor: pointer;\n }\n &[data-state=\"checked\"], &[data-selected=\"true\"] {\n background:${theme.click.genericMenu.item.color[colorKey].background.active};\n color:${theme.click.genericMenu.item.color[colorKey].text.active};\n font: ${theme.click.genericMenu.item.typography.label.active};\n }\n &[data-disabled] {\n color:${theme.click.genericMenu.item.color[colorKey].text.disabled};\n font: ${theme.click.genericMenu.item.typography.label.disabled};\n pointer-events: none;\n }\n &:visited {\n color: ${theme.click.genericMenu.item.color[colorKey].text.default};\n a {\n color: ${theme.click.genericMenu.item.color[colorKey].text.default};\n }\n }\n `;\n }};\n position: relative;\n &:hover .dropdown-arrow,\n &[data-state='open'] .dropdown-arrow {\n left: 0.5rem;\n }\n &[hidden] {\n display: none;\n }\n`;\n"],"names":["GenericMenuPanel","styled","div","withConfig","componentId","$type","theme","click","genericMenu","panel","color","stroke","default","background","shadow","radii","all","$showArrow","GenericPopoverMenuPanel","popover","space","y","x","Arrow","svg","GenericMenuItem","colorKey","item","gap","typography","label","text","hover","global","accent","active","disabled"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { cva } from 'class-variance-authority';
2
+ import { clsx } from 'clsx';
3
+
4
+ const cn = (...inputs) => clsx(inputs);
5
+
6
+ export { cn };
7
+ //# sourceMappingURL=cva.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cva.js","sources":["../../../src/lib/cva.ts"],"sourcesContent":["export { cva, type VariantProps } from 'class-variance-authority';\nimport { clsx, type ClassValue } from 'clsx';\n\nexport const cn = (...inputs: ClassValue[]) => clsx(inputs);\n"],"names":["cn","inputs","clsx"],"mappings":";;;AAGO,MAAMA,EAAAA,GAAKA,CAAAA,GAAIC,MAAAA,KAAyBC,IAAAA,CAAKD,MAAM;;;;"}
@@ -1,8 +1,12 @@
1
+ import "../theme/styles/tokens-light.css";
2
+ import "../theme/styles/tokens-dark.css";
1
3
  import { jsxs, jsx } from 'react/jsx-runtime';
2
4
  import { ThemeProvider as ThemeProvider$1, createGlobalStyle } from 'styled-components';
3
5
  import { THEMES, themes } from '../theme/theme.core.js';
4
6
  import { isValidThemeName } from '../theme/theme.utils.js';
5
7
 
8
+
9
+
6
10
  const GlobalStyle = createGlobalStyle(["body{color:", ";background-color:", "}"], (props) => props.theme.click.global.color.text.default, (props) => props.theme.click.global.color.background.default);
7
11
  const ThemeProvider = ({
8
12
  theme: name,
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.js","sources":["../../../src/providers/ThemeProvider.tsx"],"sourcesContent":["import {\n ThemeProvider as StyledThemeProvider,\n createGlobalStyle,\n} from 'styled-components';\nimport { THEMES } from '@/theme/theme.core';\nimport type { ThemeName } from '@/theme/theme.types';\nimport { themes } from '@/theme/theme.core';\nimport { isValidThemeName } from '@/theme/theme.utils';\n\nconst GlobalStyle = createGlobalStyle`\n body{\n color: ${props => props.theme.click.global.color.text.default};\n background-color: ${props => props.theme.click.global.color.background.default}\n }\n`;\n\nexport const ThemeProvider = ({\n theme: name,\n children,\n}: {\n theme: ThemeName;\n children: React.ReactNode;\n}) => {\n const hasValidTheme = isValidThemeName(name);\n const resolvedTheme = !hasValidTheme ? THEMES.Light : name;\n return (\n <StyledThemeProvider theme={themes[resolvedTheme]}>\n <GlobalStyle />\n {children}\n </StyledThemeProvider>\n );\n};\n"],"names":["GlobalStyle","createGlobalStyle","props","theme","click","global","color","text","default","background","ThemeProvider","name","children","hasValidTheme","isValidThemeName","resolvedTheme","THEMES","Light","StyledThemeProvider","themes"],"mappings":";;;;;AASA,MAAMA,WAAAA,GAAcC,kBAAiB,CAAA,aAAA,EAAA,sBAAA,GAAA,CAAA,EAExBC,CAAAA,KAAAA,KAASA,KAAAA,CAAMC,KAAAA,CAAMC,KAAAA,CAAMC,OAAOC,KAAAA,CAAMC,IAAAA,CAAKC,SAClCN,CAAAA,KAAAA,KAASA,KAAAA,CAAMC,MAAMC,KAAAA,CAAMC,MAAAA,CAAOC,KAAAA,CAAMG,UAAAA,CAAWD,OAAO,CAAA;AAI3E,MAAME,gBAAgBA,CAAC;AAAA,EAC5BP,KAAAA,EAAOQ,IAAAA;AAAAA,EACPC;AAIF,CAAA,KAAM;AACJ,EAAA,MAAMC,aAAAA,GAAgBC,iBAAiBH,IAAI,CAAA;AAC3C,EAAA,MAAMI,aAAAA,GAAgB,CAACF,aAAAA,GAAgBG,MAAAA,CAAOC,KAAAA,GAAQN,IAAAA;AACtD,EAAA,uBACE,IAAA,CAACO,eAAA,EAAA,EAAoB,KAAA,EAAOC,MAAAA,CAAOJ,aAAa,CAAA,EAC9C,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAA,EAAA,EAAW,CAAA;AAAA,IACXH;AAAAA,GAAAA,EACH,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ThemeProvider.js","sources":["../../../src/providers/ThemeProvider.tsx"],"sourcesContent":["import {\n ThemeProvider as StyledThemeProvider,\n createGlobalStyle,\n} from 'styled-components';\nimport { THEMES } from '@/theme/theme.core';\nimport type { ThemeName } from '@/theme/theme.types';\nimport { themes } from '@/theme/theme.core';\nimport { isValidThemeName } from '@/theme/theme.utils';\n\nimport '@/theme/styles/tokens-light.css';\nimport '@/theme/styles/tokens-dark.css';\n\nconst GlobalStyle = createGlobalStyle`\n body{\n color: ${props => props.theme.click.global.color.text.default};\n background-color: ${props => props.theme.click.global.color.background.default}\n }\n`;\n\nexport const ThemeProvider = ({\n theme: name,\n children,\n}: {\n theme: ThemeName;\n children: React.ReactNode;\n}) => {\n const hasValidTheme = isValidThemeName(name);\n const resolvedTheme = !hasValidTheme ? THEMES.Light : name;\n return (\n <StyledThemeProvider theme={themes[resolvedTheme]}>\n <GlobalStyle />\n {children}\n </StyledThemeProvider>\n );\n};\n"],"names":["GlobalStyle","createGlobalStyle","props","theme","click","global","color","text","default","background","ThemeProvider","name","children","hasValidTheme","isValidThemeName","resolvedTheme","THEMES","Light","StyledThemeProvider","themes"],"mappings":";;;;;;;AAYA,MAAMA,WAAAA,GAAcC,kBAAiB,CAAA,aAAA,EAAA,sBAAA,GAAA,CAAA,EAExBC,CAAAA,KAAAA,KAASA,KAAAA,CAAMC,KAAAA,CAAMC,KAAAA,CAAMC,OAAOC,KAAAA,CAAMC,IAAAA,CAAKC,SAClCN,CAAAA,KAAAA,KAASA,KAAAA,CAAMC,MAAMC,KAAAA,CAAMC,MAAAA,CAAOC,KAAAA,CAAMG,UAAAA,CAAWD,OAAO,CAAA;AAI3E,MAAME,gBAAgBA,CAAC;AAAA,EAC5BP,KAAAA,EAAOQ,IAAAA;AAAAA,EACPC;AAIF,CAAA,KAAM;AACJ,EAAA,MAAMC,aAAAA,GAAgBC,iBAAiBH,IAAI,CAAA;AAC3C,EAAA,MAAMI,aAAAA,GAAgB,CAACF,aAAAA,GAAgBG,MAAAA,CAAOC,KAAAA,GAAQN,IAAAA;AACtD,EAAA,uBACE,IAAA,CAACO,eAAA,EAAA,EAAoB,KAAA,EAAOC,MAAAA,CAAOJ,aAAa,CAAA,EAC9C,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAA,EAAA,EAAW,CAAA;AAAA,IACXH;AAAAA,GAAAA,EACH,CAAA;AAEJ;;;;"}