@neut/ui 0.0.6 → 0.0.8

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 (209) hide show
  1. package/README.md +3 -0
  2. package/dist/components/alert-dialog/AlertDialogCancel/AlertDialogCancel.js +5 -2
  3. package/dist/components/alert-dialog/AlertDialogCancel/AlertDialogCancel.js.map +1 -1
  4. package/dist/components/alert-dialog/AlertDialogCancel/AlertDialogCancel.types.d.ts +1 -1
  5. package/dist/components/breadcrumb/Breadcrumb/Breadcrumb.d.ts +2 -0
  6. package/dist/components/breadcrumb/Breadcrumb/Breadcrumb.js +10 -0
  7. package/dist/components/breadcrumb/Breadcrumb/Breadcrumb.js.map +1 -0
  8. package/dist/components/breadcrumb/Breadcrumb/Breadcrumb.types.d.ts +2 -0
  9. package/dist/components/breadcrumb/Breadcrumb/index.d.ts +1 -0
  10. package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.d.ts +2 -0
  11. package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.js +19 -0
  12. package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.js.map +1 -0
  13. package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.styles.d.ts +1 -0
  14. package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.styles.js +6 -0
  15. package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.styles.js.map +1 -0
  16. package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.types.d.ts +2 -0
  17. package/dist/components/breadcrumb/BreadcrumbEllipsis/index.d.ts +1 -0
  18. package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.d.ts +2 -0
  19. package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.js +18 -0
  20. package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.js.map +1 -0
  21. package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.styles.d.ts +1 -0
  22. package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.styles.js +6 -0
  23. package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.styles.js.map +1 -0
  24. package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.types.d.ts +2 -0
  25. package/dist/components/breadcrumb/BreadcrumbItem/index.d.ts +1 -0
  26. package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.d.ts +3 -0
  27. package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.js +29 -0
  28. package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.js.map +1 -0
  29. package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.styles.d.ts +1 -0
  30. package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.styles.js +6 -0
  31. package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.styles.js.map +1 -0
  32. package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.types.d.ts +6 -0
  33. package/dist/components/breadcrumb/BreadcrumbLink/index.d.ts +1 -0
  34. package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.d.ts +2 -0
  35. package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.js +18 -0
  36. package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.js.map +1 -0
  37. package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.styles.d.ts +1 -0
  38. package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.styles.js +6 -0
  39. package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.styles.js.map +1 -0
  40. package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.types.d.ts +2 -0
  41. package/dist/components/breadcrumb/BreadcrumbList/index.d.ts +1 -0
  42. package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.d.ts +2 -0
  43. package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.js +18 -0
  44. package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.js.map +1 -0
  45. package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.styles.d.ts +1 -0
  46. package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.styles.js +6 -0
  47. package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.styles.js.map +1 -0
  48. package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.types.d.ts +2 -0
  49. package/dist/components/breadcrumb/BreadcrumbPage/index.d.ts +1 -0
  50. package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.d.ts +2 -0
  51. package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.js +33 -0
  52. package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.js.map +1 -0
  53. package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.styles.d.ts +1 -0
  54. package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.styles.js +6 -0
  55. package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.styles.js.map +1 -0
  56. package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.types.d.ts +2 -0
  57. package/dist/components/breadcrumb/BreadcrumbSeparator/index.d.ts +1 -0
  58. package/dist/components/breadcrumb/index.d.ts +7 -0
  59. package/dist/components/breadcrumb/index.js +8 -0
  60. package/dist/components/button/Button.js +26 -55
  61. package/dist/components/button/Button.js.map +1 -1
  62. package/dist/components/button/Button.styles.js +3 -3
  63. package/dist/components/button/Button.styles.js.map +1 -1
  64. package/dist/components/button/Button.types.d.ts +25 -7
  65. package/dist/components/checkbox/Checkbox/Checkbox.d.ts +2 -0
  66. package/dist/components/checkbox/Checkbox/Checkbox.js +66 -0
  67. package/dist/components/checkbox/Checkbox/Checkbox.js.map +1 -0
  68. package/dist/components/checkbox/Checkbox/Checkbox.styles.d.ts +1 -0
  69. package/dist/components/checkbox/Checkbox/Checkbox.styles.js +7 -0
  70. package/dist/components/checkbox/Checkbox/Checkbox.styles.js.map +1 -0
  71. package/dist/components/checkbox/Checkbox/Checkbox.types.d.ts +10 -0
  72. package/dist/components/checkbox/Checkbox/index.d.ts +1 -0
  73. package/dist/components/checkbox/CheckboxIndicator/CheckboxIndicator.d.ts +3 -0
  74. package/dist/components/checkbox/CheckboxIndicator/CheckboxIndicator.js +25 -0
  75. package/dist/components/checkbox/CheckboxIndicator/CheckboxIndicator.js.map +1 -0
  76. package/dist/components/checkbox/CheckboxIndicator/CheckboxIndicator.styles.d.ts +1 -0
  77. package/dist/components/checkbox/CheckboxIndicator/CheckboxIndicator.styles.js +6 -0
  78. package/dist/components/checkbox/CheckboxIndicator/CheckboxIndicator.styles.js.map +1 -0
  79. package/dist/components/checkbox/CheckboxIndicator/CheckboxIndicator.types.d.ts +2 -0
  80. package/dist/components/checkbox/CheckboxIndicator/index.d.ts +1 -0
  81. package/dist/components/checkbox/index.d.ts +1 -0
  82. package/dist/components/checkbox/index.js +2 -0
  83. package/dist/components/collapsible/Collapsible/Collapsible.context.d.ts +9 -0
  84. package/dist/components/collapsible/Collapsible/Collapsible.context.js +11 -0
  85. package/dist/components/collapsible/Collapsible/Collapsible.context.js.map +1 -0
  86. package/dist/components/collapsible/Collapsible/Collapsible.d.ts +2 -0
  87. package/dist/components/collapsible/Collapsible/Collapsible.js +33 -0
  88. package/dist/components/collapsible/Collapsible/Collapsible.js.map +1 -0
  89. package/dist/components/collapsible/Collapsible/Collapsible.types.d.ts +8 -0
  90. package/dist/components/collapsible/Collapsible/index.d.ts +2 -0
  91. package/dist/components/collapsible/CollapsibleContent/CollapsibleContent.d.ts +2 -0
  92. package/dist/components/collapsible/CollapsibleContent/CollapsibleContent.js +20 -0
  93. package/dist/components/collapsible/CollapsibleContent/CollapsibleContent.js.map +1 -0
  94. package/dist/components/collapsible/CollapsibleContent/CollapsibleContent.types.d.ts +2 -0
  95. package/dist/components/collapsible/CollapsibleContent/index.d.ts +1 -0
  96. package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.d.ts +2 -0
  97. package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.js +24 -0
  98. package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.js.map +1 -0
  99. package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.types.d.ts +2 -0
  100. package/dist/components/collapsible/CollapsibleTrigger/index.d.ts +1 -0
  101. package/dist/components/collapsible/index.d.ts +3 -0
  102. package/dist/components/collapsible/index.js +4 -0
  103. package/dist/components/dialog/Dialog/Dialog.context.d.ts +10 -0
  104. package/dist/components/dialog/Dialog/Dialog.context.js +11 -0
  105. package/dist/components/dialog/Dialog/Dialog.context.js.map +1 -0
  106. package/dist/components/dialog/Dialog/Dialog.d.ts +2 -0
  107. package/dist/components/dialog/Dialog/Dialog.js +23 -0
  108. package/dist/components/dialog/Dialog/Dialog.js.map +1 -0
  109. package/dist/components/dialog/Dialog/Dialog.styles.d.ts +0 -0
  110. package/dist/components/dialog/Dialog/Dialog.types.d.ts +2 -0
  111. package/dist/components/dialog/Dialog/index.d.ts +2 -0
  112. package/dist/components/dialog/DialogClose/DialogClose.d.ts +2 -0
  113. package/dist/components/dialog/DialogClose/DialogClose.js +46 -0
  114. package/dist/components/dialog/DialogClose/DialogClose.js.map +1 -0
  115. package/dist/components/dialog/DialogClose/DialogClose.styles.d.ts +1 -0
  116. package/dist/components/dialog/DialogClose/DialogClose.styles.js +6 -0
  117. package/dist/components/dialog/DialogClose/DialogClose.styles.js.map +1 -0
  118. package/dist/components/dialog/DialogClose/DialogClose.types.d.ts +2 -0
  119. package/dist/components/dialog/DialogClose/index.d.ts +1 -0
  120. package/dist/components/dialog/DialogContent/DialogContent.context.d.ts +8 -0
  121. package/dist/components/dialog/DialogContent/DialogContent.context.js +11 -0
  122. package/dist/components/dialog/DialogContent/DialogContent.context.js.map +1 -0
  123. package/dist/components/dialog/DialogContent/DialogContent.d.ts +2 -0
  124. package/dist/components/dialog/DialogContent/DialogContent.js +71 -0
  125. package/dist/components/dialog/DialogContent/DialogContent.js.map +1 -0
  126. package/dist/components/dialog/DialogContent/DialogContent.styles.d.ts +1 -0
  127. package/dist/components/dialog/DialogContent/DialogContent.styles.js +6 -0
  128. package/dist/components/dialog/DialogContent/DialogContent.styles.js.map +1 -0
  129. package/dist/components/dialog/DialogContent/DialogContent.types.d.ts +4 -0
  130. package/dist/components/dialog/DialogContent/index.d.ts +2 -0
  131. package/dist/components/dialog/DialogDescription/DialogDescription.d.ts +2 -0
  132. package/dist/components/dialog/DialogDescription/DialogDescription.js +21 -0
  133. package/dist/components/dialog/DialogDescription/DialogDescription.js.map +1 -0
  134. package/dist/components/dialog/DialogDescription/DialogDescription.styles.d.ts +1 -0
  135. package/dist/components/dialog/DialogDescription/DialogDescription.styles.js +6 -0
  136. package/dist/components/dialog/DialogDescription/DialogDescription.styles.js.map +1 -0
  137. package/dist/components/dialog/DialogDescription/DialogDescription.types.d.ts +2 -0
  138. package/dist/components/dialog/DialogDescription/index.d.ts +1 -0
  139. package/dist/components/dialog/DialogFooter/DialogFooter.d.ts +2 -0
  140. package/dist/components/dialog/DialogFooter/DialogFooter.js +18 -0
  141. package/dist/components/dialog/DialogFooter/DialogFooter.js.map +1 -0
  142. package/dist/components/dialog/DialogFooter/DialogFooter.styles.d.ts +1 -0
  143. package/dist/components/dialog/DialogFooter/DialogFooter.styles.js +6 -0
  144. package/dist/components/dialog/DialogFooter/DialogFooter.styles.js.map +1 -0
  145. package/dist/components/dialog/DialogFooter/DialogFooter.types.d.ts +2 -0
  146. package/dist/components/dialog/DialogFooter/index.d.ts +1 -0
  147. package/dist/components/dialog/DialogHeader/DialogHeader.d.ts +2 -0
  148. package/dist/components/dialog/DialogHeader/DialogHeader.js +18 -0
  149. package/dist/components/dialog/DialogHeader/DialogHeader.js.map +1 -0
  150. package/dist/components/dialog/DialogHeader/DialogHeader.styles.d.ts +1 -0
  151. package/dist/components/dialog/DialogHeader/DialogHeader.styles.js +6 -0
  152. package/dist/components/dialog/DialogHeader/DialogHeader.styles.js.map +1 -0
  153. package/dist/components/dialog/DialogHeader/DialogHeader.types.d.ts +2 -0
  154. package/dist/components/dialog/DialogHeader/index.d.ts +1 -0
  155. package/dist/components/dialog/DialogOverlay/DialogOverlay.d.ts +2 -0
  156. package/dist/components/dialog/DialogOverlay/DialogOverlay.js +27 -0
  157. package/dist/components/dialog/DialogOverlay/DialogOverlay.js.map +1 -0
  158. package/dist/components/dialog/DialogOverlay/DialogOverlay.styles.d.ts +1 -0
  159. package/dist/components/dialog/DialogOverlay/DialogOverlay.styles.js +6 -0
  160. package/dist/components/dialog/DialogOverlay/DialogOverlay.styles.js.map +1 -0
  161. package/dist/components/dialog/DialogOverlay/DialogOverlay.types.d.ts +2 -0
  162. package/dist/components/dialog/DialogOverlay/index.d.ts +1 -0
  163. package/dist/components/dialog/DialogPortal/DialogPortal.d.ts +2 -0
  164. package/dist/components/dialog/DialogPortal/DialogPortal.js +10 -0
  165. package/dist/components/dialog/DialogPortal/DialogPortal.js.map +1 -0
  166. package/dist/components/dialog/DialogPortal/DialogPortal.types.d.ts +2 -0
  167. package/dist/components/dialog/DialogPortal/index.d.ts +1 -0
  168. package/dist/components/dialog/DialogTitle/DialogTitle.d.ts +2 -0
  169. package/dist/components/dialog/DialogTitle/DialogTitle.js +21 -0
  170. package/dist/components/dialog/DialogTitle/DialogTitle.js.map +1 -0
  171. package/dist/components/dialog/DialogTitle/DialogTitle.styles.d.ts +1 -0
  172. package/dist/components/dialog/DialogTitle/DialogTitle.styles.js +6 -0
  173. package/dist/components/dialog/DialogTitle/DialogTitle.styles.js.map +1 -0
  174. package/dist/components/dialog/DialogTitle/DialogTitle.types.d.ts +2 -0
  175. package/dist/components/dialog/DialogTitle/index.d.ts +1 -0
  176. package/dist/components/dialog/DialogTrigger/DialogTrigger.d.ts +2 -0
  177. package/dist/components/dialog/DialogTrigger/DialogTrigger.js +11 -0
  178. package/dist/components/dialog/DialogTrigger/DialogTrigger.js.map +1 -0
  179. package/dist/components/dialog/DialogTrigger/DialogTrigger.types.d.ts +0 -0
  180. package/dist/components/dialog/DialogTrigger/index.d.ts +1 -0
  181. package/dist/components/dialog/DialogTrigger/useDialogTrigger.d.ts +2 -0
  182. package/dist/components/dialog/DialogTrigger/useDialogTrigger.js +26 -0
  183. package/dist/components/dialog/DialogTrigger/useDialogTrigger.js.map +1 -0
  184. package/dist/components/dialog/index.d.ts +10 -0
  185. package/dist/components/dialog/index.js +13 -0
  186. package/dist/components/field/FieldLabel/FieldLabel.js +1 -1
  187. package/dist/components/field/FieldLabel/FieldLabel.js.map +1 -1
  188. package/dist/components/input/Input.js +23 -14
  189. package/dist/components/input/Input.js.map +1 -1
  190. package/dist/components/input/Input.types.d.ts +2 -0
  191. package/dist/components/input-group/InputGroupButton/InputGroupButton.js +13 -13
  192. package/dist/components/input-group/InputGroupButton/InputGroupButton.js.map +1 -1
  193. package/dist/components/label/Label.js +31 -9
  194. package/dist/components/label/Label.js.map +1 -1
  195. package/dist/components/pagination/PaginationLink/PaginationLink.js.map +1 -1
  196. package/dist/components/pagination/PaginationLink/PaginationLink.types.d.ts +3 -2
  197. package/dist/components/switch/Switch.js +23 -30
  198. package/dist/components/switch/Switch.js.map +1 -1
  199. package/dist/components/switch/Switch.styles.d.ts +0 -1
  200. package/dist/components/switch/Switch.styles.js +2 -3
  201. package/dist/components/switch/Switch.styles.js.map +1 -1
  202. package/dist/components/switch/Switch.types.d.ts +2 -1
  203. package/dist/components/toast/components/Toast.js +4 -1
  204. package/dist/components/toast/components/Toast.js.map +1 -1
  205. package/dist/index.d.ts +4 -0
  206. package/dist/index.js +120 -97
  207. package/dist/types/props.types.d.ts +15 -2
  208. package/dist/ui.css +1 -1
  209. package/package.json +2 -2
