@spear-ai/spectral 1.11.0 → 1.11.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 (198) hide show
  1. package/dist/.js +3 -2
  2. package/dist/ButtonIcon.js +2 -2
  3. package/dist/Checkbox/CheckboxBase.js +1 -1
  4. package/dist/Combobox/ComboboxBase.js +1 -1
  5. package/dist/Combobox.d.ts +5 -2
  6. package/dist/Combobox.js +97 -69
  7. package/dist/{ComboboxBase-Dn8Lz9mG.js → ComboboxBase-qX-mQhT6.js} +2 -2
  8. package/dist/ControlGroup/ControlGroupSelect.d.ts +3 -2
  9. package/dist/ControlGroup/ControlGroupSelect.js +79 -71
  10. package/dist/DateTimePicker/DateTimeDisplayInput.js +1 -1
  11. package/dist/DateTimePicker.js +1 -1
  12. package/dist/Icons/AnalyzeIcon.d.ts +1 -1
  13. package/dist/Icons/AnalyzeIcon.js +5 -6
  14. package/dist/Icons/AnnotationsIcon.d.ts +1 -1
  15. package/dist/Icons/AnnotationsIcon.js +5 -6
  16. package/dist/Icons/ApprovedIcon.d.ts +1 -1
  17. package/dist/Icons/ApprovedIcon.js +5 -6
  18. package/dist/Icons/ArrowDownIcon.d.ts +1 -1
  19. package/dist/Icons/ArrowDownIcon.js +5 -6
  20. package/dist/Icons/ArrowUpIcon.d.ts +1 -1
  21. package/dist/Icons/ArrowUpIcon.js +5 -6
  22. package/dist/Icons/BoxToolIcon.d.ts +1 -1
  23. package/dist/Icons/BoxToolIcon.js +5 -6
  24. package/dist/Icons/CalendarIcon.d.ts +1 -1
  25. package/dist/Icons/CalendarIcon.js +5 -6
  26. package/dist/Icons/CheckCircleIcon.d.ts +1 -1
  27. package/dist/Icons/CheckCircleIcon.js +5 -6
  28. package/dist/Icons/CheckSquareIcon.d.ts +1 -1
  29. package/dist/Icons/CheckSquareIcon.js +5 -6
  30. package/dist/Icons/CheckmarkIcon.d.ts +1 -1
  31. package/dist/Icons/CheckmarkIcon.js +6 -7
  32. package/dist/Icons/ChevronDownIcon.d.ts +1 -1
  33. package/dist/Icons/ChevronDownIcon.js +5 -6
  34. package/dist/Icons/ChevronUpIcon.d.ts +1 -1
  35. package/dist/Icons/ChevronUpIcon.js +5 -6
  36. package/dist/Icons/ClockIcon.d.ts +1 -1
  37. package/dist/Icons/ClockIcon.js +5 -6
  38. package/dist/Icons/CloseCircleIcon.d.ts +1 -1
  39. package/dist/Icons/CloseCircleIcon.js +5 -6
  40. package/dist/Icons/CloseIcon.d.ts +1 -1
  41. package/dist/Icons/CloseIcon.js +5 -6
  42. package/dist/Icons/Crosshairs2Icon.d.ts +1 -1
  43. package/dist/Icons/Crosshairs2Icon.js +5 -6
  44. package/dist/Icons/CrosshairsIcon.d.ts +1 -1
  45. package/dist/Icons/CrosshairsIcon.js +5 -6
  46. package/dist/Icons/DashboardIcon.d.ts +1 -1
  47. package/dist/Icons/DashboardIcon.js +5 -6
  48. package/dist/Icons/DatabaseIcon.d.ts +1 -1
  49. package/dist/Icons/DatabaseIcon.js +5 -6
  50. package/dist/Icons/DeleteIcon.d.ts +1 -1
  51. package/dist/Icons/DeleteIcon.js +5 -6
  52. package/dist/Icons/DurationIcon.d.ts +1 -1
  53. package/dist/Icons/DurationIcon.js +5 -6
  54. package/dist/Icons/EditIcon.d.ts +1 -1
  55. package/dist/Icons/EditIcon.js +5 -6
  56. package/dist/Icons/EmailIcon.d.ts +1 -1
  57. package/dist/Icons/EmailIcon.js +5 -6
  58. package/dist/Icons/EraserIcon.d.ts +1 -1
  59. package/dist/Icons/EraserIcon.js +8 -9
  60. package/dist/Icons/ErrorIcon.d.ts +1 -1
  61. package/dist/Icons/ErrorIcon.js +5 -6
  62. package/dist/Icons/EyeClosedIcon.d.ts +1 -1
  63. package/dist/Icons/EyeClosedIcon.js +5 -6
  64. package/dist/Icons/EyeClosedIcon2.d.ts +1 -1
  65. package/dist/Icons/EyeClosedIcon2.js +5 -6
  66. package/dist/Icons/EyeOpenIcon.d.ts +1 -1
  67. package/dist/Icons/EyeOpenIcon.js +5 -6
  68. package/dist/Icons/FileDownloadIcon.d.ts +1 -1
  69. package/dist/Icons/FileDownloadIcon.js +5 -6
  70. package/dist/Icons/GoToFirstIcon.d.ts +1 -1
  71. package/dist/Icons/GoToFirstIcon.js +5 -6
  72. package/dist/Icons/GoToLastIcon.d.ts +1 -1
  73. package/dist/Icons/GoToLastIcon.js +5 -6
  74. package/dist/Icons/HarmonicCursorsIcon.d.ts +1 -1
  75. package/dist/Icons/HarmonicCursorsIcon.js +5 -6
  76. package/dist/Icons/IconBase.d.ts +2 -1
  77. package/dist/Icons/IconBase.js +26 -26
  78. package/dist/Icons/InfoIcon.d.ts +1 -1
  79. package/dist/Icons/InfoIcon.js +5 -6
  80. package/dist/Icons/KeyboardIcon.d.ts +1 -1
  81. package/dist/Icons/KeyboardIcon.js +5 -6
  82. package/dist/Icons/LabelIcon.d.ts +1 -1
  83. package/dist/Icons/LabelIcon.js +5 -6
  84. package/dist/Icons/LassoIcon.d.ts +1 -1
  85. package/dist/Icons/LassoIcon.js +5 -6
  86. package/dist/Icons/LineToolIcon.d.ts +1 -1
  87. package/dist/Icons/LineToolIcon.js +5 -6
  88. package/dist/Icons/LiveViewIcon.d.ts +1 -1
  89. package/dist/Icons/LiveViewIcon.js +5 -6
  90. package/dist/Icons/LoaderIcon.d.ts +1 -1
  91. package/dist/Icons/LoaderIcon.js +10 -11
  92. package/dist/Icons/LocationIcon.d.ts +1 -1
  93. package/dist/Icons/LocationIcon.js +5 -6
  94. package/dist/Icons/LogoutIcon.d.ts +1 -1
  95. package/dist/Icons/LogoutIcon.js +5 -6
  96. package/dist/Icons/MaximizeIcon.d.ts +1 -1
  97. package/dist/Icons/MaximizeIcon.js +5 -6
  98. package/dist/Icons/MeasureIcon.d.ts +1 -1
  99. package/dist/Icons/MeasureIcon.js +5 -6
  100. package/dist/Icons/MessagesIcon.d.ts +1 -1
  101. package/dist/Icons/MessagesIcon.js +5 -6
  102. package/dist/Icons/MetadataIcon.d.ts +1 -1
  103. package/dist/Icons/MetadataIcon.js +5 -6
  104. package/dist/Icons/MinimizeIcon.d.ts +1 -1
  105. package/dist/Icons/MinimizeIcon.js +5 -6
  106. package/dist/Icons/MinusIcon.d.ts +1 -1
  107. package/dist/Icons/MinusIcon.js +5 -6
  108. package/dist/Icons/OntologyIcon.d.ts +1 -1
  109. package/dist/Icons/OntologyIcon.js +5 -6
  110. package/dist/Icons/PanelIconClose.d.ts +1 -1
  111. package/dist/Icons/PanelIconClose.js +5 -6
  112. package/dist/Icons/PanelIconOpen.d.ts +1 -1
  113. package/dist/Icons/PanelIconOpen.js +5 -6
  114. package/dist/Icons/PauseIcon.d.ts +1 -1
  115. package/dist/Icons/PauseIcon.js +5 -6
  116. package/dist/Icons/PlayIcon.d.ts +1 -1
  117. package/dist/Icons/PlayIcon.js +5 -6
  118. package/dist/Icons/PlusIcon.d.ts +1 -1
  119. package/dist/Icons/PlusIcon.js +5 -6
  120. package/dist/Icons/PolygonIcon.d.ts +1 -1
  121. package/dist/Icons/PolygonIcon.js +5 -6
  122. package/dist/Icons/PrinterIcon.d.ts +1 -1
  123. package/dist/Icons/PrinterIcon.js +5 -6
  124. package/dist/Icons/ProgressCheckIcon.d.ts +1 -1
  125. package/dist/Icons/ProgressCheckIcon.js +5 -6
  126. package/dist/Icons/ResetIcon.d.ts +1 -1
  127. package/dist/Icons/ResetIcon.js +5 -6
  128. package/dist/Icons/ReviewedIcon.d.ts +1 -1
  129. package/dist/Icons/ReviewedIcon.js +5 -6
  130. package/dist/Icons/ScissorsIcon.d.ts +1 -1
  131. package/dist/Icons/ScissorsIcon.js +5 -6
  132. package/dist/Icons/SearchIcon.d.ts +1 -1
  133. package/dist/Icons/SearchIcon.js +5 -6
  134. package/dist/Icons/SettingsIcon.d.ts +1 -1
  135. package/dist/Icons/SettingsIcon.js +5 -6
  136. package/dist/Icons/SortAscendingIcon.d.ts +1 -1
  137. package/dist/Icons/SortAscendingIcon.js +5 -6
  138. package/dist/Icons/SortAtoZIcon.d.ts +1 -1
  139. package/dist/Icons/SortAtoZIcon.js +5 -6
  140. package/dist/Icons/SortDescendingIcon.d.ts +1 -1
  141. package/dist/Icons/SortDescendingIcon.js +5 -6
  142. package/dist/Icons/SortZtoAIcon.d.ts +1 -1
  143. package/dist/Icons/SortZtoAIcon.js +5 -6
  144. package/dist/Icons/SparklesIcon.d.ts +1 -1
  145. package/dist/Icons/SparklesIcon.js +5 -6
  146. package/dist/Icons/StackIcon.d.ts +1 -1
  147. package/dist/Icons/StackIcon.js +5 -6
  148. package/dist/Icons/StarIcon.d.ts +1 -1
  149. package/dist/Icons/StarIcon.js +5 -6
  150. package/dist/Icons/TrashIcon.d.ts +1 -1
  151. package/dist/Icons/TrashIcon.js +5 -6
  152. package/dist/Icons/UndoIcon.d.ts +1 -1
  153. package/dist/Icons/UndoIcon.js +5 -6
  154. package/dist/Icons/UploadIcon.d.ts +1 -1
  155. package/dist/Icons/UploadIcon.js +5 -6
  156. package/dist/Icons/User2Icon.d.ts +1 -1
  157. package/dist/Icons/User2Icon.js +5 -6
  158. package/dist/Icons/UserIcon.d.ts +1 -1
  159. package/dist/Icons/UserIcon.js +5 -6
  160. package/dist/Icons/WarningIcon.d.ts +1 -1
  161. package/dist/Icons/WarningIcon.js +5 -6
  162. package/dist/Icons/ZoomAllIcon.d.ts +1 -1
  163. package/dist/Icons/ZoomAllIcon.js +5 -6
  164. package/dist/Icons/ZoomXIcon.d.ts +1 -1
  165. package/dist/Icons/ZoomXIcon.js +5 -6
  166. package/dist/Icons/ZoomYIcon.d.ts +1 -1
  167. package/dist/Icons/ZoomYIcon.js +5 -6
  168. package/dist/Input.d.ts +2 -1
  169. package/dist/Input.js +111 -92
  170. package/dist/InputNumeric.d.ts +1 -1
  171. package/dist/InputNumeric.js +70 -65
  172. package/dist/MultiSelect/MultiSelectBase.d.ts +6 -3
  173. package/dist/MultiSelect/MultiSelectBase.js +126 -119
  174. package/dist/MultiSelect.d.ts +3 -2
  175. package/dist/MultiSelect.js +12 -11
  176. package/dist/Select.d.ts +2 -1
  177. package/dist/Select.js +83 -77
  178. package/dist/Switch/SwitchBase.js +1 -1
  179. package/dist/Textarea.d.ts +1 -1
  180. package/dist/Textarea.js +54 -49
  181. package/dist/Toggle/ToggleBase.js +1 -1
  182. package/dist/ToggleGroup/ToggleGroupBase.js +5 -2
  183. package/dist/hooks/useControllableState.d.ts +6 -1
  184. package/dist/hooks/useControllableState.d.ts.map +1 -1
  185. package/dist/hooks/useControllableState.js +2 -2
  186. package/dist/hooks/useUncontrolledState.d.ts +9 -0
  187. package/dist/hooks/useUncontrolledState.d.ts.map +1 -0
  188. package/dist/hooks/useUncontrolledState.js +16 -0
  189. package/dist/index.d.ts +1 -0
  190. package/dist/index.d.ts.map +1 -1
  191. package/dist/primitives/select.d.ts +6 -1
  192. package/dist/primitives/select.d.ts.map +1 -1
  193. package/dist/primitives/select.js +85 -36
  194. package/dist/styles/spectral.css +2 -2
  195. package/dist/utils/formFieldUtils.d.ts +11 -3
  196. package/dist/utils/formFieldUtils.d.ts.map +1 -1
  197. package/dist/utils/formFieldUtils.js +31 -16
  198. package/package.json +1 -1
