@studiocubics/components 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/dist/Cards/Card/Card.d.ts +49 -0
  2. package/dist/Cards/Card/Card.js +45 -0
  3. package/dist/Cards/Card/Card.js.map +1 -0
  4. package/dist/Cards/Card/Card.module.css.js +4 -0
  5. package/dist/Cards/Card/Card.module.css.js.map +1 -0
  6. package/dist/Cards/CollectionItemCard/CollectionItemCard.d.ts +55 -0
  7. package/dist/Cards/CollectionItemCard/CollectionItemCard.js +48 -0
  8. package/dist/Cards/CollectionItemCard/CollectionItemCard.js.map +1 -0
  9. package/dist/Cards/CollectionItemCard/CollectionItemCard.module.css.js +4 -0
  10. package/dist/Cards/CollectionItemCard/CollectionItemCard.module.css.js.map +1 -0
  11. package/dist/Cards/CollectionItemCard/CollectionItemCardActions.d.ts +19 -0
  12. package/dist/Cards/CollectionItemCard/CollectionItemCardActions.js +34 -0
  13. package/dist/Cards/CollectionItemCard/CollectionItemCardActions.js.map +1 -0
  14. package/dist/Cards/GlassCard/GlassCard.d.ts +7 -0
  15. package/dist/Cards/GlassCard/GlassCard.js +52 -0
  16. package/dist/Cards/GlassCard/GlassCard.js.map +1 -0
  17. package/dist/Cards/GlassCard/GlassCard.module.css.js +4 -0
  18. package/dist/Cards/GlassCard/GlassCard.module.css.js.map +1 -0
  19. package/dist/Display/Accordion/Accordion.d.ts +14 -0
  20. package/dist/Display/Accordion/Accordion.js +28 -0
  21. package/dist/Display/Accordion/Accordion.js.map +1 -0
  22. package/dist/Display/Accordion/Accordion.module.css.js +4 -0
  23. package/dist/Display/Accordion/Accordion.module.css.js.map +1 -0
  24. package/dist/Display/Accordion/AccordionItem.d.ts +15 -0
  25. package/dist/Display/Accordion/AccordionItem.js +56 -0
  26. package/dist/Display/Accordion/AccordionItem.js.map +1 -0
  27. package/dist/Display/Chip/Chip.d.ts +46 -0
  28. package/dist/Display/Chip/Chip.js +43 -0
  29. package/dist/Display/Chip/Chip.js.map +1 -0
  30. package/dist/Display/Chip/Chip.module.css.js +4 -0
  31. package/dist/Display/Chip/Chip.module.css.js.map +1 -0
  32. package/dist/Display/IdentityDisplay/IdentityDisplay.d.ts +21 -0
  33. package/dist/Display/IdentityDisplay/IdentityDisplay.js +36 -0
  34. package/dist/Display/IdentityDisplay/IdentityDisplay.js.map +1 -0
  35. package/dist/Display/IdentityDisplay/IdentityDisplay.module.css.js +4 -0
  36. package/dist/Display/IdentityDisplay/IdentityDisplay.module.css.js.map +1 -0
  37. package/dist/Display/InputErrors/InputErrors.d.ts +11 -0
  38. package/dist/Display/InputErrors/InputErrors.js +25 -0
  39. package/dist/Display/InputErrors/InputErrors.js.map +1 -0
  40. package/dist/Display/InputErrors/InputErrors.module.css.js +4 -0
  41. package/dist/Display/InputErrors/InputErrors.module.css.js.map +1 -0
  42. package/dist/Display/Kbd/Kbd.d.ts +8 -0
  43. package/dist/Display/Kbd/Kbd.js +19 -0
  44. package/dist/Display/Kbd/Kbd.js.map +1 -0
  45. package/dist/Display/Kbd/Kbd.module.css.js +4 -0
  46. package/dist/Display/Kbd/Kbd.module.css.js.map +1 -0
  47. package/dist/Display/Kbd/buttonList.d.ts +324 -0
  48. package/dist/Display/Kbd/buttonList.js +198 -0
  49. package/dist/Display/Kbd/buttonList.js.map +1 -0
  50. package/dist/Display/LabeledValue/LabeledValue.d.ts +9 -0
  51. package/dist/Display/LabeledValue/LabeledValue.js +11 -0
  52. package/dist/Display/LabeledValue/LabeledValue.js.map +1 -0
  53. package/dist/Display/LabeledValue/LabeledValue.module.css.js +4 -0
  54. package/dist/Display/LabeledValue/LabeledValue.module.css.js.map +1 -0
  55. package/dist/Display/List/List.d.ts +50 -0
  56. package/dist/Display/List/List.js +96 -0
  57. package/dist/Display/List/List.js.map +1 -0
  58. package/dist/Display/List/List.module.css.js +4 -0
  59. package/dist/Display/List/List.module.css.js.map +1 -0
  60. package/dist/Display/PasswordStrength/PasswordStrength.d.ts +4 -0
  61. package/dist/Display/PasswordStrength/PasswordStrength.js +17 -0
  62. package/dist/Display/PasswordStrength/PasswordStrength.js.map +1 -0
  63. package/dist/Display/PasswordStrength/PasswordStrength.module.css.js +4 -0
  64. package/dist/Display/PasswordStrength/PasswordStrength.module.css.js.map +1 -0
  65. package/dist/Display/PasswordStrength/usePasswordStrength.d.ts +42 -0
  66. package/dist/Display/PasswordStrength/usePasswordStrength.js +49 -0
  67. package/dist/Display/PasswordStrength/usePasswordStrength.js.map +1 -0
  68. package/dist/Display/Skeleton/Skeleton.d.ts +8 -0
  69. package/dist/Display/Skeleton/Skeleton.js +11 -0
  70. package/dist/Display/Skeleton/Skeleton.js.map +1 -0
  71. package/dist/Display/Skeleton/Skeleton.module.css.js +4 -0
  72. package/dist/Display/Skeleton/Skeleton.module.css.js.map +1 -0
  73. package/dist/Display/Toast/Toaster.d.ts +1 -0
  74. package/dist/Display/Toast/Toaster.js +45 -0
  75. package/dist/Display/Toast/Toaster.js.map +1 -0
  76. package/dist/Display/Toast/toast.d.ts +12 -0
  77. package/dist/Display/Toast/toast.js +32 -0
  78. package/dist/Display/Toast/toast.js.map +1 -0
  79. package/dist/Display/Tooltip/Tooltip.d.ts +8 -0
  80. package/dist/Display/Tooltip/Tooltip.js +45 -0
  81. package/dist/Display/Tooltip/Tooltip.js.map +1 -0
  82. package/dist/Display/Tooltip/Tooltip.module.css.js +4 -0
  83. package/dist/Display/Tooltip/Tooltip.module.css.js.map +1 -0
  84. package/dist/Display/Tooltip/getArrowDirection.d.ts +1 -0
  85. package/dist/Display/Tooltip/getArrowDirection.js +48 -0
  86. package/dist/Display/Tooltip/getArrowDirection.js.map +1 -0
  87. package/dist/Display/Tooltip/useTooltip.d.ts +8 -0
  88. package/dist/Display/Tooltip/useTooltip.js +48 -0
  89. package/dist/Display/Tooltip/useTooltip.js.map +1 -0
  90. package/dist/Forms/ConfirmationForm/ConfirmationForm.d.ts +15 -0
  91. package/dist/Forms/ConfirmationForm/ConfirmationForm.js +12 -0
  92. package/dist/Forms/ConfirmationForm/ConfirmationForm.js.map +1 -0
  93. package/dist/Forms/ConfirmationForm/ConfirmationForm.module.css.js +4 -0
  94. package/dist/Forms/ConfirmationForm/ConfirmationForm.module.css.js.map +1 -0
  95. package/dist/Inputs/Button/Button.d.ts +83 -0
  96. package/dist/Inputs/Button/Button.js +56 -0
  97. package/dist/Inputs/Button/Button.js.map +1 -0
  98. package/dist/Inputs/Button/Button.module.css.js +4 -0
  99. package/dist/Inputs/Button/Button.module.css.js.map +1 -0
  100. package/dist/Inputs/Checkbox/Checkbox.d.ts +23 -0
  101. package/dist/Inputs/Checkbox/Checkbox.js +55 -0
  102. package/dist/Inputs/Checkbox/Checkbox.js.map +1 -0
  103. package/dist/Inputs/Checkbox/Checkbox.module.css.js +4 -0
  104. package/dist/Inputs/Checkbox/Checkbox.module.css.js.map +1 -0
  105. package/dist/Inputs/Checkbox/CheckboxGroup/CheckboxGroup.d.ts +15 -0
  106. package/dist/Inputs/Checkbox/CheckboxGroup/CheckboxGroup.js +35 -0
  107. package/dist/Inputs/Checkbox/CheckboxGroup/CheckboxGroup.js.map +1 -0
  108. package/dist/Inputs/Checkbox/CheckboxGroup/CheckboxGroup.module.css.js +4 -0
  109. package/dist/Inputs/Checkbox/CheckboxGroup/CheckboxGroup.module.css.js.map +1 -0
  110. package/dist/Inputs/Checkbox/CheckboxSelectAll.d.ts +5 -0
  111. package/dist/Inputs/Checkbox/CheckboxSelectAll.js +19 -0
  112. package/dist/Inputs/Checkbox/CheckboxSelectAll.js.map +1 -0
  113. package/dist/Inputs/PasswordInput/PasswordInput.d.ts +31 -0
  114. package/dist/Inputs/PasswordInput/PasswordInput.js +45 -0
  115. package/dist/Inputs/PasswordInput/PasswordInput.js.map +1 -0
  116. package/dist/Inputs/PasswordInput/PasswordInput.module.css.js +4 -0
  117. package/dist/Inputs/PasswordInput/PasswordInput.module.css.js.map +1 -0
  118. package/dist/Inputs/Select/Select.d.ts +22 -0
  119. package/dist/Inputs/Select/Select.js +26 -0
  120. package/dist/Inputs/Select/Select.js.map +1 -0
  121. package/dist/Inputs/Select/Select.module.css.js +4 -0
  122. package/dist/Inputs/Select/Select.module.css.js.map +1 -0
  123. package/dist/Inputs/Switch/Switch.d.ts +43 -0
  124. package/dist/Inputs/Switch/Switch.js +81 -0
  125. package/dist/Inputs/Switch/Switch.js.map +1 -0
  126. package/dist/Inputs/Switch/Switch.module.css.js +4 -0
  127. package/dist/Inputs/Switch/Switch.module.css.js.map +1 -0
  128. package/dist/Inputs/TextAreaInput/TextAreaInput.d.ts +17 -0
  129. package/dist/Inputs/TextAreaInput/TextAreaInput.js +30 -0
  130. package/dist/Inputs/TextAreaInput/TextAreaInput.js.map +1 -0
  131. package/dist/Inputs/TextAreaInput/TextAreaInput.module.css.js +4 -0
  132. package/dist/Inputs/TextAreaInput/TextAreaInput.module.css.js.map +1 -0
  133. package/dist/Inputs/TextInput/TextInput.d.ts +27 -0
  134. package/dist/Inputs/TextInput/TextInput.js +23 -0
  135. package/dist/Inputs/TextInput/TextInput.js.map +1 -0
  136. package/dist/Inputs/TextInput/TextInput.module.css.js +4 -0
  137. package/dist/Inputs/TextInput/TextInput.module.css.js.map +1 -0
  138. package/dist/Inputs/ThemeToggle/ThemeToggleListItem.d.ts +16 -0
  139. package/dist/Inputs/ThemeToggle/ThemeToggleListItem.js +31 -0
  140. package/dist/Inputs/ThemeToggle/ThemeToggleListItem.js.map +1 -0
  141. package/dist/Inputs/ThemeToggle/_index.d.ts +1 -0
  142. package/dist/Layout/Dialog/Dialog.d.ts +13 -0
  143. package/dist/Layout/Dialog/Dialog.js +74 -0
  144. package/dist/Layout/Dialog/Dialog.js.map +1 -0
  145. package/dist/Layout/Dialog/Dialog.module.css.js +4 -0
  146. package/dist/Layout/Dialog/Dialog.module.css.js.map +1 -0
  147. package/dist/Layout/PageLayout/PageLayout.d.ts +28 -0
  148. package/dist/Layout/PageLayout/PageLayout.js +25 -0
  149. package/dist/Layout/PageLayout/PageLayout.js.map +1 -0
  150. package/dist/Layout/PageLayout/PageLayout.module.css.js +4 -0
  151. package/dist/Layout/PageLayout/PageLayout.module.css.js.map +1 -0
  152. package/dist/Layout/PageLayoutPagination/PageLayoutPagination.d.ts +7 -0
  153. package/dist/Layout/PageLayoutPagination/PageLayoutPagination.js +13 -0
  154. package/dist/Layout/PageLayoutPagination/PageLayoutPagination.js.map +1 -0
  155. package/dist/Layout/PageLayoutPagination/PageLayoutPagination.module.css.js +4 -0
  156. package/dist/Layout/PageLayoutPagination/PageLayoutPagination.module.css.js.map +1 -0
  157. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.d.ts +14 -0
  158. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.js +22 -0
  159. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.js.map +1 -0
  160. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.module.css.js +4 -0
  161. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.module.css.js.map +1 -0
  162. package/dist/Layout/Popover/Popover.d.ts +14 -0
  163. package/dist/Layout/Popover/Popover.js +103 -0
  164. package/dist/Layout/Popover/Popover.js.map +1 -0
  165. package/dist/Layout/Popover/Popover.module.css.js +4 -0
  166. package/dist/Layout/Popover/Popover.module.css.js.map +1 -0
  167. package/dist/Layout/SectionWrapper/SectionWrapper.d.ts +14 -0
  168. package/dist/Layout/SectionWrapper/SectionWrapper.js +11 -0
  169. package/dist/Layout/SectionWrapper/SectionWrapper.js.map +1 -0
  170. package/dist/Layout/SectionWrapper/SectionWrapper.module.css.js +4 -0
  171. package/dist/Layout/SectionWrapper/SectionWrapper.module.css.js.map +1 -0
  172. package/dist/Layout/Sidebar/Sidebar.d.ts +15 -0
  173. package/dist/Layout/Sidebar/Sidebar.js +25 -0
  174. package/dist/Layout/Sidebar/Sidebar.js.map +1 -0
  175. package/dist/Layout/Sidebar/Sidebar.module.css.js +4 -0
  176. package/dist/Layout/Sidebar/Sidebar.module.css.js.map +1 -0
  177. package/dist/Layout/Sidebar/SidebarBody/SidebarBody.d.ts +2 -0
  178. package/dist/Layout/Sidebar/SidebarBody/SidebarBody.js +14 -0
  179. package/dist/Layout/Sidebar/SidebarBody/SidebarBody.js.map +1 -0
  180. package/dist/Layout/Sidebar/SidebarBody/SidebarBody.module.css.js +4 -0
  181. package/dist/Layout/Sidebar/SidebarBody/SidebarBody.module.css.js.map +1 -0
  182. package/dist/Layout/Sidebar/SidebarDrawer/SidebarDrawer.d.ts +2 -0
  183. package/dist/Layout/Sidebar/SidebarDrawer/SidebarDrawer.js +14 -0
  184. package/dist/Layout/Sidebar/SidebarDrawer/SidebarDrawer.js.map +1 -0
  185. package/dist/Layout/Sidebar/SidebarDrawer/SidebarDrawer.module.css.js +4 -0
  186. package/dist/Layout/Sidebar/SidebarDrawer/SidebarDrawer.module.css.js.map +1 -0
  187. package/dist/Layout/Sidebar/SidebarFooter/SidebarFooter.d.ts +2 -0
  188. package/dist/Layout/Sidebar/SidebarFooter/SidebarFooter.js +14 -0
  189. package/dist/Layout/Sidebar/SidebarFooter/SidebarFooter.js.map +1 -0
  190. package/dist/Layout/Sidebar/SidebarFooter/SidebarFooter.module.css.js +4 -0
  191. package/dist/Layout/Sidebar/SidebarFooter/SidebarFooter.module.css.js.map +1 -0
  192. package/dist/Layout/Sidebar/SidebarHeader/SidebarHeader.d.ts +2 -0
  193. package/dist/Layout/Sidebar/SidebarHeader/SidebarHeader.js +12 -0
  194. package/dist/Layout/Sidebar/SidebarHeader/SidebarHeader.js.map +1 -0
  195. package/dist/Layout/Sidebar/SidebarViewport/SidebarViewport.d.ts +2 -0
  196. package/dist/Layout/Sidebar/SidebarViewport/SidebarViewport.js +11 -0
  197. package/dist/Layout/Sidebar/SidebarViewport/SidebarViewport.js.map +1 -0
  198. package/dist/Layout/Sidebar/SidebarViewport/SidebarViewport.module.css.js +4 -0
  199. package/dist/Layout/Sidebar/SidebarViewport/SidebarViewport.module.css.js.map +1 -0
  200. package/dist/Layout/Table/Table.d.ts +54 -0
  201. package/dist/Layout/Table/Table.js +131 -0
  202. package/dist/Layout/Table/Table.js.map +1 -0
  203. package/dist/Layout/Table/Table.module.css.js +4 -0
  204. package/dist/Layout/Table/Table.module.css.js.map +1 -0
  205. package/dist/Layout/Table/TableFooter.d.ts +1 -0
  206. package/dist/Layout/Table/TableFooter.js +9 -0
  207. package/dist/Layout/Table/TableFooter.js.map +1 -0
  208. package/dist/Layout/Table/TableHeader.d.ts +1 -0
  209. package/dist/Layout/Table/TableHeader.js +9 -0
  210. package/dist/Layout/Table/TableHeader.js.map +1 -0
  211. package/dist/Layout/Table/tableUtils.d.ts +52 -0
  212. package/dist/Layout/Table/tableUtils.js +124 -0
  213. package/dist/Layout/Table/tableUtils.js.map +1 -0
  214. package/dist/Layout/Table/types.d.ts +43 -0
  215. package/dist/Misc/Cursor/Cursor.d.ts +1 -0
  216. package/dist/Misc/Cursor/Cursor.js +59 -0
  217. package/dist/Misc/Cursor/Cursor.js.map +1 -0
  218. package/dist/Misc/Cursor/Cursor.module.css.js +4 -0
  219. package/dist/Misc/Cursor/Cursor.module.css.js.map +1 -0
  220. package/dist/Misc/Logos.d.ts +14 -0
  221. package/dist/Misc/Logos.js +29 -0
  222. package/dist/Misc/Logos.js.map +1 -0
  223. package/dist/Misc/PoweredByBanner/PoweredByBanner.d.ts +3 -0
  224. package/dist/Misc/PoweredByBanner/PoweredByBanner.js +11 -0
  225. package/dist/Misc/PoweredByBanner/PoweredByBanner.js.map +1 -0
  226. package/dist/Misc/PoweredByBanner/PoweredByBanner.module.css.js +4 -0
  227. package/dist/Misc/PoweredByBanner/PoweredByBanner.module.css.js.map +1 -0
  228. package/dist/Misc/Ripple/Ripple.d.ts +21 -0
  229. package/dist/Misc/Ripple/Ripple.js +62 -0
  230. package/dist/Misc/Ripple/Ripple.js.map +1 -0
  231. package/dist/Misc/Ripple/Ripple.module.css.js +4 -0
  232. package/dist/Misc/Ripple/Ripple.module.css.js.map +1 -0
  233. package/dist/Misc/Spinner/Spinner.d.ts +2 -0
  234. package/dist/Misc/Spinner/Spinner.js +12 -0
  235. package/dist/Misc/Spinner/Spinner.js.map +1 -0
  236. package/dist/Misc/Spinner/Spinner.module.css.js +4 -0
  237. package/dist/Misc/Spinner/Spinner.module.css.js.map +1 -0
  238. package/dist/Misc/TransitionAnimation/TransitionAnimation.d.ts +71 -0
  239. package/dist/Misc/TransitionAnimation/TransitionAnimation.js +87 -0
  240. package/dist/Misc/TransitionAnimation/TransitionAnimation.js.map +1 -0
  241. package/dist/Misc/TransitionAnimation/TransitionAnimation.module.css.js +4 -0
  242. package/dist/Misc/TransitionAnimation/TransitionAnimation.module.css.js.map +1 -0
  243. package/dist/Navigation/Breadcrumbs/Breadcrumbs.d.ts +39 -0
  244. package/dist/Navigation/Breadcrumbs/Breadcrumbs.js +36 -0
  245. package/dist/Navigation/Breadcrumbs/Breadcrumbs.js.map +1 -0
  246. package/dist/Navigation/Breadcrumbs/Breadcrumbs.module.css.js +4 -0
  247. package/dist/Navigation/Breadcrumbs/Breadcrumbs.module.css.js.map +1 -0
  248. package/dist/Navigation/Breadcrumbs/BreadcrumbsItem.d.ts +10 -0
  249. package/dist/Navigation/Breadcrumbs/BreadcrumbsItem.js +15 -0
  250. package/dist/Navigation/Breadcrumbs/BreadcrumbsItem.js.map +1 -0
  251. package/dist/Navigation/Breadcrumbs/useBreadcrumbs.d.ts +7 -0
  252. package/dist/Navigation/Breadcrumbs/useBreadcrumbs.js +44 -0
  253. package/dist/Navigation/Breadcrumbs/useBreadcrumbs.js.map +1 -0
  254. package/dist/Navigation/Pagination/Pagination.d.ts +52 -0
  255. package/dist/Navigation/Pagination/Pagination.js +61 -0
  256. package/dist/Navigation/Pagination/Pagination.js.map +1 -0
  257. package/dist/Navigation/Pagination/Pagination.module.css.js +4 -0
  258. package/dist/Navigation/Pagination/Pagination.module.css.js.map +1 -0
  259. package/dist/Navigation/Pagination/PaginationItem.d.ts +8 -0
  260. package/dist/Navigation/Pagination/PaginationItem.js +14 -0
  261. package/dist/Navigation/Pagination/PaginationItem.js.map +1 -0
  262. package/dist/Navigation/Pagination/usePagination.d.ts +6 -0
  263. package/dist/Navigation/Pagination/usePagination.js +38 -0
  264. package/dist/Navigation/Pagination/usePagination.js.map +1 -0
  265. package/dist/Navigation/Tabs/Tab/Tab.d.ts +46 -0
  266. package/dist/Navigation/Tabs/Tab/Tab.js +70 -0
  267. package/dist/Navigation/Tabs/Tab/Tab.js.map +1 -0
  268. package/dist/Navigation/Tabs/Tab/Tab.module.css.js +4 -0
  269. package/dist/Navigation/Tabs/Tab/Tab.module.css.js.map +1 -0
  270. package/dist/Navigation/Tabs/Tabs.d.ts +12 -0
  271. package/dist/Navigation/Tabs/Tabs.js +22 -0
  272. package/dist/Navigation/Tabs/Tabs.js.map +1 -0
  273. package/dist/Navigation/Tabs/TabsBar/TabsBar.d.ts +12 -0
  274. package/dist/Navigation/Tabs/TabsBar/TabsBar.js +44 -0
  275. package/dist/Navigation/Tabs/TabsBar/TabsBar.js.map +1 -0
  276. package/dist/Navigation/Tabs/TabsBar/TabsBar.module.css.js +4 -0
  277. package/dist/Navigation/Tabs/TabsBar/TabsBar.module.css.js.map +1 -0
  278. package/dist/Typography/ClampedText/ClampedText.d.ts +38 -0
  279. package/dist/Typography/ClampedText/ClampedText.js +44 -0
  280. package/dist/Typography/ClampedText/ClampedText.js.map +1 -0
  281. package/dist/Typography/ClampedText/ClampedText.module.css.js +4 -0
  282. package/dist/Typography/ClampedText/ClampedText.module.css.js.map +1 -0
  283. package/dist/Typography/CopyableText/CopyableText.d.ts +16 -0
  284. package/dist/Typography/CopyableText/CopyableText.js +39 -0
  285. package/dist/Typography/CopyableText/CopyableText.js.map +1 -0
  286. package/dist/Typography/CopyableText/CopyableText.module.css.js +4 -0
  287. package/dist/Typography/CopyableText/CopyableText.module.css.js.map +1 -0
  288. package/dist/Typography/PageTitle/PageTitle.d.ts +9 -0
  289. package/dist/Typography/PageTitle/PageTitle.js +10 -0
  290. package/dist/Typography/PageTitle/PageTitle.js.map +1 -0
  291. package/dist/Typography/PageTitle/PageTitle.module.css.js +4 -0
  292. package/dist/Typography/PageTitle/PageTitle.module.css.js.map +1 -0
  293. package/dist/index.css +2392 -0
  294. package/dist/index.js +64 -0
  295. package/dist/index.js.map +1 -0
  296. package/package.json +4 -4
  297. package/CHANGELOG.md +0 -11
  298. package/eslint.config.js +0 -21
  299. package/src/Cards/Card/Card.module.css +0 -27
  300. package/src/Cards/Card/Card.tsx +0 -105
  301. package/src/Cards/CollectionItemCard/CollectionItemCard.module.css +0 -84
  302. package/src/Cards/CollectionItemCard/CollectionItemCard.tsx +0 -170
  303. package/src/Cards/CollectionItemCard/CollectionItemCardActions.tsx +0 -85
  304. package/src/Cards/GlassCard/GlassCard.module.css +0 -71
  305. package/src/Cards/GlassCard/GlassCard.tsx +0 -80
  306. package/src/Display/Accordion/Accordion.module.css +0 -69
  307. package/src/Display/Accordion/Accordion.tsx +0 -61
  308. package/src/Display/Accordion/AccordionItem.tsx +0 -135
  309. package/src/Display/Chip/Chip.module.css +0 -64
  310. package/src/Display/Chip/Chip.tsx +0 -105
  311. package/src/Display/IdentityDisplay/IdentityDisplay.module.css +0 -95
  312. package/src/Display/IdentityDisplay/IdentityDisplay.tsx +0 -119
  313. package/src/Display/InputErrors/InputErrors.module.css +0 -6
  314. package/src/Display/InputErrors/InputErrors.tsx +0 -52
  315. package/src/Display/Kbd/Kbd.module.css +0 -29
  316. package/src/Display/Kbd/Kbd.tsx +0 -39
  317. package/src/Display/Kbd/buttonList.tsx +0 -246
  318. package/src/Display/LabeledValue/LabeledValue.module.css +0 -32
  319. package/src/Display/LabeledValue/LabeledValue.tsx +0 -20
  320. package/src/Display/List/List.module.css +0 -143
  321. package/src/Display/List/List.tsx +0 -298
  322. package/src/Display/PasswordStrength/PasswordStrength.module.css +0 -45
  323. package/src/Display/PasswordStrength/PasswordStrength.tsx +0 -41
  324. package/src/Display/PasswordStrength/usePasswordStrength.tsx +0 -77
  325. package/src/Display/Skeleton/Skeleton.module.css +0 -54
  326. package/src/Display/Skeleton/Skeleton.tsx +0 -28
  327. package/src/Display/Toast/Toaster.tsx +0 -58
  328. package/src/Display/Toast/toast.ts +0 -44
  329. package/src/Display/Tooltip/Tooltip.module.css +0 -128
  330. package/src/Display/Tooltip/Tooltip.tsx +0 -93
  331. package/src/Display/Tooltip/getArrowDirection.ts +0 -55
  332. package/src/Display/Tooltip/useTooltip.tsx +0 -63
  333. package/src/Forms/ConfirmationForm/ConfirmationForm.module.css +0 -23
  334. package/src/Forms/ConfirmationForm/ConfirmationForm.tsx +0 -60
  335. package/src/Inputs/Button/Button.module.css +0 -131
  336. package/src/Inputs/Button/Button.tsx +0 -178
  337. package/src/Inputs/Checkbox/Checkbox.module.css +0 -77
  338. package/src/Inputs/Checkbox/Checkbox.tsx +0 -191
  339. package/src/Inputs/Checkbox/CheckboxGroup/CheckboxGroup.module.css +0 -10
  340. package/src/Inputs/Checkbox/CheckboxGroup/CheckboxGroup.tsx +0 -83
  341. package/src/Inputs/Checkbox/CheckboxSelectAll.tsx +0 -34
  342. package/src/Inputs/PasswordInput/PasswordInput.module.css +0 -111
  343. package/src/Inputs/PasswordInput/PasswordInput.tsx +0 -229
  344. package/src/Inputs/Select/Select.module.css +0 -138
  345. package/src/Inputs/Select/Select.tsx +0 -136
  346. package/src/Inputs/Switch/Switch.module.css +0 -119
  347. package/src/Inputs/Switch/Switch.tsx +0 -195
  348. package/src/Inputs/TextAreaInput/TextAreaInput.module.css +0 -65
  349. package/src/Inputs/TextAreaInput/TextAreaInput.tsx +0 -97
  350. package/src/Inputs/TextInput/TextInput.module.css +0 -112
  351. package/src/Inputs/TextInput/TextInput.tsx +0 -142
  352. package/src/Inputs/ThemeToggle/ThemeToggleListItem.tsx +0 -80
  353. package/src/Inputs/ThemeToggle/_index.ts +0 -1
  354. package/src/Layout/Dialog/Dialog.module.css +0 -15
  355. package/src/Layout/Dialog/Dialog.tsx +0 -115
  356. package/src/Layout/PageLayout/PageLayout.module.css +0 -20
  357. package/src/Layout/PageLayout/PageLayout.tsx +0 -79
  358. package/src/Layout/PageLayoutPagination/PageLayoutPagination.module.css +0 -5
  359. package/src/Layout/PageLayoutPagination/PageLayoutPagination.tsx +0 -40
  360. package/src/Layout/PageLayoutTabs/PageLayoutTabs.module.css +0 -3
  361. package/src/Layout/PageLayoutTabs/PageLayoutTabs.tsx +0 -62
  362. package/src/Layout/Popover/Popover.module.css +0 -9
  363. package/src/Layout/Popover/Popover.tsx +0 -145
  364. package/src/Layout/SectionWrapper/SectionWrapper.module.css +0 -31
  365. package/src/Layout/SectionWrapper/SectionWrapper.tsx +0 -62
  366. package/src/Layout/Sidebar/Sidebar.module.css +0 -17
  367. package/src/Layout/Sidebar/Sidebar.tsx +0 -39
  368. package/src/Layout/Sidebar/SidebarBody/SidebarBody.module.css +0 -31
  369. package/src/Layout/Sidebar/SidebarBody/SidebarBody.tsx +0 -18
  370. package/src/Layout/Sidebar/SidebarDrawer/SidebarDrawer.module.css +0 -20
  371. package/src/Layout/Sidebar/SidebarDrawer/SidebarDrawer.tsx +0 -19
  372. package/src/Layout/Sidebar/SidebarFooter/SidebarFooter.module.css +0 -35
  373. package/src/Layout/Sidebar/SidebarFooter/SidebarFooter.tsx +0 -19
  374. package/src/Layout/Sidebar/SidebarHeader/SidebarHeader.tsx +0 -14
  375. package/src/Layout/Sidebar/SidebarViewport/SidebarViewport.module.css +0 -12
  376. package/src/Layout/Sidebar/SidebarViewport/SidebarViewport.tsx +0 -11
  377. package/src/Layout/Table/Table.module.css +0 -46
  378. package/src/Layout/Table/Table.tsx +0 -222
  379. package/src/Layout/Table/TableFooter.tsx +0 -4
  380. package/src/Layout/Table/TableHeader.tsx +0 -4
  381. package/src/Layout/Table/tableUtils.ts +0 -142
  382. package/src/Layout/Table/types.ts +0 -48
  383. package/src/Misc/Cursor/Cursor.module.css +0 -31
  384. package/src/Misc/Cursor/Cursor.tsx +0 -77
  385. package/src/Misc/Logos.tsx +0 -230
  386. package/src/Misc/PoweredByBanner/PoweredByBanner.module.css +0 -20
  387. package/src/Misc/PoweredByBanner/PoweredByBanner.tsx +0 -17
  388. package/src/Misc/Ripple/Ripple.module.css +0 -25
  389. package/src/Misc/Ripple/Ripple.tsx +0 -126
  390. package/src/Misc/Spinner/Spinner.module.css +0 -38
  391. package/src/Misc/Spinner/Spinner.tsx +0 -36
  392. package/src/Misc/TransitionAnimation/TransitionAnimation.module.css +0 -131
  393. package/src/Misc/TransitionAnimation/TransitionAnimation.tsx +0 -166
  394. package/src/Navigation/Breadcrumbs/Breadcrumbs.module.css +0 -22
  395. package/src/Navigation/Breadcrumbs/Breadcrumbs.tsx +0 -127
  396. package/src/Navigation/Breadcrumbs/BreadcrumbsItem.tsx +0 -31
  397. package/src/Navigation/Breadcrumbs/useBreadcrumbs.tsx +0 -74
  398. package/src/Navigation/Pagination/Pagination.module.css +0 -41
  399. package/src/Navigation/Pagination/Pagination.tsx +0 -187
  400. package/src/Navigation/Pagination/PaginationItem.tsx +0 -28
  401. package/src/Navigation/Pagination/usePagination.tsx +0 -65
  402. package/src/Navigation/Tabs/Tab/Tab.module.css +0 -43
  403. package/src/Navigation/Tabs/Tab/Tab.tsx +0 -155
  404. package/src/Navigation/Tabs/Tabs.tsx +0 -37
  405. package/src/Navigation/Tabs/TabsBar/TabsBar.module.css +0 -47
  406. package/src/Navigation/Tabs/TabsBar/TabsBar.tsx +0 -92
  407. package/src/Typography/ClampedText/ClampedText.module.css +0 -5
  408. package/src/Typography/ClampedText/ClampedText.tsx +0 -77
  409. package/src/Typography/CopyableText/CopyableText.module.css +0 -21
  410. package/src/Typography/CopyableText/CopyableText.tsx +0 -120
  411. package/src/Typography/PageTitle/PageTitle.module.css +0 -47
  412. package/src/Typography/PageTitle/PageTitle.tsx +0 -35
  413. package/src/declaration.d.ts +0 -4
  414. package/tsconfig.json +0 -32
  415. /package/{src/Cards/CollectionItemCard/_index.ts → dist/Cards/CollectionItemCard/_index.d.ts} +0 -0
  416. /package/{src/Cards/_index.ts → dist/Cards/_index.d.ts} +0 -0
  417. /package/{src/Display/Accordion/_index.ts → dist/Display/Accordion/_index.d.ts} +0 -0
  418. /package/{src/Display/Kbd/_index.ts → dist/Display/Kbd/_index.d.ts} +0 -0
  419. /package/{src/Display/Toast/_index.ts → dist/Display/Toast/_index.d.ts} +0 -0
  420. /package/{src/Display/_index.ts → dist/Display/_index.d.ts} +0 -0
  421. /package/{src/Forms/_index.ts → dist/Forms/_index.d.ts} +0 -0
  422. /package/{src/Inputs/Checkbox/_index.ts → dist/Inputs/Checkbox/_index.d.ts} +0 -0
  423. /package/{src/Inputs/_index.ts → dist/Inputs/_index.d.ts} +0 -0
  424. /package/{src/Layout/Sidebar/_index.ts → dist/Layout/Sidebar/_index.d.ts} +0 -0
  425. /package/{src/Layout/Table/_index.ts → dist/Layout/Table/_index.d.ts} +0 -0
  426. /package/{src/Layout/_index.ts → dist/Layout/_index.d.ts} +0 -0
  427. /package/{src/Misc/_index.ts → dist/Misc/_index.d.ts} +0 -0
  428. /package/{src/Navigation/Breadcrumbs/_index.ts → dist/Navigation/Breadcrumbs/_index.d.ts} +0 -0
  429. /package/{src/Navigation/Pagination/_index.ts → dist/Navigation/Pagination/_index.d.ts} +0 -0
  430. /package/{src/Navigation/Tabs/_index.ts → dist/Navigation/Tabs/_index.d.ts} +0 -0
  431. /package/{src/Navigation/_index.ts → dist/Navigation/_index.d.ts} +0 -0
  432. /package/{src/Typography/_index.ts → dist/Typography/_index.d.ts} +0 -0
  433. /package/{src/index.ts → dist/index.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePasswordStrength.js","sources":["../../../src/Display/PasswordStrength/usePasswordStrength.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport const PASSWORD_REGEX = {\n ASCII_NO_SPACE: { ex: /^[!-~]+$/, score: 0.5 },\n LOWERCASE: { ex: /[a-z]/, score: 0.5 },\n UPPERCASE: { ex: /[A-Z]/, score: 1 },\n DIGIT: { ex: /\\d/, score: 1 },\n SPECIAL: { ex: /[!@#$%^&*()_\\-+=\\[\\]{};:'\",.<>/?\\\\|`~]/, score: 1 },\n NO_TRIPLE_REPEAT: { ex: /^(?!.*(.)\\1\\1).*$/, score: 1 },\n} as const;\n\nexport type PasswordTest = keyof typeof PASSWORD_REGEX;\n\nexport const ALL_PASSWORD_TESTS: PasswordTest[] = [\n \"ASCII_NO_SPACE\",\n \"DIGIT\",\n \"LOWERCASE\",\n \"NO_TRIPLE_REPEAT\",\n \"SPECIAL\",\n \"UPPERCASE\",\n];\nexport interface PasswordStrengthProps {\n password?: string;\n requiredTests?: PasswordTest[];\n disableStrengthMeter?: boolean;\n /**\n * Minimum length of the password when it should start checking,\n * before reaching the minimum length the strength will always be 1\n */\n minLength?: number;\n}\n\nexport function usePasswordStrength({\n password,\n requiredTests = [],\n disableStrengthMeter = true,\n minLength = 8,\n}: PasswordStrengthProps) {\n const [strength, setStrength] = useState<number | null>(null);\n const [testsPassed, setPassed] = useState<PasswordTest[]>([]);\n\n useEffect(() => {\n if (!password) {\n setStrength(null);\n setPassed([]);\n return;\n }\n\n const results: PasswordTest[] = [];\n\n for (const [key, regex] of Object.entries(PASSWORD_REGEX)) {\n if (regex.ex.test(password)) results.push(key as PasswordTest);\n }\n\n setPassed(results);\n\n // REQUIRED TESTS GATE\n const allRequiredPassed = results.every((test) =>\n requiredTests.includes(test),\n );\n\n if (!allRequiredPassed || password.length < minLength) {\n setStrength(1); // Weak\n return;\n }\n\n // Otherwise score by total passed tests\n const totalScore = Object.entries(PASSWORD_REGEX).reduce(\n (acc, [key, value]) =>\n results.includes(key as PasswordTest) ? acc + value.score : acc,\n 0,\n );\n setStrength(totalScore);\n }, [password, requiredTests]);\n\n if (!disableStrengthMeter) return { strength, testsPassed };\n}\n"],"names":[],"mappings":";;AAEO,MAAM,cAAc,GAAG;IAC5B,cAAc,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;IAC9C,SAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;IACtC,SAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;IACpC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;IAC7B,OAAO,EAAE,EAAE,EAAE,EAAE,wCAAwC,EAAE,KAAK,EAAE,CAAC,EAAE;IACnE,gBAAgB,EAAE,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE;;AAKlD,MAAM,kBAAkB,GAAmB;IAChD,gBAAgB;IAChB,OAAO;IACP,WAAW;IACX,kBAAkB;IAClB,SAAS;IACT,WAAW;;SAaG,mBAAmB,CAAC,EAClC,QAAQ,EACR,aAAa,GAAG,EAAE,EAClB,oBAAoB,GAAG,IAAI,EAC3B,SAAS,GAAG,CAAC,GACS,EAAA;IACtB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;IAC7D,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAiB,EAAE,CAAC;IAE7D,SAAS,CAAC,MAAK;QACb,IAAI,CAAC,QAAQ,EAAE;YACb,WAAW,CAAC,IAAI,CAAC;YACjB,SAAS,CAAC,EAAE,CAAC;YACb;QACF;QAEA,MAAM,OAAO,GAAmB,EAAE;AAElC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AACzD,YAAA,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,GAAmB,CAAC;QAChE;QAEA,SAAS,CAAC,OAAO,CAAC;;AAGlB,QAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,KAC3C,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC7B;QAED,IAAI,CAAC,iBAAiB,IAAI,QAAQ,CAAC,MAAM,GAAG,SAAS,EAAE;AACrD,YAAA,WAAW,CAAC,CAAC,CAAC,CAAC;YACf;QACF;;AAGA,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,CACtD,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAChB,OAAO,CAAC,QAAQ,CAAC,GAAmB,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,EACjE,CAAC,CACF;QACD,WAAW,CAAC,UAAU,CAAC;AACzB,IAAA,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAE7B,IAAA,IAAI,CAAC,oBAAoB;AAAE,QAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;AAC7D;;;;"}
@@ -0,0 +1,8 @@
1
+ import type { ComponentProps, CSSProperties } from "react";
2
+ export interface SkeletonProps extends ComponentProps<"span"> {
3
+ type?: "text" | "card";
4
+ size?: "small" | "medium" | "large";
5
+ width?: CSSProperties["width"];
6
+ height?: CSSProperties["height"];
7
+ }
8
+ export declare function Skeleton(props: SkeletonProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import styles from './Skeleton.module.css.js';
3
+ import { cn } from '@studiocubics/utils';
4
+
5
+ function Skeleton(props) {
6
+ const { className, style, type = "text", size = "medium", width = "100%", height = "1.5em", ...rest } = props;
7
+ return (jsx("span", { className: cn(className, styles.root, styles[size], styles[type]), style: { width, height, ...style }, ...rest }));
8
+ }
9
+
10
+ export { Skeleton };
11
+ //# sourceMappingURL=Skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.js","sources":["../../../src/Display/Skeleton/Skeleton.tsx"],"sourcesContent":["import type { ComponentProps, CSSProperties } from \"react\";\nimport styles from \"./Skeleton.module.css\";\nimport { cn } from \"@studiocubics/utils\";\nexport interface SkeletonProps extends ComponentProps<\"span\"> {\n type?: \"text\" | \"card\";\n size?: \"small\" | \"medium\" | \"large\";\n width?: CSSProperties[\"width\"];\n height?: CSSProperties[\"height\"];\n}\n\nexport function Skeleton(props: SkeletonProps) {\n const {\n className,\n style,\n type = \"text\",\n size = \"medium\",\n width = \"100%\",\n height = \"1.5em\",\n ...rest\n } = props;\n return (\n <span\n className={cn(className, styles.root, styles[size], styles[type])}\n style={{ width, height, ...style }}\n {...rest}\n ></span>\n );\n}\n"],"names":["_jsx"],"mappings":";;;;AAUM,SAAU,QAAQ,CAAC,KAAoB,EAAA;IAC3C,MAAM,EACJ,SAAS,EACT,KAAK,EACL,IAAI,GAAG,MAAM,EACb,IAAI,GAAG,QAAQ,EACf,KAAK,GAAG,MAAM,EACd,MAAM,GAAG,OAAO,EAChB,GAAG,IAAI,EACR,GAAG,KAAK;AACT,IAAA,QACEA,GAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EACjE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,KAC9B,IAAI,EAAA,CACF;AAEZ;;;;"}
@@ -0,0 +1,4 @@
1
+ var styles = {"root":"Skeleton-module_root__Ft3Ey","throb":"Skeleton-module_throb__SxiMC","large":"Skeleton-module_large__LnDji","medium":"Skeleton-module_medium__LjhY7","small":"Skeleton-module_small__j9Re2","wave":"Skeleton-module_wave__mC2od"};
2
+
3
+ export { styles as default };
4
+ //# sourceMappingURL=Skeleton.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1 @@
1
+ export declare function Toaster(): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,45 @@
1
+ 'use client';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { useState, useEffect } from 'react';
4
+ import { subscribe, dismiss } from './toast.js';
5
+
6
+ function Toaster() {
7
+ const [toasts, setToasts] = useState([]);
8
+ useEffect(() => {
9
+ return () => {
10
+ subscribe(setToasts);
11
+ };
12
+ }, []);
13
+ if (toasts.length === 0)
14
+ return null;
15
+ return (jsx("div", { style: containerStyle, children: toasts.map((t) => (jsxs("div", { style: toastStyle, children: [jsx("span", { children: t.message }), jsx("button", { onClick: () => dismiss(t.id), style: closeStyle, children: "\u00D7" })] }, t.id))) }));
16
+ }
17
+ const containerStyle = {
18
+ position: "fixed",
19
+ top: 16,
20
+ right: 16,
21
+ display: "flex",
22
+ flexDirection: "column",
23
+ gap: 8,
24
+ zIndex: 1000,
25
+ };
26
+ const toastStyle = {
27
+ background: "#111",
28
+ color: "#fff",
29
+ padding: "12px 16px",
30
+ borderRadius: 6,
31
+ minWidth: 200,
32
+ display: "flex",
33
+ justifyContent: "space-between",
34
+ alignItems: "center",
35
+ };
36
+ const closeStyle = {
37
+ background: "transparent",
38
+ border: "none",
39
+ color: "#fff",
40
+ fontSize: 16,
41
+ cursor: "pointer",
42
+ };
43
+
44
+ export { Toaster };
45
+ //# sourceMappingURL=Toaster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toaster.js","sources":["../../../src/Display/Toast/Toaster.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { subscribe, dismiss, type Toast } from \"./toast\";\n\nexport function Toaster() {\n const [toasts, setToasts] = useState<Toast[]>([]);\n\n useEffect(() => {\n return () => {\n subscribe(setToasts);\n };\n }, []);\n\n if (toasts.length === 0) return null;\n\n return (\n <div style={containerStyle}>\n {toasts.map((t) => (\n <div key={t.id} style={toastStyle}>\n <span>{t.message}</span>\n <button onClick={() => dismiss(t.id)} style={closeStyle}>\n ×\n </button>\n </div>\n ))}\n </div>\n );\n}\n\nconst containerStyle: React.CSSProperties = {\n position: \"fixed\",\n top: 16,\n right: 16,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n zIndex: 1000,\n};\n\nconst toastStyle: React.CSSProperties = {\n background: \"#111\",\n color: \"#fff\",\n padding: \"12px 16px\",\n borderRadius: 6,\n minWidth: 200,\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n};\n\nconst closeStyle: React.CSSProperties = {\n background: \"transparent\",\n border: \"none\",\n color: \"#fff\",\n fontSize: 16,\n cursor: \"pointer\",\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export type Toast = {
2
+ id: string;
3
+ message: string;
4
+ duration?: number;
5
+ };
6
+ type Listener = (toasts: Toast[]) => void;
7
+ export declare function subscribe(listener: Listener): () => boolean;
8
+ export declare function toast(message: string, options?: {
9
+ duration?: number;
10
+ }): void;
11
+ export declare function dismiss(id: string): void;
12
+ export {};
@@ -0,0 +1,32 @@
1
+ let toasts = [];
2
+ const listeners = new Set();
3
+ function emit() {
4
+ listeners.forEach((l) => l(toasts));
5
+ }
6
+ function subscribe(listener) {
7
+ listeners.add(listener);
8
+ return () => listeners.delete(listener);
9
+ }
10
+ function toast(message, options) {
11
+ const id = crypto.randomUUID();
12
+ const t = {
13
+ id,
14
+ message,
15
+ duration: options?.duration ?? 3000,
16
+ };
17
+ toasts = [...toasts, t];
18
+ emit();
19
+ // Its a toast not a lecture!
20
+ if (t.duration <= 20000) {
21
+ setTimeout(() => {
22
+ dismiss(id);
23
+ }, t.duration);
24
+ }
25
+ }
26
+ function dismiss(id) {
27
+ toasts = toasts.filter((t) => t.id !== id);
28
+ emit();
29
+ }
30
+
31
+ export { dismiss, subscribe, toast };
32
+ //# sourceMappingURL=toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.js","sources":["../../../src/Display/Toast/toast.ts"],"sourcesContent":["export type Toast = {\n id: string;\n message: string;\n duration?: number;\n};\n\ntype Listener = (toasts: Toast[]) => void;\n\nlet toasts: Toast[] = [];\nconst listeners = new Set<Listener>();\n\nfunction emit() {\n listeners.forEach((l) => l(toasts));\n}\n\nexport function subscribe(listener: Listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n}\n\nexport function toast(message: string, options?: { duration?: number }) {\n const id = crypto.randomUUID();\n\n const t: Required<Toast> = {\n id,\n message,\n duration: options?.duration ?? 3000,\n };\n\n toasts = [...toasts, t];\n emit();\n\n // Its a toast not a lecture!\n if (t.duration <= 20000) {\n setTimeout(() => {\n dismiss(id);\n }, t.duration);\n }\n}\n\nexport function dismiss(id: string) {\n toasts = toasts.filter((t) => t.id !== id);\n emit();\n}\n"],"names":[],"mappings":"AAQA,IAAI,MAAM,GAAY,EAAE;AACxB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAY;AAErC,SAAS,IAAI,GAAA;AACX,IAAA,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AACrC;AAEM,SAAU,SAAS,CAAC,QAAkB,EAAA;AAC1C,IAAA,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;IACvB,OAAO,MAAM,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;AACzC;AAEM,SAAU,KAAK,CAAC,OAAe,EAAE,OAA+B,EAAA;AACpE,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE;AAE9B,IAAA,MAAM,CAAC,GAAoB;QACzB,EAAE;QACF,OAAO;AACP,QAAA,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI;KACpC;AAED,IAAA,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;AACvB,IAAA,IAAI,EAAE;;AAGN,IAAA,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,EAAE;QACvB,UAAU,CAAC,MAAK;YACd,OAAO,CAAC,EAAE,CAAC;AACb,QAAA,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;IAChB;AACF;AAEM,SAAU,OAAO,CAAC,EAAU,EAAA;AAChC,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AAC1C,IAAA,IAAI,EAAE;AACR;;;;"}
@@ -0,0 +1,8 @@
1
+ import { type ReactElement, type ReactNode } from "react";
2
+ import { type SafePositionOptions } from "@studiocubics/utils";
3
+ export interface TooltipProps extends SafePositionOptions {
4
+ title?: ReactNode;
5
+ renderArrow?: boolean;
6
+ children: ReactElement;
7
+ }
8
+ export declare function Tooltip({ title, children, renderArrow, anchorOrigin, transformOrigin, margin, }: TooltipProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,45 @@
1
+ 'use client';
2
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
+ import { useMemo, Children, useEffect, isValidElement, cloneElement } from 'react';
4
+ import { createPortal } from 'react-dom';
5
+ import { useTooltip } from './useTooltip.js';
6
+ import styles from './Tooltip.module.css.js';
7
+ import getArrowDirection from './getArrowDirection.js';
8
+ import { cn } from '@studiocubics/utils';
9
+
10
+ function Tooltip({ title, children, renderArrow = false, anchorOrigin, transformOrigin, margin, }) {
11
+ const options = useMemo(() => {
12
+ return {
13
+ anchorOrigin: anchorOrigin ?? "bottom center",
14
+ transformOrigin: transformOrigin ?? "top center",
15
+ margin: margin ?? 8,
16
+ };
17
+ }, [anchorOrigin, transformOrigin, margin]);
18
+ const { anchorRef, showTooltip, tooltipRef, position, updatePosition } = useTooltip(options);
19
+ const direction = renderArrow
20
+ ? getArrowDirection(anchorOrigin ?? "bottom center", transformOrigin ?? "top center")
21
+ : null;
22
+ // Ensure only one child is passed
23
+ const child = Children.only(children);
24
+ const childWithRef = () => {
25
+ if (isValidElement(child))
26
+ return cloneElement(child, { ref: anchorRef });
27
+ else {
28
+ throw new Error("Children passed to Tooltip should be a valid react element");
29
+ }
30
+ };
31
+ useEffect(() => {
32
+ if (showTooltip)
33
+ updatePosition();
34
+ }, [title, showTooltip, updatePosition]);
35
+ if (!title)
36
+ return child;
37
+ return (jsxs(Fragment, { children: [showTooltip &&
38
+ createPortal(jsx("div", { className: cn(styles.root, renderArrow && direction ? styles[`arrow-${direction}`] : ""), ref: tooltipRef, style: {
39
+ left: `${position.x}px`,
40
+ top: `${position.y}px`,
41
+ }, children: title }), document.body), childWithRef()] }));
42
+ }
43
+
44
+ export { Tooltip };
45
+ //# sourceMappingURL=Tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.js","sources":["../../../src/Display/Tooltip/Tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n Children,\n cloneElement,\n isValidElement,\n useEffect,\n useMemo,\n type ReactElement,\n type ReactNode,\n type RefObject,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useTooltip } from \"./useTooltip\";\nimport styles from \"./Tooltip.module.css\";\nimport getArrowDirection from \"./getArrowDirection\";\nimport { cn, type SafePositionOptions } from \"@studiocubics/utils\";\n\nexport interface TooltipProps extends SafePositionOptions {\n title?: ReactNode;\n renderArrow?: boolean;\n children: ReactElement;\n}\n\nexport function Tooltip({\n title,\n children,\n renderArrow = false,\n anchorOrigin,\n transformOrigin,\n margin,\n}: TooltipProps) {\n const options = useMemo(() => {\n return {\n anchorOrigin: anchorOrigin ?? \"bottom center\",\n transformOrigin: transformOrigin ?? \"top center\",\n margin: margin ?? 8,\n };\n }, [anchorOrigin, transformOrigin, margin]);\n const { anchorRef, showTooltip, tooltipRef, position, updatePosition } =\n useTooltip(options);\n\n const direction = renderArrow\n ? getArrowDirection(\n anchorOrigin ?? \"bottom center\",\n transformOrigin ?? \"top center\"\n )\n : null;\n\n // Ensure only one child is passed\n const child = Children.only(children);\n\n const childWithRef = () => {\n if (isValidElement(child))\n return cloneElement(child, { ref: anchorRef } as {\n ref: RefObject<HTMLElement | null>;\n });\n else {\n throw new Error(\n \"Children passed to Tooltip should be a valid react element\"\n );\n }\n };\n\n useEffect(() => {\n if (showTooltip) updatePosition();\n }, [title, showTooltip, updatePosition]);\n\n if (!title) return child;\n\n return (\n <>\n {showTooltip &&\n createPortal(\n <div\n className={cn(\n styles.root,\n renderArrow && direction ? styles[`arrow-${direction}`] : \"\"\n )}\n ref={tooltipRef}\n style={{\n left: `${position.x}px`,\n top: `${position.y}px`,\n }}\n >\n {title}\n </div>,\n document.body\n )}\n {childWithRef()}\n </>\n );\n}\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var styles = {"root":"Tooltip-module_root__nip6a","arrow-bottom":"Tooltip-module_arrow-bottom__CuvK2","arrow-top":"Tooltip-module_arrow-top__XaUyR","arrow-right":"Tooltip-module_arrow-right__O1HnI","arrow-left":"Tooltip-module_arrow-left__4o1J4","arrow-topLeft":"Tooltip-module_arrow-topLeft__WyNAm","arrow-topRight":"Tooltip-module_arrow-topRight__-ILdh","arrow-bottomLeft":"Tooltip-module_arrow-bottomLeft__E6w40","arrow-bottomRight":"Tooltip-module_arrow-bottomRight__mefBZ"};
2
+
3
+ export { styles as default };
4
+ //# sourceMappingURL=Tooltip.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1 @@
1
+ export default function getArrowDirection(anchorOrigin: string, transformOrigin: string): "top" | "bottom" | "left" | "right" | "topLeft" | "topRight" | "bottomLeft" | "bottomRight" | null;
@@ -0,0 +1,48 @@
1
+ function getArrowDirection(anchorOrigin, transformOrigin) {
2
+ const parse = (origin) => origin.toLowerCase().trim().split(/\s+/);
3
+ const [aV = "top", aH = "left"] = parse(anchorOrigin);
4
+ const [tV = "top", tH = "left"] = parse(transformOrigin);
5
+ // Vertical priority
6
+ if (aV !== tV) {
7
+ // anchor top, tooltip attached bottom -> tooltip is above anchor -> arrow on bottom side
8
+ if (aV === "top" && tV === "bottom") {
9
+ if (aH === "left" && tH === "right")
10
+ return "bottomRight";
11
+ if (aH === "right" && tH === "left")
12
+ return "bottomLeft";
13
+ return "bottom";
14
+ }
15
+ // anchor bottom, tooltip attached top -> tooltip is below anchor -> arrow on top side
16
+ if (aV === "bottom" && tV === "top") {
17
+ if (aH === "left" && tH === "right")
18
+ return "topRight";
19
+ if (aH === "right" && tH === "left")
20
+ return "topLeft";
21
+ return "top";
22
+ }
23
+ }
24
+ // Horizontal fallback
25
+ if (aH !== tH) {
26
+ // anchor left, tooltip attached right -> tooltip sits left of anchor -> arrow on right side
27
+ if (aH === "left" && tH === "right") {
28
+ if (aV === "top" && tV === "top")
29
+ return "topRight";
30
+ if (aV === "bottom" && tV === "bottom")
31
+ return "bottomRight";
32
+ return "right";
33
+ }
34
+ // anchor right, tooltip attached left -> tooltip sits right of anchor -> arrow on left side
35
+ if (aH === "right" && tH === "left") {
36
+ if (aV === "top" && tV === "top")
37
+ return "topLeft";
38
+ if (aV === "bottom" && tV === "bottom")
39
+ return "bottomLeft";
40
+ return "left";
41
+ }
42
+ }
43
+ // No clear difference (both centers or identical origins)
44
+ return null;
45
+ }
46
+
47
+ export { getArrowDirection as default };
48
+ //# sourceMappingURL=getArrowDirection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getArrowDirection.js","sources":["../../../src/Display/Tooltip/getArrowDirection.ts"],"sourcesContent":["export default function getArrowDirection(\n anchorOrigin: string,\n transformOrigin: string\n):\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"topLeft\"\n | \"topRight\"\n | \"bottomLeft\"\n | \"bottomRight\"\n | null {\n const parse = (origin: string) => origin.toLowerCase().trim().split(/\\s+/);\n\n const [aV = \"top\", aH = \"left\"] = parse(anchorOrigin);\n const [tV = \"top\", tH = \"left\"] = parse(transformOrigin);\n\n // Vertical priority\n if (aV !== tV) {\n // anchor top, tooltip attached bottom -> tooltip is above anchor -> arrow on bottom side\n if (aV === \"top\" && tV === \"bottom\") {\n if (aH === \"left\" && tH === \"right\") return \"bottomRight\";\n if (aH === \"right\" && tH === \"left\") return \"bottomLeft\";\n return \"bottom\";\n }\n\n // anchor bottom, tooltip attached top -> tooltip is below anchor -> arrow on top side\n if (aV === \"bottom\" && tV === \"top\") {\n if (aH === \"left\" && tH === \"right\") return \"topRight\";\n if (aH === \"right\" && tH === \"left\") return \"topLeft\";\n return \"top\";\n }\n }\n\n // Horizontal fallback\n if (aH !== tH) {\n // anchor left, tooltip attached right -> tooltip sits left of anchor -> arrow on right side\n if (aH === \"left\" && tH === \"right\") {\n if (aV === \"top\" && tV === \"top\") return \"topRight\";\n if (aV === \"bottom\" && tV === \"bottom\") return \"bottomRight\";\n return \"right\";\n }\n\n // anchor right, tooltip attached left -> tooltip sits right of anchor -> arrow on left side\n if (aH === \"right\" && tH === \"left\") {\n if (aV === \"top\" && tV === \"top\") return \"topLeft\";\n if (aV === \"bottom\" && tV === \"bottom\") return \"bottomLeft\";\n return \"left\";\n }\n }\n\n // No clear difference (both centers or identical origins)\n return null;\n}\n"],"names":[],"mappings":"AAAc,SAAU,iBAAiB,CACvC,YAAoB,EACpB,eAAuB,EAAA;AAWvB,IAAA,MAAM,KAAK,GAAG,CAAC,MAAc,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;AAE1E,IAAA,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;AACrD,IAAA,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC;;AAGxD,IAAA,IAAI,EAAE,KAAK,EAAE,EAAE;;QAEb,IAAI,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE;AACnC,YAAA,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,OAAO;AAAE,gBAAA,OAAO,aAAa;AACzD,YAAA,IAAI,EAAE,KAAK,OAAO,IAAI,EAAE,KAAK,MAAM;AAAE,gBAAA,OAAO,YAAY;AACxD,YAAA,OAAO,QAAQ;QACjB;;QAGA,IAAI,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,KAAK,EAAE;AACnC,YAAA,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,OAAO;AAAE,gBAAA,OAAO,UAAU;AACtD,YAAA,IAAI,EAAE,KAAK,OAAO,IAAI,EAAE,KAAK,MAAM;AAAE,gBAAA,OAAO,SAAS;AACrD,YAAA,OAAO,KAAK;QACd;IACF;;AAGA,IAAA,IAAI,EAAE,KAAK,EAAE,EAAE;;QAEb,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,OAAO,EAAE;AACnC,YAAA,IAAI,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,KAAK;AAAE,gBAAA,OAAO,UAAU;AACnD,YAAA,IAAI,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,QAAQ;AAAE,gBAAA,OAAO,aAAa;AAC5D,YAAA,OAAO,OAAO;QAChB;;QAGA,IAAI,EAAE,KAAK,OAAO,IAAI,EAAE,KAAK,MAAM,EAAE;AACnC,YAAA,IAAI,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,KAAK;AAAE,gBAAA,OAAO,SAAS;AAClD,YAAA,IAAI,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,QAAQ;AAAE,gBAAA,OAAO,YAAY;AAC3D,YAAA,OAAO,MAAM;QACf;IACF;;AAGA,IAAA,OAAO,IAAI;AACb;;;;"}
@@ -0,0 +1,8 @@
1
+ import { type Position, type SafePositionOptions } from "@studiocubics/utils";
2
+ export declare function useTooltip(options?: SafePositionOptions): {
3
+ showTooltip: boolean;
4
+ position: Position;
5
+ anchorRef: import("react").RefObject<HTMLElement | null>;
6
+ tooltipRef: import("react").RefObject<HTMLDivElement | null>;
7
+ updatePosition: () => void;
8
+ };
@@ -0,0 +1,48 @@
1
+ 'use client';
2
+ import { calculateSafePosition } from '@studiocubics/utils';
3
+ import { useState, useRef, useEffect, useCallback } from 'react';
4
+
5
+ function useTooltip(options = {}) {
6
+ const [showTooltip, setShowTooltip] = useState(false);
7
+ const [position, setPosition] = useState({ x: -9999, y: -9999 });
8
+ const anchorRef = useRef(null);
9
+ const tooltipRef = useRef(null);
10
+ useEffect(() => {
11
+ const element = anchorRef.current;
12
+ if (!element)
13
+ return;
14
+ const handleMouseEnter = () => {
15
+ setShowTooltip(true);
16
+ };
17
+ const handleMouseLeave = () => {
18
+ setShowTooltip(false);
19
+ };
20
+ element.addEventListener("mouseenter", handleMouseEnter);
21
+ element.addEventListener("mouseleave", handleMouseLeave);
22
+ return () => {
23
+ element.removeEventListener("mouseenter", handleMouseEnter);
24
+ element.removeEventListener("mouseleave", handleMouseLeave);
25
+ };
26
+ }, []);
27
+ const updatePosition = useCallback(() => {
28
+ const safePos = calculateSafePosition(tooltipRef.current, anchorRef.current, options);
29
+ setPosition(safePos);
30
+ }, [options]);
31
+ useEffect(() => {
32
+ if (!showTooltip)
33
+ return;
34
+ // Initial position calculation
35
+ updatePosition();
36
+ // Update position on scroll and resize
37
+ window.addEventListener("scroll", updatePosition);
38
+ window.addEventListener("resize", updatePosition);
39
+ return () => {
40
+ window.removeEventListener("scroll", updatePosition);
41
+ window.removeEventListener("resize", updatePosition);
42
+ };
43
+ }, [showTooltip]);
44
+ return { showTooltip, position, anchorRef, tooltipRef, updatePosition };
45
+ }
46
+
47
+ export { useTooltip };
48
+ //# sourceMappingURL=useTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTooltip.js","sources":["../../../src/Display/Tooltip/useTooltip.tsx"],"sourcesContent":["\"use client\"\nimport {\n calculateSafePosition,\n type Position,\n type SafePositionOptions,\n} from \"@studiocubics/utils\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport function useTooltip(options: SafePositionOptions = {}) {\n const [showTooltip, setShowTooltip] = useState(false);\n const [position, setPosition] = useState<Position>({ x: -9999, y: -9999 });\n const anchorRef = useRef<HTMLElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const element = anchorRef.current;\n if (!element) return;\n\n const handleMouseEnter = () => {\n setShowTooltip(true);\n };\n\n const handleMouseLeave = () => {\n setShowTooltip(false);\n };\n\n element.addEventListener(\"mouseenter\", handleMouseEnter);\n element.addEventListener(\"mouseleave\", handleMouseLeave);\n\n return () => {\n element.removeEventListener(\"mouseenter\", handleMouseEnter);\n element.removeEventListener(\"mouseleave\", handleMouseLeave);\n };\n }, []);\n\n const updatePosition = useCallback(() => {\n const safePos = calculateSafePosition(\n tooltipRef.current,\n anchorRef.current,\n options\n );\n\n setPosition(safePos);\n }, [options]);\n\n useEffect(() => {\n if (!showTooltip) return;\n\n // Initial position calculation\n updatePosition();\n\n // Update position on scroll and resize\n window.addEventListener(\"scroll\", updatePosition);\n window.addEventListener(\"resize\", updatePosition);\n\n return () => {\n window.removeEventListener(\"scroll\", updatePosition);\n window.removeEventListener(\"resize\", updatePosition);\n };\n }, [showTooltip]);\n\n return { showTooltip, position, anchorRef, tooltipRef, updatePosition };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ComponentProps } from "react";
2
+ import { type ButtonProps } from "../../Inputs/Button/Button";
3
+ export interface ConfirmationFormProps extends ComponentProps<"form"> {
4
+ formTitle?: string;
5
+ onCancel?: () => void;
6
+ variant?: "danger" | "info";
7
+ confirmText?: string;
8
+ cancelText?: string;
9
+ disabled?: boolean;
10
+ slotProps?: {
11
+ confirmButton?: ButtonProps;
12
+ cancelButton?: ButtonProps;
13
+ };
14
+ }
15
+ export declare function ConfirmationForm(props: ConfirmationFormProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import styles from './ConfirmationForm.module.css.js';
3
+ import { cn } from '@studiocubics/utils';
4
+ import { Button } from '../../Inputs/Button/Button.js';
5
+
6
+ function ConfirmationForm(props) {
7
+ const { onCancel, formTitle, variant = "info", confirmText = "Confirm", cancelText = "Cancel", disabled, slotProps = {}, className, children, ...rest } = props;
8
+ return (jsxs("form", { "aria-disabled": disabled, className: cn(styles.root, className, styles[variant]), ...rest, children: [jsx("h4", { children: formTitle }), children, jsxs("div", { className: styles.actions, children: [jsx(Button, { variant: variant == "danger" ? "contained" : "text", disabled: disabled, type: "button", onClick: () => onCancel?.(), ...slotProps.cancelButton, children: cancelText }), jsx(Button, { disabled: disabled, variant: variant == "danger" ? "text" : "contained", color: variant == "danger" ? "error" : undefined, type: "submit", ...slotProps.confirmButton, children: confirmText })] })] }));
9
+ }
10
+
11
+ export { ConfirmationForm };
12
+ //# sourceMappingURL=ConfirmationForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmationForm.js","sources":["../../../src/Forms/ConfirmationForm/ConfirmationForm.tsx"],"sourcesContent":["import type { ComponentProps } from \"react\";\nimport styles from \"./ConfirmationForm.module.css\";\nimport { cn } from \"@studiocubics/utils\";\nimport { Button, type ButtonProps } from \"../../Inputs/Button/Button\";\nexport interface ConfirmationFormProps extends ComponentProps<\"form\"> {\n formTitle?: string;\n onCancel?: () => void;\n variant?: \"danger\" | \"info\";\n confirmText?: string;\n cancelText?: string;\n disabled?: boolean;\n slotProps?: {\n confirmButton?: ButtonProps;\n cancelButton?: ButtonProps;\n };\n}\nexport function ConfirmationForm(props: ConfirmationFormProps) {\n const {\n onCancel,\n formTitle,\n variant = \"info\",\n confirmText = \"Confirm\",\n cancelText = \"Cancel\",\n disabled,\n slotProps = {},\n className,\n children,\n ...rest\n } = props;\n return (\n <form\n aria-disabled={disabled}\n className={cn(styles.root, className, styles[variant])}\n {...rest}\n >\n <h4>{formTitle}</h4>\n {children}\n <div className={styles.actions}>\n <Button\n variant={variant == \"danger\" ? \"contained\" : \"text\"}\n disabled={disabled}\n type=\"button\"\n onClick={() => onCancel?.()}\n {...slotProps.cancelButton}\n >\n {cancelText}\n </Button>\n <Button\n disabled={disabled}\n variant={variant == \"danger\" ? \"text\" : \"contained\"}\n color={variant == \"danger\" ? \"error\" : undefined}\n type=\"submit\"\n {...slotProps.confirmButton}\n >\n {confirmText}\n </Button>\n </div>\n </form>\n );\n}\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAgBM,SAAU,gBAAgB,CAAC,KAA4B,EAAA;AAC3D,IAAA,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,GAAG,MAAM,EAChB,WAAW,GAAG,SAAS,EACvB,UAAU,GAAG,QAAQ,EACrB,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACR,GAAG,KAAK;AACT,IAAA,QACEA,IAAA,CAAA,MAAA,EAAA,EAAA,eAAA,EACiB,QAAQ,EACvB,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAA,GAClD,IAAI,EAAA,QAAA,EAAA,CAERC,GAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAK,SAAS,EAAA,CAAM,EACnB,QAAQ,EACTD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,OAAO,EAAA,QAAA,EAAA,CAC5BC,GAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAE,OAAO,IAAI,QAAQ,GAAG,WAAW,GAAG,MAAM,EACnD,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,MAAM,QAAQ,IAAI,EAAA,GACvB,SAAS,CAAC,YAAY,EAAA,QAAA,EAEzB,UAAU,EAAA,CACJ,EACTA,GAAA,CAAC,MAAM,EAAA,EACL,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,IAAI,QAAQ,GAAG,MAAM,GAAG,WAAW,EACnD,KAAK,EAAE,OAAO,IAAI,QAAQ,GAAG,OAAO,GAAG,SAAS,EAChD,IAAI,EAAC,QAAQ,EAAA,GACT,SAAS,CAAC,aAAa,EAAA,QAAA,EAE1B,WAAW,EAAA,CACL,CAAA,EAAA,CACL,CAAA,EAAA,CACD;AAEX;;;;"}
@@ -0,0 +1,4 @@
1
+ var styles = {"root":"ConfirmationForm-module_root__ltcoI","danger":"ConfirmationForm-module_danger__C1MyS","actions":"ConfirmationForm-module_actions__TSHEJ"};
2
+
3
+ export { styles as default };
4
+ //# sourceMappingURL=ConfirmationForm.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmationForm.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,83 @@
1
+ import type { PolymorphicComponentProps, PolymorphicComponentType } from "@studiocubics/types";
2
+ import { type ComponentProps, type CSSProperties, type ElementType, type ReactNode } from "react";
3
+ import { type UseRippleProps } from "../../Misc/Ripple/Ripple";
4
+ /**
5
+ * Props specific to the Button component.
6
+ *
7
+ * These extend the intrinsic element props of whatever element is passed via `as`.
8
+ * @group button
9
+ * @category inputs
10
+ */
11
+ export interface ButtonBaseProps {
12
+ /** Renders an icon at the beginning of the button. */
13
+ startIcon?: ReactNode;
14
+ /** Renders an icon at the end of the button. */
15
+ endIcon?: ReactNode;
16
+ /** Marks the button as selected. */
17
+ selected?: boolean;
18
+ /** Visual style variant. */
19
+ variant?: "contained" | "text" | "outlined";
20
+ /** Expands width to 100%. */
21
+ fullWidth?: boolean;
22
+ /** Force a 1:1 aspect ratio. */
23
+ square?: boolean;
24
+ /** Button size. */
25
+ size?: "sm" | "md" | "lg";
26
+ /** Overrides the CSS `position` property of the root element. */
27
+ position?: CSSProperties["position"];
28
+ color?: "primary" | "secondary" | "error";
29
+ /**
30
+ * Slot props for customizing internal elements.
31
+ */
32
+ slotProps?: {
33
+ /** Props for the ripple effect. */
34
+ ripple?: UseRippleProps;
35
+ /** Wrapper span for the start icon. */
36
+ startIcon?: ComponentProps<"span">;
37
+ /** Wrapper span for the end icon. */
38
+ endIcon?: ComponentProps<"span">;
39
+ };
40
+ }
41
+ declare const defaultElement = "button";
42
+ type DefaultElement = typeof defaultElement;
43
+ /**
44
+ * Polymorphic props for the Button component.
45
+ *
46
+ * `C` defines the element type rendered by the component (e.g. `"button"`, `"a"`, `"div"`).
47
+ * All intrinsic props for `C` are supported unless overridden by `ButtonBaseProps`.
48
+ *
49
+ * @group button
50
+ * @category inputs
51
+ */
52
+ export type ButtonProps<C extends ElementType = DefaultElement> = PolymorphicComponentProps<C, ButtonBaseProps>;
53
+ /**
54
+ * Base implementation for the Button component.
55
+ *
56
+ * This is a polymorphic component that defaults to rendering a `<button>`.
57
+ * Use the `as` prop to change the underlying element.
58
+ *
59
+ * @typeParam C - The intrinsic or custom element type to render.
60
+ *
61
+ * @group button
62
+ * @category inputs
63
+ */
64
+ export declare function ButtonBase<C extends ElementType = DefaultElement>(props: ButtonProps<C>): import("react/jsx-runtime").JSX.Element;
65
+ export declare namespace ButtonBase {
66
+ var displayName: string;
67
+ }
68
+ /**
69
+ * A polymorphic button component.
70
+ *
71
+ * By default it renders a `<button>`, but any element can be used via the `as` prop:
72
+ *
73
+ * ```tsx
74
+ * <Button as="a" href="/docs">Read docs</Button>
75
+ * ```
76
+ *
77
+ * Supports variants, sizes, icons, and ripple effects.
78
+ *
79
+ * @group button
80
+ * @category inputs
81
+ */
82
+ export declare const Button: PolymorphicComponentType<ButtonBaseProps, DefaultElement>;
83
+ export {};
@@ -0,0 +1,56 @@
1
+ 'use client';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import 'react';
4
+ import { useRipple, eventWithRipple } from '../../Misc/Ripple/Ripple.js';
5
+ import { cn } from '@studiocubics/utils';
6
+ import styles from './Button.module.css.js';
7
+
8
+ /**
9
+ * Button is love button is life
10
+ */
11
+
12
+ const defaultElement = "button";
13
+ /**
14
+ * Base implementation for the Button component.
15
+ *
16
+ * This is a polymorphic component that defaults to rendering a `<button>`.
17
+ * Use the `as` prop to change the underlying element.
18
+ *
19
+ * @typeParam C - The intrinsic or custom element type to render.
20
+ *
21
+ * @group button
22
+ * @category inputs
23
+ */
24
+ function ButtonBase(props) {
25
+ const { as, className, children, variant = "text", size = "md", startIcon, color, endIcon, square, fullWidth = false, onTouchStart, onClick, position, slotProps: _slotProps, ...restProps } = props;
26
+ const slotProps = _slotProps ?? {};
27
+ const Component = (as || defaultElement);
28
+ const { rippleElements, createRipple } = useRipple(slotProps.ripple);
29
+ const componentProps = {
30
+ className: cn(className, styles.root, square ? styles.square : "", fullWidth ? styles.fullWidth : "", position ? styles[`position_${position}`] : "", styles[`size_${size}`], styles[variant]),
31
+ onTouchStart: eventWithRipple(createRipple, onTouchStart),
32
+ onClick: eventWithRipple(createRipple, onClick),
33
+ "data-color": color,
34
+ ...restProps,
35
+ };
36
+ return (jsxs(Component, { ...componentProps, children: [rippleElements, startIcon && (jsx("span", { ...slotProps.startIcon, className: cn(styles.iconContainer, slotProps.startIcon?.className), children: startIcon })), children, endIcon && (jsx("span", { ...slotProps.endIcon, className: cn(styles.iconContainer, slotProps.endIcon?.className), children: endIcon }))] }));
37
+ }
38
+ ButtonBase.displayName = "Button";
39
+ /**
40
+ * A polymorphic button component.
41
+ *
42
+ * By default it renders a `<button>`, but any element can be used via the `as` prop:
43
+ *
44
+ * ```tsx
45
+ * <Button as="a" href="/docs">Read docs</Button>
46
+ * ```
47
+ *
48
+ * Supports variants, sizes, icons, and ripple effects.
49
+ *
50
+ * @group button
51
+ * @category inputs
52
+ */
53
+ const Button = ButtonBase;
54
+
55
+ export { Button, ButtonBase };
56
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","sources":["../../../src/Inputs/Button/Button.tsx"],"sourcesContent":["/**\n * Button is love button is life\n */\n\"use client\";\n\nimport type {\n PolymorphicComponentProps,\n PolymorphicComponentType,\n} from \"@studiocubics/types\";\nimport {\n type ComponentProps,\n type CSSProperties,\n type ElementType,\n type ReactNode,\n} from \"react\";\nimport {\n eventWithRipple,\n useRipple,\n type UseRippleProps,\n} from \"../../Misc/Ripple/Ripple\";\nimport { cn } from \"@studiocubics/utils\";\nimport styles from \"./Button.module.css\";\n\n/**\n * Props specific to the Button component.\n *\n * These extend the intrinsic element props of whatever element is passed via `as`.\n * @group button\n * @category inputs\n */\nexport interface ButtonBaseProps {\n /** Renders an icon at the beginning of the button. */\n startIcon?: ReactNode;\n\n /** Renders an icon at the end of the button. */\n endIcon?: ReactNode;\n\n /** Marks the button as selected. */\n selected?: boolean;\n\n /** Visual style variant. */\n variant?: \"contained\" | \"text\" | \"outlined\";\n\n /** Expands width to 100%. */\n fullWidth?: boolean;\n\n /** Force a 1:1 aspect ratio. */\n square?: boolean;\n\n /** Button size. */\n size?: \"sm\" | \"md\" | \"lg\";\n\n /** Overrides the CSS `position` property of the root element. */\n position?: CSSProperties[\"position\"];\n\n color?: \"primary\" | \"secondary\" | \"error\";\n /**\n * Slot props for customizing internal elements.\n */\n slotProps?: {\n /** Props for the ripple effect. */\n ripple?: UseRippleProps;\n\n /** Wrapper span for the start icon. */\n startIcon?: ComponentProps<\"span\">;\n\n /** Wrapper span for the end icon. */\n endIcon?: ComponentProps<\"span\">;\n };\n}\nconst defaultElement = \"button\";\ntype DefaultElement = typeof defaultElement;\n/**\n * Polymorphic props for the Button component.\n *\n * `C` defines the element type rendered by the component (e.g. `\"button\"`, `\"a\"`, `\"div\"`).\n * All intrinsic props for `C` are supported unless overridden by `ButtonBaseProps`.\n *\n * @group button\n * @category inputs\n */\nexport type ButtonProps<C extends ElementType = DefaultElement> =\n PolymorphicComponentProps<C, ButtonBaseProps>;\n\n/**\n * Base implementation for the Button component.\n *\n * This is a polymorphic component that defaults to rendering a `<button>`.\n * Use the `as` prop to change the underlying element.\n *\n * @typeParam C - The intrinsic or custom element type to render.\n *\n * @group button\n * @category inputs\n */\nexport function ButtonBase<C extends ElementType = DefaultElement>(\n props: ButtonProps<C>\n) {\n const {\n as,\n className,\n children,\n variant = \"text\",\n size = \"md\",\n startIcon,\n color,\n endIcon,\n square,\n fullWidth = false,\n onTouchStart,\n onClick,\n position,\n slotProps: _slotProps,\n ...restProps\n } = props as ButtonProps<DefaultElement>;\n const slotProps: NonNullable<ButtonBaseProps[\"slotProps\"]> = _slotProps ?? {};\n const Component = (as || defaultElement) as ElementType;\n const { rippleElements, createRipple } = useRipple(slotProps.ripple);\n\n const componentProps = {\n className: cn(\n className,\n styles.root,\n square ? styles.square : \"\",\n fullWidth ? styles.fullWidth : \"\",\n position ? styles[`position_${position}`] : \"\",\n styles[`size_${size}`],\n styles[variant]\n ),\n onTouchStart: eventWithRipple(createRipple, onTouchStart),\n onClick: eventWithRipple(createRipple, onClick),\n \"data-color\": color,\n ...restProps,\n };\n\n return (\n <Component {...componentProps}>\n {rippleElements}\n {startIcon && (\n <span\n {...slotProps.startIcon}\n className={cn(styles.iconContainer, slotProps.startIcon?.className)}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n {...slotProps.endIcon}\n className={cn(styles.iconContainer, slotProps.endIcon?.className)}\n >\n {endIcon}\n </span>\n )}\n </Component>\n );\n}\nButtonBase.displayName = \"Button\";\n\n/**\n * A polymorphic button component.\n *\n * By default it renders a `<button>`, but any element can be used via the `as` prop:\n *\n * ```tsx\n * <Button as=\"a\" href=\"/docs\">Read docs</Button>\n * ```\n *\n * Supports variants, sizes, icons, and ripple effects.\n *\n * @group button\n * @category inputs\n */\nexport const Button = ButtonBase as PolymorphicComponentType<\n ButtonBaseProps,\n DefaultElement\n>;\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAAA,CAAA,CAAA;;AAEG,CAAA,CAAA;;AAoEH,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ;AAc/B,CAAA,CAAA;;;;;;;;;;AAUG,CAAA,CAAA;AACG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CACxB,CAAA,CAAA,CAAA,CAAA,CAAqB,CAAA,CAAA;AAErB,CAAA,CAAA,CAAA,CAAA,MAAM,CAAA,CACJ,CAAA,CAAE,EACF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CACT,QAAQ,CAAA,CACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAChB,IAAI,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAI,EACX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CACT,KAAK,CAAA,CACL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,EACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAG,KAAK,CAAA,CACjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,EACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CACP,QAAQ,CAAA,CACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACrB,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CACb,GAAG,CAAA,CAAA,CAAA,CAAA,CAAoC;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAA8C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,IAAI,CAAA,CAAE;AAC7E,CAAA,CAAA,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAI,CAAA,CAAE,CAAA,CAAA,CAAA,CAAI,cAAc,CAAgB;AACvD,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;AAEpE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,cAAc,CAAA,CAAA,CAAG;QACrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,CAAA,CAAE,CACX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,EACT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CACX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAG,MAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAG,CAAA,CAAE,CAAA,CAC3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAG,CAAA,CAAE,CAAA,CACjC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAE,CAAC,CAAA,CAAA,CAAG,CAAA,CAAE,CAAA,CAC9C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAI,CAAA,CAAE,CAAC,CAAA,CACtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAChB;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,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,CAAA,CAAE,YAAY,CAAC;AACzD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAO,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,CAAA,CAAE,OAAO,CAAC;AAC/C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,EAAE,CAAA,CAAA,CAAA,CAAA,CAAK;AACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS;KACb;AAED,CAAA,CAAA,CAAA,CAAA,QACEA,CAAAA,CAAAA,CAAAA,CAAA,CAAC,SAAS,CAAA,CAAA,CAAA,CAAA,GAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAA,CACd,SAAS,CAAA,CAAA,CAAA,CAAA,CACRC,CAAAA,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACM,SAAS,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,EACvB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,EAAE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,SAAS,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAElE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,EAAA,CACL,CACR,EACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CACR,OAAO,CAAA,CAAA,CAAA,CAAA,CACNA,CAAAA,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CACM,SAAS,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EACrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,CAAA,CAAE,CAAC,MAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,OAAO,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAEhE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CACH,CACR,CAAA,EAAA,CACS,CAAA;AAEhB;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ;AAEjC,CAAA,CAAA;;;;;;;;;;;;;AAaG,CAAA,CAAA;AACI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,MAAM,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;"}
@@ -0,0 +1,4 @@
1
+ var styles = {"root":"Button-module_root__hmumx","iconContainer":"Button-module_iconContainer__-VER1","square":"Button-module_square__Wu8jt","size_sm":"Button-module_size_sm__Qk6rp","size_md":"Button-module_size_md__qWVt-","size_lg":"Button-module_size_lg__e7Ely","contained":"Button-module_contained__tlUyK","outlined":"Button-module_outlined__rgbFf","position_absolute":"Button-module_position_absolute__NN8P1","position_relative":"Button-module_position_relative__r0CV0","position_fixed":"Button-module_position_fixed__LilZy","position_sticky":"Button-module_position_sticky__2ixpW","fullWidth":"Button-module_fullWidth__5o7qa"};
2
+
3
+ export { styles as default };
4
+ //# sourceMappingURL=Button.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}