@studiocubics/components 0.0.1 → 0.0.3

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 (438) 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 +75 -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/Drawer/Drawer.d.ts +15 -0
  148. package/dist/Layout/Drawer/Drawer.js +39 -0
  149. package/dist/Layout/Drawer/Drawer.js.map +1 -0
  150. package/dist/Layout/Drawer/Drawer.module.css.js +4 -0
  151. package/dist/Layout/Drawer/Drawer.module.css.js.map +1 -0
  152. package/dist/Layout/PageLayout/PageLayout.d.ts +28 -0
  153. package/dist/Layout/PageLayout/PageLayout.js +25 -0
  154. package/dist/Layout/PageLayout/PageLayout.js.map +1 -0
  155. package/dist/Layout/PageLayout/PageLayout.module.css.js +4 -0
  156. package/dist/Layout/PageLayout/PageLayout.module.css.js.map +1 -0
  157. package/dist/Layout/PageLayoutPagination/PageLayoutPagination.d.ts +7 -0
  158. package/dist/Layout/PageLayoutPagination/PageLayoutPagination.js +13 -0
  159. package/dist/Layout/PageLayoutPagination/PageLayoutPagination.js.map +1 -0
  160. package/dist/Layout/PageLayoutPagination/PageLayoutPagination.module.css.js +4 -0
  161. package/dist/Layout/PageLayoutPagination/PageLayoutPagination.module.css.js.map +1 -0
  162. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.d.ts +14 -0
  163. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.js +22 -0
  164. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.js.map +1 -0
  165. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.module.css.js +4 -0
  166. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.module.css.js.map +1 -0
  167. package/dist/Layout/Popover/Popover.d.ts +14 -0
  168. package/dist/Layout/Popover/Popover.js +103 -0
  169. package/dist/Layout/Popover/Popover.js.map +1 -0
  170. package/dist/Layout/Popover/Popover.module.css.js +4 -0
  171. package/dist/Layout/Popover/Popover.module.css.js.map +1 -0
  172. package/dist/Layout/SectionWrapper/SectionWrapper.d.ts +14 -0
  173. package/dist/Layout/SectionWrapper/SectionWrapper.js +11 -0
  174. package/dist/Layout/SectionWrapper/SectionWrapper.js.map +1 -0
  175. package/dist/Layout/SectionWrapper/SectionWrapper.module.css.js +4 -0
  176. package/dist/Layout/SectionWrapper/SectionWrapper.module.css.js.map +1 -0
  177. package/dist/Layout/Sidebar/Sidebar.d.ts +15 -0
  178. package/dist/Layout/Sidebar/Sidebar.js +25 -0
  179. package/dist/Layout/Sidebar/Sidebar.js.map +1 -0
  180. package/dist/Layout/Sidebar/Sidebar.module.css.js +4 -0
  181. package/dist/Layout/Sidebar/Sidebar.module.css.js.map +1 -0
  182. package/dist/Layout/Sidebar/SidebarBody/SidebarBody.d.ts +2 -0
  183. package/dist/Layout/Sidebar/SidebarBody/SidebarBody.js +14 -0
  184. package/dist/Layout/Sidebar/SidebarBody/SidebarBody.js.map +1 -0
  185. package/dist/Layout/Sidebar/SidebarBody/SidebarBody.module.css.js +4 -0
  186. package/dist/Layout/Sidebar/SidebarBody/SidebarBody.module.css.js.map +1 -0
  187. package/dist/Layout/Sidebar/SidebarDrawer/SidebarDrawer.d.ts +2 -0
  188. package/dist/Layout/Sidebar/SidebarDrawer/SidebarDrawer.js +14 -0
  189. package/dist/Layout/Sidebar/SidebarDrawer/SidebarDrawer.js.map +1 -0
  190. package/dist/Layout/Sidebar/SidebarDrawer/SidebarDrawer.module.css.js +4 -0
  191. package/dist/Layout/Sidebar/SidebarDrawer/SidebarDrawer.module.css.js.map +1 -0
  192. package/dist/Layout/Sidebar/SidebarFooter/SidebarFooter.d.ts +2 -0
  193. package/dist/Layout/Sidebar/SidebarFooter/SidebarFooter.js +14 -0
  194. package/dist/Layout/Sidebar/SidebarFooter/SidebarFooter.js.map +1 -0
  195. package/dist/Layout/Sidebar/SidebarFooter/SidebarFooter.module.css.js +4 -0
  196. package/dist/Layout/Sidebar/SidebarFooter/SidebarFooter.module.css.js.map +1 -0
  197. package/dist/Layout/Sidebar/SidebarHeader/SidebarHeader.d.ts +2 -0
  198. package/dist/Layout/Sidebar/SidebarHeader/SidebarHeader.js +12 -0
  199. package/dist/Layout/Sidebar/SidebarHeader/SidebarHeader.js.map +1 -0
  200. package/dist/Layout/Sidebar/SidebarViewport/SidebarViewport.d.ts +2 -0
  201. package/dist/Layout/Sidebar/SidebarViewport/SidebarViewport.js +11 -0
  202. package/dist/Layout/Sidebar/SidebarViewport/SidebarViewport.js.map +1 -0
  203. package/dist/Layout/Sidebar/SidebarViewport/SidebarViewport.module.css.js +4 -0
  204. package/dist/Layout/Sidebar/SidebarViewport/SidebarViewport.module.css.js.map +1 -0
  205. package/dist/Layout/Table/Table.d.ts +54 -0
  206. package/dist/Layout/Table/Table.js +131 -0
  207. package/dist/Layout/Table/Table.js.map +1 -0
  208. package/dist/Layout/Table/Table.module.css.js +4 -0
  209. package/dist/Layout/Table/Table.module.css.js.map +1 -0
  210. package/dist/Layout/Table/TableFooter.d.ts +1 -0
  211. package/dist/Layout/Table/TableFooter.js +9 -0
  212. package/dist/Layout/Table/TableFooter.js.map +1 -0
  213. package/dist/Layout/Table/TableHeader.d.ts +1 -0
  214. package/dist/Layout/Table/TableHeader.js +9 -0
  215. package/dist/Layout/Table/TableHeader.js.map +1 -0
  216. package/dist/Layout/Table/tableUtils.d.ts +52 -0
  217. package/dist/Layout/Table/tableUtils.js +124 -0
  218. package/dist/Layout/Table/tableUtils.js.map +1 -0
  219. package/dist/Layout/Table/types.d.ts +43 -0
  220. package/{src/Layout/_index.ts → dist/Layout/_index.d.ts} +1 -0
  221. package/dist/Misc/Cursor/Cursor.d.ts +1 -0
  222. package/dist/Misc/Cursor/Cursor.js +59 -0
  223. package/dist/Misc/Cursor/Cursor.js.map +1 -0
  224. package/dist/Misc/Cursor/Cursor.module.css.js +4 -0
  225. package/dist/Misc/Cursor/Cursor.module.css.js.map +1 -0
  226. package/dist/Misc/Logos.d.ts +14 -0
  227. package/dist/Misc/Logos.js +29 -0
  228. package/dist/Misc/Logos.js.map +1 -0
  229. package/dist/Misc/PoweredByBanner/PoweredByBanner.d.ts +6 -0
  230. package/dist/Misc/PoweredByBanner/PoweredByBanner.js +12 -0
  231. package/dist/Misc/PoweredByBanner/PoweredByBanner.js.map +1 -0
  232. package/dist/Misc/PoweredByBanner/PoweredByBanner.module.css.js +4 -0
  233. package/dist/Misc/PoweredByBanner/PoweredByBanner.module.css.js.map +1 -0
  234. package/dist/Misc/Ripple/Ripple.d.ts +21 -0
  235. package/dist/Misc/Ripple/Ripple.js +62 -0
  236. package/dist/Misc/Ripple/Ripple.js.map +1 -0
  237. package/dist/Misc/Ripple/Ripple.module.css.js +4 -0
  238. package/dist/Misc/Ripple/Ripple.module.css.js.map +1 -0
  239. package/dist/Misc/Spinner/Spinner.d.ts +2 -0
  240. package/dist/Misc/Spinner/Spinner.js +12 -0
  241. package/dist/Misc/Spinner/Spinner.js.map +1 -0
  242. package/dist/Misc/Spinner/Spinner.module.css.js +4 -0
  243. package/dist/Misc/Spinner/Spinner.module.css.js.map +1 -0
  244. package/dist/Misc/TransitionAnimation/TransitionAnimation.d.ts +71 -0
  245. package/dist/Misc/TransitionAnimation/TransitionAnimation.js +87 -0
  246. package/dist/Misc/TransitionAnimation/TransitionAnimation.js.map +1 -0
  247. package/dist/Misc/TransitionAnimation/TransitionAnimation.module.css.js +4 -0
  248. package/dist/Misc/TransitionAnimation/TransitionAnimation.module.css.js.map +1 -0
  249. package/dist/Navigation/Breadcrumbs/Breadcrumbs.d.ts +39 -0
  250. package/dist/Navigation/Breadcrumbs/Breadcrumbs.js +36 -0
  251. package/dist/Navigation/Breadcrumbs/Breadcrumbs.js.map +1 -0
  252. package/dist/Navigation/Breadcrumbs/Breadcrumbs.module.css.js +4 -0
  253. package/dist/Navigation/Breadcrumbs/Breadcrumbs.module.css.js.map +1 -0
  254. package/dist/Navigation/Breadcrumbs/BreadcrumbsItem.d.ts +10 -0
  255. package/dist/Navigation/Breadcrumbs/BreadcrumbsItem.js +15 -0
  256. package/dist/Navigation/Breadcrumbs/BreadcrumbsItem.js.map +1 -0
  257. package/dist/Navigation/Breadcrumbs/useBreadcrumbs.d.ts +7 -0
  258. package/dist/Navigation/Breadcrumbs/useBreadcrumbs.js +44 -0
  259. package/dist/Navigation/Breadcrumbs/useBreadcrumbs.js.map +1 -0
  260. package/dist/Navigation/Pagination/Pagination.d.ts +52 -0
  261. package/dist/Navigation/Pagination/Pagination.js +61 -0
  262. package/dist/Navigation/Pagination/Pagination.js.map +1 -0
  263. package/dist/Navigation/Pagination/Pagination.module.css.js +4 -0
  264. package/dist/Navigation/Pagination/Pagination.module.css.js.map +1 -0
  265. package/dist/Navigation/Pagination/PaginationItem.d.ts +8 -0
  266. package/dist/Navigation/Pagination/PaginationItem.js +14 -0
  267. package/dist/Navigation/Pagination/PaginationItem.js.map +1 -0
  268. package/dist/Navigation/Pagination/usePagination.d.ts +6 -0
  269. package/dist/Navigation/Pagination/usePagination.js +38 -0
  270. package/dist/Navigation/Pagination/usePagination.js.map +1 -0
  271. package/dist/Navigation/Tabs/Tab/Tab.d.ts +46 -0
  272. package/dist/Navigation/Tabs/Tab/Tab.js +70 -0
  273. package/dist/Navigation/Tabs/Tab/Tab.js.map +1 -0
  274. package/dist/Navigation/Tabs/Tab/Tab.module.css.js +4 -0
  275. package/dist/Navigation/Tabs/Tab/Tab.module.css.js.map +1 -0
  276. package/dist/Navigation/Tabs/Tabs.d.ts +12 -0
  277. package/dist/Navigation/Tabs/Tabs.js +22 -0
  278. package/dist/Navigation/Tabs/Tabs.js.map +1 -0
  279. package/dist/Navigation/Tabs/TabsBar/TabsBar.d.ts +12 -0
  280. package/dist/Navigation/Tabs/TabsBar/TabsBar.js +44 -0
  281. package/dist/Navigation/Tabs/TabsBar/TabsBar.js.map +1 -0
  282. package/dist/Navigation/Tabs/TabsBar/TabsBar.module.css.js +4 -0
  283. package/dist/Navigation/Tabs/TabsBar/TabsBar.module.css.js.map +1 -0
  284. package/dist/Typography/ClampedText/ClampedText.d.ts +38 -0
  285. package/dist/Typography/ClampedText/ClampedText.js +44 -0
  286. package/dist/Typography/ClampedText/ClampedText.js.map +1 -0
  287. package/dist/Typography/ClampedText/ClampedText.module.css.js +4 -0
  288. package/dist/Typography/ClampedText/ClampedText.module.css.js.map +1 -0
  289. package/dist/Typography/CopyableText/CopyableText.d.ts +16 -0
  290. package/dist/Typography/CopyableText/CopyableText.js +39 -0
  291. package/dist/Typography/CopyableText/CopyableText.js.map +1 -0
  292. package/dist/Typography/CopyableText/CopyableText.module.css.js +4 -0
  293. package/dist/Typography/CopyableText/CopyableText.module.css.js.map +1 -0
  294. package/dist/Typography/PageTitle/PageTitle.d.ts +9 -0
  295. package/dist/Typography/PageTitle/PageTitle.js +10 -0
  296. package/dist/Typography/PageTitle/PageTitle.js.map +1 -0
  297. package/dist/Typography/PageTitle/PageTitle.module.css.js +4 -0
  298. package/dist/Typography/PageTitle/PageTitle.module.css.js.map +1 -0
  299. package/dist/index.css +2398 -0
  300. package/dist/index.js +65 -0
  301. package/dist/index.js.map +1 -0
  302. package/package.json +5 -7
  303. package/CHANGELOG.md +0 -11
  304. package/eslint.config.js +0 -21
  305. package/src/Cards/Card/Card.module.css +0 -27
  306. package/src/Cards/Card/Card.tsx +0 -105
  307. package/src/Cards/CollectionItemCard/CollectionItemCard.module.css +0 -84
  308. package/src/Cards/CollectionItemCard/CollectionItemCard.tsx +0 -170
  309. package/src/Cards/CollectionItemCard/CollectionItemCardActions.tsx +0 -85
  310. package/src/Cards/GlassCard/GlassCard.module.css +0 -71
  311. package/src/Cards/GlassCard/GlassCard.tsx +0 -80
  312. package/src/Display/Accordion/Accordion.module.css +0 -69
  313. package/src/Display/Accordion/Accordion.tsx +0 -61
  314. package/src/Display/Accordion/AccordionItem.tsx +0 -135
  315. package/src/Display/Chip/Chip.module.css +0 -64
  316. package/src/Display/Chip/Chip.tsx +0 -105
  317. package/src/Display/IdentityDisplay/IdentityDisplay.module.css +0 -95
  318. package/src/Display/IdentityDisplay/IdentityDisplay.tsx +0 -119
  319. package/src/Display/InputErrors/InputErrors.module.css +0 -6
  320. package/src/Display/InputErrors/InputErrors.tsx +0 -52
  321. package/src/Display/Kbd/Kbd.module.css +0 -29
  322. package/src/Display/Kbd/Kbd.tsx +0 -39
  323. package/src/Display/Kbd/buttonList.tsx +0 -246
  324. package/src/Display/LabeledValue/LabeledValue.module.css +0 -32
  325. package/src/Display/LabeledValue/LabeledValue.tsx +0 -20
  326. package/src/Display/List/List.module.css +0 -143
  327. package/src/Display/List/List.tsx +0 -298
  328. package/src/Display/PasswordStrength/PasswordStrength.module.css +0 -45
  329. package/src/Display/PasswordStrength/PasswordStrength.tsx +0 -41
  330. package/src/Display/PasswordStrength/usePasswordStrength.tsx +0 -77
  331. package/src/Display/Skeleton/Skeleton.module.css +0 -54
  332. package/src/Display/Skeleton/Skeleton.tsx +0 -28
  333. package/src/Display/Toast/Toaster.tsx +0 -58
  334. package/src/Display/Toast/toast.ts +0 -44
  335. package/src/Display/Tooltip/Tooltip.module.css +0 -128
  336. package/src/Display/Tooltip/Tooltip.tsx +0 -93
  337. package/src/Display/Tooltip/getArrowDirection.ts +0 -55
  338. package/src/Display/Tooltip/useTooltip.tsx +0 -63
  339. package/src/Forms/ConfirmationForm/ConfirmationForm.module.css +0 -23
  340. package/src/Forms/ConfirmationForm/ConfirmationForm.tsx +0 -60
  341. package/src/Inputs/Button/Button.module.css +0 -131
  342. package/src/Inputs/Button/Button.tsx +0 -178
  343. package/src/Inputs/Checkbox/Checkbox.module.css +0 -77
  344. package/src/Inputs/Checkbox/Checkbox.tsx +0 -191
  345. package/src/Inputs/Checkbox/CheckboxGroup/CheckboxGroup.module.css +0 -10
  346. package/src/Inputs/Checkbox/CheckboxGroup/CheckboxGroup.tsx +0 -83
  347. package/src/Inputs/Checkbox/CheckboxSelectAll.tsx +0 -34
  348. package/src/Inputs/PasswordInput/PasswordInput.module.css +0 -111
  349. package/src/Inputs/PasswordInput/PasswordInput.tsx +0 -229
  350. package/src/Inputs/Select/Select.module.css +0 -138
  351. package/src/Inputs/Select/Select.tsx +0 -136
  352. package/src/Inputs/Switch/Switch.module.css +0 -119
  353. package/src/Inputs/Switch/Switch.tsx +0 -195
  354. package/src/Inputs/TextAreaInput/TextAreaInput.module.css +0 -65
  355. package/src/Inputs/TextAreaInput/TextAreaInput.tsx +0 -97
  356. package/src/Inputs/TextInput/TextInput.module.css +0 -112
  357. package/src/Inputs/TextInput/TextInput.tsx +0 -142
  358. package/src/Inputs/ThemeToggle/ThemeToggleListItem.tsx +0 -80
  359. package/src/Inputs/ThemeToggle/_index.ts +0 -1
  360. package/src/Layout/Dialog/Dialog.module.css +0 -15
  361. package/src/Layout/Dialog/Dialog.tsx +0 -115
  362. package/src/Layout/PageLayout/PageLayout.module.css +0 -20
  363. package/src/Layout/PageLayout/PageLayout.tsx +0 -79
  364. package/src/Layout/PageLayoutPagination/PageLayoutPagination.module.css +0 -5
  365. package/src/Layout/PageLayoutPagination/PageLayoutPagination.tsx +0 -40
  366. package/src/Layout/PageLayoutTabs/PageLayoutTabs.module.css +0 -3
  367. package/src/Layout/PageLayoutTabs/PageLayoutTabs.tsx +0 -62
  368. package/src/Layout/Popover/Popover.module.css +0 -9
  369. package/src/Layout/Popover/Popover.tsx +0 -145
  370. package/src/Layout/SectionWrapper/SectionWrapper.module.css +0 -31
  371. package/src/Layout/SectionWrapper/SectionWrapper.tsx +0 -62
  372. package/src/Layout/Sidebar/Sidebar.module.css +0 -17
  373. package/src/Layout/Sidebar/Sidebar.tsx +0 -39
  374. package/src/Layout/Sidebar/SidebarBody/SidebarBody.module.css +0 -31
  375. package/src/Layout/Sidebar/SidebarBody/SidebarBody.tsx +0 -18
  376. package/src/Layout/Sidebar/SidebarDrawer/SidebarDrawer.module.css +0 -20
  377. package/src/Layout/Sidebar/SidebarDrawer/SidebarDrawer.tsx +0 -19
  378. package/src/Layout/Sidebar/SidebarFooter/SidebarFooter.module.css +0 -35
  379. package/src/Layout/Sidebar/SidebarFooter/SidebarFooter.tsx +0 -19
  380. package/src/Layout/Sidebar/SidebarHeader/SidebarHeader.tsx +0 -14
  381. package/src/Layout/Sidebar/SidebarViewport/SidebarViewport.module.css +0 -12
  382. package/src/Layout/Sidebar/SidebarViewport/SidebarViewport.tsx +0 -11
  383. package/src/Layout/Table/Table.module.css +0 -46
  384. package/src/Layout/Table/Table.tsx +0 -222
  385. package/src/Layout/Table/TableFooter.tsx +0 -4
  386. package/src/Layout/Table/TableHeader.tsx +0 -4
  387. package/src/Layout/Table/tableUtils.ts +0 -142
  388. package/src/Layout/Table/types.ts +0 -48
  389. package/src/Misc/Cursor/Cursor.module.css +0 -31
  390. package/src/Misc/Cursor/Cursor.tsx +0 -77
  391. package/src/Misc/Logos.tsx +0 -230
  392. package/src/Misc/PoweredByBanner/PoweredByBanner.module.css +0 -20
  393. package/src/Misc/PoweredByBanner/PoweredByBanner.tsx +0 -17
  394. package/src/Misc/Ripple/Ripple.module.css +0 -25
  395. package/src/Misc/Ripple/Ripple.tsx +0 -126
  396. package/src/Misc/Spinner/Spinner.module.css +0 -38
  397. package/src/Misc/Spinner/Spinner.tsx +0 -36
  398. package/src/Misc/TransitionAnimation/TransitionAnimation.module.css +0 -131
  399. package/src/Misc/TransitionAnimation/TransitionAnimation.tsx +0 -166
  400. package/src/Navigation/Breadcrumbs/Breadcrumbs.module.css +0 -22
  401. package/src/Navigation/Breadcrumbs/Breadcrumbs.tsx +0 -127
  402. package/src/Navigation/Breadcrumbs/BreadcrumbsItem.tsx +0 -31
  403. package/src/Navigation/Breadcrumbs/useBreadcrumbs.tsx +0 -74
  404. package/src/Navigation/Pagination/Pagination.module.css +0 -41
  405. package/src/Navigation/Pagination/Pagination.tsx +0 -187
  406. package/src/Navigation/Pagination/PaginationItem.tsx +0 -28
  407. package/src/Navigation/Pagination/usePagination.tsx +0 -65
  408. package/src/Navigation/Tabs/Tab/Tab.module.css +0 -43
  409. package/src/Navigation/Tabs/Tab/Tab.tsx +0 -155
  410. package/src/Navigation/Tabs/Tabs.tsx +0 -37
  411. package/src/Navigation/Tabs/TabsBar/TabsBar.module.css +0 -47
  412. package/src/Navigation/Tabs/TabsBar/TabsBar.tsx +0 -92
  413. package/src/Typography/ClampedText/ClampedText.module.css +0 -5
  414. package/src/Typography/ClampedText/ClampedText.tsx +0 -77
  415. package/src/Typography/CopyableText/CopyableText.module.css +0 -21
  416. package/src/Typography/CopyableText/CopyableText.tsx +0 -120
  417. package/src/Typography/PageTitle/PageTitle.module.css +0 -47
  418. package/src/Typography/PageTitle/PageTitle.tsx +0 -35
  419. package/src/declaration.d.ts +0 -4
  420. package/tsconfig.json +0 -32
  421. /package/{src/Cards/CollectionItemCard/_index.ts → dist/Cards/CollectionItemCard/_index.d.ts} +0 -0
  422. /package/{src/Cards/_index.ts → dist/Cards/_index.d.ts} +0 -0
  423. /package/{src/Display/Accordion/_index.ts → dist/Display/Accordion/_index.d.ts} +0 -0
  424. /package/{src/Display/Kbd/_index.ts → dist/Display/Kbd/_index.d.ts} +0 -0
  425. /package/{src/Display/Toast/_index.ts → dist/Display/Toast/_index.d.ts} +0 -0
  426. /package/{src/Display/_index.ts → dist/Display/_index.d.ts} +0 -0
  427. /package/{src/Forms/_index.ts → dist/Forms/_index.d.ts} +0 -0
  428. /package/{src/Inputs/Checkbox/_index.ts → dist/Inputs/Checkbox/_index.d.ts} +0 -0
  429. /package/{src/Inputs/_index.ts → dist/Inputs/_index.d.ts} +0 -0
  430. /package/{src/Layout/Sidebar/_index.ts → dist/Layout/Sidebar/_index.d.ts} +0 -0
  431. /package/{src/Layout/Table/_index.ts → dist/Layout/Table/_index.d.ts} +0 -0
  432. /package/{src/Misc/_index.ts → dist/Misc/_index.d.ts} +0 -0
  433. /package/{src/Navigation/Breadcrumbs/_index.ts → dist/Navigation/Breadcrumbs/_index.d.ts} +0 -0
  434. /package/{src/Navigation/Pagination/_index.ts → dist/Navigation/Pagination/_index.d.ts} +0 -0
  435. /package/{src/Navigation/Tabs/_index.ts → dist/Navigation/Tabs/_index.d.ts} +0 -0
  436. /package/{src/Navigation/_index.ts → dist/Navigation/_index.d.ts} +0 -0
  437. /package/{src/Typography/_index.ts → dist/Typography/_index.d.ts} +0 -0
  438. /package/{src/index.ts → dist/index.d.ts} +0 -0
