@studiocubics/components 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/README.md +2 -0
  2. package/dist/Cards/Card/Card.js +1 -44
  3. package/dist/Cards/Card/Card.js.map +1 -1
  4. package/dist/Cards/Card/Card.module.css.js +1 -3
  5. package/dist/Cards/Card/Card.module.css.js.map +1 -1
  6. package/dist/Cards/CollectionItemCard/CollectionItemCard.js +1 -47
  7. package/dist/Cards/CollectionItemCard/CollectionItemCard.js.map +1 -1
  8. package/dist/Cards/CollectionItemCard/CollectionItemCard.module.css.js +1 -3
  9. package/dist/Cards/CollectionItemCard/CollectionItemCard.module.css.js.map +1 -1
  10. package/dist/Cards/CollectionItemCard/CollectionItemCardActions.js +1 -33
  11. package/dist/Cards/CollectionItemCard/CollectionItemCardActions.js.map +1 -1
  12. package/dist/Cards/GlassCard/GlassCard.js +1 -51
  13. package/dist/Cards/GlassCard/GlassCard.js.map +1 -1
  14. package/dist/Cards/GlassCard/GlassCard.module.css.js +1 -3
  15. package/dist/Cards/GlassCard/GlassCard.module.css.js.map +1 -1
  16. package/dist/Display/Accordion/Accordion.js +1 -27
  17. package/dist/Display/Accordion/Accordion.js.map +1 -1
  18. package/dist/Display/Accordion/Accordion.module.css.js +1 -3
  19. package/dist/Display/Accordion/Accordion.module.css.js.map +1 -1
  20. package/dist/Display/Accordion/AccordionItem.js +1 -55
  21. package/dist/Display/Accordion/AccordionItem.js.map +1 -1
  22. package/dist/Display/Chip/Chip.js +1 -42
  23. package/dist/Display/Chip/Chip.js.map +1 -1
  24. package/dist/Display/Chip/Chip.module.css.js +1 -3
  25. package/dist/Display/Chip/Chip.module.css.js.map +1 -1
  26. package/dist/Display/IdentityDisplay/IdentityDisplay.js +1 -35
  27. package/dist/Display/IdentityDisplay/IdentityDisplay.js.map +1 -1
  28. package/dist/Display/IdentityDisplay/IdentityDisplay.module.css.js +1 -3
  29. package/dist/Display/IdentityDisplay/IdentityDisplay.module.css.js.map +1 -1
  30. package/dist/Display/InputErrors/InputErrors.js +1 -24
  31. package/dist/Display/InputErrors/InputErrors.js.map +1 -1
  32. package/dist/Display/InputErrors/InputErrors.module.css.js +1 -3
  33. package/dist/Display/InputErrors/InputErrors.module.css.js.map +1 -1
  34. package/dist/Display/Kbd/Kbd.js +1 -18
  35. package/dist/Display/Kbd/Kbd.js.map +1 -1
  36. package/dist/Display/Kbd/Kbd.module.css.js +1 -3
  37. package/dist/Display/Kbd/Kbd.module.css.js.map +1 -1
  38. package/dist/Display/Kbd/buttonList.js +1 -197
  39. package/dist/Display/Kbd/buttonList.js.map +1 -1
  40. package/dist/Display/LabeledValue/LabeledValue.js +1 -10
  41. package/dist/Display/LabeledValue/LabeledValue.js.map +1 -1
  42. package/dist/Display/LabeledValue/LabeledValue.module.css.js +1 -3
  43. package/dist/Display/LabeledValue/LabeledValue.module.css.js.map +1 -1
  44. package/dist/Display/List/List.js +1 -95
  45. package/dist/Display/List/List.js.map +1 -1
  46. package/dist/Display/List/List.module.css.js +1 -3
  47. package/dist/Display/List/List.module.css.js.map +1 -1
  48. package/dist/Display/PasswordStrength/PasswordStrength.js +1 -16
  49. package/dist/Display/PasswordStrength/PasswordStrength.js.map +1 -1
  50. package/dist/Display/PasswordStrength/PasswordStrength.module.css.js +1 -3
  51. package/dist/Display/PasswordStrength/PasswordStrength.module.css.js.map +1 -1
  52. package/dist/Display/PasswordStrength/usePasswordStrength.js +1 -48
  53. package/dist/Display/PasswordStrength/usePasswordStrength.js.map +1 -1
  54. package/dist/Display/Skeleton/Skeleton.d.ts +1 -1
  55. package/dist/Display/Skeleton/Skeleton.js +1 -10
  56. package/dist/Display/Skeleton/Skeleton.js.map +1 -1
  57. package/dist/Display/Skeleton/Skeleton.module.css.js +1 -3
  58. package/dist/Display/Skeleton/Skeleton.module.css.js.map +1 -1
  59. package/dist/Display/Toast/Toaster.js +1 -44
  60. package/dist/Display/Toast/Toaster.js.map +1 -1
  61. package/dist/Display/Toast/toast.js +1 -31
  62. package/dist/Display/Toast/toast.js.map +1 -1
  63. package/dist/Display/Tooltip/Tooltip.js +1 -44
  64. package/dist/Display/Tooltip/Tooltip.js.map +1 -1
  65. package/dist/Display/Tooltip/Tooltip.module.css.js +1 -3
  66. package/dist/Display/Tooltip/Tooltip.module.css.js.map +1 -1
  67. package/dist/Display/Tooltip/getArrowDirection.js +1 -47
  68. package/dist/Display/Tooltip/getArrowDirection.js.map +1 -1
  69. package/dist/Display/Tooltip/useTooltip.js +1 -47
  70. package/dist/Display/Tooltip/useTooltip.js.map +1 -1
  71. package/dist/Display/WIP/WIP.d.ts +5 -0
  72. package/dist/Forms/ConfirmationForm/ConfirmationForm.js +1 -11
  73. package/dist/Forms/ConfirmationForm/ConfirmationForm.js.map +1 -1
  74. package/dist/Forms/ConfirmationForm/ConfirmationForm.module.css.js +1 -3
  75. package/dist/Forms/ConfirmationForm/ConfirmationForm.module.css.js.map +1 -1
  76. package/dist/Inputs/Button/Button.js +1 -55
  77. package/dist/Inputs/Button/Button.js.map +1 -1
  78. package/dist/Inputs/Button/Button.module.css.js +1 -3
  79. package/dist/Inputs/Button/Button.module.css.js.map +1 -1
  80. package/dist/Inputs/Checkbox/Checkbox.js +1 -54
  81. package/dist/Inputs/Checkbox/Checkbox.js.map +1 -1
  82. package/dist/Inputs/Checkbox/Checkbox.module.css.js +1 -3
  83. package/dist/Inputs/Checkbox/Checkbox.module.css.js.map +1 -1
  84. package/dist/Inputs/Checkbox/CheckboxGroup/CheckboxGroup.js +1 -34
  85. package/dist/Inputs/Checkbox/CheckboxGroup/CheckboxGroup.js.map +1 -1
  86. package/dist/Inputs/Checkbox/CheckboxGroup/CheckboxGroup.module.css.js +1 -3
  87. package/dist/Inputs/Checkbox/CheckboxGroup/CheckboxGroup.module.css.js.map +1 -1
  88. package/dist/Inputs/Checkbox/CheckboxSelectAll.js +1 -18
  89. package/dist/Inputs/Checkbox/CheckboxSelectAll.js.map +1 -1
  90. package/dist/Inputs/PasswordInput/PasswordInput.js +1 -44
  91. package/dist/Inputs/PasswordInput/PasswordInput.js.map +1 -1
  92. package/dist/Inputs/PasswordInput/PasswordInput.module.css.js +1 -3
  93. package/dist/Inputs/PasswordInput/PasswordInput.module.css.js.map +1 -1
  94. package/dist/Inputs/Select/Select.js +1 -25
  95. package/dist/Inputs/Select/Select.js.map +1 -1
  96. package/dist/Inputs/Select/Select.module.css.js +1 -3
  97. package/dist/Inputs/Select/Select.module.css.js.map +1 -1
  98. package/dist/Inputs/Switch/Switch.js +1 -80
  99. package/dist/Inputs/Switch/Switch.js.map +1 -1
  100. package/dist/Inputs/Switch/Switch.module.css.js +1 -3
  101. package/dist/Inputs/Switch/Switch.module.css.js.map +1 -1
  102. package/dist/Inputs/TextAreaInput/TextAreaInput.js +1 -29
  103. package/dist/Inputs/TextAreaInput/TextAreaInput.js.map +1 -1
  104. package/dist/Inputs/TextAreaInput/TextAreaInput.module.css.js +1 -3
  105. package/dist/Inputs/TextAreaInput/TextAreaInput.module.css.js.map +1 -1
  106. package/dist/Inputs/TextInput/TextInput.js +1 -22
  107. package/dist/Inputs/TextInput/TextInput.js.map +1 -1
  108. package/dist/Inputs/TextInput/TextInput.module.css.js +1 -3
  109. package/dist/Inputs/TextInput/TextInput.module.css.js.map +1 -1
  110. package/dist/Inputs/ThemeToggle/ThemeToggleListItem.js +1 -30
  111. package/dist/Inputs/ThemeToggle/ThemeToggleListItem.js.map +1 -1
  112. package/dist/Layout/Dialog/Dialog.d.ts +1 -1
  113. package/dist/Layout/Dialog/Dialog.js +1 -73
  114. package/dist/Layout/Dialog/Dialog.js.map +1 -1
  115. package/dist/Layout/Dialog/Dialog.module.css.js +1 -3
  116. package/dist/Layout/Dialog/Dialog.module.css.js.map +1 -1
  117. package/dist/Layout/Drawer/Drawer.d.ts +15 -0
  118. package/dist/Layout/Drawer/Drawer.js +2 -0
  119. package/dist/Layout/Drawer/Drawer.js.map +1 -0
  120. package/dist/Layout/Drawer/Drawer.module.css.js +2 -0
  121. package/dist/Layout/Drawer/Drawer.module.css.js.map +1 -0
  122. package/dist/Layout/PageLayout/PageLayout.js +1 -24
  123. package/dist/Layout/PageLayout/PageLayout.js.map +1 -1
  124. package/dist/Layout/PageLayout/PageLayout.module.css.js +1 -3
  125. package/dist/Layout/PageLayout/PageLayout.module.css.js.map +1 -1
  126. package/dist/Layout/PageLayoutPagination/PageLayoutPagination.js +1 -12
  127. package/dist/Layout/PageLayoutPagination/PageLayoutPagination.js.map +1 -1
  128. package/dist/Layout/PageLayoutPagination/PageLayoutPagination.module.css.js +1 -3
  129. package/dist/Layout/PageLayoutPagination/PageLayoutPagination.module.css.js.map +1 -1
  130. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.js +1 -21
  131. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.js.map +1 -1
  132. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.module.css.js +1 -3
  133. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.module.css.js.map +1 -1
  134. package/dist/Layout/Popover/Popover.js +1 -102
  135. package/dist/Layout/Popover/Popover.js.map +1 -1
  136. package/dist/Layout/Popover/Popover.module.css.js +1 -3
  137. package/dist/Layout/Popover/Popover.module.css.js.map +1 -1
  138. package/dist/Layout/SectionWrapper/SectionWrapper.js +1 -10
  139. package/dist/Layout/SectionWrapper/SectionWrapper.js.map +1 -1
  140. package/dist/Layout/SectionWrapper/SectionWrapper.module.css.js +1 -3
  141. package/dist/Layout/SectionWrapper/SectionWrapper.module.css.js.map +1 -1
  142. package/dist/Layout/Sidebar/Sidebar.js +1 -24
  143. package/dist/Layout/Sidebar/Sidebar.js.map +1 -1
  144. package/dist/Layout/Sidebar/Sidebar.module.css.js +1 -3
  145. package/dist/Layout/Sidebar/Sidebar.module.css.js.map +1 -1
  146. package/dist/Layout/Sidebar/SidebarBody/SidebarBody.js +1 -13
  147. package/dist/Layout/Sidebar/SidebarBody/SidebarBody.js.map +1 -1
  148. package/dist/Layout/Sidebar/SidebarBody/SidebarBody.module.css.js +1 -3
  149. package/dist/Layout/Sidebar/SidebarBody/SidebarBody.module.css.js.map +1 -1
  150. package/dist/Layout/Sidebar/SidebarDrawer/SidebarDrawer.js +1 -13
  151. package/dist/Layout/Sidebar/SidebarDrawer/SidebarDrawer.js.map +1 -1
  152. package/dist/Layout/Sidebar/SidebarDrawer/SidebarDrawer.module.css.js +1 -3
  153. package/dist/Layout/Sidebar/SidebarDrawer/SidebarDrawer.module.css.js.map +1 -1
  154. package/dist/Layout/Sidebar/SidebarFooter/SidebarFooter.js +1 -13
  155. package/dist/Layout/Sidebar/SidebarFooter/SidebarFooter.js.map +1 -1
  156. package/dist/Layout/Sidebar/SidebarFooter/SidebarFooter.module.css.js +1 -3
  157. package/dist/Layout/Sidebar/SidebarFooter/SidebarFooter.module.css.js.map +1 -1
  158. package/dist/Layout/Sidebar/SidebarHeader/SidebarHeader.js +1 -11
  159. package/dist/Layout/Sidebar/SidebarHeader/SidebarHeader.js.map +1 -1
  160. package/dist/Layout/Sidebar/SidebarViewport/SidebarViewport.js +1 -10
  161. package/dist/Layout/Sidebar/SidebarViewport/SidebarViewport.js.map +1 -1
  162. package/dist/Layout/Sidebar/SidebarViewport/SidebarViewport.module.css.js +1 -3
  163. package/dist/Layout/Sidebar/SidebarViewport/SidebarViewport.module.css.js.map +1 -1
  164. package/dist/Layout/Table/Table.js +1 -130
  165. package/dist/Layout/Table/Table.js.map +1 -1
  166. package/dist/Layout/Table/Table.module.css.js +1 -3
  167. package/dist/Layout/Table/Table.module.css.js.map +1 -1
  168. package/dist/Layout/Table/TableFooter.js +1 -8
  169. package/dist/Layout/Table/TableFooter.js.map +1 -1
  170. package/dist/Layout/Table/TableHeader.js +1 -8
  171. package/dist/Layout/Table/TableHeader.js.map +1 -1
  172. package/dist/Layout/Table/tableUtils.js +1 -123
  173. package/dist/Layout/Table/tableUtils.js.map +1 -1
  174. package/dist/Layout/_index.d.ts +1 -0
  175. package/dist/Misc/Cursor/Cursor.js +1 -58
  176. package/dist/Misc/Cursor/Cursor.js.map +1 -1
  177. package/dist/Misc/Cursor/Cursor.module.css.js +1 -3
  178. package/dist/Misc/Cursor/Cursor.module.css.js.map +1 -1
  179. package/dist/Misc/Logos.js +1 -28
  180. package/dist/Misc/Logos.js.map +1 -1
  181. package/dist/Misc/PoweredByBanner/PoweredByBanner.d.ts +5 -2
  182. package/dist/Misc/PoweredByBanner/PoweredByBanner.js +1 -10
  183. package/dist/Misc/PoweredByBanner/PoweredByBanner.js.map +1 -1
  184. package/dist/Misc/PoweredByBanner/PoweredByBanner.module.css.js +1 -3
  185. package/dist/Misc/PoweredByBanner/PoweredByBanner.module.css.js.map +1 -1
  186. package/dist/Misc/Ripple/Ripple.js +1 -61
  187. package/dist/Misc/Ripple/Ripple.js.map +1 -1
  188. package/dist/Misc/Ripple/Ripple.module.css.js +1 -3
  189. package/dist/Misc/Ripple/Ripple.module.css.js.map +1 -1
  190. package/dist/Misc/Spinner/Spinner.js +1 -11
  191. package/dist/Misc/Spinner/Spinner.js.map +1 -1
  192. package/dist/Misc/Spinner/Spinner.module.css.js +1 -3
  193. package/dist/Misc/Spinner/Spinner.module.css.js.map +1 -1
  194. package/dist/Misc/TransitionAnimation/TransitionAnimation.js +1 -86
  195. package/dist/Misc/TransitionAnimation/TransitionAnimation.js.map +1 -1
  196. package/dist/Misc/TransitionAnimation/TransitionAnimation.module.css.js +1 -3
  197. package/dist/Misc/TransitionAnimation/TransitionAnimation.module.css.js.map +1 -1
  198. package/dist/Navigation/Breadcrumbs/Breadcrumbs.js +1 -35
  199. package/dist/Navigation/Breadcrumbs/Breadcrumbs.js.map +1 -1
  200. package/dist/Navigation/Breadcrumbs/Breadcrumbs.module.css.js +1 -3
  201. package/dist/Navigation/Breadcrumbs/Breadcrumbs.module.css.js.map +1 -1
  202. package/dist/Navigation/Breadcrumbs/BreadcrumbsItem.js +1 -14
  203. package/dist/Navigation/Breadcrumbs/BreadcrumbsItem.js.map +1 -1
  204. package/dist/Navigation/Breadcrumbs/useBreadcrumbs.js +1 -43
  205. package/dist/Navigation/Breadcrumbs/useBreadcrumbs.js.map +1 -1
  206. package/dist/Navigation/Pagination/Pagination.js +1 -60
  207. package/dist/Navigation/Pagination/Pagination.js.map +1 -1
  208. package/dist/Navigation/Pagination/Pagination.module.css.js +1 -3
  209. package/dist/Navigation/Pagination/Pagination.module.css.js.map +1 -1
  210. package/dist/Navigation/Pagination/PaginationItem.js +1 -13
  211. package/dist/Navigation/Pagination/PaginationItem.js.map +1 -1
  212. package/dist/Navigation/Pagination/usePagination.js +1 -37
  213. package/dist/Navigation/Pagination/usePagination.js.map +1 -1
  214. package/dist/Navigation/Tabs/Tab/Tab.js +1 -69
  215. package/dist/Navigation/Tabs/Tab/Tab.js.map +1 -1
  216. package/dist/Navigation/Tabs/Tab/Tab.module.css.js +1 -3
  217. package/dist/Navigation/Tabs/Tab/Tab.module.css.js.map +1 -1
  218. package/dist/Navigation/Tabs/Tabs.js +1 -21
  219. package/dist/Navigation/Tabs/Tabs.js.map +1 -1
  220. package/dist/Navigation/Tabs/TabsBar/TabsBar.d.ts +10 -7
  221. package/dist/Navigation/Tabs/TabsBar/TabsBar.js +1 -43
  222. package/dist/Navigation/Tabs/TabsBar/TabsBar.js.map +1 -1
  223. package/dist/Navigation/Tabs/TabsBar/TabsBar.module.css.js +1 -3
  224. package/dist/Navigation/Tabs/TabsBar/TabsBar.module.css.js.map +1 -1
  225. package/dist/Typography/ClampedText/ClampedText.js +1 -43
  226. package/dist/Typography/ClampedText/ClampedText.js.map +1 -1
  227. package/dist/Typography/ClampedText/ClampedText.module.css.js +1 -3
  228. package/dist/Typography/ClampedText/ClampedText.module.css.js.map +1 -1
  229. package/dist/Typography/CopyableText/CopyableText.js +1 -38
  230. package/dist/Typography/CopyableText/CopyableText.js.map +1 -1
  231. package/dist/Typography/CopyableText/CopyableText.module.css.js +1 -3
  232. package/dist/Typography/CopyableText/CopyableText.module.css.js.map +1 -1
  233. package/dist/Typography/PageTitle/PageTitle.js +1 -9
  234. package/dist/Typography/PageTitle/PageTitle.js.map +1 -1
  235. package/dist/Typography/PageTitle/PageTitle.module.css.js +1 -3
  236. package/dist/Typography/PageTitle/PageTitle.module.css.js.map +1 -1
  237. package/dist/index.css +1 -2392
  238. package/dist/index.js +1 -63
  239. package/dist/index.js.map +1 -1
  240. package/package.json +7 -7
  241. package/rollup.config.js +0 -34
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxGroup.js","sources":["../../../../src/Inputs/Checkbox/CheckboxGroup/CheckboxGroup.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n type ReactNode,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styles from \"./CheckboxGroup.module.css\";\n\ninterface CheckboxGroupContextProps {\n values: boolean[];\n register: () => number;\n update: (index: number, checked: boolean) => void;\n setAll: (checked: boolean) => void;\n}\n\ninterface CheckboxGroupProps {\n children: ReactNode;\n onChange?: (checked: boolean[]) => void;\n label?: string;\n}\n\nexport const CheckboxGroupContext =\n createContext<CheckboxGroupContextProps | null>(null);\n\nexport function CheckboxGroup({\n children,\n onChange,\n label,\n}: CheckboxGroupProps) {\n const [values, setValues] = useState<boolean[]>([]);\n const indexRef = useRef(-1);\n\n const register = useCallback(() => {\n const index = indexRef.current++;\n setValues((prev) => [...prev, false]);\n return index;\n }, []);\n\n const update = useCallback(\n (index: number, checked: boolean) => {\n setValues((prev) => {\n const next = [...prev];\n next[index] = checked;\n onChange?.(next);\n return next;\n });\n },\n [onChange]\n );\n\n const setAll = useCallback(\n (checked: boolean) => {\n setValues((prev) => {\n const next = prev.map(() => checked);\n onChange?.(next);\n return next;\n });\n },\n [onChange]\n );\n\n const context = useMemo(\n () => ({ values, register, update, setAll }),\n [values, register, update, setAll]\n );\n\n return (\n <fieldset className={styles.root}>\n {label && (\n <legend className={styles.legend} id={label}>\n {label}\n </legend>\n )}\n <CheckboxGroupContext.Provider value={context}>\n {children}\n </CheckboxGroupContext.Provider>\n </fieldset>\n );\n}\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;MAyBa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoB,CAAA,CAAA,CAC/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAmC,CAAA,CAAA,CAAA,CAAI,CAAA;AAEhD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAC,CAAA,CAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,EACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CACR,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CACc,CAAA,CAAA;IACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAY,CAAA,CAAE,CAAC;AACnD,CAAA,CAAA,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,EAAE,CAAC;AAE3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,OAAO,CAAA,CAAE;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAI,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,CAAC;AACrC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAK;IACd,CAAC,CAAA,CAAE,CAAA,CAAE,CAAC;IAEN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,MAAM,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CACxB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAI;AAClC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAI;AACjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA,CAAG,IAAI,CAAC;AACtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO;AACrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAI,CAAC;AAChB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAI;AACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAC;AACJ,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,CACD,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CACX;AAED,CAAA,CAAA,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAG,WAAW,CACxB,CAAC,OAAgB,CAAA,CAAA,CAAA,CAAA,CAAI;AACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAI;YACjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAI,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAI,CAAC;AAChB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAI;AACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAC;AACJ,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,CACD,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CACX;AAED,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CACrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAE,MAAM,CAAA,CAAE,CAAC,CAAA,CAC5C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CACnC;AAED,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACEA,CAAAA,CAAAA,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAC7B,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CACJC,CAAAA,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAE,EAAE,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,WACxC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CACC,CACV,CAAA,CACDA,CAAAA,CAAAA,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC1C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CACqB,CAAA,CAAA,CAAA,CACvB,CAAA;AAEf;;"}
1
+ {"version":3,"file":"CheckboxGroup.js","sources":["../../../../src/Inputs/Checkbox/CheckboxGroup/CheckboxGroup.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n type ReactNode,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styles from \"./CheckboxGroup.module.css\";\n\ninterface CheckboxGroupContextProps {\n values: boolean[];\n register: () => number;\n update: (index: number, checked: boolean) => void;\n setAll: (checked: boolean) => void;\n}\n\ninterface CheckboxGroupProps {\n children: ReactNode;\n onChange?: (checked: boolean[]) => void;\n label?: string;\n}\n\nexport const CheckboxGroupContext =\n createContext<CheckboxGroupContextProps | null>(null);\n\nexport function CheckboxGroup({\n children,\n onChange,\n label,\n}: CheckboxGroupProps) {\n const [values, setValues] = useState<boolean[]>([]);\n const indexRef = useRef(-1);\n\n const register = useCallback(() => {\n const index = indexRef.current++;\n setValues((prev) => [...prev, false]);\n return index;\n }, []);\n\n const update = useCallback(\n (index: number, checked: boolean) => {\n setValues((prev) => {\n const next = [...prev];\n next[index] = checked;\n onChange?.(next);\n return next;\n });\n },\n [onChange]\n );\n\n const setAll = useCallback(\n (checked: boolean) => {\n setValues((prev) => {\n const next = prev.map(() => checked);\n onChange?.(next);\n return next;\n });\n },\n [onChange]\n );\n\n const context = useMemo(\n () => ({ values, register, update, setAll }),\n [values, register, update, setAll]\n );\n\n return (\n <fieldset className={styles.root}>\n {label && (\n <legend className={styles.legend} id={label}>\n {label}\n </legend>\n )}\n <CheckboxGroupContext.Provider value={context}>\n {children}\n </CheckboxGroupContext.Provider>\n </fieldset>\n );\n}\n"],"names":["CheckboxGroupContext","createContext","CheckboxGroup","children","onChange","label","values","setValues","useState","indexRef","useRef","register","useCallback","index","current","prev","update","checked","next","setAll","map","context","useMemo","_jsxs","className","styles","root","_jsx","legend","id","Provider","value"],"mappings":"gNAyBaA,EACXC,EAAgD,MAE5C,SAAUC,GAAcC,SAC5BA,EAAQC,SACRA,EAAQC,MACRA,IAEA,MAAOC,EAAQC,GAAaC,EAAoB,IAC1CC,EAAWC,MAEXC,EAAWC,EAAY,KAC3B,MAAMC,EAAQJ,EAASK,UAEvB,OADAP,EAAWQ,GAAS,IAAIA,GAAM,IACvBF,GACN,IAEGG,EAASJ,EACb,CAACC,EAAeI,KACdV,EAAWQ,IACT,MAAMG,EAAO,IAAIH,GAGjB,OAFAG,EAAKL,GAASI,EACdb,IAAWc,GACJA,KAGX,CAACd,IAGGe,EAASP,EACZK,IACCV,EAAWQ,IACT,MAAMG,EAAOH,EAAKK,IAAI,IAAMH,GAE5B,OADAb,IAAWc,GACJA,KAGX,CAACd,IAGGiB,EAAUC,EACd,KAAA,CAAShB,SAAQK,WAAUK,SAAQG,WACnC,CAACb,EAAQK,EAAUK,EAAQG,IAG7B,OACEI,EAAA,WAAA,CAAUC,UAAWC,EAAOC,KAAIvB,SAAA,CAC7BE,GACCsB,EAAA,SAAA,CAAQH,UAAWC,EAAOG,OAAQC,GAAIxB,WACnCA,IAGLsB,EAAC3B,EAAqB8B,SAAQ,CAACC,MAAOV,EAAOlB,SAC1CA,MAIT"}
@@ -1,4 +1,2 @@
1
- var styles = {"root":"CheckboxGroup-module_root__yODdU","legend":"CheckboxGroup-module_legend__q-7v4"};
2
-
3
- export { styles as default };
1
+ var o={root:"CheckboxGroup-module_root__yODdU",legend:"CheckboxGroup-module_legend__q-7v4"};export{o as default};
4
2
  //# sourceMappingURL=CheckboxGroup.module.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxGroup.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"CheckboxGroup.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,19 +1,2 @@
