fictoan-react 2.0.0-beta.17 → 2.0.0-beta.18

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 (181) hide show
  1. package/dist/components/Accordion/Accordion.d.ts.map +1 -1
  2. package/dist/components/Accordion/Accordion.js +27 -0
  3. package/dist/components/Accordion/Accordion.js.map +1 -0
  4. package/dist/components/Badge/Badge.d.ts.map +1 -1
  5. package/dist/components/Badge/Badge.js +56 -0
  6. package/dist/components/Badge/Badge.js.map +1 -0
  7. package/dist/components/Breadcrumbs/Breadcrumbs.js +65 -0
  8. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -0
  9. package/dist/components/Button/Button.js +28 -0
  10. package/dist/components/Button/Button.js.map +1 -0
  11. package/dist/components/ButtonGroup/ButtonGroup.js +27 -0
  12. package/dist/components/ButtonGroup/ButtonGroup.js.map +1 -0
  13. package/dist/components/Callout/Callout.js +31 -0
  14. package/dist/components/Callout/Callout.js.map +1 -0
  15. package/dist/components/Card/Card.js +27 -0
  16. package/dist/components/Card/Card.js.map +1 -0
  17. package/dist/components/CodeBlock/CodeBlock.js +191 -0
  18. package/dist/components/CodeBlock/CodeBlock.js.map +1 -0
  19. package/dist/components/Divider/Divider.js +29 -0
  20. package/dist/components/Divider/Divider.js.map +1 -0
  21. package/dist/components/Drawer/Drawer.d.ts +3 -0
  22. package/dist/components/Drawer/Drawer.d.ts.map +1 -1
  23. package/dist/components/Drawer/Drawer.js +96 -0
  24. package/dist/components/Drawer/Drawer.js.map +1 -0
  25. package/dist/components/Element/Element.d.ts +6 -2
  26. package/dist/components/Element/Element.d.ts.map +1 -1
  27. package/dist/components/Element/Element.js +152 -0
  28. package/dist/components/Element/Element.js.map +1 -0
  29. package/dist/components/Element/Tags.js +31 -0
  30. package/dist/components/Element/Tags.js.map +1 -0
  31. package/dist/components/Element/constants.js +8 -0
  32. package/dist/components/Element/constants.js.map +1 -0
  33. package/dist/components/Form/Checkbox/Checkbox.d.ts.map +1 -1
  34. package/dist/components/Form/Checkbox/Checkbox.js +78 -0
  35. package/dist/components/Form/Checkbox/Checkbox.js.map +1 -0
  36. package/dist/components/Form/Checkbox/CheckboxAndSwitchGroup.d.ts.map +1 -1
  37. package/dist/components/Form/Checkbox/CheckboxAndSwitchGroup.js +177 -0
  38. package/dist/components/Form/Checkbox/CheckboxAndSwitchGroup.js.map +1 -0
  39. package/dist/components/Form/Checkbox/Switch.d.ts.map +1 -1
  40. package/dist/components/Form/Checkbox/Switch.js +78 -0
  41. package/dist/components/Form/Checkbox/Switch.js.map +1 -0
  42. package/dist/components/Form/FileUpload/FileUpload.d.ts.map +1 -1
  43. package/dist/components/Form/FileUpload/FileUpload.js +142 -0
  44. package/dist/components/Form/FileUpload/FileUpload.js.map +1 -0
  45. package/dist/components/Form/Form/Form.js +37 -0
  46. package/dist/components/Form/Form/Form.js.map +1 -0
  47. package/dist/components/Form/Form/FormGenerator.js +64 -0
  48. package/dist/components/Form/Form/FormGenerator.js.map +1 -0
  49. package/dist/components/Form/FormItem/FormItem.d.ts +16 -0
  50. package/dist/components/Form/FormItem/FormItem.d.ts.map +1 -1
  51. package/dist/components/Form/FormItem/FormItem.js +127 -0
  52. package/dist/components/Form/FormItem/FormItem.js.map +1 -0
  53. package/dist/components/Form/FormItemGroup/FormItemGroup.js +42 -0
  54. package/dist/components/Form/FormItemGroup/FormItemGroup.js.map +1 -0
  55. package/dist/components/Form/InputField/InputField.d.ts.map +1 -1
  56. package/dist/components/Form/InputField/InputField.js +156 -0
  57. package/dist/components/Form/InputField/InputField.js.map +1 -0
  58. package/dist/components/Form/InputLabel/InputLabel.js +30 -0
  59. package/dist/components/Form/InputLabel/InputLabel.js.map +1 -0
  60. package/dist/components/Form/ListBox/ListBox.d.ts.map +1 -1
  61. package/dist/components/Form/ListBox/ListBox.js +284 -0
  62. package/dist/components/Form/ListBox/ListBox.js.map +1 -0
  63. package/dist/components/Form/ListBox/constants.d.ts +1 -1
  64. package/dist/components/Form/ListBox/constants.d.ts.map +1 -1
  65. package/dist/components/Form/ListBox/listBoxUtils.js +49 -0
  66. package/dist/components/Form/ListBox/listBoxUtils.js.map +1 -0
  67. package/dist/components/Form/PinInputField/PinInputField.d.ts +6 -1
  68. package/dist/components/Form/PinInputField/PinInputField.d.ts.map +1 -1
  69. package/dist/components/Form/PinInputField/PinInputField.js +165 -0
  70. package/dist/components/Form/PinInputField/PinInputField.js.map +1 -0
  71. package/dist/components/Form/RadioButton/RadioButton.d.ts.map +1 -1
  72. package/dist/components/Form/RadioButton/RadioButton.js +82 -0
  73. package/dist/components/Form/RadioButton/RadioButton.js.map +1 -0
  74. package/dist/components/Form/RadioButton/RadioGroup.d.ts.map +1 -1
  75. package/dist/components/Form/RadioButton/RadioGroup.js +97 -0
  76. package/dist/components/Form/RadioButton/RadioGroup.js.map +1 -0
  77. package/dist/components/Form/RadioButton/RadioTabGroup.d.ts.map +1 -1
  78. package/dist/components/Form/RadioButton/RadioTabGroup.js +182 -0
  79. package/dist/components/Form/RadioButton/RadioTabGroup.js.map +1 -0
  80. package/dist/components/Form/Range/Range.js +376 -0
  81. package/dist/components/Form/Range/Range.js.map +1 -0
  82. package/dist/components/Form/Select/Select.d.ts.map +1 -1
  83. package/dist/components/Form/Select/Select.js +83 -0
  84. package/dist/components/Form/Select/Select.js.map +1 -0
  85. package/dist/components/Form/TextArea/TextArea.d.ts.map +1 -1
  86. package/dist/components/Form/TextArea/TextArea.js +111 -0
  87. package/dist/components/Form/TextArea/TextArea.js.map +1 -0
  88. package/dist/components/Meter/Meter.js +110 -0
  89. package/dist/components/Meter/Meter.js.map +1 -0
  90. package/dist/components/Modal/Modal.d.ts.map +1 -1
  91. package/dist/components/Modal/Modal.js +75 -0
  92. package/dist/components/Modal/Modal.js.map +1 -0
  93. package/dist/components/Notification/NotificationItem/NotificationItem.d.ts.map +1 -1
  94. package/dist/components/Notification/NotificationItem/NotificationItem.js +70 -0
  95. package/dist/components/Notification/NotificationItem/NotificationItem.js.map +1 -0
  96. package/dist/components/Notification/NotificationsProvider/NotificationsProvider.js +88 -0
  97. package/dist/components/Notification/NotificationsProvider/NotificationsProvider.js.map +1 -0
  98. package/dist/components/Notification/NotificationsWrapper/NotificationsWrapper.d.ts.map +1 -1
  99. package/dist/components/Notification/NotificationsWrapper/NotificationsWrapper.js +35 -0
  100. package/dist/components/Notification/NotificationsWrapper/NotificationsWrapper.js.map +1 -0
  101. package/dist/components/OptionCard/OptionCard.js +150 -0
  102. package/dist/components/OptionCard/OptionCard.js.map +1 -0
  103. package/dist/components/Pagination/Pagination.d.ts.map +1 -1
  104. package/dist/components/Pagination/Pagination.js +206 -0
  105. package/dist/components/Pagination/Pagination.js.map +1 -0
  106. package/dist/components/Pagination/usePagination.js +35 -0
  107. package/dist/components/Pagination/usePagination.js.map +1 -0
  108. package/dist/components/Portion/Portion.js +34 -0
  109. package/dist/components/Portion/Portion.js.map +1 -0
  110. package/dist/components/ProgressBar/ProgressBar.js +63 -0
  111. package/dist/components/ProgressBar/ProgressBar.js.map +1 -0
  112. package/dist/components/Row/Row.js +40 -0
  113. package/dist/components/Row/Row.js.map +1 -0
  114. package/dist/components/Sidebar/ContentWrapper/ContentWrapper.js +23 -0
  115. package/dist/components/Sidebar/ContentWrapper/ContentWrapper.js.map +1 -0
  116. package/dist/components/Sidebar/SidebarFooter/SidebarFooter.js +25 -0
  117. package/dist/components/Sidebar/SidebarFooter/SidebarFooter.js.map +1 -0
  118. package/dist/components/Sidebar/SidebarHeader/SidebarHeader.js +25 -0
  119. package/dist/components/Sidebar/SidebarHeader/SidebarHeader.js.map +1 -0
  120. package/dist/components/Sidebar/SidebarItem/SidebarItem.js +30 -0
  121. package/dist/components/Sidebar/SidebarItem/SidebarItem.js.map +1 -0
  122. package/dist/components/Sidebar/SidebarItemsGroup/SidebarItemsGroup.js +29 -0
  123. package/dist/components/Sidebar/SidebarItemsGroup/SidebarItemsGroup.js.map +1 -0
  124. package/dist/components/Sidebar/SidebarWrapper/SidebarWrapper.d.ts.map +1 -1
  125. package/dist/components/Sidebar/SidebarWrapper/SidebarWrapper.js +35 -0
  126. package/dist/components/Sidebar/SidebarWrapper/SidebarWrapper.js.map +1 -0
  127. package/dist/components/Skeleton/Skeleton.js +84 -0
  128. package/dist/components/Skeleton/Skeleton.js.map +1 -0
  129. package/dist/components/Spinner/Spinner.js +33 -0
  130. package/dist/components/Spinner/Spinner.js.map +1 -0
  131. package/dist/components/Table/Table.js +53 -0
  132. package/dist/components/Table/Table.js.map +1 -0
  133. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  134. package/dist/components/Tabs/Tabs.js +104 -0
  135. package/dist/components/Tabs/Tabs.js.map +1 -0
  136. package/dist/components/ThemeProvider/ThemeProvider.d.ts +6 -0
  137. package/dist/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  138. package/dist/components/ThemeProvider/ThemeProvider.js +52 -0
  139. package/dist/components/ThemeProvider/ThemeProvider.js.map +1 -0
  140. package/dist/components/Toast/ToastItem/ToastItem.js +47 -0
  141. package/dist/components/Toast/ToastItem/ToastItem.js.map +1 -0
  142. package/dist/components/Toast/ToastsProvider/ToastsProvider.js +45 -0
  143. package/dist/components/Toast/ToastsProvider/ToastsProvider.js.map +1 -0
  144. package/dist/components/Toast/ToastsWrapper/ToastsWrapper.d.ts.map +1 -1
  145. package/dist/components/Toast/ToastsWrapper/ToastsWrapper.js +28 -0
  146. package/dist/components/Toast/ToastsWrapper/ToastsWrapper.js.map +1 -0
  147. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  148. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  149. package/dist/components/Tooltip/Tooltip.js +62 -0
  150. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  151. package/dist/components/Typography/Heading.js +30 -0
  152. package/dist/components/Typography/Heading.js.map +1 -0
  153. package/dist/components/Typography/Text.js +15 -0
  154. package/dist/components/Typography/Text.js.map +1 -0
  155. package/dist/components/index.js +124 -75
  156. package/dist/components/index.js.map +1 -1
  157. package/dist/fictoan-schema.json +2070 -0
  158. package/dist/hooks/UseClickOutside.js +17 -0
  159. package/dist/hooks/UseClickOutside.js.map +1 -0
  160. package/dist/hooks/UseViewTransition.d.ts +2 -0
  161. package/dist/hooks/UseViewTransition.d.ts.map +1 -0
  162. package/dist/hooks/UseViewTransition.js +17 -0
  163. package/dist/hooks/UseViewTransition.js.map +1 -0
  164. package/dist/index.css +6 -10661
  165. package/dist/index.d.ts +1 -0
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +142 -151
  168. package/dist/index.js.map +1 -1
  169. package/dist/scripts/generateSchema.d.ts +2 -0
  170. package/dist/scripts/generateSchema.d.ts.map +1 -0
  171. package/dist/scripts/schema-meta.d.ts +12 -0
  172. package/dist/scripts/schema-meta.d.ts.map +1 -0
  173. package/dist/styles/colours.js +55 -0
  174. package/dist/styles/colours.js.map +1 -0
  175. package/dist/utils/classNames.js +6 -0
  176. package/dist/utils/classNames.js.map +1 -0
  177. package/dist/utils/propSeparation.js +77 -0
  178. package/dist/utils/propSeparation.js.map +1 -0
  179. package/package.json +12 -18
  180. package/dist/Accordion-CeGNgNW8.js +0 -4254
  181. package/dist/Accordion-CeGNgNW8.js.map +0 -1