@@ -1,33 +1,42 @@
1
1
  import { clsx as e } from "../../utils/clsx.js";
2
2
  import { delegateEvents as t, mergeProps as n, spread as r, template as i } from "solid-js/web";
3
- import { createUniqueId as a, mergeProps as o, splitProps as s } from "solid-js";
3
+ import { createMemo as a, createUniqueId as o, mergeProps as s, splitProps as c } from "solid-js";
4
4
  //#region src/components/input/Input.tsx
5
- var c = /* @__PURE__ */ i("<input data-slot=input>"), l = (t) => {
6
- let [i, l] = s(o({
7
- id: a(),
5
+ var l = /* @__PURE__ */ i("<input data-slot=input>"), u = (t) => {
6
+ let [i, u] = c(s({
7
+ id: o(),
8
8
  type: "text"
9
9
  }, t), [
10
+ "value",
11
+ "defaultValue",
10
12
  "type",
11
13
  "onInput",
12
14
  "onChange",
13
- "class",
14
- "classList"
15
- ]), u = (e) => {
15
+ "class"
16
+ ]), d = (e) => {
16
17
  let t = e.target.value;
17
18
  i.type === "number" && (t = Number(e.target.value)), i.onInput?.(t);
18
- }, d = (e) => {
19
+ }, f = (e) => {
19
20
  let t = e.target.value;
20
21
  i.type === "number" && (t = Number(e.target.value)), i.onChange?.(t);
21
- };
22
+ }, p = a(() => i.value === void 0 ? i.defaultValue : i.value);
22
23
  return (() => {
23
- var t = c();
24
- return t.addEventListener("change", d), t.$$input = u, r(t, n({ get class() {
25
- return e("h-8 w-full min-w-0 rounded-lg border border-neutral-200 dark:border-white/15 bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-neutral-950 dark:file:text-neutral-50 placeholder:text-neutral-500 dark:placeholder:text-neutral-400 focus-visible:border-neutral-400 dark:focus-visible:border-neutral-500 focus-visible:ring-3 focus-visible:ring-neutral-400/50 dark:focus-visible:ring-neutral-500/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:select-none disabled:bg-neutral-200/50 disabled:opacity-50 aria-invalid:border-red-600 aria-invalid:ring-3 aria-invalid:ring-red-600/20 md:text-sm dark:bg-white/4.5 dark:disabled:bg-white/12 dark:aria-invalid:border-red-400/50 dark:aria-invalid:ring-red-400/40", i.class);
26
- } }, l), !1, !1), t;
24
+ var t = l();
25
+ return t.addEventListener("change", f), t.$$input = d, r(t, n({
26
+ get type() {
27
+ return i.type;
28
+ },
29
+ get value() {
30
+ return p();
31
+ },
32
+ get class() {
33
+ return e("h-8 w-full min-w-0 rounded-lg border border-neutral-200 dark:border-white/15 bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-neutral-950 dark:file:text-neutral-50 placeholder:text-neutral-500 dark:placeholder:text-neutral-400 focus-visible:border-neutral-400 dark:focus-visible:border-neutral-500 focus-visible:ring-3 focus-visible:ring-neutral-400/50 dark:focus-visible:ring-neutral-500/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:select-none disabled:bg-neutral-200/50 disabled:opacity-50 aria-invalid:border-red-600 aria-invalid:ring-3 aria-invalid:ring-red-600/20 md:text-sm dark:bg-white/4.5 dark:disabled:bg-white/12 dark:aria-invalid:border-red-400/50 dark:aria-invalid:ring-red-400/40", i.class);
34
+ }
35
+ }, u), !1, !1), t;
27
36
  })();
28
37
  };
29
38
  t(["input"]);
30
39
  //#endregion
31
- export { l as Input };
40
+ export { u as Input };
32
41
 
33
42
  //# sourceMappingURL=Input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","names":["createUniqueId","JSX","mergeProps","splitProps","InputProps","clsx","Input","props","merged","id","type","const","local","others","handleInput","IntrinsicElements","e","value","target","Number","onInput","handleChange","onChange","_el$","_tmpl$","addEventListener","$$input","_$spread","_$mergeProps","class","_$delegateEvents"],"sources":["../../../src/components/input/Input.tsx"],"sourcesContent":["import { createUniqueId, type JSX, mergeProps, splitProps } from \"solid-js\";\nimport type { InputProps } from \"./Input.types\";\nimport { clsx } from \"~/utils\";\n\nexport const Input = (props: InputProps) => {\n const merged = mergeProps(\n { id: createUniqueId(), type: \"text\" } as const,\n props,\n );\n\n const [local, others] = splitProps(merged, [\n \"type\",\n \"onInput\",\n \"onChange\",\n \"class\",\n \"classList\",\n ]);\n\n const handleInput: JSX.IntrinsicElements[\"input\"][\"onInput\"] = (e) => {\n let value: string | number = e.target.value;\n if (local.type === \"number\") {\n value = Number(e.target.value);\n }\n // @ts-expect-error\n local.onInput?.(value);\n };\n\n const handleChange: JSX.IntrinsicElements[\"input\"][\"onChange\"] = (e) => {\n let value: string | number = e.target.value;\n if (local.type === \"number\") {\n value = Number(e.target.value);\n }\n // @ts-expect-error\n local.onChange?.(value);\n };\n\n return (\n <input\n data-slot=\"input\"\n class={clsx(\n \"h-8 w-full min-w-0 rounded-lg border border-neutral-200 dark:border-white/15 bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-neutral-950 dark:file:text-neutral-50 placeholder:text-neutral-500 dark:placeholder:text-neutral-400 focus-visible:border-neutral-400 dark:focus-visible:border-neutral-500 focus-visible:ring-3 focus-visible:ring-neutral-400/50 dark:focus-visible:ring-neutral-500/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:select-none disabled:bg-neutral-200/50 disabled:opacity-50 aria-invalid:border-red-600 aria-invalid:ring-3 aria-invalid:ring-red-600/20 md:text-sm dark:bg-white/4.5 dark:disabled:bg-white/12 dark:aria-invalid:border-red-400/50 dark:aria-invalid:ring-red-400/40\",\n local.class,\n )}\n onInput={handleInput}\n onChange={handleChange}\n {...others}\n />\n );\n};\n"],"mappings":";;;;sDAIaM,KAASC,MAAsB;CAM1C,IAAM,CAACK,GAAOC,KAAUV,EALTD,EACb;EAAEO,IAAIT,GAAgB;EAAEU,MAAM;EAAQ,EACtCH,EACD,EAE0C;EACzC;EACA;EACA;EACA;EACA;EACD,CAAC,EAEIO,KAA0DE,MAAM;EACpE,IAAIC,IAAyBD,EAAEE,OAAOD;AAKtCL,EAJIA,EAAMF,SAAS,aACjBO,IAAQE,OAAOH,EAAEE,OAAOD,MAAM,GAGhCL,EAAMQ,UAAUH,EAAM;IAGlBI,KAA4DL,MAAM;EACtE,IAAIC,IAAyBD,EAAEE,OAAOD;AAKtCL,EAJIA,EAAMF,SAAS,aACjBO,IAAQE,OAAOH,EAAEE,OAAOD,MAAM,GAGhCL,EAAMU,WAAWL,EAAM;;AAGzB,eAAA;EAAA,IAAAM,IAAAC,GAAA;AASc,SATdD,EAAAE,iBAAA,UAQcJ,EAAY,EAAAE,EAAAG,UADbZ,GAAWa,EAAAJ,GAAAK,EAAA,EAAA,IAAA,QAAA;AAAA,UAJbvB,EACL,y0BACAO,EAAMiB,MACP;KAAA,EAGGhB,EAAM,EAAA,IAAA,GAAA,EAAAU;KAAA;;AAGdO,EAAA,CAAA,QAAA,CAAA"}
1
+ {"version":3,"file":"Input.js","names":["createMemo","createUniqueId","JSX","mergeProps","splitProps","InputProps","clsx","Input","props","merged","id","type","const","local","others","handleInput","IntrinsicElements","e","value","target","Number","onInput","handleChange","onChange","undefined","defaultValue","_el$","_tmpl$","addEventListener","$$input","_$spread","_$mergeProps","class","_$delegateEvents"],"sources":["../../../src/components/input/Input.tsx"],"sourcesContent":["import {\n createMemo,\n createUniqueId,\n type JSX,\n mergeProps,\n splitProps,\n} from \"solid-js\";\nimport type { InputProps } from \"./Input.types\";\nimport { clsx } from \"~/utils\";\n\nexport const Input = (props: InputProps) => {\n const merged = mergeProps(\n { id: createUniqueId(), type: \"text\" } as const,\n props,\n );\n\n const [local, others] = splitProps(merged, [\n \"value\",\n \"defaultValue\",\n \"type\",\n \"onInput\",\n \"onChange\",\n \"class\",\n ]);\n\n const handleInput: JSX.IntrinsicElements[\"input\"][\"onInput\"] = (e) => {\n let value: string | number = e.target.value;\n if (local.type === \"number\") {\n value = Number(e.target.value);\n }\n // @ts-expect-error\n local.onInput?.(value);\n };\n\n const handleChange: JSX.IntrinsicElements[\"input\"][\"onChange\"] = (e) => {\n let value: string | number = e.target.value;\n if (local.type === \"number\") {\n value = Number(e.target.value);\n }\n // @ts-expect-error\n local.onChange?.(value);\n };\n\n const value = createMemo(() =>\n local.value !== undefined ? local.value : local.defaultValue,\n );\n\n return (\n <input\n type={local.type}\n value={value()}\n data-slot=\"input\"\n class={clsx(\n \"h-8 w-full min-w-0 rounded-lg border border-neutral-200 dark:border-white/15 bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-neutral-950 dark:file:text-neutral-50 placeholder:text-neutral-500 dark:placeholder:text-neutral-400 focus-visible:border-neutral-400 dark:focus-visible:border-neutral-500 focus-visible:ring-3 focus-visible:ring-neutral-400/50 dark:focus-visible:ring-neutral-500/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:select-none disabled:bg-neutral-200/50 disabled:opacity-50 aria-invalid:border-red-600 aria-invalid:ring-3 aria-invalid:ring-red-600/20 md:text-sm dark:bg-white/4.5 dark:disabled:bg-white/12 dark:aria-invalid:border-red-400/50 dark:aria-invalid:ring-red-400/40\",\n local.class,\n )}\n onInput={handleInput}\n onChange={handleChange}\n {...others}\n />\n );\n};\n"],"mappings":";;;;sDAUaO,KAASC,MAAsB;CAM1C,IAAM,CAACK,GAAOC,KAAUV,EALTD,EACb;EAAEO,IAAIT,GAAgB;EAAEU,MAAM;EAAQ,EACtCH,EACD,EAE0C;EACzC;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,EAEIO,KAA0DE,MAAM;EACpE,IAAIC,IAAyBD,EAAEE,OAAOD;AAKtCL,EAJIA,EAAMF,SAAS,aACjBO,IAAQE,OAAOH,EAAEE,OAAOD,MAAM,GAGhCL,EAAMQ,UAAUH,EAAM;IAGlBI,KAA4DL,MAAM;EACtE,IAAIC,IAAyBD,EAAEE,OAAOD;AAKtCL,EAJIA,EAAMF,SAAS,aACjBO,IAAQE,OAAOH,EAAEE,OAAOD,MAAM,GAGhCL,EAAMU,WAAWL,EAAM;IAGnBA,IAAQlB,QACZa,EAAMK,UAAUM,KAAAA,IAA0BX,EAAMY,eAApBZ,EAAMK,MACnC;AAED,eAAA;EAAA,IAAAQ,IAAAC,GAAA;AAWc,SAXdD,EAAAE,iBAAA,UAUcN,EAAY,EAAAI,EAAAG,UADbd,GAAWe,EAAAJ,GAAAK,EAAA;GAAA,IAPpBpB,OAAI;AAAA,WAAEE,EAAMF;;GAAI,IAChBO,QAAK;AAAA,WAAEA,GAAO;;GAAA,IAAA,QAAA;AAAA,WAEPZ,EACL,y0BACAO,EAAMmB,MACP;;GAAA,EAGGlB,EAAM,EAAA,IAAA,GAAA,EAAAY;KAAA;;AAGdO,EAAA,CAAA,QAAA,CAAA"}
@@ -5,11 +5,13 @@ export interface NumberInputSpecifics {
5
5
  type: "number";
6
6
  onChange?: (value: number) => void;
7
7
  onInput?: (value: number) => void;
8
+ defaultValue?: number;
8
9
  }
9
10
  interface TextInputSpecifics {
10
11
  type?: Exclude<InputType, "number">;
11
12
  onChange?: (value: string) => void;
12
13
  onInput?: (value: string) => void;
14
+ defaultValue?: string;
13
15
  }
14
16
  export type InputProps = (NumberInputSpecifics & Omit<NativeInputProps, keyof NumberInputSpecifics>) | (TextInputSpecifics & Omit<NativeInputProps, keyof TextInputSpecifics>);
15
17
  export {};
@@ -2,35 +2,35 @@ import { clsx as e } from "../../../utils/clsx.js";
2
2
  import { Button as t } from "../../button/Button.js";
3
3
  import { inputGroupButtonVariants as n } from "./InputGroupButton.styles.js";
4
4
  import { createComponent as r, mergeProps as i } from "solid-js/web";
5
- import { mergeProps as a, splitProps as o } from "solid-js";
5
+ import { createMemo as a, mergeProps as o, splitProps as s } from "solid-js";
6
6
  //#region src/components/input-group/InputGroupButton/InputGroupButton.tsx
7
- var s = (s) => {
8
- let [c, l] = o(a({
7
+ var c = (c) => {
8
+ let [l, u] = s(o({
9
9
  type: "button",
10
10
  variant: "ghost",
11
11
  size: "xs"
12
- }, s), [
12
+ }, c), [
13
13
  "size",
14
14
  "variant",
15
15
  "class",
16
16
  "classList"
17
- ]), u = () => !!l.icon && !l.children;
18
- return r(t, i({
17
+ ]), d = a(() => u.icon && typeof u.icon == "object" && "ariaLabel" in u.icon && "icon" in u.icon || !!u.icon && !u.children);
18
+ return r(t, i(u, {
19
19
  get "data-size"() {
20
- return c.size;
20
+ return l.size;
21
21
  },
22
22
  get variant() {
23
- return c.variant;
23
+ return l.variant;
24
24
  },
25
25
  get class() {
26
26
  return e(n({
27
- size: u() ? void 0 : c.size,
28
- iconSize: u() ? c.size : void 0
29
- }), c.class);
27
+ size: d() ? void 0 : l.size,
28
+ iconSize: d() ? l.size : void 0
29
+ }), l.class);
30
30
  }
31
- }, l));
31
+ }));
32
32
  };
