@spear-ai/spectral 1.9.1 → 1.10.1

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 (241) hide show
  1. package/README.md +6 -5
  2. package/dist/.js +113 -239
  3. package/dist/Accordion-CDXdSAST.js +363 -0
  4. package/dist/Accordion.js +3 -498
  5. package/dist/Alert/AlertBase.js +69 -152
  6. package/dist/Alert.js +58 -106
  7. package/dist/AnimatePresence-D-9jXfgI.js +178 -0
  8. package/dist/App.js +6 -6
  9. package/dist/Avatar.js +83 -65
  10. package/dist/Badge.d.ts +1 -3
  11. package/dist/Badge.js +21 -25
  12. package/dist/Button.js +102 -178
  13. package/dist/ButtonGroup/ButtonGroupButton.js +38 -40
  14. package/dist/ButtonGroup.js +55 -59
  15. package/dist/ButtonIcon.js +58 -134
  16. package/dist/Calendar-s4lyijkn.js +3109 -0
  17. package/dist/Checkbox/CheckboxBase.js +94 -126
  18. package/dist/Checkbox.d.ts +1 -1
  19. package/dist/Checkbox.js +40 -105
  20. package/dist/Combobox/ComboboxBase.js +2 -79
  21. package/dist/Combobox.js +106 -172
  22. package/dist/ComboboxBase-D8Nf4xC-.js +491 -0
  23. package/dist/ControlGroup/ControlGroupSelect.d.ts +1 -1
  24. package/dist/ControlGroup/ControlGroupSelect.js +85 -101
  25. package/dist/ControlGroup.js +45 -48
  26. package/dist/DataCard/Card.js +37 -12
  27. package/dist/DataCard.d.ts +1 -1
  28. package/dist/DataCard.js +36 -16
  29. package/dist/DateTimePicker/Calendar.js +2 -2967
  30. package/dist/DateTimePicker/DateTimeDisplayInput.d.ts +1 -1
  31. package/dist/DateTimePicker/DateTimeDisplayInput.js +379 -275
  32. package/dist/DateTimePicker/DateTimeInput.d.ts +1 -1
  33. package/dist/DateTimePicker/DateTimeInput.js +133 -141
  34. package/dist/DateTimePicker/DateTimeUtils.js +2 -2193
  35. package/dist/DateTimePicker/TimePeriodSelect.d.ts +1 -1
  36. package/dist/DateTimePicker/TimePeriodSelect.js +45 -20
  37. package/dist/DateTimePicker/TimePicker.d.ts +1 -1
  38. package/dist/DateTimePicker/TimePicker.js +76 -60
  39. package/dist/DateTimePicker.d.ts +2 -2
  40. package/dist/DateTimePicker.js +87 -205
  41. package/dist/DateTimeUtils-DVvG6H-p.js +2098 -0
  42. package/dist/Dialog.js +74 -74
  43. package/dist/Drawer.js +67 -37
  44. package/dist/HoverCard-CYDsIiVK.js +201 -0
  45. package/dist/HoverCard.d.ts +1 -1
  46. package/dist/HoverCard.js +2 -218
  47. package/dist/Icons/AnalyzeIcon.js +50 -57
  48. package/dist/Icons/AnnotationsIcon.js +20 -15
  49. package/dist/Icons/ApprovedIcon.js +26 -18
  50. package/dist/Icons/ArrowDownIcon.js +20 -6
  51. package/dist/Icons/ArrowUpIcon.js +20 -6
  52. package/dist/Icons/BoxToolIcon.js +17 -12
  53. package/dist/Icons/CalendarIcon.js +43 -20
  54. package/dist/Icons/CheckCircleIcon.js +26 -10
  55. package/dist/Icons/CheckSquareIcon.js +26 -10
  56. package/dist/Icons/CheckmarkIcon.js +22 -9
  57. package/dist/Icons/ChevronDownIcon.js +22 -9
  58. package/dist/Icons/ChevronUpIcon.js +22 -9
  59. package/dist/Icons/ClockIcon.js +26 -18
  60. package/dist/Icons/CloseCircleIcon.js +26 -10
  61. package/dist/Icons/CloseIcon.js +18 -9
  62. package/dist/Icons/DashboardIcon.js +36 -10
  63. package/dist/Icons/DatabaseIcon.js +36 -19
  64. package/dist/Icons/DeleteIcon.js +36 -19
  65. package/dist/Icons/DurationIcon.js +57 -22
  66. package/dist/Icons/EditIcon.js +26 -27
  67. package/dist/Icons/EmailIcon.js +26 -10
  68. package/dist/Icons/EraserIcon.js +41 -25
  69. package/dist/Icons/ErrorIcon.js +27 -11
  70. package/dist/Icons/EyeClosedIcon.js +29 -13
  71. package/dist/Icons/EyeClosedIcon2.js +27 -11
  72. package/dist/Icons/EyeOpenIcon.js +22 -9
  73. package/dist/Icons/FileDownloadIcon.js +43 -20
  74. package/dist/Icons/GoToFirstIcon.js +26 -9
  75. package/dist/Icons/GoToLastIcon.js +26 -9
  76. package/dist/Icons/HarmonicCursorsIcon.js +23 -9
  77. package/dist/Icons/IconBase.d.ts +3 -3
  78. package/dist/Icons/IconBase.js +49 -66
  79. package/dist/Icons/InfoIcon.js +36 -10
  80. package/dist/Icons/KeyboardIcon.js +26 -27
  81. package/dist/Icons/LabelIcon.js +19 -14
  82. package/dist/Icons/LassoIcon.js +36 -28
  83. package/dist/Icons/LineToolIcon.js +48 -39
  84. package/dist/Icons/LiveViewIcon.js +50 -12
  85. package/dist/Icons/LoaderIcon.js +67 -27
  86. package/dist/Icons/LocationIcon.js +26 -27
  87. package/dist/Icons/LogoutIcon.js +20 -15
  88. package/dist/Icons/MeasureIcon.js +78 -25
  89. package/dist/Icons/MessagesIcon.js +33 -18
  90. package/dist/Icons/MetadataIcon.js +20 -15
  91. package/dist/Icons/MinusIcon.d.ts +1 -1
  92. package/dist/Icons/MinusIcon.js +18 -6
  93. package/dist/Icons/OntologyIcon.js +87 -71
  94. package/dist/Icons/PanelIconClose.js +28 -10
  95. package/dist/Icons/PanelIconOpen.js +28 -10
  96. package/dist/Icons/PlayIcon.js +20 -6
  97. package/dist/Icons/PlusIcon.js +20 -14
  98. package/dist/Icons/PolygonIcon.js +50 -39
  99. package/dist/Icons/ProgressCheckIcon.d.ts +5 -0
  100. package/dist/Icons/ProgressCheckIcon.js +58 -0
  101. package/dist/Icons/ResetIcon.js +17 -12
  102. package/dist/Icons/ReviewedIcon.js +36 -19
  103. package/dist/Icons/ScissorsIcon.js +22 -17
  104. package/dist/Icons/SearchIcon.js +26 -9
  105. package/dist/Icons/SettingsIcon.js +26 -27
  106. package/dist/Icons/SortAscendingIcon.js +50 -12
  107. package/dist/Icons/SortAtoZIcon.js +50 -12
  108. package/dist/Icons/SortDescendingIcon.js +50 -12
  109. package/dist/Icons/SortZtoAIcon.js +50 -12
  110. package/dist/Icons/StackIcon.js +26 -9
  111. package/dist/Icons/StarIcon.js +20 -6
  112. package/dist/Icons/TrashIcon.js +17 -12
  113. package/dist/Icons/UndoIcon.js +20 -15
  114. package/dist/Icons/User2Icon.js +26 -10
  115. package/dist/Icons/UserIcon.js +19 -14
  116. package/dist/Icons/WarningIcon.js +19 -14
  117. package/dist/Icons/ZoomAllIcon.js +71 -15
  118. package/dist/Icons/ZoomXIcon.js +36 -10
  119. package/dist/Icons/ZoomYIcon.js +36 -10
  120. package/dist/Icons/index.d.ts +1 -0
  121. package/dist/Icons.js +68 -136
  122. package/dist/IconsAnimated/PanelLeftCloseIcon.js +66 -36
  123. package/dist/IconsAnimated/PanelLeftOpenIcon.js +66 -36
  124. package/dist/IconsAnimated.js +3 -6
  125. package/dist/Input/InputUtils.js +51 -52
  126. package/dist/Input.js +132 -185
  127. package/dist/InputNumeric.d.ts +14 -0
  128. package/dist/InputNumeric.js +137 -0
  129. package/dist/InputOTP-cVn5Bzyp.js +461 -0
  130. package/dist/InputOTP.js +2 -382
  131. package/dist/Kbd.d.ts +1 -1
  132. package/dist/Kbd.js +182 -86
  133. package/dist/Label.js +12 -14
  134. package/dist/MultiSelect/MultiSelectBase.js +331 -403
  135. package/dist/MultiSelect.d.ts +1 -1
  136. package/dist/MultiSelect.js +23 -23
  137. package/dist/Popover.js +28 -32
  138. package/dist/RadioButton.d.ts +17 -0
  139. package/dist/RadioButton.js +33 -0
  140. package/dist/RadioButtonGroup/RadioButtonGroupBase.d.ts +3 -1
  141. package/dist/RadioButtonGroup/RadioButtonGroupBase.js +49 -46
  142. package/dist/RadioButtonGroup.d.ts +1 -1
  143. package/dist/RadioButtonGroup.js +11 -8
  144. package/dist/RadioGroup-w_q6RGEK.js +447 -0
  145. package/dist/RadioGroup.js +2 -505
  146. package/dist/Select.js +163 -186
  147. package/dist/Separator.js +16 -19
  148. package/dist/Skeleton.js +10 -6
  149. package/dist/Slider-BzzZT3Zm.js +490 -0
  150. package/dist/Slider.js +2 -562
  151. package/dist/SpectralProvider.js +8 -5
  152. package/dist/Switch/SwitchBase.js +91 -95
  153. package/dist/Switch-CVzRJ-0n.js +126 -0
  154. package/dist/Switch.d.ts +1 -1
  155. package/dist/Switch.js +2 -134
  156. package/dist/Tabs/TabsBase.js +242 -250
  157. package/dist/Tabs/tabsUtils.js +65 -73
  158. package/dist/Tabs.d.ts +1 -1
  159. package/dist/Tabs.js +73 -103
  160. package/dist/Textarea/TextareaUtils.js +35 -46
  161. package/dist/Textarea.js +83 -160
  162. package/dist/Toast-9zqXxKKO.js +711 -0
  163. package/dist/Toast.js +2 -885
  164. package/dist/Toggle/ToggleBase.js +46 -56
  165. package/dist/Toggle.d.ts +1 -1
  166. package/dist/Toggle.js +52 -62
  167. package/dist/ToggleGroup/ToggleGroupBase.js +128 -104
  168. package/dist/ToggleGroup.d.ts +1 -1
  169. package/dist/ToggleGroup.js +52 -63
  170. package/dist/Tooltip-D1K8kY1y.js +389 -0
  171. package/dist/Tooltip.js +2 -365
  172. package/dist/Tray.js +174 -217
  173. package/dist/chunk-h9knIhTc.js +20 -0
  174. package/dist/clsx-jM1GlMvB.js +16 -0
  175. package/dist/dist-3Af8168y.js +913 -0
  176. package/dist/dist-7HRQ5IKN.js +249 -0
  177. package/dist/dist-B2k1iWFp.js +129 -0
  178. package/dist/dist-B4FgboI8.js +122 -0
  179. package/dist/dist-B4g6zpUF.js +33 -0
  180. package/dist/dist-B9tup-4O.js +216 -0
  181. package/dist/dist-BK1K0g9W.js +29 -0
  182. package/dist/dist-Bfjk-jx9.js +28 -0
  183. package/dist/dist-Bft31cJh.js +65 -0
  184. package/dist/dist-BtdmHAzK.js +190 -0
  185. package/dist/dist-C0Hifjgh.js +1287 -0
  186. package/dist/dist-CGzgmYB9.js +68 -0
  187. package/dist/dist-ClmepHp4.js +10 -0
  188. package/dist/dist-D8Wb_MX9.js +6 -0
  189. package/dist/dist-Dtvmk11N.js +12 -0
  190. package/dist/dist-fW81qjVl.js +677 -0
  191. package/dist/dist-s1uWaZYZ.js +11 -0
  192. package/dist/es2015-YHaMV-St.js +701 -0
  193. package/dist/hooks/useAccordionAutoScroll.js +66 -67
  194. package/dist/hooks/useControllableState.js +14 -13
  195. package/dist/hooks/useConvertToOklch.d.ts +3 -0
  196. package/dist/hooks/useConvertToOklch.d.ts.map +1 -0
  197. package/dist/hooks/useConvertToOklch.js +51 -0
  198. package/dist/hooks/useTheme.js +21 -17
  199. package/dist/index.d.ts +3 -1
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/main.js +18954 -27224
  202. package/dist/primitives/button.js +39 -41
  203. package/dist/primitives/input-group.js +57 -73
  204. package/dist/primitives/input.js +11 -20
  205. package/dist/primitives/popover.js +34 -28
  206. package/dist/primitives/select.js +70 -138
  207. package/dist/primitives/slot.js +32 -31
  208. package/dist/primitives/textarea.js +10 -16
  209. package/dist/proxy-Dn10Pl_g.js +4920 -0
  210. package/dist/styles/main.css +2 -1
  211. package/dist/styles/spectral.css +1 -1
  212. package/dist/twUtils-VNWgstKL.js +1673 -0
  213. package/dist/use-animation-CBUDycyW.js +57 -0
  214. package/dist/utils/constants.js +4 -4
  215. package/dist/utils/formFieldUtils.js +136 -148
  216. package/dist/utils/sharedUtils.js +26 -7
  217. package/dist/utils/twUtils.js +2 -2919
  218. package/package.json +24 -28
  219. package/dist/ComboboxBase-CxNxYtdT.js +0 -408
  220. package/dist/clsx-OuTLNxxd.js +0 -16
  221. package/dist/index-0ioNhtNM.js +0 -10
  222. package/dist/index-6oYKCvIn.js +0 -677
  223. package/dist/index-BFOf48AQ.js +0 -69
  224. package/dist/index-BZPx6jYI.js +0 -8
  225. package/dist/index-BlHU_t18.js +0 -142
  226. package/dist/index-Bm1RbF6w.js +0 -1037
  227. package/dist/index-Bv2OIg5P.js +0 -225
  228. package/dist/index-CKEI0pDv.js +0 -56
  229. package/dist/index-CM_hWgfC.js +0 -32
  230. package/dist/index-C_YVr64u.js +0 -1538
  231. package/dist/index-Cl8VeY0o.js +0 -149
  232. package/dist/index-CwSyIPrv.js +0 -13
  233. package/dist/index-D29mdTf5.js +0 -34
  234. package/dist/index-DEYs15GP.js +0 -66
  235. package/dist/index-Dc0No4pV.js +0 -233
  236. package/dist/index-T6XEa11q.js +0 -822
  237. package/dist/index-pBCLb6Gr.js +0 -240
  238. package/dist/index-psiVrsnE.js +0 -27
  239. package/dist/index-rKs9bXHr.js +0 -6
  240. package/dist/proxy-CO_-Vget.js +0 -4975
  241. package/dist/use-animation-DhEPRwZ3.js +0 -62
