@douglasneuroinformatics/libui 3.9.0 → 4.0.0

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 (106) hide show
  1. package/README.md +7 -9
  2. package/dist/{chunk-IYOZHDZL.js → chunk-655XRTXX.js} +1 -1
  3. package/dist/{chunk-IYOZHDZL.js.map → chunk-655XRTXX.js.map} +1 -1
  4. package/dist/{chunk-VJSOLDCS.js → chunk-HCQE34RL.js} +1 -1
  5. package/dist/chunk-HCQE34RL.js.map +1 -0
  6. package/dist/{chunk-JTEI2ZYI.js → chunk-KI6BSSS6.js} +3 -4
  7. package/dist/chunk-KI6BSSS6.js.map +1 -0
  8. package/dist/components.d.ts +77 -29
  9. package/dist/components.js +67 -69
  10. package/dist/components.js.map +1 -1
  11. package/dist/hooks.d.ts +1 -1
  12. package/dist/hooks.js +3 -3
  13. package/dist/i18n.d.ts +2 -2
  14. package/dist/i18n.js +1 -1
  15. package/dist/tailwind/globals.css +181 -39
  16. package/dist/{types-CU3FS63U.d.ts → types-CMuti1SJ.d.ts} +2 -2
  17. package/dist/utils.js +1 -1
  18. package/package.json +87 -82
  19. package/src/components/ActionDropdown/ActionDropdown.tsx +1 -1
  20. package/src/components/ArrowToggle/ArrowToggle.spec.tsx +3 -1
  21. package/src/components/ArrowToggle/ArrowToggle.tsx +3 -1
  22. package/src/components/Badge/Badge.tsx +7 -5
  23. package/src/components/Button/Button.tsx +7 -6
  24. package/src/components/Card/Card.tsx +3 -3
  25. package/src/components/Chart/ChartContainer.tsx +1 -1
  26. package/src/components/Checkbox/Checkbox.tsx +1 -1
  27. package/src/components/ClientTable/ClientTable.stories.tsx +12 -9
  28. package/src/components/ClientTable/ClientTable.tsx +3 -3
  29. package/src/components/Collapsible/Collapsible.stories.tsx +3 -3
  30. package/src/components/Command/CommandInput.tsx +1 -1
  31. package/src/components/Command/CommandItem.tsx +1 -1
  32. package/src/components/ContextMenu/ContextMenuCheckboxItem.tsx +1 -1
  33. package/src/components/ContextMenu/ContextMenuItem.tsx +1 -1
  34. package/src/components/ContextMenu/ContextMenuRadioItem.tsx +1 -1
  35. package/src/components/ContextMenu/ContextMenuSubTrigger.tsx +1 -1
  36. package/src/components/CopyButton/CopyButton.tsx +3 -1
  37. package/src/components/DatePicker/DatePicker.tsx +3 -3
  38. package/src/components/Dialog/DialogContent.tsx +2 -2
  39. package/src/components/DropdownButton/DropdownButton.tsx +1 -1
  40. package/src/components/DropdownMenu/DropdownMenuCheckboxItem.tsx +1 -1
  41. package/src/components/DropdownMenu/DropdownMenuItem.tsx +1 -1
  42. package/src/components/DropdownMenu/DropdownMenuRadioItem.tsx +1 -1
  43. package/src/components/DropdownMenu/DropdownMenuSubTrigger.tsx +1 -1
  44. package/src/components/FileDropzone/FileDropzone.stories.tsx +4 -6
  45. package/src/components/FileDropzone/FileDropzone.tsx +2 -1
  46. package/src/components/Form/BooleanField/BooleanField.spec.tsx +3 -1
  47. package/src/components/Form/BooleanField/BooleanField.tsx +5 -2
  48. package/src/components/Form/DateField/DateField.tsx +2 -1
  49. package/src/components/Form/Form.stories.tsx +15 -15
  50. package/src/components/Form/NumberField/NumberField.tsx +7 -3
  51. package/src/components/Form/NumberField/NumberFieldSelect.tsx +2 -1
  52. package/src/components/Form/RecordArrayField.tsx +1 -3
  53. package/src/components/Form/ScalarField.tsx +10 -5
  54. package/src/components/Form/StaticField.tsx +2 -1
  55. package/src/components/Form/StringField/StringField.tsx +9 -4
  56. package/src/components/Form/StringField/StringFieldPassword.tsx +5 -5
  57. package/src/components/Form/StringField/StringFieldSelect.tsx +2 -1
  58. package/src/components/HoverCard/HoverCardContent.tsx +1 -1
  59. package/src/components/Input/Input.tsx +1 -1
  60. package/src/components/Label/Label.tsx +2 -1
  61. package/src/components/LanguageToggle/LanguageToggle.tsx +3 -1
  62. package/src/components/LineGraph/LineGraph.tsx +3 -2
  63. package/src/components/ListboxDropdown/ListboxDropdown.stories.tsx +4 -4
  64. package/src/components/ListboxDropdown/ListboxDropdown.tsx +2 -1
  65. package/src/components/MenuBar/MenuBarCheckboxItem.tsx +1 -1
  66. package/src/components/MenuBar/MenuBarItem.tsx +1 -1
  67. package/src/components/MenuBar/MenuBarRadioItem.tsx +1 -1
  68. package/src/components/MenuBar/MenuBarRoot.tsx +1 -1
  69. package/src/components/MenuBar/MenuBarSubTrigger.tsx +1 -1
  70. package/src/components/MenuBar/MenuBarTrigger.tsx +1 -1
  71. package/src/components/NotificationHub/NotificationHub.tsx +3 -3
  72. package/src/components/NotificationHub/NotificationIcon.tsx +1 -1
  73. package/src/components/Pagination/PaginationLink.tsx +3 -1
  74. package/src/components/Pagination/PaginationPrevious.tsx +3 -1
  75. package/src/components/Popover/PopoverContent.tsx +1 -1
  76. package/src/components/RadioGroup/RadioGroup.spec.tsx +3 -1
  77. package/src/components/RadioGroup/RadioGroupItem.tsx +1 -1
  78. package/src/components/Resizable/Resizable.tsx +7 -3
  79. package/src/components/Resizable/ResizableHandle.tsx +2 -2
  80. package/src/components/SearchBar/SearchBar.tsx +3 -1
  81. package/src/components/Select/SelectItem.tsx +1 -1
  82. package/src/components/Sheet/SheetContent.tsx +3 -2
  83. package/src/components/Slider/Slider.tsx +4 -4
  84. package/src/components/StatisticCard/StatisticCard.tsx +2 -1
  85. package/src/components/Switch/Switch.tsx +2 -2
  86. package/src/components/Tabs/TabsContent.tsx +1 -1
  87. package/src/components/Tabs/TabsTrigger.tsx +1 -1
  88. package/src/components/TextArea/TextArea.tsx +1 -1
  89. package/src/components/ThemeToggle/ThemeToggle.tsx +3 -1
  90. package/src/components/Tooltip/TooltipTrigger.tsx +3 -1
  91. package/src/hooks/useEventListener/useEventListener.ts +2 -1
  92. package/src/hooks/useOnClickOutside/useOnClickOutside.ts +1 -1
  93. package/src/hooks/useStorage/useLocalStorage.ts +3 -1
  94. package/src/hooks/useStorage/useSessionStorage.ts +3 -1
  95. package/src/hooks/useTheme/useTheme.test.ts +14 -11
  96. package/src/i18n/internal.ts +1 -1
  97. package/src/i18n/types.ts +2 -2
  98. package/src/tailwind/globals.css +181 -39
  99. package/src/utils/index.ts +2 -1
  100. package/dist/chunk-JTEI2ZYI.js.map +0 -1
  101. package/dist/chunk-VJSOLDCS.js.map +0 -1
  102. package/dist/tailwind/config.cjs +0 -178
  103. package/dist/tailwind/config.cjs.map +0 -1
  104. package/dist/tailwind/config.d.cts +0 -16
  105. package/src/tailwind/config.cts +0 -174
  106. package/tailwind.config.cjs +0 -3
package/README.md CHANGED
@@ -31,8 +31,7 @@
31
31
 
32
32
  ## About
33
33
 