33
33
  //#endregion
34
- export { s as InputGroupButton };
34
+ export { c as InputGroupButton };
35
35
 
36
36
  //# sourceMappingURL=InputGroupButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputGroupButton.js","names":["Button","InputGroupButtonProps","mergeProps","splitProps","clsx","inputGroupButtonVariants","InputGroupButton","props","merged","type","variant","size","const","local","others","iconOnly","icon","children","_$createComponent","_$mergeProps","data-size","class","undefined","iconSize"],"sources":["../../../../src/components/input-group/InputGroupButton/InputGroupButton.tsx"],"sourcesContent":["import { Button } from \"~/components/button/Button\";\nimport type { InputGroupButtonProps } from \"./InputGroupButton.types\";\nimport { mergeProps, splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { inputGroupButtonVariants } from \"./InputGroupButton.styles\";\n\nexport const InputGroupButton = (props: InputGroupButtonProps) => {\n const merged = mergeProps(\n { type: \"button\", variant: \"ghost\", size: \"xs\" } as const,\n props,\n );\n const [local, others] = splitProps(merged, [\n \"size\",\n \"variant\",\n \"class\",\n \"classList\",\n ]);\n\n const iconOnly = () => !!others.icon && !others.children;\n\n return (\n <Button\n data-size={local.size}\n variant={local.variant}\n class={clsx(\n inputGroupButtonVariants({\n size: iconOnly() ? undefined : local.size,\n iconSize: iconOnly() ? local.size : undefined,\n }),\n local.class,\n )}\n {...others}\n />\n );\n};\n"],"mappings":";;;;;;AAMA,IAAaM,KAAoBC,MAAiC;CAKhE,IAAM,CAACM,GAAOC,KAAUX,EAJTD,EACb;EAAEO,MAAM;EAAUC,SAAS;EAASC,MAAM;EAAM,EAChDJ,EACD,EAC0C;EACzC;EACA;EACA;EACA;EACD,CAAC,EAEIQ,UAAiB,CAAC,CAACD,EAAOE,QAAQ,CAACF,EAAOG;AAEhD,QAAAC,EACGlB,GAAMmB,EAAA;EAAA,IAAA,cAAA;AAAA,UACMN,EAAMF;;EAAI,IACrBD,UAAO;AAAA,UAAEG,EAAMH;;EAAO,IAAA,QAAA;AAAA,UACfN,EACLC,EAAyB;IACvBM,MAAMI,GAAU,GAAGO,KAAAA,IAAYT,EAAMF;IACrCY,UAAUR,GAAU,GAAGF,EAAMF,OAAOW,KAAAA;IACrC,CAAC,EACFT,EAAMQ,MACP;;EAAA,EACGP,EAAM,CAAA"}