@@ -0,0 +1,49 @@
1
+ import type { PolymorphicComponentProps, PolymorphicComponentType } from "@studiocubics/types";
2
+ import { type ElementType } from "react";
3
+ /**
4
+ * Props specific to the Card component.
5
+ *
6
+ * These extend the intrinsic element props of whatever element is passed via `as`.
7
+ * @group Card
8
+ * @category inputs
9
+ */
10
+ export interface CardBaseProps {
11
+ /** Visual style variant.
12
+ * @default "contained"
13
+ */
14
+ variant?: "contained" | "outlined";
15
+ /** Expands width to 100%. */
16
+ fullWidth?: boolean;
17
+ /** Force a 1:1 aspect ratio. */
18
+ square?: boolean;
19
+ /** Card size.
20
+ * @default "md"
21
+ */
22
+ size?: "sm" | "md" | "lg";
23
+ }
24
+ declare const defaultElement = "div";
25
+ type DefaultElement = typeof defaultElement;
26
+ /**
27
+ * Polymorphic props for the Card component.
28
+ *
29
+ * `C` defines the element type rendered by the component (e.g. `"Card"`, `"a"`, `"div"`).
30
+ * All intrinsic props for `C` are supported unless overridden by `CardBaseProps`.
31
+ *
32
+ * @group Card
33
+ * @category inputs
34
+ */
35
+ export type CardProps<C extends ElementType = DefaultElement> = PolymorphicComponentProps<C, CardBaseProps>;
36
+ /**
37
+ * A polymorphic Card component.
38
+ *
39
+ * By default it renders a `<Card>`, but any element can be used via the `as` prop:
40
+ *
41
+ * ```tsx
42
+ * <Card as="a" href="/docs">Read docs</Card>
43
+ * ```
44
+ *
45
+ * @group Card
46
+ * @category inputs
47
+ */
48
+ export declare const Card: PolymorphicComponentType<CardBaseProps, DefaultElement>;
49
+ export {};
@@ -0,0 +1,45 @@
1
+ 'use client';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import 'react';
4
+ import { cn } from '@studiocubics/utils';
5
+ import styles from './Card.module.css.js';
6
+
7
+ const defaultElement = "div";
8
+ /**
9
+ * Base implementation for the Card component.
10
+ *
11
+ * This is a polymorphic component that defaults to rendering a `<Card>`.
12
+ * Use the `as` prop to change the underlying element.
13
+ *
14
+ * @typeParam C - The intrinsic or custom element type to render.
15
+ *
16
+ * @group Card
17
+ * @category inputs
18
+ */
19
+ function CardBase(props) {
20
+ const { as, className, variant = "contained", size = "md", fullWidth = false, square, ref, ...restProps } = props;
21
+ const Component = (as || defaultElement);
22
+ const componentProps = {
23
+ className: cn(className, square ? styles.square : "", fullWidth ? styles.fullWidth : "", styles[`size_${size}`], styles[variant]),
24
+ ref,
25
+ ...restProps,
26
+ };
27
+ return jsx(Component, { ...componentProps });
28
+ }
29
+ CardBase.displayName = "Card";
30
+ /**
31
+ * A polymorphic Card component.
32
+ *
33
+ * By default it renders a `<Card>`, but any element can be used via the `as` prop:
34
+ *
35
+ * ```tsx
36
+ * <Card as="a" href="/docs">Read docs</Card>
37
+ * ```
38
+ *
39
+ * @group Card
40
+ * @category inputs
41
+ */
42
+ const Card = CardBase;
43
+
44
+ export { Card };
45
+ //# sourceMappingURL=Card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.js","sources":["../../../src/Cards/Card/Card.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n PolymorphicComponentProps,\n PolymorphicComponentType,\n} from \"@studiocubics/types\";\nimport { type ElementType } from \"react\";\n\nimport { cn } from \"@studiocubics/utils\";\nimport styles from \"./Card.module.css\";\n\n/**\n * Props specific to the Card component.\n *\n * These extend the intrinsic element props of whatever element is passed via `as`.\n * @group Card\n * @category inputs\n */\nexport interface CardBaseProps {\n /** Visual style variant.\n * @default \"contained\"\n */\n variant?: \"contained\" | \"outlined\";\n\n /** Expands width to 100%. */\n fullWidth?: boolean;\n\n /** Force a 1:1 aspect ratio. */\n square?: boolean;\n\n /** Card size.\n * @default \"md\"\n */\n size?: \"sm\" | \"md\" | \"lg\";\n}\nconst defaultElement = \"div\";\ntype DefaultElement = typeof defaultElement;\n/**\n * Polymorphic props for the Card component.\n *\n * `C` defines the element type rendered by the component (e.g. `\"Card\"`, `\"a\"`, `\"div\"`).\n * All intrinsic props for `C` are supported unless overridden by `CardBaseProps`.\n *\n * @group Card\n * @category inputs\n */\nexport type CardProps<C extends ElementType = DefaultElement> =\n PolymorphicComponentProps<C, CardBaseProps>;\n\n/**\n * Base implementation for the Card component.\n *\n * This is a polymorphic component that defaults to rendering a `<Card>`.\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 Card\n * @category inputs\n */\nfunction CardBase<C extends ElementType = DefaultElement>(props: CardProps<C>) {\n const {\n as,\n className,\n variant = \"contained\",\n size = \"md\",\n fullWidth = false,\n square,\n ref,\n ...restProps\n } = props;\n const Component = (as || defaultElement) as ElementType;\n\n const componentProps = {\n className: cn(\n className,\n square ? styles.square : \"\",\n fullWidth ? styles.fullWidth : \"\",\n styles[`size_${size}`],\n styles[variant]\n ),\n ref,\n ...restProps,\n };\n\n return <Component {...componentProps} />;\n}\nCardBase.displayName = \"Card\";\n\n/**\n * A polymorphic Card component.\n *\n * By default it renders a `<Card>`, but any element can be used via the `as` prop:\n *\n * ```tsx\n * <Card as=\"a\" href=\"/docs\">Read docs</Card>\n * ```\n *\n * @group Card\n * @category inputs\n */\nexport const Card = CardBase as PolymorphicComponentType<\n CardBaseProps,\n DefaultElement\n>;\n"],"names":["_jsx"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var styles = {"square":"Card-module_square__SK-KQ","fullWidth":"Card-module_fullWidth__pIEIZ","size_sm":"Card-module_size_sm__B3eSI","size_md":"Card-module_size_md__15alI","size_lg":"Card-module_size_lg__HCTUY","outlined":"Card-module_outlined__TPads","contained":"Card-module_contained__EFPqh"};
2
+
3
+ export { styles as default };
4
+ //# sourceMappingURL=Card.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,55 @@
1
+ import type { ComponentProps, ElementType, ReactNode } from "react";
2
+ import type { PolymorphicComponentProps, PolymorphicComponentType } from "@studiocubics/types";
3
+ import { type ClampedTextProps } from "../../Typography/ClampedText/ClampedText";
4
+ import { type ChipProps } from "../../Display/Chip/Chip";
5
+ /**
6
+ * Props specific to the CollectionItemCard component.
7
+ *
8
+ * These extend the intrinsic element props of whatever element is passed via `as`.
9
+ * @group CollectionItemCard
10
+ * @category inputs
11
+ */
12
+ export interface CollectionItemCardBaseProps {
13
+ thumbnail?: ReactNode;
14
+ title: ReactNode;
15
+ chip?: ReactNode;
16
+ subtitle?: ReactNode;
17
+ description?: ReactNode;
18
+ footer?: ReactNode;
19
+ slotProps?: {
20
+ root?: ComponentProps<"div">;
21
+ chip?: ChipProps;
22
+ thumbnail?: ComponentProps<"div">;
23
+ titleContainer?: ComponentProps<"div">;
24
+ title?: ClampedTextProps;
25
+ subtitle?: ClampedTextProps;
26
+ description?: ClampedTextProps;
27
+ footerContainer?: ComponentProps<"div">;
28
+ };
29
+ }
30
+ declare const defaultElement = "a";
31
+ type DefaultElement = typeof defaultElement;
32
+ /**
33
+ * Polymorphic props for the CollectionItemCard component.
34
+ *
35
+ * `C` defines the element type rendered by the component (e.g. `"CollectionItemCard"`, `"a"`, `"div"`).
36
+ * All intrinsic props for `C` are supported unless overridden by `CollectionItemCardBaseProps`.
37
+ *
38
+ * @group CollectionItemCard
39
+ * @category inputs
40
+ */
41
+ export type CollectionItemCardProps<C extends ElementType = DefaultElement> = PolymorphicComponentProps<C, CollectionItemCardBaseProps>;
42
+ /**
43
+ * A polymorphic CollectionItemCard component.
44
+ *
45
+ * By default it renders a `<CollectionItemCard>`, but any element can be used via the `as` prop:
46
+ *
47
+ * ```tsx
48
+ * <CollectionItemCard as="a" href="/docs">Read docs</CollectionItemCard>
49
+ * ```
50
+ *
51
+ * @group CollectionItemCard
52
+ * @category inputs
53
+ */
54
+ export declare const CollectionItemCard: PolymorphicComponentType<CollectionItemCardBaseProps, DefaultElement>;
55
+ export {};
@@ -0,0 +1,48 @@
1
+ 'use client';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import styles from './CollectionItemCard.module.css.js';
4
+ import { cn } from '@studiocubics/utils';
5
+ import { ClampedText } from '../../Typography/ClampedText/ClampedText.js';
6
+ import { Chip } from '../../Display/Chip/Chip.js';
7
+
8
+ const defaultElement = "a";
9
+ /**
10
+ * Base implementation for the CollectionItemCard component.
11
+ *
12
+ * This is a polymorphic component that defaults to rendering a `<CollectionItemCard>`.
13
+ * Use the `as` prop to change the underlying element.
14
+ *
15
+ * @typeParam C - The intrinsic or custom element type to render.
16
+ *
17
+ * @group CollectionItemCard
18
+ * @category inputs
19
+ */
20
+ function CollectionItemCardBase(props) {
21
+ const { as, className, ref, thumbnail, title, chip, subtitle, description, footer, slotProps = {}, ...restProps } = props;
22
+ const Component = as || defaultElement;
23
+ const clickable = !!props.href || !!props.onClick;
24
+ const componentProps = {
25
+ className: cn(className, styles.main),
26
+ ref,
27
+ ...restProps,
28
+ };
29
+ return (jsxs("div", { ...slotProps.root, className: cn(styles.root, clickable ? styles.clickable : "", slotProps.root?.className), children: [thumbnail && (jsx("div", { ...slotProps.thumbnail, className: cn(styles.image, slotProps.thumbnail?.className), children: thumbnail })), jsxs(Component, { ...componentProps, children: [jsxs("div", { ...slotProps.titleContainer, className: cn(styles.title, slotProps.titleContainer?.className), children: [chip &&
30
+ (typeof chip == "string" ? (jsx(Chip, { size: "sm", ...slotProps.chip, children: chip })) : (chip)), jsx(ClampedText, { as: "h4", ...slotProps.title, children: title })] }), subtitle && (jsx(ClampedText, { ...slotProps.subtitle, className: cn(styles.subtitle, slotProps.subtitle?.className), children: subtitle })), description && (jsx(ClampedText, { ...slotProps.description, className: cn(styles.description, slotProps.description?.className), children: description }))] }), footer && (jsx("div", { ...slotProps.footerContainer, className: cn(styles.footer, slotProps.footerContainer?.className), children: footer }))] }));
31
+ }
32
+ CollectionItemCardBase.displayName = "CollectionItemCard";
33
+ /**
34
+ * A polymorphic CollectionItemCard component.
35
+ *
36
+ * By default it renders a `<CollectionItemCard>`, but any element can be used via the `as` prop:
37
+ *
38
+ * ```tsx
39
+ * <CollectionItemCard as="a" href="/docs">Read docs</CollectionItemCard>
40
+ * ```
41
+ *
42
+ * @group CollectionItemCard
43
+ * @category inputs
44
+ */
45
+ const CollectionItemCard = CollectionItemCardBase;
46
+
47
+ export { CollectionItemCard };
48
+ //# sourceMappingURL=CollectionItemCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollectionItemCard.js","sources":["../../../src/Cards/CollectionItemCard/CollectionItemCard.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ComponentProps, ElementType, ReactNode } from \"react\";\nimport styles from \"./CollectionItemCard.module.css\";\nimport type {\n PolymorphicComponentProps,\n PolymorphicComponentType,\n} from \"@studiocubics/types\";\nimport { cn } from \"@studiocubics/utils\";\nimport {\n ClampedText,\n type ClampedTextProps,\n} from \"../../Typography/ClampedText/ClampedText\";\nimport { Chip, type ChipProps } from \"../../Display/Chip/Chip\";\n/**\n * Props specific to the CollectionItemCard component.\n *\n * These extend the intrinsic element props of whatever element is passed via `as`.\n * @group CollectionItemCard\n * @category inputs\n */\nexport interface CollectionItemCardBaseProps {\n thumbnail?: ReactNode;\n title: ReactNode;\n chip?: ReactNode;\n subtitle?: ReactNode;\n description?: ReactNode;\n footer?: ReactNode;\n slotProps?: {\n root?: ComponentProps<\"div\">;\n chip?: ChipProps;\n thumbnail?: ComponentProps<\"div\">;\n titleContainer?: ComponentProps<\"div\">;\n title?: ClampedTextProps;\n subtitle?: ClampedTextProps;\n description?: ClampedTextProps;\n footerContainer?: ComponentProps<\"div\">;\n };\n}\nconst defaultElement = \"a\";\ntype DefaultElement = typeof defaultElement;\n/**\n * Polymorphic props for the CollectionItemCard component.\n *\n * `C` defines the element type rendered by the component (e.g. `\"CollectionItemCard\"`, `\"a\"`, `\"div\"`).\n * All intrinsic props for `C` are supported unless overridden by `CollectionItemCardBaseProps`.\n *\n * @group CollectionItemCard\n * @category inputs\n */\nexport type CollectionItemCardProps<C extends ElementType = DefaultElement> =\n PolymorphicComponentProps<C, CollectionItemCardBaseProps>;\n\n/**\n * Base implementation for the CollectionItemCard component.\n *\n * This is a polymorphic component that defaults to rendering a `<CollectionItemCard>`.\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 CollectionItemCard\n * @category inputs\n */\nfunction CollectionItemCardBase<C extends ElementType = DefaultElement>(\n props: CollectionItemCardProps<C>,\n) {\n const {\n as,\n className,\n ref,\n thumbnail,\n title,\n chip,\n subtitle,\n description,\n footer,\n slotProps = {},\n ...restProps\n } = props;\n const Component = as || defaultElement;\n\n const clickable = !!props.href || !!props.onClick;\n const componentProps = {\n className: cn(className, styles.main),\n ref,\n ...restProps,\n };\n\n return (\n <div\n {...slotProps.root}\n className={cn(\n styles.root,\n clickable ? styles.clickable : \"\",\n slotProps.root?.className,\n )}\n >\n {thumbnail && (\n <div\n {...slotProps.thumbnail}\n className={cn(styles.image, slotProps.thumbnail?.className)}\n >\n {thumbnail}\n </div>\n )}\n <Component {...componentProps}>\n <div\n {...slotProps.titleContainer}\n className={cn(styles.title, slotProps.titleContainer?.className)}\n >\n {chip &&\n (typeof chip == \"string\" ? (\n <Chip size=\"sm\" {...slotProps.chip}>\n {chip}\n </Chip>\n ) : (\n chip\n ))}\n <ClampedText as=\"h4\" {...slotProps.title}>\n {title}\n </ClampedText>\n </div>\n {subtitle && (\n <ClampedText\n {...slotProps.subtitle}\n className={cn(styles.subtitle, slotProps.subtitle?.className)}\n >\n {subtitle}\n </ClampedText>\n )}\n {description && (\n <ClampedText\n {...slotProps.description}\n className={cn(styles.description, slotProps.description?.className)}\n >\n {description}\n </ClampedText>\n )}\n </Component>\n {footer && (\n <div\n {...slotProps.footerContainer}\n className={cn(styles.footer, slotProps.footerContainer?.className)}\n >\n {footer}\n </div>\n )}\n </div>\n );\n}\nCollectionItemCardBase.displayName = \"CollectionItemCard\";\n\n/**\n * A polymorphic CollectionItemCard component.\n *\n * By default it renders a `<CollectionItemCard>`, but any element can be used via the `as` prop:\n *\n * ```tsx\n * <CollectionItemCard as=\"a\" href=\"/docs\">Read docs</CollectionItemCard>\n * ```\n *\n * @group CollectionItemCard\n * @category inputs\n */\nexport const CollectionItemCard =\n CollectionItemCardBase as PolymorphicComponentType<\n CollectionItemCardBaseProps,\n DefaultElement\n >;\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var styles = {"root":"CollectionItemCard-module_root__v3IlF","image":"CollectionItemCard-module_image__TfkAn","main":"CollectionItemCard-module_main__47qRO","description":"CollectionItemCard-module_description__BQapV","subtitle":"CollectionItemCard-module_subtitle__gThMk","clickable":"CollectionItemCard-module_clickable__d3rRV","title":"CollectionItemCard-module_title__B-sLi","footer":"CollectionItemCard-module_footer__-8LZo"};
2
+
3
+ export { styles as default };
4
+ //# sourceMappingURL=CollectionItemCard.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollectionItemCard.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,19 @@
1
+ import { type ElementType, type ReactNode } from "react";
2
+ import { type ButtonProps } from "../../Inputs/Button/Button";
3
+ export type DocumentAction<C extends ElementType = "a"> = {
4
+ label?: string;
5
+ } & (({
6
+ actionType: "popover";
7
+ popoverChildren: ReactNode;
8
+ icon: ReactNode;
9
+ } & ButtonProps<C>) | {
10
+ actionType: "node";
11
+ children: ReactNode;
12
+ } | ({
13
+ actionType: "link";
14
+ href: string;
15
+ icon: ReactNode;
16
+ } & ButtonProps));
17
+ export declare function CollectionItemCardActions({ actions, }: {
18
+ actions: DocumentAction[];
19
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,34 @@
1
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
+ import { useAnchorElement } from '@studiocubics/hooks';
3
+ import { Fragment as Fragment$1 } from 'react';
4
+ import { Button } from '../../Inputs/Button/Button.js';
5
+ import { Tooltip } from '../../Display/Tooltip/Tooltip.js';
6
+ import { Popover } from '../../Layout/Popover/Popover.js';
7
+
8
+ function CollectionItemCardActions({ actions, }) {
9
+ return (jsx(Fragment, { children: actions.map((action, i) => {
10
+ switch (action.actionType) {
11
+ case "popover":
12
+ return jsx(PopoverTypeAction, { action: action }, i);
13
+ case "link":
14
+ return jsx(LinkTypeAction, { action: action }, i);
15
+ default:
16
+ return jsx(Fragment$1, { children: action.children }, i);
17
+ }
18
+ }) }));
19
+ }
20
+ function PopoverTypeAction({ action, }) {
21
+ const { actionType: _, icon, popoverChildren, onClick, ...rest } = action;
22
+ const { anchorEl, open, handleClick, handleClose } = useAnchorElement();
23
+ return (jsxs(Fragment, { children: [jsx(Tooltip, { renderArrow: true, title: action.label, children: jsx(Button, { ...rest, onClick: (e) => {
24
+ handleClick(e);
25
+ onClick?.(e);
26
+ }, children: icon }) }), jsx(Popover, { open: open, anchorEl: anchorEl, onClose: handleClose, children: popoverChildren })] }));
27
+ }
28
+ function LinkTypeAction({ action, }) {
29
+ const { actionType: _, icon, ...rest } = action;
30
+ return (jsx(Tooltip, { renderArrow: true, title: action.label, children: jsx(Button, { ...rest, children: icon }) }));
31
+ }
32
+
33
+ export { CollectionItemCardActions };
34
+ //# sourceMappingURL=CollectionItemCardActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollectionItemCardActions.js","sources":["../../../src/Cards/CollectionItemCard/CollectionItemCardActions.tsx"],"sourcesContent":["import { useAnchorElement } from \"@studiocubics/hooks\";\nimport {\n type ElementType,\n type ReactNode,\n type MouseEvent,\n Fragment,\n} from \"react\";\nimport { Button, type ButtonProps } from \"../../Inputs/Button/Button\";\nimport { Tooltip } from \"../../Display/Tooltip/Tooltip\";\nimport { Popover } from \"../../Layout/Popover/Popover\";\n\nexport type DocumentAction<C extends ElementType = \"a\"> = {\n label?: string;\n} & (\n | ({\n actionType: \"popover\";\n popoverChildren: ReactNode;\n icon: ReactNode;\n } & ButtonProps<C>)\n | { actionType: \"node\"; children: ReactNode }\n | ({\n actionType: \"link\";\n href: string;\n icon: ReactNode;\n } & ButtonProps) //TODO Avoid 'as' conflict\n);\nexport function CollectionItemCardActions({\n actions,\n}: {\n actions: DocumentAction[];\n}) {\n return (\n <>\n {actions.map((action, i) => {\n switch (action.actionType) {\n case \"popover\":\n return <PopoverTypeAction key={i} action={action} />;\n case \"link\":\n return <LinkTypeAction key={i} action={action} />;\n default:\n return <Fragment key={i}>{action.children}</Fragment>;\n }\n })}\n </>\n );\n}\n\nfunction PopoverTypeAction({\n action,\n}: {\n action: DocumentAction & { actionType: \"popover\" };\n}) {\n const { actionType: _, icon, popoverChildren, onClick, ...rest } = action;\n const { anchorEl, open, handleClick, handleClose } = useAnchorElement();\n return (\n <>\n <Tooltip renderArrow title={action.label}>\n <Button\n {...rest}\n onClick={(e: MouseEvent<HTMLAnchorElement>) => {\n handleClick(e);\n onClick?.(e);\n }}\n >\n {icon}\n </Button>\n </Tooltip>\n <Popover open={open} anchorEl={anchorEl} onClose={handleClose}>\n {popoverChildren}\n </Popover>\n </>\n );\n}\nfunction LinkTypeAction({\n action,\n}: {\n action: DocumentAction & { actionType: \"link\" };\n}) {\n const { actionType: _, icon, ...rest } = action;\n return (\n <Tooltip renderArrow title={action.label}>\n <Button {...rest}>{icon}</Button>\n </Tooltip>\n );\n}\n"],"names":["_jsx","_Fragment","Fragment","_jsxs"],"mappings":";;;;;;;AA0BM,SAAU,yBAAyB,CAAC,EACxC,OAAO,GAGR,EAAA;IACC,QACEA,GAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EACG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAI;AACzB,YAAA,QAAQ,MAAM,CAAC,UAAU;AACvB,gBAAA,KAAK,SAAS;oBACZ,OAAOD,GAAA,CAAC,iBAAiB,EAAA,EAAS,MAAM,EAAE,MAAM,EAAA,EAAjB,CAAC,CAAoB;AACtD,gBAAA,KAAK,MAAM;oBACT,OAAOA,GAAA,CAAC,cAAc,EAAA,EAAS,MAAM,EAAE,MAAM,EAAA,EAAjB,CAAC,CAAoB;AACnD,gBAAA;oBACE,OAAOA,GAAA,CAACE,UAAQ,EAAA,EAAA,QAAA,EAAU,MAAM,CAAC,QAAQ,EAAA,EAAnB,CAAC,CAA8B;;QAE3D,CAAC,CAAC,EAAA,CACD;AAEP;AAEA,SAAS,iBAAiB,CAAC,EACzB,MAAM,GAGP,EAAA;AACC,IAAA,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;AACzE,IAAA,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,gBAAgB,EAAE;IACvE,QACEC,4BACEH,GAAA,CAAC,OAAO,IAAC,WAAW,EAAA,IAAA,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAA,QAAA,EACtCA,GAAA,CAAC,MAAM,EAAA,EAAA,GACD,IAAI,EACR,OAAO,EAAE,CAAC,CAAgC,KAAI;wBAC5C,WAAW,CAAC,CAAC,CAAC;AACd,wBAAA,OAAO,GAAG,CAAC,CAAC;oBACd,CAAC,EAAA,QAAA,EAEA,IAAI,EAAA,CACE,EAAA,CACD,EACVA,IAAC,OAAO,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,YAC1D,eAAe,EAAA,CACR,CAAA,EAAA,CACT;AAEP;AACA,SAAS,cAAc,CAAC,EACtB,MAAM,GAGP,EAAA;AACC,IAAA,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;IAC/C,QACEA,IAAC,OAAO,EAAA,EAAC,WAAW,EAAA,IAAA,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAA,QAAA,EACtCA,GAAA,CAAC,MAAM,EAAA,EAAA,GAAK,IAAI,YAAG,IAAI,EAAA,CAAU,EAAA,CACzB;AAEd;;;;"}
@@ -0,0 +1,7 @@
1
+ import type { PolymorphicComponentProps, PolymorphicComponentType } from "@studiocubics/types";
2
+ import { type ElementType } from "react";
3
+ declare const defaultElement = "div";
4
+ type DefaultElement = typeof defaultElement;
5
+ export type GlassCardProps<C extends ElementType = DefaultElement> = Omit<PolymorphicComponentProps<C, object>, "ref">;
6
+ export declare const GlassCard: PolymorphicComponentType<object, DefaultElement>;
7
+ export {};
@@ -0,0 +1,52 @@
1
+ 'use client';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { useMousePosition } from '@studiocubics/hooks';
4
+ import { cn, mergeRefs } from '@studiocubics/utils';
5
+ import { useRef, useEffect } from 'react';
6
+ import styles from './GlassCard.module.css.js';
7
+
8
+ const defaultElement = "div";
9
+ // Create the base component with forwardRef
10
+ function GlassCardBase({ as, children, className, ref, ...restProps }) {
11
+ const Component = (as || defaultElement);
12
+ const { mousePosition } = useMousePosition({ includeTouch: false });
13
+ const cardRef = useRef(null);
14
+ useEffect(() => {
15
+ if (!cardRef.current)
16
+ return;
17
+ if (!mousePosition.x || !mousePosition.y)
18
+ return;
19
+ const rect = cardRef.current.getBoundingClientRect();
20
+ const x = mousePosition.x - rect.left;
21
+ const y = mousePosition.y - rect.top;
22
+ const xCenter = rect.left + rect.width / 2;
23
+ const yCenter = rect.top + rect.height / 2;
24
+ const dx = (mousePosition.x - xCenter) / rect.width;
25
+ const dy = (mousePosition.y - yCenter) / rect.height;
26
+ // Angle from card center to mouse
27
+ const angle = Math.atan2(dy, dx) * (180 / Math.PI) + 270;
28
+ // Distance normalized against window width/height
29
+ const dxGlobal = mousePosition.x - xCenter;
30
+ const dyGlobal = mousePosition.y - yCenter;
31
+ const tX = Math.min(Math.abs(dxGlobal) / window.innerWidth, 1);
32
+ const tY = Math.min(Math.abs(dyGlobal) / window.innerHeight, 1);
33
+ const t = Math.min(tX + tY, 1); // Manhattan distance capped at 1
34
+ const intensity = 1 - 0.8 * t; // maps to 0.2..1
35
+ cardRef.current.style.setProperty("--mouse-x", `${x}px`);
36
+ cardRef.current.style.setProperty("--mouse-y", `${y}px`);
37
+ cardRef.current.style.setProperty("--gradient-angle", `${angle}deg`);
38
+ cardRef.current.style.setProperty("--glass-reflection-intensity", `${intensity}`);
39
+ }, [mousePosition]);
40
+ const componentProps = {
41
+ ref: mergeRefs(ref, cardRef),
42
+ className: cn(className, styles.root),
43
+ ...restProps,
44
+ };
45
+ return jsx(Component, { ...componentProps, children: children });
46
+ }
47
+ GlassCardBase.displayName = "GlassCard";
48
+ // Type assertion to make it polymorphic
49
+ const GlassCard = GlassCardBase;
50
+
51
+ export { GlassCard };
52
+ //# sourceMappingURL=GlassCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlassCard.js","sources":["../../../src/Cards/GlassCard/GlassCard.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMousePosition } from \"@studiocubics/hooks\";\nimport type {\n PolymorphicComponentProps,\n PolymorphicComponentType,\n} from \"@studiocubics/types\";\nimport { mergeRefs, cn } from \"@studiocubics/utils\";\nimport { type ElementType, useRef, useEffect } from \"react\";\nimport styles from \"./GlassCard.module.css\";\n\nconst defaultElement = \"div\";\ntype DefaultElement = typeof defaultElement;\n\nexport type GlassCardProps<C extends ElementType = DefaultElement> = Omit<\n PolymorphicComponentProps<C, object>,\n \"ref\"\n>;\n\n// Create the base component with forwardRef\nfunction GlassCardBase<C extends ElementType = DefaultElement>({\n as,\n children,\n className,\n ref,\n ...restProps\n}: GlassCardProps<C>) {\n const Component = (as || defaultElement) as ElementType;\n const { mousePosition } = useMousePosition({ includeTouch: false });\n const cardRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!cardRef.current) return;\n if (!mousePosition.x || !mousePosition.y) return;\n\n const rect = cardRef.current.getBoundingClientRect();\n const x = mousePosition.x - rect.left;\n const y = mousePosition.y - rect.top;\n const xCenter = rect.left + rect.width / 2;\n const yCenter = rect.top + rect.height / 2;\n\n const dx = (mousePosition.x - xCenter) / rect.width;\n const dy = (mousePosition.y - yCenter) / rect.height;\n\n // Angle from card center to mouse\n const angle = Math.atan2(dy, dx) * (180 / Math.PI) + 270;\n\n // Distance normalized against window width/height\n const dxGlobal = mousePosition.x - xCenter;\n const dyGlobal = mousePosition.y - yCenter;\n const tX = Math.min(Math.abs(dxGlobal) / window.innerWidth, 1);\n const tY = Math.min(Math.abs(dyGlobal) / window.innerHeight, 1);\n const t = Math.min(tX + tY, 1); // Manhattan distance capped at 1\n const intensity = 1 - 0.8 * t; // maps to 0.2..1\n\n cardRef.current.style.setProperty(\"--mouse-x\", `${x}px`);\n cardRef.current.style.setProperty(\"--mouse-y\", `${y}px`);\n cardRef.current.style.setProperty(\"--gradient-angle\", `${angle}deg`);\n cardRef.current.style.setProperty(\n \"--glass-reflection-intensity\",\n `${intensity}`\n );\n }, [mousePosition]);\n\n const componentProps = {\n ref: mergeRefs(ref, cardRef),\n className: cn(className, styles.root),\n ...restProps,\n };\n\n return <Component {...componentProps}>{children}</Component>;\n}\n\nGlassCardBase.displayName = \"GlassCard\";\n\n// Type assertion to make it polymorphic\nexport const GlassCard = GlassCardBase as PolymorphicComponentType<\n object,\n DefaultElement\n>;\n"],"names":["_jsx"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var styles = {"root":"GlassCard-module_root__rmCxh"};
2
+
3
+ export { styles as default };
4
+ //# sourceMappingURL=GlassCard.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlassCard.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,14 @@
1
+ import { type ReactNode } from "react";
2
+ interface AccordionContextProps {
3
+ values: boolean[];
4
+ register: () => number;
5
+ update: (index: number, checked: boolean) => void;
6
+ }
7
+ interface AccordionProviderProps {
8
+ children: ReactNode;
9
+ exclusive?: boolean;
10
+ onChange?: (checked: boolean[]) => void;
11
+ }
12
+ export declare const AccordionContext: import("react").Context<AccordionContextProps | null>;
13
+ export declare function Accordion({ children, exclusive, onChange, }: AccordionProviderProps): import("react/jsx-runtime").JSX.Element;
14
+ export {};
@@ -0,0 +1,28 @@
1
+ 'use client';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { createContext, useState, useRef, useCallback } from 'react';
4
+
5
+ const AccordionContext = createContext(null);
6
+ function Accordion({ children, exclusive = false, onChange, }) {
7
+ const [values, setValues] = useState([]);
8
+ const indexRef = useRef(-1);
9
+ const register = useCallback(() => {
10
+ const index = indexRef.current++;
11
+ setValues((prev) => [...prev, false]);
12
+ return index;
13
+ }, []);
14
+ const update = useCallback((index, checked) => {
15
+ console.log("index", index, checked);
16
+ setValues((prev) => {
17
+ let next = exclusive && checked ? new Array(prev.length).fill(false) : [...prev];
18
+ next[index] = checked;
19
+ onChange?.(next);
20
+ return next;
21
+ });
22
+ }, [exclusive, onChange]);
23
+ const context = { values, register, update };
24
+ return (jsx(AccordionContext.Provider, { value: context, children: children }));
25
+ }
26
+
27
+ export { Accordion, AccordionContext };
28
+ //# sourceMappingURL=Accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Accordion.js","sources":["../../../src/Display/Accordion/Accordion.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n type ReactNode,\n useCallback,\n useRef,\n useState,\n} from \"react\";\n\ninterface AccordionContextProps {\n values: boolean[];\n register: () => number;\n update: (index: number, checked: boolean) => void;\n}\ninterface AccordionProviderProps {\n children: ReactNode;\n exclusive?: boolean;\n onChange?: (checked: boolean[]) => void;\n}\n\nexport const AccordionContext = createContext<AccordionContextProps | null>(\n null,\n);\n\nexport function Accordion({\n children,\n exclusive = false,\n onChange,\n}: AccordionProviderProps) {\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 console.log(\"index\", index, checked);\n\n setValues((prev) => {\n let next =\n exclusive && checked ? new Array(prev.length).fill(false) : [...prev];\n next[index] = checked;\n onChange?.(next);\n return next;\n });\n },\n [exclusive, onChange],\n );\n const context = { values, register, update };\n\n return (\n <AccordionContext.Provider value={context}>\n {children}\n </AccordionContext.Provider>\n );\n}\n"],"names":["_jsx"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var styles = {"summary":"Accordion-module_summary__3uXXu","highlight":"Accordion-module_highlight__YzcnA","summaryContent":"Accordion-module_summaryContent__-Wu52","marker":"Accordion-module_marker__7gmt8","root":"Accordion-module_root__-tG1G","content":"Accordion-module_content__NPbBr"};
2
+
3
+ export { styles as default };
4
+ //# sourceMappingURL=Accordion.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Accordion.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,15 @@
1
+ import { type ComponentProps, type ReactNode, type ToggleEvent } from "react";
2
+ export type AccordionProps = {
3
+ summary: ReactNode;
4
+ onToggle?: (e: ToggleEvent<HTMLDetailsElement>, current: boolean) => void;
5
+ openMarker?: ReactNode;
6
+ closeMarker?: ReactNode;
7
+ highlightOpen?: boolean;
8
+ slotProps?: {
9
+ marker?: ComponentProps<"span">;
10
+ summary?: ComponentProps<"summary">;
11
+ summaryContent?: ComponentProps<"div">;
12
+ content?: ComponentProps<"div">;
13
+ };
14
+ } & ComponentProps<"details">;
15
+ export declare function AccordionItem(props: AccordionProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,56 @@
1
+ 'use client';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { useState, useRef, useContext, useEffect } from 'react';
4
+ import { AccordionContext } from './Accordion.js';
5
+ import styles from './Accordion.module.css.js';
6
+ import { mergeRefs, cn } from '@studiocubics/utils';
7
+ import { GlassCard } from '../../Cards/GlassCard/GlassCard.js';
8
+
9
+ function AccordionItem(props) {
10
+ const { summary, open: htmlOpen, children, className, onToggle, highlightOpen = true, openMarker = jsx(OpenMarkerIcon, {}), closeMarker = jsx(CloseMarkerIcon, {}), slotProps = {}, ref, ...rest } = props;
11
+ const [index, setIndex] = useState(null);
12
+ const isRegistered = useRef(false);
13
+ const [uncontrolledOpen, setUncontrolledOpen] = useState(!!htmlOpen);
14
+ const itemRef = useRef(null);
15
+ const group = useContext(AccordionContext);
16
+ const open = group && index !== null ? group.values[index] : uncontrolledOpen;
17
+ const handleToggle = async (e) => {
18
+ const next = e.currentTarget.open;
19
+ if (group && index !== null)
20
+ group.update(index, next);
21
+ else
22
+ setUncontrolledOpen(next);
23
+ onToggle?.(e, next);
24
+ if (next) {
25
+ itemRef.current?.scrollIntoView({
26
+ block: "nearest",
27
+ inline: "nearest",
28
+ behavior: "smooth",
29
+ });
30
+ }
31
+ };
32
+ const componentProps = {
33
+ open,
34
+ onToggle: handleToggle,
35
+ className: cn(className, styles.root, open ? styles.open : ""),
36
+ ref: mergeRefs(ref, itemRef),
37
+ ...rest,
38
+ };
39
+ // Register with group if present
40
+ useEffect(() => {
41
+ if (!group || isRegistered.current)
42
+ return;
43
+ isRegistered.current = true;
44
+ setIndex(group.register());
45
+ }, [group]);
46
+ return (jsxs("details", { ...componentProps, children: [jsxs("summary", { className: cn(className, styles.summary), children: [open && highlightOpen && jsx(GlassCard, { className: styles.highlight }), jsx("div", { ...slotProps.summaryContent, className: cn(styles.summaryContent, slotProps.summaryContent?.className), children: summary }), jsx("span", { ...slotProps.marker, className: cn(styles.marker), children: open ? closeMarker : openMarker })] }), jsx("div", { ...slotProps.content, className: cn(styles.content, slotProps.content?.className), children: children })] }));
47
+ }
48
+ function OpenMarkerIcon(props) {
49
+ return (jsx("svg", { ...props, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", strokeWidth: "2.3", stroke: "currentColor", children: jsx("path", { d: "m6 9 6 6 6-6" }) }));
50
+ }
51
+ function CloseMarkerIcon(props) {
52
+ return (jsx("svg", { ...props, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", strokeWidth: "2.3", stroke: "currentColor", children: jsx("path", { d: "m18 15-6-6-6 6" }) }));
53
+ }
54
+
55
+ export { AccordionItem };
56
+ //# sourceMappingURL=AccordionItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionItem.js","sources":["../../../src/Display/Accordion/AccordionItem.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ComponentProps,\n type ReactNode,\n type ToggleEvent,\n useContext,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { AccordionContext } from \"./Accordion\";\nimport styles from \"./Accordion.module.css\";\nimport { cn, mergeRefs } from \"@studiocubics/utils\";\nimport { GlassCard } from \"../../Cards/GlassCard/GlassCard\";\n\nexport type AccordionProps = {\n summary: ReactNode;\n onToggle?: (e: ToggleEvent<HTMLDetailsElement>, current: boolean) => void;\n openMarker?: ReactNode;\n closeMarker?: ReactNode;\n highlightOpen?: boolean;\n slotProps?: {\n marker?: ComponentProps<\"span\">;\n summary?: ComponentProps<\"summary\">;\n summaryContent?: ComponentProps<\"div\">;\n content?: ComponentProps<\"div\">;\n };\n} & ComponentProps<\"details\">;\n\nexport function AccordionItem(props: AccordionProps) {\n const {\n summary,\n open: htmlOpen,\n children,\n className,\n onToggle,\n highlightOpen = true,\n openMarker = <OpenMarkerIcon />,\n closeMarker = <CloseMarkerIcon />,\n slotProps = {},\n ref,\n ...rest\n } = props;\n\n const [index, setIndex] = useState<number | null>(null);\n const isRegistered = useRef(false);\n const [uncontrolledOpen, setUncontrolledOpen] = useState(!!htmlOpen);\n const itemRef = useRef<HTMLDetailsElement | null>(null);\n const group = useContext(AccordionContext);\n\n const open = group && index !== null ? group.values[index] : uncontrolledOpen;\n\n const handleToggle = async (e: ToggleEvent<HTMLDetailsElement>) => {\n const next = e.currentTarget.open;\n if (group && index !== null) group.update(index, next);\n else setUncontrolledOpen(next);\n onToggle?.(e, next);\n if (next) {\n itemRef.current?.scrollIntoView({\n block: \"nearest\",\n inline: \"nearest\",\n behavior: \"smooth\",\n });\n }\n };\n\n const componentProps = {\n open,\n onToggle: handleToggle,\n className: cn(className, styles.root, open ? styles.open : \"\"),\n ref: mergeRefs(ref, itemRef),\n ...rest,\n };\n // Register with group if present\n useEffect(() => {\n if (!group || isRegistered.current) return;\n isRegistered.current = true;\n setIndex(group.register());\n }, [group]);\n\n return (\n <details {...componentProps}>\n <summary className={cn(className, styles.summary)}>\n {open && highlightOpen && <GlassCard className={styles.highlight} />}\n <div\n {...slotProps.summaryContent}\n className={cn(\n styles.summaryContent,\n slotProps.summaryContent?.className,\n )}\n >\n {summary}\n </div>\n <span {...slotProps.marker} className={cn(styles.marker)}>\n {open ? closeMarker : openMarker}\n </span>\n </summary>\n <div\n {...slotProps.content}\n className={cn(styles.content, slotProps.content?.className)}\n >\n {children}\n </div>\n </details>\n );\n}\nfunction OpenMarkerIcon(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 strokeWidth=\"2.3\"\n stroke=\"currentColor\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\nfunction CloseMarkerIcon(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 strokeWidth=\"2.3\"\n stroke=\"currentColor\"\n >\n <path d=\"m18 15-6-6-6 6\" />\n </svg>\n );\n}\n"],"names":["_jsx","_jsxs"],"mappings":"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"}