@@ -1,75 +1,67 @@
1
1
  import "react";
2
- const s = (e) => {
3
- const n = {
4
- left: 0,
5
- top: 0,
6
- width: 0,
7
- height: 0,
8
- orientation: "horizontal",
9
- isEnclosed: !1
10
- };
11
- if (!e.current) return n;
12
- const t = e.current.querySelector("[data-state='active']"), r = e.current.closest("[data-orientation]")?.getAttribute("data-orientation") ?? "horizontal", o = e.current.closest(".enclosed") !== null;
13
- if (!t) return { ...n, orientation: r, isEnclosed: o };
14
- const a = t.getBoundingClientRect(), i = e.current.getBoundingClientRect();
15
- return {
16
- height: a.height,
17
- isEnclosed: o,
18
- left: a.left - i.left,
19
- orientation: r,
20
- top: a.top - i.top,
21
- width: a.width
22
- };
23
- }, u = (e) => e.orientation === "horizontal" ? {
24
- left: `${e.left}px`,
25
- width: `${e.width}px`
2
+ //#region src/components/Tabs/tabsUtils.ts
3
+ var e = (e) => {
4
+ let t = {
5
+ left: 0,
6
+ top: 0,
7
+ width: 0,
8
+ height: 0,
9
+ orientation: "horizontal",
10
+ isEnclosed: !1
11
+ };
12
+ if (!e.current) return t;
13
+ let n = e.current.querySelector("[data-state='active']"), r = e.current.closest("[data-orientation]")?.getAttribute("data-orientation") ?? "horizontal", i = e.current.closest(".enclosed") !== null;
14
+ if (!n) return {
15
+ ...t,
16
+ orientation: r,
17
+ isEnclosed: i
18
+ };
19
+ let a = n.getBoundingClientRect(), o = e.current.getBoundingClientRect();
20
+ return {
21
+ height: a.height,
22
+ isEnclosed: i,
23
+ left: a.left - o.left,
24
+ orientation: r,
25
+ top: a.top - o.top,
26
+ width: a.width
27
+ };
28
+ }, t = (e) => e.orientation === "horizontal" ? {
29
+ left: `${e.left}px`,
30
+ width: `${e.width}px`
26
31
  } : {
27
- height: `${e.height}px`,
28
- top: `${e.top}px`
29
- }, d = (e, n) => {
30
- let t = null;
31
- const r = (...o) => {
32
- t !== null && clearTimeout(t), t = setTimeout(() => {
33
- e(...o);
34
- }, n);
35
- };
36
- return r.cancel = () => {
37
- t !== null && (clearTimeout(t), t = null);
38
- }, r;
39
- }, f = () => {
40
- if (typeof window > "u") return !1;
41
- try {
42
- return window.matchMedia("(prefers-reduced-motion: reduce)").matches;
43
- } catch {
44
- return !1;
45
- }
46
- }, h = (e = "tabs") => typeof crypto < "u" && crypto.randomUUID ? `${e}-${crypto.randomUUID()}` : `${e}-${Math.random().toString(36).substring(2, 11)}-${Date.now().toString(36)}`, c = (e, n) => {
47
- if (typeof e != "object" || e === null)
48
- return console.warn(`Tabs: Tab at index ${n} must be an object, received: ${typeof e}`), !1;
49
- const t = e;
50
- return !("key" in t) || typeof t.key != "string" || t.key.length === 0 ? (console.warn(`Tabs: Tab at index ${n} must have a non-empty string 'key' property`), !1) : "label" in t ? "children" in t ? !0 : (console.warn(`Tabs: Tab at index ${n} must have a 'children' property`), !1) : (console.warn(`Tabs: Tab at index ${n} must have a 'label' property`), !1);
51
- }, p = (e) => {
52
- if (!Array.isArray(e) || e.length === 0)
53
- return console.warn("Tabs: tabValues must be a non-empty array"), !1;
54
- const n = /* @__PURE__ */ new Set();
55
- for (let t = 0; t < e.length; t += 1) {
56
- const r = e[t];
57
- if (!c(r, t))
58
- return !1;
59
- const o = r;
60
- if (n.has(o.key))
61
- return console.warn(`Tabs: Duplicate key found: '${o.key}' at index ${t}`), !1;
62
- n.add(o.key);
63
- }
64
- return !0;
65
- }, y = (e) => e.map((n) => n.key), g = (e, n) => e.find((t) => t.key === n);
66
- export {
67
- s as calculateIndicatorStyle,
68
- d as debounce,
69
- g as findTabByKey,
70
- h as generateId,
71
- u as getIndicatorPosition,
72
- y as getTabKeys,
73
- f as prefersReducedMotion,
74
- p as validateTabValues
75
- };
32
+ height: `${e.height}px`,
33
+ top: `${e.top}px`
34
+ }, n = (e, t) => {
35
+ let n = null, r = (...r) => {
36
+ n !== null && clearTimeout(n), n = setTimeout(() => {
37
+ e(...r);
38
+ }, t);
39
+ };
40
+ return r.cancel = () => {
41
+ n !== null && (clearTimeout(n), n = null);
42
+ }, r;
43
+ }, r = () => {
44
+ if (typeof window > "u") return !1;
45
+ try {
46
+ return window.matchMedia("(prefers-reduced-motion: reduce)").matches;
47
+ } catch {
48
+ return !1;
49
+ }
50
+ }, i = (e = "tabs") => typeof crypto < "u" && crypto.randomUUID ? `${e}-${crypto.randomUUID()}` : `${e}-${Math.random().toString(36).substring(2, 11)}-${Date.now().toString(36)}`, a = (e, t) => {
51
+ if (typeof e != "object" || !e) return console.warn(`Tabs: Tab at index ${t} must be an object, received: ${typeof e}`), !1;
52
+ let n = e;
53
+ return !("key" in n) || typeof n.key != "string" || n.key.length === 0 ? (console.warn(`Tabs: Tab at index ${t} must have a non-empty string 'key' property`), !1) : "label" in n ? "children" in n ? !0 : (console.warn(`Tabs: Tab at index ${t} must have a 'children' property`), !1) : (console.warn(`Tabs: Tab at index ${t} must have a 'label' property`), !1);
54
+ }, o = (e) => {
55
+ if (!Array.isArray(e) || e.length === 0) return console.warn("Tabs: tabValues must be a non-empty array"), !1;
56
+ let t = /* @__PURE__ */ new Set();
57
+ for (let n = 0; n < e.length; n += 1) {
58
+ let r = e[n];
59
+ if (!a(r, n)) return !1;
60
+ let i = r;
61
+ if (t.has(i.key)) return console.warn(`Tabs: Duplicate key found: '${i.key}' at index ${n}`), !1;
62
+ t.add(i.key);
63
+ }
64
+ return !0;
65
+ }, s = (e) => e.map((e) => e.key), c = (e, t) => e.find((e) => e.key === t);
66
+ //#endregion
67
+ export { e as calculateIndicatorStyle, n as debounce, c as findTabByKey, i as generateId, t as getIndicatorPosition, s as getTabKeys, r as prefersReducedMotion, o as validateTabValues };
package/dist/Tabs.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { TabsBase, TabsContent, TabsContentContainer, TabsList, TabsTrigger, TabsBaseProps } from './TabsBase';
2
1
  import { ReactNode } from 'react';
