@giddaa-housing/ui 1.0.0 → 1.2.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 (331) hide show
  1. package/css/generated/shared.css +1 -1
  2. package/css/giddaa.css +12 -2
  3. package/dist/accordion.d.ts +9 -10
  4. package/dist/accordion.js +41 -87
  5. package/dist/activity-timeline.d.ts +12 -16
  6. package/dist/activity-timeline.js +83 -198
  7. package/dist/alert.d.ts +8 -9
  8. package/dist/alert.js +53 -111
  9. package/dist/auth-layout.d.ts +4 -4
  10. package/dist/auth-layout.js +143 -294
  11. package/dist/avatar.d.ts +6 -6
  12. package/dist/avatar.js +49 -19
  13. package/dist/badge.d.ts +12 -14
  14. package/dist/badge.js +71 -11
  15. package/dist/bar-chart.d.ts +65 -67
  16. package/dist/bar-chart.js +232 -207
  17. package/dist/breadcrumb.d.ts +5 -5
  18. package/dist/breadcrumb.js +56 -118
  19. package/dist/bullet-chart.d.ts +41 -37
  20. package/dist/bullet-chart.js +125 -148
  21. package/dist/button-BZIeyUw6.d.ts +17 -0
  22. package/dist/button-group.d.ts +13 -16
  23. package/dist/button-group.js +39 -88
  24. package/dist/button.d.ts +2 -19
  25. package/dist/button.js +94 -13
  26. package/dist/calendar.d.ts +6 -6
  27. package/dist/calendar.js +138 -17
  28. package/dist/card.d.ts +14 -16
  29. package/dist/card.js +59 -145
  30. package/dist/carousel.d.ts +34 -35
  31. package/dist/carousel.js +335 -20
  32. package/dist/chart.d.ts +90 -63
  33. package/dist/chart.js +573 -28
  34. package/dist/checkbox.d.ts +10 -12
  35. package/dist/checkbox.js +82 -47
  36. package/dist/cn-BI_4DMBf.js +23 -0
  37. package/dist/collapsible.d.ts +7 -8
  38. package/dist/collapsible.js +22 -47
  39. package/dist/combobox.d.ts +10 -10
  40. package/dist/combobox.js +236 -44
  41. package/dist/cta.d.ts +12 -14
  42. package/dist/cta.js +175 -341
  43. package/dist/currency-selector.d.ts +31 -32
  44. package/dist/currency-selector.js +106 -184
  45. package/dist/data-table.d.ts +168 -0
  46. package/dist/data-table.js +676 -0
  47. package/dist/date-picker.d.ts +22 -23
  48. package/dist/date-picker.js +119 -192
  49. package/dist/details-card.d.ts +7 -7
  50. package/dist/details-card.js +104 -253
  51. package/dist/dialog.d.ts +13 -14
  52. package/dist/dialog.js +116 -209
  53. package/dist/dropdown-menu.d.ts +13 -13
  54. package/dist/dropdown-menu.js +180 -37
  55. package/dist/dropzone.d.ts +55 -55
  56. package/dist/dropzone.js +327 -439
  57. package/dist/editorial-card.d.ts +23 -25
  58. package/dist/editorial-card.js +129 -296
  59. package/dist/empty-state.d.ts +8 -9
  60. package/dist/empty-state.js +48 -105
  61. package/dist/field.d.ts +23 -25
  62. package/dist/field.js +110 -221
  63. package/dist/filter.d.ts +118 -0
  64. package/dist/filter.js +775 -0
  65. package/dist/footer.d.ts +8 -15
  66. package/dist/footer.js +197 -400
  67. package/dist/funnel-chart.d.ts +49 -48
  68. package/dist/funnel-chart.js +170 -189
  69. package/dist/gallery-indicator.d.ts +11 -12
  70. package/dist/gallery-indicator.js +75 -12
  71. package/dist/heatmap-chart.d.ts +47 -50
  72. package/dist/heatmap-chart.js +186 -237
  73. package/dist/infotip.d.ts +8 -9
  74. package/dist/infotip.js +33 -59
  75. package/dist/input-CfoEJ8A6.d.ts +12 -0
  76. package/dist/input-group.d.ts +16 -20
  77. package/dist/input-group.js +99 -23
  78. package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
  79. package/dist/input-size-context.d.ts +2 -11
  80. package/dist/input-size-context.js +17 -9
  81. package/dist/input.d.ts +2 -13
  82. package/dist/input.js +27 -11
  83. package/dist/item.d.ts +7 -8
  84. package/dist/item.js +22 -59
  85. package/dist/kpi-card.d.ts +18 -20
  86. package/dist/kpi-card.js +84 -192
  87. package/dist/label.d.ts +6 -6
  88. package/dist/label.js +40 -8
  89. package/dist/line-chart.d.ts +200 -129
  90. package/dist/line-chart.js +330 -105
  91. package/dist/list-item.d.ts +22 -0
  92. package/dist/list-item.js +84 -0
  93. package/dist/logo.d.ts +4 -4
  94. package/dist/logo.js +92 -9
  95. package/dist/map-indicator.d.ts +7 -7
  96. package/dist/map-indicator.js +80 -106
  97. package/dist/match.d.ts +10 -11
  98. package/dist/match.js +62 -107
  99. package/dist/media-gallery-hero.d.ts +40 -42
  100. package/dist/media-gallery-hero.js +182 -343
  101. package/dist/media-player.d.ts +17 -17
  102. package/dist/media-player.js +873 -1348
  103. package/dist/multi-step-form.d.ts +56 -0
  104. package/dist/multi-step-form.js +342 -0
  105. package/dist/number-input.d.ts +34 -34
  106. package/dist/number-input.js +64 -117
  107. package/dist/page-header.d.ts +10 -11
  108. package/dist/page-header.js +34 -79
  109. package/dist/pagination.d.ts +17 -21
  110. package/dist/pagination.js +132 -207
  111. package/dist/password-input.d.ts +5 -13
  112. package/dist/password-input.js +31 -55
  113. package/dist/phone-input.d.ts +19 -20
  114. package/dist/phone-input.js +226 -344
  115. package/dist/photo-gallery.d.ts +19 -19
  116. package/dist/photo-gallery.js +313 -449
  117. package/dist/picker-lzgmsNfG.js +32 -0
  118. package/dist/pie-chart.d.ts +121 -90
  119. package/dist/pie-chart.js +183 -149
  120. package/dist/popover.d.ts +9 -9
  121. package/dist/popover.js +72 -23
  122. package/dist/price-tag.d.ts +26 -27
  123. package/dist/price-tag.js +113 -173
  124. package/dist/progress.d.ts +16 -17
  125. package/dist/progress.js +169 -24
  126. package/dist/property-listing-card.d.ts +14 -17
  127. package/dist/property-listing-card.js +102 -220
  128. package/dist/purchase-option-card.d.ts +79 -0
  129. package/dist/purchase-option-card.js +176 -0
  130. package/dist/radar-chart.d.ts +29 -31
  131. package/dist/radar-chart.js +162 -137
  132. package/dist/radio-group.d.ts +11 -13
  133. package/dist/radio-group.js +46 -60
  134. package/dist/review-block.d.ts +14 -16
  135. package/dist/review-block.js +154 -10
  136. package/dist/rich-text-editor.d.ts +30 -14
  137. package/dist/rich-text-editor.js +592 -716
  138. package/dist/scatter-chart.d.ts +45 -47
  139. package/dist/scatter-chart.js +236 -240
  140. package/dist/search-input.d.ts +8 -16
  141. package/dist/search-input.js +57 -109
  142. package/dist/select.d.ts +8 -8
  143. package/dist/select.js +144 -27
  144. package/dist/separator.d.ts +8 -9
  145. package/dist/separator.js +32 -8
  146. package/dist/sheet.d.ts +11 -11
  147. package/dist/sheet.js +103 -24
  148. package/dist/sidebar.d.ts +32 -37
  149. package/dist/sidebar.js +364 -634
  150. package/dist/size-context-D4mYvcg8.d.ts +10 -0
  151. package/dist/size-context.d.ts +2 -11
  152. package/dist/size-context.js +17 -9
  153. package/dist/skeleton.d.ts +4 -5
  154. package/dist/skeleton.js +12 -8
  155. package/dist/slider.d.ts +8 -9
  156. package/dist/slider.js +64 -135
  157. package/dist/sparkline.d.ts +68 -58
  158. package/dist/sparkline.js +315 -251
  159. package/dist/stepper.d.ts +23 -24
  160. package/dist/stepper.js +149 -246
  161. package/dist/styles.css +1004 -116
  162. package/dist/switch.d.ts +10 -12
  163. package/dist/switch.js +48 -70
  164. package/dist/table-card.d.ts +35 -0
  165. package/dist/table-card.js +125 -0
  166. package/dist/table.d.ts +18 -14
  167. package/dist/table.js +117 -154
  168. package/dist/tabs.d.ts +33 -15
  169. package/dist/tabs.js +110 -18
  170. package/dist/tag.d.ts +21 -23
  171. package/dist/tag.js +103 -159
  172. package/dist/testimonial-block.d.ts +18 -19
  173. package/dist/testimonial-block.js +189 -358
  174. package/dist/textarea-IS_D8pXf.d.ts +11 -0
  175. package/dist/textarea.d.ts +2 -12
  176. package/dist/textarea.js +24 -11
  177. package/dist/time-picker.d.ts +11 -11
  178. package/dist/time-picker.js +245 -302
  179. package/dist/toast.d.ts +16 -18
  180. package/dist/toast.js +154 -205
  181. package/dist/tooltip.d.ts +8 -9
  182. package/dist/tooltip.js +37 -12
  183. package/dist/tree-map.d.ts +59 -62
  184. package/dist/tree-map.js +226 -269
  185. package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
  186. package/dist/waterfall-chart.d.ts +94 -97
  187. package/dist/waterfall-chart.js +455 -552
  188. package/package.json +36 -9
  189. package/dist/accordion.js.map +0 -1
  190. package/dist/activity-timeline.js.map +0 -1
  191. package/dist/alert.js.map +0 -1
  192. package/dist/auth-layout.js.map +0 -1
  193. package/dist/avatar.js.map +0 -1
  194. package/dist/badge.js.map +0 -1
  195. package/dist/bar-chart.js.map +0 -1
  196. package/dist/breadcrumb.js.map +0 -1
  197. package/dist/bullet-chart.js.map +0 -1
  198. package/dist/button-group.js.map +0 -1
  199. package/dist/button.js.map +0 -1
  200. package/dist/calendar.js.map +0 -1
  201. package/dist/card.js.map +0 -1
  202. package/dist/carousel.js.map +0 -1
  203. package/dist/chart.js.map +0 -1
  204. package/dist/checkbox.js.map +0 -1
  205. package/dist/chunk-322YCNVL.js +0 -278
  206. package/dist/chunk-322YCNVL.js.map +0 -1
  207. package/dist/chunk-3ACQVT7A.js +0 -25
  208. package/dist/chunk-3ACQVT7A.js.map +0 -1
  209. package/dist/chunk-3T65TLJX.js +0 -334
  210. package/dist/chunk-3T65TLJX.js.map +0 -1
  211. package/dist/chunk-6ZSGQHH2.js +0 -192
  212. package/dist/chunk-6ZSGQHH2.js.map +0 -1
  213. package/dist/chunk-7TBMLFGW.js +0 -41
  214. package/dist/chunk-7TBMLFGW.js.map +0 -1
  215. package/dist/chunk-B4H6RNDH.js +0 -135
  216. package/dist/chunk-B4H6RNDH.js.map +0 -1
  217. package/dist/chunk-BUXCGZ6X.js +0 -219
  218. package/dist/chunk-BUXCGZ6X.js.map +0 -1
  219. package/dist/chunk-CHII2QHH.js +0 -58
  220. package/dist/chunk-CHII2QHH.js.map +0 -1
  221. package/dist/chunk-DMNOXRRW.js +0 -147
  222. package/dist/chunk-DMNOXRRW.js.map +0 -1
  223. package/dist/chunk-EFSOSSIC.js +0 -130
  224. package/dist/chunk-EFSOSSIC.js.map +0 -1
  225. package/dist/chunk-FZDSVMKY.js +0 -363
  226. package/dist/chunk-FZDSVMKY.js.map +0 -1
  227. package/dist/chunk-GJOFIJS3.js +0 -246
  228. package/dist/chunk-GJOFIJS3.js.map +0 -1
  229. package/dist/chunk-HL3ZSYES.js +0 -23
  230. package/dist/chunk-HL3ZSYES.js.map +0 -1
  231. package/dist/chunk-JVLUBAPB.js +0 -129
  232. package/dist/chunk-JVLUBAPB.js.map +0 -1
  233. package/dist/chunk-KDPYSOYZ.js +0 -64
  234. package/dist/chunk-KDPYSOYZ.js.map +0 -1
  235. package/dist/chunk-KSMDANKI.js +0 -43
  236. package/dist/chunk-KSMDANKI.js.map +0 -1
  237. package/dist/chunk-MEKCCOP5.js +0 -46
  238. package/dist/chunk-MEKCCOP5.js.map +0 -1
  239. package/dist/chunk-NOFXVRWL.js +0 -451
  240. package/dist/chunk-NOFXVRWL.js.map +0 -1
  241. package/dist/chunk-PC5MHNVA.js +0 -171
  242. package/dist/chunk-PC5MHNVA.js.map +0 -1
  243. package/dist/chunk-QKAQZ2GU.js +0 -122
  244. package/dist/chunk-QKAQZ2GU.js.map +0 -1
  245. package/dist/chunk-QZHSHSVV.js +0 -26
  246. package/dist/chunk-QZHSHSVV.js.map +0 -1
  247. package/dist/chunk-RBMK26XD.js +0 -19
  248. package/dist/chunk-RBMK26XD.js.map +0 -1
  249. package/dist/chunk-SFNJGF6M.js +0 -262
  250. package/dist/chunk-SFNJGF6M.js.map +0 -1
  251. package/dist/chunk-UJJNLGTM.js +0 -112
  252. package/dist/chunk-UJJNLGTM.js.map +0 -1
  253. package/dist/chunk-VGR4ZWJ3.js +0 -418
  254. package/dist/chunk-VGR4ZWJ3.js.map +0 -1
  255. package/dist/chunk-XG47P6D4.js +0 -99
  256. package/dist/chunk-XG47P6D4.js.map +0 -1
  257. package/dist/chunk-XZZAHNVM.js +0 -21
  258. package/dist/chunk-XZZAHNVM.js.map +0 -1
  259. package/dist/chunk-Y4TTYVNE.js +0 -36
  260. package/dist/chunk-Y4TTYVNE.js.map +0 -1
  261. package/dist/chunk-YDWIHW6Q.js +0 -69
  262. package/dist/chunk-YDWIHW6Q.js.map +0 -1
  263. package/dist/collapsible.js.map +0 -1
  264. package/dist/combobox.js.map +0 -1
  265. package/dist/cta.js.map +0 -1
  266. package/dist/currency-selector.js.map +0 -1
  267. package/dist/date-picker.js.map +0 -1
  268. package/dist/details-card.js.map +0 -1
  269. package/dist/dialog.js.map +0 -1
  270. package/dist/dropdown-menu.js.map +0 -1
  271. package/dist/dropzone.js.map +0 -1
  272. package/dist/editorial-card.js.map +0 -1
  273. package/dist/empty-state.js.map +0 -1
  274. package/dist/field.js.map +0 -1
  275. package/dist/footer.js.map +0 -1
  276. package/dist/funnel-chart.js.map +0 -1
  277. package/dist/gallery-indicator.js.map +0 -1
  278. package/dist/heatmap-chart.js.map +0 -1
  279. package/dist/infotip.js.map +0 -1
  280. package/dist/input-group.js.map +0 -1
  281. package/dist/input-size-context.js.map +0 -1
  282. package/dist/input.js.map +0 -1
  283. package/dist/item.js.map +0 -1
  284. package/dist/kpi-card.js.map +0 -1
  285. package/dist/label.js.map +0 -1
  286. package/dist/line-chart.js.map +0 -1
  287. package/dist/logo.js.map +0 -1
  288. package/dist/map-indicator.js.map +0 -1
  289. package/dist/match.js.map +0 -1
  290. package/dist/media-gallery-hero.js.map +0 -1
  291. package/dist/media-player.js.map +0 -1
  292. package/dist/number-input.js.map +0 -1
  293. package/dist/page-header.js.map +0 -1
  294. package/dist/pagination.js.map +0 -1
  295. package/dist/password-input.js.map +0 -1
  296. package/dist/phone-input.js.map +0 -1
  297. package/dist/photo-gallery.js.map +0 -1
  298. package/dist/pie-chart.js.map +0 -1
  299. package/dist/popover.js.map +0 -1
  300. package/dist/price-tag.js.map +0 -1
  301. package/dist/progress.js.map +0 -1
  302. package/dist/property-listing-card.js.map +0 -1
  303. package/dist/radar-chart.js.map +0 -1
  304. package/dist/radio-group.js.map +0 -1
  305. package/dist/review-block.js.map +0 -1
  306. package/dist/rich-text-editor.js.map +0 -1
  307. package/dist/scatter-chart.js.map +0 -1
  308. package/dist/search-input.js.map +0 -1
  309. package/dist/select.js.map +0 -1
  310. package/dist/separator.js.map +0 -1
  311. package/dist/sheet.js.map +0 -1
  312. package/dist/sidebar.js.map +0 -1
  313. package/dist/size-context.js.map +0 -1
  314. package/dist/skeleton.js.map +0 -1
  315. package/dist/slider.js.map +0 -1
  316. package/dist/sparkline.js.map +0 -1
  317. package/dist/stepper.js.map +0 -1
  318. package/dist/switch.js.map +0 -1
  319. package/dist/tab-list.d.ts +0 -38
  320. package/dist/tab-list.js +0 -123
  321. package/dist/tab-list.js.map +0 -1
  322. package/dist/table.js.map +0 -1
  323. package/dist/tabs.js.map +0 -1
  324. package/dist/tag.js.map +0 -1
  325. package/dist/testimonial-block.js.map +0 -1
  326. package/dist/textarea.js.map +0 -1
  327. package/dist/time-picker.js.map +0 -1
  328. package/dist/toast.js.map +0 -1
  329. package/dist/tooltip.js.map +0 -1
  330. package/dist/tree-map.js.map +0 -1
  331. package/dist/waterfall-chart.js.map +0 -1
