@plexui/ui 0.19.0 → 0.20.0

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 (401) hide show
  1. package/README.md +1 -3
  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 +26 -18
  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 +104 -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/variables-components.css +1 -626
  234. package/dist/es/styles/variables-primitive.css +1 -327
  235. package/dist/es/styles/variables-semantic.css +1 -609
  236. package/dist/es/styles/variables-tailwind-theme.css +1 -34
  237. package/dist/es/styles/variables-tokens-root.css +1 -41
  238. package/dist/es/types.js +1 -1
  239. package/dist/es/types.js.map +1 -1
  240. package/dist/es/vite/index.js +3 -53
  241. package/dist/es/vite/index.js.map +1 -1
  242. package/dist/types/components/Accordion/index.d.ts +1 -1
  243. package/dist/types/components/Alert/Alert.d.ts +8 -2
  244. package/dist/types/components/Alert/index.d.ts +1 -1
  245. package/dist/types/components/Avatar/Avatar.d.ts +1 -1
  246. package/dist/types/components/Avatar/index.d.ts +2 -2
  247. package/dist/types/components/Badge/index.d.ts +1 -1
  248. package/dist/types/components/Breadcrumb/Breadcrumb.d.ts +34 -0
  249. package/dist/types/components/Breadcrumb/index.d.ts +1 -0
  250. package/dist/types/components/Button/Button.d.ts +3 -3
  251. package/dist/types/components/Button/CopyButton.d.ts +9 -4
  252. package/dist/types/components/Button/index.d.ts +2 -2
  253. package/dist/types/components/ButtonGroup/ButtonGroup.d.ts +4 -3
  254. package/dist/types/components/ButtonGroup/index.d.ts +1 -1
  255. package/dist/types/components/Card/index.d.ts +1 -1
  256. package/dist/types/components/Checkbox/Checkbox.d.ts +3 -1
  257. package/dist/types/components/Checkbox/index.d.ts +1 -1
  258. package/dist/types/components/CodeBlock/index.d.ts +2 -2
  259. package/dist/types/components/DataTable/DataTable.d.ts +3 -2
  260. package/dist/types/components/DataTable/index.d.ts +4 -4
  261. package/dist/types/components/DateInput/DateInput.d.ts +1 -1
  262. package/dist/types/components/DateInput/index.d.ts +1 -1
  263. package/dist/types/components/DatePicker/DatePicker.d.ts +7 -6
  264. package/dist/types/components/DatePicker/context.d.ts +1 -1
  265. package/dist/types/components/DatePicker/index.d.ts +2 -2
  266. package/dist/types/components/DateRangePicker/Calendar.d.ts +1 -1
  267. package/dist/types/components/DateRangePicker/DateRangePicker.d.ts +5 -5
  268. package/dist/types/components/DateRangePicker/context.d.ts +2 -2
  269. package/dist/types/components/DateRangePicker/index.d.ts +2 -2
  270. package/dist/types/components/Dialog/Dialog.d.ts +19 -1
  271. package/dist/types/components/Dialog/index.d.ts +1 -1
  272. package/dist/types/components/EmptyMessage/EmptyMessage.d.ts +15 -3
  273. package/dist/types/components/EmptyMessage/index.d.ts +1 -1
  274. package/dist/types/components/Field/Field.d.ts +14 -4
  275. package/dist/types/components/Field/index.d.ts +1 -1
  276. package/dist/types/components/FieldError/FieldError.d.ts +7 -1
  277. package/dist/types/components/FieldError/index.d.ts +1 -1
  278. package/dist/types/components/FileUpload/index.d.ts +1 -1
  279. package/dist/types/components/FloatingLabelInput/index.d.ts +1 -1
  280. package/dist/types/components/FloatingLabelSelect/index.d.ts +1 -1
  281. package/dist/types/components/Icon/aliases.d.ts +20 -20
  282. package/dist/types/components/Icon/index.d.ts +653 -653
  283. package/dist/types/components/Image/Image.d.ts +1 -1
  284. package/dist/types/components/Image/index.d.ts +1 -1
  285. package/dist/types/components/Indicator/index.d.ts +3 -3
  286. package/dist/types/components/Input/Input.d.ts +2 -2
  287. package/dist/types/components/Input/index.d.ts +1 -1
  288. package/dist/types/components/InputGroup/InputGroup.d.ts +78 -0
  289. package/dist/types/components/InputGroup/index.d.ts +1 -0
  290. package/dist/types/components/Kbd/Kbd.d.ts +20 -0
  291. package/dist/types/components/Kbd/index.d.ts +1 -0
  292. package/dist/types/components/Label/index.d.ts +1 -1
  293. package/dist/types/components/Markdown/Markdown.d.ts +1 -1
  294. package/dist/types/components/Markdown/index.d.ts +4 -4
  295. package/dist/types/components/MarkdownEditor/MarkdownEditor.d.ts +6 -2
  296. package/dist/types/components/MarkdownEditor/index.d.ts +1 -1
  297. package/dist/types/components/Menu/Menu.d.ts +11 -3
  298. package/dist/types/components/Menu/index.d.ts +1 -1
  299. package/dist/types/components/OTPInput/index.d.ts +1 -1
  300. package/dist/types/components/PlexUIProvider/PlexUIProvider.d.ts +0 -11
  301. package/dist/types/components/PlexUIProvider/index.d.ts +1 -1
  302. package/dist/types/components/Popover/index.d.ts +2 -2
  303. package/dist/types/components/Progress/index.d.ts +1 -1
  304. package/dist/types/components/ProgressSteps/ProgressSteps.d.ts +1 -1
  305. package/dist/types/components/ProgressSteps/index.d.ts +1 -1
  306. package/dist/types/components/RadioGroup/RadioGroup.d.ts +3 -1
  307. package/dist/types/components/RadioGroup/index.d.ts +1 -1
  308. package/dist/types/components/SegmentedControl/index.d.ts +2 -2
  309. package/dist/types/components/Select/Select.d.ts +8 -1
  310. package/dist/types/components/Select/index.d.ts +1 -1
  311. package/dist/types/components/SelectControl/SelectControl.d.ts +1 -1
  312. package/dist/types/components/SelectControl/index.d.ts +1 -1
  313. package/dist/types/components/Separator/index.d.ts +1 -1
  314. package/dist/types/components/ShimmerText/index.d.ts +1 -1
  315. package/dist/types/components/Sidebar/Sidebar.d.ts +4 -8
  316. package/dist/types/components/Sidebar/index.d.ts +4 -4
  317. package/dist/types/components/Slider/Slider.d.ts +8 -0
  318. package/dist/types/components/Slider/index.d.ts +2 -2
  319. package/dist/types/components/StatCard/index.d.ts +1 -1
  320. package/dist/types/components/Switch/index.d.ts +1 -1
  321. package/dist/types/components/Table/index.d.ts +1 -1
  322. package/dist/types/components/Tabs/Tabs.d.ts +15 -2
  323. package/dist/types/components/Tabs/index.d.ts +2 -2
  324. package/dist/types/components/Tabs/overflow.d.ts +17 -0
  325. package/dist/types/components/TagInput/TagInput.d.ts +1 -1
  326. package/dist/types/components/TagInput/index.d.ts +1 -1
  327. package/dist/types/components/TextLink/index.d.ts +1 -1
  328. package/dist/types/components/Textarea/Textarea.d.ts +1 -1
  329. package/dist/types/components/Textarea/index.d.ts +1 -1
  330. package/dist/types/components/Toast/index.d.ts +1 -1
  331. package/dist/types/components/Tooltip/CopyTooltip.d.ts +6 -1
  332. package/dist/types/components/Tooltip/index.d.ts +2 -2
  333. package/dist/types/components/Transition/Animate.d.ts +2 -2
  334. package/dist/types/components/Transition/AnimateLayout.d.ts +2 -2
  335. package/dist/types/components/Transition/AnimateLayoutGroup.d.ts +2 -2
  336. package/dist/types/components/Transition/SlotTransitionGroup.d.ts +1 -1
  337. package/dist/types/components/Transition/TransitionGroup.d.ts +1 -1
  338. package/dist/types/components/Transition/index.d.ts +5 -5
  339. package/dist/types/components/UIProvider/index.d.ts +1 -1
  340. package/dist/types/global.d.ts +5 -1
  341. package/dist/types/lib/constants.d.ts +1 -1
  342. package/dist/types/lib/helpers.d.ts +4 -4
  343. package/dist/types/lib/theme.d.ts +1 -1
  344. package/dist/types/types.d.ts +2 -15
  345. package/dist/types/vite/index.d.ts +2 -55
  346. package/package.json +10 -18
  347. package/dist/es/components/Accordion/Accordion.module.css +0 -89
  348. package/dist/es/components/Alert/Alert.module.css +0 -187
  349. package/dist/es/components/Avatar/Avatar.module.css +0 -168
  350. package/dist/es/components/Avatar/AvatarGroup.module.css +0 -26
  351. package/dist/es/components/Badge/Badge.module.css +0 -196
  352. package/dist/es/components/Button/Button.module.css +0 -859
  353. package/dist/es/components/ButtonGroup/ButtonGroup.module.css +0 -159
  354. package/dist/es/components/Card/Card.module.css +0 -125
  355. package/dist/es/components/Checkbox/Checkbox.module.css +0 -198
  356. package/dist/es/components/CodeBlock/CodeBlock.module.css +0 -137
  357. package/dist/es/components/DataTable/DataTable.module.css +0 -108
  358. package/dist/es/components/DatePicker/Calendar.module.css +0 -271
  359. package/dist/es/components/DateRangePicker/Calendar.module.css +0 -295
  360. package/dist/es/components/DateRangePicker/Trigger.module.css +0 -25
  361. package/dist/es/components/Dialog/Dialog.module.css +0 -133
  362. package/dist/es/components/EmptyMessage/EmptyMessage.module.css +0 -82
  363. package/dist/es/components/Field/Field.module.css +0 -137
  364. package/dist/es/components/FieldError/FieldError.module.css +0 -22
  365. package/dist/es/components/FileUpload/FileUpload.module.css +0 -133
  366. package/dist/es/components/FloatingLabelInput/FloatingLabelInput.module.css +0 -220
  367. package/dist/es/components/FloatingLabelSelect/FloatingLabelSelect.module.css +0 -146
  368. package/dist/es/components/Image/Image.module.css +0 -9
  369. package/dist/es/components/Indicator/CircularProgress.module.css +0 -28
  370. package/dist/es/components/Indicator/LoadingDots.module.css +0 -35
  371. package/dist/es/components/Indicator/LoadingIndicator.module.css +0 -41
  372. package/dist/es/components/Input/Input.module.css +0 -507
  373. package/dist/es/components/Label/Label.module.css +0 -16
  374. package/dist/es/components/Markdown/Markdown.module.css +0 -233
  375. package/dist/es/components/MarkdownEditor/MarkdownEditor.module.css +0 -297
  376. package/dist/es/components/Menu/Menu.module.css +0 -377
  377. package/dist/es/components/OTPInput/OTPInput.module.css +0 -66
  378. package/dist/es/components/Popover/Popover.module.css +0 -82
  379. package/dist/es/components/Progress/Progress.module.css +0 -34
  380. package/dist/es/components/ProgressSteps/ProgressSteps.module.css +0 -246
  381. package/dist/es/components/RadioGroup/RadioGroup.module.css +0 -137
  382. package/dist/es/components/Select/Select.module.css +0 -310
  383. package/dist/es/components/SelectControl/SelectControl.module.css +0 -558
  384. package/dist/es/components/Separator/Separator.module.css +0 -16
  385. package/dist/es/components/ShimmerText/ShimmerText.module.css +0 -43
  386. package/dist/es/components/Sidebar/Sidebar.module.css +0 -909
  387. package/dist/es/components/Skeleton/Skeleton.module.css +0 -17
  388. package/dist/es/components/Slider/Slider.module.css +0 -203
  389. package/dist/es/components/StatCard/StatCard.module.css +0 -234
  390. package/dist/es/components/Switch/Switch.module.css +0 -121
  391. package/dist/es/components/Table/Table.module.css +0 -56
  392. package/dist/es/components/Tabs/Tabs.module.css +0 -672
  393. package/dist/es/components/TagInput/TagInput.module.css +0 -320
  394. package/dist/es/components/TextLink/TextLink.module.css +0 -50
  395. package/dist/es/components/Textarea/Textarea.module.css +0 -272
  396. package/dist/es/components/Toast/Toast.module.css +0 -84
  397. package/dist/es/components/Tooltip/Tooltip.module.css +0 -91
  398. package/dist/es/components/Transition/Animate.module.css +0 -54
  399. package/dist/es/components/Transition/AnimateLayout.module.css +0 -101
  400. package/dist/es/components/Transition/AnimateLayoutGroup.module.css +0 -72
  401. package/dist/es/components/Transition/TransitionGroup.module.css +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"ShimmerText.js","sourceRoot":"","sources":["../../../../src/components/ShimmerText/ShimmerText.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AAE3D,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAExC,yDAAyD;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,EAAE,EAAE,GAAG,GAAG,KAAK,EACf,QAAQ,EACR,SAAS,GAKV,EAAE,EAAE;IACH,OAAO,KAAC,GAAG,IAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,YAAG,QAAQ,GAAO,CAAA;AACrE,CAAC,CAAA;AAED,uFAAuF;AACvF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC9B,EAAE,EAAE,GAAG,GAAG,KAAK,EACf,QAAQ,EACR,SAAS,EACT,OAAO,GAAG,KAAK,EACf,GAAG,SAAS,EAMb,EAAE,EAAE;IACH,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAA;IAE9C,2EAA2E;IAC3E,MAAM,wBAAwB,GAAG,GAAG,EAAE;QACpC,SAAS,CAAC,IAAI,CAAC,CAAA;IACjB,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,EAAE,CAAC;YACZ,mDAAmD;YACnD,SAAS,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,OAAO,CACL,KAAC,GAAG,OACE,SAAS,EACb,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EACrC,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB,eACzD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,YAEjC,QAAQ,GACL,CACP,CAAA;AACH,CAAC,CAAA","sourcesContent":["\"use client\"\n\nimport { useEffect, useState, type ReactNode } from \"react\"\n\nimport clsx from \"clsx\"\nimport s from \"./ShimmerText.module.css\"\n\n// If text will always shimmer, use the simpler interface\nexport const ShimmerText = ({\n as: Tag = \"div\",\n children,\n className,\n}: {\n as?: \"p\" | \"span\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"div\"\n children: ReactNode\n className?: string\n}) => {\n return <Tag className={clsx(s.Shimmer, className)}>{children}</Tag>\n}\n\n// If text may end shimmering after playing for a time, or resume, use shimmerable text\nexport const ShimmerableText = ({\n as: Tag = \"div\",\n children,\n className,\n shimmer = false,\n ...restProps\n}: {\n as?: \"p\" | \"span\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"div\"\n children: ReactNode\n className?: string\n shimmer?: boolean\n}) => {\n const [paused, setPaused] = useState(!shimmer)\n\n // Pauses the animation at the start of (what would be) the next iteration.\n const handleAnimationIteration = () => {\n setPaused(true)\n }\n\n useEffect(() => {\n if (shimmer) {\n // Ensure pause is cleared if shimmer is re-enabled\n setPaused(false)\n }\n }, [shimmer])\n\n return (\n <Tag\n {...restProps}\n className={clsx(s.Shimmer, className)}\n onAnimationIteration={shimmer ? undefined : handleAnimationIteration}\n data-idle={paused ? \"\" : undefined}\n >\n {children}\n </Tag>\n )\n}\n"]}