1
+ {"version":3,"file":"InputGroupButton.js","names":["Button","InputGroupButtonProps","createMemo","mergeProps","splitProps","clsx","inputGroupButtonVariants","InputGroupButton","props","merged","type","variant","size","const","local","others","iconOnly","icon","children","_$createComponent","_$mergeProps","data-size","class","undefined","iconSize"],"sources":["../../../../src/components/input-group/InputGroupButton/InputGroupButton.tsx"],"sourcesContent":["import { Button } from \"~/components/button/Button\";\nimport type { InputGroupButtonProps } from \"./InputGroupButton.types\";\nimport { createMemo, mergeProps, splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { inputGroupButtonVariants } from \"./InputGroupButton.styles\";\n\nexport const InputGroupButton = (props: InputGroupButtonProps) => {\n const merged = mergeProps(\n { type: \"button\", variant: \"ghost\", size: \"xs\" } as const,\n props,\n );\n const [local, others] = splitProps(merged, [\n \"size\",\n \"variant\",\n \"class\",\n \"classList\",\n ]);\n\n const iconOnly = createMemo(\n () =>\n (others.icon &&\n typeof others.icon === \"object\" &&\n \"ariaLabel\" in others.icon &&\n \"icon\" in others.icon) ||\n // @ts-expect-error\n (!!others.icon && !others.children),\n );\n\n return (\n // @ts-expect-error\n <Button\n {...others}\n data-size={local.size}\n variant={local.variant}\n class={clsx(\n inputGroupButtonVariants({\n size: iconOnly() ? undefined : local.size,\n iconSize: iconOnly() ? local.size : undefined,\n }),\n local.class,\n )}\n />\n );\n};\n"],"mappings":";;;;;;AAMA,IAAaO,KAAoBC,MAAiC;CAKhE,IAAM,CAACM,GAAOC,KAAUX,EAJTD,EACb;EAAEO,MAAM;EAAUC,SAAS;EAASC,MAAM;EAAM,EAChDJ,EACD,EAC0C;EACzC;EACA;EACA;EACA;EACD,CAAC,EAEIQ,IAAWd,QAEZa,EAAOE,QACN,OAAOF,EAAOE,QAAS,YACvB,eAAeF,EAAOE,QACtB,UAAUF,EAAOE,QAElB,CAAC,CAACF,EAAOE,QAAQ,CAACF,EAAOG,SAC7B;AAED,QACEC,EACCnB,GAAMoB,EACDL,GAAM;EAAA,IAAA,cAAA;AAAA,UACCD,EAAMF;;EAAI,IACrBD,UAAO;AAAA,UAAEG,EAAMH;;EAAO,IAAA,QAAA;AAAA,UACfN,EACLC,EAAyB;IACvBM,MAAMI,GAAU,GAAGO,KAAAA,IAAYT,EAAMF;IACrCY,UAAUR,GAAU,GAAGF,EAAMF,OAAOW,KAAAA;IACrC,CAAC,EACFT,EAAMQ,MACP;;EAAA,CAAA,CAAA"}
@@ -1,17 +1,39 @@
1
1
  import { clsx as e } from "../../utils/clsx.js";
2
- import { mergeProps as t, spread as n, template as r } from "solid-js/web";
3
- import { splitProps as i } from "solid-js";
2
+ import { delegateEvents as t, mergeProps as n, spread as r, template as i, use as a } from "solid-js/web";
3
+ import { splitProps as o } from "solid-js";
4
4
  //#region src/components/label/Label.tsx
5
- var a = /* @__PURE__ */ r("<label data-slot=label>"), o = (r) => {
6
- let [o, s] = i(r, ["class", "classList"]);
5
+ var s = /* @__PURE__ */ i("<label data-slot=label>"), c = (t) => {
6
+ let i, [c, l] = o(t, [
7
+ "for",
8
+ "class",
9
+ "classList"
10
+ ]), u = (e) => {
11
+ let t = c.for;
12
+ if (t) {
13
+ let e = document.querySelector(`[aria-labelledby="${t}"]`);
14
+ if (!e) return;
15
+ e.click();
16
+ return;
17
+ }
18
+ let n = i?.querySelector("[aria-labelledby]");
19
+ n && !n.contains(e.target) && (e.preventDefault(), n.click());
20
+ };
7
21
  return (() => {
8
- var r = a();
9
- return n(r, t({ get class() {
10
- return e("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", o.class);
11
- } }, s), !1, !1), r;
22
+ var t = s();
23
+ t.$$click = u;
24
+ var o = i;
25
+ return typeof o == "function" ? a(o, t) : i = t, r(t, n({
26
+ get for() {
27
+ return c.for;
28
+ },
29
+ get class() {
30
+ return e("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", c.class);
31
+ }
32
+ }, l), !1, !1), t;
12
33
  })();
13
34
  };
35
+ t(["click"]);
14
36
  //#endregion
15
- export { o as Label };
37
+ export { c as Label };
16
38
 
17
39
  //# sourceMappingURL=Label.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Label.js","names":["splitProps","LabelProps","clsx","Label","props","local","others","_el$","_tmpl$","_$spread","_$mergeProps","class"],"sources":["../../../src/components/label/Label.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport type { LabelProps } from \"./Label.types\";\nimport { clsx } from \"~/utils\";\n\nexport const Label = (props: LabelProps) => {\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n // biome-ignore lint/a11y/noLabelWithoutControl: ignore\n <label\n data-slot=\"label\"\n class={clsx(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n local.class,\n )}\n {...others}\n />\n );\n};\n"],"mappings":";;;;sDAIaG,KAASC,MAAsB;CAC1C,IAAM,CAACC,GAAOC,KAAUN,EAAWI,GAAO,CAAC,SAAS,YAAY,CAAC;AAEjE,eACE;EAAA,IAAAG,IAAAC,GAAA;AAOY,SAPZC,EAAAF,GAAAG,EAAA,EAAA,IAAA,QAAA;AAAA,UAGSR,EACL,uNACAG,EAAMM,MACP;KAAA,EACGL,EAAM,EAAA,IAAA,GAAA,EAAAC;KAAA"}
1
+ {"version":3,"file":"Label.js","names":["splitProps","LabelProps","clsx","Label","props","ref","HTMLLabelElement","local","others","handleClick","e","MouseEvent","htmlFor","for","target","document","querySelector","HTMLElement","click","contains","Node","preventDefault","_el$","_tmpl$","$$click","_ref$","_$use","_$spread","_$mergeProps","class","_$delegateEvents"],"sources":["../../../src/components/label/Label.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport type { LabelProps } from \"./Label.types\";\nimport { clsx } from \"~/utils\";\n\nexport const Label = (props: LabelProps) => {\n let ref: HTMLLabelElement | undefined;\n const [local, others] = splitProps(props, [\"for\", \"class\", \"classList\"]);\n\n const handleClick = (e: MouseEvent) => {\n // 兄弟元素用 for 查找\n const htmlFor = local.for;\n if (htmlFor) {\n const target = document.querySelector<HTMLElement>(\n `[aria-labelledby=\"${htmlFor}\"]`,\n );\n if (!target) return;\n target.click();\n return;\n }\n\n // 子元素直接查询有 `aria-labelledby` 属性\n const target = ref?.querySelector<HTMLElement>(\"[aria-labelledby]\");\n if (target && !target.contains(e.target as Node)) {\n e.preventDefault(); // 阻止 label 原生的自动点击转发\n target.click(); // 手动触发一次\n }\n };\n\n return (\n // biome-ignore lint/a11y/noLabelWithoutControl: ignore\n <label\n ref={ref}\n for={local.for}\n data-slot=\"label\"\n class={clsx(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n local.class,\n )}\n onClick={handleClick}\n {...others}\n />\n );\n};\n"],"mappings":";;;;sDAIaG,KAASC,MAAsB;CAC1C,IAAIC,GACE,CAACE,GAAOC,KAAUR,EAAWI,GAAO;EAAC;EAAO;EAAS;EAAY,CAAC,EAElEK,KAAeC,MAAkB;EAErC,IAAME,IAAUL,EAAMM;AACtB,MAAID,GAAS;GACX,IAAME,IAASC,SAASC,cACtB,qBAAqBJ,EAAO,IAC7B;AACD,OAAI,CAACE,EAAQ;AACbA,KAAOI,OAAO;AACd;;EAIF,IAAMJ,IAAST,GAAKW,cAA2B,oBAAoB;AACnE,EAAIF,KAAU,CAACA,EAAOK,SAAST,EAAEI,OAAe,KAC9CJ,EAAEW,gBAAgB,EAClBP,EAAOI,OAAO;;AAIlB,eACE;EAAA,IAAAI,IAAAC,GAAA;AAAAD,IAAAE,UASWf;EAAW,IAAAgB,IAPfpB;AAQK,SARF,OAAAoB,KAAA,aAAAC,EAAAD,GAAAH,EAAA,GAAHjB,IAAGiB,GAAAK,EAAAL,GAAAM,EAAA;GAAA,IAAA,MAAA;AAAA,WACHrB,EAAMM;;GAAG,IAAA,QAAA;AAAA,WAEPX,EACL,uNACAK,EAAMsB,MACP;;GAAA,EAEGrB,EAAM,EAAA,IAAA,GAAA,EAAAc;KAAA;;AAGdQ,EAAA,CAAA,QAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"PaginationLink.js","names":["mergeProps","splitProps","PaginationLinkProps","clsx","Button","PaginationLink","props","merged","size","const","local","others","_$createComponent","_$mergeProps","as","variant","isActive","aria-current","undefined","data-active","class","icon","_$memo","page","children"],"sources":["../../../../src/components/pagination/PaginationLink/PaginationLink.tsx"],"sourcesContent":["import { mergeProps, splitProps } from \"solid-js\";\nimport type { PaginationLinkProps } from \"./PaginationLink.types\";\nimport { clsx } from \"~/utils\";\nimport { Button } from \"~/components/button\";\n\nexport const PaginationLink = (props: PaginationLinkProps) => {\n const merged = mergeProps({ size: \"md\" } as const, props);\n\n const [local, others] = splitProps(merged, [\n \"size\",\n \"isActive\",\n \"class\",\n \"classList\",\n \"page\",\n \"children\",\n ]);\n\n return (\n <Button<\"a\">\n as=\"a\"\n variant={local.isActive ? \"outline\" : \"ghost\"}\n size={local.size}\n aria-current={local.isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n data-active={local.isActive}\n class={clsx(local.class)}\n icon={\"page\" in local ? (local.page as number) : undefined}\n {...others}\n >\n {local.children}\n </Button>\n );\n};\n"],"mappings":";;;;;AAKA,IAAaK,KAAkBC,MAA+B;CAG5D,IAAM,CAACI,GAAOC,KAAUV,EAFTD,EAAW,EAAEQ,MAAM,MAAM,EAAWF,EAAM,EAEd;EACzC;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,QAAAM,EACGR,GAAMS,EAAA;EACLC,IAAE;EAAA,IACFC,UAAO;AAAA,UAAEL,EAAMM,WAAW,YAAY;;EAAO,IAC7CR,OAAI;AAAA,UAAEE,EAAMF;;EAAI,IAAA,iBAAA;AAAA,UACFE,EAAMM,WAAW,SAASE,KAAAA;;EAAS,aAAA;EAAA,IAAA,gBAAA;AAAA,UAEpCR,EAAMM;;EAAQ,IAAA,QAAA;AAAA,UACpBb,EAAKO,EAAMU,MAAM;;EAAA,IACxBC,OAAI;AAAA,UAAEC,QAAA,UAAUZ,EAAK,EAAA,GAAIA,EAAMa,OAAkBL,KAAAA;;EAAS,EACtDP,GAAM,EAAA,IAAAa,WAAA;AAAA,SAETd,EAAMc;IAAQ,CAAA,CAAA"}
1
+ {"version":3,"file":"PaginationLink.js","names":["mergeProps","splitProps","PaginationLinkProps","clsx","Button","PaginationLink","props","merged","size","const","local","others","_$createComponent","_$mergeProps","as","variant","isActive","aria-current","undefined","data-active","class","icon","_$memo","page","children"],"sources":["../../../../src/components/pagination/PaginationLink/PaginationLink.tsx"],"sourcesContent":["import { mergeProps, splitProps } from \"solid-js\";\nimport type { PaginationLinkProps } from \"./PaginationLink.types\";\nimport { clsx } from \"~/utils\";\nimport { Button } from \"~/components/button\";\n\nexport const PaginationLink = (props: PaginationLinkProps) => {\n const merged = mergeProps({ size: \"md\" } as const, props);\n\n const [local, others] = splitProps(merged, [\n \"size\",\n \"isActive\",\n \"class\",\n \"classList\",\n \"page\",\n \"children\",\n ]);\n\n return (\n <Button\n as=\"a\"\n variant={local.isActive ? \"outline\" : \"ghost\"}\n size={local.size}\n aria-current={local.isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n data-active={local.isActive}\n class={clsx(local.class)}\n icon={\"page\" in local ? (local.page as number) : undefined}\n {...others}\n >\n {local.children}\n </Button>\n );\n};\n"],"mappings":";;;;;AAKA,IAAaK,KAAkBC,MAA+B;CAG5D,IAAM,CAACI,GAAOC,KAAUV,EAFTD,EAAW,EAAEQ,MAAM,MAAM,EAAWF,EAAM,EAEd;EACzC;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,QAAAM,EACGR,GAAMS,EAAA;EACLC,IAAE;EAAA,IACFC,UAAO;AAAA,UAAEL,EAAMM,WAAW,YAAY;;EAAO,IAC7CR,OAAI;AAAA,UAAEE,EAAMF;;EAAI,IAAA,iBAAA;AAAA,UACFE,EAAMM,WAAW,SAASE,KAAAA;;EAAS,aAAA;EAAA,IAAA,gBAAA;AAAA,UAEpCR,EAAMM;;EAAQ,IAAA,QAAA;AAAA,UACpBb,EAAKO,EAAMU,MAAM;;EAAA,IACxBC,OAAI;AAAA,UAAEC,QAAA,UAAUZ,EAAK,EAAA,GAAIA,EAAMa,OAAkBL,KAAAA;;EAAS,EACtDP,GAAM,EAAA,IAAAa,WAAA;AAAA,SAETd,EAAMc;IAAQ,CAAA,CAAA"}
@@ -1,8 +1,9 @@
1
- import { JSX, JSXElement } from 'solid-js';
1
+ import { JSXElement } from 'solid-js';
2
2
  import { ButtonProps } from '../../button';
