@codefast/ui 0.3.13-canary.3 → 0.3.13-canary.4

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 (367) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/components/accordion.d.mts +37 -0
  3. package/dist/components/accordion.mjs +53 -0
  4. package/dist/components/alert-dialog.d.mts +74 -0
  5. package/dist/components/alert-dialog.mjs +92 -0
  6. package/dist/components/alert.d.mts +30 -0
  7. package/dist/components/alert.mjs +49 -0
  8. package/dist/components/aspect-ratio.d.mts +10 -0
  9. package/dist/components/aspect-ratio.mjs +12 -0
  10. package/dist/components/avatar.d.mts +21 -0
  11. package/dist/components/avatar.mjs +28 -0
  12. package/dist/components/badge.d.mts +24 -0
  13. package/dist/components/badge.mjs +56 -0
  14. package/dist/components/breadcrumb.d.mts +44 -0
  15. package/dist/components/breadcrumb.mjs +67 -0
  16. package/dist/components/button-group.d.mts +34 -0
  17. package/dist/components/button-group.mjs +53 -0
  18. package/dist/components/button.d.mts +38 -0
  19. package/dist/components/button.mjs +99 -0
  20. package/dist/components/calendar.d.mts +27 -0
  21. package/dist/components/calendar.mjs +114 -0
  22. package/dist/components/card.d.mts +41 -0
  23. package/dist/components/card.mjs +55 -0
  24. package/dist/components/carousel.d.mts +68 -0
  25. package/dist/components/carousel.mjs +135 -0
  26. package/dist/components/chart.d.mts +93 -0
  27. package/dist/components/chart.mjs +189 -0
  28. package/dist/components/checkbox-cards.d.mts +17 -0
  29. package/dist/components/checkbox-cards.mjs +30 -0
  30. package/dist/components/checkbox-group.d.mts +16 -0
  31. package/dist/components/checkbox-group.mjs +27 -0
  32. package/dist/components/checkbox.d.mts +11 -0
  33. package/dist/components/checkbox.mjs +20 -0
  34. package/dist/components/collapsible.d.mts +18 -0
  35. package/dist/components/collapsible.mjs +24 -0
  36. package/dist/components/command.d.mts +57 -0
  37. package/dist/components/command.mjs +92 -0
  38. package/dist/components/context-menu.d.mts +91 -0
  39. package/dist/components/context-menu.mjs +122 -0
  40. package/dist/components/dialog.d.mts +65 -0
  41. package/dist/components/dialog.mjs +93 -0
  42. package/dist/components/drawer.d.mts +65 -0
  43. package/dist/components/drawer.mjs +78 -0
  44. package/dist/components/dropdown-menu.d.mts +92 -0
  45. package/dist/components/dropdown-menu.mjs +129 -0
  46. package/dist/components/empty.d.mts +44 -0
  47. package/dist/components/empty.mjs +64 -0
  48. package/dist/components/field.d.mts +79 -0
  49. package/dist/components/field.mjs +132 -0
  50. package/dist/components/form.d.mts +48 -0
  51. package/dist/components/form.mjs +92 -0
  52. package/dist/components/hover-card.d.mts +26 -0
  53. package/dist/components/hover-card.mjs +35 -0
  54. package/dist/components/input-group.d.mts +61 -0
  55. package/dist/components/input-group.mjs +142 -0
  56. package/dist/components/input-number.d.mts +28 -0
  57. package/dist/components/input-number.mjs +61 -0
  58. package/dist/components/input-otp.d.mts +29 -0
  59. package/dist/components/input-otp.mjs +48 -0
  60. package/dist/components/input-password.d.mts +13 -0
  61. package/dist/components/input-password.mjs +38 -0
  62. package/dist/components/input-search.d.mts +20 -0
  63. package/dist/components/input-search.mjs +50 -0
  64. package/dist/components/input.d.mts +11 -0
  65. package/dist/components/input.mjs +14 -0
  66. package/dist/components/item.d.mts +82 -0
  67. package/dist/components/item.mjs +137 -0
  68. package/dist/components/kbd.d.mts +15 -0
  69. package/dist/components/kbd.mjs +19 -0
  70. package/dist/components/label.d.mts +11 -0
  71. package/dist/components/label.mjs +14 -0
  72. package/dist/components/menubar.d.mts +100 -0
  73. package/dist/components/menubar.mjs +133 -0
  74. package/dist/components/native-select.d.mts +19 -0
  75. package/dist/components/native-select.mjs +34 -0
  76. package/dist/components/navigation-menu.d.mts +44 -0
  77. package/dist/components/navigation-menu.mjs +79 -0
  78. package/dist/components/pagination.d.mts +46 -0
  79. package/dist/components/pagination.mjs +71 -0
  80. package/dist/components/popover.d.mts +30 -0
  81. package/dist/components/popover.mjs +41 -0
  82. package/dist/components/progress-circle.d.mts +124 -0
  83. package/dist/components/progress-circle.mjs +120 -0
  84. package/dist/components/progress.d.mts +12 -0
  85. package/dist/components/progress.mjs +19 -0
  86. package/dist/components/{radio-cards.d.ts → radio-cards.d.mts} +10 -5
  87. package/dist/components/radio-cards.mjs +29 -0
  88. package/dist/components/radio-group.d.mts +16 -0
  89. package/dist/components/radio-group.mjs +25 -0
  90. package/dist/components/radio.d.mts +14 -0
  91. package/dist/components/radio.mjs +16 -0
  92. package/dist/components/resizable.d.mts +23 -0
  93. package/dist/components/resizable.mjs +32 -0
  94. package/dist/components/scroll-area.d.mts +40 -0
  95. package/dist/components/scroll-area.mjs +101 -0
  96. package/dist/components/select.d.mts +62 -0
  97. package/dist/components/select.mjs +101 -0
  98. package/dist/components/separator.d.mts +32 -0
  99. package/dist/components/separator.mjs +45 -0
  100. package/dist/components/sheet.d.mts +75 -0
  101. package/dist/components/sheet.mjs +134 -0
  102. package/dist/components/sidebar.d.mts +195 -0
  103. package/dist/components/sidebar.mjs +375 -0
  104. package/dist/components/skeleton.d.mts +10 -0
  105. package/dist/components/skeleton.mjs +12 -0
  106. package/dist/components/slider.d.mts +15 -0
  107. package/dist/components/slider.mjs +40 -0
  108. package/dist/components/sonner.d.mts +10 -0
  109. package/dist/components/sonner.mjs +21 -0
  110. package/dist/components/spinner.d.mts +14 -0
  111. package/dist/components/spinner.mjs +40 -0
  112. package/dist/components/switch.d.mts +11 -0
  113. package/dist/components/switch.mjs +18 -0
  114. package/dist/components/table.d.mts +45 -0
  115. package/dist/components/table.mjs +65 -0
  116. package/dist/components/tabs.d.mts +26 -0
  117. package/dist/components/tabs.mjs +35 -0
  118. package/dist/components/textarea.d.mts +10 -0
  119. package/dist/components/textarea.mjs +12 -0
  120. package/dist/components/toggle-group.d.mts +30 -0
  121. package/dist/components/toggle-group.mjs +53 -0
  122. package/dist/components/toggle.d.mts +28 -0
  123. package/dist/components/toggle.mjs +53 -0
  124. package/dist/components/tooltip.d.mts +30 -0
  125. package/dist/components/tooltip.mjs +42 -0
  126. package/dist/hooks/{use-animated-value.d.ts → use-animated-value.d.mts} +4 -2
  127. package/dist/hooks/use-animated-value.mjs +62 -0
  128. package/dist/hooks/{use-copy-to-clipboard.d.ts → use-copy-to-clipboard.d.mts} +11 -6
  129. package/dist/hooks/use-copy-to-clipboard.mjs +43 -0
  130. package/dist/hooks/{use-is-mobile.d.ts → use-is-mobile.d.mts} +4 -2
  131. package/dist/hooks/use-is-mobile.mjs +26 -0
  132. package/dist/hooks/{use-media-query.d.ts → use-media-query.d.mts} +4 -2
  133. package/dist/hooks/use-media-query.mjs +50 -0
  134. package/dist/hooks/{use-mutation-observer.d.ts → use-mutation-observer.d.mts} +6 -3
  135. package/dist/hooks/use-mutation-observer.mjs +41 -0
  136. package/dist/hooks/use-pagination.d.mts +44 -0
  137. package/dist/hooks/use-pagination.mjs +107 -0
  138. package/dist/index.d.mts +69 -0
  139. package/dist/index.mjs +69 -0
  140. package/dist/lib/utils.d.mts +13 -0
  141. package/dist/lib/utils.mjs +10 -0
  142. package/dist/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/clsx.d.mts +6 -0
  143. package/dist/primitives/checkbox-group.d.mts +144 -0
  144. package/dist/primitives/checkbox-group.mjs +126 -0
  145. package/dist/primitives/input-number.d.mts +73 -0
  146. package/dist/primitives/input-number.mjs +514 -0
  147. package/dist/primitives/input.d.mts +72 -0
  148. package/dist/primitives/input.mjs +75 -0
  149. package/dist/primitives/progress-circle.d.mts +146 -0
  150. package/dist/primitives/progress-circle.mjs +178 -0
  151. package/package.json +164 -170
  152. package/dist/components/accordion.d.ts +0 -19
  153. package/dist/components/accordion.d.ts.map +0 -1
  154. package/dist/components/accordion.js +0 -26
  155. package/dist/components/alert-dialog.d.ts +0 -39
  156. package/dist/components/alert-dialog.d.ts.map +0 -1
  157. package/dist/components/alert-dialog.js +0 -39
  158. package/dist/components/alert.d.ts +0 -19
  159. package/dist/components/alert.d.ts.map +0 -1
  160. package/dist/components/alert.js +0 -41
  161. package/dist/components/aspect-ratio.d.ts +0 -7
  162. package/dist/components/aspect-ratio.d.ts.map +0 -1
  163. package/dist/components/aspect-ratio.js +0 -10
  164. package/dist/components/avatar.d.ts +0 -11
  165. package/dist/components/avatar.d.ts.map +0 -1
  166. package/dist/components/avatar.js +0 -17
  167. package/dist/components/badge.d.ts +0 -18
  168. package/dist/components/badge.d.ts.map +0 -1
  169. package/dist/components/badge.js +0 -59
  170. package/dist/components/breadcrumb.d.ts +0 -22
  171. package/dist/components/breadcrumb.d.ts.map +0 -1
  172. package/dist/components/breadcrumb.js +0 -31
  173. package/dist/components/button-group.d.ts +0 -20
  174. package/dist/components/button-group.d.ts.map +0 -1
  175. package/dist/components/button-group.js +0 -48
  176. package/dist/components/button.d.ts +0 -29
  177. package/dist/components/button.d.ts.map +0 -1
  178. package/dist/components/button.js +0 -92
  179. package/dist/components/calendar.d.ts +0 -13
  180. package/dist/components/calendar.d.ts.map +0 -1
  181. package/dist/components/calendar.js +0 -104
  182. package/dist/components/card.d.ts +0 -18
  183. package/dist/components/card.d.ts.map +0 -1
  184. package/dist/components/card.js +0 -27
  185. package/dist/components/carousel.d.ts +0 -38
  186. package/dist/components/carousel.d.ts.map +0 -1
  187. package/dist/components/carousel.js +0 -103
  188. package/dist/components/chart.d.ts +0 -58
  189. package/dist/components/chart.d.ts.map +0 -1
  190. package/dist/components/chart.js +0 -198
  191. package/dist/components/checkbox-cards.d.ts +0 -11
  192. package/dist/components/checkbox-cards.d.ts.map +0 -1
  193. package/dist/components/checkbox-cards.js +0 -16
  194. package/dist/components/checkbox-group.d.ts +0 -9
  195. package/dist/components/checkbox-group.d.ts.map +0 -1
  196. package/dist/components/checkbox-group.js +0 -15
  197. package/dist/components/checkbox.d.ts +0 -7
  198. package/dist/components/checkbox.d.ts.map +0 -1
  199. package/dist/components/checkbox.js +0 -12
  200. package/dist/components/collapsible.d.ts +0 -11
  201. package/dist/components/collapsible.d.ts.map +0 -1
  202. package/dist/components/collapsible.js +0 -16
  203. package/dist/components/command.d.ts +0 -26
  204. package/dist/components/command.d.ts.map +0 -1
  205. package/dist/components/command.js +0 -41
  206. package/dist/components/context-menu.d.ts +0 -42
  207. package/dist/components/context-menu.d.ts.map +0 -1
  208. package/dist/components/context-menu.js +0 -54
  209. package/dist/components/dialog.d.ts +0 -35
  210. package/dist/components/dialog.d.ts.map +0 -1
  211. package/dist/components/dialog.js +0 -41
  212. package/dist/components/drawer.d.ts +0 -34
  213. package/dist/components/drawer.d.ts.map +0 -1
  214. package/dist/components/drawer.js +0 -36
  215. package/dist/components/dropdown-menu.d.ts +0 -42
  216. package/dist/components/dropdown-menu.d.ts.map +0 -1
  217. package/dist/components/dropdown-menu.js +0 -54
  218. package/dist/components/empty.d.ts +0 -23
  219. package/dist/components/empty.d.ts.map +0 -1
  220. package/dist/components/empty.js +0 -47
  221. package/dist/components/field.d.ts +0 -42
  222. package/dist/components/field.d.ts.map +0 -1
  223. package/dist/components/field.js +0 -85
  224. package/dist/components/form.d.ts +0 -27
  225. package/dist/components/form.d.ts.map +0 -1
  226. package/dist/components/form.js +0 -76
  227. package/dist/components/hover-card.d.ts +0 -13
  228. package/dist/components/hover-card.d.ts.map +0 -1
  229. package/dist/components/hover-card.js +0 -20
  230. package/dist/components/input-group.d.ts +0 -37
  231. package/dist/components/input-group.d.ts.map +0 -1
  232. package/dist/components/input-group.js +0 -127
  233. package/dist/components/input-number.d.ts +0 -8
  234. package/dist/components/input-number.d.ts.map +0 -1
  235. package/dist/components/input-number.js +0 -20
  236. package/dist/components/input-otp.d.ts +0 -16
  237. package/dist/components/input-otp.d.ts.map +0 -1
  238. package/dist/components/input-otp.js +0 -25
  239. package/dist/components/input-password.d.ts +0 -7
  240. package/dist/components/input-password.d.ts.map +0 -1
  241. package/dist/components/input-password.js +0 -17
  242. package/dist/components/input-search.d.ts +0 -11
  243. package/dist/components/input-search.d.ts.map +0 -1
  244. package/dist/components/input-search.js +0 -22
  245. package/dist/components/input.d.ts +0 -6
  246. package/dist/components/input.d.ts.map +0 -1
  247. package/dist/components/input.js +0 -10
  248. package/dist/components/item.d.ts +0 -46
  249. package/dist/components/item.d.ts.map +0 -1
  250. package/dist/components/item.js +0 -94
  251. package/dist/components/kbd.d.ts +0 -8
  252. package/dist/components/kbd.d.ts.map +0 -1
  253. package/dist/components/kbd.js +0 -12
  254. package/dist/components/label.d.ts +0 -7
  255. package/dist/components/label.d.ts.map +0 -1
  256. package/dist/components/label.js +0 -11
  257. package/dist/components/menubar.d.ts +0 -44
  258. package/dist/components/menubar.d.ts.map +0 -1
  259. package/dist/components/menubar.js +0 -57
  260. package/dist/components/native-select.d.ts +0 -10
  261. package/dist/components/native-select.d.ts.map +0 -1
  262. package/dist/components/native-select.js +0 -16
  263. package/dist/components/navigation-menu.d.ts +0 -21
  264. package/dist/components/navigation-menu.d.ts.map +0 -1
  265. package/dist/components/navigation-menu.js +0 -43
  266. package/dist/components/pagination.d.ts +0 -26
  267. package/dist/components/pagination.d.ts.map +0 -1
  268. package/dist/components/pagination.js +0 -29
  269. package/dist/components/popover.d.ts +0 -15
  270. package/dist/components/popover.d.ts.map +0 -1
  271. package/dist/components/popover.js +0 -23
  272. package/dist/components/progress-circle.d.ts +0 -107
  273. package/dist/components/progress-circle.d.ts.map +0 -1
  274. package/dist/components/progress-circle.js +0 -83
  275. package/dist/components/progress.d.ts +0 -7
  276. package/dist/components/progress.d.ts.map +0 -1
  277. package/dist/components/progress.js +0 -13
  278. package/dist/components/radio-cards.d.ts.map +0 -1
  279. package/dist/components/radio-cards.js +0 -15
  280. package/dist/components/radio-group.d.ts +0 -9
  281. package/dist/components/radio-group.d.ts.map +0 -1
  282. package/dist/components/radio-group.js +0 -14
  283. package/dist/components/radio.d.ts +0 -8
  284. package/dist/components/radio.d.ts.map +0 -1
  285. package/dist/components/radio.js +0 -11
  286. package/dist/components/resizable.d.ts +0 -13
  287. package/dist/components/resizable.d.ts.map +0 -1
  288. package/dist/components/resizable.js +0 -18
  289. package/dist/components/scroll-area.d.ts +0 -28
  290. package/dist/components/scroll-area.d.ts.map +0 -1
  291. package/dist/components/scroll-area.js +0 -77
  292. package/dist/components/select.d.ts +0 -29
  293. package/dist/components/select.d.ts.map +0 -1
  294. package/dist/components/select.js +0 -49
  295. package/dist/components/separator.d.ts +0 -23
  296. package/dist/components/separator.d.ts.map +0 -1
  297. package/dist/components/separator.js +0 -36
  298. package/dist/components/sheet.d.ts +0 -43
  299. package/dist/components/sheet.d.ts.map +0 -1
  300. package/dist/components/sheet.js +0 -90
  301. package/dist/components/sidebar.d.ts +0 -102
  302. package/dist/components/sidebar.d.ts.map +0 -1
  303. package/dist/components/sidebar.js +0 -241
  304. package/dist/components/skeleton.d.ts +0 -6
  305. package/dist/components/skeleton.d.ts.map +0 -1
  306. package/dist/components/skeleton.js +0 -9
  307. package/dist/components/slider.d.ts +0 -7
  308. package/dist/components/slider.d.ts.map +0 -1
  309. package/dist/components/slider.js +0 -18
  310. package/dist/components/sonner.d.ts +0 -8
  311. package/dist/components/sonner.d.ts.map +0 -1
  312. package/dist/components/sonner.js +0 -18
  313. package/dist/components/spinner.d.ts +0 -8
  314. package/dist/components/spinner.d.ts.map +0 -1
  315. package/dist/components/spinner.js +0 -27
  316. package/dist/components/switch.d.ts +0 -7
  317. package/dist/components/switch.d.ts.map +0 -1
  318. package/dist/components/switch.js +0 -11
  319. package/dist/components/table.d.ts +0 -20
  320. package/dist/components/table.d.ts.map +0 -1
  321. package/dist/components/table.js +0 -30
  322. package/dist/components/tabs.d.ts +0 -13
  323. package/dist/components/tabs.d.ts.map +0 -1
  324. package/dist/components/tabs.js +0 -20
  325. package/dist/components/textarea.d.ts +0 -6
  326. package/dist/components/textarea.d.ts.map +0 -1
  327. package/dist/components/textarea.js +0 -9
  328. package/dist/components/toggle-group.d.ts +0 -16
  329. package/dist/components/toggle-group.d.ts.map +0 -1
  330. package/dist/components/toggle-group.js +0 -35
  331. package/dist/components/toggle.d.ts +0 -21
  332. package/dist/components/toggle.d.ts.map +0 -1
  333. package/dist/components/toggle.js +0 -49
  334. package/dist/components/tooltip.d.ts +0 -15
  335. package/dist/components/tooltip.d.ts.map +0 -1
  336. package/dist/components/tooltip.js +0 -23
  337. package/dist/hooks/use-animated-value.d.ts.map +0 -1
  338. package/dist/hooks/use-animated-value.js +0 -71
  339. package/dist/hooks/use-copy-to-clipboard.d.ts.map +0 -1
  340. package/dist/hooks/use-copy-to-clipboard.js +0 -46
  341. package/dist/hooks/use-is-mobile.d.ts.map +0 -1
  342. package/dist/hooks/use-is-mobile.js +0 -23
  343. package/dist/hooks/use-media-query.d.ts.map +0 -1
  344. package/dist/hooks/use-media-query.js +0 -53
  345. package/dist/hooks/use-mutation-observer.d.ts.map +0 -1
  346. package/dist/hooks/use-mutation-observer.js +0 -40
  347. package/dist/hooks/use-pagination.d.ts +0 -37
  348. package/dist/hooks/use-pagination.d.ts.map +0 -1
  349. package/dist/hooks/use-pagination.js +0 -107
  350. package/dist/index.d.ts +0 -131
  351. package/dist/index.d.ts.map +0 -1
  352. package/dist/index.js +0 -68
  353. package/dist/lib/utils.d.ts +0 -10
  354. package/dist/lib/utils.d.ts.map +0 -1
  355. package/dist/lib/utils.js +0 -10
  356. package/dist/primitives/checkbox-group.d.ts +0 -123
  357. package/dist/primitives/checkbox-group.d.ts.map +0 -1
  358. package/dist/primitives/checkbox-group.js +0 -112
  359. package/dist/primitives/input-number.d.ts +0 -63
  360. package/dist/primitives/input-number.d.ts.map +0 -1
  361. package/dist/primitives/input-number.js +0 -458
  362. package/dist/primitives/input.d.ts +0 -67
  363. package/dist/primitives/input.d.ts.map +0 -1
  364. package/dist/primitives/input.js +0 -76
  365. package/dist/primitives/progress-circle.d.ts +0 -116
  366. package/dist/primitives/progress-circle.d.ts.map +0 -1
  367. package/dist/primitives/progress-circle.js +0 -163