1
+ {"version":3,"file":"ShimmerText.js","sourceRoot":"","sources":["../../../../src/components/ShimmerText/ShimmerText.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AAE3D,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,CAAC,MAAM,8DAA8D,CAAA;AAE5E,yDAAyD;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,EAAE,EAAE,GAAG,GAAG,KAAK,EACf,QAAQ,EACR,SAAS,GAKV,EAAE,EAAE;IACH,OAAO,KAAC,GAAG,IAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,YAAG,QAAQ,GAAO,CAAA;AACrE,CAAC,CAAA;AAED,uFAAuF;AACvF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC9B,EAAE,EAAE,GAAG,GAAG,KAAK,EACf,QAAQ,EACR,SAAS,EACT,OAAO,GAAG,KAAK,EACf,GAAG,SAAS,EAMb,EAAE,EAAE;IACH,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAA;IAE9C,2EAA2E;IAC3E,MAAM,wBAAwB,GAAG,GAAG,EAAE;QACpC,SAAS,CAAC,IAAI,CAAC,CAAA;IACjB,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,EAAE,CAAC;YACZ,mDAAmD;YACnD,SAAS,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,OAAO,CACL,KAAC,GAAG,OACE,SAAS,EACb,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EACrC,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB,eACzD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,YAEjC,QAAQ,GACL,CACP,CAAA;AACH,CAAC,CAAA","sourcesContent":["\"use client\"\n\nimport { useEffect, useState, type ReactNode } from \"react\"\n\nimport clsx from \"clsx\"\nimport s from \"@plexui/styles/components/ShimmerText/ShimmerText.module.css\"\n\n// If text will always shimmer, use the simpler interface\nexport const ShimmerText = ({\n as: Tag = \"div\",\n children,\n className,\n}: {\n as?: \"p\" | \"span\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"div\"\n children: ReactNode\n className?: string\n}) => {\n return <Tag className={clsx(s.Shimmer, className)}>{children}</Tag>\n}\n\n// If text may end shimmering after playing for a time, or resume, use shimmerable text\nexport const ShimmerableText = ({\n as: Tag = \"div\",\n children,\n className,\n shimmer = false,\n ...restProps\n}: {\n as?: \"p\" | \"span\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"div\"\n children: ReactNode\n className?: string\n shimmer?: boolean\n}) => {\n const [paused, setPaused] = useState(!shimmer)\n\n // Pauses the animation at the start of (what would be) the next iteration.\n const handleAnimationIteration = () => {\n setPaused(true)\n }\n\n useEffect(() => {\n if (shimmer) {\n // Ensure pause is cleared if shimmer is re-enabled\n setPaused(false)\n }\n }, [shimmer])\n\n return (\n <Tag\n {...restProps}\n className={clsx(s.Shimmer, className)}\n onAnimationIteration={shimmer ? undefined : handleAnimationIteration}\n data-idle={paused ? \"\" : undefined}\n >\n {children}\n </Tag>\n )\n}\n"]}
@@ -1,2 +1,2 @@
1
- export { ShimmerText, ShimmerableText } from "./ShimmerText";
1
+ export { ShimmerText, ShimmerableText } from "./ShimmerText.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -64,15 +64,15 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
64
64
  * SidebarInput
65
65
  * - shortcut?: string (keyboard shortcut display)
66
66
  */
67
- import { Slot } from "@radix-ui/react-slot";
68
67
  import clsx from "clsx";
69
- import { forwardRef, useCallback, useLayoutEffect, useState, } from "react";
70
- import { Button } from "../Button";
71
- import { ChevronRightMd, Search as SearchIcon, SidebarLeft, X } from "../Icon";
72
- import { Input } from "../Input";
73
- import { Tooltip } from "../Tooltip";
74
- import s from "./Sidebar.module.css";
75
- import { SidebarProvider, useSidebar, } from "./useSidebarContext";
68
+ import { Slot } from "radix-ui";
69
+ import { cloneElement, forwardRef, isValidElement, useCallback, useLayoutEffect, useState, } from "react";
70
+ import { Button } from "../Button/index.js";
71
+ import { ChevronRightMd, Search as SearchIcon, SidebarLeft, X } from "../Icon/index.js";
72
+ import { Input } from "../Input/index.js";
73
+ import { Tooltip } from "../Tooltip/index.js";
74
+ import s from "@plexui/styles/components/Sidebar/Sidebar.module.css";
75
+ import { SidebarProvider, useSidebar, } from "./useSidebarContext.js";
76
76
  // Helper to filter out props that shouldn't be spread to the DOM (e.g. injected by MDX)
77
77
  const cleanProps = (props) => {
78
78
  const { "data-toggle": _, ...rest } = props;
@@ -122,23 +122,15 @@ export const SidebarFooter = forwardRef(({ className, children, ...props }, ref)
122
122
  SidebarFooter.displayName = "SidebarFooter";
123
123
  export const SidebarRail = forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: clsx(s.Rail, className), ...cleanProps(props) })));
124
124
  SidebarRail.displayName = "SidebarRail";