3
+ import { HTMLAttributes } from '../../../types';
3
4
  export type PaginationLinkProps = Pick<ButtonProps<"a">, "size" | "onClick"> & {
4
5
  isActive?: boolean;
5
- } & Omit<JSX.IntrinsicElements["a"], "children" | "onClick"> & ({
6
+ } & Omit<HTMLAttributes<"a">, "children" | "onClick"> & ({
6
7
  page: number;
7
8
  children?: never;
8
9
  } | {
@@ -1,61 +1,54 @@
1
1
  import { clsx as e } from "../../utils/clsx.js";
2
2
  import { classes as t } from "./Switch.styles.js";
3
3
  import { className as n, delegateEvents as r, effect as i, mergeProps as a, setAttribute as o, spread as s, template as c } from "solid-js/web";
4
- import { createSignal as l, mergeProps as u, splitProps as d } from "solid-js";
4
+ import { createMemo as l, createSignal as u, mergeProps as d, splitProps as f } from "solid-js";
5
5
  //#region src/components/switch/Switch.tsx
6
- var f = /* @__PURE__ */ c("<span data-slot=switch role=switch tabindex=0><span data-slot=switch-thumb>"), p = /* @__PURE__ */ c("<input tabindex=-1 aria-hidden=true type=checkbox>"), m = (r) => {
7
- let [c, m] = d(u({ size: "md" }, r), [
6
+ var p = /* @__PURE__ */ c("<span data-slot=switch role=switch tabindex=0><span data-slot=switch-thumb></span><input tabindex=-1 aria-hidden=true type=checkbox class=sr-only>"), m = (r) => {
7
+ let [c, m] = f(d({ size: "md" }, r), [
8
8
  "id",
9
+ "checked",
9
10
  "defaultChecked",
10
- "onChange",
11
+ "onCheckedChange",
11
12
  "size",
12
13
  "disabled",
13
14
  "class",
14
15
  "classList"
15
- ]), [h, g] = l(c.defaultChecked), _ = () => {
16
+ ]), [h, g] = u(c.defaultChecked), _ = () => {
17
+ if (c.checked !== void 0) {
18
+ g(c.checked), c.onCheckedChange?.(!c.checked);
19
+ return;
20
+ }
16
21
  let e = !h();
17
- g(e), c.onChange?.(e);
18
- };
19
- return [(() => {
20
- var r = f(), l = r.firstChild;
22
+ g(e), c.onCheckedChange?.(e);
23
+ }, v = l(() => c.checked === void 0 ? h() : c.checked);
24
+ return (() => {
25
+ var r = p(), l = r.firstChild, u = l.nextSibling;
21
26
  return r.$$click = _, s(r, a({
22
27
  get "data-size"() {
23
28
  return c.size;
24
29
  },
25
30
  get "data-checked"() {
26
- return h() ? "" : void 0;
27
- },
28
- get "data-unchecked"() {
29
- return h() ? void 0 : "";
31
+ return v();
30
32
  },
31
33
  get "data-disabled"() {
32
- return c.disabled ? "" : void 0;
34
+ return c.disabled;
33
35
  },
34
36
  get "aria-checked"() {
35
- return h();
37
+ return v();
36
38
  },
37
39
  get class() {
38
40
  return e(t.switch, c.class);
39
41
  }
40
42
  }, m), !1, !0), i((e) => {
41
- var r = t.thumb, i = h() ? "" : void 0, a = h() ? void 0 : "";
42
- return r !== e.e && n(l, e.e = r), i !== e.t && o(l, "data-checked", e.t = i), a !== e.a && o(l, "data-unchecked", e.a = a), e;
43
- }, {
44
- e: void 0,
45
- t: void 0,
46
- a: void 0
47
- }), r;
48
- })(), (() => {
49
- var e = p();
50
- return i((r) => {
51
- var i = c.id, a = t.input, s = c.disabled;
52
- return i !== r.e && o(e, "id", r.e = i), a !== r.t && n(e, r.t = a), s !== r.a && (e.disabled = r.a = s), r;
43
+ var r = t.thumb, i = v(), a = c.id, s = c.disabled;
44
+ return r !== e.e && n(l, e.e = r), i !== e.t && o(l, "data-checked", e.t = i), a !== e.a && o(u, "id", e.a = a), s !== e.o && (u.disabled = e.o = s), e;
53
45
  }, {
54
46
  e: void 0,
55
47
  t: void 0,
56
- a: void 0
57
- }), i(() => e.checked = h()), e;
58
- })()];
48
+ a: void 0,
49
+ o: void 0
50
+ }), i(() => u.checked = v()), r;
51
+ })();
59
52
  };
60
53
  r(["click"]);
61
54
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","names":["createSignal","mergeProps","splitProps","SwitchProps","clsx","classes","Switch","props","merged","size","const","local","others","checked","setChecked","defaultChecked","handleClick","newChecked","onChange","_el$","_tmpl$","_el$2","firstChild","$$click","_$spread","_$mergeProps","data-size","data-checked","undefined","data-unchecked","data-disabled","disabled","aria-checked","class","switch","_$effect","_p$","_v$","thumb","_v$2","_v$3","e","_$className","t","_$setAttribute","a","_el$3","_tmpl$2","_v$4","id","_v$5","input","_v$6","_$delegateEvents"],"sources":["../../../src/components/switch/Switch.tsx"],"sourcesContent":["import { createSignal, mergeProps, splitProps } from \"solid-js\";\nimport type { SwitchProps } from \"./Switch.types\";\nimport { clsx } from \"~/utils\";\nimport { classes } from \"./Switch.styles\";\n\nexport const Switch = (props: SwitchProps) => {\n const merged = mergeProps({ size: \"md\" } as const, props);\n\n const [local, others] = splitProps(merged, [\n \"id\",\n \"defaultChecked\",\n \"onChange\",\n \"size\",\n \"disabled\",\n \"class\",\n \"classList\",\n ]);\n\n const [checked, setChecked] = createSignal(local.defaultChecked);\n\n const handleClick = () => {\n const newChecked = !checked();\n setChecked(newChecked);\n local.onChange?.(newChecked);\n };\n\n return (\n <>\n <span\n data-slot=\"switch\"\n data-size={local.size}\n data-checked={checked() ? \"\" : undefined}\n data-unchecked={!checked() ? \"\" : undefined}\n data-disabled={local.disabled ? \"\" : undefined}\n role=\"switch\"\n tabIndex={0}\n aria-checked={checked()}\n class={clsx(classes.switch, local.class)}\n onClick={handleClick}\n {...others}\n >\n <span\n data-slot=\"switch-thumb\"\n class={classes.thumb}\n data-checked={checked() ? \"\" : undefined}\n data-unchecked={!checked() ? \"\" : undefined}\n />\n </span>\n\n <input\n id={local.id}\n tabIndex={-1}\n aria-hidden=\"true\"\n type=\"checkbox\"\n checked={checked()}\n class={classes.input}\n disabled={local.disabled}\n />\n </>\n );\n};\n"],"mappings":";;;;;uLAKaM,KAAUC,MAAuB;CAG5C,IAAM,CAACI,GAAOC,KAAUV,EAFTD,EAAW,EAAEQ,MAAM,MAAM,EAAWF,EAAM,EAEd;EACzC;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,EAEI,CAACM,GAASC,KAAcd,EAAaW,EAAMI,eAAe,EAE1DC,UAAoB;EACxB,IAAMC,IAAa,CAACJ,GAAS;AAE7BF,EADAG,EAAWG,EAAW,EACtBN,EAAMO,WAAWD,EAAW;;AAG9B,QAAA,QAAA;EAAA,IAAAE,IAAAC,GAAA,EAAAC,IAAAF,EAAAG;AAmBmD,SAnBnDH,EAAAI,UAYeP,GAAWQ,EAAAL,GAAAM,EAAA;GAAA,IAAA,cAAA;AAAA,WARTd,EAAMF;;GAAI,IAAA,iBAAA;AAAA,WACPI,GAAS,GAAG,KAAKe,KAAAA;;GAAS,IAAA,mBAAA;AAAA,WACvBf,GAAS,GAAQe,KAAAA,IAAL;;GAAc,IAAA,kBAAA;AAAA,WAC5BjB,EAAMoB,WAAW,KAAKH,KAAAA;;GAAS,IAAA,iBAAA;AAAA,WAGhCf,GAAS;;GAAA,IAAA,QAAA;AAAA,WAChBT,EAAKC,EAAQ6B,QAAQvB,EAAMsB,MAAM;;GAAA,EAEpCrB,EAAM,EAAA,IAAA,GAAA,EAAAuB,GAAAC,MAAA;GAAA,IAAAC,IAIDhC,EAAQiC,OAAKC,IACN1B,GAAS,GAAG,KAAKe,KAAAA,GAASY,IACvB3B,GAAS,GAAQe,KAAAA,IAAL;AAAc,UAAAS,MAAAD,EAAAK,KAAAC,EAAArB,GAAAe,EAAAK,IAAAJ,EAAA,EAAAE,MAAAH,EAAAO,KAAAC,EAAAvB,GAAA,gBAAAe,EAAAO,IAAAJ,EAAA,EAAAC,MAAAJ,EAAAS,KAAAD,EAAAvB,GAAA,kBAAAe,EAAAS,IAAAL,EAAA,EAAAJ;KAAA;GAAAK,GAAAb,KAAAA;GAAAe,GAAAf,KAAAA;GAAAiB,GAAAjB,KAAAA;GAAA,CAAA,EAAAT;KAAA,SAAA;EAAA,IAAA2B,IAAAC,GAAA;AAS3B,SAT2BZ,GAAAC,MAAA;GAAA,IAAAY,IAKzCrC,EAAMsC,IAAEC,IAKL7C,EAAQ8C,OAAKC,IACVzC,EAAMoB;AAAQ,UAAAiB,MAAAZ,EAAAK,KAAAG,EAAAE,GAAA,MAAAV,EAAAK,IAAAO,EAAA,EAAAE,MAAAd,EAAAO,KAAAD,EAAAI,GAAAV,EAAAO,IAAAO,EAAA,EAAAE,MAAAhB,EAAAS,MAAAC,EAAAf,WAAAK,EAAAS,IAAAO,IAAAhB;KAAA;GAAAK,GAAAb,KAAAA;GAAAe,GAAAf,KAAAA;GAAAiB,GAAAjB,KAAAA;GAAA,CAAA,EAAAO,QAAAW,EAAAjC,UAFfA,GAAS,CAAA,EAAAiC;KAAA,CAAA;;AAMxBO,EAAA,CAAA,QAAA,CAAA"}
1
+ {"version":3,"file":"Switch.js","names":["createMemo","createSignal","mergeProps","splitProps","SwitchProps","clsx","classes","Switch","props","merged","size","const","local","others","internalChecked","setInternalChecked","defaultChecked","handleClick","checked","undefined","onCheckedChange","newChecked","_el$","_tmpl$","_el$2","firstChild","_el$3","nextSibling","$$click","_$spread","_$mergeProps","data-size","data-checked","data-disabled","disabled","aria-checked","class","switch","_$effect","_p$","_v$","thumb","_v$2","_v$3","id","_v$4","e","_$className","t","_$setAttribute","a","o","_$delegateEvents"],"sources":["../../../src/components/switch/Switch.tsx"],"sourcesContent":["import { createMemo, createSignal, mergeProps, splitProps } from \"solid-js\";\nimport type { SwitchProps } from \"./Switch.types\";\nimport { clsx } from \"~/utils\";\nimport { classes } from \"./Switch.styles\";\n\nexport const Switch = (props: SwitchProps) => {\n const merged = mergeProps({ size: \"md\" } as const, props);\n\n const [local, others] = splitProps(merged, [\n \"id\",\n \"checked\",\n \"defaultChecked\",\n \"onCheckedChange\",\n \"size\",\n \"disabled\",\n \"class\",\n \"classList\",\n ]);\n\n const [internalChecked, setInternalChecked] = createSignal(\n local.defaultChecked,\n );\n\n const handleClick = () => {\n if (local.checked !== undefined) {\n setInternalChecked(local.checked);\n local.onCheckedChange?.(!local.checked);\n return;\n }\n\n const newChecked = !internalChecked();\n setInternalChecked(newChecked);\n local.onCheckedChange?.(newChecked);\n };\n\n const checked = createMemo(() =>\n local.checked !== undefined ? local.checked : internalChecked(),\n );\n\n return (\n <span\n data-slot=\"switch\"\n data-size={local.size}\n data-checked={checked()}\n data-disabled={local.disabled}\n role=\"switch\"\n tabIndex={0}\n aria-checked={checked()}\n class={clsx(classes.switch, local.class)}\n onClick={handleClick}\n {...others}\n >\n <span\n data-slot=\"switch-thumb\"\n class={classes.thumb}\n data-checked={checked()}\n />\n <input\n id={local.id}\n tabIndex={-1}\n aria-hidden=\"true\"\n type=\"checkbox\"\n checked={checked()}\n class=\"sr-only\"\n disabled={local.disabled}\n />\n </span>\n );\n};\n"],"mappings":";;;;;iLAKaO,KAAUC,MAAuB;CAG5C,IAAM,CAACI,GAAOC,KAAUV,EAFTD,EAAW,EAAEQ,MAAM,MAAM,EAAWF,EAAM,EAEd;EACzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,EAEI,CAACM,GAAiBC,KAAsBd,EAC5CW,EAAMI,eACP,EAEKC,UAAoB;AACxB,MAAIL,EAAMM,YAAYC,KAAAA,GAAW;AAE/BP,GADAG,EAAmBH,EAAMM,QAAQ,EACjCN,EAAMQ,kBAAkB,CAACR,EAAMM,QAAQ;AACvC;;EAGF,IAAMG,IAAa,CAACP,GAAiB;AAErCF,EADAG,EAAmBM,EAAW,EAC9BT,EAAMQ,kBAAkBC,EAAW;IAG/BH,IAAUlB,QACdY,EAAMM,YAAYC,KAAAA,IAA4BL,GAChD,GADgCF,EAAMM,QACrC;AAED,eAAA;EAAA,IAAAI,IAAAC,GAAA,EAAAC,IAAAF,EAAAG,YAAAC,IAAAF,EAAAG;AAuBwB,SAvBxBL,EAAAM,UAUaX,GAAWY,EAAAP,GAAAQ,EAAA;GAAA,IAAA,cAAA;AAAA,WAPTlB,EAAMF;;GAAI,IAAA,iBAAA;AAAA,WACPQ,GAAS;;GAAA,IAAA,kBAAA;AAAA,WACRN,EAAMsB;;GAAQ,IAAA,iBAAA;AAAA,WAGfhB,GAAS;;GAAA,IAAA,QAAA;AAAA,WAChBb,EAAKC,EAAQ+B,QAAQzB,EAAMwB,MAAM;;GAAA,EAEpCvB,EAAM,EAAA,IAAA,GAAA,EAAAyB,GAAAC,MAAA;GAAA,IAAAC,IAIDlC,EAAQmC,OAAKC,IACNxB,GAAS,EAAAyB,IAGnB/B,EAAMgC,IAAEC,IAMFjC,EAAMsB;AAAQ,UAAAM,MAAAD,EAAAO,KAAAC,EAAAvB,GAAAe,EAAAO,IAAAN,EAAA,EAAAE,MAAAH,EAAAS,KAAAC,EAAAzB,GAAA,gBAAAe,EAAAS,IAAAN,EAAA,EAAAC,MAAAJ,EAAAW,KAAAD,EAAAvB,GAAA,MAAAa,EAAAW,IAAAP,EAAA,EAAAE,MAAAN,EAAAY,MAAAzB,EAAAQ,WAAAK,EAAAY,IAAAN,IAAAN;KAAA;GAAAO,GAAA3B,KAAAA;GAAA6B,GAAA7B,KAAAA;GAAA+B,GAAA/B,KAAAA;GAAAgC,GAAAhC,KAAAA;GAAA,CAAA,EAAAmB,QAAAZ,EAAAR,UAFfA,GAAS,CAAA,EAAAI;KAAA;;AAMxB8B,EAAA,CAAA,QAAA,CAAA"}
@@ -1,5 +1,4 @@
1
1
  export declare const classes: {
2
2
  readonly switch: string;
3
3
  readonly thumb: string;
4
- readonly input: string;
5
4
  };