package/dist/sidebar.js CHANGED
@@ -1,673 +1,403 @@
1
1
  "use client";
2
- import {
3
- useIsMobile
4
- } from "./chunk-RBMK26XD.js";
5
- import {
6
- Sheet,
7
- SheetContent,
8
- SheetDescription,
9
- SheetHeader,
10
- SheetTitle
11
- } from "./chunk-PC5MHNVA.js";
12
- import {
13
- Tooltip,
14
- TooltipContent,
15
- TooltipTrigger
16
- } from "./chunk-KDPYSOYZ.js";
17
- import {
18
- Skeleton
19
- } from "./chunk-XZZAHNVM.js";
20
- import {
21
- useUncontrolled
22
- } from "./chunk-QZHSHSVV.js";
23
- import {
24
- Separator
25
- } from "./chunk-CHII2QHH.js";
26
- import {
27
- Input
28
- } from "./chunk-MEKCCOP5.js";
29
- import "./chunk-3ACQVT7A.js";
30
- import {
31
- Button
32
- } from "./chunk-B4H6RNDH.js";
33
- import "./chunk-HL3ZSYES.js";
34
- import {
35
- cn
36
- } from "./chunk-Y4TTYVNE.js";
37
-
38
- // src/sidebar.tsx
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
3
+ import { Separator } from "./separator.js";
4
+ import { Button } from "./button.js";
5
+ import { Input } from "./input.js";
6
+ import { t as useUncontrolled } from "./use-uncontrolled-CLfM1XbB.js";
7
+ import { Skeleton } from "./skeleton.js";
8
+ import { Tooltip, TooltipContent, TooltipTrigger } from "./tooltip.js";
9
+ import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "./sheet.js";
10
+ import { Menu } from "lucide-react";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
39
12
  import { mergeProps } from "@base-ui/react/merge-props";