package/dist/Input.js CHANGED
@@ -2,22 +2,24 @@
2
2
  import "./styles/main.css";
3
3
  import { CheckCircleIcon as e } from "./Icons/CheckCircleIcon.js";
4
4
  import { CloseCircleIcon as t } from "./Icons/CloseCircleIcon.js";
5
- import { ErrorIcon as n } from "./Icons/ErrorIcon.js";
6
- import { EyeClosedIcon as r } from "./Icons/EyeClosedIcon.js";
7
- import { EyeOpenIcon as i } from "./Icons/EyeOpenIcon.js";
8
- import { LoaderIcon as a } from "./Icons/LoaderIcon.js";
9
- import { t as o } from "./twUtils-VNWgstKL.js";
10
- import { ErrorMessage as s, getAriaProps as c, getFormFieldCSSProperties as l, getInputClasses as u, useFormFieldId as d, useFormFieldState as f } from "./utils/formFieldUtils.js";
11
- import { Label as ee } from "./Label.js";
12
- import { useClearOnFocus as te, usePasswordVisibility as p, usePrefixWidth as m } from "./Input/InputUtils.js";
13
- import { useCallback as h, useRef as g } from "react";
14
- import { jsx as _, jsxs as v } from "react/jsx-runtime";
5
+ import { ErrorIcon as ee } from "./Icons/ErrorIcon.js";
6
+ import { EyeClosedIcon as te } from "./Icons/EyeClosedIcon.js";
7
+ import { EyeOpenIcon as n } from "./Icons/EyeOpenIcon.js";
8
+ import { LoaderIcon as ne } from "./Icons/LoaderIcon.js";
9
+ import { WarningIcon as re } from "./Icons/WarningIcon.js";
10
+ import { t as r } from "./twUtils-VNWgstKL.js";
11
+ import { ErrorMessage as i, WarningMessage as ie, getAriaProps as a, getFormFieldCSSProperties as o, getInputClasses as s, useFormFieldId as c, useFormFieldState as l } from "./utils/formFieldUtils.js";
12
+ import { useUncontrolledState as u } from "./hooks/useUncontrolledState.js";
13
+ import { Label as d } from "./Label.js";
14
+ import { useClearOnFocus as f, usePasswordVisibility as p, usePrefixWidth as m } from "./Input/InputUtils.js";
15
+ import { useCallback as h, useRef as ae } from "react";
16
+ import { jsx as g, jsxs as _ } from "react/jsx-runtime";
15
17
  //#region src/components/Input/Input.tsx