@@ -1,9 +1,8 @@
1
1
  import { clsx as e } from "../../utils/clsx.js";
2
2
  //#region src/components/switch/Switch.styles.ts
3
3
  var t = {
4
- switch: e("relative inline-flex shrink-0 items-center after:absolute after:-inset-x-3 after:-inset-y-2", "rounded-full border border-transparent focus-visible:border-neutral-400 dark:focus-visible:border-neutral-500 aria-invalid:border-red-600 dark:aria-invalid:border-red-400/50", "focus-visible:ring-neutral-400/50 dark:focus-visible:ring-neutral-500/50 aria-invalid:ring-red-600/20 dark:aria-invalid:ring-red-400/40 data-checked:bg-neutral-900 dark:data-checked:bg-neutral-200 data-unchecked:bg-neutral-200 dark:data-unchecked:bg-white/12", "data-[size=md]:h-[18.4px] data-[size=md]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6", "peer group/switch transition-all outline-none focus-visible:ring-3 aria-invalid:ring-3 data-disabled:cursor-not-allowed data-disabled:opacity-50 data-disabled:pointer-events-none"),
5
- thumb: e("pointer-events-none", "block", "rounded-full", "ring-0", "transition-transform", "group-data-[size=md]/switch:size-4 group-data-[size=sm]/switch:size-3", "group-data-[size=md]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=md]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0", "bg-white dark:bg-neutral-950 dark:data-checked:bg-neutral-900 dark:data-unchecked:bg-neutral-50"),
6
- input: e("[clip-path:inset(50%)]", "overflow-hidden", "whitespace-nowrap", "border-none", "p-0", "size-px", "-m-1", "fixed", "top-0", "left-0")
4
+ switch: e("relative inline-flex shrink-0 items-center after:absolute after:-inset-x-3 after:-inset-y-2", "rounded-full border border-transparent focus-visible:border-neutral-400 dark:focus-visible:border-neutral-500 aria-invalid:border-red-600 dark:aria-invalid:border-red-400/50", "focus-visible:ring-neutral-400/50 dark:focus-visible:ring-neutral-500/50 aria-invalid:ring-red-600/20 dark:aria-invalid:ring-red-400/40 data-[checked=true]:bg-neutral-900 dark:data-[checked=true]:bg-neutral-200 data-[checked=false]:bg-neutral-200 dark:data-[checked=false]:bg-white/12", "data-[size=md]:h-[18.4px] data-[size=md]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6", "peer group/switch transition-all outline-none focus-visible:ring-3 aria-invalid:ring-3 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50 data-[disabled=true]:pointer-events-none"),
5
+ thumb: e("pointer-events-none", "block", "rounded-full", "ring-0", "transition-transform", "group-data-[size=md]/switch:size-4 group-data-[size=sm]/switch:size-3", "group-data-[size=md]/switch:data-[checked=true]:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-[checked=true]:translate-x-[calc(100%-2px)] group-data-[size=md]/switch:data-[checked=false]:translate-x-0 group-data-[size=sm]/switch:data-[checked=false]:translate-x-0", "bg-white dark:bg-neutral-950 dark:data-[checked=true]:bg-neutral-900 dark:data-[checked=false]:bg-neutral-50")
7
6
  };
8
7
  //#endregion