2
+ import { TabsBase, TabsContent, TabsContentContainer, TabsList, TabsTrigger, TabsBaseProps } from './TabsBase';
3
3
  export interface TabValue {
4
4
  children: ReactNode;
5
5
  disabled?: boolean | undefined;
package/dist/Tabs.js CHANGED
@@ -1,106 +1,76 @@
1
1
  import "./styles/main.css";
2
- import { jsx as a, jsxs as C } from "react/jsx-runtime";
3
- import { TabsBase as j, TabsList as E, TabsTrigger as K, TabsContentContainer as V, TabsContent as $ } from "./Tabs/TabsBase.js";
4
- import { validateTabValues as B, getTabKeys as I } from "./Tabs/tabsUtils.js";
5
- import { cn as s } from "./utils/twUtils.js";
2
+ import { t as e } from "./twUtils-VNWgstKL.js";
3
+ import { getTabKeys as t, validateTabValues as n } from "./Tabs/tabsUtils.js";
4
+ import { TabsBase as r, TabsContent as i, TabsContentContainer as a, TabsList as o, TabsTrigger as s } from "./Tabs/TabsBase.js";
6
5
  import "react";
7
- const F = ({
8
- activationMode: p = "automatic",
9
- ariaLabel: h,
10
- className: m,
11
- hideContent: y = !1,
12
- loading: g = !1,
13
- onBeforeChange: v,
14
- onError: f,
15
- onValueChange: x,
16
- openOnLoad: c,
17
- orientation: t = "horizontal",
18
- rightSlot: w,
19
- tabValues: T = [],
20
- value: o,
21
- variant: l = "default",
22
- ...N
23
- }) => {
24
- if (g)
25
- return /* @__PURE__ */ a("div", { className: "text-text-secondary relative flex w-full flex-col p-4 text-center", role: "status", "aria-live": "polite", children: /* @__PURE__ */ a("p", { children: "Loading tabs…" }) });
26
- const d = T.filter((e) => e.key !== void 0), n = o !== void 0;
27
- if (!B(d)) {
28
- const e = new Error("Invalid tabValues provided to Tabs component");
29
- return f?.(e), /* @__PURE__ */ a("div", { className: "relative flex w-full flex-col p-4 text-center text-gray-500", role: "alert", "aria-live": "polite", children: /* @__PURE__ */ a("p", { children: "No valid tabs provided" }) });
30
- }
31
- const r = I(d);
32
- let b;
33
- n && (r.includes(o) ? b = o : (console.warn(`Tabs: value '${o}' is not a valid tab key, falling back to first tab`), b = r[0]));
34
- let i;
35
- if (!n && (i = c ?? r[0], c && !r.includes(c) && (console.warn(`Tabs: openOnLoad value '${c}' is not a valid tab key`), i = r[0]), !i)) {
36
- const e = new Error("No valid default tab available");
37
- return f?.(e), /* @__PURE__ */ a("div", { className: "text-text-secondary relative flex w-full flex-col p-4 text-center", role: "alert", "aria-live": "polite", children: /* @__PURE__ */ a("p", { children: "Unable to render tabs" }) });
38
- }
39
- const k = async (e) => {
40
- if (v && x) {
41
- const z = n ? b ?? "" : i ?? "";
42
- try {
43
- if (await v(e, z) === !1) return;
44
- } catch (u) {
45
- f?.(u instanceof Error ? u : new Error("Before change callback failed"));
46
- return;
47
- }
48
- }
49
- x?.(e);
50
- };
51
- return /* @__PURE__ */ a("div", { className: "relative flex w-full flex-col", children: /* @__PURE__ */ C(
52
- j,
53
- {
54
- "aria-label": h,
55
- className: s("relative w-full data-[orientation=vertical]:flex", l, m),
56
- ...n ? { value: b } : { defaultValue: i },
57
- orientation: t,
58
- activationMode: p,
59
- onValueChange: k,
60
- ...N,
61
- children: [
62
- /* @__PURE__ */ a(
63
- E,
64
- {
65
- className: s(
66
- "inline-flex w-full items-center justify-between",
67
- t === "horizontal" && l === "default" && "border-tabs-border border-b",
68
- t === "vertical" && l === "default" && "border-tabs-border relative m-0 h-auto w-auto flex-col items-stretch border-r py-1",
69
- t === "horizontal" && l === "enclosed" && "bg-tabs-group-bg relative rounded-lg border-0 p-1",
70
- t === "vertical" && l === "enclosed" && "bg-tabs-group-bg w-auto flex-col rounded-lg border-0 p-1"
71
- ),
72
- rightSlot: w,
73
- children: d.map((e) => /* @__PURE__ */ a(
74
- K,
75
- {
76
- value: e.key,
77
- disabled: e.disabled,
78
- "aria-label": e["aria-label"],
79
- "aria-describedby": e["aria-describedby"],
80
- className: s(
81
- "relative font-semibold whitespace-nowrap transition-all duration-500 ease-in-out focus:outline-none focus-visible:outline-none",
82
- t === "horizontal" && l === "default" && "text-text-primary hover:text-accent hover:bg-tabs-bg--hover px-4 py-2",
83
- t === "vertical" && l === "default" && "text-text-primary data-[state=active]:text-accent hover:text-accent hover:bg-tabs-bg--hover flex h-10 items-center px-4 py-2",
84
- t === "horizontal" && l === "enclosed" && "text-text-primary data-[state=active]:text-accent hover:text-accent hover:bg-tabs-bg--hover z-[1] inline-flex items-center justify-center px-4 py-2",
85
- t === "vertical" && l === "enclosed" && "text-text-primary data-[state=active]:text-accent hover:text-accent hover:bg-tabs-bg--hover z-1 px-4 py-2",
86
- "disabled:hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent"
87
- ),
88
- children: e.label
89
- },
90
- e.key
91
- ))
92
- }
93
- ),
94
- !y && /* @__PURE__ */ a(V, { className: s(t === "vertical" && "flex-1"), children: d.map((e) => /* @__PURE__ */ a($, { value: e.key, className: s("focus-visible:outline-accent text-text-primary focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2", t === "horizontal" && "pb-4", t === "vertical" && "px-4 py-2"), children: e.children }, e.key)) })
95
- ]
96
- }
97
- ) });
98
- };
99
- export {
100
- F as Tabs,
101
- $ as TabsContent,
102
- V as TabsContentContainer,
103
- E as TabsList,
104
- j as TabsRoot,
105
- K as TabsTrigger
6
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
7
+ //#region src/components/Tabs/Tabs.tsx
8
+ var u = ({ activationMode: u = "automatic", ariaLabel: d, className: f, hideContent: p = !1, loading: m = !1, onBeforeChange: h, onError: g, onValueChange: _, openOnLoad: v, orientation: y = "horizontal", rightSlot: b, tabValues: x = [], value: S, variant: C = "default", ...w }) => {
9
+ if (m) return /* @__PURE__ */ c("div", {
10
+ className: "p-4 relative flex w-full flex-col text-center text-text-secondary",
11
+ role: "status",
12
+ "aria-live": "polite",
13
+ children: /* @__PURE__ */ c("p", { children: "Loading tabs…" })
14
+ });
15
+ let T = x.filter((e) => e.key !== void 0), E = S !== void 0;
16
+ if (!n(T)) return g?.(/* @__PURE__ */ Error("Invalid tabValues provided to Tabs component")), /* @__PURE__ */ c("div", {
17
+ className: "p-4 text-gray-500 relative flex w-full flex-col text-center",
18
+ role: "alert",
19
+ "aria-live": "polite",
20
+ children: /* @__PURE__ */ c("p", { children: "No valid tabs provided" })
21
+ });
22
+ let D = t(T), O;
23
+ E && (D.includes(S) ? O = S : (console.warn(`Tabs: value '${S}' is not a valid tab key, falling back to first tab`), O = D[0]));
24
+ let k;
25
+ if (!E && (k = v ?? D[0], v && !D.includes(v) && (console.warn(`Tabs: openOnLoad value '${v}' is not a valid tab key`), k = D[0]), !k)) return g?.(/* @__PURE__ */ Error("No valid default tab available")), /* @__PURE__ */ c("div", {
26
+ className: "p-4 relative flex w-full flex-col text-center text-text-secondary",
27
+ role: "alert",
28
+ "aria-live": "polite",
29
+ children: /* @__PURE__ */ c("p", { children: "Unable to render tabs" })
30
+ });
31
+ let A = async (e) => {
32
+ if (h && _) {
33
+ let t = E ? O ?? "" : k ?? "";
34
+ try {
35
+ if (await h(e, t) === !1) return;
36
+ } catch (e) {
37
+ g?.(e instanceof Error ? e : /* @__PURE__ */ Error("Before change callback failed"));
38
+ return;
39
+ }
40
+ }
41
+ _?.(e);
42
+ };
43
+ return /* @__PURE__ */ c("div", {
44
+ className: "relative flex w-full flex-col",
45
+ children: /* @__PURE__ */ l(r, {
46
+ "aria-label": d,
47
+ className: e("relative w-full data-[orientation=vertical]:flex", C, f),
48
+ ...E ? { value: O } : { defaultValue: k },
49
+ orientation: y,
50
+ activationMode: u,
51
+ onValueChange: A,
52
+ ...w,
53
+ children: [/* @__PURE__ */ c(o, {
54
+ className: e("inline-flex w-full items-center justify-between", y === "horizontal" && C === "default" && "border-b border-tabs-border", y === "vertical" && C === "default" && "m-0 py-1 relative h-auto w-auto flex-col items-stretch border-r border-tabs-border", y === "horizontal" && C === "enclosed" && "rounded-lg p-1 relative border-0 bg-tabs-group-bg", y === "vertical" && C === "enclosed" && "rounded-lg p-1 w-auto flex-col border-0 bg-tabs-group-bg"),
55
+ rightSlot: b,
56
+ children: T.map((t) => /* @__PURE__ */ c(s, {
57
+ value: t.key,
58
+ disabled: t.disabled,
59
+ "aria-label": t["aria-label"],
60
+ "aria-describedby": t["aria-describedby"],
61
+ className: e("font-semibold relative whitespace-nowrap transition-all duration-500 ease-in-out focus:outline-none focus-visible:outline-none", y === "horizontal" && C === "default" && "py-2 px-4 hover:bg-tabs-bg--hover text-text-primary hover:text-accent", y === "vertical" && C === "default" && "h-10 px-4 py-2 hover:bg-tabs-bg--hover flex items-center text-text-primary hover:text-accent data-[state=active]:text-accent", y === "horizontal" && C === "enclosed" && "px-4 py-2 hover:bg-tabs-bg--hover z-[1] inline-flex items-center justify-center text-text-primary hover:text-accent data-[state=active]:text-accent", y === "vertical" && C === "enclosed" && "px-4 py-2 hover:bg-tabs-bg--hover z-1 text-text-primary hover:text-accent data-[state=active]:text-accent", "disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent disabled:hover:text-text-primary"),
62
+ children: t.label
63
+ }, t.key))
64
+ }), !p && /* @__PURE__ */ c(a, {
65
+ className: e(y === "vertical" && "flex-1"),
66
+ children: T.map((t) => /* @__PURE__ */ c(i, {
67
+ value: t.key,
68
+ className: e("text-text-primary focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent", y === "horizontal" && "pb-4", y === "vertical" && "py-2 px-4"),
69
+ children: t.children
70
+ }, t.key))
71
+ })]
72
+ })
73
+ });
106
74
  };
75
+ //#endregion
76
+ export { u as Tabs, i as TabsContent, a as TabsContentContainer, o as TabsList, r as TabsRoot, s as TabsTrigger };
@@ -1,47 +1,36 @@
1
1
  "use client";
2
- import { useCallback as i } from "react";
3
- const T = (t, a, s) => {
4
- const n = t.target.value;
5
- n.length <= a && s?.(n);
6
- }, V = (t, a, s, n) => {
7
- const r = t.clipboardData.getData("text"), c = s || "", o = t.currentTarget, l = o.selectionStart || 0, u = o.selectionEnd || 0, e = c.substring(0, l), d = c.substring(u);
8
- if ((e + r + d).length > a) {
9
- t.preventDefault();
10
- const g = u - l, h = a - c.length + g, p = r.substring(0, Math.max(0, h)), f = e + p + d;
11
- n?.(f), setTimeout(() => {
12
- const b = l + p.length;
13
- o.setSelectionRange(b, b);
14
- }, 0);
15
- }
16
- }, P = ({ maxLength: t, value: a, onChange: s, onFocus: n, onBlur: r }) => {
17
- const c = i(
18
- (e) => {
19
- n?.(e);
20
- },
21
- [n]
22
- ), o = i(
23
- (e) => {
24
- r?.(e);
25
- },
26
- [r]
27
- ), l = i(
28
- (e) => {
29
- T(e, t, s);
30
- },
31
- [t, s]
32
- ), u = i(
33
- (e) => {
34
- V(e, t, a, s);
35
- },
36
- [a, t, s]
37
- );
38
- return {
39
- handleFocus: c,
40
- handleBlur: o,
41
- handleChange: l,
42
- handlePaste: u
43
- };
44
- };
45
- export {
46
- P as useTextarea
47
- };
2
+ import { useCallback as e } from "react";
3
+ //#region src/components/Textarea/TextareaUtils.tsx
4
+ var t = (e, t, n) => {
5
+ let r = e.target.value;
6
+ r.length <= t && n?.(r);
7
+ }, n = (e, t, n, r) => {
8
+ let i = e.clipboardData.getData("text"), a = n || "", o = e.currentTarget, s = o.selectionStart || 0, c = o.selectionEnd || 0, l = a.substring(0, s), u = a.substring(c);
9
+ if ((l + i + u).length > t) {
10
+ e.preventDefault();
11
+ let n = c - s, d = t - a.length + n, f = i.substring(0, Math.max(0, d)), p = l + f + u;
12
+ r?.(p), setTimeout(() => {
13
+ let e = s + f.length;
14
+ o.setSelectionRange(e, e);
15
+ }, 0);
16
+ }
17
+ }, r = ({ maxLength: r, value: i, onChange: a, onFocus: o, onBlur: s }) => ({
18
+ handleFocus: e((e) => {
19
+ o?.(e);
20
+ }, [o]),
21
+ handleBlur: e((e) => {
22
+ s?.(e);
23
+ }, [s]),
24
+ handleChange: e((e) => {
25
+ t(e, r, a);
26
+ }, [r, a]),
27
+ handlePaste: e((e) => {
28
+ n(e, r, i, a);
29
+ }, [
30
+ i,
31
+ r,
32
+ a
33
+ ])
34
+ });
35
+ //#endregion
36
+ export { r as useTextarea };