@@ -1,11 +1,27 @@
1
1
  import React from "react";
2
2
  import { CommonAndHTMLProps, SpacingTypes } from '../../Element/constants';
3
3
 
4
+ export interface FormItemContextValue {
5
+ helpTextId?: string;
6
+ errorTextId?: string;
7
+ describedBy?: string;
8
+ hasError: boolean;
9
+ isRequired: boolean;
10
+ }
11
+ export declare const FormItemContext: React.Context<FormItemContextValue | null>;
12
+ export declare const useFormItemContext: () => FormItemContextValue | null;
13
+ export declare const mergeDescribedBy: (...ids: (string | undefined | null)[]) => string | undefined;
14
+ export declare const deriveAriaIds: (baseId: string | undefined, helpText: unknown, errorText: unknown) => {
15
+ helpTextId?: string;
16
+ errorTextId?: string;
17
+ describedBy?: string;
18
+ };
4
19
  export type FormItemElementType = HTMLDivElement;
5
20
  export interface FormItemProps extends CommonAndHTMLProps<FormItemElementType> {
6
21
  label?: string;
7
22
  customLabel?: React.ReactNode;
8
23
  htmlFor?: string;
24
+ hideLabel?: boolean;
9
25
  helpText?: string | React.ReactNode;
10
26
  errorText?: string;
11
27
  validationState?: "valid" | "invalid" | null;
@@ -1 +1 @@
1
- {"version":3,"file":"FormItem.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormItem/FormItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAK3E,OAAO,iBAAiB,CAAC;AAOzB,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAEjD,MAAM,WAAW,aAAc,SAAQ,kBAAkB,CAAC,mBAAmB,CAAC;IAE1E,KAAgB,CAAC,EAAG,MAAM,CAAC;IAC3B,WAAgB,CAAC,EAAG,KAAK,CAAC,SAAS,CAAC;IACpC,OAAgB,CAAC,EAAG,MAAM,CAAC;IAE3B,QAAgB,CAAC,EAAG,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAC7C,SAAgB,CAAC,EAAG,MAAM,CAAC;IAE3B,eAAgB,CAAC,EAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IAE/C,QAAgB,CAAC,EAAG,OAAO,CAAC;IAC5B,IAAgB,CAAC,EAAG,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAE3D,UAAgB,CAAC,EAAG,OAAO,CAAC;CAC/B;AAyDD,eAAO,MAAM,QAAQ,sFA+DpB,CAAC"}
1
+ {"version":3,"file":"FormItem.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormItem/FormItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAK3E,OAAO,iBAAiB,CAAC;AAUzB,MAAM,WAAW,oBAAoB;IACjC,UAAY,CAAC,EAAG,MAAM,CAAC;IACvB,WAAY,CAAC,EAAG,MAAM,CAAC;IACvB,WAAY,CAAC,EAAG,MAAM,CAAC;IACvB,QAAQ,EAAQ,OAAO,CAAC;IACxB,UAAU,EAAM,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,eAAe,4CAAyD,CAAC;AAEtF,eAAO,MAAM,kBAAkB,QAAQ,oBAAoB,GAAG,IAAyC,CAAC;AAIxG,eAAO,MAAM,gBAAgB,GAAI,GAAG,KAAM,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,KAAI,MAAM,GAAG,SAGnF,CAAC;AAOF,eAAO,MAAM,aAAa,GACtB,QAAW,MAAM,GAAG,SAAS,EAC7B,UAAW,OAAO,EAClB,WAAW,OAAO,KAClB;IAAE,UAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAY,CAAC,EAAE,MAAM,CAAC;IAAC,WAAY,CAAC,EAAE,MAAM,CAAA;CAKvE,CAAC;AAGF,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAEjD,MAAM,WAAW,aAAc,SAAQ,kBAAkB,CAAC,mBAAmB,CAAC;IAE1E,KAAgB,CAAC,EAAG,MAAM,CAAC;IAC3B,WAAgB,CAAC,EAAG,KAAK,CAAC,SAAS,CAAC;IACpC,OAAgB,CAAC,EAAG,MAAM,CAAC;IAC3B,SAAgB,CAAC,EAAG,OAAO,CAAC;IAE5B,QAAgB,CAAC,EAAG,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAC7C,SAAgB,CAAC,EAAG,MAAM,CAAC;IAE3B,eAAgB,CAAC,EAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IAE/C,QAAgB,CAAC,EAAG,OAAO,CAAC;IAC5B,IAAgB,CAAC,EAAG,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAE3D,UAAgB,CAAC,EAAG,OAAO,CAAC;CAC/B;AAyDD,eAAO,MAAM,QAAQ,sFAiFpB,CAAC"}
@@ -0,0 +1,127 @@
1
+ "use client";
2
+ import { jsx as t, jsxs as l } from "react/jsx-runtime";
3
+ import c from "react";
4
+ import { Div as d } from "../../Element/Tags.js";
5
+ /* empty css */
6
+ import { InputLabel as $ } from "../InputLabel/InputLabel.js";
7
+ import { Text as v } from "../../Typography/Text.js";
8
+ import { Element as b } from "../../Element/Element.js";
9
+ const M = c.createContext(null), R = (...e) => {
10
+ const r = e.filter((o) => !!o);
11
+ return r.length > 0 ? r.join(" ") : void 0;
12
+ }, W = (e, r, o) => {
13
+ if (!e) return {};
14
+ const s = r ? `${e}-help` : void 0, i = o ? `${e}-error` : void 0;
15
+ return { helpTextId: s, errorTextId: i, describedBy: R(i, s) };
16
+ }, C = ({ state: e }) => e === "valid" ? /* @__PURE__ */ t(
17
+ "svg",
18
+ {
19
+ "data-validation-icon": "valid",
20
+ xmlns: "http://www.w3.org/2000/svg",
21
+ viewBox: "0 0 24 24",
22
+ width: "20",
23
+ height: "20",
24
+ children: /* @__PURE__ */ t(
25
+ "polyline",
26
+ {
27
+ points: "3.5 12.5 8.5 17.5 20.5 5.5",
28
+ fill: "none",
29
+ stroke: "#0ec05c",
30
+ strokeMiterlimit: "10",
31
+ strokeWidth: "2"
32
+ }
33
+ )
34
+ }
35
+ ) : /* @__PURE__ */ l(
36
+ "svg",
37
+ {
38
+ "data-validation-icon": "invalid",
39
+ xmlns: "http://www.w3.org/2000/svg",
40
+ viewBox: "0 0 24 24",
41
+ width: "20",
42
+ height: "20",
43
+ children: [
44
+ /* @__PURE__ */ t(
45
+ "line",
46
+ {
47
+ x1: "6.5",
48
+ y1: "17.5",
49
+ x2: "18.5",
50
+ y2: "5.5",
51
+ fill: "none",
52
+ stroke: "#ef4343",
53
+ strokeMiterlimit: "10",
54
+ strokeWidth: "2"
55
+ }
56
+ ),
57
+ /* @__PURE__ */ t(
58
+ "line",
59
+ {
60
+ x1: "6.5",
61
+ y1: "5.5",
62
+ x2: "18.5",
63
+ y2: "17.5",
64
+ fill: "none",
65
+ stroke: "#ef4343",
66
+ strokeMiterlimit: "10",
67
+ strokeWidth: "2"
68
+ }
69
+ )
70
+ ]
71
+ }
72
+ ), D = c.forwardRef(
73
+ ({
74
+ label: e,
75
+ customLabel: r,
76
+ htmlFor: o,
77
+ hideLabel: s,
78
+ helpText: i,
79
+ errorText: n,
80
+ validationState: a,
81
+ required: m,
82
+ size: f,
83
+ labelFirst: u,
84
+ children: w,
85
+ ...x
86
+ }, g) => {
87
+ const I = e || r, y = i || n, k = c.useId(), B = o || `form-item-${k.replace(/:/g, "")}`, { helpTextId: h, errorTextId: p, describedBy: N } = W(B, i, n), j = {
88
+ helpTextId: h,
89
+ errorTextId: p,
90
+ describedBy: N,
91
+ hasError: !!n,
92
+ isRequired: !!m
93
+ };
94
+ return /* @__PURE__ */ t(M.Provider, { value: j, children: /* @__PURE__ */ l(
95
+ b,
96
+ {
97
+ as: "div",
98
+ "data-form-item": !0,
99
+ "data-form-spaced": !0,
100
+ ref: g,
101
+ role: "group",
102
+ required: m,
103
+ className: [f ? `size-${f}` : "", u ? "label-first" : ""].filter(Boolean).join(" ") || void 0,
104
+ ...x,
105
+ children: [
106
+ I && /* @__PURE__ */ l(d, { "data-label-wrapper": !0, "data-has-validation": a ? "true" : void 0, children: [
107
+ r || e && /* @__PURE__ */ t($, { label: e, htmlFor: o, hideLabel: s }),
108
+ a && /* @__PURE__ */ t(C, { state: a })
109
+ ] }),
110
+ /* @__PURE__ */ t(d, { "data-input-wrapper": !0, children: w }),
111
+ y && /* @__PURE__ */ l(d, { className: "info-section vertically-center-items", children: [
112
+ i && /* @__PURE__ */ t(v, { id: h, className: "help-text", children: i }),
113
+ n && /* @__PURE__ */ t(v, { id: p, role: "alert", className: "error-text", children: n })
114
+ ] })
115
+ ]
116
+ }
117
+ ) });
118
+ }
119
+ );
120
+ D.displayName = "FormItem";
121
+ export {
122
+ D as FormItem,
123
+ M as FormItemContext,
124
+ W as deriveAriaIds,
125
+ R as mergeDescribedBy
126
+ };
127
+ //# sourceMappingURL=FormItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormItem.js","sources":["../../../../src/components/Form/FormItem/FormItem.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps, SpacingTypes } from \"../../Element/constants\";\nimport { Div } from \"$tags\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./form-item.css\";\n\n// OTHER ===============================================================================================================\nimport { InputLabel } from \"../InputLabel/InputLabel\";\nimport { Text } from \"../../Typography/Text\";\n\n// CONTEXT /////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// FormItem exposes ids for its help/error text plus aggregate state (hasError,\n// isRequired) so child inputs can wire aria-describedby / aria-invalid /\n// aria-required without each component re-implementing the plumbing.\nexport interface FormItemContextValue {\n helpTextId ? : string;\n errorTextId ? : string;\n describedBy ? : string;\n hasError : boolean;\n isRequired : boolean;\n}\n\nexport const FormItemContext = React.createContext<FormItemContextValue | null>(null);\n\nexport const useFormItemContext = () : FormItemContextValue | null => React.useContext(FormItemContext);\n\n// Merge an input's own aria-describedby with whatever FormItem provides.\n// Use in form inputs as: aria-describedby={mergeDescribedBy(ownDescribedBy, ctx?.describedBy)}\nexport const mergeDescribedBy = (...ids : (string | undefined | null)[]) : string | undefined => {\n const filtered = ids.filter((s) : s is string => Boolean(s));\n return filtered.length > 0 ? filtered.join(\" \") : undefined;\n};\n\n// Single source of truth for the help/error ids and the describedBy string.\n// FormItem uses it to id its Text nodes; each form input uses the same helper\n// (with the same baseId) to compute aria-describedby on its <input>. Both sides\n// derive identical strings as long as the form input passes `htmlFor` to\n// FormItem and uses the same value as its input id.\nexport const deriveAriaIds = (\n baseId : string | undefined,\n helpText : unknown,\n errorText: unknown,\n) : { helpTextId ?: string; errorTextId ?: string; describedBy ?: string } => {\n if (!baseId) return {};\n const helpTextId = helpText ? `${baseId}-help` : undefined;\n const errorTextId = errorText ? `${baseId}-error` : undefined;\n return { helpTextId, errorTextId, describedBy : mergeDescribedBy(errorTextId, helpTextId) };\n};\n\n// TYPES ///////////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport type FormItemElementType = HTMLDivElement;\n\nexport interface FormItemProps extends CommonAndHTMLProps<FormItemElementType> {\n // Label\n label ? : string;\n customLabel ? : React.ReactNode;\n htmlFor ? : string;\n hideLabel ? : boolean;\n // Info section\n helpText ? : string | React.ReactNode;\n errorText ? : string;\n // Validation\n validationState ? : \"valid\" | \"invalid\" | null;\n // Form semantics\n required ? : boolean;\n size ? : Exclude<SpacingTypes, \"nano\" | \"huge\">;\n // Layout\n labelFirst ? : boolean;\n}\n\n// VALIDATION ICON /////////////////////////////////////////////////////////////////////////////////////////////////////\nconst ValidationIcon = ({state} : { state : \"valid\" | \"invalid\" }) => {\n if (state === \"valid\") {\n return (\n <svg\n data-validation-icon=\"valid\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n >\n <polyline\n points=\"3.5 12.5 8.5 17.5 20.5 5.5\"\n fill=\"none\"\n stroke=\"#0ec05c\"\n strokeMiterlimit=\"10\"\n strokeWidth=\"2\"\n />\n </svg>\n );\n }\n\n return (\n <svg\n data-validation-icon=\"invalid\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n >\n <line\n x1=\"6.5\"\n y1=\"17.5\"\n x2=\"18.5\"\n y2=\"5.5\"\n fill=\"none\"\n stroke=\"#ef4343\"\n strokeMiterlimit=\"10\"\n strokeWidth=\"2\"\n />\n <line\n x1=\"6.5\"\n y1=\"5.5\"\n x2=\"18.5\"\n y2=\"17.5\"\n fill=\"none\"\n stroke=\"#ef4343\"\n strokeMiterlimit=\"10\"\n strokeWidth=\"2\"\n />\n </svg>\n );\n};\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const FormItem = React.forwardRef(\n (\n {\n label,\n customLabel,\n htmlFor,\n hideLabel,\n helpText,\n errorText,\n validationState,\n required,\n size,\n labelFirst,\n children,\n ...props\n } : FormItemProps,\n ref : React.Ref<FormItemElementType>,\n ) => {\n const hasLabel = label || customLabel;\n const hasInfoSection = helpText || errorText;\n\n // Stable id base for help/error text. Prefer the explicit `htmlFor` so\n // ids tie back to the user-visible input id; fall back to React.useId\n // when the consumer didn't pass one.\n const reactId = React.useId();\n const baseId = htmlFor || `form-item-${reactId.replace(/:/g, \"\")}`;\n const { helpTextId, errorTextId, describedBy } = deriveAriaIds(baseId, helpText, errorText);\n\n const contextValue : FormItemContextValue = {\n helpTextId,\n errorTextId,\n describedBy,\n hasError : Boolean(errorText),\n isRequired : Boolean(required),\n };\n\n return (\n <FormItemContext.Provider value={contextValue}>\n <Element<FormItemElementType>\n as=\"div\"\n data-form-item\n data-form-spaced\n ref={ref}\n role=\"group\"\n required={required}\n className={[ size ? `size-${size}` : \"\", labelFirst ? \"label-first\" : \"\" ].filter(Boolean)\n .join(\" \") || undefined}\n {...props}\n >\n {/* LABEL ////////////////////////////////////////////////////////////////////////////////////// */}\n {hasLabel && (\n <Div data-label-wrapper data-has-validation={validationState ? \"true\" : undefined}>\n {customLabel || (label && <InputLabel label={label} htmlFor={htmlFor} hideLabel={hideLabel} />)}\n {validationState && <ValidationIcon state={validationState} />}\n </Div>\n )}\n\n {/* INPUT ////////////////////////////////////////////////////////////////////////////////////// */}\n <Div data-input-wrapper>\n {children}\n </Div>\n\n {/* INFO SECTION /////////////////////////////////////////////////////////////////////////////// */}\n {hasInfoSection && (\n <Div className=\"info-section vertically-center-items\">\n {helpText && (\n <Text id={helpTextId} className=\"help-text\">\n {helpText}\n </Text>\n )}\n {errorText && (\n <Text id={errorTextId} role=\"alert\" className=\"error-text\">\n {errorText}\n </Text>\n )}\n </Div>\n )}\n </Element>\n </FormItemContext.Provider>\n );\n },\n);\nFormItem.displayName = \"FormItem\";\n"],"names":["FormItemContext","React","mergeDescribedBy","ids","filtered","s","deriveAriaIds","baseId","helpText","errorText","helpTextId","errorTextId","ValidationIcon","state","jsx","jsxs","FormItem","label","customLabel","htmlFor","hideLabel","validationState","required","size","labelFirst","children","props","ref","hasLabel","hasInfoSection","reactId","describedBy","contextValue","Element","Div","InputLabel","Text"],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ "use client";
2
+ import { jsx as l } from "react/jsx-runtime";
3
+ import n from "react";
4
+ /* empty css */
5
+ import { Element as h } from "../../Element/Element.js";
6
+ const g = n.forwardRef(
7
+ ({
8
+ isJoint: e,
9
+ equalWidthForChildren: a,
10
+ retainLayout: i,
11
+ children: m,
12
+ legend: p,
13
+ id: s,
14
+ columns: t,
15
+ style: o,
16
+ ...u
17
+ }, f) => {
18
+ const d = s || `form-group-${Math.random().toString(36).substring(2, 9)}`;
19
+ let r = [];
20
+ return e && r.push("is-joint"), a && r.push("equal-width-for-children"), i && r.push("retain-layout"), t && r.push("with-columns"), /* @__PURE__ */ l(
21
+ h,
22
+ {
23
+ as: "div",
24
+ "data-form-item-group": !0,
25
+ "data-form-spaced": !0,
26
+ ref: f,
27
+ id: d,
28
+ role: "group",
29
+ "aria-label": p,
30
+ classNames: r,
31
+ style: t ? { gridTemplateColumns: `repeat(${t}, 1fr)`, ...o } : o,
32
+ ...u,
33
+ children: m
34
+ }
35
+ );
36
+ }
37
+ );
38
+ g.displayName = "FormItemGroup";
39
+ export {
40
+ g as FormItemGroup
41
+ };
42
+ //# sourceMappingURL=FormItemGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormItemGroup.js","sources":["../../../../src/components/Form/FormItemGroup/FormItemGroup.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps } from \"../../Element/constants\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./form-item-group.css\";\n\n// prettier-ignore\nexport interface FormItemGroupCustomProps {\n isJoint ? : boolean;\n equalWidthForChildren ? : React.ReactNode;\n retainLayout ? : boolean;\n legend ? : string;\n columns ? : number;\n}\n\nexport type FormItemGroupElementType = HTMLDivElement;\nexport type FormItemGroupProps = Omit<CommonAndHTMLProps<FormItemGroupElementType>, keyof FormItemGroupCustomProps> &\n FormItemGroupCustomProps;\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const FormItemGroup = React.forwardRef(\n (\n {\n isJoint,\n equalWidthForChildren,\n retainLayout,\n children,\n legend,\n id,\n columns,\n style,\n ...props\n } : FormItemGroupProps,\n ref : React.Ref<FormItemGroupElementType>,\n ) => {\n const groupId = id || `form-group-${Math.random().toString(36).substring(2, 9)}`;\n let classNames = [];\n\n if (isJoint) {\n classNames.push(\"is-joint\");\n }\n\n if (equalWidthForChildren) {\n classNames.push(\"equal-width-for-children\");\n }\n\n if (retainLayout) {\n classNames.push(\"retain-layout\");\n }\n\n if (columns) {\n classNames.push(\"with-columns\");\n }\n\n return (\n <Element<FormItemGroupElementType>\n as=\"div\"\n data-form-item-group\n data-form-spaced\n ref={ref}\n id={groupId}\n role=\"group\"\n aria-label={legend}\n classNames={classNames}\n style={columns ? { gridTemplateColumns : `repeat(${columns}, 1fr)`, ...style } : style}\n {...props}\n >\n {children}\n </Element>\n );\n },\n);\nFormItemGroup.displayName = \"FormItemGroup\";\n"],"names":["FormItemGroup","React","isJoint","equalWidthForChildren","retainLayout","children","legend","id","columns","style","props","ref","groupId","classNames","jsx","Element"],"mappings":";;;;AAwBO,MAAMA,IAAgBC,EAAM;AAAA,EAC/B,CACI;AAAA,IACI,SAAAC;AAAA,IACA,uBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,IAAAC;AAAA,IACA,SAAAC;AAAA,IACA,OAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAEPC,MACC;AACD,UAAMC,IAAUL,KAAM,cAAc,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,UAAU,GAAG,CAAC,CAAC;AAC9E,QAAIM,IAAa,CAAA;AAEjB,WAAIX,KACAW,EAAW,KAAK,UAAU,GAG1BV,KACAU,EAAW,KAAK,0BAA0B,GAG1CT,KACAS,EAAW,KAAK,eAAe,GAG/BL,KACAK,EAAW,KAAK,cAAc,GAI9B,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,wBAAoB;AAAA,QACpB,oBAAgB;AAAA,QAChB,KAAAJ;AAAA,QACA,IAAIC;AAAA,QACJ,MAAK;AAAA,QACL,cAAYN;AAAA,QACZ,YAAAO;AAAA,QACA,OAAOL,IAAU,EAAE,qBAAsB,UAAUA,CAAO,UAAU,GAAGC,EAAA,IAAUA;AAAA,QAChF,GAAGC;AAAA,QAEH,UAAAL;AAAA,MAAA;AAAA,IAAA;AAAA,EAGb;AACJ;AACAL,EAAc,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"InputField.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/InputField/InputField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAK3D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGpE,OAAO,mBAAmB,CAAC;AAI3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAChE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AAChF,MAAM,WAAW,gBAAgB;IAC7B,KAAgB,CAAC,EAAG,MAAM,CAAC;IAC3B,QAAgB,CAAC,EAAG,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAC7C,SAAgB,CAAC,EAAG,MAAM,CAAC;IAC3B,YAAgB,CAAC,EAAG,OAAO,CAAC;IAC5B,KAAgB,CAAC,EAAG,OAAO,CAAC;IAC5B,OAAgB,CAAC,EAAG,OAAO,CAAC;IAC5B,eAAgB,CAAC,EAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IAC/C,QAAgB,CAAC,EAAG,OAAO,CAAC;IAC5B,QAAgB,CAAC,EAAG,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IAClC,aAAe,CAAC,EAAG,KAAK,CAAC,SAAS,CAAC;IACnC,cAAe,CAAC,EAAG,KAAK,CAAC,SAAS,CAAC;IACnC,aAAe,CAAC,EAAG,MAAM,CAAC;IAC1B,cAAe,CAAC,EAAG,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAErD,MAAM,MAAM,eAAe,GACvB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC,GAC7F,qBAAqB,GACrB,gBAAgB,GAChB,qBAAqB,GACrB,WAAW,GAAG;IACd,IAAS,CAAC,EAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC1F,IAAS,CAAC,EAAG,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACpD,OAAS,CAAC,EAAG,iBAAiB,CAAC;IAC/B,MAAS,CAAC,EAAG,iBAAiB,CAAC;IAC/B,QAAS,CAAC,EAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;CAC3C,CAAC;AAGF,eAAO,MAAM,UAAU;WARN,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM;WAC5E,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;cACtC,iBAAiB;aACjB,iBAAiB;eACjB,kBAAkB,CAAC,MAAM,CAAC;0CA8M1C,CAAC"}
1
+ {"version":3,"file":"InputField.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/InputField/InputField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAK3D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGpE,OAAO,mBAAmB,CAAC;AAI3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAChE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AAChF,MAAM,WAAW,gBAAgB;IAC7B,KAAgB,CAAC,EAAG,MAAM,CAAC;IAC3B,QAAgB,CAAC,EAAG,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAC7C,SAAgB,CAAC,EAAG,MAAM,CAAC;IAC3B,YAAgB,CAAC,EAAG,OAAO,CAAC;IAC5B,KAAgB,CAAC,EAAG,OAAO,CAAC;IAC5B,OAAgB,CAAC,EAAG,OAAO,CAAC;IAC5B,eAAgB,CAAC,EAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IAC/C,QAAgB,CAAC,EAAG,OAAO,CAAC;IAC5B,QAAgB,CAAC,EAAG,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IAClC,aAAe,CAAC,EAAG,KAAK,CAAC,SAAS,CAAC;IACnC,cAAe,CAAC,EAAG,KAAK,CAAC,SAAS,CAAC;IACnC,aAAe,CAAC,EAAG,MAAM,CAAC;IAC1B,cAAe,CAAC,EAAG,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAErD,MAAM,MAAM,eAAe,GACvB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC,GAC7F,qBAAqB,GACrB,gBAAgB,GAChB,qBAAqB,GACrB,WAAW,GAAG;IACd,IAAS,CAAC,EAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC1F,IAAS,CAAC,EAAG,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACpD,OAAS,CAAC,EAAG,iBAAiB,CAAC;IAC/B,MAAS,CAAC,EAAG,iBAAiB,CAAC;IAC/B,QAAS,CAAC,EAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;CAC3C,CAAC;AAGF,eAAO,MAAM,UAAU;WARN,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM;WAC5E,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;cACtC,iBAAiB;aACjB,iBAAiB;eACjB,kBAAkB,CAAC,MAAM,CAAC;0CAyN1C,CAAC"}
@@ -0,0 +1,156 @@
1
+ "use client";
2
+ import { jsxs as I, jsx as N } from "react/jsx-runtime";
3
+ import l, { useRef as y, useState as R, useEffect as ft } from "react";
4
+ import { Div as k } from "../../Element/Tags.js";
5
+ /* empty css */
6
+ import { deriveAriaIds as ht, FormItem as vt, mergeDescribedBy as yt } from "../FormItem/FormItem.js";
7
+ import { separateWrapperProps as Et } from "../../../utils/propSeparation.js";
8
+ import { Element as bt } from "../../Element/Element.js";
9
+ const wt = l.forwardRef(
10
+ ({
11
+ // FormItem props
12
+ label: E,
13
+ hideLabel: F,
14
+ helpText: b,
15
+ errorText: o,
16
+ size: W,
17
+ required: u,
18
+ // Side elements
19
+ innerIconLeft: r,
20
+ innerIconRight: s,
21
+ innerTextLeft: d,
22
+ innerTextRight: n,
23
+ // Validation
24
+ validateThis: c,
25
+ valid: St,
26
+ invalid: A,
27
+ validationState: C,
28
+ // Handlers
29
+ onChange: p,
30
+ onBlur: m,
31
+ onFocus: f,
32
+ // Aria
33
+ "aria-label": K,
34
+ "aria-invalid": z,
35
+ "aria-describedby": G,
36
+ // Input props
37
+ id: H,
38
+ name: J,
39
+ value: M,
40
+ defaultValue: O,
41
+ type: Q = "text",
42
+ placeholder: U,
43
+ autoComplete: X,
44
+ maxLength: Y,
45
+ minLength: Z,
46
+ pattern: _,
47
+ readOnly: q,
48
+ disabled: x,
49
+ className: L,
50
+ ...T
51
+ }, a) => {
52
+ const w = y(null), S = y(null), $ = y(null), [tt, et] = R(!1), [at, B] = R(null), it = C ?? (c ? at : null), lt = l.useCallback(
53
+ (t) => {
54
+ $.current = t, typeof a == "function" ? a(t) : a && (a.current = t);
55
+ },
56
+ [a]
57
+ ), P = () => {
58
+ const t = $.current;
59
+ if (!t || t.value === "") {
60
+ B(null);
61
+ return;
62
+ }
63
+ B(t.validity.valid ? "valid" : "invalid");
64
+ }, rt = (t) => {
65
+ p == null || p(t.target.value), tt && c && P();
66
+ }, st = (t) => {
67
+ et(!0), c && P(), m == null || m(t);
68
+ }, dt = (t) => {
69
+ f == null || f(t);
70
+ };
71
+ ft(() => {
72
+ const t = (i, v) => {
73
+ if (!i) return;
74
+ const e = i.closest("[data-form-item]");
75
+ e == null || e.style.setProperty(
76
+ `--side-element-${v}-width`,
77
+ `${i.getBoundingClientRect().width}px`
78
+ );
79
+ };
80
+ (d || r) && t(w.current, "left"), (n || s) && t(S.current, "right");
81
+ }, [d, n, r, s]);
82
+ const V = (t, i, v) => {
83
+ if (!t) return null;
84
+ const e = typeof t == "string", D = l.isValidElement(t) ? t.props : {}, mt = !e && l.isValidElement(t) && (D.onClick || D.onKeyDown || t.type === "button" || t.type === "a");
85
+ return /* @__PURE__ */ N(
86
+ k,
87
+ {
88
+ ref: v,
89
+ "data-input-side-element": !0,
90
+ className: `${i} ${e ? "is-text" : "is-icon"} ${mt ? "is-interactive" : ""}`,
91
+ "aria-hidden": "true",
92
+ children: t
93
+ }
94
+ );
95
+ }, g = !!(r || d), j = !!(s || n), { wrapperProps: nt, inputProps: ot } = Et(T), ut = l.useId(), h = H || `input-${ut.replace(/:/g, "")}`, { describedBy: ct } = ht(h, b, o), pt = !!o || z || A;
96
+ return /* @__PURE__ */ I(
97
+ vt,
98
+ {
99
+ label: E,
100
+ hideLabel: F,
101
+ htmlFor: h,
102
+ helpText: b,
103
+ errorText: o,
104
+ validationState: it,
105
+ required: u,
106
+ size: W,
107
+ ...nt,
108
+ children: [
109
+ /* @__PURE__ */ N(
110
+ bt,
111
+ {
112
+ as: "input",
113
+ ref: lt,
114
+ "data-input-field": !0,
115
+ id: h,
116
+ name: J,
117
+ type: Q,
118
+ value: M,
119
+ defaultValue: O,
120
+ placeholder: U || " ",
121
+ autoComplete: X,
122
+ maxLength: Y,
123
+ minLength: Z,
124
+ pattern: _,
125
+ readOnly: q,
126
+ disabled: x,
127
+ required: u,
128
+ className: [
129
+ L,
130
+ g && "with-left-element",
131
+ j && "with-right-element"
132
+ ].filter(Boolean).join(" "),
133
+ "aria-label": K || E,
134
+ "aria-invalid": pt || void 0,
135
+ "aria-required": u,
136
+ "aria-describedby": yt(G, ct),
137
+ onChange: rt,
138
+ onBlur: st,
139
+ onFocus: dt,
140
+ ...ot
141
+ }
142
+ ),
143
+ (g || j) && /* @__PURE__ */ I(k, { "data-input-helper": !0, "aria-hidden": "true", children: [
144
+ V(r || d, "left", w),
145
+ V(s || n, "right", S)
146
+ ] })
147
+ ]
148
+ }
149
+ );
150
+ }
151
+ );
152
+ wt.displayName = "InputField";
153
+ export {
154
+ wt as InputField
155
+ };
156
+ //# sourceMappingURL=InputField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputField.js","sources":["../../../../src/components/Form/InputField/InputField.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React, { useEffect, useRef, useState } from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { Div } from \"$tags\";\nimport { Element } from \"$element\";\nimport { SpacingTypes, CommonProps } from \"../../Element/constants\";\n\n// STYLES ==============================================================================================================\nimport \"./input-field.css\";\n\n// OTHER ===============================================================================================================\nimport { FormItem, deriveAriaIds, mergeDescribedBy } from \"../FormItem/FormItem\";\nimport { InputLabelCustomProps } from \"../InputLabel/InputLabel\";\nimport { separateWrapperProps } from \"../../../utils/propSeparation\";\n\nexport type ValueChangeHandler<T = string> = (value: T) => void;\nexport type InputFocusHandler = (e: React.FocusEvent<HTMLInputElement>) => void;\nexport interface InputCommonProps {\n label ? : string;\n helpText ? : string | React.ReactNode;\n errorText ? : string;\n validateThis ? : boolean;\n valid ? : boolean;\n invalid ? : boolean;\n validationState ? : \"valid\" | \"invalid\" | null;\n required ? : boolean;\n disabled ? : boolean;\n}\n\nexport interface InputSideElementProps {\n innerIconLeft ? : React.ReactNode;\n innerIconRight ? : React.ReactNode;\n innerTextLeft ? : string;\n innerTextRight ? : string;\n}\n\nexport type InputFieldElementType = HTMLInputElement;\n\nexport type InputFieldProps =\n Omit<React.InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"onBlur\" | \"onFocus\" | \"size\"> &\n InputLabelCustomProps &\n InputCommonProps &\n InputSideElementProps &\n CommonProps & {\n type ? : \"text\" | \"password\" | \"email\" | \"number\" | \"tel\" | \"url\" | \"search\" | \"file\";\n size ? : Exclude<SpacingTypes, \"nano\" | \"huge\">;\n onFocus ? : InputFocusHandler;\n onBlur ? : InputFocusHandler;\n onChange ? : ValueChangeHandler<string>;\n};\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const InputField = React.forwardRef(\n (\n {\n // FormItem props\n label,\n hideLabel,\n helpText,\n errorText,\n size,\n required,\n // Side elements\n innerIconLeft,\n innerIconRight,\n innerTextLeft,\n innerTextRight,\n // Validation\n validateThis,\n valid,\n invalid,\n validationState: externalValidationState,\n // Handlers\n onChange,\n onBlur,\n onFocus,\n // Aria\n \"aria-label\": ariaLabel,\n \"aria-invalid\": ariaInvalid,\n \"aria-describedby\": ariaDescribedBy,\n // Input props\n id,\n name,\n value,\n defaultValue,\n type = \"text\",\n placeholder,\n autoComplete,\n maxLength,\n minLength,\n pattern,\n readOnly,\n disabled,\n className,\n ...props\n }: InputFieldProps,\n ref: React.Ref<InputFieldElementType>\n ) => {\n const leftElementRef = useRef<HTMLDivElement>(null);\n const rightElementRef = useRef<HTMLDivElement>(null);\n const internalInputRef = useRef<HTMLInputElement>(null);\n\n const [touched, setTouched] = useState(false);\n const [internalValidationState, setInternalValidationState] = useState<\"valid\" | \"invalid\" | null>(null);\n\n // Use external validation state if provided, otherwise use internal\n const validationState = externalValidationState ?? (validateThis ? internalValidationState : null);\n\n // Merge refs\n const mergeRefs = React.useCallback(\n (el: HTMLInputElement | null) => {\n (internalInputRef as React.MutableRefObject<HTMLInputElement | null>).current = el;\n if (typeof ref === \"function\") {\n ref(el);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current = el;\n }\n },\n [ref]\n );\n\n const updateValidationState = () => {\n const input = internalInputRef.current;\n if (!input || input.value === \"\") {\n setInternalValidationState(null);\n return;\n }\n setInternalValidationState(input.validity.valid ? \"valid\" : \"invalid\");\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e.target.value);\n if (touched && validateThis) {\n updateValidationState();\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true);\n if (validateThis) {\n updateValidationState();\n }\n onBlur?.(e);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n onFocus?.(e);\n };\n\n // Side element width calculation\n useEffect(() => {\n const updateWidth = (el: HTMLDivElement | null, pos: \"left\" | \"right\") => {\n if (!el) return;\n const formItem = el.closest(\"[data-form-item]\") as HTMLElement;\n formItem?.style.setProperty(\n `--side-element-${pos}-width`,\n `${el.getBoundingClientRect().width}px`\n );\n };\n\n if (innerTextLeft || innerIconLeft) {\n updateWidth(leftElementRef.current, \"left\");\n }\n if (innerTextRight || innerIconRight) {\n updateWidth(rightElementRef.current, \"right\");\n }\n }, [innerTextLeft, innerTextRight, innerIconLeft, innerIconRight]);\n\n const renderSideElement = (\n content: React.ReactNode,\n position: \"left\" | \"right\",\n elRef: React.RefObject<HTMLDivElement | null>\n ) => {\n if (!content) return null;\n\n const isText = typeof content === \"string\";\n const contentProps = React.isValidElement(content) ? (content.props as Record<string, unknown>) : {};\n const isInteractive =\n !isText &&\n React.isValidElement(content) &&\n (contentProps.onClick ||\n contentProps.onKeyDown ||\n content.type === \"button\" ||\n content.type === \"a\");\n\n return (\n <Div\n ref={elRef}\n data-input-side-element\n className={`${position} ${isText ? \"is-text\" : \"is-icon\"} ${isInteractive ? \"is-interactive\" : \"\"}`}\n aria-hidden=\"true\"\n >\n {content}\n </Div>\n );\n };\n\n const hasLeftElement = Boolean(innerIconLeft || innerTextLeft);\n const hasRightElement = Boolean(innerIconRight || innerTextRight);\n\n // Separate wrapper-level props (margin, padding, etc.) from input-specific props\n const { wrapperProps, inputProps } = separateWrapperProps(props);\n\n // Stable id so help/error text in FormItem can be linked back via\n // aria-describedby. Falls back to a React.useId when the consumer\n // doesn't pass one explicitly.\n const reactId = React.useId();\n const finalId = id || `input-${reactId.replace(/:/g, \"\")}`;\n const { describedBy } = deriveAriaIds(finalId, helpText, errorText);\n const hasError = Boolean(errorText) || ariaInvalid || invalid;\n\n return (\n <FormItem\n label={label}\n hideLabel={hideLabel}\n htmlFor={finalId}\n helpText={helpText}\n errorText={errorText}\n validationState={validationState}\n required={required}\n size={size}\n {...wrapperProps}\n >\n <Element<InputFieldElementType>\n as=\"input\"\n ref={mergeRefs}\n data-input-field\n id={finalId}\n name={name}\n type={type}\n value={value}\n defaultValue={defaultValue}\n placeholder={placeholder || \" \"}\n autoComplete={autoComplete}\n maxLength={maxLength}\n minLength={minLength}\n pattern={pattern}\n readOnly={readOnly}\n disabled={disabled}\n required={required}\n className={[\n className,\n hasLeftElement && \"with-left-element\",\n hasRightElement && \"with-right-element\",\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-label={ariaLabel || label}\n aria-invalid={hasError || undefined}\n aria-required={required}\n aria-describedby={mergeDescribedBy(ariaDescribedBy, describedBy)}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n {...inputProps}\n />\n {(hasLeftElement || hasRightElement) && (\n <Div data-input-helper aria-hidden=\"true\">\n {renderSideElement(innerIconLeft || innerTextLeft, \"left\", leftElementRef)}\n {renderSideElement(innerIconRight || innerTextRight, \"right\", rightElementRef)}\n </Div>\n )}\n </FormItem>\n );\n }\n);\nInputField.displayName = \"InputField\";\n"],"names":["InputField","React","label","hideLabel","helpText","errorText","size","required","innerIconLeft","innerIconRight","innerTextLeft","innerTextRight","validateThis","valid","invalid","externalValidationState","onChange","onBlur","onFocus","ariaLabel","ariaInvalid","ariaDescribedBy","id","name","value","defaultValue","type","placeholder","autoComplete","maxLength","minLength","pattern","readOnly","disabled","className","props","ref","leftElementRef","useRef","rightElementRef","internalInputRef","touched","setTouched","useState","internalValidationState","setInternalValidationState","validationState","mergeRefs","el","updateValidationState","input","handleChange","e","handleBlur","handleFocus","useEffect","updateWidth","pos","formItem","renderSideElement","content","position","elRef","isText","contentProps","isInteractive","jsx","Div","hasLeftElement","hasRightElement","wrapperProps","inputProps","separateWrapperProps","reactId","finalId","describedBy","deriveAriaIds","hasError","jsxs","FormItem","Element","mergeDescribedBy"],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import { jsx as m } from "react/jsx-runtime";
3
+ import s from "react";
4
+ import { Element as p } from "../../Element/Element.js";
5
+ const n = s.forwardRef(
6
+ ({
7
+ label: r,
8
+ hideLabel: t,
9
+ htmlFor: a,
10
+ ...l
11
+ }, o) => {
12
+ let e = [];
13
+ return t && e.push("sr-only"), /* @__PURE__ */ m(
14
+ p,
15
+ {
16
+ as: "label",
17
+ ref: o,
18
+ htmlFor: a,
19
+ classNames: e,
20
+ ...l,
21
+ children: r
22
+ }
23
+ );
24
+ }
25
+ );
26
+ n.displayName = "InputLabel";
27
+ export {
28
+ n as InputLabel
29
+ };
30
+ //# sourceMappingURL=InputLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputLabel.js","sources":["../../../../src/components/Form/InputLabel/InputLabel.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// ELEMENT =============================================================================================================\nimport { CommonAndHTMLProps } from \"../../Element/constants\";\n\n// OTHER ===============================================================================================================\nimport { Element } from \"$element\";\n\n// prettier-ignore\nexport interface InputLabelCustomProps {\n label ? : string;\n htmlFor ? : string;\n hideLabel ? : boolean;\n}\n\nexport type InputLabelElementType = HTMLLabelElement;\nexport type InputLabelProps = Omit<CommonAndHTMLProps<InputLabelElementType>, keyof InputLabelCustomProps> &\n InputLabelCustomProps;\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const InputLabel = React.forwardRef(\n (\n {\n label,\n hideLabel,\n htmlFor,\n ...props\n }: InputLabelProps,\n ref: React.Ref<InputLabelElementType>\n ) => {\n let classNames = [];\n\n if (hideLabel) {\n classNames.push(\"sr-only\");\n }\n\n return (\n <Element<InputLabelElementType>\n as=\"label\"\n ref={ref}\n htmlFor={htmlFor}\n classNames={classNames}\n {...props}\n >\n {label}\n </Element>\n );\n }\n);\nInputLabel.displayName = \"InputLabel\";\n"],"names":["InputLabel","React","label","hideLabel","htmlFor","props","ref","classNames","jsx","Element"],"mappings":";;;AAqBO,MAAMA,IAAaC,EAAM;AAAA,EAC5B,CACI;AAAA,IACI,OAAAC;AAAA,IACA,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAEPC,MACC;AACD,QAAIC,IAAa,CAAA;AAEjB,WAAIJ,KACAI,EAAW,KAAK,SAAS,GAIzB,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,KAAAH;AAAA,QACA,SAAAF;AAAA,QACA,YAAAG;AAAA,QACC,GAAGF;AAAA,QAEH,UAAAH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGb;AACJ;AACAF,EAAW,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListBox.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/ListBox/ListBox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAuE,MAAM,OAAO,CAAC;AAa5F,OAAO,gBAAgB,CAAC;AAMxB,OAAO,EAA2D,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAK1G,eAAO,MAAM,OAAO,kMAoYnB,CAAC"}
1
+ {"version":3,"file":"ListBox.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/ListBox/ListBox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAuE,MAAM,OAAO,CAAC;AAa5F,OAAO,gBAAgB,CAAC;AAMxB,OAAO,EAA2D,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAK1G,eAAO,MAAM,OAAO,kMAmanB,CAAC"}