9
8
  export { t as classes };
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.styles.js","names":[],"sources":["../../../src/components/switch/Switch.styles.ts"],"sourcesContent":["import { clsx } from \"~/utils\";\n\nexport const classes = {\n switch: clsx(\n \"relative inline-flex shrink-0 items-center after:absolute after:-inset-x-3 after:-inset-y-2\",\n \"rounded-full border border-transparent focus-visible:border-neutral-400 dark:focus-visible:border-neutral-500 aria-invalid:border-red-600 dark:aria-invalid:border-red-400/50\",\n \"focus-visible:ring-neutral-400/50 dark:focus-visible:ring-neutral-500/50 aria-invalid:ring-red-600/20 dark:aria-invalid:ring-red-400/40 data-checked:bg-neutral-900 dark:data-checked:bg-neutral-200 data-unchecked:bg-neutral-200 dark:data-unchecked:bg-white/12\",\n \"data-[size=md]:h-[18.4px] data-[size=md]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6\",\n \"peer group/switch transition-all outline-none focus-visible:ring-3 aria-invalid:ring-3 data-disabled:cursor-not-allowed data-disabled:opacity-50 data-disabled:pointer-events-none\",\n ),\n thumb: clsx(\n \"pointer-events-none\",\n \"block\",\n \"rounded-full\",\n \"ring-0\",\n \"transition-transform\",\n \"group-data-[size=md]/switch:size-4 group-data-[size=sm]/switch:size-3\",\n \"group-data-[size=md]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=md]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0\",\n \"bg-white dark:bg-neutral-950 dark:data-checked:bg-neutral-900 dark:data-unchecked:bg-neutral-50\",\n ),\n input: clsx(\n \"[clip-path:inset(50%)]\",\n \"overflow-hidden\",\n \"whitespace-nowrap\",\n \"border-none\",\n \"p-0\",\n \"size-px\",\n \"-m-1\",\n \"fixed\",\n \"top-0\",\n \"left-0\",\n ),\n} as const;\n"],"mappings":";;AAEA,IAAa,IAAU;CACrB,QAAQ,EACN,+FACA,iLACA,sQACA,wFACA,qLACD;CACD,OAAO,EACL,uBACA,SACA,gBACA,UACA,wBACA,yEACA,iQACA,kGACD;CACD,OAAO,EACL,0BACA,mBACA,qBACA,eACA,OACA,WACA,QACA,SACA,SACA,SACD;CACF"}
1
+ {"version":3,"file":"Switch.styles.js","names":[],"sources":["../../../src/components/switch/Switch.styles.ts"],"sourcesContent":["import { clsx } from \"~/utils\";\n\nexport const classes = {\n switch: clsx(\n \"relative inline-flex shrink-0 items-center after:absolute after:-inset-x-3 after:-inset-y-2\",\n \"rounded-full border border-transparent focus-visible:border-neutral-400 dark:focus-visible:border-neutral-500 aria-invalid:border-red-600 dark:aria-invalid:border-red-400/50\",\n \"focus-visible:ring-neutral-400/50 dark:focus-visible:ring-neutral-500/50 aria-invalid:ring-red-600/20 dark:aria-invalid:ring-red-400/40 data-[checked=true]:bg-neutral-900 dark:data-[checked=true]:bg-neutral-200 data-[checked=false]:bg-neutral-200 dark:data-[checked=false]:bg-white/12\",\n \"data-[size=md]:h-[18.4px] data-[size=md]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6\",\n \"peer group/switch transition-all outline-none focus-visible:ring-3 aria-invalid:ring-3 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50 data-[disabled=true]:pointer-events-none\",\n ),\n thumb: clsx(\n \"pointer-events-none\",\n \"block\",\n \"rounded-full\",\n \"ring-0\",\n \"transition-transform\",\n \"group-data-[size=md]/switch:size-4 group-data-[size=sm]/switch:size-3\",\n \"group-data-[size=md]/switch:data-[checked=true]:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-[checked=true]:translate-x-[calc(100%-2px)] group-data-[size=md]/switch:data-[checked=false]:translate-x-0 group-data-[size=sm]/switch:data-[checked=false]:translate-x-0\",\n \"bg-white dark:bg-neutral-950 dark:data-[checked=true]:bg-neutral-900 dark:data-[checked=false]:bg-neutral-50\",\n ),\n} as const;\n"],"mappings":";;AAEA,IAAa,IAAU;CACrB,QAAQ,EACN,+FACA,iLACA,gSACA,wFACA,0MACD;CACD,OAAO,EACL,uBACA,SACA,gBACA,UACA,wBACA,yEACA,2RACA,+GACD;CACF"}
@@ -3,5 +3,6 @@ export type SwitchProps = Omit<PolymorphicProps<"span", BaseProps & {
3
3
  size?: "sm" | "md";
4
4
  disabled?: boolean;
5
5
  defaultChecked?: boolean;
6
- onChange?: (checked: boolean) => void;
6
+ checked?: boolean;
7
+ onCheckedChange?: (checked: boolean) => void;
7
8
  }, false>, "children">;
@@ -65,7 +65,10 @@ var E = /* @__PURE__ */ v("<li data-sonner-toast>"), D = (f) => {
65
65
  };
66
66
  },
67
67
  get icon() {
68
- return d(T, {});
68
+ return {
69
+ icon: d(T, {}),
70
+ ariaLabel: "Close"
71
+ };
69
72
  },
70
73
  size: "xs"
