@component-labs/ui 0.0.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 (114) hide show
  1. package/dist/HMKTUWOU-DlOdK4rt.js +25 -0
  2. package/dist/HMKTUWOU-DlOdK4rt.js.map +1 -0
  3. package/dist/HOITXJDS-DBccNHOl.js +48 -0
  4. package/dist/HOITXJDS-DBccNHOl.js.map +1 -0
  5. package/dist/I7KWAPMF-CcAk8kiH.js +86 -0
  6. package/dist/I7KWAPMF-CcAk8kiH.js.map +1 -0
  7. package/dist/IQYAUKXT-CoP_Jrsi.js +546 -0
  8. package/dist/IQYAUKXT-CoP_Jrsi.js.map +1 -0
  9. package/dist/PZ3OL7I2-h7WHitqi.js +61 -0
  10. package/dist/PZ3OL7I2-h7WHitqi.js.map +1 -0
  11. package/dist/Provider.d.ts +8 -0
  12. package/dist/Provider.d.ts.map +1 -0
  13. package/dist/Q5W46E73-DjlVG3LH.js +353 -0
  14. package/dist/Q5W46E73-DjlVG3LH.js.map +1 -0
  15. package/dist/U6HHPQDW-BkT6kvCd.js +888 -0
  16. package/dist/U6HHPQDW-BkT6kvCd.js.map +1 -0
  17. package/dist/X6LNAU2F-DroCIVyL.js +1692 -0
  18. package/dist/X6LNAU2F-DroCIVyL.js.map +1 -0
  19. package/dist/Z32PU2LQ-CPSDShGU.js +1116 -0
  20. package/dist/Z32PU2LQ-CPSDShGU.js.map +1 -0
  21. package/dist/button.d.ts +4 -0
  22. package/dist/button.d.ts.map +1 -0
  23. package/dist/button.js +252 -0
  24. package/dist/button.js.map +1 -0
  25. package/dist/checkbox.d.ts +4 -0
  26. package/dist/checkbox.d.ts.map +1 -0
  27. package/dist/checkbox.js +210 -0
  28. package/dist/checkbox.js.map +1 -0
  29. package/dist/combobox.d.ts +4 -0
  30. package/dist/combobox.d.ts.map +1 -0
  31. package/dist/combobox.js +948 -0
  32. package/dist/combobox.js.map +1 -0
  33. package/dist/components/button/Button.d.ts +26 -0
  34. package/dist/components/button/Button.d.ts.map +1 -0
  35. package/dist/components/button/Button.docs.d.ts +4 -0
  36. package/dist/components/button/Button.docs.d.ts.map +1 -0
  37. package/dist/components/button/Button.showcase.d.ts +40 -0
  38. package/dist/components/button/Button.showcase.d.ts.map +1 -0
  39. package/dist/components/checkbox/Checkbox.d.ts +19 -0
  40. package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
  41. package/dist/components/checkbox/Checkbox.docs.d.ts +4 -0
  42. package/dist/components/checkbox/Checkbox.docs.d.ts.map +1 -0
  43. package/dist/components/checkbox/Checkbox.showcase.d.ts +35 -0
  44. package/dist/components/checkbox/Checkbox.showcase.d.ts.map +1 -0
  45. package/dist/components/combobox/Combobox.d.ts +36 -0
  46. package/dist/components/combobox/Combobox.d.ts.map +1 -0
  47. package/dist/components/combobox/Combobox.docs.d.ts +4 -0
  48. package/dist/components/combobox/Combobox.docs.d.ts.map +1 -0
  49. package/dist/components/combobox/Combobox.showcase.d.ts +43 -0
  50. package/dist/components/combobox/Combobox.showcase.d.ts.map +1 -0
  51. package/dist/components/data-table/DataTable.d.ts +86 -0
  52. package/dist/components/data-table/DataTable.d.ts.map +1 -0
  53. package/dist/components/data-table/DataTable.docs.d.ts +4 -0
  54. package/dist/components/data-table/DataTable.docs.d.ts.map +1 -0
  55. package/dist/components/data-table/DataTable.showcase.d.ts +36 -0
  56. package/dist/components/data-table/DataTable.showcase.d.ts.map +1 -0
  57. package/dist/components/date-picker/date-picker.d.ts +1 -0
  58. package/dist/components/date-picker/date-picker.d.ts.map +1 -0
  59. package/dist/components/dialog/Dialog.d.ts +56 -0
  60. package/dist/components/dialog/Dialog.d.ts.map +1 -0
  61. package/dist/components/dialog/Dialog.docs.d.ts +4 -0
  62. package/dist/components/dialog/Dialog.docs.d.ts.map +1 -0
  63. package/dist/components/input/Input.d.ts +22 -0
  64. package/dist/components/input/Input.d.ts.map +1 -0
  65. package/dist/components/input/Input.docs.d.ts +4 -0
  66. package/dist/components/input/Input.docs.d.ts.map +1 -0
  67. package/dist/components/menu/Menu.d.ts +41 -0
  68. package/dist/components/menu/Menu.d.ts.map +1 -0
  69. package/dist/components/menu/Menu.docs.d.ts +4 -0
  70. package/dist/components/menu/Menu.docs.d.ts.map +1 -0
  71. package/dist/components/menu/Menu.showcase.d.ts +43 -0
  72. package/dist/components/menu/Menu.showcase.d.ts.map +1 -0
  73. package/dist/components/slider/date-picker.d.ts +1 -0
  74. package/dist/components/slider/date-picker.d.ts.map +1 -0
  75. package/dist/components/sub-menu/date-picker.d.ts +1 -0
  76. package/dist/components/sub-menu/date-picker.d.ts.map +1 -0
  77. package/dist/components/switch/Switch.d.ts +17 -0
  78. package/dist/components/switch/Switch.d.ts.map +1 -0
  79. package/dist/components/switch/Switch.docs.d.ts +4 -0
  80. package/dist/components/switch/Switch.docs.d.ts.map +1 -0
  81. package/dist/components/toast/date-picker.d.ts +1 -0
  82. package/dist/components/toast/date-picker.d.ts.map +1 -0
  83. package/dist/data-table.d.ts +4 -0
  84. package/dist/data-table.d.ts.map +1 -0
  85. package/dist/data-table.js +298 -0
  86. package/dist/data-table.js.map +1 -0
  87. package/dist/dialog.d.ts +4 -0
  88. package/dist/dialog.d.ts.map +1 -0
  89. package/dist/dialog.js +323 -0
  90. package/dist/dialog.js.map +1 -0
  91. package/dist/index.d.ts +27 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/input.d.ts +4 -0
  94. package/dist/input.d.ts.map +1 -0
  95. package/dist/input.js +230 -0
  96. package/dist/input.js.map +1 -0
  97. package/dist/lib/IntersectionObserver.d.ts +30 -0
  98. package/dist/lib/IntersectionObserver.d.ts.map +1 -0
  99. package/dist/lib/utils.d.ts +7 -0
  100. package/dist/lib/utils.d.ts.map +1 -0
  101. package/dist/menu.d.ts +4 -0
  102. package/dist/menu.d.ts.map +1 -0
  103. package/dist/menu.js +1335 -0
  104. package/dist/menu.js.map +1 -0
  105. package/dist/switch.d.ts +4 -0
  106. package/dist/switch.d.ts.map +1 -0
  107. package/dist/switch.js +194 -0
  108. package/dist/switch.js.map +1 -0
  109. package/dist/types/docs.d.ts +24 -0
  110. package/dist/types/docs.d.ts.map +1 -0
  111. package/dist/utils-BZvHF7th.js +2806 -0
  112. package/dist/utils-BZvHF7th.js.map +1 -0
  113. package/package.json +98 -0
  114. package/src/styles.css +91 -0