40
13
  import { useRender } from "@base-ui/react/use-render";
41
14
  import { cva } from "class-variance-authority";
42
- import { Menu } from "lucide-react";
43
15
  import * as React from "react";
44
- import { jsx, jsxs } from "react/jsx-runtime";
45
- var SIDEBAR_LS_KEY = "sidebar_state";
46
- var SIDEBAR_WIDTH = "17.5rem";
47
- var SIDEBAR_WIDTH_MOBILE = "17.5rem";
48
- var SIDEBAR_WIDTH_ICON = "4.5rem";
49
- var SIDEBAR_KEYBOARD_SHORTCUT = "b";
50
- var SidebarContext = React.createContext(null);
16
+ //#region src/lib/use-mobile.ts
17
+ const DEFAULT_MOBILE_BREAKPOINT = 1024;
18
+ function useIsMobile(breakpoint = DEFAULT_MOBILE_BREAKPOINT) {
19
+ const [isMobile, setIsMobile] = React.useState(false);
20
+ React.useEffect(() => {
21
+ const mediaQuery = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);
22
+ const update = () => setIsMobile(window.innerWidth < breakpoint);
23
+ update();
24
+ mediaQuery.addEventListener("change", update);
25
+ return () => mediaQuery.removeEventListener("change", update);
26
+ }, [breakpoint]);
27
+ return isMobile;
28
+ }
29
+ //#endregion
30
+ //#region src/sidebar.tsx
31
+ const SIDEBAR_LS_KEY = "sidebar_state";
32
+ const SIDEBAR_WIDTH = "17.5rem";
33
+ const SIDEBAR_WIDTH_MOBILE = "17.5rem";
34
+ const SIDEBAR_WIDTH_ICON = "4.5rem";
35
+ const SIDEBAR_KEYBOARD_SHORTCUT = "b";
36
+ const SidebarContext = React.createContext(null);
51
37
  function useSidebar() {
52
- const context = React.useContext(SidebarContext);
53
- if (!context) {
54
- throw new Error("useSidebar must be used within a SidebarProvider.");
55
- }
56
- return context;
38
+ const context = React.useContext(SidebarContext);
39
+ if (!context) throw new Error("useSidebar must be used within a SidebarProvider.");
40
+ return context;
57
41
  }