@@ -0,0 +1,195 @@
1
+ import { VariantProps } from "../lib/utils.mjs";
2
+ import { Button } from "./button.mjs";
3
+ import { Separator } from "./separator.mjs";
4
+ import { Input } from "./input.mjs";
5
+ import { TooltipContent } from "./tooltip.mjs";
6
+ import * as _$_codefast_tailwind_variants0 from "@codefast/tailwind-variants";
7
+ import { ComponentProps, Dispatch, JSX, SetStateAction } from "react";
8
+
9
+ //#region src/components/sidebar.d.ts
10
+ declare const sidebarMenuButtonVariants: _$_codefast_tailwind_variants0.VariantFunctionType<{
11
+ size: {
12
+ sm: string[];
13
+ md: string[];
14
+ lg: string[];
15
+ };
16
+ variant: {
17
+ default: string;
18
+ outline: string[];
19
+ };
20
+ }, Record<string, never>>;
21
+ interface SidebarContextValue {
22
+ isMobile: boolean;
23
+ open: boolean;
24
+ openMobile: boolean;
25
+ setOpen: (open: boolean) => void;
26
+ setOpenMobile: Dispatch<SetStateAction<boolean>>;
27
+ state: "collapsed" | "expanded";
28
+ toggleSidebar: () => void;
29
+ }
30
+ declare const useSidebar: (consumerName: string) => SidebarContextValue;
31
+ interface SidebarProviderProps extends ComponentProps<"div"> {
32
+ defaultOpen?: boolean;
33
+ onOpenChange?: (open: boolean) => void;
34
+ open?: boolean;
35
+ }
36
+ declare function SidebarProvider({
37
+ children,
38
+ className,
39
+ defaultOpen,
40
+ onOpenChange: setOpenProperty,
41
+ open: openProperty,
42
+ style,
43
+ ...props
44
+ }: SidebarProviderProps): JSX.Element;
45
+ interface SidebarProps extends ComponentProps<"div"> {
46
+ collapsible?: "icon" | "none" | "offcanvas";
47
+ side?: "left" | "right";
48
+ variant?: "floating" | "inset" | "sidebar";
49
+ }
50
+ declare function Sidebar({
51
+ children,
52
+ className,
53
+ collapsible,
54
+ side,
55
+ variant,
56
+ ...props
57
+ }: SidebarProps): JSX.Element;
58
+ type SidebarTriggerProps = ComponentProps<typeof Button>;
59
+ declare function SidebarTrigger({
60
+ className,
61
+ onClick,
62
+ ...props
63
+ }: SidebarTriggerProps): JSX.Element;
64
+ type SidebarRailProps = ComponentProps<"button">;
65
+ declare function SidebarRail({
66
+ className,
67
+ ...props
68
+ }: SidebarRailProps): JSX.Element;
69
+ type SidebarInsetProps = ComponentProps<"main">;
70
+ declare function SidebarInset({
71
+ className,
72
+ ...props
73
+ }: SidebarInsetProps): JSX.Element;
74
+ type SidebarInputProps = ComponentProps<typeof Input>;
75
+ declare function SidebarInput({
76
+ className,
77
+ ...props
78
+ }: SidebarInputProps): JSX.Element;
79
+ type SidebarHeaderProps = ComponentProps<"div">;
80
+ declare function SidebarHeader({
81
+ className,
82
+ ...props
83
+ }: SidebarHeaderProps): JSX.Element;
84
+ type SidebarFooterProps = ComponentProps<"div">;
85
+ declare function SidebarFooter({
86
+ className,
87
+ ...props
88
+ }: SidebarFooterProps): JSX.Element;
89
+ type SidebarSeparatorProps = ComponentProps<typeof Separator>;
90
+ declare function SidebarSeparator({
91
+ className,
92
+ ...props
93
+ }: SidebarSeparatorProps): JSX.Element;
94
+ type SidebarContentProps = ComponentProps<"div">;
95
+ declare function SidebarContent({
96
+ className,
97
+ ...props
98
+ }: SidebarContentProps): JSX.Element;
99
+ type SidebarGroupProps = ComponentProps<"div">;
100
+ declare function SidebarGroup({
101
+ className,
102
+ ...props
103
+ }: SidebarGroupProps): JSX.Element;
104
+ interface SidebarGroupLabelProps extends ComponentProps<"div"> {
105
+ asChild?: boolean;
106
+ }
107
+ declare function SidebarGroupLabel({
108
+ asChild,
109
+ className,
110
+ ...props
111
+ }: SidebarGroupLabelProps): JSX.Element;
112
+ interface SidebarGroupActionProps extends ComponentProps<"button"> {
113
+ asChild?: boolean;
114
+ }
115
+ declare function SidebarGroupAction({
116
+ asChild,
117
+ className,
118
+ ...props
119
+ }: SidebarGroupActionProps): JSX.Element;
120
+ type SidebarGroupContentProps = ComponentProps<"div">;
121
+ declare function SidebarGroupContent({
122
+ className,
123
+ ...props
124
+ }: SidebarGroupContentProps): JSX.Element;
125
+ type SidebarMenuProps = ComponentProps<"ul">;
126
+ declare function SidebarMenu({
127
+ className,
128
+ ...props
129
+ }: SidebarMenuProps): JSX.Element;
130
+ type SidebarMenuItemProps = ComponentProps<"li">;
131
+ declare function SidebarMenuItem({
132
+ className,
133
+ ...props
134
+ }: SidebarMenuItemProps): JSX.Element;
135
+ interface SidebarMenuButtonProps extends ComponentProps<"button">, VariantProps<typeof sidebarMenuButtonVariants> {
136
+ asChild?: boolean;
137
+ isActive?: boolean;
138
+ tooltip?: ComponentProps<typeof TooltipContent> | string;
139
+ }
140
+ declare function SidebarMenuButton({
141
+ asChild,
142
+ className,
143
+ isActive,
144
+ size,
145
+ tooltip,
146
+ variant,
147
+ ...props
148
+ }: SidebarMenuButtonProps): JSX.Element;
149
+ interface SidebarMenuActionProps extends ComponentProps<"button"> {
150
+ asChild?: boolean;
151
+ showOnHover?: boolean;
152
+ }
153
+ declare function SidebarMenuAction({
154
+ asChild,
155
+ className,
156
+ showOnHover,
157
+ ...props
158
+ }: SidebarMenuActionProps): JSX.Element;
159
+ type SidebarMenuBadgeProps = ComponentProps<"div">;
160
+ declare function SidebarMenuBadge({
161
+ className,
162
+ ...props
163
+ }: SidebarMenuBadgeProps): JSX.Element;
164
+ interface SidebarMenuSkeletonProps extends ComponentProps<"div"> {
165
+ showIcon?: boolean;
166
+ }
167
+ declare function SidebarMenuSkeleton({
168
+ className,
169
+ showIcon,
170
+ ...props
171
+ }: SidebarMenuSkeletonProps): JSX.Element;
172
+ type SidebarMenuSubProps = ComponentProps<"ul">;
173
+ declare function SidebarMenuSub({
174
+ className,
175
+ ...props
176
+ }: SidebarMenuSubProps): JSX.Element;
177
+ type SidebarMenuSubItemProps = ComponentProps<"li">;
178
+ declare function SidebarMenuSubItem({
179
+ className,
180
+ ...props
181
+ }: SidebarMenuSubItemProps): JSX.Element;
182
+ interface SidebarMenuSubButtonProps extends ComponentProps<"a"> {
183
+ asChild?: boolean;
184
+ isActive?: boolean;
185
+ size?: "md" | "sm";
186
+ }
187
+ declare function SidebarMenuSubButton({
188
+ asChild,
189
+ className,
190
+ isActive,
191
+ size,
192
+ ...props
193
+ }: SidebarMenuSubButtonProps): JSX.Element;
194
+ //#endregion
195
+ export { Sidebar, SidebarContent, type SidebarContentProps, SidebarFooter, type SidebarFooterProps, SidebarGroup, SidebarGroupAction, type SidebarGroupActionProps, SidebarGroupContent, type SidebarGroupContentProps, SidebarGroupLabel, type SidebarGroupLabelProps, type SidebarGroupProps, SidebarHeader, type SidebarHeaderProps, SidebarInput, type SidebarInputProps, SidebarInset, type SidebarInsetProps, SidebarMenu, SidebarMenuAction, type SidebarMenuActionProps, SidebarMenuBadge, type SidebarMenuBadgeProps, SidebarMenuButton, type SidebarMenuButtonProps, SidebarMenuItem, type SidebarMenuItemProps, type SidebarMenuProps, SidebarMenuSkeleton, type SidebarMenuSkeletonProps, SidebarMenuSub, SidebarMenuSubButton, type SidebarMenuSubButtonProps, SidebarMenuSubItem, type SidebarMenuSubItemProps, type SidebarMenuSubProps, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarRail, type SidebarRailProps, SidebarSeparator, type SidebarSeparatorProps, SidebarTrigger, type SidebarTriggerProps, sidebarMenuButtonVariants, useSidebar };
@@ -0,0 +1,375 @@
1
+ "use client";
2
+ import { cn, tv } from "../lib/utils.mjs";
3
+ import { Button } from "./button.mjs";
4
+ import { Separator } from "./separator.mjs";
5
+ import { Input } from "./input.mjs";
6
+ import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "./sheet.mjs";
7
+ import { Skeleton } from "./skeleton.mjs";
8
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./tooltip.mjs";
9
+ import { useIsMobile } from "../hooks/use-is-mobile.mjs";
10
+ import { Slot } from "@radix-ui/react-slot";
11
+ import { PanelLeftIcon } from "lucide-react";
12
+ import { jsx, jsxs } from "react/jsx-runtime";
13
+ import { useCallback, useEffect, useState } from "react";
14
+ import { createContext } from "@radix-ui/react-context";
15
+ //#region src/components/sidebar.tsx
16
+ const sidebarMenuButtonVariants = tv({
17
+ base: [
18
+ "peer/menu-button flex w-full items-center gap-2 overflow-hidden p-2",
19
+ "rounded-md ring-sidebar-ring outline-hidden",
20
+ "text-left text-sm",
21
+ "transition-[width,height,padding]",
22
+ "group-has-data-[sidebar=menu-action]/menu-item:pr-8",
23
+ "group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!",
24
+ "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
25
+ "focus-visible:ring-3",
26
+ "active:bg-sidebar-accent active:text-sidebar-accent-foreground",
27
+ "disabled:pointer-events-none disabled:opacity-50",
28
+ "aria-disabled:pointer-events-none aria-disabled:opacity-50",
29
+ "data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground",
30
+ "data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground",
31
+ "[&>span:last-child]:truncate",
32
+ "[&>svg]:size-4 [&>svg]:shrink-0"
33
+ ],
34
+ defaultVariants: {
35
+ size: "md",
36
+ variant: "default"
37
+ },
38
+ variants: {
39
+ size: {
40
+ sm: ["h-7", "text-xs"],
41
+ md: ["h-8", "text-sm"],
42
+ lg: ["h-12 text-sm", "group-data-[collapsible=icon]:p-0!"]
43
+ },
44
+ variant: {
45
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
46
+ outline: ["bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))]", "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"]
47
+ }
48
+ }
49
+ });
50
+ const SIDEBAR_COOKIE_NAME = "sidebar_state";
51
+ const SIDEBAR_COOKIE_MAX_AGE = 3600 * 24 * 7;
52
+ const SIDEBAR_WIDTH = "16rem";
53
+ const SIDEBAR_WIDTH_MOBILE = "18rem";
54
+ const SIDEBAR_WIDTH_ICON = "3.0625rem";
55
+ const SIDEBAR_KEYBOARD_SHORTCUT = "b";
56
+ const [SidebarContextProvider, useSidebar] = createContext("SidebarProvider");
57
+ function SidebarProvider({ children, className, defaultOpen = true, onOpenChange: setOpenProperty, open: openProperty, style, ...props }) {
58
+ const isMobile = useIsMobile();
59
+ const [openMobile, setOpenMobile] = useState(false);
60
+ const [isOpen, setIsOpen] = useState(defaultOpen);
61
+ const open = openProperty ?? isOpen;
62
+ const setOpen = useCallback((value) => {
63
+ const openState = typeof value === "function" ? value(open) : value;
64
+ if (setOpenProperty) setOpenProperty(openState);
65
+ else setIsOpen(openState);
66
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState.toString()}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE.toString()}`;
67
+ }, [setOpenProperty, open]);
68
+ const toggleSidebar = useCallback(() => {
69
+ if (isMobile) setOpenMobile((currentValue) => !currentValue);
70
+ else setOpen((currentValue) => !currentValue);
71
+ }, [isMobile, setOpen]);
72
+ useEffect(() => {
73
+ const handleKeyDown = (event) => {
74
+ if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
75
+ event.preventDefault();
76
+ toggleSidebar();
77
+ }
78
+ };
79
+ window.addEventListener("keydown", handleKeyDown);
80
+ return () => {
81
+ window.removeEventListener("keydown", handleKeyDown);
82
+ };
83
+ }, [toggleSidebar]);
84
+ return /* @__PURE__ */ jsx(SidebarContextProvider, {
85
+ isMobile,
86
+ open,
87
+ openMobile,
88
+ setOpen,
89
+ setOpenMobile,
90
+ state: open ? "expanded" : "collapsed",
91
+ toggleSidebar,
92
+ children: /* @__PURE__ */ jsx(TooltipProvider, {
93
+ delayDuration: 0,
94
+ children: /* @__PURE__ */ jsx("div", {
95
+ className: cn("group/sidebar-wrapper flex min-h-svh w-full", "has-data-[variant=inset]:bg-sidebar", className),
96
+ "data-slot": "sidebar-wrapper",
97
+ style: {
98
+ "--sidebar-width": SIDEBAR_WIDTH,
99
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
100
+ ...style
101
+ },
102
+ ...props,
103
+ children
104
+ })
105
+ })
106
+ });
107
+ }
108
+ const SIDEBAR_NAME = "Sidebar";
109
+ function Sidebar({ children, className, collapsible = "offcanvas", side = "left", variant = "sidebar", ...props }) {
110
+ const { isMobile, openMobile, setOpenMobile, state } = useSidebar(SIDEBAR_NAME);
111
+ if (collapsible === "none") return /* @__PURE__ */ jsx("div", {
112
+ className: cn("flex h-full w-(--sidebar-width) flex-col", "bg-sidebar text-sidebar-foreground", className),
113
+ "data-slot": "sidebar",
114
+ ...props,
115
+ children
116
+ });
117
+ if (isMobile) return /* @__PURE__ */ jsx(Sheet, {
118
+ open: openMobile,
119
+ onOpenChange: setOpenMobile,
120
+ ...props,
121
+ children: /* @__PURE__ */ jsxs(SheetContent, {
122
+ className: cn("w-(--sidebar-width) p-0", "bg-sidebar text-sidebar-foreground", "[&>button]:hidden"),
123
+ "data-mobile": "true",
124
+ "data-sidebar": "sidebar",
125
+ "data-slot": "sidebar",
126
+ side,
127
+ style: { "--sidebar-width": SIDEBAR_WIDTH_MOBILE },
128
+ children: [/* @__PURE__ */ jsxs(SheetHeader, {
129
+ className: "sr-only",
130
+ children: [/* @__PURE__ */ jsx(SheetTitle, { children: "Sidebar" }), /* @__PURE__ */ jsx(SheetDescription, { children: "Displays the mobile sidebar." })]
131
+ }), /* @__PURE__ */ jsx("div", {
132
+ className: "flex h-full w-full flex-col",
133
+ children
134
+ })]
135
+ })
136
+ });
137
+ return /* @__PURE__ */ jsxs("div", {
138
+ className: cn("group peer hidden", "text-sidebar-foreground", "md:block", className),
139
+ "data-collapsible": state === "collapsed" ? collapsible : "",
140
+ "data-side": side,
141
+ "data-slot": "sidebar",
142
+ "data-state": state,
143
+ "data-variant": variant,
144
+ children: [/* @__PURE__ */ jsx("div", {
145
+ className: cn("relative", "w-(--sidebar-width)", "bg-transparent", "transition-[width] duration-200 ease-linear", "group-data-[collapsible=offcanvas]:w-0", "group-data-side-right:rotate-180", variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"),
146
+ "data-slot": "sidebar-gap"
147
+ }), /* @__PURE__ */ jsx("div", {
148
+ className: cn("fixed inset-y-0 z-10 hidden", "h-svh w-(--sidebar-width)", "transition-[left,right,width] duration-200 ease-linear", "md:flex", side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]", variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-side-right:border-l group-data-side-left:border-r", className),
149
+ "data-slot": "sidebar-container",
150
+ ...props,
151
+ children: /* @__PURE__ */ jsx("div", {
152
+ className: cn("flex h-full w-full flex-col", "bg-sidebar", "group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm"),
153
+ "data-sidebar": "sidebar",
154
+ "data-slot": "sidebar-inner",
155
+ children
156
+ })
157
+ })]
158
+ });
159
+ }
160
+ const SIDEBAR_TRIGGER_NAME = "SidebarTrigger";
161
+ function SidebarTrigger({ className, onClick, ...props }) {
162
+ const { toggleSidebar } = useSidebar(SIDEBAR_TRIGGER_NAME);
163
+ return /* @__PURE__ */ jsxs(Button, {
164
+ className: cn("size-7", className),
165
+ "data-sidebar": "trigger",
166
+ "data-slot": "sidebar-trigger",
167
+ size: "icon",
168
+ variant: "ghost",
169
+ onClick: (event) => {
170
+ onClick?.(event);
171
+ toggleSidebar();
172
+ },
173
+ ...props,
174
+ children: [/* @__PURE__ */ jsx(PanelLeftIcon, {}), /* @__PURE__ */ jsx("span", {
175
+ className: "sr-only",
176
+ children: "Toggle Sidebar"
177
+ })]
178
+ });
179
+ }
180
+ const SIDEBAR_RAIL_NAME = "SidebarRail";
181
+ function SidebarRail({ className, ...props }) {
182
+ const { toggleSidebar } = useSidebar(SIDEBAR_RAIL_NAME);
183
+ return /* @__PURE__ */ jsx("button", {
184
+ className: cn("absolute inset-y-0 z-20 hidden", "w-4 -translate-x-1/2 transition-all ease-linear", "in-data-side-right:cursor-e-resize", "in-data-side-left:cursor-w-resize", "group-data-[collapsible=offcanvas]:translate-x-0", "group-data-side-right:left-0", "group-data-side-left:-right-4", "after:absolute after:inset-y-0 after:left-1/2 after:w-0.5", "group-data-[collapsible=offcanvas]:after:left-full", "hover:group-data-[collapsible=offcanvas]:bg-sidebar", "hover:after:bg-sidebar-border", "sm:flex", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", "[[data-side=right][data-state=collapsed]_&]:cursor-w-resize", className),
185
+ "data-sidebar": "rail",
186
+ "data-slot": "sidebar-rail",
187
+ title: "Toggle Sidebar",
188
+ type: "button",
189
+ onClick: toggleSidebar,
190
+ ...props
191
+ });
192
+ }
193
+ function SidebarInset({ className, ...props }) {
194
+ return /* @__PURE__ */ jsx("main", {
195
+ className: cn("relative flex w-full min-w-0 flex-1 flex-col", "bg-background", "md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm", "md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2", className),
196
+ "data-slot": "sidebar-inset",
197
+ ...props
198
+ });
199
+ }
200
+ function SidebarInput({ className, ...props }) {
201
+ return /* @__PURE__ */ jsx(Input, {
202
+ className: cn("h-8 w-full", "bg-background shadow-none", className),
203
+ "data-sidebar": "input",
204
+ "data-slot": "sidebar-input",
205
+ ...props
206
+ });
207
+ }
208
+ function SidebarHeader({ className, ...props }) {
209
+ return /* @__PURE__ */ jsx("div", {
210
+ className: cn("flex flex-col gap-2", "p-2", className),
211
+ "data-sidebar": "header",
212
+ "data-slot": "sidebar-header",
213
+ ...props
214
+ });
215
+ }
216
+ function SidebarFooter({ className, ...props }) {
217
+ return /* @__PURE__ */ jsx("div", {
218
+ className: cn("flex flex-col gap-2", "p-2", className),
219
+ "data-sidebar": "footer",
220
+ "data-slot": "sidebar-footer",
221
+ ...props
222
+ });
223
+ }
224
+ function SidebarSeparator({ className, ...props }) {
225
+ return /* @__PURE__ */ jsx(Separator, {
226
+ className: cn("mx-2 w-auto", "bg-sidebar-border", className),
227
+ "data-sidebar": "separator",
228
+ "data-slot": "sidebar-separator",
229
+ ...props
230
+ });
231
+ }
232
+ function SidebarContent({ className, ...props }) {
233
+ return /* @__PURE__ */ jsx("div", {
234
+ className: cn("flex min-h-0 flex-1 flex-col gap-2 overflow-auto", "group-data-[collapsible=icon]:overflow-hidden", className),
235
+ "data-sidebar": "content",
236
+ "data-slot": "sidebar-content",
237
+ ...props
238
+ });
239
+ }
240
+ function SidebarGroup({ className, ...props }) {
241
+ return /* @__PURE__ */ jsx("div", {
242
+ className: cn("relative flex w-full min-w-0 flex-col", "p-2", className),
243
+ "data-sidebar": "group",
244
+ "data-slot": "sidebar-group",
245
+ ...props
246
+ });
247
+ }
248
+ function SidebarGroupLabel({ asChild = false, className, ...props }) {
249
+ return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
250
+ className: cn("flex h-8 shrink-0 items-center px-2", "rounded-md ring-sidebar-ring outline-hidden", "truncate text-xs font-medium text-sidebar-foreground/70", "transition-[margin,opacity] duration-200 ease-linear", "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0", "focus-visible:ring-3", "[&>svg]:size-4 [&>svg]:shrink-0", className),
251
+ "data-sidebar": "group-label",
252
+ "data-slot": "sidebar-group-label",
253
+ ...props
254
+ });
255
+ }
256
+ function SidebarGroupAction({ asChild = false, className, ...props }) {
257
+ return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
258
+ className: cn("absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center p-0", "rounded-md ring-sidebar-ring outline-hidden", "text-sidebar-foreground", "transition-transform", "group-data-[collapsible=icon]:hidden", "after:absolute after:-inset-2", "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground", "focus-visible:ring-3", "md:after:hidden", "[&>svg]:size-4 [&>svg]:shrink-0", className),
259
+ "data-sidebar": "group-action",
260
+ "data-slot": "sidebar-group-action",
261
+ ...props
262
+ });
263
+ }
264
+ function SidebarGroupContent({ className, ...props }) {
265
+ return /* @__PURE__ */ jsx("div", {
266
+ className: cn("w-full", "text-sm", className),
267
+ "data-sidebar": "group-content",
268
+ "data-slot": "sidebar-group-content",
269
+ ...props
270
+ });
271
+ }
272
+ function SidebarMenu({ className, ...props }) {
273
+ return /* @__PURE__ */ jsx("ul", {
274
+ className: cn("flex w-full min-w-0 flex-col gap-1", className),
275
+ "data-sidebar": "menu",
276
+ "data-slot": "sidebar-menu",
277
+ ...props
278
+ });
279
+ }
280
+ function SidebarMenuItem({ className, ...props }) {
281
+ return /* @__PURE__ */ jsx("li", {
282
+ className: cn("group/menu-item relative", className),
283
+ "data-sidebar": "menu-item",
284
+ "data-slot": "sidebar-menu-item",
285
+ ...props
286
+ });
287
+ }
288
+ const SIDEBAR_MENU_BUTTON_NAME = "SidebarMenuButton";
289
+ function SidebarMenuButton({ asChild = false, className, isActive = false, size = "md", tooltip, variant = "default", ...props }) {
290
+ const Component = asChild ? Slot : "button";
291
+ const { isMobile, state } = useSidebar(SIDEBAR_MENU_BUTTON_NAME);
292
+ const button = /* @__PURE__ */ jsx(Component, {
293
+ className: cn(sidebarMenuButtonVariants({
294
+ size,
295
+ variant
296
+ }), className),
297
+ "data-active": isActive,
298
+ "data-sidebar": "menu-button",
299
+ "data-size": size,
300
+ "data-slot": "sidebar-menu-button",
301
+ ...props
302
+ });
303
+ if (!tooltip) return button;
304
+ if (typeof tooltip === "string") tooltip = { children: tooltip };
305
+ return /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
306
+ asChild: true,
307
+ children: button
308
+ }), /* @__PURE__ */ jsx(TooltipContent, {
309
+ align: "center",
310
+ hidden: state !== "collapsed" || isMobile,
311
+ side: "right",
312
+ ...tooltip
313
+ })] });
314
+ }
315
+ function SidebarMenuAction({ asChild = false, className, showOnHover = false, ...props }) {
316
+ return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
317
+ className: cn("absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center p-0", "rounded-md ring-sidebar-ring outline-hidden", "text-sidebar-foreground", "transition-transform", "group-data-[collapsible=icon]:hidden", "peer-hover/menu-button:text-sidebar-accent-foreground", "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-sidebar-accent hover:text-sidebar-accent-foreground", "focus-visible:ring-3", "md: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-sidebar-accent-foreground md:opacity-0 data-open:opacity-100", className),
318
+ "data-sidebar": "menu-action",
319
+ "data-slot": "sidebar-menu-action",
320
+ ...props
321
+ });
322
+ }
323
+ function SidebarMenuBadge({ className, ...props }) {
324
+ return /* @__PURE__ */ jsx("div", {
325
+ className: cn("absolute right-1 flex h-5 min-w-5 items-center justify-center px-1", "rounded-md", "text-xs font-medium text-sidebar-foreground tabular-nums", "pointer-events-none select-none", "group-data-[collapsible=icon]:hidden", "peer-hover/menu-button:text-sidebar-accent-foreground", "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", "peer-data-active/menu-button:text-sidebar-accent-foreground", className),
326
+ "data-sidebar": "menu-badge",
327
+ "data-slot": "sidebar-menu-badge",
328
+ ...props
329
+ });
330
+ }
331
+ function SidebarMenuSkeleton({ className, showIcon = false, ...props }) {
332
+ const [width] = useState(() => `${String(Math.floor(Math.random() * 40) + 50)}%`);
333
+ return /* @__PURE__ */ jsxs("div", {
334
+ className: cn("flex h-8 items-center gap-2 px-2", "rounded-md", className),
335
+ "data-sidebar": "menu-skeleton",
336
+ "data-slot": "sidebar-menu-skeleton",
337
+ ...props,
338
+ children: [showIcon ? /* @__PURE__ */ jsx(Skeleton, {
339
+ className: cn("size-4", "rounded-md"),
340
+ "data-sidebar": "menu-skeleton-icon"
341
+ }) : null, /* @__PURE__ */ jsx(Skeleton, {
342
+ className: "h-4 max-w-(--skeleton-width) flex-1",
343
+ "data-sidebar": "menu-skeleton-text",
344
+ style: { "--skeleton-width": width }
345
+ })]
346
+ });
347
+ }
348
+ function SidebarMenuSub({ className, ...props }) {
349
+ return /* @__PURE__ */ jsx("ul", {
350
+ className: cn("mx-3.5 flex min-w-0 flex-col gap-1 px-2.5 py-0.5", "border-l border-sidebar-border", "translate-x-px", "group-data-[collapsible=icon]:hidden", className),
351
+ "data-sidebar": "menu-sub",
352
+ "data-slot": "sidebar-menu-sub",
353
+ ...props
354
+ });
355
+ }
356
+ function SidebarMenuSubItem({ className, ...props }) {
357
+ return /* @__PURE__ */ jsx("li", {
358
+ className: cn("group/menu-sub-item relative", className),
359
+ "data-sidebar": "menu-sub-item",
360
+ "data-slot": "sidebar-menu-sub-item",
361
+ ...props
362
+ });
363
+ }
364
+ function SidebarMenuSubButton({ asChild = false, className, isActive = false, size = "md", ...props }) {
365
+ return /* @__PURE__ */ jsx(asChild ? Slot : "a", {
366
+ className: cn("flex h-7 min-w-0 items-center gap-2 overflow-hidden px-2", "rounded-md ring-sidebar-ring outline-hidden", "text-sidebar-foreground", "-translate-x-px", "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground", "focus-visible:ring-3", "active:bg-sidebar-accent active:text-sidebar-accent-foreground", "disabled:pointer-events-none disabled:opacity-50", "aria-disabled:pointer-events-none aria-disabled:opacity-50", "data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground", "group-data-[collapsible=icon]:hidden", "[&>span:last-child]:truncate", "[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground", size === "sm" && "text-xs", size === "md" && "text-sm", className),
367
+ "data-active": isActive,
368
+ "data-sidebar": "menu-sub-button",
369
+ "data-size": size,
370
+ "data-slot": "sidebar-menu-sub-button",
371
+ ...props
372
+ });
373
+ }
374
+ //#endregion
375
+ export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, sidebarMenuButtonVariants, useSidebar };
@@ -0,0 +1,10 @@
1
+ import { ComponentProps, JSX } from "react";
2
+
3
+ //#region src/components/skeleton.d.ts
4
+ type SkeletonProps = ComponentProps<"div">;
5
+ declare function Skeleton({
6
+ className,
7
+ ...props
8
+ }: SkeletonProps): JSX.Element;
9
+ //#endregion
10
+ export { Skeleton, type SkeletonProps };
@@ -0,0 +1,12 @@
1
+ import { cn } from "../lib/utils.mjs";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/components/skeleton.tsx
4
+ function Skeleton({ className, ...props }) {
5
+ return /* @__PURE__ */ jsx("div", {
6
+ className: cn("rounded-lg", "bg-muted", "animate-pulse", className),
7
+ "data-slot": "skeleton",
8
+ ...props
9
+ });
10
+ }
11
+ //#endregion
12
+ export { Skeleton };
@@ -0,0 +1,15 @@
1
+ import { ComponentProps, JSX } from "react";
2
+ import * as SliderPrimitive from "@radix-ui/react-slider";
3
+
4
+ //#region src/components/slider.d.ts
5
+ type SliderProps = ComponentProps<typeof SliderPrimitive.Root>;
6
+ declare function Slider({
7
+ className,
8
+ defaultValue,
9
+ max,
10
+ min,
11
+ value,
12
+ ...props
13
+ }: SliderProps): JSX.Element;
14
+ //#endregion
15
+ export { Slider, type SliderProps };
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ import { cn } from "../lib/utils.mjs";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { useMemo } from "react";
5
+ import * as SliderPrimitive from "@radix-ui/react-slider";
6
+ //#region src/components/slider.tsx
7
+ function Slider({ className, defaultValue, max = 100, min = 0, value, ...props }) {
8
+ const _values = useMemo(() => {
9
+ if (Array.isArray(value)) return value;
10
+ return Array.isArray(defaultValue) ? defaultValue : [min, max];
11
+ }, [
12
+ value,
13
+ defaultValue,
14
+ min,
15
+ max
16
+ ]);
17
+ return /* @__PURE__ */ jsxs(SliderPrimitive.Root, {
18
+ className: cn("relative flex w-full items-center", "touch-none select-none", "data-vertical:h-full data-vertical:min-h-44 data-vertical:w-auto data-vertical:flex-col", "data-disabled:opacity-50", className),
19
+ "data-slot": "slider",
20
+ defaultValue,
21
+ max,
22
+ min,
23
+ value,
24
+ ...props,
25
+ children: [/* @__PURE__ */ jsx(SliderPrimitive.Track, {
26
+ className: cn("relative", "w-full grow overflow-hidden", "rounded-full", "bg-input", "data-horizontal:h-1 data-horizontal:w-full", "data-vertical:h-full data-vertical:w-1"),
27
+ "data-slot": "slider-track",
28
+ children: /* @__PURE__ */ jsx(SliderPrimitive.Range, {
29
+ className: cn("absolute", "bg-primary", "data-horizontal:h-full", "data-vertical:w-full"),
30
+ "data-slot": "slider-range"
31
+ })
32
+ }), Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx(SliderPrimitive.Thumb, {
33
+ "aria-label": "Volume",
34
+ className: cn("flex size-4 items-center justify-center", "rounded-full border-2 border-primary", "bg-primary shadow-sm outline-hidden", "after:size-full after:rounded-full after:bg-background after:transition-[width,height]", "focus-visible:ring-4 focus-visible:ring-primary/20", "active:not-data-disabled:after:size-1", "dark:focus-visible:ring-primary/40"),
35
+ "data-slot": "slider-thumb"
36
+ }, index))]
37
+ });
38
+ }
39
+ //#endregion
40
+ export { Slider };
@@ -0,0 +1,10 @@
1
+ import { JSX } from "react";
2
+ import { ToasterProps as ToasterProps$1, toast, useSonner } from "sonner";
3
+
4
+ //#region src/components/sonner.d.ts
5
+ type ToasterProps = ToasterProps$1;
6
+ declare function Toaster({
7
+ ...props
8
+ }: ToasterProps): JSX.Element;
9
+ //#endregion
10
+ export { Toaster, type ToasterProps, toast, useSonner };