@@ -0,0 +1,4 @@
1
+ export { Dialog } from './components/dialog/Dialog';
2
+ export type { DialogRootProps, DialogTriggerProps, DialogContentProps, DialogTitleProps, DialogDescriptionProps, DialogFooterProps, DialogCloseProps, } from './components/dialog/Dialog';
3
+ export { dialogDocs } from './components/dialog/Dialog.docs';
4
+ //# sourceMappingURL=dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../src/dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC"}
package/dist/dialog.js ADDED
@@ -0,0 +1,323 @@
1
+ import { jsxs as p, jsx as n, Fragment as R } from "react/jsx-runtime";
2
+ import { D as B, u as w, H as F, a as O, b as E, d as P } from "./Z32PU2LQ-CPSDShGU.js";
3
+ import { f as s, c as g, a as d, l as f, h as C, C as A, d as $, J as I, m as S } from "./U6HHPQDW-BkT6kvCd.js";
4
+ import { useContext as c, useMemo as v, useRef as j, createContext as z, forwardRef as u } from "react";
5
+ import { u as L } from "./HMKTUWOU-DlOdK4rt.js";
6
+ import { a as b, c as r } from "./utils-BZvHF7th.js";
7
+ var M = "p", U = g(function({ store: o, ...e }) {
8
+ const a = c(B), i = f(e.id);
9
+ return C(() => (a == null || a(i), () => a == null ? void 0 : a(void 0)), [a, i]), e = {
10
+ id: i,
11
+ ...e
12
+ }, A(e);
13
+ }), V = s(function(o) {
14
+ const e = U(o);
15
+ return d(M, e);
16
+ }), W = "button", J = g(
17
+ function({ store: o, ...e }) {
18
+ const a = w();
19
+ o = o || a;
20
+ const i = e.onClick, l = $((m) => {
21
+ i == null || i(m), !m.defaultPrevented && (o == null || o.hide());
22
+ });
23
+ return e = {
24
+ "data-dialog-dismiss": "",
25
+ children: v(
26
+ () => /* @__PURE__ */ p(
27
+ "svg",
28
+ {
29
+ "aria-label": "Dismiss popup",
30
+ display: "block",
31
+ fill: "none",
32
+ stroke: "currentColor",
33
+ strokeLinecap: "round",
34
+ strokeLinejoin: "round",
35
+ strokeWidth: 1.5,
36
+ viewBox: "0 0 16 16",
37
+ height: "1em",
38
+ width: "1em",
39
+ children: [
40
+ /* @__PURE__ */ n("line", { x1: "4", y1: "4", x2: "12", y2: "12" }),
41
+ /* @__PURE__ */ n("line", { x1: "4", y1: "12", x2: "12", y2: "4" })
42
+ ]
43
+ }
44
+ ),
45
+ []
46
+ ),
47
+ ...e,
48
+ onClick: l
49
+ }, e = L(e), e;
50
+ }
51
+ ), q = s(function(o) {
52
+ const e = J(o);
53
+ return d(W, e);
54
+ }), G = "h1", h = g(
55
+ function(o) {
56
+ const e = j(null), a = c(F) || 1, i = `h${a}`, l = I(e, i), D = v(
57
+ () => !!l && /^h\d$/.test(l),
58
+ [l]
59
+ );
60
+ return o = {
61
+ render: /* @__PURE__ */ n(i, {}),
62
+ role: D ? void 0 : "heading",
63
+ "aria-level": D ? void 0 : a,
64
+ ...o,
65
+ ref: S(e, o.ref)
66
+ }, o;
67
+ }
68
+ );
69
+ s(function(o) {
70
+ const e = h(o);
71
+ return d(G, e);
72
+ });
73
+ var K = "h1", Q = g(
74
+ function({ store: o, ...e }) {
75
+ const a = c(O), i = f(e.id);
76
+ return C(() => (a == null || a(i), () => a == null ? void 0 : a(void 0)), [a, i]), e = {
77
+ id: i,
78
+ ...e
79
+ }, e = h(e), e;
80
+ }
81
+ ), X = s(function(o) {
82
+ const e = Q(o);
83
+ return d(K, e);
84
+ });
85
+ const Y = b([
86
+ "fixed inset-0 z-50 bg-black/50",
87
+ "data-enter:animate-in data-enter:fade-in-0",
88
+ "data-leave:animate-out data-leave:fade-out-0"
89
+ ]), Z = b([
90
+ "fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2",
91
+ "w-full max-w-lg",
92
+ "rounded-lg border bg-white p-6 shadow-lg",
93
+ "dark:bg-gray-900 dark:border-gray-700",
94
+ "data-enter:animate-in data-enter:fade-in-0 data-enter:zoom-in-95",
95
+ "data-leave:animate-out data-leave:fade-out-0 data-leave:zoom-out-95"
96
+ ]);
97
+ function _({
98
+ children: t,
99
+ open: o,
100
+ onOpenChange: e,
101
+ defaultOpen: a
102
+ }) {
103
+ const i = P({
104
+ open: o,
105
+ setOpen: e,
106
+ defaultOpen: a
107
+ });
108
+ return /* @__PURE__ */ n(y.Provider, { value: i, children: t });
109
+ }
110
+ const y = z(null);
111
+ function x() {
112
+ const t = c(y);
113
+ if (!t)
114
+ throw new Error("Dialog components must be used within DialogRoot");
115
+ return t;
116
+ }
117
+ function ee({ children: t, className: o }) {
118
+ const e = x();
119
+ return /* @__PURE__ */ n(
120
+ "button",
121
+ {
122
+ onClick: () => e.setOpen(!0),
123
+ className: o,
124
+ type: "button",
125
+ children: t
126
+ }
127
+ );
128
+ }
129
+ const T = u(
130
+ ({ backdrop: t = !0, className: o, children: e, ...a }, i) => {
131
+ const l = x();
132
+ return /* @__PURE__ */ p(R, { children: [
133
+ t && /* @__PURE__ */ n(
134
+ "div",
135
+ {
136
+ className: Y(),
137
+ onClick: () => l.setOpen(!1)
138
+ }
139
+ ),
140
+ /* @__PURE__ */ n(
141
+ E,
142
+ {
143
+ ref: i,
144
+ store: l,
145
+ className: r(Z(), o),
146
+ ...a,
147
+ children: e
148
+ }
149
+ )
150
+ ] });
151
+ }
152
+ );
153
+ T.displayName = "DialogContent";
154
+ function oe({ children: t, className: o }) {
155
+ return /* @__PURE__ */ n("div", { className: r("mb-4 space-y-1.5", o), children: t });
156
+ }
157
+ const k = u(
158
+ ({ children: t, className: o }, e) => /* @__PURE__ */ n(
159
+ X,
160
+ {
161
+ ref: e,
162
+ className: r(
163
+ "text-lg font-semibold text-gray-900 dark:text-gray-100",
164
+ o
165
+ ),
166
+ children: t
167
+ }
168
+ )
169
+ );
170
+ k.displayName = "DialogTitle";
171
+ const H = u(({ children: t, className: o }, e) => /* @__PURE__ */ n(
172
+ V,
173
+ {
174
+ ref: e,
175
+ className: r("text-sm text-gray-500 dark:text-gray-400", o),
176
+ children: t
177
+ }
178
+ ));
179
+ H.displayName = "DialogDescription";
180
+ function te({ children: t, className: o }) {
181
+ return /* @__PURE__ */ n("div", { className: r("mt-6 flex justify-end gap-2", o), children: t });
182
+ }
183
+ const N = u(
184
+ ({ children: t, className: o }, e) => /* @__PURE__ */ n(q, { ref: e, className: o, children: t })
185
+ );
186
+ N.displayName = "DialogClose";
187
+ const ge = {
188
+ Root: _,
189
+ Trigger: ee,
190
+ Content: T,
191
+ Header: oe,
192
+ Title: k,
193
+ Description: H,
194
+ Footer: te,
195
+ Close: N
196
+ }, de = {
197
+ name: "Dialog",
198
+ description: "Modal dialog with focus trap and accessible dismissal, built on Ariakit.",
199
+ category: "Feedback",
200
+ installation: "pnpm add @component-labs/ui",
201
+ usage: `import { Dialog } from "@component-labs/ui";
202
+
203
+ <Dialog.Root>
204
+ <Dialog.Trigger>Open Dialog</Dialog.Trigger>
205
+ <Dialog.Content>
206
+ <Dialog.Header>
207
+ <Dialog.Title>Title</Dialog.Title>
208
+ <Dialog.Description>Description</Dialog.Description>
209
+ </Dialog.Header>
210
+ <Dialog.Footer>
211
+ <Dialog.Close>Close</Dialog.Close>
212
+ </Dialog.Footer>
213
+ </Dialog.Content>
214
+ </Dialog.Root>`,
215
+ props: [
216
+ {
217
+ name: "open",
218
+ type: "boolean",
219
+ description: "Controlled open state (Dialog.Root)"
220
+ },
221
+ {
222
+ name: "onOpenChange",
223
+ type: "(open: boolean) => void",
224
+ description: "Callback when open state changes (Dialog.Root)"
225
+ },
226
+ {
227
+ name: "defaultOpen",
228
+ type: "boolean",
229
+ description: "Default open state for uncontrolled usage (Dialog.Root)",
230
+ default: "false"
231
+ },
232
+ {
233
+ name: "backdrop",
234
+ type: "boolean",
235
+ description: "Whether to show the backdrop overlay (Dialog.Content)",
236
+ default: "true"
237
+ }
238
+ ],
239
+ examples: [
240
+ {
241
+ title: "Basic Dialog",
242
+ code: `<Dialog.Root>
243
+ <Dialog.Trigger>
244
+ <Button>Open Dialog</Button>
245
+ </Dialog.Trigger>
246
+ <Dialog.Content>
247
+ <Dialog.Header>
248
+ <Dialog.Title>Are you sure?</Dialog.Title>
249
+ <Dialog.Description>
250
+ This action cannot be undone.
251
+ </Dialog.Description>
252
+ </Dialog.Header>
253
+ <Dialog.Footer>
254
+ <Dialog.Close>
255
+ <Button variant="ghost">Cancel</Button>
256
+ </Dialog.Close>
257
+ <Button variant="destructive">Delete</Button>
258
+ </Dialog.Footer>
259
+ </Dialog.Content>
260
+ </Dialog.Root>`,
261
+ description: "Simple confirmation dialog"
262
+ },
263
+ {
264
+ title: "Controlled Dialog",
265
+ code: `const [open, setOpen] = useState(false);
266
+
267
+ <Dialog.Root open={open} onOpenChange={setOpen}>
268
+ <Dialog.Trigger>
269
+ <Button>Open</Button>
270
+ </Dialog.Trigger>
271
+ <Dialog.Content>
272
+ <Dialog.Header>
273
+ <Dialog.Title>Controlled Dialog</Dialog.Title>
274
+ </Dialog.Header>
275
+ <p>Dialog is {open ? 'open' : 'closed'}</p>
276
+ </Dialog.Content>
277
+ </Dialog.Root>`,
278
+ description: "Using dialog in controlled mode"
279
+ },
280
+ {
281
+ title: "Form Dialog",
282
+ code: `<Dialog.Root>
283
+ <Dialog.Trigger>
284
+ <Button>Add User</Button>
285
+ </Dialog.Trigger>
286
+ <Dialog.Content>
287
+ <Dialog.Header>
288
+ <Dialog.Title>Create Account</Dialog.Title>
289
+ <Dialog.Description>
290
+ Enter user details below
291
+ </Dialog.Description>
292
+ </Dialog.Header>
293
+ <form className="space-y-4">
294
+ <Input label="Name" />
295
+ <Input label="Email" type="email" />
296
+ </form>
297
+ <Dialog.Footer>
298
+ <Dialog.Close>
299
+ <Button variant="outline">Cancel</Button>
300
+ </Dialog.Close>
301
+ <Button type="submit">Create</Button>
302
+ </Dialog.Footer>
303
+ </Dialog.Content>
304
+ </Dialog.Root>`,
305
+ description: "Dialog with form content"
306
+ }
307
+ ],
308
+ accessibility: [
309
+ "Built on Ariakit's accessible Dialog component",
310
+ "Focus trap - keeps focus within dialog",
311
+ "Escape key to close",
312
+ "Click outside/backdrop to dismiss",
313
+ "Proper ARIA attributes (role='dialog', aria-modal)",
314
+ "Focus returns to trigger on close",
315
+ "Screen reader announcements"
316
+ ],
317
+ relatedComponents: ["Toast"]
318
+ };
319
+ export {
320
+ ge as Dialog,
321
+ de as dialogDocs
322
+ };
323
+ //# sourceMappingURL=dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.js","sources":["../../../node_modules/.pnpm/@ariakit+react-core@0.4.21_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@ariakit/react-core/esm/__chunks/WHZCNP67.js","../../../node_modules/.pnpm/@ariakit+react-core@0.4.21_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@ariakit/react-core/esm/__chunks/OCCHVUS4.js","../../../node_modules/.pnpm/@ariakit+react-core@0.4.21_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@ariakit/react-core/esm/__chunks/FLYCYZJT.js","../../../node_modules/.pnpm/@ariakit+react-core@0.4.21_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@ariakit/react-core/esm/__chunks/O4VW3LHI.js","../src/components/dialog/Dialog.tsx","../src/components/dialog/Dialog.docs.ts"],"sourcesContent":["\"use client\";\nimport {\n DialogDescriptionContext\n} from \"./A62MDFCW.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"./GWSL6KNJ.js\";\nimport {\n useId,\n useSafeLayoutEffect\n} from \"./KPHZR4MB.js\";\n\n// src/dialog/dialog-description.tsx\nimport { removeUndefinedValues } from \"@ariakit/core/utils/misc\";\nimport { useContext } from \"react\";\nvar TagName = \"p\";\nvar useDialogDescription = createHook(function useDialogDescription2({ store, ...props }) {\n const setDescriptionId = useContext(DialogDescriptionContext);\n const id = useId(props.id);\n useSafeLayoutEffect(() => {\n setDescriptionId == null ? void 0 : setDescriptionId(id);\n return () => setDescriptionId == null ? void 0 : setDescriptionId(void 0);\n }, [setDescriptionId, id]);\n props = {\n id,\n ...props\n };\n return removeUndefinedValues(props);\n});\nvar DialogDescription = forwardRef(function DialogDescription2(props) {\n const htmlProps = useDialogDescription(props);\n return createElement(TagName, htmlProps);\n});\n\nexport {\n useDialogDescription,\n DialogDescription\n};\n","\"use client\";\nimport {\n useDialogScopedContext\n} from \"./A62MDFCW.js\";\nimport {\n useButton\n} from \"./HMKTUWOU.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"./GWSL6KNJ.js\";\nimport {\n useEvent\n} from \"./KPHZR4MB.js\";\n\n// src/dialog/dialog-dismiss.tsx\nimport { useMemo } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar TagName = \"button\";\nvar useDialogDismiss = createHook(\n function useDialogDismiss2({ store, ...props }) {\n const context = useDialogScopedContext();\n store = store || context;\n const onClickProp = props.onClick;\n const onClick = useEvent((event) => {\n onClickProp == null ? void 0 : onClickProp(event);\n if (event.defaultPrevented) return;\n store == null ? void 0 : store.hide();\n });\n const children = useMemo(\n () => /* @__PURE__ */ jsxs(\n \"svg\",\n {\n \"aria-label\": \"Dismiss popup\",\n display: \"block\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5,\n viewBox: \"0 0 16 16\",\n height: \"1em\",\n width: \"1em\",\n children: [\n /* @__PURE__ */ jsx(\"line\", { x1: \"4\", y1: \"4\", x2: \"12\", y2: \"12\" }),\n /* @__PURE__ */ jsx(\"line\", { x1: \"4\", y1: \"12\", x2: \"12\", y2: \"4\" })\n ]\n }\n ),\n []\n );\n props = {\n \"data-dialog-dismiss\": \"\",\n children,\n ...props,\n onClick\n };\n props = useButton(props);\n return props;\n }\n);\nvar DialogDismiss = forwardRef(function DialogDismiss2(props) {\n const htmlProps = useDialogDismiss(props);\n return createElement(TagName, htmlProps);\n});\n\nexport {\n useDialogDismiss,\n DialogDismiss\n};\n","\"use client\";\nimport {\n HeadingContext\n} from \"./CZ4GFWYL.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"./GWSL6KNJ.js\";\nimport {\n useMergeRefs,\n useTagName\n} from \"./KPHZR4MB.js\";\n\n// src/heading/heading.tsx\nimport { useContext, useMemo, useRef } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"h1\";\nvar useHeading = createHook(\n function useHeading2(props) {\n const ref = useRef(null);\n const level = useContext(HeadingContext) || 1;\n const Element = `h${level}`;\n const tagName = useTagName(ref, Element);\n const isNativeHeading = useMemo(\n () => !!tagName && /^h\\d$/.test(tagName),\n [tagName]\n );\n props = {\n render: /* @__PURE__ */ jsx(Element, {}),\n role: !isNativeHeading ? \"heading\" : void 0,\n \"aria-level\": !isNativeHeading ? level : void 0,\n ...props,\n ref: useMergeRefs(ref, props.ref)\n };\n return props;\n }\n);\nvar Heading = forwardRef(function Heading2(props) {\n const htmlProps = useHeading(props);\n return createElement(TagName, htmlProps);\n});\n\nexport {\n useHeading,\n Heading\n};\n","\"use client\";\nimport {\n useHeading\n} from \"./FLYCYZJT.js\";\nimport {\n DialogHeadingContext\n} from \"./A62MDFCW.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"./GWSL6KNJ.js\";\nimport {\n useId,\n useSafeLayoutEffect\n} from \"./KPHZR4MB.js\";\n\n// src/dialog/dialog-heading.tsx\nimport { useContext } from \"react\";\nvar TagName = \"h1\";\nvar useDialogHeading = createHook(\n function useDialogHeading2({ store, ...props }) {\n const setHeadingId = useContext(DialogHeadingContext);\n const id = useId(props.id);\n useSafeLayoutEffect(() => {\n setHeadingId == null ? void 0 : setHeadingId(id);\n return () => setHeadingId == null ? void 0 : setHeadingId(void 0);\n }, [setHeadingId, id]);\n props = {\n id,\n ...props\n };\n props = useHeading(props);\n return props;\n }\n);\nvar DialogHeading = forwardRef(function DialogHeading2(props) {\n const htmlProps = useDialogHeading(props);\n return createElement(TagName, htmlProps);\n});\n\nexport {\n useDialogHeading,\n DialogHeading\n};\n","import {\n Dialog as AriaDialog,\n DialogDismiss,\n DialogHeading,\n DialogDescription as AriaDialogDescription,\n useDialogStore,\n type DialogProps as AriaDialogProps,\n type DialogStore,\n} from \"@ariakit/react\";\nimport { cva } from \"class-variance-authority\";\nimport { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nconst overlayVariants = cva([\n \"fixed inset-0 z-50 bg-black/50\",\n \"data-enter:animate-in data-enter:fade-in-0\",\n \"data-leave:animate-out data-leave:fade-out-0\",\n]);\n\nconst dialogVariants = cva([\n \"fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2\",\n \"w-full max-w-lg\",\n \"rounded-lg border bg-white p-6 shadow-lg\",\n \"dark:bg-gray-900 dark:border-gray-700\",\n \"data-enter:animate-in data-enter:fade-in-0 data-enter:zoom-in-95\",\n \"data-leave:animate-out data-leave:fade-out-0 data-leave:zoom-out-95\",\n]);\n\n// Dialog Root with Store\nexport interface DialogRootProps {\n children: ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n defaultOpen?: boolean;\n}\n\nexport function DialogRoot({\n children,\n open,\n onOpenChange,\n defaultOpen,\n}: DialogRootProps) {\n const dialog = useDialogStore({\n open,\n setOpen: onOpenChange,\n defaultOpen,\n });\n\n return <DialogContext.Provider value={dialog}>{children}</DialogContext.Provider>;\n}\n\n// Context for dialog store\nimport { createContext, useContext } from \"react\";\n\nconst DialogContext = createContext<DialogStore | null>(null);\n\nfunction useDialog() {\n const context = useContext(DialogContext);\n if (!context) {\n throw new Error(\"Dialog components must be used within DialogRoot\");\n }\n return context;\n}\n\n// Dialog Trigger\nexport interface DialogTriggerProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function DialogTrigger({ children, className }: DialogTriggerProps) {\n const dialog = useDialog();\n\n return (\n <button\n onClick={() => dialog.setOpen(true)}\n className={className}\n type=\"button\"\n >\n {children}\n </button>\n );\n}\n\n// Dialog Content\nexport interface DialogContentProps extends Omit<AriaDialogProps, \"store\"> {\n /** Whether to show the backdrop overlay */\n backdrop?: boolean;\n}\n\nexport const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n ({ backdrop = true, className, children, ...props }, ref) => {\n const dialog = useDialog();\n\n return (\n <>\n {backdrop && (\n <div\n className={overlayVariants()}\n onClick={() => dialog.setOpen(false)}\n />\n )}\n <AriaDialog\n ref={ref}\n store={dialog}\n className={cn(dialogVariants(), className)}\n {...props}\n >\n {children}\n </AriaDialog>\n </>\n );\n },\n);\n\nDialogContent.displayName = \"DialogContent\";\n\n// Dialog Header\nexport interface DialogHeaderProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function DialogHeader({ children, className }: DialogHeaderProps) {\n return (\n <div className={cn(\"mb-4 space-y-1.5\", className)}>\n {children}\n </div>\n );\n}\n\n// Dialog Title\nexport interface DialogTitleProps {\n children: ReactNode;\n className?: string;\n}\n\nexport const DialogTitle = forwardRef<HTMLHeadingElement, DialogTitleProps>(\n ({ children, className }, ref) => {\n return (\n <DialogHeading\n ref={ref}\n className={cn(\n \"text-lg font-semibold text-gray-900 dark:text-gray-100\",\n className,\n )}\n >\n {children}\n </DialogHeading>\n );\n },\n);\n\nDialogTitle.displayName = \"DialogTitle\";\n\n// Dialog Description\nexport interface DialogDescriptionProps {\n children: ReactNode;\n className?: string;\n}\n\nexport const DialogDescription = forwardRef<\n HTMLParagraphElement,\n DialogDescriptionProps\n>(({ children, className }, ref) => {\n return (\n <AriaDialogDescription\n ref={ref}\n className={cn(\"text-sm text-gray-500 dark:text-gray-400\", className)}\n >\n {children}\n </AriaDialogDescription>\n );\n});\n\nDialogDescription.displayName = \"DialogDescription\";\n\n// Dialog Footer\nexport interface DialogFooterProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function DialogFooter({ children, className }: DialogFooterProps) {\n return (\n <div className={cn(\"mt-6 flex justify-end gap-2\", className)}>\n {children}\n </div>\n );\n}\n\n// Dialog Close\nexport interface DialogCloseProps {\n children: ReactNode;\n className?: string;\n}\n\nexport const DialogClose = forwardRef<HTMLButtonElement, DialogCloseProps>(\n ({ children, className }, ref) => {\n return (\n <DialogDismiss ref={ref} className={className}>\n {children}\n </DialogDismiss>\n );\n },\n);\n\nDialogClose.displayName = \"DialogClose\";\n\n// Compound component export\nexport const Dialog = {\n Root: DialogRoot,\n Trigger: DialogTrigger,\n Content: DialogContent,\n Header: DialogHeader,\n Title: DialogTitle,\n Description: DialogDescription,\n Footer: DialogFooter,\n Close: DialogClose,\n};\n","import type { ComponentDoc } from \"../../types/docs\";\n\nexport const dialogDocs: ComponentDoc = {\n name: \"Dialog\",\n description: \"Modal dialog with focus trap and accessible dismissal, built on Ariakit.\",\n category: \"Feedback\",\n installation: `pnpm add @component-labs/ui`,\n usage: `import { Dialog } from \"@component-labs/ui\";\n\n<Dialog.Root>\n <Dialog.Trigger>Open Dialog</Dialog.Trigger>\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>Title</Dialog.Title>\n <Dialog.Description>Description</Dialog.Description>\n </Dialog.Header>\n <Dialog.Footer>\n <Dialog.Close>Close</Dialog.Close>\n </Dialog.Footer>\n </Dialog.Content>\n</Dialog.Root>`,\n props: [\n {\n name: \"open\",\n type: \"boolean\",\n description: \"Controlled open state (Dialog.Root)\",\n },\n {\n name: \"onOpenChange\",\n type: \"(open: boolean) => void\",\n description: \"Callback when open state changes (Dialog.Root)\",\n },\n {\n name: \"defaultOpen\",\n type: \"boolean\",\n description: \"Default open state for uncontrolled usage (Dialog.Root)\",\n default: \"false\",\n },\n {\n name: \"backdrop\",\n type: \"boolean\",\n description: \"Whether to show the backdrop overlay (Dialog.Content)\",\n default: \"true\",\n },\n ],\n examples: [\n {\n title: \"Basic Dialog\",\n code: `<Dialog.Root>\n <Dialog.Trigger>\n <Button>Open Dialog</Button>\n </Dialog.Trigger>\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>Are you sure?</Dialog.Title>\n <Dialog.Description>\n This action cannot be undone.\n </Dialog.Description>\n </Dialog.Header>\n <Dialog.Footer>\n <Dialog.Close>\n <Button variant=\"ghost\">Cancel</Button>\n </Dialog.Close>\n <Button variant=\"destructive\">Delete</Button>\n </Dialog.Footer>\n </Dialog.Content>\n</Dialog.Root>`,\n description: \"Simple confirmation dialog\",\n },\n {\n title: \"Controlled Dialog\",\n code: `const [open, setOpen] = useState(false);\n\n<Dialog.Root open={open} onOpenChange={setOpen}>\n <Dialog.Trigger>\n <Button>Open</Button>\n </Dialog.Trigger>\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>Controlled Dialog</Dialog.Title>\n </Dialog.Header>\n <p>Dialog is {open ? 'open' : 'closed'}</p>\n </Dialog.Content>\n</Dialog.Root>`,\n description: \"Using dialog in controlled mode\",\n },\n {\n title: \"Form Dialog\",\n code: `<Dialog.Root>\n <Dialog.Trigger>\n <Button>Add User</Button>\n </Dialog.Trigger>\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>Create Account</Dialog.Title>\n <Dialog.Description>\n Enter user details below\n </Dialog.Description>\n </Dialog.Header>\n <form className=\"space-y-4\">\n <Input label=\"Name\" />\n <Input label=\"Email\" type=\"email\" />\n </form>\n <Dialog.Footer>\n <Dialog.Close>\n <Button variant=\"outline\">Cancel</Button>\n </Dialog.Close>\n <Button type=\"submit\">Create</Button>\n </Dialog.Footer>\n </Dialog.Content>\n</Dialog.Root>`,\n description: \"Dialog with form content\",\n },\n ],\n accessibility: [\n \"Built on Ariakit's accessible Dialog component\",\n \"Focus trap - keeps focus within dialog\",\n \"Escape key to close\",\n \"Click outside/backdrop to dismiss\",\n \"Proper ARIA attributes (role='dialog', aria-modal)\",\n \"Focus returns to trigger on close\",\n \"Screen reader announcements\",\n ],\n relatedComponents: [\"Toast\"],\n};\n"],"names":["TagName","useDialogDescription","createHook","store","props","setDescriptionId","useContext","DialogDescriptionContext","id","useId","useSafeLayoutEffect","removeUndefinedValues","DialogDescription","forwardRef","htmlProps","createElement","useDialogDismiss","context","useDialogScopedContext","onClickProp","onClick","useEvent","event","useMemo","jsxs","jsx","useButton","DialogDismiss","useHeading","ref","useRef","level","HeadingContext","Element","tagName","useTagName","isNativeHeading","useMergeRefs","useDialogHeading","setHeadingId","DialogHeadingContext","DialogHeading","overlayVariants","cva","dialogVariants","DialogRoot","children","open","onOpenChange","defaultOpen","dialog","useDialogStore","DialogContext","createContext","useDialog","DialogTrigger","className","DialogContent","backdrop","Fragment","AriaDialog","cn","DialogHeader","DialogTitle","AriaDialogDescription","DialogFooter","DialogClose","Dialog","dialogDocs"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
@@ -0,0 +1,27 @@
1
+ export { Button } from './components/button/Button';
2
+ export { Checkbox } from './components/checkbox/Checkbox';
3
+ export { Combobox } from './components/combobox/Combobox';
4
+ export { DataTable } from './components/data-table/DataTable';
5
+ export { Dialog } from './components/dialog/Dialog';
6
+ export { Input } from './components/input/Input';
7
+ export { Menu } from './components/menu/Menu';
8
+ export { Switch } from './components/switch/Switch';
9
+ export type { ButtonProps } from './components/button/Button';
10
+ export type { CheckboxProps } from './components/checkbox/Checkbox';
11
+ export type { ComboboxProps, ComboboxOption } from './components/combobox/Combobox';
12
+ export type { TableProps as DataTableProps } from './components/data-table/DataTable';
13
+ export type { InputProps } from './components/input/Input';
14
+ export type { SwitchProps } from './components/switch/Switch';
15
+ export type { MenuRootProps, MenuTriggerProps, MenuContentProps, MenuItemComponentProps as MenuItemProps, MenuItemCheckboxComponentProps as MenuItemCheckboxProps, MenuSeparatorComponentProps as MenuSeparatorProps, } from './components/menu/Menu';
16
+ export type { DialogRootProps, DialogTriggerProps, DialogContentProps, DialogTitleProps, DialogDescriptionProps, DialogFooterProps, DialogCloseProps, } from './components/dialog/Dialog';
17
+ export { cn } from './lib/utils';
18
+ export { buttonDocs } from './components/button/Button.docs';
19
+ export { checkboxDocs } from './components/checkbox/Checkbox.docs';
20
+ export { comboboxDocs } from './components/combobox/Combobox.docs';
21
+ export { dataTableDocs } from './components/data-table/DataTable.docs';
22
+ export { dialogDocs } from './components/dialog/Dialog.docs';
23
+ export { inputDocs } from './components/input/Input.docs';
24
+ export { menuDocs } from './components/menu/Menu.docs';
25
+ export { switchDocs } from './components/switch/Switch.docs';
26
+ export type { ComponentDoc, PropDoc, ExampleDoc } from './types/docs';
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGpD,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACpF,YAAY,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACtF,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,IAAI,aAAa,EACvC,8BAA8B,IAAI,qBAAqB,EACvD,2BAA2B,IAAI,kBAAkB,GAClD,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { Input } from './components/input/Input';
2
+ export type { InputProps } from './components/input/Input';
3
+ export { inputDocs } from './components/input/Input.docs';
4
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC"}
package/dist/input.js ADDED
@@ -0,0 +1,230 @@
1
+ import { jsxs as s, jsx as e } from "react/jsx-runtime";
2
+ import { c as l, a as y } from "./utils-BZvHF7th.js";
3
+ import { forwardRef as h } from "react";
4
+ const b = y(
5
+ [
6
+ "w-full rounded-lg border px-3 py-2",
7
+ "text-sm font-medium",
8
+ "transition-all duration-200",
9
+ "focus:outline-none focus:ring-2 focus:ring-primary-600 focus:ring-offset-2",
10
+ "disabled:cursor-not-allowed disabled:opacity-50",
11
+ "placeholder:text-gray-400 dark:placeholder:text-gray-500"
12
+ ],
13
+ {
14
+ variants: {
15
+ variant: {
16
+ default: [
17
+ "bg-white dark:bg-gray-900",
18
+ "border-gray-300 dark:border-gray-700",
19
+ "text-gray-900 dark:text-gray-100",
20
+ "hover:border-gray-400 dark:hover:border-gray-600"
21
+ ],
22
+ outline: [
23
+ "bg-transparent",
24
+ "border-primary-600 dark:border-primary-500",
25
+ "text-gray-900 dark:text-gray-100",
26
+ "hover:bg-primary-50 dark:hover:bg-primary-950"
27
+ ],
28
+ error: [
29
+ "bg-white dark:bg-gray-900",
30
+ "border-error-600 dark:border-error-500",
31
+ "text-gray-900 dark:text-gray-100",
32
+ "focus:ring-error-600"
33
+ ]
34
+ },
35
+ size: {
36
+ sm: "h-9 text-sm",
37
+ md: "h-10 text-base",
38
+ lg: "h-11 text-lg"
39
+ }
40
+ },
41
+ defaultVariants: {
42
+ variant: "default",
43
+ size: "md"
44
+ }
45
+ }
46
+ ), g = h(
47
+ ({
48
+ variant: d,
49
+ size: p,
50
+ label: i,
51
+ helperText: n,
52
+ error: t,
53
+ startIcon: a,
54
+ endIcon: r,
55
+ className: c,
56
+ ...u
57
+ }, m) => {
58
+ const o = !!t;
59
+ return /* @__PURE__ */ s("div", { className: "w-full space-y-1.5", children: [
60
+ i && /* @__PURE__ */ e("label", { className: "text-sm font-medium text-gray-900 dark:text-gray-100", children: i }),
61
+ /* @__PURE__ */ s("div", { className: "relative", children: [
62
+ a && /* @__PURE__ */ e("div", { className: "pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 dark:text-gray-500", children: a }),
63
+ /* @__PURE__ */ e(
64
+ "input",
65
+ {
66
+ ref: m,
67
+ className: l(
68
+ b({ variant: o ? "error" : d, size: p }),
69
+ a && "pl-10",
70
+ r && "pr-10",
71
+ c
72
+ ),
73
+ ...u
74
+ }
75
+ ),
76
+ r && /* @__PURE__ */ e("div", { className: "pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 dark:text-gray-500", children: r })
77
+ ] }),
78
+ (n || t) && /* @__PURE__ */ e(
79
+ "p",
80
+ {
81
+ className: l(
82
+ "text-xs",
83
+ o ? "text-error-600 dark:text-error-400" : "text-gray-500 dark:text-gray-400"
84
+ ),
85
+ children: t || n
86
+ }
87
+ )
88
+ ] });
89
+ }
90
+ );
91
+ g.displayName = "Input";
92
+ const k = {
93
+ name: "Input",
94
+ description: "Text input with validation, icon support, and accessible states.",
95
+ category: "Inputs",
96
+ installation: "pnpm add @component-labs/ui",
97
+ usage: `import { Input } from "@component-labs/ui";
98
+
99
+ <Input placeholder="Enter your email" />`,
100
+ props: [
101
+ {
102
+ name: "variant",
103
+ type: "'default' | 'outline' | 'error'",
104
+ description: "Visual style variant",
105
+ default: "'default'"
106
+ },
107
+ {
108
+ name: "size",
109
+ type: "'sm' | 'md' | 'lg'",
110
+ description: "Size of the input",
111
+ default: "'md'"
112
+ },
113
+ {
114
+ name: "label",
115
+ type: "ReactNode",
116
+ description: "Label text above the input"
117
+ },
118
+ {
119
+ name: "helperText",
120
+ type: "ReactNode",
121
+ description: "Helper text below the input"
122
+ },
123
+ {
124
+ name: "error",
125
+ type: "string",
126
+ description: "Error message (automatically sets variant to error)"
127
+ },
128
+ {
129
+ name: "startIcon",
130
+ type: "ReactNode",
131
+ description: "Icon to display before the input text"
132
+ },
133
+ {
134
+ name: "endIcon",
135
+ type: "ReactNode",
136
+ description: "Icon to display after the input text"
137
+ },
138
+ {
139
+ name: "placeholder",
140
+ type: "string",
141
+ description: "Placeholder text"
142
+ },
143
+ {
144
+ name: "disabled",
145
+ type: "boolean",
146
+ description: "Whether the input is disabled",
147
+ default: "false"
148
+ }
149
+ ],
150
+ examples: [
151
+ {
152
+ title: "Basic Input",
153
+ code: '<Input placeholder="Enter your email" />',
154
+ description: "Simple text input"
155
+ },
156
+ {
157
+ title: "With Label",
158
+ code: `<Input
159
+ label="Email Address"
160
+ placeholder="you@example.com"
161
+ type="email"
162
+ />`,
163
+ description: "Input with label"
164
+ },
165
+ {
166
+ title: "With Helper Text",
167
+ code: `<Input
168
+ label="Username"
169
+ helperText="Must be unique and at least 3 characters"
170
+ placeholder="johndoe"
171
+ />`,
172
+ description: "Input with helper text"
173
+ },
174
+ {
175
+ title: "With Error",
176
+ code: `<Input
177
+ label="Email"
178
+ error="Please enter a valid email address"
179
+ value="invalid-email"
180
+ />`,
181
+ description: "Input with error state"
182
+ },
183
+ {
184
+ title: "With Icons",
185
+ code: `<div className="space-y-4">
186
+ <Input
187
+ label="Search"
188
+ placeholder="Search..."
189
+ startIcon={<SearchIcon />}
190
+ />
191
+ <Input
192
+ label="Password"
193
+ type="password"
194
+ endIcon={<EyeIcon />}
195
+ />
196
+ </div>`,
197
+ description: "Inputs with start and end icons"
198
+ },
199
+ {
200
+ title: "Sizes",
201
+ code: `<div className="space-y-4">
202
+ <Input size="sm" placeholder="Small input" />
203
+ <Input size="md" placeholder="Medium input" />
204
+ <Input size="lg" placeholder="Large input" />
205
+ </div>`,
206
+ description: "Different input sizes"
207
+ },
208
+ {
209
+ title: "Disabled State",
210
+ code: `<Input
211
+ label="Disabled Input"
212
+ placeholder="Cannot edit"
213
+ disabled
214
+ />`,
215
+ description: "Disabled input"
216
+ }
217
+ ],
218
+ accessibility: [
219
+ "Proper label association with input",
220
+ "ARIA attributes for error states",
221
+ "Focus visible states with ring indicator",
222
+ "Disabled state prevents interaction",
223
+ "Helper text announced by screen readers"
224
+ ]
225
+ };
226
+ export {
227
+ g as Input,
228
+ k as inputDocs
229
+ };
230
+ //# sourceMappingURL=input.js.map