1
- 'use client';
2
- import { jsx } from 'react/jsx-runtime';
3
- import { useContext } from 'react';
4
- import { Checkbox } from './Checkbox.js';
5
- import { CheckboxGroupContext } from './CheckboxGroup/CheckboxGroup.js';
6
-
7
- function CheckboxSelectAll({ label }) {
8
- const group = useContext(CheckboxGroupContext);
9
- if (!group) {
10
- throw new Error("<CheckboxSelectAll/> must be used inside <CheckboxGroup/>");
11
- }
12
- const { values, setAll } = group;
13
- const allChecked = values.length > 0 && values.every(Boolean);
14
- const someChecked = values.some(Boolean);
15
- return (jsx(Checkbox, { label: label, checked: allChecked, indeterminate: !allChecked && someChecked, onChange: (_, checked) => setAll(checked), skipGroup: true }));
16
- }
17
-
18
- export { CheckboxSelectAll };
1
+ "use client";import{jsx as e}from"react/jsx-runtime";import{useContext as o}from"react";import{Checkbox as r}from"./Checkbox.js";import{CheckboxGroupContext as t}from"./CheckboxGroup/CheckboxGroup.js";function n({label:n}){const c=o(t);if(!c)throw new Error("<CheckboxSelectAll/> must be used inside <CheckboxGroup/>");const{values:l,setAll:i}=c,s=l.length>0&&l.every(Boolean),m=l.some(Boolean);return e(r,{label:n,checked:s,indeterminate:!s&&m,onChange:(e,o)=>i(o),skipGroup:!0})}export{n as CheckboxSelectAll};
19
2
  //# sourceMappingURL=CheckboxSelectAll.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxSelectAll.js","sources":["../../../src/Inputs/Checkbox/CheckboxSelectAll.tsx"],"sourcesContent":["\"use client\";\n\nimport { useContext } from \"react\";\nimport { Checkbox } from \"./Checkbox\";\nimport { CheckboxGroupContext } from \"./CheckboxGroup/CheckboxGroup\";\n\ninterface CheckboxSelectAllProps {\n label: string;\n}\n\nexport function CheckboxSelectAll({ label }: CheckboxSelectAllProps) {\n const group = useContext(CheckboxGroupContext);\n\n if (!group) {\n throw new Error(\n \"<CheckboxSelectAll/> must be used inside <CheckboxGroup/>\",\n );\n }\n\n const { values, setAll } = group;\n\n const allChecked = values.length > 0 && values.every(Boolean);\n const someChecked = values.some(Boolean);\n\n return (\n <Checkbox\n label={label}\n checked={allChecked}\n indeterminate={!allChecked && someChecked}\n onChange={(_, checked) => setAll(checked)}\n skipGroup\n />\n );\n}\n"],"names":["_jsx"],"mappings":";;;;;;AAUM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAK,EAA0B,CAAA,CAAA;AACjE,CAAA,CAAA,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,oBAAoB,CAAC;IAE9C,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAE;AACV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAK,CACb,2DAA2D,CAC5D;IACH;AAEA,CAAA,CAAA,CAAA,CAAA,MAAM,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAK;AAEhC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,OAAO,CAAC;IAC7D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,WAAW,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAI,CAAC,OAAO,CAAC;AAExC,CAAA,CAAA,CAAA,CAAA,QACEA,CAAAA,CAAAA,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,EACP,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CACZ,OAAO,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,EAAE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,EACzC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAE,CAAC,CAAC,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,OAAO,CAAC,CAAA,CACzC,SAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CACT,CAAA;AAEN;;"}