71
74
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","names":["createEffect","createMemo","createSignal","onMount","Show","Component","ToastIcon","ToastContent","ToastActions","useIsDocumentHidden","useToastTimer","useSwipe","useToastHeight","TIME_BEFORE_UNMOUNT","TOAST_LIFETIME","ToastProps","clsx","Button","X","Toast","props","toastRef","HTMLLIElement","mounted","setMounted","removed","setRemoved","isDocumentHidden","isFront","index","isVisible","visibleToasts","dismissible","toast","toastType","type","disabled","closeButton","duration","y","x","position","split","heightIndex","heights","findIndex","h","toastId","id","toastsHeightBefore","reduce","acc","curr","idx","height","offset","gap","deleteToast","swipe","setOffsetBeforeRemove","setHeights","filter","setTimeout","removeToast","initialHeight","expanded","interacting","swipeDirections","delete","onDismiss","_el$","_tmpl$","_$addEventListener","onPointerMove","onPointerUp","onPointerDown","onDragEnd","_ref$","_$use","_$setAttribute","_$insert","_$createComponent","when","_$memo","jsx","children","aria-label","closeButtonAriaLabel","data-disabled","onClick","undefined","icon","size","icons","classes","descriptionClassName","descriptionClass","cancelButtonStyle","actionButtonStyle","_$effect","_p$","_v$","class","default","_v$2","richColors","defaultRichColors","_v$3","unstyled","_v$4","_v$5","Boolean","promise","_v$6","isSwiped","_v$7","_v$8","_v$9","_v$0","_v$1","swiping","_v$10","_v$11","_v$12","invert","_v$13","swipeOut","_v$14","swipeOutDirection","_v$15","expandByDefault","_v$16","testId","_v$17","toasts","length","offsetBeforeRemove","style","e","_$className","t","a","o","i","n","s","r","d","l","u","c","w","m","f","g","p","_$style","_$delegateEvents"],"sources":["../../../../src/components/toast/components/Toast.tsx"],"sourcesContent":["/**\n * components/Toast.tsx\n * Renders a single toast item.\n * Composes sub-components (ToastIcon, ToastContent, ToastActions) and hooks\n * (useToastTimer, useSwipe, useToastHeight). No business logic lives here directly.\n */\nimport {\n createEffect,\n createMemo,\n createSignal,\n onMount,\n Show,\n type Component,\n} from \"solid-js\";\nimport { ToastIcon } from \"./ToastIcon\";\nimport { ToastContent } from \"./ToastContent\";\nimport { ToastActions } from \"./ToastActions\";\nimport { useIsDocumentHidden } from \"../hooks\";\nimport { useToastTimer } from \"../hooks/useToastTimer\";\nimport { useSwipe } from \"../hooks/useSwipe\";\nimport { useToastHeight } from \"../hooks/useToastHeight\";\nimport { TIME_BEFORE_UNMOUNT, TOAST_LIFETIME } from \"../constants\";\nimport type { ToastProps } from \"../types\";\nimport { clsx } from \"~/utils\";\nimport { Button } from \"~/components/button\";\nimport { X } from \"lucide-solid\";\n\nexport const Toast: Component<ToastProps> = (props) => {\n let toastRef: HTMLLIElement | undefined;\n\n const [mounted, setMounted] = createSignal(false);\n const [removed, setRemoved] = createSignal(false);\n\n const isDocumentHidden = useIsDocumentHidden();\n\n // Derived values\n const isFront = () => props.index === 0;\n const isVisible = () => props.index + 1 <= props.visibleToasts;\n const dismissible = () => props.toast.dismissible !== false;\n const toastType = () => props.toast.type ?? \"default\";\n const disabled = () => toastType() === \"loading\";\n\n const closeButton = () => props.toast.closeButton ?? props.closeButton;\n const duration = () =>\n props.toast.duration ?? props.duration ?? TOAST_LIFETIME;\n\n const [y, x] = props.position.split(\"-\");\n\n const heightIndex = createMemo(\n () => props.heights.findIndex((h) => h.toastId === props.toast.id) || 0,\n );\n\n const toastsHeightBefore = createMemo(() =>\n props.heights.reduce((acc, curr, idx) => {\n if (idx >= heightIndex()) return acc;\n return acc + curr.height;\n }, 0),\n );\n\n const offset = createMemo(\n () => heightIndex() * (props.gap ?? 14) + toastsHeightBefore(),\n );\n\n // ─── Mount animation ─────────────────────────────────────────────────────────\n onMount(() => setMounted(true));\n\n // ─── Delete helper ───────────────────────────────────────────────────────────\n const deleteToast = () => {\n setRemoved(true);\n swipe.setOffsetBeforeRemove(offset());\n props.setHeights((h) => h.filter((x) => x.toastId !== props.toast.id));\n setTimeout(() => props.removeToast(props.toast), TIME_BEFORE_UNMOUNT);\n };\n\n // ─── Sub-hooks ───────────────────────────────────────────────────────────────\n const { initialHeight } = useToastHeight({\n toastRef: () => toastRef,\n toast: () => props.toast,\n mounted,\n setHeights: props.setHeights,\n });\n\n useToastTimer({\n toast: props.toast,\n duration: duration(),\n expanded: () => props.expanded,\n interacting: () => props.interacting,\n isDocumentHidden,\n deleteToast,\n });\n\n const swipe = useSwipe({\n toastRef: () => toastRef,\n toast: props.toast,\n dismissible: dismissible(),\n position: props.position,\n swipeDirections: props.swipeDirections,\n offset,\n deleteToast,\n });\n\n // ─── External delete signal ──────────────────────────────────────────────────\n createEffect(() => {\n if (props.toast.delete) {\n deleteToast();\n props.toast.onDismiss?.(props.toast);\n }\n });\n\n return (\n <li\n // tabIndex={0}\n ref={toastRef}\n class={clsx(\n props.class,\n props.toast.class,\n props.classes?.toast,\n props.toast.classes?.toast,\n props.classes?.default,\n props.classes?.[toastType()],\n props.toast.classes?.[toastType()],\n )}\n data-sonner-toast=\"\"\n data-rich-colors={props.toast.richColors ?? props.defaultRichColors}\n data-styled={!(props.toast.jsx || props.toast.unstyled || props.unstyled)}\n data-mounted={mounted()}\n data-promise={Boolean(props.toast.promise)}\n data-swiped={swipe.isSwiped()}\n data-removed={removed()}\n data-visible={isVisible()}\n data-y-position={y}\n data-x-position={x}\n data-index={props.index}\n data-front={isFront()}\n data-swiping={swipe.swiping()}\n data-dismissible={dismissible()}\n data-type={toastType()}\n data-invert={props.toast.invert || props.invert}\n data-swipe-out={swipe.swipeOut()}\n data-swipe-direction={swipe.swipeOutDirection()}\n data-expanded={props.expanded || (props.expandByDefault && mounted())}\n data-testid={props.toast.testId}\n style={{\n \"--index\": props.index,\n \"--toasts-before\": props.index,\n \"--z-index\": props.toasts.length - props.index,\n \"--offset\": `${removed() ? swipe.offsetBeforeRemove() : offset()}px`,\n \"--initial-height\": props.expandByDefault\n ? \"auto\"\n : `${initialHeight()}px`,\n ...props.style,\n ...props.toast.style,\n }}\n onDragEnd={swipe.onDragEnd}\n onPointerDown={swipe.onPointerDown}\n onPointerUp={swipe.onPointerUp}\n onPointerMove={swipe.onPointerMove}\n >\n {/* Close button */}\n <Show\n when={\n closeButton() && !props.toast.jsx && props.toast.type !== \"loading\"\n }\n >\n <Button\n aria-label={props.closeButtonAriaLabel ?? \"Close toast\"}\n data-disabled={disabled()}\n data-close-button\n onClick={\n disabled() || !dismissible()\n ? undefined\n : () => {\n deleteToast();\n props.toast.onDismiss?.(props.toast);\n }\n }\n icon={<X />}\n size=\"xs\"\n />\n </Show>\n\n {/* Icon area */}\n <ToastIcon\n toast={props.toast}\n icons={props.icons}\n classes={props.classes}\n />\n\n {/* Text content */}\n <ToastContent\n toast={props.toast}\n classes={props.classes}\n descriptionClassName={props.descriptionClass}\n />\n\n {/* Action buttons */}\n <ToastActions\n toast={props.toast}\n classes={props.classes}\n cancelButtonStyle={props.cancelButtonStyle}\n actionButtonStyle={props.actionButtonStyle}\n dismissible={dismissible()}\n deleteToast={deleteToast}\n />\n </li>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Toast.js","names":["createEffect","createMemo","createSignal","onMount","Show","Component","ToastIcon","ToastContent","ToastActions","useIsDocumentHidden","useToastTimer","useSwipe","useToastHeight","TIME_BEFORE_UNMOUNT","TOAST_LIFETIME","ToastProps","clsx","Button","X","Toast","props","toastRef","HTMLLIElement","mounted","setMounted","removed","setRemoved","isDocumentHidden","isFront","index","isVisible","visibleToasts","dismissible","toast","toastType","type","disabled","closeButton","duration","y","x","position","split","heightIndex","heights","findIndex","h","toastId","id","toastsHeightBefore","reduce","acc","curr","idx","height","offset","gap","deleteToast","swipe","setOffsetBeforeRemove","setHeights","filter","setTimeout","removeToast","initialHeight","expanded","interacting","swipeDirections","delete","onDismiss","_el$","_tmpl$","_$addEventListener","onPointerMove","onPointerUp","onPointerDown","onDragEnd","_ref$","_$use","_$setAttribute","_$insert","_$createComponent","when","_$memo","jsx","children","aria-label","closeButtonAriaLabel","data-disabled","onClick","undefined","icon","ariaLabel","size","icons","classes","descriptionClassName","descriptionClass","cancelButtonStyle","actionButtonStyle","_$effect","_p$","_v$","class","default","_v$2","richColors","defaultRichColors","_v$3","unstyled","_v$4","_v$5","Boolean","promise","_v$6","isSwiped","_v$7","_v$8","_v$9","_v$0","_v$1","swiping","_v$10","_v$11","_v$12","invert","_v$13","swipeOut","_v$14","swipeOutDirection","_v$15","expandByDefault","_v$16","testId","_v$17","toasts","length","offsetBeforeRemove","style","e","_$className","t","a","o","i","n","s","r","d","l","u","c","w","m","f","g","p","_$style","_$delegateEvents"],"sources":["../../../../src/components/toast/components/Toast.tsx"],"sourcesContent":["/**\n * components/Toast.tsx\n * Renders a single toast item.\n * Composes sub-components (ToastIcon, ToastContent, ToastActions) and hooks\n * (useToastTimer, useSwipe, useToastHeight). No business logic lives here directly.\n */\nimport {\n createEffect,\n createMemo,\n createSignal,\n onMount,\n Show,\n type Component,\n} from \"solid-js\";\nimport { ToastIcon } from \"./ToastIcon\";\nimport { ToastContent } from \"./ToastContent\";\nimport { ToastActions } from \"./ToastActions\";\nimport { useIsDocumentHidden } from \"../hooks\";\nimport { useToastTimer } from \"../hooks/useToastTimer\";\nimport { useSwipe } from \"../hooks/useSwipe\";\nimport { useToastHeight } from \"../hooks/useToastHeight\";\nimport { TIME_BEFORE_UNMOUNT, TOAST_LIFETIME } from \"../constants\";\nimport type { ToastProps } from \"../types\";\nimport { clsx } from \"~/utils\";\nimport { Button } from \"~/components/button\";\nimport { X } from \"lucide-solid\";\n\nexport const Toast: Component<ToastProps> = (props) => {\n let toastRef: HTMLLIElement | undefined;\n\n const [mounted, setMounted] = createSignal(false);\n const [removed, setRemoved] = createSignal(false);\n\n const isDocumentHidden = useIsDocumentHidden();\n\n // Derived values\n const isFront = () => props.index === 0;\n const isVisible = () => props.index + 1 <= props.visibleToasts;\n const dismissible = () => props.toast.dismissible !== false;\n const toastType = () => props.toast.type ?? \"default\";\n const disabled = () => toastType() === \"loading\";\n\n const closeButton = () => props.toast.closeButton ?? props.closeButton;\n const duration = () =>\n props.toast.duration ?? props.duration ?? TOAST_LIFETIME;\n\n const [y, x] = props.position.split(\"-\");\n\n const heightIndex = createMemo(\n () => props.heights.findIndex((h) => h.toastId === props.toast.id) || 0,\n );\n\n const toastsHeightBefore = createMemo(() =>\n props.heights.reduce((acc, curr, idx) => {\n if (idx >= heightIndex()) return acc;\n return acc + curr.height;\n }, 0),\n );\n\n const offset = createMemo(\n () => heightIndex() * (props.gap ?? 14) + toastsHeightBefore(),\n );\n\n // ─── Mount animation ─────────────────────────────────────────────────────────\n onMount(() => setMounted(true));\n\n // ─── Delete helper ───────────────────────────────────────────────────────────\n const deleteToast = () => {\n setRemoved(true);\n swipe.setOffsetBeforeRemove(offset());\n props.setHeights((h) => h.filter((x) => x.toastId !== props.toast.id));\n setTimeout(() => props.removeToast(props.toast), TIME_BEFORE_UNMOUNT);\n };\n\n // ─── Sub-hooks ───────────────────────────────────────────────────────────────\n const { initialHeight } = useToastHeight({\n toastRef: () => toastRef,\n toast: () => props.toast,\n mounted,\n setHeights: props.setHeights,\n });\n\n useToastTimer({\n toast: props.toast,\n duration: duration(),\n expanded: () => props.expanded,\n interacting: () => props.interacting,\n isDocumentHidden,\n deleteToast,\n });\n\n const swipe = useSwipe({\n toastRef: () => toastRef,\n toast: props.toast,\n dismissible: dismissible(),\n position: props.position,\n swipeDirections: props.swipeDirections,\n offset,\n deleteToast,\n });\n\n // ─── External delete signal ──────────────────────────────────────────────────\n createEffect(() => {\n if (props.toast.delete) {\n deleteToast();\n props.toast.onDismiss?.(props.toast);\n }\n });\n\n return (\n <li\n // tabIndex={0}\n ref={toastRef}\n class={clsx(\n props.class,\n props.toast.class,\n props.classes?.toast,\n props.toast.classes?.toast,\n props.classes?.default,\n props.classes?.[toastType()],\n props.toast.classes?.[toastType()],\n )}\n data-sonner-toast=\"\"\n data-rich-colors={props.toast.richColors ?? props.defaultRichColors}\n data-styled={!(props.toast.jsx || props.toast.unstyled || props.unstyled)}\n data-mounted={mounted()}\n data-promise={Boolean(props.toast.promise)}\n data-swiped={swipe.isSwiped()}\n data-removed={removed()}\n data-visible={isVisible()}\n data-y-position={y}\n data-x-position={x}\n data-index={props.index}\n data-front={isFront()}\n data-swiping={swipe.swiping()}\n data-dismissible={dismissible()}\n data-type={toastType()}\n data-invert={props.toast.invert || props.invert}\n data-swipe-out={swipe.swipeOut()}\n data-swipe-direction={swipe.swipeOutDirection()}\n data-expanded={props.expanded || (props.expandByDefault && mounted())}\n data-testid={props.toast.testId}\n style={{\n \"--index\": props.index,\n \"--toasts-before\": props.index,\n \"--z-index\": props.toasts.length - props.index,\n \"--offset\": `${removed() ? swipe.offsetBeforeRemove() : offset()}px`,\n \"--initial-height\": props.expandByDefault\n ? \"auto\"\n : `${initialHeight()}px`,\n ...props.style,\n ...props.toast.style,\n }}\n onDragEnd={swipe.onDragEnd}\n onPointerDown={swipe.onPointerDown}\n onPointerUp={swipe.onPointerUp}\n onPointerMove={swipe.onPointerMove}\n >\n {/* Close button */}\n <Show\n when={\n closeButton() && !props.toast.jsx && props.toast.type !== \"loading\"\n }\n >\n <Button\n aria-label={props.closeButtonAriaLabel ?? \"Close toast\"}\n data-disabled={disabled()}\n data-close-button\n onClick={\n disabled() || !dismissible()\n ? undefined\n : () => {\n deleteToast();\n props.toast.onDismiss?.(props.toast);\n }\n }\n icon={{ icon: <X />, ariaLabel: \"Close\" }}\n size=\"xs\"\n />\n </Show>\n\n {/* Icon area */}\n <ToastIcon\n toast={props.toast}\n icons={props.icons}\n classes={props.classes}\n />\n\n {/* Text content */}\n <ToastContent\n toast={props.toast}\n classes={props.classes}\n descriptionClassName={props.descriptionClass}\n />\n\n {/* Action buttons */}\n <ToastActions\n toast={props.toast}\n classes={props.classes}\n cancelButtonStyle={props.cancelButtonStyle}\n actionButtonStyle={props.actionButtonStyle}\n dismissible={dismissible()}\n deleteToast={deleteToast}\n />\n </li>\n );\n};\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,10 +4,14 @@ export * from './components/alert-dialog';
4
4
  export * from './components/aspect-ratio';
5
5
  export * from './components/avatar';
6
6
  export * from './components/badge';
7
+ export * from './components/breadcrumb';
7
8
  export * from './components/button';
8
9
  export * from './components/button-group';
9
10
  export * from './components/card';
10
11
  export * from './components/carousel';
12
+ export * from './components/checkbox';
13
+ export * from './components/collapsible';
14
+ export * from './components/dialog';
11
15
  export * from './components/field';
12
16
  export * from './components/image';
13
17
  export * from './components/input';