125
- export const SidebarGroup = forwardRef(({ defaultOpen = true, open: openProp, onOpenChange, className, ...props }, ref) => {
126
- const [_open, _setOpen] = useState(defaultOpen);
127
- const open = openProp ?? _open;
128
- const handleToggle = () => {
129
- const newState = !open;
130
- if (onOpenChange) {
131
- onOpenChange(newState);
132
- }
133
- else {
134
- _setOpen(newState);
135
- }
136
- };
125
+ export const SidebarGroup = forwardRef(({ defaultOpen = true, open: openProp, className, ...props }, ref) => {
126
+ // The initial value only, like an uncontrolled input's defaultValue
127
+ const [initialOpen] = useState(defaultOpen);
128
+ const open = openProp ?? initialOpen;
137
129
  return (_jsx("div", { ref: ref, "data-state": open ? "open" : "closed", className: clsx(s.Group, className), ...cleanProps(props) }));
138
130
  });
139
131
  SidebarGroup.displayName = "SidebarGroup";
140
132
  export const SidebarGroupLabel = forwardRef(({ asChild = false, size = "lg", className, ...props }, ref) => {
141
- const Comp = asChild ? Slot : "span";
133
+ const Comp = asChild ? Slot.Root : "span";
142
134
  return (_jsx(Comp, { ref: ref, "data-size": size, className: clsx(s.GroupLabel, className), ...cleanProps(props) }));
143
135
  });
144
136
  SidebarGroupLabel.displayName = "SidebarGroupLabel";
@@ -152,8 +144,12 @@ export const SidebarMenuItem = forwardRef(({ expanded, className, ...props }, re
152
144
  SidebarMenuItem.displayName = "SidebarMenuItem";
153
145
  export const SidebarMenuButton = forwardRef(({ isActive = false, tooltip, asChild = false, className, children, ...props }, ref) => {
154
146
  const { state, isMobile } = useSidebar();
155
- const Comp = asChild ? Slot : "button";
156
- const button = (_jsx(Comp, { ref: ref, "data-active": isActive ? "true" : "false", "aria-current": isActive ? "page" : undefined, className: clsx(s.MenuButton, className), ...cleanProps(props), children: _jsx("span", { className: s.MenuButtonInner, children: children }) }));
147
+ const Comp = asChild ? Slot.Root : "button";
148
+ // With asChild the child element is the button, so the inner wrapper
149
+ // goes inside it. Wrapping the child instead would make Slot merge the
150
+ // button props onto the wrapper span.
151
+ const content = asChild && isValidElement(children) ? (cloneElement(children, undefined, _jsx("span", { className: s.MenuButtonInner, children: children.props.children }))) : (_jsx("span", { className: s.MenuButtonInner, children: children }));
152
+ const button = (_jsx(Comp, { ref: ref, "data-active": isActive ? "true" : "false", "aria-current": isActive ? "page" : undefined, className: clsx(s.MenuButton, className), ...cleanProps(props), children: content }));
157
153
  // Show tooltip when collapsed (icon mode) and not mobile
158
154
  if (tooltip && state === "collapsed" && !isMobile) {
159
155
  return (_jsx(Tooltip, { content: tooltip, side: "right", children: button }));
@@ -173,12 +169,14 @@ export const SidebarMenuAction = forwardRef(({ className, ...props }, ref) => (_
173
169
  SidebarMenuAction.displayName = "SidebarMenuAction";
174
170
  export const SidebarMenuSkeleton = forwardRef(({ showIcon = true, labelWidth = "60%", className, ...props }, ref) => (_jsxs("div", { ref: ref, "data-skeleton": true, className: clsx(s.MenuSkeleton, className), ...cleanProps(props), children: [showIcon && _jsx("div", { className: s.MenuSkeletonIcon }), _jsx("div", { className: s.MenuSkeletonLabel, style: { width: labelWidth } })] })));
175
171
  SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
176
- export const SidebarMenuSub = forwardRef(({ open = true, hasIcons = false, className, ...props }, ref) => (_jsx("ul", { ref: ref, "data-state": open ? "open" : "closed", "data-has-icons": hasIcons ? "true" : undefined, className: clsx(s.MenuSub, className), ...cleanProps(props) })));
172
+ export const SidebarMenuSub = forwardRef(({ open = true, hasIcons = false, className, ...props }, ref) => (_jsx("ul", { ref: ref, "data-state": open ? "open" : "closed", "data-has-icons": hasIcons ? "true" : undefined,
173
+ // Collapsed items are only hidden visually: keep them out of the tab order
174
+ inert: open ? undefined : true, className: clsx(s.MenuSub, className), ...cleanProps(props) })));
177
175
  SidebarMenuSub.displayName = "SidebarMenuSub";
178
176
  export const SidebarMenuSubItem = forwardRef(({ className, ...props }, ref) => (_jsx("li", { ref: ref, className: clsx(s.MenuSubItem, className), ...cleanProps(props) })));
179
177
  SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
180
178
  export const SidebarMenuSubButton = forwardRef(({ isActive = false, asChild = false, indent = 0, className, ...props }, ref) => {
181
- const Comp = asChild ? Slot : "button";
179
+ const Comp = asChild ? Slot.Root : "button";
182
180
  return (_jsx(Comp, { ref: ref, "data-active": isActive ? "true" : "false", "aria-current": isActive ? "page" : undefined, className: clsx(s.MenuSubButton, s[`indent${indent}`], className), ...cleanProps(props) }));
183
181
  });
184
182
  SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
@@ -200,7 +198,7 @@ export const SidebarInset = forwardRef(({ className, ...props }, ref) => (_jsx("
200
198
  SidebarInset.displayName = "SidebarInset";
201
199
  export const SidebarLayout = forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: clsx(s.SidebarLayout, className), ...cleanProps(props) })));
202
200
  SidebarLayout.displayName = "SidebarLayout";
203
- export const SidebarTrigger = forwardRef(({ className, children, ...props }, ref) => {
201
+ export const SidebarTrigger = forwardRef(({ className, children, onClick, ...props }, ref) => {
204
202
  const { state, collapsible, isMobile, toggleSidebar } = useSidebar();
205
203
  // Don't render if collapsible="none" (text-only sidebars)
206
204
  if (collapsible === "none") {
@@ -208,12 +206,22 @@ export const SidebarTrigger = forwardRef(({ className, children, ...props }, ref
208
206
  }
209
207
  // Default icon (same for both states, as per reference)
210
208
  const defaultIcon = _jsx(SidebarLeft, {});
211
- return (_jsx("button", { ref: ref, type: "button", className: clsx(s.Trigger, className), onClick: toggleSidebar, "aria-label": isMobile ? "Open menu" : state === "expanded" ? "Collapse sidebar" : "Expand sidebar", ...cleanProps(props), children: _jsx("span", { className: s.TriggerInner, children: _jsx("span", { className: s.TriggerIcon, children: children ?? defaultIcon }) }) }));
209
+ return (_jsx("button", { ref: ref, type: "button", className: clsx(s.Trigger, className), onClick: (event) => {
210
+ // The caller's handler runs first and can cancel the toggle
211
+ onClick?.(event);
212
+ if (!event.defaultPrevented)
213
+ toggleSidebar();
214
+ }, "aria-label": isMobile ? "Open menu" : state === "expanded" ? "Collapse sidebar" : "Expand sidebar", ...cleanProps(props), children: _jsx("span", { className: s.TriggerInner, children: _jsx("span", { className: s.TriggerIcon, children: children ?? defaultIcon }) }) }));
212
215
  });
213
216
  SidebarTrigger.displayName = "SidebarTrigger";
214
- export const SidebarMobileMenuButton = forwardRef(({ className, ...props }, ref) => {
217
+ export const SidebarMobileMenuButton = forwardRef(({ className, onClick, ...props }, ref) => {
215
218
  const { openMobile, setOpenMobile } = useSidebar();
216
- return (_jsx("button", { ref: ref, type: "button", "data-expanded": openMobile ? "" : undefined, className: clsx(s.MobileMenuButton, className), onClick: () => setOpenMobile(!openMobile), "aria-label": openMobile ? "Close menu" : "Open menu", ...cleanProps(props), children: _jsxs("span", { className: s.MobileMenuIcon, children: [_jsx("span", { className: s.MobileMenuLine, "data-top": true }), _jsx("span", { className: s.MobileMenuMiddle, children: _jsx("span", { className: s.MobileMenuLine, "data-bottom": true }) })] }) }));
219
+ return (_jsx("button", { ref: ref, type: "button", "data-expanded": openMobile ? "" : undefined, className: clsx(s.MobileMenuButton, className), onClick: (event) => {
220
+ // The caller's handler runs first and can cancel the toggle
221
+ onClick?.(event);
222
+ if (!event.defaultPrevented)
223
+ setOpenMobile(!openMobile);
224
+ }, "aria-label": openMobile ? "Close menu" : "Open menu", ...cleanProps(props), children: _jsxs("span", { className: s.MobileMenuIcon, children: [_jsx("span", { className: s.MobileMenuLine, "data-top": true }), _jsx("span", { className: s.MobileMenuMiddle, children: _jsx("span", { className: s.MobileMenuLine, "data-bottom": true }) })] }) }));
217
225
  });
218
226
  SidebarMobileMenuButton.displayName = "SidebarMobileMenuButton";
219
227
  export const SidebarMobile = forwardRef(({ className, children, contained, ...props }, ref) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../../src/components/Sidebar/Sidebar.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\n/**\n * Sidebar Component - Composable navigation sidebar\n *\n * API SPECIFICATION:\n *\n * SidebarProvider\n * - defaultOpen?: boolean (default: true)\n * - open?: boolean (controlled)\n * - onOpenChange?: (open: boolean) => void\n * - collapsible?: \"offcanvas\" | \"icon\" | \"none\" (default: \"offcanvas\")\n *\n * Sidebar\n * - side?: \"left\" | \"right\" (default: \"left\")\n * - variant?: \"sidebar\" | \"docs\" (default: \"sidebar\")\n *\n * SidebarHeader / SidebarContent / SidebarFooter\n * - Standard container props\n *\n * SidebarGroup\n * - defaultOpen?: boolean (default: true)\n * - open?: boolean (controlled)\n *\n * SidebarGroupLabel / SidebarGroupAction / SidebarGroupContent\n * - Standard container props\n *\n * SidebarMenu / SidebarMenuItem\n * - Standard container props\n *\n * SidebarMenuButton\n * - isActive?: boolean (default: false)\n * - size?: \"sm\" | \"md\" | \"lg\" (default: \"md\")\n * - tooltip?: string | ReactNode\n * - asChild?: boolean\n *\n * SidebarMenuAction / SidebarMenuBadge\n * - Standard container props\n *\n * SidebarMenuSkeleton\n * - showIcon?: boolean (default: true)\n *\n * SidebarMenuSub / SidebarMenuSubItem / SidebarMenuSubButton\n * - Same as parent menu components\n *\n * SidebarSeparator\n * - Standard separator props\n *\n * SidebarCard / SidebarCardHeader / SidebarCardContent / SidebarCardFooter\n * - variant?: \"default\" | \"elevated\"\n * - dismissible?: boolean\n * - onDismiss?: () => void\n *\n * SidebarInset\n * - Standard container for main content area\n *\n * SidebarTrigger\n * - Uses Button component internally\n * - Returns null when collapsible=\"none\"\n *\n * SidebarMobileMenuButton\n * - Hamburger → X animated icon button for mobile\n *\n * SidebarInput\n * - shortcut?: string (keyboard shortcut display)\n */\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport clsx from \"clsx\"\nimport {\n forwardRef,\n useCallback,\n useLayoutEffect,\n useState,\n type ComponentProps,\n type ReactNode,\n} from \"react\"\n\nimport { Button } from \"../Button\"\nimport { ChevronRightMd, Search as SearchIcon, SidebarLeft, X } from \"../Icon\"\nimport { Input, type InputProps } from \"../Input\"\nimport { Tooltip } from \"../Tooltip\"\nimport s from \"./Sidebar.module.css\"\nimport {\n SidebarProvider,\n useSidebar,\n type SidebarCollapsible,\n type SidebarSide,\n type SidebarVariant,\n} from \"./useSidebarContext\"\n\n// Helper to filter out props that shouldn't be spread to the DOM (e.g. injected by MDX)\nconst cleanProps = (props: any) => {\n const { \"data-toggle\": _, ...rest } = props\n return rest\n}\n\n// Re-export provider and hook\nexport { SidebarProvider, useSidebar }\nexport type { SidebarCollapsible, SidebarSide, SidebarVariant }\n\n// =============================================\n// Sidebar Root\n// =============================================\n\nexport type SidebarProps = ComponentProps<\"aside\"> & {\n /**\n * The side the sidebar is on.\n * @default \"left\"\n */\n side?: SidebarSide\n /**\n * The visual variant of the sidebar.\n * @default \"sidebar\"\n */\n variant?: SidebarVariant\n}\n\nexport const Sidebar = forwardRef<HTMLElement, SidebarProps>(\n ({ side = \"left\", variant = \"sidebar\", className, children, ...props }, ref) => {\n const { collapsible, isMobile } = useSidebar()\n\n // Skip rendering sidebar on mobile for offcanvas mode\n if (isMobile && collapsible === \"offcanvas\") {\n return null\n }\n\n return (\n <aside\n ref={ref}\n data-side={side}\n data-variant={variant}\n className={clsx(s.Sidebar, className)}\n {...cleanProps(props)}\n >\n {children}\n </aside>\n )\n },\n)\nSidebar.displayName = \"Sidebar\"\n\n// =============================================\n// Sidebar Sections\n// =============================================\n\nexport type SidebarHeaderProps = ComponentProps<\"div\">\n\nexport const SidebarHeader = forwardRef<HTMLDivElement, SidebarHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.Header, className)} {...cleanProps(props)} />\n ),\n)\nSidebarHeader.displayName = \"SidebarHeader\"\n\nexport type SidebarContentProps = ComponentProps<\"div\">\n\nexport const SidebarContent = forwardRef<HTMLDivElement, SidebarContentProps>(\n ({ className, ...props }, ref) => {\n const [contentEl, setContentEl] = useState<HTMLDivElement | null>(null)\n const setRef = useCallback(\n (el: HTMLDivElement | null) => {\n setContentEl(el)\n if (typeof ref === \"function\") ref(el)\n else if (ref) (ref as { current: HTMLDivElement | null }).current = el\n },\n [ref],\n )\n\n useLayoutEffect(() => {\n if (!contentEl) return\n const sidebar = contentEl.parentElement\n if (!sidebar) return\n\n const update = () => {\n const hasOverflow = contentEl.scrollHeight > contentEl.clientHeight\n sidebar.setAttribute(\"data-content-scrollable\", hasOverflow ? \"true\" : \"false\")\n }\n update()\n const ro = new ResizeObserver(update)\n ro.observe(contentEl)\n return () => ro.disconnect()\n }, [contentEl])\n\n return <div ref={setRef} className={clsx(s.Content, className)} {...cleanProps(props)} />\n },\n)\nSidebarContent.displayName = \"SidebarContent\"\n\nexport type SidebarFooterProps = ComponentProps<\"div\">\n\nexport const SidebarFooter = forwardRef<HTMLDivElement, SidebarFooterProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={clsx(s.Footer, className)} {...cleanProps(props)}>\n <div className={s.FooterSeparator} />\n {children}\n </div>\n ),\n)\nSidebarFooter.displayName = \"SidebarFooter\"\n\nexport type SidebarRailProps = ComponentProps<\"div\">\n\nexport const SidebarRail = forwardRef<HTMLDivElement, SidebarRailProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.Rail, className)} {...cleanProps(props)} />\n ),\n)\nSidebarRail.displayName = \"SidebarRail\"\n\n// =============================================\n// Groups\n// =============================================\n\nexport type SidebarGroupProps = ComponentProps<\"div\"> & {\n /**\n * Whether the group is open by default.\n * @default true\n */\n defaultOpen?: boolean\n /**\n * Controlled open state.\n */\n open?: boolean\n /**\n * Callback called when the group open state changes.\n */\n onOpenChange?: (open: boolean) => void\n}\n\nexport const SidebarGroup = forwardRef<HTMLDivElement, SidebarGroupProps>(\n ({ defaultOpen = true, open: openProp, onOpenChange, className, ...props }, ref) => {\n const [_open, _setOpen] = useState(defaultOpen)\n const open = openProp ?? _open\n\n const handleToggle = () => {\n const newState = !open\n if (onOpenChange) {\n onOpenChange(newState)\n } else {\n _setOpen(newState)\n }\n }\n\n return (\n <div\n ref={ref}\n data-state={open ? \"open\" : \"closed\"}\n className={clsx(s.Group, className)}\n {...cleanProps(props)}\n />\n )\n },\n)\nSidebarGroup.displayName = \"SidebarGroup\"\n\nexport type SidebarGroupLabelProps = ComponentProps<\"span\"> & {\n asChild?: boolean\n /**\n * Size variant for the label.\n * - \"sm\": Compact style for dashboard/settings sidebars\n * - \"lg\": Documentation style with larger text and more spacing\n * @default \"lg\"\n */\n size?: \"sm\" | \"lg\"\n}\n\nexport const SidebarGroupLabel = forwardRef<HTMLSpanElement, SidebarGroupLabelProps>(\n ({ asChild = false, size = \"lg\", className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"span\"\n return (\n <Comp\n ref={ref}\n data-size={size}\n className={clsx(s.GroupLabel, className)}\n {...cleanProps(props)}\n />\n )\n },\n)\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\nexport type SidebarGroupActionProps = ComponentProps<\"div\">\n\nexport const SidebarGroupAction = forwardRef<HTMLDivElement, SidebarGroupActionProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.GroupAction, className)} {...cleanProps(props)} />\n ),\n)\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\nexport type SidebarGroupContentProps = ComponentProps<\"div\">\n\nexport const SidebarGroupContent = forwardRef<HTMLDivElement, SidebarGroupContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.GroupContent, className)} {...cleanProps(props)} />\n ),\n)\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\n// =============================================\n// Menu\n// =============================================\n\nexport type SidebarMenuProps = ComponentProps<\"ul\">\n\nexport const SidebarMenu = forwardRef<HTMLUListElement, SidebarMenuProps>(\n ({ className, ...props }, ref) => (\n <ul ref={ref} className={clsx(s.Menu, className)} {...cleanProps(props)} />\n ),\n)\nSidebarMenu.displayName = \"SidebarMenu\"\n\nexport type SidebarMenuItemProps = ComponentProps<\"li\"> & {\n expanded?: boolean\n}\n\nexport const SidebarMenuItem = forwardRef<HTMLLIElement, SidebarMenuItemProps>(\n ({ expanded, className, ...props }, ref) => (\n <li\n ref={ref}\n data-expanded={expanded ? \"true\" : undefined}\n className={clsx(s.MenuItem, className)}\n {...cleanProps(props)}\n />\n ),\n)\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\n\n// =============================================\n// Menu Button\n// =============================================\n\nexport type SidebarMenuButtonProps = ComponentProps<\"button\"> & {\n /**\n * Whether the button is in an active/highlighted state.\n * @default false\n */\n isActive?: boolean\n /**\n * Optional tooltip to show when the sidebar is collapsed.\n */\n tooltip?: string | ReactNode\n /**\n * Whether to render the button as a custom element via Slot.\n * @default false\n */\n asChild?: boolean\n}\n\nexport const SidebarMenuButton = forwardRef<HTMLButtonElement, SidebarMenuButtonProps>(\n ({ isActive = false, tooltip, asChild = false, className, children, ...props }, ref) => {\n const { state, isMobile } = useSidebar()\n const Comp = asChild ? Slot : \"button\"\n\n const button = (\n <Comp\n ref={ref}\n data-active={isActive ? \"true\" : \"false\"}\n aria-current={isActive ? \"page\" : undefined}\n className={clsx(s.MenuButton, className)}\n {...cleanProps(props)}\n >\n <span className={s.MenuButtonInner}>{children}</span>\n </Comp>\n )\n\n // Show tooltip when collapsed (icon mode) and not mobile\n if (tooltip && state === \"collapsed\" && !isMobile) {\n return (\n <Tooltip content={tooltip} side=\"right\">\n {button}\n </Tooltip>\n )\n }\n\n return button\n },\n)\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\n// =============================================\n// Menu Button Parts\n// =============================================\n\nexport type SidebarMenuButtonIconProps = ComponentProps<\"span\">\n\nexport const SidebarMenuButtonIcon = forwardRef<HTMLSpanElement, SidebarMenuButtonIconProps>(\n ({ className, ...props }, ref) => (\n <span ref={ref} className={clsx(s.MenuButtonIcon, className)} {...cleanProps(props)} />\n ),\n)\nSidebarMenuButtonIcon.displayName = \"SidebarMenuButtonIcon\"\n\nexport type SidebarMenuButtonLabelProps = ComponentProps<\"span\"> & {\n shortLabel?: string\n}\n\nexport const SidebarMenuButtonLabel = forwardRef<HTMLSpanElement, SidebarMenuButtonLabelProps>(\n ({ shortLabel, className, children, ...props }, ref) => (\n <>\n <span\n ref={ref}\n data-long-label=\"true\"\n className={clsx(s.MenuButtonLabel, className)}\n {...cleanProps(props)}\n >\n {children}\n </span>\n {shortLabel && (\n <span data-short-label=\"true\" className={clsx(s.MenuButtonLabel, className)}>\n {shortLabel}\n </span>\n )}\n </>\n ),\n)\nSidebarMenuButtonLabel.displayName = \"SidebarMenuButtonLabel\"\n\n// =============================================\n// Menu Chevron (Expand/Collapse Toggle)\n// =============================================\n\nexport type SidebarMenuChevronProps = ComponentProps<\"span\">\n\nexport const SidebarMenuChevron = forwardRef<HTMLSpanElement, SidebarMenuChevronProps>(\n ({ className, ...props }, ref) => (\n <span ref={ref} className={clsx(s.MenuChevron, className)} {...cleanProps(props)}>\n <ChevronRightMd />\n </span>\n ),\n)\nSidebarMenuChevron.displayName = \"SidebarMenuChevron\"\n\n// =============================================\n// Menu Badge & Action\n// =============================================\n\nexport type SidebarMenuBadgeProps = ComponentProps<\"span\">\n\nexport const SidebarMenuBadge = forwardRef<HTMLSpanElement, SidebarMenuBadgeProps>(\n ({ className, ...props }, ref) => (\n <span ref={ref} className={clsx(s.MenuBadge, className)} {...cleanProps(props)} />\n ),\n)\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\"\n\nexport type SidebarMenuActionProps = ComponentProps<\"div\">\n\nexport const SidebarMenuAction = forwardRef<HTMLDivElement, SidebarMenuActionProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.MenuAction, className)} {...cleanProps(props)} />\n ),\n)\nSidebarMenuAction.displayName = \"SidebarMenuAction\"\n\n// =============================================\n// Menu Skeleton\n// =============================================\n\nexport type SidebarMenuSkeletonProps = ComponentProps<\"div\"> & {\n showIcon?: boolean\n /** Width of the label skeleton (e.g., \"60%\", \"80%\", \"100px\") */\n labelWidth?: string\n}\n\nexport const SidebarMenuSkeleton = forwardRef<HTMLDivElement, SidebarMenuSkeletonProps>(\n ({ showIcon = true, labelWidth = \"60%\", className, ...props }, ref) => (\n <div\n ref={ref}\n data-skeleton\n className={clsx(s.MenuSkeleton, className)}\n {...cleanProps(props)}\n >\n {showIcon && <div className={s.MenuSkeletonIcon} />}\n <div className={s.MenuSkeletonLabel} style={{ width: labelWidth }} />\n </div>\n ),\n)\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\"\n\n// =============================================\n// Submenu\n// =============================================\n\nexport type SidebarMenuSubProps = ComponentProps<\"ul\"> & {\n open?: boolean\n /**\n * When true, child items align with parent text that has icons.\n * This adjusts the padding so level 2 text aligns with level 1 text.\n */\n hasIcons?: boolean\n}\n\nexport const SidebarMenuSub = forwardRef<HTMLUListElement, SidebarMenuSubProps>(\n ({ open = true, hasIcons = false, className, ...props }, ref) => (\n <ul\n ref={ref}\n data-state={open ? \"open\" : \"closed\"}\n data-has-icons={hasIcons ? \"true\" : undefined}\n className={clsx(s.MenuSub, className)}\n {...cleanProps(props)}\n />\n ),\n)\nSidebarMenuSub.displayName = \"SidebarMenuSub\"\n\nexport type SidebarMenuSubItemProps = ComponentProps<\"li\">\n\nexport const SidebarMenuSubItem = forwardRef<HTMLLIElement, SidebarMenuSubItemProps>(\n ({ className, ...props }, ref) => (\n <li ref={ref} className={clsx(s.MenuSubItem, className)} {...cleanProps(props)} />\n ),\n)\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\"\n\nexport type SidebarMenuSubButtonProps = ComponentProps<\"button\"> & {\n isActive?: boolean\n asChild?: boolean\n /**\n * Indent level for nested items (0-3).\n * Each level adds 12px of left margin.\n * @default 0\n */\n indent?: 0 | 1 | 2 | 3\n}\n\nexport const SidebarMenuSubButton = forwardRef<HTMLButtonElement, SidebarMenuSubButtonProps>(\n ({ isActive = false, asChild = false, indent = 0, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n ref={ref}\n data-active={isActive ? \"true\" : \"false\"}\n aria-current={isActive ? \"page\" : undefined}\n className={clsx(s.MenuSubButton, s[`indent${indent}`], className)}\n {...cleanProps(props)}\n />\n )\n },\n)\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\"\n\n// =============================================\n// Separator\n// =============================================\n\nexport type SidebarSeparatorProps = ComponentProps<\"hr\">\n\nexport const SidebarSeparator = forwardRef<HTMLHRElement, SidebarSeparatorProps>(\n ({ className, ...props }, ref) => (\n <hr ref={ref} className={clsx(s.Separator, className)} {...cleanProps(props)} />\n ),\n)\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\n// =============================================\n// Card\n// =============================================\n\nexport type SidebarCardProps = ComponentProps<\"div\"> & {\n variant?: \"default\" | \"elevated\"\n dismissible?: boolean\n onDismiss?: () => void\n}\n\nexport const SidebarCard = forwardRef<HTMLDivElement, SidebarCardProps>(\n ({ variant = \"default\", dismissible = false, onDismiss, className, children, ...props }, ref) => (\n <div\n ref={ref}\n data-variant={variant}\n className={clsx(s.Card, className)}\n {...cleanProps(props)}\n >\n {dismissible && (\n <Button\n uniform\n size=\"3xs\"\n variant=\"ghost\"\n color=\"secondary\"\n className={s.CardDismiss}\n onClick={onDismiss}\n aria-label=\"Dismiss\"\n >\n <X />\n </Button>\n )}\n {children}\n </div>\n ),\n)\nSidebarCard.displayName = \"SidebarCard\"\n\nexport type SidebarCardHeaderProps = ComponentProps<\"div\">\n\nexport const SidebarCardHeader = forwardRef<HTMLDivElement, SidebarCardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.CardHeader, className)} {...cleanProps(props)} />\n ),\n)\nSidebarCardHeader.displayName = \"SidebarCardHeader\"\n\nexport type SidebarCardTitleProps = ComponentProps<\"div\">\n\nexport const SidebarCardTitle = forwardRef<HTMLDivElement, SidebarCardTitleProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.CardTitle, className)} {...cleanProps(props)} />\n ),\n)\nSidebarCardTitle.displayName = \"SidebarCardTitle\"\n\nexport type SidebarCardTitleLinkProps = ComponentProps<\"a\">\n\nexport const SidebarCardTitleLink = forwardRef<HTMLAnchorElement, SidebarCardTitleLinkProps>(\n ({ className, children, ...props }, ref) => (\n <a ref={ref} className={clsx(s.CardTitleLink, className)} {...cleanProps(props)}>\n {children}\n <ChevronRightMd className={s.CardTitleChevron} />\n </a>\n ),\n)\nSidebarCardTitleLink.displayName = \"SidebarCardTitleLink\"\n\nexport type SidebarCardContentProps = ComponentProps<\"div\">\n\nexport const SidebarCardContent = forwardRef<HTMLDivElement, SidebarCardContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.CardContent, className)} {...cleanProps(props)} />\n ),\n)\nSidebarCardContent.displayName = \"SidebarCardContent\"\n\nexport type SidebarCardFooterProps = ComponentProps<\"div\">\n\nexport const SidebarCardFooter = forwardRef<HTMLDivElement, SidebarCardFooterProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.CardFooter, className)} {...cleanProps(props)} />\n ),\n)\nSidebarCardFooter.displayName = \"SidebarCardFooter\"\n\n// =============================================\n// Inset (Main Content Area)\n// =============================================\n\nexport type SidebarInsetProps = ComponentProps<\"main\">\n\nexport const SidebarInset = forwardRef<HTMLElement, SidebarInsetProps>(\n ({ className, ...props }, ref) => (\n <main ref={ref} className={clsx(s.Inset, className)} {...cleanProps(props)} />\n ),\n)\nSidebarInset.displayName = \"SidebarInset\"\n\n// =============================================\n// Layout Container\n// =============================================\n\nexport type SidebarLayoutProps = ComponentProps<\"div\">\n\nexport const SidebarLayout = forwardRef<HTMLDivElement, SidebarLayoutProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.SidebarLayout, className)} {...cleanProps(props)} />\n ),\n)\nSidebarLayout.displayName = \"SidebarLayout\"\n\n// =============================================\n// Trigger (Collapse Button)\n// =============================================\n\nexport type SidebarTriggerProps = ComponentProps<\"button\"> & {\n children?: ReactNode\n}\n\nexport const SidebarTrigger = forwardRef<HTMLButtonElement, SidebarTriggerProps>(\n ({ className, children, ...props }, ref) => {\n const { state, collapsible, isMobile, toggleSidebar } = useSidebar()\n\n // Don't render if collapsible=\"none\" (text-only sidebars)\n if (collapsible === \"none\") {\n return null\n }\n\n // Default icon (same for both states, as per reference)\n const defaultIcon = <SidebarLeft />\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={clsx(s.Trigger, className)}\n onClick={toggleSidebar}\n aria-label={\n isMobile ? \"Open menu\" : state === \"expanded\" ? \"Collapse sidebar\" : \"Expand sidebar\"\n }\n {...cleanProps(props)}\n >\n <span className={s.TriggerInner}>\n <span className={s.TriggerIcon}>{children ?? defaultIcon}</span>\n </span>\n </button>\n )\n },\n)\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\n// =============================================\n// Mobile Menu Button (Hamburger → X)\n// =============================================\n\nexport type SidebarMobileMenuButtonProps = ComponentProps<\"button\">\n\nexport const SidebarMobileMenuButton = forwardRef<HTMLButtonElement, SidebarMobileMenuButtonProps>(\n ({ className, ...props }, ref) => {\n const { openMobile, setOpenMobile } = useSidebar()\n\n return (\n <button\n ref={ref}\n type=\"button\"\n data-expanded={openMobile ? \"\" : undefined}\n className={clsx(s.MobileMenuButton, className)}\n onClick={() => setOpenMobile(!openMobile)}\n aria-label={openMobile ? \"Close menu\" : \"Open menu\"}\n {...cleanProps(props)}\n >\n <span className={s.MobileMenuIcon}>\n <span className={s.MobileMenuLine} data-top />\n <span className={s.MobileMenuMiddle}>\n <span className={s.MobileMenuLine} data-bottom />\n </span>\n </span>\n </button>\n )\n },\n)\nSidebarMobileMenuButton.displayName = \"SidebarMobileMenuButton\"\n\n// =============================================\n// Mobile Sidebar\n// =============================================\n\nexport type SidebarMobileProps = ComponentProps<\"div\"> & {\n /** When true, drawer is positioned absolute instead of fixed (for contained demos) */\n contained?: boolean\n}\n\nexport const SidebarMobile = forwardRef<HTMLDivElement, SidebarMobileProps>(\n ({ className, children, contained, ...props }, ref) => {\n const { setOpenMobile } = useSidebar()\n\n return (\n <>\n {/* Backdrop */}\n <div\n className={clsx(s.MobileBackdrop, contained && s.contained)}\n onClick={() => setOpenMobile(false)}\n aria-hidden=\"true\"\n />\n\n {/* Drawer */}\n <div\n ref={ref}\n className={clsx(s.MobileSidebar, contained && s.contained, className)}\n {...cleanProps(props)}\n >\n {children}\n </div>\n </>\n )\n },\n)\nSidebarMobile.displayName = \"SidebarMobile\"\n\nexport type SidebarMobileHeaderProps = ComponentProps<\"div\">\n\nexport const SidebarMobileHeader = forwardRef<HTMLDivElement, SidebarMobileHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.MobileHeader, className)} {...cleanProps(props)} />\n ),\n)\nSidebarMobileHeader.displayName = \"SidebarMobileHeader\"\n\nexport type SidebarMobileFooterProps = ComponentProps<\"div\">\n\nexport const SidebarMobileFooter = forwardRef<HTMLDivElement, SidebarMobileFooterProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.MobileFooter, className)} {...cleanProps(props)} />\n ),\n)\nSidebarMobileFooter.displayName = \"SidebarMobileFooter\"\n\n// =============================================\n// Input (Search)\n// =============================================\n\nexport type SidebarInputProps = InputProps\n\nexport const SidebarInput = forwardRef<HTMLInputElement, SidebarInputProps>(\n ({ className, ...props }, ref) => (\n <div className={s.Input}>\n <Input\n ref={ref}\n className={className}\n startAdornment={<SearchIcon />}\n {...cleanProps(props)}\n />\n </div>\n ),\n)\nSidebarInput.displayName = \"SidebarInput\"\n\n// =============================================\n// Footer Links\n// =============================================\n\nexport type SidebarFooterLinksProps = ComponentProps<\"div\">\n\nexport const SidebarFooterLinks = forwardRef<HTMLDivElement, SidebarFooterLinksProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.FooterLinks, className)} {...cleanProps(props)} />\n ),\n)\nSidebarFooterLinks.displayName = \"SidebarFooterLinks\"\n"]}
1
+ {"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../../src/components/Sidebar/Sidebar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC/B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,cAAc,EACd,WAAW,EACX,eAAe,EACf,QAAQ,GAGT,MAAM,OAAO,CAAA;AAEd,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,IAAI,UAAU,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,KAAK,EAAmB,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,CAAC,MAAM,sDAAsD,CAAA;AACpE,OAAO,EACL,eAAe,EACf,UAAU,GAIX,MAAM,qBAAqB,CAAA;AAE5B,wFAAwF;AACxF,MAAM,UAAU,GAAG,CAAmB,KAAQ,EAA0B,EAAE;IACxE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAwC,CAAA;IAC9E,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,8BAA8B;AAC9B,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,CAAA;AAoBtC,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAC/B,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC7E,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAA;IAE9C,sDAAsD;IACtD,IAAI,QAAQ,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,gBACE,GAAG,EAAE,GAAG,eACG,IAAI,kBACD,OAAO,EACrB,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,KACjC,UAAU,CAAC,KAAK,CAAC,YAEpB,QAAQ,GACH,CACT,CAAA;AACH,CAAC,CACF,CAAA;AACD,OAAO,CAAC,WAAW,GAAG,SAAS,CAAA;AAQ/B,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CACrC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CAC/E,CACF,CAAA;AACD,aAAa,CAAC,WAAW,GAAG,eAAe,CAAA;AAI3C,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CACtC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC/B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAA;IACvE,MAAM,MAAM,GAAG,WAAW,CACxB,CAAC,EAAyB,EAAE,EAAE;QAC5B,YAAY,CAAC,EAAE,CAAC,CAAA;QAChB,IAAI,OAAO,GAAG,KAAK,UAAU;YAAE,GAAG,CAAC,EAAE,CAAC,CAAA;aACjC,IAAI,GAAG;YAAG,GAA0C,CAAC,OAAO,GAAG,EAAE,CAAA;IACxE,CAAC,EACD,CAAC,GAAG,CAAC,CACN,CAAA;IAED,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,SAAS;YAAE,OAAM;QACtB,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAA;QACvC,IAAI,CAAC,OAAO;YAAE,OAAM;QAEpB,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,MAAM,WAAW,GAAG,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAA;YACnE,OAAO,CAAC,YAAY,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QACjF,CAAC,CAAA;QACD,MAAM,EAAE,CAAA;QACR,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAA;QACrC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACrB,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAA;IAC9B,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,OAAO,cAAK,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CAAA;AAC3F,CAAC,CACF,CAAA;AACD,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAA;AAI7C,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CACrC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC1C,eAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,aACxE,cAAK,SAAS,EAAE,CAAC,CAAC,eAAe,GAAI,EACpC,QAAQ,IACL,CACP,CACF,CAAA;AACD,aAAa,CAAC,WAAW,GAAG,eAAe,CAAA;AAI3C,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CACnC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CAC7E,CACF,CAAA;AACD,WAAW,CAAC,WAAW,GAAG,aAAa,CAAA;AAkBvC,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CACpC,CAAC,EAAE,WAAW,GAAG,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACnE,oEAAoE;IACpE,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC3C,MAAM,IAAI,GAAG,QAAQ,IAAI,WAAW,CAAA;IAEpC,OAAO,CACL,cACE,GAAG,EAAE,GAAG,gBACI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EACpC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,KAC/B,UAAU,CAAC,KAAK,CAAC,GACrB,CACH,CAAA;AACH,CAAC,CACF,CAAA;AACD,YAAY,CAAC,WAAW,GAAG,cAAc,CAAA;AAazC,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CACzC,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAA;IACzC,OAAO,CACL,KAAC,IAAI,IACH,GAAG,EAAE,GAAG,eACG,IAAI,EACf,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,KACpC,UAAU,CAAC,KAAK,CAAC,GACrB,CACH,CAAA;AACH,CAAC,CACF,CAAA;AACD,iBAAiB,CAAC,WAAW,GAAG,mBAAmB,CAAA;AAInD,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAC1C,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CACpF,CACF,CAAA;AACD,kBAAkB,CAAC,WAAW,GAAG,oBAAoB,CAAA;AAIrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAC3C,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CACrF,CACF,CAAA;AACD,mBAAmB,CAAC,WAAW,GAAG,qBAAqB,CAAA;AAQvD,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CACnC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,aAAI,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CAC5E,CACF,CAAA;AACD,WAAW,CAAC,WAAW,GAAG,aAAa,CAAA;AAMvC,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CACvC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC1C,aACE,GAAG,EAAE,GAAG,mBACO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC5C,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,KAClC,UAAU,CAAC,KAAK,CAAC,GACrB,CACH,CACF,CAAA;AACD,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAA;AAuB/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CACzC,CAAC,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACrF,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAA;IACxC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC3C,qEAAqE;IACrE,uEAAuE;IACvE,sCAAsC;IACtC,MAAM,OAAO,GACX,OAAO,IAAI,cAAc,CAA2B,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC9D,YAAY,CACV,QAAQ,EACR,SAAS,EACT,eAAM,SAAS,EAAE,CAAC,CAAC,eAAe,YAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAQ,CACrE,CACF,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAE,CAAC,CAAC,eAAe,YAAG,QAAQ,GAAQ,CACtD,CAAA;IAEH,MAAM,MAAM,GAAG,CACb,KAAC,IAAI,IACH,GAAG,EAAE,GAAG,iBACK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,kBAC1B,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC3C,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,KACpC,UAAU,CAAC,KAAK,CAAC,YAEpB,OAAO,GACH,CACR,CAAA;IAED,yDAAyD;IACzD,IAAI,OAAO,IAAI,KAAK,KAAK,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClD,OAAO,CACL,KAAC,OAAO,IAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,OAAO,YACpC,MAAM,GACC,CACX,CAAA;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CACF,CAAA;AACD,iBAAiB,CAAC,WAAW,GAAG,mBAAmB,CAAA;AAQnD,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAC7C,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,eAAM,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CACxF,CACF,CAAA;AACD,qBAAqB,CAAC,WAAW,GAAG,uBAAuB,CAAA;AAM3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAC9C,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACtD,8BACE,eACE,GAAG,EAAE,GAAG,qBACQ,MAAM,EACtB,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,KACzC,UAAU,CAAC,KAAK,CAAC,YAEpB,QAAQ,GACJ,EACN,UAAU,IAAI,CACb,mCAAuB,MAAM,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,YACxE,UAAU,GACN,CACR,IACA,CACJ,CACF,CAAA;AACD,sBAAsB,CAAC,WAAW,GAAG,wBAAwB,CAAA;AAQ7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAC1C,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,eAAM,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,YAC9E,KAAC,cAAc,KAAG,GACb,CACR,CACF,CAAA;AACD,kBAAkB,CAAC,WAAW,GAAG,oBAAoB,CAAA;AAQrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CACxC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,eAAM,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CACnF,CACF,CAAA;AACD,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,CAAA;AAIjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CACzC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CACnF,CACF,CAAA;AACD,iBAAiB,CAAC,WAAW,GAAG,mBAAmB,CAAA;AAYnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAC3C,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,UAAU,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACrE,eACE,GAAG,EAAE,GAAG,yBAER,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC,KACtC,UAAU,CAAC,KAAK,CAAC,aAEpB,QAAQ,IAAI,cAAK,SAAS,EAAE,CAAC,CAAC,gBAAgB,GAAI,EACnD,cAAK,SAAS,EAAE,CAAC,CAAC,iBAAiB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAI,IACjE,CACP,CACF,CAAA;AACD,mBAAmB,CAAC,WAAW,GAAG,qBAAqB,CAAA;AAevD,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CACtC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC/D,aACE,GAAG,EAAE,GAAG,gBACI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,oBACpB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;IAC7C,2EAA2E;IAC3E,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAC9B,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,KACjC,UAAU,CAAC,KAAK,CAAC,GACrB,CACH,CACF,CAAA;AACD,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAA;AAI7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAC1C,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,aAAI,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CACnF,CACF,CAAA;AACD,kBAAkB,CAAC,WAAW,GAAG,oBAAoB,CAAA;AAarD,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAC5C,CAAC,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC3C,OAAO,CACL,KAAC,IAAI,IACH,GAAG,EAAE,GAAG,iBACK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,kBAC1B,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC3C,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,KAC7D,UAAU,CAAC,KAAK,CAAC,GACrB,CACH,CAAA;AACH,CAAC,CACF,CAAA;AACD,oBAAoB,CAAC,WAAW,GAAG,sBAAsB,CAAA;AAQzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CACxC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,aAAI,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CACjF,CACF,CAAA;AACD,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,CAAA;AAYjD,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CACnC,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,WAAW,GAAG,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC/F,eACE,GAAG,EAAE,GAAG,kBACM,OAAO,EACrB,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,KAC9B,UAAU,CAAC,KAAK,CAAC,aAEpB,WAAW,IAAI,CACd,KAAC,MAAM,IACL,OAAO,QACP,IAAI,EAAC,KAAK,EACV,OAAO,EAAC,OAAO,EACf,KAAK,EAAC,WAAW,EACjB,SAAS,EAAE,CAAC,CAAC,WAAW,EACxB,OAAO,EAAE,SAAS,gBACP,SAAS,YAEpB,KAAC,CAAC,KAAG,GACE,CACV,EACA,QAAQ,IACL,CACP,CACF,CAAA;AACD,WAAW,CAAC,WAAW,GAAG,aAAa,CAAA;AAIvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CACzC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CACnF,CACF,CAAA;AACD,iBAAiB,CAAC,WAAW,GAAG,mBAAmB,CAAA;AAInD,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CACxC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CAClF,CACF,CAAA;AACD,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,CAAA;AAIjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAC5C,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC1C,aAAG,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,aAC5E,QAAQ,EACT,KAAC,cAAc,IAAC,SAAS,EAAE,CAAC,CAAC,gBAAgB,GAAI,IAC/C,CACL,CACF,CAAA;AACD,oBAAoB,CAAC,WAAW,GAAG,sBAAsB,CAAA;AAIzD,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAC1C,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CACpF,CACF,CAAA;AACD,kBAAkB,CAAC,WAAW,GAAG,oBAAoB,CAAA;AAIrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CACzC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CACnF,CACF,CAAA;AACD,iBAAiB,CAAC,WAAW,GAAG,mBAAmB,CAAA;AAQnD,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CACpC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,eAAM,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CAC/E,CACF,CAAA;AACD,YAAY,CAAC,WAAW,GAAG,cAAc,CAAA;AAQzC,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CACrC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CACtF,CACF,CAAA;AACD,aAAa,CAAC,WAAW,GAAG,eAAe,CAAA;AAU3C,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CACtC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAClD,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,UAAU,EAAE,CAAA;IAEpE,0DAA0D;IAC1D,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,wDAAwD;IACxD,MAAM,WAAW,GAAG,KAAC,WAAW,KAAG,CAAA;IAEnC,OAAO,CACL,iBACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EACrC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,4DAA4D;YAC5D,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;YAChB,IAAI,CAAC,KAAK,CAAC,gBAAgB;gBAAE,aAAa,EAAE,CAAA;QAC9C,CAAC,gBAEC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,KAEnF,UAAU,CAAC,KAAK,CAAC,YAErB,eAAM,SAAS,EAAE,CAAC,CAAC,YAAY,YAC7B,eAAM,SAAS,EAAE,CAAC,CAAC,WAAW,YAAG,QAAQ,IAAI,WAAW,GAAQ,GAC3D,GACA,CACV,CAAA;AACH,CAAC,CACF,CAAA;AACD,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAA;AAQ7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAC/C,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACxC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,UAAU,EAAE,CAAA;IAElD,OAAO,CACL,iBACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,mBACE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAC1C,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAC9C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,4DAA4D;YAC5D,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;YAChB,IAAI,CAAC,KAAK,CAAC,gBAAgB;gBAAE,aAAa,CAAC,CAAC,UAAU,CAAC,CAAA;QACzD,CAAC,gBACW,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,KAC/C,UAAU,CAAC,KAAK,CAAC,YAErB,gBAAM,SAAS,EAAE,CAAC,CAAC,cAAc,aAC/B,eAAM,SAAS,EAAE,CAAC,CAAC,cAAc,qBAAa,EAC9C,eAAM,SAAS,EAAE,CAAC,CAAC,gBAAgB,YACjC,eAAM,SAAS,EAAE,CAAC,CAAC,cAAc,wBAAgB,GAC5C,IACF,GACA,CACV,CAAA;AACH,CAAC,CACF,CAAA;AACD,uBAAuB,CAAC,WAAW,GAAG,yBAAyB,CAAA;AAW/D,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CACrC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACpD,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,EAAE,CAAA;IAEtC,OAAO,CACL,8BAEE,cACE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,EAC3D,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,iBACvB,MAAM,GAClB,EAGF,cACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,KACjE,UAAU,CAAC,KAAK,CAAC,YAEpB,QAAQ,GACL,IACL,CACJ,CAAA;AACH,CAAC,CACF,CAAA;AACD,aAAa,CAAC,WAAW,GAAG,eAAe,CAAA;AAI3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAC3C,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CACrF,CACF,CAAA;AACD,mBAAmB,CAAC,WAAW,GAAG,qBAAqB,CAAA;AAIvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAC3C,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CACrF,CACF,CAAA;AACD,mBAAmB,CAAC,WAAW,GAAG,qBAAqB,CAAA;AAQvD,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CACpC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,SAAS,EAAE,CAAC,CAAC,KAAK,YACrB,KAAC,KAAK,IACJ,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,KAAC,UAAU,KAAG,KAC1B,UAAU,CAAC,KAAK,CAAC,GACrB,GACE,CACP,CACF,CAAA;AACD,YAAY,CAAC,WAAW,GAAG,cAAc,CAAA;AAQzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAC1C,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,KAAM,UAAU,CAAC,KAAK,CAAC,GAAI,CACpF,CACF,CAAA;AACD,kBAAkB,CAAC,WAAW,GAAG,oBAAoB,CAAA","sourcesContent":["\"use client\"\n\n/**\n * Sidebar Component - Composable navigation sidebar\n *\n * API SPECIFICATION:\n *\n * SidebarProvider\n * - defaultOpen?: boolean (default: true)\n * - open?: boolean (controlled)\n * - onOpenChange?: (open: boolean) => void\n * - collapsible?: \"offcanvas\" | \"icon\" | \"none\" (default: \"offcanvas\")\n *\n * Sidebar\n * - side?: \"left\" | \"right\" (default: \"left\")\n * - variant?: \"sidebar\" | \"docs\" (default: \"sidebar\")\n *\n * SidebarHeader / SidebarContent / SidebarFooter\n * - Standard container props\n *\n * SidebarGroup\n * - defaultOpen?: boolean (default: true)\n * - open?: boolean (controlled)\n *\n * SidebarGroupLabel / SidebarGroupAction / SidebarGroupContent\n * - Standard container props\n *\n * SidebarMenu / SidebarMenuItem\n * - Standard container props\n *\n * SidebarMenuButton\n * - isActive?: boolean (default: false)\n * - size?: \"sm\" | \"md\" | \"lg\" (default: \"md\")\n * - tooltip?: string | ReactNode\n * - asChild?: boolean\n *\n * SidebarMenuAction / SidebarMenuBadge\n * - Standard container props\n *\n * SidebarMenuSkeleton\n * - showIcon?: boolean (default: true)\n *\n * SidebarMenuSub / SidebarMenuSubItem / SidebarMenuSubButton\n * - Same as parent menu components\n *\n * SidebarSeparator\n * - Standard separator props\n *\n * SidebarCard / SidebarCardHeader / SidebarCardContent / SidebarCardFooter\n * - variant?: \"default\" | \"elevated\"\n * - dismissible?: boolean\n * - onDismiss?: () => void\n *\n * SidebarInset\n * - Standard container for main content area\n *\n * SidebarTrigger\n * - Uses Button component internally\n * - Returns null when collapsible=\"none\"\n *\n * SidebarMobileMenuButton\n * - Hamburger → X animated icon button for mobile\n *\n * SidebarInput\n * - shortcut?: string (keyboard shortcut display)\n */\n\nimport clsx from \"clsx\"\nimport { Slot } from \"radix-ui\"\nimport {\n cloneElement,\n forwardRef,\n isValidElement,\n useCallback,\n useLayoutEffect,\n useState,\n type ComponentProps,\n type ReactNode,\n} from \"react\"\n\nimport { Button } from \"../Button\"\nimport { ChevronRightMd, Search as SearchIcon, SidebarLeft, X } from \"../Icon\"\nimport { Input, type InputProps } from \"../Input\"\nimport { Tooltip } from \"../Tooltip\"\nimport s from \"@plexui/styles/components/Sidebar/Sidebar.module.css\"\nimport {\n SidebarProvider,\n useSidebar,\n type SidebarCollapsible,\n type SidebarSide,\n type SidebarVariant,\n} from \"./useSidebarContext\"\n\n// Helper to filter out props that shouldn't be spread to the DOM (e.g. injected by MDX)\nconst cleanProps = <P extends object>(props: P): Omit<P, \"data-toggle\"> => {\n const { \"data-toggle\": _, ...rest } = props as P & { \"data-toggle\"?: unknown }\n return rest\n}\n\n// Re-export provider and hook\nexport { SidebarProvider, useSidebar }\nexport type { SidebarCollapsible, SidebarSide, SidebarVariant }\n\n// =============================================\n// Sidebar Root\n// =============================================\n\nexport type SidebarProps = ComponentProps<\"aside\"> & {\n /**\n * The side the sidebar is on.\n * @default \"left\"\n */\n side?: SidebarSide\n /**\n * The visual variant of the sidebar.\n * @default \"sidebar\"\n */\n variant?: SidebarVariant\n}\n\nexport const Sidebar = forwardRef<HTMLElement, SidebarProps>(\n ({ side = \"left\", variant = \"sidebar\", className, children, ...props }, ref) => {\n const { collapsible, isMobile } = useSidebar()\n\n // Skip rendering sidebar on mobile for offcanvas mode\n if (isMobile && collapsible === \"offcanvas\") {\n return null\n }\n\n return (\n <aside\n ref={ref}\n data-side={side}\n data-variant={variant}\n className={clsx(s.Sidebar, className)}\n {...cleanProps(props)}\n >\n {children}\n </aside>\n )\n },\n)\nSidebar.displayName = \"Sidebar\"\n\n// =============================================\n// Sidebar Sections\n// =============================================\n\nexport type SidebarHeaderProps = ComponentProps<\"div\">\n\nexport const SidebarHeader = forwardRef<HTMLDivElement, SidebarHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.Header, className)} {...cleanProps(props)} />\n ),\n)\nSidebarHeader.displayName = \"SidebarHeader\"\n\nexport type SidebarContentProps = ComponentProps<\"div\">\n\nexport const SidebarContent = forwardRef<HTMLDivElement, SidebarContentProps>(\n ({ className, ...props }, ref) => {\n const [contentEl, setContentEl] = useState<HTMLDivElement | null>(null)\n const setRef = useCallback(\n (el: HTMLDivElement | null) => {\n setContentEl(el)\n if (typeof ref === \"function\") ref(el)\n else if (ref) (ref as { current: HTMLDivElement | null }).current = el\n },\n [ref],\n )\n\n useLayoutEffect(() => {\n if (!contentEl) return\n const sidebar = contentEl.parentElement\n if (!sidebar) return\n\n const update = () => {\n const hasOverflow = contentEl.scrollHeight > contentEl.clientHeight\n sidebar.setAttribute(\"data-content-scrollable\", hasOverflow ? \"true\" : \"false\")\n }\n update()\n const ro = new ResizeObserver(update)\n ro.observe(contentEl)\n return () => ro.disconnect()\n }, [contentEl])\n\n return <div ref={setRef} className={clsx(s.Content, className)} {...cleanProps(props)} />\n },\n)\nSidebarContent.displayName = \"SidebarContent\"\n\nexport type SidebarFooterProps = ComponentProps<\"div\">\n\nexport const SidebarFooter = forwardRef<HTMLDivElement, SidebarFooterProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={clsx(s.Footer, className)} {...cleanProps(props)}>\n <div className={s.FooterSeparator} />\n {children}\n </div>\n ),\n)\nSidebarFooter.displayName = \"SidebarFooter\"\n\nexport type SidebarRailProps = ComponentProps<\"div\">\n\nexport const SidebarRail = forwardRef<HTMLDivElement, SidebarRailProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.Rail, className)} {...cleanProps(props)} />\n ),\n)\nSidebarRail.displayName = \"SidebarRail\"\n\n// =============================================\n// Groups\n// =============================================\n\nexport type SidebarGroupProps = ComponentProps<\"div\"> & {\n /**\n * Whether the group is open initially. A closed group hides its `SidebarGroupContent`.\n * @default true\n */\n defaultOpen?: boolean\n /**\n * Controlled open state. The group has no toggle of its own: change `open` from your own control.\n */\n open?: boolean\n}\n\nexport const SidebarGroup = forwardRef<HTMLDivElement, SidebarGroupProps>(\n ({ defaultOpen = true, open: openProp, className, ...props }, ref) => {\n // The initial value only, like an uncontrolled input's defaultValue\n const [initialOpen] = useState(defaultOpen)\n const open = openProp ?? initialOpen\n\n return (\n <div\n ref={ref}\n data-state={open ? \"open\" : \"closed\"}\n className={clsx(s.Group, className)}\n {...cleanProps(props)}\n />\n )\n },\n)\nSidebarGroup.displayName = \"SidebarGroup\"\n\nexport type SidebarGroupLabelProps = ComponentProps<\"span\"> & {\n asChild?: boolean\n /**\n * Size variant for the label.\n * - \"sm\": Compact style for dashboard/settings sidebars\n * - \"lg\": Documentation style with larger text and more spacing\n * @default \"lg\"\n */\n size?: \"sm\" | \"lg\"\n}\n\nexport const SidebarGroupLabel = forwardRef<HTMLSpanElement, SidebarGroupLabelProps>(\n ({ asChild = false, size = \"lg\", className, ...props }, ref) => {\n const Comp = asChild ? Slot.Root : \"span\"\n return (\n <Comp\n ref={ref}\n data-size={size}\n className={clsx(s.GroupLabel, className)}\n {...cleanProps(props)}\n />\n )\n },\n)\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\nexport type SidebarGroupActionProps = ComponentProps<\"div\">\n\nexport const SidebarGroupAction = forwardRef<HTMLDivElement, SidebarGroupActionProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.GroupAction, className)} {...cleanProps(props)} />\n ),\n)\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\nexport type SidebarGroupContentProps = ComponentProps<\"div\">\n\nexport const SidebarGroupContent = forwardRef<HTMLDivElement, SidebarGroupContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.GroupContent, className)} {...cleanProps(props)} />\n ),\n)\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\n// =============================================\n// Menu\n// =============================================\n\nexport type SidebarMenuProps = ComponentProps<\"ul\">\n\nexport const SidebarMenu = forwardRef<HTMLUListElement, SidebarMenuProps>(\n ({ className, ...props }, ref) => (\n <ul ref={ref} className={clsx(s.Menu, className)} {...cleanProps(props)} />\n ),\n)\nSidebarMenu.displayName = \"SidebarMenu\"\n\nexport type SidebarMenuItemProps = ComponentProps<\"li\"> & {\n expanded?: boolean\n}\n\nexport const SidebarMenuItem = forwardRef<HTMLLIElement, SidebarMenuItemProps>(\n ({ expanded, className, ...props }, ref) => (\n <li\n ref={ref}\n data-expanded={expanded ? \"true\" : undefined}\n className={clsx(s.MenuItem, className)}\n {...cleanProps(props)}\n />\n ),\n)\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\n\n// =============================================\n// Menu Button\n// =============================================\n\nexport type SidebarMenuButtonProps = ComponentProps<\"button\"> & {\n /**\n * Whether the button is in an active/highlighted state.\n * @default false\n */\n isActive?: boolean\n /**\n * Optional tooltip to show when the sidebar is collapsed.\n */\n tooltip?: string | ReactNode\n /**\n * Whether to render the button as a custom element via Slot.\n * @default false\n */\n asChild?: boolean\n}\n\nexport const SidebarMenuButton = forwardRef<HTMLButtonElement, SidebarMenuButtonProps>(\n ({ isActive = false, tooltip, asChild = false, className, children, ...props }, ref) => {\n const { state, isMobile } = useSidebar()\n const Comp = asChild ? Slot.Root : \"button\"\n // With asChild the child element is the button, so the inner wrapper\n // goes inside it. Wrapping the child instead would make Slot merge the\n // button props onto the wrapper span.\n const content =\n asChild && isValidElement<{ children?: ReactNode }>(children) ? (\n cloneElement(\n children,\n undefined,\n <span className={s.MenuButtonInner}>{children.props.children}</span>,\n )\n ) : (\n <span className={s.MenuButtonInner}>{children}</span>\n )\n\n const button = (\n <Comp\n ref={ref}\n data-active={isActive ? \"true\" : \"false\"}\n aria-current={isActive ? \"page\" : undefined}\n className={clsx(s.MenuButton, className)}\n {...cleanProps(props)}\n >\n {content}\n </Comp>\n )\n\n // Show tooltip when collapsed (icon mode) and not mobile\n if (tooltip && state === \"collapsed\" && !isMobile) {\n return (\n <Tooltip content={tooltip} side=\"right\">\n {button}\n </Tooltip>\n )\n }\n\n return button\n },\n)\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\n// =============================================\n// Menu Button Parts\n// =============================================\n\nexport type SidebarMenuButtonIconProps = ComponentProps<\"span\">\n\nexport const SidebarMenuButtonIcon = forwardRef<HTMLSpanElement, SidebarMenuButtonIconProps>(\n ({ className, ...props }, ref) => (\n <span ref={ref} className={clsx(s.MenuButtonIcon, className)} {...cleanProps(props)} />\n ),\n)\nSidebarMenuButtonIcon.displayName = \"SidebarMenuButtonIcon\"\n\nexport type SidebarMenuButtonLabelProps = ComponentProps<\"span\"> & {\n shortLabel?: string\n}\n\nexport const SidebarMenuButtonLabel = forwardRef<HTMLSpanElement, SidebarMenuButtonLabelProps>(\n ({ shortLabel, className, children, ...props }, ref) => (\n <>\n <span\n ref={ref}\n data-long-label=\"true\"\n className={clsx(s.MenuButtonLabel, className)}\n {...cleanProps(props)}\n >\n {children}\n </span>\n {shortLabel && (\n <span data-short-label=\"true\" className={clsx(s.MenuButtonLabel, className)}>\n {shortLabel}\n </span>\n )}\n </>\n ),\n)\nSidebarMenuButtonLabel.displayName = \"SidebarMenuButtonLabel\"\n\n// =============================================\n// Menu Chevron (Expand/Collapse Toggle)\n// =============================================\n\nexport type SidebarMenuChevronProps = ComponentProps<\"span\">\n\nexport const SidebarMenuChevron = forwardRef<HTMLSpanElement, SidebarMenuChevronProps>(\n ({ className, ...props }, ref) => (\n <span ref={ref} className={clsx(s.MenuChevron, className)} {...cleanProps(props)}>\n <ChevronRightMd />\n </span>\n ),\n)\nSidebarMenuChevron.displayName = \"SidebarMenuChevron\"\n\n// =============================================\n// Menu Badge & Action\n// =============================================\n\nexport type SidebarMenuBadgeProps = ComponentProps<\"span\">\n\nexport const SidebarMenuBadge = forwardRef<HTMLSpanElement, SidebarMenuBadgeProps>(\n ({ className, ...props }, ref) => (\n <span ref={ref} className={clsx(s.MenuBadge, className)} {...cleanProps(props)} />\n ),\n)\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\"\n\nexport type SidebarMenuActionProps = ComponentProps<\"div\">\n\nexport const SidebarMenuAction = forwardRef<HTMLDivElement, SidebarMenuActionProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.MenuAction, className)} {...cleanProps(props)} />\n ),\n)\nSidebarMenuAction.displayName = \"SidebarMenuAction\"\n\n// =============================================\n// Menu Skeleton\n// =============================================\n\nexport type SidebarMenuSkeletonProps = ComponentProps<\"div\"> & {\n showIcon?: boolean\n /** Width of the label skeleton (e.g., \"60%\", \"80%\", \"100px\") */\n labelWidth?: string\n}\n\nexport const SidebarMenuSkeleton = forwardRef<HTMLDivElement, SidebarMenuSkeletonProps>(\n ({ showIcon = true, labelWidth = \"60%\", className, ...props }, ref) => (\n <div\n ref={ref}\n data-skeleton\n className={clsx(s.MenuSkeleton, className)}\n {...cleanProps(props)}\n >\n {showIcon && <div className={s.MenuSkeletonIcon} />}\n <div className={s.MenuSkeletonLabel} style={{ width: labelWidth }} />\n </div>\n ),\n)\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\"\n\n// =============================================\n// Submenu\n// =============================================\n\nexport type SidebarMenuSubProps = ComponentProps<\"ul\"> & {\n open?: boolean\n /**\n * When true, child items align with parent text that has icons.\n * This adjusts the padding so level 2 text aligns with level 1 text.\n */\n hasIcons?: boolean\n}\n\nexport const SidebarMenuSub = forwardRef<HTMLUListElement, SidebarMenuSubProps>(\n ({ open = true, hasIcons = false, className, ...props }, ref) => (\n <ul\n ref={ref}\n data-state={open ? \"open\" : \"closed\"}\n data-has-icons={hasIcons ? \"true\" : undefined}\n // Collapsed items are only hidden visually: keep them out of the tab order\n inert={open ? undefined : true}\n className={clsx(s.MenuSub, className)}\n {...cleanProps(props)}\n />\n ),\n)\nSidebarMenuSub.displayName = \"SidebarMenuSub\"\n\nexport type SidebarMenuSubItemProps = ComponentProps<\"li\">\n\nexport const SidebarMenuSubItem = forwardRef<HTMLLIElement, SidebarMenuSubItemProps>(\n ({ className, ...props }, ref) => (\n <li ref={ref} className={clsx(s.MenuSubItem, className)} {...cleanProps(props)} />\n ),\n)\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\"\n\nexport type SidebarMenuSubButtonProps = ComponentProps<\"button\"> & {\n isActive?: boolean\n asChild?: boolean\n /**\n * Indent level for nested items (0-3).\n * Each level adds 12px of left margin.\n * @default 0\n */\n indent?: 0 | 1 | 2 | 3\n}\n\nexport const SidebarMenuSubButton = forwardRef<HTMLButtonElement, SidebarMenuSubButtonProps>(\n ({ isActive = false, asChild = false, indent = 0, className, ...props }, ref) => {\n const Comp = asChild ? Slot.Root : \"button\"\n return (\n <Comp\n ref={ref}\n data-active={isActive ? \"true\" : \"false\"}\n aria-current={isActive ? \"page\" : undefined}\n className={clsx(s.MenuSubButton, s[`indent${indent}`], className)}\n {...cleanProps(props)}\n />\n )\n },\n)\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\"\n\n// =============================================\n// Separator\n// =============================================\n\nexport type SidebarSeparatorProps = ComponentProps<\"hr\">\n\nexport const SidebarSeparator = forwardRef<HTMLHRElement, SidebarSeparatorProps>(\n ({ className, ...props }, ref) => (\n <hr ref={ref} className={clsx(s.Separator, className)} {...cleanProps(props)} />\n ),\n)\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\n// =============================================\n// Card\n// =============================================\n\nexport type SidebarCardProps = ComponentProps<\"div\"> & {\n variant?: \"default\" | \"elevated\"\n dismissible?: boolean\n onDismiss?: () => void\n}\n\nexport const SidebarCard = forwardRef<HTMLDivElement, SidebarCardProps>(\n ({ variant = \"default\", dismissible = false, onDismiss, className, children, ...props }, ref) => (\n <div\n ref={ref}\n data-variant={variant}\n className={clsx(s.Card, className)}\n {...cleanProps(props)}\n >\n {dismissible && (\n <Button\n uniform\n size=\"3xs\"\n variant=\"ghost\"\n color=\"secondary\"\n className={s.CardDismiss}\n onClick={onDismiss}\n aria-label=\"Dismiss\"\n >\n <X />\n </Button>\n )}\n {children}\n </div>\n ),\n)\nSidebarCard.displayName = \"SidebarCard\"\n\nexport type SidebarCardHeaderProps = ComponentProps<\"div\">\n\nexport const SidebarCardHeader = forwardRef<HTMLDivElement, SidebarCardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.CardHeader, className)} {...cleanProps(props)} />\n ),\n)\nSidebarCardHeader.displayName = \"SidebarCardHeader\"\n\nexport type SidebarCardTitleProps = ComponentProps<\"div\">\n\nexport const SidebarCardTitle = forwardRef<HTMLDivElement, SidebarCardTitleProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.CardTitle, className)} {...cleanProps(props)} />\n ),\n)\nSidebarCardTitle.displayName = \"SidebarCardTitle\"\n\nexport type SidebarCardTitleLinkProps = ComponentProps<\"a\">\n\nexport const SidebarCardTitleLink = forwardRef<HTMLAnchorElement, SidebarCardTitleLinkProps>(\n ({ className, children, ...props }, ref) => (\n <a ref={ref} className={clsx(s.CardTitleLink, className)} {...cleanProps(props)}>\n {children}\n <ChevronRightMd className={s.CardTitleChevron} />\n </a>\n ),\n)\nSidebarCardTitleLink.displayName = \"SidebarCardTitleLink\"\n\nexport type SidebarCardContentProps = ComponentProps<\"div\">\n\nexport const SidebarCardContent = forwardRef<HTMLDivElement, SidebarCardContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.CardContent, className)} {...cleanProps(props)} />\n ),\n)\nSidebarCardContent.displayName = \"SidebarCardContent\"\n\nexport type SidebarCardFooterProps = ComponentProps<\"div\">\n\nexport const SidebarCardFooter = forwardRef<HTMLDivElement, SidebarCardFooterProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.CardFooter, className)} {...cleanProps(props)} />\n ),\n)\nSidebarCardFooter.displayName = \"SidebarCardFooter\"\n\n// =============================================\n// Inset (Main Content Area)\n// =============================================\n\nexport type SidebarInsetProps = ComponentProps<\"main\">\n\nexport const SidebarInset = forwardRef<HTMLElement, SidebarInsetProps>(\n ({ className, ...props }, ref) => (\n <main ref={ref} className={clsx(s.Inset, className)} {...cleanProps(props)} />\n ),\n)\nSidebarInset.displayName = \"SidebarInset\"\n\n// =============================================\n// Layout Container\n// =============================================\n\nexport type SidebarLayoutProps = ComponentProps<\"div\">\n\nexport const SidebarLayout = forwardRef<HTMLDivElement, SidebarLayoutProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.SidebarLayout, className)} {...cleanProps(props)} />\n ),\n)\nSidebarLayout.displayName = \"SidebarLayout\"\n\n// =============================================\n// Trigger (Collapse Button)\n// =============================================\n\nexport type SidebarTriggerProps = ComponentProps<\"button\"> & {\n children?: ReactNode\n}\n\nexport const SidebarTrigger = forwardRef<HTMLButtonElement, SidebarTriggerProps>(\n ({ className, children, onClick, ...props }, ref) => {\n const { state, collapsible, isMobile, toggleSidebar } = useSidebar()\n\n // Don't render if collapsible=\"none\" (text-only sidebars)\n if (collapsible === \"none\") {\n return null\n }\n\n // Default icon (same for both states, as per reference)\n const defaultIcon = <SidebarLeft />\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={clsx(s.Trigger, className)}\n onClick={(event) => {\n // The caller's handler runs first and can cancel the toggle\n onClick?.(event)\n if (!event.defaultPrevented) toggleSidebar()\n }}\n aria-label={\n isMobile ? \"Open menu\" : state === \"expanded\" ? \"Collapse sidebar\" : \"Expand sidebar\"\n }\n {...cleanProps(props)}\n >\n <span className={s.TriggerInner}>\n <span className={s.TriggerIcon}>{children ?? defaultIcon}</span>\n </span>\n </button>\n )\n },\n)\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\n// =============================================\n// Mobile Menu Button (Hamburger → X)\n// =============================================\n\nexport type SidebarMobileMenuButtonProps = ComponentProps<\"button\">\n\nexport const SidebarMobileMenuButton = forwardRef<HTMLButtonElement, SidebarMobileMenuButtonProps>(\n ({ className, onClick, ...props }, ref) => {\n const { openMobile, setOpenMobile } = useSidebar()\n\n return (\n <button\n ref={ref}\n type=\"button\"\n data-expanded={openMobile ? \"\" : undefined}\n className={clsx(s.MobileMenuButton, className)}\n onClick={(event) => {\n // The caller's handler runs first and can cancel the toggle\n onClick?.(event)\n if (!event.defaultPrevented) setOpenMobile(!openMobile)\n }}\n aria-label={openMobile ? \"Close menu\" : \"Open menu\"}\n {...cleanProps(props)}\n >\n <span className={s.MobileMenuIcon}>\n <span className={s.MobileMenuLine} data-top />\n <span className={s.MobileMenuMiddle}>\n <span className={s.MobileMenuLine} data-bottom />\n </span>\n </span>\n </button>\n )\n },\n)\nSidebarMobileMenuButton.displayName = \"SidebarMobileMenuButton\"\n\n// =============================================\n// Mobile Sidebar\n// =============================================\n\nexport type SidebarMobileProps = ComponentProps<\"div\"> & {\n /** When true, drawer is positioned absolute instead of fixed (for contained demos) */\n contained?: boolean\n}\n\nexport const SidebarMobile = forwardRef<HTMLDivElement, SidebarMobileProps>(\n ({ className, children, contained, ...props }, ref) => {\n const { setOpenMobile } = useSidebar()\n\n return (\n <>\n {/* Backdrop */}\n <div\n className={clsx(s.MobileBackdrop, contained && s.contained)}\n onClick={() => setOpenMobile(false)}\n aria-hidden=\"true\"\n />\n\n {/* Drawer */}\n <div\n ref={ref}\n className={clsx(s.MobileSidebar, contained && s.contained, className)}\n {...cleanProps(props)}\n >\n {children}\n </div>\n </>\n )\n },\n)\nSidebarMobile.displayName = \"SidebarMobile\"\n\nexport type SidebarMobileHeaderProps = ComponentProps<\"div\">\n\nexport const SidebarMobileHeader = forwardRef<HTMLDivElement, SidebarMobileHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.MobileHeader, className)} {...cleanProps(props)} />\n ),\n)\nSidebarMobileHeader.displayName = \"SidebarMobileHeader\"\n\nexport type SidebarMobileFooterProps = ComponentProps<\"div\">\n\nexport const SidebarMobileFooter = forwardRef<HTMLDivElement, SidebarMobileFooterProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.MobileFooter, className)} {...cleanProps(props)} />\n ),\n)\nSidebarMobileFooter.displayName = \"SidebarMobileFooter\"\n\n// =============================================\n// Input (Search)\n// =============================================\n\nexport type SidebarInputProps = InputProps\n\nexport const SidebarInput = forwardRef<HTMLInputElement, SidebarInputProps>(\n ({ className, ...props }, ref) => (\n <div className={s.Input}>\n <Input\n ref={ref}\n className={className}\n startAdornment={<SearchIcon />}\n {...cleanProps(props)}\n />\n </div>\n ),\n)\nSidebarInput.displayName = \"SidebarInput\"\n\n// =============================================\n// Footer Links\n// =============================================\n\nexport type SidebarFooterLinksProps = ComponentProps<\"div\">\n\nexport const SidebarFooterLinks = forwardRef<HTMLDivElement, SidebarFooterLinksProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx(s.FooterLinks, className)} {...cleanProps(props)} />\n ),\n)\nSidebarFooterLinks.displayName = \"SidebarFooterLinks\"\n"]}
@@ -24,7 +24,7 @@ SidebarProvider, SidebarRail,
24
24
  // Separator
25
25
  SidebarSeparator,
26
26
  // Trigger
27
- SidebarTrigger, useSidebar, } from "./Sidebar";
27
+ SidebarTrigger, useSidebar, } from "./Sidebar.js";
28
28
  // Export constants
29
- export { SIDEBAR_CONSTANTS } from "./useSidebarContext";
29
+ export { SIDEBAR_CONSTANTS } from "./useSidebarContext.js";
30
30
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { createContext, useCallback, useContext, useEffect, useMemo, useState, } from "react";
3
+ import { createContext, useCallback, useContext, useEffect, useMemo, useState, useSyncExternalStore, } from "react";
4
4
  // Constants
5
5
  const SIDEBAR_COOKIE_NAME = "sidebar:state";
6
6
  const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7; // 7 days
@@ -19,20 +19,19 @@ export const useSidebar = () => {
19
19
  }
20
20
  return context;
21
21
  };
22
- // Hook for mobile detection via matchMedia
22
+ // Hook for mobile detection via matchMedia. Read during render, so a phone
23
+ // gets the mobile layout on its first paint instead of one frame of the
24
+ // desktop sidebar; the server (and hydration) renders the desktop layout.
25
+ const MOBILE_QUERY = `(max-width: ${MOBILE_BREAKPOINT - 1}px)`;
26
+ const subscribeToMobile = (onChange) => {
27
+ const mql = window.matchMedia(MOBILE_QUERY);
28
+ mql.addEventListener("change", onChange);
29
+ return () => mql.removeEventListener("change", onChange);
30
+ };
31
+ const getMobileSnapshot = () => window.matchMedia(MOBILE_QUERY).matches;
32
+ const getServerMobileSnapshot = () => false;
23
33
  function useIsMobile() {
24
- const [isMobile, setIsMobile] = useState(false);
25
- useEffect(() => {
26
- // Check if we're in browser environment
27
- if (typeof window === "undefined")
28
- return;
29
- const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
30
- const handleChange = () => setIsMobile(mql.matches);
31
- handleChange(); // Initial check
32
- mql.addEventListener("change", handleChange);
33
- return () => mql.removeEventListener("change", handleChange);
34
- }, []);
35
- return isMobile;
34
+ return useSyncExternalStore(subscribeToMobile, getMobileSnapshot, getServerMobileSnapshot);
36
35
  }
37
36
  // Provider component
38
37
  export const SidebarProvider = ({ children, defaultOpen = true, open: openProp, onOpenChange: setOpenProp, collapsible = "offcanvas", style, className, }) => {
@@ -43,17 +42,16 @@ export const SidebarProvider = ({ children, defaultOpen = true, open: openProp,
43
42
  const open = openProp ?? _open;
44
43
  const setOpen = useCallback((value) => {
45
44
  const openState = typeof value === "function" ? value(open) : value;
46
- if (setOpenProp) {
47
- setOpenProp(openState);
48
- }
49
- else {
45
+ // Controlled only when `open` is passed; onOpenChange alone is a notification
46
+ if (openProp === undefined) {
50
47
  _setOpen(openState);
51
48
  }
49
+ setOpenProp?.(openState);
52
50
  // Persist state in cookie for SSR
53
51
  if (typeof document !== "undefined") {
54
52
  document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
55
53
  }
56
- }, [setOpenProp, open]);
54
+ }, [setOpenProp, openProp, open]);
57
55
  // Toggle function that handles both mobile and desktop
58
56
  const toggleSidebar = useCallback(() => {
59
57
  if (isMobile) {
@@ -1 +1 @@
1
- {"version":3,"file":"useSidebarContext.js","sourceRoot":"","sources":["../../../../src/components/Sidebar/useSidebarContext.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\"\n\n// Constants\nconst SIDEBAR_COOKIE_NAME = \"sidebar:state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7 // 7 days\nconst SIDEBAR_WIDTH = \"240px\"\nconst SIDEBAR_WIDTH_MOBILE = \"288px\"\nconst SIDEBAR_WIDTH_ICON = \"64px\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\nconst MOBILE_BREAKPOINT = 768\n\n// Types\nexport type SidebarState = \"expanded\" | \"collapsed\"\nexport type SidebarCollapsible = \"offcanvas\" | \"icon\" | \"none\"\nexport type SidebarSide = \"left\" | \"right\"\nexport type SidebarVariant = \"sidebar\" | \"docs\"\n\nexport type SidebarContextValue = {\n state: SidebarState\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n collapsible: SidebarCollapsible\n toggleSidebar: () => void\n}\n\n// Context\nconst SidebarContext = createContext<SidebarContextValue | null>(null)\n\n// Hook to access sidebar context\nexport const useSidebar = (): SidebarContextValue => {\n const context = useContext(SidebarContext)\n\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider\")\n }\n\n return context\n}\n\n// Hook for mobile detection via matchMedia\nfunction useIsMobile(): boolean {\n const [isMobile, setIsMobile] = useState(false)\n\n useEffect(() => {\n // Check if we're in browser environment\n if (typeof window === \"undefined\") return\n\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n\n const handleChange = () => setIsMobile(mql.matches)\n handleChange() // Initial check\n\n mql.addEventListener(\"change\", handleChange)\n return () => mql.removeEventListener(\"change\", handleChange)\n }, [])\n\n return isMobile\n}\n\n// Provider props\nexport type SidebarProviderProps = {\n children: ReactNode\n /**\n * Default open state (uncontrolled)\n * @default true\n */\n defaultOpen?: boolean\n /**\n * Controlled open state\n */\n open?: boolean\n /**\n * Callback when open state changes\n */\n onOpenChange?: (open: boolean) => void\n /**\n * Collapsible mode\n * @default \"offcanvas\"\n */\n collapsible?: SidebarCollapsible\n /**\n * Custom CSS properties for the sidebar\n */\n style?: React.CSSProperties\n /**\n * Additional class name\n */\n className?: string\n}\n\n// Provider component\nexport const SidebarProvider = ({\n children,\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n collapsible = \"offcanvas\",\n style,\n className,\n}: SidebarProviderProps) => {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = useState(false)\n\n // Controlled vs uncontrolled state for desktop\n const [_open, _setOpen] = useState(defaultOpen)\n const open = openProp ?? _open\n\n const setOpen = useCallback(\n (value: boolean | ((prev: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // Persist state in cookie for SSR\n if (typeof document !== \"undefined\") {\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n }\n },\n [setOpenProp, open],\n )\n\n // Toggle function that handles both mobile and desktop\n const toggleSidebar = useCallback(() => {\n if (isMobile) {\n setOpenMobile((prev) => !prev)\n } else {\n setOpen((prev) => !prev)\n }\n }, [isMobile, setOpen])\n\n // Keyboard shortcut: Cmd/Ctrl + B\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n // Skip if collapsible is \"none\"\n if (collapsible === \"none\") return\n\n // Don't trigger when focus is in an editable element (input, textarea, contenteditable)\n const target = event.target as HTMLElement | null\n if (target?.closest?.(\"input, textarea\") || target?.isContentEditable) return\n\n // Check for Cmd (Mac) or Ctrl (Windows/Linux) + B\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey) &&\n !event.altKey &&\n !event.shiftKey\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar, collapsible])\n\n // Close mobile menu on escape key\n useEffect(() => {\n if (!openMobile) return\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpenMobile(false)\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [openMobile])\n\n // Derive state from open boolean\n const state: SidebarState = open ? \"expanded\" : \"collapsed\"\n\n // Context value\n const contextValue = useMemo<SidebarContextValue>(\n () => ({\n state,\n open,\n setOpen,\n openMobile,\n setOpenMobile,\n isMobile,\n collapsible,\n toggleSidebar,\n }),\n [state, open, setOpen, openMobile, isMobile, collapsible, toggleSidebar],\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <div\n className={className}\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-mobile\": SIDEBAR_WIDTH_MOBILE,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n data-sidebar={state}\n data-mobile-menu={openMobile ? \"visible\" : \"hidden\"}\n data-collapsible={collapsible}\n >\n {children}\n </div>\n </SidebarContext.Provider>\n )\n}\n\n// Re-export constants for external use\nexport const SIDEBAR_CONSTANTS = {\n WIDTH: SIDEBAR_WIDTH,\n WIDTH_MOBILE: SIDEBAR_WIDTH_MOBILE,\n WIDTH_ICON: SIDEBAR_WIDTH_ICON,\n KEYBOARD_SHORTCUT: SIDEBAR_KEYBOARD_SHORTCUT,\n MOBILE_BREAKPOINT,\n COOKIE_NAME: SIDEBAR_COOKIE_NAME,\n COOKIE_MAX_AGE: SIDEBAR_COOKIE_MAX_AGE,\n} as const\n"]}
1
+ {"version":3,"file":"useSidebarContext.js","sourceRoot":"","sources":["../../../../src/components/Sidebar/useSidebarContext.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n useSyncExternalStore,\n type ReactNode,\n} from \"react\"\n\n// Constants\nconst SIDEBAR_COOKIE_NAME = \"sidebar:state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7 // 7 days\nconst SIDEBAR_WIDTH = \"240px\"\nconst SIDEBAR_WIDTH_MOBILE = \"288px\"\nconst SIDEBAR_WIDTH_ICON = \"64px\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\nconst MOBILE_BREAKPOINT = 768\n\n// Types\nexport type SidebarState = \"expanded\" | \"collapsed\"\nexport type SidebarCollapsible = \"offcanvas\" | \"icon\" | \"none\"\nexport type SidebarSide = \"left\" | \"right\"\nexport type SidebarVariant = \"sidebar\" | \"docs\"\n\nexport type SidebarContextValue = {\n state: SidebarState\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n collapsible: SidebarCollapsible\n toggleSidebar: () => void\n}\n\n// Context\nconst SidebarContext = createContext<SidebarContextValue | null>(null)\n\n// Hook to access sidebar context\nexport const useSidebar = (): SidebarContextValue => {\n const context = useContext(SidebarContext)\n\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider\")\n }\n\n return context\n}\n\n// Hook for mobile detection via matchMedia. Read during render, so a phone\n// gets the mobile layout on its first paint instead of one frame of the\n// desktop sidebar; the server (and hydration) renders the desktop layout.\nconst MOBILE_QUERY = `(max-width: ${MOBILE_BREAKPOINT - 1}px)`\n\nconst subscribeToMobile = (onChange: () => void) => {\n const mql = window.matchMedia(MOBILE_QUERY)\n mql.addEventListener(\"change\", onChange)\n return () => mql.removeEventListener(\"change\", onChange)\n}\n\nconst getMobileSnapshot = () => window.matchMedia(MOBILE_QUERY).matches\nconst getServerMobileSnapshot = () => false\n\nfunction useIsMobile(): boolean {\n return useSyncExternalStore(subscribeToMobile, getMobileSnapshot, getServerMobileSnapshot)\n}\n\n// Provider props\nexport type SidebarProviderProps = {\n children: ReactNode\n /**\n * Default open state (uncontrolled)\n * @default true\n */\n defaultOpen?: boolean\n /**\n * Controlled open state\n */\n open?: boolean\n /**\n * Callback when open state changes\n */\n onOpenChange?: (open: boolean) => void\n /**\n * Collapsible mode\n * @default \"offcanvas\"\n */\n collapsible?: SidebarCollapsible\n /**\n * Custom CSS properties for the sidebar\n */\n style?: React.CSSProperties\n /**\n * Additional class name\n */\n className?: string\n}\n\n// Provider component\nexport const SidebarProvider = ({\n children,\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n collapsible = \"offcanvas\",\n style,\n className,\n}: SidebarProviderProps) => {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = useState(false)\n\n // Controlled vs uncontrolled state for desktop\n const [_open, _setOpen] = useState(defaultOpen)\n const open = openProp ?? _open\n\n const setOpen = useCallback(\n (value: boolean | ((prev: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n\n // Controlled only when `open` is passed; onOpenChange alone is a notification\n if (openProp === undefined) {\n _setOpen(openState)\n }\n setOpenProp?.(openState)\n\n // Persist state in cookie for SSR\n if (typeof document !== \"undefined\") {\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n }\n },\n [setOpenProp, openProp, open],\n )\n\n // Toggle function that handles both mobile and desktop\n const toggleSidebar = useCallback(() => {\n if (isMobile) {\n setOpenMobile((prev) => !prev)\n } else {\n setOpen((prev) => !prev)\n }\n }, [isMobile, setOpen])\n\n // Keyboard shortcut: Cmd/Ctrl + B\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n // Skip if collapsible is \"none\"\n if (collapsible === \"none\") return\n\n // Don't trigger when focus is in an editable element (input, textarea, contenteditable)\n const target = event.target as HTMLElement | null\n if (target?.closest?.(\"input, textarea\") || target?.isContentEditable) return\n\n // Check for Cmd (Mac) or Ctrl (Windows/Linux) + B\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey) &&\n !event.altKey &&\n !event.shiftKey\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar, collapsible])\n\n // Close mobile menu on escape key\n useEffect(() => {\n if (!openMobile) return\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpenMobile(false)\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [openMobile])\n\n // Derive state from open boolean\n const state: SidebarState = open ? \"expanded\" : \"collapsed\"\n\n // Context value\n const contextValue = useMemo<SidebarContextValue>(\n () => ({\n state,\n open,\n setOpen,\n openMobile,\n setOpenMobile,\n isMobile,\n collapsible,\n toggleSidebar,\n }),\n [state, open, setOpen, openMobile, isMobile, collapsible, toggleSidebar],\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <div\n className={className}\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-mobile\": SIDEBAR_WIDTH_MOBILE,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n data-sidebar={state}\n data-mobile-menu={openMobile ? \"visible\" : \"hidden\"}\n data-collapsible={collapsible}\n >\n {children}\n </div>\n </SidebarContext.Provider>\n )\n}\n\n// Re-export constants for external use\nexport const SIDEBAR_CONSTANTS = {\n WIDTH: SIDEBAR_WIDTH,\n WIDTH_MOBILE: SIDEBAR_WIDTH_MOBILE,\n WIDTH_ICON: SIDEBAR_WIDTH_ICON,\n KEYBOARD_SHORTCUT: SIDEBAR_KEYBOARD_SHORTCUT,\n MOBILE_BREAKPOINT,\n COOKIE_NAME: SIDEBAR_COOKIE_NAME,\n COOKIE_MAX_AGE: SIDEBAR_COOKIE_MAX_AGE,\n} as const\n"]}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import clsx from "clsx";
3
3
  import {} from "react";
4
- import s from "./Skeleton.module.css";
4
+ import s from "@plexui/styles/components/Skeleton/Skeleton.module.css";
5
5
  /**
6
6
  * Skeleton component for displaying loading placeholders.
7
7
  * Use to show a placeholder while content is loading.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Skeleton/index.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAuB,MAAM,OAAO,CAAA;AAC3C,OAAO,CAAC,MAAM,uBAAuB,CAAA;AAUrC;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAiB,EAAE,EAAE,CAAC,CACjF,cACE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,iBACzB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EACpC,KAAK,EAAE,KAAK,KACR,KAAK,GACT,CACH,CAAA","sourcesContent":["import clsx from \"clsx\"\nimport { type ComponentProps } from \"react\"\nimport s from \"./Skeleton.module.css\"\n\nexport type SkeletonProps = ComponentProps<\"div\"> & {\n /**\n * Makes the skeleton circular (border-radius: 50%)\n * @default false\n */\n circle?: boolean\n}\n\n/**\n * Skeleton component for displaying loading placeholders.\n * Use to show a placeholder while content is loading.\n */\nexport const Skeleton = ({ className, circle, style, ...props }: SkeletonProps) => (\n <div\n className={clsx(s.Skeleton, className)}\n data-circle={circle ? \"\" : undefined}\n style={style}\n {...props}\n />\n)\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Skeleton/index.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAuB,MAAM,OAAO,CAAA;AAC3C,OAAO,CAAC,MAAM,wDAAwD,CAAA;AAUtE;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAiB,EAAE,EAAE,CAAC,CACjF,cACE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,iBACzB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EACpC,KAAK,EAAE,KAAK,KACR,KAAK,GACT,CACH,CAAA","sourcesContent":["import clsx from \"clsx\"\nimport { type ComponentProps } from \"react\"\nimport s from \"@plexui/styles/components/Skeleton/Skeleton.module.css\"\n\nexport type SkeletonProps = ComponentProps<\"div\"> & {\n /**\n * Makes the skeleton circular (border-radius: 50%)\n * @default false\n */\n circle?: boolean\n}\n\n/**\n * Skeleton component for displaying loading placeholders.\n * Use to show a placeholder while content is loading.\n */\nexport const Skeleton = ({ className, circle, style, ...props }: SkeletonProps) => (\n <div\n className={clsx(s.Skeleton, className)}\n data-circle={circle ? \"\" : undefined}\n style={style}\n {...props}\n />\n)\n"]}