1
+ {"version":3,"file":"CheckboxSelectAll.js","sources":["../../../src/Inputs/Checkbox/CheckboxSelectAll.tsx"],"sourcesContent":["\"use client\";\n\nimport { useContext } from \"react\";\nimport { Checkbox } from \"./Checkbox\";\nimport { CheckboxGroupContext } from \"./CheckboxGroup/CheckboxGroup\";\n\ninterface CheckboxSelectAllProps {\n label: string;\n}\n\nexport function CheckboxSelectAll({ label }: CheckboxSelectAllProps) {\n const group = useContext(CheckboxGroupContext);\n\n if (!group) {\n throw new Error(\n \"<CheckboxSelectAll/> must be used inside <CheckboxGroup/>\",\n );\n }\n\n const { values, setAll } = group;\n\n const allChecked = values.length > 0 && values.every(Boolean);\n const someChecked = values.some(Boolean);\n\n return (\n <Checkbox\n label={label}\n checked={allChecked}\n indeterminate={!allChecked && someChecked}\n onChange={(_, checked) => setAll(checked)}\n skipGroup\n />\n );\n}\n"],"names":["CheckboxSelectAll","label","group","useContext","CheckboxGroupContext","Error","values","setAll","allChecked","length","every","Boolean","someChecked","some","_jsx","Checkbox","checked","indeterminate","onChange","_","skipGroup"],"mappings":"yMAUM,SAAUA,GAAkBC,MAAEA,IAClC,MAAMC,EAAQC,EAAWC,GAEzB,IAAKF,EACH,MAAM,IAAIG,MACR,6DAIJ,MAAMC,OAAEA,EAAMC,OAAEA,GAAWL,EAErBM,EAAaF,EAAOG,OAAS,GAAKH,EAAOI,MAAMC,SAC/CC,EAAcN,EAAOO,KAAKF,SAEhC,OACEG,EAACC,EAAQ,CACPd,MAAOA,EACPe,QAASR,EACTS,eAAgBT,GAAcI,EAC9BM,SAAU,CAACC,EAAGH,IAAYT,EAAOS,GACjCI,WAAS,GAGf"}
@@ -1,45 +1,2 @@
1
- 'use client';
2
- import { jsxs, jsx } from 'react/jsx-runtime';
3
- import { cn } from '@studiocubics/utils';
4
- import { useState, useEffect } from 'react';
5
- import { useRipple, eventWithRipple } from '../../Misc/Ripple/Ripple.js';
6
- import styles from './PasswordInput.module.css.js';
7
- import { InputErrors } from '../../Display/InputErrors/InputErrors.js';
8
- import { Button } from '../Button/Button.js';
9
- import { PasswordStrength } from '../../Display/PasswordStrength/PasswordStrength.js';
10
- import { usePasswordStrength, ALL_PASSWORD_TESTS, PASSWORD_REGEX } from '../../Display/PasswordStrength/usePasswordStrength.js';
11
-
12
- function PasswordInput(props) {
13
- const { startIcon, endIcon, label, error, fullWidth, hideVisibilityToggle = false, disableStrengthMeter = true, disableEndIconGutters = false, disableStartIconGutters = false, size = "md", inputSize, onTouchStart, onClick, onBlur, slotProps = {}, className: inputClass, ...inputProps } = props;
14
- const { rippleElements, createRipple } = useRipple(slotProps.ripple);
15
- const [isErrored, setIsErrored] = useState(error && !!error.length);
16
- const [isVisible, setIsVisible] = useState(false);
17
- const passwordStrength = usePasswordStrength({
18
- password: typeof props.value == "string" ? props.value : undefined,
19
- requiredTests: slotProps.passwordStrength?.requiredTests ?? ALL_PASSWORD_TESTS,
20
- disableStrengthMeter,
21
- });
22
- useEffect(() => {
23
- setIsErrored(error && !!error.length);
24
- }, [error]);
25
- return (jsxs("div", { ...slotProps.root, className: cn(slotProps.root?.className, styles.root, styles[`size_${size}`], fullWidth ? styles.fullWidth : undefined, isErrored ? styles.errored : undefined), children: [label && (jsx("label", { ...slotProps.label, htmlFor: props.id || label, className: cn(slotProps.label?.className, styles.label), children: label })), jsxs("div", { ...slotProps.inputWrapper, className: cn(slotProps.inputWrapper?.className, styles.inputWrapper), children: [startIcon && (jsx("span", { ...slotProps.startIcon, className: cn(styles.iconContainer, slotProps.startIcon?.className, disableStartIconGutters ? styles.disableGutters : undefined), children: startIcon })), jsx("input", { type: isVisible ? "text" : "password", className: cn(inputClass, styles.input), onTouchStart: eventWithRipple(createRipple, onTouchStart), onClick: eventWithRipple(createRipple, onClick), onBlur: (e) => {
26
- setIsErrored(false);
27
- onBlur?.(e);
28
- }, pattern: !disableStrengthMeter
29
- ? passwordStrength?.testsPassed
30
- .map((tp) => {
31
- const regex = PASSWORD_REGEX[tp].ex;
32
- return regex instanceof RegExp ? regex.source : regex;
33
- })
34
- .join("&")
35
- : undefined, size: inputSize, id: label, ...inputProps }), !hideVisibilityToggle && (jsx(Button, { square: true, size: "sm", type: "button", onClick: () => setIsVisible(!isVisible), children: isVisible ? (jsx(EyeIcon, { width: 24, height: 24 })) : (jsx(EyeOffIcon, { width: 24, height: 24 })) })), endIcon && (jsx("span", { ...slotProps.endIcon, className: cn(styles.iconContainer, slotProps.endIcon?.className, disableEndIconGutters ? styles.disableGutters : undefined), children: endIcon })), rippleElements] }), !disableStrengthMeter && (jsx(PasswordStrength, { strength: passwordStrength?.strength, ...slotProps.passwordStrength })), isErrored && (jsx(InputErrors, { ...slotProps.error, className: cn(slotProps.error?.className, styles.errorText), error: error }))] }));
36
- }
37
- function EyeIcon(props) {
38
- return (jsxs("svg", { ...props, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.3", strokeLinecap: "round", strokeLinejoin: "round", children: [jsx("path", { d: "M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0" }), jsx("circle", { cx: "12", cy: "12", r: "3" })] }));
39
- }
40
- function EyeOffIcon(props) {
41
- return (jsxs("svg", { ...props, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.3", strokeLinecap: "round", strokeLinejoin: "round", children: [jsx("path", { d: "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49" }), jsx("path", { d: "M14.084 14.158a3 3 0 0 1-4.242-4.242" }), jsx("path", { d: "M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143" }), jsx("path", { d: "m2 2 20 20" })] }));
42
- }
43
-
44
- export { PasswordInput };
1
+ "use client";import{jsxs as r,jsx as e}from"react/jsx-runtime";import{cn as t}from"@studiocubics/utils";import{useState as s,useEffect as o}from"react";import{useRipple as n,eventWithRipple as i}from"../../Misc/Ripple/Ripple.js";import a from"./PasswordInput.module.css.js";import{InputErrors as l}from"../../Display/InputErrors/InputErrors.js";import{Button as c}from"../Button/Button.js";import{PasswordStrength as p}from"../../Display/PasswordStrength/PasswordStrength.js";import{usePasswordStrength as d,ALL_PASSWORD_TESTS as u,PASSWORD_REGEX as m}from"../../Display/PasswordStrength/usePasswordStrength.js";function h(h){const{startIcon:f,endIcon:v,label:b,error:N,fullWidth:S,hideVisibilityToggle:k=!1,disableStrengthMeter:x=!0,disableEndIconGutters:I=!1,disableStartIconGutters:j=!1,size:y="md",inputSize:C,onTouchStart:M,onClick:P,onBlur:W,slotProps:B={},className:T,...z}=h,{rippleElements:E,createRipple:G}=n(B.ripple),[L,R]=s(N&&!!N.length),[q,D]=s(!1),F=d({password:"string"==typeof h.value?h.value:void 0,requiredTests:B.passwordStrength?.requiredTests??u,disableStrengthMeter:x});return o(()=>{R(N&&!!N.length)},[N]),r("div",{...B.root,className:t(B.root?.className,a.root,a[`size_${y}`],S?a.fullWidth:void 0,L?a.errored:void 0),children:[b&&e("label",{...B.label,htmlFor:h.id||b,className:t(B.label?.className,a.label),children:b}),r("div",{...B.inputWrapper,className:t(B.inputWrapper?.className,a.inputWrapper),children:[f&&e("span",{...B.startIcon,className:t(a.iconContainer,B.startIcon?.className,j?a.disableGutters:void 0),children:f}),e("input",{type:q?"text":"password",className:t(T,a.input),onTouchStart:i(G,M),onClick:i(G,P),onBlur:r=>{R(!1),W?.(r)},pattern:x?void 0:F?.testsPassed.map(r=>{const e=m[r].ex;return e instanceof RegExp?e.source:e}).join("&"),size:C,id:b,...z}),!k&&e(c,{square:!0,size:"sm",type:"button",onClick:()=>D(!q),children:e(q?g:w,{width:24,height:24})}),v&&e("span",{...B.endIcon,className:t(a.iconContainer,B.endIcon?.className,I?a.disableGutters:void 0),children:v}),E]}),!x&&e(p,{strength:F?.strength,...B.passwordStrength}),L&&e(l,{...B.error,className:t(B.error?.className,a.errorText),error:N})]})}function g(t){return r("svg",{...t,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.3",strokeLinecap:"round",strokeLinejoin:"round",children:[e("path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"}),e("circle",{cx:"12",cy:"12",r:"3"})]})}function w(t){return r("svg",{...t,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.3",strokeLinecap:"round",strokeLinejoin:"round",children:[e("path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"}),e("path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242"}),e("path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"}),e("path",{d:"m2 2 20 20"})]})}export{h as PasswordInput};
45
2
  //# sourceMappingURL=PasswordInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordInput.js","sources":["../../../src/Inputs/PasswordInput/PasswordInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@studiocubics/utils\";\nimport {\n useEffect,\n useState,\n type ComponentProps,\n type ReactNode,\n} from \"react\";\nimport {\n eventWithRipple,\n useRipple,\n type UseRippleProps,\n} from \"../../Misc/Ripple/Ripple\";\nimport styles from \"./PasswordInput.module.css\";\nimport {\n InputErrors,\n type InputErrorsProps,\n} from \"../../Display/InputErrors/InputErrors\";\nimport { Button } from \"../Button/Button\";\nimport { PasswordStrength } from \"../../Display/PasswordStrength/PasswordStrength\";\nimport {\n ALL_PASSWORD_TESTS,\n PASSWORD_REGEX,\n usePasswordStrength,\n type PasswordStrengthProps,\n} from \"../../Display/PasswordStrength/usePasswordStrength\";\n\nexport interface PasswordInputProps\n extends Omit<ComponentProps<\"input\">, \"size\"> {\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n label?: string;\n error?: string | string[];\n fullWidth?: boolean;\n /**\n * Use inputSize for <input size=\"10\"/>\n */\n size?: \"sm\" | \"md\" | \"lg\";\n inputSize?: ComponentProps<\"input\">[\"size\"];\n hideVisibilityToggle?: boolean;\n disableStrengthMeter?: boolean;\n disableEndIconGutters?: boolean;\n disableStartIconGutters?: boolean;\n slotProps?: {\n ripple?: UseRippleProps;\n startIcon?: ComponentProps<\"span\">;\n endIcon?: ComponentProps<\"span\">;\n root?: ComponentProps<\"div\">;\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n error?: InputErrorsProps;\n passwordStrength?: PasswordStrengthProps;\n };\n}\n\nexport function PasswordInput(props: PasswordInputProps) {\n const {\n startIcon,\n endIcon,\n label,\n error,\n fullWidth,\n hideVisibilityToggle = false,\n disableStrengthMeter = true,\n disableEndIconGutters = false,\n disableStartIconGutters = false,\n size = \"md\",\n inputSize,\n onTouchStart,\n onClick,\n onBlur,\n slotProps = {},\n className: inputClass,\n ...inputProps\n } = props;\n const { rippleElements, createRipple } = useRipple(slotProps.ripple);\n const [isErrored, setIsErrored] = useState(error && !!error.length);\n const [isVisible, setIsVisible] = useState(false);\n const passwordStrength = usePasswordStrength({\n password: typeof props.value == \"string\" ? props.value : undefined,\n requiredTests:\n slotProps.passwordStrength?.requiredTests ?? ALL_PASSWORD_TESTS,\n disableStrengthMeter,\n });\n\n useEffect(() => {\n setIsErrored(error && !!error.length);\n }, [error]);\n\n return (\n <div\n {...slotProps.root}\n className={cn(\n slotProps.root?.className,\n styles.root,\n styles[`size_${size}`],\n fullWidth ? styles.fullWidth : undefined,\n isErrored ? styles.errored : undefined,\n )}\n >\n {label && (\n <label\n {...slotProps.label}\n htmlFor={props.id || label}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n <div\n {...slotProps.inputWrapper}\n className={cn(slotProps.inputWrapper?.className, styles.inputWrapper)}\n >\n {startIcon && (\n <span\n {...slotProps.startIcon}\n className={cn(\n styles.iconContainer,\n slotProps.startIcon?.className,\n disableStartIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {startIcon}\n </span>\n )}\n <input\n type={isVisible ? \"text\" : \"password\"}\n className={cn(inputClass, styles.input)}\n onTouchStart={eventWithRipple(createRipple, onTouchStart)}\n onClick={eventWithRipple(createRipple, onClick)}\n onBlur={(e) => {\n setIsErrored(false);\n onBlur?.(e);\n }}\n pattern={\n !disableStrengthMeter\n ? passwordStrength?.testsPassed\n .map((tp) => {\n const regex = PASSWORD_REGEX[tp].ex;\n return regex instanceof RegExp ? regex.source : regex;\n })\n .join(\"&\")\n : undefined\n }\n size={inputSize}\n id={label}\n {...inputProps}\n />\n {!hideVisibilityToggle && (\n <Button\n square\n size=\"sm\"\n type=\"button\"\n onClick={() => setIsVisible(!isVisible)}\n >\n {isVisible ? (\n <EyeIcon width={24} height={24} />\n ) : (\n <EyeOffIcon width={24} height={24} />\n )}\n </Button>\n )}\n {endIcon && (\n <span\n {...slotProps.endIcon}\n className={cn(\n styles.iconContainer,\n slotProps.endIcon?.className,\n disableEndIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {endIcon}\n </span>\n )}\n {rippleElements}\n </div>\n {!disableStrengthMeter && (\n <PasswordStrength\n strength={passwordStrength?.strength}\n {...slotProps.passwordStrength}\n />\n )}\n {isErrored && (\n <InputErrors\n {...slotProps.error}\n className={cn(slotProps.error?.className, styles.errorText)}\n error={error}\n />\n )}\n </div>\n );\n}\nfunction EyeIcon(props: ComponentProps<\"svg\">) {\n return (\n <svg\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\nfunction EyeOffIcon(props: ComponentProps<\"svg\">) {\n return (\n <svg\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\" />\n <path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\" />\n <path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\" />\n <path d=\"m2 2 20 20\" />\n </svg>\n );\n}\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"PasswordInput.js","sources":["../../../src/Inputs/PasswordInput/PasswordInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@studiocubics/utils\";\nimport {\n useEffect,\n useState,\n type ComponentProps,\n type ReactNode,\n} from \"react\";\nimport {\n eventWithRipple,\n useRipple,\n type UseRippleProps,\n} from \"../../Misc/Ripple/Ripple\";\nimport styles from \"./PasswordInput.module.css\";\nimport {\n InputErrors,\n type InputErrorsProps,\n} from \"../../Display/InputErrors/InputErrors\";\nimport { Button } from \"../Button/Button\";\nimport { PasswordStrength } from \"../../Display/PasswordStrength/PasswordStrength\";\nimport {\n ALL_PASSWORD_TESTS,\n PASSWORD_REGEX,\n usePasswordStrength,\n type PasswordStrengthProps,\n} from \"../../Display/PasswordStrength/usePasswordStrength\";\n\nexport interface PasswordInputProps\n extends Omit<ComponentProps<\"input\">, \"size\"> {\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n label?: string;\n error?: string | string[];\n fullWidth?: boolean;\n /**\n * Use inputSize for <input size=\"10\"/>\n */\n size?: \"sm\" | \"md\" | \"lg\";\n inputSize?: ComponentProps<\"input\">[\"size\"];\n hideVisibilityToggle?: boolean;\n disableStrengthMeter?: boolean;\n disableEndIconGutters?: boolean;\n disableStartIconGutters?: boolean;\n slotProps?: {\n ripple?: UseRippleProps;\n startIcon?: ComponentProps<\"span\">;\n endIcon?: ComponentProps<\"span\">;\n root?: ComponentProps<\"div\">;\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n error?: InputErrorsProps;\n passwordStrength?: PasswordStrengthProps;\n };\n}\n\nexport function PasswordInput(props: PasswordInputProps) {\n const {\n startIcon,\n endIcon,\n label,\n error,\n fullWidth,\n hideVisibilityToggle = false,\n disableStrengthMeter = true,\n disableEndIconGutters = false,\n disableStartIconGutters = false,\n size = \"md\",\n inputSize,\n onTouchStart,\n onClick,\n onBlur,\n slotProps = {},\n className: inputClass,\n ...inputProps\n } = props;\n const { rippleElements, createRipple } = useRipple(slotProps.ripple);\n const [isErrored, setIsErrored] = useState(error && !!error.length);\n const [isVisible, setIsVisible] = useState(false);\n const passwordStrength = usePasswordStrength({\n password: typeof props.value == \"string\" ? props.value : undefined,\n requiredTests:\n slotProps.passwordStrength?.requiredTests ?? ALL_PASSWORD_TESTS,\n disableStrengthMeter,\n });\n\n useEffect(() => {\n setIsErrored(error && !!error.length);\n }, [error]);\n\n return (\n <div\n {...slotProps.root}\n className={cn(\n slotProps.root?.className,\n styles.root,\n styles[`size_${size}`],\n fullWidth ? styles.fullWidth : undefined,\n isErrored ? styles.errored : undefined,\n )}\n >\n {label && (\n <label\n {...slotProps.label}\n htmlFor={props.id || label}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n <div\n {...slotProps.inputWrapper}\n className={cn(slotProps.inputWrapper?.className, styles.inputWrapper)}\n >\n {startIcon && (\n <span\n {...slotProps.startIcon}\n className={cn(\n styles.iconContainer,\n slotProps.startIcon?.className,\n disableStartIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {startIcon}\n </span>\n )}\n <input\n type={isVisible ? \"text\" : \"password\"}\n className={cn(inputClass, styles.input)}\n onTouchStart={eventWithRipple(createRipple, onTouchStart)}\n onClick={eventWithRipple(createRipple, onClick)}\n onBlur={(e) => {\n setIsErrored(false);\n onBlur?.(e);\n }}\n pattern={\n !disableStrengthMeter\n ? passwordStrength?.testsPassed\n .map((tp) => {\n const regex = PASSWORD_REGEX[tp].ex;\n return regex instanceof RegExp ? regex.source : regex;\n })\n .join(\"&\")\n : undefined\n }\n size={inputSize}\n id={label}\n {...inputProps}\n />\n {!hideVisibilityToggle && (\n <Button\n square\n size=\"sm\"\n type=\"button\"\n onClick={() => setIsVisible(!isVisible)}\n >\n {isVisible ? (\n <EyeIcon width={24} height={24} />\n ) : (\n <EyeOffIcon width={24} height={24} />\n )}\n </Button>\n )}\n {endIcon && (\n <span\n {...slotProps.endIcon}\n className={cn(\n styles.iconContainer,\n slotProps.endIcon?.className,\n disableEndIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {endIcon}\n </span>\n )}\n {rippleElements}\n </div>\n {!disableStrengthMeter && (\n <PasswordStrength\n strength={passwordStrength?.strength}\n {...slotProps.passwordStrength}\n />\n )}\n {isErrored && (\n <InputErrors\n {...slotProps.error}\n className={cn(slotProps.error?.className, styles.errorText)}\n error={error}\n />\n )}\n </div>\n );\n}\nfunction EyeIcon(props: ComponentProps<\"svg\">) {\n return (\n <svg\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\nfunction EyeOffIcon(props: ComponentProps<\"svg\">) {\n return (\n <svg\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\" />\n <path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\" />\n <path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\" />\n <path d=\"m2 2 20 20\" />\n </svg>\n );\n}\n"],"names":["PasswordInput","props","startIcon","endIcon","label","error","fullWidth","hideVisibilityToggle","disableStrengthMeter","disableEndIconGutters","disableStartIconGutters","size","inputSize","onTouchStart","onClick","onBlur","slotProps","className","inputClass","inputProps","rippleElements","createRipple","useRipple","ripple","isErrored","setIsErrored","useState","length","isVisible","setIsVisible","passwordStrength","usePasswordStrength","password","value","undefined","requiredTests","ALL_PASSWORD_TESTS","useEffect","_jsxs","root","cn","styles","errored","children","_jsx","htmlFor","id","inputWrapper","iconContainer","disableGutters","type","input","eventWithRipple","e","pattern","testsPassed","map","tp","regex","PASSWORD_REGEX","ex","RegExp","source","join","Button","square","EyeIcon","EyeOffIcon","width","height","PasswordStrength","strength","InputErrors","errorText","xmlns","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","cx","cy","r"],"mappings":"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"}
@@ -1,4 +1,2 @@
1
- var styles = {"root":"PasswordInput-module_root__NPboh","fullWidth":"PasswordInput-module_fullWidth__rpxCo","inputWrapper":"PasswordInput-module_inputWrapper__mq2VY","input":"PasswordInput-module_input__4CMJv","label":"PasswordInput-module_label__3PGfK","iconContainer":"PasswordInput-module_iconContainer__Irk1R","disableGutters":"PasswordInput-module_disableGutters__Do0n8","errored":"PasswordInput-module_errored__eEIPd","size_sm":"PasswordInput-module_size_sm__zlHt4","size_md":"PasswordInput-module_size_md__-PLMI","size_lg":"PasswordInput-module_size_lg__bWNCd"};
2
-
3
- export { styles as default };
1
+ var _={root:"PasswordInput-module_root__NPboh",fullWidth:"PasswordInput-module_fullWidth__rpxCo",inputWrapper:"PasswordInput-module_inputWrapper__mq2VY",input:"PasswordInput-module_input__4CMJv",label:"PasswordInput-module_label__3PGfK",iconContainer:"PasswordInput-module_iconContainer__Irk1R",disableGutters:"PasswordInput-module_disableGutters__Do0n8",errored:"PasswordInput-module_errored__eEIPd",size_sm:"PasswordInput-module_size_sm__zlHt4",size_md:"PasswordInput-module_size_md__-PLMI",size_lg:"PasswordInput-module_size_lg__bWNCd"};export{_ as default};
4
2
  //# sourceMappingURL=PasswordInput.module.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordInput.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"PasswordInput.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,26 +1,2 @@
1
- 'use client';
2
- import { jsxs, jsx } from 'react/jsx-runtime';
3
- import { cn } from '@studiocubics/utils';
4
- import { useState, useEffect } from 'react';
5
- import styles from './Select.module.css.js';
6
- import { useRipple, eventWithRipple } from '../../Misc/Ripple/Ripple.js';
7
- import { InputErrors } from '../../Display/InputErrors/InputErrors.js';
8
-
9
- function Select(props) {
10
- const { startIcon, endIcon, label, error, fullWidth, disableEndIconGutters = false, disableStartIconGutters = false, onTouchStart, onClick, onBlur, slotProps: _slotProps, className: inputClass, ...inputProps } = props;
11
- const slotProps = _slotProps ?? {};
12
- const { rippleElements, createRipple } = useRipple(slotProps.ripple);
13
- const [isErrored, setIsErrored] = useState(error && !!error.length);
14
- useEffect(() => {
15
- setIsErrored(error && !!error.length);
16
- }, [error]);
17
- return (jsxs("div", { ...slotProps.root, className: cn(slotProps.root?.className, styles.root, fullWidth ? styles.fullWidth : undefined, isErrored ? styles.errored : undefined), children: [label && (jsx("label", { ...slotProps.label, htmlFor: label, className: cn(slotProps.label?.className, styles.label), children: label })), jsxs("div", { ...slotProps.inputWrapper, className: cn(slotProps.inputWrapper?.className, styles.inputWrapper), children: [startIcon && (jsx("span", { ...slotProps.startIcon, className: cn(styles.iconContainer, slotProps.startIcon?.className, disableStartIconGutters ? styles.disableGutters : undefined), children: startIcon })), jsx("select", { className: cn(inputClass, styles.input), onTouchStart: eventWithRipple(createRipple, onTouchStart),
18
- //TODO Causes issue on Firefox where the ripple fires after closing the dropdown
19
- onClick: eventWithRipple(createRipple, onClick), onBlur: (e) => {
20
- setIsErrored(false);
21
- onBlur?.(e);
22
- }, id: label, ...inputProps }), endIcon && (jsx("span", { ...slotProps.endIcon, className: cn(styles.iconContainer, slotProps.endIcon?.className, disableEndIconGutters ? styles.disableGutters : undefined), children: endIcon })), rippleElements] }), isErrored && (jsx(InputErrors, { ...slotProps.error, className: cn(slotProps.error?.className, styles.errorText), error: error }))] }));
23
- }
24
-
25
- export { Select };
1
+ "use client";import{jsxs as r,jsx as e}from"react/jsx-runtime";import{cn as s}from"@studiocubics/utils";import{useState as o,useEffect as t}from"react";import l from"./Select.module.css.js";import{useRipple as a,eventWithRipple as i}from"../../Misc/Ripple/Ripple.js";import{InputErrors as n}from"../../Display/InputErrors/InputErrors.js";function c(c){const{startIcon:p,endIcon:m,label:d,error:u,fullWidth:N,disableEndIconGutters:h=!1,disableStartIconGutters:b=!1,onTouchStart:I,onClick:f,onBlur:v,slotProps:W,className:j,...C}=c,E=W??{},{rippleElements:G,createRipple:S}=a(E.ripple),[x,R]=o(u&&!!u.length);return t(()=>{R(u&&!!u.length)},[u]),r("div",{...E.root,className:s(E.root?.className,l.root,N?l.fullWidth:void 0,x?l.errored:void 0),children:[d&&e("label",{...E.label,htmlFor:d,className:s(E.label?.className,l.label),children:d}),r("div",{...E.inputWrapper,className:s(E.inputWrapper?.className,l.inputWrapper),children:[p&&e("span",{...E.startIcon,className:s(l.iconContainer,E.startIcon?.className,b?l.disableGutters:void 0),children:p}),e("select",{className:s(j,l.input),onTouchStart:i(S,I),onClick:i(S,f),onBlur:r=>{R(!1),v?.(r)},id:d,...C}),m&&e("span",{...E.endIcon,className:s(l.iconContainer,E.endIcon?.className,h?l.disableGutters:void 0),children:m}),G]}),x&&e(n,{...E.error,className:s(E.error?.className,l.errorText),error:u})]})}export{c as Select};
26
2
  //# sourceMappingURL=Select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../src/Inputs/Select/Select.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@studiocubics/utils\";\nimport {\n useEffect,\n useState,\n type ComponentProps,\n type ReactNode,\n} from \"react\";\nimport styles from \"./Select.module.css\";\nimport {\n eventWithRipple,\n useRipple,\n type UseRippleProps,\n} from \"../../Misc/Ripple/Ripple\";\nimport {\n InputErrors,\n type InputErrorsProps,\n} from \"../../Display/InputErrors/InputErrors\";\n\nexport interface SelectProps extends ComponentProps<\"select\"> {\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n label?: string;\n error?: string | string[];\n fullWidth?: boolean;\n disableEndIconGutters?: boolean;\n disableStartIconGutters?: boolean;\n slotProps?: {\n ripple?: UseRippleProps;\n startIcon?: ComponentProps<\"span\">;\n endIcon?: ComponentProps<\"span\">;\n root?: ComponentProps<\"div\">;\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n error?: InputErrorsProps;\n };\n}\n\nexport function Select(props: SelectProps) {\n const {\n startIcon,\n endIcon,\n label,\n error,\n fullWidth,\n disableEndIconGutters = false,\n disableStartIconGutters = false,\n onTouchStart,\n onClick,\n onBlur,\n slotProps: _slotProps,\n className: inputClass,\n ...inputProps\n } = props;\n const slotProps: NonNullable<SelectProps[\"slotProps\"]> = _slotProps ?? {};\n const { rippleElements, createRipple } = useRipple<HTMLSelectElement>(\n slotProps.ripple,\n );\n const [isErrored, setIsErrored] = useState(error && !!error.length);\n\n useEffect(() => {\n setIsErrored(error && !!error.length);\n }, [error]);\n\n return (\n <div\n {...slotProps.root}\n className={cn(\n slotProps.root?.className,\n styles.root,\n fullWidth ? styles.fullWidth : undefined,\n isErrored ? styles.errored : undefined,\n )}\n >\n {label && (\n <label\n {...slotProps.label}\n htmlFor={label}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n <div\n {...slotProps.inputWrapper}\n className={cn(slotProps.inputWrapper?.className, styles.inputWrapper)}\n >\n {startIcon && (\n <span\n {...slotProps.startIcon}\n className={cn(\n styles.iconContainer,\n slotProps.startIcon?.className,\n disableStartIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {startIcon}\n </span>\n )}\n <select\n className={cn(inputClass, styles.input)}\n onTouchStart={eventWithRipple(createRipple, onTouchStart)}\n //TODO Causes issue on Firefox where the ripple fires after closing the dropdown\n onClick={eventWithRipple(createRipple, onClick)}\n onBlur={(e) => {\n setIsErrored(false);\n onBlur?.(e);\n }}\n id={label}\n {...inputProps}\n />\n {endIcon && (\n <span\n {...slotProps.endIcon}\n className={cn(\n styles.iconContainer,\n slotProps.endIcon?.className,\n disableEndIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {endIcon}\n </span>\n )}\n {rippleElements}\n </div>\n {isErrored && (\n <InputErrors\n {...slotProps.error}\n className={cn(slotProps.error?.className, styles.errorText)}\n error={error}\n />\n )}\n </div>\n );\n}\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../../src/Inputs/Select/Select.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@studiocubics/utils\";\nimport {\n useEffect,\n useState,\n type ComponentProps,\n type ReactNode,\n} from \"react\";\nimport styles from \"./Select.module.css\";\nimport {\n eventWithRipple,\n useRipple,\n type UseRippleProps,\n} from \"../../Misc/Ripple/Ripple\";\nimport {\n InputErrors,\n type InputErrorsProps,\n} from \"../../Display/InputErrors/InputErrors\";\n\nexport interface SelectProps extends ComponentProps<\"select\"> {\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n label?: string;\n error?: string | string[];\n fullWidth?: boolean;\n disableEndIconGutters?: boolean;\n disableStartIconGutters?: boolean;\n slotProps?: {\n ripple?: UseRippleProps;\n startIcon?: ComponentProps<\"span\">;\n endIcon?: ComponentProps<\"span\">;\n root?: ComponentProps<\"div\">;\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n error?: InputErrorsProps;\n };\n}\n\nexport function Select(props: SelectProps) {\n const {\n startIcon,\n endIcon,\n label,\n error,\n fullWidth,\n disableEndIconGutters = false,\n disableStartIconGutters = false,\n onTouchStart,\n onClick,\n onBlur,\n slotProps: _slotProps,\n className: inputClass,\n ...inputProps\n } = props;\n const slotProps: NonNullable<SelectProps[\"slotProps\"]> = _slotProps ?? {};\n const { rippleElements, createRipple } = useRipple<HTMLSelectElement>(\n slotProps.ripple,\n );\n const [isErrored, setIsErrored] = useState(error && !!error.length);\n\n useEffect(() => {\n setIsErrored(error && !!error.length);\n }, [error]);\n\n return (\n <div\n {...slotProps.root}\n className={cn(\n slotProps.root?.className,\n styles.root,\n fullWidth ? styles.fullWidth : undefined,\n isErrored ? styles.errored : undefined,\n )}\n >\n {label && (\n <label\n {...slotProps.label}\n htmlFor={label}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n <div\n {...slotProps.inputWrapper}\n className={cn(slotProps.inputWrapper?.className, styles.inputWrapper)}\n >\n {startIcon && (\n <span\n {...slotProps.startIcon}\n className={cn(\n styles.iconContainer,\n slotProps.startIcon?.className,\n disableStartIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {startIcon}\n </span>\n )}\n <select\n className={cn(inputClass, styles.input)}\n onTouchStart={eventWithRipple(createRipple, onTouchStart)}\n //TODO Causes issue on Firefox where the ripple fires after closing the dropdown\n onClick={eventWithRipple(createRipple, onClick)}\n onBlur={(e) => {\n setIsErrored(false);\n onBlur?.(e);\n }}\n id={label}\n {...inputProps}\n />\n {endIcon && (\n <span\n {...slotProps.endIcon}\n className={cn(\n styles.iconContainer,\n slotProps.endIcon?.className,\n disableEndIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {endIcon}\n </span>\n )}\n {rippleElements}\n </div>\n {isErrored && (\n <InputErrors\n {...slotProps.error}\n className={cn(slotProps.error?.className, styles.errorText)}\n error={error}\n />\n )}\n </div>\n );\n}\n"],"names":["Select","props","startIcon","endIcon","label","error","fullWidth","disableEndIconGutters","disableStartIconGutters","onTouchStart","onClick","onBlur","slotProps","_slotProps","className","inputClass","inputProps","rippleElements","createRipple","useRipple","ripple","isErrored","setIsErrored","useState","length","useEffect","_jsxs","root","cn","styles","undefined","errored","_jsx","htmlFor","children","inputWrapper","iconContainer","disableGutters","input","eventWithRipple","e","id","InputErrors","errorText"],"mappings":"kVAuCM,SAAUA,EAAOC,GACrB,MAAMC,UACJA,EAASC,QACTA,EAAOC,MACPA,EAAKC,MACLA,EAAKC,UACLA,EAASC,sBACTA,GAAwB,EAAKC,wBAC7BA,GAA0B,EAAKC,aAC/BA,EAAYC,QACZA,EAAOC,OACPA,EACAC,UAAWC,EACXC,UAAWC,KACRC,GACDf,EACEW,EAAmDC,GAAc,CAAA,GACjEI,eAAEA,EAAcC,aAAEA,GAAiBC,EACvCP,EAAUQ,SAELC,EAAWC,GAAgBC,EAASlB,KAAWA,EAAMmB,QAM5D,OAJAC,EAAU,KACRH,EAAajB,KAAWA,EAAMmB,SAC7B,CAACnB,IAGFqB,EAAA,MAAA,IACMd,EAAUe,KACdb,UAAWc,EACThB,EAAUe,MAAMb,UAChBe,EAAOF,KACPrB,EAAYuB,EAAOvB,eAAYwB,EAC/BT,EAAYQ,EAAOE,aAAUD,aAG9B1B,GACC4B,EAAA,QAAA,IACMpB,EAAUR,MACd6B,QAAS7B,EACTU,UAAWc,EAAGhB,EAAUR,OAAOU,UAAWe,EAAOzB,OAAM8B,SAEtD9B,IAGLsB,EAAA,MAAA,IACMd,EAAUuB,aACdrB,UAAWc,EAAGhB,EAAUuB,cAAcrB,UAAWe,EAAOM,cAAaD,SAAA,CAEpEhC,GACC8B,EAAA,OAAA,IACMpB,EAAUV,UACdY,UAAWc,EACTC,EAAOO,cACPxB,EAAUV,WAAWY,UACrBN,EAA0BqB,EAAOQ,oBAAiBP,GACnDI,SAEAhC,IAGL8B,EAAA,SAAA,CACElB,UAAWc,EAAGb,EAAYc,EAAOS,OACjC7B,aAAc8B,EAAgBrB,EAAcT,GAE5CC,QAAS6B,EAAgBrB,EAAcR,GACvCC,OAAS6B,IACPlB,GAAa,GACbX,IAAS6B,IAEXC,GAAIrC,KACAY,IAELb,GACC6B,EAAA,OAAA,IACMpB,EAAUT,QACdW,UAAWc,EACTC,EAAOO,cACPxB,EAAUT,SAASW,UACnBP,EAAwBsB,EAAOQ,oBAAiBP,GACjDI,SAEA/B,IAGJc,KAEFI,GACCW,EAACU,EAAW,IACN9B,EAAUP,MACdS,UAAWc,EAAGhB,EAAUP,OAAOS,UAAWe,EAAOc,WACjDtC,MAAOA,MAKjB"}
@@ -1,4 +1,2 @@
1
- var styles = {"root":"Select-module_root__dxgVk","fullWidth":"Select-module_fullWidth__Sm-ZO","inputWrapper":"Select-module_inputWrapper__WbY3I","input":"Select-module_input__RZaAp","label":"Select-module_label__AHkLr","iconContainer":"Select-module_iconContainer__Xlvlm","disableGutters":"Select-module_disableGutters__7Lu6I","errored":"Select-module_errored__IDw1f"};
2
-
3
- export { styles as default };
1
+ var e={root:"Select-module_root__dxgVk",fullWidth:"Select-module_fullWidth__Sm-ZO",inputWrapper:"Select-module_inputWrapper__WbY3I",input:"Select-module_input__RZaAp",label:"Select-module_label__AHkLr",iconContainer:"Select-module_iconContainer__Xlvlm",disableGutters:"Select-module_disableGutters__7Lu6I",errored:"Select-module_errored__IDw1f"};export{e as default};
4
2
  //# sourceMappingURL=Select.module.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"Select.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,81 +1,2 @@
1
- 'use client';
2
- import { jsxs, jsx } from 'react/jsx-runtime';
3
- import { useRef, useState, useEffect } from 'react';
4
- import styles from './Switch.module.css.js';
5
- import { cn, mergeRefs } from '@studiocubics/utils';
6
-
7
- /**
8
- * A switch can be used to show on/off state for form inputs, theme toggles etc.
9
- *
10
- * @group switch
11
- * @category inputs
12
- */
13
- function Switch(props) {
14
- const { value, defaultValue, type = "checkbox", onChange, className, ref, label, "aria-label": ariaLabel, icon, disabled, slotProps = {}, ...rest } = props;
15
- const inputRef = useRef(null);
16
- const thumbRef = useRef(null);
17
- const [checked, setChecked] = useState(value);
18
- const [isDragging, setIsDragging] = useState(false);
19
- const dragStartX = useRef(0);
20
- const dragStartChecked = useRef(false);
21
- useEffect(() => {
22
- setChecked(value);
23
- }, [value]);
24
- const handleDragStart = (clientX) => {
25
- if (disabled)
26
- return;
27
- setIsDragging(true);
28
- dragStartX.current = clientX;
29
- dragStartChecked.current = checked ?? false;
30
- };
31
- const handleDragMove = (clientX) => {
32
- if (!isDragging || disabled)
33
- return;
34
- const delta = clientX - dragStartX.current;
35
- const threshold = 10; // Minimum drag distance to trigger change
36
- if (Math.abs(delta) > threshold) {
37
- const newChecked = delta > 0;
38
- if (newChecked !== checked) {
39
- setChecked(newChecked);
40
- if (inputRef.current && onChange) {
41
- inputRef.current.checked = newChecked;
42
- const event = new Event("change", { bubbles: true });
43
- Object.defineProperty(event, "currentTarget", {
44
- value: inputRef.current,
45
- });
46
- onChange(event, newChecked);
47
- }
48
- }
49
- }
50
- };
51
- const handleDragEnd = () => {
52
- setIsDragging(false);
53
- };
54
- useEffect(() => {
55
- const handleMouseMove = (e) => handleDragMove(e.clientX);
56
- const handleTouchMove = (e) => handleDragMove(e.touches[0].clientX);
57
- const handleMouseUp = () => handleDragEnd();
58
- const handleTouchEnd = () => handleDragEnd();
59
- if (isDragging) {
60
- document.addEventListener("mousemove", handleMouseMove);
61
- document.addEventListener("mouseup", handleMouseUp);
62
- document.addEventListener("touchmove", handleTouchMove);
63
- document.addEventListener("touchend", handleTouchEnd);
64
- }
65
- return () => {
66
- document.removeEventListener("mousemove", handleMouseMove);
67
- document.removeEventListener("mouseup", handleMouseUp);
68
- document.removeEventListener("touchmove", handleTouchMove);
69
- document.removeEventListener("touchend", handleTouchEnd);
70
- };
71
- }, [isDragging, checked]);
72
- return (jsxs("div", { className: cn(className, styles.root, disabled ? styles.disabled : ""), children: [jsxs("div", { ...slotProps.inputWrapper, className: cn(styles.inputWrapper, slotProps.inputWrapper?.className), children: [jsx("input", { ...rest, id: label, type: type, ref: mergeRefs(ref, inputRef), className: styles.input, role: "switch", "aria-checked": checked ?? false, "aria-label": ariaLabel || label, disabled: disabled, onChange: (e) => {
73
- const c = e.currentTarget.checked;
74
- setChecked(c);
75
- if (onChange)
76
- onChange(e, c);
77
- } }), jsx("span", { className: cn(styles.switch, checked ? styles.checked : "", isDragging ? styles.dragging : ""), onClick: () => !isDragging && inputRef.current?.click(), "aria-hidden": "true", children: jsx("span", { ref: thumbRef, className: styles.thumb, onMouseDown: (e) => handleDragStart(e.clientX), onTouchStart: (e) => handleDragStart(e.touches[0].clientX), children: icon }) })] }), label && (jsx("label", { ...slotProps.label, htmlFor: props.id || label, className: cn(slotProps.label?.className, styles.label), children: label }))] }));
78
- }
79
-
80
- export { Switch };
1
+ "use client";import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useRef as n,useState as r,useEffect as c}from"react";import o from"./Switch.module.css.js";import{cn as a,mergeRefs as s}from"@studiocubics/utils";function i(i){const{value:u,defaultValue:l,type:d="checkbox",onChange:m,className:h,ref:p,label:v,"aria-label":b,icon:f,disabled:E,slotProps:N={},...g}=i,L=n(null),k=n(null),[w,X]=r(u),[j,x]=r(!1),y=n(0),C=n(!1);c(()=>{X(u)},[u]);const T=e=>{E||(x(!0),y.current=e,C.current=w??!1)},W=e=>{if(!j||E)return;const t=e-y.current;if(Math.abs(t)>10){const e=t>0;if(e!==w&&(X(e),L.current&&m)){L.current.checked=e;const t=new Event("change",{bubbles:!0});Object.defineProperty(t,"currentTarget",{value:L.current}),m(t,e)}}},M=()=>{x(!1)};return c(()=>{const e=e=>W(e.clientX),t=e=>W(e.touches[0].clientX),n=()=>M(),r=()=>M();return j&&(document.addEventListener("mousemove",e),document.addEventListener("mouseup",n),document.addEventListener("touchmove",t),document.addEventListener("touchend",r)),()=>{document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",n),document.removeEventListener("touchmove",t),document.removeEventListener("touchend",r)}},[j,w]),e("div",{className:a(h,o.root,E?o.disabled:""),children:[e("div",{...N.inputWrapper,className:a(o.inputWrapper,N.inputWrapper?.className),children:[t("input",{...g,id:v,type:d,ref:s(p,L),className:o.input,role:"switch","aria-checked":w??!1,"aria-label":b||v,disabled:E,onChange:e=>{const t=e.currentTarget.checked;X(t),m&&m(e,t)}}),t("span",{className:a(o.switch,w?o.checked:"",j?o.dragging:""),onClick:()=>!j&&L.current?.click(),"aria-hidden":"true",children:t("span",{ref:k,className:o.thumb,onMouseDown:e=>T(e.clientX),onTouchStart:e=>T(e.touches[0].clientX),children:f})})]}),v&&t("label",{...N.label,htmlFor:i.id||v,className:a(N.label?.className,o.label),children:v})]})}export{i as Switch};
81
2
  //# sourceMappingURL=Switch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","sources":["../../../src/Inputs/Switch/Switch.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ChangeEvent,\n type ComponentProps,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport styles from \"./Switch.module.css\";\nimport { cn, mergeRefs } from \"@studiocubics/utils\";\n\n/**\n * Props for the Switch component\n *\n * @group switch\n * @category inputs\n */\nexport interface SwitchProps\n extends Omit<ComponentProps<\"input\">, \"defaultValue\" | \"value\" | \"onChange\"> {\n /**\n * Default value of the switch in boolean\n */\n defaultValue?: boolean;\n /**\n * Value of the switch in boolean\n */\n value?: boolean | null;\n /**\n * Event handler for when the value of the switch changes\n */\n onChange?: (e: ChangeEvent<HTMLInputElement>, checked: boolean) => void;\n /**\n * Label for the switch\n */\n label?: string;\n /**\n * Icon to render in the thumb of the switch\n */\n icon?: ReactNode;\n /**\n * Switch slots props\n */\n slotProps?: {\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n };\n // TODO add size\n // TODO add color\n}\n\n/**\n * A switch can be used to show on/off state for form inputs, theme toggles etc.\n *\n * @group switch\n * @category inputs\n */\nexport function Switch(props: SwitchProps) {\n const {\n value,\n defaultValue,\n type = \"checkbox\",\n onChange,\n className,\n ref,\n label,\n \"aria-label\": ariaLabel,\n icon,\n disabled,\n slotProps = {},\n ...rest\n } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const thumbRef = useRef<HTMLSpanElement>(null);\n const [checked, setChecked] = useState(value);\n const [isDragging, setIsDragging] = useState(false);\n const dragStartX = useRef(0);\n const dragStartChecked = useRef(false);\n\n useEffect(() => {\n setChecked(value);\n }, [value]);\n\n const handleDragStart = (clientX: number) => {\n if (disabled) return;\n setIsDragging(true);\n dragStartX.current = clientX;\n dragStartChecked.current = checked ?? false;\n };\n\n const handleDragMove = (clientX: number) => {\n if (!isDragging || disabled) return;\n\n const delta = clientX - dragStartX.current;\n const threshold = 10; // Minimum drag distance to trigger change\n\n if (Math.abs(delta) > threshold) {\n const newChecked = delta > 0;\n if (newChecked !== checked) {\n setChecked(newChecked);\n if (inputRef.current && onChange) {\n inputRef.current.checked = newChecked;\n const event = new Event(\"change\", { bubbles: true }) as any;\n Object.defineProperty(event, \"currentTarget\", {\n value: inputRef.current,\n });\n onChange(event, newChecked);\n }\n }\n }\n };\n\n const handleDragEnd = () => {\n setIsDragging(false);\n };\n\n useEffect(() => {\n const handleMouseMove = (e: MouseEvent) => handleDragMove(e.clientX);\n const handleTouchMove = (e: TouchEvent) =>\n handleDragMove(e.touches[0].clientX);\n const handleMouseUp = () => handleDragEnd();\n const handleTouchEnd = () => handleDragEnd();\n\n if (isDragging) {\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n document.addEventListener(\"touchmove\", handleTouchMove);\n document.addEventListener(\"touchend\", handleTouchEnd);\n }\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n document.removeEventListener(\"touchmove\", handleTouchMove);\n document.removeEventListener(\"touchend\", handleTouchEnd);\n };\n }, [isDragging, checked]);\n\n return (\n <div\n className={cn(className, styles.root, disabled ? styles.disabled : \"\")}\n >\n <div\n {...slotProps.inputWrapper}\n className={cn(styles.inputWrapper, slotProps.inputWrapper?.className)}\n >\n <input\n {...rest}\n id={label}\n type={type}\n ref={mergeRefs(ref, inputRef)}\n className={styles.input}\n role=\"switch\"\n aria-checked={checked ?? false}\n aria-label={ariaLabel || label}\n disabled={disabled}\n onChange={(e) => {\n const c = e.currentTarget.checked;\n setChecked(c);\n if (onChange) onChange(e, c);\n }}\n />\n <span\n className={cn(\n styles.switch,\n checked ? styles.checked : \"\",\n isDragging ? styles.dragging : \"\"\n )}\n onClick={() => !isDragging && inputRef.current?.click()}\n aria-hidden=\"true\"\n >\n <span\n ref={thumbRef}\n className={styles.thumb}\n onMouseDown={(e) => handleDragStart(e.clientX)}\n onTouchStart={(e) => handleDragStart(e.touches[0].clientX)}\n >\n {icon}\n </span>\n </span>\n </div>\n {label && (\n <label\n {...slotProps.label}\n htmlFor={props.id || label}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n </div>\n );\n}\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"Switch.js","sources":["../../../src/Inputs/Switch/Switch.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ChangeEvent,\n type ComponentProps,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport styles from \"./Switch.module.css\";\nimport { cn, mergeRefs } from \"@studiocubics/utils\";\n\n/**\n * Props for the Switch component\n *\n * @group switch\n * @category inputs\n */\nexport interface SwitchProps\n extends Omit<ComponentProps<\"input\">, \"defaultValue\" | \"value\" | \"onChange\"> {\n /**\n * Default value of the switch in boolean\n */\n defaultValue?: boolean;\n /**\n * Value of the switch in boolean\n */\n value?: boolean | null;\n /**\n * Event handler for when the value of the switch changes\n */\n onChange?: (e: ChangeEvent<HTMLInputElement>, checked: boolean) => void;\n /**\n * Label for the switch\n */\n label?: string;\n /**\n * Icon to render in the thumb of the switch\n */\n icon?: ReactNode;\n /**\n * Switch slots props\n */\n slotProps?: {\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n };\n // TODO add size\n // TODO add color\n}\n\n/**\n * A switch can be used to show on/off state for form inputs, theme toggles etc.\n *\n * @group switch\n * @category inputs\n */\nexport function Switch(props: SwitchProps) {\n const {\n value,\n defaultValue,\n type = \"checkbox\",\n onChange,\n className,\n ref,\n label,\n \"aria-label\": ariaLabel,\n icon,\n disabled,\n slotProps = {},\n ...rest\n } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const thumbRef = useRef<HTMLSpanElement>(null);\n const [checked, setChecked] = useState(value);\n const [isDragging, setIsDragging] = useState(false);\n const dragStartX = useRef(0);\n const dragStartChecked = useRef(false);\n\n useEffect(() => {\n setChecked(value);\n }, [value]);\n\n const handleDragStart = (clientX: number) => {\n if (disabled) return;\n setIsDragging(true);\n dragStartX.current = clientX;\n dragStartChecked.current = checked ?? false;\n };\n\n const handleDragMove = (clientX: number) => {\n if (!isDragging || disabled) return;\n\n const delta = clientX - dragStartX.current;\n const threshold = 10; // Minimum drag distance to trigger change\n\n if (Math.abs(delta) > threshold) {\n const newChecked = delta > 0;\n if (newChecked !== checked) {\n setChecked(newChecked);\n if (inputRef.current && onChange) {\n inputRef.current.checked = newChecked;\n const event = new Event(\"change\", { bubbles: true }) as any;\n Object.defineProperty(event, \"currentTarget\", {\n value: inputRef.current,\n });\n onChange(event, newChecked);\n }\n }\n }\n };\n\n const handleDragEnd = () => {\n setIsDragging(false);\n };\n\n useEffect(() => {\n const handleMouseMove = (e: MouseEvent) => handleDragMove(e.clientX);\n const handleTouchMove = (e: TouchEvent) =>\n handleDragMove(e.touches[0].clientX);\n const handleMouseUp = () => handleDragEnd();\n const handleTouchEnd = () => handleDragEnd();\n\n if (isDragging) {\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n document.addEventListener(\"touchmove\", handleTouchMove);\n document.addEventListener(\"touchend\", handleTouchEnd);\n }\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n document.removeEventListener(\"touchmove\", handleTouchMove);\n document.removeEventListener(\"touchend\", handleTouchEnd);\n };\n }, [isDragging, checked]);\n\n return (\n <div\n className={cn(className, styles.root, disabled ? styles.disabled : \"\")}\n >\n <div\n {...slotProps.inputWrapper}\n className={cn(styles.inputWrapper, slotProps.inputWrapper?.className)}\n >\n <input\n {...rest}\n id={label}\n type={type}\n ref={mergeRefs(ref, inputRef)}\n className={styles.input}\n role=\"switch\"\n aria-checked={checked ?? false}\n aria-label={ariaLabel || label}\n disabled={disabled}\n onChange={(e) => {\n const c = e.currentTarget.checked;\n setChecked(c);\n if (onChange) onChange(e, c);\n }}\n />\n <span\n className={cn(\n styles.switch,\n checked ? styles.checked : \"\",\n isDragging ? styles.dragging : \"\"\n )}\n onClick={() => !isDragging && inputRef.current?.click()}\n aria-hidden=\"true\"\n >\n <span\n ref={thumbRef}\n className={styles.thumb}\n onMouseDown={(e) => handleDragStart(e.clientX)}\n onTouchStart={(e) => handleDragStart(e.touches[0].clientX)}\n >\n {icon}\n </span>\n </span>\n </div>\n {label && (\n <label\n {...slotProps.label}\n htmlFor={props.id || label}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n </div>\n );\n}\n"],"names":["Switch","props","value","defaultValue","type","onChange","className","ref","label","ariaLabel","icon","disabled","slotProps","rest","inputRef","useRef","thumbRef","checked","setChecked","useState","isDragging","setIsDragging","dragStartX","dragStartChecked","useEffect","handleDragStart","clientX","current","handleDragMove","delta","Math","abs","newChecked","event","Event","bubbles","Object","defineProperty","handleDragEnd","handleMouseMove","e","handleTouchMove","touches","handleMouseUp","handleTouchEnd","document","addEventListener","removeEventListener","_jsxs","cn","styles","root","children","inputWrapper","_jsx","id","mergeRefs","input","role","c","currentTarget","switch","dragging","onClick","click","thumb","onMouseDown","onTouchStart","htmlFor"],"mappings":"yNA0DM,SAAUA,EAAOC,GACrB,MAAMC,MACJA,EAAKC,aACLA,EAAYC,KACZA,EAAO,WAAUC,SACjBA,EAAQC,UACRA,EAASC,IACTA,EAAGC,MACHA,EACA,aAAcC,EAASC,KACvBA,EAAIC,SACJA,EAAQC,UACRA,EAAY,MACTC,GACDZ,EAEEa,EAAWC,EAAyB,MACpCC,EAAWD,EAAwB,OAClCE,EAASC,GAAcC,EAASjB,IAChCkB,EAAYC,GAAiBF,GAAS,GACvCG,EAAaP,EAAO,GACpBQ,EAAmBR,GAAO,GAEhCS,EAAU,KACRN,EAAWhB,IACV,CAACA,IAEJ,MAAMuB,EAAmBC,IACnBf,IACJU,GAAc,GACdC,EAAWK,QAAUD,EACrBH,EAAiBI,QAAUV,IAAW,IAGlCW,EAAkBF,IACtB,IAAKN,GAAcT,EAAU,OAE7B,MAAMkB,EAAQH,EAAUJ,EAAWK,QAGnC,GAAIG,KAAKC,IAAIF,GAFK,GAEe,CAC/B,MAAMG,EAAaH,EAAQ,EAC3B,GAAIG,IAAef,IACjBC,EAAWc,GACPlB,EAASa,SAAWtB,GAAU,CAChCS,EAASa,QAAQV,QAAUe,EAC3B,MAAMC,EAAQ,IAAIC,MAAM,SAAU,CAAEC,SAAS,IAC7CC,OAAOC,eAAeJ,EAAO,gBAAiB,CAC5C/B,MAAOY,EAASa,UAElBtB,EAAS4B,EAAOD,EAClB,CAEJ,GAGIM,EAAgB,KACpBjB,GAAc,IAyBhB,OAtBAG,EAAU,KACR,MAAMe,EAAmBC,GAAkBZ,EAAeY,EAAEd,SACtDe,EAAmBD,GACvBZ,EAAeY,EAAEE,QAAQ,GAAGhB,SACxBiB,EAAgB,IAAML,IACtBM,EAAiB,IAAMN,IAS7B,OAPIlB,IACFyB,SAASC,iBAAiB,YAAaP,GACvCM,SAASC,iBAAiB,UAAWH,GACrCE,SAASC,iBAAiB,YAAaL,GACvCI,SAASC,iBAAiB,WAAYF,IAGjC,KACLC,SAASE,oBAAoB,YAAaR,GAC1CM,SAASE,oBAAoB,UAAWJ,GACxCE,SAASE,oBAAoB,YAAaN,GAC1CI,SAASE,oBAAoB,WAAYH,KAE1C,CAACxB,EAAYH,IAGd+B,SACE1C,UAAW2C,EAAG3C,EAAW4C,EAAOC,KAAMxC,EAAWuC,EAAOvC,SAAW,IAAGyC,SAAA,CAEtEJ,YACMpC,EAAUyC,aACd/C,UAAW2C,EAAGC,EAAOG,aAAczC,EAAUyC,cAAc/C,WAAU8C,SAAA,CAErEE,EAAA,QAAA,IACMzC,EACJ0C,GAAI/C,EACJJ,KAAMA,EACNG,IAAKiD,EAAUjD,EAAKO,GACpBR,UAAW4C,EAAOO,MAClBC,KAAK,SAAQ,eACCzC,IAAW,EAAK,aAClBR,GAAaD,EACzBG,SAAUA,EACVN,SAAWmC,IACT,MAAMmB,EAAInB,EAAEoB,cAAc3C,QAC1BC,EAAWyC,GACPtD,GAAUA,EAASmC,EAAGmB,MAG9BL,EAAA,OAAA,CACEhD,UAAW2C,EACTC,EAAOW,OACP5C,EAAUiC,EAAOjC,QAAU,GAC3BG,EAAa8B,EAAOY,SAAW,IAEjCC,QAAS,KAAO3C,GAAcN,EAASa,SAASqC,QAAO,cAC3C,OAAMZ,SAElBE,EAAA,OAAA,CACE/C,IAAKS,EACLV,UAAW4C,EAAOe,MAClBC,YAAc1B,GAAMf,EAAgBe,EAAEd,SACtCyC,aAAe3B,GAAMf,EAAgBe,EAAEE,QAAQ,GAAGhB,SAAQ0B,SAEzD1C,SAINF,GACC8C,EAAA,QAAA,IACM1C,EAAUJ,MACd4D,QAASnE,EAAMsD,IAAM/C,EACrBF,UAAW2C,EAAGrC,EAAUJ,OAAOF,UAAW4C,EAAO1C,OAAM4C,SAEtD5C,MAKX"}
@@ -1,4 +1,2 @@
1
- var styles = {"root":"Switch-module_root__iigu-","disabled":"Switch-module_disabled__OpgQK","switch":"Switch-module_switch__JRFZI","thumb":"Switch-module_thumb__s4iLS","inputWrapper":"Switch-module_inputWrapper__o8uEI","label":"Switch-module_label__vk4At","input":"Switch-module_input__pSFbl","checked":"Switch-module_checked__7JJ9o"};
2
-
3
- export { styles as default };
1
+ var _={root:"Switch-module_root__iigu-",disabled:"Switch-module_disabled__OpgQK",switch:"Switch-module_switch__JRFZI",thumb:"Switch-module_thumb__s4iLS",inputWrapper:"Switch-module_inputWrapper__o8uEI",label:"Switch-module_label__vk4At",input:"Switch-module_input__pSFbl",checked:"Switch-module_checked__7JJ9o"};export{_ as default};
4
2
  //# sourceMappingURL=Switch.module.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"Switch.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,30 +1,2 @@
1
- 'use client';
2
- import { jsxs, jsx } from 'react/jsx-runtime';
3
- import { cn } from '@studiocubics/utils';
4
- import { useState, useEffect } from 'react';
5
- import { useRipple, eventWithRipple } from '../../Misc/Ripple/Ripple.js';
6
- import styles from './TextAreaInput.module.css.js';
7
- import '../../Display/Accordion/Accordion.js';
8
- import '../../Cards/GlassCard/GlassCard.js';
9
- import '../../Display/Chip/Chip.js';
10
- import '../../Display/IdentityDisplay/IdentityDisplay.js';
11
- import { InputErrors } from '../../Display/InputErrors/InputErrors.js';
12
- import '../../Display/Kbd/buttonList.js';
13
- import '../../Display/List/List.js';
14
- import 'react-dom';
15
-
16
- function TextAreaInput(props) {
17
- const { label, error, fullWidth, disableResize = false, onTouchStart, onClick, onBlur, slotProps = {}, className: inputClass, ...inputProps } = props;
18
- const { rippleElements, createRipple } = useRipple(slotProps.ripple);
19
- const [isErrored, setIsErrored] = useState(error && !!error.length);
20
- useEffect(() => {
21
- setIsErrored(error && !!error.length);
22
- }, [error]);
23
- return (jsxs("div", { ...slotProps.root, className: cn(slotProps.root?.className, styles.root, fullWidth ? styles.fullWidth : undefined, isErrored ? styles.errored : undefined), children: [label && (jsx("label", { ...slotProps.label, htmlFor: props.id || label, className: cn(slotProps.label?.className, styles.label), children: label })), jsxs("div", { ...slotProps.inputWrapper, className: cn(slotProps.inputWrapper?.className, styles.inputWrapper), children: [jsx("textarea", { className: cn(inputClass, styles.input, disableResize ? styles.disableResize : undefined), onTouchStart: eventWithRipple(createRipple, onTouchStart), onClick: eventWithRipple(createRipple, onClick), onBlur: (e) => {
24
- setIsErrored(false);
25
- onBlur?.(e);
26
- }, id: label, ...inputProps }), rippleElements] }), isErrored && (jsx(InputErrors, { ...slotProps.error, className: cn(slotProps.error?.className, styles.errorText), error: error }))] }));
27
- }
28
-
29
- export { TextAreaInput };
1
+ "use client";import{jsxs as r,jsx as i}from"react/jsx-runtime";import{cn as s}from"@studiocubics/utils";import{useState as t,useEffect as e}from"react";import{useRipple as o,eventWithRipple as l}from"../../Misc/Ripple/Ripple.js";import a from"./TextAreaInput.module.css.js";import"../../Display/Accordion/Accordion.js";import"../../Cards/GlassCard/GlassCard.js";import"../../Display/Chip/Chip.js";import"../../Display/IdentityDisplay/IdentityDisplay.js";import{InputErrors as p}from"../../Display/InputErrors/InputErrors.js";import"../../Display/Kbd/buttonList.js";import"../../Display/List/List.js";import"../Button/Button.js";import"react-dom";function m(m){const{label:c,error:n,fullWidth:d,disableResize:u=!1,onTouchStart:h,onClick:j,onBlur:b,slotProps:y={},className:N,...f}=m,{rippleElements:D,createRipple:C}=o(y.ripple),[v,x]=t(n&&!!n.length);return e(()=>{x(n&&!!n.length)},[n]),r("div",{...y.root,className:s(y.root?.className,a.root,d?a.fullWidth:void 0,v?a.errored:void 0),children:[c&&i("label",{...y.label,htmlFor:m.id||c,className:s(y.label?.className,a.label),children:c}),r("div",{...y.inputWrapper,className:s(y.inputWrapper?.className,a.inputWrapper),children:[i("textarea",{className:s(N,a.input,u?a.disableResize:void 0),onTouchStart:l(C,h),onClick:l(C,j),onBlur:r=>{x(!1),b?.(r)},id:c,...f}),D]}),v&&i(p,{...y.error,className:s(y.error?.className,a.errorText),error:n})]})}export{m as TextAreaInput};
30
2
  //# sourceMappingURL=TextAreaInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextAreaInput.js","sources":["../../../src/Inputs/TextAreaInput/TextAreaInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@studiocubics/utils\";\nimport { useEffect, useState, type ComponentProps } from \"react\";\nimport {\n eventWithRipple,\n useRipple,\n type UseRippleProps,\n} from \"../../Misc/Ripple/Ripple\";\nimport styles from \"./TextAreaInput.module.css\";\nimport { InputErrors, type InputErrorsProps } from \"../../Display/_index\";\n\nexport interface TextAreaInputProps extends ComponentProps<\"textarea\"> {\n label?: string;\n error?: string | string[];\n disableResize?: boolean;\n fullWidth?: boolean;\n slotProps?: {\n ripple?: UseRippleProps;\n root?: ComponentProps<\"div\">;\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n error?: InputErrorsProps;\n };\n}\n\nexport function TextAreaInput(props: TextAreaInputProps) {\n const {\n label,\n error,\n fullWidth,\n disableResize = false,\n onTouchStart,\n onClick,\n onBlur,\n slotProps = {},\n className: inputClass,\n ...inputProps\n } = props;\n\n const { rippleElements, createRipple } = useRipple(slotProps.ripple);\n const [isErrored, setIsErrored] = useState(error && !!error.length);\n\n useEffect(() => {\n setIsErrored(error && !!error.length);\n }, [error]);\n\n return (\n <div\n {...slotProps.root}\n className={cn(\n slotProps.root?.className,\n styles.root,\n fullWidth ? styles.fullWidth : undefined,\n isErrored ? styles.errored : undefined\n )}\n >\n {label && (\n <label\n {...slotProps.label}\n htmlFor={props.id || label}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n <div\n {...slotProps.inputWrapper}\n className={cn(slotProps.inputWrapper?.className, styles.inputWrapper)}\n >\n <textarea\n className={cn(\n inputClass,\n styles.input,\n disableResize ? styles.disableResize : undefined\n )}\n onTouchStart={eventWithRipple(createRipple, onTouchStart)}\n onClick={eventWithRipple(createRipple, onClick)}\n onBlur={(e) => {\n setIsErrored(false);\n onBlur?.(e);\n }}\n id={label}\n {...inputProps}\n />\n {rippleElements}\n </div>\n {isErrored && (\n <InputErrors\n {...slotProps.error}\n className={cn(slotProps.error?.className, styles.errorText)}\n error={error}\n />\n )}\n </div>\n );\n}\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;AA0BM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAC,CAAA,CAAA,CAAA,CAAA,CAAyB,CAAA,CAAA;AACrD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CACJ,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CACL,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CACL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CACT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CACrB,YAAY,CAAA,CACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAG,CAAA,CAAE,CAAA,CACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACrB,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACd,GAAG,CAAA,CAAA,CAAA,CAAA,CAAK;AAET,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAE,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC;AACpE,CAAA,CAAA,CAAA,CAAA,MAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,IAAI,CAAC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,MAAM,CAAC;IAEnE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK;QACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAI,CAAC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC;AACvC,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,CAAE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,CAAC;AAEX,CAAA,CAAA,CAAA,CAAA,QACEA,CAAAA,CAAAA,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CACM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAA,CAAA,CAAA,CAAI,EAClB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,CAAA,CAAE,CACX,SAAS,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,EACzB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CACX,SAAS,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CACxC,SAAS,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CACvC,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEA,CAAA,CAAA,CAAA,CAAA,CAAK,KACJC,CAAAA,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CACM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,EACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,EAAE,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,EAAE,CAAA,CAAE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,KAAK,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,KAAK,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEtD,KAAK,CAAA,CAAA,CACA,CACT,CAAA,CACDD,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GACM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAC1B,SAAS,CAAA,CAAE,CAAA,CAAE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,MAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,CAAA,CAAA,QAAA,CAAA,CAAA,CAErEC,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,CAAA,CAAE,CACX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,KAAK,CAAA,CACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAG,SAAS,CACjD,CAAA,CACD,YAAY,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,CAAA,CACzD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAE,OAAO,CAAC,CAAA,CAC/C,MAAM,CAAA,CAAE,CAAC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAI;4BACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC;AACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAG,CAAC,CAAC;AACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,EACD,CAAA,CAAE,CAAA,CAAE,KAAK,CAAA,CAAA,CAAA,CAAA,CACL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,EACd,CAAA,CACD,cAAc,IACX,CAAA,CACL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CACRA,GAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,CAAA,CAAE,CAAC,SAAS,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAA,CAC3D,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAK,GACZ,CACH,CAAA,CAAA,CAAA,CACG,CAAA;AAEV;;"}
1
+ {"version":3,"file":"TextAreaInput.js","sources":["../../../src/Inputs/TextAreaInput/TextAreaInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@studiocubics/utils\";\nimport { useEffect, useState, type ComponentProps } from \"react\";\nimport {\n eventWithRipple,\n useRipple,\n type UseRippleProps,\n} from \"../../Misc/Ripple/Ripple\";\nimport styles from \"./TextAreaInput.module.css\";\nimport { InputErrors, type InputErrorsProps } from \"../../Display/_index\";\n\nexport interface TextAreaInputProps extends ComponentProps<\"textarea\"> {\n label?: string;\n error?: string | string[];\n disableResize?: boolean;\n fullWidth?: boolean;\n slotProps?: {\n ripple?: UseRippleProps;\n root?: ComponentProps<\"div\">;\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n error?: InputErrorsProps;\n };\n}\n\nexport function TextAreaInput(props: TextAreaInputProps) {\n const {\n label,\n error,\n fullWidth,\n disableResize = false,\n onTouchStart,\n onClick,\n onBlur,\n slotProps = {},\n className: inputClass,\n ...inputProps\n } = props;\n\n const { rippleElements, createRipple } = useRipple(slotProps.ripple);\n const [isErrored, setIsErrored] = useState(error && !!error.length);\n\n useEffect(() => {\n setIsErrored(error && !!error.length);\n }, [error]);\n\n return (\n <div\n {...slotProps.root}\n className={cn(\n slotProps.root?.className,\n styles.root,\n fullWidth ? styles.fullWidth : undefined,\n isErrored ? styles.errored : undefined\n )}\n >\n {label && (\n <label\n {...slotProps.label}\n htmlFor={props.id || label}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n <div\n {...slotProps.inputWrapper}\n className={cn(slotProps.inputWrapper?.className, styles.inputWrapper)}\n >\n <textarea\n className={cn(\n inputClass,\n styles.input,\n disableResize ? styles.disableResize : undefined\n )}\n onTouchStart={eventWithRipple(createRipple, onTouchStart)}\n onClick={eventWithRipple(createRipple, onClick)}\n onBlur={(e) => {\n setIsErrored(false);\n onBlur?.(e);\n }}\n id={label}\n {...inputProps}\n />\n {rippleElements}\n </div>\n {isErrored && (\n <InputErrors\n {...slotProps.error}\n className={cn(slotProps.error?.className, styles.errorText)}\n error={error}\n />\n )}\n </div>\n );\n}\n"],"names":["TextAreaInput","props","label","error","fullWidth","disableResize","onTouchStart","onClick","onBlur","slotProps","className","inputClass","inputProps","rippleElements","createRipple","useRipple","ripple","isErrored","setIsErrored","useState","length","useEffect","_jsxs","root","cn","styles","undefined","errored","children","_jsx","htmlFor","id","inputWrapper","input","eventWithRipple","e","InputErrors","errorText"],"mappings":"soBA0BM,SAAUA,EAAcC,GAC5B,MAAMC,MACJA,EAAKC,MACLA,EAAKC,UACLA,EAASC,cACTA,GAAgB,EAAKC,aACrBA,EAAYC,QACZA,EAAOC,OACPA,EAAMC,UACNA,EAAY,CAAA,EACZC,UAAWC,KACRC,GACDX,GAEEY,eAAEA,EAAcC,aAAEA,GAAiBC,EAAUN,EAAUO,SACtDC,EAAWC,GAAgBC,EAAShB,KAAWA,EAAMiB,QAM5D,OAJAC,EAAU,KACRH,EAAaf,KAAWA,EAAMiB,SAC7B,CAACjB,IAGFmB,EAAA,MAAA,IACMb,EAAUc,KACdb,UAAWc,EACTf,EAAUc,MAAMb,UAChBe,EAAOF,KACPnB,EAAYqB,EAAOrB,eAAYsB,EAC/BT,EAAYQ,EAAOE,aAAUD,GAC9BE,SAAA,CAEA1B,GACC2B,EAAA,QAAA,IACMpB,EAAUP,MACd4B,QAAS7B,EAAM8B,IAAM7B,EACrBQ,UAAWc,EAAGf,EAAUP,OAAOQ,UAAWe,EAAOvB,OAAM0B,SAEtD1B,IAGLoB,EAAA,MAAA,IACMb,EAAUuB,aACdtB,UAAWc,EAAGf,EAAUuB,cAActB,UAAWe,EAAOO,cAAaJ,SAAA,CAErEC,EAAA,WAAA,CACEnB,UAAWc,EACTb,EACAc,EAAOQ,MACP5B,EAAgBoB,EAAOpB,mBAAgBqB,GAEzCpB,aAAc4B,EAAgBpB,EAAcR,GAC5CC,QAAS2B,EAAgBpB,EAAcP,GACvCC,OAAS2B,IACPjB,GAAa,GACbV,IAAS2B,IAEXJ,GAAI7B,KACAU,IAELC,KAEFI,GACCY,EAACO,EAAW,IACN3B,EAAUN,MACdO,UAAWc,EAAGf,EAAUN,OAAOO,UAAWe,EAAOY,WACjDlC,MAAOA,MAKjB"}