58
- function SidebarProvider({
59
- defaultOpen = true,
60
- open: openProp,
61
- onOpenChange: setOpenProp,
62
- className,
63
- style,
64
- children,
65
- ...props
66
- }) {
67
- const isMobile = useIsMobile();
68
- const [openMobile, setOpenMobile] = React.useState(false);
69
- const [open, setOpen] = useUncontrolled({
70
- value: openProp,
71
- onChange: (open2) => {
72
- setOpenProp?.(open2);
73
- if (typeof window !== "undefined") {
74
- window.localStorage.setItem(SIDEBAR_LS_KEY, String(open2));
75
- }
76
- },
77
- defaultValue: defaultOpen
78
- });
79
- React.useEffect(() => {
80
- if (openProp !== void 0) return;
81
- const storedOpen = window.localStorage.getItem(SIDEBAR_LS_KEY);
82
- if (storedOpen !== null) {
83
- setOpen(storedOpen !== "false");
84
- }
85
- }, [openProp, setOpen]);
86
- const toggleSidebar = React.useCallback(() => {
87
- return isMobile ? setOpenMobile((open2) => !open2) : setOpen(!open);
88
- }, [isMobile, open, setOpen]);
89
- React.useEffect(() => {
90
- const handleKeyDown = (event) => {
91
- if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
92
- event.preventDefault();
93
- toggleSidebar();
94
- }
95
- };
96
- window.addEventListener("keydown", handleKeyDown);
97
- return () => window.removeEventListener("keydown", handleKeyDown);
98
- }, [toggleSidebar]);
99
- const state = open ? "expanded" : "collapsed";
100
- const contextValue = React.useMemo(
101
- () => ({
102
- state,
103
- open,
104
- setOpen,
105
- isMobile,
106
- openMobile,
107
- setOpenMobile,
108
- toggleSidebar
109
- }),
110
- [state, open, setOpen, isMobile, openMobile, toggleSidebar]
111
- );
112
- return /* @__PURE__ */ jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
113
- "div",
114
- {
115
- "data-slot": "sidebar-wrapper",
116
- style: {
117
- "--layout-nav-width": SIDEBAR_WIDTH,
118
- "--layout-nav-width-icon": SIDEBAR_WIDTH_ICON,
119
- ...style
120
- },
121
- className: cn(
122
- "group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-surface",
123
- className
124
- ),
125
- ...props,
126
- children
127
- }
128
- ) });
42
+ function SidebarProvider({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }) {
43
+ const isMobile = useIsMobile();
44
+ const [openMobile, setOpenMobile] = React.useState(false);
45
+ const [open, setOpen] = useUncontrolled({
46
+ value: openProp,
47
+ onChange: (open) => {
48
+ setOpenProp?.(open);
49
+ if (typeof window !== "undefined") window.localStorage.setItem(SIDEBAR_LS_KEY, String(open));
50
+ },
51
+ defaultValue: defaultOpen
52
+ });
53
+ React.useEffect(() => {
54
+ if (openProp !== void 0) return;
55
+ const storedOpen = window.localStorage.getItem(SIDEBAR_LS_KEY);
56
+ if (storedOpen !== null) setOpen(storedOpen !== "false");
57
+ }, [openProp, setOpen]);
58
+ const toggleSidebar = React.useCallback(() => {
59
+ return isMobile ? setOpenMobile((open) => !open) : setOpen(!open);
60
+ }, [
61
+ isMobile,
62
+ open,
63
+ setOpen
64
+ ]);
65
+ React.useEffect(() => {
66
+ const handleKeyDown = (event) => {
67
+ if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
68
+ event.preventDefault();
69
+ toggleSidebar();
70
+ }
71
+ };
72
+ window.addEventListener("keydown", handleKeyDown);
73
+ return () => window.removeEventListener("keydown", handleKeyDown);
74
+ }, [toggleSidebar]);
75
+ const state = open ? "expanded" : "collapsed";
76
+ const contextValue = React.useMemo(() => ({
77
+ state,
78
+ open,
79
+ setOpen,
80
+ isMobile,
81
+ openMobile,
82
+ setOpenMobile,
83
+ toggleSidebar
84
+ }), [
85
+ state,
86
+ open,
87
+ setOpen,
88
+ isMobile,
89
+ openMobile,
90
+ toggleSidebar
91
+ ]);
92
+ return /* @__PURE__ */ jsx(SidebarContext.Provider, {
93
+ value: contextValue,
94
+ children: /* @__PURE__ */ jsx("div", {
95
+ "data-slot": "sidebar-wrapper",
96
+ style: {
97
+ "--layout-nav-width": SIDEBAR_WIDTH,
98
+ "--layout-nav-width-icon": SIDEBAR_WIDTH_ICON,
99
+ ...style
100
+ },
101
+ className: cn("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-surface", className),
102
+ ...props,
103
+ children
104
+ })
105
+ });
129
106
  }