34
- A React component library built by the Douglas Neuroinformatics Platform (DNP) using [shadcn/ui](https://github.com/shadcn-ui/ui) with [React](https://react.dev/) and [TailwindCSS](https://tailwindcss.com/). Although primarily intended for internal use in our platforms, it is
35
- designed as a generic implementation.
34
+ A React component library built by the Douglas Neuroinformatics Platform (DNP) using [shadcn/ui](https://github.com/shadcn-ui/ui) with [React](https://react.dev/) and [TailwindCSS](https://tailwindcss.com/). Although primarily intended for internal use in our platforms, it is designed as a generic implementation.
36
35
 
37
36
  ## Installation
38
37
 
@@ -42,14 +41,13 @@ pnpm install @douglasneuroinformatics/libui
42
41
 
43
42
  ## Usage
44
43
 
45
- **tailwind.config.cjs**
44
+ **globals.css**
46
45
 
47
- ```js
48
- const config = require('@douglasneuroinformatics/libui/tailwind/config');
46
+ ```css
47
+ @import '@douglasneuroinformatics/libui/tailwind/globals.css';
49
48
 
50
- module.exports = config({
51
- content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}']
52
- });
49
+ // adjust as required
50
+ @source "../node_modules/@douglasneuroinformatics/libui";
53
51
  ```
54
52
 
55
53
  **i18n.ts**
@@ -78,7 +76,7 @@ init({ translations: { common } });
78
76
  **main.tsx**
79
77
 
80
78
  ```js
81
- import '@douglasneuroinformatics/libui/tailwind/globals.css';
79
+ import './globals.css';
82
80
  import './i18n';
83
81
  ```
84
82
 
@@ -227,4 +227,4 @@ export {
227
227
  translationStore,
228
228
  i18n
229
229
  };
230
- //# sourceMappingURL=chunk-IYOZHDZL.js.map
230
+ //# sourceMappingURL=chunk-655XRTXX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/i18n/store.ts","../src/i18n/translations/libui.json","../src/i18n/internal.ts"],"sourcesContent":["import type { SetOptional } from 'type-fest';\nimport { subscribeWithSelector } from 'zustand/middleware';\nimport { createStore } from 'zustand/vanilla';\n\nimport libui from '@/i18n/translations/libui.json';\n\nimport { getTranslation } from './internal';\n\nimport type { Language, TranslateFunction, Translations } from './types';\n\ntype InitOptions = {\n defaultLanguage?: Language;\n fallbackLanguage?: Language;\n translations?: SetOptional<Translations, 'libui'>;\n};\n\ntype I18N = {\n init: (options?: InitOptions) => void;\n t: TranslateFunction;\n};\n\nexport type TranslationStore = {\n changeLanguage: (language: Language) => void;\n fallbackLanguage: Language;\n isInitialized: boolean;\n resolvedLanguage: Language;\n translations: Translations;\n};\n\nexport const translationStore = createStore(\n subscribeWithSelector<TranslationStore>((set) => ({\n changeLanguage(language) {\n set({ resolvedLanguage: language });\n },\n fallbackLanguage: 'en',\n isInitialized: false,\n resolvedLanguage: 'en',\n translations: { libui }\n }))\n);\n\nexport const i18n: I18N = {\n init: ({ defaultLanguage, fallbackLanguage, translations }: InitOptions = {}) => {\n const state = translationStore.getState();\n if (state.isInitialized) {\n console.error('Cannot reinitialize translations store');\n return;\n }\n translationStore.subscribe(\n (state) => state.resolvedLanguage,\n (resolvedLanguage) => {\n document.documentElement.lang = resolvedLanguage;\n }\n );\n translationStore.setState({\n fallbackLanguage: fallbackLanguage ?? state.fallbackLanguage,\n isInitialized: true,\n resolvedLanguage: defaultLanguage ?? state.resolvedLanguage,\n translations: {\n ...state.translations,\n ...translations\n }\n });\n },\n t: (target, ...args) => {\n const state = translationStore.getState();\n return getTranslation(target, state, ...args);\n }\n};\n","{\n \"days\": {\n \"friday\": {\n \"en\": \"Friday\",\n \"fr\": \"Vendredi\"\n },\n \"monday\": {\n \"en\": \"Monday\",\n \"fr\": \"Lundi\"\n },\n \"saturday\": {\n \"en\": \"Saturday\",\n \"fr\": \"Samedi\"\n },\n \"sunday\": {\n \"en\": \"Sunday\",\n \"fr\": \"Dimanche\"\n },\n \"thursday\": {\n \"en\": \"Thursday\",\n \"fr\": \"Jeudi\"\n },\n \"tuesday\": {\n \"en\": \"Tuesday\",\n \"fr\": \"Mardi\"\n },\n \"wednesday\": {\n \"en\": \"Wednesday\",\n \"fr\": \"Mercredi\"\n }\n },\n \"form\": {\n \"append\": {\n \"en\": \"Append\",\n \"fr\": \"Ajouter\"\n },\n \"radioLabels\": {\n \"false\": {\n \"en\": \"False\",\n \"fr\": \"Faux\"\n },\n \"true\": {\n \"en\": \"True\",\n \"fr\": \"Vrai\"\n }\n },\n \"remove\": {\n \"en\": \"Remove\",\n \"fr\": \"Supprimer\"\n },\n \"required\": {\n \"en\": \"This field is required\",\n \"fr\": \"Ce champ est obligatoire\"\n },\n \"reset\": {\n \"en\": \"Reset\",\n \"fr\": \"Réinitialiser\"\n },\n \"submit\": {\n \"en\": \"Submit\",\n \"fr\": \"Soumettre\"\n }\n },\n \"months\": {\n \"april\": {\n \"en\": \"April\",\n \"fr\": \"Avril\"\n },\n \"august\": {\n \"en\": \"August\",\n \"fr\": \"Août\"\n },\n \"december\": {\n \"en\": \"December\",\n \"fr\": \"Décembre\"\n },\n \"february\": {\n \"en\": \"February\",\n \"fr\": \"Février\"\n },\n \"january\": {\n \"en\": \"January\",\n \"fr\": \"Janvier\"\n },\n \"july\": {\n \"en\": \"July\",\n \"fr\": \"Juillet\"\n },\n \"june\": {\n \"en\": \"June\",\n \"fr\": \"Juin\"\n },\n \"march\": {\n \"en\": \"March\",\n \"fr\": \"Mars\"\n },\n \"may\": {\n \"en\": \"May\",\n \"fr\": \"Mai\"\n },\n \"november\": {\n \"en\": \"November\",\n \"fr\": \"Novembre\"\n },\n \"october\": {\n \"en\": \"October\",\n \"fr\": \"Octobre\"\n },\n \"september\": {\n \"en\": \"September\",\n \"fr\": \"Septembre\"\n }\n },\n \"notifications\": {\n \"types\": {\n \"error\": {\n \"en\": \"Error\",\n \"fr\": \"Erreur\"\n },\n \"info\": {\n \"en\": \"Info\",\n \"fr\": \"Attention\"\n },\n \"success\": {\n \"en\": \"Success\",\n \"fr\": \"Succès\"\n },\n \"warning\": {\n \"en\": \"Warning\",\n \"fr\": \"Avertissement\"\n }\n }\n },\n \"pagination\": {\n \"info\": {\n \"en\": \"Showing {{first}} to {{last}} of {{total}} results\",\n \"fr\": \"Affichage de {{first}} à {{last}} sur {{total}} résultats\"\n },\n \"next\": {\n \"en\": \"Next\",\n \"fr\": \"Suivant\"\n },\n \"previous\": {\n \"en\": \"Previous\",\n \"fr\": \"Précédent\"\n },\n \"firstPage\": {\n \"en\": \"<< First\",\n \"fr\": \"<< Première\"\n },\n \"lastPage\": {\n \"en\": \"Last >>\",\n \"fr\": \"Dernière >>\"\n }\n },\n \"searchBar\": {\n \"placeholder\": {\n \"en\": \"Search...\",\n \"fr\": \"Rechercher...\"\n }\n }\n}\n","import { format } from '@douglasneuroinformatics/libjs';\nimport { get } from 'lodash-es';\nimport type { Primitive } from 'type-fest';\n\nimport type { Language } from './types';\n\nexport function getTranslation(\n target: { [L in Language]?: string } | string,\n state: {\n fallbackLanguage: Language;\n resolvedLanguage: Language;\n translations: { [key: string]: any };\n },\n ...args: Exclude<Primitive, symbol>[]\n) {\n let value: { [key: string]: string };\n if (typeof target === 'string') {\n value = get(state.translations, target) as { [key: string]: string };\n } else {\n value = target;\n }\n return format((value[state.resolvedLanguage] ?? value[state.fallbackLanguage])!, ...args);\n}\n"],"mappings":"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","names":["state"]}
1
+ {"version":3,"sources":["../src/i18n/store.ts","../src/i18n/translations/libui.json","../src/i18n/internal.ts"],"sourcesContent":["import type { SetOptional } from 'type-fest';\nimport { subscribeWithSelector } from 'zustand/middleware';\nimport { createStore } from 'zustand/vanilla';\n\nimport libui from '@/i18n/translations/libui.json';\n\nimport { getTranslation } from './internal';\n\nimport type { Language, TranslateFunction, Translations } from './types';\n\ntype InitOptions = {\n defaultLanguage?: Language;\n fallbackLanguage?: Language;\n translations?: SetOptional<Translations, 'libui'>;\n};\n\ntype I18N = {\n init: (options?: InitOptions) => void;\n t: TranslateFunction;\n};\n\nexport type TranslationStore = {\n changeLanguage: (language: Language) => void;\n fallbackLanguage: Language;\n isInitialized: boolean;\n resolvedLanguage: Language;\n translations: Translations;\n};\n\nexport const translationStore = createStore(\n subscribeWithSelector<TranslationStore>((set) => ({\n changeLanguage(language) {\n set({ resolvedLanguage: language });\n },\n fallbackLanguage: 'en',\n isInitialized: false,\n resolvedLanguage: 'en',\n translations: { libui }\n }))\n);\n\nexport const i18n: I18N = {\n init: ({ defaultLanguage, fallbackLanguage, translations }: InitOptions = {}) => {\n const state = translationStore.getState();\n if (state.isInitialized) {\n console.error('Cannot reinitialize translations store');\n return;\n }\n translationStore.subscribe(\n (state) => state.resolvedLanguage,\n (resolvedLanguage) => {\n document.documentElement.lang = resolvedLanguage;\n }\n );\n translationStore.setState({\n fallbackLanguage: fallbackLanguage ?? state.fallbackLanguage,\n isInitialized: true,\n resolvedLanguage: defaultLanguage ?? state.resolvedLanguage,\n translations: {\n ...state.translations,\n ...translations\n }\n });\n },\n t: (target, ...args) => {\n const state = translationStore.getState();\n return getTranslation(target, state, ...args);\n }\n};\n","{\n \"days\": {\n \"friday\": {\n \"en\": \"Friday\",\n \"fr\": \"Vendredi\"\n },\n \"monday\": {\n \"en\": \"Monday\",\n \"fr\": \"Lundi\"\n },\n \"saturday\": {\n \"en\": \"Saturday\",\n \"fr\": \"Samedi\"\n },\n \"sunday\": {\n \"en\": \"Sunday\",\n \"fr\": \"Dimanche\"\n },\n \"thursday\": {\n \"en\": \"Thursday\",\n \"fr\": \"Jeudi\"\n },\n \"tuesday\": {\n \"en\": \"Tuesday\",\n \"fr\": \"Mardi\"\n },\n \"wednesday\": {\n \"en\": \"Wednesday\",\n \"fr\": \"Mercredi\"\n }\n },\n \"form\": {\n \"append\": {\n \"en\": \"Append\",\n \"fr\": \"Ajouter\"\n },\n \"radioLabels\": {\n \"false\": {\n \"en\": \"False\",\n \"fr\": \"Faux\"\n },\n \"true\": {\n \"en\": \"True\",\n \"fr\": \"Vrai\"\n }\n },\n \"remove\": {\n \"en\": \"Remove\",\n \"fr\": \"Supprimer\"\n },\n \"required\": {\n \"en\": \"This field is required\",\n \"fr\": \"Ce champ est obligatoire\"\n },\n \"reset\": {\n \"en\": \"Reset\",\n \"fr\": \"Réinitialiser\"\n },\n \"submit\": {\n \"en\": \"Submit\",\n \"fr\": \"Soumettre\"\n }\n },\n \"months\": {\n \"april\": {\n \"en\": \"April\",\n \"fr\": \"Avril\"\n },\n \"august\": {\n \"en\": \"August\",\n \"fr\": \"Août\"\n },\n \"december\": {\n \"en\": \"December\",\n \"fr\": \"Décembre\"\n },\n \"february\": {\n \"en\": \"February\",\n \"fr\": \"Février\"\n },\n \"january\": {\n \"en\": \"January\",\n \"fr\": \"Janvier\"\n },\n \"july\": {\n \"en\": \"July\",\n \"fr\": \"Juillet\"\n },\n \"june\": {\n \"en\": \"June\",\n \"fr\": \"Juin\"\n },\n \"march\": {\n \"en\": \"March\",\n \"fr\": \"Mars\"\n },\n \"may\": {\n \"en\": \"May\",\n \"fr\": \"Mai\"\n },\n \"november\": {\n \"en\": \"November\",\n \"fr\": \"Novembre\"\n },\n \"october\": {\n \"en\": \"October\",\n \"fr\": \"Octobre\"\n },\n \"september\": {\n \"en\": \"September\",\n \"fr\": \"Septembre\"\n }\n },\n \"notifications\": {\n \"types\": {\n \"error\": {\n \"en\": \"Error\",\n \"fr\": \"Erreur\"\n },\n \"info\": {\n \"en\": \"Info\",\n \"fr\": \"Attention\"\n },\n \"success\": {\n \"en\": \"Success\",\n \"fr\": \"Succès\"\n },\n \"warning\": {\n \"en\": \"Warning\",\n \"fr\": \"Avertissement\"\n }\n }\n },\n \"pagination\": {\n \"info\": {\n \"en\": \"Showing {{first}} to {{last}} of {{total}} results\",\n \"fr\": \"Affichage de {{first}} à {{last}} sur {{total}} résultats\"\n },\n \"next\": {\n \"en\": \"Next\",\n \"fr\": \"Suivant\"\n },\n \"previous\": {\n \"en\": \"Previous\",\n \"fr\": \"Précédent\"\n },\n \"firstPage\": {\n \"en\": \"<< First\",\n \"fr\": \"<< Première\"\n },\n \"lastPage\": {\n \"en\": \"Last >>\",\n \"fr\": \"Dernière >>\"\n }\n },\n \"searchBar\": {\n \"placeholder\": {\n \"en\": \"Search...\",\n \"fr\": \"Rechercher...\"\n }\n }\n}\n","import { format } from '@douglasneuroinformatics/libjs';\nimport { get } from 'lodash-es';\nimport type { Primitive } from 'type-fest';\n\nimport type { Language } from './types';\n\nexport function getTranslation(\n target: string | { [L in Language]?: string },\n state: {\n fallbackLanguage: Language;\n resolvedLanguage: Language;\n translations: { [key: string]: any };\n },\n ...args: Exclude<Primitive, symbol>[]\n) {\n let value: { [key: string]: string };\n if (typeof target === 'string') {\n value = get(state.translations, target) as { [key: string]: string };\n } else {\n value = target;\n }\n return format((value[state.resolvedLanguage] ?? value[state.fallbackLanguage])!, ...args);\n}\n"],"mappings":"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","names":["state"]}
@@ -14,4 +14,4 @@ export {
14
14
  cn,
15
15
  isBrowser
16
16
  };
17
- //# sourceMappingURL=chunk-VJSOLDCS.js.map
17
+ //# sourceMappingURL=chunk-HCQE34RL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/index.ts"],"sourcesContent":["import { clsx } from 'clsx';\nimport type { ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function isBrowser() {\n return typeof window !== 'undefined';\n}\n"],"mappings":";;;AAAA,SAAS,YAAY;AAErB,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;AAEO,SAAS,YAAY;AAC1B,SAAO,OAAO,WAAW;AAC3B;","names":[]}
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  getTranslation,
4
4
  translationStore
5
- } from "./chunk-IYOZHDZL.js";
5
+ } from "./chunk-655XRTXX.js";
6
6
  import {
7
7
  isBrowser
8
- } from "./chunk-VJSOLDCS.js";
8
+ } from "./chunk-HCQE34RL.js";
9
9
 
10
10
  // src/hooks/useChart/useChart.ts
11
11
  import { useContext } from "react";
@@ -159,7 +159,6 @@ function useMediaQuery(query) {
159
159
  }
160
160
 
161
161
  // src/hooks/useOnClickOutside/useOnClickOutside.ts
162
- import "react";
163
162
  function useOnClickOutside(ref, handler, mouseEvent = "mousedown") {
164
163
  useEventListener(mouseEvent, (event) => {
165
164
  const el = ref.current;
@@ -367,4 +366,4 @@ export {
367
366
  useTranslation,
368
367
  useWindowSize
369
368
  };
370
- //# sourceMappingURL=chunk-JTEI2ZYI.js.map
369
+ //# sourceMappingURL=chunk-KI6BSSS6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useChart/useChart.ts","../src/context/ChartContext.tsx","../src/hooks/useDownload/useDownload.ts","../src/hooks/useNotificationsStore/useNotificationsStore.ts","../src/hooks/useEventCallback/useEventCallback.ts","../src/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.ts","../src/hooks/useEventListener/useEventListener.ts","../src/hooks/useInterval/useInterval.ts","../src/hooks/useMediaQuery/useMediaQuery.ts","../src/hooks/useOnClickOutside/useOnClickOutside.ts","../src/hooks/useStorage/useStorage.ts","../src/hooks/useStorage/useLocalStorage.ts","../src/hooks/useStorage/useSessionStorage.ts","../src/hooks/useTheme/useTheme.ts","../src/hooks/useTranslation/useTranslation.ts","../src/hooks/useWindowSize/useWindowSize.ts"],"sourcesContent":["import { useContext } from 'react';\n\nimport { ChartContext } from '@/context/ChartContext';\n\nexport function useChart() {\n const context = useContext(ChartContext);\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n return context;\n}\n","import { createContext } from 'react';\n\nimport type { ChartConfig } from '@/components';\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nexport const ChartContext = createContext<ChartContextProps | null>(null);\n","import { useEffect, useState } from 'react';\n\nimport type { Promisable } from 'type-fest';\n\nimport { useNotificationsStore } from '../useNotificationsStore';\n\ntype DownloadTextOptions = {\n blobType: 'text/csv' | 'text/plain';\n};\n\ntype DownloadBlobOptions = {\n blobType: 'application/zip' | 'image/jpeg' | 'image/png' | 'image/webp';\n};\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\ninterface DownloadFunction {\n (filename: string, data: Blob, options: DownloadBlobOptions): Promise<void>;\n (filename: string, data: () => Promisable<Blob>, options: DownloadBlobOptions): Promise<void>;\n (filename: string, data: string, options?: DownloadTextOptions): Promise<void>;\n (filename: string, data: () => Promisable<string>, options?: DownloadTextOptions): Promise<void>;\n}\n\ntype Downloadable = {\n blobType: string;\n data: Blob | string;\n filename: string;\n id: string;\n};\n\n/**\n * Used to trigger downloads of arbitrary data to the client\n * @returns A function to invoke the download\n */\nexport function useDownload(): DownloadFunction {\n const notifications = useNotificationsStore();\n const [downloads, setDownloads] = useState<Downloadable[]>([]);\n\n useEffect(() => {\n if (downloads.length) {\n const { blobType, data, filename, id } = downloads.at(-1)!;\n const anchor = document.createElement('a');\n document.body.appendChild(anchor);\n const blob = new Blob([data], { type: blobType });\n const url = URL.createObjectURL(blob);\n anchor.href = url;\n anchor.download = filename;\n anchor.click();\n URL.revokeObjectURL(url);\n anchor.remove();\n setDownloads((prevDownloads) => prevDownloads.filter((item) => item.id !== id));\n }\n }, [downloads]);\n\n return async (filename, _data, options) => {\n try {\n const data = typeof _data === 'function' ? await _data() : _data;\n if (typeof data !== 'string' && !options?.blobType) {\n throw new Error(\"argument 'blobType' must be defined when download is called with a Blob object\");\n }\n setDownloads((prevDownloads) => [\n ...prevDownloads,\n { blobType: options?.blobType ?? 'text/plain', data, filename, id: crypto.randomUUID() }\n ]);\n } catch (error) {\n const message = error instanceof Error ? error.message : 'An unknown error occurred';\n notifications.addNotification({\n message,\n title: 'Error',\n type: 'error'\n });\n }\n };\n}\n","import { create } from 'zustand';\n\nexport type NotificationInterface = {\n id: number;\n message?: string;\n title?: string;\n type: 'error' | 'info' | 'success' | 'warning';\n variant?: 'critical' | 'standard';\n};\n\nexport type NotificationsStore = {\n addNotification: (notification: Omit<NotificationInterface, 'id'>) => void;\n dismissNotification: (id: number) => void;\n notifications: NotificationInterface[];\n};\n\nexport const useNotificationsStore = create<NotificationsStore>((set) => ({\n addNotification: (notification) => {\n set((state) => ({\n notifications: [...state.notifications, { id: Date.now(), ...notification }]\n }));\n },\n dismissNotification: (id) => {\n set((state) => ({\n notifications: state.notifications.filter((notification) => notification.id !== id)\n }));\n },\n notifications: []\n}));\n","import { useCallback, useRef } from 'react';\n\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';\n\nexport function useEventCallback<Args extends unknown[], R>(fn: (...args: Args) => R) {\n const ref = useRef<typeof fn>(() => {\n throw new Error('Cannot call an event handler while rendering.');\n });\n\n useIsomorphicLayoutEffect(() => {\n ref.current = fn;\n }, [fn]);\n\n return useCallback((...args: Args) => ref.current(...args), [ref]);\n}\n","import { useEffect, useLayoutEffect } from 'react';\n\nimport { isBrowser } from '@/utils';\n\nexport const useIsomorphicLayoutEffect = isBrowser() ? useLayoutEffect : useEffect;\n","import { useEffect, useRef } from 'react';\nimport type { RefObject } from 'react';\n\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';\n\n// MediaQueryList Event based useEventListener interface\nfunction useEventListener<K extends keyof MediaQueryListEventMap>(\n eventName: K,\n handler: (event: MediaQueryListEventMap[K]) => void,\n element: RefObject<MediaQueryList>,\n options?: AddEventListenerOptions | boolean\n): void;\n\n// Window Event based useEventListener interface\nfunction useEventListener<K extends keyof WindowEventMap>(\n eventName: K,\n handler: (event: WindowEventMap[K]) => void,\n element?: undefined,\n options?: AddEventListenerOptions | boolean\n): void;\n\n// Element Event based useEventListener interface\nfunction useEventListener<K extends keyof HTMLElementEventMap, T extends HTMLElement = HTMLDivElement>(\n eventName: K,\n handler: (event: HTMLElementEventMap[K]) => void,\n element: RefObject<T>,\n options?: AddEventListenerOptions | boolean\n): void;\n\n// Document Event based useEventListener interface\nfunction useEventListener<K extends keyof DocumentEventMap>(\n eventName: K,\n handler: (event: DocumentEventMap[K]) => void,\n element: RefObject<Document>,\n options?: AddEventListenerOptions | boolean\n): void;\n\nfunction useEventListener<\n KW extends keyof WindowEventMap,\n KH extends keyof HTMLElementEventMap,\n KM extends keyof MediaQueryListEventMap,\n T extends HTMLElement | MediaQueryList | void = void\n>(\n eventName: KH | KM | KW,\n handler: (event: Event | HTMLElementEventMap[KH] | MediaQueryListEventMap[KM] | WindowEventMap[KW]) => void,\n element?: RefObject<T>,\n options?: AddEventListenerOptions | boolean\n) {\n // Create a ref that stores handler\n const savedHandler = useRef(handler);\n\n useIsomorphicLayoutEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n // Define the listening target\n const targetElement: T | Window = element?.current ?? window;\n\n if (!(targetElement && targetElement.addEventListener)) return;\n\n // Create event listener that calls handler function stored in ref\n const listener: typeof handler = (event) => savedHandler.current(event);\n\n targetElement.addEventListener(eventName, listener, options);\n\n // Remove event listener on cleanup\n return () => {\n targetElement.removeEventListener(eventName, listener, options);\n };\n }, [eventName, element, options]);\n}\n\nexport { useEventListener };\n","import { useEffect, useRef } from 'react';\n\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';\n\nexport function useInterval(callback: () => void, delay: null | number) {\n const savedCallback = useRef(callback);\n\n // Remember the latest callback if it changes.\n useIsomorphicLayoutEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n // Don't schedule if no delay is specified.\n // Note: 0 is a valid value for delay.\n if (!delay && delay !== 0) {\n return;\n }\n\n const id = setInterval(() => savedCallback.current(), delay);\n\n return () => clearInterval(id);\n }, [delay]);\n}\n","import { useEffect, useState } from 'react';\n\nimport { isBrowser } from '@/utils';\n\n/**\n * Get the result of an arbitrary CSS media query\n *\n * @param query - the CSS media query\n * @returns a boolean indicating the result of the query\n * @example\n * // true if the viewport is at least 768px wide\n * const matches = useMediaQuery('(min-width: 768px)')\n */\nexport function useMediaQuery(query: string): boolean {\n const getMatches = (query: string): boolean => {\n // Prevents SSR issues\n if (isBrowser()) {\n return window.matchMedia(query).matches;\n }\n return false;\n };\n\n const [matches, setMatches] = useState<boolean>(getMatches(query));\n\n function handleChange() {\n setMatches(getMatches(query));\n }\n\n useEffect(() => {\n const matchMedia = window.matchMedia(query);\n\n // Triggered at the first client-side load and if query changes\n handleChange();\n\n matchMedia.addEventListener('change', handleChange);\n\n return () => {\n matchMedia.removeEventListener('change', handleChange);\n };\n }, [query]);\n\n return matches;\n}\n","import type { RefObject } from 'react';\n\nimport { useEventListener } from '../useEventListener';\n\ntype Handler = (event: MouseEvent) => void;\n\nexport function useOnClickOutside<T extends HTMLElement = HTMLElement>(\n ref: RefObject<T>,\n handler: Handler,\n mouseEvent: 'mousedown' | 'mouseup' = 'mousedown'\n): void {\n useEventListener(mouseEvent, (event) => {\n const el = ref.current;\n\n // Do nothing if clicking ref's element or descendent elements\n if (!el || el.contains(event.target as Node)) {\n return;\n }\n\n handler(event);\n });\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type { Dispatch, SetStateAction } from 'react';\n\nimport { isBrowser } from '@/utils';\n\nimport { useEventCallback } from '../useEventCallback';\nimport { useEventListener } from '../useEventListener';\n\ntype StorageName = 'localStorage' | 'sessionStorage';\n\ntype StorageEventMap = {\n [K in StorageName]: CustomEvent;\n};\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/consistent-type-definitions, @typescript-eslint/no-empty-object-type\n interface WindowEventMap extends StorageEventMap {}\n}\n\n/**\n * Represents the options for customizing the behavior of serialization and deserialization.\n * @template T - The type of the state to be stored in storage.\n */\ntype UseStorageOptions<T> = {\n /** A function to deserialize the stored value. */\n deserializer?: (value: string) => T;\n /**\n * If `true` (default), the hook will initialize reading the storage. In SSR, you should set it to `false`, returning the initial value initially.\n * @default true\n */\n initializeWithValue?: boolean;\n /** A function to serialize the value before storing it. */\n serializer?: (value: T) => string;\n};\n\n/**\n * Custom hook that uses local or session storage to persist state across page reloads.\n * @template T - The type of the state to be stored in storage.\n * @param key - The key under which the value will be stored in storage.\n * @param initialValue - The initial value of the state or a function that returns the initial value.\n * @param options - Options for customizing the behavior of serialization and deserialization (optional).\n * @returns A tuple containing the stored value and a function to set the value.\n * @public\n * @example\n * ```tsx\n * const [count, setCount] = useStorage('count', 0);\n * // Access the `count` value and the `setCount` function to update it.\n * ```\n */\nexport function useStorage<T>(\n key: string,\n initialValue: (() => T) | T,\n storageName: StorageName,\n options: UseStorageOptions<T> = {}\n): [T, Dispatch<SetStateAction<T>>] {\n const { initializeWithValue = true } = options;\n const storage = window[storageName];\n\n const serializer = useCallback<(value: T) => string>(\n (value) => {\n if (options.serializer) {\n return options.serializer(value);\n }\n return JSON.stringify(value);\n },\n [options]\n );\n\n const deserializer = useCallback<(value: string) => T>(\n (value) => {\n if (options.deserializer) {\n return options.deserializer(value);\n } else if (value === 'undefined') {\n return undefined as unknown as T;\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n let parsed: unknown;\n try {\n parsed = JSON.parse(value);\n } catch (err) {\n console.error(`Error parsing JSON: ${(err as Error).message}`);\n return defaultValue;\n }\n return parsed as T;\n },\n [options, initialValue]\n );\n\n const readValue = useCallback((): T => {\n const initialValueToUse = initialValue instanceof Function ? initialValue() : initialValue;\n if (!isBrowser()) {\n return initialValueToUse;\n }\n const raw = storage.getItem(key);\n return raw ? deserializer(raw) : initialValueToUse;\n }, [initialValue, key, deserializer]);\n\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return initialValue instanceof Function ? initialValue() : initialValue;\n });\n\n const setValue: Dispatch<SetStateAction<T>> = useEventCallback((value) => {\n if (!isBrowser()) {\n console.warn(`Tried setting storage key “${key}” even though environment is not a client`);\n }\n try {\n const newValue = value instanceof Function ? value(readValue()) : value;\n storage.setItem(key, serializer(newValue));\n setStoredValue(newValue);\n window.dispatchEvent(new StorageEvent(storageName, { key }));\n } catch (error) {\n console.warn(`Error setting storage key “${key}”:`, error);\n }\n });\n\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n\n const handleStorageChange = useCallback(\n (event: CustomEvent | StorageEvent) => {\n if ((event as StorageEvent).key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n\n // this only works for other documents, not the current one\n useEventListener('storage', handleStorageChange);\n\n useEventListener(storageName, handleStorageChange);\n\n return [storedValue, setValue];\n}\n\nexport type { StorageName, UseStorageOptions };\n","import type { Dispatch, SetStateAction } from 'react';\n\nimport { useStorage } from './useStorage';\n\nimport type { UseStorageOptions } from './useStorage';\n\n/** Custom hook that uses local storage to persist state across page reloads */\nexport function useLocalStorage<T>(\n key: string,\n initialValue: (() => T) | T,\n options: UseStorageOptions<T> = {}\n): [T, Dispatch<SetStateAction<T>>] {\n return useStorage(key, initialValue, 'localStorage', options);\n}\n","import type { Dispatch, SetStateAction } from 'react';\n\nimport { useStorage } from './useStorage';\n\nimport type { UseStorageOptions } from './useStorage';\n\n/** Custom hook that uses session storage to persist state across page reloads */\nexport function useSessionStorage<T>(\n key: string,\n initialValue: (() => T) | T,\n options: UseStorageOptions<T> = {}\n): [T, Dispatch<SetStateAction<T>>] {\n return useStorage(key, initialValue, 'sessionStorage', options);\n}\n","import { useEffect, useState } from 'react';\n\n// this is required since our storybook manager plugin cannot use vite aliases\nimport { isBrowser } from '../../utils';\n\ntype Theme = 'dark' | 'light';\n\ntype UpdateTheme = (theme: Theme) => void;\n\n/** @private */\nconst DEFAULT_THEME: Theme = 'light';\n\n/** @private */\nconst THEME_ATTRIBUTE = 'data-mode';\n\n/** @private */\nconst THEME_KEY = 'theme';\n\n/** @private */\nconst SYS_DARK_MEDIA_QUERY = '(prefers-color-scheme: dark)';\n\n/**\n * Returns the current theme and a function to update the current theme\n *\n * The reason the implementation of this hook is rather convoluted is for\n * cases where the theme is updated outside this hook\n */\nfunction useTheme(): readonly [Theme, UpdateTheme] {\n // Initial theme value is based on the value saved in local storage or the system theme\n const [theme, setTheme] = useState<Theme>(() => {\n if (!isBrowser()) {\n return DEFAULT_THEME;\n }\n const savedTheme = window.localStorage.getItem(THEME_KEY);\n let initialTheme: Theme;\n if (savedTheme === 'dark' || savedTheme === 'light') {\n initialTheme = savedTheme;\n } else {\n initialTheme = window.matchMedia(SYS_DARK_MEDIA_QUERY).matches ? 'dark' : 'light';\n }\n document.documentElement.setAttribute(THEME_ATTRIBUTE, initialTheme);\n return initialTheme;\n });\n\n useEffect(() => {\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === THEME_ATTRIBUTE) {\n const updatedTheme = (mutation.target as HTMLHtmlElement).getAttribute(THEME_ATTRIBUTE);\n if (updatedTheme === 'light' || updatedTheme === 'dark') {\n window.localStorage.setItem(THEME_KEY, updatedTheme);\n setTheme(updatedTheme);\n } else {\n console.error(`Unexpected value for 'data-mode' attribute: ${updatedTheme}`);\n }\n }\n });\n });\n observer.observe(document.documentElement, {\n attributes: true\n });\n return () => observer.disconnect();\n }, []);\n\n // When the user wants to change the theme\n const updateTheme = (theme: Theme) => {\n document.documentElement.setAttribute(THEME_ATTRIBUTE, theme);\n };\n\n return [theme, updateTheme] as const;\n}\n\nexport { DEFAULT_THEME, SYS_DARK_MEDIA_QUERY, type Theme, THEME_ATTRIBUTE, THEME_KEY, useTheme };\n","import { useCallback } from 'react';\n\nimport { useStore } from 'zustand';\n\nimport { translationStore } from '@/i18n';\nimport type { TranslateFunction, TranslationNamespace } from '@/i18n';\nimport { getTranslation } from '@/i18n/internal';\n\nexport function useTranslation<TNamespace extends TranslationNamespace | undefined = undefined>(\n namespace?: TNamespace\n) {\n const changeLanguage = useStore(translationStore, (store) => store.changeLanguage);\n const fallbackLanguage = useStore(translationStore, (store) => store.fallbackLanguage);\n const resolvedLanguage = useStore(translationStore, (store) => store.resolvedLanguage);\n const translations = useStore(translationStore, (store) => {\n if (namespace) {\n return store.translations[namespace];\n }\n return store.translations;\n });\n\n const t: TranslateFunction<TNamespace> = useCallback(\n (target, ...args) => {\n return getTranslation(target, { fallbackLanguage, resolvedLanguage, translations }, ...args);\n },\n [fallbackLanguage, resolvedLanguage, translations]\n );\n\n return { changeLanguage, resolvedLanguage, t };\n}\n","import { useState } from 'react';\n\nimport { useEventListener } from '../useEventListener';\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';\n\nexport type WindowSize = {\n height: number;\n width: number;\n};\n\nexport function useWindowSize(): WindowSize {\n const [windowSize, setWindowSize] = useState<WindowSize>({\n height: 0,\n width: 0\n });\n\n const handleSize = () => {\n setWindowSize({\n height: window.innerHeight,\n width: window.innerWidth\n });\n };\n\n useEventListener('resize', handleSize);\n\n // Set size at the first client-side load\n useIsomorphicLayoutEffect(() => {\n handleSize();\n }, []);\n\n return windowSize;\n}\n"],"mappings":";;;;;;;;;;AAAA,SAAS,kBAAkB;;;ACA3B,SAAS,qBAAqB;AAQvB,IAAM,eAAe,cAAwC,IAAI;;;ADJjE,SAAS,WAAW;AACzB,QAAM,UAAU,WAAW,YAAY;AACvC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AACA,SAAO;AACT;;;AEVA,SAAS,WAAW,gBAAgB;;;ACApC,SAAS,cAAc;AAgBhB,IAAM,wBAAwB,OAA2B,CAAC,SAAS;AAAA,EACxE,iBAAiB,CAAC,iBAAiB;AACjC,QAAI,CAAC,WAAW;AAAA,MACd,eAAe,CAAC,GAAG,MAAM,eAAe,EAAE,IAAI,KAAK,IAAI,GAAG,GAAG,aAAa,CAAC;AAAA,IAC7E,EAAE;AAAA,EACJ;AAAA,EACA,qBAAqB,CAAC,OAAO;AAC3B,QAAI,CAAC,WAAW;AAAA,MACd,eAAe,MAAM,cAAc,OAAO,CAAC,iBAAiB,aAAa,OAAO,EAAE;AAAA,IACpF,EAAE;AAAA,EACJ;AAAA,EACA,eAAe,CAAC;AAClB,EAAE;;;ADKK,SAAS,cAAgC;AAC9C,QAAM,gBAAgB,sBAAsB;AAC5C,QAAM,CAAC,WAAW,YAAY,IAAI,SAAyB,CAAC,CAAC;AAE7D,YAAU,MAAM;AACd,QAAI,UAAU,QAAQ;AACpB,YAAM,EAAE,UAAU,MAAM,UAAU,GAAG,IAAI,UAAU,GAAG,EAAE;AACxD,YAAM,SAAS,SAAS,cAAc,GAAG;AACzC,eAAS,KAAK,YAAY,MAAM;AAChC,YAAM,OAAO,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AAChD,YAAM,MAAM,IAAI,gBAAgB,IAAI;AACpC,aAAO,OAAO;AACd,aAAO,WAAW;AAClB,aAAO,MAAM;AACb,UAAI,gBAAgB,GAAG;AACvB,aAAO,OAAO;AACd,mBAAa,CAAC,kBAAkB,cAAc,OAAO,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;AAAA,IAChF;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAEd,SAAO,OAAO,UAAU,OAAO,YAAY;AACzC,QAAI;AACF,YAAM,OAAO,OAAO,UAAU,aAAa,MAAM,MAAM,IAAI;AAC3D,UAAI,OAAO,SAAS,YAAY,CAAC,SAAS,UAAU;AAClD,cAAM,IAAI,MAAM,gFAAgF;AAAA,MAClG;AACA,mBAAa,CAAC,kBAAkB;AAAA,QAC9B,GAAG;AAAA,QACH,EAAE,UAAU,SAAS,YAAY,cAAc,MAAM,UAAU,IAAI,OAAO,WAAW,EAAE;AAAA,MACzF,CAAC;AAAA,IACH,SAAS,OAAO;AACd,YAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AACzD,oBAAc,gBAAgB;AAAA,QAC5B;AAAA,QACA,OAAO;AAAA,QACP,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AExEA,SAAS,aAAa,cAAc;;;ACApC,SAAS,aAAAA,YAAW,uBAAuB;AAIpC,IAAM,4BAA4B,UAAU,IAAI,kBAAkBC;;;ADAlE,SAAS,iBAA4C,IAA0B;AACpF,QAAM,MAAM,OAAkB,MAAM;AAClC,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE,CAAC;AAED,4BAA0B,MAAM;AAC9B,QAAI,UAAU;AAAA,EAChB,GAAG,CAAC,EAAE,CAAC;AAEP,SAAO,YAAY,IAAI,SAAe,IAAI,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AACnE;;;AEdA,SAAS,aAAAC,YAAW,UAAAC,eAAc;AAqClC,SAAS,iBAMP,WACA,SACA,SACA,SACA;AAEA,QAAM,eAAeC,QAAO,OAAO;AAEnC,4BAA0B,MAAM;AAC9B,iBAAa,UAAU;AAAA,EACzB,GAAG,CAAC,OAAO,CAAC;AAEZ,EAAAC,WAAU,MAAM;AAEd,UAAM,gBAA4B,SAAS,WAAW;AAEtD,QAAI,EAAE,iBAAiB,cAAc,kBAAmB;AAGxD,UAAM,WAA2B,CAAC,UAAU,aAAa,QAAQ,KAAK;AAEtE,kBAAc,iBAAiB,WAAW,UAAU,OAAO;AAG3D,WAAO,MAAM;AACX,oBAAc,oBAAoB,WAAW,UAAU,OAAO;AAAA,IAChE;AAAA,EACF,GAAG,CAAC,WAAW,SAAS,OAAO,CAAC;AAClC;;;ACvEA,SAAS,aAAAC,YAAW,UAAAC,eAAc;AAI3B,SAAS,YAAY,UAAsB,OAAsB;AACtE,QAAM,gBAAgBC,QAAO,QAAQ;AAGrC,4BAA0B,MAAM;AAC9B,kBAAc,UAAU;AAAA,EAC1B,GAAG,CAAC,QAAQ,CAAC;AAGb,EAAAC,WAAU,MAAM;AAGd,QAAI,CAAC,SAAS,UAAU,GAAG;AACzB;AAAA,IACF;AAEA,UAAM,KAAK,YAAY,MAAM,cAAc,QAAQ,GAAG,KAAK;AAE3D,WAAO,MAAM,cAAc,EAAE;AAAA,EAC/B,GAAG,CAAC,KAAK,CAAC;AACZ;;;ACxBA,SAAS,aAAAC,YAAW,YAAAC,iBAAgB;AAa7B,SAAS,cAAc,OAAwB;AACpD,QAAM,aAAa,CAACC,WAA2B;AAE7C,QAAI,UAAU,GAAG;AACf,aAAO,OAAO,WAAWA,MAAK,EAAE;AAAA,IAClC;AACA,WAAO;AAAA,EACT;AAEA,QAAM,CAAC,SAAS,UAAU,IAAIC,UAAkB,WAAW,KAAK,CAAC;AAEjE,WAAS,eAAe;AACtB,eAAW,WAAW,KAAK,CAAC;AAAA,EAC9B;AAEA,EAAAC,WAAU,MAAM;AACd,UAAM,aAAa,OAAO,WAAW,KAAK;AAG1C,iBAAa;AAEb,eAAW,iBAAiB,UAAU,YAAY;AAElD,WAAO,MAAM;AACX,iBAAW,oBAAoB,UAAU,YAAY;AAAA,IACvD;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO;AACT;;;ACpCO,SAAS,kBACd,KACA,SACA,aAAsC,aAChC;AACN,mBAAiB,YAAY,CAAC,UAAU;AACtC,UAAM,KAAK,IAAI;AAGf,QAAI,CAAC,MAAM,GAAG,SAAS,MAAM,MAAc,GAAG;AAC5C;AAAA,IACF;AAEA,YAAQ,KAAK;AAAA,EACf,CAAC;AACH;;;ACrBA,SAAS,eAAAC,cAAa,aAAAC,YAAW,YAAAC,iBAAgB;AAiD1C,SAAS,WACd,KACA,cACA,aACA,UAAgC,CAAC,GACC;AAClC,QAAM,EAAE,sBAAsB,KAAK,IAAI;AACvC,QAAM,UAAU,OAAO,WAAW;AAElC,QAAM,aAAaC;AAAA,IACjB,CAAC,UAAU;AACT,UAAI,QAAQ,YAAY;AACtB,eAAO,QAAQ,WAAW,KAAK;AAAA,MACjC;AACA,aAAO,KAAK,UAAU,KAAK;AAAA,IAC7B;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,eAAeA;AAAA,IACnB,CAAC,UAAU;AACT,UAAI,QAAQ,cAAc;AACxB,eAAO,QAAQ,aAAa,KAAK;AAAA,MACnC,WAAW,UAAU,aAAa;AAChC,eAAO;AAAA,MACT;AACA,YAAM,eAAe,wBAAwB,WAAW,aAAa,IAAI;AACzE,UAAI;AACJ,UAAI;AACF,iBAAS,KAAK,MAAM,KAAK;AAAA,MAC3B,SAAS,KAAK;AACZ,gBAAQ,MAAM,uBAAwB,IAAc,OAAO,EAAE;AAC7D,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,SAAS,YAAY;AAAA,EACxB;AAEA,QAAM,YAAYA,aAAY,MAAS;AACrC,UAAM,oBAAoB,wBAAwB,WAAW,aAAa,IAAI;AAC9E,QAAI,CAAC,UAAU,GAAG;AAChB,aAAO;AAAA,IACT;AACA,UAAM,MAAM,QAAQ,QAAQ,GAAG;AAC/B,WAAO,MAAM,aAAa,GAAG,IAAI;AAAA,EACnC,GAAG,CAAC,cAAc,KAAK,YAAY,CAAC;AAEpC,QAAM,CAAC,aAAa,cAAc,IAAIC,UAAS,MAAM;AACnD,QAAI,qBAAqB;AACvB,aAAO,UAAU;AAAA,IACnB;AACA,WAAO,wBAAwB,WAAW,aAAa,IAAI;AAAA,EAC7D,CAAC;AAED,QAAM,WAAwC,iBAAiB,CAAC,UAAU;AACxE,QAAI,CAAC,UAAU,GAAG;AAChB,cAAQ,KAAK,mCAA8B,GAAG,gDAA2C;AAAA,IAC3F;AACA,QAAI;AACF,YAAM,WAAW,iBAAiB,WAAW,MAAM,UAAU,CAAC,IAAI;AAClE,cAAQ,QAAQ,KAAK,WAAW,QAAQ,CAAC;AACzC,qBAAe,QAAQ;AACvB,aAAO,cAAc,IAAI,aAAa,aAAa,EAAE,IAAI,CAAC,CAAC;AAAA,IAC7D,SAAS,OAAO;AACd,cAAQ,KAAK,mCAA8B,GAAG,WAAM,KAAK;AAAA,IAC3D;AAAA,EACF,CAAC;AAED,EAAAC,WAAU,MAAM;AACd,mBAAe,UAAU,CAAC;AAAA,EAC5B,GAAG,CAAC,GAAG,CAAC;AAER,QAAM,sBAAsBF;AAAA,IAC1B,CAAC,UAAsC;AACrC,UAAK,MAAuB,OAAQ,MAAuB,QAAQ,KAAK;AACtE;AAAA,MACF;AACA,qBAAe,UAAU,CAAC;AAAA,IAC5B;AAAA,IACA,CAAC,KAAK,SAAS;AAAA,EACjB;AAGA,mBAAiB,WAAW,mBAAmB;AAE/C,mBAAiB,aAAa,mBAAmB;AAEjD,SAAO,CAAC,aAAa,QAAQ;AAC/B;;;ACnIO,SAAS,gBACd,KACA,cACA,UAAgC,CAAC,GACC;AAClC,SAAO,WAAW,KAAK,cAAc,gBAAgB,OAAO;AAC9D;;;ACNO,SAAS,kBACd,KACA,cACA,UAAgC,CAAC,GACC;AAClC,SAAO,WAAW,KAAK,cAAc,kBAAkB,OAAO;AAChE;;;ACbA,SAAS,aAAAG,YAAW,YAAAC,iBAAgB;AAUpC,IAAM,gBAAuB;AAG7B,IAAM,kBAAkB;AAGxB,IAAM,YAAY;AAGlB,IAAM,uBAAuB;AAQ7B,SAAS,WAA0C;AAEjD,QAAM,CAAC,OAAO,QAAQ,IAAIC,UAAgB,MAAM;AAC9C,QAAI,CAAC,UAAU,GAAG;AAChB,aAAO;AAAA,IACT;AACA,UAAM,aAAa,OAAO,aAAa,QAAQ,SAAS;AACxD,QAAI;AACJ,QAAI,eAAe,UAAU,eAAe,SAAS;AACnD,qBAAe;AAAA,IACjB,OAAO;AACL,qBAAe,OAAO,WAAW,oBAAoB,EAAE,UAAU,SAAS;AAAA,IAC5E;AACA,aAAS,gBAAgB,aAAa,iBAAiB,YAAY;AACnE,WAAO;AAAA,EACT,CAAC;AAED,EAAAC,WAAU,MAAM;AACd,UAAM,WAAW,IAAI,iBAAiB,CAAC,cAAc;AACnD,gBAAU,QAAQ,CAAC,aAAa;AAC9B,YAAI,SAAS,kBAAkB,iBAAiB;AAC9C,gBAAM,eAAgB,SAAS,OAA2B,aAAa,eAAe;AACtF,cAAI,iBAAiB,WAAW,iBAAiB,QAAQ;AACvD,mBAAO,aAAa,QAAQ,WAAW,YAAY;AACnD,qBAAS,YAAY;AAAA,UACvB,OAAO;AACL,oBAAQ,MAAM,+CAA+C,YAAY,EAAE;AAAA,UAC7E;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,aAAS,QAAQ,SAAS,iBAAiB;AAAA,MACzC,YAAY;AAAA,IACd,CAAC;AACD,WAAO,MAAM,SAAS,WAAW;AAAA,EACnC,GAAG,CAAC,CAAC;AAGL,QAAM,cAAc,CAACC,WAAiB;AACpC,aAAS,gBAAgB,aAAa,iBAAiBA,MAAK;AAAA,EAC9D;AAEA,SAAO,CAAC,OAAO,WAAW;AAC5B;;;ACtEA,SAAS,eAAAC,oBAAmB;AAE5B,SAAS,gBAAgB;AAMlB,SAAS,eACd,WACA;AACA,QAAM,iBAAiB,SAAS,kBAAkB,CAAC,UAAU,MAAM,cAAc;AACjF,QAAM,mBAAmB,SAAS,kBAAkB,CAAC,UAAU,MAAM,gBAAgB;AACrF,QAAM,mBAAmB,SAAS,kBAAkB,CAAC,UAAU,MAAM,gBAAgB;AACrF,QAAM,eAAe,SAAS,kBAAkB,CAAC,UAAU;AACzD,QAAI,WAAW;AACb,aAAO,MAAM,aAAa,SAAS;AAAA,IACrC;AACA,WAAO,MAAM;AAAA,EACf,CAAC;AAED,QAAM,IAAmCC;AAAA,IACvC,CAAC,WAAW,SAAS;AACnB,aAAO,eAAe,QAAQ,EAAE,kBAAkB,kBAAkB,aAAa,GAAG,GAAG,IAAI;AAAA,IAC7F;AAAA,IACA,CAAC,kBAAkB,kBAAkB,YAAY;AAAA,EACnD;AAEA,SAAO,EAAE,gBAAgB,kBAAkB,EAAE;AAC/C;;;AC7BA,SAAS,YAAAC,iBAAgB;AAUlB,SAAS,gBAA4B;AAC1C,QAAM,CAAC,YAAY,aAAa,IAAIC,UAAqB;AAAA,IACvD,QAAQ;AAAA,IACR,OAAO;AAAA,EACT,CAAC;AAED,QAAM,aAAa,MAAM;AACvB,kBAAc;AAAA,MACZ,QAAQ,OAAO;AAAA,MACf,OAAO,OAAO;AAAA,IAChB,CAAC;AAAA,EACH;AAEA,mBAAiB,UAAU,UAAU;AAGrC,4BAA0B,MAAM;AAC9B,eAAW;AAAA,EACb,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;","names":["useEffect","useEffect","useEffect","useRef","useRef","useEffect","useEffect","useRef","useRef","useEffect","useEffect","useState","query","useState","useEffect","useCallback","useEffect","useState","useCallback","useState","useEffect","useEffect","useState","useState","useEffect","theme","useCallback","useCallback","useState","useState"]}
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from 'react';
2
- import React__default, { HTMLProps } from 'react';
2
+ import React__default, { HTMLProps, ReactElement } from 'react';
3
3
  import * as _radix_ui_react_accordion from '@radix-ui/react-accordion';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
@@ -25,7 +25,7 @@ import { FormDataType, FormContent, PartialNullableFormDataType } from '@douglas
25
25
  import { z } from 'zod';
26
26
  import * as _radix_ui_react_hover_card from '@radix-ui/react-hover-card';
27
27
  import * as LabelPrimitive from '@radix-ui/react-label';
28
- import { L as Language } from './types-CU3FS63U.js';
28
+ import { L as Language } from './types-CMuti1SJ.js';
29
29
  import * as _radix_ui_react_menubar from '@radix-ui/react-menubar';
30
30
  import { MenubarMenuProps } from '@radix-ui/react-menubar';
31
31
  import * as _radix_ui_react_popover from '@radix-ui/react-popover';
@@ -49,9 +49,9 @@ type DropdownMenuContentProps = React$1.ComponentPropsWithoutRef<typeof Dropdown
49
49
  widthFull?: boolean;
50
50
  };
