@plexui/ui 0.19.1 → 0.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. package/README.md +15 -138
  2. package/dist/es/components/Accordion/Accordion.js +2 -2
  3. package/dist/es/components/Accordion/Accordion.js.map +1 -1
  4. package/dist/es/components/Accordion/index.js +1 -1
  5. package/dist/es/components/Alert/Alert.js +6 -6
  6. package/dist/es/components/Alert/Alert.js.map +1 -1
  7. package/dist/es/components/Alert/index.js +1 -1
  8. package/dist/es/components/Avatar/Avatar.js +12 -5
  9. package/dist/es/components/Avatar/Avatar.js.map +1 -1
  10. package/dist/es/components/Avatar/AvatarGroup.js +2 -2
  11. package/dist/es/components/Avatar/AvatarGroup.js.map +1 -1
  12. package/dist/es/components/Avatar/index.js +2 -2
  13. package/dist/es/components/Badge/index.js +3 -3
  14. package/dist/es/components/Badge/index.js.map +1 -1
  15. package/dist/es/components/Breadcrumb/Breadcrumb.js +34 -0
  16. package/dist/es/components/Breadcrumb/Breadcrumb.js.map +1 -0
  17. package/dist/es/components/Breadcrumb/index.js +2 -0
  18. package/dist/es/components/Breadcrumb/index.js.map +1 -0
  19. package/dist/es/components/Button/Button.js +7 -7
  20. package/dist/es/components/Button/Button.js.map +1 -1
  21. package/dist/es/components/Button/CopyButton.js +25 -13
  22. package/dist/es/components/Button/CopyButton.js.map +1 -1
  23. package/dist/es/components/Button/index.js +2 -2
  24. package/dist/es/components/ButtonGroup/ButtonGroup.js +2 -2
  25. package/dist/es/components/ButtonGroup/ButtonGroup.js.map +1 -1
  26. package/dist/es/components/ButtonGroup/index.js +1 -1
  27. package/dist/es/components/Card/Card.js +4 -3
  28. package/dist/es/components/Card/Card.js.map +1 -1
  29. package/dist/es/components/Card/index.js +1 -1
  30. package/dist/es/components/Checkbox/Checkbox.js +12 -6
  31. package/dist/es/components/Checkbox/Checkbox.js.map +1 -1
  32. package/dist/es/components/Checkbox/index.js +1 -1
  33. package/dist/es/components/CodeBlock/CodeBlock.js +25 -25
  34. package/dist/es/components/CodeBlock/CodeBlock.js.map +1 -1
  35. package/dist/es/components/CodeBlock/CollapsibleCodeBlock.js +6 -4
  36. package/dist/es/components/CodeBlock/CollapsibleCodeBlock.js.map +1 -1
  37. package/dist/es/components/CodeBlock/index.js +2 -2
  38. package/dist/es/components/DataTable/DataTable.js +108 -27
  39. package/dist/es/components/DataTable/DataTable.js.map +1 -1
  40. package/dist/es/components/DataTable/DataTableColumnHeader.js +2 -2
  41. package/dist/es/components/DataTable/DataTableColumnHeader.js.map +1 -1
  42. package/dist/es/components/DataTable/DataTablePagination.js +8 -4
  43. package/dist/es/components/DataTable/DataTablePagination.js.map +1 -1
  44. package/dist/es/components/DataTable/columnHelpers.js +3 -3
  45. package/dist/es/components/DataTable/index.js +4 -4
  46. package/dist/es/components/DateInput/DateInput.js +21 -13
  47. package/dist/es/components/DateInput/DateInput.js.map +1 -1
  48. package/dist/es/components/DateInput/index.js +1 -1
  49. package/dist/es/components/DatePicker/Calendar.js +136 -32
  50. package/dist/es/components/DatePicker/Calendar.js.map +1 -1
  51. package/dist/es/components/DatePicker/DatePicker.js +15 -11
  52. package/dist/es/components/DatePicker/DatePicker.js.map +1 -1
  53. package/dist/es/components/DatePicker/index.js +1 -1
  54. package/dist/es/components/DateRangePicker/Calendar.js +125 -22
  55. package/dist/es/components/DateRangePicker/Calendar.js.map +1 -1
  56. package/dist/es/components/DateRangePicker/DateRangePicker.js +10 -9
  57. package/dist/es/components/DateRangePicker/DateRangePicker.js.map +1 -1
  58. package/dist/es/components/DateRangePicker/Trigger.js +12 -9
  59. package/dist/es/components/DateRangePicker/Trigger.js.map +1 -1
  60. package/dist/es/components/DateRangePicker/index.js +2 -2
  61. package/dist/es/components/Dialog/Dialog.js +11 -6
  62. package/dist/es/components/Dialog/Dialog.js.map +1 -1
  63. package/dist/es/components/Dialog/index.js +1 -1
  64. package/dist/es/components/Dialog/index.js.map +1 -1
  65. package/dist/es/components/EmptyMessage/EmptyMessage.js +4 -4
  66. package/dist/es/components/EmptyMessage/EmptyMessage.js.map +1 -1
  67. package/dist/es/components/EmptyMessage/index.js +1 -1
  68. package/dist/es/components/Field/Field.js +22 -7
  69. package/dist/es/components/Field/Field.js.map +1 -1
  70. package/dist/es/components/Field/index.js +1 -1
  71. package/dist/es/components/FieldError/FieldError.js +4 -4
  72. package/dist/es/components/FieldError/FieldError.js.map +1 -1
  73. package/dist/es/components/FieldError/index.js +1 -1
  74. package/dist/es/components/FileUpload/FileUpload.js +12 -9
  75. package/dist/es/components/FileUpload/FileUpload.js.map +1 -1
  76. package/dist/es/components/FileUpload/index.js +1 -1
  77. package/dist/es/components/FloatingLabelInput/FloatingLabelInput.js +31 -4
  78. package/dist/es/components/FloatingLabelInput/FloatingLabelInput.js.map +1 -1
  79. package/dist/es/components/FloatingLabelInput/index.js +1 -1
  80. package/dist/es/components/FloatingLabelSelect/FloatingLabelSelect.js +28 -8
  81. package/dist/es/components/FloatingLabelSelect/FloatingLabelSelect.js.map +1 -1
  82. package/dist/es/components/FloatingLabelSelect/index.js +1 -1
  83. package/dist/es/components/Icon/aliases.js +20 -20
  84. package/dist/es/components/Icon/index.js +653 -653
  85. package/dist/es/components/Image/Image.js +19 -7
  86. package/dist/es/components/Image/Image.js.map +1 -1
  87. package/dist/es/components/Image/index.js +1 -1
  88. package/dist/es/components/Indicator/CircularProgress.js +3 -3
  89. package/dist/es/components/Indicator/CircularProgress.js.map +1 -1
  90. package/dist/es/components/Indicator/LoadingDots.js +1 -1
  91. package/dist/es/components/Indicator/LoadingDots.js.map +1 -1
  92. package/dist/es/components/Indicator/LoadingIndicator.js +2 -2
  93. package/dist/es/components/Indicator/LoadingIndicator.js.map +1 -1
  94. package/dist/es/components/Indicator/index.js +3 -3
  95. package/dist/es/components/Input/Input.js +16 -5
  96. package/dist/es/components/Input/Input.js.map +1 -1
  97. package/dist/es/components/Input/index.js +1 -1
  98. package/dist/es/components/InputGroup/InputGroup.js +60 -0
  99. package/dist/es/components/InputGroup/InputGroup.js.map +1 -0
  100. package/dist/es/components/InputGroup/index.js +2 -0
  101. package/dist/es/components/InputGroup/index.js.map +1 -0
  102. package/dist/es/components/Kbd/Kbd.js +13 -0
  103. package/dist/es/components/Kbd/Kbd.js.map +1 -0
  104. package/dist/es/components/Kbd/index.js +2 -0
  105. package/dist/es/components/Kbd/index.js.map +1 -0
  106. package/dist/es/components/Label/Label.js +1 -1
  107. package/dist/es/components/Label/Label.js.map +1 -1
  108. package/dist/es/components/Label/index.js +1 -1
  109. package/dist/es/components/Markdown/Markdown.js +8 -8
  110. package/dist/es/components/Markdown/Markdown.js.map +1 -1
  111. package/dist/es/components/Markdown/directives.js +2 -2
  112. package/dist/es/components/Markdown/index.js +4 -5
  113. package/dist/es/components/Markdown/index.js.map +1 -1
  114. package/dist/es/components/MarkdownEditor/MarkdownEditor.js +35 -11
  115. package/dist/es/components/MarkdownEditor/MarkdownEditor.js.map +1 -1
  116. package/dist/es/components/MarkdownEditor/index.js +1 -1
  117. package/dist/es/components/Menu/Menu.js +30 -22
  118. package/dist/es/components/Menu/Menu.js.map +1 -1
  119. package/dist/es/components/Menu/index.js +1 -1
  120. package/dist/es/components/OTPInput/OTPInput.js +51 -34
  121. package/dist/es/components/OTPInput/OTPInput.js.map +1 -1
  122. package/dist/es/components/OTPInput/index.js +1 -1
  123. package/dist/es/components/PlexUIProvider/PlexUIProvider.js +3 -1
  124. package/dist/es/components/PlexUIProvider/PlexUIProvider.js.map +1 -1
  125. package/dist/es/components/PlexUIProvider/index.js +1 -1
  126. package/dist/es/components/PlexUIProvider/internal.js +1 -1
  127. package/dist/es/components/Popover/Popover.js +7 -7
  128. package/dist/es/components/Popover/Popover.js.map +1 -1
  129. package/dist/es/components/Popover/index.js +2 -3
  130. package/dist/es/components/Popover/index.js.map +1 -1
  131. package/dist/es/components/Popover/usePopoverController.js +2 -2
  132. package/dist/es/components/Progress/Progress.js +1 -1
  133. package/dist/es/components/Progress/Progress.js.map +1 -1
  134. package/dist/es/components/Progress/index.js +1 -1
  135. package/dist/es/components/ProgressSteps/ProgressSteps.js +6 -4
  136. package/dist/es/components/ProgressSteps/ProgressSteps.js.map +1 -1
  137. package/dist/es/components/ProgressSteps/index.js +1 -1
  138. package/dist/es/components/RadioGroup/RadioGroup.js +10 -6
  139. package/dist/es/components/RadioGroup/RadioGroup.js.map +1 -1
  140. package/dist/es/components/RadioGroup/index.js +1 -1
  141. package/dist/es/components/SegmentedControl/index.js +1 -1
  142. package/dist/es/components/Select/Select.js +103 -67
  143. package/dist/es/components/Select/Select.js.map +1 -1
  144. package/dist/es/components/Select/index.js +1 -1
  145. package/dist/es/components/SelectControl/SelectControl.js +10 -5
  146. package/dist/es/components/SelectControl/SelectControl.js.map +1 -1
  147. package/dist/es/components/SelectControl/index.js +1 -1
  148. package/dist/es/components/Separator/Separator.js +1 -1
  149. package/dist/es/components/Separator/Separator.js.map +1 -1
  150. package/dist/es/components/Separator/index.js +1 -1
  151. package/dist/es/components/ShimmerText/ShimmerText.js +1 -1
  152. package/dist/es/components/ShimmerText/ShimmerText.js.map +1 -1
  153. package/dist/es/components/ShimmerText/index.js +1 -1
  154. package/dist/es/components/Sidebar/Sidebar.js +37 -29
  155. package/dist/es/components/Sidebar/Sidebar.js.map +1 -1
  156. package/dist/es/components/Sidebar/index.js +2 -2
  157. package/dist/es/components/Sidebar/useSidebarContext.js +17 -19
  158. package/dist/es/components/Sidebar/useSidebarContext.js.map +1 -1
  159. package/dist/es/components/Skeleton/index.js +1 -1
  160. package/dist/es/components/Skeleton/index.js.map +1 -1
  161. package/dist/es/components/Slider/Slider.js +48 -19
  162. package/dist/es/components/Slider/Slider.js.map +1 -1
  163. package/dist/es/components/Slider/index.js +1 -1
  164. package/dist/es/components/StatCard/StatCard.js +5 -5
  165. package/dist/es/components/StatCard/StatCard.js.map +1 -1
  166. package/dist/es/components/StatCard/index.js +1 -1
  167. package/dist/es/components/Switch/Switch.js +7 -3
  168. package/dist/es/components/Switch/Switch.js.map +1 -1
  169. package/dist/es/components/Switch/index.js +1 -1
  170. package/dist/es/components/Table/Table.js +1 -1
  171. package/dist/es/components/Table/Table.js.map +1 -1
  172. package/dist/es/components/Table/index.js +1 -1
  173. package/dist/es/components/Tabs/Tabs.js +154 -6
  174. package/dist/es/components/Tabs/Tabs.js.map +1 -1
  175. package/dist/es/components/Tabs/index.js +1 -1
  176. package/dist/es/components/Tabs/overflow.js +44 -0
  177. package/dist/es/components/Tabs/overflow.js.map +1 -0
  178. package/dist/es/components/TagInput/TagInput.js +47 -23
  179. package/dist/es/components/TagInput/TagInput.js.map +1 -1
  180. package/dist/es/components/TagInput/index.js +1 -1
  181. package/dist/es/components/TextLink/TextLink.js +16 -5
  182. package/dist/es/components/TextLink/TextLink.js.map +1 -1
  183. package/dist/es/components/TextLink/index.js +1 -1
  184. package/dist/es/components/Textarea/Textarea.js +4 -4
  185. package/dist/es/components/Textarea/Textarea.js.map +1 -1
  186. package/dist/es/components/Textarea/index.js +1 -1
  187. package/dist/es/components/Toast/Toaster.js +2 -2
  188. package/dist/es/components/Toast/Toaster.js.map +1 -1
  189. package/dist/es/components/Toast/index.js +1 -1
  190. package/dist/es/components/Tooltip/CopyTooltip.js +30 -9
  191. package/dist/es/components/Tooltip/CopyTooltip.js.map +1 -1
  192. package/dist/es/components/Tooltip/Tooltip.js +3 -3
  193. package/dist/es/components/Tooltip/Tooltip.js.map +1 -1
  194. package/dist/es/components/Tooltip/index.js +2 -2
  195. package/dist/es/components/Transition/Animate.js +4 -4
  196. package/dist/es/components/Transition/Animate.js.map +1 -1
  197. package/dist/es/components/Transition/AnimateLayout.js +4 -4
  198. package/dist/es/components/Transition/AnimateLayout.js.map +1 -1
  199. package/dist/es/components/Transition/AnimateLayoutGroup.js +12 -8
  200. package/dist/es/components/Transition/AnimateLayoutGroup.js.map +1 -1
  201. package/dist/es/components/Transition/SlotTransitionGroup.js +4 -4
  202. package/dist/es/components/Transition/TransitionGroup.js +5 -5
  203. package/dist/es/components/Transition/TransitionGroup.js.map +1 -1
  204. package/dist/es/components/Transition/getDisableAnimations.js +1 -1
  205. package/dist/es/components/Transition/index.js +5 -5
  206. package/dist/es/components/Transition/shared.js +7 -5
  207. package/dist/es/components/Transition/shared.js.map +1 -1
  208. package/dist/es/components/UIProvider/UIProvider.js +1 -1
  209. package/dist/es/components/UIProvider/index.js +1 -1
  210. package/dist/es/components/UIProvider/internal.js +1 -1
  211. package/dist/es/hooks/useAnimatedScrollTo.js +1 -1
  212. package/dist/es/hooks/useBreakpoints.js +8 -2
  213. package/dist/es/hooks/useBreakpoints.js.map +1 -1
  214. package/dist/es/hooks/useEscCloseStack.js +1 -1
  215. package/dist/es/hooks/usePrevious.js +7 -5
  216. package/dist/es/hooks/usePrevious.js.map +1 -1
  217. package/dist/es/hooks/useTextSelection.js +2 -2
  218. package/dist/es/hooks/useTrailingValue.js +1 -1
  219. package/dist/es/lib/constants.js +1 -1
  220. package/dist/es/lib/helpers.js +1 -1
  221. package/dist/es/lib/helpers.js.map +1 -1
  222. package/dist/es/lib/renderHelpers.js +15 -6
  223. package/dist/es/lib/renderHelpers.js.map +1 -1
  224. package/dist/es/lib/theme.js +16 -16
  225. package/dist/es/lib/theme.js.map +1 -1
  226. package/dist/es/lib/userAgent.js +3 -2
  227. package/dist/es/lib/userAgent.js.map +1 -1
  228. package/dist/es/styles/base.css +1 -102
  229. package/dist/es/styles/globals.css +1 -50
  230. package/dist/es/styles/index.css +1 -25
  231. package/dist/es/styles/katex.min.css +1 -1296
  232. package/dist/es/styles/tailwind-utilities.css +1 -1316
  233. package/dist/es/styles/touch.css +1 -0
  234. package/dist/es/styles/variables-components.css +1 -626
  235. package/dist/es/styles/variables-primitive.css +1 -327
  236. package/dist/es/styles/variables-semantic.css +1 -609
  237. package/dist/es/styles/variables-tailwind-theme.css +1 -34
  238. package/dist/es/styles/variables-tokens-root.css +1 -41
  239. package/dist/es/types.js +1 -1
  240. package/dist/es/types.js.map +1 -1
  241. package/dist/es/vite/index.js +3 -53
  242. package/dist/es/vite/index.js.map +1 -1
  243. package/dist/types/components/Accordion/index.d.ts +1 -1
  244. package/dist/types/components/Alert/Alert.d.ts +8 -2
  245. package/dist/types/components/Alert/index.d.ts +1 -1
  246. package/dist/types/components/Avatar/Avatar.d.ts +1 -1
  247. package/dist/types/components/Avatar/index.d.ts +2 -2
  248. package/dist/types/components/Badge/index.d.ts +1 -1
  249. package/dist/types/components/Breadcrumb/Breadcrumb.d.ts +34 -0
  250. package/dist/types/components/Breadcrumb/index.d.ts +1 -0
  251. package/dist/types/components/Button/Button.d.ts +3 -3
  252. package/dist/types/components/Button/CopyButton.d.ts +9 -4
  253. package/dist/types/components/Button/index.d.ts +2 -2
  254. package/dist/types/components/ButtonGroup/ButtonGroup.d.ts +4 -3
  255. package/dist/types/components/ButtonGroup/index.d.ts +1 -1
  256. package/dist/types/components/Card/index.d.ts +1 -1
  257. package/dist/types/components/Checkbox/Checkbox.d.ts +3 -1
  258. package/dist/types/components/Checkbox/index.d.ts +1 -1
  259. package/dist/types/components/CodeBlock/index.d.ts +2 -2
  260. package/dist/types/components/DataTable/DataTable.d.ts +3 -2
  261. package/dist/types/components/DataTable/index.d.ts +4 -4
  262. package/dist/types/components/DateInput/DateInput.d.ts +1 -1
  263. package/dist/types/components/DateInput/index.d.ts +1 -1
  264. package/dist/types/components/DatePicker/DatePicker.d.ts +7 -6
  265. package/dist/types/components/DatePicker/context.d.ts +1 -1
  266. package/dist/types/components/DatePicker/index.d.ts +2 -2
  267. package/dist/types/components/DateRangePicker/Calendar.d.ts +1 -1
  268. package/dist/types/components/DateRangePicker/DateRangePicker.d.ts +5 -5
  269. package/dist/types/components/DateRangePicker/context.d.ts +2 -2
  270. package/dist/types/components/DateRangePicker/index.d.ts +2 -2
  271. package/dist/types/components/Dialog/Dialog.d.ts +19 -1
  272. package/dist/types/components/Dialog/index.d.ts +1 -1
  273. package/dist/types/components/EmptyMessage/EmptyMessage.d.ts +15 -3
  274. package/dist/types/components/EmptyMessage/index.d.ts +1 -1
  275. package/dist/types/components/Field/Field.d.ts +14 -4
  276. package/dist/types/components/Field/index.d.ts +1 -1
  277. package/dist/types/components/FieldError/FieldError.d.ts +7 -1
  278. package/dist/types/components/FieldError/index.d.ts +1 -1
  279. package/dist/types/components/FileUpload/index.d.ts +1 -1
  280. package/dist/types/components/FloatingLabelInput/index.d.ts +1 -1
  281. package/dist/types/components/FloatingLabelSelect/index.d.ts +1 -1
  282. package/dist/types/components/Icon/aliases.d.ts +20 -20
  283. package/dist/types/components/Icon/index.d.ts +653 -653
  284. package/dist/types/components/Image/Image.d.ts +1 -1
  285. package/dist/types/components/Image/index.d.ts +1 -1
  286. package/dist/types/components/Indicator/index.d.ts +3 -3
  287. package/dist/types/components/Input/Input.d.ts +2 -2
  288. package/dist/types/components/Input/index.d.ts +1 -1
  289. package/dist/types/components/InputGroup/InputGroup.d.ts +78 -0
  290. package/dist/types/components/InputGroup/index.d.ts +1 -0
  291. package/dist/types/components/Kbd/Kbd.d.ts +20 -0
  292. package/dist/types/components/Kbd/index.d.ts +1 -0
  293. package/dist/types/components/Label/index.d.ts +1 -1
  294. package/dist/types/components/Markdown/Markdown.d.ts +1 -1
  295. package/dist/types/components/Markdown/index.d.ts +4 -4
  296. package/dist/types/components/MarkdownEditor/MarkdownEditor.d.ts +6 -2
  297. package/dist/types/components/MarkdownEditor/index.d.ts +1 -1
  298. package/dist/types/components/Menu/Menu.d.ts +19 -5
  299. package/dist/types/components/Menu/index.d.ts +1 -1
  300. package/dist/types/components/OTPInput/index.d.ts +1 -1
  301. package/dist/types/components/PlexUIProvider/PlexUIProvider.d.ts +0 -11
  302. package/dist/types/components/PlexUIProvider/index.d.ts +1 -1
  303. package/dist/types/components/Popover/index.d.ts +2 -2
  304. package/dist/types/components/Progress/index.d.ts +1 -1
  305. package/dist/types/components/ProgressSteps/ProgressSteps.d.ts +1 -1
  306. package/dist/types/components/ProgressSteps/index.d.ts +1 -1
  307. package/dist/types/components/RadioGroup/RadioGroup.d.ts +3 -1
  308. package/dist/types/components/RadioGroup/index.d.ts +1 -1
  309. package/dist/types/components/SegmentedControl/index.d.ts +2 -2
  310. package/dist/types/components/Select/Select.d.ts +8 -1
  311. package/dist/types/components/Select/index.d.ts +1 -1
  312. package/dist/types/components/SelectControl/SelectControl.d.ts +1 -1
  313. package/dist/types/components/SelectControl/index.d.ts +1 -1
  314. package/dist/types/components/Separator/index.d.ts +1 -1
  315. package/dist/types/components/ShimmerText/index.d.ts +1 -1
  316. package/dist/types/components/Sidebar/Sidebar.d.ts +4 -8
  317. package/dist/types/components/Sidebar/index.d.ts +4 -4
  318. package/dist/types/components/Slider/Slider.d.ts +8 -0
  319. package/dist/types/components/Slider/index.d.ts +2 -2
  320. package/dist/types/components/StatCard/index.d.ts +1 -1
  321. package/dist/types/components/Switch/index.d.ts +1 -1
  322. package/dist/types/components/Table/index.d.ts +1 -1
  323. package/dist/types/components/Tabs/Tabs.d.ts +15 -2
  324. package/dist/types/components/Tabs/index.d.ts +2 -2
  325. package/dist/types/components/Tabs/overflow.d.ts +17 -0
  326. package/dist/types/components/TagInput/TagInput.d.ts +1 -1
  327. package/dist/types/components/TagInput/index.d.ts +1 -1
  328. package/dist/types/components/TextLink/index.d.ts +1 -1
  329. package/dist/types/components/Textarea/Textarea.d.ts +1 -1
  330. package/dist/types/components/Textarea/index.d.ts +1 -1
  331. package/dist/types/components/Toast/index.d.ts +1 -1
  332. package/dist/types/components/Tooltip/CopyTooltip.d.ts +6 -1
  333. package/dist/types/components/Tooltip/index.d.ts +2 -2
  334. package/dist/types/components/Transition/Animate.d.ts +2 -2
  335. package/dist/types/components/Transition/AnimateLayout.d.ts +2 -2
  336. package/dist/types/components/Transition/AnimateLayoutGroup.d.ts +2 -2
  337. package/dist/types/components/Transition/SlotTransitionGroup.d.ts +1 -1
  338. package/dist/types/components/Transition/TransitionGroup.d.ts +1 -1
  339. package/dist/types/components/Transition/index.d.ts +5 -5
  340. package/dist/types/components/UIProvider/index.d.ts +1 -1
  341. package/dist/types/global.d.ts +5 -1
  342. package/dist/types/lib/constants.d.ts +1 -1
  343. package/dist/types/lib/helpers.d.ts +4 -4
  344. package/dist/types/lib/theme.d.ts +1 -1
  345. package/dist/types/types.d.ts +2 -15
  346. package/dist/types/vite/index.d.ts +2 -55
  347. package/package.json +10 -18
  348. package/dist/es/components/Accordion/Accordion.module.css +0 -89
  349. package/dist/es/components/Alert/Alert.module.css +0 -187
  350. package/dist/es/components/Avatar/Avatar.module.css +0 -168
  351. package/dist/es/components/Avatar/AvatarGroup.module.css +0 -26
  352. package/dist/es/components/Badge/Badge.module.css +0 -196
  353. package/dist/es/components/Button/Button.module.css +0 -859
  354. package/dist/es/components/ButtonGroup/ButtonGroup.module.css +0 -159
  355. package/dist/es/components/Card/Card.module.css +0 -125
  356. package/dist/es/components/Checkbox/Checkbox.module.css +0 -198
  357. package/dist/es/components/CodeBlock/CodeBlock.module.css +0 -137
  358. package/dist/es/components/DataTable/DataTable.module.css +0 -108
  359. package/dist/es/components/DatePicker/Calendar.module.css +0 -271
  360. package/dist/es/components/DateRangePicker/Calendar.module.css +0 -295
  361. package/dist/es/components/DateRangePicker/Trigger.module.css +0 -25
  362. package/dist/es/components/Dialog/Dialog.module.css +0 -133
  363. package/dist/es/components/EmptyMessage/EmptyMessage.module.css +0 -82
  364. package/dist/es/components/Field/Field.module.css +0 -137
  365. package/dist/es/components/FieldError/FieldError.module.css +0 -22
  366. package/dist/es/components/FileUpload/FileUpload.module.css +0 -133
  367. package/dist/es/components/FloatingLabelInput/FloatingLabelInput.module.css +0 -220
  368. package/dist/es/components/FloatingLabelSelect/FloatingLabelSelect.module.css +0 -146
  369. package/dist/es/components/Image/Image.module.css +0 -9
  370. package/dist/es/components/Indicator/CircularProgress.module.css +0 -28
  371. package/dist/es/components/Indicator/LoadingDots.module.css +0 -35
  372. package/dist/es/components/Indicator/LoadingIndicator.module.css +0 -41
  373. package/dist/es/components/Input/Input.module.css +0 -507
  374. package/dist/es/components/Label/Label.module.css +0 -16
  375. package/dist/es/components/Markdown/Markdown.module.css +0 -233
  376. package/dist/es/components/MarkdownEditor/MarkdownEditor.module.css +0 -297
  377. package/dist/es/components/Menu/Menu.module.css +0 -377
  378. package/dist/es/components/OTPInput/OTPInput.module.css +0 -66
  379. package/dist/es/components/Popover/Popover.module.css +0 -82
  380. package/dist/es/components/Progress/Progress.module.css +0 -34
  381. package/dist/es/components/ProgressSteps/ProgressSteps.module.css +0 -246
  382. package/dist/es/components/RadioGroup/RadioGroup.module.css +0 -137
  383. package/dist/es/components/Select/Select.module.css +0 -310
  384. package/dist/es/components/SelectControl/SelectControl.module.css +0 -558
  385. package/dist/es/components/Separator/Separator.module.css +0 -16
  386. package/dist/es/components/ShimmerText/ShimmerText.module.css +0 -43
  387. package/dist/es/components/Sidebar/Sidebar.module.css +0 -909
  388. package/dist/es/components/Skeleton/Skeleton.module.css +0 -17
  389. package/dist/es/components/Slider/Slider.module.css +0 -203
  390. package/dist/es/components/StatCard/StatCard.module.css +0 -234
  391. package/dist/es/components/Switch/Switch.module.css +0 -121
  392. package/dist/es/components/Table/Table.module.css +0 -56
  393. package/dist/es/components/Tabs/Tabs.module.css +0 -672
  394. package/dist/es/components/TagInput/TagInput.module.css +0 -320
  395. package/dist/es/components/TextLink/TextLink.module.css +0 -50
  396. package/dist/es/components/Textarea/Textarea.module.css +0 -272
  397. package/dist/es/components/Toast/Toast.module.css +0 -84
  398. package/dist/es/components/Tooltip/Tooltip.module.css +0 -91
  399. package/dist/es/components/Transition/Animate.module.css +0 -54
  400. package/dist/es/components/Transition/AnimateLayout.module.css +0 -101
  401. package/dist/es/components/Transition/AnimateLayoutGroup.module.css +0 -72
  402. package/dist/es/components/Transition/TransitionGroup.module.css +0 -4