130
- function Sidebar({
131
- side = "left",
132
- variant = "sidebar",
133
- collapsible = "offcanvas",
134
- className,
135
- children,
136
- dir,
137
- ...props
138
- }) {
139
- const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
140
- if (collapsible === "none") {
141
- return /* @__PURE__ */ jsx(
142
- "div",
143
- {
144
- "data-slot": "sidebar",
145
- className: cn(
146
- "flex h-full w-(--layout-nav-width) flex-col bg-surface text-fg-secondary",
147
- className
148
- ),
149
- ...props,
150
- children
151
- }
152
- );
153
- }
154
- if (isMobile) {
155
- return /* @__PURE__ */ jsx(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs(
156
- SheetContent,
157
- {
158
- dir,
159
- "data-sidebar": "sidebar",
160
- "data-slot": "sidebar",
161
- "data-mobile": "true",
162
- className: "min-w-10/12 w-(--layout-nav-width) max-w-screen border-none bg-surface p-0 text-fg-secondary [&>button]:hidden",
163
- style: {
164
- "--layout-nav-width": SIDEBAR_WIDTH_MOBILE
165
- },
166
- side: "right",
167
- children: [
168
- /* @__PURE__ */ jsxs(SheetHeader, { className: "sr-only", children: [
169
- /* @__PURE__ */ jsx(SheetTitle, { children: "Sidebar" }),
170
- /* @__PURE__ */ jsx(SheetDescription, { children: "Displays the mobile sidebar." })
171
- ] }),
172
- /* @__PURE__ */ jsx("div", { className: "flex h-full w-full flex-col", children })
173
- ]
174
- }
175
- ) });
176
- }
177
- return /* @__PURE__ */ jsxs(
178
- "div",
179
- {
180
- className: "group peer hidden text-fg-secondary lg:block",
181
- "data-state": state,
182
- "data-collapsible": state === "collapsed" ? collapsible : "",
183
- "data-variant": variant,
184
- "data-side": side,
185
- "data-slot": "sidebar",
186
- children: [
187
- /* @__PURE__ */ jsx(
188
- "div",
189
- {
190
- "data-slot": "sidebar-gap",
191
- className: cn(
192
- "relative w-(--layout-nav-width) bg-transparent transition-[width] duration-200 ease-out",
193
- "group-data-[collapsible=offcanvas]:w-0",
194
- "group-data-[side=right]:rotate-180",
195
- variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--layout-nav-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--layout-nav-width-icon)"
196
- )
197
- }
198
- ),
199
- /* @__PURE__ */ jsx(
200
- "div",
201
- {
202
- "data-slot": "sidebar-container",
203
- "data-side": side,
204
- className: cn(
205
- "fixed inset-y-0 z-10 hidden h-svh w-(--layout-nav-width) transition-[left,right,width] duration-200 ease-out data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--layout-nav-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--layout-nav-width)*-1)] lg:flex",
206
- // Adjust the padding for floating and inset variants.
207
- variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--layout-nav-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--layout-nav-width-icon) group-data-[side=left]:border-r group-data-[side=left]:border-r-line-subtle group-data-[side=right]:border-l group-data-[side=right]:border-l-line-subtle",
208
- className
209
- ),
210
- ...props,
211
- children: /* @__PURE__ */ jsx(
212
- "div",
213
- {
214
- "data-sidebar": "sidebar",
215
- "data-slot": "sidebar-inner",
216
- className: "flex size-full flex-col bg-surface group-data-[variant=floating]:rounded-xl group-data-[variant=floating]:border group-data-[variant=floating]:border-line-subtle group-data-[variant=floating]:shadow-[var(--elevation-e1-shadow)]",
217
- children
218
- }
219
- )
220
- }
221
- )
222
- ]
223
- }
224
- );
107
+ function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas", className, children, dir, ...props }) {
108
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
109
+ if (collapsible === "none") return /* @__PURE__ */ jsx("div", {
110
+ "data-slot": "sidebar",
111
+ className: cn("flex h-full w-(--layout-nav-width) flex-col bg-surface text-fg-secondary", className),
112
+ ...props,
113
+ children
114
+ });
115
+ if (isMobile) return /* @__PURE__ */ jsx(Sheet, {
116
+ open: openMobile,
117
+ onOpenChange: setOpenMobile,
118
+ ...props,
119
+ children: /* @__PURE__ */ jsxs(SheetContent, {
120
+ dir,
121
+ "data-sidebar": "sidebar",
122
+ "data-slot": "sidebar",
123
+ "data-mobile": "true",
124
+ className: "min-w-10/12 w-(--layout-nav-width) max-w-screen border-none bg-surface p-0 text-fg-secondary [&>button]:hidden",
125
+ style: { "--layout-nav-width": SIDEBAR_WIDTH_MOBILE },
126
+ side: "right",
127
+ children: [/* @__PURE__ */ jsxs(SheetHeader, {
128
+ className: "sr-only",
129
+ children: [/* @__PURE__ */ jsx(SheetTitle, { children: "Sidebar" }), /* @__PURE__ */ jsx(SheetDescription, { children: "Displays the mobile sidebar." })]
130
+ }), /* @__PURE__ */ jsx("div", {
131
+ className: "flex h-full w-full flex-col",
132
+ children
133
+ })]
134
+ })
135
+ });
136
+ return /* @__PURE__ */ jsxs("div", {
137
+ className: "group peer hidden text-fg-secondary lg:block",
138
+ "data-state": state,
139
+ "data-collapsible": state === "collapsed" ? collapsible : "",
140
+ "data-variant": variant,
141
+ "data-side": side,
142
+ "data-slot": "sidebar",
143
+ children: [/* @__PURE__ */ jsx("div", {
144
+ "data-slot": "sidebar-gap",
145
+ className: cn("relative w-(--layout-nav-width) bg-transparent transition-[width] duration-200 ease-out", "group-data-[collapsible=offcanvas]:w-0", "group-data-[side=right]:rotate-180", variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--layout-nav-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--layout-nav-width-icon)")
146
+ }), /* @__PURE__ */ jsx("div", {
147
+ "data-slot": "sidebar-container",
148
+ "data-side": side,
149
+ className: cn("fixed inset-y-0 z-10 hidden h-svh w-(--layout-nav-width) transition-[left,right,width] duration-200 ease-out data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--layout-nav-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--layout-nav-width)*-1)] lg:flex", variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--layout-nav-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--layout-nav-width-icon) group-data-[side=left]:border-r group-data-[side=left]:border-r-line-subtle group-data-[side=right]:border-l group-data-[side=right]:border-l-line-subtle", className),
150
+ ...props,
151
+ children: /* @__PURE__ */ jsx("div", {
152
+ "data-sidebar": "sidebar",
153
+ "data-slot": "sidebar-inner",
154
+ className: "flex size-full flex-col bg-surface group-data-[variant=floating]:rounded-xl group-data-[variant=floating]:border group-data-[variant=floating]:border-line-subtle group-data-[variant=floating]:shadow-[var(--elevation-e1-shadow)]",
155
+ children
156
+ })
157
+ })]
158
+ });
225
159
  }