51
51
 
52
- type ActionDropdownOptions = {
52
+ type ActionDropdownOptions = readonly string[] | {
53
53
  [key: string]: string;
54
- } | readonly string[];
54
+ };
55
55
  type ActionDropdownOptionKey<T> = T extends readonly string[] ? T[number] : T extends {
56
56
  [key: string]: string;
57
57
  } ? Extract<keyof T, string> : never;
@@ -77,8 +77,8 @@ declare const AlertDialog: React$1.FC<_radix_ui_react_alert_dialog.AlertDialogPr
77
77
  Cancel: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_alert_dialog.AlertDialogCancelProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
78
78
  Content: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_alert_dialog.AlertDialogContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
79
79
  Description: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_alert_dialog.AlertDialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
80
- Footer: ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
81
- Header: ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
80
+ Footer: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
81
+ Header: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
82
82
  Overlay: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_alert_dialog.AlertDialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
83
83
  Title: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_alert_dialog.AlertDialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
84
84
  Trigger: React$1.ForwardRefExoticComponent<_radix_ui_react_alert_dialog.AlertDialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
@@ -101,7 +101,7 @@ type ButtonProps = Simplify<React$1.ButtonHTMLAttributes<HTMLButtonElement> & Va
101
101
  declare const Button: React$1.ForwardRefExoticComponent<{
102
102
  disabled?: boolean | undefined;
103
103
  form?: string | undefined;
104
- formAction?: string | React$1.DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS[keyof React$1.DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS] | undefined;
104
+ formAction?: string | ((formData: FormData) => void | Promise<void>) | React$1.DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS[keyof React$1.DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS] | undefined;
105
105
  formEncType?: string | undefined;
106
106
  formMethod?: string | undefined;
107
107
  formNoValidate?: boolean | undefined;
@@ -156,8 +156,14 @@ declare const Button: React$1.ForwardRefExoticComponent<{
156
156
  results?: number | undefined;
157
157
  security?: string | undefined;
158
158
  unselectable?: "on" | "off" | undefined;
159
+ popover?: "" | "auto" | "manual" | undefined;
160
+ popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
161
+ popoverTarget?: string | undefined;
162
+ inert?: boolean | undefined;
159
163
  inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
160
164
  is?: string | undefined;
165
+ exportparts?: string | undefined;
166
+ part?: string | undefined;
161
167
  "aria-activedescendant"?: string | undefined;
162
168
  "aria-atomic"?: (boolean | "true" | "false") | undefined;
163
169
  "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
@@ -365,6 +371,8 @@ declare const Button: React$1.ForwardRefExoticComponent<{
365
371
  onLostPointerCaptureCapture?: React$1.PointerEventHandler<HTMLButtonElement> | undefined;
366
372
  onScroll?: React$1.UIEventHandler<HTMLButtonElement> | undefined;
367
373
  onScrollCapture?: React$1.UIEventHandler<HTMLButtonElement> | undefined;
374
+ onScrollEnd?: React$1.UIEventHandler<HTMLButtonElement> | undefined;
375
+ onScrollEndCapture?: React$1.UIEventHandler<HTMLButtonElement> | undefined;
368
376
  onWheel?: React$1.WheelEventHandler<HTMLButtonElement> | undefined;
369
377
  onWheelCapture?: React$1.WheelEventHandler<HTMLButtonElement> | undefined;
370
378
  onAnimationStart?: React$1.AnimationEventHandler<HTMLButtonElement> | undefined;
@@ -373,8 +381,16 @@ declare const Button: React$1.ForwardRefExoticComponent<{
373
381
  onAnimationEndCapture?: React$1.AnimationEventHandler<HTMLButtonElement> | undefined;
374
382
  onAnimationIteration?: React$1.AnimationEventHandler<HTMLButtonElement> | undefined;
375
383
  onAnimationIterationCapture?: React$1.AnimationEventHandler<HTMLButtonElement> | undefined;
384
+ onToggle?: React$1.ToggleEventHandler<HTMLButtonElement> | undefined;
385
+ onBeforeToggle?: React$1.ToggleEventHandler<HTMLButtonElement> | undefined;
386
+ onTransitionCancel?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
387
+ onTransitionCancelCapture?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
376
388
  onTransitionEnd?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
377
389
  onTransitionEndCapture?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
390
+ onTransitionRun?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
391
+ onTransitionRunCapture?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
392
+ onTransitionStart?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
393
+ onTransitionStartCapture?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
378
394
  size?: "md" | "icon" | "lg" | "sm" | null | undefined;
379
395
  variant?: "link" | "primary" | "danger" | "ghost" | "outline" | "secondary" | null | undefined;
380
396
  asChild?: boolean | undefined;
@@ -440,8 +456,14 @@ declare const ArrowToggle: React$1.ForwardRefExoticComponent<{
440
456
  results?: number | undefined;
441
457
  security?: string | undefined;
442
458
  unselectable?: "on" | "off" | undefined;
459
+ popover?: "" | "auto" | "manual" | undefined;
460
+ popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
461
+ popoverTarget?: string | undefined;
462
+ inert?: boolean | undefined;
443
463
  inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
444
464
  is?: string | undefined;
465
+ exportparts?: string | undefined;
466
+ part?: string | undefined;
445
467
  "aria-activedescendant"?: string | undefined;
446
468
  "aria-atomic"?: (boolean | "true" | "false") | undefined;
447
469
  "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
@@ -649,6 +671,8 @@ declare const ArrowToggle: React$1.ForwardRefExoticComponent<{
649
671
  onLostPointerCaptureCapture?: React$1.PointerEventHandler<HTMLButtonElement> | undefined;
650
672
  onScroll?: React$1.UIEventHandler<HTMLButtonElement> | undefined;
651
673
  onScrollCapture?: React$1.UIEventHandler<HTMLButtonElement> | undefined;
674
+ onScrollEnd?: React$1.UIEventHandler<HTMLButtonElement> | undefined;
675
+ onScrollEndCapture?: React$1.UIEventHandler<HTMLButtonElement> | undefined;
652
676
  onWheel?: React$1.WheelEventHandler<HTMLButtonElement> | undefined;
653
677
  onWheelCapture?: React$1.WheelEventHandler<HTMLButtonElement> | undefined;
654
678
  onAnimationStart?: React$1.AnimationEventHandler<HTMLButtonElement> | undefined;
@@ -657,8 +681,16 @@ declare const ArrowToggle: React$1.ForwardRefExoticComponent<{
657
681
  onAnimationEndCapture?: React$1.AnimationEventHandler<HTMLButtonElement> | undefined;
658
682
  onAnimationIteration?: React$1.AnimationEventHandler<HTMLButtonElement> | undefined;
659
683
  onAnimationIterationCapture?: React$1.AnimationEventHandler<HTMLButtonElement> | undefined;
684
+ onToggle?: React$1.ToggleEventHandler<HTMLButtonElement> | undefined;
685
+ onBeforeToggle?: React$1.ToggleEventHandler<HTMLButtonElement> | undefined;
686
+ onTransitionCancel?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
687
+ onTransitionCancelCapture?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
660
688
  onTransitionEnd?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
661
689
  onTransitionEndCapture?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
690
+ onTransitionRun?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
691
+ onTransitionRunCapture?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
692
+ onTransitionStart?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
693
+ onTransitionStartCapture?: React$1.TransitionEventHandler<HTMLButtonElement> | undefined;
662
694
  isToggled?: boolean | undefined;
663
695
  position: "down" | "left" | "right" | "up";
664
696
  rotation?: number | undefined;
@@ -672,7 +704,7 @@ declare const Avatar: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_ava
672
704
  };
673
705
 
674
706
  declare const badgeVariants: (props?: ({
675
- variant?: "default" | "outline" | "secondary" | "destructive" | null | undefined;
707
+ variant?: "outline" | "secondary" | "default" | "destructive" | null | undefined;
676
708
  } & class_variance_authority_types.ClassProp) | undefined) => string;
677
709
  type BadgeProps = React$1.HTMLAttributes<HTMLDivElement> & VariantProps<typeof badgeVariants>;
678
710
  declare const Badge: ({ className, variant, ...props }: BadgeProps) => react_jsx_runtime.JSX.Element;
@@ -680,14 +712,14 @@ declare const Badge: ({ className, variant, ...props }: BadgeProps) => react_jsx
680
712
  declare const Breadcrumb: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & {
681
713
  separator?: React.ReactNode;
682
714
  } & React$1.RefAttributes<HTMLElement>> & {
683
- Ellipsis: ({ className, ...props }: React$1.ComponentProps<"span">) => react_jsx_runtime.JSX.Element;
715
+ Ellipsis: ({ className, ...props }: React.ComponentProps<"span">) => react_jsx_runtime.JSX.Element;
684
716
  Item: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & React$1.RefAttributes<HTMLLIElement>>;
685
717
  Link: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & {
686
718
  asChild?: boolean;
687
719
  } & React$1.RefAttributes<HTMLAnchorElement>>;
688
720
  List: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.OlHTMLAttributes<HTMLOListElement>, HTMLOListElement>, "ref"> & React$1.RefAttributes<HTMLOListElement>>;
689
721
  Page: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
690
- Separator: ({ children, className, ...props }: React$1.ComponentProps<"li">) => react_jsx_runtime.JSX.Element;
722
+ Separator: ({ children, className, ...props }: React.ComponentProps<"li">) => react_jsx_runtime.JSX.Element;
691
723
  };
692
724
 
693
725
  declare const Card: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>> & {
@@ -785,11 +817,11 @@ declare const Collapsible: React$1.ForwardRefExoticComponent<Omit<_radix_ui_reac
785
817
  };
786
818
 
787
819
  declare const Command: React$1.ForwardRefExoticComponent<{
820
+ filter?: ((value: string, search: string, keywords?: string[]) => number) | undefined;
788
821
  label?: string | undefined;
789
822
  slot?: string | undefined;
790
823
  style?: React$1.CSSProperties | undefined;
791
824
  title?: string | undefined;
792
- filter?: ((value: string, search: string, keywords?: string[]) => number) | undefined;
793
825
  key?: React$1.Key | null | undefined;
794
826
  defaultChecked?: boolean | undefined;
795
827
  defaultValue?: string | (readonly string[] & string) | undefined;
@@ -835,8 +867,14 @@ declare const Command: React$1.ForwardRefExoticComponent<{
835
867
  results?: number | undefined;
836
868
  security?: string | undefined;
837
869
  unselectable?: "on" | "off" | undefined;
870
+ popover?: "" | "auto" | "manual" | undefined;
871
+ popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
872
+ popoverTarget?: string | undefined;
873
+ inert?: boolean | undefined;
838
874
  inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
839
875
  is?: string | undefined;
876
+ exportparts?: string | undefined;
877
+ part?: string | undefined;
840
878
  "aria-activedescendant"?: string | undefined;
841
879
  "aria-atomic"?: (boolean | "true" | "false") | undefined;
842
880
  "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
@@ -1044,6 +1082,8 @@ declare const Command: React$1.ForwardRefExoticComponent<{
1044
1082
  onLostPointerCaptureCapture?: React$1.PointerEventHandler<HTMLDivElement> | undefined;
1045
1083
  onScroll?: React$1.UIEventHandler<HTMLDivElement> | undefined;
1046
1084
  onScrollCapture?: React$1.UIEventHandler<HTMLDivElement> | undefined;
1085
+ onScrollEnd?: React$1.UIEventHandler<HTMLDivElement> | undefined;
1086
+ onScrollEndCapture?: React$1.UIEventHandler<HTMLDivElement> | undefined;
1047
1087
  onWheel?: React$1.WheelEventHandler<HTMLDivElement> | undefined;
1048
1088
  onWheelCapture?: React$1.WheelEventHandler<HTMLDivElement> | undefined;
1049
1089
  onAnimationStart?: React$1.AnimationEventHandler<HTMLDivElement> | undefined;
@@ -1052,12 +1092,20 @@ declare const Command: React$1.ForwardRefExoticComponent<{
1052
1092
  onAnimationEndCapture?: React$1.AnimationEventHandler<HTMLDivElement> | undefined;
1053
1093
  onAnimationIteration?: React$1.AnimationEventHandler<HTMLDivElement> | undefined;
1054
1094
  onAnimationIterationCapture?: React$1.AnimationEventHandler<HTMLDivElement> | undefined;
1095
+ onToggle?: React$1.ToggleEventHandler<HTMLDivElement> | undefined;
1096
+ onBeforeToggle?: React$1.ToggleEventHandler<HTMLDivElement> | undefined;
1097
+ onTransitionCancel?: React$1.TransitionEventHandler<HTMLDivElement> | undefined;
1098
+ onTransitionCancelCapture?: React$1.TransitionEventHandler<HTMLDivElement> | undefined;
1055
1099
  onTransitionEnd?: React$1.TransitionEventHandler<HTMLDivElement> | undefined;
1056
1100
  onTransitionEndCapture?: React$1.TransitionEventHandler<HTMLDivElement> | undefined;
1101
+ onTransitionRun?: React$1.TransitionEventHandler<HTMLDivElement> | undefined;
1102
+ onTransitionRunCapture?: React$1.TransitionEventHandler<HTMLDivElement> | undefined;
1103
+ onTransitionStart?: React$1.TransitionEventHandler<HTMLDivElement> | undefined;
1104
+ onTransitionStartCapture?: React$1.TransitionEventHandler<HTMLDivElement> | undefined;
1057
1105
  asChild?: boolean | undefined;
1058
1106
  value?: string | undefined;
1059
- loop?: boolean | undefined;
1060
1107
  onValueChange?: ((value: string) => void) | undefined;
1108
+ loop?: boolean | undefined;
1061
1109
  shouldFilter?: boolean | undefined;
1062
1110
  disablePointerSelection?: boolean | undefined;
1063
1111
  vimBindings?: boolean | undefined;
@@ -1075,7 +1123,7 @@ declare const Command: React$1.ForwardRefExoticComponent<{
1075
1123
  ref?: React$1.Ref<HTMLDivElement>;
1076
1124
  } & {
1077
1125
  asChild?: boolean;
1078
- }, "key" | keyof React$1.HTMLAttributes<HTMLDivElement> | "asChild">, "value" | "heading"> & {
1126
+ }, "key" | keyof React$1.HTMLAttributes<HTMLDivElement> | "asChild">, "heading" | "value"> & {
1079
1127
  heading?: React$1.ReactNode;
1080
1128
  value?: string;
1081
1129
  forceMount?: boolean;
@@ -1084,7 +1132,7 @@ declare const Command: React$1.ForwardRefExoticComponent<{
1084
1132
  ref?: React$1.Ref<HTMLInputElement>;
1085
1133
  } & {
1086
1134
  asChild?: boolean;
1087
- }, "key" | "asChild" | keyof React$1.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "type" | "value"> & {
1135
+ }, "key" | "asChild" | keyof React$1.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "value" | "type"> & {
1088
1136
  value?: string;
1089
1137
  onValueChange?: (search: string) => void;
1090
1138
  } & React$1.RefAttributes<HTMLInputElement>, "ref"> & React$1.RefAttributes<HTMLInputElement>>;
@@ -1134,7 +1182,7 @@ declare const ContextMenu: React$1.FC<_radix_ui_react_context_menu.ContextMenuPr
1134
1182
  RadioGroup: React$1.ForwardRefExoticComponent<_radix_ui_react_context_menu.ContextMenuRadioGroupProps & React$1.RefAttributes<HTMLDivElement>>;
1135
1183
  RadioItem: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_context_menu.ContextMenuRadioItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1136
1184
  Separator: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_context_menu.ContextMenuSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1137
- Shortcut: ({ className, ...props }: React$1.HTMLAttributes<HTMLSpanElement>) => react_jsx_runtime.JSX.Element;
1185
+ Shortcut: ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => react_jsx_runtime.JSX.Element;
1138
1186
  Sub: React$1.FC<_radix_ui_react_context_menu.ContextMenuSubProps>;
1139
1187
  SubContent: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_context_menu.ContextMenuSubContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1140
1188
  SubTrigger: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_context_menu.ContextMenuSubTriggerProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
@@ -1157,11 +1205,11 @@ type DatePickerProps = {
1157
1205
  declare const DatePicker: React$1.ForwardRefExoticComponent<DatePickerProps & React$1.RefAttributes<HTMLDivElement>>;
1158
1206
 
1159
1207
  declare const Dialog: React$1.FC<_radix_ui_react_dialog.DialogProps> & {
1160
- Body: ({ children, className, ...props }: React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLDivElement>, HTMLDivElement>) => react_jsx_runtime.JSX.Element;
1208
+ Body: ({ children, className, ...props }: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>) => react_jsx_runtime.JSX.Element;
1161
1209
  Content: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_dialog.DialogContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1162
1210
  Description: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_dialog.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
1163
- Footer: ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
1164
- Header: ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
1211
+ Footer: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
1212
+ Header: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
1165
1213
  Title: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_dialog.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
1166
1214
  Trigger: React$1.ForwardRefExoticComponent<_radix_ui_react_dialog.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
1167
1215
  };
@@ -1194,7 +1242,7 @@ declare const DropdownMenu: React$1.FC<DropdownMenuPrimitive.DropdownMenuProps>
1194
1242
  RadioGroup: React$1.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React$1.RefAttributes<HTMLDivElement>>;
1195
1243
  RadioItem: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1196
1244
  Separator: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1197
- Shortcut: ({ className, ...props }: React$1.HTMLAttributes<HTMLSpanElement>) => react_jsx_runtime.JSX.Element;
1245
+ Shortcut: ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => react_jsx_runtime.JSX.Element;
1198
1246
  Sub: React$1.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
1199
1247
  SubContent: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1200
1248
  SubTrigger: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
@@ -1340,7 +1388,7 @@ declare const MenuBar: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_me
1340
1388
  RadioGroup: React$1.ForwardRefExoticComponent<_radix_ui_react_menubar.MenubarRadioGroupProps & React$1.RefAttributes<HTMLDivElement>>;
1341
1389
  RadioItem: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_menubar.MenubarRadioItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1342
1390
  Separator: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_menubar.MenubarSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1343
- Shortcut: ({ className, ...props }: React$1.HTMLAttributes<HTMLSpanElement>) => react_jsx_runtime.JSX.Element;
1391
+ Shortcut: ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => react_jsx_runtime.JSX.Element;
1344
1392
  Sub: React$1.FC<_radix_ui_react_menubar.MenubarSubProps>;
1345
1393
  SubContent: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_menubar.MenubarSubContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1346
1394
  SubTrigger: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_menubar.MenubarSubTriggerProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
@@ -1360,12 +1408,12 @@ type PaginationLinkProps = Simplify<Pick<ButtonProps, 'size'> & React$1.Componen
1360
1408
  }>;
1361
1409
  declare const PaginationLink: ({ children, className, isActive, size, ...props }: PaginationLinkProps) => react_jsx_runtime.JSX.Element;
1362
1410
 
1363
- declare const Pagination: (({ className, ...props }: React$1.ComponentProps<"nav">) => react_jsx_runtime.JSX.Element) & {
1364
- Content: ({ className, ...props }: React$1.ComponentProps<"ul">) => react_jsx_runtime.JSX.Element;
1365
- Ellipsis: ({ className, ...props }: React$1.ComponentProps<"span">) => react_jsx_runtime.JSX.Element;
1366
- Item: ({ className, ...props }: React$1.ComponentProps<"li">) => react_jsx_runtime.JSX.Element;
1411
+ declare const Pagination: (({ className, ...props }: React.ComponentProps<"nav">) => react_jsx_runtime.JSX.Element) & {
1412
+ Content: ({ className, ...props }: React.ComponentProps<"ul">) => react_jsx_runtime.JSX.Element;
1413
+ Ellipsis: ({ className, ...props }: React.ComponentProps<"span">) => react_jsx_runtime.JSX.Element;
1414
+ Item: ({ className, ...props }: React.ComponentProps<"li">) => react_jsx_runtime.JSX.Element;
1367
1415
  Link: ({ children, className, isActive, size, ...props }: PaginationLinkProps) => react_jsx_runtime.JSX.Element;
1368
- Next: ({ className, ...props }: React$1.ComponentProps<typeof PaginationLink>) => react_jsx_runtime.JSX.Element;
1416
+ Next: ({ className, ...props }: React.ComponentProps<typeof PaginationLink>) => react_jsx_runtime.JSX.Element;
1369
1417
  Previous: ({ className, ...props }: PaginationLinkProps) => react_jsx_runtime.JSX.Element;
1370
1418
  };
1371
1419
 
@@ -1457,14 +1505,14 @@ declare const Select: React$1.FC<SelectPrimitive.SelectProps> & {
1457
1505
  declare const Separator: React$1.ForwardRefExoticComponent<Omit<SeparatorPrimitive.SeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1458
1506
 
1459
1507
  declare const Sheet: React$1.FC<_radix_ui_react_dialog.DialogProps> & {
1460
- Body: ({ children, className, ...props }: React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLDivElement>, HTMLDivElement>) => react_jsx_runtime.JSX.Element;
1508
+ Body: ({ children, className, ...props }: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>) => react_jsx_runtime.JSX.Element;
1461
1509
  Close: React$1.ForwardRefExoticComponent<_radix_ui_react_dialog.DialogCloseProps & React$1.RefAttributes<HTMLButtonElement>>;
1462
1510
  Content: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_dialog.DialogContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & class_variance_authority.VariantProps<(props?: ({
1463
1511
  side?: "top" | "right" | "bottom" | "left" | null | undefined;
1464
1512
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLDivElement>>;
1465
1513
  Description: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_dialog.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
1466
- Footer: ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
1467
- Header: ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
1514
+ Footer: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
1515
+ Header: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
1468
1516
  Portal: React$1.FC<_radix_ui_react_dialog.DialogPortalProps>;
1469
1517
  Title: React$1.ForwardRefExoticComponent<Omit<_radix_ui_react_dialog.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
1470
1518
  Trigger: React$1.ForwardRefExoticComponent<_radix_ui_react_dialog.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
@@ -1479,7 +1527,7 @@ declare const SpinnerIcon: ({ className, ...props }: React$1.HTMLAttributes<SVGE
1479
1527
  type StatisticCardProps = {
1480
1528
  [key: `data-${string}`]: unknown;
1481
1529
  className?: string;
1482
- icon?: JSX.Element;
1530
+ icon?: ReactElement;
1483
1531
  label: string;
1484
1532
  value: number;
1485
1533
  };