@@ -1,33 +1,45 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useEffect, useRef, useState } from "react";
4
- import { copyToClipboard } from "../../lib/copyToClipboard";
5
- import { Check, Copy } from "../Icon";
6
- import { Animate } from "../Transition";
7
- import { Button } from "./Button";
8
- export const CopyButton = ({ children, copyValue, onClick, ...restProps }) => {
4
+ import { copyToClipboard } from "../../lib/copyToClipboard.js";
5
+ import { Check, Copy } from "../Icon/index.js";
6
+ import { Animate } from "../Transition/index.js";
7
+ import { Button } from "./Button.js";
8
+ export const CopyButton = ({ children, copyValue, onClick, onCopy, ...restProps }) => {
9
9
  const [copied, setCopied] = useState(false);
10
10
  const copiedTimeout = useRef(null);
11
- const handleClick = (evt) => {
12
- // No-op when copied is true
13
- if (copied) {
11
+ const pending = useRef(false);
12
+ const mounted = useRef(true);
13
+ const handleClick = async (evt) => {
14
+ // No-op while copied, or while a write is still in flight
15
+ if (copied || pending.current) {
14
16
  return;
15
17
  }
16
- setCopied(true);
17
18
  onClick?.(evt);
18
- // Copy content to clipboard
19
- // NOTE: Failures are a silent no-op
20
- copyToClipboard(typeof copyValue === "function" ? copyValue() : copyValue);
19
+ // The copied state follows the clipboard: a failed write shows no check
20
+ pending.current = true;
21
+ const succeeded = await copyToClipboard(typeof copyValue === "function" ? copyValue() : copyValue);
22
+ pending.current = false;
23
+ if (!mounted.current)
24
+ return;
25
+ onCopy?.(succeeded);
26
+ if (!succeeded)
27
+ return;
28
+ setCopied(true);
21
29
  copiedTimeout.current = window.setTimeout(() => {
22
30
  setCopied(false);
23
31
  }, 1300);
24
32
  };
25
33
  useEffect(() => {
34
+ mounted.current = true;
26
35
  return () => {
36
+ mounted.current = false;
27
37
  if (copiedTimeout.current)
28
38
  clearTimeout(copiedTimeout.current);
29
39
  };
30
40
  }, []);
31
- return (_jsxs(Button, { ...restProps, onClick: handleClick, children: [_jsx(Animate, { className: "w-[var(--button-icon-size)] h-[var(--button-icon-size)]", initial: { scale: 0.6 }, enter: { scale: 1, delay: 150, duration: 300 }, exit: { scale: 0.6, duration: 150 }, forceCompositeLayer: true, children: copied ? _jsx(Check, {}, "copied-icon") : _jsx(Copy, {}, "copy-icon") }), typeof children === "function" ? children({ copied }) : children] }));
41
+ // Icon-only copy buttons have no text content, so they need a name of their own
42
+ const ariaLabel = restProps["aria-label"] ?? (children == null ? (copied ? "Copied" : "Copy") : undefined);
43
+ return (_jsxs(Button, { ...restProps, "aria-label": ariaLabel, onClick: handleClick, children: [_jsx(Animate, { className: "w-[var(--button-icon-size)] h-[var(--button-icon-size)]", initial: { scale: 0.6 }, enter: { scale: 1, delay: 150, duration: 300 }, exit: { scale: 0.6, duration: 150 }, forceCompositeLayer: true, children: copied ? _jsx(Check, {}, "copied-icon") : _jsx(Copy, {}, "copy-icon") }), typeof children === "function" ? children({ copied }) : children] }));
32
44
  };
33
45
  //# sourceMappingURL=CopyButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CopyButton.js","sourceRoot":"","sources":["../../../../src/components/Button/CopyButton.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAmB,MAAM,OAAO,CAAA;AACpE,OAAO,EAAE,eAAe,EAAyB,MAAM,2BAA2B,CAAA;AAClF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,MAAM,EAAoB,MAAM,UAAU,CAAA;AAOnD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,SAAS,EAAmB,EAAE,EAAE;IAC5F,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAA;IACpD,MAAM,aAAa,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAA;IAEjD,MAAM,WAAW,GAAG,CAAC,GAAkC,EAAE,EAAE;QACzD,4BAA4B;QAC5B,IAAI,MAAM,EAAE,CAAC;YACX,OAAM;QACR,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,CAAA;QACf,OAAO,EAAE,CAAC,GAAG,CAAC,CAAA;QAEd,4BAA4B;QAC5B,oCAAoC;QACpC,eAAe,CAAC,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAE1E,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YAC7C,SAAS,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC,EAAE,IAAI,CAAC,CAAA;IACV,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,IAAI,aAAa,CAAC,OAAO;gBAAE,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAChE,CAAC,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL,MAAC,MAAM,OAAK,SAAS,EAAE,OAAO,EAAE,WAAW,aACzC,KAAC,OAAO,IACN,SAAS,EAAC,yDAAyD,EACnE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EACvB,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,EAC9C,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,EACnC,mBAAmB,kBAElB,MAAM,CAAC,CAAC,CAAC,KAAC,KAAK,MAAK,aAAa,CAAG,CAAC,CAAC,CAAC,KAAC,IAAI,MAAK,WAAW,CAAG,GACxD,EACT,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAC1D,CACV,CAAA;AACH,CAAC,CAAA","sourcesContent":["\"use client\"\n\nimport { useEffect, useRef, useState, type MouseEvent } from \"react\"\nimport { copyToClipboard, type ClipboardContent } from \"../../lib/copyToClipboard\"\nimport { Check, Copy } from \"../Icon\"\nimport { Animate } from \"../Transition\"\nimport { Button, type ButtonProps } from \"./Button\"\n\nexport type CopyButtonProps = {\n copyValue: string | ClipboardContent | (() => string) | (() => ClipboardContent)\n children?: React.ReactNode | ((props: { copied: boolean }) => React.ReactNode)\n} & Omit<ButtonProps, \"children\">\n\nexport const CopyButton = ({ children, copyValue, onClick, ...restProps }: CopyButtonProps) => {\n const [copied, setCopied] = useState<boolean>(false)\n const copiedTimeout = useRef<number | null>(null)\n\n const handleClick = (evt: MouseEvent<HTMLButtonElement>) => {\n // No-op when copied is true\n if (copied) {\n return\n }\n\n setCopied(true)\n onClick?.(evt)\n\n // Copy content to clipboard\n // NOTE: Failures are a silent no-op\n copyToClipboard(typeof copyValue === \"function\" ? copyValue() : copyValue)\n\n copiedTimeout.current = window.setTimeout(() => {\n setCopied(false)\n }, 1300)\n }\n\n useEffect(() => {\n return () => {\n if (copiedTimeout.current) clearTimeout(copiedTimeout.current)\n }\n }, [])\n\n return (\n <Button {...restProps} onClick={handleClick}>\n <Animate\n className=\"w-[var(--button-icon-size)] h-[var(--button-icon-size)]\"\n initial={{ scale: 0.6 }}\n enter={{ scale: 1, delay: 150, duration: 300 }}\n exit={{ scale: 0.6, duration: 150 }}\n forceCompositeLayer\n >\n {copied ? <Check key=\"copied-icon\" /> : <Copy key=\"copy-icon\" />}\n </Animate>\n {typeof children === \"function\" ? children({ copied }) : children}\n </Button>\n )\n}\n"]}
1
+ {"version":3,"file":"CopyButton.js","sourceRoot":"","sources":["../../../../src/components/Button/CopyButton.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport { useEffect, useRef, useState, type MouseEvent } from \"react\"\nimport { copyToClipboard, type ClipboardContent } from \"../../lib/copyToClipboard\"\nimport { Check, Copy } from \"../Icon\"\nimport { Animate } from \"../Transition\"\nimport { Button, type ButtonProps } from \"./Button\"\n\nexport type CopyButtonProps = {\n copyValue: string | ClipboardContent | (() => string) | (() => ClipboardContent)\n children?: React.ReactNode | ((props: { copied: boolean }) => React.ReactNode)\n /**\n * Called once the clipboard write settles, with whether it succeeded. The\n * button shows the copied state only after a successful write.\n */\n onCopy?: (copied: boolean) => void\n} & Omit<ButtonProps, \"children\" | \"onCopy\">\n\nexport const CopyButton = ({ children, copyValue, onClick, onCopy, ...restProps }: CopyButtonProps) => {\n const [copied, setCopied] = useState<boolean>(false)\n const copiedTimeout = useRef<number | null>(null)\n const pending = useRef(false)\n const mounted = useRef(true)\n\n const handleClick = async (evt: MouseEvent<HTMLButtonElement>) => {\n // No-op while copied, or while a write is still in flight\n if (copied || pending.current) {\n return\n }\n\n onClick?.(evt)\n\n // The copied state follows the clipboard: a failed write shows no check\n pending.current = true\n const succeeded = await copyToClipboard(typeof copyValue === \"function\" ? copyValue() : copyValue)\n pending.current = false\n if (!mounted.current) return\n onCopy?.(succeeded)\n if (!succeeded) return\n\n setCopied(true)\n copiedTimeout.current = window.setTimeout(() => {\n setCopied(false)\n }, 1300)\n }\n\n useEffect(() => {\n mounted.current = true\n return () => {\n mounted.current = false\n if (copiedTimeout.current) clearTimeout(copiedTimeout.current)\n }\n }, [])\n\n // Icon-only copy buttons have no text content, so they need a name of their own\n const ariaLabel = restProps[\"aria-label\"] ?? (children == null ? (copied ? \"Copied\" : \"Copy\") : undefined)\n\n return (\n <Button {...restProps} aria-label={ariaLabel} onClick={handleClick}>\n <Animate\n className=\"w-[var(--button-icon-size)] h-[var(--button-icon-size)]\"\n initial={{ scale: 0.6 }}\n enter={{ scale: 1, delay: 150, duration: 300 }}\n exit={{ scale: 0.6, duration: 150 }}\n forceCompositeLayer\n >\n {copied ? <Check key=\"copied-icon\" /> : <Copy key=\"copy-icon\" />}\n </Animate>\n {typeof children === \"function\" ? children({ copied }) : children}\n </Button>\n )\n}\n"]}
@@ -1,3 +1,3 @@
1
- export { Button, ButtonLink } from "./Button";
2
- export { CopyButton } from "./CopyButton";
1
+ export { Button, ButtonLink } from "./Button.js";
2
+ export { CopyButton } from "./CopyButton.js";
3
3
  //# sourceMappingURL=index.js.map
@@ -3,8 +3,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import clsx from "clsx";
4
4
  import { Slot } from "radix-ui";
5
5
  import {} from "react";
6
- import { Separator } from "../Separator";
7
- import s from "./ButtonGroup.module.css";
6
+ import { Separator } from "../Separator/index.js";
7
+ import s from "@plexui/styles/components/ButtonGroup/ButtonGroup.module.css";
8
8
  const ButtonGroupRoot = ({ orientation = "horizontal", className, ref, ...restProps }) => (_jsx("div", { ref: ref, role: "group", "data-slot": "button-group", "data-orientation": orientation, className: clsx(s.Root, className), ...restProps }));
9
9
  const ButtonGroupSeparator = ({ className, orientation, ...restProps }) => (_jsx(Separator, { "data-slot": "button-group-separator", orientation: orientation ?? "vertical", className: clsx(s.Separator, className), ...restProps }));
10
10
  const ButtonGroupText = ({ asChild = false, className, ref, ...restProps }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonGroup.js","sourceRoot":"","sources":["../../../../src/components/ButtonGroup/ButtonGroup.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAsD,MAAM,OAAO,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAkBxC,MAAM,eAAe,GAAG,CAAC,EACvB,WAAW,GAAG,YAAY,EAC1B,SAAS,EACT,GAAG,EACH,GAAG,SAAS,EACK,EAAE,EAAE,CAAC,CACtB,cACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,OAAO,eACF,cAAc,sBACN,WAAW,EAC7B,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,KAC9B,SAAS,GACb,CACH,CAAA;AAiBD,MAAM,oBAAoB,GAAG,CAAC,EAC5B,SAAS,EACT,WAAW,EACX,GAAG,SAAS,EACc,EAAE,EAAE,CAAC,CAC/B,KAAC,SAAS,iBACE,wBAAwB,EAClC,WAAW,EAAE,WAAW,IAAI,UAAU,EACtC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,KACnC,SAAS,GACb,CACH,CAAA;AAiBD,MAAM,eAAe,GAAG,CAAC,EACvB,OAAO,GAAG,KAAK,EACf,SAAS,EACT,GAAG,EACH,GAAG,SAAS,EACS,EAAE,EAAE;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IACxC,OAAO,CACL,KAAC,IAAI,IACH,GAAG,EAAE,GAAG,eACE,mBAAmB,EAC7B,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,KAC9B,SAAS,GACb,CACH,CAAA;AACH,CAAC,CAAA;AAWD,MAAM,CAAC,MAAM,WAAW,GAAG,eAAuC,CAAA;AAClE,WAAW,CAAC,SAAS,GAAG,oBAAoB,CAAA;AAC5C,WAAW,CAAC,IAAI,GAAG,eAAe,CAAA","sourcesContent":["\"use client\"\n\nimport clsx from \"clsx\"\nimport { Slot } from \"radix-ui\"\nimport { type ComponentProps, type HTMLAttributes, type Ref } from \"react\"\nimport { Separator } from \"../Separator\"\nimport s from \"./ButtonGroup.module.css\"\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport type ButtonGroupOrientation = \"horizontal\" | \"vertical\"\n\nexport type ButtonGroupProps = HTMLAttributes<HTMLDivElement> & {\n /**\n * Direction of the joined buttons.\n * @default \"horizontal\"\n */\n orientation?: ButtonGroupOrientation\n className?: string\n ref?: Ref<HTMLDivElement>\n}\n\nconst ButtonGroupRoot = ({\n orientation = \"horizontal\",\n className,\n ref,\n ...restProps\n}: ButtonGroupProps) => (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={clsx(s.Root, className)}\n {...restProps}\n />\n)\n\n/* ------------------------------------------------------------------ */\n/* Separator — thin divider between items */\n/* ------------------------------------------------------------------ */\n\nexport type ButtonGroupSeparatorProps = Omit<\n ComponentProps<typeof Separator>,\n \"orientation\"\n> & {\n /**\n * When omitted, flips to match the surrounding ButtonGroup axis.\n * Pass explicitly to override (rare).\n */\n orientation?: ButtonGroupOrientation\n}\n\nconst ButtonGroupSeparator = ({\n className,\n orientation,\n ...restProps\n}: ButtonGroupSeparatorProps) => (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation ?? \"vertical\"}\n className={clsx(s.Separator, className)}\n {...restProps}\n />\n)\n\n/* ------------------------------------------------------------------ */\n/* Text — muted label/pill sharing the group's joined geometry */\n/* ------------------------------------------------------------------ */\n\nexport type ButtonGroupTextProps = HTMLAttributes<HTMLDivElement> & {\n /**\n * Swap the rendered element for a child (label, span, etc.) while\n * keeping the group's visual treatment.\n * @default false\n */\n asChild?: boolean\n className?: string\n ref?: Ref<HTMLDivElement>\n}\n\nconst ButtonGroupText = ({\n asChild = false,\n className,\n ref,\n ...restProps\n}: ButtonGroupTextProps) => {\n const Comp = asChild ? Slot.Root : \"div\"\n return (\n <Comp\n ref={ref}\n data-slot=\"button-group-text\"\n className={clsx(s.Text, className)}\n {...restProps}\n />\n )\n}\n\n/* ------------------------------------------------------------------ */\n/* Export — compound API */\n/* ------------------------------------------------------------------ */\n\ntype ButtonGroupComponent = typeof ButtonGroupRoot & {\n Separator: typeof ButtonGroupSeparator\n Text: typeof ButtonGroupText\n}\n\nexport const ButtonGroup = ButtonGroupRoot as ButtonGroupComponent\nButtonGroup.Separator = ButtonGroupSeparator\nButtonGroup.Text = ButtonGroupText\n"]}
1
+ {"version":3,"file":"ButtonGroup.js","sourceRoot":"","sources":["../../../../src/components/ButtonGroup/ButtonGroup.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAsD,MAAM,OAAO,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,CAAC,MAAM,8DAA8D,CAAA;AAkB5E,MAAM,eAAe,GAAG,CAAC,EACvB,WAAW,GAAG,YAAY,EAC1B,SAAS,EACT,GAAG,EACH,GAAG,SAAS,EACK,EAAE,EAAE,CAAC,CACtB,cACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,OAAO,eACF,cAAc,sBACN,WAAW,EAC7B,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,KAC9B,SAAS,GACb,CACH,CAAA;AAkBD,MAAM,oBAAoB,GAAG,CAAC,EAC5B,SAAS,EACT,WAAW,EACX,GAAG,SAAS,EACc,EAAE,EAAE,CAAC,CAC/B,KAAC,SAAS,iBACE,wBAAwB,EAClC,WAAW,EAAE,WAAW,IAAI,UAAU,EACtC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,KACnC,SAAS,GACb,CACH,CAAA;AAiBD,MAAM,eAAe,GAAG,CAAC,EACvB,OAAO,GAAG,KAAK,EACf,SAAS,EACT,GAAG,EACH,GAAG,SAAS,EACS,EAAE,EAAE;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IACxC,OAAO,CACL,KAAC,IAAI,IACH,GAAG,EAAE,GAAG,eACE,mBAAmB,EAC7B,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,KAC9B,SAAS,GACb,CACH,CAAA;AACH,CAAC,CAAA;AAWD,MAAM,CAAC,MAAM,WAAW,GAAG,eAAuC,CAAA;AAClE,WAAW,CAAC,SAAS,GAAG,oBAAoB,CAAA;AAC5C,WAAW,CAAC,IAAI,GAAG,eAAe,CAAA","sourcesContent":["\"use client\"\n\nimport clsx from \"clsx\"\nimport { Slot } from \"radix-ui\"\nimport { type ComponentProps, type HTMLAttributes, type Ref } from \"react\"\nimport { Separator } from \"../Separator\"\nimport s from \"@plexui/styles/components/ButtonGroup/ButtonGroup.module.css\"\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport type ButtonGroupOrientation = \"horizontal\" | \"vertical\"\n\nexport type ButtonGroupProps = HTMLAttributes<HTMLDivElement> & {\n /**\n * Direction of the joined buttons.\n * @default \"horizontal\"\n */\n orientation?: ButtonGroupOrientation\n className?: string\n ref?: Ref<HTMLDivElement>\n}\n\nconst ButtonGroupRoot = ({\n orientation = \"horizontal\",\n className,\n ref,\n ...restProps\n}: ButtonGroupProps) => (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={clsx(s.Root, className)}\n {...restProps}\n />\n)\n\n/* ------------------------------------------------------------------ */\n/* Separator — thin divider between items */\n/* ------------------------------------------------------------------ */\n\nexport type ButtonGroupSeparatorProps = Omit<\n ComponentProps<typeof Separator>,\n \"orientation\"\n> & {\n /**\n * When omitted, uses `\"vertical\"`, the axis that looks right between\n * horizontal items. Pass explicitly inside a vertical group.\n * @default \"vertical\"\n */\n orientation?: ButtonGroupOrientation\n}\n\nconst ButtonGroupSeparator = ({\n className,\n orientation,\n ...restProps\n}: ButtonGroupSeparatorProps) => (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation ?? \"vertical\"}\n className={clsx(s.Separator, className)}\n {...restProps}\n />\n)\n\n/* ------------------------------------------------------------------ */\n/* Text — muted label/pill sharing the group's joined geometry */\n/* ------------------------------------------------------------------ */\n\nexport type ButtonGroupTextProps = HTMLAttributes<HTMLDivElement> & {\n /**\n * Swap the rendered element for a child (label, span, etc.) while\n * keeping the group's visual treatment.\n * @default false\n */\n asChild?: boolean\n className?: string\n ref?: Ref<HTMLDivElement>\n}\n\nconst ButtonGroupText = ({\n asChild = false,\n className,\n ref,\n ...restProps\n}: ButtonGroupTextProps) => {\n const Comp = asChild ? Slot.Root : \"div\"\n return (\n <Comp\n ref={ref}\n data-slot=\"button-group-text\"\n className={clsx(s.Text, className)}\n {...restProps}\n />\n )\n}\n\n/* ------------------------------------------------------------------ */\n/* Export — compound API */\n/* ------------------------------------------------------------------ */\n\ntype ButtonGroupComponent = typeof ButtonGroupRoot & {\n Separator: typeof ButtonGroupSeparator\n Text: typeof ButtonGroupText\n}\n\nexport const ButtonGroup = ButtonGroupRoot as ButtonGroupComponent\nButtonGroup.Separator = ButtonGroupSeparator\nButtonGroup.Text = ButtonGroupText\n"]}
@@ -1,2 +1,2 @@
1
- export { ButtonGroup, } from "./ButtonGroup";
1
+ export { ButtonGroup, } from "./ButtonGroup.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -2,11 +2,13 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import clsx from "clsx";
4
4
  import {} from "react";
5
- import { useLinkComponent } from "../PlexUIProvider/internal";
6
- import s from "./Card.module.css";
5
+ import { useLinkComponent } from "../PlexUIProvider/internal.js";
6
+ import s from "@plexui/styles/components/Card/Card.module.css";
7
7
  const hasHref = (props) => typeof props.href === "string";
8
8
  const CardRoot = (props) => {
9
9
  const { variant = "outline", size = "md", interactive, className, } = props;
10
+ // Called unconditionally: hooks may not sit inside the href branch below
11
+ const DefaultLink = useLinkComponent();
10
12
  const sharedProps = {
11
13
  "className": clsx(s.Card, className),
12
14
  "data-variant": variant,
@@ -16,7 +18,6 @@ const CardRoot = (props) => {
16
18
  if (hasHref(props)) {
17
19
  const { variant: _v, size: _s, interactive: _i, className: _c, href, external, as: OverrideComponent, ref, ...restProps } = props;
18
20
  const isExternal = external ?? /^https?:\/\//.test(href);
19
- const DefaultLink = useLinkComponent();
20
21
  const LinkComponent = OverrideComponent || (isExternal ? "a" : DefaultLink);
21
22
  const linkAttrs = isExternal
22
23
  ? { target: "_blank", rel: "noopener noreferrer", href }
@@ -1 +1 @@
1
- {"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../../src/components/Card/Card.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport clsx from \"clsx\"\nimport {\n type AnchorHTMLAttributes,\n type ComponentProps,\n type ComponentType,\n type HTMLAttributes,\n type ReactNode,\n type Ref,\n} from \"react\"\nimport { useLinkComponent } from \"../PlexUIProvider/internal\"\nimport s from \"./Card.module.css\"\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport type CardVariant = \"outline\" | \"solid\" | \"ghost\"\nexport type CardSize = \"sm\" | \"md\" | \"lg\"\n\ntype CardCommonProps = {\n /**\n * Visual variant of the card.\n * - `\"outline\"` — 1px border, transparent background (default)\n * - `\"solid\"` — muted background, no border\n * - `\"ghost\"` — no border, no background (hover-only surface)\n * @default \"outline\"\n */\n variant?: CardVariant\n /**\n * Padding scale.\n * @default \"md\"\n */\n size?: CardSize\n /**\n * When true, adds hover/focus affordances. Automatic when `href` is provided.\n * @default false\n */\n interactive?: boolean\n /** Class applied to the card container */\n className?: string\n}\n\nexport type CardDivProps = CardCommonProps &\n Omit<HTMLAttributes<HTMLDivElement>, \"className\"> & {\n ref?: Ref<HTMLDivElement>\n }\n\nexport type CardLinkProps<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends ComponentType<any> | \"a\" = \"a\",\n> = CardCommonProps &\n Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"className\" | \"href\"> & {\n /** When provided, the Card renders as a link. */\n href: string\n /** Explicitly flag as external — otherwise detected from `href`. */\n external?: boolean\n /** Override the rendered link component (e.g. next/link). */\n as?: T\n ref?: Ref<HTMLAnchorElement>\n } & ComponentProps<T>\n\nexport type CardProps = CardDivProps | CardLinkProps\n\nconst hasHref = (props: CardProps): props is CardLinkProps =>\n typeof (props as CardLinkProps).href === \"string\"\n\nconst CardRoot = (props: CardProps): ReactNode => {\n const {\n variant = \"outline\",\n size = \"md\",\n interactive,\n className,\n } = props as CardCommonProps\n\n const sharedProps = {\n \"className\": clsx(s.Card, className),\n \"data-variant\": variant,\n \"data-size\": size,\n \"data-interactive\":\n (interactive || hasHref(props)) ? \"\" : undefined,\n }\n\n if (hasHref(props)) {\n const {\n variant: _v,\n size: _s,\n interactive: _i,\n className: _c,\n href,\n external,\n as: OverrideComponent,\n ref,\n ...restProps\n } = props\n const isExternal = external ?? /^https?:\\/\\//.test(href)\n const DefaultLink = useLinkComponent()\n const LinkComponent = OverrideComponent || (isExternal ? \"a\" : DefaultLink)\n const linkAttrs = isExternal\n ? { target: \"_blank\", rel: \"noopener noreferrer\", href }\n : { href }\n\n return (\n <LinkComponent ref={ref} {...sharedProps} {...linkAttrs} {...restProps} />\n )\n }\n\n const {\n variant: _v,\n size: _s,\n interactive: _i,\n className: _c,\n ref,\n ...restProps\n } = props as CardDivProps\n\n return <div ref={ref} {...sharedProps} {...restProps} />\n}\n\n/* ------------------------------------------------------------------ */\n/* Compound parts */\n/* ------------------------------------------------------------------ */\n\nexport type CardSlotProps = HTMLAttributes<HTMLDivElement> & { ref?: Ref<HTMLDivElement> }\n\nconst CardHeader = ({ className, ref, ...restProps }: CardSlotProps) => (\n <div ref={ref} className={clsx(s.Header, className)} {...restProps} />\n)\n\nconst CardTitle = ({\n className,\n ref,\n ...restProps\n}: HTMLAttributes<HTMLHeadingElement> & { ref?: Ref<HTMLHeadingElement> }) => (\n <h3 ref={ref} className={clsx(s.Title, className)} {...restProps} />\n)\n\nconst CardDescription = ({\n className,\n ref,\n ...restProps\n}: HTMLAttributes<HTMLParagraphElement> & { ref?: Ref<HTMLParagraphElement> }) => (\n <p ref={ref} className={clsx(s.Description, className)} {...restProps} />\n)\n\nconst CardContent = ({ className, ref, ...restProps }: CardSlotProps) => (\n <div ref={ref} className={clsx(s.Content, className)} {...restProps} />\n)\n\nconst CardFooter = ({ className, ref, ...restProps }: CardSlotProps) => (\n <div ref={ref} className={clsx(s.Footer, className)} {...restProps} />\n)\n\nconst CardAction = ({ className, ref, ...restProps }: CardSlotProps) => (\n <div ref={ref} className={clsx(s.Action, className)} {...restProps} />\n)\n\n/* ------------------------------------------------------------------ */\n/* Export — compound API */\n/* ------------------------------------------------------------------ */\n\ntype CardComponent = typeof CardRoot & {\n Header: typeof CardHeader\n Title: typeof CardTitle\n Description: typeof CardDescription\n Content: typeof CardContent\n Footer: typeof CardFooter\n Action: typeof CardAction\n}\n\nexport const Card = CardRoot as CardComponent\nCard.Header = CardHeader\nCard.Title = CardTitle\nCard.Description = CardDescription\nCard.Content = CardContent\nCard.Footer = CardFooter\nCard.Action = CardAction\n"]}
1
+ {"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../../src/components/Card/Card.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport clsx from \"clsx\"\nimport {\n type AnchorHTMLAttributes,\n type ComponentProps,\n type ComponentType,\n type HTMLAttributes,\n type ReactNode,\n type Ref,\n} from \"react\"\nimport { useLinkComponent } from \"../PlexUIProvider/internal\"\nimport s from \"@plexui/styles/components/Card/Card.module.css\"\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport type CardVariant = \"outline\" | \"solid\" | \"ghost\"\nexport type CardSize = \"sm\" | \"md\" | \"lg\"\n\ntype CardCommonProps = {\n /**\n * Visual variant of the card.\n * - `\"outline\"` — 1px border, transparent background (default)\n * - `\"solid\"` — muted background, no border\n * - `\"ghost\"` — no border, no background (hover-only surface)\n * @default \"outline\"\n */\n variant?: CardVariant\n /**\n * Padding scale.\n * @default \"md\"\n */\n size?: CardSize\n /**\n * When true, adds hover/focus affordances. Automatic when `href` is provided.\n * @default false\n */\n interactive?: boolean\n /** Class applied to the card container */\n className?: string\n}\n\nexport type CardDivProps = CardCommonProps &\n Omit<HTMLAttributes<HTMLDivElement>, \"className\"> & {\n ref?: Ref<HTMLDivElement>\n }\n\nexport type CardLinkProps<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends ComponentType<any> | \"a\" = \"a\",\n> = CardCommonProps &\n Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"className\" | \"href\"> & {\n /** When provided, the Card renders as a link. */\n href: string\n /** Explicitly flag as external — otherwise detected from `href`. */\n external?: boolean\n /** Override the rendered link component (e.g. next/link). */\n as?: T\n ref?: Ref<HTMLAnchorElement>\n } & ComponentProps<T>\n\nexport type CardProps = CardDivProps | CardLinkProps\n\nconst hasHref = (props: CardProps): props is CardLinkProps =>\n typeof (props as CardLinkProps).href === \"string\"\n\nconst CardRoot = (props: CardProps): ReactNode => {\n const {\n variant = \"outline\",\n size = \"md\",\n interactive,\n className,\n } = props as CardCommonProps\n // Called unconditionally: hooks may not sit inside the href branch below\n const DefaultLink = useLinkComponent()\n\n const sharedProps = {\n \"className\": clsx(s.Card, className),\n \"data-variant\": variant,\n \"data-size\": size,\n \"data-interactive\":\n (interactive || hasHref(props)) ? \"\" : undefined,\n }\n\n if (hasHref(props)) {\n const {\n variant: _v,\n size: _s,\n interactive: _i,\n className: _c,\n href,\n external,\n as: OverrideComponent,\n ref,\n ...restProps\n } = props\n const isExternal = external ?? /^https?:\\/\\//.test(href)\n const LinkComponent = OverrideComponent || (isExternal ? \"a\" : DefaultLink)\n const linkAttrs = isExternal\n ? { target: \"_blank\", rel: \"noopener noreferrer\", href }\n : { href }\n\n return (\n <LinkComponent ref={ref} {...sharedProps} {...linkAttrs} {...restProps} />\n )\n }\n\n const {\n variant: _v,\n size: _s,\n interactive: _i,\n className: _c,\n ref,\n ...restProps\n } = props as CardDivProps\n\n return <div ref={ref} {...sharedProps} {...restProps} />\n}\n\n/* ------------------------------------------------------------------ */\n/* Compound parts */\n/* ------------------------------------------------------------------ */\n\nexport type CardSlotProps = HTMLAttributes<HTMLDivElement> & { ref?: Ref<HTMLDivElement> }\n\nconst CardHeader = ({ className, ref, ...restProps }: CardSlotProps) => (\n <div ref={ref} className={clsx(s.Header, className)} {...restProps} />\n)\n\nconst CardTitle = ({\n className,\n ref,\n ...restProps\n}: HTMLAttributes<HTMLHeadingElement> & { ref?: Ref<HTMLHeadingElement> }) => (\n <h3 ref={ref} className={clsx(s.Title, className)} {...restProps} />\n)\n\nconst CardDescription = ({\n className,\n ref,\n ...restProps\n}: HTMLAttributes<HTMLParagraphElement> & { ref?: Ref<HTMLParagraphElement> }) => (\n <p ref={ref} className={clsx(s.Description, className)} {...restProps} />\n)\n\nconst CardContent = ({ className, ref, ...restProps }: CardSlotProps) => (\n <div ref={ref} className={clsx(s.Content, className)} {...restProps} />\n)\n\nconst CardFooter = ({ className, ref, ...restProps }: CardSlotProps) => (\n <div ref={ref} className={clsx(s.Footer, className)} {...restProps} />\n)\n\nconst CardAction = ({ className, ref, ...restProps }: CardSlotProps) => (\n <div ref={ref} className={clsx(s.Action, className)} {...restProps} />\n)\n\n/* ------------------------------------------------------------------ */\n/* Export — compound API */\n/* ------------------------------------------------------------------ */\n\ntype CardComponent = typeof CardRoot & {\n Header: typeof CardHeader\n Title: typeof CardTitle\n Description: typeof CardDescription\n Content: typeof CardContent\n Footer: typeof CardFooter\n Action: typeof CardAction\n}\n\nexport const Card = CardRoot as CardComponent\nCard.Header = CardHeader\nCard.Title = CardTitle\nCard.Description = CardDescription\nCard.Content = CardContent\nCard.Footer = CardFooter\nCard.Action = CardAction\n"]}
@@ -1,2 +1,2 @@
1
- export { Card, } from "./Card";
1
+ export { Card, } from "./Card.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -3,13 +3,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import clsx from "clsx";
4
4
  import { Checkbox as RadixCheckbox } from "radix-ui";
5
5
  import { useId } from "react";
6
- import s from "./Checkbox.module.css";
7
- export const Checkbox = ({ className, label, id: propsId, disabled, orientation = "left", pill = false, variant = "solid", ...restProps }) => {
6
+ import s from "@plexui/styles/components/Checkbox/Checkbox.module.css";
7
+ export const Checkbox = ({ className, label, description, id: propsId, disabled, orientation = "left", pill = false, variant = "solid", ...restProps }) => {
8
8
  const reactId = useId();
9
9
  const id = propsId ?? reactId;
10
- return (_jsxs("div", { "data-disabled": disabled ? "" : undefined, "data-has-label": label ? "" : undefined, "data-orientation": orientation, className: clsx(className, s.Container), children: [_jsx(RadixCheckbox.Root, { className: s.Checkbox, id: id, disabled: disabled, "data-pill": pill ? "" : undefined, "data-variant": variant, ...restProps, children: _jsx(RadixCheckbox.Indicator, { className: s.CheckMark }) }), label && (_jsx("label", { htmlFor: id, className: s.Label, onMouseDown: (event) => {
11
- if (!event.defaultPrevented && event.detail > 1)
12
- event.preventDefault();
13
- }, children: label }))] }));
10
+ // The description only renders next to a label; it comes before any ids
11
+ // the caller (a Field, say) passes
12
+ const descriptionId = label && description ? `${id}-label-description` : undefined;
13
+ const ariaDescribedBy = [descriptionId, restProps["aria-describedby"]].filter(Boolean).join(" ") ||
14
+ undefined;
15
+ const labelElement = label && (_jsx("label", { htmlFor: id, className: s.Label, onMouseDown: (event) => {
16
+ if (!event.defaultPrevented && event.detail > 1)
17
+ event.preventDefault();
18
+ }, children: label }));
19
+ return (_jsxs("div", { "data-disabled": disabled ? "" : undefined, "data-has-label": label ? "" : undefined, "data-orientation": orientation, className: clsx(className, s.Container), children: [_jsx(RadixCheckbox.Root, { className: s.Checkbox, id: id, disabled: disabled, "data-pill": pill ? "" : undefined, "data-variant": variant, ...restProps, "aria-describedby": ariaDescribedBy, children: _jsx(RadixCheckbox.Indicator, { className: s.CheckMark }) }), descriptionId ? (_jsxs("div", { className: s.LabelGroup, children: [labelElement, _jsx("span", { id: descriptionId, className: s.Description, children: description })] })) : (labelElement)] }));
14
20
  };
15
21
  //# sourceMappingURL=Checkbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../../../src/components/Checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAA0C,KAAK,EAAE,MAAM,OAAO,CAAA;AACrE,OAAO,CAAC,MAAM,uBAAuB,CAAA;AA+CrC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,SAAS,EACT,KAAK,EACL,EAAE,EAAE,OAAO,EACX,QAAQ,EACR,WAAW,GAAG,MAAM,EACpB,IAAI,GAAG,KAAK,EACZ,OAAO,GAAG,OAAO,EACjB,GAAG,SAAS,EACE,EAAE,EAAE;IAClB,MAAM,OAAO,GAAG,KAAK,EAAE,CAAA;IACvB,MAAM,EAAE,GAAG,OAAO,IAAI,OAAO,CAAA;IAE7B,OAAO,CACL,gCACiB,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,oBACxB,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,sBACpB,WAAW,EAC7B,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,aAEvC,KAAC,aAAa,CAAC,IAAI,IACjB,SAAS,EAAE,CAAC,CAAC,QAAQ,EACrB,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,QAAQ,eACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,kBAClB,OAAO,KACjB,SAAS,YAEb,KAAC,aAAa,CAAC,SAAS,IAAC,SAAS,EAAE,CAAC,CAAC,SAAS,GAAI,GAChC,EACpB,KAAK,IAAI,CACR,gBACE,OAAO,EAAE,EAAE,EACX,SAAS,EAAE,CAAC,CAAC,KAAK,EAClB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;oBACrB,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;wBAAE,KAAK,CAAC,cAAc,EAAE,CAAA;gBACzE,CAAC,YAEA,KAAK,GACA,CACT,IACG,CACP,CAAA;AACH,CAAC,CAAA","sourcesContent":["\"use client\"\n\nimport clsx from \"clsx\"\nimport { Checkbox as RadixCheckbox } from \"radix-ui\"\nimport { type FocusEventHandler, type ReactNode, useId } from \"react\"\nimport s from \"./Checkbox.module.css\"\n\nexport type CheckboxProps = {\n /** The `id` of the checkbox. */\n id?: string\n /** The state of the checkbox when it is initially rendered. Use when you do not need to control its state. */\n defaultChecked?: boolean | \"indeterminate\"\n /** The controlled state of the checkbox. Must be used in conjunction with `onCheckedChange`. */\n checked?: boolean | \"indeterminate\"\n /** Optional accessible label rendered to the right of the checkbox. */\n label?: ReactNode\n /** Event handler called when the state of the checkbox changes. */\n onCheckedChange?: (nextState: boolean) => void\n /** Event handler called when the checkbox looses focus. */\n onBlur?: FocusEventHandler<HTMLButtonElement>\n /** Event handler called when the checkbox gains focus. */\n onFocus?: FocusEventHandler<HTMLButtonElement>\n /** When `true`, prevents the user from interacting with the checkbox. */\n disabled?: boolean\n /** When `true`, indicates that the user must check the checkbox before the owning form can be submitted. */\n required?: boolean\n /** The name of the checkbox. Submitted with its owning form as part of a name/value pair. */\n name?: string\n /** The value given as data when submitted with a `name`. */\n value?: string\n /** CSS classes applied to wrapper node */\n className?: string\n /**\n * The orientation of the checkbox relative to the label.\n *\n * @default \"left\"\n */\n orientation?: \"left\" | \"right\"\n /**\n * Determines if the checkbox should be a fully rounded pill shape.\n * @default false\n */\n pill?: boolean\n /**\n * Visual style variant for the checkbox indicator.\n * - `\"solid\"` — filled background when checked (default)\n * - `\"ghost\"` — no border or background, checkmark only\n * @default \"solid\"\n */\n variant?: \"solid\" | \"ghost\"\n}\n\nexport const Checkbox = ({\n className,\n label,\n id: propsId,\n disabled,\n orientation = \"left\",\n pill = false,\n variant = \"solid\",\n ...restProps\n}: CheckboxProps) => {\n const reactId = useId()\n const id = propsId ?? reactId\n\n return (\n <div\n data-disabled={disabled ? \"\" : undefined}\n data-has-label={label ? \"\" : undefined}\n data-orientation={orientation}\n className={clsx(className, s.Container)}\n >\n <RadixCheckbox.Root\n className={s.Checkbox}\n id={id}\n disabled={disabled}\n data-pill={pill ? \"\" : undefined}\n data-variant={variant}\n {...restProps}\n >\n <RadixCheckbox.Indicator className={s.CheckMark} />\n </RadixCheckbox.Root>\n {label && (\n <label\n htmlFor={id}\n className={s.Label}\n onMouseDown={(event) => {\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault()\n }}\n >\n {label}\n </label>\n )}\n </div>\n )\n}\n"]}
1
+ {"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../../../src/components/Checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAA0C,KAAK,EAAE,MAAM,OAAO,CAAA;AACrE,OAAO,CAAC,MAAM,wDAAwD,CAAA;AAiDtE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,SAAS,EACT,KAAK,EACL,WAAW,EACX,EAAE,EAAE,OAAO,EACX,QAAQ,EACR,WAAW,GAAG,MAAM,EACpB,IAAI,GAAG,KAAK,EACZ,OAAO,GAAG,OAAO,EACjB,GAAG,SAAS,EACE,EAAE,EAAE;IAClB,MAAM,OAAO,GAAG,KAAK,EAAE,CAAA;IACvB,MAAM,EAAE,GAAG,OAAO,IAAI,OAAO,CAAA;IAC7B,wEAAwE;IACxE,mCAAmC;IACnC,MAAM,aAAa,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAA;IAClF,MAAM,eAAe,GACnB,CAAC,aAAa,EAAG,SAA6C,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7G,SAAS,CAAA;IACX,MAAM,YAAY,GAAG,KAAK,IAAI,CAC5B,gBACE,OAAO,EAAE,EAAE,EACX,SAAS,EAAE,CAAC,CAAC,KAAK,EAClB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,cAAc,EAAE,CAAA;QACzE,CAAC,YAEA,KAAK,GACA,CACT,CAAA;IAED,OAAO,CACL,gCACiB,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,oBACxB,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,sBACpB,WAAW,EAC7B,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,aAEvC,KAAC,aAAa,CAAC,IAAI,IACjB,SAAS,EAAE,CAAC,CAAC,QAAQ,EACrB,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,QAAQ,eACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,kBAClB,OAAO,KACjB,SAAS,sBACK,eAAe,YAEjC,KAAC,aAAa,CAAC,SAAS,IAAC,SAAS,EAAE,CAAC,CAAC,SAAS,GAAI,GAChC,EACpB,aAAa,CAAC,CAAC,CAAC,CACf,eAAK,SAAS,EAAE,CAAC,CAAC,UAAU,aACzB,YAAY,EACb,eAAM,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,WAAW,YAC9C,WAAW,GACP,IACH,CACP,CAAC,CAAC,CAAC,CACF,YAAY,CACb,IACG,CACP,CAAA;AACH,CAAC,CAAA","sourcesContent":["\"use client\"\n\nimport clsx from \"clsx\"\nimport { Checkbox as RadixCheckbox } from \"radix-ui\"\nimport { type FocusEventHandler, type ReactNode, useId } from \"react\"\nimport s from \"@plexui/styles/components/Checkbox/Checkbox.module.css\"\n\nexport type CheckboxProps = {\n /** The `id` of the checkbox. */\n id?: string\n /** The state of the checkbox when it is initially rendered. Use when you do not need to control its state. */\n defaultChecked?: boolean | \"indeterminate\"\n /** The controlled state of the checkbox. Must be used in conjunction with `onCheckedChange`. */\n checked?: boolean | \"indeterminate\"\n /** Optional accessible label rendered to the right of the checkbox. */\n label?: ReactNode\n /** Optional second line below the label. Linked via `aria-describedby`. */\n description?: ReactNode\n /** Event handler called when the state of the checkbox changes. */\n onCheckedChange?: (nextState: boolean) => void\n /** Event handler called when the checkbox looses focus. */\n onBlur?: FocusEventHandler<HTMLButtonElement>\n /** Event handler called when the checkbox gains focus. */\n onFocus?: FocusEventHandler<HTMLButtonElement>\n /** When `true`, prevents the user from interacting with the checkbox. */\n disabled?: boolean\n /** When `true`, indicates that the user must check the checkbox before the owning form can be submitted. */\n required?: boolean\n /** The name of the checkbox. Submitted with its owning form as part of a name/value pair. */\n name?: string\n /** The value given as data when submitted with a `name`. */\n value?: string\n /** CSS classes applied to wrapper node */\n className?: string\n /**\n * The orientation of the checkbox relative to the label.\n *\n * @default \"left\"\n */\n orientation?: \"left\" | \"right\"\n /**\n * Determines if the checkbox should be a fully rounded pill shape.\n * @default false\n */\n pill?: boolean\n /**\n * Visual style variant for the checkbox indicator.\n * - `\"solid\"` — filled background when checked (default)\n * - `\"ghost\"` — no border or background, checkmark only\n * @default \"solid\"\n */\n variant?: \"solid\" | \"ghost\"\n}\n\nexport const Checkbox = ({\n className,\n label,\n description,\n id: propsId,\n disabled,\n orientation = \"left\",\n pill = false,\n variant = \"solid\",\n ...restProps\n}: CheckboxProps) => {\n const reactId = useId()\n const id = propsId ?? reactId\n // The description only renders next to a label; it comes before any ids\n // the caller (a Field, say) passes\n const descriptionId = label && description ? `${id}-label-description` : undefined\n const ariaDescribedBy =\n [descriptionId, (restProps as { \"aria-describedby\"?: string })[\"aria-describedby\"]].filter(Boolean).join(\" \") ||\n undefined\n const labelElement = label && (\n <label\n htmlFor={id}\n className={s.Label}\n onMouseDown={(event) => {\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault()\n }}\n >\n {label}\n </label>\n )\n\n return (\n <div\n data-disabled={disabled ? \"\" : undefined}\n data-has-label={label ? \"\" : undefined}\n data-orientation={orientation}\n className={clsx(className, s.Container)}\n >\n <RadixCheckbox.Root\n className={s.Checkbox}\n id={id}\n disabled={disabled}\n data-pill={pill ? \"\" : undefined}\n data-variant={variant}\n {...restProps}\n aria-describedby={ariaDescribedBy}\n >\n <RadixCheckbox.Indicator className={s.CheckMark} />\n </RadixCheckbox.Root>\n {descriptionId ? (\n <div className={s.LabelGroup}>\n {labelElement}\n <span id={descriptionId} className={s.Description}>\n {description}\n </span>\n </div>\n ) : (\n labelElement\n )}\n </div>\n )\n}\n"]}
@@ -1,2 +1,2 @@
1
- export { Checkbox } from "./Checkbox";
1
+ export { Checkbox } from "./Checkbox.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -3,31 +3,31 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
3
3
  import clsx from "clsx";
4
4
  import {} from "react";
5
5
  import { createElement, PrismLight as SyntaxHighlighter } from "react-syntax-highlighter";
6
- import bash from "react-syntax-highlighter/dist/esm/languages/prism/bash";
7
- import c from "react-syntax-highlighter/dist/esm/languages/prism/c";
8
- import clike from "react-syntax-highlighter/dist/esm/languages/prism/clike";
9
- import css from "react-syntax-highlighter/dist/esm/languages/prism/css";
10
- import diff from "react-syntax-highlighter/dist/esm/languages/prism/diff";
11
- import docker from "react-syntax-highlighter/dist/esm/languages/prism/docker";
12
- import go from "react-syntax-highlighter/dist/esm/languages/prism/go";
13
- import java from "react-syntax-highlighter/dist/esm/languages/prism/java";
14
- import javascript from "react-syntax-highlighter/dist/esm/languages/prism/javascript";
15
- import json from "react-syntax-highlighter/dist/esm/languages/prism/json";
16
- import jsx from "react-syntax-highlighter/dist/esm/languages/prism/jsx";
17
- import kotlin from "react-syntax-highlighter/dist/esm/languages/prism/kotlin";
18
- import markdown from "react-syntax-highlighter/dist/esm/languages/prism/markdown";
19
- import markup from "react-syntax-highlighter/dist/esm/languages/prism/markup";
20
- import php from "react-syntax-highlighter/dist/esm/languages/prism/php";
21
- import python from "react-syntax-highlighter/dist/esm/languages/prism/python";
22
- import ruby from "react-syntax-highlighter/dist/esm/languages/prism/ruby";
23
- import scss from "react-syntax-highlighter/dist/esm/languages/prism/scss";
24
- import sql from "react-syntax-highlighter/dist/esm/languages/prism/sql";
25
- import toml from "react-syntax-highlighter/dist/esm/languages/prism/toml";
26
- import tsx from "react-syntax-highlighter/dist/esm/languages/prism/tsx";
27
- import typescript from "react-syntax-highlighter/dist/esm/languages/prism/typescript";
28
- import yaml from "react-syntax-highlighter/dist/esm/languages/prism/yaml";
29
- import { CopyButton } from "../Button";
30
- import s from "./CodeBlock.module.css";
6
+ import bash from "react-syntax-highlighter/dist/esm/languages/prism/bash.js";
7
+ import c from "react-syntax-highlighter/dist/esm/languages/prism/c.js";
8
+ import clike from "react-syntax-highlighter/dist/esm/languages/prism/clike.js";
9
+ import css from "react-syntax-highlighter/dist/esm/languages/prism/css.js";
10
+ import diff from "react-syntax-highlighter/dist/esm/languages/prism/diff.js";
11
+ import docker from "react-syntax-highlighter/dist/esm/languages/prism/docker.js";
12
+ import go from "react-syntax-highlighter/dist/esm/languages/prism/go.js";
13
+ import java from "react-syntax-highlighter/dist/esm/languages/prism/java.js";
14
+ import javascript from "react-syntax-highlighter/dist/esm/languages/prism/javascript.js";
15
+ import json from "react-syntax-highlighter/dist/esm/languages/prism/json.js";
16
+ import jsx from "react-syntax-highlighter/dist/esm/languages/prism/jsx.js";
17
+ import kotlin from "react-syntax-highlighter/dist/esm/languages/prism/kotlin.js";
18
+ import markdown from "react-syntax-highlighter/dist/esm/languages/prism/markdown.js";
19
+ import markup from "react-syntax-highlighter/dist/esm/languages/prism/markup.js";
20
+ import php from "react-syntax-highlighter/dist/esm/languages/prism/php.js";
21
+ import python from "react-syntax-highlighter/dist/esm/languages/prism/python.js";
22
+ import ruby from "react-syntax-highlighter/dist/esm/languages/prism/ruby.js";
23
+ import scss from "react-syntax-highlighter/dist/esm/languages/prism/scss.js";
24
+ import sql from "react-syntax-highlighter/dist/esm/languages/prism/sql.js";
25
+ import toml from "react-syntax-highlighter/dist/esm/languages/prism/toml.js";
26
+ import tsx from "react-syntax-highlighter/dist/esm/languages/prism/tsx.js";
27
+ import typescript from "react-syntax-highlighter/dist/esm/languages/prism/typescript.js";
28
+ import yaml from "react-syntax-highlighter/dist/esm/languages/prism/yaml.js";
29
+ import { CopyButton } from "../Button/index.js";
30
+ import s from "@plexui/styles/components/CodeBlock/CodeBlock.module.css";
31
31
  SyntaxHighlighter.registerLanguage("javascript", javascript);
32
32
  SyntaxHighlighter.registerLanguage("jsx", jsx);
33
33
  SyntaxHighlighter.registerLanguage("typescript", typescript);
@@ -1 +1 @@
1
- {"version":3,"file":"CodeBlock.js","sourceRoot":"","sources":["../../../../src/components/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport clsx from \"clsx\"\nimport { type ComponentProps } from \"react\"\nimport { createElement, PrismLight as SyntaxHighlighter } from \"react-syntax-highlighter\"\nimport bash from \"react-syntax-highlighter/dist/esm/languages/prism/bash\"\nimport c from \"react-syntax-highlighter/dist/esm/languages/prism/c\"\nimport clike from \"react-syntax-highlighter/dist/esm/languages/prism/clike\"\nimport css from \"react-syntax-highlighter/dist/esm/languages/prism/css\"\nimport diff from \"react-syntax-highlighter/dist/esm/languages/prism/diff\"\nimport docker from \"react-syntax-highlighter/dist/esm/languages/prism/docker\"\nimport go from \"react-syntax-highlighter/dist/esm/languages/prism/go\"\nimport java from \"react-syntax-highlighter/dist/esm/languages/prism/java\"\nimport javascript from \"react-syntax-highlighter/dist/esm/languages/prism/javascript\"\nimport json from \"react-syntax-highlighter/dist/esm/languages/prism/json\"\nimport jsx from \"react-syntax-highlighter/dist/esm/languages/prism/jsx\"\nimport kotlin from \"react-syntax-highlighter/dist/esm/languages/prism/kotlin\"\nimport markdown from \"react-syntax-highlighter/dist/esm/languages/prism/markdown\"\nimport markup from \"react-syntax-highlighter/dist/esm/languages/prism/markup\"\nimport php from \"react-syntax-highlighter/dist/esm/languages/prism/php\"\nimport python from \"react-syntax-highlighter/dist/esm/languages/prism/python\"\nimport ruby from \"react-syntax-highlighter/dist/esm/languages/prism/ruby\"\nimport scss from \"react-syntax-highlighter/dist/esm/languages/prism/scss\"\nimport sql from \"react-syntax-highlighter/dist/esm/languages/prism/sql\"\nimport toml from \"react-syntax-highlighter/dist/esm/languages/prism/toml\"\nimport tsx from \"react-syntax-highlighter/dist/esm/languages/prism/tsx\"\nimport typescript from \"react-syntax-highlighter/dist/esm/languages/prism/typescript\"\nimport yaml from \"react-syntax-highlighter/dist/esm/languages/prism/yaml\"\n\nimport { CopyButton } from \"../Button\"\nimport s from \"./CodeBlock.module.css\"\n\nSyntaxHighlighter.registerLanguage(\"javascript\", javascript)\nSyntaxHighlighter.registerLanguage(\"jsx\", jsx)\nSyntaxHighlighter.registerLanguage(\"typescript\", typescript)\nSyntaxHighlighter.registerLanguage(\"tsx\", tsx)\nSyntaxHighlighter.registerLanguage(\"markup\", markup)\nSyntaxHighlighter.registerLanguage(\"css\", css)\nSyntaxHighlighter.registerLanguage(\"scss\", scss)\nSyntaxHighlighter.registerLanguage(\"c\", c)\nSyntaxHighlighter.registerLanguage(\"clike\", clike)\nSyntaxHighlighter.registerLanguage(\"bash\", bash)\nSyntaxHighlighter.registerLanguage(\"json\", json)\nSyntaxHighlighter.registerLanguage(\"jsonc\", json)\nSyntaxHighlighter.registerLanguage(\"python\", python)\nSyntaxHighlighter.registerLanguage(\"sql\", sql)\nSyntaxHighlighter.registerLanguage(\"diff\", diff)\nSyntaxHighlighter.registerLanguage(\"markdown\", markdown)\nSyntaxHighlighter.registerLanguage(\"yaml\", yaml)\nSyntaxHighlighter.registerLanguage(\"toml\", toml)\nSyntaxHighlighter.registerLanguage(\"docker\", docker)\nSyntaxHighlighter.registerLanguage(\"java\", java)\nSyntaxHighlighter.registerLanguage(\"go\", go)\nSyntaxHighlighter.registerLanguage(\"php\", php)\nSyntaxHighlighter.registerLanguage(\"ruby\", ruby)\nSyntaxHighlighter.registerLanguage(\"kotlin\", kotlin)\n\nexport function CodeBlock({\n children,\n language,\n className,\n}: {\n children: string\n language?: string\n className?: string\n}) {\n return (\n <CodeBlockBase className={className}>\n <CodeBlockBase.Code language={language}>{children}</CodeBlockBase.Code>\n <CodeBlockBase.CopyButton copyValue={children} />\n </CodeBlockBase>\n )\n}\n\nexport function CodeBlockBase({ className, children, ...restProps }: ComponentProps<\"div\">) {\n return (\n <div className={clsx(s.CodeBlock, className)} {...restProps}>\n {children}\n </div>\n )\n}\n\nCodeBlockBase.CopyButton = function CodeBlockCopyButton({\n className,\n copyValue,\n loading,\n disabled,\n}: {\n className?: string\n copyValue: string\n disabled?: boolean\n loading?: boolean\n}) {\n return (\n <div className={clsx(s.CopyButtonContainer, className)}>\n <CopyButton\n copyValue={copyValue}\n variant=\"ghost\"\n color=\"secondary\"\n pill={false}\n size=\"2xs\"\n uniform\n loading={loading}\n disabled={disabled}\n />\n </div>\n )\n}\n\nCodeBlockBase.Code = function CodeBlockCode({\n className,\n children,\n language,\n codeTagProps,\n}: {\n className?: string\n children: string\n language?: string\n codeTagProps?: React.HTMLProps<HTMLElement>\n}) {\n return (\n <SyntaxHighlighter\n className={clsx(s.SyntaxHighlighter, className)}\n language={language}\n showLineNumbers={false}\n showInlineLineNumbers={false}\n useInlineStyles={false}\n codeTagProps={codeTagProps}\n renderer={({ rows }) => {\n return (\n <>\n {rows.map((r, i) =>\n createElement({\n key: i,\n stylesheet: {},\n useInlineStyles: true,\n node: r,\n }),\n )}\n </>\n )\n }}\n >\n {children}\n </SyntaxHighlighter>\n )\n}\n"]}
1
+ {"version":3,"file":"CodeBlock.js","sourceRoot":"","sources":["../../../../src/components/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport clsx from \"clsx\"\nimport { type ComponentProps } from \"react\"\nimport { createElement, PrismLight as SyntaxHighlighter } from \"react-syntax-highlighter\"\nimport bash from \"react-syntax-highlighter/dist/esm/languages/prism/bash\"\nimport c from \"react-syntax-highlighter/dist/esm/languages/prism/c\"\nimport clike from \"react-syntax-highlighter/dist/esm/languages/prism/clike\"\nimport css from \"react-syntax-highlighter/dist/esm/languages/prism/css\"\nimport diff from \"react-syntax-highlighter/dist/esm/languages/prism/diff\"\nimport docker from \"react-syntax-highlighter/dist/esm/languages/prism/docker\"\nimport go from \"react-syntax-highlighter/dist/esm/languages/prism/go\"\nimport java from \"react-syntax-highlighter/dist/esm/languages/prism/java\"\nimport javascript from \"react-syntax-highlighter/dist/esm/languages/prism/javascript\"\nimport json from \"react-syntax-highlighter/dist/esm/languages/prism/json\"\nimport jsx from \"react-syntax-highlighter/dist/esm/languages/prism/jsx\"\nimport kotlin from \"react-syntax-highlighter/dist/esm/languages/prism/kotlin\"\nimport markdown from \"react-syntax-highlighter/dist/esm/languages/prism/markdown\"\nimport markup from \"react-syntax-highlighter/dist/esm/languages/prism/markup\"\nimport php from \"react-syntax-highlighter/dist/esm/languages/prism/php\"\nimport python from \"react-syntax-highlighter/dist/esm/languages/prism/python\"\nimport ruby from \"react-syntax-highlighter/dist/esm/languages/prism/ruby\"\nimport scss from \"react-syntax-highlighter/dist/esm/languages/prism/scss\"\nimport sql from \"react-syntax-highlighter/dist/esm/languages/prism/sql\"\nimport toml from \"react-syntax-highlighter/dist/esm/languages/prism/toml\"\nimport tsx from \"react-syntax-highlighter/dist/esm/languages/prism/tsx\"\nimport typescript from \"react-syntax-highlighter/dist/esm/languages/prism/typescript\"\nimport yaml from \"react-syntax-highlighter/dist/esm/languages/prism/yaml\"\n\nimport { CopyButton } from \"../Button\"\nimport s from \"@plexui/styles/components/CodeBlock/CodeBlock.module.css\"\n\nSyntaxHighlighter.registerLanguage(\"javascript\", javascript)\nSyntaxHighlighter.registerLanguage(\"jsx\", jsx)\nSyntaxHighlighter.registerLanguage(\"typescript\", typescript)\nSyntaxHighlighter.registerLanguage(\"tsx\", tsx)\nSyntaxHighlighter.registerLanguage(\"markup\", markup)\nSyntaxHighlighter.registerLanguage(\"css\", css)\nSyntaxHighlighter.registerLanguage(\"scss\", scss)\nSyntaxHighlighter.registerLanguage(\"c\", c)\nSyntaxHighlighter.registerLanguage(\"clike\", clike)\nSyntaxHighlighter.registerLanguage(\"bash\", bash)\nSyntaxHighlighter.registerLanguage(\"json\", json)\nSyntaxHighlighter.registerLanguage(\"jsonc\", json)\nSyntaxHighlighter.registerLanguage(\"python\", python)\nSyntaxHighlighter.registerLanguage(\"sql\", sql)\nSyntaxHighlighter.registerLanguage(\"diff\", diff)\nSyntaxHighlighter.registerLanguage(\"markdown\", markdown)\nSyntaxHighlighter.registerLanguage(\"yaml\", yaml)\nSyntaxHighlighter.registerLanguage(\"toml\", toml)\nSyntaxHighlighter.registerLanguage(\"docker\", docker)\nSyntaxHighlighter.registerLanguage(\"java\", java)\nSyntaxHighlighter.registerLanguage(\"go\", go)\nSyntaxHighlighter.registerLanguage(\"php\", php)\nSyntaxHighlighter.registerLanguage(\"ruby\", ruby)\nSyntaxHighlighter.registerLanguage(\"kotlin\", kotlin)\n\nexport function CodeBlock({\n children,\n language,\n className,\n}: {\n children: string\n language?: string\n className?: string\n}) {\n return (\n <CodeBlockBase className={className}>\n <CodeBlockBase.Code language={language}>{children}</CodeBlockBase.Code>\n <CodeBlockBase.CopyButton copyValue={children} />\n </CodeBlockBase>\n )\n}\n\nexport function CodeBlockBase({ className, children, ...restProps }: ComponentProps<\"div\">) {\n return (\n <div className={clsx(s.CodeBlock, className)} {...restProps}>\n {children}\n </div>\n )\n}\n\nCodeBlockBase.CopyButton = function CodeBlockCopyButton({\n className,\n copyValue,\n loading,\n disabled,\n}: {\n className?: string\n copyValue: string\n disabled?: boolean\n loading?: boolean\n}) {\n return (\n <div className={clsx(s.CopyButtonContainer, className)}>\n <CopyButton\n copyValue={copyValue}\n variant=\"ghost\"\n color=\"secondary\"\n pill={false}\n size=\"2xs\"\n uniform\n loading={loading}\n disabled={disabled}\n />\n </div>\n )\n}\n\nCodeBlockBase.Code = function CodeBlockCode({\n className,\n children,\n language,\n codeTagProps,\n}: {\n className?: string\n children: string\n language?: string\n codeTagProps?: React.HTMLProps<HTMLElement>\n}) {\n return (\n <SyntaxHighlighter\n className={clsx(s.SyntaxHighlighter, className)}\n language={language}\n showLineNumbers={false}\n showInlineLineNumbers={false}\n useInlineStyles={false}\n codeTagProps={codeTagProps}\n renderer={({ rows }) => {\n return (\n <>\n {rows.map((r, i) =>\n createElement({\n key: i,\n stylesheet: {},\n useInlineStyles: true,\n node: r,\n }),\n )}\n </>\n )\n }}\n >\n {children}\n </SyntaxHighlighter>\n )\n}\n"]}
@@ -2,16 +2,18 @@
2
2
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import clsx from "clsx";
4
4
  import { useState } from "react";
5
- import { Button } from "../Button";
6
- import { CodeBlockBase } from "./CodeBlock";
7
- import s from "./CodeBlock.module.css";
5
+ import { Button } from "../Button/index.js";
6
+ import { CodeBlockBase } from "./CodeBlock.js";
7
+ import s from "@plexui/styles/components/CodeBlock/CodeBlock.module.css";
8
+ // Room for the View Code button, unless `collapsedHeight` is smaller
9
+ const MIN_COLLAPSED_HEIGHT = 140;
8
10
  export function CollapsibleCodeBlock({ children, language, defaultExpanded = false, collapsedHeight = 140, maxExpandedHeight, copyable = true, className, }) {
9
11
  const [isExpanded, setIsExpanded] = useState(defaultExpanded);
10
12
  const containerStyle = isExpanded
11
13
  ? maxExpandedHeight
12
14
  ? { maxHeight: maxExpandedHeight }
13
15
  : undefined
14
- : { maxHeight: collapsedHeight };
16
+ : { maxHeight: collapsedHeight, minHeight: Math.min(collapsedHeight, MIN_COLLAPSED_HEIGHT) };
15
17
  return (_jsxs(CodeBlockBase, { className: clsx(s.CollapsibleCodeBlock, className), "data-collapsed": !isExpanded ? "" : undefined, style: containerStyle, children: [_jsx(CodeBlockBase.Code, { language: language, children: children }), !isExpanded && (_jsxs(_Fragment, { children: [_jsx("div", { className: s.GradientOverlay }), _jsx("div", { className: s.ViewCodeButtonContainer, children: _jsx(Button, { color: "secondary", variant: "solid", size: "sm", pill: true, onClick: () => setIsExpanded(true), children: "View Code" }) })] })), isExpanded && copyable && _jsx(CodeBlockBase.CopyButton, { copyValue: children })] }));
16
18
  }
17
19
  //# sourceMappingURL=CollapsibleCodeBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsibleCodeBlock.js","sourceRoot":"","sources":["../../../../src/components/CodeBlock/CollapsibleCodeBlock.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAuB,MAAM,OAAO,CAAA;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,CAAC,MAAM,wBAAwB,CAAA;AAmBtC,MAAM,UAAU,oBAAoB,CAAC,EACnC,QAAQ,EACR,QAAQ,EACR,eAAe,GAAG,KAAK,EACvB,eAAe,GAAG,GAAG,EACrB,iBAAiB,EACjB,QAAQ,GAAG,IAAI,EACf,SAAS,GACiB;IAC1B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAA;IAE7D,MAAM,cAAc,GAAmC,UAAU;QAC/D,CAAC,CAAC,iBAAiB;YACjB,CAAC,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE;YAClC,CAAC,CAAC,SAAS;QACb,CAAC,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAA;IAElC,OAAO,CACL,MAAC,aAAa,IACZ,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,oBAAoB,EAAE,SAAS,CAAC,oBAClC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAC5C,KAAK,EAAE,cAAc,aAErB,KAAC,aAAa,CAAC,IAAI,IAAC,QAAQ,EAAE,QAAQ,YAAG,QAAQ,GAAsB,EAEtE,CAAC,UAAU,IAAI,CACd,8BACE,cAAK,SAAS,EAAE,CAAC,CAAC,eAAe,GAAI,EACrC,cAAK,SAAS,EAAE,CAAC,CAAC,uBAAuB,YACvC,KAAC,MAAM,IACL,KAAK,EAAC,WAAW,EACjB,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,IAAI,QACJ,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,0BAG3B,GACL,IACL,CACJ,EAEA,UAAU,IAAI,QAAQ,IAAI,KAAC,aAAa,CAAC,UAAU,IAAC,SAAS,EAAE,QAAQ,GAAI,IAC9D,CACjB,CAAA;AACH,CAAC","sourcesContent":["\"use client\"\n\nimport clsx from \"clsx\"\nimport { useState, type ComponentProps } from \"react\"\n\nimport { Button } from \"../Button\"\nimport { CodeBlockBase } from \"./CodeBlock\"\nimport s from \"./CodeBlock.module.css\"\n\nexport type CollapsibleCodeBlockProps = {\n /** The code string to display */\n children: string\n /** Syntax highlighting language */\n language?: string\n /** Whether the code block starts expanded */\n defaultExpanded?: boolean\n /** Height of the collapsed container in pixels */\n collapsedHeight?: number\n /** Maximum height when expanded (enables scroll if exceeded) */\n maxExpandedHeight?: number\n /** Whether to show the copy button when expanded */\n copyable?: boolean\n /** Additional class name for the container */\n className?: string\n}\n\nexport function CollapsibleCodeBlock({\n children,\n language,\n defaultExpanded = false,\n collapsedHeight = 140,\n maxExpandedHeight,\n copyable = true,\n className,\n}: CollapsibleCodeBlockProps) {\n const [isExpanded, setIsExpanded] = useState(defaultExpanded)\n\n const containerStyle: ComponentProps<\"div\">[\"style\"] = isExpanded\n ? maxExpandedHeight\n ? { maxHeight: maxExpandedHeight }\n : undefined\n : { maxHeight: collapsedHeight }\n\n return (\n <CodeBlockBase\n className={clsx(s.CollapsibleCodeBlock, className)}\n data-collapsed={!isExpanded ? \"\" : undefined}\n style={containerStyle}\n >\n <CodeBlockBase.Code language={language}>{children}</CodeBlockBase.Code>\n\n {!isExpanded && (\n <>\n <div className={s.GradientOverlay} />\n <div className={s.ViewCodeButtonContainer}>\n <Button\n color=\"secondary\"\n variant=\"solid\"\n size=\"sm\"\n pill\n onClick={() => setIsExpanded(true)}\n >\n View Code\n </Button>\n </div>\n </>\n )}\n\n {isExpanded && copyable && <CodeBlockBase.CopyButton copyValue={children} />}\n </CodeBlockBase>\n )\n}\n"]}
1
+ {"version":3,"file":"CollapsibleCodeBlock.js","sourceRoot":"","sources":["../../../../src/components/CodeBlock/CollapsibleCodeBlock.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAuB,MAAM,OAAO,CAAA;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,CAAC,MAAM,0DAA0D,CAAA;AAExE,qEAAqE;AACrE,MAAM,oBAAoB,GAAG,GAAG,CAAA;AAmBhC,MAAM,UAAU,oBAAoB,CAAC,EACnC,QAAQ,EACR,QAAQ,EACR,eAAe,GAAG,KAAK,EACvB,eAAe,GAAG,GAAG,EACrB,iBAAiB,EACjB,QAAQ,GAAG,IAAI,EACf,SAAS,GACiB;IAC1B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAA;IAE7D,MAAM,cAAc,GAAmC,UAAU;QAC/D,CAAC,CAAC,iBAAiB;YACjB,CAAC,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE;YAClC,CAAC,CAAC,SAAS;QACb,CAAC,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,oBAAoB,CAAC,EAAE,CAAA;IAE9F,OAAO,CACL,MAAC,aAAa,IACZ,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,oBAAoB,EAAE,SAAS,CAAC,oBAClC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAC5C,KAAK,EAAE,cAAc,aAErB,KAAC,aAAa,CAAC,IAAI,IAAC,QAAQ,EAAE,QAAQ,YAAG,QAAQ,GAAsB,EAEtE,CAAC,UAAU,IAAI,CACd,8BACE,cAAK,SAAS,EAAE,CAAC,CAAC,eAAe,GAAI,EACrC,cAAK,SAAS,EAAE,CAAC,CAAC,uBAAuB,YACvC,KAAC,MAAM,IACL,KAAK,EAAC,WAAW,EACjB,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,IAAI,QACJ,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,0BAG3B,GACL,IACL,CACJ,EAEA,UAAU,IAAI,QAAQ,IAAI,KAAC,aAAa,CAAC,UAAU,IAAC,SAAS,EAAE,QAAQ,GAAI,IAC9D,CACjB,CAAA;AACH,CAAC","sourcesContent":["\"use client\"\n\nimport clsx from \"clsx\"\nimport { useState, type ComponentProps } from \"react\"\n\nimport { Button } from \"../Button\"\nimport { CodeBlockBase } from \"./CodeBlock\"\nimport s from \"@plexui/styles/components/CodeBlock/CodeBlock.module.css\"\n\n// Room for the View Code button, unless `collapsedHeight` is smaller\nconst MIN_COLLAPSED_HEIGHT = 140\n\nexport type CollapsibleCodeBlockProps = {\n /** The code string to display */\n children: string\n /** Syntax highlighting language */\n language?: string\n /** Whether the code block starts expanded */\n defaultExpanded?: boolean\n /** Height of the collapsed container in pixels */\n collapsedHeight?: number\n /** Maximum height when expanded (enables scroll if exceeded) */\n maxExpandedHeight?: number\n /** Whether to show the copy button when expanded */\n copyable?: boolean\n /** Additional class name for the container */\n className?: string\n}\n\nexport function CollapsibleCodeBlock({\n children,\n language,\n defaultExpanded = false,\n collapsedHeight = 140,\n maxExpandedHeight,\n copyable = true,\n className,\n}: CollapsibleCodeBlockProps) {\n const [isExpanded, setIsExpanded] = useState(defaultExpanded)\n\n const containerStyle: ComponentProps<\"div\">[\"style\"] = isExpanded\n ? maxExpandedHeight\n ? { maxHeight: maxExpandedHeight }\n : undefined\n : { maxHeight: collapsedHeight, minHeight: Math.min(collapsedHeight, MIN_COLLAPSED_HEIGHT) }\n\n return (\n <CodeBlockBase\n className={clsx(s.CollapsibleCodeBlock, className)}\n data-collapsed={!isExpanded ? \"\" : undefined}\n style={containerStyle}\n >\n <CodeBlockBase.Code language={language}>{children}</CodeBlockBase.Code>\n\n {!isExpanded && (\n <>\n <div className={s.GradientOverlay} />\n <div className={s.ViewCodeButtonContainer}>\n <Button\n color=\"secondary\"\n variant=\"solid\"\n size=\"sm\"\n pill\n onClick={() => setIsExpanded(true)}\n >\n View Code\n </Button>\n </div>\n </>\n )}\n\n {isExpanded && copyable && <CodeBlockBase.CopyButton copyValue={children} />}\n </CodeBlockBase>\n )\n}\n"]}
@@ -1,3 +1,3 @@
1
- export { CodeBlock, CodeBlockBase } from "./CodeBlock";
2
- export { CollapsibleCodeBlock } from "./CollapsibleCodeBlock";
1
+ export { CodeBlock, CodeBlockBase } from "./CodeBlock.js";
2
+ export { CollapsibleCodeBlock } from "./CollapsibleCodeBlock.js";
3
3
  //# sourceMappingURL=index.js.map