226
- function SidebarTrigger({
227
- className,
228
- onClick,
229
- ...props
230
- }) {
231
- const { toggleSidebar } = useSidebar();
232
- return /* @__PURE__ */ jsxs(
233
- Button,
234
- {
235
- "data-sidebar": "trigger",
236
- "data-slot": "sidebar-trigger",
237
- variant: "ghost",
238
- size: "icon-sm",
239
- className: cn(className),
240
- onClick: (event) => {
241
- onClick?.(event);
242
- toggleSidebar();
243
- },
244
- ...props,
245
- children: [
246
- /* @__PURE__ */ jsx(Menu, { className: "cn-rtl-flip" }),
247
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Toggle Sidebar" })
248
- ]
249
- }
250
- );
160
+ function SidebarTrigger({ className, onClick, ...props }) {
161
+ const { toggleSidebar } = useSidebar();
162
+ return /* @__PURE__ */ jsxs(Button, {
163
+ "data-sidebar": "trigger",
164
+ "data-slot": "sidebar-trigger",
165
+ variant: "ghost",
166
+ size: "icon-sm",
167
+ className: cn(className),
168
+ onClick: (event) => {
169
+ onClick?.(event);
170
+ toggleSidebar();
171
+ },
172
+ ...props,
173
+ children: [/* @__PURE__ */ jsx(Menu, { className: "cn-rtl-flip" }), /* @__PURE__ */ jsx("span", {
174
+ className: "sr-only",
175
+ children: "Toggle Sidebar"
176
+ })]
177
+ });
251
178
  }
252
179
  function SidebarRail({ className, ...props }) {
253
- const { toggleSidebar } = useSidebar();
254
- return /* @__PURE__ */ jsx(
255
- "button",
256
- {
257
- "data-sidebar": "rail",
258
- "data-slot": "sidebar-rail",
259
- "aria-label": "Toggle Sidebar",
260
- tabIndex: -1,
261
- onClick: toggleSidebar,
262
- title: "Toggle Sidebar",
263
- className: cn(
264
- "absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-line-subtle sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2",
265
- "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
266
- "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
267
- "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-surface",
268
- "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
269
- "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
270
- className
271
- ),
272
- ...props
273
- }
274
- );
180
+ const { toggleSidebar } = useSidebar();
181
+ return /* @__PURE__ */ jsx("button", {
182
+ "data-sidebar": "rail",
183
+ "data-slot": "sidebar-rail",
184
+ "aria-label": "Toggle Sidebar",
185
+ tabIndex: -1,
186
+ onClick: toggleSidebar,
187
+ title: "Toggle Sidebar",
188
+ className: cn("absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-line-subtle sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2", "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize", "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-surface", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", className),
189
+ ...props
190
+ });
275
191
  }
276
192
  function SidebarInset({ className, ...props }) {
277
- return /* @__PURE__ */ jsx(
278
- "main",
279
- {
280
- "data-slot": "sidebar-inset",
281
- className: cn(
282
- "relative flex min-w-0 flex-1 flex-col bg-canvas lg:peer-data-[variant=inset]:m-2 lg:peer-data-[variant=inset]:ml-0 lg:peer-data-[variant=inset]:rounded-xl lg:peer-data-[variant=inset]:border lg:peer-data-[variant=inset]:border-line-subtle lg:peer-data-[variant=inset]:shadow-[var(--elevation-e1-shadow)] lg:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",
283
- className
284
- ),
285
- ...props
286
- }
287
- );
193
+ return /* @__PURE__ */ jsx("main", {
194
+ "data-slot": "sidebar-inset",
195
+ className: cn("relative flex min-w-0 flex-1 flex-col bg-canvas lg:peer-data-[variant=inset]:m-2 lg:peer-data-[variant=inset]:ml-0 lg:peer-data-[variant=inset]:rounded-xl lg:peer-data-[variant=inset]:border lg:peer-data-[variant=inset]:border-line-subtle lg:peer-data-[variant=inset]:shadow-[var(--elevation-e1-shadow)] lg:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2", className),
196
+ ...props
197
+ });
288
198
  }
289
- function SidebarInput({
290
- className,
291
- ...props
292
- }) {
293
- return /* @__PURE__ */ jsx(
294
- Input,
295
- {
296
- "data-slot": "sidebar-input",
297
- "data-sidebar": "input",
298
- className: cn("h-8 w-full bg-canvas shadow-none", className),
299
- ...props
300
- }
301
- );
199
+ function SidebarInput({ className, ...props }) {
200
+ return /* @__PURE__ */ jsx(Input, {
201
+ "data-slot": "sidebar-input",
202
+ "data-sidebar": "input",
203
+ className: cn("h-8 w-full bg-canvas shadow-none", className),
204
+ ...props
205
+ });
302
206
  }
303
207
  function SidebarHeader({ className, ...props }) {
304
- return /* @__PURE__ */ jsx(
305
- "div",
306
- {
307
- "data-slot": "sidebar-header",
308
- "data-sidebar": "header",
309
- className: cn("flex flex-col gap-2 p-2", className),
310
- ...props
311
- }
312
- );
208
+ return /* @__PURE__ */ jsx("div", {
209
+ "data-slot": "sidebar-header",
210
+ "data-sidebar": "header",
211
+ className: cn("flex flex-col gap-2 p-2", className),
212
+ ...props
213
+ });
313
214
  }
314
215
  function SidebarFooter({ className, ...props }) {
315
- return /* @__PURE__ */ jsx(
316
- "div",
317
- {
318
- "data-slot": "sidebar-footer",
319
- "data-sidebar": "footer",
320
- className: cn("flex flex-col gap-2 p-2", className),
321
- ...props
322
- }
323
- );
216
+ return /* @__PURE__ */ jsx("div", {
217
+ "data-slot": "sidebar-footer",
218
+ "data-sidebar": "footer",
219
+ className: cn("flex flex-col gap-2 p-2", className),
220
+ ...props
221
+ });
324
222
  }
325
- function SidebarSeparator({
326
- className,
327
- ...props
328
- }) {
329
- return /* @__PURE__ */ jsx(
330
- Separator,
331
- {
332
- "data-slot": "sidebar-separator",
333
- "data-sidebar": "separator",
334
- className: cn("mx-2 w-auto bg-line-subtle", className),
335
- ...props
336
- }
337
- );
223
+ function SidebarSeparator({ className, ...props }) {
224
+ return /* @__PURE__ */ jsx(Separator, {
225
+ "data-slot": "sidebar-separator",
226
+ "data-sidebar": "separator",
227
+ className: cn("mx-2 w-auto bg-line-subtle", className),
228
+ ...props
229
+ });
338
230
  }
339
231
  function SidebarContent({ className, ...props }) {
340
- return /* @__PURE__ */ jsx(
341
- "div",
342
- {
343
- "data-slot": "sidebar-content",
344
- "data-sidebar": "content",
345
- className: cn(
346
- "no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
347
- className
348
- ),
349
- ...props
350
- }
351
- );
232
+ return /* @__PURE__ */ jsx("div", {
233
+ "data-slot": "sidebar-content",
234
+ "data-sidebar": "content",
235
+ className: cn("no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden", className),
236
+ ...props
237
+ });
352
238
  }
353
239
  function SidebarGroup({ className, ...props }) {
354
- return /* @__PURE__ */ jsx(
355
- "div",
356
- {
357
- "data-slot": "sidebar-group",
358
- "data-sidebar": "group",
359
- className: cn("relative flex w-full min-w-0 flex-col p-2", className),
360
- ...props
361
- }
362
- );
240
+ return /* @__PURE__ */ jsx("div", {
241
+ "data-slot": "sidebar-group",
242
+ "data-sidebar": "group",
243
+ className: cn("relative flex w-full min-w-0 flex-col p-2", className),
244
+ ...props
245
+ });
363
246
  }
364
- function SidebarGroupLabel({
365
- className,
366
- render,
367
- ...props
368
- }) {
369
- return useRender({
370
- defaultTagName: "div",
371
- props: mergeProps(
372
- {
373
- className: cn(
374
- "flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-fg-caption-placeholder outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] [&>svg]:size-4 [&>svg]:shrink-0",
375
- className
376
- )
377
- },
378
- props
379
- ),
380
- render,
381
- state: {
382
- slot: "sidebar-group-label",
383
- sidebar: "group-label"
384
- }
385
- });
247
+ function SidebarGroupLabel({ className, render, ...props }) {
248
+ return useRender({
249
+ defaultTagName: "div",
250
+ props: mergeProps({ className: cn("flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-fg-caption-placeholder outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] [&>svg]:size-4 [&>svg]:shrink-0", className) }, props),
251
+ render,
252
+ state: {
253
+ slot: "sidebar-group-label",
254
+ sidebar: "group-label"
255
+ }
256
+ });
386
257
  }
387
- function SidebarGroupAction({
388
- className,
389
- render,
390
- ...props
391
- }) {
392
- return useRender({
393
- defaultTagName: "button",
394
- props: mergeProps(
395
- {
396
- className: cn(
397
- "absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-fg-secondary outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-surface-raised hover:text-fg-primary focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] lg:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",
398
- className
399
- )
400
- },
401
- props
402
- ),
403
- render,
404
- state: {
405
- slot: "sidebar-group-action",
406
- sidebar: "group-action"
407
- }
408
- });
258
+ function SidebarGroupAction({ className, render, ...props }) {
259
+ return useRender({
260
+ defaultTagName: "button",
261
+ props: mergeProps({ className: cn("absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-fg-secondary outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-surface-raised hover:text-fg-primary focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] lg:after:hidden [&>svg]:size-4 [&>svg]:shrink-0", className) }, props),
262
+ render,
263
+ state: {
264
+ slot: "sidebar-group-action",
265
+ sidebar: "group-action"
266
+ }
267
+ });
409
268
  }
410
- function SidebarGroupContent({
411
- className,
412
- ...props
413
- }) {
414
- return /* @__PURE__ */ jsx(
415
- "div",
416
- {
417
- "data-slot": "sidebar-group-content",
418
- "data-sidebar": "group-content",
419
- className: cn("w-full text-sm", className),
420
- ...props
421
- }
422
- );
269
+ function SidebarGroupContent({ className, ...props }) {
270
+ return /* @__PURE__ */ jsx("div", {
271
+ "data-slot": "sidebar-group-content",
272
+ "data-sidebar": "group-content",
273
+ className: cn("w-full text-sm", className),
274
+ ...props
275
+ });
423
276
  }
424
277
  function SidebarMenu({ className, ...props }) {
425
- return /* @__PURE__ */ jsx(
426
- "ul",
427
- {
428
- "data-slot": "sidebar-menu",
429
- "data-sidebar": "menu",
430
- className: cn("flex w-full min-w-0 flex-col gap-0", className),
431
- ...props
432
- }
433
- );
278
+ return /* @__PURE__ */ jsx("ul", {
279
+ "data-slot": "sidebar-menu",
280
+ "data-sidebar": "menu",
281
+ className: cn("flex w-full min-w-0 flex-col gap-0", className),
282
+ ...props
283
+ });
434
284
  }
435
285
  function SidebarMenuItem({ className, ...props }) {
436
- return /* @__PURE__ */ jsx(
437
- "li",
438
- {
439
- "data-slot": "sidebar-menu-item",
440
- "data-sidebar": "menu-item",
441
- className: cn("group/menu-item relative", className),
442
- ...props
443
- }
444
- );
286
+ return /* @__PURE__ */ jsx("li", {
287
+ "data-slot": "sidebar-menu-item",
288
+ "data-sidebar": "menu-item",
289
+ className: cn("group/menu-item relative", className),
290
+ ...props
291
+ });
445
292
  }
446
- var sidebarMenuButtonVariants = cva(
447
- "peer/menu-button group/menu-button flex w-full items-center gap-3 overflow-hidden rounded-[10px] px-3 py-3 text-left text-gdt-sm font-semibold text-fg-secondary outline-hidden transition-[width,height,padding,gap,color,background-color] duration-200 ease-out group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:gap-0 group-data-[collapsible=icon]:px-5! group-data-[collapsible=icon]:[&>span]:max-w-0 group-data-[collapsible=icon]:[&>span]:opacity-0 hover:bg-surface-raised hover:text-fg-primary focus-visible:inset-ring-1 inset-ring-line-focus active:bg-surface-raised active:text-fg-primary disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-surface-raised data-open:hover:text-fg-primary data-active:bg-surface-brand-subtle data-active:font-medium data-active:text-fg-brand [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-current [&>span]:min-w-0 [&>span]:truncate [&>span]:transition-[max-width,opacity] [&>span]:duration-200 [&>span]:ease-out",
448
- {
449
- variants: {
450
- variant: {
451
- default: "",
452
- outline: "bg-canvas text-fg-primary shadow-[inset_0_0_0_1px_var(--color-line-subtle)] hover:bg-surface-raised hover:text-fg-primary"
453
- },
454
- size: {
455
- md: "h-12",
456
- sm: "h-9 text-xs",
457
- lg: "h-12 group-data-[collapsible=icon]:px-[18px]! [&_svg]:size-5"
458
- }
459
- },
460
- defaultVariants: {
461
- variant: "default",
462
- size: "md"
463
- }
464
- }
465
- );
466
- function SidebarMenuButton({
467
- render,
468
- isActive = false,
469
- variant = "default",
470
- size = "md",
471
- tooltip,
472
- className,
473
- ...props
474
- }) {
475
- const { isMobile, state } = useSidebar();
476
- const comp = useRender({
477
- defaultTagName: "button",
478
- props: mergeProps(
479
- {
480
- className: cn(sidebarMenuButtonVariants({ variant, size }), className)
481
- },
482
- props
483
- ),
484
- render: !tooltip ? render : /* @__PURE__ */ jsx(TooltipTrigger, { render }),
485
- state: {
486
- slot: "sidebar-menu-button",
487
- sidebar: "menu-button",
488
- size,
489
- active: isActive
490
- }
491
- });
492
- if (!tooltip) {
493
- return comp;
494
- }
495
- if (typeof tooltip === "string") {
496
- tooltip = {
497
- children: tooltip
498
- };
499
- }
500
- return /* @__PURE__ */ jsxs(Tooltip, { children: [
501
- comp,
502
- /* @__PURE__ */ jsx(
503
- TooltipContent,
504
- {
505
- side: "right",
506
- align: "center",
507
- hidden: state !== "collapsed" || isMobile,
508
- ...tooltip
509
- }
510
- )
511
- ] });
293
+ const sidebarMenuButtonVariants = cva("peer/menu-button group/menu-button flex w-full items-center gap-3 overflow-hidden rounded-[10px] px-3 py-3 text-left text-gdt-sm font-semibold text-fg-secondary outline-hidden transition-[width,height,padding,gap,color,background-color] duration-200 ease-out group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:gap-0 group-data-[collapsible=icon]:px-5! group-data-[collapsible=icon]:[&>span]:max-w-0 group-data-[collapsible=icon]:[&>span]:opacity-0 hover:bg-surface-raised hover:text-fg-primary focus-visible:inset-ring-1 inset-ring-line-focus active:bg-surface-raised active:text-fg-primary disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-surface-raised data-open:hover:text-fg-primary data-active:bg-surface-brand-subtle data-active:font-medium data-active:text-fg-brand [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-current [&>span]:min-w-0 [&>span]:truncate [&>span]:transition-[max-width,opacity] [&>span]:duration-200 [&>span]:ease-out", {
294
+ variants: {
295
+ variant: {
296
+ default: "",
297
+ outline: "bg-canvas text-fg-primary shadow-[inset_0_0_0_1px_var(--color-line-subtle)] hover:bg-surface-raised hover:text-fg-primary"
298
+ },
299
+ size: {
300
+ md: "h-12",
301
+ sm: "h-9 text-xs",
302
+ lg: "h-12 group-data-[collapsible=icon]:px-[18px]! [&_svg]:size-5"
303
+ }
304
+ },
305
+ defaultVariants: {
306
+ variant: "default",
307
+ size: "md"
308
+ }
309
+ });
310
+ function SidebarMenuButton({ render, isActive = false, variant = "default", size = "md", tooltip, className, ...props }) {
311
+ const { isMobile, state } = useSidebar();
312
+ const comp = useRender({
313
+ defaultTagName: "button",
314
+ props: mergeProps({ className: cn(sidebarMenuButtonVariants({
315
+ variant,
316
+ size
317
+ }), className) }, props),
318
+ render: !tooltip ? render : /* @__PURE__ */ jsx(TooltipTrigger, { render }),
319
+ state: {
320
+ slot: "sidebar-menu-button",
321
+ sidebar: "menu-button",
322
+ size,
323
+ active: isActive
324
+ }
325
+ });
326
+ if (!tooltip) return comp;
327
+ if (typeof tooltip === "string") tooltip = { children: tooltip };
328
+ return /* @__PURE__ */ jsxs(Tooltip, { children: [comp, /* @__PURE__ */ jsx(TooltipContent, {
329
+ side: "right",
330
+ align: "center",
331
+ hidden: state !== "collapsed" || isMobile,
332
+ ...tooltip
333
+ })] });
512
334
  }
513
- function SidebarMenuAction({
514
- className,
515
- render,
516
- showOnHover = false,
517
- ...props
518
- }) {
519
- return useRender({
520
- defaultTagName: "button",
521
- props: mergeProps(
522
- {
523
- className: cn(
524
- "absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-fg-secondary outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-fg-primary peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-surface-raised hover:text-fg-primary focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] lg:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",
525
- showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-fg-brand aria-expanded:opacity-100 lg:opacity-0",
526
- className
527
- )
528
- },
529
- props
530
- ),
531
- render,
532
- state: {
533
- slot: "sidebar-menu-action",
534
- sidebar: "menu-action"
535
- }
536
- });
335
+ function SidebarMenuAction({ className, render, showOnHover = false, ...props }) {
336
+ return useRender({
337
+ defaultTagName: "button",
338
+ props: mergeProps({ className: cn("absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-fg-secondary outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-fg-primary peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-surface-raised hover:text-fg-primary focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] lg:after:hidden [&>svg]:size-4 [&>svg]:shrink-0", showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-fg-brand aria-expanded:opacity-100 lg:opacity-0", className) }, props),
339
+ render,
340
+ state: {
341
+ slot: "sidebar-menu-action",
342
+ sidebar: "menu-action"
343
+ }
344
+ });
537
345
  }
538
- function SidebarMenuBadge({
539
- className,
540
- ...props
541
- }) {
542
- return /* @__PURE__ */ jsx(
543
- "div",
544
- {
545
- "data-slot": "sidebar-menu-badge",
546
- "data-sidebar": "menu-badge",
547
- className: cn(
548
- "pointer-events-none absolute right-4 flex h-5 min-w-5 items-center justify-center rounded-full bg-surface-brand px-1 text-gdt-subtext font-bold leading-none text-fg-on-brand tabular-nums select-none group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-2.5 peer-data-[size=lg]/menu-button:top-4 peer-data-[size=sm]/menu-button:top-2",
549
- className
550
- ),
551
- ...props
552
- }
553
- );
346
+ function SidebarMenuBadge({ className, ...props }) {
347
+ return /* @__PURE__ */ jsx("div", {
348
+ "data-slot": "sidebar-menu-badge",
349
+ "data-sidebar": "menu-badge",
350
+ className: cn("pointer-events-none absolute right-4 flex h-5 min-w-5 items-center justify-center rounded-full bg-surface-brand px-1 text-gdt-subtext font-bold leading-none text-fg-on-brand tabular-nums select-none group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-2.5 peer-data-[size=lg]/menu-button:top-4 peer-data-[size=sm]/menu-button:top-2", className),
351
+ ...props
352
+ });
554
353
  }
555
- function SidebarMenuSkeleton({
556
- className,
557
- showIcon = false,
558
- ...props
559
- }) {
560
- const [width] = React.useState(() => {
561
- return `${Math.floor(Math.random() * 40) + 50}%`;
562
- });
563
- return /* @__PURE__ */ jsxs(
564
- "div",
565
- {
566
- "data-slot": "sidebar-menu-skeleton",
567
- "data-sidebar": "menu-skeleton",
568
- className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
569
- ...props,
570
- children: [
571
- showIcon && /* @__PURE__ */ jsx(
572
- Skeleton,
573
- {
574
- className: "size-4 rounded-md",
575
- "data-sidebar": "menu-skeleton-icon"
576
- }
577
- ),
578
- /* @__PURE__ */ jsx(
579
- Skeleton,
580
- {
581
- className: "h-4 max-w-(--skeleton-width) flex-1",
582
- "data-sidebar": "menu-skeleton-text",
583
- style: {
584
- "--skeleton-width": width
585
- }
586
- }
587
- )
588
- ]
589
- }
590
- );
354
+ function SidebarMenuSkeleton({ className, showIcon = false, ...props }) {
355
+ const [width] = React.useState(() => {
356
+ return `${Math.floor(Math.random() * 40) + 50}%`;
357
+ });
358
+ return /* @__PURE__ */ jsxs("div", {
359
+ "data-slot": "sidebar-menu-skeleton",
360
+ "data-sidebar": "menu-skeleton",
361
+ className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
362
+ ...props,
363
+ children: [showIcon && /* @__PURE__ */ jsx(Skeleton, {
364
+ className: "size-4 rounded-md",
365
+ "data-sidebar": "menu-skeleton-icon"
366
+ }), /* @__PURE__ */ jsx(Skeleton, {
367
+ className: "h-4 max-w-(--skeleton-width) flex-1",
368
+ "data-sidebar": "menu-skeleton-text",
369
+ style: { "--skeleton-width": width }
370
+ })]
371
+ });
591
372
  }
592
373
  function SidebarMenuSub({ className, ...props }) {
593
- return /* @__PURE__ */ jsx(
594
- "ul",
595
- {
596
- "data-slot": "sidebar-menu-sub",
597
- "data-sidebar": "menu-sub",
598
- className: cn(
599
- "mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-line-subtle px-2.5 py-0.5 group-data-[collapsible=icon]:hidden",
600
- className
601
- ),
602
- ...props
603
- }
604
- );
374
+ return /* @__PURE__ */ jsx("ul", {
375
+ "data-slot": "sidebar-menu-sub",
376
+ "data-sidebar": "menu-sub",
377
+ className: cn("mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-line-subtle px-2.5 py-0.5 group-data-[collapsible=icon]:hidden", className),
378
+ ...props
379
+ });
605
380
  }
606
- function SidebarMenuSubItem({
607
- className,
608
- ...props
609
- }) {
610
- return /* @__PURE__ */ jsx(
611
- "li",
612
- {
613
- "data-slot": "sidebar-menu-sub-item",
614
- "data-sidebar": "menu-sub-item",
615
- className: cn("group/menu-sub-item relative", className),
616
- ...props
617
- }
618
- );
381
+ function SidebarMenuSubItem({ className, ...props }) {
382
+ return /* @__PURE__ */ jsx("li", {
383
+ "data-slot": "sidebar-menu-sub-item",
384
+ "data-sidebar": "menu-sub-item",
385
+ className: cn("group/menu-sub-item relative", className),
386
+ ...props
387
+ });
619
388
  }
620
- function SidebarMenuSubButton({
621
- render,
622
- size = "md",
623
- isActive = false,
624
- className,
625
- ...props
626
- }) {
627
- return useRender({
628
- defaultTagName: "a",
629
- props: mergeProps(
630
- {
631
- className: cn(
632
- "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-fg-secondary outline-hidden group-data-[collapsible=icon]:hidden hover:bg-surface-raised hover:text-fg-primary focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] active:bg-surface-raised active:text-fg-primary disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs data-active:bg-surface-brand-subtle data-active:text-fg-brand [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-fg-caption-placeholder",
633
- className
634
- )
635
- },
636
- props
637
- ),
638
- render,
639
- state: {
640
- slot: "sidebar-menu-sub-button",
641
- sidebar: "menu-sub-button",
642
- size,
643
- active: isActive
644
- }
645
- });
389
+ function SidebarMenuSubButton({ render, size = "md", isActive = false, className, ...props }) {
390
+ return useRender({
391
+ defaultTagName: "a",
392
+ props: mergeProps({ className: cn("flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-fg-secondary outline-hidden group-data-[collapsible=icon]:hidden hover:bg-surface-raised hover:text-fg-primary focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] active:bg-surface-raised active:text-fg-primary disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs data-active:bg-surface-brand-subtle data-active:text-fg-brand [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-fg-caption-placeholder", className) }, props),
393
+ render,
394
+ state: {
395
+ slot: "sidebar-menu-sub-button",
396
+ sidebar: "menu-sub-button",
397
+ size,
398
+ active: isActive
399
+ }
400
+ });
646
401
  }
647
- export {
648
- Sidebar,
649
- SidebarContent,
650
- SidebarFooter,
651
- SidebarGroup,
652
- SidebarGroupAction,
653
- SidebarGroupContent,
654
- SidebarGroupLabel,
655
- SidebarHeader,
656
- SidebarInput,
657
- SidebarInset,
658
- SidebarMenu,
659
- SidebarMenuAction,
660
- SidebarMenuBadge,
661
- SidebarMenuButton,
662
- SidebarMenuItem,
663
- SidebarMenuSkeleton,
664
- SidebarMenuSub,
665
- SidebarMenuSubButton,
666
- SidebarMenuSubItem,
667
- SidebarProvider,
668
- SidebarRail,
669
- SidebarSeparator,
670
- SidebarTrigger,
671
- useSidebar
672
- };
673
- //# sourceMappingURL=sidebar.js.map
402
+ //#endregion
403
+ export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar };