@stfrigerio/sito-template 0.1.1 → 0.1.2

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 (160) hide show
  1. package/dist/App.d.ts +6 -0
  2. package/dist/App.d.ts.map +1 -0
  3. package/dist/components/atoms/AllAtoms.stories.d.ts +7 -0
  4. package/dist/components/atoms/AllAtoms.stories.d.ts.map +1 -0
  5. package/dist/components/atoms/ArrayInput/ArrayInput.d.ts +61 -0
  6. package/dist/components/atoms/ArrayInput/ArrayInput.d.ts.map +1 -0
  7. package/dist/components/atoms/ArrayInput/ArrayInput.stories.d.ts +42 -0
  8. package/dist/components/atoms/ArrayInput/ArrayInput.stories.d.ts.map +1 -0
  9. package/dist/components/atoms/ArrayInput/index.d.ts +3 -0
  10. package/dist/components/atoms/ArrayInput/index.d.ts.map +1 -0
  11. package/dist/components/atoms/Button/Button.d.ts +14 -0
  12. package/dist/components/atoms/Button/Button.d.ts.map +1 -0
  13. package/dist/components/atoms/Button/Button.stories.d.ts +59 -0
  14. package/dist/components/atoms/Button/Button.stories.d.ts.map +1 -0
  15. package/dist/components/atoms/Button/index.d.ts +3 -0
  16. package/dist/components/atoms/Button/index.d.ts.map +1 -0
  17. package/dist/components/atoms/Card/Card.d.ts +18 -0
  18. package/dist/components/atoms/Card/Card.d.ts.map +1 -0
  19. package/dist/components/atoms/Card/Card.stories.d.ts +52 -0
  20. package/dist/components/atoms/Card/Card.stories.d.ts.map +1 -0
  21. package/dist/components/atoms/Card/index.d.ts +3 -0
  22. package/dist/components/atoms/Card/index.d.ts.map +1 -0
  23. package/dist/components/atoms/Checkbox/Checkbox.d.ts +48 -0
  24. package/dist/components/atoms/Checkbox/Checkbox.d.ts.map +1 -0
  25. package/dist/components/atoms/Checkbox/Checkbox.stories.d.ts +41 -0
  26. package/dist/components/atoms/Checkbox/Checkbox.stories.d.ts.map +1 -0
  27. package/dist/components/atoms/Checkbox/index.d.ts +3 -0
  28. package/dist/components/atoms/Checkbox/index.d.ts.map +1 -0
  29. package/dist/components/atoms/DateInput/DateInput.d.ts +49 -0
  30. package/dist/components/atoms/DateInput/DateInput.d.ts.map +1 -0
  31. package/dist/components/atoms/DateInput/DateInput.stories.d.ts +47 -0
  32. package/dist/components/atoms/DateInput/DateInput.stories.d.ts.map +1 -0
  33. package/dist/components/atoms/DateInput/index.d.ts +3 -0
  34. package/dist/components/atoms/DateInput/index.d.ts.map +1 -0
  35. package/dist/components/atoms/SearchableDropdown/SearchableDropdown.d.ts +58 -0
  36. package/dist/components/atoms/SearchableDropdown/SearchableDropdown.d.ts.map +1 -0
  37. package/dist/components/atoms/SearchableDropdown/SearchableDropdown.stories.d.ts +47 -0
  38. package/dist/components/atoms/SearchableDropdown/SearchableDropdown.stories.d.ts.map +1 -0
  39. package/dist/components/atoms/SearchableDropdown/index.d.ts +3 -0
  40. package/dist/components/atoms/SearchableDropdown/index.d.ts.map +1 -0
  41. package/dist/components/atoms/SelectInput/SelectInput.d.ts +52 -0
  42. package/dist/components/atoms/SelectInput/SelectInput.d.ts.map +1 -0
  43. package/dist/components/atoms/SelectInput/SelectInput.stories.d.ts +41 -0
  44. package/dist/components/atoms/SelectInput/SelectInput.stories.d.ts.map +1 -0
  45. package/dist/components/atoms/SelectInput/index.d.ts +3 -0
  46. package/dist/components/atoms/SelectInput/index.d.ts.map +1 -0
  47. package/dist/components/atoms/TextArea/TextArea.d.ts +46 -0
  48. package/dist/components/atoms/TextArea/TextArea.d.ts.map +1 -0
  49. package/dist/components/atoms/TextArea/TextArea.stories.d.ts +58 -0
  50. package/dist/components/atoms/TextArea/TextArea.stories.d.ts.map +1 -0
  51. package/dist/components/atoms/TextArea/index.d.ts +3 -0
  52. package/dist/components/atoms/TextArea/index.d.ts.map +1 -0
  53. package/dist/components/atoms/TextInput/TextInput.d.ts +54 -0
  54. package/dist/components/atoms/TextInput/TextInput.d.ts.map +1 -0
  55. package/dist/components/atoms/TextInput/TextInput.stories.d.ts +64 -0
  56. package/dist/components/atoms/TextInput/TextInput.stories.d.ts.map +1 -0
  57. package/dist/components/atoms/TextInput/index.d.ts +3 -0
  58. package/dist/components/atoms/TextInput/index.d.ts.map +1 -0
  59. package/dist/components/atoms/Toggle/Toggle.d.ts +11 -0
  60. package/dist/components/atoms/Toggle/Toggle.d.ts.map +1 -0
  61. package/dist/components/atoms/Toggle/Toggle.stories.d.ts +43 -0
  62. package/dist/components/atoms/Toggle/Toggle.stories.d.ts.map +1 -0
  63. package/dist/components/atoms/Toggle/index.d.ts +3 -0
  64. package/dist/components/atoms/Toggle/index.d.ts.map +1 -0
  65. package/dist/components/atoms/index.d.ts +21 -0
  66. package/dist/components/atoms/index.d.ts.map +1 -0
  67. package/dist/components/index.d.ts +4 -0
  68. package/dist/components/index.d.ts.map +1 -0
  69. package/dist/components/molecules/EditFAB/EditFAB.d.ts +17 -0
  70. package/dist/components/molecules/EditFAB/EditFAB.d.ts.map +1 -0
  71. package/dist/components/molecules/EditFAB/EditFAB.stories.d.ts +54 -0
  72. package/dist/components/molecules/EditFAB/EditFAB.stories.d.ts.map +1 -0
  73. package/dist/components/molecules/EditFAB/index.d.ts +3 -0
  74. package/dist/components/molecules/EditFAB/index.d.ts.map +1 -0
  75. package/dist/components/molecules/SearchBar/SearchBar.d.ts +22 -0
  76. package/dist/components/molecules/SearchBar/SearchBar.d.ts.map +1 -0
  77. package/dist/components/molecules/SearchBar/SearchBar.stories.d.ts +18 -0
  78. package/dist/components/molecules/SearchBar/SearchBar.stories.d.ts.map +1 -0
  79. package/dist/components/molecules/SearchBar/index.d.ts +3 -0
  80. package/dist/components/molecules/SearchBar/index.d.ts.map +1 -0
  81. package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.d.ts +9 -0
  82. package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.d.ts.map +1 -0
  83. package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.stories.d.ts +13 -0
  84. package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.stories.d.ts.map +1 -0
  85. package/dist/components/molecules/TimeInput/TimeInput.d.ts +15 -0
  86. package/dist/components/molecules/TimeInput/TimeInput.d.ts.map +1 -0
  87. package/dist/components/molecules/TimeInput/TimeInput.stories.d.ts +13 -0
  88. package/dist/components/molecules/TimeInput/TimeInput.stories.d.ts.map +1 -0
  89. package/dist/components/molecules/TimeInput/TimePickerModal.d.ts +9 -0
  90. package/dist/components/molecules/TimeInput/TimePickerModal.d.ts.map +1 -0
  91. package/dist/components/molecules/TimeInput/index.d.ts +4 -0
  92. package/dist/components/molecules/TimeInput/index.d.ts.map +1 -0
  93. package/dist/components/molecules/index.d.ts +9 -0
  94. package/dist/components/molecules/index.d.ts.map +1 -0
  95. package/dist/components/organisms/Navbar/Navbar.d.ts +28 -0
  96. package/dist/components/organisms/Navbar/Navbar.d.ts.map +1 -0
  97. package/dist/components/organisms/Navbar/Navbar.stories.d.ts +15 -0
  98. package/dist/components/organisms/Navbar/Navbar.stories.d.ts.map +1 -0
  99. package/dist/components/organisms/ThemeProvider/ThemeProvider.d.ts +16 -0
  100. package/dist/components/organisms/ThemeProvider/ThemeProvider.d.ts.map +1 -0
  101. package/dist/components/organisms/animations/AnimationPlayer.d.ts +3 -0
  102. package/dist/components/organisms/animations/AnimationPlayer.d.ts.map +1 -0
  103. package/dist/components/organisms/animations/AnimationPlayer.stories.d.ts +23 -0
  104. package/dist/components/organisms/animations/AnimationPlayer.stories.d.ts.map +1 -0
  105. package/dist/components/organisms/animations/animationRegistry.d.ts +5 -0
  106. package/dist/components/organisms/animations/animationRegistry.d.ts.map +1 -0
  107. package/dist/components/organisms/animations/dna/DNAAnimations.d.ts +7 -0
  108. package/dist/components/organisms/animations/dna/DNAAnimations.d.ts.map +1 -0
  109. package/dist/components/organisms/animations/dna/DNAHelix.d.ts +10 -0
  110. package/dist/components/organisms/animations/dna/DNAHelix.d.ts.map +1 -0
  111. package/dist/components/organisms/animations/index.d.ts +4 -0
  112. package/dist/components/organisms/animations/index.d.ts.map +1 -0
  113. package/dist/components/organisms/animations/tree/ParticleTree.d.ts +8 -0
  114. package/dist/components/organisms/animations/tree/ParticleTree.d.ts.map +1 -0
  115. package/dist/components/organisms/animations/tree/TreeAnimations.d.ts +7 -0
  116. package/dist/components/organisms/animations/tree/TreeAnimations.d.ts.map +1 -0
  117. package/dist/components/organisms/animations/types.d.ts +12 -0
  118. package/dist/components/organisms/animations/types.d.ts.map +1 -0
  119. package/dist/components/organisms/charts/BooleansHeatmap/BooleansHeatmap.d.ts +14 -0
  120. package/dist/components/organisms/charts/BooleansHeatmap/BooleansHeatmap.d.ts.map +1 -0
  121. package/dist/components/organisms/charts/BooleansHeatmap/BooleansHeatmap.stories.d.ts +12 -0
  122. package/dist/components/organisms/charts/BooleansHeatmap/BooleansHeatmap.stories.d.ts.map +1 -0
  123. package/dist/components/organisms/charts/MoodChart/MoodChart.d.ts +15 -0
  124. package/dist/components/organisms/charts/MoodChart/MoodChart.d.ts.map +1 -0
  125. package/dist/components/organisms/charts/MoodChart/MoodChart.stories.d.ts +10 -0
  126. package/dist/components/organisms/charts/MoodChart/MoodChart.stories.d.ts.map +1 -0
  127. package/dist/components/organisms/charts/PieChart/PieChart.d.ts +16 -0
  128. package/dist/components/organisms/charts/PieChart/PieChart.d.ts.map +1 -0
  129. package/dist/components/organisms/charts/PieChart/PieChart.stories.d.ts +13 -0
  130. package/dist/components/organisms/charts/PieChart/PieChart.stories.d.ts.map +1 -0
  131. package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.d.ts +22 -0
  132. package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.d.ts.map +1 -0
  133. package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.stories.d.ts +10 -0
  134. package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.stories.d.ts.map +1 -0
  135. package/dist/components/organisms/charts/SleepChart/SleepChart.d.ts +15 -0
  136. package/dist/components/organisms/charts/SleepChart/SleepChart.d.ts.map +1 -0
  137. package/dist/components/organisms/charts/SleepChart/SleepChart.stories.d.ts +11 -0
  138. package/dist/components/organisms/charts/SleepChart/SleepChart.stories.d.ts.map +1 -0
  139. package/dist/components/organisms/charts/SunburstChart/SunburstChart.d.ts +16 -0
  140. package/dist/components/organisms/charts/SunburstChart/SunburstChart.d.ts.map +1 -0
  141. package/dist/components/organisms/charts/SunburstChart/SunburstChart.stories.d.ts +10 -0
  142. package/dist/components/organisms/charts/SunburstChart/SunburstChart.stories.d.ts.map +1 -0
  143. package/dist/components/organisms/charts/index.d.ts +8 -0
  144. package/dist/components/organisms/charts/index.d.ts.map +1 -0
  145. package/dist/components/organisms/index.d.ts +14 -0
  146. package/dist/components/organisms/index.d.ts.map +1 -0
  147. package/dist/contexts/ThemeContext.d.ts.map +1 -1
  148. package/dist/index.d.ts +1 -8
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.esm.js +2025 -77
  151. package/dist/index.esm.js.map +1 -1
  152. package/dist/index.js +2067 -83
  153. package/dist/index.js.map +1 -1
  154. package/dist/main.d.ts +2 -0
  155. package/dist/main.d.ts.map +1 -0
  156. package/dist/stories/utils.d.ts +5 -0
  157. package/dist/stories/utils.d.ts.map +1 -0
  158. package/dist/utils/formUtils.d.ts +8 -0
  159. package/dist/utils/formUtils.d.ts.map +1 -0
  160. package/package.json +41 -11
package/dist/index.esm.js CHANGED
@@ -1,11 +1,12 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import { createContext, useContext, useState, useEffect, forwardRef } from 'react';
2
+ import React, { createContext, useContext, useState, useEffect, useRef, useCallback, useMemo } from 'react';
3
3
  import { motion, AnimatePresence } from 'framer-motion';
4
- import { createPortal } from 'react-dom';
4
+ import { Check, X, Edit } from 'lucide-react';
5
+ import * as d3 from 'd3';
5
6
 
6
- const ThemeContext = createContext(undefined);
7
- const useTheme = () => {
8
- const context = useContext(ThemeContext);
7
+ const ThemeContext$1 = createContext(undefined);
8
+ const useTheme$1 = () => {
9
+ const context = useContext(ThemeContext$1);
9
10
  if (!context) {
10
11
  throw new Error('useTheme must be used within a ThemeProvider');
11
12
  }
@@ -26,7 +27,7 @@ const ThemeProvider = ({ children, defaultTheme = 'light' }) => {
26
27
  const toggleTheme = () => {
27
28
  setTheme(prevTheme => prevTheme === 'light' ? 'dark' : 'light');
28
29
  };
29
- return (jsx(ThemeContext.Provider, { value: { theme, toggleTheme, setTheme }, children: children }));
30
+ return (jsx(ThemeContext$1.Provider, { value: { theme, toggleTheme, setTheme }, children: children }));
30
31
  };
31
32
 
32
33
  function styleInject(css, ref) {
@@ -56,105 +57,2052 @@ function styleInject(css, ref) {
56
57
  }
57
58
  }
58
59
 
59
- var css_248z$3 = ".Button-module_button__2ZuB7{align-items:center;border:var(--border-width) solid transparent;border-radius:var(--border-radius-md);cursor:pointer;display:inline-flex;font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);justify-content:center;line-height:1.5;outline:none;overflow:hidden;padding:var(--spacing-sm) var(--spacing-lg);position:relative;transition:all var(--transition-fast);user-select:none}.Button-module_button__2ZuB7:focus-visible{box-shadow:0 0 0 3px rgba(var(--color-primary-rgb,0,123,255),.25)}.Button-module_button__2ZuB7:disabled{cursor:not-allowed;opacity:.5}.Button-module_primary__s1sM6{background-color:var(--color-primary);border-color:var(--color-primary);color:#fff}.Button-module_primary__s1sM6:hover:not(:disabled){filter:brightness(1.1)}.Button-module_secondary__R0waJ{background-color:var(--color-secondary);border-color:var(--color-secondary);color:#fff}.Button-module_secondary__R0waJ:hover:not(:disabled){filter:brightness(1.1)}.Button-module_outline__F5jq-{background-color:transparent;border-color:var(--color-primary);color:var(--color-primary)}.Button-module_outline__F5jq-:hover:not(:disabled){background-color:var(--color-primary);color:#fff}.Button-module_ghost__1KINV{background-color:transparent;border-color:transparent;color:var(--color-text)}.Button-module_ghost__1KINV:hover:not(:disabled){background-color:var(--color-surface)}.Button-module_small__l39oh{font-size:var(--font-size-sm);padding:var(--spacing-xs) var(--spacing-md)}.Button-module_medium__KTxdk{font-size:var(--font-size-base);padding:var(--spacing-sm) var(--spacing-lg)}.Button-module_large__6bsb7{font-size:var(--font-size-lg);padding:var(--spacing-md) var(--spacing-xl)}.Button-module_fullWidth__36oJT{width:100%}.Button-module_loading__EQAt2{color:transparent}.Button-module_spinner__ZExvW{animation:Button-module_spin__JvkZu .6s linear infinite;border:2px solid;border-radius:50%;border-right:2px solid transparent;height:1em;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:1em}@keyframes Button-module_spin__JvkZu{to{transform:translate(-50%,-50%) rotate(1turn)}}.Button-module_iconLeft__YwUkN{margin-right:var(--spacing-sm)}.Button-module_iconRight__J7Lff{margin-left:var(--spacing-sm)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJ1dHRvbi5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZCQUdFLGtCQUFtQixDQU9uQiw0Q0FBNkMsQ0FDN0MscUNBQXNDLENBQ3RDLGNBQWUsQ0FWZixtQkFBb0IsQ0FJcEIsbUNBQW9DLENBQ3BDLCtCQUFnQyxDQUNoQyxxQ0FBc0MsQ0FKdEMsc0JBQXVCLENBS3ZCLGVBQWdCLENBS2hCLFlBQWEsQ0FDYixlQUFnQixDQVZoQiwyQ0FBNEMsQ0FKNUMsaUJBQWtCLENBWWxCLHFDQUFzQyxDQUd0QyxnQkFDRixDQUVBLDJDQUNFLGlFQUNGLENBRUEsc0NBRUUsa0JBQW1CLENBRG5CLFVBRUYsQ0FHQSw4QkFDRSxxQ0FBc0MsQ0FFdEMsaUNBQWtDLENBRGxDLFVBRUYsQ0FFQSxtREFDRSxzQkFDRixDQUVBLGdDQUNFLHVDQUF3QyxDQUV4QyxtQ0FBb0MsQ0FEcEMsVUFFRixDQUVBLHFEQUNFLHNCQUNGLENBRUEsOEJBQ0UsNEJBQTZCLENBRTdCLGlDQUFrQyxDQURsQywwQkFFRixDQUVBLG1EQUNFLHFDQUFzQyxDQUN0QyxVQUNGLENBRUEsNEJBQ0UsNEJBQTZCLENBRTdCLHdCQUF5QixDQUR6Qix1QkFFRixDQUVBLGlEQUNFLHFDQUNGLENBR0EsNEJBRUUsNkJBQThCLENBRDlCLDJDQUVGLENBRUEsNkJBRUUsK0JBQWdDLENBRGhDLDJDQUVGLENBRUEsNEJBRUUsNkJBQThCLENBRDlCLDJDQUVGLENBR0EsZ0NBQ0UsVUFDRixDQUdBLDhCQUNFLGlCQUNGLENBRUEsOEJBVUUsdURBQW9DLENBRnBDLGdCQUErQixDQUMvQixpQkFBa0IsQ0FEbEIsa0NBQStCLENBRi9CLFVBQVcsQ0FIWCxRQUFTLENBRlQsaUJBQWtCLENBQ2xCLE9BQVEsQ0FFUiw4QkFBZ0MsQ0FDaEMsU0FNRixDQUVBLHFDQUNFLEdBQ0UsNENBQ0YsQ0FDRixDQUdBLCtCQUNFLDhCQUNGLENBRUEsZ0NBQ0UsNkJBQ0YiLCJmaWxlIjoiQnV0dG9uLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYnV0dG9uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbGcpO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktYmFzZSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLW1kKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbiAgb3V0bGluZTogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5idXR0b246Zm9jdXMtdmlzaWJsZSB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiLCAwLCAxMjMsIDI1NSksIDAuMjUpO1xufVxuXG4uYnV0dG9uOmRpc2FibGVkIHtcbiAgb3BhY2l0eTogMC41O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4vKiBWYXJpYW50cyAqL1xuLnByaW1hcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgY29sb3I6IHdoaXRlO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4ucHJpbWFyeTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGZpbHRlcjogYnJpZ2h0bmVzcygxLjEpO1xufVxuXG4uc2Vjb25kYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itc2Vjb25kYXJ5KTtcbiAgY29sb3I6IHdoaXRlO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXNlY29uZGFyeSk7XG59XG5cbi5zZWNvbmRhcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4xKTtcbn1cblxuLm91dGxpbmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4ub3V0bGluZTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi5naG9zdCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5naG9zdDpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xufVxuXG4vKiBTaXplcyAqL1xuLnNtYWxsIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy14cykgdmFyKC0tc3BhY2luZy1tZCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbn1cblxuLm1lZGl1bSB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbGcpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbn1cblxuLmxhcmdlIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCkgdmFyKC0tc3BhY2luZy14bCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbn1cblxuLyogRnVsbCB3aWR0aCAqL1xuLmZ1bGxXaWR0aCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBMb2FkaW5nIHN0YXRlICovXG4ubG9hZGluZyB7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLnNwaW5uZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgYm9yZGVyOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGFuaW1hdGlvbjogc3BpbiAwLjZzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBzcGluIHtcbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5cbi8qIEljb24gc3BhY2luZyAqL1xuLmljb25MZWZ0IHtcbiAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLXNtKTtcbn1cblxuLmljb25SaWdodCB7XG4gIG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjaW5nLXNtKTtcbn0iXX0= */";
60
- var styles$3 = {"button":"Button-module_button__2ZuB7","primary":"Button-module_primary__s1sM6","secondary":"Button-module_secondary__R0waJ","outline":"Button-module_outline__F5jq-","ghost":"Button-module_ghost__1KINV","small":"Button-module_small__l39oh","medium":"Button-module_medium__KTxdk","large":"Button-module_large__6bsb7","fullWidth":"Button-module_fullWidth__36oJT","loading":"Button-module_loading__EQAt2","spinner":"Button-module_spinner__ZExvW","spin":"Button-module_spin__JvkZu","iconLeft":"Button-module_iconLeft__YwUkN","iconRight":"Button-module_iconRight__J7Lff"};
61
- styleInject(css_248z$3);
60
+ var css_248z$m = ".Button-module_button__c6nkW{align-items:center;border:none;border-radius:var(--radius-lg);cursor:pointer;display:inline-flex;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);gap:var(--spacing-sm);isolation:isolate;justify-content:center;letter-spacing:var(--letter-spacing-wide);line-height:var(--line-height-normal);overflow:hidden;padding:var(--spacing-sm) var(--spacing-lg);position:relative;text-decoration:none;transition:all var(--transition-base);user-select:none;white-space:nowrap}.Button-module_button__c6nkW:before{background:hsla(0,0%,100%,.5);border-radius:50%;content:\"\";height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transition:width .6s,height .6s;width:0}.Button-module_button__c6nkW:active:before{height:300px;width:300px}.Button-module_primary__pMqAs{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));box-shadow:var(--shadow-md),0 4px 14px 0 rgba(124,58,237,.3);color:var(--color-text-inverse)}.Button-module_primary__pMqAs:hover:not(:disabled){background:linear-gradient(135deg,var(--color-primary-hover),var(--color-primary-active));box-shadow:var(--shadow-lg),0 6px 20px 0 rgba(124,58,237,.4);transform:translateY(-2px)}.Button-module_primary__pMqAs:active:not(:disabled){box-shadow:var(--shadow-sm),0 2px 8px 0 rgba(124,58,237,.3);transform:translateY(0)}.Button-module_secondary__mBWx9{background:linear-gradient(135deg,var(--color-secondary),var(--color-secondary-hover));box-shadow:var(--shadow-sm),0 2px 8px 0 rgba(20,184,166,.2);color:var(--color-text-inverse)}.Button-module_secondary__mBWx9:hover:not(:disabled){background:linear-gradient(135deg,var(--color-secondary-hover),var(--color-secondary-active));box-shadow:var(--shadow-md),0 4px 12px 0 rgba(20,184,166,.3);transform:translateY(-1px)}.Button-module_secondary__mBWx9:active:not(:disabled){box-shadow:var(--shadow-xs),0 1px 4px 0 rgba(20,184,166,.2);transform:translateY(0)}.Button-module_outline__NGGGN{background:transparent;border:1px solid var(--color-primary);box-shadow:none;color:var(--color-primary);overflow:hidden;position:relative;z-index:1}.Button-module_outline__NGGGN:after{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));content:\"\";height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--transition-base);width:100%;z-index:-1}.Button-module_outline__NGGGN:hover:not(:disabled){border-color:transparent;box-shadow:var(--shadow-md);color:var(--color-text-inverse);transform:translateY(-1px)}.Button-module_outline__NGGGN:hover:not(:disabled):after{opacity:1}.Button-module_outline__NGGGN:active:not(:disabled){box-shadow:var(--shadow-sm);transform:translateY(0)}.Button-module_ghost__u2QBF{background:transparent;box-shadow:none;color:var(--color-text-secondary)}.Button-module_ghost__u2QBF:hover:not(:disabled){background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));box-shadow:var(--shadow-sm);color:var(--color-text);transform:translateY(-1px)}.Button-module_ghost__u2QBF:active:not(:disabled){background:var(--color-background-tertiary);box-shadow:none;transform:translateY(0)}.Button-module_danger__2ewhr{background:linear-gradient(135deg,var(--color-error),var(--color-error-hover));box-shadow:var(--shadow-md),0 4px 14px 0 rgba(239,68,68,.3);color:var(--color-text-inverse)}.Button-module_danger__2ewhr:hover:not(:disabled){background:linear-gradient(135deg,var(--color-error-hover),var(--color-error-active));box-shadow:var(--shadow-lg),0 6px 20px 0 rgba(239,68,68,.4);transform:translateY(-2px)}.Button-module_danger__2ewhr:active:not(:disabled){box-shadow:var(--shadow-sm),0 2px 8px 0 rgba(239,68,68,.3);transform:translateY(0)}.Button-module_small__ZI9RX{border-radius:var(--radius-md);font-size:var(--font-size-sm);padding:var(--spacing-xs) var(--spacing-md)}.Button-module_medium__Wnf9t{font-size:var(--font-size-base);padding:var(--spacing-sm) var(--spacing-lg)}.Button-module_large__cQCpA{border-radius:var(--radius-xl);font-size:var(--font-size-lg);padding:var(--spacing-md) var(--spacing-xl)}.Button-module_fullWidth__N8vYg{width:100%}.Button-module_button__c6nkW:disabled{background:var(--color-background-tertiary)!important;border-color:var(--color-border)!important;box-shadow:none!important;color:var(--color-text-tertiary)!important;cursor:not-allowed;opacity:.5;transform:none!important}.Button-module_button__c6nkW:disabled:after,.Button-module_button__c6nkW:disabled:before{display:none}.Button-module_loading__hcSI4{color:transparent;pointer-events:none}.Button-module_spinner__HtM96{height:1em;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:1em}.Button-module_spinner__HtM96:after{animation:Button-module_spin__jblrj .6s linear infinite;border:2px solid;border-radius:50%;border-top:2px solid transparent;content:\"\";display:block;height:1em;width:1em}@keyframes Button-module_spin__jblrj{to{transform:rotate(1turn)}}.Button-module_iconLeft__Fpz-y,.Button-module_iconRight__kTfjS{align-items:center;display:inline-flex;flex-shrink:0;height:1.25em;justify-content:center;width:1.25em}.Button-module_iconLeft__Fpz-y{margin-left:calc(var(--spacing-xs)*-1)}.Button-module_iconRight__kTfjS{margin-right:calc(var(--spacing-xs)*-1)}.Button-module_button__c6nkW:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}[data-theme=dark] .Button-module_primary__pMqAs{box-shadow:var(--shadow-md),0 4px 14px 0 rgba(167,139,250,.3)}[data-theme=dark] .Button-module_primary__pMqAs:hover:not(:disabled){box-shadow:var(--shadow-lg),0 6px 20px 0 rgba(167,139,250,.4)}[data-theme=dark] .Button-module_secondary__mBWx9{box-shadow:var(--shadow-sm),0 2px 8px 0 rgba(45,212,191,.2)}[data-theme=dark] .Button-module_secondary__mBWx9:hover:not(:disabled){box-shadow:var(--shadow-md),0 4px 12px 0 rgba(45,212,191,.3)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJ1dHRvbi5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZCQUdDLGtCQUFtQixDQVNuQixXQUFZLENBRFosOEJBQStCLENBRS9CLGNBQWUsQ0FYZixtQkFBb0IsQ0FLcEIsK0JBQWdDLENBQ2hDLHFDQUFzQyxDQUh0QyxxQkFBc0IsQ0FjdEIsaUJBQWtCLENBZmxCLHNCQUF1QixDQU12Qix5Q0FBMEMsQ0FEMUMscUNBQXNDLENBU3RDLGVBQWdCLENBWmhCLDJDQUE0QyxDQUw1QyxpQkFBa0IsQ0FjbEIsb0JBQXFCLENBRHJCLHFDQUFzQyxDQUd0QyxnQkFBaUIsQ0FEakIsa0JBSUQsQ0FHQSxvQ0FRQyw2QkFBb0MsQ0FEcEMsaUJBQWtCLENBTmxCLFVBQVcsQ0FLWCxRQUFTLENBRlQsUUFBUyxDQUZULGlCQUFrQixDQUNsQixPQUFRLENBTVIsOEJBQWdDLENBQ2hDLCtCQUFtQyxDQUxuQyxPQU1ELENBRUEsMkNBRUMsWUFBYSxDQURiLFdBRUQsQ0FHQSw4QkFDQyxrRkFBcUYsQ0FFckYsNERBQWtFLENBRGxFLCtCQUVELENBRUEsbURBQ0MseUZBQTRGLENBRTVGLDREQUFrRSxDQURsRSwwQkFFRCxDQUVBLG9EQUVDLDJEQUFpRSxDQURqRSx1QkFFRCxDQUdBLGdDQUNDLHNGQUF5RixDQUV6RiwyREFBaUUsQ0FEakUsK0JBRUQsQ0FFQSxxREFDQyw2RkFBZ0csQ0FFaEcsNERBQWtFLENBRGxFLDBCQUVELENBRUEsc0RBRUMsMkRBQWlFLENBRGpFLHVCQUVELENBR0EsOEJBQ0Msc0JBQXVCLENBRXZCLHFDQUFzQyxDQUN0QyxlQUFnQixDQUZoQiwwQkFBMkIsQ0FJM0IsZUFBZ0IsQ0FEaEIsaUJBQWtCLENBRWxCLFNBQ0QsQ0FFQSxvQ0FPQyxrRkFBcUYsQ0FOckYsVUFBVyxDQUtYLFdBQVksQ0FGWixNQUFPLENBS1AsU0FBVSxDQVBWLGlCQUFrQixDQUNsQixLQUFNLENBT04seUNBQTBDLENBTDFDLFVBQVcsQ0FHWCxVQUdELENBRUEsbURBRUMsd0JBQXlCLENBRXpCLDJCQUE0QixDQUg1QiwrQkFBZ0MsQ0FFaEMsMEJBRUQsQ0FFQSx5REFDQyxTQUNELENBRUEsb0RBRUMsMkJBQTRCLENBRDVCLHVCQUVELENBR0EsNEJBQ0Msc0JBQXVCLENBRXZCLGVBQWdCLENBRGhCLGlDQUVELENBRUEsaURBQ0MscUdBR0MsQ0FHRCwyQkFBNEIsQ0FGNUIsdUJBQXdCLENBQ3hCLDBCQUVELENBRUEsa0RBRUMsMkNBQTRDLENBQzVDLGVBQWdCLENBRmhCLHVCQUdELENBR0EsNkJBQ0MsOEVBQWlGLENBRWpGLDJEQUFpRSxDQURqRSwrQkFFRCxDQUVBLGtEQUNDLHFGQUF3RixDQUV4RiwyREFBaUUsQ0FEakUsMEJBRUQsQ0FFQSxtREFFQywwREFBZ0UsQ0FEaEUsdUJBRUQsQ0FHQSw0QkFHQyw4QkFBK0IsQ0FEL0IsNkJBQThCLENBRDlCLDJDQUdELENBRUEsNkJBRUMsK0JBQWdDLENBRGhDLDJDQUVELENBRUEsNEJBR0MsOEJBQStCLENBRC9CLDZCQUE4QixDQUQ5QiwyQ0FHRCxDQUdBLGdDQUNDLFVBQ0QsQ0FHQSxzQ0FLQyxxREFBdUQsQ0FFdkQsMENBQTRDLENBSDVDLHlCQUEyQixDQUUzQiwwQ0FBNEMsQ0FKNUMsa0JBQW1CLENBRG5CLFVBQVksQ0FFWix3QkFLRCxDQUVBLHlGQUVDLFlBQ0QsQ0FHQSw4QkFDQyxpQkFBa0IsQ0FDbEIsbUJBQ0QsQ0FFQSw4QkFNQyxVQUFXLENBSFgsUUFBUyxDQUZULGlCQUFrQixDQUNsQixPQUFRLENBRVIsOEJBQWdDLENBQ2hDLFNBRUQsQ0FFQSxvQ0FRQyx1REFBb0MsQ0FEcEMsZ0JBQTZCLENBRDdCLGlCQUFrQixDQUNsQixnQ0FBNkIsQ0FON0IsVUFBVyxDQUNYLGFBQWMsQ0FFZCxVQUFXLENBRFgsU0FNRCxDQUVBLHFDQUNDLEdBQ0MsdUJBQ0QsQ0FDRCxDQUdBLCtEQUdDLGtCQUFtQixDQURuQixtQkFBb0IsQ0FLcEIsYUFBYyxDQURkLGFBQWMsQ0FGZCxzQkFBdUIsQ0FDdkIsWUFHRCxDQUVBLCtCQUNDLHNDQUNELENBRUEsZ0NBQ0MsdUNBQ0QsQ0FHQSwyQ0FDQyxzQ0FBdUMsQ0FDdkMsa0JBQ0QsQ0FHQSxnREFDQyw2REFDRCxDQUVBLHFFQUNDLDZEQUNELENBRUEsa0RBQ0MsMkRBQ0QsQ0FFQSx1RUFDQyw0REFDRCIsImZpbGUiOiJCdXR0b24ubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5idXR0b24ge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0Z2FwOiB2YXIoLS1zcGFjaW5nLXNtKTtcblx0cGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1sZyk7XG5cdGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuXHRmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcblx0bGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LW5vcm1hbCk7XG5cdGxldHRlci1zcGFjaW5nOiB2YXIoLS1sZXR0ZXItc3BhY2luZy13aWRlKTtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcblx0Ym9yZGVyOiBub25lO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdHVzZXItc2VsZWN0OiBub25lO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHRpc29sYXRpb246IGlzb2xhdGU7XG59XG5cbi8qIFJpcHBsZSBlZmZlY3Qgb24gY2xpY2sgKi9cbi5idXR0b246OmJlZm9yZSB7XG5cdGNvbnRlbnQ6ICcnO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogNTAlO1xuXHRsZWZ0OiA1MCU7XG5cdHdpZHRoOiAwO1xuXHRoZWlnaHQ6IDA7XG5cdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0YmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblx0dHJhbnNpdGlvbjogd2lkdGggMC42cywgaGVpZ2h0IDAuNnM7XG59XG5cbi5idXR0b246YWN0aXZlOjpiZWZvcmUge1xuXHR3aWR0aDogMzAwcHg7XG5cdGhlaWdodDogMzAwcHg7XG59XG5cbi8qIFByaW1hcnkgdmFyaWFudCAtIEdyYWRpZW50IGJhY2tncm91bmQgKi9cbi5wcmltYXJ5IHtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tY29sb3ItcHJpbWFyeSksIHZhcigtLWNvbG9yLXByaW1hcnktaG92ZXIpKTtcblx0Y29sb3I6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG5cdGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCksIDAgNHB4IDE0cHggMCByZ2JhKDEyNCwgNTgsIDIzNywgMC4zKTtcbn1cblxuLnByaW1hcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jb2xvci1wcmltYXJ5LWhvdmVyKSwgdmFyKC0tY29sb3ItcHJpbWFyeS1hY3RpdmUpKTtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpLCAwIDZweCAyMHB4IDAgcmdiYSgxMjQsIDU4LCAyMzcsIDAuNCk7XG59XG5cbi5wcmltYXJ5OmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcblx0Ym94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKSwgMCAycHggOHB4IDAgcmdiYSgxMjQsIDU4LCAyMzcsIDAuMyk7XG59XG5cbi8qIFNlY29uZGFyeSB2YXJpYW50IC0gU3VidGxlIGdyYWRpZW50ICovXG4uc2Vjb25kYXJ5IHtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tY29sb3Itc2Vjb25kYXJ5KSwgdmFyKC0tY29sb3Itc2Vjb25kYXJ5LWhvdmVyKSk7XG5cdGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pLCAwIDJweCA4cHggMCByZ2JhKDIwLCAxODQsIDE2NiwgMC4yKTtcbn1cblxuLnNlY29uZGFyeTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNvbG9yLXNlY29uZGFyeS1ob3ZlciksIHZhcigtLWNvbG9yLXNlY29uZGFyeS1hY3RpdmUpKTtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpLCAwIDRweCAxMnB4IDAgcmdiYSgyMCwgMTg0LCAxNjYsIDAuMyk7XG59XG5cbi5zZWNvbmRhcnk6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3cteHMpLCAwIDFweCA0cHggMCByZ2JhKDIwLCAxODQsIDE2NiwgMC4yKTtcbn1cblxuLyogT3V0bGluZSB2YXJpYW50IC0gQm9yZGVyIHdpdGggZ3JhZGllbnQgaG92ZXIgKi9cbi5vdXRsaW5lIHtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcblx0Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeSk7XG5cdGJveC1zaGFkb3c6IG5vbmU7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0ei1pbmRleDogMTtcbn1cblxuLm91dGxpbmU6OmFmdGVyIHtcblx0Y29udGVudDogJyc7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dG9wOiAwO1xuXHRsZWZ0OiAwO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jb2xvci1wcmltYXJ5KSwgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlcikpO1xuXHR6LWluZGV4OiAtMTtcblx0b3BhY2l0eTogMDtcblx0dHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4ub3V0bGluZTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG5cdGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xuXHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG5cdGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG59XG5cbi5vdXRsaW5lOmhvdmVyOm5vdCg6ZGlzYWJsZWQpOjphZnRlciB7XG5cdG9wYWNpdHk6IDE7XG59XG5cbi5vdXRsaW5lOmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcblx0Ym94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbn1cblxuLyogR2hvc3QgdmFyaWFudCAtIE1pbmltYWwgd2l0aCBob3ZlciBiYWNrZ3JvdW5kICovXG4uZ2hvc3Qge1xuXHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblx0Y29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcblx0Ym94LXNoYWRvdzogbm9uZTtcbn1cblxuLmdob3N0OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG5cdFx0dmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpLCBcblx0XHR2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KVxuXHQpO1xuXHRjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcblx0Ym94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbn1cblxuLmdob3N0OmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcblx0YmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG5cdGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi8qIERhbmdlciB2YXJpYW50IC0gUmVkL2Rlc3RydWN0aXZlIGFjdGlvbnMgKi9cbi5kYW5nZXIge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jb2xvci1lcnJvciksIHZhcigtLWNvbG9yLWVycm9yLWhvdmVyKSk7XG5cdGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpLCAwIDRweCAxNHB4IDAgcmdiYSgyMzksIDY4LCA2OCwgMC4zKTtcbn1cblxuLmRhbmdlcjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNvbG9yLWVycm9yLWhvdmVyKSwgdmFyKC0tY29sb3ItZXJyb3ItYWN0aXZlKSk7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcblx0Ym94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnKSwgMCA2cHggMjBweCAwIHJnYmEoMjM5LCA2OCwgNjgsIDAuNCk7XG59XG5cbi5kYW5nZXI6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pLCAwIDJweCA4cHggMCByZ2JhKDIzOSwgNjgsIDY4LCAwLjMpO1xufVxuXG4vKiBTaXplIHZhcmlhbnRzICovXG4uc21hbGwge1xuXHRwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhzKSB2YXIoLS1zcGFjaW5nLW1kKTtcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xufVxuXG4ubWVkaXVtIHtcblx0cGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1sZyk7XG5cdGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xufVxuXG4ubGFyZ2Uge1xuXHRwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKSB2YXIoLS1zcGFjaW5nLXhsKTtcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xufVxuXG4vKiBGdWxsIHdpZHRoICovXG4uZnVsbFdpZHRoIHtcblx0d2lkdGg6IDEwMCU7XG59XG5cbi8qIERpc2FibGVkIHN0YXRlICovXG4uYnV0dG9uOmRpc2FibGVkIHtcblx0b3BhY2l0eTogMC41O1xuXHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHR0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcblx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuXHRiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KSAhaW1wb3J0YW50O1xuXHRjb2xvcjogdmFyKC0tY29sb3ItdGV4dC10ZXJ0aWFyeSkgIWltcG9ydGFudDtcblx0Ym9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXIpICFpbXBvcnRhbnQ7XG59XG5cbi5idXR0b246ZGlzYWJsZWQ6OmJlZm9yZSxcbi5idXR0b246ZGlzYWJsZWQ6OmFmdGVyIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cblxuLyogTG9hZGluZyBzdGF0ZSAqL1xuLmxvYWRpbmcge1xuXHRjb2xvcjogdHJhbnNwYXJlbnQ7XG5cdHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uc3Bpbm5lciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dG9wOiA1MCU7XG5cdGxlZnQ6IDUwJTtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cdHdpZHRoOiAxZW07XG5cdGhlaWdodDogMWVtO1xufVxuXG4uc3Bpbm5lcjo6YWZ0ZXIge1xuXHRjb250ZW50OiAnJztcblx0ZGlzcGxheTogYmxvY2s7XG5cdHdpZHRoOiAxZW07XG5cdGhlaWdodDogMWVtO1xuXHRib3JkZXI6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG5cdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0Ym9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdGFuaW1hdGlvbjogc3BpbiAwLjZzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBzcGluIHtcblx0dG8ge1xuXHRcdHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG5cdH1cbn1cblxuLyogSWNvbiBzdHlsZXMgKi9cbi5pY29uTGVmdCxcbi5pY29uUmlnaHQge1xuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdHdpZHRoOiAxLjI1ZW07XG5cdGhlaWdodDogMS4yNWVtO1xuXHRmbGV4LXNocmluazogMDtcbn1cblxuLmljb25MZWZ0IHtcblx0bWFyZ2luLWxlZnQ6IGNhbGModmFyKC0tc3BhY2luZy14cykgKiAtMSk7XG59XG5cbi5pY29uUmlnaHQge1xuXHRtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tc3BhY2luZy14cykgKiAtMSk7XG59XG5cbi8qIEZvY3VzIHZpc2libGUgZm9yIGFjY2Vzc2liaWxpdHkgKi9cbi5idXR0b246Zm9jdXMtdmlzaWJsZSB7XG5cdG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5KTtcblx0b3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLyogRGFyayBtb2RlIGFkanVzdG1lbnRzICovXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnByaW1hcnkge1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpLCAwIDRweCAxNHB4IDAgcmdiYSgxNjcsIDEzOSwgMjUwLCAwLjMpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnByaW1hcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpLCAwIDZweCAyMHB4IDAgcmdiYSgxNjcsIDEzOSwgMjUwLCAwLjQpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnNlY29uZGFyeSB7XG5cdGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSksIDAgMnB4IDhweCAwIHJnYmEoNDUsIDIxMiwgMTkxLCAwLjIpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnNlY29uZGFyeTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG5cdGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCksIDAgNHB4IDEycHggMCByZ2JhKDQ1LCAyMTIsIDE5MSwgMC4zKTtcbn0iXX0= */";
61
+ var styles$k = {"button":"Button-module_button__c6nkW","primary":"Button-module_primary__pMqAs","secondary":"Button-module_secondary__mBWx9","outline":"Button-module_outline__NGGGN","ghost":"Button-module_ghost__u2QBF","danger":"Button-module_danger__2ewhr","small":"Button-module_small__ZI9RX","medium":"Button-module_medium__Wnf9t","large":"Button-module_large__cQCpA","fullWidth":"Button-module_fullWidth__N8vYg","loading":"Button-module_loading__hcSI4","spinner":"Button-module_spinner__HtM96","spin":"Button-module_spin__jblrj","iconLeft":"Button-module_iconLeft__Fpz-y","iconRight":"Button-module_iconRight__kTfjS"};
62
+ styleInject(css_248z$m);
62
63
 
63
64
  const Button = ({ variant = 'primary', size = 'medium', fullWidth = false, loading = false, iconLeft, iconRight, children, className = '', disabled, motionProps, ...rest }) => {
64
65
  const buttonClasses = [
65
- styles$3.button,
66
- styles$3[variant],
67
- styles$3[size],
68
- fullWidth && styles$3.fullWidth,
69
- loading && styles$3.loading,
66
+ styles$k.button,
67
+ styles$k[variant],
68
+ styles$k[size],
69
+ fullWidth && styles$k.fullWidth,
70
+ loading && styles$k.loading,
70
71
  className
71
72
  ].filter(Boolean).join(' ');
72
- return (jsxs(motion.button, { className: buttonClasses, disabled: disabled || loading, whileHover: { scale: disabled || loading ? 1 : 1.02 }, whileTap: { scale: disabled || loading ? 1 : 0.98 }, transition: { type: "spring", stiffness: 400, damping: 17 }, ...motionProps, ...rest, children: [loading && jsx("span", { className: styles$3.spinner }), iconLeft && jsx("span", { className: styles$3.iconLeft, children: iconLeft }), children, iconRight && jsx("span", { className: styles$3.iconRight, children: iconRight })] }));
73
+ return (jsxs(motion.button, { className: buttonClasses, disabled: disabled || loading, whileHover: { scale: disabled || loading ? 1 : 1.02 }, whileTap: { scale: disabled || loading ? 1 : 0.98 }, transition: { type: "spring", stiffness: 400, damping: 17 }, ...motionProps, ...rest, children: [loading && jsx("span", { className: styles$k.spinner }), iconLeft && jsx("span", { className: styles$k.iconLeft, children: iconLeft }), children, iconRight && jsx("span", { className: styles$k.iconRight, children: iconRight })] }));
73
74
  };
74
75
 
75
- var css_248z$2 = ".Card-module_card__Cb1o4{background-color:var(--color-background);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius-lg);overflow:hidden;transition:all var(--transition-base)}.Card-module_card__Cb1o4:hover.Card-module_hoverable__aGYcW{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.Card-module_elevated__5VEDw{box-shadow:var(--shadow-md)}.Card-module_elevated__5VEDw:hover.Card-module_hoverable__aGYcW{box-shadow:var(--shadow-xl)}.Card-module_outlined__Tkn0-{border-color:var(--border-color);box-shadow:none}.Card-module_flat__LRpce{background-color:var(--color-surface);border:none;box-shadow:none}.Card-module_image__bEGMz{display:block;height:auto;width:100%}.Card-module_imageContainer__aBzxr{overflow:hidden;position:relative}.Card-module_header__PTXf2{border-bottom:var(--border-width) solid var(--border-color);padding:var(--spacing-lg)}.Card-module_body__W441Z{padding:var(--spacing-lg)}.Card-module_footer__Mu-JC{align-items:center;border-top:var(--border-width) solid var(--border-color);display:flex;gap:var(--spacing-sm);justify-content:flex-end;padding:var(--spacing-lg)}.Card-module_title__mSgoo{color:var(--color-text);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);margin:0}.Card-module_subtitle__dBqgy{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin:var(--spacing-xs) 0 0}.Card-module_clickable__qbwhm{cursor:pointer}.Card-module_padding__o07TN{padding:var(--spacing-lg)}.Card-module_noPadding__jt3Vd{padding:0}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNhcmQubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5QkFDRSx3Q0FBeUMsQ0FDekMsb0RBQXFELENBQ3JELHFDQUFzQyxDQUN0QyxlQUFnQixDQUNoQixxQ0FDRixDQUVBLDREQUVFLDJCQUE0QixDQUQ1QiwwQkFFRixDQUVBLDZCQUNFLDJCQUNGLENBRUEsZ0VBQ0UsMkJBQ0YsQ0FFQSw2QkFDRSxnQ0FBaUMsQ0FDakMsZUFDRixDQUVBLHlCQUdFLHFDQUFzQyxDQUZ0QyxXQUFZLENBQ1osZUFFRixDQUVBLDBCQUdFLGFBQWMsQ0FEZCxXQUFZLENBRFosVUFHRixDQUVBLG1DQUVFLGVBQWdCLENBRGhCLGlCQUVGLENBRUEsMkJBRUUsMkRBQTRELENBRDVELHlCQUVGLENBRUEseUJBQ0UseUJBQ0YsQ0FFQSwyQkFJRSxrQkFBbUIsQ0FGbkIsd0RBQXlELENBQ3pELFlBQWEsQ0FHYixxQkFBc0IsQ0FEdEIsd0JBQXlCLENBSnpCLHlCQU1GLENBRUEsMEJBSUUsdUJBQXdCLENBRnhCLDZCQUE4QixDQUM5Qix1Q0FBd0MsQ0FGeEMsUUFJRixDQUVBLDZCQUdFLGlDQUFrQyxDQURsQyw2QkFBOEIsQ0FEOUIsNEJBR0YsQ0FFQSw4QkFDRSxjQUNGLENBRUEsNEJBQ0UseUJBQ0YsQ0FFQSw4QkFDRSxTQUNGIiwiZmlsZSI6IkNhcmQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jYXJkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG4gIGJvcmRlcjogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5jYXJkOmhvdmVyLmhvdmVyYWJsZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnKTtcbn1cblxuLmVsZXZhdGVkIHtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTtcbn1cblxuLmVsZXZhdGVkOmhvdmVyLmhvdmVyYWJsZSB7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy14bCk7XG59XG5cbi5vdXRsaW5lZCB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWNvbG9yKTtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cblxuLmZsYXQge1xuICBib3JkZXI6IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xufVxuXG4uaW1hZ2Uge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmltYWdlQ29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uaGVhZGVyIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1sZyk7XG4gIGJvcmRlci1ib3R0b206IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcbn1cblxuLmJvZHkge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLWxnKTtcbn1cblxuLmZvb3RlciB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbGcpO1xuICBib3JkZXItdG9wOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIGdhcDogdmFyKC0tc3BhY2luZy1zbSk7XG59XG5cbi50aXRsZSB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG59XG5cbi5zdWJ0aXRsZSB7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2luZy14cykgMCAwO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5jbGlja2FibGUge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5wYWRkaW5nIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1sZyk7XG59XG5cbi5ub1BhZGRpbmcge1xuICBwYWRkaW5nOiAwO1xufSJdfQ== */";
76
- var styles$2 = {"card":"Card-module_card__Cb1o4","hoverable":"Card-module_hoverable__aGYcW","elevated":"Card-module_elevated__5VEDw","outlined":"Card-module_outlined__Tkn0-","flat":"Card-module_flat__LRpce","image":"Card-module_image__bEGMz","imageContainer":"Card-module_imageContainer__aBzxr","header":"Card-module_header__PTXf2","body":"Card-module_body__W441Z","footer":"Card-module_footer__Mu-JC","title":"Card-module_title__mSgoo","subtitle":"Card-module_subtitle__dBqgy","clickable":"Card-module_clickable__qbwhm","padding":"Card-module_padding__o07TN","noPadding":"Card-module_noPadding__jt3Vd"};
77
- styleInject(css_248z$2);
76
+ var css_248z$l = ".Card-module_card__r2DB2{background:linear-gradient(135deg,var(--color-surface),var(--color-background));border:1px solid var(--color-border);border-radius:var(--radius-xl);overflow:hidden;position:relative;transition:all var(--transition-base)}.Card-module_card__r2DB2:before{background:linear-gradient(135deg,transparent,rgba(124,58,237,.01) 50%,rgba(20,184,166,.01));bottom:0;content:\"\";left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0;transition:opacity var(--transition-slow)}.Card-module_card__r2DB2:hover.Card-module_hoverable__X3OpS:before{opacity:1}.Card-module_card__r2DB2:hover.Card-module_hoverable__X3OpS{border-color:var(--color-primary-light);box-shadow:var(--shadow-xl);transform:translateY(-4px)}.Card-module_elevated__hGV6-{background:linear-gradient(145deg,var(--color-surface),var(--color-background));border:none;box-shadow:var(--shadow-lg)}.Card-module_elevated__hGV6-:hover.Card-module_hoverable__X3OpS{box-shadow:var(--shadow-2xl);transform:translateY(-6px)}.Card-module_outlined__ngRag{background:var(--color-background);border:1px solid var(--color-border);box-shadow:none;position:relative}.Card-module_outlined__ngRag:after{background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));border-radius:var(--radius-xl);bottom:-1px;content:\"\";left:-1px;opacity:0;position:absolute;right:-1px;top:-1px;transition:opacity var(--transition-base);z-index:-1}.Card-module_outlined__ngRag:hover.Card-module_hoverable__X3OpS{border-color:transparent;transform:translateY(-2px)}.Card-module_outlined__ngRag:hover.Card-module_hoverable__X3OpS:after{opacity:1}.Card-module_flat__xy-xt{background:var(--color-background-secondary);border:none;box-shadow:none}.Card-module_flat__xy-xt:hover.Card-module_hoverable__X3OpS{background:var(--color-background-tertiary);box-shadow:var(--shadow-sm)}.Card-module_imageContainer__L4ma6{margin:-1px -1px 0;overflow:hidden;position:relative}.Card-module_image__bQBt6{display:block;height:auto;transition:transform var(--transition-slow);width:100%}.Card-module_card__r2DB2:hover.Card-module_hoverable__X3OpS .Card-module_image__bQBt6{transform:scale(1.05)}.Card-module_header__0dtj3{background:linear-gradient(180deg,var(--color-background) 0,var(--color-background-secondary) 100%);border-bottom:1px solid var(--color-border);padding:var(--spacing-lg)}.Card-module_body__K7eL3{padding:var(--spacing-lg)}.Card-module_footer__L5wO-{align-items:center;background:var(--color-background-secondary);border-top:1px solid var(--color-border);display:flex;gap:var(--spacing-md);justify-content:flex-end;padding:var(--spacing-md) var(--spacing-lg)}.Card-module_title__pW9g8{color:var(--color-text);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight);line-height:var(--line-height-tight);margin:0}.Card-module_subtitle__gejH4{color:var(--color-text-secondary);font-size:var(--font-size-sm);line-height:var(--line-height-relaxed);margin:var(--spacing-xs) 0 0}.Card-module_clickable__Y6fm8{cursor:pointer;user-select:none}.Card-module_clickable__Y6fm8:active{box-shadow:var(--shadow-md);transform:translateY(0)}.Card-module_padding__wtyDo{padding:var(--spacing-lg)}.Card-module_noPadding__r5Qq0{padding:0}.Card-module_loading__S4Wng{overflow:hidden;position:relative}.Card-module_loading__S4Wng:after{animation:Card-module_shimmer__Pi3ap 2s infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;width:100%}@keyframes Card-module_shimmer__Pi3ap{to{left:100%}}[data-theme=dark] .Card-module_card__r2DB2{background:linear-gradient(135deg,var(--color-surface),var(--color-background-secondary))}[data-theme=dark] .Card-module_card__r2DB2:before{background:linear-gradient(135deg,transparent,rgba(167,139,250,.02) 50%,rgba(45,212,191,.02))}[data-theme=dark] .Card-module_elevated__hGV6-{background:linear-gradient(145deg,var(--color-surface),var(--color-background-secondary))}[data-theme=dark] .Card-module_header__0dtj3{background:linear-gradient(180deg,var(--color-background-secondary) 0,var(--color-background-tertiary) 100%)}[data-theme=dark] .Card-module_footer__L5wO-{background:var(--color-background-tertiary)}@media (max-width:768px){.Card-module_card__r2DB2{border-radius:var(--radius-lg)}.Card-module_body__K7eL3,.Card-module_footer__L5wO-,.Card-module_header__0dtj3{padding:var(--spacing-md)}.Card-module_title__pW9g8{font-size:var(--font-size-lg)}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNhcmQubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5QkFDQywrRUFHQyxDQUNELG9DQUFxQyxDQUNyQyw4QkFBK0IsQ0FDL0IsZUFBZ0IsQ0FFaEIsaUJBQWtCLENBRGxCLHFDQUVELENBR0EsZ0NBT0MsNEZBS0MsQ0FORCxRQUFTLENBTFQsVUFBVyxDQUdYLE1BQU8sQ0FVUCxTQUFVLENBRFYsbUJBQW9CLENBWHBCLGlCQUFrQixDQUdsQixPQUFRLENBRlIsS0FBTSxDQVlOLHlDQUNELENBRUEsbUVBQ0MsU0FDRCxDQUVBLDREQUdDLHVDQUF3QyxDQUR4QywyQkFBNEIsQ0FENUIsMEJBR0QsQ0FHQSw2QkFHQywrRUFJQyxDQUxELFdBQVksQ0FEWiwyQkFPRCxDQUVBLGdFQUNDLDRCQUE2QixDQUM3QiwwQkFDRCxDQUdBLDZCQUNDLGtDQUFtQyxDQUNuQyxvQ0FBcUMsQ0FDckMsZUFBZ0IsQ0FDaEIsaUJBQ0QsQ0FFQSxtQ0FPQyw4RUFJQyxDQUNELDhCQUErQixDQU4vQixXQUFZLENBTFosVUFBVyxDQUdYLFNBQVUsQ0FTVixTQUFVLENBWFYsaUJBQWtCLENBR2xCLFVBQVcsQ0FGWCxRQUFTLENBWVQseUNBQTBDLENBRDFDLFVBRUQsQ0FFQSxnRUFDQyx3QkFBeUIsQ0FDekIsMEJBQ0QsQ0FFQSxzRUFDQyxTQUNELENBR0EseUJBR0MsNENBQTZDLENBRjdDLFdBQVksQ0FDWixlQUVELENBRUEsNERBQ0MsMkNBQTRDLENBQzVDLDJCQUNELENBR0EsbUNBR0Msa0JBQXdCLENBRHhCLGVBQWdCLENBRGhCLGlCQUdELENBRUEsMEJBR0MsYUFBYyxDQURkLFdBQVksQ0FFWiwyQ0FBNEMsQ0FINUMsVUFJRCxDQUVBLHNGQUNDLHFCQUNELENBR0EsMkJBR0MsbUdBSUMsQ0FMRCwyQ0FBNEMsQ0FENUMseUJBT0QsQ0FHQSx5QkFDQyx5QkFDRCxDQUdBLDJCQUlDLGtCQUFtQixDQUduQiw0Q0FBNkMsQ0FMN0Msd0NBQXlDLENBQ3pDLFlBQWEsQ0FHYixxQkFBc0IsQ0FEdEIsd0JBQXlCLENBSnpCLDJDQU9ELENBR0EsMEJBSUMsdUJBQXdCLENBRnhCLDZCQUE4QixDQUM5QixtQ0FBb0MsQ0FHcEMsMENBQTJDLENBRDNDLG9DQUFxQyxDQUpyQyxRQU1ELENBR0EsNkJBR0MsaUNBQWtDLENBRGxDLDZCQUE4QixDQUU5QixzQ0FBdUMsQ0FIdkMsNEJBSUQsQ0FHQSw4QkFDQyxjQUFlLENBQ2YsZ0JBQ0QsQ0FFQSxxQ0FFQywyQkFBNEIsQ0FENUIsdUJBRUQsQ0FHQSw0QkFDQyx5QkFDRCxDQUVBLDhCQUNDLFNBQ0QsQ0FHQSw0QkFFQyxlQUFnQixDQURoQixpQkFFRCxDQUVBLGtDQWFDLGdEQUE4QixDQU45Qiw0RUFLQyxDQVhELFVBQVcsQ0FLWCxXQUFZLENBRlosVUFBVyxDQUZYLGlCQUFrQixDQUNsQixLQUFNLENBRU4sVUFTRCxDQUVBLHNDQUNDLEdBQ0MsU0FDRCxDQUNELENBR0EsMkNBQ0MseUZBSUQsQ0FFQSxrREFDQyw2RkFNRCxDQUVBLCtDQUNDLHlGQUtELENBRUEsNkNBQ0MsNEdBS0QsQ0FFQSw2Q0FDQywyQ0FDRCxDQUdBLHlCQUNDLHlCQUNDLDhCQUNELENBRUEsK0VBR0MseUJBQ0QsQ0FFQSwwQkFDQyw2QkFDRCxDQUNEIiwiZmlsZSI6IkNhcmQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jYXJkIHtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG5cdFx0dmFyKC0tY29sb3Itc3VyZmFjZSksIFxuXHRcdHZhcigtLWNvbG9yLWJhY2tncm91bmQpXG5cdCk7XG5cdGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14bCk7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIFN1YnRsZSBncmFkaWVudCBvdmVybGF5IGZvciBkZXB0aCAqL1xuLmNhcmQ6OmJlZm9yZSB7XG5cdGNvbnRlbnQ6ICcnO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogMDtcblx0bGVmdDogMDtcblx0cmlnaHQ6IDA7XG5cdGJvdHRvbTogMDtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuXHRcdDEzNWRlZyxcblx0XHR0cmFuc3BhcmVudCAwJSxcblx0XHRyZ2JhKDEyNCwgNTgsIDIzNywgMC4wMSkgNTAlLFxuXHRcdHJnYmEoMjAsIDE4NCwgMTY2LCAwLjAxKSAxMDAlXG5cdCk7XG5cdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRvcGFjaXR5OiAwO1xuXHR0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRyYW5zaXRpb24tc2xvdyk7XG59XG5cbi5jYXJkOmhvdmVyLmhvdmVyYWJsZTo6YmVmb3JlIHtcblx0b3BhY2l0eTogMTtcbn1cblxuLmNhcmQ6aG92ZXIuaG92ZXJhYmxlIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3cteGwpO1xuXHRib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHQpO1xufVxuXG4vKiBFbGV2YXRlZCB2YXJpYW50IC0gU3Ryb25nIHNoYWRvd3MgKi9cbi5lbGV2YXRlZCB7XG5cdGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7XG5cdGJvcmRlcjogbm9uZTtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuXHRcdDE0NWRlZyxcblx0XHR2YXIoLS1jb2xvci1zdXJmYWNlKSxcblx0XHR2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKVxuXHQpO1xufVxuXG4uZWxldmF0ZWQ6aG92ZXIuaG92ZXJhYmxlIHtcblx0Ym94LXNoYWRvdzogdmFyKC0tc2hhZG93LTJ4bCk7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNnB4KTtcbn1cblxuLyogT3V0bGluZWQgdmFyaWFudCAtIE1pbmltYWwgd2l0aCBncmFkaWVudCBib3JkZXIgb24gaG92ZXIgKi9cbi5vdXRsaW5lZCB7XG5cdGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuXHRib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuXHRib3gtc2hhZG93OiBub25lO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5vdXRsaW5lZDo6YWZ0ZXIge1xuXHRjb250ZW50OiAnJztcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IC0xcHg7XG5cdGxlZnQ6IC0xcHg7XG5cdHJpZ2h0OiAtMXB4O1xuXHRib3R0b206IC0xcHg7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcblx0XHQxMzVkZWcsXG5cdFx0dmFyKC0tY29sb3ItcHJpbWFyeSksXG5cdFx0dmFyKC0tY29sb3Itc2Vjb25kYXJ5KVxuXHQpO1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuXHRvcGFjaXR5OiAwO1xuXHR6LWluZGV4OiAtMTtcblx0dHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4ub3V0bGluZWQ6aG92ZXIuaG92ZXJhYmxlIHtcblx0Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xufVxuXG4ub3V0bGluZWQ6aG92ZXIuaG92ZXJhYmxlOjphZnRlciB7XG5cdG9wYWNpdHk6IDE7XG59XG5cbi8qIEZsYXQgdmFyaWFudCAtIE5vIGJvcmRlcnMgb3Igc2hhZG93cyAqL1xuLmZsYXQge1xuXHRib3JkZXI6IG5vbmU7XG5cdGJveC1zaGFkb3c6IG5vbmU7XG5cdGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbn1cblxuLmZsYXQ6aG92ZXIuaG92ZXJhYmxlIHtcblx0YmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG5cdGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSk7XG59XG5cbi8qIEltYWdlIGNvbnRhaW5lciAqL1xuLmltYWdlQ29udGFpbmVyIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHRtYXJnaW46IC0xcHggLTFweCAwIC0xcHg7IC8qIENvbXBlbnNhdGUgZm9yIGNhcmQgYm9yZGVyICovXG59XG5cbi5pbWFnZSB7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IGF1dG87XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdHJhbnNpdGlvbi1zbG93KTtcbn1cblxuLmNhcmQ6aG92ZXIuaG92ZXJhYmxlIC5pbWFnZSB7XG5cdHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG5cbi8qIEhlYWRlciBzZWN0aW9uICovXG4uaGVhZGVyIHtcblx0cGFkZGluZzogdmFyKC0tc3BhY2luZy1sZyk7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG5cdFx0MTgwZGVnLFxuXHRcdHZhcigtLWNvbG9yLWJhY2tncm91bmQpIDAlLFxuXHRcdHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KSAxMDAlXG5cdCk7XG59XG5cbi8qIEJvZHkgc2VjdGlvbiAqL1xuLmJvZHkge1xuXHRwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLWxnKTtcbn1cblxuLyogRm9vdGVyIHNlY3Rpb24gKi9cbi5mb290ZXIge1xuXHRwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKSB2YXIoLS1zcGFjaW5nLWxnKTtcblx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdGdhcDogdmFyKC0tc3BhY2luZy1tZCk7XG5cdGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbn1cblxuLyogVGl0bGUgc3R5bGluZyAqL1xuLnRpdGxlIHtcblx0bWFyZ2luOiAwO1xuXHRmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14bCk7XG5cdGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcblx0Y29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuXHRsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtdGlnaHQpO1xuXHRsZXR0ZXItc3BhY2luZzogdmFyKC0tbGV0dGVyLXNwYWNpbmctdGlnaHQpO1xufVxuXG4vKiBTdWJ0aXRsZSBzdHlsaW5nICovXG4uc3VidGl0bGUge1xuXHRtYXJnaW46IHZhcigtLXNwYWNpbmcteHMpIDAgMDtcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuXHRjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuXHRsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtcmVsYXhlZCk7XG59XG5cbi8qIENsaWNrYWJsZSBzdGF0ZSAqL1xuLmNsaWNrYWJsZSB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0dXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5jbGlja2FibGU6YWN0aXZlIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xufVxuXG4vKiBQYWRkaW5nIHV0aWxpdGllcyAqL1xuLnBhZGRpbmcge1xuXHRwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLWxnKTtcbn1cblxuLm5vUGFkZGluZyB7XG5cdHBhZGRpbmc6IDA7XG59XG5cbi8qIExvYWRpbmcgc3RhdGUgKi9cbi5sb2FkaW5nIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ubG9hZGluZzo6YWZ0ZXIge1xuXHRjb250ZW50OiAnJztcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IC0xMDAlO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG5cdFx0OTBkZWcsXG5cdFx0dHJhbnNwYXJlbnQsXG5cdFx0cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpLFxuXHRcdHRyYW5zcGFyZW50XG5cdCk7XG5cdGFuaW1hdGlvbjogc2hpbW1lciAycyBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBzaGltbWVyIHtcblx0MTAwJSB7XG5cdFx0bGVmdDogMTAwJTtcblx0fVxufVxuXG4vKiBEYXJrIG1vZGUgYWRqdXN0bWVudHMgKi9cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuY2FyZCB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuXHRcdHZhcigtLWNvbG9yLXN1cmZhY2UpLCBcblx0XHR2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSlcblx0KTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5jYXJkOjpiZWZvcmUge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG5cdFx0MTM1ZGVnLFxuXHRcdHRyYW5zcGFyZW50IDAlLFxuXHRcdHJnYmEoMTY3LCAxMzksIDI1MCwgMC4wMikgNTAlLFxuXHRcdHJnYmEoNDUsIDIxMiwgMTkxLCAwLjAyKSAxMDAlXG5cdCk7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuZWxldmF0ZWQge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG5cdFx0MTQ1ZGVnLFxuXHRcdHZhcigtLWNvbG9yLXN1cmZhY2UpLFxuXHRcdHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuXHQpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmhlYWRlciB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcblx0XHQxODBkZWcsXG5cdFx0dmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpIDAlLFxuXHRcdHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpIDEwMCVcblx0KTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5mb290ZXIge1xuXHRiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KTtcbn1cblxuLyogUmVzcG9uc2l2ZSBhZGp1c3RtZW50cyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG5cdC5jYXJkIHtcblx0XHRib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuXHR9XG5cdFxuXHQuaGVhZGVyLFxuXHQuYm9keSxcblx0LmZvb3RlciB7XG5cdFx0cGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCk7XG5cdH1cblx0XG5cdC50aXRsZSB7XG5cdFx0Zm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuXHR9XG59Il19 */";
77
+ var styles$j = {"card":"Card-module_card__r2DB2","hoverable":"Card-module_hoverable__X3OpS","elevated":"Card-module_elevated__hGV6-","outlined":"Card-module_outlined__ngRag","flat":"Card-module_flat__xy-xt","imageContainer":"Card-module_imageContainer__L4ma6","image":"Card-module_image__bQBt6","header":"Card-module_header__0dtj3","body":"Card-module_body__K7eL3","footer":"Card-module_footer__L5wO-","title":"Card-module_title__pW9g8","subtitle":"Card-module_subtitle__gejH4","clickable":"Card-module_clickable__Y6fm8","padding":"Card-module_padding__wtyDo","noPadding":"Card-module_noPadding__r5Qq0","loading":"Card-module_loading__S4Wng","shimmer":"Card-module_shimmer__Pi3ap"};
78
+ styleInject(css_248z$l);
78
79
 
79
80
  const Card = ({ variant = 'elevated', hoverable = false, clickable = false, padding = true, image, imageAlt = '', title, subtitle, header, footer, children, className = '', onClick, motionProps, ...rest }) => {
80
81
  const cardClasses = [
81
- styles$2.card,
82
- styles$2[variant],
83
- hoverable && styles$2.hoverable,
84
- clickable && styles$2.clickable,
85
- !padding && styles$2.noPadding,
82
+ styles$j.card,
83
+ styles$j[variant],
84
+ hoverable && styles$j.hoverable,
85
+ clickable && styles$j.clickable,
86
+ !padding && styles$j.noPadding,
86
87
  className
87
88
  ].filter(Boolean).join(' ');
88
- const cardContent = (jsxs(Fragment, { children: [image && (jsx("div", { className: styles$2.imageContainer, children: jsx("img", { src: image, alt: imageAlt, className: styles$2.image }) })), header && jsx("div", { className: styles$2.header, children: header }), (title || subtitle) && !header && (jsxs("div", { className: styles$2.header, children: [title && jsx("h3", { className: styles$2.title, children: title }), subtitle && jsx("p", { className: styles$2.subtitle, children: subtitle })] })), children && (jsx("div", { className: padding ? styles$2.body : undefined, children: children })), footer && jsx("div", { className: styles$2.footer, children: footer })] }));
89
+ const cardContent = (jsxs(Fragment, { children: [image && (jsx("div", { className: styles$j.imageContainer, children: jsx("img", { src: image, alt: imageAlt, className: styles$j.image }) })), header && jsx("div", { className: styles$j.header, children: header }), (title || subtitle) && !header && (jsxs("div", { className: styles$j.header, children: [title && jsx("h3", { className: styles$j.title, children: title }), subtitle && jsx("p", { className: styles$j.subtitle, children: subtitle })] })), children && (jsx("div", { className: padding ? styles$j.body : undefined, children: children })), footer && jsx("div", { className: styles$j.footer, children: footer })] }));
89
90
  return (jsx(motion.div, { className: cardClasses, onClick: clickable ? onClick : undefined, whileHover: hoverable ? { y: -4 } : undefined, transition: { type: "spring", stiffness: 400, damping: 17 }, ...motionProps, ...rest, children: cardContent }));
90
91
  };
91
92
 
92
- var css_248z$1 = ".Modal-module_overlay__dd9h1{align-items:center;background-color:rgba(0,0,0,.5);bottom:0;display:flex;justify-content:center;left:0;padding:var(--spacing-lg);position:fixed;right:0;top:0;z-index:var(--z-index-modal-backdrop)}.Modal-module_modal__aD7aP{background-color:var(--color-background);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-xl);display:flex;flex-direction:column;max-height:90vh;max-width:90vw;overflow:auto;position:relative;z-index:var(--z-index-modal)}.Modal-module_small__Xlbt5{width:400px}.Modal-module_medium__OnN1W{width:600px}.Modal-module_large__p-8Oq{width:800px}.Modal-module_fullscreen__o84Xi{border-radius:0;height:100vh;max-height:100vh;max-width:100vw;width:100vw}.Modal-module_header__ILG9i{align-items:center;border-bottom:var(--border-width) solid var(--border-color);display:flex;flex-shrink:0;justify-content:space-between;padding:var(--spacing-lg)}.Modal-module_title__A5OeE{color:var(--color-text);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);margin:0}.Modal-module_closeButton__3LpSf{align-items:center;background:none;border:none;border-radius:var(--border-radius-md);color:var(--color-text-secondary);cursor:pointer;display:flex;font-size:var(--font-size-xl);justify-content:center;padding:var(--spacing-xs);transition:all var(--transition-fast)}.Modal-module_closeButton__3LpSf:hover{background-color:var(--color-surface);color:var(--color-text)}.Modal-module_body__lVhql{flex:1;overflow-y:auto;padding:var(--spacing-lg)}.Modal-module_footer__rro2w{align-items:center;border-top:var(--border-width) solid var(--border-color);display:flex;flex-shrink:0;gap:var(--spacing-sm);justify-content:flex-end;padding:var(--spacing-lg)}.Modal-module_centered__UfBxf{text-align:center}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vZGFsLm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkJBUUUsa0JBQW1CLENBRm5CLCtCQUFvQyxDQURwQyxRQUFTLENBRVQsWUFBYSxDQUViLHNCQUF1QixDQU52QixNQUFPLENBUVAseUJBQTBCLENBVjFCLGNBQWUsQ0FHZixPQUFRLENBRlIsS0FBTSxDQVFOLHFDQUVGLENBRUEsMkJBQ0Usd0NBQXlDLENBQ3pDLHFDQUFzQyxDQUN0QywyQkFBNEIsQ0FNNUIsWUFBYSxDQUNiLHFCQUFzQixDQUx0QixlQUFnQixDQURoQixjQUFlLENBRWYsYUFBYyxDQUNkLGlCQUFrQixDQUNsQiw0QkFHRixDQUVBLDJCQUNFLFdBQ0YsQ0FFQSw0QkFDRSxXQUNGLENBRUEsMkJBQ0UsV0FDRixDQUVBLGdDQUtFLGVBQWdCLENBSGhCLFlBQWEsQ0FFYixnQkFBaUIsQ0FEakIsZUFBZ0IsQ0FGaEIsV0FLRixDQUVBLDRCQUlFLGtCQUFtQixDQUZuQiwyREFBNEQsQ0FDNUQsWUFBYSxDQUdiLGFBQWMsQ0FEZCw2QkFBOEIsQ0FKOUIseUJBTUYsQ0FFQSwyQkFJRSx1QkFBd0IsQ0FGeEIsNkJBQThCLENBQzlCLHVDQUF3QyxDQUZ4QyxRQUlGLENBRUEsaUNBUUUsa0JBQW1CLENBUG5CLGVBQWdCLENBQ2hCLFdBQVksQ0FRWixxQ0FBc0MsQ0FMdEMsaUNBQWtDLENBRGxDLGNBQWUsQ0FHZixZQUFhLENBSmIsNkJBQThCLENBTTlCLHNCQUF1QixDQUh2Qix5QkFBMEIsQ0FLMUIscUNBQ0YsQ0FFQSx1Q0FDRSxxQ0FBc0MsQ0FDdEMsdUJBQ0YsQ0FFQSwwQkFFRSxNQUFPLENBQ1AsZUFBZ0IsQ0FGaEIseUJBR0YsQ0FFQSw0QkFJRSxrQkFBbUIsQ0FGbkIsd0RBQXlELENBQ3pELFlBQWEsQ0FJYixhQUFjLENBRGQscUJBQXNCLENBRHRCLHdCQUF5QixDQUp6Qix5QkFPRixDQUVBLDhCQUNFLGlCQUNGIiwiZmlsZSI6Ik1vZGFsLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIub3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB6LWluZGV4OiB2YXIoLS16LWluZGV4LW1vZGFsLWJhY2tkcm9wKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1sZyk7XG59XG5cbi5tb2RhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnKTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXhsKTtcbiAgbWF4LXdpZHRoOiA5MHZ3O1xuICBtYXgtaGVpZ2h0OiA5MHZoO1xuICBvdmVyZmxvdzogYXV0bztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiB2YXIoLS16LWluZGV4LW1vZGFsKTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLnNtYWxsIHtcbiAgd2lkdGg6IDQwMHB4O1xufVxuXG4ubWVkaXVtIHtcbiAgd2lkdGg6IDYwMHB4O1xufVxuXG4ubGFyZ2Uge1xuICB3aWR0aDogODAwcHg7XG59XG5cbi5mdWxsc2NyZWVuIHtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IDEwMHZoO1xuICBtYXgtd2lkdGg6IDEwMHZ3O1xuICBtYXgtaGVpZ2h0OiAxMDB2aDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cblxuLmhlYWRlciB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbGcpO1xuICBib3JkZXItYm90dG9tOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi50aXRsZSB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG59XG5cbi5jbG9zZUJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteHMpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4uY2xvc2VCdXR0b246aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1zdXJmYWNlKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xufVxuXG4uYm9keSB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbGcpO1xuICBmbGV4OiAxO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4uZm9vdGVyIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1sZyk7XG4gIGJvcmRlci10b3A6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgZ2FwOiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5jZW50ZXJlZCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn0iXX0= */";
93
- var styles$1 = {"overlay":"Modal-module_overlay__dd9h1","modal":"Modal-module_modal__aD7aP","small":"Modal-module_small__Xlbt5","medium":"Modal-module_medium__OnN1W","large":"Modal-module_large__p-8Oq","fullscreen":"Modal-module_fullscreen__o84Xi","header":"Modal-module_header__ILG9i","title":"Modal-module_title__A5OeE","closeButton":"Modal-module_closeButton__3LpSf","body":"Modal-module_body__lVhql","footer":"Modal-module_footer__rro2w","centered":"Modal-module_centered__UfBxf"};
94
- styleInject(css_248z$1);
93
+ var css_248z$k = ".TextInput-module_textInput__b2LVM{margin-bottom:var(--spacing-lg);position:relative}.TextInput-module_textInput__b2LVM label{color:var(--color-text);display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);margin-bottom:var(--spacing-sm);transition:color var(--transition-base)}.TextInput-module_textInput__b2LVM input{-webkit-appearance:none;background:linear-gradient(135deg,var(--color-background),var(--color-background-secondary));border:2px solid var(--color-border);border-radius:var(--radius-lg);box-sizing:border-box;color:var(--color-text);display:block;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);min-height:44px;outline:none;padding:var(--spacing-sm) var(--spacing-md);transition:all var(--transition-base);width:100%}.TextInput-module_textInput__b2LVM input:hover:not(:focus):not(:disabled){background:var(--color-background);border-color:var(--color-border-hover);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.TextInput-module_textInput__b2LVM input:focus{background:var(--color-background);border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(124,58,237,.1);transform:translateY(-2px)}.TextInput-module_textInput__b2LVM input::placeholder{color:var(--color-text-secondary);opacity:.6}.TextInput-module_textInput__b2LVM input:disabled{background:var(--color-background-tertiary);border-color:var(--color-border);color:var(--color-text-tertiary);cursor:not-allowed;opacity:.6;transform:none}.TextInput-module_textInput__b2LVM input[type=password]{font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,monospace;letter-spacing:.15em}.TextInput-module_textInput__b2LVM input[type=number]::-webkit-inner-spin-button,.TextInput-module_textInput__b2LVM input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.TextInput-module_textInput__b2LVM input[type=number]{-moz-appearance:textfield}.TextInput-module_required__7uLiM{color:var(--color-error);font-weight:var(--font-weight-bold);margin-left:4px}.TextInput-module_inputError__QD0a-{animation:TextInput-module_shake__qh8VR .3s cubic-bezier(.36,.07,.19,.97) both;background:linear-gradient(135deg,var(--color-error-bg),var(--color-background))!important;border-color:var(--color-error)!important}.TextInput-module_inputError__QD0a-:focus{box-shadow:0 0 0 3px rgba(244,63,94,.15)!important}.TextInput-module_errorMessage__nIDoQ{align-items:center;animation:TextInput-module_slideDown__YbEGs .3s ease-out;color:var(--color-error);display:flex;font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);gap:var(--spacing-xs);margin-top:var(--spacing-xs);position:absolute}.TextInput-module_errorMessage__nIDoQ:before{content:\"⚠\";font-size:1.2em}@keyframes TextInput-module_shake__qh8VR{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(2px)}30%,50%,70%{transform:translateX(-3px)}40%,60%{transform:translateX(3px)}}@keyframes TextInput-module_slideDown__YbEGs{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.TextInput-module_success__KbSS3 input{border-color:var(--color-success)!important}.TextInput-module_success__KbSS3:after{animation:TextInput-module_checkIn__d-7t6 .3s ease-out;color:var(--color-success);content:\"✓\";font-size:var(--font-size-lg);font-weight:700;pointer-events:none;position:absolute;right:var(--spacing-md);top:50%;transform:translateY(-50%)}@keyframes TextInput-module_checkIn__d-7t6{0%{opacity:0;transform:translateY(-50%) scale(0) rotate(-45deg)}to{opacity:1;transform:translateY(-50%) scale(1) rotate(0)}}.TextInput-module_loading__qXaca input{animation:TextInput-module_loading__qXaca 2s ease-in-out infinite;background-image:linear-gradient(90deg,var(--color-background) 0,rgba(124,58,237,.05) 50%,var(--color-background) 100%);background-size:200% 100%}@keyframes TextInput-module_loading__qXaca{0%{background-position:200% 0}to{background-position:-200% 0}}.TextInput-module_withIcon__-8swm{position:relative}.TextInput-module_withIcon__-8swm input{padding-left:44px}.TextInput-module_inputIcon__B4czN{color:var(--color-text-secondary);height:20px;left:var(--spacing-md);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);transition:color var(--transition-base);width:20px}.TextInput-module_textInput__b2LVM input:focus~.TextInput-module_inputIcon__B4czN{color:var(--color-primary)}.TextInput-module_withAction__JD3ku input{padding-right:100px}.TextInput-module_actionButton__zFJel{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));border:none;border-radius:var(--radius-md);color:var(--color-text-inverse);cursor:pointer;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);padding:6px 12px;position:absolute;right:8px;top:50%;transform:translateY(-50%);transition:all var(--transition-base)}.TextInput-module_actionButton__zFJel:hover{background:linear-gradient(135deg,var(--color-primary-hover),var(--color-primary-active));transform:translateY(-50%) scale(1.05)}.TextInput-module_actionButton__zFJel:active{transform:translateY(-50%) scale(.95)}[data-theme=dark] .TextInput-module_textInput__b2LVM input{background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));border-color:var(--color-border)}[data-theme=dark] .TextInput-module_textInput__b2LVM input:hover:not(:focus):not(:disabled){background:var(--color-background-secondary);border-color:var(--color-border-hover)}[data-theme=dark] .TextInput-module_textInput__b2LVM input:focus{background:var(--color-background-secondary);border-color:var(--color-primary-light);box-shadow:0 0 0 3px rgba(167,139,250,.1)}[data-theme=dark] .TextInput-module_inputError__QD0a-{background:linear-gradient(135deg,rgba(244,63,94,.1),var(--color-background-secondary))!important}[data-theme=dark] .TextInput-module_inputIcon__B4czN{color:var(--color-text-tertiary)}[data-theme=dark] .TextInput-module_textInput__b2LVM input:focus~.TextInput-module_inputIcon__B4czN{color:var(--color-primary-light)}@media (max-width:768px){.TextInput-module_textInput__b2LVM{margin-bottom:var(--spacing-md)}.TextInput-module_textInput__b2LVM label{font-size:var(--font-size-base);margin-bottom:var(--spacing-xs)}.TextInput-module_textInput__b2LVM input{border-radius:var(--radius-md);font-size:16px;min-height:48px;padding:var(--spacing-md)}.TextInput-module_withIcon__-8swm input{padding-left:48px}.TextInput-module_inputIcon__B4czN{height:24px;left:var(--spacing-md);width:24px}.TextInput-module_errorMessage__nIDoQ{font-size:var(--font-size-sm);margin-top:var(--spacing-sm);position:static}}@media (prefers-contrast:high){.TextInput-module_textInput__b2LVM input{border-width:3px}.TextInput-module_textInput__b2LVM input:focus{outline:2px solid var(--color-primary);outline-offset:2px}}@media (prefers-reduced-motion:reduce){.TextInput-module_errorMessage__nIDoQ,.TextInput-module_inputIcon__B4czN,.TextInput-module_textInput__b2LVM input{animation:none;transition:none}}.TextInput-module_textInput__b2LVM input:-webkit-autofill,.TextInput-module_textInput__b2LVM input:-webkit-autofill:focus,.TextInput-module_textInput__b2LVM input:-webkit-autofill:hover{-webkit-text-fill-color:var(--color-text);border:2px solid var(--color-primary);-webkit-box-shadow:0 0 0 1000px var(--color-background) inset;transition:background-color 5000s ease-in-out 0s}.TextInput-module_textInput__b2LVM input[type=search]::-webkit-search-cancel-button,.TextInput-module_textInput__b2LVM input[type=search]::-webkit-search-decoration,.TextInput-module_textInput__b2LVM input[type=search]::-webkit-search-results-button,.TextInput-module_textInput__b2LVM input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRleHRJbnB1dC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQUNJLCtCQUFnQyxDQUNoQyxpQkFDSixDQUVBLHlDQUlJLHVCQUF3QixDQUh4QixhQUFjLENBQ2QsNkJBQThCLENBQzlCLHVDQUF3QyxDQUd4Qyx5Q0FBMEMsQ0FEMUMsK0JBQWdDLENBRWhDLHVDQUNKLENBRUEseUNBZUksdUJBQXdCLENBVnhCLDRGQUdDLENBTEQsb0NBQXFDLENBQ3JDLDhCQUErQixDQWEvQixxQkFBc0IsQ0FOdEIsdUJBQXdCLENBQ3hCLGFBQWMsQ0FIZCwrQkFBZ0MsQ0FDaEMscUNBQXNDLENBSXRDLGVBQWdCLENBRWhCLFlBQWEsQ0FkYiwyQ0FBNEMsQ0FXNUMscUNBQXNDLENBWnRDLFVBaUJKLENBRUEsMEVBRUksa0NBQW1DLENBRG5DLHNDQUF1QyxDQUV2QywyQkFBNEIsQ0FDNUIsMEJBQ0osQ0FFQSwrQ0FFSSxrQ0FBbUMsQ0FEbkMsaUNBQWtDLENBRWxDLHdDQUE2QyxDQUM3QywwQkFDSixDQUVBLHNEQUNJLGlDQUFrQyxDQUNsQyxVQUNKLENBRUEsa0RBQ0ksMkNBQTRDLENBQzVDLGdDQUFpQyxDQUNqQyxnQ0FBaUMsQ0FDakMsa0JBQW1CLENBQ25CLFVBQVksQ0FDWixjQUNKLENBR0Esd0RBQ0ksdUVBQW1GLENBQ25GLG9CQUNKLENBR0Esa0tBRUksdUJBQXdCLENBQ3hCLFFBQ0osQ0FFQSxzREFDSSx5QkFDSixDQUdBLGtDQUNJLHdCQUF5QixDQUN6QixtQ0FBb0MsQ0FDcEMsZUFDSixDQUdBLG9DQU1JLDhFQUErRCxDQUovRCwwRkFHWSxDQUpaLHlDQU1KLENBRUEsMENBQ0ksa0RBQ0osQ0FFQSxzQ0FNSSxrQkFBbUIsQ0FFbkIsd0RBQWtDLENBTmxDLHdCQUF5QixDQUd6QixZQUFhLENBRmIsNkJBQThCLENBTTlCLHFDQUFzQyxDQUZ0QyxxQkFBc0IsQ0FIdEIsNEJBQTZCLENBSDdCLGlCQVNKLENBRUEsNkNBQ0ksV0FBWSxDQUNaLGVBQ0osQ0FFQSx5Q0FDSSxRQUFXLDBCQUE2QixDQUN4QyxRQUFXLHlCQUE0QixDQUN2QyxZQUFnQiwwQkFBNkIsQ0FDN0MsUUFBVyx5QkFBNEIsQ0FDM0MsQ0FFQSw2Q0FDSSxHQUNJLFNBQVUsQ0FDViwyQkFDSixDQUNBLEdBQ0ksU0FBVSxDQUNWLHVCQUNKLENBQ0osQ0FHQSx1Q0FDSSwyQ0FDSixDQUVBLHVDQVNJLHNEQUFnQyxDQUhoQywwQkFBMkIsQ0FMM0IsV0FBWSxDQU9aLDZCQUE4QixDQUQ5QixlQUFpQixDQUdqQixtQkFBb0IsQ0FScEIsaUJBQWtCLENBQ2xCLHVCQUF3QixDQUN4QixPQUFRLENBQ1IsMEJBTUosQ0FFQSwyQ0FDSSxHQUNJLFNBQVUsQ0FDVixrREFDSixDQUNBLEdBQ0ksU0FBVSxDQUNWLDZDQUNKLENBQ0osQ0FHQSx1Q0FRSSxpRUFBMEMsQ0FQMUMsdUhBS0MsQ0FDRCx5QkFFSixDQUVBLDJDQUNJLEdBQUssMEJBQTZCLENBQ2xDLEdBQU8sMkJBQThCLENBQ3pDLENBR0Esa0NBQ0ksaUJBQ0osQ0FFQSx3Q0FDSSxpQkFDSixDQUVBLG1DQUtJLGlDQUFrQyxDQUVsQyxXQUFZLENBTFosc0JBQXVCLENBTXZCLG1CQUFvQixDQVBwQixpQkFBa0IsQ0FFbEIsT0FBUSxDQUNSLDBCQUEyQixDQUszQix1Q0FBd0MsQ0FIeEMsVUFJSixDQUVBLGtGQUNJLDBCQUNKLENBR0EsMENBQ0ksbUJBQ0osQ0FFQSxzQ0FNSSxrRkFHQyxDQUVELFdBQVksQ0FDWiw4QkFBK0IsQ0FGL0IsK0JBQWdDLENBS2hDLGNBQWUsQ0FGZiw2QkFBOEIsQ0FDOUIscUNBQXNDLENBVHRDLGdCQUFpQixDQUpqQixpQkFBa0IsQ0FDbEIsU0FBVSxDQUNWLE9BQVEsQ0FDUiwwQkFBMkIsQ0FZM0IscUNBQ0osQ0FFQSw0Q0FDSSx5RkFHQyxDQUNELHNDQUNKLENBRUEsNkNBQ0kscUNBQ0osQ0FHQSwyREFDSSxxR0FHQyxDQUNELGdDQUNKLENBRUEsNEZBQ0ksNENBQTZDLENBQzdDLHNDQUNKLENBRUEsaUVBQ0ksNENBQTZDLENBQzdDLHVDQUF3QyxDQUN4Qyx5Q0FDSixDQUVBLHNEQUNJLGlHQUlKLENBRUEscURBQ0ksZ0NBQ0osQ0FFQSxvR0FDSSxnQ0FDSixDQUdBLHlCQUNJLG1DQUNJLCtCQUNKLENBRUEseUNBQ0ksK0JBQWdDLENBQ2hDLCtCQUNKLENBRUEseUNBSUksOEJBQStCLENBRC9CLGNBQWUsQ0FGZixlQUFnQixDQUNoQix5QkFHSixDQUVBLHdDQUNJLGlCQUNKLENBRUEsbUNBR0ksV0FBWSxDQUZaLHNCQUF1QixDQUN2QixVQUVKLENBRUEsc0NBQ0ksNkJBQThCLENBRTlCLDRCQUE2QixDQUQ3QixlQUVKLENBQ0osQ0FHQSwrQkFDSSx5Q0FDSSxnQkFDSixDQUVBLCtDQUNJLHNDQUF1QyxDQUN2QyxrQkFDSixDQUNKLENBR0EsdUNBQ0ksa0hBR0ksY0FBZSxDQUNmLGVBQ0osQ0FDSixDQUdBLDBMQUdJLHlDQUEwQyxDQUcxQyxxQ0FBc0MsQ0FGdEMsNkRBQWdFLENBQ2hFLGdEQUVKLENBR0EsbVZBSUksdUJBQ0oiLCJmaWxlIjoiVGV4dElucHV0Lm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudGV4dElucHV0IHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLWxnKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi50ZXh0SW5wdXQgbGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tbGV0dGVyLXNwYWNpbmctd2lkZSk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLnRleHRJbnB1dCBpbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICAgIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLnRleHRJbnB1dCBpbnB1dDpob3Zlcjpub3QoOmZvY3VzKTpub3QoOmRpc2FibGVkKSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXItaG92ZXIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xufVxuXG4udGV4dElucHV0IGlucHV0OmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDEyNCwgNTgsIDIzNywgMC4xKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi50ZXh0SW5wdXQgaW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLnRleHRJbnB1dCBpbnB1dDpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5KTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qIFBhc3N3b3JkIGlucHV0IHNwZWNpZmljICovXG4udGV4dElucHV0IGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSB7XG4gICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgTW9uYWNvLCAnQ2FzY2FkaWEgQ29kZScsICdSb2JvdG8gTW9ubycsIENvbnNvbGFzLCBtb25vc3BhY2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMTVlbTtcbn1cblxuLyogTnVtYmVyIGlucHV0IC0gaGlkZSBzcGlubmVycyAqL1xuLnRleHRJbnB1dCBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuLnRleHRJbnB1dCBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4udGV4dElucHV0IGlucHV0W3R5cGU9XCJudW1iZXJcIl0ge1xuICAgIC1tb3otYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xufVxuXG4vKiBSZXF1aXJlZCBpbmRpY2F0b3IgKi9cbi5yZXF1aXJlZCB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWVycm9yKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gICAgbWFyZ2luLWxlZnQ6IDRweDtcbn1cblxuLyogRXJyb3Igc3RhdGUgKi9cbi5pbnB1dEVycm9yIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWVycm9yKSAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1lcnJvci1iZyksIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKVxuICAgICkgIWltcG9ydGFudDtcbiAgICBhbmltYXRpb246IHNoYWtlIDAuM3MgY3ViaWMtYmV6aWVyKDAuMzYsIDAuMDcsIDAuMTksIDAuOTcpIGJvdGg7XG59XG5cbi5pbnB1dEVycm9yOmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgyNDQsIDYzLCA5NCwgMC4xNSkgIWltcG9ydGFudDtcbn1cblxuLmVycm9yTWVzc2FnZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1lcnJvcik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmcteHMpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmcteHMpO1xuICAgIGFuaW1hdGlvbjogc2xpZGVEb3duIDAuM3MgZWFzZS1vdXQ7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG59XG5cbi5lcnJvck1lc3NhZ2U6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCLimqBcIjtcbiAgICBmb250LXNpemU6IDEuMmVtO1xufVxuXG5Aa2V5ZnJhbWVzIHNoYWtlIHtcbiAgICAxMCUsIDkwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMXB4KTsgfVxuICAgIDIwJSwgODAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDJweCk7IH1cbiAgICAzMCUsIDUwJSwgNzAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zcHgpOyB9XG4gICAgNDAlLCA2MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoM3B4KTsgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlRG93biB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLyogU3VjY2VzcyBzdGF0ZSAqL1xuLnN1Y2Nlc3MgaW5wdXQge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3Itc3VjY2VzcykgIWltcG9ydGFudDtcbn1cblxuLnN1Y2Nlc3M6OmFmdGVyIHtcbiAgICBjb250ZW50OiAn4pyTJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3Itc3VjY2Vzcyk7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICAgIGFuaW1hdGlvbjogY2hlY2tJbiAwLjNzIGVhc2Utb3V0O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5Aa2V5ZnJhbWVzIGNoZWNrSW4ge1xuICAgIDAlIHsgXG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgwKSByb3RhdGUoLTQ1ZGVnKTtcbiAgICB9XG4gICAgMTAwJSB7IFxuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMSkgcm90YXRlKDApO1xuICAgIH1cbn1cblxuLyogTG9hZGluZyBzdGF0ZSAqL1xuLmxvYWRpbmcgaW5wdXQge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgOTBkZWcsXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQpIDAlLFxuICAgICAgICByZ2JhKDEyNCwgNTgsIDIzNywgMC4wNSkgNTAlLFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSAxMDAlXG4gICAgKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMCUgMTAwJTtcbiAgICBhbmltYXRpb246IGxvYWRpbmcgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgbG9hZGluZyB7XG4gICAgMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMDAlIDA7IH1cbiAgICAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwMCUgMDsgfVxufVxuXG4vKiBJY29uIHN1cHBvcnQgKi9cbi53aXRoSWNvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ud2l0aEljb24gaW5wdXQge1xuICAgIHBhZGRpbmctbGVmdDogNDRweDtcbn1cblxuLmlucHV0SWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4udGV4dElucHV0IGlucHV0OmZvY3VzIH4gLmlucHV0SWNvbiB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4vKiBBY3Rpb24gYnV0dG9uIHN1cHBvcnQgKi9cbi53aXRoQWN0aW9uIGlucHV0IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMDBweDtcbn1cblxuLmFjdGlvbkJ1dHRvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiA4cHg7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1wcmltYXJ5KSwgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnktaG92ZXIpXG4gICAgKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1pbnZlcnNlKTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uYWN0aW9uQnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlciksIFxuICAgICAgICB2YXIoLS1jb2xvci1wcmltYXJ5LWFjdGl2ZSlcbiAgICApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgxLjA1KTtcbn1cblxuLmFjdGlvbkJ1dHRvbjphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgwLjk1KTtcbn1cblxuLyogRGFyayBtb2RlIGFkanVzdG1lbnRzICovXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnRleHRJbnB1dCBpbnB1dCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpXG4gICAgKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAudGV4dElucHV0IGlucHV0OmhvdmVyOm5vdCg6Zm9jdXMpOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXItaG92ZXIpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnRleHRJbnB1dCBpbnB1dDpmb2N1cyB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTY3LCAxMzksIDI1MCwgMC4xKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5pbnB1dEVycm9yIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgcmdiYSgyNDQsIDYzLCA5NCwgMC4xKSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICkgIWltcG9ydGFudDtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5pbnB1dEljb24ge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5KTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC50ZXh0SW5wdXQgaW5wdXQ6Zm9jdXMgfiAuaW5wdXRJY29uIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG59XG5cbi8qIE1vYmlsZSBvcHRpbWl6YXRpb25zICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAudGV4dElucHV0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgfVxuICAgIFxuICAgIC50ZXh0SW5wdXQgbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy14cyk7XG4gICAgfVxuICAgIFxuICAgIC50ZXh0SW5wdXQgaW5wdXQge1xuICAgICAgICBtaW4taGVpZ2h0OiA0OHB4O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4OyAvKiBQcmV2ZW50cyBpT1Mgem9vbSAqL1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIH1cbiAgICBcbiAgICAud2l0aEljb24gaW5wdXQge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDQ4cHg7XG4gICAgfVxuICAgIFxuICAgIC5pbnB1dEljb24ge1xuICAgICAgICBsZWZ0OiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICAgIGhlaWdodDogMjRweDtcbiAgICB9XG4gICAgXG4gICAgLmVycm9yTWVzc2FnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgfVxufVxuXG4vKiBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gICAgLnRleHRJbnB1dCBpbnB1dCB7XG4gICAgICAgIGJvcmRlci13aWR0aDogM3B4O1xuICAgIH1cbiAgICBcbiAgICAudGV4dElucHV0IGlucHV0OmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgIH1cbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgLnRleHRJbnB1dCBpbnB1dCxcbiAgICAuaW5wdXRJY29uLFxuICAgIC5lcnJvck1lc3NhZ2Uge1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxufVxuXG4vKiBBdXRvZmlsbCBzdHlsZXMgKi9cbi50ZXh0SW5wdXQgaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbCxcbi50ZXh0SW5wdXQgaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbDpob3Zlcixcbi50ZXh0SW5wdXQgaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbDpmb2N1cyB7XG4gICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDBweCAxMDAwcHggdmFyKC0tY29sb3ItYmFja2dyb3VuZCkgaW5zZXQ7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciA1MDAwcyBlYXNlLWluLW91dCAwcztcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn1cblxuLyogU2VhcmNoIGlucHV0IHNwZWNpZmljICovXG4udGV4dElucHV0IGlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24sXG4udGV4dElucHV0IGlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG4udGV4dElucHV0IGlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLFxuLnRleHRJbnB1dCBpbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb24ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn0iXX0= */";
94
+ var styles$i = {"textInput":"TextInput-module_textInput__b2LVM","required":"TextInput-module_required__7uLiM","inputError":"TextInput-module_inputError__QD0a-","errorMessage":"TextInput-module_errorMessage__nIDoQ","success":"TextInput-module_success__KbSS3","loading":"TextInput-module_loading__qXaca","withIcon":"TextInput-module_withIcon__-8swm","inputIcon":"TextInput-module_inputIcon__B4czN","withAction":"TextInput-module_withAction__JD3ku","actionButton":"TextInput-module_actionButton__zFJel"};
95
+ styleInject(css_248z$k);
96
+
97
+ /**
98
+ * TextInput component - A versatile text input field with label and error handling
99
+ *
100
+ * @component
101
+ * @description
102
+ * A foundational input component that provides a clean, accessible text field with
103
+ * built-in support for labels, validation errors, and various HTML5 input types.
104
+ * Follows design system tokens for consistent theming across light/dark modes.
105
+ *
106
+ * @example
107
+ * // Basic usage
108
+ * <TextInput
109
+ * label="Email Address"
110
+ * value={email}
111
+ * onChange={setEmail}
112
+ * type="email"
113
+ * placeholder="Enter your email"
114
+ * />
115
+ *
116
+ * @example
117
+ * // With validation error
118
+ * <TextInput
119
+ * label="Password"
120
+ * value={password}
121
+ * onChange={setPassword}
122
+ * type="password"
123
+ * error="Password must be at least 8 characters"
124
+ * required
125
+ * />
126
+ */
127
+ function TextInput({ label, value, onChange, type = "text", onFocus, onBlur, placeholder, error, required, disabled = false, success = false, loading = false, icon, actionButton, maxLength, autoComplete }) {
128
+ const inputId = `input-${Math.random().toString(36).substr(2, 9)}`;
129
+ const getContainerClassName = () => {
130
+ const classes = [styles$i.textInput];
131
+ if (success)
132
+ classes.push(styles$i.success);
133
+ if (loading)
134
+ classes.push(styles$i.loading);
135
+ if (icon)
136
+ classes.push(styles$i.withIcon);
137
+ if (actionButton)
138
+ classes.push(styles$i.withAction);
139
+ return classes.join(' ');
140
+ };
141
+ return (jsxs("div", { className: getContainerClassName(), children: [jsxs("label", { htmlFor: inputId, children: [label, required && jsx("span", { className: styles$i.required, children: "*" })] }), jsxs("div", { style: { position: 'relative' }, children: [icon && jsx("div", { className: styles$i.inputIcon, children: icon }), jsx("input", { id: inputId, type: type, value: value, onChange: (e) => onChange(e.target.value), onFocus: onFocus, onBlur: onBlur, placeholder: placeholder, className: error ? styles$i.inputError : '', "aria-invalid": !!error, "aria-describedby": error ? `${inputId}-error` : undefined, disabled: disabled || loading, maxLength: maxLength, autoComplete: autoComplete }), actionButton && (jsx("button", { type: "button", className: styles$i.actionButton, onClick: actionButton.onClick, disabled: disabled || loading, children: actionButton.label }))] }), error && (jsx("span", { id: `${inputId}-error`, className: styles$i.errorMessage, children: error }))] }));
142
+ }
143
+
144
+ var css_248z$j = ".ArrayInput-module_arrayInput__FNrd2{margin-bottom:var(--spacing-lg)}.ArrayInput-module_arrayInputLabel__7Rpkj{color:var(--color-text);display:block;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);margin-bottom:var(--spacing-md)}.ArrayInput-module_arrayInputItem__eSH-6{align-items:flex-start;background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background));border:1px solid var(--color-border);border-radius:var(--radius-lg);display:flex;flex-direction:row;gap:var(--spacing-sm);margin-bottom:var(--spacing-md);min-width:0;padding:var(--spacing-md);transition:all var(--transition-base);width:100%}.ArrayInput-module_arrayInputItem__eSH-6:hover{border-color:var(--color-border-hover);box-shadow:var(--shadow-sm)}.ArrayInput-module_inputWrapper__i-MB-{display:flex;flex:1 1 auto;min-width:0}.ArrayInput-module_input__792ru{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-size:var(--font-size-base);padding:var(--spacing-sm) var(--spacing-md);transition:all var(--transition-base);width:100%}.ArrayInput-module_input__792ru:hover{border-color:var(--color-border-hover)}.ArrayInput-module_input__792ru:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(124,58,237,.1);outline:none}.ArrayInput-module_input__792ru::placeholder{color:var(--color-text-secondary);opacity:.6}.ArrayInput-module_complexItem__iX3v6{align-items:stretch;flex-direction:column;gap:var(--spacing-md)}.ArrayInput-module_fieldsWrapper__fzqvn{display:flex;flex:1;flex-wrap:wrap;gap:var(--spacing-md)}.ArrayInput-module_fieldsWrapper__fzqvn>*{flex:1;min-width:200px}.ArrayInput-module_arrayInputItem__eSH-6 button{flex-shrink:0;white-space:nowrap}.ArrayInput-module_complexItem__iX3v6 button{align-self:flex-end}@media (max-width:768px){.ArrayInput-module_fieldsWrapper__fzqvn{flex-direction:column}.ArrayInput-module_fieldsWrapper__fzqvn>*{min-width:100%}.ArrayInput-module_complexItem__iX3v6 button{align-self:stretch}}[data-theme=dark] .ArrayInput-module_arrayInputItem__eSH-6{background:linear-gradient(135deg,var(--color-background-tertiary),var(--color-background-secondary))}[data-theme=dark] .ArrayInput-module_input__792ru{background:var(--color-background);border-color:var(--color-border)}[data-theme=dark] .ArrayInput-module_input__792ru:focus{box-shadow:0 0 0 3px rgba(167,139,250,.1)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFycmF5SW5wdXQubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FDSSwrQkFDSixDQUVBLDBDQUlJLHVCQUF3QixDQUh4QixhQUFjLENBSWQsNkJBQThCLENBRjlCLHVDQUF3QyxDQUd4Qyx5Q0FBMEMsQ0FKMUMsK0JBS0osQ0FFQSx5Q0FLSSxzQkFBdUIsQ0FFdkIsNEZBR0MsQ0FDRCxvQ0FBcUMsQ0FDckMsOEJBQStCLENBWC9CLFlBQWEsQ0FDYixrQkFBbUIsQ0FDbkIscUJBQXNCLENBQ3RCLCtCQUFnQyxDQVdoQyxXQUFZLENBVFoseUJBQTBCLENBTzFCLHFDQUFzQyxDQUN0QyxVQUVKLENBRUEsK0NBRUksc0NBQXVDLENBRHZDLDJCQUVKLENBR0EsdUNBR0ksWUFBYSxDQUZiLGFBQWMsQ0FDZCxXQUVKLENBRUEsZ0NBS0ksa0NBQW1DLENBRm5DLG9DQUFxQyxDQUNyQyw4QkFBK0IsQ0FFL0IsdUJBQXdCLENBQ3hCLCtCQUFnQyxDQUxoQywyQ0FBNEMsQ0FNNUMscUNBQXNDLENBUHRDLFVBUUosQ0FFQSxzQ0FDSSxzQ0FDSixDQUVBLHNDQUVJLGlDQUFrQyxDQUNsQyx3Q0FBNkMsQ0FGN0MsWUFHSixDQUVBLDZDQUNJLGlDQUFrQyxDQUNsQyxVQUNKLENBR0Esc0NBRUksbUJBQW9CLENBRHBCLHFCQUFzQixDQUV0QixxQkFDSixDQUVBLHdDQUNJLFlBQWEsQ0FFYixNQUFPLENBQ1AsY0FBZSxDQUZmLHFCQUdKLENBRUEsMENBQ0ksTUFBTyxDQUNQLGVBQ0osQ0FHQSxnREFDSSxhQUFjLENBQ2Qsa0JBQ0osQ0FHQSw2Q0FDSSxtQkFDSixDQUdBLHlCQUNJLHdDQUNJLHFCQUNKLENBRUEsMENBQ0ksY0FDSixDQUVBLDZDQUNJLGtCQUNKLENBQ0osQ0FHQSwyREFDSSxxR0FJSixDQUVBLGtEQUNJLGtDQUFtQyxDQUNuQyxnQ0FDSixDQUVBLHdEQUNJLHlDQUNKIiwiZmlsZSI6IkFycmF5SW5wdXQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5hcnJheUlucHV0IHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLWxnKTtcbn1cblxuLmFycmF5SW5wdXRMYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1sZXR0ZXItc3BhY2luZy13aWRlKTtcbn1cblxuLmFycmF5SW5wdXRJdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZ2FwOiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZClcbiAgICApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5hcnJheUlucHV0SXRlbTpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlci1ob3Zlcik7XG59XG5cbi8qIFNpbXBsZSB2YXJpYW50IHN0eWxpbmcgKi9cbi5pbnB1dFdyYXBwZXIge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xufVxuXG4uaW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5pbnB1dDpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXItaG92ZXIpO1xufVxuXG4uaW5wdXQ6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgxMjQsIDU4LCAyMzcsIDAuMSk7XG59XG5cbi5pbnB1dDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgb3BhY2l0eTogMC42O1xufVxuXG4vKiBDb21wbGV4IHZhcmlhbnQgc3R5bGluZyAqL1xuLmNvbXBsZXhJdGVtIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy1tZCk7XG59XG5cbi5maWVsZHNXcmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgZmxleDogMTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5maWVsZHNXcmFwcGVyID4gKiB7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDIwMHB4O1xufVxuXG4vKiBCdXR0b24gc3R5bGVzIC0gZW5zdXJlIG5vIG92ZXJsYXAgKi9cbi5hcnJheUlucHV0SXRlbSBidXR0b24ge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8qIEJ1dHRvbiBhbGlnbm1lbnQgZm9yIGNvbXBsZXggaXRlbXMgKi9cbi5jb21wbGV4SXRlbSBidXR0b24ge1xuICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xufVxuXG4vKiBSZXNwb25zaXZlIGRlc2lnbiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgLmZpZWxkc1dyYXBwZXIge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIH1cbiAgICBcbiAgICAuZmllbGRzV3JhcHBlciA+ICoge1xuICAgICAgICBtaW4td2lkdGg6IDEwMCU7XG4gICAgfVxuICAgIFxuICAgIC5jb21wbGV4SXRlbSBidXR0b24ge1xuICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgIH1cbn1cblxuLyogRGFyayBtb2RlIGFkanVzdG1lbnRzICovXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmFycmF5SW5wdXRJdGVtIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSksIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSlcbiAgICApO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmlucHV0IHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuaW5wdXQ6Zm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDE2NywgMTM5LCAyNTAsIDAuMSk7XG59Il19 */";
145
+ var styles$h = {"arrayInput":"ArrayInput-module_arrayInput__FNrd2","arrayInputLabel":"ArrayInput-module_arrayInputLabel__7Rpkj","arrayInputItem":"ArrayInput-module_arrayInputItem__eSH-6","inputWrapper":"ArrayInput-module_inputWrapper__i-MB-","input":"ArrayInput-module_input__792ru","complexItem":"ArrayInput-module_complexItem__iX3v6","fieldsWrapper":"ArrayInput-module_fieldsWrapper__fzqvn"};
146
+ styleInject(css_248z$j);
147
+
148
+ /**
149
+ * ArrayInput component - Versatile dynamic list manager
150
+ *
151
+ * @component
152
+ * @description
153
+ * A flexible component that can handle both simple string arrays and complex object arrays.
154
+ * Users can add, remove, and edit items dynamically. Supports custom field configurations
155
+ * for complex data structures.
156
+ *
157
+ * @example
158
+ * // Simple string array
159
+ * <ArrayInput
160
+ * label="Tags"
161
+ * values={tags}
162
+ * onChange={setTags}
163
+ * placeholder="Enter tag"
164
+ * />
165
+ *
166
+ * @example
167
+ * // Complex object array
168
+ * <ArrayInput
169
+ * type="complex"
170
+ * label="Social Links"
171
+ * values={links}
172
+ * onChange={setLinks}
173
+ * fields={[
174
+ * { name: 'label', label: 'Label', placeholder: 'GitHub' },
175
+ * { name: 'url', label: 'URL', type: 'url', placeholder: 'https://github.com/...' }
176
+ * ]}
177
+ * />
178
+ */
179
+ function ArrayInput(props) {
180
+ if (props.type === 'complex') {
181
+ return jsx(ComplexArrayInput, { ...props });
182
+ }
183
+ return jsx(SimpleArrayInput, { ...props });
184
+ }
185
+ // Simple string array implementation
186
+ function SimpleArrayInput({ label, values, onChange, placeholder }) {
187
+ const handleChange = (index, value) => {
188
+ const newValues = [...values];
189
+ newValues[index] = value;
190
+ onChange(newValues);
191
+ };
192
+ const handleAdd = () => {
193
+ onChange([...values, '']);
194
+ };
195
+ const handleRemove = (index) => {
196
+ const newValues = values.filter((_, i) => i !== index);
197
+ onChange(newValues);
198
+ };
199
+ return (jsxs("div", { className: styles$h.arrayInput, children: [jsx("h3", { className: styles$h.arrayInputLabel, children: label }), values.map((value, index) => (jsxs("div", { className: styles$h.arrayInputItem, children: [jsx("div", { className: styles$h.inputWrapper, children: jsx("input", { type: "text", value: value, onChange: (e) => handleChange(index, e.target.value), placeholder: placeholder, className: styles$h.input }) }), jsx(Button, { variant: "ghost", size: "small", onClick: () => handleRemove(index), children: "Remove" })] }, `item-${index}`))), jsxs(Button, { variant: "primary", size: "small", onClick: handleAdd, children: ["Add ", label] })] }));
200
+ }
201
+ // Complex object array implementation
202
+ function ComplexArrayInput({ label, values, onChange, fields, getKey }) {
203
+ const handleChange = (index, field, value) => {
204
+ const newValues = [...values];
205
+ newValues[index] = { ...newValues[index], [field]: value };
206
+ onChange(newValues);
207
+ };
208
+ const handleAdd = () => {
209
+ const newItem = fields.reduce((acc, field) => {
210
+ return { ...acc, [field.name]: '' };
211
+ }, {});
212
+ onChange([...values, newItem]);
213
+ };
214
+ const handleRemove = (index) => {
215
+ const newValues = values.filter((_, i) => i !== index);
216
+ onChange(newValues);
217
+ };
218
+ const generateKey = (item, index) => {
219
+ if (getKey)
220
+ return getKey(item, index);
221
+ // Generate key from all field values
222
+ return fields.map(f => item[f.name] || '').join('-') + `-${index}`;
223
+ };
224
+ return (jsxs("div", { className: styles$h.arrayInput, children: [jsx("h3", { className: styles$h.arrayInputLabel, children: label }), values.map((value, index) => (jsxs("div", { className: `${styles$h.arrayInputItem} ${fields.length > 1 ? styles$h.complexItem : ''}`, children: [jsx("div", { className: styles$h.fieldsWrapper, children: fields.map((field) => (jsx(TextInput, { value: value[field.name] || '', onChange: (newValue) => handleChange(index, field.name, newValue), label: field.label, type: field.type, placeholder: field.placeholder }, field.name))) }), jsx(Button, { variant: "ghost", size: "small", onClick: () => handleRemove(index), children: "Remove" })] }, generateKey(value, index)))), jsxs(Button, { variant: "primary", size: "small", onClick: handleAdd, children: ["Add ", label] })] }));
225
+ }
226
+
227
+ var css_248z$i = ".Checkbox-module_checkboxLabel__4tBVg{align-items:center;cursor:pointer;display:inline-flex;gap:var(--spacing-sm);padding:var(--spacing-xs) 0;position:relative;transition:all var(--transition-base);user-select:none}.Checkbox-module_checkboxLabel__4tBVg:hover .Checkbox-module_checkbox__BbJul{border-color:var(--color-primary);box-shadow:0 0 0 4px rgba(124,58,237,.1);transform:scale(1.05)}.Checkbox-module_checkbox__BbJul{align-items:center;appearance:none;-webkit-appearance:none;background:linear-gradient(135deg,var(--color-background),var(--color-background-secondary));border:2px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;display:flex;flex-shrink:0;height:20px;justify-content:center;position:relative;transition:all var(--transition-base);width:20px}.Checkbox-module_checkbox__BbJul:checked{animation:Checkbox-module_checkboxBounce__Ohdoj .4s cubic-bezier(.68,-.55,.265,1.55);background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));border-color:var(--color-primary)}.Checkbox-module_checkbox__BbJul:checked:after{animation:Checkbox-module_checkmark__VCRvy .3s cubic-bezier(.68,-.55,.265,1.55) .1s forwards;border:solid var(--color-text-inverse);border-width:0 2.5px 2.5px 0;content:\"\";height:9px;left:50%;position:absolute;top:50%;transform:translate(-50%,-60%) rotate(45deg) scale(0);width:5px}@keyframes Checkbox-module_checkboxBounce__Ohdoj{0%{transform:scale(1)}30%{transform:scale(.9)}60%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes Checkbox-module_checkmark__VCRvy{0%{transform:translate(-50%,-60%) rotate(45deg) scale(0)}to{transform:translate(-50%,-60%) rotate(45deg) scale(1)}}.Checkbox-module_checkbox__BbJul:focus-visible{box-shadow:0 0 0 3px rgba(124,58,237,.2);outline:none}.Checkbox-module_checkbox__BbJul:disabled{background:var(--color-background-tertiary);cursor:not-allowed;opacity:.5}.Checkbox-module_checkboxLabel__4tBVg:has(.Checkbox-module_checkbox__BbJul:disabled){cursor:not-allowed;opacity:.6}.Checkbox-module_checkboxText__oJsc9{color:var(--color-text);font-size:var(--font-size-base);line-height:var(--line-height-normal);transition:color var(--transition-base)}.Checkbox-module_checkbox__BbJul:indeterminate{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));border-color:var(--color-primary)}.Checkbox-module_checkbox__BbJul:indeterminate:after{animation:Checkbox-module_indeterminate__H5-tj .3s cubic-bezier(.68,-.55,.265,1.55) forwards;background:var(--color-text-inverse);border:none;content:\"\";height:2px;position:absolute;transform:none;width:10px}@keyframes Checkbox-module_indeterminate__H5-tj{0%{width:0}to{width:10px}}[data-theme=dark] .Checkbox-module_checkbox__BbJul{background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));border-color:var(--color-border)}[data-theme=dark] .Checkbox-module_checkbox__BbJul:checked{background:linear-gradient(135deg,var(--color-primary-light),var(--color-primary));border-color:var(--color-primary-light)}[data-theme=dark] .Checkbox-module_checkboxLabel__4tBVg:hover .Checkbox-module_checkbox__BbJul{border-color:var(--color-primary-light);box-shadow:0 0 0 4px rgba(167,139,250,.1)}@media (max-width:768px){.Checkbox-module_checkbox__BbJul{height:22px;min-height:22px;min-width:22px;width:22px}.Checkbox-module_checkbox__BbJul:checked:after{height:10px;width:6px}.Checkbox-module_checkboxLabel__4tBVg{gap:var(--spacing-md)}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoZWNrYm94Lm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0NBRUksa0JBQW1CLENBQ25CLGNBQWUsQ0FGZixtQkFBb0IsQ0FLcEIscUJBQXNCLENBQ3RCLDJCQUE0QixDQUY1QixpQkFBa0IsQ0FHbEIscUNBQXNDLENBSnRDLGdCQUtKLENBRUEsNkVBQ0ksaUNBQWtDLENBRWxDLHdDQUE2QyxDQUQ3QyxxQkFFSixDQUVBLGlDQWdCSSxrQkFBbUIsQ0FmbkIsZUFBZ0IsQ0FDaEIsdUJBQXdCLENBUXhCLDRGQUdDLENBUkQsb0NBQXFDLENBQ3JDLDhCQUErQixDQUMvQixjQUFlLENBUWYsWUFBYSxDQURiLGFBQWMsQ0FWZCxXQUFZLENBYVosc0JBQXVCLENBVHZCLGlCQUFrQixDQUNsQixxQ0FBc0MsQ0FOdEMsVUFlSixDQUVBLHlDQU1JLG9GQUFxRSxDQUxyRSxrRkFHQyxDQUNELGlDQUVKLENBRUEsK0NBVUksNEZBQThFLENBSDlFLHNDQUF1QyxDQUN2Qyw0QkFBNkIsQ0FQN0IsVUFBVyxDQUtYLFVBQVcsQ0FIWCxRQUFTLENBRFQsaUJBQWtCLENBRWxCLE9BQVEsQ0FLUixxREFBdUQsQ0FKdkQsU0FNSixDQUVBLGlEQUNJLEdBQUssa0JBQXFCLENBQzFCLElBQU0sbUJBQXVCLENBQzdCLElBQU0scUJBQXdCLENBQzlCLEdBQU8sa0JBQXFCLENBQ2hDLENBRUEsNENBQ0ksR0FDSSxxREFDSixDQUNBLEdBQ0kscURBQ0osQ0FDSixDQUVBLCtDQUVJLHdDQUE2QyxDQUQ3QyxZQUVKLENBRUEsMENBR0ksMkNBQTRDLENBRDVDLGtCQUFtQixDQURuQixVQUdKLENBRUEscUZBQ0ksa0JBQW1CLENBQ25CLFVBQ0osQ0FFQSxxQ0FFSSx1QkFBd0IsQ0FEeEIsK0JBQWdDLENBRWhDLHFDQUFzQyxDQUN0Qyx1Q0FDSixDQUdBLCtDQUNJLGtGQUdDLENBQ0QsaUNBQ0osQ0FFQSxxREFRSSw0RkFBNkUsQ0FIN0Usb0NBQXFDLENBQ3JDLFdBQVksQ0FMWixVQUFXLENBR1gsVUFBVyxDQUZYLGlCQUFrQixDQUtsQixjQUFlLENBSmYsVUFNSixDQUVBLGdEQUNJLEdBQ0ksT0FDSixDQUNBLEdBQ0ksVUFDSixDQUNKLENBR0EsbURBQ0kscUdBR0MsQ0FDRCxnQ0FDSixDQUVBLDJEQUNJLGtGQUdDLENBQ0QsdUNBQ0osQ0FFQSwrRkFDSSx1Q0FBd0MsQ0FDeEMseUNBQ0osQ0FHQSx5QkFDSSxpQ0FFSSxXQUFZLENBRVosZUFBZ0IsQ0FEaEIsY0FBZSxDQUZmLFVBSUosQ0FFQSwrQ0FFSSxXQUFZLENBRFosU0FFSixDQUVBLHNDQUNJLHFCQUNKLENBQ0oiLCJmaWxlIjoiQ2hlY2tib3gubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jaGVja2JveExhYmVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZ2FwOiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhzKSAwO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uY2hlY2tib3hMYWJlbDpob3ZlciAuY2hlY2tib3gge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCA0cHggcmdiYSgxMjQsIDU4LCAyMzcsIDAuMSk7XG59XG5cbi5jaGVja2JveCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICk7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uY2hlY2tib3g6Y2hlY2tlZCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlcilcbiAgICApO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYW5pbWF0aW9uOiBjaGVja2JveEJvdW5jZSAwLjRzIGN1YmljLWJlemllcigwLjY4LCAtMC41NSwgMC4yNjUsIDEuNTUpO1xufVxuXG4uY2hlY2tib3g6Y2hlY2tlZDo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdG9wOiA1MCU7XG4gICAgd2lkdGg6IDVweDtcbiAgICBoZWlnaHQ6IDlweDtcbiAgICBib3JkZXI6IHNvbGlkIHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG4gICAgYm9yZGVyLXdpZHRoOiAwIDIuNXB4IDIuNXB4IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTYwJSkgcm90YXRlKDQ1ZGVnKSBzY2FsZSgwKTtcbiAgICBhbmltYXRpb246IGNoZWNrbWFyayAwLjNzIDAuMXMgY3ViaWMtYmV6aWVyKDAuNjgsIC0wLjU1LCAwLjI2NSwgMS41NSkgZm9yd2FyZHM7XG59XG5cbkBrZXlmcmFtZXMgY2hlY2tib3hCb3VuY2Uge1xuICAgIDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxuICAgIDMwJSB7IHRyYW5zZm9ybTogc2NhbGUoMC45KTsgfVxuICAgIDYwJSB7IHRyYW5zZm9ybTogc2NhbGUoMS4xNSk7IH1cbiAgICAxMDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxufVxuXG5Aa2V5ZnJhbWVzIGNoZWNrbWFyayB7XG4gICAgMCUgeyBcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTYwJSkgcm90YXRlKDQ1ZGVnKSBzY2FsZSgwKTtcbiAgICB9XG4gICAgMTAwJSB7IFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNjAlKSByb3RhdGUoNDVkZWcpIHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLmNoZWNrYm94OmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTI0LCA1OCwgMjM3LCAwLjIpO1xufVxuXG4uY2hlY2tib3g6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpO1xufVxuXG4uY2hlY2tib3hMYWJlbDpoYXMoLmNoZWNrYm94OmRpc2FibGVkKSB7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICBvcGFjaXR5OiAwLjY7XG59XG5cbi5jaGVja2JveFRleHQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtbm9ybWFsKTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4vKiBJbmRldGVybWluYXRlIHN0YXRlICovXG4uY2hlY2tib3g6aW5kZXRlcm1pbmF0ZSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlcilcbiAgICApO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG59XG5cbi5jaGVja2JveDppbmRldGVybWluYXRlOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICBhbmltYXRpb246IGluZGV0ZXJtaW5hdGUgMC4zcyBjdWJpYy1iZXppZXIoMC42OCwgLTAuNTUsIDAuMjY1LCAxLjU1KSBmb3J3YXJkcztcbn1cblxuQGtleWZyYW1lcyBpbmRldGVybWluYXRlIHtcbiAgICAwJSB7IFxuICAgICAgICB3aWR0aDogMDtcbiAgICB9XG4gICAgMTAwJSB7IFxuICAgICAgICB3aWR0aDogMTBweDtcbiAgICB9XG59XG5cbi8qIERhcmsgbW9kZSBhZGp1c3RtZW50cyAqL1xuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5jaGVja2JveCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpXG4gICAgKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuY2hlY2tib3g6Y2hlY2tlZCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHQpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeSlcbiAgICApO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuY2hlY2tib3hMYWJlbDpob3ZlciAuY2hlY2tib3gge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgNHB4IHJnYmEoMTY3LCAxMzksIDI1MCwgMC4xKTtcbn1cblxuLyogTW9iaWxlIGFkanVzdG1lbnRzICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAuY2hlY2tib3gge1xuICAgICAgICB3aWR0aDogMjJweDtcbiAgICAgICAgaGVpZ2h0OiAyMnB4O1xuICAgICAgICBtaW4td2lkdGg6IDIycHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIycHg7XG4gICAgfVxuICAgIFxuICAgIC5jaGVja2JveDpjaGVja2VkOjphZnRlciB7XG4gICAgICAgIHdpZHRoOiA2cHg7XG4gICAgICAgIGhlaWdodDogMTBweDtcbiAgICB9XG4gICAgXG4gICAgLmNoZWNrYm94TGFiZWwge1xuICAgICAgICBnYXA6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIH1cbn0gIl19 */";
228
+ var styles$g = {"checkboxLabel":"Checkbox-module_checkboxLabel__4tBVg","checkbox":"Checkbox-module_checkbox__BbJul","checkboxText":"Checkbox-module_checkboxText__oJsc9"};
229
+ styleInject(css_248z$i);
230
+
231
+ /**
232
+ * Checkbox component - Modern interactive checkbox with animations
233
+ *
234
+ * @component
235
+ * @description
236
+ * A customizable checkbox component with smooth animations, hover effects,
237
+ * and support for checked, unchecked, and indeterminate states. Features
238
+ * gradient backgrounds, bounce animations, and accessible focus states.
239
+ *
240
+ * @example
241
+ * // Basic usage
242
+ * <Checkbox
243
+ * checked={isChecked}
244
+ * onChange={setIsChecked}
245
+ * label="Accept terms and conditions"
246
+ * />
247
+ *
248
+ * @example
249
+ * // Indeterminate state
250
+ * <Checkbox
251
+ * checked={false}
252
+ * indeterminate={true}
253
+ * onChange={handleChange}
254
+ * label="Select all"
255
+ * />
256
+ *
257
+ * @example
258
+ * // Disabled state
259
+ * <Checkbox
260
+ * checked={true}
261
+ * onChange={handleChange}
262
+ * label="Premium feature"
263
+ * disabled={true}
264
+ * />
265
+ */
266
+ const Checkbox = ({ checked, onChange, label, disabled = false, indeterminate = false, id, name, value }) => {
267
+ const checkboxRef = useRef(null);
268
+ useEffect(() => {
269
+ if (checkboxRef.current) {
270
+ checkboxRef.current.indeterminate = indeterminate;
271
+ }
272
+ }, [indeterminate]);
273
+ return (jsxs("label", { className: styles$g.checkboxLabel, children: [jsx("input", { ref: checkboxRef, type: "checkbox", checked: checked, onChange: (e) => onChange(e.target.checked), className: styles$g.checkbox, disabled: disabled, id: id, name: name, value: value, "aria-checked": indeterminate ? 'mixed' : checked }), label && jsx("span", { className: styles$g.checkboxText, children: label })] }));
274
+ };
275
+
276
+ var DefaultContext = {
277
+ color: undefined,
278
+ size: undefined,
279
+ className: undefined,
280
+ style: undefined,
281
+ attr: undefined
282
+ };
283
+ var IconContext = React.createContext && /*#__PURE__*/React.createContext(DefaultContext);
284
+
285
+ var _excluded = ["attr", "size", "title"];
286
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
287
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }
288
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
289
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
290
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
291
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
292
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
293
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
294
+ function Tree2Element(tree) {
295
+ return tree && tree.map((node, i) => /*#__PURE__*/React.createElement(node.tag, _objectSpread({
296
+ key: i
297
+ }, node.attr), Tree2Element(node.child)));
298
+ }
299
+ function GenIcon(data) {
300
+ return props => /*#__PURE__*/React.createElement(IconBase, _extends({
301
+ attr: _objectSpread({}, data.attr)
302
+ }, props), Tree2Element(data.child));
303
+ }
304
+ function IconBase(props) {
305
+ var elem = conf => {
306
+ var {
307
+ attr,
308
+ size,
309
+ title
310
+ } = props,
311
+ svgProps = _objectWithoutProperties(props, _excluded);
312
+ var computedSize = size || conf.size || "1em";
313
+ var className;
314
+ if (conf.className) className = conf.className;
315
+ if (props.className) className = (className ? className + " " : "") + props.className;
316
+ return /*#__PURE__*/React.createElement("svg", _extends({
317
+ stroke: "currentColor",
318
+ fill: "currentColor",
319
+ strokeWidth: "0"
320
+ }, conf.attr, attr, svgProps, {
321
+ className: className,
322
+ style: _objectSpread(_objectSpread({
323
+ color: props.color || conf.color
324
+ }, conf.style), props.style),
325
+ height: computedSize,
326
+ width: computedSize,
327
+ xmlns: "http://www.w3.org/2000/svg"
328
+ }), title && /*#__PURE__*/React.createElement("title", null, title), props.children);
329
+ };
330
+ return IconContext !== undefined ? /*#__PURE__*/React.createElement(IconContext.Consumer, null, conf => elem(conf)) : elem(DefaultContext);
331
+ }
332
+
333
+ // THIS FILE IS AUTO GENERATED
334
+ function FiBook (props) {
335
+ return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M4 19.5A2.5 2.5 0 0 1 6.5 17H20"},"child":[]},{"tag":"path","attr":{"d":"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"},"child":[]}]})(props);
336
+ }function FiCalendar (props) {
337
+ return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"rect","attr":{"x":"3","y":"4","width":"18","height":"18","rx":"2","ry":"2"},"child":[]},{"tag":"line","attr":{"x1":"16","y1":"2","x2":"16","y2":"6"},"child":[]},{"tag":"line","attr":{"x1":"8","y1":"2","x2":"8","y2":"6"},"child":[]},{"tag":"line","attr":{"x1":"3","y1":"10","x2":"21","y2":"10"},"child":[]}]})(props);
338
+ }function FiCheck (props) {
339
+ return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"polyline","attr":{"points":"20 6 9 17 4 12"},"child":[]}]})(props);
340
+ }function FiChevronDown (props) {
341
+ return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"polyline","attr":{"points":"6 9 12 15 18 9"},"child":[]}]})(props);
342
+ }function FiClock (props) {
343
+ return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"circle","attr":{"cx":"12","cy":"12","r":"10"},"child":[]},{"tag":"polyline","attr":{"points":"12 6 12 12 16 14"},"child":[]}]})(props);
344
+ }function FiFolder (props) {
345
+ return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"},"child":[]}]})(props);
346
+ }function FiMenu (props) {
347
+ return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"line","attr":{"x1":"3","y1":"12","x2":"21","y2":"12"},"child":[]},{"tag":"line","attr":{"x1":"3","y1":"6","x2":"21","y2":"6"},"child":[]},{"tag":"line","attr":{"x1":"3","y1":"18","x2":"21","y2":"18"},"child":[]}]})(props);
348
+ }function FiMessageSquare (props) {
349
+ return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"},"child":[]}]})(props);
350
+ }function FiMoon (props) {
351
+ return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"},"child":[]}]})(props);
352
+ }function FiSearch (props) {
353
+ return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"circle","attr":{"cx":"11","cy":"11","r":"8"},"child":[]},{"tag":"line","attr":{"x1":"21","y1":"21","x2":"16.65","y2":"16.65"},"child":[]}]})(props);
354
+ }function FiSun (props) {
355
+ return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"circle","attr":{"cx":"12","cy":"12","r":"5"},"child":[]},{"tag":"line","attr":{"x1":"12","y1":"1","x2":"12","y2":"3"},"child":[]},{"tag":"line","attr":{"x1":"12","y1":"21","x2":"12","y2":"23"},"child":[]},{"tag":"line","attr":{"x1":"4.22","y1":"4.22","x2":"5.64","y2":"5.64"},"child":[]},{"tag":"line","attr":{"x1":"18.36","y1":"18.36","x2":"19.78","y2":"19.78"},"child":[]},{"tag":"line","attr":{"x1":"1","y1":"12","x2":"3","y2":"12"},"child":[]},{"tag":"line","attr":{"x1":"21","y1":"12","x2":"23","y2":"12"},"child":[]},{"tag":"line","attr":{"x1":"4.22","y1":"19.78","x2":"5.64","y2":"18.36"},"child":[]},{"tag":"line","attr":{"x1":"18.36","y1":"5.64","x2":"19.78","y2":"4.22"},"child":[]}]})(props);
356
+ }function FiUserPlus (props) {
357
+ return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"},"child":[]},{"tag":"circle","attr":{"cx":"8.5","cy":"7","r":"4"},"child":[]},{"tag":"line","attr":{"x1":"20","y1":"8","x2":"20","y2":"14"},"child":[]},{"tag":"line","attr":{"x1":"23","y1":"11","x2":"17","y2":"11"},"child":[]}]})(props);
358
+ }function FiUsers (props) {
359
+ return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"},"child":[]},{"tag":"circle","attr":{"cx":"9","cy":"7","r":"4"},"child":[]},{"tag":"path","attr":{"d":"M23 21v-2a4 4 0 0 0-3-3.87"},"child":[]},{"tag":"path","attr":{"d":"M16 3.13a4 4 0 0 1 0 7.75"},"child":[]}]})(props);
360
+ }function FiX (props) {
361
+ return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"line","attr":{"x1":"18","y1":"6","x2":"6","y2":"18"},"child":[]},{"tag":"line","attr":{"x1":"6","y1":"6","x2":"18","y2":"18"},"child":[]}]})(props);
362
+ }
363
+
364
+ const formatDateToEuropean = (date) => {
365
+ if (!date)
366
+ return '';
367
+ const d = new Date(date);
368
+ if (isNaN(d.getTime()))
369
+ return '';
370
+ const day = d.getDate().toString().padStart(2, '0');
371
+ const month = (d.getMonth() + 1).toString().padStart(2, '0');
372
+ const year = d.getFullYear();
373
+ return `${day}/${month}/${year}`;
374
+ };
375
+ const parseEuropeanDate = (dateString) => {
376
+ if (!dateString)
377
+ return '';
378
+ const cleanDate = dateString.replace(/[^\d/]/g, '');
379
+ const parts = cleanDate.split('/');
380
+ if (parts.length === 3) {
381
+ const [day, month, year] = parts;
382
+ const fullYear = year.length === 2 ? `20${year}` : year;
383
+ const isoDate = `${fullYear}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;
384
+ const testDate = new Date(isoDate);
385
+ if (!isNaN(testDate.getTime())) {
386
+ return isoDate;
387
+ }
388
+ }
389
+ return '';
390
+ };
391
+
392
+ var css_248z$h = ".DateInput-module_dateInput__54VPD{margin-bottom:var(--spacing-lg);position:relative}.DateInput-module_label__yDdUw{color:var(--color-text);display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);margin-bottom:var(--spacing-sm);transition:color var(--transition-base)}.DateInput-module_inputWrapper__x-r1d{align-items:stretch;background:linear-gradient(135deg,var(--color-background),var(--color-background-secondary));border:2px solid var(--color-border);border-radius:var(--radius-lg);display:flex;overflow:hidden;position:relative;transition:all var(--transition-base)}.DateInput-module_inputWrapper__x-r1d:hover{border-color:var(--color-border-hover);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.DateInput-module_inputWrapper__x-r1d:focus-within{background:var(--color-background);border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(124,58,237,.1);transform:translateY(-2px)}.DateInput-module_textInput__ToOSX{background:transparent;border:none;color:var(--color-text);flex:1;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);letter-spacing:.05em;min-height:44px;outline:none;padding:var(--spacing-sm) var(--spacing-md)}.DateInput-module_textInput__ToOSX::placeholder{color:var(--color-text-secondary);font-family:inherit;opacity:.6}.DateInput-module_textInput__ToOSX:disabled{background:var(--color-background-tertiary);color:var(--color-text-tertiary);cursor:not-allowed;opacity:.6}.DateInput-module_calendarButton__JzDGD{align-items:center;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));border:none;border-left:1px solid rgba(124,58,237,.2);color:var(--color-text-inverse);cursor:pointer;display:flex;font-size:18px;justify-content:center;min-width:44px;outline:none;padding:0 var(--spacing-md);position:relative;transition:all var(--transition-base)}.DateInput-module_calendarButton__JzDGD:hover{background:linear-gradient(135deg,var(--color-primary-hover),var(--color-primary-active));filter:brightness(1.1)}.DateInput-module_calendarButton__JzDGD:active{transform:scale(.95)}.DateInput-module_calendarButton__JzDGD:focus-visible{box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.3)}.DateInput-module_calendarButton__JzDGD svg{display:block;height:20px;width:20px}.DateInput-module_inputWrapper__x-r1d:hover .DateInput-module_calendarButton__JzDGD svg{animation:DateInput-module_calendarPulse__-bPQQ .5s ease-in-out}@keyframes DateInput-module_calendarPulse__-bPQQ{0%,to{transform:scale(1) rotate(0deg)}50%{transform:scale(1.2) rotate(5deg)}}.DateInput-module_hiddenDateInput__IWNg3{height:1px;left:0;opacity:0;position:absolute;top:0;width:1px;z-index:-1}.DateInput-module_error__ieuPO .DateInput-module_inputWrapper__x-r1d{animation:DateInput-module_shake__I6OHO .3s cubic-bezier(.36,.07,.19,.97) both;background:linear-gradient(135deg,var(--color-error-bg),var(--color-background));border-color:var(--color-error)}.DateInput-module_error__ieuPO .DateInput-module_label__yDdUw{color:var(--color-error)}.DateInput-module_error__ieuPO .DateInput-module_inputWrapper__x-r1d:focus-within{box-shadow:0 0 0 3px rgba(244,63,94,.15)}@keyframes DateInput-module_shake__I6OHO{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(2px)}30%,50%,70%{transform:translateX(-3px)}40%,60%{transform:translateX(3px)}}.DateInput-module_success__rPA93 .DateInput-module_inputWrapper__x-r1d{border-color:var(--color-success)}.DateInput-module_success__rPA93 .DateInput-module_inputWrapper__x-r1d:after{animation:DateInput-module_checkIn__WfYdg .3s ease-out;color:var(--color-success);content:\"✓\";font-weight:700;position:absolute;right:calc(var(--spacing-md) + 44px);top:50%;transform:translateY(-50%)}@keyframes DateInput-module_checkIn__WfYdg{0%{opacity:0;transform:translateY(-50%) scale(0)}to{opacity:1;transform:translateY(-50%) scale(1)}}[data-theme=dark] .DateInput-module_inputWrapper__x-r1d{background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));border-color:var(--color-border)}[data-theme=dark] .DateInput-module_inputWrapper__x-r1d:focus-within{background:var(--color-background-secondary);border-color:var(--color-primary-light);box-shadow:0 0 0 3px rgba(167,139,250,.1)}[data-theme=dark] .DateInput-module_calendarButton__JzDGD{background:linear-gradient(135deg,var(--color-primary-light),var(--color-primary));border-left-color:rgba(167,139,250,.2)}[data-theme=dark] .DateInput-module_calendarButton__JzDGD:hover{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover))}@media (max-width:768px){.DateInput-module_dateInput__54VPD{margin-bottom:var(--spacing-md)}.DateInput-module_label__yDdUw{font-size:var(--font-size-base);margin-bottom:var(--spacing-xs)}.DateInput-module_textInput__ToOSX{font-size:16px;min-height:48px;padding:var(--spacing-md)}.DateInput-module_calendarButton__JzDGD{font-size:20px;min-width:48px}.DateInput-module_calendarButton__JzDGD svg{height:22px;width:22px}}.DateInput-module_loading__1DAmD .DateInput-module_inputWrapper__x-r1d{overflow:hidden;position:relative}.DateInput-module_loading__1DAmD .DateInput-module_inputWrapper__x-r1d:before{animation:DateInput-module_shimmer__XK7zx 2s infinite;background:linear-gradient(90deg,transparent,rgba(124,58,237,.1),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;width:100%}@keyframes DateInput-module_shimmer__XK7zx{to{left:100%}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRhdGVJbnB1dC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQUNJLCtCQUFnQyxDQUNoQyxpQkFDSixDQUVBLCtCQUlJLHVCQUF3QixDQUh4QixhQUFjLENBQ2QsNkJBQThCLENBQzlCLHVDQUF3QyxDQUd4Qyx5Q0FBMEMsQ0FEMUMsK0JBQWdDLENBRWhDLHVDQUNKLENBRUEsc0NBR0ksbUJBQW9CLENBQ3BCLDRGQUdDLENBQ0Qsb0NBQXFDLENBQ3JDLDhCQUErQixDQVAvQixZQUFhLENBUWIsZUFBZ0IsQ0FUaEIsaUJBQWtCLENBVWxCLHFDQUNKLENBRUEsNENBQ0ksc0NBQXVDLENBQ3ZDLDJCQUE0QixDQUM1QiwwQkFDSixDQUVBLG1EQUlJLGtDQUFtQyxDQUhuQyxpQ0FBa0MsQ0FDbEMsd0NBQTZDLENBQzdDLDBCQUVKLENBRUEsbUNBSUksc0JBQXVCLENBRHZCLFdBQVksQ0FNWix1QkFBd0IsQ0FSeEIsTUFBTyxDQUtQLG1GQUFrRyxDQURsRywrQkFBZ0MsQ0FHaEMscUNBQXNDLENBRHRDLG9CQUFzQixDQUl0QixlQUFnQixDQURoQixZQUFhLENBUmIsMkNBVUosQ0FFQSxnREFDSSxpQ0FBa0MsQ0FFbEMsbUJBQW9CLENBRHBCLFVBRUosQ0FFQSw0Q0FDSSwyQ0FBNEMsQ0FDNUMsZ0NBQWlDLENBQ2pDLGtCQUFtQixDQUNuQixVQUNKLENBRUEsd0NBWUksa0JBQW1CLENBVm5CLGtGQUdDLENBRUQsV0FBOEMsQ0FBOUMseUNBQThDLENBQzlDLCtCQUFnQyxDQUNoQyxjQUFlLENBRWYsWUFBYSxDQUdiLGNBQWUsQ0FEZixzQkFBdUIsQ0FJdkIsY0FBZSxDQURmLFlBQWEsQ0FOYiwyQkFBNEIsQ0FUNUIsaUJBQWtCLENBY2xCLHFDQUdKLENBRUEsOENBQ0kseUZBR0MsQ0FDRCxzQkFDSixDQUVBLCtDQUNJLG9CQUNKLENBRUEsc0RBQ0ksNkNBQ0osQ0FFQSw0Q0FHSSxhQUFjLENBRGQsV0FBWSxDQURaLFVBR0osQ0FHQSx3RkFDSSwrREFDSixDQUVBLGlEQUNJLE1BQVcsK0JBQWtDLENBQzdDLElBQU0saUNBQW9DLENBQzlDLENBRUEseUNBSUksVUFBVyxDQUVYLE1BQU8sQ0FKUCxTQUFVLENBRFYsaUJBQWtCLENBSWxCLEtBQU0sQ0FGTixTQUFVLENBSVYsVUFDSixDQUdBLHFFQU1JLDhFQUErRCxDQUovRCxnRkFHQyxDQUpELCtCQU1KLENBRUEsOERBQ0ksd0JBQ0osQ0FFQSxrRkFDSSx3Q0FDSixDQUVBLHlDQUNJLFFBQVcsMEJBQTZCLENBQ3hDLFFBQVcseUJBQTRCLENBQ3ZDLFlBQWdCLDBCQUE2QixDQUM3QyxRQUFXLHlCQUE0QixDQUMzQyxDQUdBLHVFQUNJLGlDQUNKLENBRUEsNkVBUUksc0RBQWdDLENBRmhDLDBCQUEyQixDQUwzQixXQUFZLENBTVosZUFBaUIsQ0FMakIsaUJBQWtCLENBQ2xCLG9DQUFxQyxDQUNyQyxPQUFRLENBQ1IsMEJBSUosQ0FFQSwyQ0FDSSxHQUNJLFNBQVUsQ0FDVixtQ0FDSixDQUNBLEdBQ0ksU0FBVSxDQUNWLG1DQUNKLENBQ0osQ0FHQSx3REFDSSxxR0FHQyxDQUNELGdDQUNKLENBRUEscUVBQ0ksNENBQTZDLENBQzdDLHVDQUF3QyxDQUN4Qyx5Q0FDSixDQUVBLDBEQUNJLGtGQUdDLENBQ0Qsc0NBQ0osQ0FFQSxnRUFDSSxrRkFJSixDQUdBLHlCQUNJLG1DQUNJLCtCQUNKLENBRUEsK0JBQ0ksK0JBQWdDLENBQ2hDLCtCQUNKLENBRUEsbUNBQ0ksY0FBZSxDQUVmLGVBQWdCLENBRGhCLHlCQUVKLENBRUEsd0NBRUksY0FBZSxDQURmLGNBRUosQ0FFQSw0Q0FFSSxXQUFZLENBRFosVUFFSixDQUNKLENBR0EsdUVBRUksZUFBZ0IsQ0FEaEIsaUJBRUosQ0FFQSw4RUFhSSxxREFBOEIsQ0FOOUIsNkVBS0MsQ0FYRCxVQUFXLENBS1gsV0FBWSxDQUZaLFVBQVcsQ0FGWCxpQkFBa0IsQ0FDbEIsS0FBTSxDQUVOLFVBU0osQ0FFQSwyQ0FDSSxHQUNJLFNBQ0osQ0FDSiIsImZpbGUiOiJEYXRlSW5wdXQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5kYXRlSW5wdXQge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxldHRlci1zcGFjaW5nLXdpZGUpO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5pbnB1dFdyYXBwZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICk7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5pbnB1dFdyYXBwZXI6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyLWhvdmVyKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbn1cblxuLmlucHV0V3JhcHBlcjpmb2N1cy13aXRoaW4ge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTI0LCA1OCwgMjM3LCAwLjEpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbn1cblxuLnRleHRJbnB1dCB7XG4gICAgZmxleDogMTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXNtKSB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgTW9uYWNvLCAnQ2FzY2FkaWEgQ29kZScsICdSb2JvdG8gTW9ubycsIENvbnNvbGFzLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBtaW4taGVpZ2h0OiA0NHB4O1xufVxuXG4udGV4dElucHV0OjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBvcGFjaXR5OiAwLjY7XG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG59XG5cbi50ZXh0SW5wdXQ6ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5KTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLmNhbGVuZGFyQnV0dG9uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlcilcbiAgICApO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYmEoMTI0LCA1OCwgMjM3LCAwLjIpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBtaW4td2lkdGg6IDQ0cHg7XG59XG5cbi5jYWxlbmRhckJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnktaG92ZXIpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1hY3RpdmUpXG4gICAgKTtcbiAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4xKTtcbn1cblxuLmNhbGVuZGFyQnV0dG9uOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk1KTtcbn1cblxuLmNhbGVuZGFyQnV0dG9uOmZvY3VzLXZpc2libGUge1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDJweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG59XG5cbi5jYWxlbmRhckJ1dHRvbiBzdmcge1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyogSWNvbiBhbmltYXRpb24gb24gaG92ZXIgKi9cbi5pbnB1dFdyYXBwZXI6aG92ZXIgLmNhbGVuZGFyQnV0dG9uIHN2ZyB7XG4gICAgYW5pbWF0aW9uOiBjYWxlbmRhclB1bHNlIDAuNXMgZWFzZS1pbi1vdXQ7XG59XG5cbkBrZXlmcmFtZXMgY2FsZW5kYXJQdWxzZSB7XG4gICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgwZGVnKTsgfVxuICAgIDUwJSB7IHRyYW5zZm9ybTogc2NhbGUoMS4yKSByb3RhdGUoNWRlZyk7IH1cbn1cblxuLmhpZGRlbkRhdGVJbnB1dCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiAtMTtcbn1cblxuLyogRXJyb3Igc3RhdGUgKi9cbi5lcnJvciAuaW5wdXRXcmFwcGVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWVycm9yKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItZXJyb3ItYmcpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZClcbiAgICApO1xuICAgIGFuaW1hdGlvbjogc2hha2UgMC4zcyBjdWJpYy1iZXppZXIoMC4zNiwgMC4wNywgMC4xOSwgMC45NykgYm90aDtcbn1cblxuLmVycm9yIC5sYWJlbCB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWVycm9yKTtcbn1cblxuLmVycm9yIC5pbnB1dFdyYXBwZXI6Zm9jdXMtd2l0aGluIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgyNDQsIDYzLCA5NCwgMC4xNSk7XG59XG5cbkBrZXlmcmFtZXMgc2hha2Uge1xuICAgIDEwJSwgOTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xcHgpOyB9XG4gICAgMjAlLCA4MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMnB4KTsgfVxuICAgIDMwJSwgNTAlLCA3MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTNweCk7IH1cbiAgICA0MCUsIDYwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgzcHgpOyB9XG59XG5cbi8qIFN1Y2Nlc3Mgc3RhdGUgKi9cbi5zdWNjZXNzIC5pbnB1dFdyYXBwZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3Itc3VjY2Vzcyk7XG59XG5cbi5zdWNjZXNzIC5pbnB1dFdyYXBwZXI6OmFmdGVyIHtcbiAgICBjb250ZW50OiAn4pyTJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IGNhbGModmFyKC0tc3BhY2luZy1tZCkgKyA0NHB4KTtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXN1Y2Nlc3MpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGFuaW1hdGlvbjogY2hlY2tJbiAwLjNzIGVhc2Utb3V0O1xufVxuXG5Aa2V5ZnJhbWVzIGNoZWNrSW4ge1xuICAgIDAlIHsgXG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgwKTtcbiAgICB9XG4gICAgMTAwJSB7IFxuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG4vKiBEYXJrIG1vZGUgYWRqdXN0bWVudHMgKi9cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuaW5wdXRXcmFwcGVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSlcbiAgICApO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5pbnB1dFdyYXBwZXI6Zm9jdXMtd2l0aGluIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgxNjcsIDEzOSwgMjUwLCAwLjEpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmNhbGVuZGFyQnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCksIFxuICAgICAgICB2YXIoLS1jb2xvci1wcmltYXJ5KVxuICAgICk7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHJnYmEoMTY3LCAxMzksIDI1MCwgMC4yKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5jYWxlbmRhckJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlcilcbiAgICApO1xufVxuXG4vKiBNb2JpbGUgb3B0aW1pemF0aW9ucyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgLmRhdGVJbnB1dCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIH1cbiAgICBcbiAgICAubGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy14cyk7XG4gICAgfVxuICAgIFxuICAgIC50ZXh0SW5wdXQge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7IC8qIFByZXZlbnQgem9vbSBvbiBpT1MgKi9cbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgfVxuICAgIFxuICAgIC5jYWxlbmRhckJ1dHRvbiB7XG4gICAgICAgIG1pbi13aWR0aDogNDhweDtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgIH1cbiAgICBcbiAgICAuY2FsZW5kYXJCdXR0b24gc3ZnIHtcbiAgICAgICAgd2lkdGg6IDIycHg7XG4gICAgICAgIGhlaWdodDogMjJweDtcbiAgICB9XG59XG5cbi8qIExvYWRpbmcgc3RhdGUgKi9cbi5sb2FkaW5nIC5pbnB1dFdyYXBwZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ubG9hZGluZyAuaW5wdXRXcmFwcGVyOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgOTBkZWcsXG4gICAgICAgIHRyYW5zcGFyZW50LFxuICAgICAgICByZ2JhKDEyNCwgNTgsIDIzNywgMC4xKSxcbiAgICAgICAgdHJhbnNwYXJlbnRcbiAgICApO1xuICAgIGFuaW1hdGlvbjogc2hpbW1lciAycyBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBzaGltbWVyIHtcbiAgICAxMDAlIHtcbiAgICAgICAgbGVmdDogMTAwJTtcbiAgICB9XG59Il19 */";
393
+ var styles$f = {"dateInput":"DateInput-module_dateInput__54VPD","label":"DateInput-module_label__yDdUw","inputWrapper":"DateInput-module_inputWrapper__x-r1d","textInput":"DateInput-module_textInput__ToOSX","calendarButton":"DateInput-module_calendarButton__JzDGD","hiddenDateInput":"DateInput-module_hiddenDateInput__IWNg3","error":"DateInput-module_error__ieuPO","success":"DateInput-module_success__rPA93","loading":"DateInput-module_loading__1DAmD"};
394
+ styleInject(css_248z$h);
395
+
396
+ /**
397
+ * DateInput component - European format date picker with manual input support
398
+ *
399
+ * @component
400
+ * @description
401
+ * A date input component that supports both manual text entry in DD/MM/YYYY format
402
+ * and native calendar picker selection. Automatically formats dates as users type,
403
+ * adding slashes at appropriate positions. Stores dates internally in ISO format
404
+ * while displaying them in European format for better UX in European contexts.
405
+ *
406
+ * Features:
407
+ * - Auto-formatting while typing (adds slashes automatically)
408
+ * - Calendar icon for native date picker access
409
+ * - Seamless conversion between European display and ISO storage formats
410
+ * - Mobile-optimized with proper touch targets
411
+ *
412
+ * @example
413
+ * // Basic usage
414
+ * <DateInput
415
+ * label="Date of Birth"
416
+ * value={birthDate}
417
+ * onChange={setBirthDate}
418
+ * placeholder="31/12/2000"
419
+ * />
420
+ *
421
+ * @example
422
+ * // With focus handlers
423
+ * <DateInput
424
+ * label="Event Date"
425
+ * value={eventDate}
426
+ * onChange={setEventDate}
427
+ * onFocus={() => console.log('Focused')}
428
+ * onBlur={() => validateDate(eventDate)}
429
+ * />
430
+ */
431
+ function DateInput({ label, value, onChange, placeholder = "25/12/2024", onFocus, onBlur, error = false, success = false, loading = false, disabled = false }) {
432
+ const hiddenDateInputRef = useRef(null);
433
+ const handleTextChange = (textValue) => {
434
+ // Auto-format as user types
435
+ let formatted = textValue.replace(/[^\d/]/g, '');
436
+ // Add slashes automatically
437
+ if (formatted.length >= 2 && formatted.charAt(2) !== '/') {
438
+ formatted = formatted.substring(0, 2) + '/' + formatted.substring(2);
439
+ }
440
+ if (formatted.length >= 5 && formatted.charAt(5) !== '/') {
441
+ formatted = formatted.substring(0, 5) + '/' + formatted.substring(5);
442
+ }
443
+ // Limit length
444
+ if (formatted.length > 10) {
445
+ formatted = formatted.substring(0, 10);
446
+ }
447
+ // Convert to ISO format when complete and valid, otherwise store display format
448
+ if (formatted.length === 10) {
449
+ const isoDate = parseEuropeanDate(formatted);
450
+ onChange(isoDate || formatted);
451
+ }
452
+ else {
453
+ onChange(formatted);
454
+ }
455
+ };
456
+ const handleCalendarClick = () => {
457
+ // Set the hidden input to current value for calendar
458
+ if (hiddenDateInputRef.current) {
459
+ // If value is already ISO format, use it directly
460
+ // If it's European format, convert it
461
+ const isoDate = value.includes('-') ? value : parseEuropeanDate(value);
462
+ if (isoDate) {
463
+ hiddenDateInputRef.current.value = isoDate;
464
+ }
465
+ // Try showPicker first (modern browsers), fallback to click
466
+ if (hiddenDateInputRef.current.showPicker) {
467
+ hiddenDateInputRef.current.showPicker();
468
+ }
469
+ else {
470
+ hiddenDateInputRef.current.click();
471
+ }
472
+ }
473
+ };
474
+ const handleCalendarChange = (e) => {
475
+ const isoDate = e.target.value;
476
+ if (isoDate) {
477
+ onChange(isoDate);
478
+ }
479
+ };
480
+ const getClassName = () => {
481
+ const classes = [styles$f.dateInput];
482
+ if (error)
483
+ classes.push(styles$f.error);
484
+ if (success)
485
+ classes.push(styles$f.success);
486
+ if (loading)
487
+ classes.push(styles$f.loading);
488
+ return classes.join(' ');
489
+ };
490
+ return (jsxs("div", { className: getClassName(), children: [jsx("label", { className: styles$f.label, children: label }), jsxs("div", { className: styles$f.inputWrapper, children: [jsx("input", { type: "text", value: value.includes('-') ? formatDateToEuropean(value) : value, onChange: (e) => handleTextChange(e.target.value), onFocus: onFocus, onBlur: onBlur, placeholder: placeholder, className: styles$f.textInput, disabled: disabled || loading }), jsx("button", { type: "button", onClick: handleCalendarClick, className: styles$f.calendarButton, title: "Select date from calendar", disabled: disabled || loading, children: jsx(FiCalendar, {}) }), jsx("input", { ref: hiddenDateInputRef, type: "date", onChange: handleCalendarChange, className: styles$f.hiddenDateInput, tabIndex: -1, disabled: disabled || loading })] })] }));
491
+ }
492
+
493
+ var css_248z$g = ".SearchableDropdown-module_searchableDropdown__S2Nh5{margin-bottom:var(--spacing-lg);position:relative;width:100%}.SearchableDropdown-module_searchableDropdown__S2Nh5 label{color:var(--color-text);display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);margin-bottom:var(--spacing-sm);transition:color var(--transition-base)}.SearchableDropdown-module_dropdownTrigger__dihdr{align-items:center;background:linear-gradient(135deg,var(--color-background),var(--color-background-secondary));border:2px solid var(--color-border);border-radius:var(--radius-lg);color:var(--color-text);cursor:pointer;display:flex;font-size:var(--font-size-base);min-height:44px;padding:var(--spacing-sm) var(--spacing-lg);padding-right:48px;position:relative;text-align:left;transition:all var(--transition-base);width:100%}.SearchableDropdown-module_dropdownTrigger__dihdr:hover{background:var(--color-background);border-color:var(--color-border-hover);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.SearchableDropdown-module_dropdownTrigger__dihdr.SearchableDropdown-module_open__P7mRt{background:var(--color-background);border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(124,58,237,.1);transform:translateY(-2px)}.SearchableDropdown-module_dropdownValue__ydrc2{flex:1;font-weight:var(--font-weight-medium);overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}.SearchableDropdown-module_dropdownValue__ydrc2.SearchableDropdown-module_placeholder__BwM2W{color:var(--color-text-secondary);font-weight:var(--font-weight-normal);opacity:.6}.SearchableDropdown-module_dropdownArrow__yd5fp{color:var(--color-primary);height:20px;position:absolute;right:var(--spacing-md);top:50%;transform:translateY(-50%) rotate(0deg);transition:transform var(--transition-base),color var(--transition-base);width:20px}.SearchableDropdown-module_dropdownTrigger__dihdr.SearchableDropdown-module_open__P7mRt .SearchableDropdown-module_dropdownArrow__yd5fp{color:var(--color-primary-hover);transform:translateY(-50%) rotate(180deg)}.SearchableDropdown-module_dropdownMenu__2Z5cc{background:var(--color-background);border:2px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);box-sizing:border-box;display:flex;flex-direction:column;left:0;max-height:320px;overflow:hidden;position:absolute;right:0;top:calc(100% + 8px);width:100%;z-index:var(--z-index-dropdown)}.SearchableDropdown-module_dropdownSearch__NRk7j{background:linear-gradient(180deg,var(--color-background-secondary),var(--color-background));border-bottom:1px solid var(--color-border);padding:var(--spacing-md);position:relative}.SearchableDropdown-module_searchInput__VS2Hw{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);box-sizing:border-box;color:var(--color-text);font-size:var(--font-size-base);outline:none;padding:var(--spacing-sm) var(--spacing-md);padding-left:40px;transition:all var(--transition-base);width:100%}.SearchableDropdown-module_searchInput__VS2Hw:focus{background:var(--color-background);border-color:var(--color-primary);box-shadow:0 0 0 2px rgba(124,58,237,.1)}.SearchableDropdown-module_searchInput__VS2Hw::placeholder{color:var(--color-text-secondary);opacity:.6}.SearchableDropdown-module_searchIcon__2vKFF{color:var(--color-text-secondary);height:18px;left:calc(var(--spacing-md) + 12px);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);transition:color var(--transition-base);width:18px}.SearchableDropdown-module_searchInput__VS2Hw:focus~.SearchableDropdown-module_searchIcon__2vKFF{color:var(--color-primary)}.SearchableDropdown-module_dropdownOptions__6YXqF{flex:1;max-height:250px;overflow-y:auto;padding:var(--spacing-xs)}.SearchableDropdown-module_dropdownOptions__6YXqF::-webkit-scrollbar{width:6px}.SearchableDropdown-module_dropdownOptions__6YXqF::-webkit-scrollbar-track{background:var(--color-background-secondary);border-radius:var(--radius-sm)}.SearchableDropdown-module_dropdownOptions__6YXqF::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm);transition:background var(--transition-base)}.SearchableDropdown-module_dropdownOptions__6YXqF::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}.SearchableDropdown-module_dropdownOption__YwDr-{background:transparent;border:none;border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;font-size:var(--font-size-base);margin:2px 0;overflow:hidden;padding:var(--spacing-sm) var(--spacing-md);position:relative;text-align:left;text-overflow:ellipsis;transition:all var(--transition-base);white-space:nowrap;width:100%}.SearchableDropdown-module_dropdownOption__YwDr-:before{background:var(--color-primary);content:\"\";height:100%;left:0;position:absolute;top:0;transform:translateX(-100%);transition:transform var(--transition-base);width:3px}.SearchableDropdown-module_dropdownOption__YwDr-:hover{background:linear-gradient(90deg,rgba(124,58,237,.05),rgba(124,58,237,.02));padding-left:calc(var(--spacing-md) + 4px)}.SearchableDropdown-module_dropdownOption__YwDr-:hover:before{transform:translateX(0)}.SearchableDropdown-module_dropdownOption__YwDr-.SearchableDropdown-module_selected__31JeB{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));box-shadow:var(--shadow-sm);color:var(--color-text-inverse);font-weight:var(--font-weight-medium)}.SearchableDropdown-module_dropdownOption__YwDr-.SearchableDropdown-module_selected__31JeB:before{display:none}.SearchableDropdown-module_dropdownOption__YwDr-.SearchableDropdown-module_selected__31JeB:hover{background:linear-gradient(135deg,var(--color-primary-hover),var(--color-primary-active));transform:translateX(2px)}.SearchableDropdown-module_dropdownOption__YwDr-.SearchableDropdown-module_highlighted__P0bBq:not(.SearchableDropdown-module_selected__31JeB){background:linear-gradient(90deg,rgba(124,58,237,.08),rgba(124,58,237,.03));padding-left:calc(var(--spacing-md) + 4px)}.SearchableDropdown-module_dropdownOption__YwDr-.SearchableDropdown-module_highlighted__P0bBq:not(.SearchableDropdown-module_selected__31JeB):before{transform:translateX(0)}.SearchableDropdown-module_checkIcon__YxowK{animation:SearchableDropdown-module_checkIn__oUZdd .3s ease-out;color:var(--color-text-inverse);height:16px;position:absolute;right:var(--spacing-md);width:16px}@keyframes SearchableDropdown-module_checkIn__oUZdd{0%{opacity:0;transform:scale(0) rotate(-45deg)}to{opacity:1;transform:scale(1) rotate(0deg)}}.SearchableDropdown-module_dropdownNoResults__WW-Da{color:var(--color-text-secondary);font-style:italic;opacity:.7;padding:var(--spacing-lg);text-align:center}@keyframes SearchableDropdown-module_slideIn__V9S0g{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}.SearchableDropdown-module_dropdownOption__YwDr-{animation:SearchableDropdown-module_slideIn__V9S0g .2s ease-out forwards}[data-theme=dark] .SearchableDropdown-module_dropdownTrigger__dihdr{background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));border-color:var(--color-border)}[data-theme=dark] .SearchableDropdown-module_dropdownTrigger__dihdr:hover{background:var(--color-background-secondary);border-color:var(--color-border-hover)}[data-theme=dark] .SearchableDropdown-module_dropdownTrigger__dihdr.SearchableDropdown-module_open__P7mRt{background:var(--color-background-secondary);border-color:var(--color-primary-light);box-shadow:0 0 0 3px rgba(167,139,250,.1)}[data-theme=dark] .SearchableDropdown-module_dropdownMenu__2Z5cc{background:var(--color-background-secondary);border-color:var(--color-border)}[data-theme=dark] .SearchableDropdown-module_dropdownSearch__NRk7j{background:linear-gradient(180deg,var(--color-background-tertiary),var(--color-background-secondary))}[data-theme=dark] .SearchableDropdown-module_searchInput__VS2Hw{background:var(--color-background);border-color:var(--color-border)}[data-theme=dark] .SearchableDropdown-module_searchInput__VS2Hw:focus{border-color:var(--color-primary-light);box-shadow:0 0 0 2px rgba(167,139,250,.1)}[data-theme=dark] .SearchableDropdown-module_dropdownOption__YwDr-:hover{background:linear-gradient(90deg,rgba(167,139,250,.1),rgba(167,139,250,.05))}[data-theme=dark] .SearchableDropdown-module_dropdownOption__YwDr-.SearchableDropdown-module_selected__31JeB{background:linear-gradient(135deg,var(--color-primary-light),var(--color-primary))}@media (max-width:768px){.SearchableDropdown-module_dropdownMenu__2Z5cc{left:var(--spacing-md);max-height:60vh;position:fixed;right:var(--spacing-md);top:50%;transform:translateY(-50%)}.SearchableDropdown-module_dropdownOptions__6YXqF{max-height:40vh}.SearchableDropdown-module_dropdownTrigger__dihdr{font-size:16px;min-height:48px;padding:var(--spacing-md)}.SearchableDropdown-module_searchInput__VS2Hw{font-size:16px;padding:var(--spacing-md);padding-left:44px}.SearchableDropdown-module_dropdownOption__YwDr-{min-height:44px;padding:var(--spacing-md)}}.SearchableDropdown-module_dropdownTrigger__dihdr.SearchableDropdown-module_loading__xlYf0{overflow:hidden;position:relative}.SearchableDropdown-module_dropdownTrigger__dihdr.SearchableDropdown-module_loading__xlYf0:after{animation:SearchableDropdown-module_shimmer__Mbaf- 2s infinite;background:linear-gradient(90deg,transparent,rgba(124,58,237,.1),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;width:100%}@keyframes SearchableDropdown-module_shimmer__Mbaf-{to{left:100%}}.SearchableDropdown-module_dropdownTrigger__dihdr:disabled{background:var(--color-background-tertiary);border-color:var(--color-border);cursor:not-allowed;opacity:.5}.SearchableDropdown-module_dropdownTrigger__dihdr:disabled:hover{box-shadow:none;transform:none}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlYXJjaGFibGVEcm9wZG93bi5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUVJLCtCQUFnQyxDQURoQyxpQkFBa0IsQ0FFbEIsVUFDSixDQUVBLDJEQUlJLHVCQUF3QixDQUh4QixhQUFjLENBQ2QsNkJBQThCLENBQzlCLHVDQUF3QyxDQUd4Qyx5Q0FBMEMsQ0FEMUMsK0JBQWdDLENBRWhDLHVDQUNKLENBRUEsa0RBWUksa0JBQW1CLENBTm5CLDRGQUdDLENBTEQsb0NBQXFDLENBQ3JDLDhCQUErQixDQVkvQix1QkFBd0IsQ0FKeEIsY0FBZSxDQUZmLFlBQWEsQ0FEYiwrQkFBZ0MsQ0FLaEMsZUFBZ0IsQ0FiaEIsMkNBQTRDLENBQzVDLGtCQUFtQixDQVduQixpQkFBa0IsQ0FJbEIsZUFBZ0IsQ0FGaEIscUNBQXNDLENBZnRDLFVBa0JKLENBRUEsd0RBRUksa0NBQW1DLENBRG5DLHNDQUF1QyxDQUV2QywyQkFBNEIsQ0FDNUIsMEJBQ0osQ0FFQSx3RkFHSSxrQ0FBbUMsQ0FGbkMsaUNBQWtDLENBQ2xDLHdDQUE2QyxDQUU3QywwQkFDSixDQUVBLGdEQUNJLE1BQU8sQ0FLUCxxQ0FBc0MsQ0FGdEMsZUFBZ0IsQ0FGaEIsZUFBZ0IsQ0FHaEIsc0JBQXVCLENBRnZCLGtCQUlKLENBRUEsNkZBQ0ksaUNBQWtDLENBRWxDLHFDQUFzQyxDQUR0QyxVQUVKLENBRUEsZ0RBS0ksMEJBQTJCLENBRTNCLFdBQVksQ0FOWixpQkFBa0IsQ0FDbEIsdUJBQXdCLENBQ3hCLE9BQVEsQ0FDUix1Q0FBd0MsQ0FJeEMsd0VBQTBFLENBRjFFLFVBR0osQ0FFQSx3SUFFSSxnQ0FBaUMsQ0FEakMseUNBRUosQ0FFQSwrQ0FTSSxrQ0FBbUMsQ0FGbkMsb0NBQXFDLENBQ3JDLDhCQUErQixDQUUvQiwyQkFBNEIsQ0FKNUIscUJBQXNCLENBUXRCLFlBQWEsQ0FDYixxQkFBc0IsQ0FadEIsTUFBTyxDQVNQLGdCQUFpQixDQUNqQixlQUFnQixDQVpoQixpQkFBa0IsQ0FHbEIsT0FBUSxDQUZSLG9CQUFxQixDQUdyQixVQUFXLENBTVgsK0JBS0osQ0FFQSxpREFJSSw0RkFHQyxDQUpELDJDQUE0QyxDQUQ1Qyx5QkFBMEIsQ0FEMUIsaUJBT0osQ0FFQSw4Q0FRSSxrQ0FBbUMsQ0FIbkMsb0NBQXFDLENBQ3JDLDhCQUErQixDQUovQixxQkFBc0IsQ0FPdEIsdUJBQXdCLENBRnhCLCtCQUFnQyxDQUloQyxZQUFhLENBUmIsMkNBQTRDLENBQzVDLGlCQUFrQixDQU1sQixxQ0FBc0MsQ0FUdEMsVUFXSixDQUVBLG9EQUdJLGtDQUFtQyxDQUZuQyxpQ0FBa0MsQ0FDbEMsd0NBRUosQ0FFQSwyREFDSSxpQ0FBa0MsQ0FDbEMsVUFDSixDQUVBLDZDQUtJLGlDQUFrQyxDQUVsQyxXQUFZLENBTFosbUNBQW9DLENBTXBDLG1CQUFvQixDQVBwQixpQkFBa0IsQ0FFbEIsT0FBUSxDQUNSLDBCQUEyQixDQUszQix1Q0FBd0MsQ0FIeEMsVUFJSixDQUVBLGlHQUNJLDBCQUNKLENBRUEsa0RBQ0ksTUFBTyxDQUVQLGdCQUFpQixDQURqQixlQUFnQixDQUVoQix5QkFDSixDQUdBLHFFQUNJLFNBQ0osQ0FFQSwyRUFDSSw0Q0FBNkMsQ0FDN0MsOEJBQ0osQ0FFQSwyRUFDSSw4QkFBK0IsQ0FDL0IsOEJBQStCLENBQy9CLDRDQUNKLENBRUEsaUZBQ0ksb0NBQ0osQ0FFQSxpREFLSSxzQkFBdUIsQ0FEdkIsV0FBWSxDQU1aLDhCQUErQixDQUQvQix1QkFBd0IsQ0FOeEIsY0FBZSxDQUtmLCtCQUFnQyxDQU5oQyxZQUFhLENBV2IsZUFBZ0IsQ0FaaEIsMkNBQTRDLENBVzVDLGlCQUFrQixDQUxsQixlQUFnQixDQVFoQixzQkFBdUIsQ0FKdkIscUNBQXNDLENBR3RDLGtCQUFtQixDQVJuQixVQVVKLENBRUEsd0RBT0ksK0JBQWdDLENBTmhDLFVBQVcsQ0FLWCxXQUFZLENBSFosTUFBTyxDQURQLGlCQUFrQixDQUVsQixLQUFNLENBSU4sMkJBQTRCLENBQzVCLDJDQUE0QyxDQUo1QyxTQUtKLENBRUEsdURBQ0ksMkVBR0MsQ0FDRCwwQ0FDSixDQUVBLDhEQUNJLHVCQUNKLENBRUEsMkZBQ0ksa0ZBR0MsQ0FHRCwyQkFBNEIsQ0FGNUIsK0JBQWdDLENBQ2hDLHFDQUVKLENBRUEsa0dBQ0ksWUFDSixDQUVBLGlHQUNJLHlGQUdDLENBQ0QseUJBQ0osQ0FFQSw4SUFDSSwyRUFHQyxDQUNELDBDQUNKLENBRUEscUpBQ0ksdUJBQ0osQ0FHQSw0Q0FNSSwrREFBZ0MsQ0FEaEMsK0JBQWdDLENBRGhDLFdBQVksQ0FIWixpQkFBa0IsQ0FDbEIsdUJBQXdCLENBQ3hCLFVBSUosQ0FFQSxvREFDSSxHQUNJLFNBQVUsQ0FDVixpQ0FDSixDQUNBLEdBQ0ksU0FBVSxDQUNWLCtCQUNKLENBQ0osQ0FFQSxvREFHSSxpQ0FBa0MsQ0FDbEMsaUJBQWtCLENBQ2xCLFVBQVksQ0FKWix5QkFBMEIsQ0FDMUIsaUJBSUosQ0FHQSxvREFDSSxHQUNJLFNBQVUsQ0FDViwyQkFDSixDQUNBLEdBQ0ksU0FBVSxDQUNWLHVCQUNKLENBQ0osQ0FFQSxpREFDSSx3RUFDSixDQUdBLG9FQUNJLHFHQUdDLENBQ0QsZ0NBQ0osQ0FFQSwwRUFDSSw0Q0FBNkMsQ0FDN0Msc0NBQ0osQ0FFQSwwR0FDSSw0Q0FBNkMsQ0FDN0MsdUNBQXdDLENBQ3hDLHlDQUNKLENBRUEsaUVBQ0ksNENBQTZDLENBQzdDLGdDQUNKLENBRUEsbUVBQ0kscUdBSUosQ0FFQSxnRUFDSSxrQ0FBbUMsQ0FDbkMsZ0NBQ0osQ0FFQSxzRUFDSSx1Q0FBd0MsQ0FDeEMseUNBQ0osQ0FFQSx5RUFDSSw0RUFJSixDQUVBLDZHQUNJLGtGQUlKLENBR0EseUJBQ0ksK0NBR0ksc0JBQXVCLENBRnZCLGVBQWdCLENBQ2hCLGNBQWUsQ0FFZix1QkFBd0IsQ0FDeEIsT0FBUSxDQUNSLDBCQUNKLENBRUEsa0RBQ0ksZUFDSixDQUVBLGtEQUNJLGNBQWUsQ0FDZixlQUFnQixDQUNoQix5QkFDSixDQUVBLDhDQUNJLGNBQWUsQ0FDZix5QkFBMEIsQ0FDMUIsaUJBQ0osQ0FFQSxpREFFSSxlQUFnQixDQURoQix5QkFFSixDQUNKLENBR0EsMkZBRUksZUFBZ0IsQ0FEaEIsaUJBRUosQ0FFQSxpR0FhSSw4REFBOEIsQ0FOOUIsNkVBS0MsQ0FYRCxVQUFXLENBS1gsV0FBWSxDQUZaLFVBQVcsQ0FGWCxpQkFBa0IsQ0FDbEIsS0FBTSxDQUVOLFVBU0osQ0FFQSxvREFDSSxHQUNJLFNBQ0osQ0FDSixDQUdBLDJEQUdJLDJDQUE0QyxDQUM1QyxnQ0FBaUMsQ0FGakMsa0JBQW1CLENBRG5CLFVBSUosQ0FFQSxpRUFFSSxlQUFnQixDQURoQixjQUVKIiwiZmlsZSI6IlNlYXJjaGFibGVEcm9wZG93bi5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNlYXJjaGFibGVEcm9wZG93biB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4uc2VhcmNoYWJsZURyb3Bkb3duIGxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxldHRlci1zcGFjaW5nLXdpZGUpO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5kcm9wZG93blRyaWdnZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHBhZGRpbmctcmlnaHQ6IDQ4cHg7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLWhlaWdodDogNDRweDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLmRyb3Bkb3duVHJpZ2dlcjpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXItaG92ZXIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xufVxuXG4uZHJvcGRvd25UcmlnZ2VyLm9wZW4ge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTI0LCA1OCwgMjM3LCAwLjEpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLmRyb3Bkb3duVmFsdWUge1xuICAgIGZsZXg6IDE7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG59XG5cbi5kcm9wZG93blZhbHVlLnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbm9ybWFsKTtcbn1cblxuLmRyb3Bkb3duQXJyb3cge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSgwZGVnKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10cmFuc2l0aW9uLWJhc2UpLCBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uZHJvcGRvd25UcmlnZ2VyLm9wZW4gLmRyb3Bkb3duQXJyb3cge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoMTgwZGVnKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ob3Zlcik7XG59XG5cbi5kcm9wZG93bk1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoMTAwJSArIDhweCk7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3cteGwpO1xuICAgIHotaW5kZXg6IHZhcigtLXotaW5kZXgtZHJvcGRvd24pO1xuICAgIG1heC1oZWlnaHQ6IDMyMHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uZHJvcGRvd25TZWFyY2gge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZClcbiAgICApO1xufVxuXG4uc2VhcmNoSW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgcGFkZGluZy1sZWZ0OiA0MHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgb3V0bGluZTogbm9uZTtcbn1cblxuLnNlYXJjaElucHV0OmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKDEyNCwgNTgsIDIzNywgMC4xKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbn1cblxuLnNlYXJjaElucHV0OjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBvcGFjaXR5OiAwLjY7XG59XG5cbi5zZWFyY2hJY29uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogY2FsYyh2YXIoLS1zcGFjaW5nLW1kKSArIDEycHgpO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGhlaWdodDogMThweDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uc2VhcmNoSW5wdXQ6Zm9jdXMgfiAuc2VhcmNoSWNvbiB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4uZHJvcGRvd25PcHRpb25zIHtcbiAgICBmbGV4OiAxO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgbWF4LWhlaWdodDogMjUwcHg7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy14cyk7XG59XG5cbi8qIEN1c3RvbSBzY3JvbGxiYXIgKi9cbi5kcm9wZG93bk9wdGlvbnM6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogNnB4O1xufVxuXG4uZHJvcGRvd25PcHRpb25zOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG59XG5cbi5kcm9wZG93bk9wdGlvbnM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uZHJvcGRvd25PcHRpb25zOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYm9yZGVyLWhvdmVyKTtcbn1cblxuLmRyb3Bkb3duT3B0aW9uIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXNtKSB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICBtYXJnaW46IDJweCAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4uZHJvcGRvd25PcHRpb246OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAzcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5kcm9wZG93bk9wdGlvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCBcbiAgICAgICAgcmdiYSgxMjQsIDU4LCAyMzcsIDAuMDUpLCBcbiAgICAgICAgcmdiYSgxMjQsIDU4LCAyMzcsIDAuMDIpXG4gICAgKTtcbiAgICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tc3BhY2luZy1tZCkgKyA0cHgpO1xufVxuXG4uZHJvcGRvd25PcHRpb246aG92ZXI6OmJlZm9yZSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xufVxuXG4uZHJvcGRvd25PcHRpb24uc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1wcmltYXJ5KSwgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnktaG92ZXIpXG4gICAgKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1pbnZlcnNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xufVxuXG4uZHJvcGRvd25PcHRpb24uc2VsZWN0ZWQ6OmJlZm9yZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmRyb3Bkb3duT3B0aW9uLnNlbGVjdGVkOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlciksIFxuICAgICAgICB2YXIoLS1jb2xvci1wcmltYXJ5LWFjdGl2ZSlcbiAgICApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpO1xufVxuXG4uZHJvcGRvd25PcHRpb24uaGlnaGxpZ2h0ZWQ6bm90KC5zZWxlY3RlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgXG4gICAgICAgIHJnYmEoMTI0LCA1OCwgMjM3LCAwLjA4KSwgXG4gICAgICAgIHJnYmEoMTI0LCA1OCwgMjM3LCAwLjAzKVxuICAgICk7XG4gICAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLXNwYWNpbmctbWQpICsgNHB4KTtcbn1cblxuLmRyb3Bkb3duT3B0aW9uLmhpZ2hsaWdodGVkOm5vdCguc2VsZWN0ZWQpOjpiZWZvcmUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbn1cblxuLyogQ2hlY2sgaWNvbiBmb3Igc2VsZWN0ZWQgaXRlbXMgKi9cbi5jaGVja0ljb24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xuICAgIGFuaW1hdGlvbjogY2hlY2tJbiAwLjNzIGVhc2Utb3V0O1xufVxuXG5Aa2V5ZnJhbWVzIGNoZWNrSW4ge1xuICAgIDAlIHsgXG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCkgcm90YXRlKC00NWRlZyk7XG4gICAgfVxuICAgIDEwMCUgeyBcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKSByb3RhdGUoMGRlZyk7XG4gICAgfVxufVxuXG4uZHJvcGRvd25Ob1Jlc3VsdHMge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBvcGFjaXR5OiAwLjc7XG59XG5cbi8qIFN0YWdnZXIgYW5pbWF0aW9uIGZvciBvcHRpb25zICovXG5Aa2V5ZnJhbWVzIHNsaWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwcHgpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICB9XG59XG5cbi5kcm9wZG93bk9wdGlvbiB7XG4gICAgYW5pbWF0aW9uOiBzbGlkZUluIDAuMnMgZWFzZS1vdXQgZm9yd2FyZHM7XG59XG5cbi8qIERhcmsgbW9kZSBhZGp1c3RtZW50cyAqL1xuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5kcm9wZG93blRyaWdnZXIge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSksIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KVxuICAgICk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXIpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmRyb3Bkb3duVHJpZ2dlcjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyLWhvdmVyKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5kcm9wZG93blRyaWdnZXIub3BlbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTY3LCAxMzksIDI1MCwgMC4xKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5kcm9wZG93bk1lbnUge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuZHJvcGRvd25TZWFyY2gge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICk7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuc2VhcmNoSW5wdXQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5zZWFyY2hJbnB1dDpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSgxNjcsIDEzOSwgMjUwLCAwLjEpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmRyb3Bkb3duT3B0aW9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIFxuICAgICAgICByZ2JhKDE2NywgMTM5LCAyNTAsIDAuMSksIFxuICAgICAgICByZ2JhKDE2NywgMTM5LCAyNTAsIDAuMDUpXG4gICAgKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5kcm9wZG93bk9wdGlvbi5zZWxlY3RlZCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHQpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeSlcbiAgICApO1xufVxuXG4vKiBNb2JpbGUgYWRqdXN0bWVudHMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5kcm9wZG93bk1lbnUge1xuICAgICAgICBtYXgtaGVpZ2h0OiA2MHZoO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIGxlZnQ6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgICAgICByaWdodDogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICAgIFxuICAgIC5kcm9wZG93bk9wdGlvbnMge1xuICAgICAgICBtYXgtaGVpZ2h0OiA0MHZoO1xuICAgIH1cbiAgICBcbiAgICAuZHJvcGRvd25UcmlnZ2VyIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4OyAvKiBQcmV2ZW50IHpvb20gb24gaU9TICovXG4gICAgICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIH1cbiAgICBcbiAgICAuc2VhcmNoSW5wdXQge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7IC8qIFByZXZlbnQgem9vbSBvbiBpT1MgKi9cbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogNDRweDtcbiAgICB9XG4gICAgXG4gICAgLmRyb3Bkb3duT3B0aW9uIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gICAgfVxufVxuXG4vKiBMb2FkaW5nIHN0YXRlICovXG4uZHJvcGRvd25UcmlnZ2VyLmxvYWRpbmcge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZHJvcGRvd25UcmlnZ2VyLmxvYWRpbmc6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IC0xMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgIDkwZGVnLFxuICAgICAgICB0cmFuc3BhcmVudCxcbiAgICAgICAgcmdiYSgxMjQsIDU4LCAyMzcsIDAuMSksXG4gICAgICAgIHRyYW5zcGFyZW50XG4gICAgKTtcbiAgICBhbmltYXRpb246IHNoaW1tZXIgMnMgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgc2hpbW1lciB7XG4gICAgMTAwJSB7XG4gICAgICAgIGxlZnQ6IDEwMCU7XG4gICAgfVxufVxuXG4vKiBEaXNhYmxlZCBzdGF0ZSAqL1xuLmRyb3Bkb3duVHJpZ2dlcjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXIpO1xufVxuXG4uZHJvcGRvd25UcmlnZ2VyOmRpc2FibGVkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbn0iXX0= */";
494
+ var styles$e = {"searchableDropdown":"SearchableDropdown-module_searchableDropdown__S2Nh5","dropdownTrigger":"SearchableDropdown-module_dropdownTrigger__dihdr","open":"SearchableDropdown-module_open__P7mRt","dropdownValue":"SearchableDropdown-module_dropdownValue__ydrc2","placeholder":"SearchableDropdown-module_placeholder__BwM2W","dropdownArrow":"SearchableDropdown-module_dropdownArrow__yd5fp","dropdownMenu":"SearchableDropdown-module_dropdownMenu__2Z5cc","dropdownSearch":"SearchableDropdown-module_dropdownSearch__NRk7j","searchInput":"SearchableDropdown-module_searchInput__VS2Hw","searchIcon":"SearchableDropdown-module_searchIcon__2vKFF","dropdownOptions":"SearchableDropdown-module_dropdownOptions__6YXqF","dropdownOption":"SearchableDropdown-module_dropdownOption__YwDr-","selected":"SearchableDropdown-module_selected__31JeB","highlighted":"SearchableDropdown-module_highlighted__P0bBq","checkIcon":"SearchableDropdown-module_checkIcon__YxowK","dropdownNoResults":"SearchableDropdown-module_dropdownNoResults__WW-Da","loading":"SearchableDropdown-module_loading__xlYf0"};
495
+ styleInject(css_248z$g);
496
+
497
+ /**
498
+ * SearchableDropdown component - Modern filterable dropdown with animations
499
+ *
500
+ * @component
501
+ * @description
502
+ * A sophisticated dropdown component with real-time search filtering, smooth animations,
503
+ * and keyboard navigation support. Features gradient backgrounds, slide-in animations
504
+ * for options, and a sliding indicator on hover. The dropdown menu includes a search
505
+ * field that filters options as you type.
506
+ *
507
+ * Features:
508
+ * - Real-time search filtering
509
+ * - Smooth animations with Framer Motion
510
+ * - Keyboard navigation (Arrow keys, Enter, Escape)
511
+ * - Custom scrollbar styling
512
+ * - Mobile-optimized with modal-like behavior on small screens
513
+ * - Loading and error states
514
+ * - Selected item highlighting with gradient background
515
+ *
516
+ * @example
517
+ * // Basic usage
518
+ * <SearchableDropdown
519
+ * label="Select Country"
520
+ * value={selectedCountry}
521
+ * onChange={setSelectedCountry}
522
+ * options={countryOptions}
523
+ * placeholder="Choose a country..."
524
+ * />
525
+ *
526
+ * @example
527
+ * // With empty option disabled
528
+ * <SearchableDropdown
529
+ * label="Required Field"
530
+ * value={requiredValue}
531
+ * onChange={setRequiredValue}
532
+ * options={options}
533
+ * allowEmpty={false}
534
+ * error={!requiredValue}
535
+ * />
536
+ */
537
+ function SearchableDropdown({ label, value, onChange, options, placeholder = "Select...", allowEmpty = true, disabled = false, loading = false, error = false }) {
538
+ const [isOpen, setIsOpen] = useState(false);
539
+ const [searchTerm, setSearchTerm] = useState("");
540
+ const [highlightedIndex, setHighlightedIndex] = useState(-1);
541
+ const dropdownRef = useRef(null);
542
+ const inputRef = useRef(null);
543
+ // Get the selected option's label
544
+ const selectedOption = options.find(opt => opt.value === value);
545
+ const displayValue = selectedOption ? selectedOption.label : '';
546
+ // Filter options based on search
547
+ const filteredOptions = options.filter(opt => opt.label.toLowerCase().includes(searchTerm.toLowerCase()));
548
+ // Add empty option to filtered list if allowed
549
+ const allOptions = allowEmpty ? [{ label: '(none)', value: '' }, ...filteredOptions] : filteredOptions;
550
+ // Close dropdown when clicking outside
551
+ useEffect(() => {
552
+ function handleClickOutside(event) {
553
+ if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
554
+ setIsOpen(false);
555
+ setSearchTerm("");
556
+ }
557
+ }
558
+ document.addEventListener('mousedown', handleClickOutside);
559
+ return () => document.removeEventListener('mousedown', handleClickOutside);
560
+ }, []);
561
+ // Focus search input when dropdown opens
562
+ useEffect(() => {
563
+ if (isOpen && inputRef.current) {
564
+ inputRef.current.focus();
565
+ }
566
+ }, [isOpen]);
567
+ const handleSelect = (optionValue) => {
568
+ onChange(optionValue);
569
+ setIsOpen(false);
570
+ setSearchTerm("");
571
+ setHighlightedIndex(-1);
572
+ };
573
+ const handleKeyDown = (e) => {
574
+ if (!isOpen)
575
+ return;
576
+ switch (e.key) {
577
+ case 'ArrowDown':
578
+ e.preventDefault();
579
+ setHighlightedIndex(prev => prev < allOptions.length - 1 ? prev + 1 : 0);
580
+ break;
581
+ case 'ArrowUp':
582
+ e.preventDefault();
583
+ setHighlightedIndex(prev => prev > 0 ? prev - 1 : allOptions.length - 1);
584
+ break;
585
+ case 'Enter':
586
+ e.preventDefault();
587
+ if (highlightedIndex >= 0 && highlightedIndex < allOptions.length) {
588
+ handleSelect(allOptions[highlightedIndex].value);
589
+ }
590
+ break;
591
+ case 'Escape':
592
+ e.preventDefault();
593
+ setIsOpen(false);
594
+ setSearchTerm("");
595
+ setHighlightedIndex(-1);
596
+ break;
597
+ }
598
+ };
599
+ const getTriggerClassName = () => {
600
+ const classes = [styles$e.dropdownTrigger];
601
+ if (isOpen)
602
+ classes.push(styles$e.open);
603
+ if (loading)
604
+ classes.push(styles$e.loading);
605
+ if (error)
606
+ classes.push(styles$e.error);
607
+ return classes.join(' ');
608
+ };
609
+ return (jsxs("div", { className: styles$e.searchableDropdown, ref: dropdownRef, onKeyDown: handleKeyDown, children: [jsx("label", { children: label }), jsxs(motion.button, { type: "button", className: getTriggerClassName(), onClick: () => !disabled && !loading && setIsOpen(!isOpen), whileTap: { scale: disabled ? 1 : 0.98 }, style: { willChange: 'transform' }, disabled: disabled, children: [jsx("span", { className: `${styles$e.dropdownValue} ${!displayValue ? styles$e.placeholder : ''}`, children: displayValue || placeholder }), jsx(FiChevronDown, { className: styles$e.dropdownArrow })] }), jsx(AnimatePresence, { children: isOpen && (jsxs(motion.div, { className: styles$e.dropdownMenu, initial: { opacity: 0, y: -10, scale: 0.95 }, animate: { opacity: 1, y: 0, scale: 1 }, exit: { opacity: 0, y: -10, scale: 0.95 }, transition: { duration: 0.2, ease: "easeOut" }, children: [jsxs("div", { className: styles$e.dropdownSearch, children: [jsx(FiSearch, { className: styles$e.searchIcon }), jsx("input", { ref: inputRef, type: "text", className: styles$e.searchInput, placeholder: "Cerca...", value: searchTerm, onChange: (e) => setSearchTerm(e.target.value), onClick: (e) => e.stopPropagation() })] }), jsxs("div", { className: styles$e.dropdownOptions, children: [allOptions.map((opt, index) => {
610
+ const isSelected = value === opt.value;
611
+ const isHighlighted = highlightedIndex === index;
612
+ return (jsxs(motion.button, { type: "button", className: `${styles$e.dropdownOption} ${isSelected ? styles$e.selected : ''} ${isHighlighted ? styles$e.highlighted : ''}`, onClick: () => handleSelect(opt.value), onMouseEnter: () => setHighlightedIndex(index), initial: { opacity: 0, x: -20 }, animate: { opacity: 1, x: 0 }, transition: { delay: index * 0.02 }, whileTap: { scale: 0.98 }, style: { willChange: 'transform' }, children: [jsx("span", { children: opt.label }), isSelected && jsx(FiCheck, { className: styles$e.checkIcon })] }, `${opt.value}-${index}`));
613
+ }), allOptions.length === 0 && (jsx(motion.div, { className: styles$e.dropdownNoResults, initial: { opacity: 0 }, animate: { opacity: 1 }, children: "No results found" }))] })] })) })] }));
614
+ }
615
+
616
+ var css_248z$f = ".SelectInput-module_selectInput__s6zEg{margin-bottom:var(--spacing-lg);position:relative}.SelectInput-module_selectInput__s6zEg label{color:var(--color-text);display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);margin-bottom:var(--spacing-sm);transition:color var(--transition-base)}.SelectInput-module_selectWrapper__Qr4pl{position:relative;width:100%}.SelectInput-module_selectInput__s6zEg select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background:linear-gradient(135deg,var(--color-background),var(--color-background-secondary));border:2px solid var(--color-border);border-radius:var(--radius-lg);color:var(--color-text);cursor:pointer;display:block;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);min-height:44px;outline:none;padding:var(--spacing-sm) var(--spacing-md);padding-right:48px;transition:all var(--transition-base);width:100%}.SelectInput-module_selectInput__s6zEg select:hover:not(:focus):not(:disabled){background:var(--color-background);border-color:var(--color-border-hover);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.SelectInput-module_selectInput__s6zEg select:focus{background:var(--color-background);border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(124,58,237,.1);transform:translateY(-2px)}.SelectInput-module_selectInput__s6zEg select:disabled{background:var(--color-background-tertiary);border-color:var(--color-border);color:var(--color-text-tertiary);cursor:not-allowed;opacity:.6;transform:none}.SelectInput-module_selectIcon__9pjhf{color:var(--color-primary);height:20px;pointer-events:none;position:absolute;right:var(--spacing-md);top:50%;transform:translateY(-50%);transition:color var(--transition-base);width:20px}.SelectInput-module_selectInput__s6zEg select:focus~.SelectInput-module_selectIcon__9pjhf,.SelectInput-module_selectInput__s6zEg select:hover:not(:disabled)~.SelectInput-module_selectIcon__9pjhf{color:var(--color-primary-hover)}.SelectInput-module_selectWrapper__Qr4pl:before{background:linear-gradient(135deg,rgba(124,58,237,.05),rgba(124,58,237,.1));border-radius:var(--radius-md);content:\"\";height:32px;opacity:0;pointer-events:none;position:absolute;right:8px;top:50%;transform:translateY(-50%);transition:opacity var(--transition-base);width:32px}.SelectInput-module_selectInput__s6zEg select:focus~:before{opacity:1}.SelectInput-module_selectInput__s6zEg select option{background:var(--color-background);color:var(--color-text);font-weight:var(--font-weight-normal);padding:var(--spacing-sm)}.SelectInput-module_selectInput__s6zEg select option:checked{background:linear-gradient(135deg,var(--color-primary-lighter),var(--color-primary-light));color:var(--color-text)}.SelectInput-module_selectInput__s6zEg select option[value=\"\"]{color:var(--color-text-secondary);font-style:italic}.SelectInput-module_error__3WNJc select{animation:SelectInput-module_shake__Vo1BV .3s cubic-bezier(.36,.07,.19,.97) both;background:linear-gradient(135deg,var(--color-error-bg),var(--color-background));border-color:var(--color-error)}.SelectInput-module_error__3WNJc label{color:var(--color-error)}.SelectInput-module_error__3WNJc select:focus{box-shadow:0 0 0 3px rgba(244,63,94,.15)}.SelectInput-module_error__3WNJc .SelectInput-module_selectIcon__9pjhf{color:var(--color-error)}@keyframes SelectInput-module_shake__Vo1BV{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(2px)}30%,50%,70%{transform:translateX(-3px)}40%,60%{transform:translateX(3px)}}.SelectInput-module_success__WJ5ga select{border-color:var(--color-success)}.SelectInput-module_success__WJ5ga:after{animation:SelectInput-module_checkIn__JE0oH .3s ease-out;color:var(--color-success);content:\"✓\";font-weight:700;position:absolute;right:52px;top:50%;transform:translateY(-50%)}@keyframes SelectInput-module_checkIn__JE0oH{0%{opacity:0;transform:translateY(-50%) scale(0)}to{opacity:1;transform:translateY(-50%) scale(1)}}.SelectInput-module_loading__n35N9 select{overflow:hidden;position:relative}.SelectInput-module_loading__n35N9:after{animation:SelectInput-module_shimmer__bMGaz 2s infinite;background:linear-gradient(90deg,transparent,rgba(124,58,237,.1),transparent);content:\"\";height:100%;left:-100%;pointer-events:none;position:absolute;top:0;width:100%}@keyframes SelectInput-module_shimmer__bMGaz{to{left:100%}}[data-theme=dark] .SelectInput-module_selectInput__s6zEg select{background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));border-color:var(--color-border)}[data-theme=dark] .SelectInput-module_selectInput__s6zEg select:hover:not(:disabled){background:var(--color-background-secondary);border-color:var(--color-border-hover)}[data-theme=dark] .SelectInput-module_selectInput__s6zEg select:focus{background:var(--color-background-secondary);border-color:var(--color-primary-light);box-shadow:0 0 0 3px rgba(167,139,250,.1)}[data-theme=dark] .SelectInput-module_selectIcon__9pjhf{color:var(--color-primary-light)}[data-theme=dark] .SelectInput-module_selectWrapper__Qr4pl:before{background:linear-gradient(135deg,rgba(167,139,250,.05),rgba(167,139,250,.1))}[data-theme=dark] .SelectInput-module_selectInput__s6zEg select option{background:var(--color-background-secondary)}[data-theme=dark] .SelectInput-module_selectInput__s6zEg select option:checked{background:var(--color-primary)}@media (max-width:768px){.SelectInput-module_selectInput__s6zEg{margin-bottom:var(--spacing-md)}.SelectInput-module_selectInput__s6zEg label{font-size:var(--font-size-base);margin-bottom:var(--spacing-xs)}.SelectInput-module_selectInput__s6zEg select{font-size:16px;min-height:48px;padding:var(--spacing-md);padding-right:52px}.SelectInput-module_selectIcon__9pjhf{height:24px;right:var(--spacing-md);width:24px}.SelectInput-module_selectWrapper__Qr4pl:before{height:36px;right:10px;width:36px}.SelectInput-module_selectInput__s6zEg select:active:not(:disabled){background:var(--color-background-tertiary);transform:translateY(0)}}@-moz-document url-prefix(){.SelectInput-module_selectInput__s6zEg select{padding-bottom:calc(var(--spacing-sm) + 1px);padding-top:calc(var(--spacing-sm) + 1px)}}@media (prefers-contrast:high){.SelectInput-module_selectInput__s6zEg select{border-width:3px}.SelectInput-module_selectInput__s6zEg select:focus{outline:2px solid var(--color-primary);outline-offset:2px}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbGVjdElucHV0Lm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUNBQ0ksK0JBQWdDLENBQ2hDLGlCQUNKLENBRUEsNkNBSUksdUJBQXdCLENBSHhCLGFBQWMsQ0FDZCw2QkFBOEIsQ0FDOUIsdUNBQXdDLENBR3hDLHlDQUEwQyxDQUQxQywrQkFBZ0MsQ0FFaEMsdUNBQ0osQ0FFQSx5Q0FDSSxpQkFBa0IsQ0FDbEIsVUFDSixDQUVBLDhDQWNJLGVBQWdCLENBQ2hCLHVCQUF3QixDQUN4QixvQkFBcUIsQ0FWckIsNEZBR0MsQ0FMRCxvQ0FBcUMsQ0FDckMsOEJBQStCLENBTy9CLHVCQUF3QixDQUt4QixjQUFlLENBSmYsYUFBYyxDQUhkLCtCQUFnQyxDQUNoQyxxQ0FBc0MsQ0FRdEMsZUFBZ0IsQ0FDaEIsWUFBYSxDQWxCYiwyQ0FBNEMsQ0FDNUMsa0JBQW1CLENBZW5CLHFDQUFzQyxDQWpCdEMsVUFvQkosQ0FFQSwrRUFFSSxrQ0FBbUMsQ0FEbkMsc0NBQXVDLENBRXZDLDJCQUE0QixDQUM1QiwwQkFDSixDQUVBLG9EQUVJLGtDQUFtQyxDQURuQyxpQ0FBa0MsQ0FFbEMsd0NBQTZDLENBQzdDLDBCQUNKLENBRUEsdURBQ0ksMkNBQTRDLENBQzVDLGdDQUFpQyxDQUNqQyxnQ0FBaUMsQ0FDakMsa0JBQW1CLENBQ25CLFVBQVksQ0FDWixjQUNKLENBR0Esc0NBTUksMEJBQTJCLENBRTNCLFdBQVksQ0FIWixtQkFBb0IsQ0FKcEIsaUJBQWtCLENBQ2xCLHVCQUF3QixDQUN4QixPQUFRLENBQ1IsMEJBQTJCLENBSzNCLHVDQUF3QyxDQUZ4QyxVQUdKLENBTUEsbU1BQ0ksZ0NBQ0osQ0FHQSxnREFRSSwyRUFHQyxDQUNELDhCQUErQixDQVgvQixVQUFXLENBTVgsV0FBWSxDQU9aLFNBQVUsQ0FEVixtQkFBb0IsQ0FYcEIsaUJBQWtCLENBQ2xCLFNBQVUsQ0FDVixPQUFRLENBQ1IsMEJBQTJCLENBVTNCLHlDQUEwQyxDQVQxQyxVQVVKLENBRUEsNERBQ0ksU0FDSixDQUdBLHFEQUVJLGtDQUFtQyxDQUNuQyx1QkFBd0IsQ0FDeEIscUNBQXNDLENBSHRDLHlCQUlKLENBRUEsNkRBQ0ksMEZBR0MsQ0FDRCx1QkFDSixDQUdBLCtEQUNJLGlDQUFrQyxDQUNsQyxpQkFDSixDQUdBLHdDQU1JLGdGQUErRCxDQUovRCxnRkFHQyxDQUpELCtCQU1KLENBRUEsdUNBQ0ksd0JBQ0osQ0FFQSw4Q0FDSSx3Q0FDSixDQUVBLHVFQUNJLHdCQUNKLENBRUEsMkNBQ0ksUUFBVywwQkFBNkIsQ0FDeEMsUUFBVyx5QkFBNEIsQ0FDdkMsWUFBZ0IsMEJBQTZCLENBQzdDLFFBQVcseUJBQTRCLENBQzNDLENBR0EsMENBQ0ksaUNBQ0osQ0FFQSx5Q0FRSSx3REFBZ0MsQ0FGaEMsMEJBQTJCLENBTDNCLFdBQVksQ0FNWixlQUFpQixDQUxqQixpQkFBa0IsQ0FDbEIsVUFBVyxDQUNYLE9BQVEsQ0FDUiwwQkFJSixDQUVBLDZDQUNJLEdBQ0ksU0FBVSxDQUNWLG1DQUNKLENBQ0EsR0FDSSxTQUFVLENBQ1YsbUNBQ0osQ0FDSixDQUdBLDBDQUVJLGVBQWdCLENBRGhCLGlCQUVKLENBRUEseUNBYUksdURBQThCLENBTjlCLDZFQUtDLENBWEQsVUFBVyxDQUtYLFdBQVksQ0FGWixVQUFXLENBVVgsbUJBQW9CLENBWnBCLGlCQUFrQixDQUNsQixLQUFNLENBRU4sVUFVSixDQUVBLDZDQUNJLEdBQ0ksU0FDSixDQUNKLENBR0EsZ0VBQ0kscUdBR0MsQ0FDRCxnQ0FDSixDQUVBLHFGQUNJLDRDQUE2QyxDQUM3QyxzQ0FDSixDQUVBLHNFQUNJLDRDQUE2QyxDQUM3Qyx1Q0FBd0MsQ0FDeEMseUNBQ0osQ0FFQSx3REFDSSxnQ0FDSixDQUVBLGtFQUNJLDZFQUlKLENBRUEsdUVBQ0ksNENBQ0osQ0FFQSwrRUFDSSwrQkFDSixDQUdBLHlCQUNJLHVDQUNJLCtCQUNKLENBRUEsNkNBQ0ksK0JBQWdDLENBQ2hDLCtCQUNKLENBRUEsOENBSUksY0FBZSxDQUhmLGVBQWdCLENBQ2hCLHlCQUEwQixDQUMxQixrQkFFSixDQUVBLHNDQUdJLFdBQVksQ0FGWix1QkFBd0IsQ0FDeEIsVUFFSixDQUVBLGdEQUVJLFdBQVksQ0FDWixVQUFXLENBRlgsVUFHSixDQUdBLG9FQUVJLDJDQUE0QyxDQUQ1Qyx1QkFFSixDQUNKLENBR0EsNEJBQ0ksOENBRUksNENBQTZDLENBRDdDLHlDQUVKLENBQ0osQ0FHQSwrQkFDSSw4Q0FDSSxnQkFDSixDQUVBLG9EQUNJLHNDQUF1QyxDQUN2QyxrQkFDSixDQUNKIiwiZmlsZSI6IlNlbGVjdElucHV0Lm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuc2VsZWN0SW5wdXQge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnNlbGVjdElucHV0IGxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxldHRlci1zcGFjaW5nLXdpZGUpO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5zZWxlY3RXcmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5zZWxlY3RJbnB1dCBzZWxlY3Qge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbWQpO1xuICAgIHBhZGRpbmctcmlnaHQ6IDQ4cHg7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgbWluLWhlaWdodDogNDRweDtcbiAgICBvdXRsaW5lOiBub25lO1xufVxuXG4uc2VsZWN0SW5wdXQgc2VsZWN0OmhvdmVyOm5vdCg6Zm9jdXMpOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlci1ob3Zlcik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG59XG5cbi5zZWxlY3RJbnB1dCBzZWxlY3Q6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTI0LCA1OCwgMjM3LCAwLjEpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLnNlbGVjdElucHV0IHNlbGVjdDpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5KTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qIEN1c3RvbSBkcm9wZG93biBpY29uICovXG4uc2VsZWN0SWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uc2VsZWN0SW5wdXQgc2VsZWN0OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIH4gLnNlbGVjdEljb24ge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWhvdmVyKTtcbn1cblxuLnNlbGVjdElucHV0IHNlbGVjdDpmb2N1cyB+IC5zZWxlY3RJY29uIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ob3Zlcik7XG59XG5cbi8qIEljb24gYmFja2dyb3VuZCBjaXJjbGUgKi9cbi5zZWxlY3RXcmFwcGVyOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogOHB4O1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHJnYmEoMTI0LCA1OCwgMjM3LCAwLjA1KSwgXG4gICAgICAgIHJnYmEoMTI0LCA1OCwgMjM3LCAwLjEpXG4gICAgKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uc2VsZWN0SW5wdXQgc2VsZWN0OmZvY3VzIH4gOjpiZWZvcmUge1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi8qIE9wdGlvbiBzdHlsaW5nIChsaW1pdGVkIGJyb3dzZXIgc3VwcG9ydCkgKi9cbi5zZWxlY3RJbnB1dCBzZWxlY3Qgb3B0aW9uIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW5vcm1hbCk7XG59XG5cbi5zZWxlY3RJbnB1dCBzZWxlY3Qgb3B0aW9uOmNoZWNrZWQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0ZXIpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodClcbiAgICApO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbn1cblxuLyogUGxhY2Vob2xkZXIgb3B0aW9uIHN0eWxpbmcgKi9cbi5zZWxlY3RJbnB1dCBzZWxlY3Qgb3B0aW9uW3ZhbHVlPVwiXCJdIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyogRXJyb3Igc3RhdGUgKi9cbi5lcnJvciBzZWxlY3Qge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1lcnJvci1iZyksIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKVxuICAgICk7XG4gICAgYW5pbWF0aW9uOiBzaGFrZSAwLjNzIGN1YmljLWJlemllcigwLjM2LCAwLjA3LCAwLjE5LCAwLjk3KSBib3RoO1xufVxuXG4uZXJyb3IgbGFiZWwge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1lcnJvcik7XG59XG5cbi5lcnJvciBzZWxlY3Q6Zm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDI0NCwgNjMsIDk0LCAwLjE1KTtcbn1cblxuLmVycm9yIC5zZWxlY3RJY29uIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xufVxuXG5Aa2V5ZnJhbWVzIHNoYWtlIHtcbiAgICAxMCUsIDkwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMXB4KTsgfVxuICAgIDIwJSwgODAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDJweCk7IH1cbiAgICAzMCUsIDUwJSwgNzAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zcHgpOyB9XG4gICAgNDAlLCA2MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoM3B4KTsgfVxufVxuXG4vKiBTdWNjZXNzIHN0YXRlICovXG4uc3VjY2VzcyBzZWxlY3Qge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3Itc3VjY2Vzcyk7XG59XG5cbi5zdWNjZXNzOjphZnRlciB7XG4gICAgY29udGVudDogJ+Kckyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiA1MnB4O1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3Itc3VjY2Vzcyk7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgYW5pbWF0aW9uOiBjaGVja0luIDAuM3MgZWFzZS1vdXQ7XG59XG5cbkBrZXlmcmFtZXMgY2hlY2tJbiB7XG4gICAgMCUgeyBcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDApO1xuICAgIH1cbiAgICAxMDAlIHsgXG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi8qIExvYWRpbmcgc3RhdGUgKi9cbi5sb2FkaW5nIHNlbGVjdCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5sb2FkaW5nOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICA5MGRlZyxcbiAgICAgICAgdHJhbnNwYXJlbnQsXG4gICAgICAgIHJnYmEoMTI0LCA1OCwgMjM3LCAwLjEpLFxuICAgICAgICB0cmFuc3BhcmVudFxuICAgICk7XG4gICAgYW5pbWF0aW9uOiBzaGltbWVyIDJzIGluZmluaXRlO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5Aa2V5ZnJhbWVzIHNoaW1tZXIge1xuICAgIDEwMCUge1xuICAgICAgICBsZWZ0OiAxMDAlO1xuICAgIH1cbn1cblxuLyogRGFyayBtb2RlIGFkanVzdG1lbnRzICovXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnNlbGVjdElucHV0IHNlbGVjdCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpXG4gICAgKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuc2VsZWN0SW5wdXQgc2VsZWN0OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXItaG92ZXIpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnNlbGVjdElucHV0IHNlbGVjdDpmb2N1cyB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTY3LCAxMzksIDI1MCwgMC4xKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5zZWxlY3RJY29uIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuc2VsZWN0V3JhcHBlcjo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgcmdiYSgxNjcsIDEzOSwgMjUwLCAwLjA1KSwgXG4gICAgICAgIHJnYmEoMTY3LCAxMzksIDI1MCwgMC4xKVxuICAgICk7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuc2VsZWN0SW5wdXQgc2VsZWN0IG9wdGlvbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnNlbGVjdElucHV0IHNlbGVjdCBvcHRpb246Y2hlY2tlZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG59XG5cbi8qIE1vYmlsZSBvcHRpbWl6YXRpb25zICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAuc2VsZWN0SW5wdXQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICB9XG4gICAgXG4gICAgLnNlbGVjdElucHV0IGxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmcteHMpO1xuICAgIH1cbiAgICBcbiAgICAuc2VsZWN0SW5wdXQgc2VsZWN0IHtcbiAgICAgICAgbWluLWhlaWdodDogNDhweDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDUycHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDsgLyogUHJldmVudHMgaU9TIHpvb20gKi9cbiAgICB9XG4gICAgXG4gICAgLnNlbGVjdEljb24ge1xuICAgICAgICByaWdodDogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgfVxuICAgIFxuICAgIC5zZWxlY3RXcmFwcGVyOjpiZWZvcmUge1xuICAgICAgICB3aWR0aDogMzZweDtcbiAgICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgICByaWdodDogMTBweDtcbiAgICB9XG4gICAgXG4gICAgLyogSW1wcm92ZSB0b3VjaCBmZWVkYmFjayAqL1xuICAgIC5zZWxlY3RJbnB1dCBzZWxlY3Q6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KTtcbiAgICB9XG59XG5cbi8qIEZpcmVmb3ggc3BlY2lmaWMgZml4ZXMgKi9cbkAtbW96LWRvY3VtZW50IHVybC1wcmVmaXgoKSB7XG4gICAgLnNlbGVjdElucHV0IHNlbGVjdCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLXNwYWNpbmctc20pICsgMXB4KTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IGNhbGModmFyKC0tc3BhY2luZy1zbSkgKyAxcHgpO1xuICAgIH1cbn1cblxuLyogSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAgIC5zZWxlY3RJbnB1dCBzZWxlY3Qge1xuICAgICAgICBib3JkZXItd2lkdGg6IDNweDtcbiAgICB9XG4gICAgXG4gICAgLnNlbGVjdElucHV0IHNlbGVjdDpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICB9XG59Il19 */";
617
+ var styles$d = {"selectInput":"SelectInput-module_selectInput__s6zEg","selectWrapper":"SelectInput-module_selectWrapper__Qr4pl","selectIcon":"SelectInput-module_selectIcon__9pjhf","error":"SelectInput-module_error__3WNJc","success":"SelectInput-module_success__WJ5ga","loading":"SelectInput-module_loading__n35N9"};
618
+ styleInject(css_248z$f);
619
+
620
+ /**
621
+ * SelectInput component - Styled dropdown selector with flexible option format
622
+ *
623
+ * @component
624
+ * @description
625
+ * A customizable select dropdown that accepts both simple string arrays and
626
+ * label-value object arrays for options. Features custom styling that maintains
627
+ * consistency across browsers while preserving native select functionality.
628
+ * Includes a styled chevron icon for better visual feedback.
629
+ *
630
+ * @example
631
+ * // With simple string options
632
+ * <SelectInput
633
+ * label="Country"
634
+ * value={country}
635
+ * onChange={setCountry}
636
+ * options={['Italy', 'France', 'Spain', 'Germany']}
637
+ * placeholder="Select a country"
638
+ * />
639
+ *
640
+ * @example
641
+ * // With label-value pairs
642
+ * <SelectInput
643
+ * label="Status"
644
+ * value={status}
645
+ * onChange={setStatus}
646
+ * options={[
647
+ * { label: 'Active', value: 'active' },
648
+ * { label: 'Pending', value: 'pending' },
649
+ * { label: 'Archived', value: 'archived' }
650
+ * ]}
651
+ * />
652
+ */
653
+ function SelectInput({ label, value, onChange, options, placeholder = "Select...", disabled = false, error = false, success = false, loading = false, required = false }) {
654
+ const getClassName = () => {
655
+ const classes = [styles$d.selectInput];
656
+ if (error)
657
+ classes.push(styles$d.error);
658
+ if (success)
659
+ classes.push(styles$d.success);
660
+ if (loading)
661
+ classes.push(styles$d.loading);
662
+ return classes.join(' ');
663
+ };
664
+ return (jsxs("div", { className: getClassName(), children: [jsxs("label", { children: [label, required && jsx("span", { style: { color: 'var(--color-error)' }, children: " *" })] }), jsxs("div", { className: styles$d.selectWrapper, children: [jsxs("select", { value: value, onChange: e => onChange(e.target.value), disabled: disabled || loading, required: required, children: [jsx("option", { value: "", children: placeholder }), options.map(opt => {
665
+ const optionValue = typeof opt === 'string' ? opt : opt.value;
666
+ const optionLabel = typeof opt === 'string' ? opt : opt.label;
667
+ return (jsx("option", { value: optionValue, children: optionLabel }, optionValue));
668
+ })] }), jsx(FiChevronDown, { className: styles$d.selectIcon })] })] }));
669
+ }
670
+
671
+ var css_248z$e = ".TextArea-module_textareaContainer__AquFj{margin-bottom:var(--spacing-lg);position:relative}.TextArea-module_textareaLabel__7Vmyx{color:var(--color-text);display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);margin-bottom:var(--spacing-sm);transition:color var(--transition-base)}.TextArea-module_requiredIndicator__3Fxyy{color:var(--color-error);font-weight:var(--font-weight-bold);margin-left:4px}.TextArea-module_textareaInput__VCDZA{background:linear-gradient(135deg,var(--color-background),var(--color-background-secondary));border:2px solid var(--color-border);border-radius:var(--radius-lg);box-sizing:border-box;color:var(--color-text);font-family:inherit;font-size:var(--font-size-base);line-height:var(--line-height-relaxed);max-height:400px;min-height:120px;outline:none;padding:var(--spacing-sm) var(--spacing-md);resize:vertical;transition:all var(--transition-base);width:100%}.TextArea-module_textareaInput__VCDZA:hover:not(:focus):not(:disabled){background:var(--color-background);border-color:var(--color-border-hover);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.TextArea-module_textareaInput__VCDZA:focus{background:var(--color-background);border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(124,58,237,.1);transform:translateY(-2px)}.TextArea-module_textareaInput__VCDZA::placeholder{color:var(--color-text-secondary);opacity:.6}.TextArea-module_textareaInput__VCDZA:disabled{background:var(--color-background-tertiary);border-color:var(--color-border);color:var(--color-text-tertiary);cursor:not-allowed;opacity:.6;resize:none;transform:none}.TextArea-module_characterCount__9FO5N{background:linear-gradient(135deg,var(--color-background),var(--color-background-secondary));border:1px solid var(--color-border);border-radius:var(--radius-sm);bottom:-28px;color:var(--color-text-secondary);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);letter-spacing:var(--letter-spacing-wide);padding:4px 8px;position:absolute;right:0;transition:all var(--transition-base)}.TextArea-module_characterCount__9FO5N.TextArea-module_nearLimit__cUdnw{background:linear-gradient(135deg,rgba(245,158,11,.05),rgba(245,158,11,.1));border-color:var(--color-warning-light);color:var(--color-warning)}.TextArea-module_characterCount__9FO5N.TextArea-module_atLimit__GoWCC{animation:TextArea-module_pulse__baLyb 1s ease-in-out infinite;background:linear-gradient(135deg,rgba(244,63,94,.05),rgba(244,63,94,.1));border-color:var(--color-error-light);color:var(--color-error);font-weight:var(--font-weight-semibold)}@keyframes TextArea-module_pulse__baLyb{0%,to{opacity:1;transform:scale(1)}50%{opacity:.9;transform:scale(1.05)}}.TextArea-module_textareaInput__VCDZA:hover:after{border-bottom:2px solid var(--color-border-hover);border-right:2px solid var(--color-border-hover);bottom:4px;content:\"\";height:12px;opacity:.5;position:absolute;right:4px;width:12px}.TextArea-module_textareaInput__VCDZA::-webkit-scrollbar{width:6px}.TextArea-module_textareaInput__VCDZA::-webkit-scrollbar-track{background:var(--color-background-secondary);border-radius:var(--radius-sm)}.TextArea-module_textareaInput__VCDZA::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm);transition:background var(--transition-base)}.TextArea-module_textareaInput__VCDZA::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}.TextArea-module_error__ciHgb .TextArea-module_textareaInput__VCDZA{animation:TextArea-module_shake__pmEuv .3s cubic-bezier(.36,.07,.19,.97) both;background:linear-gradient(135deg,var(--color-error-bg),var(--color-background));border-color:var(--color-error)}.TextArea-module_error__ciHgb .TextArea-module_textareaLabel__7Vmyx{color:var(--color-error)}.TextArea-module_error__ciHgb .TextArea-module_textareaInput__VCDZA:focus{box-shadow:0 0 0 3px rgba(244,63,94,.15)}@keyframes TextArea-module_shake__pmEuv{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(2px)}30%,50%,70%{transform:translateX(-3px)}40%,60%{transform:translateX(3px)}}.TextArea-module_success__a0-xD .TextArea-module_textareaInput__VCDZA{border-color:var(--color-success)}.TextArea-module_success__a0-xD:after{animation:TextArea-module_checkIn__cfPvm .3s ease-out;color:var(--color-success);content:\"✓\";font-size:var(--font-size-lg);font-weight:700;position:absolute;right:8px;top:8px}@keyframes TextArea-module_checkIn__cfPvm{0%{opacity:0;transform:scale(0) rotate(-45deg)}to{opacity:1;transform:scale(1) rotate(0)}}.TextArea-module_loading__CSFBR .TextArea-module_textareaInput__VCDZA{animation:TextArea-module_loading__CSFBR 2s ease-in-out infinite;background-image:linear-gradient(90deg,var(--color-background) 0,rgba(124,58,237,.05) 50%,var(--color-background) 100%);background-size:200% 100%}@keyframes TextArea-module_loading__CSFBR{0%{background-position:200% 0}to{background-position:-200% 0}}.TextArea-module_focusMode__9A8U- .TextArea-module_textareaInput__VCDZA{min-height:200px;transition:min-height var(--transition-slow)}[data-theme=dark] .TextArea-module_textareaInput__VCDZA{background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));border-color:var(--color-border)}[data-theme=dark] .TextArea-module_textareaInput__VCDZA:hover:not(:focus):not(:disabled){background:var(--color-background-secondary);border-color:var(--color-border-hover)}[data-theme=dark] .TextArea-module_textareaInput__VCDZA:focus{background:var(--color-background-secondary);border-color:var(--color-primary-light);box-shadow:0 0 0 3px rgba(167,139,250,.1)}[data-theme=dark] .TextArea-module_characterCount__9FO5N{background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));border-color:var(--color-border)}[data-theme=dark] .TextArea-module_textareaInput__VCDZA::-webkit-scrollbar-track{background:var(--color-background-tertiary)}[data-theme=dark] .TextArea-module_textareaInput__VCDZA::-webkit-scrollbar-thumb{background:var(--color-border)}@media (max-width:768px){.TextArea-module_textareaContainer__AquFj{margin-bottom:calc(var(--spacing-lg) + 20px)}.TextArea-module_textareaLabel__7Vmyx{font-size:var(--font-size-base);margin-bottom:var(--spacing-xs)}.TextArea-module_textareaInput__VCDZA{border-radius:var(--radius-md);font-size:16px;min-height:100px;padding:var(--spacing-md)}.TextArea-module_textareaInput__VCDZA:focus{min-height:150px}.TextArea-module_characterCount__9FO5N{font-size:var(--font-size-sm);padding:6px 10px}}@media (prefers-contrast:high){.TextArea-module_textareaInput__VCDZA{border-width:3px}.TextArea-module_textareaInput__VCDZA:focus{outline:2px solid var(--color-primary);outline-offset:2px}}@media (prefers-reduced-motion:reduce){.TextArea-module_characterCount__9FO5N,.TextArea-module_textareaInput__VCDZA{transition:none}.TextArea-module_atLimit__GoWCC{animation:none}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRleHRBcmVhLm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMENBQ0ksK0JBQWdDLENBQ2hDLGlCQUNKLENBRUEsc0NBSUksdUJBQXdCLENBSHhCLGFBQWMsQ0FDZCw2QkFBOEIsQ0FDOUIsdUNBQXdDLENBR3hDLHlDQUEwQyxDQUQxQywrQkFBZ0MsQ0FFaEMsdUNBQ0osQ0FFQSwwQ0FDSSx3QkFBeUIsQ0FFekIsbUNBQW9DLENBRHBDLGVBRUosQ0FFQSxzQ0FLSSw0RkFHQyxDQUxELG9DQUFxQyxDQUNyQyw4QkFBK0IsQ0FjL0IscUJBQXNCLENBUHRCLHVCQUF3QixDQUl4QixtQkFBb0IsQ0FOcEIsK0JBQWdDLENBQ2hDLHNDQUF1QyxDQUl2QyxnQkFBaUIsQ0FEakIsZ0JBQWlCLENBSWpCLFlBQWEsQ0FmYiwyQ0FBNEMsQ0FVNUMsZUFBZ0IsQ0FJaEIscUNBQXNDLENBZnRDLFVBa0JKLENBRUEsdUVBRUksa0NBQW1DLENBRG5DLHNDQUF1QyxDQUV2QywyQkFBNEIsQ0FDNUIsMEJBQ0osQ0FFQSw0Q0FFSSxrQ0FBbUMsQ0FEbkMsaUNBQWtDLENBRWxDLHdDQUE2QyxDQUM3QywwQkFDSixDQUVBLG1EQUNJLGlDQUFrQyxDQUNsQyxVQUNKLENBRUEsK0NBQ0ksMkNBQTRDLENBQzVDLGdDQUFpQyxDQUNqQyxnQ0FBaUMsQ0FDakMsa0JBQW1CLENBQ25CLFVBQVksQ0FFWixXQUFZLENBRFosY0FFSixDQUdBLHVDQU9JLDRGQUdDLENBQ0Qsb0NBQXFDLENBQ3JDLDhCQUErQixDQVYvQixZQUFhLENBR2IsaUNBQWtDLENBRGxDLDZCQUE4QixDQVM5QixxQ0FBc0MsQ0FFdEMseUNBQTBDLENBVDFDLGVBQWdCLENBTGhCLGlCQUFrQixDQUVsQixPQUFRLENBV1IscUNBRUosQ0FHQSx3RUFFSSwyRUFHQyxDQUNELHVDQUF3QyxDQUx4QywwQkFNSixDQUVBLHNFQVFJLDhEQUF3QyxDQU54Qyx5RUFHQyxDQUNELHFDQUFzQyxDQUx0Qyx3QkFBeUIsQ0FNekIsdUNBRUosQ0FFQSx3Q0FDSSxNQUVJLFNBQVUsQ0FEVixrQkFFSixDQUNBLElBRUksVUFBWSxDQURaLHFCQUVKLENBQ0osQ0FHQSxrREFRSSxpREFBa0QsQ0FEbEQsZ0RBQWlELENBSmpELFVBQVcsQ0FGWCxVQUFXLENBS1gsV0FBWSxDQUdaLFVBQVksQ0FQWixpQkFBa0IsQ0FFbEIsU0FBVSxDQUNWLFVBS0osQ0FHQSx5REFDSSxTQUNKLENBRUEsK0RBQ0ksNENBQTZDLENBQzdDLDhCQUNKLENBRUEsK0RBQ0ksOEJBQStCLENBQy9CLDhCQUErQixDQUMvQiw0Q0FDSixDQUVBLHFFQUNJLG9DQUNKLENBR0Esb0VBTUksNkVBQStELENBSi9ELGdGQUdDLENBSkQsK0JBTUosQ0FFQSxvRUFDSSx3QkFDSixDQUVBLDBFQUNJLHdDQUNKLENBRUEsd0NBQ0ksUUFBVywwQkFBNkIsQ0FDeEMsUUFBVyx5QkFBNEIsQ0FDdkMsWUFBZ0IsMEJBQTZCLENBQzdDLFFBQVcseUJBQTRCLENBQzNDLENBR0Esc0VBQ0ksaUNBQ0osQ0FFQSxzQ0FRSSxxREFBZ0MsQ0FIaEMsMEJBQTJCLENBSjNCLFdBQVksQ0FNWiw2QkFBOEIsQ0FEOUIsZUFBaUIsQ0FKakIsaUJBQWtCLENBRWxCLFNBQVUsQ0FEVixPQU1KLENBRUEsMENBQ0ksR0FDSSxTQUFVLENBQ1YsaUNBQ0osQ0FDQSxHQUNJLFNBQVUsQ0FDViw0QkFDSixDQUNKLENBR0Esc0VBUUksZ0VBQTBDLENBUDFDLHVIQUtDLENBQ0QseUJBRUosQ0FFQSwwQ0FDSSxHQUFLLDBCQUE2QixDQUNsQyxHQUFPLDJCQUE4QixDQUN6QyxDQUdBLHdFQUNJLGdCQUFpQixDQUNqQiw0Q0FDSixDQUdBLHdEQUNJLHFHQUdDLENBQ0QsZ0NBQ0osQ0FFQSx5RkFDSSw0Q0FBNkMsQ0FDN0Msc0NBQ0osQ0FFQSw4REFDSSw0Q0FBNkMsQ0FDN0MsdUNBQXdDLENBQ3hDLHlDQUNKLENBRUEseURBQ0kscUdBR0MsQ0FDRCxnQ0FDSixDQUVBLGlGQUNJLDJDQUNKLENBRUEsaUZBQ0ksOEJBQ0osQ0FHQSx5QkFDSSwwQ0FDSSw0Q0FDSixDQUVBLHNDQUNJLCtCQUFnQyxDQUNoQywrQkFDSixDQUVBLHNDQUlJLDhCQUErQixDQUYvQixjQUFlLENBQ2YsZ0JBQWlCLENBRmpCLHlCQUlKLENBRUEsNENBQ0ksZ0JBQ0osQ0FFQSx1Q0FDSSw2QkFBOEIsQ0FDOUIsZ0JBQ0osQ0FDSixDQUdBLCtCQUNJLHNDQUNJLGdCQUNKLENBRUEsNENBQ0ksc0NBQXVDLENBQ3ZDLGtCQUNKLENBQ0osQ0FHQSx1Q0FDSSw2RUFFSSxlQUNKLENBRUEsZ0NBQ0ksY0FDSixDQUNKIiwiZmlsZSI6IlRleHRBcmVhLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudGV4dGFyZWFDb250YWluZXIge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnRleHRhcmVhTGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tbGV0dGVyLXNwYWNpbmctd2lkZSk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLnJlcXVpcmVkSW5kaWNhdG9yIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xufVxuXG4udGV4dGFyZWFJbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXJlbGF4ZWQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIG1pbi1oZWlnaHQ6IDEyMHB4O1xuICAgIG1heC1oZWlnaHQ6IDQwMHB4O1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLnRleHRhcmVhSW5wdXQ6aG92ZXI6bm90KDpmb2N1cyk6bm90KDpkaXNhYmxlZCkge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyLWhvdmVyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbn1cblxuLnRleHRhcmVhSW5wdXQ6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTI0LCA1OCwgMjM3LCAwLjEpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLnRleHRhcmVhSW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLnRleHRhcmVhSW5wdXQ6ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC10ZXJ0aWFyeSk7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICBvcGFjaXR5OiAwLjY7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICAgIHJlc2l6ZTogbm9uZTtcbn1cblxuLyogQ2hhcmFjdGVyIGNvdW50ZXIgKi9cbi5jaGFyYWN0ZXJDb3VudCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogLTI4cHg7XG4gICAgcmlnaHQ6IDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgcGFkZGluZzogNHB4IDhweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZCksIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSlcbiAgICApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tbGV0dGVyLXNwYWNpbmctd2lkZSk7XG59XG5cbi8qIENoYXJhY3RlciBjb3VudCBzdGF0ZXMgKi9cbi5jaGFyYWN0ZXJDb3VudC5uZWFyTGltaXQge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci13YXJuaW5nKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgcmdiYSgyNDUsIDE1OCwgMTEsIDAuMDUpLCBcbiAgICAgICAgcmdiYSgyNDUsIDE1OCwgMTEsIDAuMSlcbiAgICApO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3Itd2FybmluZy1saWdodCk7XG59XG5cbi5jaGFyYWN0ZXJDb3VudC5hdExpbWl0IHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICByZ2JhKDI0NCwgNjMsIDk0LCAwLjA1KSwgXG4gICAgICAgIHJnYmEoMjQ0LCA2MywgOTQsIDAuMSlcbiAgICApO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItZXJyb3ItbGlnaHQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gICAgYW5pbWF0aW9uOiBwdWxzZSAxcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBwdWxzZSB7XG4gICAgMCUsIDEwMCUgeyBcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgNTAlIHsgXG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG4gICAgICAgIG9wYWNpdHk6IDAuOTtcbiAgICB9XG59XG5cbi8qIEF1dG8tcmVzaXplIGluZGljYXRvciAqL1xuLnRleHRhcmVhSW5wdXQ6aG92ZXI6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiA0cHg7XG4gICAgcmlnaHQ6IDRweDtcbiAgICB3aWR0aDogMTJweDtcbiAgICBoZWlnaHQ6IDEycHg7XG4gICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyLWhvdmVyKTtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyLWhvdmVyKTtcbiAgICBvcGFjaXR5OiAwLjU7XG59XG5cbi8qIFNjcm9sbGJhciBzdHlsaW5nICovXG4udGV4dGFyZWFJbnB1dDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA2cHg7XG59XG5cbi50ZXh0YXJlYUlucHV0Ojotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG59XG5cbi50ZXh0YXJlYUlucHV0Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLnRleHRhcmVhSW5wdXQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ib3JkZXItaG92ZXIpO1xufVxuXG4vKiBFcnJvciBzdGF0ZSAqL1xuLmVycm9yIC50ZXh0YXJlYUlucHV0IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWVycm9yKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItZXJyb3ItYmcpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZClcbiAgICApO1xuICAgIGFuaW1hdGlvbjogc2hha2UgMC4zcyBjdWJpYy1iZXppZXIoMC4zNiwgMC4wNywgMC4xOSwgMC45NykgYm90aDtcbn1cblxuLmVycm9yIC50ZXh0YXJlYUxhYmVsIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xufVxuXG4uZXJyb3IgLnRleHRhcmVhSW5wdXQ6Zm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDI0NCwgNjMsIDk0LCAwLjE1KTtcbn1cblxuQGtleWZyYW1lcyBzaGFrZSB7XG4gICAgMTAlLCA5MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTFweCk7IH1cbiAgICAyMCUsIDgwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpOyB9XG4gICAgMzAlLCA1MCUsIDcwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KTsgfVxuICAgIDQwJSwgNjAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDNweCk7IH1cbn1cblxuLyogU3VjY2VzcyBzdGF0ZSAqL1xuLnN1Y2Nlc3MgLnRleHRhcmVhSW5wdXQge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3Itc3VjY2Vzcyk7XG59XG5cbi5zdWNjZXNzOjphZnRlciB7XG4gICAgY29udGVudDogJ+Kckyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogOHB4O1xuICAgIHJpZ2h0OiA4cHg7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXN1Y2Nlc3MpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgICBhbmltYXRpb246IGNoZWNrSW4gMC4zcyBlYXNlLW91dDtcbn1cblxuQGtleWZyYW1lcyBjaGVja0luIHtcbiAgICAwJSB7IFxuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApIHJvdGF0ZSgtNDVkZWcpO1xuICAgIH1cbiAgICAxMDAlIHsgXG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSkgcm90YXRlKDApO1xuICAgIH1cbn1cblxuLyogTG9hZGluZyBzdGF0ZSAqL1xuLmxvYWRpbmcgLnRleHRhcmVhSW5wdXQge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgOTBkZWcsXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQpIDAlLFxuICAgICAgICByZ2JhKDEyNCwgNTgsIDIzNywgMC4wNSkgNTAlLFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSAxMDAlXG4gICAgKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMCUgMTAwJTtcbiAgICBhbmltYXRpb246IGxvYWRpbmcgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgbG9hZGluZyB7XG4gICAgMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMDAlIDA7IH1cbiAgICAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwMCUgMDsgfVxufVxuXG4vKiBGb2N1cyBtb2RlIC0gZXhwYW5kcyB0ZXh0YXJlYSAqL1xuLmZvY3VzTW9kZSAudGV4dGFyZWFJbnB1dCB7XG4gICAgbWluLWhlaWdodDogMjAwcHg7XG4gICAgdHJhbnNpdGlvbjogbWluLWhlaWdodCB2YXIoLS10cmFuc2l0aW9uLXNsb3cpO1xufVxuXG4vKiBEYXJrIG1vZGUgYWRqdXN0bWVudHMgKi9cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAudGV4dGFyZWFJbnB1dCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpXG4gICAgKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAudGV4dGFyZWFJbnB1dDpob3Zlcjpub3QoOmZvY3VzKTpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyLWhvdmVyKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC50ZXh0YXJlYUlucHV0OmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgxNjcsIDEzOSwgMjUwLCAwLjEpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmNoYXJhY3RlckNvdW50IHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSlcbiAgICApO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC50ZXh0YXJlYUlucHV0Ojotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAudGV4dGFyZWFJbnB1dDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbi8qIE1vYmlsZSBvcHRpbWl6YXRpb25zICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAudGV4dGFyZWFDb250YWluZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNpbmctbGcpICsgMjBweCk7XG4gICAgfVxuICAgIFxuICAgIC50ZXh0YXJlYUxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmcteHMpO1xuICAgIH1cbiAgICBcbiAgICAudGV4dGFyZWFJbnB1dCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgICAgICBmb250LXNpemU6IDE2cHg7IC8qIFByZXZlbnRzIGlPUyB6b29tICovXG4gICAgICAgIG1pbi1oZWlnaHQ6IDEwMHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIH1cbiAgICBcbiAgICAudGV4dGFyZWFJbnB1dDpmb2N1cyB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDE1MHB4O1xuICAgIH1cbiAgICBcbiAgICAuY2hhcmFjdGVyQ291bnQge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xuICAgIH1cbn1cblxuLyogSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAgIC50ZXh0YXJlYUlucHV0IHtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAzcHg7XG4gICAgfVxuICAgIFxuICAgIC50ZXh0YXJlYUlucHV0OmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgIH1cbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgLnRleHRhcmVhSW5wdXQsXG4gICAgLmNoYXJhY3RlckNvdW50IHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG4gICAgXG4gICAgLmF0TGltaXQge1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgfVxufSJdfQ== */";
672
+ var styles$c = {"textareaContainer":"TextArea-module_textareaContainer__AquFj","textareaLabel":"TextArea-module_textareaLabel__7Vmyx","requiredIndicator":"TextArea-module_requiredIndicator__3Fxyy","textareaInput":"TextArea-module_textareaInput__VCDZA","characterCount":"TextArea-module_characterCount__9FO5N","nearLimit":"TextArea-module_nearLimit__cUdnw","atLimit":"TextArea-module_atLimit__GoWCC","error":"TextArea-module_error__ciHgb","success":"TextArea-module_success__a0-xD","loading":"TextArea-module_loading__CSFBR","focusMode":"TextArea-module_focusMode__9A8U-"};
673
+ styleInject(css_248z$e);
95
674
 
96
- const Modal = ({ isOpen, onClose, title, size = 'medium', centered = false, closeOnOverlay = true, closeOnEsc = true, showCloseButton = true, header, footer, children, className = '', overlayClassName = '', }) => {
675
+ /**
676
+ * TextArea component - Multi-line text input with character counting
677
+ *
678
+ * @component
679
+ * @description
680
+ * A resizable text area component designed for longer form content like descriptions,
681
+ * comments, or messages. Features automatic character counting when maxLength is set,
682
+ * and maintains consistent styling with other form inputs. The component is optimized
683
+ * for both desktop and mobile experiences with appropriate touch targets.
684
+ *
685
+ * @example
686
+ * // Basic usage
687
+ * <TextArea
688
+ * label="Description"
689
+ * value={description}
690
+ * onChange={setDescription}
691
+ * rows={4}
692
+ * placeholder="Enter a detailed description..."
693
+ * />
694
+ *
695
+ * @example
696
+ * // With character limit
697
+ * <TextArea
698
+ * label="Bio"
699
+ * value={bio}
700
+ * onChange={setBio}
701
+ * maxLength={500}
702
+ * required
703
+ * />
704
+ */
705
+ function TextArea({ label, value, onChange, rows = 5, placeholder = "", required = false, maxLength, disabled = false, error = false, success = false, loading = false, focusMode = false }) {
706
+ const textareaId = `textarea-${Math.random().toString(36).substr(2, 9)}`;
707
+ const getContainerClassName = () => {
708
+ const classes = [styles$c.textareaContainer];
709
+ if (error)
710
+ classes.push(styles$c.error);
711
+ if (success)
712
+ classes.push(styles$c.success);
713
+ if (loading)
714
+ classes.push(styles$c.loading);
715
+ if (focusMode)
716
+ classes.push(styles$c.focusMode);
717
+ return classes.join(' ');
718
+ };
719
+ const getCharCountClassName = () => {
720
+ if (!maxLength)
721
+ return styles$c.characterCount;
722
+ const classes = [styles$c.characterCount];
723
+ const percentage = (value.length / maxLength) * 100;
724
+ if (percentage >= 100) {
725
+ classes.push(styles$c.atLimit);
726
+ }
727
+ else if (percentage >= 80) {
728
+ classes.push(styles$c.nearLimit);
729
+ }
730
+ return classes.join(' ');
731
+ };
732
+ return (jsxs("div", { className: getContainerClassName(), children: [jsxs("label", { htmlFor: textareaId, className: styles$c.textareaLabel, children: [label, required && jsx("span", { className: styles$c.requiredIndicator, children: "*" })] }), jsx("textarea", { id: textareaId, value: value, onChange: (e) => onChange(e.target.value), rows: rows, placeholder: placeholder, maxLength: maxLength, className: styles$c.textareaInput, "aria-required": required, disabled: disabled || loading, "aria-invalid": error }), maxLength && (jsxs("div", { className: getCharCountClassName(), children: [jsx("span", { children: value.length }), jsx("span", { style: { opacity: 0.7 }, children: " / " }), jsx("span", { children: maxLength })] }))] }));
733
+ }
734
+
735
+ var css_248z$d = ".Toggle-module_toggleContainer__QxqQb{background:var(--color-background-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);display:inline-flex;gap:0;padding:4px;transition:all var(--transition-base)}.Toggle-module_toggleButton__WUUf-{align-items:center;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;display:flex;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);gap:6px;padding:var(--spacing-xs) var(--spacing-sm);transition:all var(--transition-base);user-select:none}.Toggle-module_toggleButton__WUUf-:hover:not(.Toggle-module_active__fX6Io){background:var(--color-background-tertiary);color:var(--color-text)}.Toggle-module_toggleButton__WUUf-.Toggle-module_active__fX6Io{background:var(--color-background);box-shadow:var(--shadow-sm);color:var(--color-primary);font-weight:var(--font-weight-semibold)}.Toggle-module_toggleButton__WUUf-.Toggle-module_active__fX6Io:hover{background:var(--color-background);color:var(--color-primary-hover)}.Toggle-module_toggleButton__WUUf- svg{height:16px;width:16px}.Toggle-module_toggleButton__WUUf-:disabled{cursor:not-allowed;opacity:.5}.Toggle-module_toggleButton__WUUf-:disabled:hover{background:transparent;color:var(--color-text-secondary)}.Toggle-module_toggleButton__WUUf-:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}[data-theme*=dark] .Toggle-module_toggleContainer__QxqQb{background:var(--color-background-tertiary);border-color:var(--color-border)}[data-theme*=dark] .Toggle-module_toggleButton__WUUf-.Toggle-module_active__fX6Io{background:var(--color-background-secondary);box-shadow:var(--shadow-md)}@media (max-width:640px){.Toggle-module_toggleButton__WUUf-{font-size:var(--font-size-xs);padding:var(--spacing-xs) var(--spacing-xs)}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRvZ2dsZS5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUVJLDRDQUE2QyxDQUk3QyxvQ0FBcUMsQ0FIckMsOEJBQStCLENBRi9CLG1CQUFvQixDQUlwQixLQUFNLENBRE4sV0FBWSxDQUdaLHFDQUNKLENBRUEsbUNBRUksa0JBQW1CLENBR25CLHNCQUF1QixDQUN2QixXQUFZLENBQ1osOEJBQStCLENBSS9CLGlDQUFrQyxDQUhsQyxjQUFlLENBUGYsWUFBYSxDQVFiLDZCQUE4QixDQUM5QixxQ0FBc0MsQ0FQdEMsT0FBUSxDQUNSLDJDQUE0QyxDQVE1QyxxQ0FBc0MsQ0FDdEMsZ0JBQ0osQ0FFQSwyRUFFSSwyQ0FBNEMsQ0FENUMsdUJBRUosQ0FFQSwrREFDSSxrQ0FBbUMsQ0FFbkMsMkJBQTRCLENBRDVCLDBCQUEyQixDQUUzQix1Q0FDSixDQUVBLHFFQUNJLGtDQUFtQyxDQUNuQyxnQ0FDSixDQUVBLHVDQUVJLFdBQVksQ0FEWixVQUVKLENBR0EsNENBRUksa0JBQW1CLENBRG5CLFVBRUosQ0FFQSxrREFDSSxzQkFBdUIsQ0FDdkIsaUNBQ0osQ0FHQSxpREFDSSxzQ0FBdUMsQ0FDdkMsa0JBQ0osQ0FHQSx5REFDSSwyQ0FBNEMsQ0FDNUMsZ0NBQ0osQ0FFQSxrRkFDSSw0Q0FBNkMsQ0FDN0MsMkJBQ0osQ0FHQSx5QkFDSSxtQ0FFSSw2QkFBOEIsQ0FEOUIsMkNBRUosQ0FDSiIsImZpbGUiOiJUb2dnbGUubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi50b2dnbGVDb250YWluZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IDRweDtcbiAgICBnYXA6IDA7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLnRvZ2dsZUJ1dHRvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNnB4O1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteHMpIHZhcigtLXNwYWNpbmctc20pO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLnRvZ2dsZUJ1dHRvbjpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KTtcbn1cblxuLnRvZ2dsZUJ1dHRvbi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG59XG5cbi50b2dnbGVCdXR0b24uYWN0aXZlOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ob3Zlcik7XG59XG5cbi50b2dnbGVCdXR0b24gc3ZnIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG59XG5cbi8qIERpc2FibGVkIHN0YXRlICovXG4udG9nZ2xlQnV0dG9uOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLnRvZ2dsZUJ1dHRvbjpkaXNhYmxlZDpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLyogRm9jdXMgc3RhdGUgZm9yIGFjY2Vzc2liaWxpdHkgKi9cbi50b2dnbGVCdXR0b246Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi8qIERhcmsgbW9kZSBzcGVjaWZpYyBhZGp1c3RtZW50cyAqL1xuW2RhdGEtdGhlbWUqPVwiZGFya1wiXSAudG9nZ2xlQ29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbltkYXRhLXRoZW1lKj1cImRhcmtcIl0gLnRvZ2dsZUJ1dHRvbi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xufVxuXG4vKiBSZXNwb25zaXZlIGFkanVzdG1lbnRzICovXG5AbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHtcbiAgICAudG9nZ2xlQnV0dG9uIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy14cykgdmFyKC0tc3BhY2luZy14cyk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgICB9XG59Il19 */";
736
+ var styles$b = {"toggleContainer":"Toggle-module_toggleContainer__QxqQb","toggleButton":"Toggle-module_toggleButton__WUUf-","active":"Toggle-module_active__fX6Io"};
737
+ styleInject(css_248z$d);
738
+
739
+ function Toggle(props) {
740
+ const { isOn, onToggle, leftLabel, rightLabel, leftIcon, rightIcon } = props;
741
+ return (jsxs("div", { className: styles$b.toggleContainer, children: [jsxs("button", { className: `${styles$b.toggleButton} ${!isOn ? styles$b.active : ''}`, onClick: () => onToggle(false), children: [leftIcon, leftLabel] }), jsxs("button", { className: `${styles$b.toggleButton} ${isOn ? styles$b.active : ''}`, onClick: () => onToggle(true), children: [rightIcon, rightLabel] })] }));
742
+ }
743
+
744
+ var css_248z$c = "@import url(\"../../../styles/tokens.css\");.EditFAB-module_fab__nSrTJ{align-items:center;backdrop-filter:blur(10px);border:none;border-radius:50%;box-shadow:0 4px 14px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.08);cursor:pointer;display:flex;font-size:24px;font-weight:500;height:56px;justify-content:center;outline:none;overflow:hidden;position:relative;transition:box-shadow .2s ease;width:56px;z-index:1000}.EditFAB-module_fab__nSrTJ:before{background:hsla(0,0%,100%,.3);border-radius:50%;content:\"\";height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transition:width .3s ease,height .3s ease;width:0}.EditFAB-module_fab__nSrTJ:active:before{height:100%;width:100%}.EditFAB-module_fab__nSrTJ:hover:not(:disabled){box-shadow:0 8px 24px rgba(0,0,0,.15),0 4px 8px rgba(0,0,0,.1)}.EditFAB-module_fab__nSrTJ:active:not(:disabled){box-shadow:0 2px 8px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.1)}.EditFAB-module_fab__nSrTJ:disabled{cursor:not-allowed;opacity:.6}.EditFAB-module_primary__zbA9n{background:linear-gradient(135deg,#667eea,#764ba2);color:var(--color-white)}.EditFAB-module_primary__zbA9n:hover:not(:disabled){background:linear-gradient(135deg,#7c8fff,#8e5fc4);box-shadow:0 8px 24px rgba(102,126,234,.4),0 4px 8px rgba(118,75,162,.2)}.EditFAB-module_secondary__BnXs0{background:linear-gradient(135deg,#e0e0e0,#b0b0b0);color:var(--color-text-primary)}.EditFAB-module_secondary__BnXs0:hover:not(:disabled){background:linear-gradient(135deg,#f0f0f0,silver);box-shadow:0 8px 24px rgba(0,0,0,.12),0 4px 8px rgba(0,0,0,.08)}.EditFAB-module_success__kcLg3{background:linear-gradient(135deg,#84fab0,#8fd3f4);color:var(--color-white)}.EditFAB-module_success__kcLg3:hover:not(:disabled){background:linear-gradient(135deg,#96ffc1,#a3e0ff);box-shadow:0 8px 24px rgba(132,250,176,.4),0 4px 8px rgba(143,211,244,.2)}.EditFAB-module_loader__TaJOm{animation:EditFAB-module_spin__FRrDD .8s cubic-bezier(.68,-.55,.265,1.55) infinite;border-color:hsla(0,0%,100%,.9) hsla(0,0%,100%,.7) hsla(0,0%,100%,.4) hsla(0,0%,100%,.2);border-radius:50%;border-style:solid;border-width:3px;height:24px;width:24px}@keyframes EditFAB-module_spin__FRrDD{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.EditFAB-module_draggable__eE2vE{-webkit-touch-callout:none;cursor:move;touch-action:none;-webkit-user-select:none;user-select:none}.EditFAB-module_dragging__btRJe{box-shadow:0 12px 32px rgba(0,0,0,.25),0 6px 12px rgba(0,0,0,.15);cursor:grabbing!important;opacity:.8;z-index:10000}@media (max-width:768px){.EditFAB-module_fab__nSrTJ{font-size:20px;height:48px;width:48px}.EditFAB-module_loader__TaJOm{height:20px;width:20px}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVkaXRGQUIubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUMsQ0FHekMsMkJBT0ksa0JBQW1CLENBTW5CLDBCQUEyQixDQVQzQixXQUFZLENBRFosaUJBQWtCLENBTWxCLCtEQUF5RSxDQUp6RSxjQUFlLENBQ2YsWUFBYSxDQUtiLGNBQWUsQ0FDZixlQUFnQixDQVZoQixXQUFZLENBTVosc0JBQXVCLENBRXZCLFlBQWEsQ0FLYixlQUFnQixDQURoQixpQkFBa0IsQ0FHbEIsOEJBQWdDLENBaEJoQyxVQUFXLENBZVgsWUFFSixDQUVBLGtDQVFJLDZCQUFvQyxDQURwQyxpQkFBa0IsQ0FObEIsVUFBVyxDQUtYLFFBQVMsQ0FGVCxRQUFTLENBRlQsaUJBQWtCLENBQ2xCLE9BQVEsQ0FNUiw4QkFBZ0MsQ0FDaEMseUNBQTZDLENBTDdDLE9BTUosQ0FFQSx5Q0FFSSxXQUFZLENBRFosVUFFSixDQUVBLGdEQUNJLDhEQUNKLENBRUEsaURBQ0ksNkRBQ0osQ0FFQSxvQ0FFSSxrQkFBbUIsQ0FEbkIsVUFFSixDQUdBLCtCQUNJLGtEQUE2RCxDQUM3RCx3QkFDSixDQUVBLG9EQUNJLGtEQUE2RCxDQUM3RCx3RUFDSixDQUVBLGlDQUNJLGtEQUE2RCxDQUM3RCwrQkFDSixDQUVBLHNEQUNJLGlEQUE2RCxDQUM3RCwrREFDSixDQUVBLCtCQUNJLGtEQUE2RCxDQUM3RCx3QkFDSixDQUVBLG9EQUNJLGtEQUE2RCxDQUM3RCx5RUFDSixDQUdBLDhCQVFJLGtGQUFvRSxDQUZwRSx3RkFBNkMsQ0FDN0MsaUJBQWtCLENBRGxCLGtCQUE2QyxDQUE3QyxnQkFBNkMsQ0FKN0MsV0FBWSxDQURaLFVBUUosQ0FFQSxzQ0FDSSxHQUFPLHNCQUF5QixDQUNoQyxHQUFLLHVCQUEyQixDQUNwQyxDQUdBLGlDQUdJLDBCQUEyQixDQUYzQixXQUFZLENBQ1osaUJBQWtCLENBRWxCLHdCQUF5QixDQUN6QixnQkFDSixDQUVBLGdDQUdJLGlFQUEyRSxDQUYzRSx5QkFBMkIsQ0FDM0IsVUFBWSxDQUVaLGFBQ0osQ0FHQSx5QkFDSSwyQkFHSSxjQUFlLENBRGYsV0FBWSxDQURaLFVBR0osQ0FFQSw4QkFFSSxXQUFZLENBRFosVUFFSixDQUNKIiwiZmlsZSI6IkVkaXRGQUIubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgdXJsKCcuLi8uLi8uLi9zdHlsZXMvdG9rZW5zLmNzcycpO1xuXG4vKiBCYXNlIEZBQiBzdHlsZXMgKi9cbi5mYWIge1xuICAgIHdpZHRoOiA1NnB4O1xuICAgIGhlaWdodDogNTZweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTRweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4ycyBlYXNlO1xufVxuXG4uZmFiOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlLCBoZWlnaHQgMC4zcyBlYXNlO1xufVxuXG4uZmFiOmFjdGl2ZTo6YmVmb3JlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5mYWI6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggcmdiYSgwLCAwLCAwLCAwLjE1KSwgMCA0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLmZhYjphY3RpdmU6bm90KDpkaXNhYmxlZCkge1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTUpLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4uZmFiOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjY7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLyogQ29sb3IgdmFyaWFudHMgKi9cbi5wcmltYXJ5IHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNjY3ZWVhIDAlLCAjNzY0YmEyIDEwMCUpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci13aGl0ZSk7XG59XG5cbi5wcmltYXJ5OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjN2M4ZmZmIDAlLCAjOGU1ZmM0IDEwMCUpO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjQpLCAwIDRweCA4cHggcmdiYSgxMTgsIDc1LCAxNjIsIDAuMik7XG59XG5cbi5zZWNvbmRhcnkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNlMGUwZTAgMCUsICNiMGIwYjAgMTAwJSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtcHJpbWFyeSk7XG59XG5cbi5zZWNvbmRhcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmMGYwZjAgMCUsICNjMGMwYzAgMTAwJSk7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbn1cblxuLnN1Y2Nlc3Mge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM4NGZhYjAgMCUsICM4ZmQzZjQgMTAwJSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXdoaXRlKTtcbn1cblxuLnN1Y2Nlc3M6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM5NmZmYzEgMCUsICNhM2UwZmYgMTAwJSk7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDEzMiwgMjUwLCAxNzYsIDAuNCksIDAgNHB4IDhweCByZ2JhKDE0MywgMjExLCAyNDQsIDAuMik7XG59XG5cbi8qIExvYWRlciAqL1xuLmxvYWRlciB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGJvcmRlcjogM3B4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBhbmltYXRpb246IHNwaW4gMC44cyBjdWJpYy1iZXppZXIoMC42OCwgLTAuNTUsIDAuMjY1LCAxLjU1KSBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBzcGluIHtcbiAgICBmcm9tIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cbiAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbn1cblxuLyogRHJhZ2dhYmxlIHN0YXRlICovXG4uZHJhZ2dhYmxlIHtcbiAgICBjdXJzb3I6IG1vdmU7XG4gICAgdG91Y2gtYWN0aW9uOiBub25lO1xuICAgIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4uZHJhZ2dpbmcge1xuICAgIGN1cnNvcjogZ3JhYmJpbmcgIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgYm94LXNoYWRvdzogMCAxMnB4IDMycHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMCA2cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgIHotaW5kZXg6IDEwMDAwO1xufVxuXG4vKiBNb2JpbGUgYWRqdXN0bWVudHMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5mYWIge1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgfVxuICAgIFxuICAgIC5sb2FkZXIge1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgIH1cbn0iXX0= */";
745
+ var styles$a = {"fab":"EditFAB-module_fab__nSrTJ","primary":"EditFAB-module_primary__zbA9n","secondary":"EditFAB-module_secondary__BnXs0","success":"EditFAB-module_success__kcLg3","loader":"EditFAB-module_loader__TaJOm","draggable":"EditFAB-module_draggable__eE2vE","dragging":"EditFAB-module_dragging__btRJe"};
746
+ styleInject(css_248z$c);
747
+
748
+ const EditFAB = ({ canEdit, isEditMode, hasUnsavedChanges = false, isSaving = false, onEnterEditMode, onExitEditMode, position = { bottom: 32, right: 32 } }) => {
749
+ const [isMobile, setIsMobile] = useState(false);
750
+ const [currentPosition, setCurrentPosition] = useState(null);
751
+ const [isDragging, setIsDragging] = useState(false);
752
+ const fabRef = useRef(null);
753
+ const dragStartPos = useRef(null);
754
+ const elementStartPos = useRef(null);
97
755
  useEffect(() => {
98
- const handleEsc = (event) => {
99
- if (closeOnEsc && event.key === 'Escape') {
100
- onClose();
756
+ const checkMobile = () => {
757
+ setIsMobile(window.innerWidth <= 768);
758
+ };
759
+ checkMobile();
760
+ window.addEventListener('resize', checkMobile);
761
+ return () => {
762
+ window.removeEventListener('resize', checkMobile);
763
+ };
764
+ }, []);
765
+ // Touch handlers for mobile dragging
766
+ const handleTouchStart = (e) => {
767
+ if (!isMobile)
768
+ return;
769
+ const touch = e.touches[0];
770
+ const rect = fabRef.current?.getBoundingClientRect();
771
+ if (rect) {
772
+ dragStartPos.current = { x: touch.clientX, y: touch.clientY };
773
+ elementStartPos.current = {
774
+ x: rect.left + rect.width / 2,
775
+ y: rect.top + rect.height / 2
776
+ };
777
+ setIsDragging(true);
778
+ }
779
+ };
780
+ const handleTouchMove = (e) => {
781
+ if (!isDragging || !dragStartPos.current || !elementStartPos.current)
782
+ return;
783
+ e.preventDefault();
784
+ const touch = e.touches[0];
785
+ const deltaX = touch.clientX - dragStartPos.current.x;
786
+ const deltaY = touch.clientY - dragStartPos.current.y;
787
+ let newX = elementStartPos.current.x + deltaX;
788
+ let newY = elementStartPos.current.y + deltaY;
789
+ // Keep within viewport bounds
790
+ const padding = 30;
791
+ newX = Math.max(padding, Math.min(window.innerWidth - padding, newX));
792
+ newY = Math.max(padding, Math.min(window.innerHeight - padding, newY));
793
+ setCurrentPosition({ x: newX, y: newY });
794
+ };
795
+ const handleTouchEnd = () => {
796
+ setIsDragging(false);
797
+ dragStartPos.current = null;
798
+ elementStartPos.current = null;
799
+ };
800
+ const handleClick = (_e) => {
801
+ // Only trigger click if we haven't been dragging
802
+ if (!isDragging && !isSaving) {
803
+ if (isEditMode) {
804
+ onExitEditMode();
101
805
  }
806
+ else {
807
+ onEnterEditMode();
808
+ }
809
+ }
810
+ };
811
+ if (!canEdit)
812
+ return null;
813
+ const getPositionStyles = () => {
814
+ if (currentPosition) {
815
+ return {
816
+ position: 'fixed',
817
+ left: `${currentPosition.x}px`,
818
+ top: `${currentPosition.y}px`,
819
+ transform: 'translate(-50%, -50%)',
820
+ touchAction: 'none'
821
+ };
822
+ }
823
+ return {
824
+ position: 'fixed',
825
+ ...position,
826
+ touchAction: isMobile ? 'none' : 'auto'
102
827
  };
103
- if (isOpen) {
104
- document.addEventListener('keydown', handleEsc);
105
- document.body.style.overflow = 'hidden';
828
+ };
829
+ const getVariantClass = () => {
830
+ if (isSaving)
831
+ return styles$a.primary;
832
+ if (isEditMode) {
833
+ return hasUnsavedChanges ? styles$a.success : styles$a.secondary;
834
+ }
835
+ return styles$a.primary;
836
+ };
837
+ const getIcon = () => {
838
+ if (isSaving) {
839
+ return jsx("div", { className: styles$a.loader });
840
+ }
841
+ if (isEditMode) {
842
+ return hasUnsavedChanges ? jsx(Check, { size: 24 }) : jsx(X, { size: 24 });
843
+ }
844
+ return jsx(Edit, { size: 24 });
845
+ };
846
+ const getAriaLabel = () => {
847
+ if (isSaving)
848
+ return "Saving changes";
849
+ if (isEditMode) {
850
+ return hasUnsavedChanges ? "Save and exit edit mode" : "Exit edit mode";
851
+ }
852
+ return "Enter edit mode";
853
+ };
854
+ return (jsx(motion.button, { ref: fabRef, className: `${styles$a.fab} ${getVariantClass()} ${isMobile ? styles$a.draggable : ''} ${isDragging ? styles$a.dragging : ''}`, style: getPositionStyles(), onClick: handleClick, onTouchStart: handleTouchStart, onTouchMove: handleTouchMove, onTouchEnd: handleTouchEnd, disabled: isSaving, "aria-label": getAriaLabel(), initial: { scale: 0, opacity: 0 }, animate: { scale: 1, opacity: 1 }, exit: { scale: 0, opacity: 0 }, whileHover: !isSaving && !isDragging ? { scale: 1.1 } : {}, whileTap: !isSaving && !isDragging ? { scale: 0.9 } : {}, transition: {
855
+ type: "spring",
856
+ stiffness: 260,
857
+ damping: 20
858
+ }, children: getIcon() }));
859
+ };
860
+
861
+ var css_248z$b = ".SearchBar-module_searchContainer__TdM1w{max-width:600px;position:relative;width:100%}.SearchBar-module_searchInputWrapper__kCZLU{align-items:center;background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-m);display:flex;overflow:hidden;position:relative;transition:border-color .2s ease}.SearchBar-module_searchInputWrapper__kCZLU:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(5,0,242,.1)}.SearchBar-module_searchIcon__IIxEu{color:var(--color-grey-600);left:var(--spacing-m);pointer-events:none;position:absolute;z-index:1}.SearchBar-module_searchInput__V4gkE{background:transparent;border:none;color:var(--color-text);flex:1;font-size:var(--font-base);min-width:250px;outline:none;padding:var(--spacing-s) var(--spacing-xl);padding-left:calc(var(--spacing-xl) + 20px);padding-right:calc(var(--spacing-xl) + 20px)}@media (max-width:768px){.SearchBar-module_searchInput__V4gkE{min-width:0;padding:var(--spacing-s) var(--spacing-m);padding-left:calc(var(--spacing-m) + 20px);padding-right:calc(var(--spacing-m) + 20px);width:100%}.SearchBar-module_searchContainer__TdM1w{max-width:100%}}.SearchBar-module_searchInput__V4gkE::placeholder{color:var(--color-grey-500)}.SearchBar-module_clearButton__7fNIY{align-items:center;background:none;border:none;border-radius:var(--radius-xs);color:var(--color-grey-600);cursor:pointer;display:flex;justify-content:center;padding:var(--spacing-xs);position:absolute;right:140px;transition:color .2s ease,background .2s ease}.SearchBar-module_clearButton__7fNIY:hover{background:var(--color-grey-100);color:var(--color-text)}.SearchBar-module_filterSelect__xIVE4{background:var(--color-grey-50);border:none;border-left:1px solid var(--color-border);color:var(--color-text);cursor:pointer;font-size:var(--font-small);min-width:100px;outline:none;padding:var(--spacing-s) var(--spacing-m)}.SearchBar-module_filterSelect__xIVE4:hover{background:var(--color-grey-100)}.SearchBar-module_resultsDropdown__yh6NF{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-m);box-shadow:var(--shadow-md);left:0;max-height:400px;overflow-y:auto;position:absolute;right:0;top:calc(100% + var(--spacing-s));z-index:1000}.SearchBar-module_emptyState__RbI4s,.SearchBar-module_loadingState__4gidK{align-items:center;color:var(--color-grey-600);display:flex;gap:var(--spacing-s);justify-content:center;padding:var(--spacing-l);text-align:center}.SearchBar-module_spinner__PMc6-{animation:SearchBar-module_spin__mrCIh .8s linear infinite;border:2px solid var(--color-grey-300);border-radius:50%;border-top-color:var(--color-primary);height:16px;width:16px}@keyframes SearchBar-module_spin__mrCIh{to{transform:rotate(1turn)}}.SearchBar-module_resultsGroups__U24DC{padding:var(--spacing-s) 0}.SearchBar-module_resultGroup__SoTQH{border-bottom:1px solid var(--color-grey-100)}.SearchBar-module_resultGroup__SoTQH:last-child{border-bottom:none}.SearchBar-module_groupHeader__bFRHA{align-items:center;background:var(--color-grey-50);color:var(--color-grey-700);display:flex;font-size:var(--font-small);font-weight:500;gap:var(--spacing-s);padding:var(--spacing-s) var(--spacing-m)}.SearchBar-module_groupIcon__9ENM-{height:16px;width:16px}.SearchBar-module_groupTitle__ZekZs{flex:1}.SearchBar-module_groupCount__PQIqw{background:var(--color-grey-200);border-radius:var(--radius-xs);font-size:12px;padding:2px 6px}.SearchBar-module_groupResults__xTF52{padding:var(--spacing-xs) 0}.SearchBar-module_resultItem__VaKKy{align-items:center;background:none;border:none;cursor:pointer;display:flex;justify-content:space-between;padding:var(--spacing-s) var(--spacing-m);text-align:left;transition:background .2s ease;width:100%}.SearchBar-module_resultItem__VaKKy:hover{background:var(--color-grey-100)}.SearchBar-module_resultItem__VaKKy.SearchBar-module_highlighted__Q-3sH{background:var(--color-primary);color:var(--color-white);transform:translateX(4px);transition:all .2s ease}.SearchBar-module_resultItem__VaKKy.SearchBar-module_highlighted__Q-3sH .SearchBar-module_resultTitle__i1uqL{color:var(--color-white)}.SearchBar-module_resultItem__VaKKy.SearchBar-module_highlighted__Q-3sH .SearchBar-module_resultSubtitle__LQOJ1{color:hsla(0,0%,100%,.8)}.SearchBar-module_resultItem__VaKKy.SearchBar-module_highlighted__Q-3sH .SearchBar-module_resultMeta__Kmkrn{color:hsla(0,0%,100%,.7)}.SearchBar-module_resultContent__TzVzL{flex:1;min-width:0}.SearchBar-module_resultTitle__i1uqL{color:var(--color-text);font-size:var(--font-base);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.SearchBar-module_resultSubtitle__LQOJ1{color:var(--color-grey-600);font-size:var(--font-small);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.SearchBar-module_resultMeta__Kmkrn{color:var(--color-grey-500);font-size:var(--font-small);white-space:nowrap}.SearchBar-module_highlight__Q3PSP{background:rgba(255,235,59,.4);border-radius:2px;color:inherit;font-weight:600;padding:0 2px}.SearchBar-module_resultItem__VaKKy.SearchBar-module_highlighted__Q-3sH .SearchBar-module_highlight__Q3PSP{background:hsla(0,0%,100%,.3);color:var(--color-white)}@media (max-width:768px){.SearchBar-module_searchContainer__TdM1w{max-width:100%}.SearchBar-module_filterSelect__xIVE4{font-size:12px;min-width:80px;padding:var(--spacing-s)}.SearchBar-module_resultsDropdown__yh6NF{max-height:300px}.SearchBar-module_clearButton__7fNIY{right:90px}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlYXJjaEJhci5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUdJLGVBQWdCLENBRmhCLGlCQUFrQixDQUNsQixVQUVKLENBRUEsNENBR0ksa0JBQW1CLENBQ25CLDZCQUE4QixDQUM5QixvQ0FBcUMsQ0FDckMsNkJBQThCLENBSjlCLFlBQWEsQ0FLYixlQUFnQixDQU5oQixpQkFBa0IsQ0FPbEIsZ0NBQ0osQ0FFQSx5REFDSSxpQ0FBa0MsQ0FDbEMscUNBQ0osQ0FFQSxvQ0FHSSwyQkFBNEIsQ0FENUIscUJBQXNCLENBRXRCLG1CQUFvQixDQUhwQixpQkFBa0IsQ0FJbEIsU0FDSixDQUVBLHFDQVNJLHNCQUF1QixDQUp2QixXQUFZLENBR1osdUJBQXdCLENBUHhCLE1BQU8sQ0FNUCwwQkFBMkIsQ0FHM0IsZUFBZ0IsQ0FKaEIsWUFBYSxDQUpiLDBDQUEyQyxDQUMzQywyQ0FBNEMsQ0FDNUMsNENBT0osQ0FFQSx5QkFDSSxxQ0FJSSxXQUFZLENBSFoseUNBQTBDLENBQzFDLDBDQUEyQyxDQUMzQywyQ0FBNEMsQ0FFNUMsVUFDSixDQUVBLHlDQUNJLGNBQ0osQ0FDSixDQUVBLGtEQUNJLDJCQUNKLENBRUEscUNBU0ksa0JBQW1CLENBTG5CLGVBQWdCLENBQ2hCLFdBQVksQ0FNWiw4QkFBK0IsQ0FML0IsMkJBQTRCLENBQzVCLGNBQWUsQ0FDZixZQUFhLENBRWIsc0JBQXVCLENBUHZCLHlCQUEwQixDQUYxQixpQkFBa0IsQ0FDbEIsV0FBWSxDQVVaLDZDQUNKLENBRUEsMkNBRUksZ0NBQWlDLENBRGpDLHVCQUVKLENBRUEsc0NBSUksK0JBQWdDLENBRmhDLFdBQVksQ0FDWix5Q0FBMEMsQ0FFMUMsdUJBQXdCLENBRXhCLGNBQWUsQ0FEZiwyQkFBNEIsQ0FHNUIsZUFBZ0IsQ0FEaEIsWUFBYSxDQVBiLHlDQVNKLENBRUEsNENBQ0ksZ0NBQ0osQ0FFQSx5Q0FLSSw2QkFBOEIsQ0FDOUIsb0NBQXFDLENBQ3JDLDZCQUE4QixDQUM5QiwyQkFBNEIsQ0FMNUIsTUFBTyxDQU1QLGdCQUFpQixDQUNqQixlQUFnQixDQVRoQixpQkFBa0IsQ0FHbEIsT0FBUSxDQUZSLGlDQUFrQyxDQVNsQyxZQUNKLENBRUEsMEVBTUksa0JBQW1CLENBRm5CLDJCQUE0QixDQUM1QixZQUFhLENBR2Isb0JBQXFCLENBRHJCLHNCQUF1QixDQUx2Qix3QkFBeUIsQ0FDekIsaUJBTUosQ0FFQSxpQ0FNSSwwREFBb0MsQ0FGcEMsc0NBQXNDLENBQ3RDLGlCQUFrQixDQURsQixxQ0FBc0MsQ0FGdEMsV0FBWSxDQURaLFVBTUosQ0FFQSx3Q0FDSSxHQUNJLHVCQUNKLENBQ0osQ0FFQSx1Q0FDSSwwQkFDSixDQUVBLHFDQUNJLDZDQUNKLENBRUEsZ0RBQ0ksa0JBQ0osQ0FFQSxxQ0FFSSxrQkFBbUIsQ0FHbkIsK0JBQWdDLENBRWhDLDJCQUE0QixDQU41QixZQUFhLENBS2IsMkJBQTRCLENBRTVCLGVBQWdCLENBTGhCLG9CQUFxQixDQUNyQix5Q0FLSixDQUVBLG1DQUVJLFdBQVksQ0FEWixVQUVKLENBRUEsb0NBQ0ksTUFDSixDQUVBLG9DQUNJLGdDQUFpQyxDQUVqQyw4QkFBK0IsQ0FDL0IsY0FBZSxDQUZmLGVBR0osQ0FFQSxzQ0FDSSwyQkFDSixDQUVBLG9DQUVJLGtCQUFtQixDQUluQixlQUFnQixDQUNoQixXQUFZLENBQ1osY0FBZSxDQVBmLFlBQWEsQ0FFYiw2QkFBOEIsQ0FFOUIseUNBQTBDLENBSTFDLGVBQWdCLENBQ2hCLDhCQUFnQyxDQU5oQyxVQU9KLENBRUEsMENBQ0ksZ0NBQ0osQ0FFQSx3RUFDSSwrQkFBZ0MsQ0FDaEMsd0JBQXlCLENBQ3pCLHlCQUEwQixDQUMxQix1QkFDSixDQUVBLDZHQUNJLHdCQUNKLENBRUEsZ0hBQ0ksd0JBQ0osQ0FFQSw0R0FDSSx3QkFDSixDQUVBLHVDQUNJLE1BQU8sQ0FDUCxXQUNKLENBRUEscUNBRUksdUJBQXdCLENBRHhCLDBCQUEyQixDQUUzQixlQUFnQixDQUNoQixlQUFnQixDQUNoQixzQkFBdUIsQ0FDdkIsa0JBQ0osQ0FFQSx3Q0FFSSwyQkFBNEIsQ0FENUIsMkJBQTRCLENBRTVCLGNBQWUsQ0FDZixlQUFnQixDQUNoQixzQkFBdUIsQ0FDdkIsa0JBQ0osQ0FFQSxvQ0FFSSwyQkFBNEIsQ0FENUIsMkJBQTRCLENBRTVCLGtCQUNKLENBRUEsbUNBQ0ksOEJBQW1DLENBSW5DLGlCQUFrQixDQUhsQixhQUFjLENBQ2QsZUFBZ0IsQ0FDaEIsYUFFSixDQUVBLDJHQUNJLDZCQUFvQyxDQUNwQyx3QkFDSixDQUdBLHlCQUNJLHlDQUNJLGNBQ0osQ0FFQSxzQ0FFSSxjQUFlLENBRGYsY0FBZSxDQUVmLHdCQUNKLENBRUEseUNBQ0ksZ0JBQ0osQ0FFQSxxQ0FDSSxVQUNKLENBQ0oiLCJmaWxlIjoiU2VhcmNoQmFyLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuc2VhcmNoQ29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiA2MDBweDtcbn1cblxuLnNlYXJjaElucHV0V3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci13aGl0ZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbSk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycyBlYXNlO1xufVxuXG4uc2VhcmNoSW5wdXRXcmFwcGVyOmZvY3VzLXdpdGhpbiB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1LCAwLCAyNDIsIDAuMSk7XG59XG5cbi5zZWFyY2hJY29uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogdmFyKC0tc3BhY2luZy1tKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JleS02MDApO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDE7XG59XG5cbi5zZWFyY2hJbnB1dCB7XG4gICAgZmxleDogMTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXMpIHZhcigtLXNwYWNpbmcteGwpO1xuICAgIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zcGFjaW5nLXhsKSArIDIwcHgpO1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGModmFyKC0tc3BhY2luZy14bCkgKyAyMHB4KTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtYmFzZSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIG1pbi13aWR0aDogMjUwcHg7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5zZWFyY2hJbnB1dCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctcykgdmFyKC0tc3BhY2luZy1tKTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLXNwYWNpbmctbSkgKyAyMHB4KTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS1zcGFjaW5nLW0pICsgMjBweCk7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICAgIFxuICAgIC5zZWFyY2hDb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxufVxuXG4uc2VhcmNoSW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JleS01MDApO1xufVxuXG4uY2xlYXJCdXR0b24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMTQwcHg7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy14cyk7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyZXktNjAwKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14cyk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlLCBiYWNrZ3JvdW5kIDAuMnMgZWFzZTtcbn1cblxuLmNsZWFyQnV0dG9uOmhvdmVyIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JleS0xMDApO1xufVxuXG4uZmlsdGVyU2VsZWN0IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXMpIHZhcigtLXNwYWNpbmctbSk7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmV5LTUwKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNtYWxsKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBtaW4td2lkdGg6IDEwMHB4O1xufVxuXG4uZmlsdGVyU2VsZWN0OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmV5LTEwMCk7XG59XG5cbi5yZXN1bHRzRHJvcGRvd24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoMTAwJSArIHZhcigtLXNwYWNpbmctcykpO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itd2hpdGUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW0pO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG4gICAgbWF4LWhlaWdodDogNDAwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB6LWluZGV4OiAxMDAwO1xufVxuXG4ubG9hZGluZ1N0YXRlLFxuLmVtcHR5U3RhdGUge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmV5LTYwMCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy1zKTtcbn1cblxuLnNwaW5uZXIge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1ncmV5LTMwMCk7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGFuaW1hdGlvbjogc3BpbiAwLjhzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBzcGluIHtcbiAgICB0byB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgfVxufVxuXG4ucmVzdWx0c0dyb3VwcyB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zKSAwO1xufVxuXG4ucmVzdWx0R3JvdXAge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmV5LTEwMCk7XG59XG5cbi5yZXN1bHRHcm91cDpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xufVxuXG4uZ3JvdXBIZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctcyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zKSB2YXIoLS1zcGFjaW5nLW0pO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyZXktNTApO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zbWFsbCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyZXktNzAwKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uZ3JvdXBJY29uIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG59XG5cbi5ncm91cFRpdGxlIHtcbiAgICBmbGV4OiAxO1xufVxuXG4uZ3JvdXBDb3VudCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JleS0yMDApO1xuICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhzKTtcbiAgICBmb250LXNpemU6IDEycHg7XG59XG5cbi5ncm91cFJlc3VsdHMge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteHMpIDA7XG59XG5cbi5yZXN1bHRJdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctcykgdmFyKC0tc3BhY2luZy1tKTtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnMgZWFzZTtcbn1cblxuLnJlc3VsdEl0ZW06aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyZXktMTAwKTtcbn1cblxuLnJlc3VsdEl0ZW0uaGlnaGxpZ2h0ZWQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci13aGl0ZSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbn1cblxuLnJlc3VsdEl0ZW0uaGlnaGxpZ2h0ZWQgLnJlc3VsdFRpdGxlIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3Itd2hpdGUpO1xufVxuXG4ucmVzdWx0SXRlbS5oaWdobGlnaHRlZCAucmVzdWx0U3VidGl0bGUge1xuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG59XG5cbi5yZXN1bHRJdGVtLmhpZ2hsaWdodGVkIC5yZXN1bHRNZXRhIHtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xufVxuXG4ucmVzdWx0Q29udGVudCB7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5yZXN1bHRUaXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnJlc3VsdFN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc21hbGwpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmV5LTYwMCk7XG4gICAgbWFyZ2luLXRvcDogMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnJlc3VsdE1ldGEge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zbWFsbCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyZXktNTAwKTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uaGlnaGxpZ2h0IHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjM1LCA1OSwgMC40KTtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHBhZGRpbmc6IDAgMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbn1cblxuLnJlc3VsdEl0ZW0uaGlnaGxpZ2h0ZWQgLmhpZ2hsaWdodCB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci13aGl0ZSk7XG59XG5cbi8qIE1vYmlsZSBzdHlsZXMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5zZWFyY2hDb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLmZpbHRlclNlbGVjdCB7XG4gICAgICAgIG1pbi13aWR0aDogODBweDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXMpO1xuICAgIH1cblxuICAgIC5yZXN1bHRzRHJvcGRvd24ge1xuICAgICAgICBtYXgtaGVpZ2h0OiAzMDBweDtcbiAgICB9XG5cbiAgICAuY2xlYXJCdXR0b24ge1xuICAgICAgICByaWdodDogOTBweDtcbiAgICB9XG59Il19 */";
862
+ var styles$9 = {"searchContainer":"SearchBar-module_searchContainer__TdM1w","searchInputWrapper":"SearchBar-module_searchInputWrapper__kCZLU","searchIcon":"SearchBar-module_searchIcon__IIxEu","searchInput":"SearchBar-module_searchInput__V4gkE","clearButton":"SearchBar-module_clearButton__7fNIY","filterSelect":"SearchBar-module_filterSelect__xIVE4","resultsDropdown":"SearchBar-module_resultsDropdown__yh6NF","loadingState":"SearchBar-module_loadingState__4gidK","emptyState":"SearchBar-module_emptyState__RbI4s","spinner":"SearchBar-module_spinner__PMc6-","resultsGroups":"SearchBar-module_resultsGroups__U24DC","resultGroup":"SearchBar-module_resultGroup__SoTQH","groupHeader":"SearchBar-module_groupHeader__bFRHA","groupIcon":"SearchBar-module_groupIcon__9ENM-","groupTitle":"SearchBar-module_groupTitle__ZekZs","groupCount":"SearchBar-module_groupCount__PQIqw","groupResults":"SearchBar-module_groupResults__xTF52","resultItem":"SearchBar-module_resultItem__VaKKy","highlighted":"SearchBar-module_highlighted__Q-3sH","resultTitle":"SearchBar-module_resultTitle__i1uqL","resultSubtitle":"SearchBar-module_resultSubtitle__LQOJ1","resultMeta":"SearchBar-module_resultMeta__Kmkrn","resultContent":"SearchBar-module_resultContent__TzVzL","highlight":"SearchBar-module_highlight__Q3PSP"};
863
+ styleInject(css_248z$b);
864
+
865
+ const filterOptions = [
866
+ { value: 'all', label: 'All', icon: FiSearch },
867
+ { value: 'projects', label: 'Projects', icon: FiFolder },
868
+ { value: 'clients', label: 'Clients', icon: FiUsers },
869
+ { value: 'contacts', label: 'Contacts', icon: FiBook },
870
+ { value: 'interactions', label: 'Interactions', icon: FiMessageSquare },
871
+ { value: 'team', label: 'Team', icon: FiUserPlus },
872
+ ];
873
+ const entityIcons = {
874
+ projects: FiFolder,
875
+ clients: FiUsers,
876
+ contacts: FiBook,
877
+ interactions: FiMessageSquare,
878
+ team: FiUserPlus,
879
+ };
880
+ const SearchBar = ({ className, placeholder = "Search (Ctrl+Space)...", onSearch, onResultClick, onClear, debounceDelay = 300, minSearchLength = 2, showFilter = true, enableKeyboardShortcut = true }) => {
881
+ const [query, setQuery] = useState('');
882
+ const [filter, setFilter] = useState('all');
883
+ const [results, setResults] = useState([]);
884
+ const [isLoading, setIsLoading] = useState(false);
885
+ const [isDropdownOpen, setIsDropdownOpen] = useState(false);
886
+ const [highlightedIndex, setHighlightedIndex] = useState(-1);
887
+ const searchRef = useRef(null);
888
+ const inputRef = useRef(null);
889
+ const debounceTimerRef = useRef();
890
+ const resultsRef = useRef(null);
891
+ // Perform search with debounce
892
+ const performSearch = useCallback(async (searchQuery, searchFilter) => {
893
+ if (searchQuery.trim().length < minSearchLength) {
894
+ setResults([]);
895
+ setIsDropdownOpen(false);
896
+ return;
897
+ }
898
+ if (!onSearch) {
899
+ // If no search handler provided, just show empty results
900
+ setResults([]);
901
+ setIsDropdownOpen(false);
902
+ return;
903
+ }
904
+ setIsLoading(true);
905
+ try {
906
+ const searchResults = await onSearch(searchQuery, searchFilter);
907
+ setResults(searchResults);
908
+ setIsDropdownOpen(searchResults.length > 0);
909
+ setHighlightedIndex(-1);
910
+ }
911
+ catch (error) {
912
+ console.error('Search error:', error);
913
+ setResults([]);
914
+ setIsDropdownOpen(false);
915
+ }
916
+ finally {
917
+ setIsLoading(false);
918
+ }
919
+ }, [onSearch, minSearchLength]);
920
+ // Handle input change with debounce
921
+ useEffect(() => {
922
+ if (debounceTimerRef.current) {
923
+ clearTimeout(debounceTimerRef.current);
924
+ }
925
+ if (query.trim()) {
926
+ debounceTimerRef.current = setTimeout(() => {
927
+ performSearch(query, filter);
928
+ }, debounceDelay);
929
+ }
930
+ else {
931
+ setResults([]);
932
+ setIsDropdownOpen(false);
106
933
  }
107
934
  return () => {
108
- document.removeEventListener('keydown', handleEsc);
109
- document.body.style.overflow = '';
935
+ if (debounceTimerRef.current) {
936
+ clearTimeout(debounceTimerRef.current);
937
+ }
938
+ };
939
+ }, [query, filter, performSearch, debounceDelay]);
940
+ // Close dropdown when clicking outside
941
+ useEffect(() => {
942
+ const handleClickOutside = (event) => {
943
+ if (searchRef.current && !searchRef.current.contains(event.target)) {
944
+ setIsDropdownOpen(false);
945
+ setHighlightedIndex(-1);
946
+ }
947
+ };
948
+ document.addEventListener('mousedown', handleClickOutside);
949
+ return () => document.removeEventListener('mousedown', handleClickOutside);
950
+ }, []);
951
+ // Global keyboard shortcut for search (Ctrl+Space)
952
+ useEffect(() => {
953
+ if (!enableKeyboardShortcut)
954
+ return;
955
+ const handleGlobalKeyDown = (e) => {
956
+ // Ctrl+Space or Cmd+Space to focus search
957
+ if ((e.ctrlKey || e.metaKey) && e.code === 'Space') {
958
+ e.preventDefault();
959
+ inputRef.current?.focus();
960
+ inputRef.current?.select();
961
+ }
110
962
  };
111
- }, [isOpen, onClose, closeOnEsc]);
112
- const handleOverlayClick = (e) => {
113
- if (closeOnOverlay && e.target === e.currentTarget) {
114
- onClose();
963
+ document.addEventListener('keydown', handleGlobalKeyDown);
964
+ return () => document.removeEventListener('keydown', handleGlobalKeyDown);
965
+ }, [enableKeyboardShortcut]);
966
+ // Auto-scroll to highlighted item
967
+ useEffect(() => {
968
+ if (highlightedIndex >= 0 && resultsRef.current) {
969
+ const highlightedElement = resultsRef.current.querySelector(`[data-result-index="${highlightedIndex}"]`);
970
+ if (highlightedElement) {
971
+ highlightedElement.scrollIntoView({
972
+ behavior: 'smooth',
973
+ block: 'nearest'
974
+ });
975
+ }
976
+ }
977
+ }, [highlightedIndex]);
978
+ // Handle keyboard navigation
979
+ const handleKeyDown = (e) => {
980
+ switch (e.key) {
981
+ case 'ArrowDown':
982
+ e.preventDefault();
983
+ if (!isDropdownOpen && results.length > 0) {
984
+ setIsDropdownOpen(true);
985
+ setHighlightedIndex(0);
986
+ }
987
+ else if (results.length > 0) {
988
+ setHighlightedIndex(prev => prev < results.length - 1 ? prev + 1 : 0);
989
+ }
990
+ break;
991
+ case 'ArrowUp':
992
+ e.preventDefault();
993
+ if (isDropdownOpen && results.length > 0) {
994
+ setHighlightedIndex(prev => prev > 0 ? prev - 1 : results.length - 1);
995
+ }
996
+ break;
997
+ case 'Enter':
998
+ e.preventDefault();
999
+ if (!isDropdownOpen && results.length > 0) {
1000
+ // If dropdown is closed, open it and select first result
1001
+ setIsDropdownOpen(true);
1002
+ setHighlightedIndex(0);
1003
+ }
1004
+ else if (results.length > 0) {
1005
+ // If no item is highlighted, select the first one
1006
+ const indexToUse = highlightedIndex >= 0 ? highlightedIndex : 0;
1007
+ if (indexToUse < results.length) {
1008
+ handleResultClick(results[indexToUse]);
1009
+ }
1010
+ }
1011
+ break;
1012
+ case 'Escape':
1013
+ setIsDropdownOpen(false);
1014
+ setHighlightedIndex(-1);
1015
+ inputRef.current?.blur();
1016
+ break;
115
1017
  }
116
1018
  };
117
- const modalClasses = [
118
- styles$1.modal,
119
- styles$1[size],
120
- centered && styles$1.centered,
121
- className
122
- ].filter(Boolean).join(' ');
123
- const overlayClasses = [
124
- styles$1.overlay,
125
- overlayClassName
126
- ].filter(Boolean).join(' ');
127
- const modalContent = (jsx(AnimatePresence, { children: isOpen && (jsx(motion.div, { className: overlayClasses, initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.2 }, onClick: handleOverlayClick, children: jsxs(motion.div, { className: modalClasses, initial: { scale: 0.9, opacity: 0 }, animate: { scale: 1, opacity: 1 }, exit: { scale: 0.9, opacity: 0 }, transition: { type: "spring", damping: 25, stiffness: 300 }, onClick: (e) => e.stopPropagation(), children: [(header || title || showCloseButton) && (jsxs("div", { className: styles$1.header, children: [header || (title && jsx("h2", { className: styles$1.title, children: title })), showCloseButton && (jsx("button", { className: styles$1.closeButton, onClick: onClose, "aria-label": "Close modal", children: "\u2715" }))] })), children && jsx("div", { className: styles$1.body, children: children }), footer && jsx("div", { className: styles$1.footer, children: footer })] }) })) }));
128
- if (typeof document !== 'undefined') {
129
- return createPortal(modalContent, document.body);
1019
+ // Handle result click
1020
+ const handleResultClick = (result) => {
1021
+ if (onResultClick) {
1022
+ onResultClick(result);
1023
+ }
1024
+ setQuery('');
1025
+ setIsDropdownOpen(false);
1026
+ setHighlightedIndex(-1);
1027
+ };
1028
+ // Clear search
1029
+ const handleClear = () => {
1030
+ setQuery('');
1031
+ setResults([]);
1032
+ setIsDropdownOpen(false);
1033
+ setHighlightedIndex(-1);
1034
+ inputRef.current?.focus();
1035
+ if (onClear) {
1036
+ onClear();
1037
+ }
1038
+ };
1039
+ // Group results by type
1040
+ const groupedResults = results.reduce((acc, result) => {
1041
+ if (!acc[result.type]) {
1042
+ acc[result.type] = [];
1043
+ }
1044
+ acc[result.type].push(result);
1045
+ return acc;
1046
+ }, {});
1047
+ // Highlight matching text
1048
+ const highlightMatch = (text, highlight) => {
1049
+ if (!text || !highlight.trim())
1050
+ return text || '';
1051
+ const regex = new RegExp(`(${highlight.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')})`, 'gi');
1052
+ const parts = text.split(regex);
1053
+ return parts.map((part, index) => regex.test(part) ? (jsx("mark", { className: styles$9.highlight, children: part }, index)) : (part));
1054
+ };
1055
+ return (jsxs("div", { ref: searchRef, className: `${styles$9.searchContainer} ${className || ''}`, children: [jsxs("div", { className: styles$9.searchInputWrapper, children: [jsx(FiSearch, { className: styles$9.searchIcon }), jsx("input", { ref: inputRef, type: "text", value: query, onChange: (e) => setQuery(e.target.value), onKeyDown: handleKeyDown, onFocus: () => query.trim() && results.length > 0 && setIsDropdownOpen(true), placeholder: placeholder, className: styles$9.searchInput, "aria-label": "Search", "aria-expanded": isDropdownOpen, "aria-controls": "search-results", "aria-autocomplete": "list" }), query && (jsx(motion.button, { className: styles$9.clearButton, onClick: handleClear, whileHover: { scale: 1.1 }, whileTap: { scale: 0.9 }, initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, exit: { opacity: 0, scale: 0.8 }, children: jsx(FiX, {}) })), showFilter && (jsx("select", { value: filter, onChange: (e) => setFilter(e.target.value), className: styles$9.filterSelect, "aria-label": "Filter search results", children: filterOptions.map(option => (jsx("option", { value: option.value, children: option.label }, option.value))) }))] }), jsx(AnimatePresence, { children: isDropdownOpen && (jsx(motion.div, { ref: resultsRef, id: "search-results", className: styles$9.resultsDropdown, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -10 }, transition: { duration: 0.2 }, children: isLoading ? (jsxs("div", { className: styles$9.loadingState, children: [jsx("div", { className: styles$9.spinner }), jsx("span", { children: "Searching..." })] })) : results.length === 0 ? (jsxs("div", { className: styles$9.emptyState, children: ["No results found for \"", query, "\""] })) : (jsx("div", { className: styles$9.resultsGroups, children: Object.entries(groupedResults).map(([type, groupResults]) => {
1056
+ const Icon = entityIcons[type];
1057
+ return (jsxs("div", { className: styles$9.resultGroup, children: [jsxs("div", { className: styles$9.groupHeader, children: [Icon && jsx(Icon, { className: styles$9.groupIcon }), jsx("span", { className: styles$9.groupTitle, children: type.charAt(0).toUpperCase() + type.slice(1) }), jsx("span", { className: styles$9.groupCount, children: groupResults.length })] }), jsx("div", { className: styles$9.groupResults, children: groupResults.map((result) => {
1058
+ const globalIndex = results.indexOf(result);
1059
+ return (jsxs(motion.button, { "data-result-index": globalIndex, className: `${styles$9.resultItem} ${highlightedIndex === globalIndex ? styles$9.highlighted : ''}`, onClick: () => handleResultClick(result), whileHover: { x: 4 }, onMouseEnter: () => setHighlightedIndex(globalIndex), children: [jsxs("div", { className: styles$9.resultContent, children: [jsx("div", { className: styles$9.resultTitle, children: highlightMatch(result.title || 'Untitled', query) }), result.subtitle && (jsx("div", { className: styles$9.resultSubtitle, children: highlightMatch(result.subtitle, query) }))] }), result.meta && (jsx("div", { className: styles$9.resultMeta, children: result.meta }))] }, `${result.type}-${result.id}`));
1060
+ }) })] }, type));
1061
+ }) })) })) })] }));
1062
+ };
1063
+
1064
+ var css_248z$a = ".TimePickerModal-module_modalOverlay__Cbq5-{align-items:center;animation:TimePickerModal-module_fadeIn__1ngxN .2s ease;backdrop-filter:blur(4px);background:rgba(0,0,0,.5);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}@keyframes TimePickerModal-module_fadeIn__1ngxN{0%{opacity:0}to{opacity:1}}.TimePickerModal-module_modalContent__e6py2{animation:TimePickerModal-module_slideUp__ruCh5 .3s ease;background:var(--color-background);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);display:flex;flex-direction:column;max-height:80vh;max-width:400px;width:90%}@keyframes TimePickerModal-module_slideUp__ruCh5{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.TimePickerModal-module_modalHeader__XhTgK{align-items:center;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;padding:var(--spacing-lg)}.TimePickerModal-module_modalHeader__XhTgK h3{color:var(--color-text);font-size:var(--font-size-lg);margin:0}.TimePickerModal-module_closeButton__qsRAG{align-items:center;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;display:flex;justify-content:center;padding:var(--spacing-xs);transition:all var(--transition-base)}.TimePickerModal-module_closeButton__qsRAG:hover{background:var(--color-background-secondary);color:var(--color-text)}.TimePickerModal-module_timeDisplay__voGP4{color:var(--color-primary);font-family:SF Mono,Monaco,monospace;font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);letter-spacing:.1em;padding:var(--spacing-lg);text-align:center}.TimePickerModal-module_pickerContainer__4qn3r{align-items:center;display:flex;gap:var(--spacing-md);justify-content:center;padding:0 var(--spacing-lg)}.TimePickerModal-module_pickerColumn__0-kWf{flex:1;max-width:150px}.TimePickerModal-module_pickerLabel__e7zQ2{color:var(--color-text-secondary);font-size:var(--font-size-sm);letter-spacing:.05em;margin-bottom:var(--spacing-sm);text-align:center;text-transform:uppercase}.TimePickerModal-module_pickerScroll__5Dcvw{background:var(--color-background-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);height:200px;overflow-y:auto;padding:var(--spacing-xs)}.TimePickerModal-module_pickerScroll__5Dcvw::-webkit-scrollbar{width:6px}.TimePickerModal-module_pickerScroll__5Dcvw::-webkit-scrollbar-track{background:var(--color-background-tertiary);border-radius:3px}.TimePickerModal-module_pickerScroll__5Dcvw::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.TimePickerModal-module_pickerScroll__5Dcvw::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}.TimePickerModal-module_pickerItem__n8sC2{background:none;border:none;border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;display:block;font-size:var(--font-size-base);padding:var(--spacing-sm);transition:all var(--transition-base);width:100%}.TimePickerModal-module_pickerItem__n8sC2:hover{background:var(--color-background-tertiary)}.TimePickerModal-module_pickerItem__n8sC2.TimePickerModal-module_selected__oQA8Z{background:var(--color-primary);color:#fff;font-weight:var(--font-weight-semibold)}.TimePickerModal-module_pickerDivider__eg83F{color:var(--color-text-secondary);font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);padding:0 var(--spacing-sm)}.TimePickerModal-module_modalActions__eJRWU{border-top:1px solid var(--color-border);display:flex;gap:var(--spacing-md);padding:var(--spacing-lg)}.TimePickerModal-module_cancelButton__zri81,.TimePickerModal-module_confirmButton__q2p3Q{border:none;border-radius:var(--radius-md);cursor:pointer;flex:1;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);padding:var(--spacing-sm) var(--spacing-lg);transition:all var(--transition-base)}.TimePickerModal-module_cancelButton__zri81{background:var(--color-background-secondary);color:var(--color-text)}.TimePickerModal-module_cancelButton__zri81:hover{background:var(--color-background-tertiary)}.TimePickerModal-module_confirmButton__q2p3Q{background:var(--color-primary);color:#fff}.TimePickerModal-module_confirmButton__q2p3Q:hover{background:var(--color-primary-hover)}[data-theme=dark] .TimePickerModal-module_modalContent__e6py2{background:var(--color-background-secondary)}@media (max-width:768px){.TimePickerModal-module_modalContent__e6py2{max-width:none;width:95%}.TimePickerModal-module_pickerScroll__5Dcvw{height:150px}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVQaWNrZXJNb2RhbC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLDRDQVNJLGtCQUFtQixDQUduQix1REFBMkIsQ0FMM0IseUJBQTBCLENBRDFCLHlCQUE4QixDQUQ5QixRQUFTLENBR1QsWUFBYSxDQUViLHNCQUF1QixDQVB2QixNQUFPLENBRlAsY0FBZSxDQUdmLE9BQVEsQ0FGUixLQUFNLENBU04sWUFFSixDQUVBLGdEQUNJLEdBQU8sU0FBWSxDQUNuQixHQUFLLFNBQVksQ0FDckIsQ0FFQSw0Q0FTSSx3REFBNEIsQ0FSNUIsa0NBQW1DLENBQ25DLDhCQUErQixDQUMvQiwyQkFBNEIsQ0FJNUIsWUFBYSxDQUNiLHFCQUFzQixDQUZ0QixlQUFnQixDQURoQixlQUFnQixDQURoQixTQU1KLENBRUEsaURBQ0ksR0FDSSxTQUFVLENBQ1YsMEJBQ0osQ0FDQSxHQUNJLFNBQVUsQ0FDVix1QkFDSixDQUNKLENBRUEsMkNBR0ksa0JBQW1CLENBRW5CLDJDQUE0QyxDQUo1QyxZQUFhLENBQ2IsNkJBQThCLENBRTlCLHlCQUVKLENBRUEsOENBR0ksdUJBQXdCLENBRHhCLDZCQUE4QixDQUQ5QixRQUdKLENBRUEsMkNBT0ksa0JBQW1CLENBTm5CLGVBQWdCLENBQ2hCLFdBQVksQ0FPWiw4QkFBK0IsQ0FOL0IsaUNBQWtDLENBQ2xDLGNBQWUsQ0FFZixZQUFhLENBRWIsc0JBQXVCLENBSHZCLHlCQUEwQixDQUsxQixxQ0FDSixDQUVBLGlEQUNJLDRDQUE2QyxDQUM3Qyx1QkFDSixDQUVBLDJDQUtJLDBCQUEyQixDQUMzQixvQ0FBeUMsQ0FKekMsOEJBQStCLENBQy9CLG1DQUFvQyxDQUlwQyxtQkFBcUIsQ0FIckIseUJBQTBCLENBSDFCLGlCQU9KLENBRUEsK0NBS0ksa0JBQW1CLENBSm5CLFlBQWEsQ0FDYixxQkFBc0IsQ0FFdEIsc0JBQXVCLENBRHZCLDJCQUdKLENBRUEsNENBQ0ksTUFBTyxDQUNQLGVBQ0osQ0FFQSwyQ0FHSSxpQ0FBa0MsQ0FEbEMsNkJBQThCLENBSTlCLG9CQUFzQixDQUZ0QiwrQkFBZ0MsQ0FIaEMsaUJBQWtCLENBSWxCLHdCQUVKLENBRUEsNENBTUksNENBQTZDLENBSDdDLG9DQUFxQyxDQUNyQyw4QkFBK0IsQ0FIL0IsWUFBYSxDQUNiLGVBQWdCLENBR2hCLHlCQUVKLENBRUEsK0RBQ0ksU0FDSixDQUVBLHFFQUNJLDJDQUE0QyxDQUM1QyxpQkFDSixDQUVBLHFFQUNJLDhCQUErQixDQUMvQixpQkFDSixDQUVBLDJFQUNJLG9DQUNKLENBRUEsMENBSUksZUFBZ0IsQ0FDaEIsV0FBWSxDQUtaLDhCQUErQixDQUYvQix1QkFBd0IsQ0FGeEIsY0FBZSxDQUxmLGFBQWMsQ0FNZCwrQkFBZ0MsQ0FKaEMseUJBQTBCLENBTTFCLHFDQUFzQyxDQVB0QyxVQVNKLENBRUEsZ0RBQ0ksMkNBQ0osQ0FFQSxpRkFDSSwrQkFBZ0MsQ0FDaEMsVUFBWSxDQUNaLHVDQUNKLENBRUEsNkNBRUksaUNBQWtDLENBRGxDLDhCQUErQixDQUUvQixtQ0FBb0MsQ0FDcEMsMkJBQ0osQ0FFQSw0Q0FJSSx3Q0FBeUMsQ0FIekMsWUFBYSxDQUNiLHFCQUFzQixDQUN0Qix5QkFFSixDQUVBLHlGQVNJLFdBQVksQ0FMWiw4QkFBK0IsQ0FHL0IsY0FBZSxDQUxmLE1BQU8sQ0FHUCwrQkFBZ0MsQ0FDaEMsdUNBQXdDLENBSHhDLDJDQUE0QyxDQUs1QyxxQ0FFSixDQUVBLDRDQUNJLDRDQUE2QyxDQUM3Qyx1QkFDSixDQUVBLGtEQUNJLDJDQUNKLENBRUEsNkNBQ0ksK0JBQWdDLENBQ2hDLFVBQ0osQ0FFQSxtREFDSSxxQ0FDSixDQUdBLDhEQUNJLDRDQUNKLENBR0EseUJBQ0ksNENBRUksY0FBZSxDQURmLFNBRUosQ0FFQSw0Q0FDSSxZQUNKLENBQ0oiLCJmaWxlIjoiVGltZVBpY2tlck1vZGFsLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBNb2RhbCBPdmVybGF5ICovXG4ubW9kYWxPdmVybGF5IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgei1pbmRleDogMTAwMDtcbiAgICBhbmltYXRpb246IGZhZGVJbiAwLjJzIGVhc2U7XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluIHtcbiAgICBmcm9tIHsgb3BhY2l0eTogMDsgfVxuICAgIHRvIHsgb3BhY2l0eTogMTsgfVxufVxuXG4ubW9kYWxDb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy14bCk7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgIG1heC1oZWlnaHQ6IDgwdmg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFuaW1hdGlvbjogc2xpZGVVcCAwLjNzIGVhc2U7XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVVcCB7XG4gICAgZnJvbSB7IFxuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7XG4gICAgfVxuICAgIHRvIHsgXG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi5tb2RhbEhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLWxnKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuLm1vZGFsSGVhZGVyIGgzIHtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbn1cblxuLmNsb3NlQnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhzKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLmNsb3NlQnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xufVxuXG4udGltZURpc3BsYXkge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS0zeGwpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgTW9uYWNvLCBtb25vc3BhY2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMWVtO1xufVxuXG4ucGlja2VyQ29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zcGFjaW5nLWxnKTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ucGlja2VyQ29sdW1uIHtcbiAgICBmbGV4OiAxO1xuICAgIG1heC13aWR0aDogMTUwcHg7XG59XG5cbi5waWNrZXJMYWJlbCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctc20pO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbn1cblxuLnBpY2tlclNjcm9sbCB7XG4gICAgaGVpZ2h0OiAyMDBweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhzKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG59XG5cbi5waWNrZXJTY3JvbGw6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogNnB4O1xufVxuXG4ucGlja2VyU2Nyb2xsOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuXG4ucGlja2VyU2Nyb2xsOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG59XG5cbi5waWNrZXJTY3JvbGw6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ib3JkZXItaG92ZXIpO1xufVxuXG4ucGlja2VySXRlbSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xufVxuXG4ucGlja2VySXRlbTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG59XG5cbi5waWNrZXJJdGVtLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbn1cblxuLnBpY2tlckRpdmlkZXIge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTJ4bCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zcGFjaW5nLXNtKTtcbn1cblxuLm1vZGFsQWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xufVxuXG4uY2FuY2VsQnV0dG9uLFxuLmNvbmZpcm1CdXR0b24ge1xuICAgIGZsZXg6IDE7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1sZyk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICBib3JkZXI6IG5vbmU7XG59XG5cbi5jYW5jZWxCdXR0b24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG59XG5cbi5jYW5jZWxCdXR0b246aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpO1xufVxuXG4uY29uZmlybUJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgY29sb3I6IHdoaXRlO1xufVxuXG4uY29uZmlybUJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeS1ob3Zlcik7XG59XG5cbi8qIERhcmsgbW9kZSBhZGp1c3RtZW50cyAqL1xuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5tb2RhbENvbnRlbnQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbn1cblxuLyogTW9iaWxlIG9wdGltaXphdGlvbnMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5tb2RhbENvbnRlbnQge1xuICAgICAgICB3aWR0aDogOTUlO1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxuICAgIFxuICAgIC5waWNrZXJTY3JvbGwge1xuICAgICAgICBoZWlnaHQ6IDE1MHB4O1xuICAgIH1cbn0iXX0= */";
1065
+ var styles$8 = {"modalOverlay":"TimePickerModal-module_modalOverlay__Cbq5-","modalContent":"TimePickerModal-module_modalContent__e6py2","modalHeader":"TimePickerModal-module_modalHeader__XhTgK","closeButton":"TimePickerModal-module_closeButton__qsRAG","timeDisplay":"TimePickerModal-module_timeDisplay__voGP4","pickerContainer":"TimePickerModal-module_pickerContainer__4qn3r","pickerColumn":"TimePickerModal-module_pickerColumn__0-kWf","pickerLabel":"TimePickerModal-module_pickerLabel__e7zQ2","pickerScroll":"TimePickerModal-module_pickerScroll__5Dcvw","pickerItem":"TimePickerModal-module_pickerItem__n8sC2","selected":"TimePickerModal-module_selected__oQA8Z","pickerDivider":"TimePickerModal-module_pickerDivider__eg83F","modalActions":"TimePickerModal-module_modalActions__eJRWU","cancelButton":"TimePickerModal-module_cancelButton__zri81","confirmButton":"TimePickerModal-module_confirmButton__q2p3Q"};
1066
+ styleInject(css_248z$a);
1067
+
1068
+ function TimePickerModal({ isOpen, onClose, value, onChange }) {
1069
+ const [hours, minutes] = value ? value.split(':').map(Number) : [12, 0];
1070
+ const [selectedHour, setSelectedHour] = useState(hours);
1071
+ const [selectedMinute, setSelectedMinute] = useState(minutes);
1072
+ useEffect(() => {
1073
+ if (value) {
1074
+ const [h, m] = value.split(':').map(Number);
1075
+ setSelectedHour(h);
1076
+ setSelectedMinute(m);
1077
+ }
1078
+ }, [value]);
1079
+ const handleConfirm = () => {
1080
+ const formattedHour = selectedHour.toString().padStart(2, '0');
1081
+ const formattedMinute = selectedMinute.toString().padStart(2, '0');
1082
+ onChange(`${formattedHour}:${formattedMinute}`);
1083
+ onClose();
1084
+ };
1085
+ if (!isOpen)
1086
+ return null;
1087
+ return (jsx("div", { className: styles$8.modalOverlay, onClick: onClose, children: jsxs("div", { className: styles$8.modalContent, onClick: (e) => e.stopPropagation(), children: [jsxs("div", { className: styles$8.modalHeader, children: [jsx("h3", { children: "Select Time" }), jsx("button", { className: styles$8.closeButton, onClick: onClose, "aria-label": "Close", children: jsx(FiX, {}) })] }), jsxs("div", { className: styles$8.timeDisplay, children: [selectedHour.toString().padStart(2, '0'), ":", selectedMinute.toString().padStart(2, '0')] }), jsxs("div", { className: styles$8.pickerContainer, children: [jsxs("div", { className: styles$8.pickerColumn, children: [jsx("div", { className: styles$8.pickerLabel, children: "Hours" }), jsx("div", { className: styles$8.pickerScroll, children: Array.from({ length: 24 }, (_, i) => (jsx("button", { className: `${styles$8.pickerItem} ${selectedHour === i ? styles$8.selected : ''}`, onClick: () => setSelectedHour(i), children: i.toString().padStart(2, '0') }, i))) })] }), jsx("div", { className: styles$8.pickerDivider, children: ":" }), jsxs("div", { className: styles$8.pickerColumn, children: [jsx("div", { className: styles$8.pickerLabel, children: "Minutes" }), jsx("div", { className: styles$8.pickerScroll, children: Array.from({ length: 60 }, (_, i) => (jsx("button", { className: `${styles$8.pickerItem} ${selectedMinute === i ? styles$8.selected : ''}`, onClick: () => setSelectedMinute(i), children: i.toString().padStart(2, '0') }, i))) })] })] }), jsxs("div", { className: styles$8.modalActions, children: [jsx("button", { className: styles$8.cancelButton, onClick: onClose, children: "Cancel" }), jsx("button", { className: styles$8.confirmButton, onClick: handleConfirm, children: "Confirm" })] })] }) }));
1088
+ }
1089
+
1090
+ var css_248z$9 = ".TimeInput-module_timeInput__h1DpT{margin-bottom:var(--spacing-lg)}.TimeInput-module_label__d4rZw{color:var(--color-text);display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);margin-bottom:var(--spacing-sm)}.TimeInput-module_required__rc1vq{color:var(--color-error);margin-left:4px}.TimeInput-module_inputWrapper__4RPAn{align-items:stretch;background:var(--color-background);border:2px solid var(--color-border);border-radius:var(--radius-lg);display:flex;min-height:44px;overflow:hidden;position:relative;transition:all var(--transition-base)}.TimeInput-module_inputWrapper__4RPAn:hover{border-color:var(--color-border-hover);box-shadow:var(--shadow-sm)}.TimeInput-module_inputWrapper__4RPAn:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(124,58,237,.1)}.TimeInput-module_textInput__M3eBZ{background:transparent;border:none;color:var(--color-text);flex:1;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,monospace;font-size:var(--font-size-lg);min-height:44px;outline:none;padding:var(--spacing-sm) var(--spacing-md)}.TimeInput-module_textInput__M3eBZ::placeholder{color:var(--color-text-secondary);opacity:.6}.TimeInput-module_clockButton__3qoub{align-items:center;background:var(--color-primary);border:none;color:#fff;cursor:pointer;display:flex;flex-shrink:0;height:auto;justify-content:center;min-width:44px;padding:0;transition:background var(--transition-base);width:44px}.TimeInput-module_clockButton__3qoub:hover:not(:disabled){background:var(--color-primary-hover)}.TimeInput-module_clockButton__3qoub:active:not(:disabled){transform:scale(.95)}.TimeInput-module_clockButton__3qoub:disabled{cursor:not-allowed;opacity:.5}.TimeInput-module_error__gJnpk .TimeInput-module_inputWrapper__4RPAn{border-color:var(--color-error)}.TimeInput-module_error__gJnpk .TimeInput-module_label__d4rZw{color:var(--color-error)}.TimeInput-module_success__np-lF .TimeInput-module_inputWrapper__4RPAn{border-color:var(--color-success)}.TimeInput-module_loading__Wb1DC .TimeInput-module_inputWrapper__4RPAn{overflow:hidden;position:relative}.TimeInput-module_loading__Wb1DC .TimeInput-module_inputWrapper__4RPAn:after{animation:TimeInput-module_shimmer__qQ2yd 2s infinite;background:linear-gradient(90deg,transparent,rgba(124,58,237,.1),transparent);content:\"\";height:100%;left:-100%;pointer-events:none;position:absolute;top:0;width:100%}@keyframes TimeInput-module_shimmer__qQ2yd{to{left:100%}}.TimeInput-module_disabled__wxiZ- .TimeInput-module_inputWrapper__4RPAn{background:var(--color-background-tertiary);cursor:not-allowed}.TimeInput-module_disabled__wxiZ- .TimeInput-module_textInput__M3eBZ{color:var(--color-text-tertiary);cursor:not-allowed}[data-theme=dark] .TimeInput-module_inputWrapper__4RPAn{background:var(--color-background-secondary);border-color:var(--color-border)}[data-theme=dark] .TimeInput-module_inputWrapper__4RPAn:focus-within{border-color:var(--color-primary-light);box-shadow:0 0 0 3px rgba(167,139,250,.1)}@media (max-width:768px){.TimeInput-module_textInput__M3eBZ{font-size:var(--font-size-xl)}.TimeInput-module_clockButton__3qoub{height:48px;min-width:48px}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVJbnB1dC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQUNJLCtCQUNKLENBRUEsK0JBSUksdUJBQXdCLENBSHhCLGFBQWMsQ0FDZCw2QkFBOEIsQ0FDOUIsdUNBQXdDLENBR3hDLHlDQUEwQyxDQUQxQywrQkFFSixDQUVBLGtDQUNJLHdCQUF5QixDQUN6QixlQUNKLENBRUEsc0NBR0ksbUJBQW9CLENBQ3BCLGtDQUFtQyxDQUNuQyxvQ0FBcUMsQ0FDckMsOEJBQStCLENBSi9CLFlBQWEsQ0FPYixlQUFnQixDQUZoQixlQUFnQixDQU5oQixpQkFBa0IsQ0FPbEIscUNBRUosQ0FFQSw0Q0FDSSxzQ0FBdUMsQ0FDdkMsMkJBQ0osQ0FFQSxtREFDSSxpQ0FBa0MsQ0FDbEMsd0NBQ0osQ0FFQSxtQ0FJSSxzQkFBdUIsQ0FEdkIsV0FBWSxDQUlaLHVCQUF3QixDQU54QixNQUFPLENBS1AsdUVBQW1GLENBRG5GLDZCQUE4QixDQUk5QixlQUFnQixDQURoQixZQUFhLENBTmIsMkNBUUosQ0FFQSxnREFDSSxpQ0FBa0MsQ0FDbEMsVUFDSixDQUVBLHFDQUVJLGtCQUFtQixDQUVuQiwrQkFBZ0MsQ0FDaEMsV0FBWSxDQUNaLFVBQVksQ0FDWixjQUFlLENBTmYsWUFBYSxDQVdiLGFBQWMsQ0FEZCxXQUFZLENBUlosc0JBQXVCLENBTXZCLGNBQWUsQ0FEZixTQUFVLENBS1YsNENBQTZDLENBSDdDLFVBSUosQ0FFQSwwREFDSSxxQ0FDSixDQUVBLDJEQUNJLG9CQUNKLENBRUEsOENBRUksa0JBQW1CLENBRG5CLFVBRUosQ0FHQSxxRUFDSSwrQkFDSixDQUVBLDhEQUNJLHdCQUNKLENBR0EsdUVBQ0ksaUNBQ0osQ0FHQSx1RUFFSSxlQUFnQixDQURoQixpQkFFSixDQUVBLDZFQWFJLHFEQUE4QixDQU45Qiw2RUFLQyxDQVhELFVBQVcsQ0FLWCxXQUFZLENBRlosVUFBVyxDQVVYLG1CQUFvQixDQVpwQixpQkFBa0IsQ0FDbEIsS0FBTSxDQUVOLFVBVUosQ0FFQSwyQ0FDSSxHQUNJLFNBQ0osQ0FDSixDQUdBLHdFQUNJLDJDQUE0QyxDQUM1QyxrQkFDSixDQUVBLHFFQUNJLGdDQUFpQyxDQUNqQyxrQkFDSixDQUdBLHdEQUNJLDRDQUE2QyxDQUM3QyxnQ0FDSixDQUVBLHFFQUNJLHVDQUF3QyxDQUN4Qyx5Q0FDSixDQUdBLHlCQUNJLG1DQUNJLDZCQUNKLENBRUEscUNBRUksV0FBWSxDQURaLGNBRUosQ0FDSiIsImZpbGUiOiJUaW1lSW5wdXQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi50aW1lSW5wdXQge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctbGcpO1xufVxuXG4ubGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tbGV0dGVyLXNwYWNpbmctd2lkZSk7XG59XG5cbi5yZXF1aXJlZCB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWVycm9yKTtcbiAgICBtYXJnaW4tbGVmdDogNHB4O1xufVxuXG4uaW5wdXRXcmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICBtaW4taGVpZ2h0OiA0NHB4O1xufVxuXG4uaW5wdXRXcmFwcGVyOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlci1ob3Zlcik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbn1cblxuLmlucHV0V3JhcHBlcjpmb2N1cy13aXRoaW4ge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTI0LCA1OCwgMjM3LCAwLjEpO1xufVxuXG4udGV4dElucHV0IHtcbiAgICBmbGV4OiAxO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG4gICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgTW9uYWNvLCAnQ2FzY2FkaWEgQ29kZScsICdSb2JvdG8gTW9ubycsIENvbnNvbGFzLCBtb25vc3BhY2U7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgbWluLWhlaWdodDogNDRweDtcbn1cblxuLnRleHRJbnB1dDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgb3BhY2l0eTogMC42O1xufVxuXG4uY2xvY2tCdXR0b24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1pbi13aWR0aDogNDRweDtcbiAgICB3aWR0aDogNDRweDtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uY2xvY2tCdXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnktaG92ZXIpO1xufVxuXG4uY2xvY2tCdXR0b246YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xufVxuXG4uY2xvY2tCdXR0b246ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4vKiBFcnJvciBzdGF0ZSAqL1xuLmVycm9yIC5pbnB1dFdyYXBwZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xufVxuXG4uZXJyb3IgLmxhYmVsIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xufVxuXG4vKiBTdWNjZXNzIHN0YXRlICovXG4uc3VjY2VzcyAuaW5wdXRXcmFwcGVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXN1Y2Nlc3MpO1xufVxuXG4vKiBMb2FkaW5nIHN0YXRlICovXG4ubG9hZGluZyAuaW5wdXRXcmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmxvYWRpbmcgLmlucHV0V3JhcHBlcjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgOTBkZWcsXG4gICAgICAgIHRyYW5zcGFyZW50LFxuICAgICAgICByZ2JhKDEyNCwgNTgsIDIzNywgMC4xKSxcbiAgICAgICAgdHJhbnNwYXJlbnRcbiAgICApO1xuICAgIGFuaW1hdGlvbjogc2hpbW1lciAycyBpbmZpbml0ZTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuQGtleWZyYW1lcyBzaGltbWVyIHtcbiAgICAxMDAlIHtcbiAgICAgICAgbGVmdDogMTAwJTtcbiAgICB9XG59XG5cbi8qIERpc2FibGVkIHN0YXRlICovXG4uZGlzYWJsZWQgLmlucHV0V3JhcHBlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLmRpc2FibGVkIC50ZXh0SW5wdXQge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5KTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4vKiBEYXJrIG1vZGUgKi9cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuaW5wdXRXcmFwcGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXIpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmlucHV0V3JhcHBlcjpmb2N1cy13aXRoaW4ge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTY3LCAxMzksIDI1MCwgMC4xKTtcbn1cblxuLyogTW9iaWxlICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAudGV4dElucHV0IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICAgIH1cbiAgICBcbiAgICAuY2xvY2tCdXR0b24ge1xuICAgICAgICBtaW4td2lkdGg6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogNDhweDtcbiAgICB9XG59Il19 */";
1091
+ var styles$7 = {"timeInput":"TimeInput-module_timeInput__h1DpT","label":"TimeInput-module_label__d4rZw","required":"TimeInput-module_required__rc1vq","inputWrapper":"TimeInput-module_inputWrapper__4RPAn","textInput":"TimeInput-module_textInput__M3eBZ","clockButton":"TimeInput-module_clockButton__3qoub","error":"TimeInput-module_error__gJnpk","success":"TimeInput-module_success__np-lF","loading":"TimeInput-module_loading__Wb1DC","disabled":"TimeInput-module_disabled__wxiZ-"};
1092
+ styleInject(css_248z$9);
1093
+
1094
+ function TimeInput({ label, value, onChange, placeholder = "14:30", onFocus, onBlur, error = false, success = false, loading = false, disabled = false, required = false }) {
1095
+ const [showPicker, setShowPicker] = useState(false);
1096
+ const formatTime24 = (time) => {
1097
+ if (!time)
1098
+ return '';
1099
+ let cleanTime = time.replace(/[^\d:]/g, '');
1100
+ const colonCount = (cleanTime.match(/:/g) || []).length;
1101
+ if (colonCount > 1) {
1102
+ cleanTime = cleanTime.replace(/:/g, '');
1103
+ if (cleanTime.length >= 3) {
1104
+ cleanTime = cleanTime.substring(0, 2) + ':' + cleanTime.substring(2);
1105
+ }
1106
+ }
1107
+ if (cleanTime.length === 3 && !cleanTime.includes(':')) {
1108
+ cleanTime = cleanTime.substring(0, 2) + ':' + cleanTime.substring(2);
1109
+ }
1110
+ else if (cleanTime.length === 4 && !cleanTime.includes(':')) {
1111
+ cleanTime = cleanTime.substring(0, 2) + ':' + cleanTime.substring(2);
1112
+ }
1113
+ if (cleanTime.includes(':')) {
1114
+ const parts = cleanTime.split(':');
1115
+ let hours = parts[0];
1116
+ let minutes = parts[1] || '';
1117
+ hours = hours.substring(0, 2);
1118
+ if (hours.length === 2) {
1119
+ const hourNum = parseInt(hours);
1120
+ if (hourNum > 23) {
1121
+ hours = '23';
1122
+ }
1123
+ }
1124
+ minutes = minutes.substring(0, 2);
1125
+ if (minutes.length === 2) {
1126
+ const minNum = parseInt(minutes);
1127
+ if (minNum > 59) {
1128
+ minutes = '59';
1129
+ }
1130
+ }
1131
+ cleanTime = hours + (minutes.length > 0 ? ':' + minutes : ':');
1132
+ }
1133
+ return cleanTime.substring(0, 5);
1134
+ };
1135
+ const handleTextChange = (inputValue) => {
1136
+ const formattedTime = formatTime24(inputValue);
1137
+ onChange(formattedTime);
1138
+ };
1139
+ const handleClockClick = () => {
1140
+ if (!disabled && !loading) {
1141
+ setShowPicker(true);
1142
+ }
1143
+ };
1144
+ const getContainerClassName = () => {
1145
+ const classes = [styles$7.timeInput];
1146
+ if (error)
1147
+ classes.push(styles$7.error);
1148
+ if (success)
1149
+ classes.push(styles$7.success);
1150
+ if (loading)
1151
+ classes.push(styles$7.loading);
1152
+ if (disabled)
1153
+ classes.push(styles$7.disabled);
1154
+ return classes.join(' ');
1155
+ };
1156
+ return (jsxs(Fragment, { children: [jsxs("div", { className: getContainerClassName(), children: [jsxs("label", { className: styles$7.label, children: [label, required && jsx("span", { className: styles$7.required, children: "*" })] }), jsxs("div", { className: styles$7.inputWrapper, children: [jsx("input", { type: "text", value: value, onChange: (e) => handleTextChange(e.target.value), onFocus: onFocus, onBlur: onBlur, placeholder: placeholder, className: styles$7.textInput, maxLength: 5, disabled: disabled || loading, "aria-invalid": error, "aria-required": required, inputMode: "numeric", pattern: "[0-9:]*" }), jsx("button", { type: "button", onClick: handleClockClick, className: styles$7.clockButton, title: "Open time picker", disabled: disabled || loading, "aria-label": "Open time picker", children: jsx(FiClock, { size: 20 }) })] })] }), jsx(TimePickerModal, { isOpen: showPicker, onClose: () => setShowPicker(false), value: value, onChange: onChange })] }));
1157
+ }
1158
+
1159
+ const ThemeContext = createContext(undefined);
1160
+ const useTheme = () => {
1161
+ const context = useContext(ThemeContext);
1162
+ if (!context) {
1163
+ throw new Error('useTheme must be used within a ThemeProvider');
130
1164
  }
131
- return null;
1165
+ return context;
1166
+ };
1167
+
1168
+ var css_248z$8 = ".ThemeSwitcher-module_button__VfRjU{align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;display:flex;font-size:var(--font-size-base);gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);transition:all var(--transition-base)}.ThemeSwitcher-module_button__VfRjU:hover{background:var(--color-surface-hover);border-color:var(--color-border-hover)}.ThemeSwitcher-module_iconWrapper__FpHo8{align-items:center;display:flex;height:20px;justify-content:center;width:20px}.ThemeSwitcher-module_label__2Hfkp{font-weight:var(--font-weight-medium)}.ThemeSwitcher-module_toggle__ATXx4{align-items:center;background:none;border:none;cursor:pointer;display:flex;gap:var(--spacing-sm);padding:0}.ThemeSwitcher-module_toggleTrack__x28Rv{align-items:center;border-radius:var(--radius-full);display:flex;height:24px;padding:2px;transition:background-color var(--transition-base);width:48px}.ThemeSwitcher-module_toggleThumb__V8QeN{align-items:center;background:var(--color-surface);border-radius:var(--radius-full);box-shadow:var(--shadow-sm);display:flex;height:20px;justify-content:center;width:20px}.ThemeSwitcher-module_dropdown__3qLdt{position:relative}.ThemeSwitcher-module_dropdownTrigger__UzYV5{align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;display:flex;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);transition:all var(--transition-base)}.ThemeSwitcher-module_dropdownTrigger__UzYV5:hover{background:var(--color-surface-hover);border-color:var(--color-border-hover)}.ThemeSwitcher-module_dropdown__3qLdt:focus-within .ThemeSwitcher-module_dropdownMenu__3L5hT,.ThemeSwitcher-module_dropdown__3qLdt:hover .ThemeSwitcher-module_dropdownMenu__3L5hT{display:block}.ThemeSwitcher-module_dropdownMenu__3L5hT{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);display:none;margin-top:var(--spacing-xs);min-width:200px;position:absolute;right:0;top:100%;z-index:var(--z-index-dropdown)}.ThemeSwitcher-module_dropdownItem__inw-K{align-items:center;background:none;border:none;color:var(--color-text);cursor:pointer;display:flex;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);text-align:left;transition:all var(--transition-fast);width:100%}.ThemeSwitcher-module_dropdownItem__inw-K:hover{background:var(--color-background-secondary)}.ThemeSwitcher-module_dropdownItem__inw-K.ThemeSwitcher-module_active__OHP19{background:var(--color-primary);color:var(--color-text-inverse)}.ThemeSwitcher-module_dropdownItem__inw-K:first-child{border-radius:var(--radius-md) var(--radius-md) 0 0}.ThemeSwitcher-module_dropdownItem__inw-K:last-child{border-radius:0 0 var(--radius-md) var(--radius-md)}.ThemeSwitcher-module_icon__iRZiJ{align-items:center;display:flex;justify-content:center;width:20px}.ThemeSwitcher-module_text__OCOoA{flex:1}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRoZW1lU3dpdGNoZXIubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FFSSxrQkFBbUIsQ0FHbkIsK0JBQWdDLENBQ2hDLG9DQUFxQyxDQUNyQyw4QkFBK0IsQ0FDL0IsdUJBQXdCLENBQ3hCLGNBQWUsQ0FSZixZQUFhLENBVWIsK0JBQWdDLENBUmhDLHFCQUFzQixDQUN0QiwyQ0FBNEMsQ0FNNUMscUNBRUosQ0FFQSwwQ0FDSSxxQ0FBc0MsQ0FDdEMsc0NBQ0osQ0FFQSx5Q0FFSSxrQkFBbUIsQ0FEbkIsWUFBYSxDQUliLFdBQVksQ0FGWixzQkFBdUIsQ0FDdkIsVUFFSixDQUVBLG1DQUNJLHFDQUNKLENBR0Esb0NBRUksa0JBQW1CLENBRW5CLGVBQWdCLENBQ2hCLFdBQVksQ0FDWixjQUFlLENBTGYsWUFBYSxDQUViLHFCQUFzQixDQUl0QixTQUNKLENBRUEseUNBTUksa0JBQW1CLENBSG5CLGdDQUFpQyxDQUVqQyxZQUFhLENBSGIsV0FBWSxDQUVaLFdBQVksQ0FHWixrREFBbUQsQ0FObkQsVUFPSixDQUVBLHlDQU1JLGtCQUFtQixDQUhuQiwrQkFBZ0MsQ0FDaEMsZ0NBQWlDLENBSWpDLDJCQUE0QixDQUg1QixZQUFhLENBSGIsV0FBWSxDQUtaLHNCQUF1QixDQU52QixVQVFKLENBR0Esc0NBQ0ksaUJBQ0osQ0FFQSw2Q0FFSSxrQkFBbUIsQ0FHbkIsK0JBQWdDLENBQ2hDLG9DQUFxQyxDQUNyQyw4QkFBK0IsQ0FDL0IsdUJBQXdCLENBQ3hCLGNBQWUsQ0FSZixZQUFhLENBRWIscUJBQXNCLENBQ3RCLDJDQUE0QyxDQU01QyxxQ0FDSixDQUVBLG1EQUNJLHFDQUFzQyxDQUN0QyxzQ0FDSixDQUVBLG1MQUVJLGFBQ0osQ0FFQSwwQ0FNSSwrQkFBZ0MsQ0FDaEMsb0NBQXFDLENBQ3JDLDhCQUErQixDQUMvQiwyQkFBNEIsQ0FSNUIsWUFBYSxDQUliLDRCQUE2QixDQUs3QixlQUFnQixDQVJoQixpQkFBa0IsQ0FFbEIsT0FBUSxDQURSLFFBQVMsQ0FRVCwrQkFDSixDQUVBLDBDQUVJLGtCQUFtQixDQUluQixlQUFnQixDQUNoQixXQUFZLENBQ1osdUJBQXdCLENBQ3hCLGNBQWUsQ0FSZixZQUFhLENBRWIscUJBQXNCLENBRXRCLDJDQUE0QyxDQU01QyxlQUFnQixDQURoQixxQ0FBc0MsQ0FOdEMsVUFRSixDQUVBLGdEQUNJLDRDQUNKLENBRUEsNkVBQ0ksK0JBQWdDLENBQ2hDLCtCQUNKLENBRUEsc0RBQ0ksbURBQ0osQ0FFQSxxREFDSSxtREFDSixDQUVBLGtDQUdJLGtCQUFtQixDQURuQixZQUFhLENBRWIsc0JBQXVCLENBSHZCLFVBSUosQ0FFQSxrQ0FDSSxNQUNKIiwiZmlsZSI6IlRoZW1lU3dpdGNoZXIubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5idXR0b24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctc20pO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xufVxuXG4uYnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlLWhvdmVyKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlci1ob3Zlcik7XG59XG5cbi5pY29uV3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbn1cblxuLmxhYmVsIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbn1cblxuLyogVG9nZ2xlIHZhcmlhbnQgKi9cbi50b2dnbGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctc20pO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4udG9nZ2xlVHJhY2sge1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtZnVsbCk7XG4gICAgcGFkZGluZzogMnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi50b2dnbGVUaHVtYiB7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbn1cblxuLyogRHJvcGRvd24gdmFyaWFudCAqL1xuLmRyb3Bkb3duIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kcm9wZG93blRyaWdnZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctc20pO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uZHJvcGRvd25UcmlnZ2VyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlLWhvdmVyKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlci1ob3Zlcik7XG59XG5cbi5kcm9wZG93bjpob3ZlciAuZHJvcGRvd25NZW51LFxuLmRyb3Bkb3duOmZvY3VzLXdpdGhpbiAuZHJvcGRvd25NZW51IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmRyb3Bkb3duTWVudSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxMDAlO1xuICAgIHJpZ2h0OiAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmcteHMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgei1pbmRleDogdmFyKC0tei1pbmRleC1kcm9wZG93bik7XG59XG5cbi5kcm9wZG93bkl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctc20pO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLmRyb3Bkb3duSXRlbTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xufVxuXG4uZHJvcGRvd25JdGVtLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG59XG5cbi5kcm9wZG93bkl0ZW06Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCkgdmFyKC0tcmFkaXVzLW1kKSAwIDA7XG59XG5cbi5kcm9wZG93bkl0ZW06bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXJhZGl1czogMCAwIHZhcigtLXJhZGl1cy1tZCkgdmFyKC0tcmFkaXVzLW1kKTtcbn1cblxuLmljb24ge1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLnRleHQge1xuICAgIGZsZXg6IDE7XG59Il19 */";
1169
+ var styles$6 = {"button":"ThemeSwitcher-module_button__VfRjU","iconWrapper":"ThemeSwitcher-module_iconWrapper__FpHo8","label":"ThemeSwitcher-module_label__2Hfkp","toggle":"ThemeSwitcher-module_toggle__ATXx4","toggleTrack":"ThemeSwitcher-module_toggleTrack__x28Rv","toggleThumb":"ThemeSwitcher-module_toggleThumb__V8QeN","dropdown":"ThemeSwitcher-module_dropdown__3qLdt","dropdownTrigger":"ThemeSwitcher-module_dropdownTrigger__UzYV5","dropdownMenu":"ThemeSwitcher-module_dropdownMenu__3L5hT","dropdownItem":"ThemeSwitcher-module_dropdownItem__inw-K","active":"ThemeSwitcher-module_active__OHP19","icon":"ThemeSwitcher-module_icon__iRZiJ","text":"ThemeSwitcher-module_text__OCOoA"};
1170
+ styleInject(css_248z$8);
1171
+
1172
+ const ThemeSwitcher = ({ variant = 'button', showLabel = false, className = '', }) => {
1173
+ const { theme, setTheme } = useTheme();
1174
+ const themes = [
1175
+ { value: 'light', label: 'Light', icon: jsx(FiSun, {}) },
1176
+ { value: 'dark', label: 'Dark', icon: jsx(FiMoon, {}) },
1177
+ { value: 'lossito', label: 'Lossito Light', icon: '✨' },
1178
+ { value: 'lossito-dark', label: 'Lossito Dark', icon: '🌑' },
1179
+ { value: 'dmood', label: 'Dmood Light', icon: '💙' },
1180
+ { value: 'dmood-dark', label: 'Dmood Dark', icon: '🌌' },
1181
+ ];
1182
+ const currentThemeIndex = themes.findIndex(t => t.value === theme);
1183
+ const currentTheme = themes[currentThemeIndex];
1184
+ if (variant === 'toggle') {
1185
+ // Simple toggle between light and dark
1186
+ const isDark = theme.includes('dark');
1187
+ return (jsxs(motion.button, { className: `${styles$6.toggle} ${className}`, onClick: () => setTheme(isDark ? 'light' : 'dark'), whileTap: { scale: 0.95 }, "aria-label": "Toggle theme", children: [jsx(motion.div, { className: styles$6.toggleTrack, animate: { backgroundColor: isDark ? 'var(--color-primary)' : 'var(--color-border)' }, children: jsx(motion.div, { className: styles$6.toggleThumb, animate: { x: isDark ? 24 : 0 }, transition: { type: 'spring', stiffness: 500, damping: 30 }, children: isDark ? jsx(FiMoon, { size: 14 }) : jsx(FiSun, { size: 14 }) }) }), showLabel && jsx("span", { className: styles$6.label, children: isDark ? 'Dark' : 'Light' })] }));
1188
+ }
1189
+ if (variant === 'dropdown') {
1190
+ return (jsxs("div", { className: `${styles$6.dropdown} ${className}`, children: [jsxs(motion.button, { className: styles$6.dropdownTrigger, whileTap: { scale: 0.98 }, children: [currentTheme.icon, showLabel && jsx("span", { className: styles$6.label, children: currentTheme.label })] }), jsx(motion.div, { className: styles$6.dropdownMenu, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, children: themes.map((t) => (jsxs(motion.button, { className: `${styles$6.dropdownItem} ${theme === t.value ? styles$6.active : ''}`, onClick: () => setTheme(t.value), whileHover: { x: 4 }, whileTap: { scale: 0.98 }, children: [jsx("span", { className: styles$6.icon, children: t.icon }), jsx("span", { className: styles$6.text, children: t.label })] }, t.value))) })] }));
1191
+ }
1192
+ // Default button variant - cycles through themes
1193
+ return (jsxs(motion.button, { className: `${styles$6.button} ${className}`, onClick: () => {
1194
+ const nextIndex = (currentThemeIndex + 1) % themes.length;
1195
+ setTheme(themes[nextIndex].value);
1196
+ }, whileTap: { scale: 0.95 }, whileHover: { scale: 1.05 }, "aria-label": `Current theme: ${currentTheme.label}. Click to change.`, children: [jsx(motion.div, { initial: { rotate: -180, opacity: 0 }, animate: { rotate: 0, opacity: 1 }, exit: { rotate: 180, opacity: 0 }, transition: { duration: 0.3 }, className: styles$6.iconWrapper, children: currentTheme.icon }, theme), showLabel && jsx("span", { className: styles$6.label, children: currentTheme.label })] }));
1197
+ };
1198
+
1199
+ var css_248z$7 = ".Navbar-module_navbar__-SNiN{background:var(--color-surface);display:flex;flex-direction:column;padding:var(--spacing-md);position:fixed;transition:transform var(--transition-base);z-index:var(--z-index-sticky)}.Navbar-module_navbarSidebar__RVVL8{bottom:0;box-shadow:var(--shadow-lg);left:0;overflow-y:auto;top:0;width:280px}.Navbar-module_navbarTop__MLI-S{align-items:center;box-shadow:var(--shadow-md);flex-direction:row;height:auto;left:0;padding:var(--spacing-sm) var(--spacing-lg);right:0;top:0}.Navbar-module_navbarTop__MLI-S .Navbar-module_navList__764oY{flex-direction:row;gap:var(--spacing-md);margin:0}.Navbar-module_navbarTop__MLI-S .Navbar-module_navItem__cbeLP{margin:0}.Navbar-module_navbarMinimal__7gs0n{background:transparent;box-shadow:none;padding:0;position:relative}.Navbar-module_navbarMinimal__7gs0n .Navbar-module_navList__764oY{flex-direction:row;gap:var(--spacing-sm)}.Navbar-module_navLogo__y0AxI{margin-bottom:var(--spacing-xl)}.Navbar-module_navbarTop__MLI-S .Navbar-module_navLogo__y0AxI{margin-bottom:0;margin-right:auto}.Navbar-module_logoContainer__zJG3x{align-items:center;display:flex;gap:var(--spacing-md)}.Navbar-module_logoImage__1Ptmz{border-radius:var(--radius-md);height:48px;object-fit:contain;width:48px}.Navbar-module_logoPlaceholder__aIREi{align-items:center;background:var(--color-primary);border-radius:var(--radius-md);color:var(--color-text-inverse);display:flex;font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);height:48px;justify-content:center;width:48px}.Navbar-module_logoContent__CjPyL{display:flex;flex-direction:column}.Navbar-module_logoText__bTwI0{color:var(--color-text);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight)}.Navbar-module_logoSubtitle__UA95I{color:var(--color-text-secondary);font-size:var(--font-size-xs);line-height:var(--line-height-tight)}.Navbar-module_navList__764oY{display:flex;flex:1;flex-direction:column;list-style:none;margin:0;padding:0}.Navbar-module_navItem__cbeLP{margin-bottom:var(--spacing-xs)}.Navbar-module_subNavItem__WN9is{margin-left:var(--spacing-lg)}.Navbar-module_navLink__I-45k{align-items:center;background:none;border:none;border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;display:flex;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);padding:var(--spacing-sm) var(--spacing-md);position:relative;text-align:left;text-decoration:none;transition:all var(--transition-fast);width:100%}.Navbar-module_navLink__I-45k:hover{background:var(--color-background-secondary)}.Navbar-module_navLink__I-45k.Navbar-module_active__tLLqx{color:var(--color-text-inverse)}.Navbar-module_activeBackground__ikyOn{background:var(--color-primary);border-radius:var(--radius-md);bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}.Navbar-module_navIcon__uU4yD{font-size:1.25rem;margin-right:var(--spacing-sm);position:relative;transition:color var(--transition-fast);z-index:1}.Navbar-module_activeIcon__omRDk{color:var(--color-text-inverse)}.Navbar-module_navText__4e0cK{flex:1;position:relative;transition:color var(--transition-fast);z-index:1}.Navbar-module_activeText__zSzJC{color:var(--color-text-inverse)}.Navbar-module_navBadge__mLur9{background:var(--color-accent);border-radius:var(--radius-full);color:var(--color-text-inverse);font-weight:var(--font-weight-semibold);padding:2px 6px}.Navbar-module_chevron__nmRNk,.Navbar-module_navBadge__mLur9{font-size:var(--font-size-xs);margin-left:auto;position:relative;z-index:1}.Navbar-module_chevron__nmRNk{color:var(--color-text-secondary)}.Navbar-module_subNavList__YsOQP{list-style:none;margin:var(--spacing-xs) 0 0 0;overflow:hidden;padding:0}.Navbar-module_subNavList__YsOQP .Navbar-module_navLink__I-45k{font-size:var(--font-size-sm);padding:var(--spacing-xs) var(--spacing-sm)}.Navbar-module_navFooter__p1wMO{border-top:1px solid var(--color-border);margin-top:auto;padding-top:var(--spacing-md)}.Navbar-module_mobileMenuButton__BrALw{align-items:center;background:var(--color-primary);border:none;border-radius:var(--radius-md);box-shadow:var(--shadow-lg);color:var(--color-text-inverse);cursor:pointer;display:none;height:48px;justify-content:center;left:var(--spacing-md);position:fixed;top:var(--spacing-md);width:48px;z-index:calc(var(--z-index-sticky) + 1)}.Navbar-module_mobileMenuButton__BrALw:hover{background:var(--color-primary-hover)}.Navbar-module_mobileMenuButton__BrALw svg{font-size:1.5rem}.Navbar-module_mobileBackdrop__bgxCV{background:rgba(0,0,0,.5);bottom:0;left:0;position:fixed;right:0;top:0;z-index:calc(var(--z-index-sticky) - 1)}@media (max-width:768px){.Navbar-module_mobileMenuButton__BrALw{display:flex}.Navbar-module_navbarSidebar__RVVL8{transform:translateX(-100%)}.Navbar-module_navbarSidebar__RVVL8.Navbar-module_mobileMenuOpen__oICVa{transform:translateX(0)}.Navbar-module_navbarTop__MLI-S{padding:var(--spacing-sm) var(--spacing-md)}.Navbar-module_navbarTop__MLI-S .Navbar-module_navList__764oY{background:var(--color-surface);box-shadow:var(--shadow-lg);flex-direction:column;left:0;padding:var(--spacing-md);position:fixed;right:0;top:60px;transform:translateY(-100%);transition:transform var(--transition-base)}.Navbar-module_navbarTop__MLI-S.Navbar-module_mobileMenuOpen__oICVa .Navbar-module_navList__764oY{transform:translateY(0)}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5hdmJhci5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZCQUVJLCtCQUFnQyxDQUdoQyxZQUFhLENBQ2IscUJBQXNCLENBSHRCLHlCQUEwQixDQUYxQixjQUFlLENBTWYsMkNBQTRDLENBSDVDLDZCQUlKLENBR0Esb0NBR0ksUUFBUyxDQUVULDJCQUE0QixDQUg1QixNQUFPLENBSVAsZUFBZ0IsQ0FMaEIsS0FBTSxDQUdOLFdBR0osQ0FHQSxnQ0FNSSxrQkFBbUIsQ0FFbkIsMkJBQTRCLENBSDVCLGtCQUFtQixDQURuQixXQUFZLENBRlosTUFBTyxDQUtQLDJDQUE0QyxDQUo1QyxPQUFRLENBRlIsS0FRSixDQUVBLDhEQUNJLGtCQUFtQixDQUNuQixxQkFBc0IsQ0FDdEIsUUFDSixDQUVBLDhEQUNJLFFBQ0osQ0FHQSxvQ0FDSSxzQkFBdUIsQ0FDdkIsZUFBZ0IsQ0FFaEIsU0FBVSxDQURWLGlCQUVKLENBRUEsa0VBQ0ksa0JBQW1CLENBQ25CLHFCQUNKLENBR0EsOEJBQ0ksK0JBQ0osQ0FFQSw4REFDSSxlQUFnQixDQUNoQixpQkFDSixDQUVBLG9DQUVJLGtCQUFtQixDQURuQixZQUFhLENBRWIscUJBQ0osQ0FFQSxnQ0FJSSw4QkFBK0IsQ0FGL0IsV0FBWSxDQUNaLGtCQUFtQixDQUZuQixVQUlKLENBRUEsc0NBT0ksa0JBQW1CLENBSm5CLCtCQUFnQyxDQUVoQyw4QkFBK0IsQ0FEL0IsK0JBQWdDLENBRWhDLFlBQWEsQ0FJYiw2QkFBOEIsQ0FEOUIsbUNBQW9DLENBUHBDLFdBQVksQ0FNWixzQkFBdUIsQ0FQdkIsVUFVSixDQUVBLGtDQUNJLFlBQWEsQ0FDYixxQkFDSixDQUVBLCtCQUdJLHVCQUF3QixDQUZ4Qiw2QkFBOEIsQ0FDOUIsbUNBQW9DLENBRXBDLG9DQUNKLENBRUEsbUNBRUksaUNBQWtDLENBRGxDLDZCQUE4QixDQUU5QixvQ0FDSixDQUdBLDhCQUtJLFlBQWEsQ0FEYixNQUFPLENBRVAscUJBQXNCLENBTHRCLGVBQWdCLENBRWhCLFFBQVMsQ0FEVCxTQUtKLENBRUEsOEJBQ0ksK0JBQ0osQ0FFQSxpQ0FDSSw2QkFDSixDQUVBLDhCQUVJLGtCQUFtQixDQUluQixlQUFnQixDQURoQixXQUFZLENBT1osOEJBQStCLENBTC9CLHVCQUF3QixDQU94QixjQUFlLENBYmYsWUFBYSxDQU9iLCtCQUFnQyxDQUNoQyxxQ0FBc0MsQ0FMdEMsMkNBQTRDLENBUzVDLGlCQUFrQixDQUhsQixlQUFnQixDQUNoQixvQkFBcUIsQ0FJckIscUNBQXNDLENBWnRDLFVBYUosQ0FFQSxvQ0FDSSw0Q0FDSixDQUVBLDBEQUNJLCtCQUNKLENBRUEsdUNBTUksK0JBQWdDLENBQ2hDLDhCQUErQixDQUYvQixRQUFTLENBRlQsTUFBTyxDQUZQLGlCQUFrQixDQUdsQixPQUFRLENBRlIsS0FBTSxDQU1OLFNBQ0osQ0FFQSw4QkFDSSxpQkFBa0IsQ0FDbEIsOEJBQStCLENBQy9CLGlCQUFrQixDQUVsQix1Q0FBd0MsQ0FEeEMsU0FFSixDQUVBLGlDQUNJLCtCQUNKLENBRUEsOEJBR0ksTUFBTyxDQUZQLGlCQUFrQixDQUdsQix1Q0FBd0MsQ0FGeEMsU0FHSixDQUVBLGlDQUNJLCtCQUNKLENBRUEsK0JBSUksOEJBQStCLENBRS9CLGdDQUFpQyxDQURqQywrQkFBZ0MsQ0FHaEMsdUNBQXdDLENBTHhDLGVBT0osQ0FFQSw2REFMSSw2QkFBOEIsQ0FFOUIsZ0JBQWlCLENBUmpCLGlCQUFrQixDQUNsQixTQWdCSixDQU5BLDhCQUtJLGlDQUNKLENBR0EsaUNBQ0ksZUFBZ0IsQ0FFaEIsOEJBQStCLENBQy9CLGVBQWdCLENBRmhCLFNBR0osQ0FFQSwrREFFSSw2QkFBOEIsQ0FEOUIsMkNBRUosQ0FHQSxnQ0FHSSx3Q0FBeUMsQ0FGekMsZUFBZ0IsQ0FDaEIsNkJBRUosQ0FHQSx1Q0FZSSxrQkFBbUIsQ0FObkIsK0JBQWdDLENBRWhDLFdBQVksQ0FDWiw4QkFBK0IsQ0FLL0IsMkJBQTRCLENBUDVCLCtCQUFnQyxDQVFoQyxjQUFlLENBZGYsWUFBYSxDQVViLFdBQVksQ0FFWixzQkFBdUIsQ0FUdkIsc0JBQXVCLENBRnZCLGNBQWUsQ0FDZixxQkFBc0IsQ0FPdEIsVUFBVyxDQUxYLHVDQVdKLENBRUEsNkNBQ0kscUNBQ0osQ0FFQSwyQ0FDSSxnQkFDSixDQUdBLHFDQU1JLHlCQUE4QixDQUQ5QixRQUFTLENBRlQsTUFBTyxDQUZQLGNBQWUsQ0FHZixPQUFRLENBRlIsS0FBTSxDQUtOLHVDQUNKLENBR0EseUJBQ0ksdUNBQ0ksWUFDSixDQUVBLG9DQUNJLDJCQUNKLENBRUEsd0VBQ0ksdUJBQ0osQ0FFQSxnQ0FDSSwyQ0FDSixDQUVBLDhEQUtJLCtCQUFnQyxDQUdoQywyQkFBNEIsQ0FGNUIscUJBQXNCLENBSHRCLE1BQU8sQ0FJUCx5QkFBMEIsQ0FOMUIsY0FBZSxDQUdmLE9BQVEsQ0FGUixRQUFTLENBT1QsMkJBQTRCLENBQzVCLDJDQUNKLENBRUEsa0dBQ0ksdUJBQ0osQ0FDSiIsImZpbGUiOiJOYXZiYXIubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5uYXZiYXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICB6LWluZGV4OiB2YXIoLS16LWluZGV4LXN0aWNreSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4vKiBTaWRlYmFyIHZhcmlhbnQgKi9cbi5uYXZiYXJTaWRlYmFyIHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBib3R0b206IDA7XG4gICAgd2lkdGg6IDI4MHB4O1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLyogVG9wIHZhcmlhbnQgKi9cbi5uYXZiYXJUb3Age1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTtcbn1cblxuLm5hdmJhclRvcCAubmF2TGlzdCB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLm5hdmJhclRvcCAubmF2SXRlbSB7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4vKiBNaW5pbWFsIHZhcmlhbnQgKi9cbi5uYXZiYXJNaW5pbWFsIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4ubmF2YmFyTWluaW1hbCAubmF2TGlzdCB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctc20pO1xufVxuXG4vKiBMb2dvIHNlY3Rpb24gKi9cbi5uYXZMb2dvIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXhsKTtcbn1cblxuLm5hdmJhclRvcCAubmF2TG9nbyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi5sb2dvQ29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjaW5nLW1kKTtcbn1cblxuLmxvZ29JbWFnZSB7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbn1cblxuLmxvZ29QbGFjZWhvbGRlciB7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG59XG5cbi5sb2dvQ29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4ubG9nb1RleHQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhsKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC10aWdodCk7XG59XG5cbi5sb2dvU3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC10aWdodCk7XG59XG5cbi8qIE5hdmlnYXRpb24gbGlzdCAqL1xuLm5hdkxpc3Qge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgZmxleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5uYXZJdGVtIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXhzKTtcbn1cblxuLnN1Yk5hdkl0ZW0ge1xuICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjaW5nLWxnKTtcbn1cblxuLm5hdkxpbmsge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXNtKSB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4ubmF2TGluazpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xufVxuXG4ubmF2TGluay5hY3RpdmUge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xufVxuXG4uYWN0aXZlQmFja2dyb3VuZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIHotaW5kZXg6IDA7XG59XG5cbi5uYXZJY29uIHtcbiAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4uYWN0aXZlSWNvbiB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG59XG5cbi5uYXZUZXh0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbiAgICBmbGV4OiAxO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi5hY3RpdmVUZXh0IHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1pbnZlcnNlKTtcbn1cblxuLm5hdkJhZGdlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbiAgICBwYWRkaW5nOiAycHggNnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWFjY2VudCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4uY2hldnJvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi8qIFN1YiBuYXZpZ2F0aW9uICovXG4uc3ViTmF2TGlzdCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogdmFyKC0tc3BhY2luZy14cykgMCAwIDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnN1Yk5hdkxpc3QgLm5hdkxpbmsge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteHMpIHZhcigtLXNwYWNpbmctc20pO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbn1cblxuLyogRm9vdGVyIHNlY3Rpb24gKi9cbi5uYXZGb290ZXIge1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xufVxuXG4vKiBNb2JpbGUgbWVudSBidXR0b24gKi9cbi5tb2JpbGVNZW51QnV0dG9uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGxlZnQ6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIHotaW5kZXg6IGNhbGModmFyKC0tei1pbmRleC1zdGlja3kpICsgMSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5tb2JpbGVNZW51QnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5LWhvdmVyKTtcbn1cblxuLm1vYmlsZU1lbnVCdXR0b24gc3ZnIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbn1cblxuLyogTW9iaWxlIGJhY2tkcm9wICovXG4ubW9iaWxlQmFja2Ryb3Age1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIHotaW5kZXg6IGNhbGModmFyKC0tei1pbmRleC1zdGlja3kpIC0gMSk7XG59XG5cbi8qIE1vYmlsZSByZXNwb25zaXZlICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAubW9iaWxlTWVudUJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuICAgIFxuICAgIC5uYXZiYXJTaWRlYmFyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgICB9XG4gICAgXG4gICAgLm5hdmJhclNpZGViYXIubW9iaWxlTWVudU9wZW4ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgfVxuICAgIFxuICAgIC5uYXZiYXJUb3Age1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXNtKSB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICB9XG4gICAgXG4gICAgLm5hdmJhclRvcCAubmF2TGlzdCB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgdG9wOiA2MHB4O1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc3VyZmFjZSk7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICB9XG4gICAgXG4gICAgLm5hdmJhclRvcC5tb2JpbGVNZW51T3BlbiAubmF2TGlzdCB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59Il19 */";
1200
+ var desktopStyles = {"navbar":"Navbar-module_navbar__-SNiN","navbarSidebar":"Navbar-module_navbarSidebar__RVVL8","navbarTop":"Navbar-module_navbarTop__MLI-S","navList":"Navbar-module_navList__764oY","navItem":"Navbar-module_navItem__cbeLP","navbarMinimal":"Navbar-module_navbarMinimal__7gs0n","navLogo":"Navbar-module_navLogo__y0AxI","logoContainer":"Navbar-module_logoContainer__zJG3x","logoImage":"Navbar-module_logoImage__1Ptmz","logoPlaceholder":"Navbar-module_logoPlaceholder__aIREi","logoContent":"Navbar-module_logoContent__CjPyL","logoText":"Navbar-module_logoText__bTwI0","logoSubtitle":"Navbar-module_logoSubtitle__UA95I","subNavItem":"Navbar-module_subNavItem__WN9is","navLink":"Navbar-module_navLink__I-45k","active":"Navbar-module_active__tLLqx","activeBackground":"Navbar-module_activeBackground__ikyOn","navIcon":"Navbar-module_navIcon__uU4yD","activeIcon":"Navbar-module_activeIcon__omRDk","navText":"Navbar-module_navText__4e0cK","activeText":"Navbar-module_activeText__zSzJC","navBadge":"Navbar-module_navBadge__mLur9","chevron":"Navbar-module_chevron__nmRNk","subNavList":"Navbar-module_subNavList__YsOQP","navFooter":"Navbar-module_navFooter__p1wMO","mobileMenuButton":"Navbar-module_mobileMenuButton__BrALw","mobileBackdrop":"Navbar-module_mobileBackdrop__bgxCV","mobileMenuOpen":"Navbar-module_mobileMenuOpen__oICVa"};
1201
+ styleInject(css_248z$7);
1202
+
1203
+ var css_248z$6 = ".Navbar-mobile-module_navbar__-shkE{background:var(--color-surface);bottom:0;box-shadow:0 -2px 10px rgba(0,0,0,.1);left:0;padding:var(--spacing-xs) var(--spacing-sm);position:fixed;right:0;z-index:var(--z-index-sticky)}.Navbar-mobile-module_navLogo__7Gnna{display:none}.Navbar-mobile-module_navList__FBo8I{align-items:center;display:flex;flex-direction:row;justify-content:space-around;list-style:none;margin:0;padding:0}.Navbar-mobile-module_navItem__-9E9-{flex:1;margin:0}.Navbar-mobile-module_navLink__A8n8F{align-items:center;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;display:flex;flex-direction:column;font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);justify-content:center;padding:var(--spacing-xs);position:relative;text-decoration:none;transition:all var(--transition-fast);width:100%}.Navbar-mobile-module_navLink__A8n8F:active{transform:scale(.95)}.Navbar-mobile-module_navLink__A8n8F.Navbar-mobile-module_active__h3ajz{color:var(--color-primary)}.Navbar-mobile-module_activeBackground__btXAN{display:none}.Navbar-mobile-module_navIcon__4L17v{font-size:1.5rem;margin-bottom:2px;margin-right:0;transition:color var(--transition-fast)}.Navbar-mobile-module_activeIcon__A8GF-{color:var(--color-primary)}.Navbar-mobile-module_navText__ewf-i{font-size:var(--font-size-xs);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Navbar-mobile-module_activeText__fNqcU{color:var(--color-primary)}.Navbar-mobile-module_navBadge__YccGx{background:var(--color-accent);border-radius:var(--radius-full);color:var(--color-text-inverse);font-size:10px;font-weight:var(--font-weight-bold);min-width:16px;padding:1px 4px;position:absolute;right:calc(50% - 12px);text-align:center;top:2px}.Navbar-mobile-module_chevron__nBPqn,.Navbar-mobile-module_mobileBackdrop__biYng,.Navbar-mobile-module_mobileMenuButton__Dx3t8,.Navbar-mobile-module_navFooter__yijWu,.Navbar-mobile-module_subNavList__8tINc{display:none}.Navbar-mobile-module_navbarTop__oyfPE{bottom:auto;flex-direction:row;padding:var(--spacing-sm) var(--spacing-md);top:0}.Navbar-mobile-module_navbarTop__oyfPE .Navbar-mobile-module_navLogo__7Gnna{display:block;margin-bottom:0;margin-right:auto}.Navbar-mobile-module_navbarTop__oyfPE .Navbar-mobile-module_navList__FBo8I{flex-direction:row;gap:var(--spacing-sm)}.Navbar-mobile-module_navbarTop__oyfPE .Navbar-mobile-module_navLink__A8n8F{flex-direction:row;padding:var(--spacing-xs) var(--spacing-sm)}.Navbar-mobile-module_navbarTop__oyfPE .Navbar-mobile-module_navIcon__4L17v{margin-bottom:0;margin-right:var(--spacing-xs)}.Navbar-mobile-module_navbarTop__oyfPE .Navbar-mobile-module_navText__ewf-i{font-size:var(--font-size-sm)}.Navbar-mobile-module_navbarMinimal__cudny{background:transparent;box-shadow:none;padding:var(--spacing-sm);position:relative}.Navbar-mobile-module_navbarMinimal__cudny .Navbar-mobile-module_navList__FBo8I{gap:var(--spacing-xs);justify-content:flex-start}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5hdmJhci5tb2JpbGUubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxvQ0FLSSwrQkFBZ0MsQ0FIaEMsUUFBUyxDQUtULHFDQUEwQyxDQUoxQyxNQUFPLENBR1AsMkNBQTRDLENBTDVDLGNBQWUsQ0FHZixPQUFRLENBSVIsNkJBQ0osQ0FHQSxxQ0FDSSxZQUNKLENBRUEscUNBT0ksa0JBQW1CLENBSG5CLFlBQWEsQ0FDYixrQkFBbUIsQ0FDbkIsNEJBQTZCLENBTDdCLGVBQWdCLENBRWhCLFFBQVMsQ0FEVCxTQU1KLENBRUEscUNBQ0ksTUFBTyxDQUNQLFFBQ0osQ0FFQSxxQ0FHSSxrQkFBbUIsQ0FJbkIsZUFBZ0IsQ0FEaEIsV0FBWSxDQU1aLDhCQUErQixDQUovQixpQ0FBa0MsQ0FNbEMsY0FBZSxDQWJmLFlBQWEsQ0FDYixxQkFBc0IsQ0FPdEIsNkJBQThCLENBQzlCLHFDQUFzQyxDQU50QyxzQkFBdUIsQ0FDdkIseUJBQTBCLENBUTFCLGlCQUFrQixDQUZsQixvQkFBcUIsQ0FJckIscUNBQXNDLENBQ3RDLFVBQ0osQ0FFQSw0Q0FDSSxvQkFDSixDQUVBLHdFQUNJLDBCQUNKLENBRUEsOENBQ0ksWUFDSixDQUVBLHFDQUNJLGdCQUFpQixDQUVqQixpQkFBa0IsQ0FEbEIsY0FBZSxDQUVmLHVDQUNKLENBRUEsd0NBQ0ksMEJBQ0osQ0FFQSxxQ0FDSSw2QkFBOEIsQ0FJOUIsY0FBZSxDQUZmLGVBQWdCLENBQ2hCLHNCQUF1QixDQUZ2QixrQkFJSixDQUVBLHdDQUNJLDBCQUNKLENBRUEsc0NBS0ksOEJBQStCLENBRS9CLGdDQUFpQyxDQURqQywrQkFBZ0MsQ0FFaEMsY0FBZSxDQUNmLG1DQUFvQyxDQUNwQyxjQUFlLENBTmYsZUFBZ0IsQ0FIaEIsaUJBQWtCLENBRWxCLHNCQUF1QixDQVF2QixpQkFBa0IsQ0FUbEIsT0FVSixDQWtCQSw4TUFDSSxZQUNKLENBR0EsdUNBRUksV0FBWSxDQUNaLGtCQUFtQixDQUNuQiwyQ0FBNEMsQ0FINUMsS0FJSixDQUVBLDRFQUNJLGFBQWMsQ0FFZCxlQUFnQixDQURoQixpQkFFSixDQUVBLDRFQUNJLGtCQUFtQixDQUNuQixxQkFDSixDQUVBLDRFQUNJLGtCQUFtQixDQUNuQiwyQ0FDSixDQUVBLDRFQUVJLGVBQWdCLENBRGhCLDhCQUVKLENBRUEsNEVBQ0ksNkJBQ0osQ0FHQSwyQ0FFSSxzQkFBdUIsQ0FDdkIsZUFBZ0IsQ0FDaEIseUJBQTBCLENBSDFCLGlCQUlKLENBRUEsZ0ZBRUkscUJBQXNCLENBRHRCLDBCQUVKIiwiZmlsZSI6Ik5hdmJhci5tb2JpbGUubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIE1vYmlsZS1zcGVjaWZpYyBzdHlsZXMgZm9yIE5hdmJhciAqL1xuLm5hdmJhciB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteHMpIHZhcigtLXNwYWNpbmctc20pO1xuICAgIGJveC1zaGFkb3c6IDAgLTJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICB6LWluZGV4OiB2YXIoLS16LWluZGV4LXN0aWNreSk7XG59XG5cbi8qIEhpZGUgbG9nbyBvbiBtb2JpbGUgYm90dG9tIG5hdiAqL1xuLm5hdkxvZ28ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5uYXZMaXN0IHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubmF2SXRlbSB7XG4gICAgZmxleDogMTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5uYXZMaW5rIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhzKTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4ubmF2TGluazphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45NSk7XG59XG5cbi5uYXZMaW5rLmFjdGl2ZSB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4uYWN0aXZlQmFja2dyb3VuZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLm5hdkljb24ge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAycHg7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLmFjdGl2ZUljb24ge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn1cblxuLm5hdlRleHQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4uYWN0aXZlVGV4dCB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4ubmF2QmFkZ2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDJweDtcbiAgICByaWdodDogY2FsYyg1MCUgLSAxMnB4KTtcbiAgICBwYWRkaW5nOiAxcHggNHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWFjY2VudCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gICAgbWluLXdpZHRoOiAxNnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLyogSGlkZSBjaGV2cm9uIGFuZCBzdWItbmF2aWdhdGlvbiBvbiBtb2JpbGUgKi9cbi5jaGV2cm9uLFxuLnN1Yk5hdkxpc3Qge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qIEZvb3RlciBzZWN0aW9uICovXG4ubmF2Rm9vdGVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiBNb2JpbGUgbWVudSBidXR0b24gbm90IG5lZWRlZCBmb3IgYm90dG9tIG5hdiAqL1xuLm1vYmlsZU1lbnVCdXR0b24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5tb2JpbGVCYWNrZHJvcCB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogVG9wIG5hdmJhciB2YXJpYW50IG9uIG1vYmlsZSAqL1xuLm5hdmJhclRvcCB7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogYXV0bztcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbWQpO1xufVxuXG4ubmF2YmFyVG9wIC5uYXZMb2dvIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm5hdmJhclRvcCAubmF2TGlzdCB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctc20pO1xufVxuXG4ubmF2YmFyVG9wIC5uYXZMaW5rIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteHMpIHZhcigtLXNwYWNpbmctc20pO1xufVxuXG4ubmF2YmFyVG9wIC5uYXZJY29uIHtcbiAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmcteHMpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5uYXZiYXJUb3AgLm5hdlRleHQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbn1cblxuLyogTWluaW1hbCB2YXJpYW50IG9uIG1vYmlsZSAqL1xuLm5hdmJhck1pbmltYWwge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pO1xufVxuXG4ubmF2YmFyTWluaW1hbCAubmF2TGlzdCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy14cyk7XG59Il19 */";
1204
+ var mobileStyles = {"navbar":"Navbar-mobile-module_navbar__-shkE","navLogo":"Navbar-mobile-module_navLogo__7Gnna","navList":"Navbar-mobile-module_navList__FBo8I","navItem":"Navbar-mobile-module_navItem__-9E9-","navLink":"Navbar-mobile-module_navLink__A8n8F","active":"Navbar-mobile-module_active__h3ajz","activeBackground":"Navbar-mobile-module_activeBackground__btXAN","navIcon":"Navbar-mobile-module_navIcon__4L17v","activeIcon":"Navbar-mobile-module_activeIcon__A8GF-","navText":"Navbar-mobile-module_navText__ewf-i","activeText":"Navbar-mobile-module_activeText__fNqcU","navBadge":"Navbar-mobile-module_navBadge__YccGx","chevron":"Navbar-mobile-module_chevron__nBPqn","subNavList":"Navbar-mobile-module_subNavList__8tINc","navFooter":"Navbar-mobile-module_navFooter__yijWu","mobileMenuButton":"Navbar-mobile-module_mobileMenuButton__Dx3t8","mobileBackdrop":"Navbar-mobile-module_mobileBackdrop__biYng","navbarTop":"Navbar-mobile-module_navbarTop__oyfPE","navbarMinimal":"Navbar-mobile-module_navbarMinimal__cudny"};
1205
+ styleInject(css_248z$6);
1206
+
1207
+ const Navbar = ({ items, logo, onItemClick, variant = 'sidebar', isMobile = false, footer, className = '' }) => {
1208
+ const styles = useMemo(() => isMobile ? mobileStyles : desktopStyles, [isMobile]);
1209
+ const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
1210
+ const [expandedItems, setExpandedItems] = useState(new Set());
1211
+ // Close mobile menu when screen size changes
1212
+ useEffect(() => {
1213
+ const handleResize = () => {
1214
+ if (window.innerWidth > 768) {
1215
+ setIsMobileMenuOpen(false);
1216
+ }
1217
+ };
1218
+ window.addEventListener('resize', handleResize);
1219
+ return () => window.removeEventListener('resize', handleResize);
1220
+ }, []);
1221
+ const toggleMobileMenu = () => {
1222
+ setIsMobileMenuOpen(!isMobileMenuOpen);
1223
+ };
1224
+ const toggleExpanded = (itemId) => {
1225
+ setExpandedItems(prev => {
1226
+ const newSet = new Set(prev);
1227
+ if (newSet.has(itemId)) {
1228
+ newSet.delete(itemId);
1229
+ }
1230
+ else {
1231
+ newSet.add(itemId);
1232
+ }
1233
+ return newSet;
1234
+ });
1235
+ };
1236
+ const handleItemClick = (item) => {
1237
+ if (item.children && item.children.length > 0) {
1238
+ toggleExpanded(item.id);
1239
+ }
1240
+ else {
1241
+ if (item.onClick) {
1242
+ item.onClick();
1243
+ }
1244
+ if (onItemClick) {
1245
+ onItemClick(item);
1246
+ }
1247
+ if (isMobile || isMobileMenuOpen) {
1248
+ setIsMobileMenuOpen(false);
1249
+ }
1250
+ }
1251
+ };
1252
+ const renderNavItem = (item, index, depth = 0) => {
1253
+ const Icon = item.icon;
1254
+ const isExpanded = expandedItems.has(item.id);
1255
+ const hasChildren = item.children && item.children.length > 0;
1256
+ return (jsxs(motion.li, { className: `${styles.navItem} ${depth > 0 ? styles.subNavItem : ''}`, initial: { opacity: 0, x: -20 }, animate: { opacity: 1, x: 0 }, transition: { delay: index * 0.05 }, children: [jsxs(motion.button, { className: `${styles.navLink} ${item.isActive ? styles.active : ''}`, onClick: () => handleItemClick(item), whileHover: { x: 5 }, whileTap: { scale: 0.98 }, children: [item.isActive && (jsx(motion.div, { className: styles.activeBackground, layoutId: "activeNavBackground", initial: false, transition: {
1257
+ type: "spring",
1258
+ stiffness: 500,
1259
+ damping: 35
1260
+ } })), Icon && (jsx(Icon, { className: `${styles.navIcon} ${item.isActive ? styles.activeIcon : ''}` })), jsx("span", { className: `${styles.navText} ${item.isActive ? styles.activeText : ''}`, children: item.label }), item.badge && (jsx("span", { className: styles.navBadge, children: item.badge })), hasChildren && (jsx(motion.span, { className: styles.chevron, animate: { rotate: isExpanded ? 180 : 0 }, transition: { duration: 0.2 }, children: "\u25BC" }))] }), hasChildren && (jsx(AnimatePresence, { children: isExpanded && (jsx(motion.ul, { className: styles.subNavList, initial: { height: 0, opacity: 0 }, animate: { height: 'auto', opacity: 1 }, exit: { height: 0, opacity: 0 }, transition: { duration: 0.2 }, children: item.children.map((child, childIndex) => renderNavItem(child, childIndex, depth + 1)) })) }))] }, item.id));
1261
+ };
1262
+ const navContent = (jsxs(Fragment, { children: [logo && (jsx(motion.div, { className: styles.navLogo, initial: { opacity: 0, y: -20 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.1 }, children: jsxs("div", { className: styles.logoContainer, children: [logo.src ? (jsx(motion.img, { src: logo.src, alt: logo.alt || 'Logo', className: styles.logoImage, whileHover: { scale: 1.05 }, transition: { type: "spring", stiffness: 400 } })) : (jsx("div", { className: styles.logoPlaceholder, children: logo.text?.charAt(0) || 'L' })), (logo.text || logo.subtitle) && (jsxs("div", { className: styles.logoContent, children: [logo.text && (jsx("span", { className: styles.logoText, children: logo.text })), logo.subtitle && (jsx("span", { className: styles.logoSubtitle, children: logo.subtitle }))] }))] }) })), jsx("ul", { className: styles.navList, children: items.map((item, index) => renderNavItem(item, index)) }), footer && (jsx(motion.div, { className: styles.navFooter, initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.3 }, children: footer }))] }));
1263
+ if (variant === 'top') {
1264
+ return (jsx(motion.nav, { className: `${styles.navbar} ${styles.navbarTop} ${className}`, initial: { y: -100 }, animate: { y: 0 }, transition: { type: "spring", stiffness: 300, damping: 30 }, children: navContent }));
1265
+ }
1266
+ return (jsxs(Fragment, { children: [(isMobile || window.innerWidth <= 768) && (jsx(motion.button, { className: styles.mobileMenuButton, onClick: toggleMobileMenu, "aria-label": "Toggle navigation menu", whileTap: { scale: 0.9 }, children: jsx(AnimatePresence, { mode: "wait", children: isMobileMenuOpen ? (jsx(motion.div, { initial: { rotate: -90, opacity: 0 }, animate: { rotate: 0, opacity: 1 }, exit: { rotate: 90, opacity: 0 }, children: jsx(FiX, {}) }, "close")) : (jsx(motion.div, { initial: { rotate: 90, opacity: 0 }, animate: { rotate: 0, opacity: 1 }, exit: { rotate: -90, opacity: 0 }, children: jsx(FiMenu, {}) }, "menu")) }) })), jsx(AnimatePresence, { children: isMobileMenuOpen && (jsx(motion.div, { className: styles.mobileBackdrop, initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, onClick: () => setIsMobileMenuOpen(false) })) }), jsx(motion.nav, { className: `${styles.navbar} ${styles[`navbar${variant.charAt(0).toUpperCase() + variant.slice(1)}`]} ${isMobileMenuOpen ? styles.mobileMenuOpen : ''} ${className}`, initial: variant === 'sidebar' ? { x: -300 } : { opacity: 0 }, animate: variant === 'sidebar' ? { x: isMobileMenuOpen || !isMobile ? 0 : -300 } : { opacity: 1 }, transition: { type: "spring", stiffness: 300, damping: 30 }, children: navContent })] }));
1267
+ };
1268
+
1269
+ var css_248z$5 = ".MoodChart-module_container__MB1Vr{align-items:center;background:var(--color-background-secondary);border-radius:var(--radius-lg);display:flex;flex-direction:column;padding:var(--spacing-xl);position:relative}.MoodChart-module_chart__4-spu{display:block;margin:0 auto}.MoodChart-module_gridLine__YJpZ8{stroke:var(--color-border);stroke-opacity:.15;stroke-dasharray:4,4}.MoodChart-module_line__LfeUX{fill:none;stroke:var(--color-primary);stroke-width:2.5;stroke-opacity:.8;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}.MoodChart-module_xAxis__SeIWG,.MoodChart-module_yAxis__sRjjE{color:var(--color-text-secondary);font-size:11px;font-weight:500}.MoodChart-module_xAxis__SeIWG line,.MoodChart-module_xAxis__SeIWG path,.MoodChart-module_yAxis__sRjjE line,.MoodChart-module_yAxis__sRjjE path{stroke:var(--color-border);stroke-opacity:.3}.MoodChart-module_xAxis__SeIWG text,.MoodChart-module_yAxis__sRjjE text{fill:var(--color-text-secondary)}.MoodChart-module_dataPoint__112P1{stroke:var(--color-text-inverse);stroke-width:2;cursor:pointer;filter:drop-shadow(0 2px 4px rgba(0,0,0,.2));transition:all .3s ease}.MoodChart-module_dataPoint__112P1:hover{filter:drop-shadow(0 4px 8px rgba(0,0,0,.3));transform:scale(1.2)}.MoodChart-module_tooltip__vW59y{animation:MoodChart-module_fadeIn__aPxdl .2s ease;background:var(--color-background-secondary);border:2px solid var(--color-primary);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.15);max-width:400px;min-width:280px;padding:16px;pointer-events:none;position:absolute;z-index:10}@keyframes MoodChart-module_fadeIn__aPxdl{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.MoodChart-module_tooltipHeader__U7yvN{align-items:center;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;margin-bottom:12px;padding-bottom:8px}.MoodChart-module_tooltipDate__6Jjeu{color:var(--color-text);font-size:14px;font-weight:600}.MoodChart-module_tooltipRating__5A2Yx{align-items:baseline;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));border-radius:20px;color:var(--color-text-inverse);display:flex;gap:2px;padding:4px 10px}.MoodChart-module_ratingValue__7Gpfx{font-size:18px;font-weight:700}.MoodChart-module_ratingMax__10WcJ{font-size:12px;opacity:.9}.MoodChart-module_tooltipTags__FUQrU{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.MoodChart-module_tag__QhCh5{animation:MoodChart-module_tagBounce__IaPrl .3s ease;background:var(--color-primary-lighter);border:1px solid var(--color-primary-light);border-radius:12px;color:var(--color-primary-active);display:inline-block;font-size:12px;font-weight:500;padding:4px 10px}@keyframes MoodChart-module_tagBounce__IaPrl{0%{transform:scale(.8)}60%{transform:scale(1.05)}to{transform:scale(1)}}.MoodChart-module_tooltipComment__6driJ{background:var(--color-background-tertiary);border:1px solid var(--color-border);border-radius:8px;color:var(--color-text-secondary);font-size:13px;line-height:1.5;max-height:200px;overflow-y:auto;padding:12px}.MoodChart-module_tooltipComment__6driJ::-webkit-scrollbar{width:4px}.MoodChart-module_tooltipComment__6driJ::-webkit-scrollbar-track{background:var(--color-background-tertiary)}.MoodChart-module_tooltipComment__6driJ::-webkit-scrollbar-thumb{background:var(--color-primary);border-radius:2px}.MoodChart-module_moodIndicator__pn31K{border-radius:50%;display:inline-block;height:12px;margin-right:8px;width:12px}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vb2RDaGFydC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQU9JLGtCQUFtQixDQUxuQiw0Q0FBNkMsQ0FDN0MsOEJBQStCLENBRS9CLFlBQWEsQ0FDYixxQkFBc0IsQ0FGdEIseUJBQTBCLENBSDFCLGlCQU9KLENBRUEsK0JBQ0ksYUFBYyxDQUNkLGFBQ0osQ0FFQSxrQ0FDSSwwQkFBMkIsQ0FDM0Isa0JBQW9CLENBQ3BCLG9CQUNKLENBRUEsOEJBQ0ksU0FBVSxDQUNWLDJCQUE0QixDQUM1QixnQkFBaUIsQ0FDakIsaUJBQW1CLENBQ25CLDRDQUNKLENBRUEsOERBRUksaUNBQWtDLENBQ2xDLGNBQWUsQ0FDZixlQUNKLENBRUEsZ0pBSUksMEJBQTJCLENBQzNCLGlCQUNKLENBRUEsd0VBRUksZ0NBQ0osQ0FFQSxtQ0FFSSxnQ0FBaUMsQ0FDakMsY0FBZSxDQUZmLGNBQWUsQ0FJZiw0Q0FBaUQsQ0FEakQsdUJBRUosQ0FFQSx5Q0FDSSw0Q0FBaUQsQ0FDakQsb0JBQ0osQ0FFQSxpQ0FXSSxpREFBMkIsQ0FUM0IsNENBQTZDLENBQzdDLHFDQUFzQyxDQUN0QyxrQkFBbUIsQ0FFbkIscUNBQTBDLENBSTFDLGVBQWdCLENBRGhCLGVBQWdCLENBSmhCLFlBQWEsQ0FFYixtQkFBb0IsQ0FOcEIsaUJBQWtCLENBT2xCLFVBSUosQ0FFQSwwQ0FDSSxHQUNJLFNBQVUsQ0FDViwyQkFDSixDQUNBLEdBQ0ksU0FBVSxDQUNWLHVCQUNKLENBQ0osQ0FFQSx1Q0FHSSxrQkFBbUIsQ0FHbkIsMkNBQTRDLENBTDVDLFlBQWEsQ0FDYiw2QkFBOEIsQ0FFOUIsa0JBQW1CLENBQ25CLGtCQUVKLENBRUEscUNBRUksdUJBQXdCLENBQ3hCLGNBQWUsQ0FGZixlQUdKLENBRUEsdUNBRUksb0JBQXFCLENBRXJCLGtGQUFxRixDQUVyRixrQkFBbUIsQ0FDbkIsK0JBQWdDLENBTmhDLFlBQWEsQ0FFYixPQUFRLENBRVIsZ0JBR0osQ0FFQSxxQ0FDSSxjQUFlLENBQ2YsZUFDSixDQUVBLG1DQUNJLGNBQWUsQ0FDZixVQUNKLENBRUEscUNBQ0ksWUFBYSxDQUNiLGNBQWUsQ0FDZixPQUFRLENBQ1Isa0JBQ0osQ0FFQSw2QkFTSSxvREFBOEIsQ0FOOUIsdUNBQXdDLENBS3hDLDJDQUE0QyxDQUg1QyxrQkFBbUIsQ0FEbkIsaUNBQWtDLENBSGxDLG9CQUFxQixDQUtyQixjQUFlLENBQ2YsZUFBZ0IsQ0FMaEIsZ0JBUUosQ0FFQSw2Q0FDSSxHQUFLLG1CQUF1QixDQUM1QixJQUFNLHFCQUF3QixDQUM5QixHQUFPLGtCQUFxQixDQUNoQyxDQUVBLHdDQU9JLDJDQUE0QyxDQUU1QyxvQ0FBcUMsQ0FEckMsaUJBQWtCLENBUGxCLGlDQUFrQyxDQUNsQyxjQUFlLENBQ2YsZUFBZ0IsQ0FDaEIsZ0JBQWlCLENBQ2pCLGVBQWdCLENBQ2hCLFlBSUosQ0FFQSwyREFDSSxTQUNKLENBRUEsaUVBQ0ksMkNBQ0osQ0FFQSxpRUFDSSwrQkFBZ0MsQ0FDaEMsaUJBQ0osQ0FHQSx1Q0FJSSxpQkFBa0IsQ0FIbEIsb0JBQXFCLENBRXJCLFdBQVksQ0FFWixnQkFBaUIsQ0FIakIsVUFJSiIsImZpbGUiOiJNb29kQ2hhcnQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhsKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmNoYXJ0IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cblxuLmdyaWRMaW5lIHtcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgc3Ryb2tlLW9wYWNpdHk6IDAuMTU7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogNCwgNDtcbn1cblxuLmxpbmUge1xuICAgIGZpbGw6IG5vbmU7XG4gICAgc3Ryb2tlOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBzdHJva2Utd2lkdGg6IDIuNTtcbiAgICBzdHJva2Utb3BhY2l0eTogMC44O1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XG59XG5cbi54QXhpcyxcbi55QXhpcyB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLnhBeGlzIGxpbmUsXG4ueEF4aXMgcGF0aCxcbi55QXhpcyBsaW5lLFxuLnlBeGlzIHBhdGgge1xuICAgIHN0cm9rZTogdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBzdHJva2Utb3BhY2l0eTogMC4zO1xufVxuXG4ueEF4aXMgdGV4dCxcbi55QXhpcyB0ZXh0IHtcbiAgICBmaWxsOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5kYXRhUG9pbnQge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG4gICAgc3Ryb2tlLXdpZHRoOiAyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbn1cblxuLmRhdGFQb2ludDpob3ZlciB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjMpKTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7XG59XG5cbi50b29sdGlwIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyNHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgei1pbmRleDogMTA7XG4gICAgbWluLXdpZHRoOiAyODBweDtcbiAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgIGFuaW1hdGlvbjogZmFkZUluIDAuMnMgZWFzZTtcbn1cblxuQGtleWZyYW1lcyBmYWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi50b29sdGlwSGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgcGFkZGluZy1ib3R0b206IDhweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuLnRvb2x0aXBEYXRlIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG5cbi50b29sdGlwUmF0aW5nIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICBnYXA6IDJweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jb2xvci1wcmltYXJ5KSwgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlcikpO1xuICAgIHBhZGRpbmc6IDRweCAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG59XG5cbi5yYXRpbmdWYWx1ZSB7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5cbi5yYXRpbmdNYXgge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBvcGFjaXR5OiAwLjk7XG59XG5cbi50b29sdGlwVGFncyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiA2cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbn1cblxuLnRhZyB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDRweCAxMHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHRlcik7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYWN0aXZlKTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHQpO1xuICAgIGFuaW1hdGlvbjogdGFnQm91bmNlIDAuM3MgZWFzZTtcbn1cblxuQGtleWZyYW1lcyB0YWdCb3VuY2Uge1xuICAgIDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgwLjgpOyB9XG4gICAgNjAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsgfVxuICAgIDEwMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9XG59XG5cbi50b29sdGlwQ29tbWVudCB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBtYXgtaGVpZ2h0OiAyMDBweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBhZGRpbmc6IDEycHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbi50b29sdGlwQ29tbWVudDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA0cHg7XG59XG5cbi50b29sdGlwQ29tbWVudDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpO1xufVxuXG4udG9vbHRpcENvbW1lbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG59XG5cbi8qIE1vb2QgY29sb3IgaW5kaWNhdG9ycyAqL1xuLm1vb2RJbmRpY2F0b3Ige1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogMTJweDtcbiAgICBoZWlnaHQ6IDEycHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIG1hcmdpbi1yaWdodDogOHB4O1xufSJdfQ== */";
1270
+ var styles$5 = {"container":"MoodChart-module_container__MB1Vr","chart":"MoodChart-module_chart__4-spu","gridLine":"MoodChart-module_gridLine__YJpZ8","line":"MoodChart-module_line__LfeUX","xAxis":"MoodChart-module_xAxis__SeIWG","yAxis":"MoodChart-module_yAxis__sRjjE","dataPoint":"MoodChart-module_dataPoint__112P1","tooltip":"MoodChart-module_tooltip__vW59y","tooltipHeader":"MoodChart-module_tooltipHeader__U7yvN","tooltipDate":"MoodChart-module_tooltipDate__6Jjeu","tooltipRating":"MoodChart-module_tooltipRating__5A2Yx","ratingValue":"MoodChart-module_ratingValue__7Gpfx","ratingMax":"MoodChart-module_ratingMax__10WcJ","tooltipTags":"MoodChart-module_tooltipTags__FUQrU","tag":"MoodChart-module_tag__QhCh5","tooltipComment":"MoodChart-module_tooltipComment__6driJ"};
1271
+ styleInject(css_248z$5);
1272
+
1273
+ const MoodChart = ({ moodData, width = 800, height = 400 }) => {
1274
+ const svgRef = useRef(null);
1275
+ const containerRef = useRef(null);
1276
+ const [selectedMood, setSelectedMood] = useState(null);
1277
+ const [tooltipPosition, setTooltipPosition] = useState({ x: 0, y: 0 });
1278
+ const margin = { top: 20, right: 20, bottom: 50, left: 40 };
1279
+ const chartWidth = width - margin.left - margin.right;
1280
+ const chartHeight = height - margin.top - margin.bottom;
1281
+ const processedData = useMemo(() => {
1282
+ return moodData
1283
+ .map(mood => {
1284
+ // Parse comma-separated tags
1285
+ const tags = mood.tag
1286
+ ? mood.tag.split(',').map(t => t.trim()).filter(t => t)
1287
+ : [];
1288
+ return {
1289
+ date: new Date(mood.date),
1290
+ rating: mood.rating,
1291
+ tags,
1292
+ comment: mood.comment
1293
+ };
1294
+ })
1295
+ .filter(mood => !isNaN(mood.date.getTime()) &&
1296
+ isFinite(mood.rating));
1297
+ }, [moodData]);
1298
+ const colorScale = useMemo(() => {
1299
+ return d3.scaleLinear()
1300
+ .domain([1, 5, 10])
1301
+ .range(['#FF6B6B', '#FFD93D', '#6BCB77'])
1302
+ .clamp(true);
1303
+ }, []);
1304
+ useEffect(() => {
1305
+ if (!svgRef.current || processedData.length === 0)
1306
+ return;
1307
+ const svg = d3.select(svgRef.current);
1308
+ svg.selectAll('*').remove();
1309
+ const g = svg.append('g')
1310
+ .attr('transform', `translate(${margin.left},${margin.top})`);
1311
+ const extentDates = d3.extent(processedData, d => d.date);
1312
+ if (!extentDates[0] || !extentDates[1])
1313
+ return;
1314
+ const xScale = d3.scaleTime()
1315
+ .domain(extentDates)
1316
+ .range([0, chartWidth]);
1317
+ const yScale = d3.scaleLinear()
1318
+ .domain([1, 10])
1319
+ .range([chartHeight, 0]);
1320
+ const line = d3.line()
1321
+ .x(d => xScale(d.date))
1322
+ .y(d => yScale(d.rating))
1323
+ .curve(d3.curveMonotoneX);
1324
+ g.selectAll('.grid-line-y')
1325
+ .data(yScale.ticks(5))
1326
+ .enter().append('line')
1327
+ .attr('class', styles$5.gridLine)
1328
+ .attr('x1', 0)
1329
+ .attr('y1', d => yScale(d))
1330
+ .attr('x2', chartWidth)
1331
+ .attr('y2', d => yScale(d));
1332
+ g.append('path')
1333
+ .datum(processedData)
1334
+ .attr('class', styles$5.line)
1335
+ .attr('d', line);
1336
+ g.append('g')
1337
+ .attr('class', styles$5.xAxis)
1338
+ .attr('transform', `translate(0,${chartHeight})`)
1339
+ .call(d3.axisBottom(xScale)
1340
+ .tickFormat(d => d3.timeFormat('%m/%d')(d)));
1341
+ g.append('g')
1342
+ .attr('class', styles$5.yAxis)
1343
+ .call(d3.axisLeft(yScale));
1344
+ g.selectAll('.mood-circle')
1345
+ .data(processedData)
1346
+ .enter().append('circle')
1347
+ .attr('class', styles$5.dataPoint)
1348
+ .attr('cx', d => xScale(d.date))
1349
+ .attr('cy', d => yScale(d.rating))
1350
+ .attr('r', 5)
1351
+ .attr('fill', d => colorScale(d.rating))
1352
+ .style('cursor', 'pointer')
1353
+ .on('mouseenter', (event, d) => {
1354
+ const rect = svgRef.current?.getBoundingClientRect();
1355
+ if (rect) {
1356
+ setTooltipPosition({
1357
+ x: event.clientX - rect.left + 20,
1358
+ y: event.clientY - rect.top - 10
1359
+ });
1360
+ }
1361
+ setSelectedMood(d);
1362
+ d3.select(event.currentTarget)
1363
+ .transition()
1364
+ .duration(200)
1365
+ .attr('r', 8);
1366
+ })
1367
+ .on('mouseleave', (event) => {
1368
+ // Use a timeout to ensure the event fires
1369
+ setTimeout(() => {
1370
+ setSelectedMood(null);
1371
+ }, 0);
1372
+ d3.select(event.currentTarget)
1373
+ .transition()
1374
+ .duration(200)
1375
+ .attr('r', 5);
1376
+ });
1377
+ }, [processedData, chartWidth, chartHeight, colorScale, margin]);
1378
+ // Clean up tooltip on unmount
1379
+ useEffect(() => {
1380
+ return () => {
1381
+ setSelectedMood(null);
1382
+ };
1383
+ }, []);
1384
+ return (jsxs("div", { className: styles$5.container, ref: containerRef, onMouseLeave: () => setSelectedMood(null), children: [jsx("svg", { ref: svgRef, width: width, height: height, className: styles$5.chart }), selectedMood && (jsxs("div", { className: styles$5.tooltip, style: {
1385
+ position: 'absolute',
1386
+ pointerEvents: 'none',
1387
+ left: tooltipPosition.x,
1388
+ top: tooltipPosition.y,
1389
+ zIndex: 1000
1390
+ }, children: [jsxs("div", { className: styles$5.tooltipHeader, children: [jsx("div", { className: styles$5.tooltipDate, children: selectedMood.date.toLocaleDateString() }), jsxs("div", { className: styles$5.tooltipRating, children: [jsx("span", { className: styles$5.ratingValue, children: selectedMood.rating }), jsx("span", { className: styles$5.ratingMax, children: "/10" })] })] }), selectedMood.tags.length > 0 && (jsx("div", { className: styles$5.tooltipTags, children: selectedMood.tags.map((tag, index) => (jsx("span", { className: styles$5.tag, children: tag }, index))) })), selectedMood.comment && (jsx("div", { className: styles$5.tooltipComment, children: selectedMood.comment }))] }))] }));
1391
+ };
1392
+
1393
+ var css_248z$4 = ".QuantifiableHabitsChart-module_container__X5SBp{align-items:center;background:var(--color-background-secondary);border-radius:var(--radius-lg);display:flex;flex-direction:column;padding:var(--spacing-xl)}.QuantifiableHabitsChart-module_controls__O-ObQ{align-items:center;display:flex;justify-content:center;margin-bottom:var(--spacing-xl)}.QuantifiableHabitsChart-module_viewToggle__24hKA{background:var(--color-background-tertiary);border:1px solid var(--color-border);border-radius:12px;display:flex;gap:4px;padding:4px}.QuantifiableHabitsChart-module_viewButton__WFU6j{align-items:center;background:transparent;border:none;border-radius:8px;color:var(--color-text-secondary);cursor:pointer;display:flex;font-size:13px;font-weight:500;gap:6px;padding:8px 12px;position:relative;transition:all .2s ease}.QuantifiableHabitsChart-module_viewButton__WFU6j:hover{background:var(--color-surface-hover);transform:translateY(-1px)}.QuantifiableHabitsChart-module_viewButton__WFU6j.QuantifiableHabitsChart-module_active__Pjqy9{background:var(--color-primary);box-shadow:0 4px 12px rgba(212,175,55,.3);color:var(--color-text-inverse)}.QuantifiableHabitsChart-module_viewIcon__b2mfk{display:inline-block;font-size:16px}.QuantifiableHabitsChart-module_viewLabel__9MjCU{display:inline-block}@media (max-width:640px){.QuantifiableHabitsChart-module_viewLabel__9MjCU{display:none}}.QuantifiableHabitsChart-module_legend__3Ki7c{background:var(--color-background-tertiary);border:1px solid var(--color-border);border-radius:12px;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:var(--spacing-xl);padding:12px}.QuantifiableHabitsChart-module_legendItem__Zl7fz{align-items:center;background:var(--color-background-secondary);border:2px solid var(--border-primary);border-radius:20px;box-shadow:0 2px 8px rgba(0,0,0,.08);cursor:pointer;display:flex;gap:8px;overflow:hidden;padding:6px 12px;position:relative;transition:all .2s ease}.QuantifiableHabitsChart-module_legendItem__Zl7fz:before{background:linear-gradient(135deg,transparent,var(--color-primary-lighter));bottom:0;content:\"\";left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .2s ease}.QuantifiableHabitsChart-module_legendItem__Zl7fz:hover{border-color:var(--color-primary);box-shadow:0 4px 12px rgba(0,0,0,.15);transform:translateY(-2px)}.QuantifiableHabitsChart-module_legendItem__Zl7fz:hover:before{opacity:1}.QuantifiableHabitsChart-module_legendItem__Zl7fz.QuantifiableHabitsChart-module_inactive__TzZC-{background:var(--color-background-tertiary);opacity:.4}.QuantifiableHabitsChart-module_legendItem__Zl7fz.QuantifiableHabitsChart-module_inactive__TzZC-:hover{opacity:.6}.QuantifiableHabitsChart-module_legendItem__Zl7fz.QuantifiableHabitsChart-module_inactive__TzZC- .QuantifiableHabitsChart-module_legendColor__zbPoV{background:var(--color-text-tertiary)!important}.QuantifiableHabitsChart-module_legendEmoji__HG9CZ{animation:QuantifiableHabitsChart-module_bounce__r-Afq 2s infinite;animation-delay:var(--animation-delay,0s);display:inline-block;font-size:18px}@keyframes QuantifiableHabitsChart-module_bounce__r-Afq{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.QuantifiableHabitsChart-module_legendColor__zbPoV{border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2);height:12px;position:relative;transition:all .2s ease;width:12px}.QuantifiableHabitsChart-module_legendItem__Zl7fz:hover .QuantifiableHabitsChart-module_legendColor__zbPoV{transform:scale(1.2)}.QuantifiableHabitsChart-module_legendLabel__H3oFL{color:var(--color-text);font-size:13px;font-weight:500;position:relative;z-index:1}.QuantifiableHabitsChart-module_chart__FMeA-{display:block;margin:0 auto}.QuantifiableHabitsChart-module_gridLine__CTNIq{stroke:var(--color-border);stroke-opacity:.15;stroke-dasharray:4,4}.QuantifiableHabitsChart-module_line__CpYip{fill:none;stroke-width:2.5;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));transition:opacity .3s ease}.QuantifiableHabitsChart-module_xAxis__lbgBG,.QuantifiableHabitsChart-module_yAxis__Y6WeV{color:var(--color-text-secondary);font-size:11px;font-weight:500}.QuantifiableHabitsChart-module_xAxis__lbgBG line,.QuantifiableHabitsChart-module_xAxis__lbgBG path,.QuantifiableHabitsChart-module_yAxis__Y6WeV line,.QuantifiableHabitsChart-module_yAxis__Y6WeV path{stroke:var(--color-border);stroke-opacity:.3}.QuantifiableHabitsChart-module_xAxis__lbgBG text,.QuantifiableHabitsChart-module_yAxis__Y6WeV text{fill:var(--color-text-secondary)}.QuantifiableHabitsChart-module_dataPoint__s8UMX{filter:drop-shadow(0 2px 4px rgba(0,0,0,.2));transition:all .3s ease}.QuantifiableHabitsChart-module_dataPoint__s8UMX:hover{r:6;filter:drop-shadow(0 4px 8px rgba(0,0,0,.3))}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlF1YW50aWZpYWJsZUhhYml0c0NoYXJ0Lm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaURBTUksa0JBQW1CLENBTG5CLDRDQUE2QyxDQUM3Qyw4QkFBK0IsQ0FFL0IsWUFBYSxDQUNiLHFCQUFzQixDQUZ0Qix5QkFJSixDQUVBLGdEQUdJLGtCQUFtQixDQUZuQixZQUFhLENBQ2Isc0JBQXVCLENBRXZCLCtCQUNKLENBRUEsa0RBR0ksMkNBQTRDLENBRzVDLG9DQUFxQyxDQURyQyxrQkFBbUIsQ0FKbkIsWUFBYSxDQUNiLE9BQVEsQ0FFUixXQUdKLENBRUEsa0RBRUksa0JBQW1CLENBR25CLHNCQUF1QixDQUN2QixXQUFZLENBQ1osaUJBQWtCLENBQ2xCLGlDQUFrQyxDQUdsQyxjQUFlLENBVmYsWUFBYSxDQVFiLGNBQWUsQ0FDZixlQUFnQixDQVBoQixPQUFRLENBQ1IsZ0JBQWlCLENBU2pCLGlCQUFrQixDQURsQix1QkFFSixDQUVBLHdEQUNJLHFDQUFzQyxDQUN0QywwQkFDSixDQUVBLCtGQUNJLCtCQUFnQyxDQUVoQyx5Q0FBOEMsQ0FEOUMsK0JBRUosQ0FFQSxnREFFSSxvQkFBcUIsQ0FEckIsY0FFSixDQUVBLGlEQUNJLG9CQUNKLENBRUEseUJBQ0ksaURBQ0ksWUFDSixDQUNKLENBRUEsOENBTUksMkNBQTRDLENBRTVDLG9DQUFxQyxDQURyQyxrQkFBbUIsQ0FObkIsWUFBYSxDQUNiLGNBQWUsQ0FDZixPQUFRLENBTVIsc0JBQXVCLENBTHZCLCtCQUFnQyxDQUNoQyxZQUtKLENBRUEsa0RBRUksa0JBQW1CLENBR25CLDRDQUE2QyxDQUM3QyxzQ0FBdUMsQ0FDdkMsa0JBQW1CLENBR25CLG9DQUF5QyxDQUZ6QyxjQUFlLENBUGYsWUFBYSxDQUViLE9BQVEsQ0FTUixlQUFnQixDQVJoQixnQkFBaUIsQ0FPakIsaUJBQWtCLENBRmxCLHVCQUlKLENBRUEseURBT0ksMkVBQThFLENBRDlFLFFBQVMsQ0FMVCxVQUFXLENBR1gsTUFBTyxDQUlQLFNBQVUsQ0FOVixpQkFBa0IsQ0FHbEIsT0FBUSxDQUZSLEtBQU0sQ0FNTiwyQkFDSixDQUVBLHdEQUdJLGlDQUFrQyxDQURsQyxxQ0FBMEMsQ0FEMUMsMEJBR0osQ0FFQSwrREFDSSxTQUNKLENBRUEsaUdBRUksMkNBQTRDLENBRDVDLFVBRUosQ0FFQSx1R0FDSSxVQUNKLENBRUEsb0pBQ0ksK0NBQ0osQ0FFQSxtREFHSSxrRUFBNkIsQ0FDN0IseUNBQTJDLENBRjNDLG9CQUFxQixDQURyQixjQUlKLENBRUEsd0RBQ0ksTUFBVyx1QkFBMEIsQ0FDckMsSUFBTSwwQkFBNkIsQ0FDdkMsQ0FFQSxtREFHSSxpQkFBa0IsQ0FFbEIsbUNBQXdDLENBSHhDLFdBQVksQ0FJWixpQkFBa0IsQ0FGbEIsdUJBQXlCLENBSHpCLFVBTUosQ0FFQSwyR0FDSSxvQkFDSixDQUVBLG1EQUdJLHVCQUF3QixDQUZ4QixjQUFlLENBQ2YsZUFBZ0IsQ0FFaEIsaUJBQWtCLENBQ2xCLFNBQ0osQ0FFQSw2Q0FDSSxhQUFjLENBQ2QsYUFDSixDQUVBLGdEQUNJLDBCQUEyQixDQUMzQixrQkFBb0IsQ0FDcEIsb0JBQ0osQ0FFQSw0Q0FDSSxTQUFVLENBQ1YsZ0JBQWlCLENBRWpCLDRDQUFpRCxDQURqRCwyQkFFSixDQUVBLDBGQUVJLGlDQUFrQyxDQUNsQyxjQUFlLENBQ2YsZUFDSixDQUVBLHdNQUlJLDBCQUEyQixDQUMzQixpQkFDSixDQUVBLG9HQUVJLGdDQUNKLENBRUEsaURBRUksNENBQWlELENBRGpELHVCQUVKLENBRUEsdURBQ0ksR0FBSSxDQUNKLDRDQUNKIiwiZmlsZSI6IlF1YW50aWZpYWJsZUhhYml0c0NoYXJ0Lm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhsKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmNvbnRyb2xzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy14bCk7XG59XG5cbi52aWV3VG9nZ2xlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogNHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpO1xuICAgIHBhZGRpbmc6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbi52aWV3QnV0dG9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA2cHg7XG4gICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnZpZXdCdXR0b246aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UtaG92ZXIpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbn1cblxuLnZpZXdCdXR0b24uYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1pbnZlcnNlKTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpO1xufVxuXG4udmlld0ljb24ge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi52aWV3TGFiZWwge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7XG4gICAgLnZpZXdMYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4ubGVnZW5kIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDhweDtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXhsKTtcbiAgICBwYWRkaW5nOiAxMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLmxlZ2VuZEl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBwYWRkaW5nOiA2cHggMTJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tYm9yZGVyLXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5sZWdlbmRJdGVtOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdHJhbnNwYXJlbnQsIHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHRlcikpO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7XG59XG5cbi5sZWdlbmRJdGVtOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG59XG5cbi5sZWdlbmRJdGVtOmhvdmVyOjpiZWZvcmUge1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi5sZWdlbmRJdGVtLmluYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG59XG5cbi5sZWdlbmRJdGVtLmluYWN0aXZlOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAwLjY7XG59XG5cbi5sZWdlbmRJdGVtLmluYWN0aXZlIC5sZWdlbmRDb2xvciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItdGV4dC10ZXJ0aWFyeSkgIWltcG9ydGFudDtcbn1cblxuLmxlZ2VuZEVtb2ppIHtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGFuaW1hdGlvbjogYm91bmNlIDJzIGluZmluaXRlO1xuICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tYW5pbWF0aW9uLWRlbGF5LCAwcyk7XG59XG5cbkBrZXlmcmFtZXMgYm91bmNlIHtcbiAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxuICAgIDUwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsgfVxufVxuXG4ubGVnZW5kQ29sb3Ige1xuICAgIHdpZHRoOiAxMnB4O1xuICAgIGhlaWdodDogMTJweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmxlZ2VuZEl0ZW06aG92ZXIgLmxlZ2VuZENvbG9yIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7XG59XG5cbi5sZWdlbmRMYWJlbCB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAxO1xufVxuXG4uY2hhcnQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogMCBhdXRvO1xufVxuXG4uZ3JpZExpbmUge1xuICAgIHN0cm9rZTogdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBzdHJva2Utb3BhY2l0eTogMC4xNTtcbiAgICBzdHJva2UtZGFzaGFycmF5OiA0LCA0O1xufVxuXG4ubGluZSB7XG4gICAgZmlsbDogbm9uZTtcbiAgICBzdHJva2Utd2lkdGg6IDIuNTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xufVxuXG4ueEF4aXMsXG4ueUF4aXMge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi54QXhpcyBsaW5lLFxuLnhBeGlzIHBhdGgsXG4ueUF4aXMgbGluZSxcbi55QXhpcyBwYXRoIHtcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgc3Ryb2tlLW9wYWNpdHk6IDAuMztcbn1cblxuLnhBeGlzIHRleHQsXG4ueUF4aXMgdGV4dCB7XG4gICAgZmlsbDogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4uZGF0YVBvaW50IHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSk7XG59XG5cbi5kYXRhUG9pbnQ6aG92ZXIge1xuICAgIHI6IDY7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjMpKTtcbn0iXX0= */";
1394
+ var styles$4 = {"container":"QuantifiableHabitsChart-module_container__X5SBp","controls":"QuantifiableHabitsChart-module_controls__O-ObQ","viewToggle":"QuantifiableHabitsChart-module_viewToggle__24hKA","viewButton":"QuantifiableHabitsChart-module_viewButton__WFU6j","active":"QuantifiableHabitsChart-module_active__Pjqy9","viewIcon":"QuantifiableHabitsChart-module_viewIcon__b2mfk","viewLabel":"QuantifiableHabitsChart-module_viewLabel__9MjCU","legend":"QuantifiableHabitsChart-module_legend__3Ki7c","legendItem":"QuantifiableHabitsChart-module_legendItem__Zl7fz","inactive":"QuantifiableHabitsChart-module_inactive__TzZC-","legendColor":"QuantifiableHabitsChart-module_legendColor__zbPoV","legendEmoji":"QuantifiableHabitsChart-module_legendEmoji__HG9CZ","legendLabel":"QuantifiableHabitsChart-module_legendLabel__H3oFL","chart":"QuantifiableHabitsChart-module_chart__FMeA-","gridLine":"QuantifiableHabitsChart-module_gridLine__CTNIq","line":"QuantifiableHabitsChart-module_line__CpYip","xAxis":"QuantifiableHabitsChart-module_xAxis__lbgBG","yAxis":"QuantifiableHabitsChart-module_yAxis__Y6WeV","dataPoint":"QuantifiableHabitsChart-module_dataPoint__s8UMX"};
1395
+ styleInject(css_248z$4);
1396
+
1397
+ // Default colors as fallback
1398
+ const DEFAULT_HABIT_COLORS = {
1399
+ 'Exercise': '#6BCB77',
1400
+ 'Meditation': '#4D96FF',
1401
+ 'Reading': '#FFB319',
1402
+ 'Water': '#00D9FF',
1403
+ 'Steps': '#FF6B6B',
1404
+ 'Sleep': '#9B59B6',
1405
+ 'Calories': '#FF9F1C',
1406
+ 'Study': '#C774E8'
1407
+ };
1408
+ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewType = 'daily', periodType = 'month', habitColors: customHabitColors = {}, habitEmojis: customHabitEmojis = {} }) => {
1409
+ const svgRef = useRef(null);
1410
+ const [viewType, setViewType] = useState(defaultViewType);
1411
+ const [activeHabits, setActiveHabits] = useState([]);
1412
+ const [hoveredHabit, setHoveredHabit] = useState(null);
1413
+ const margin = { top: 20, right: 20, bottom: 50, left: 50 };
1414
+ const chartWidth = width - margin.left - margin.right;
1415
+ const chartHeight = height - margin.top - margin.bottom;
1416
+ const habits = useMemo(() => Object.keys(data).filter(key => key !== 'dates'), [data]);
1417
+ useEffect(() => {
1418
+ setActiveHabits(habits);
1419
+ }, [habits]);
1420
+ const availableViewTypes = useMemo(() => {
1421
+ switch (periodType) {
1422
+ case 'week':
1423
+ return ['daily'];
1424
+ case 'month':
1425
+ return ['daily', 'weekly'];
1426
+ case 'quarter':
1427
+ return ['weekly', 'monthly'];
1428
+ case 'year':
1429
+ return ['daily', 'weekly', 'monthly', 'quarterly'];
1430
+ case 'allTime':
1431
+ return ['monthly', 'quarterly'];
1432
+ default:
1433
+ return ['daily'];
1434
+ }
1435
+ }, [periodType]);
1436
+ const getColor = (habit) => {
1437
+ // First check custom colors, then defaults, then generate deterministic color
1438
+ return customHabitColors[habit] || DEFAULT_HABIT_COLORS[habit] || `hsl(${Math.abs(habit.split('').reduce((a, b) => a + b.charCodeAt(0), 0)) % 360}, 70%, 50%)`;
1439
+ };
1440
+ // Aggregate data based on view type
1441
+ const aggregateData = useMemo(() => {
1442
+ if (viewType === 'daily' || !data.dates.length) {
1443
+ return data;
1444
+ }
1445
+ const aggregated = { dates: [] };
1446
+ const dateGroups = new Map();
1447
+ // Group dates by period
1448
+ data.dates.forEach((dateStr, index) => {
1449
+ const date = new Date(dateStr);
1450
+ let groupKey;
1451
+ switch (viewType) {
1452
+ case 'weekly': {
1453
+ // Get ISO week start (Monday)
1454
+ const weekStart = new Date(date);
1455
+ const day = weekStart.getDay();
1456
+ const diff = weekStart.getDate() - day + (day === 0 ? -6 : 1);
1457
+ weekStart.setDate(diff);
1458
+ // Use the Monday date as the group key to ensure proper sorting
1459
+ groupKey = weekStart.toISOString().split('T')[0];
1460
+ break;
1461
+ }
1462
+ case 'monthly':
1463
+ // Use first day of month for consistent sorting
1464
+ groupKey = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-01`;
1465
+ break;
1466
+ case 'quarterly': {
1467
+ const quarter = Math.floor(date.getMonth() / 3) + 1;
1468
+ const quarterStartMonth = (quarter - 1) * 3;
1469
+ // Use first day of quarter for consistent sorting and grouping
1470
+ const quarterStart = new Date(date.getFullYear(), quarterStartMonth, 1);
1471
+ groupKey = quarterStart.toISOString().split('T')[0];
1472
+ break;
1473
+ }
1474
+ default:
1475
+ groupKey = dateStr;
1476
+ }
1477
+ if (!dateGroups.has(groupKey)) {
1478
+ dateGroups.set(groupKey, []);
1479
+ }
1480
+ dateGroups.get(groupKey).push(index);
1481
+ });
1482
+ // Calculate aggregated values - sort dates for proper chronological order
1483
+ aggregated.dates = Array.from(dateGroups.keys()).sort();
1484
+ habits.forEach(habit => {
1485
+ aggregated[habit] = aggregated.dates.map(groupKey => {
1486
+ const indices = dateGroups.get(groupKey);
1487
+ const values = indices
1488
+ .map(i => data[habit][i])
1489
+ .filter(v => typeof v === 'number' && !isNaN(v));
1490
+ if (values.length === 0)
1491
+ return 0;
1492
+ // Calculate average for aggregated periods
1493
+ return Math.round(values.reduce((sum, v) => sum + v, 0) / values.length);
1494
+ });
1495
+ });
1496
+ return aggregated;
1497
+ }, [data, viewType, habits]);
1498
+ const toggleHabit = (habit) => {
1499
+ setActiveHabits(prev => prev.includes(habit)
1500
+ ? prev.filter(h => h !== habit)
1501
+ : [...prev, habit]);
1502
+ };
1503
+ useEffect(() => {
1504
+ if (!svgRef.current || aggregateData.dates.length === 0)
1505
+ return;
1506
+ const svg = d3.select(svgRef.current);
1507
+ svg.selectAll('*').remove();
1508
+ const g = svg.append('g')
1509
+ .attr('transform', `translate(${margin.left},${margin.top})`);
1510
+ const dates = aggregateData.dates.map(d => new Date(d));
1511
+ const xScale = d3.scaleTime()
1512
+ .domain(d3.extent(dates))
1513
+ .range([0, chartWidth]);
1514
+ const maxValue = Math.max(...activeHabits.flatMap(habit => aggregateData[habit].filter(v => typeof v === 'number')));
1515
+ const yScale = d3.scaleLinear()
1516
+ .domain([0, maxValue * 1.1])
1517
+ .range([chartHeight, 0]);
1518
+ g.selectAll('.grid-line-y')
1519
+ .data(yScale.ticks(5))
1520
+ .enter().append('line')
1521
+ .attr('class', styles$4.gridLine)
1522
+ .attr('x1', 0)
1523
+ .attr('y1', d => yScale(d))
1524
+ .attr('x2', chartWidth)
1525
+ .attr('y2', d => yScale(d));
1526
+ const line = d3.line()
1527
+ .x(d => xScale(d[0]))
1528
+ .y(d => yScale(d[1]))
1529
+ .curve(d3.curveMonotoneX);
1530
+ activeHabits.forEach(habit => {
1531
+ const habitData = dates.map((date, i) => [date, aggregateData[habit][i]]).filter(d => typeof d[1] === 'number');
1532
+ g.append('path')
1533
+ .datum(habitData)
1534
+ .attr('class', styles$4.line)
1535
+ .attr('d', line)
1536
+ .attr('stroke', getColor(habit))
1537
+ .attr('opacity', hoveredHabit && hoveredHabit !== habit ? 0.3 : 1);
1538
+ g.selectAll(`.circle-${habit}`)
1539
+ .data(habitData)
1540
+ .enter().append('circle')
1541
+ .attr('class', styles$4.dataPoint)
1542
+ .attr('cx', d => xScale(d[0]))
1543
+ .attr('cy', d => yScale(d[1]))
1544
+ .attr('r', 4)
1545
+ .attr('fill', getColor(habit))
1546
+ .attr('opacity', hoveredHabit && hoveredHabit !== habit ? 0.3 : 1);
1547
+ });
1548
+ // Helper function to get ISO week number
1549
+ const getISOWeek = (date) => {
1550
+ const d = new Date(date);
1551
+ d.setHours(0, 0, 0, 0);
1552
+ d.setDate(d.getDate() + 3 - (d.getDay() + 6) % 7);
1553
+ const week1 = new Date(d.getFullYear(), 0, 4);
1554
+ return 1 + Math.round(((d.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);
1555
+ };
1556
+ // Format x-axis based on view type
1557
+ const xAxisFormat = (() => {
1558
+ switch (viewType) {
1559
+ case 'daily':
1560
+ return d3.timeFormat('%Y-%m-%d');
1561
+ case 'weekly':
1562
+ return (d) => {
1563
+ const weekNum = getISOWeek(d);
1564
+ return `${d.getFullYear()}-W${weekNum.toString().padStart(2, '0')}`;
1565
+ };
1566
+ case 'monthly':
1567
+ return d3.timeFormat('%Y-%m');
1568
+ case 'quarterly':
1569
+ return (d) => {
1570
+ const quarter = Math.floor(d.getMonth() / 3) + 1;
1571
+ return `${d.getFullYear()}-Q${quarter}`;
1572
+ };
1573
+ default:
1574
+ return d3.timeFormat('%Y-%m-%d');
1575
+ }
1576
+ })();
1577
+ // Determine number of ticks based on view type and data
1578
+ const tickCount = (() => {
1579
+ switch (viewType) {
1580
+ case 'daily':
1581
+ return Math.min(10, aggregateData.dates.length);
1582
+ case 'weekly':
1583
+ return Math.min(12, aggregateData.dates.length);
1584
+ case 'monthly':
1585
+ return Math.min(12, aggregateData.dates.length);
1586
+ case 'quarterly':
1587
+ return aggregateData.dates.length; // Show all quarters
1588
+ default:
1589
+ return undefined;
1590
+ }
1591
+ })();
1592
+ const xAxisGenerator = d3.axisBottom(xScale)
1593
+ .tickFormat(d => xAxisFormat(d));
1594
+ // Set tick values for quarterly to avoid duplicates
1595
+ if (viewType === 'quarterly') {
1596
+ xAxisGenerator.tickValues(dates);
1597
+ }
1598
+ else if (tickCount) {
1599
+ xAxisGenerator.ticks(tickCount);
1600
+ }
1601
+ const xAxis = g.append('g')
1602
+ .attr('class', styles$4.xAxis)
1603
+ .attr('transform', `translate(0,${chartHeight})`)
1604
+ .call(xAxisGenerator);
1605
+ // Rotate labels for better readability if needed
1606
+ if (viewType === 'daily' || viewType === 'weekly') {
1607
+ xAxis.selectAll('text')
1608
+ .style('text-anchor', 'end')
1609
+ .attr('dx', '-.8em')
1610
+ .attr('dy', '.15em')
1611
+ .attr('transform', 'rotate(-45)');
1612
+ }
1613
+ g.append('g')
1614
+ .attr('class', styles$4.yAxis)
1615
+ .call(d3.axisLeft(yScale));
1616
+ }, [aggregateData, activeHabits, chartWidth, chartHeight, margin, hoveredHabit, customHabitColors]);
1617
+ // View type icons and labels
1618
+ const viewTypeConfig = {
1619
+ daily: { icon: '📅', label: 'Daily' },
1620
+ weekly: { icon: '📆', label: 'Weekly' },
1621
+ monthly: { icon: '🗓️', label: 'Monthly' },
1622
+ quarterly: { icon: '📊', label: 'Quarterly' }
1623
+ };
1624
+ return (jsxs("div", { className: styles$4.container, children: [jsx("div", { className: styles$4.controls, children: jsx("div", { className: styles$4.viewToggle, children: availableViewTypes.map(type => (jsxs("button", { className: `${styles$4.viewButton} ${viewType === type ? styles$4.active : ''}`, onClick: () => setViewType(type), title: viewTypeConfig[type].label, children: [jsx("span", { className: styles$4.viewIcon, children: viewTypeConfig[type].icon }), jsx("span", { className: styles$4.viewLabel, children: viewTypeConfig[type].label })] }, type))) }) }), jsx("div", { className: styles$4.legend, children: habits.map(habit => (jsxs("button", { className: `${styles$4.legendItem} ${!activeHabits.includes(habit) ? styles$4.inactive : ''}`, onClick: () => toggleHabit(habit), onMouseEnter: () => setHoveredHabit(habit), onMouseLeave: () => setHoveredHabit(null), children: [jsx("span", { className: styles$4.legendEmoji, children: customHabitEmojis[habit] || '📊' }), jsx("span", { className: styles$4.legendColor, style: { backgroundColor: getColor(habit) } }), jsx("span", { className: styles$4.legendLabel, children: habit })] }, habit))) }), jsx("svg", { ref: svgRef, width: width, height: height, className: styles$4.chart })] }));
1625
+ };
1626
+
1627
+ var css_248z$3 = ".SleepChart-module_container__RjHVU{background:var(--color-background-secondary);border-radius:var(--radius-lg);padding:var(--spacing-xl)}.SleepChart-module_header__bcoWe{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--spacing-xl)}.SleepChart-module_title__6-QII{color:var(--color-text);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.SleepChart-module_legend__VsqQj{display:flex;gap:var(--spacing-xl)}.SleepChart-module_legendItem__2c1nd{align-items:center;color:var(--color-text-secondary);display:flex;font-size:var(--font-size-sm);gap:var(--spacing-sm)}.SleepChart-module_sleepDot__qCY6O{background:#9b59b6;border-radius:var(--radius-full);height:12px;width:12px}.SleepChart-module_wakeDot__-RcrT{background:#3498db;border-radius:var(--radius-full);height:12px;width:12px}.SleepChart-module_chart__jC1nL{display:block}.SleepChart-module_gridLine__hi715{stroke:var(--color-border);stroke-opacity:.1;stroke-dasharray:2,2}.SleepChart-module_sleepBar__Hk76f{transition:var(--transition-base)}.SleepChart-module_sleepBar__Hk76f:hover{filter:brightness(1.1)}.SleepChart-module_xAxis__xzXyM,.SleepChart-module_yAxis__7N-LA{color:var(--color-text-secondary);font-size:var(--font-size-xs)}.SleepChart-module_xAxis__xzXyM line,.SleepChart-module_xAxis__xzXyM path,.SleepChart-module_yAxis__7N-LA line,.SleepChart-module_yAxis__7N-LA path{stroke:var(--color-border)}.SleepChart-module_xAxis__xzXyM text,.SleepChart-module_yAxis__7N-LA text{fill:var(--color-text-secondary)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNsZWVwQ2hhcnQubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FDSSw0Q0FBNkMsQ0FDN0MsOEJBQStCLENBQy9CLHlCQUNKLENBRUEsaUNBR0ksa0JBQW1CLENBRm5CLFlBQWEsQ0FDYiw2QkFBOEIsQ0FFOUIsK0JBQ0osQ0FFQSxnQ0FHSSx1QkFBd0IsQ0FGeEIsNkJBQThCLENBQzlCLHVDQUVKLENBRUEsaUNBQ0ksWUFBYSxDQUNiLHFCQUNKLENBRUEscUNBRUksa0JBQW1CLENBR25CLGlDQUFrQyxDQUpsQyxZQUFhLENBR2IsNkJBQThCLENBRDlCLHFCQUdKLENBRUEsbUNBSUksa0JBQW1CLENBRG5CLGdDQUFpQyxDQURqQyxXQUFZLENBRFosVUFJSixDQUVBLGtDQUlJLGtCQUFtQixDQURuQixnQ0FBaUMsQ0FEakMsV0FBWSxDQURaLFVBSUosQ0FFQSxnQ0FDSSxhQUNKLENBRUEsbUNBQ0ksMEJBQTJCLENBQzNCLGlCQUFtQixDQUNuQixvQkFDSixDQUVBLG1DQUNJLGlDQUNKLENBRUEseUNBQ0ksc0JBQ0osQ0FFQSxnRUFFSSxpQ0FBa0MsQ0FDbEMsNkJBQ0osQ0FFQSxvSkFJSSwwQkFDSixDQUVBLDBFQUVJLGdDQUNKIiwiZmlsZSI6IlNsZWVwQ2hhcnQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jb250YWluZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteGwpO1xufVxuXG4uaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmcteGwpO1xufVxuXG4udGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbn1cblxuLmxlZ2VuZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmcteGwpO1xufVxuXG4ubGVnZW5kSXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5zbGVlcERvdCB7XG4gICAgd2lkdGg6IDEycHg7XG4gICAgaGVpZ2h0OiAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsKTtcbiAgICBiYWNrZ3JvdW5kOiAjOUI1OUI2O1xufVxuXG4ud2FrZURvdCB7XG4gICAgd2lkdGg6IDEycHg7XG4gICAgaGVpZ2h0OiAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsKTtcbiAgICBiYWNrZ3JvdW5kOiAjMzQ5OERCO1xufVxuXG4uY2hhcnQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZ3JpZExpbmUge1xuICAgIHN0cm9rZTogdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBzdHJva2Utb3BhY2l0eTogMC4xO1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDIsIDI7XG59XG5cbi5zbGVlcEJhciB7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLnNsZWVwQmFyOmhvdmVyIHtcbiAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4xKTtcbn1cblxuLnhBeGlzLFxuLnlBeGlzIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbn1cblxuLnhBeGlzIGxpbmUsXG4ueEF4aXMgcGF0aCxcbi55QXhpcyBsaW5lLFxuLnlBeGlzIHBhdGgge1xuICAgIHN0cm9rZTogdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuLnhBeGlzIHRleHQsXG4ueUF4aXMgdGV4dCB7XG4gICAgZmlsbDogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xufSJdfQ== */";
1628
+ var styles$3 = {"container":"SleepChart-module_container__RjHVU","header":"SleepChart-module_header__bcoWe","title":"SleepChart-module_title__6-QII","legend":"SleepChart-module_legend__VsqQj","legendItem":"SleepChart-module_legendItem__2c1nd","sleepDot":"SleepChart-module_sleepDot__qCY6O","wakeDot":"SleepChart-module_wakeDot__-RcrT","chart":"SleepChart-module_chart__jC1nL","gridLine":"SleepChart-module_gridLine__hi715","sleepBar":"SleepChart-module_sleepBar__Hk76f","xAxis":"SleepChart-module_xAxis__xzXyM","yAxis":"SleepChart-module_yAxis__7N-LA"};
1629
+ styleInject(css_248z$3);
1630
+
1631
+ const parseTimeToDecimal = (time) => {
1632
+ const [hours, minutes] = time.split(':').map(Number);
1633
+ return hours + minutes / 60;
1634
+ };
1635
+ const SleepChart = ({ sleepData, width = 800, height = 300, onDateClick }) => {
1636
+ const svgRef = useRef(null);
1637
+ const margin = { top: 20, right: 20, bottom: 40, left: 60 };
1638
+ const chartWidth = width - margin.left - margin.right;
1639
+ const chartHeight = height - margin.top - margin.bottom;
1640
+ useEffect(() => {
1641
+ if (!svgRef.current || sleepData.length === 0)
1642
+ return;
1643
+ const svg = d3.select(svgRef.current);
1644
+ svg.selectAll('*').remove();
1645
+ const g = svg.append('g')
1646
+ .attr('transform', `translate(${margin.left},${margin.top})`);
1647
+ const xScale = d3.scaleLinear()
1648
+ .domain([18, 42])
1649
+ .range([0, chartWidth]);
1650
+ const yDomain = sleepData.map(d => d.date);
1651
+ const yScale = d3.scaleBand()
1652
+ .domain(yDomain)
1653
+ .range([0, chartHeight])
1654
+ .paddingInner(0.1)
1655
+ .paddingOuter(0.05);
1656
+ g.selectAll('.grid-line-x')
1657
+ .data(d3.range(18, 43, 3))
1658
+ .enter().append('line')
1659
+ .attr('class', styles$3.gridLine)
1660
+ .attr('x1', d => xScale(d))
1661
+ .attr('y1', 0)
1662
+ .attr('x2', d => xScale(d))
1663
+ .attr('y2', chartHeight);
1664
+ sleepData.forEach((dayData) => {
1665
+ const yValue = yScale(dayData.date);
1666
+ if (yValue === undefined)
1667
+ return;
1668
+ const barHeight = yScale.bandwidth();
1669
+ const sleepGroup = g.append('g')
1670
+ .attr('class', styles$3.sleepBar)
1671
+ .style('cursor', 'pointer')
1672
+ .on('click', () => onDateClick?.(dayData.date));
1673
+ // Handle sleep time and wake hour separately
1674
+ let sleepHour = null;
1675
+ let wakeHour = null;
1676
+ if (dayData.sleep_time) {
1677
+ sleepHour = parseTimeToDecimal(dayData.sleep_time);
1678
+ if (sleepHour < 18)
1679
+ sleepHour += 24;
1680
+ }
1681
+ if (dayData.wake_hour) {
1682
+ wakeHour = parseTimeToDecimal(dayData.wake_hour);
1683
+ if (sleepHour !== null && wakeHour < sleepHour - 18) {
1684
+ wakeHour += 24;
1685
+ }
1686
+ else if (sleepHour === null && wakeHour < 12) {
1687
+ // If no sleep time but wake is in morning, assume it's next day
1688
+ wakeHour += 24;
1689
+ }
1690
+ }
1691
+ // Draw the bar only if both values exist
1692
+ if (sleepHour !== null && wakeHour !== null) {
1693
+ sleepGroup.append('rect')
1694
+ .attr('x', xScale(sleepHour))
1695
+ .attr('y', yValue)
1696
+ .attr('width', xScale(wakeHour) - xScale(sleepHour))
1697
+ .attr('height', barHeight)
1698
+ .attr('rx', 4)
1699
+ .attr('fill', 'url(#sleepGradient)')
1700
+ .attr('opacity', 0.8);
1701
+ }
1702
+ // Draw sleep dot if sleep time exists
1703
+ if (sleepHour !== null) {
1704
+ sleepGroup.append('circle')
1705
+ .attr('cx', xScale(sleepHour))
1706
+ .attr('cy', yValue + barHeight / 2)
1707
+ .attr('r', 4)
1708
+ .attr('fill', '#9B59B6');
1709
+ }
1710
+ // Draw wake dot if wake hour exists
1711
+ if (wakeHour !== null) {
1712
+ sleepGroup.append('circle')
1713
+ .attr('cx', xScale(wakeHour))
1714
+ .attr('cy', yValue + barHeight / 2)
1715
+ .attr('r', 4)
1716
+ .attr('fill', '#3498DB');
1717
+ }
1718
+ sleepGroup.on('mouseenter', function () {
1719
+ d3.select(this).select('rect')
1720
+ .transition()
1721
+ .duration(200)
1722
+ .attr('opacity', 1);
1723
+ }).on('mouseleave', function () {
1724
+ d3.select(this).select('rect')
1725
+ .transition()
1726
+ .duration(200)
1727
+ .attr('opacity', 0.8);
1728
+ });
1729
+ });
1730
+ const defs = svg.append('defs');
1731
+ const gradient = defs.append('linearGradient')
1732
+ .attr('id', 'sleepGradient')
1733
+ .attr('x1', '0%')
1734
+ .attr('x2', '100%');
1735
+ gradient.append('stop')
1736
+ .attr('offset', '0%')
1737
+ .attr('stop-color', '#9B59B6')
1738
+ .attr('stop-opacity', 0.8);
1739
+ gradient.append('stop')
1740
+ .attr('offset', '100%')
1741
+ .attr('stop-color', '#3498DB')
1742
+ .attr('stop-opacity', 0.8);
1743
+ const xAxisTicks = d3.range(18, 43, 3).map(hour => ({
1744
+ value: hour,
1745
+ label: (hour % 24).toString().padStart(2, '0') + ':00'
1746
+ }));
1747
+ g.append('g')
1748
+ .attr('class', styles$3.xAxis)
1749
+ .attr('transform', `translate(0,${chartHeight})`)
1750
+ .call(d3.axisBottom(xScale)
1751
+ .tickValues(xAxisTicks.map(t => t.value))
1752
+ .tickFormat((d) => {
1753
+ const tick = xAxisTicks.find(t => t.value === d);
1754
+ return tick ? tick.label : '';
1755
+ }));
1756
+ const yAxisTicks = yDomain.filter((_, i) => i % Math.ceil(yDomain.length / 10) === 0);
1757
+ g.append('g')
1758
+ .attr('class', styles$3.yAxis)
1759
+ .call(d3.axisLeft(yScale)
1760
+ .tickValues(yAxisTicks)
1761
+ .tickFormat(d => {
1762
+ const date = new Date(d);
1763
+ return `${(date.getMonth() + 1).toString().padStart(2, '0')}/${date.getDate().toString().padStart(2, '0')}`;
1764
+ }));
1765
+ }, [sleepData, chartWidth, chartHeight, margin, onDateClick]);
1766
+ return (jsxs("div", { className: styles$3.container, children: [jsxs("div", { className: styles$3.header, children: [jsx("h3", { className: styles$3.title, children: "Sleep Pattern" }), jsxs("div", { className: styles$3.legend, children: [jsxs("div", { className: styles$3.legendItem, children: [jsx("span", { className: styles$3.sleepDot }), jsx("span", { children: "Sleep Time" })] }), jsxs("div", { className: styles$3.legendItem, children: [jsx("span", { className: styles$3.wakeDot }), jsx("span", { children: "Wake Time" })] })] })] }), jsx("svg", { ref: svgRef, width: width, height: height, className: styles$3.chart })] }));
132
1767
  };
133
1768
 
134
- var css_248z = ".Input-module_container__zLqel{display:flex;flex-direction:column;gap:var(--spacing-xs)}.Input-module_label__-OEBL{color:var(--color-text);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.Input-module_required__CTss-{color:var(--color-danger);margin-left:var(--spacing-xs)}.Input-module_inputWrapper__FIVsA{align-items:center;display:flex;position:relative}.Input-module_input__WjT81{background-color:var(--color-background);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius-md);color:var(--color-text);font-family:var(--font-family-base);font-size:var(--font-size-base);line-height:1.5;outline:none;padding:var(--spacing-sm) var(--spacing-md);transition:all var(--transition-fast);width:100%}.Input-module_input__WjT81:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb,0,123,255),.1)}.Input-module_input__WjT81:disabled{background-color:var(--color-surface);cursor:not-allowed;opacity:.6}.Input-module_input__WjT81::placeholder{color:var(--color-text-secondary)}.Input-module_textarea__Wv63H{min-height:100px;resize:vertical}.Input-module_small__64a4F{font-size:var(--font-size-sm);padding:var(--spacing-xs) var(--spacing-sm)}.Input-module_large__g7SQh{font-size:var(--font-size-lg);padding:var(--spacing-md) var(--spacing-lg)}.Input-module_error__VLISa{border-color:var(--color-danger)}.Input-module_error__VLISa:focus{box-shadow:0 0 0 3px rgba(220,53,69,.1)}.Input-module_success__EzYG6{border-color:var(--color-success)}.Input-module_success__EzYG6:focus{box-shadow:0 0 0 3px rgba(40,167,69,.1)}.Input-module_errorMessage__rP4NL{color:var(--color-danger);font-size:var(--font-size-sm);margin-top:var(--spacing-xs)}.Input-module_helperText__9eFmv{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin-top:var(--spacing-xs)}.Input-module_icon__IeMcF{align-items:center;color:var(--color-text-secondary);display:flex;justify-content:center;position:absolute}.Input-module_iconLeft__KrUhI{left:var(--spacing-md)}.Input-module_iconRight__Ssr47{right:var(--spacing-md)}.Input-module_withIconLeft__WfJgY{padding-left:calc(var(--spacing-xl) + var(--spacing-sm))}.Input-module_withIconRight__N8jm1{padding-right:calc(var(--spacing-xl) + var(--spacing-sm))}.Input-module_fullWidth__kWTRr{width:100%}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIklucHV0Lm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQ0UsWUFBYSxDQUNiLHFCQUFzQixDQUN0QixxQkFDRixDQUVBLDJCQUdFLHVCQUF3QixDQUZ4Qiw2QkFBOEIsQ0FDOUIscUNBRUYsQ0FFQSw4QkFDRSx5QkFBMEIsQ0FDMUIsNkJBQ0YsQ0FFQSxrQ0FHRSxrQkFBbUIsQ0FEbkIsWUFBYSxDQURiLGlCQUdGLENBRUEsMkJBT0Usd0NBQXlDLENBQ3pDLG9EQUFxRCxDQUNyRCxxQ0FBc0MsQ0FIdEMsdUJBQXdCLENBSHhCLG1DQUFvQyxDQUNwQywrQkFBZ0MsQ0FDaEMsZUFBZ0IsQ0FLaEIsWUFBYSxDQVJiLDJDQUE0QyxDQVM1QyxxQ0FBc0MsQ0FWdEMsVUFXRixDQUVBLGlDQUNFLGlDQUFrQyxDQUNsQyxnRUFDRixDQUVBLG9DQUNFLHFDQUFzQyxDQUN0QyxrQkFBbUIsQ0FDbkIsVUFDRixDQUVBLHdDQUNFLGlDQUNGLENBRUEsOEJBQ0UsZ0JBQWlCLENBQ2pCLGVBQ0YsQ0FFQSwyQkFFRSw2QkFBOEIsQ0FEOUIsMkNBRUYsQ0FFQSwyQkFFRSw2QkFBOEIsQ0FEOUIsMkNBRUYsQ0FFQSwyQkFDRSxnQ0FDRixDQUVBLGlDQUNFLHVDQUNGLENBRUEsNkJBQ0UsaUNBQ0YsQ0FFQSxtQ0FDRSx1Q0FDRixDQUVBLGtDQUVFLHlCQUEwQixDQUQxQiw2QkFBOEIsQ0FFOUIsNEJBQ0YsQ0FFQSxnQ0FFRSxpQ0FBa0MsQ0FEbEMsNkJBQThCLENBRTlCLDRCQUNGLENBRUEsMEJBR0Usa0JBQW1CLENBRW5CLGlDQUFrQyxDQUhsQyxZQUFhLENBRWIsc0JBQXVCLENBSHZCLGlCQUtGLENBRUEsOEJBQ0Usc0JBQ0YsQ0FFQSwrQkFDRSx1QkFDRixDQUVBLGtDQUNFLHdEQUNGLENBRUEsbUNBQ0UseURBQ0YsQ0FFQSwrQkFDRSxVQUNGIiwiZmlsZSI6IklucHV0Lm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1zcGFjaW5nLXhzKTtcbn1cblxuLmxhYmVsIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xufVxuXG4ucmVxdWlyZWQge1xuICBjb2xvcjogdmFyKC0tY29sb3ItZGFuZ2VyKTtcbiAgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmcteHMpO1xufVxuXG4uaW5wdXRXcmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uaW5wdXQge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1tZCk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1iYXNlKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG4gIGJvcmRlcjogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLW1kKTtcbiAgb3V0bGluZTogbm9uZTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi5pbnB1dDpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiLCAwLCAxMjMsIDI1NSksIDAuMSk7XG59XG5cbi5pbnB1dDpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICBvcGFjaXR5OiAwLjY7XG59XG5cbi5pbnB1dDo6cGxhY2Vob2xkZXIge1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4udGV4dGFyZWEge1xuICBtaW4taGVpZ2h0OiAxMDBweDtcbiAgcmVzaXplOiB2ZXJ0aWNhbDtcbn1cblxuLnNtYWxsIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy14cykgdmFyKC0tc3BhY2luZy1zbSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbn1cblxuLmxhcmdlIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCkgdmFyKC0tc3BhY2luZy1sZyk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbn1cblxuLmVycm9yIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1kYW5nZXIpO1xufVxuXG4uZXJyb3I6Zm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgyMjAsIDUzLCA2OSwgMC4xKTtcbn1cblxuLnN1Y2Nlc3Mge1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXN1Y2Nlc3MpO1xufVxuXG4uc3VjY2Vzczpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDQwLCAxNjcsIDY5LCAwLjEpO1xufVxuXG4uZXJyb3JNZXNzYWdlIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZGFuZ2VyKTtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy14cyk7XG59XG5cbi5oZWxwZXJUZXh0IHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLXhzKTtcbn1cblxuLmljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4uaWNvbkxlZnQge1xuICBsZWZ0OiB2YXIoLS1zcGFjaW5nLW1kKTtcbn1cblxuLmljb25SaWdodCB7XG4gIHJpZ2h0OiB2YXIoLS1zcGFjaW5nLW1kKTtcbn1cblxuLndpdGhJY29uTGVmdCB7XG4gIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zcGFjaW5nLXhsKSArIHZhcigtLXNwYWNpbmctc20pKTtcbn1cblxuLndpdGhJY29uUmlnaHQge1xuICBwYWRkaW5nLXJpZ2h0OiBjYWxjKHZhcigtLXNwYWNpbmcteGwpICsgdmFyKC0tc3BhY2luZy1zbSkpO1xufVxuXG4uZnVsbFdpZHRoIHtcbiAgd2lkdGg6IDEwMCU7XG59Il19 */";
135
- var styles = {"container":"Input-module_container__zLqel","label":"Input-module_label__-OEBL","required":"Input-module_required__CTss-","inputWrapper":"Input-module_inputWrapper__FIVsA","input":"Input-module_input__WjT81","textarea":"Input-module_textarea__Wv63H","small":"Input-module_small__64a4F","large":"Input-module_large__g7SQh","error":"Input-module_error__VLISa","success":"Input-module_success__EzYG6","errorMessage":"Input-module_errorMessage__rP4NL","helperText":"Input-module_helperText__9eFmv","icon":"Input-module_icon__IeMcF","iconLeft":"Input-module_iconLeft__KrUhI","iconRight":"Input-module_iconRight__Ssr47","withIconLeft":"Input-module_withIconLeft__WfJgY","withIconRight":"Input-module_withIconRight__N8jm1","fullWidth":"Input-module_fullWidth__kWTRr"};
1769
+ var css_248z$2 = ".BooleansHeatmap-module_container__IOyeU{background:var(--color-background-secondary);border-radius:var(--radius-lg);margin-bottom:var(--spacing-xl);padding:var(--spacing-xl)}.BooleansHeatmap-module_title__8DRRQ{align-items:center;color:var(--color-text);display:flex;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);gap:8px;margin-bottom:var(--spacing-lg)}.BooleansHeatmap-module_habitEmoji__Mawv-{display:inline-block;font-size:20px}.BooleansHeatmap-module_chart__-q0Pc{display:block;margin:var(--spacing-lg) 0}.BooleansHeatmap-module_monthLabel__MXbIg{font-weight:var(--font-weight-medium)}.BooleansHeatmap-module_dayLabel__2RRtm,.BooleansHeatmap-module_monthLabel__MXbIg{fill:var(--color-text-secondary);font-size:var(--font-size-xs)}.BooleansHeatmap-module_cell__WADVB{stroke:var(--color-background-secondary);stroke-width:1;cursor:pointer;transition:var(--transition-base)}.BooleansHeatmap-module_cell__WADVB:hover{stroke:var(--color-primary);stroke-width:2}.BooleansHeatmap-module_legend__WqGF8{display:flex;gap:var(--spacing-xl);justify-content:center;margin-top:var(--spacing-lg)}.BooleansHeatmap-module_legendItem__rDE2g{align-items:center;color:var(--color-text-secondary);display:flex;font-size:var(--font-size-sm);gap:var(--spacing-sm)}.BooleansHeatmap-module_legendColor__Z34-d{border:1px solid var(--color-border);border-radius:var(--radius-sm);height:16px;width:16px}.BooleansHeatmap-module_tooltip__-fHl7{background:var(--color-background);border:2px solid var(--color-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);color:var(--color-text);font-size:var(--font-size-sm);padding:var(--spacing-sm);pointer-events:none;z-index:1000}.BooleansHeatmap-module_tooltip__-fHl7 div{margin:var(--spacing-xs) 0}.BooleansHeatmap-module_tooltip__-fHl7 strong{color:var(--color-primary)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJvb2xlYW5zSGVhdG1hcC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUNJLDRDQUE2QyxDQUM3Qyw4QkFBK0IsQ0FFL0IsK0JBQWdDLENBRGhDLHlCQUVKLENBRUEscUNBTUksa0JBQW1CLENBSG5CLHVCQUF3QixDQUV4QixZQUFhLENBSmIsNkJBQThCLENBQzlCLHVDQUF3QyxDQUt4QyxPQUFRLENBSFIsK0JBSUosQ0FFQSwwQ0FFSSxvQkFBcUIsQ0FEckIsY0FFSixDQUVBLHFDQUNJLGFBQWMsQ0FDZCwwQkFDSixDQUVBLDBDQUdJLHFDQUNKLENBRUEsa0ZBTEksZ0NBQWlDLENBQ2pDLDZCQU9KLENBRUEsb0NBQ0ksd0NBQXlDLENBQ3pDLGNBQWUsQ0FDZixjQUFlLENBQ2YsaUNBQ0osQ0FFQSwwQ0FDSSwyQkFBNEIsQ0FDNUIsY0FDSixDQUVBLHNDQUNJLFlBQWEsQ0FDYixxQkFBc0IsQ0FDdEIsc0JBQXVCLENBQ3ZCLDRCQUNKLENBRUEsMENBRUksa0JBQW1CLENBR25CLGlDQUFrQyxDQUpsQyxZQUFhLENBR2IsNkJBQThCLENBRDlCLHFCQUdKLENBRUEsMkNBSUksb0NBQXFDLENBRHJDLDhCQUErQixDQUQvQixXQUFZLENBRFosVUFJSixDQUVBLHVDQUNJLGtDQUFtQyxDQUNuQyxxQ0FBc0MsQ0FDdEMsOEJBQStCLENBSS9CLDJCQUE0QixDQUQ1Qix1QkFBd0IsQ0FEeEIsNkJBQThCLENBRDlCLHlCQUEwQixDQUkxQixtQkFBb0IsQ0FDcEIsWUFDSixDQUVBLDJDQUNJLDBCQUNKLENBRUEsOENBQ0ksMEJBQ0oiLCJmaWxlIjoiQm9vbGVhbnNIZWF0bWFwLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhsKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXhsKTtcbn1cblxuLnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1sZyk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogOHB4O1xufVxuXG4uaGFiaXRFbW9qaSB7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLmNoYXJ0IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IHZhcigtLXNwYWNpbmctbGcpIDA7XG59XG5cbi5tb250aExhYmVsIHtcbiAgICBmaWxsOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xufVxuXG4uZGF5TGFiZWwge1xuICAgIGZpbGw6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14cyk7XG59XG5cbi5jZWxsIHtcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbiAgICBzdHJva2Utd2lkdGg6IDE7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5jZWxsOmhvdmVyIHtcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIHN0cm9rZS13aWR0aDogMjtcbn1cblxuLmxlZ2VuZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmcteGwpO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctbGcpO1xufVxuXG4ubGVnZW5kSXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5sZWdlbmRDb2xvciB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuLnRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDEwMDA7XG59XG5cbi50b29sdGlwIGRpdiB7XG4gICAgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLXhzKSAwO1xufVxuXG4udG9vbHRpcCBzdHJvbmcge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn0iXX0= */";
1770
+ var styles$2 = {"container":"BooleansHeatmap-module_container__IOyeU","title":"BooleansHeatmap-module_title__8DRRQ","habitEmoji":"BooleansHeatmap-module_habitEmoji__Mawv-","chart":"BooleansHeatmap-module_chart__-q0Pc","monthLabel":"BooleansHeatmap-module_monthLabel__MXbIg","dayLabel":"BooleansHeatmap-module_dayLabel__2RRtm","cell":"BooleansHeatmap-module_cell__WADVB","legend":"BooleansHeatmap-module_legend__WqGF8","legendItem":"BooleansHeatmap-module_legendItem__rDE2g","legendColor":"BooleansHeatmap-module_legendColor__Z34-d","tooltip":"BooleansHeatmap-module_tooltip__-fHl7"};
1771
+ styleInject(css_248z$2);
1772
+
1773
+ const DAYS_OF_WEEK = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
1774
+ const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
1775
+ const BooleansHeatmap = ({ data, habitName, width = 800, height = 200, habitColor = '#6BCB77', habitEmoji = '✓' }) => {
1776
+ const svgRef = useRef(null);
1777
+ const { startDate, endDate, weeksToShow } = useMemo(() => {
1778
+ const dates = Object.keys(data).sort();
1779
+ if (dates.length === 0) {
1780
+ const now = new Date();
1781
+ return {
1782
+ startDate: now,
1783
+ endDate: now,
1784
+ weeksToShow: 1
1785
+ };
1786
+ }
1787
+ const start = new Date(dates[0]);
1788
+ const end = new Date(dates[dates.length - 1]);
1789
+ const daysDiff = Math.ceil((end.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)) + 1;
1790
+ const weeksDiff = Math.ceil(daysDiff / 7);
1791
+ return {
1792
+ startDate: start,
1793
+ endDate: end,
1794
+ weeksToShow: weeksDiff
1795
+ };
1796
+ }, [data]);
1797
+ useEffect(() => {
1798
+ if (!svgRef.current)
1799
+ return;
1800
+ const svg = d3.select(svgRef.current);
1801
+ svg.selectAll('*').remove();
1802
+ const margin = { top: 40, right: 20, bottom: 20, left: 40 };
1803
+ const chartWidth = width - margin.left - margin.right;
1804
+ const chartHeight = height - margin.top - margin.bottom;
1805
+ const cellSize = Math.min(Math.floor(chartHeight / 7) - 1, Math.floor(chartWidth / weeksToShow) - 1, 20);
1806
+ const cellGap = 2;
1807
+ const g = svg.append('g')
1808
+ .attr('transform', `translate(${margin.left},${margin.top})`);
1809
+ const startDayOffset = (startDate.getDay() + 6) % 7;
1810
+ const monthPositions = new Map();
1811
+ let currentMonth = startDate.getMonth();
1812
+ monthPositions.set(currentMonth, 0);
1813
+ for (let weekIndex = 0; weekIndex < weeksToShow; weekIndex++) {
1814
+ const weekStart = new Date(startDate);
1815
+ weekStart.setDate(weekStart.getDate() + weekIndex * 7 - startDayOffset);
1816
+ if (weekStart.getMonth() !== currentMonth) {
1817
+ currentMonth = weekStart.getMonth();
1818
+ monthPositions.set(currentMonth, weekIndex);
1819
+ }
1820
+ }
1821
+ monthPositions.forEach((weekIndex, month) => {
1822
+ g.append('text')
1823
+ .attr('x', weekIndex * (cellSize + cellGap))
1824
+ .attr('y', -10)
1825
+ .attr('class', styles$2.monthLabel)
1826
+ .text(MONTHS[month]);
1827
+ });
1828
+ DAYS_OF_WEEK.forEach((day, index) => {
1829
+ g.append('text')
1830
+ .attr('x', -10)
1831
+ .attr('y', index * (cellSize + cellGap) + cellSize / 2)
1832
+ .attr('class', styles$2.dayLabel)
1833
+ .attr('text-anchor', 'end')
1834
+ .attr('alignment-baseline', 'middle')
1835
+ .text(day);
1836
+ });
1837
+ const tooltip = d3.select('body').append('div')
1838
+ .attr('class', styles$2.tooltip)
1839
+ .style('opacity', 0)
1840
+ .style('position', 'absolute');
1841
+ const daysToShow = weeksToShow * 7;
1842
+ for (let i = 0; i < daysToShow; i++) {
1843
+ const date = new Date(startDate);
1844
+ date.setDate(date.getDate() + i - startDayOffset);
1845
+ if (date < startDate || date > endDate)
1846
+ continue;
1847
+ const dateString = date.toISOString().split('T')[0];
1848
+ const dayOfWeek = (date.getDay() + 6) % 7;
1849
+ const weekIndex = Math.floor((i + startDayOffset) / 7);
1850
+ const isTrue = dateString in data && data[dateString];
1851
+ const rect = g.append('rect')
1852
+ .attr('x', weekIndex * (cellSize + cellGap))
1853
+ .attr('y', dayOfWeek * (cellSize + cellGap))
1854
+ .attr('width', cellSize)
1855
+ .attr('height', cellSize)
1856
+ .attr('rx', 3)
1857
+ .attr('class', styles$2.cell)
1858
+ .attr('data-date', dateString)
1859
+ .attr('data-value', isTrue ? 'true' : 'false')
1860
+ .style('fill', isTrue ? habitColor : '#4D4D4DFF');
1861
+ rect.on('mouseover', function (event) {
1862
+ tooltip.transition()
1863
+ .duration(200)
1864
+ .style('opacity', 1);
1865
+ const formatDate = d3.timeFormat('%b %d, %Y');
1866
+ const status = isTrue ? `${habitEmoji} Done` : '✗ Not done';
1867
+ tooltip.html(`
1868
+ <div><strong>${habitName}</strong></div>
1869
+ <div>${formatDate(date)}</div>
1870
+ <div>${status}</div>
1871
+ `)
1872
+ .style('left', (event.pageX + 10) + 'px')
1873
+ .style('top', (event.pageY - 28) + 'px');
1874
+ })
1875
+ .on('mouseout', function () {
1876
+ tooltip.transition()
1877
+ .duration(500)
1878
+ .style('opacity', 0);
1879
+ });
1880
+ }
1881
+ return () => {
1882
+ tooltip.remove();
1883
+ };
1884
+ }, [data, habitName, width, height, startDate, endDate, weeksToShow, habitColor, habitEmoji]);
1885
+ return (jsxs("div", { className: styles$2.container, children: [jsxs("h3", { className: styles$2.title, children: [jsx("span", { className: styles$2.habitEmoji, children: habitEmoji }), habitName] }), jsx("svg", { ref: svgRef, width: width, height: height, className: styles$2.chart }), jsxs("div", { className: styles$2.legend, children: [jsxs("span", { className: styles$2.legendItem, children: [jsx("span", { className: styles$2.legendColor, style: { backgroundColor: habitColor } }), "Done"] }), jsxs("span", { className: styles$2.legendItem, children: [jsx("span", { className: styles$2.legendColor, style: { backgroundColor: '#4D4D4DFF' } }), "Not done"] })] })] }));
1886
+ };
1887
+
1888
+ var css_248z$1 = ".SunburstChart-module_container__w1ZYc{align-items:center;background:var(--color-background-secondary);border-radius:var(--radius-lg);display:flex;flex-direction:column;padding:var(--spacing-xl)}.SunburstChart-module_title__T6Ak7{color:var(--color-text);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-lg);text-align:center}.SunburstChart-module_chart__BFM6E{display:block}.SunburstChart-module_tooltip__TuTAN{background:var(--color-background);border:2px solid var(--color-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);color:var(--color-text);font-size:var(--font-size-sm);padding:var(--spacing-sm);pointer-events:none;z-index:1000}.SunburstChart-module_tooltip__TuTAN div{margin:var(--spacing-xs) 0}.SunburstChart-module_tooltip__TuTAN strong{color:var(--color-primary)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN1bmJ1cnN0Q2hhcnQubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1Q0FNSSxrQkFBbUIsQ0FMbkIsNENBQTZDLENBQzdDLDhCQUErQixDQUUvQixZQUFhLENBQ2IscUJBQXNCLENBRnRCLHlCQUlKLENBRUEsbUNBR0ksdUJBQXdCLENBRnhCLDZCQUE4QixDQUM5Qix1Q0FBd0MsQ0FFeEMsK0JBQWdDLENBQ2hDLGlCQUNKLENBRUEsbUNBQ0ksYUFDSixDQUVBLHFDQUNJLGtDQUFtQyxDQUNuQyxxQ0FBc0MsQ0FDdEMsOEJBQStCLENBSS9CLDJCQUE0QixDQUQ1Qix1QkFBd0IsQ0FEeEIsNkJBQThCLENBRDlCLHlCQUEwQixDQUkxQixtQkFBb0IsQ0FDcEIsWUFDSixDQUVBLHlDQUNJLDBCQUNKLENBRUEsNENBQ0ksMEJBQ0oiLCJmaWxlIjoiU3VuYnVyc3RDaGFydC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy14bCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi50aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmNoYXJ0IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLnRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDEwMDA7XG59XG5cbi50b29sdGlwIGRpdiB7XG4gICAgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLXhzKSAwO1xufVxuXG4udG9vbHRpcCBzdHJvbmcge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn0iXX0= */";
1889
+ var styles$1 = {"container":"SunburstChart-module_container__w1ZYc","title":"SunburstChart-module_title__T6Ak7","chart":"SunburstChart-module_chart__BFM6E","tooltip":"SunburstChart-module_tooltip__TuTAN"};
1890
+ styleInject(css_248z$1);
1891
+
1892
+ const COLOR_PALETTE = [
1893
+ '#d4af37', '#FFD700', '#FFA500', '#FF8C00',
1894
+ '#FF6347', '#DC143C', '#8B4513', '#A0522D',
1895
+ '#DEB887', '#F4A460', '#D2691E', '#CD853F'
1896
+ ];
1897
+ const SunburstChart = ({ data, width = 500, height = 500, title = 'Sunburst Chart', tagColors = {} }) => {
1898
+ const svgRef = useRef(null);
1899
+ const colorMap = useRef(new Map()).current;
1900
+ const colorIndex = useRef(0);
1901
+ const radius = Math.min(width, height) / 2;
1902
+ const getColor = (name, depth) => {
1903
+ // First check if we have a tag color for this name
1904
+ if (tagColors[name]) {
1905
+ const color = d3.color(tagColors[name]);
1906
+ if (color) {
1907
+ // Darken for deeper levels
1908
+ return depth > 1 ? color.darker((depth - 1) * 0.3).toString() : color.toString();
1909
+ }
1910
+ }
1911
+ // Fallback to color palette
1912
+ if (!colorMap.has(name)) {
1913
+ colorMap.set(name, COLOR_PALETTE[colorIndex.current % COLOR_PALETTE.length]);
1914
+ colorIndex.current++;
1915
+ }
1916
+ const baseColor = colorMap.get(name) || '#d4af37';
1917
+ const color = d3.color(baseColor);
1918
+ if (color) {
1919
+ return color.darker(depth * 0.3).toString();
1920
+ }
1921
+ return baseColor;
1922
+ };
1923
+ useEffect(() => {
1924
+ if (!svgRef.current || !data)
1925
+ return;
1926
+ const svg = d3.select(svgRef.current);
1927
+ svg.selectAll('*').remove();
1928
+ const g = svg.append('g')
1929
+ .attr('transform', `translate(${width / 2},${height / 2})`);
1930
+ const root = d3.hierarchy(data)
1931
+ .sum(d => d.size ?? 0)
1932
+ .sort((a, b) => (b.value ?? 0) - (a.value ?? 0));
1933
+ const partition = d3.partition()
1934
+ .size([2 * Math.PI, radius * radius]);
1935
+ const nodes = partition(root).descendants();
1936
+ const arc = d3.arc()
1937
+ .startAngle(d => d.x0)
1938
+ .endAngle(d => d.x1)
1939
+ .innerRadius(d => Math.sqrt(d.y0))
1940
+ .outerRadius(d => Math.sqrt(d.y1));
1941
+ const tooltip = d3.select('body').append('div')
1942
+ .attr('class', styles$1.tooltip)
1943
+ .style('opacity', 0)
1944
+ .style('position', 'absolute');
1945
+ g.selectAll('path')
1946
+ .data(nodes.filter(d => d.depth > 0 && d.value && d.value > 0))
1947
+ .enter().append('path')
1948
+ .attr('d', arc)
1949
+ .attr('fill', d => {
1950
+ let ancestor = d;
1951
+ while (ancestor.depth > 1 && ancestor.parent) {
1952
+ ancestor = ancestor.parent;
1953
+ }
1954
+ return getColor(ancestor.data.name, d.depth);
1955
+ })
1956
+ .attr('stroke', 'var(--bg-primary)')
1957
+ .attr('stroke-width', 2)
1958
+ .style('cursor', 'pointer')
1959
+ .on('mouseover', function (event, d) {
1960
+ d3.select(this)
1961
+ .transition()
1962
+ .duration(200)
1963
+ .style('opacity', 0.8);
1964
+ tooltip.transition()
1965
+ .duration(200)
1966
+ .style('opacity', 1);
1967
+ const value = d.value || 0;
1968
+ const percentage = ((value / (root.value || 1)) * 100).toFixed(1);
1969
+ tooltip.html(`
1970
+ <div><strong>${d.data.name}</strong></div>
1971
+ <div>Value: ${value}</div>
1972
+ <div>${percentage}% of total</div>
1973
+ `)
1974
+ .style('left', (event.pageX + 10) + 'px')
1975
+ .style('top', (event.pageY - 28) + 'px');
1976
+ })
1977
+ .on('mouseout', function () {
1978
+ d3.select(this)
1979
+ .transition()
1980
+ .duration(200)
1981
+ .style('opacity', 1);
1982
+ tooltip.transition()
1983
+ .duration(500)
1984
+ .style('opacity', 0);
1985
+ });
1986
+ const shouldDisplayLabel = (d) => {
1987
+ const angle = d.x1 - d.x0;
1988
+ return angle > 0.15 && d.depth <= 2;
1989
+ };
1990
+ g.selectAll('text')
1991
+ .data(nodes.filter(d => d.depth > 0 && d.value && d.value > 0 && shouldDisplayLabel(d)))
1992
+ .enter().append('text')
1993
+ .attr('transform', d => {
1994
+ const angle = (d.x0 + d.x1) / 2;
1995
+ const radius = (Math.sqrt(d.y0) + Math.sqrt(d.y1)) / 2;
1996
+ const x = Math.cos(angle - Math.PI / 2) * radius;
1997
+ const y = Math.sin(angle - Math.PI / 2) * radius;
1998
+ return `translate(${x},${y})`;
1999
+ })
2000
+ .attr('text-anchor', 'middle')
2001
+ .attr('alignment-baseline', 'middle')
2002
+ .attr('font-size', '12px')
2003
+ .attr('fill', 'var(--text-inverse)')
2004
+ .attr('font-weight', 'var(--font-medium)')
2005
+ .style('pointer-events', 'none')
2006
+ .text(d => d.data.name.substring(0, 10));
2007
+ return () => {
2008
+ tooltip.remove();
2009
+ };
2010
+ }, [data, width, height, colorMap, radius]);
2011
+ return (jsxs("div", { className: styles$1.container, children: [jsx("h3", { className: styles$1.title, children: title }), jsx("svg", { ref: svgRef, width: width, height: height, className: styles$1.chart })] }));
2012
+ };
2013
+
2014
+ var css_248z = ".PieChart-module_container__tXjbe{background:var(--color-background-secondary);border-radius:var(--radius-lg);padding:var(--spacing-xl)}.PieChart-module_title__61o0R{color:var(--color-text);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-lg);text-align:center}.PieChart-module_chartContainer__uLmOz{align-items:flex-start;display:flex;gap:var(--spacing-4xl)}.PieChart-module_chart__3nqON{display:block;flex-shrink:0}.PieChart-module_legend__rAWgh{flex:1;min-width:200px}.PieChart-module_legendItem__Nb031{align-items:center;border-radius:var(--radius-md);display:flex;gap:var(--spacing-lg);margin-bottom:var(--spacing-sm);padding:var(--spacing-sm);transition:var(--transition-base)}.PieChart-module_legendItem__Nb031:hover{background:var(--color-surface-hover)}.PieChart-module_legendColor__fLuv9{border-radius:var(--radius-full);flex-shrink:0;height:16px;width:16px}.PieChart-module_legendLabel__xbjBr{color:var(--color-text);flex:1;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.PieChart-module_legendValue__h2WS2{color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold)}.PieChart-module_tooltip__140RU{background:var(--color-background);border:2px solid var(--color-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);color:var(--color-text);font-size:var(--font-size-sm);padding:var(--spacing-sm);pointer-events:none;z-index:1000}.PieChart-module_tooltip__140RU div{margin:var(--spacing-xs) 0}.PieChart-module_tooltip__140RU strong{color:var(--color-primary)}@media (max-width:768px){.PieChart-module_chartContainer__uLmOz{flex-direction:column;gap:var(--space-4)}.PieChart-module_legend__rAWgh{min-width:auto}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlBpZUNoYXJ0Lm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0NBQ0ksNENBQTZDLENBQzdDLDhCQUErQixDQUMvQix5QkFDSixDQUVBLDhCQUdJLHVCQUF3QixDQUZ4Qiw2QkFBOEIsQ0FDOUIsdUNBQXdDLENBRXhDLCtCQUFnQyxDQUNoQyxpQkFDSixDQUVBLHVDQUdJLHNCQUF1QixDQUZ2QixZQUFhLENBQ2Isc0JBRUosQ0FFQSw4QkFDSSxhQUFjLENBQ2QsYUFDSixDQUVBLCtCQUNJLE1BQU8sQ0FDUCxlQUNKLENBRUEsbUNBRUksa0JBQW1CLENBR25CLDhCQUErQixDQUovQixZQUFhLENBRWIscUJBQXNCLENBR3RCLCtCQUFnQyxDQUZoQyx5QkFBMEIsQ0FHMUIsaUNBQ0osQ0FFQSx5Q0FDSSxxQ0FDSixDQUVBLG9DQUdJLGdDQUFpQyxDQUNqQyxhQUFjLENBRmQsV0FBWSxDQURaLFVBSUosQ0FFQSxvQ0FHSSx1QkFBd0IsQ0FGeEIsTUFBTyxDQUNQLDZCQUE4QixDQUU5QixxQ0FDSixDQUVBLG9DQUVJLGlDQUFrQyxDQURsQyw2QkFBOEIsQ0FFOUIsdUNBQ0osQ0FFQSxnQ0FDSSxrQ0FBbUMsQ0FDbkMscUNBQXNDLENBQ3RDLDhCQUErQixDQUkvQiwyQkFBNEIsQ0FENUIsdUJBQXdCLENBRHhCLDZCQUE4QixDQUQ5Qix5QkFBMEIsQ0FJMUIsbUJBQW9CLENBQ3BCLFlBQ0osQ0FFQSxvQ0FDSSwwQkFDSixDQUVBLHVDQUNJLDBCQUNKLENBRUEseUJBQ0ksdUNBQ0kscUJBQXNCLENBQ3RCLGtCQUNKLENBRUEsK0JBQ0ksY0FDSixDQUNKIiwiZmlsZSI6IlBpZUNoYXJ0Lm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhsKTtcbn1cblxuLnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1sZyk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uY2hhcnRDb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiB2YXIoLS1zcGFjaW5nLTR4bCk7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG5cbi5jaGFydCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5sZWdlbmQge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAyMDBweDtcbn1cblxuLmxlZ2VuZEl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLmxlZ2VuZEl0ZW06aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UtaG92ZXIpO1xufVxuXG4ubGVnZW5kQ29sb3Ige1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtZnVsbCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5sZWdlbmRMYWJlbCB7XG4gICAgZmxleDogMTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xufVxuXG4ubGVnZW5kVmFsdWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG59XG5cbi50b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnKTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAxMDAwO1xufVxuXG4udG9vbHRpcCBkaXYge1xuICAgIG1hcmdpbjogdmFyKC0tc3BhY2luZy14cykgMDtcbn1cblxuLnRvb2x0aXAgc3Ryb25nIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5jaGFydENvbnRhaW5lciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gICAgfVxuICAgIFxuICAgIC5sZWdlbmQge1xuICAgICAgICBtaW4td2lkdGg6IGF1dG87XG4gICAgfVxufSJdfQ== */";
2015
+ var styles = {"container":"PieChart-module_container__tXjbe","title":"PieChart-module_title__61o0R","chartContainer":"PieChart-module_chartContainer__uLmOz","chart":"PieChart-module_chart__3nqON","legend":"PieChart-module_legend__rAWgh","legendItem":"PieChart-module_legendItem__Nb031","legendColor":"PieChart-module_legendColor__fLuv9","legendLabel":"PieChart-module_legendLabel__xbjBr","legendValue":"PieChart-module_legendValue__h2WS2","tooltip":"PieChart-module_tooltip__140RU"};
136
2016
  styleInject(css_248z);
137
2017
 
138
- const Input = forwardRef(({ label, error, helperText, required = false, fullWidth = false, size = 'medium', variant = 'default', iconLeft, iconRight, multiline = false, rows = 3, className = '', id, ...rest }, ref) => {
139
- const inputId = id || `input-${Math.random().toString(36).substr(2, 9)}`;
140
- const inputClasses = [
141
- styles.input,
142
- size !== 'medium' && styles[size],
143
- error && styles.error,
144
- variant === 'error' && styles.error,
145
- variant === 'success' && styles.success,
146
- multiline && styles.textarea,
147
- iconLeft && styles.withIconLeft,
148
- iconRight && styles.withIconRight,
149
- className
150
- ].filter(Boolean).join(' ');
151
- const containerClasses = [
152
- styles.container,
153
- fullWidth && styles.fullWidth
154
- ].filter(Boolean).join(' ');
155
- const inputElement = multiline ? (jsx("textarea", { ref: ref, id: inputId, className: inputClasses, rows: rows, "aria-invalid": !!error, "aria-describedby": error ? `${inputId}-error` : helperText ? `${inputId}-helper` : undefined, ...rest })) : (jsx("input", { ref: ref, id: inputId, className: inputClasses, "aria-invalid": !!error, "aria-describedby": error ? `${inputId}-error` : helperText ? `${inputId}-helper` : undefined, ...rest }));
156
- return (jsxs("div", { className: containerClasses, children: [label && (jsxs("label", { htmlFor: inputId, className: styles.label, children: [label, required && jsx("span", { className: styles.required, children: "*" })] })), jsxs(motion.div, { className: styles.inputWrapper, whileFocus: { scale: 1.01 }, transition: { type: "spring", stiffness: 400, damping: 17 }, children: [iconLeft && jsx("span", { className: `${styles.icon} ${styles.iconLeft}`, children: iconLeft }), inputElement, iconRight && jsx("span", { className: `${styles.icon} ${styles.iconRight}`, children: iconRight })] }), error && (jsx(motion.span, { id: `${inputId}-error`, className: styles.errorMessage, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.2 }, children: error })), helperText && !error && (jsx("span", { id: `${inputId}-helper`, className: styles.helperText, children: helperText }))] }));
157
- });
2018
+ const DEFAULT_COLORS = [
2019
+ '#d4af37', '#FFD700', '#FFA500', '#FF8C00',
2020
+ '#FF6347', '#DC143C', '#8B4513', '#A0522D',
2021
+ '#DEB887', '#F4A460', '#D2691E', '#CD853F',
2022
+ '#B8860B', '#DAA520', '#F0E68C', '#BDB76B'
2023
+ ];
2024
+ const PieChart = ({ data, width = 400, height = 400, title = 'Distribution', showLegend = true }) => {
2025
+ const svgRef = useRef(null);
2026
+ const radius = Math.min(width, height) / 2 - 20;
2027
+ useEffect(() => {
2028
+ if (!svgRef.current || !data.length)
2029
+ return;
2030
+ const svg = d3.select(svgRef.current);
2031
+ svg.selectAll('*').remove();
2032
+ const g = svg.append('g')
2033
+ .attr('transform', `translate(${width / 2},${height / 2})`);
2034
+ const pie = d3.pie()
2035
+ .value(d => d.value)
2036
+ .sort(null);
2037
+ const arc = d3.arc()
2038
+ .innerRadius(0)
2039
+ .outerRadius(radius);
2040
+ const labelArc = d3.arc()
2041
+ .innerRadius(radius * 0.7)
2042
+ .outerRadius(radius * 0.7);
2043
+ const tooltip = d3.select('body').append('div')
2044
+ .attr('class', styles.tooltip)
2045
+ .style('opacity', 0)
2046
+ .style('position', 'absolute');
2047
+ const pieData = pie(data);
2048
+ const total = d3.sum(data, d => d.value);
2049
+ const arcs = g.selectAll('.arc')
2050
+ .data(pieData)
2051
+ .enter().append('g')
2052
+ .attr('class', 'arc');
2053
+ arcs.append('path')
2054
+ .attr('d', d => arc(d))
2055
+ .attr('fill', (d, i) => d.data.color || DEFAULT_COLORS[i % DEFAULT_COLORS.length])
2056
+ .attr('stroke', 'var(--bg-primary)')
2057
+ .attr('stroke-width', 2)
2058
+ .style('cursor', 'pointer')
2059
+ .on('mouseover', function (event, d) {
2060
+ d3.select(this)
2061
+ .transition()
2062
+ .duration(200)
2063
+ .style('opacity', 0.8);
2064
+ tooltip.transition()
2065
+ .duration(200)
2066
+ .style('opacity', 1);
2067
+ const percentage = ((d.data.value / total) * 100).toFixed(1);
2068
+ tooltip.html(`
2069
+ <div><strong>${d.data.name}</strong></div>
2070
+ <div>Value: ${d.data.value.toLocaleString()}</div>
2071
+ <div>${percentage}% of total</div>
2072
+ `)
2073
+ .style('left', (event.pageX + 10) + 'px')
2074
+ .style('top', (event.pageY - 28) + 'px');
2075
+ })
2076
+ .on('mouseout', function () {
2077
+ d3.select(this)
2078
+ .transition()
2079
+ .duration(200)
2080
+ .style('opacity', 1);
2081
+ tooltip.transition()
2082
+ .duration(500)
2083
+ .style('opacity', 0);
2084
+ });
2085
+ arcs.filter(d => (d.endAngle - d.startAngle) > 0.3)
2086
+ .append('text')
2087
+ .attr('transform', d => `translate(${labelArc.centroid(d)})`)
2088
+ .attr('text-anchor', 'middle')
2089
+ .attr('alignment-baseline', 'middle')
2090
+ .attr('font-size', '12px')
2091
+ .attr('fill', 'var(--text-inverse)')
2092
+ .attr('font-weight', 'var(--font-semibold)')
2093
+ .style('pointer-events', 'none')
2094
+ .text(d => {
2095
+ const percentage = ((d.data.value / total) * 100);
2096
+ return percentage > 5 ? `${percentage.toFixed(1)}%` : '';
2097
+ });
2098
+ return () => {
2099
+ tooltip.remove();
2100
+ };
2101
+ }, [data, width, height, radius]);
2102
+ return (jsxs("div", { className: styles.container, children: [jsx("h3", { className: styles.title, children: title }), jsxs("div", { className: styles.chartContainer, children: [jsx("svg", { ref: svgRef, width: width, height: height, className: styles.chart }), showLegend && (jsx("div", { className: styles.legend, children: data.map((item, index) => (jsxs("div", { className: styles.legendItem, children: [jsx("span", { className: styles.legendColor, style: {
2103
+ backgroundColor: item.color || DEFAULT_COLORS[index % DEFAULT_COLORS.length]
2104
+ } }), jsx("span", { className: styles.legendLabel, children: item.name }), jsx("span", { className: styles.legendValue, children: item.value.toLocaleString() })] }, item.name))) }))] })] }));
2105
+ };
158
2106
 
159
- export { Button, Card, Input, Modal, ThemeProvider, useTheme };
2107
+ export { ArrayInput, BooleansHeatmap, Button, Card, Checkbox, DateInput, EditFAB, MoodChart, Navbar, PieChart, QuantifiableHabitsChart, SearchBar, SearchableDropdown, SelectInput, SleepChart, SunburstChart, TextArea, TextInput, ThemeProvider, ThemeSwitcher, TimeInput, Toggle, useTheme$1 as useTheme };
160
2108
  //# sourceMappingURL=index.esm.js.map