16
- var y = (...e) => (t) => {
18
+ var oe = (...e) => (t) => {
17
19
  e.forEach((e) => {
18
20
  e && (typeof e == "function" ? e(t) : e.current = t);
19
21
  });
20
- }, ne = (e) => ({
22
+ }, se = (e) => ({
21
23
  date: "off",
22
24
  email: "email",
23
25
  number: "off",
@@ -26,110 +28,127 @@ var y = (...e) => (t) => {
26
28
  text: "off",
27
29
  url: "url",
28
30
  "datetime-local": "off"
29
- })[e] || "off", b = ({ className: b, clearOnFocus: x = !1, disabled: S, endIcon: C, errorMessage: w, id: re, label: T, labelClassName: E, name: D, onBlur: O, onChange: k, onFocus: A, placeholder: j, prefix: M, ref: N, required: P, showClearButton: F = !1, startIcon: I, state: L = "default", suppressHydrationWarning: R = !0, type: z = "text", value: B = "", "aria-label": V, "aria-describedby": H, ...U }) => {
30
- let W = d(re, D), G = `${W}-error`, { isDisabled: K, isLoading: q, isInvalid: J } = f(S, L), Y = c(L, H, P, G), X = g(null), ie = y(N, X), { isVisible: Z, toggleVisibility: ae, inputType: oe } = p(), { prefixWidth: se, prefixRef: ce } = m(M), { handleFocus: Q } = te(x, k ? (e) => k(e.target.value) : void 0), le = h((e) => {
31
- O?.(e);
32
- }, [O]), ue = h((e) => {
33
- Q(e, A);
34
- }, [Q, A]), de = h((e) => {
31
+ })[e] || "off", v = (v) => {
32
+ let { className: ce, clearOnFocus: le = !1, defaultValue: y, disabled: ue, endIcon: b, errorMessage: x, id: S, label: C, labelClassName: w, name: T, onBlur: E, onChange: D, onFocus: O, placeholder: k, prefix: A, ref: j, required: M, showClearButton: N = !1, startIcon: P, state: F = "default", suppressHydrationWarning: I = !0, type: L = "text", value: R, warningMessage: z, "aria-label": B, "aria-describedby": V, ...H } = v, U = c(S, T), W = `${U}-error`, G = `${U}-warning`, { isDisabled: K, isLoading: de, isInvalid: fe } = l(ue, F), pe = a(F, V, M, F === "error" ? W : F === "warning" && z ? G : void 0), [q, J] = u({
33
+ value: R,
34
+ defaultValue: typeof y == "string" ? y : y == null ? "" : String(y),
35
+ onChange: D
36
+ }), Y = ae(null), me = oe(j, Y), { isVisible: X, toggleVisibility: he, inputType: ge } = p(), { prefixWidth: _e, prefixRef: ve } = m(A), { handleFocus: Z } = f(le, (e) => J(e.target.value)), ye = h((e) => {
37
+ E?.(e);
38
+ }, [E]), be = h((e) => {
39
+ Z(e, O);
40
+ }, [Z, O]), xe = h((e) => {
35
41
  let t = e.target.value;
36
- k?.(t);
37
- }, [k]), fe = h(() => {
38
- let e = X.current;
39
- e && (e.value = "", e.dispatchEvent(new Event("input", { bubbles: !0 })), e.focus());
40
- }, []), $ = F && B.length > 0, pe = () => {
41
- let o = "absolute right-4 top-1/2 -translate-y-1/2 text-input-icon hover:text-input-icon--hover focus:outline-none cursor-pointer", s = {
42
- password: () => /* @__PURE__ */ _("button", {
43
- "aria-controls": W,
44
- "aria-label": Z ? `Hide ${T ?? "password"}` : `Show ${T ?? "password"}`,
45
- "aria-pressed": Z,
46
- className: o,
42
+ J(t);
43
+ }, [J]), Se = h(() => {
44
+ let e = Y.current;
45
+ e && (J(""), e.focus());
46
+ }, [J]), Q = N && q.length > 0, Ce = () => {
47
+ let r = "absolute right-4 top-1/2 -translate-y-1/2 text-input-icon hover:text-input-icon--hover focus:outline-none cursor-pointer", i = {
48
+ password: () => /* @__PURE__ */ g("button", {
49
+ "aria-controls": U,
50
+ "aria-label": X ? `Hide ${C ?? "password"}` : `Show ${C ?? "password"}`,
51
+ "aria-pressed": X,
52
+ className: r,
47
53
  "data-testid": "spectral-input-password-toggle",
48
- onClick: ae,
54
+ onClick: he,
49
55
  type: "button",
50
- children: _(Z ? r : i, { size: 22 })
56
+ children: g(X ? te : n, { size: 22 })
51
57
  }),
52
- clear: () => /* @__PURE__ */ _("button", {
53
- "aria-label": String(`Clear ${T ?? "input"}`),
54
- className: o,
58
+ clear: () => /* @__PURE__ */ g("button", {
59
+ "aria-label": String(`Clear ${C ?? "input"}`),
60
+ className: r,
55
61
  "data-testid": "spectral-input-clear-button",
56
- onClick: fe,
62
+ onClick: Se,
57
63
  type: "button",
58
- children: /* @__PURE__ */ _(t, { size: 24 })
64
+ children: /* @__PURE__ */ g(t, { size: 24 })
59
65
  }),
60
- loading: () => /* @__PURE__ */ _("div", {
66
+ loading: () => /* @__PURE__ */ g("div", {
61
67
  className: "right-4 text-input-icon absolute top-1/2 -translate-y-1/2",
62
68
  "data-testid": "spectral-input-loading-icon",
63
- children: /* @__PURE__ */ _(a, { size: 24 })
69
+ children: /* @__PURE__ */ g(ne, { size: 24 })
64
70
  }),
65
- error: () => /* @__PURE__ */ _("div", {
71
+ error: () => /* @__PURE__ */ g("div", {
66
72
  className: "right-4 absolute top-1/2 -translate-y-1/2 text-danger-400",
67
73
  "data-testid": "spectral-input-error-icon",
68
- children: /* @__PURE__ */ _(n, { size: 24 })
74
+ children: /* @__PURE__ */ g(ee, { size: 24 })
69
75
  }),
70
- success: () => /* @__PURE__ */ _("div", {
76
+ success: () => /* @__PURE__ */ g("div", {
71
77
  className: "right-4 absolute top-1/2 -translate-y-1/2 text-success-400",
72
78
  "data-testid": "spectral-input-success-icon",
73
- children: /* @__PURE__ */ _(e, { size: 24 })
79
+ children: /* @__PURE__ */ g(e, { size: 24 })
80
+ }),
81
+ warning: () => /* @__PURE__ */ g("div", {
82
+ className: "right-4 absolute top-1/2 -translate-y-1/2 text-warning-400",
83
+ "data-testid": "spectral-input-warning-icon",
84
+ children: /* @__PURE__ */ g(re, { size: 24 })
74
85
  })
75
86
  };
76
- return C ? /* @__PURE__ */ _("div", {
87
+ return b ? /* @__PURE__ */ g("div", {
77
88
  className: "right-4 text-input-icon absolute top-1/2 -translate-y-1/2",
78
- children: C
79
- }) : z === "password" ? s.password() : $ ? s.clear() : q ? s.loading() : L === "success" ? s.success() : L === "error" ? s.error() : null;
80
- }, me = () => I || null, he = z === "number" || z === "date" || z === "datetime-local", ge = o(u(L, b), "[text-indent:var(--prefix-width)]", $ && "pr-10", he && "tabular-nums"), _e = o("inset-y-0 left-4 text-base pointer-events-none absolute flex items-center text-input-text-prefix opacity-100 peer-disabled:opacity-50");
81
- return /* @__PURE__ */ v("div", {
89
+ children: b
90
+ }) : L === "password" ? i.password() : Q ? i.clear() : de ? i.loading() : F === "success" ? i.success() : F === "warning" ? i.warning() : F === "error" ? i.error() : null;
91
+ }, $ = () => P || null, we = L === "number" || L === "date" || L === "datetime-local", Te = r(s(F, ce), "[text-indent:var(--prefix-width)]", Q && "pr-10", we && "tabular-nums"), Ee = r("inset-y-0 left-4 text-base pointer-events-none absolute flex items-center text-input-text-prefix opacity-100 peer-disabled:opacity-50");
92
+ return /* @__PURE__ */ _("div", {
82
93
  className: "space-y-1.5 w-full",
83
94
  "data-testid": "spectral-input-container",
84
- children: [T && /* @__PURE__ */ _(ee, {
85
- className: o("mb-2 block", E, K && "cursor-not-allowed text-input-text--disabled placeholder:text-input-text-placeholder"),
95
+ children: [C && /* @__PURE__ */ g(d, {
96
+ className: r("mb-2 block", w, K && "cursor-not-allowed text-input-text--disabled placeholder:text-input-text-placeholder"),
86
97
  "data-testid": "spectral-input-label",
87
- htmlFor: W,
88
- children: T
89
- }), /* @__PURE__ */ v("div", {
98
+ htmlFor: U,
99
+ children: C
100
+ }), /* @__PURE__ */ _("div", {
90
101
  className: "relative",
91
102
  "data-testid": "spectral-input-wrapper",
92
- children: [/* @__PURE__ */ v("div", {
93
- className: "relative",
94
- children: [
95
- me(),
96
- M && /* @__PURE__ */ _("span", {
97
- ref: ce,
98
- className: _e,
99
- children: M
100
- }),
101
- /* @__PURE__ */ _("input", {
102
- "aria-label": V ?? T,
103
- autoComplete: ne(z),
104
- className: ge,
105
- "data-state": L,
106
- "data-testid": "spectral-input",
107
- disabled: K,
108
- id: W,
109
- name: D,
110
- onBlur: le,
111
- onChange: de,
112
- onFocus: ue,
113
- placeholder: j ?? T,
114
- ref: ie,
115
- required: P,
116
- style: l({ "--prefix-width": M ? `${se}px` : "0" }),
117
- suppressHydrationWarning: R,
118
- type: z === "password" ? oe : z,
119
- value: B,
120
- ...Y,
121
- ...U
122
- }),
123
- pe()
124
- ]
125
- }), J && w && /* @__PURE__ */ _(s, {
126
- dataTestId: "spectral-input-error-message",
127
- id: G,
128
- message: w
129
- })]
103
+ children: [
104
+ /* @__PURE__ */ _("div", {
105
+ className: "relative",
106
+ children: [
107
+ $(),
108
+ A && /* @__PURE__ */ g("span", {
109
+ ref: ve,
110
+ className: Ee,
111
+ children: A
112
+ }),
113
+ /* @__PURE__ */ g("input", {
114
+ "aria-label": B ?? C,
115
+ autoComplete: se(L),
116
+ className: Te,
117
+ "data-state": F,
118
+ "data-testid": "spectral-input",
119
+ disabled: K,
120
+ id: U,
121
+ name: T,
122
+ onBlur: ye,
123
+ onChange: xe,
124
+ onFocus: be,
125
+ placeholder: k ?? C,
126
+ ref: me,
127
+ required: M,
128
+ style: o({ "--prefix-width": A ? `${_e}px` : "0" }),
129
+ suppressHydrationWarning: I,
130
+ type: L === "password" ? ge : L,
131
+ value: q,
132
+ ...pe,
133
+ ...H
134
+ }),
135
+ Ce()
136
+ ]
137
+ }),
138
+ fe && x && /* @__PURE__ */ g(i, {
139
+ dataTestId: "spectral-input-error-message",
140
+ id: W,
141
+ message: x
142
+ }),
143
+ F === "warning" && z && /* @__PURE__ */ g(ie, {
144
+ dataTestId: "spectral-input-warning-message",
145
+ id: G,
146
+ message: z
147
+ })
148
+ ]
130
149
  })]
131
150
  });
132
151
  };
133
- b.displayName = "Input";
152
+ v.displayName = "Input";
134
153
  //#endregion
135
- export { b as Input };
154
+ export { v as Input };
@@ -8,7 +8,7 @@ export type InputNumericProps = Omit<InputProps, 'inputMode' | 'onChange' | 'pat
8
8
  value?: string;
9
9
  };
10
10
  export declare const InputNumeric: {
11
- ({ allowDecimal, allowNegative, className, locale, max, min, onChange, onKeyDown, onPaste, step, value, ...props }: InputNumericProps): ReactElement;
11
+ ({ allowDecimal, allowNegative, className, defaultValue, locale, max, min, onChange, onKeyDown, onPaste, step, value: valueProp, ...props }: InputNumericProps): ReactElement;
12
12
  displayName: string;
13
13
  };
14
14
  //# sourceMappingURL=InputNumeric.d.ts.map
@@ -1,15 +1,16 @@
1
1
  "use client";
2
2
  import "./styles/main.css";
3
3
  import { t as e } from "./twUtils-VNWgstKL.js";
4
- import { Input as t } from "./Input.js";
5
- import { useCallback as n } from "react";
6
- import { jsx as r } from "react/jsx-runtime";
4
+ import { useUncontrolledState as t } from "./hooks/useUncontrolledState.js";
5
+ import { Input as n } from "./Input.js";
6
+ import { useCallback as r } from "react";
7
+ import { jsx as i } from "react/jsx-runtime";
7
8
  //#region src/components/InputNumeric/InputNumeric.tsx
8
- var i = /^\d$/, a = new Set([
9
+ var a = /^\d$/, o = new Set([
9
10
  "e",
10
11
  "E",
11
12
  "+"
12
- ]), o = new Set([
13
+ ]), s = new Set([
13
14
  "Backspace",
14
15
  "Delete",
15
16
  "ArrowLeft",
@@ -21,117 +22,121 @@ var i = /^\d$/, a = new Set([
21
22
  "Tab",
22
23
  "Enter",
23
24
  "Escape"
24
- ]), s = (e) => {
25
+ ]), c = (e) => {
25
26
  try {
26
27
  return new Intl.NumberFormat(e).formatToParts(1.1).find((e) => e.type === "decimal")?.value ?? ".";
27
28
  } catch {
28
29
  return ".";
29
30
  }
30
- }, c = (e, t) => t === "." ? e : e.replaceAll(t, "."), l = (e, t, n, r) => {
31
+ }, l = (e, t) => t === "." ? e : e.replaceAll(t, "."), u = (e, t, n, r) => {
31
32
  if (!e) return "";
32
- let i = c(e, r).replace(/[^\d.-]/g, "");
33
+ let i = l(e, r).replace(/[^\d.-]/g, "");
33
34
  if (n ? (i = i.replace(/(?!^)-/g, ""), i.startsWith("--") && (i = `-${i.replace(/-/g, "")}`)) : i = i.replace(/-/g, ""), !t) i = i.replace(/\./g, "");
34
35
  else {
35
36
  let e = i.indexOf(".");
36
37
  e >= 0 && (i = `${i.slice(0, e + 1)}${i.slice(e + 1).replace(/\./g, "")}`);
37
38
  }
38
39
  return i;
39
- }, u = (e) => {
40
+ }, d = (e) => {
40
41
  if (e.selectionStart === null || e.selectionEnd === null) return !e.value.includes(".");
41
42
  let t = e.value.slice(e.selectionStart, e.selectionEnd);
42
43
  return !e.value.includes(".") || t.includes(".");
43
- }, d = (e) => {
44
+ }, f = (e) => {
44
45
  if (e.selectionStart === null || e.selectionEnd === null) return e.value.length === 0;
45
46
  let t = e.selectionStart === 0, n = e.value.slice(e.selectionStart, e.selectionEnd);
46
47
  return t && (!e.value.includes("-") || n.includes("-"));
47
- }, f = (e) => {
48
+ }, p = (e) => {
48
49
  if (e == null || e === "") return;
49
50
  let t = typeof e == "number" ? e : Number.parseFloat(e);
50
51
  return Number.isFinite(t) ? t : void 0;
51
- }, p = (e) => {
52
+ }, m = (e) => {
52
53
  let t = e.toString();
53
54
  return t.includes(".") ? t.split(".")[1]?.length ?? 0 : 0;
54
- }, m = (e, t) => {
55
+ }, h = (e, t) => {
55
56
  if (t <= 0) return e;
56
57
  let n = 10 ** t;
57
58
  return Math.round(e * n) / n;
58
- }, h = ({ allowDecimal: h = !0, allowNegative: g = !1, className: _, locale: v, max: y, min: b, onChange: x, onKeyDown: S, onPaste: C, step: w, value: T = "", ...E }) => {
59
- let D = s(v), O = f(b), k = f(y), A = f(w), j = A && A > 0 ? A : 1, M = O ?? (g ? void 0 : 0), N = n((e) => {
60
- if (S?.(e), !(e.defaultPrevented || e.nativeEvent.isComposing) && !(e.metaKey || e.ctrlKey || e.altKey)) {
59
+ }, g = ({ allowDecimal: g = !0, allowNegative: _ = !1, className: v, defaultValue: y = "", locale: b, max: x, min: S, onChange: C, onKeyDown: w, onPaste: T, step: E, value: D, ...O }) => {
60
+ let [k, A] = t({
61
+ value: D,
62
+ defaultValue: y,
63
+ onChange: C
64
+ }), j = c(b), M = p(S), N = p(x), P = p(E), F = P && P > 0 ? P : 1, I = M ?? (_ ? void 0 : 0), L = r((e) => {
65
+ if (w?.(e), !(e.defaultPrevented || e.nativeEvent.isComposing) && !(e.metaKey || e.ctrlKey || e.altKey)) {
61
66
  if (e.key === "ArrowUp" || e.key === "ArrowDown") {
62
67
  e.preventDefault();
63
- let t = e.key === "ArrowUp" ? 1 : -1, n = c(T, D), r = Number.parseFloat(n), i = (Number.isFinite(r) ? r : M ?? 0) + t * j;
64
- M !== void 0 && (i = Math.max(M, i)), k !== void 0 && (i = Math.min(k, i)), h || (i = Math.trunc(i));
65
- let a = h ? p(j) : 0, o = m(i, a), s = Object.is(o, -0) ? 0 : o, u = a > 0 ? s.toFixed(a).replace(/\.?0+$/, "") : s.toString();
66
- x?.(l(u, h, g, D));
68
+ let t = e.key === "ArrowUp" ? 1 : -1, n = l(k, j), r = Number.parseFloat(n), i = (Number.isFinite(r) ? r : I ?? 0) + t * F;
69
+ I !== void 0 && (i = Math.max(I, i)), N !== void 0 && (i = Math.min(N, i)), g || (i = Math.trunc(i));
70
+ let a = g ? m(F) : 0, o = h(i, a), s = Object.is(o, -0) ? 0 : o;
71
+ A(u(a > 0 ? s.toFixed(a).replace(/\.?0+$/, "") : s.toString(), g, _, j));
67
72
  return;
68
73
  }
69
- if (!o.has(e.key) && !i.test(e.key)) {
70
- if (a.has(e.key)) {
74
+ if (!s.has(e.key) && !a.test(e.key)) {
75
+ if (o.has(e.key)) {
71
76
  e.preventDefault();
72
77
  return;
73
78
  }
74
- if (e.key === "." || e.key === D) {
75
- (!h || !u(e.currentTarget)) && e.preventDefault();
79
+ if (e.key === "." || e.key === j) {
80
+ (!g || !d(e.currentTarget)) && e.preventDefault();
76
81
  return;
77
82
  }
78
83
  if (e.key === "-") {
79
- (!g || !d(e.currentTarget)) && e.preventDefault();
84
+ (!_ || !f(e.currentTarget)) && e.preventDefault();
80
85
  return;
81
86
  }
82
87
  e.preventDefault();
83
88
  }
84
89
  }
85
90
  }, [
86
- h,
87
91
  g,
88
- D,
89
- M,
90
- x,
91
- S,
92
- k,
92
+ _,
93
93
  j,
94
- T
95
- ]), P = n((e) => {
96
- if (C?.(e), e.defaultPrevented) return;
97
- let t = e.clipboardData.getData("text"), n = l(t, h, g, D);
98
- if (c(t, D) === n) return;
94
+ I,
95
+ w,
96
+ N,
97
+ A,
98
+ F,
99
+ k
100
+ ]), R = r((e) => {
101
+ if (T?.(e), e.defaultPrevented) return;
102
+ let t = e.clipboardData.getData("text"), n = u(t, g, _, j);
103
+ if (l(t, j) === n) return;
99
104
  e.preventDefault();
100
- let r = e.currentTarget, i = r.selectionStart ?? r.value.length, a = r.selectionEnd ?? r.value.length, o = l(`${r.value.slice(0, i)}${n}${r.value.slice(a)}`, h, g, D);
101
- x?.(o);
105
+ let r = e.currentTarget, i = r.selectionStart ?? r.value.length, a = r.selectionEnd ?? r.value.length;
106
+ A(u(`${r.value.slice(0, i)}${n}${r.value.slice(a)}`, g, _, j));
102
107
  }, [
103
- h,
104
108
  g,
105
- D,
106
- x,
107
- C
108
- ]), F = n((e) => {
109
- x?.(l(e, h, g, D));
109
+ _,
110
+ j,
111
+ T,
112
+ A
113
+ ]), z = r((e) => {
114
+ A(u(e, g, _, j));
110
115
  }, [
111
- h,
112
116
  g,
113
- D,
114
- x
115
- ]), I = h ? "decimal" : "numeric", L = h ? "[0-9]*[.]?[0-9]*" : "[0-9]*", R = c(T, D), z = R === "" || R === "-" || R === "." ? void 0 : Number.parseFloat(R);
116
- return /* @__PURE__ */ r(t, {
117
- ...E,
118
- "aria-valuemax": k,
119
- "aria-valuemin": M,
120
- "aria-valuenow": Number.isFinite(z) ? z : void 0,
121
- className: e("tabular-nums", _),
122
- inputMode: I,
123
- max: y,
124
- min: b,
125
- onChange: F,
126
- onKeyDown: N,
127
- onPaste: P,
128
- pattern: L,
117
+ _,
118
+ j,
119
+ A
120
+ ]), B = g ? "decimal" : "numeric", V = g ? "[0-9]*[.]?[0-9]*" : "[0-9]*", H = l(k, j), U = H === "" || H === "-" || H === "." ? void 0 : Number.parseFloat(H);
121
+ return /* @__PURE__ */ i(n, {
122
+ ...O,
123
+ "aria-valuemax": N,
124
+ "aria-valuemin": I,
125
+ "aria-valuenow": Number.isFinite(U) ? U : void 0,
126
+ className: e("tabular-nums", v),
127
+ inputMode: B,
128
+ max: x,
129
+ min: S,
130
+ onChange: z,
131
+ onKeyDown: L,
132
+ onPaste: R,
133
+ pattern: V,
129
134
  role: "spinbutton",
130
- step: w,
135
+ step: E,
131
136
  type: "text",
132
- value: T
137
+ value: k
133
138
  });
134
139
  };
135
- h.displayName = "InputNumeric";
140
+ g.displayName = "InputNumeric";
136
141
  //#endregion
137
- export { h as InputNumeric };
142
+ export { g as InputNumeric };
@@ -1,3 +1,4 @@
1
+ import { DropdownWidth } from '../utils/formFieldUtils';
1
2
  import { ButtonHTMLAttributes, Ref } from 'react';
2
3
  export type MultiSelectState = 'default' | 'error' | 'disabled' | 'loading';
3
4
  export interface MultiSelectOption {
@@ -9,6 +10,7 @@ export interface MultiSelectOption {
9
10
  export interface MultiSelectBaseProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'value' | 'onChange'> {
10
11
  clearAllLabel?: string;
11
12
  closeOnSelect?: boolean;
13
+ dropdownWidth?: DropdownWidth;
12
14
  emptyMessage?: string;
13
15
  errorMessage?: string;
14
16
  id?: string;
@@ -16,7 +18,8 @@ export interface MultiSelectBaseProps extends Omit<ButtonHTMLAttributes<HTMLButt
16
18
  loadingMessage?: string;
17
19
  maxCount?: number;
18
20
  name?: string;
19
- onChange: (value: string[]) => void;
21
+ defaultValue?: string[];
22
+ onChange?: (value: string[]) => void;
20
23
  options: MultiSelectOption[];
21
24
  placeholder?: string;
22
25
  searchPlaceholder?: string;
@@ -26,12 +29,12 @@ export interface MultiSelectBaseProps extends Omit<ButtonHTMLAttributes<HTMLButt
26
29
  selectAllLabel?: string;
27
30
  sortAlphabetically?: boolean;
28
31
  state?: MultiSelectState;
29
- value: string[];
32
+ value?: string[];
30
33
  'aria-label'?: string;
31
34
  'aria-describedby'?: string;
32
35
  }
33
36
  export declare const MultiSelectBase: {
34
- ({ className, clearAllLabel, closeOnSelect, emptyMessage, errorMessage, id, label, loadingMessage, maxCount, name, onChange, options, placeholder, ref, searchPlaceholder, selectAllLabel, showClearAll, showSearch, showSelectAll, sortAlphabetically, state, value, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, ...props }: MultiSelectBaseProps & {
37
+ ({ className, clearAllLabel, closeOnSelect, dropdownWidth, emptyMessage, errorMessage, defaultValue, id, label, loadingMessage, maxCount, name, onChange, options, placeholder, ref, searchPlaceholder, selectAllLabel, showClearAll, showSearch, showSelectAll, sortAlphabetically, state, value: valueProp, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, ...props }: MultiSelectBaseProps & {
35
38
  ref?: Ref<HTMLButtonElement>;
36
39
  }): import("react/jsx-runtime").JSX.Element;
37
40
  displayName: string;