@contractspec/lib.ui-kit-web 1.56.1 → 1.58.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 (545) hide show
  1. package/dist/browser/index.js +13 -0
  2. package/dist/browser/ui/accordion.js +73 -0
  3. package/dist/browser/ui/alert-dialog.js +177 -0
  4. package/dist/browser/ui/alert.js +60 -0
  5. package/dist/browser/ui/aspect-ratio.js +15 -0
  6. package/dist/browser/ui/atoms/FilterSelect/FilterSelect.js +244 -0
  7. package/dist/browser/ui/atoms/FilterSelect/index.js +244 -0
  8. package/dist/browser/ui/atoms/FilterSelect/types.js +0 -0
  9. package/dist/browser/ui/atoms/LoadingSpinner/LoadingSpinner.js +89 -0
  10. package/dist/browser/ui/atoms/LoadingSpinner/index.js +89 -0
  11. package/dist/browser/ui/atoms/Pagination/Pagination.js +387 -0
  12. package/dist/browser/ui/atoms/Pagination/index.js +387 -0
  13. package/dist/browser/ui/atoms/Pagination/types.js +0 -0
  14. package/dist/browser/ui/atoms/SearchInput/SearchInput.js +123 -0
  15. package/dist/browser/ui/atoms/SearchInput/index.js +123 -0
  16. package/dist/browser/ui/atoms/SearchInput/types.js +0 -0
  17. package/dist/browser/ui/avatar.js +54 -0
  18. package/dist/browser/ui/badge.js +43 -0
  19. package/dist/browser/ui/breadcrumb.js +109 -0
  20. package/dist/browser/ui/button.js +56 -0
  21. package/dist/browser/ui/calendar.js +181 -0
  22. package/dist/browser/ui/card.js +87 -0
  23. package/dist/browser/ui/carousel.js +229 -0
  24. package/dist/browser/ui/checkbox.js +34 -0
  25. package/dist/browser/ui/collapsible.js +41 -0
  26. package/dist/browser/ui/command.js +266 -0
  27. package/dist/browser/ui/confirm-dialog.js +226 -0
  28. package/dist/browser/ui/context-menu.js +127 -0
  29. package/dist/browser/ui/cta.js +102 -0
  30. package/dist/browser/ui/date-picker.js +350 -0
  31. package/dist/browser/ui/date-range-picker.js +276 -0
  32. package/dist/browser/ui/datetime-picker.js +489 -0
  33. package/dist/browser/ui/dialog.js +140 -0
  34. package/dist/browser/ui/drawer.js +130 -0
  35. package/dist/browser/ui/dropdown-menu.js +214 -0
  36. package/dist/browser/ui/empty-state.js +209 -0
  37. package/dist/browser/ui/empty.js +90 -0
  38. package/dist/browser/ui/field.js +221 -0
  39. package/dist/browser/ui/focus-on-route-change.js +25 -0
  40. package/dist/browser/ui/form.js +156 -0
  41. package/dist/browser/ui/hover-card.js +51 -0
  42. package/dist/browser/ui/input-group.js +192 -0
  43. package/dist/browser/ui/input-otp.js +60 -0
  44. package/dist/browser/ui/input.js +22 -0
  45. package/dist/browser/ui/label.js +26 -0
  46. package/dist/browser/ui/link.js +24 -0
  47. package/dist/browser/ui/live-region.js +56 -0
  48. package/dist/browser/ui/loading-button.js +228 -0
  49. package/dist/browser/ui/map/MapBase.js +70 -0
  50. package/dist/browser/ui/map/MapGeoJsonOverlay.js +56 -0
  51. package/dist/browser/ui/map/MapHeatmapH3.js +66 -0
  52. package/dist/browser/ui/map/MapMarkers.js +45 -0
  53. package/dist/browser/ui/map/index.js +210 -0
  54. package/dist/browser/ui/marketing/FeatureGrid.js +50 -0
  55. package/dist/browser/ui/marketing/Hero.js +116 -0
  56. package/dist/browser/ui/marketing/PricingTable.js +127 -0
  57. package/dist/browser/ui/marketing/index.js +217 -0
  58. package/dist/browser/ui/menubar.js +231 -0
  59. package/dist/browser/ui/molecules/Autocomplete/index.js +584 -0
  60. package/dist/browser/ui/molecules/SearchAndFilter/SearchAndFilter.js +503 -0
  61. package/dist/browser/ui/molecules/SearchAndFilter/index.js +503 -0
  62. package/dist/browser/ui/molecules/SearchAndFilter/types.js +0 -0
  63. package/dist/browser/ui/molecules/SkeletonList.js +44 -0
  64. package/dist/browser/ui/nav-layout.js +298 -0
  65. package/dist/browser/ui/navigation-menu.js +128 -0
  66. package/dist/browser/ui/organisms/ErrorBoundary/ErrorBoundary.js +191 -0
  67. package/dist/browser/ui/organisms/ErrorBoundary/index.js +191 -0
  68. package/dist/browser/ui/organisms/ListPage/ListPage.js +1236 -0
  69. package/dist/browser/ui/organisms/ListPage/index.js +1236 -0
  70. package/dist/browser/ui/organisms/ListPage/types.js +0 -0
  71. package/dist/browser/ui/page-header.js +206 -0
  72. package/dist/browser/ui/pagination.js +156 -0
  73. package/dist/browser/ui/popover.js +59 -0
  74. package/dist/browser/ui/progress.js +32 -0
  75. package/dist/browser/ui/radio-group.js +45 -0
  76. package/dist/browser/ui/resizable.js +41 -0
  77. package/dist/browser/ui/route-announcer.js +28 -0
  78. package/dist/browser/ui/scroll-area.js +53 -0
  79. package/dist/browser/ui/section.js +65 -0
  80. package/dist/browser/ui/select.js +165 -0
  81. package/dist/browser/ui/separator.js +30 -0
  82. package/dist/browser/ui/sheet.js +136 -0
  83. package/dist/browser/ui/sidebar.js +806 -0
  84. package/dist/browser/ui/skeleton.js +30 -0
  85. package/dist/browser/ui/skip-link.js +27 -0
  86. package/dist/browser/ui/slider.js +50 -0
  87. package/dist/browser/ui/sonner.js +29 -0
  88. package/dist/browser/ui/stack.js +158 -0
  89. package/dist/browser/ui/stat-card-group.js +263 -0
  90. package/dist/browser/ui/stepper.js +185 -0
  91. package/dist/browser/ui/switch.js +31 -0
  92. package/dist/browser/ui/table.js +106 -0
  93. package/dist/browser/ui/tabs.js +59 -0
  94. package/dist/browser/ui/text.js +22 -0
  95. package/dist/browser/ui/textarea.js +21 -0
  96. package/dist/browser/ui/time-picker.js +186 -0
  97. package/dist/browser/ui/toast.js +79 -0
  98. package/dist/browser/ui/toaster.js +220 -0
  99. package/dist/browser/ui/toggle-group.js +96 -0
  100. package/dist/browser/ui/toggle.js +47 -0
  101. package/dist/browser/ui/tooltip.js +68 -0
  102. package/dist/browser/ui/typography.js +123 -0
  103. package/dist/browser/ui/use-media-query.js +26 -0
  104. package/dist/browser/ui/use-mobile.js +27 -0
  105. package/dist/browser/ui/use-reduced-motion.js +24 -0
  106. package/dist/browser/ui/use-toast.js +129 -0
  107. package/dist/browser/ui/useListState.js +76 -0
  108. package/dist/browser/ui/usecases/UseCaseCard.js +232 -0
  109. package/dist/browser/ui/usecases/UserStoryCard.js +186 -0
  110. package/dist/browser/ui/usecases/index.js +267 -0
  111. package/dist/browser/ui/utils.js +17 -0
  112. package/dist/browser/ui/visually-hidden.js +35 -0
  113. package/dist/index.d.ts +2 -1
  114. package/dist/index.d.ts.map +1 -0
  115. package/dist/index.js +8 -0
  116. package/dist/ui/accordion.d.ts +7 -24
  117. package/dist/ui/accordion.d.ts.map +1 -1
  118. package/dist/ui/accordion.js +60 -40
  119. package/dist/ui/alert-dialog.d.ts +14 -48
  120. package/dist/ui/alert-dialog.d.ts.map +1 -1
  121. package/dist/ui/alert-dialog.js +158 -71
  122. package/dist/ui/alert.d.ts +8 -23
  123. package/dist/ui/alert.d.ts.map +1 -1
  124. package/dist/ui/alert.js +50 -34
  125. package/dist/ui/aspect-ratio.d.ts +2 -6
  126. package/dist/ui/aspect-ratio.d.ts.map +1 -1
  127. package/dist/ui/aspect-ratio.js +8 -8
  128. package/dist/ui/atoms/FilterSelect/FilterSelect.d.ts +3 -7
  129. package/dist/ui/atoms/FilterSelect/FilterSelect.d.ts.map +1 -1
  130. package/dist/ui/atoms/FilterSelect/FilterSelect.js +237 -51
  131. package/dist/ui/atoms/FilterSelect/index.d.ts +3 -3
  132. package/dist/ui/atoms/FilterSelect/index.d.ts.map +1 -0
  133. package/dist/ui/atoms/FilterSelect/index.js +238 -2
  134. package/dist/ui/atoms/FilterSelect/types.d.ts +13 -16
  135. package/dist/ui/atoms/FilterSelect/types.d.ts.map +1 -1
  136. package/dist/ui/atoms/FilterSelect/types.js +1 -0
  137. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.d.ts +14 -17
  138. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.d.ts.map +1 -1
  139. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.js +81 -43
  140. package/dist/ui/atoms/LoadingSpinner/index.d.ts +2 -2
  141. package/dist/ui/atoms/LoadingSpinner/index.d.ts.map +1 -0
  142. package/dist/ui/atoms/LoadingSpinner/index.js +83 -2
  143. package/dist/ui/atoms/Pagination/Pagination.d.ts +3 -7
  144. package/dist/ui/atoms/Pagination/Pagination.d.ts.map +1 -1
  145. package/dist/ui/atoms/Pagination/Pagination.js +380 -155
  146. package/dist/ui/atoms/Pagination/index.d.ts +3 -3
  147. package/dist/ui/atoms/Pagination/index.d.ts.map +1 -0
  148. package/dist/ui/atoms/Pagination/index.js +381 -2
  149. package/dist/ui/atoms/Pagination/types.d.ts +11 -14
  150. package/dist/ui/atoms/Pagination/types.d.ts.map +1 -1
  151. package/dist/ui/atoms/Pagination/types.js +1 -0
  152. package/dist/ui/atoms/SearchInput/SearchInput.d.ts +3 -7
  153. package/dist/ui/atoms/SearchInput/SearchInput.d.ts.map +1 -1
  154. package/dist/ui/atoms/SearchInput/SearchInput.js +116 -48
  155. package/dist/ui/atoms/SearchInput/index.d.ts +3 -3
  156. package/dist/ui/atoms/SearchInput/index.d.ts.map +1 -0
  157. package/dist/ui/atoms/SearchInput/index.js +117 -2
  158. package/dist/ui/atoms/SearchInput/types.d.ts +8 -11
  159. package/dist/ui/atoms/SearchInput/types.d.ts.map +1 -1
  160. package/dist/ui/atoms/SearchInput/types.js +1 -0
  161. package/dist/ui/avatar.d.ts +6 -19
  162. package/dist/ui/avatar.d.ts.map +1 -1
  163. package/dist/ui/avatar.js +44 -28
  164. package/dist/ui/badge.d.ts +7 -17
  165. package/dist/ui/badge.d.ts.map +1 -1
  166. package/dist/ui/badge.js +34 -23
  167. package/dist/ui/breadcrumb.d.ts +11 -37
  168. package/dist/ui/breadcrumb.d.ts.map +1 -1
  169. package/dist/ui/breadcrumb.js +94 -62
  170. package/dist/ui/button.d.ts +14 -18
  171. package/dist/ui/button.d.ts.map +1 -1
  172. package/dist/ui/button.js +46 -50
  173. package/dist/ui/calendar.d.ts +7 -25
  174. package/dist/ui/calendar.d.ts.map +1 -1
  175. package/dist/ui/calendar.js +172 -105
  176. package/dist/ui/card.d.ts +9 -34
  177. package/dist/ui/card.d.ts.map +1 -1
  178. package/dist/ui/card.js +73 -49
  179. package/dist/ui/carousel.d.ts +13 -41
  180. package/dist/ui/carousel.d.ts.map +1 -1
  181. package/dist/ui/carousel.js +215 -127
  182. package/dist/ui/checkbox.d.ts +3 -10
  183. package/dist/ui/checkbox.d.ts.map +1 -1
  184. package/dist/ui/checkbox.js +25 -21
  185. package/dist/ui/collapsible.d.ts +5 -15
  186. package/dist/ui/collapsible.d.ts.map +1 -1
  187. package/dist/ui/collapsible.js +31 -23
  188. package/dist/ui/command.d.ts +18 -52
  189. package/dist/ui/command.d.ts.map +1 -1
  190. package/dist/ui/command.js +258 -87
  191. package/dist/ui/confirm-dialog.d.ts +13 -29
  192. package/dist/ui/confirm-dialog.d.ts.map +1 -1
  193. package/dist/ui/confirm-dialog.js +219 -32
  194. package/dist/ui/context-menu.d.ts +25 -32
  195. package/dist/ui/context-menu.d.ts.map +1 -1
  196. package/dist/ui/context-menu.js +109 -71
  197. package/dist/ui/cta.d.ts +17 -21
  198. package/dist/ui/cta.d.ts.map +1 -1
  199. package/dist/ui/cta.js +94 -36
  200. package/dist/ui/date-picker.d.ts +10 -24
  201. package/dist/ui/date-picker.d.ts.map +1 -1
  202. package/dist/ui/date-picker.js +342 -98
  203. package/dist/ui/date-range-picker.d.ts +11 -23
  204. package/dist/ui/date-range-picker.d.ts.map +1 -1
  205. package/dist/ui/date-range-picker.js +268 -51
  206. package/dist/ui/datetime-picker.d.ts +11 -26
  207. package/dist/ui/datetime-picker.d.ts.map +1 -1
  208. package/dist/ui/datetime-picker.js +479 -39
  209. package/dist/ui/dialog.d.ts +15 -47
  210. package/dist/ui/dialog.d.ts.map +1 -1
  211. package/dist/ui/dialog.js +122 -77
  212. package/dist/ui/drawer.d.ts +13 -44
  213. package/dist/ui/drawer.d.ts.map +1 -1
  214. package/dist/ui/drawer.js +113 -70
  215. package/dist/ui/dropdown-menu.d.ts +25 -77
  216. package/dist/ui/dropdown-menu.d.ts.map +1 -1
  217. package/dist/ui/dropdown-menu.js +191 -109
  218. package/dist/ui/empty-state.d.ts +13 -26
  219. package/dist/ui/empty-state.d.ts.map +1 -1
  220. package/dist/ui/empty-state.js +201 -40
  221. package/dist/ui/empty.d.ts +11 -35
  222. package/dist/ui/empty.d.ts.map +1 -1
  223. package/dist/ui/empty.js +76 -53
  224. package/dist/ui/field.d.ts +24 -64
  225. package/dist/ui/field.d.ts.map +1 -1
  226. package/dist/ui/field.js +202 -107
  227. package/dist/ui/focus-on-route-change.d.ts +2 -7
  228. package/dist/ui/focus-on-route-change.d.ts.map +1 -1
  229. package/dist/ui/focus-on-route-change.js +18 -15
  230. package/dist/ui/form.d.ts +24 -44
  231. package/dist/ui/form.d.ts.map +1 -1
  232. package/dist/ui/form.js +141 -84
  233. package/dist/ui/hover-card.d.ts +6 -19
  234. package/dist/ui/hover-card.d.ts.map +1 -1
  235. package/dist/ui/hover-card.js +41 -31
  236. package/dist/ui/input-group.d.ts +14 -41
  237. package/dist/ui/input-group.d.ts.map +1 -1
  238. package/dist/ui/input-group.js +177 -79
  239. package/dist/ui/input-otp.d.ts +32 -36
  240. package/dist/ui/input-otp.d.ts.map +1 -1
  241. package/dist/ui/input-otp.js +47 -38
  242. package/dist/ui/input.d.ts +4 -12
  243. package/dist/ui/input.d.ts.map +1 -1
  244. package/dist/ui/input.js +14 -14
  245. package/dist/ui/label.d.ts +3 -10
  246. package/dist/ui/label.d.ts.map +1 -1
  247. package/dist/ui/label.js +18 -16
  248. package/dist/ui/link.d.ts +3 -7
  249. package/dist/ui/link.d.ts.map +1 -1
  250. package/dist/ui/link.js +14 -13
  251. package/dist/ui/live-region.d.ts +8 -14
  252. package/dist/ui/live-region.d.ts.map +1 -1
  253. package/dist/ui/live-region.js +47 -43
  254. package/dist/ui/loading-button.d.ts +7 -17
  255. package/dist/ui/loading-button.d.ts.map +1 -1
  256. package/dist/ui/loading-button.js +221 -19
  257. package/dist/ui/map/MapBase.d.ts +20 -25
  258. package/dist/ui/map/MapBase.d.ts.map +1 -1
  259. package/dist/ui/map/MapBase.js +62 -43
  260. package/dist/ui/map/MapGeoJsonOverlay.d.ts +9 -14
  261. package/dist/ui/map/MapGeoJsonOverlay.d.ts.map +1 -1
  262. package/dist/ui/map/MapGeoJsonOverlay.js +47 -33
  263. package/dist/ui/map/MapHeatmapH3.d.ts +10 -15
  264. package/dist/ui/map/MapHeatmapH3.d.ts.map +1 -1
  265. package/dist/ui/map/MapHeatmapH3.js +55 -44
  266. package/dist/ui/map/MapMarkers.d.ts +11 -18
  267. package/dist/ui/map/MapMarkers.d.ts.map +1 -1
  268. package/dist/ui/map/MapMarkers.js +36 -35
  269. package/dist/ui/map/index.d.ts +5 -5
  270. package/dist/ui/map/index.d.ts.map +1 -0
  271. package/dist/ui/map/index.js +204 -5
  272. package/dist/ui/marketing/FeatureGrid.d.ts +10 -19
  273. package/dist/ui/marketing/FeatureGrid.d.ts.map +1 -1
  274. package/dist/ui/marketing/FeatureGrid.js +42 -32
  275. package/dist/ui/marketing/Hero.d.ts +16 -27
  276. package/dist/ui/marketing/Hero.d.ts.map +1 -1
  277. package/dist/ui/marketing/Hero.js +108 -50
  278. package/dist/ui/marketing/PricingTable.d.ts +15 -23
  279. package/dist/ui/marketing/PricingTable.d.ts.map +1 -1
  280. package/dist/ui/marketing/PricingTable.js +119 -57
  281. package/dist/ui/marketing/index.d.ts +4 -4
  282. package/dist/ui/marketing/index.d.ts.map +1 -0
  283. package/dist/ui/marketing/index.js +211 -4
  284. package/dist/ui/menubar.d.ts +26 -84
  285. package/dist/ui/menubar.d.ts.map +1 -1
  286. package/dist/ui/menubar.js +223 -134
  287. package/dist/ui/molecules/Autocomplete/index.d.ts +1 -6
  288. package/dist/ui/molecules/Autocomplete/index.d.ts.map +1 -1
  289. package/dist/ui/molecules/Autocomplete/index.js +574 -80
  290. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.d.ts +3 -7
  291. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.d.ts.map +1 -1
  292. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.js +496 -101
  293. package/dist/ui/molecules/SearchAndFilter/index.d.ts +3 -3
  294. package/dist/ui/molecules/SearchAndFilter/index.d.ts.map +1 -0
  295. package/dist/ui/molecules/SearchAndFilter/index.js +497 -2
  296. package/dist/ui/molecules/SearchAndFilter/types.d.ts +18 -22
  297. package/dist/ui/molecules/SearchAndFilter/types.d.ts.map +1 -1
  298. package/dist/ui/molecules/SearchAndFilter/types.js +1 -0
  299. package/dist/ui/molecules/SkeletonList.d.ts +5 -13
  300. package/dist/ui/molecules/SkeletonList.d.ts.map +1 -1
  301. package/dist/ui/molecules/SkeletonList.js +36 -12
  302. package/dist/ui/nav-layout.d.ts +44 -67
  303. package/dist/ui/nav-layout.d.ts.map +1 -1
  304. package/dist/ui/nav-layout.js +287 -127
  305. package/dist/ui/navigation-menu.d.ts +14 -46
  306. package/dist/ui/navigation-menu.d.ts.map +1 -1
  307. package/dist/ui/navigation-menu.js +113 -73
  308. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.d.ts +18 -22
  309. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.d.ts.map +1 -1
  310. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.js +182 -103
  311. package/dist/ui/organisms/ErrorBoundary/index.d.ts +3 -2
  312. package/dist/ui/organisms/ErrorBoundary/index.d.ts.map +1 -0
  313. package/dist/ui/organisms/ErrorBoundary/index.js +185 -2
  314. package/dist/ui/organisms/ListPage/ListPage.d.ts +2 -28
  315. package/dist/ui/organisms/ListPage/ListPage.d.ts.map +1 -1
  316. package/dist/ui/organisms/ListPage/ListPage.js +1229 -196
  317. package/dist/ui/organisms/ListPage/index.d.ts +3 -3
  318. package/dist/ui/organisms/ListPage/index.d.ts.map +1 -0
  319. package/dist/ui/organisms/ListPage/index.js +1230 -2
  320. package/dist/ui/organisms/ListPage/types.d.ts +34 -38
  321. package/dist/ui/organisms/ListPage/types.d.ts.map +1 -1
  322. package/dist/ui/organisms/ListPage/types.js +1 -0
  323. package/dist/ui/page-header.d.ts +12 -24
  324. package/dist/ui/page-header.d.ts.map +1 -1
  325. package/dist/ui/page-header.js +198 -37
  326. package/dist/ui/pagination.d.ts +17 -38
  327. package/dist/ui/pagination.d.ts.map +1 -1
  328. package/dist/ui/pagination.js +142 -56
  329. package/dist/ui/popover.d.ts +7 -22
  330. package/dist/ui/popover.d.ts.map +1 -1
  331. package/dist/ui/popover.js +48 -33
  332. package/dist/ui/progress.d.ts +3 -11
  333. package/dist/ui/progress.d.ts.map +1 -1
  334. package/dist/ui/progress.js +24 -21
  335. package/dist/ui/radio-group.d.ts +4 -14
  336. package/dist/ui/radio-group.d.ts.map +1 -1
  337. package/dist/ui/radio-group.js +35 -27
  338. package/dist/ui/resizable.d.ts +22 -34
  339. package/dist/ui/resizable.d.ts.map +1 -1
  340. package/dist/ui/resizable.js +33 -22
  341. package/dist/ui/route-announcer.d.ts +3 -10
  342. package/dist/ui/route-announcer.d.ts.map +1 -1
  343. package/dist/ui/route-announcer.js +20 -19
  344. package/dist/ui/scroll-area.d.ts +4 -16
  345. package/dist/ui/scroll-area.d.ts.map +1 -1
  346. package/dist/ui/scroll-area.js +44 -36
  347. package/dist/ui/section.d.ts +20 -24
  348. package/dist/ui/section.d.ts.map +1 -1
  349. package/dist/ui/section.js +56 -59
  350. package/dist/ui/select.d.ts +15 -51
  351. package/dist/ui/select.d.ts.map +1 -1
  352. package/dist/ui/select.js +147 -87
  353. package/dist/ui/separator.d.ts +3 -12
  354. package/dist/ui/separator.d.ts.map +1 -1
  355. package/dist/ui/separator.js +22 -18
  356. package/dist/ui/sheet.d.ts +13 -40
  357. package/dist/ui/sheet.d.ts.map +1 -1
  358. package/dist/ui/sheet.js +117 -72
  359. package/dist/ui/sidebar.d.ts +65 -162
  360. package/dist/ui/sidebar.d.ts.map +1 -1
  361. package/dist/ui/sidebar.js +794 -372
  362. package/dist/ui/skeleton.d.ts +2 -9
  363. package/dist/ui/skeleton.d.ts.map +1 -1
  364. package/dist/ui/skeleton.js +22 -12
  365. package/dist/ui/skip-link.d.ts +6 -15
  366. package/dist/ui/skip-link.d.ts.map +1 -1
  367. package/dist/ui/skip-link.js +20 -15
  368. package/dist/ui/slider.d.ts +3 -14
  369. package/dist/ui/slider.d.ts.map +1 -1
  370. package/dist/ui/slider.js +42 -37
  371. package/dist/ui/sonner.d.ts +2 -8
  372. package/dist/ui/sonner.d.ts.map +1 -1
  373. package/dist/ui/sonner.js +21 -21
  374. package/dist/ui/stack.d.ts +40 -44
  375. package/dist/ui/stack.d.ts.map +1 -1
  376. package/dist/ui/stack.js +143 -148
  377. package/dist/ui/stat-card-group.d.ts +9 -17
  378. package/dist/ui/stat-card-group.d.ts.map +1 -1
  379. package/dist/ui/stat-card-group.js +255 -36
  380. package/dist/ui/stepper.d.ts +10 -20
  381. package/dist/ui/stepper.d.ts.map +1 -1
  382. package/dist/ui/stepper.js +176 -33
  383. package/dist/ui/switch.d.ts +5 -13
  384. package/dist/ui/switch.d.ts.map +1 -1
  385. package/dist/ui/switch.js +23 -20
  386. package/dist/ui/table.d.ts +10 -38
  387. package/dist/ui/table.d.ts.map +1 -1
  388. package/dist/ui/table.js +91 -61
  389. package/dist/ui/tabs.d.ts +7 -23
  390. package/dist/ui/tabs.d.ts.map +1 -1
  391. package/dist/ui/tabs.js +48 -34
  392. package/dist/ui/text.d.ts +5 -13
  393. package/dist/ui/text.d.ts.map +1 -1
  394. package/dist/ui/text.js +14 -13
  395. package/dist/ui/textarea.d.ts +4 -11
  396. package/dist/ui/textarea.d.ts.map +1 -1
  397. package/dist/ui/textarea.js +13 -13
  398. package/dist/ui/time-picker.d.ts +8 -20
  399. package/dist/ui/time-picker.d.ts.map +1 -1
  400. package/dist/ui/time-picker.js +176 -76
  401. package/dist/ui/toast.d.ts +15 -19
  402. package/dist/ui/toast.d.ts.map +1 -1
  403. package/dist/ui/toast.js +63 -51
  404. package/dist/ui/toaster.d.ts +1 -6
  405. package/dist/ui/toaster.d.ts.map +1 -1
  406. package/dist/ui/toaster.js +212 -24
  407. package/dist/ui/toggle-group.d.ts +6 -22
  408. package/dist/ui/toggle-group.d.ts.map +1 -1
  409. package/dist/ui/toggle-group.js +85 -42
  410. package/dist/ui/toggle.d.ts +7 -17
  411. package/dist/ui/toggle.d.ts.map +1 -1
  412. package/dist/ui/toggle.js +38 -37
  413. package/dist/ui/tooltip.d.ts +7 -23
  414. package/dist/ui/tooltip.d.ts.map +1 -1
  415. package/dist/ui/tooltip.js +57 -34
  416. package/dist/ui/typography.d.ts +13 -61
  417. package/dist/ui/typography.d.ts.map +1 -1
  418. package/dist/ui/typography.js +95 -64
  419. package/dist/ui/use-media-query.d.ts +1 -4
  420. package/dist/ui/use-media-query.d.ts.map +1 -1
  421. package/dist/ui/use-media-query.js +18 -17
  422. package/dist/ui/use-mobile.d.ts +1 -4
  423. package/dist/ui/use-mobile.d.ts.map +1 -1
  424. package/dist/ui/use-mobile.js +19 -18
  425. package/dist/ui/use-reduced-motion.d.ts +1 -4
  426. package/dist/ui/use-reduced-motion.d.ts.map +1 -1
  427. package/dist/ui/use-reduced-motion.js +16 -15
  428. package/dist/ui/use-toast.d.ts +28 -33
  429. package/dist/ui/use-toast.d.ts.map +1 -1
  430. package/dist/ui/use-toast.js +113 -111
  431. package/dist/ui/useListState.d.ts +23 -31
  432. package/dist/ui/useListState.d.ts.map +1 -1
  433. package/dist/ui/useListState.js +69 -73
  434. package/dist/ui/usecases/UseCaseCard.d.ts +7 -18
  435. package/dist/ui/usecases/UseCaseCard.d.ts.map +1 -1
  436. package/dist/ui/usecases/UseCaseCard.js +225 -33
  437. package/dist/ui/usecases/UserStoryCard.d.ts +5 -14
  438. package/dist/ui/usecases/UserStoryCard.d.ts.map +1 -1
  439. package/dist/ui/usecases/UserStoryCard.js +179 -34
  440. package/dist/ui/usecases/index.d.ts +3 -3
  441. package/dist/ui/usecases/index.d.ts.map +1 -0
  442. package/dist/ui/usecases/index.js +261 -3
  443. package/dist/ui/utils.d.ts +2 -6
  444. package/dist/ui/utils.d.ts.map +1 -1
  445. package/dist/ui/utils.js +8 -7
  446. package/dist/ui/visually-hidden.d.ts +5 -8
  447. package/dist/ui/visually-hidden.d.ts.map +1 -1
  448. package/dist/ui/visually-hidden.js +26 -27
  449. package/package.json +874 -238
  450. package/dist/ui/accordion.js.map +0 -1
  451. package/dist/ui/alert-dialog.js.map +0 -1
  452. package/dist/ui/alert.js.map +0 -1
  453. package/dist/ui/aspect-ratio.js.map +0 -1
  454. package/dist/ui/atoms/FilterSelect/FilterSelect.js.map +0 -1
  455. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.js.map +0 -1
  456. package/dist/ui/atoms/Pagination/Pagination.js.map +0 -1
  457. package/dist/ui/atoms/SearchInput/SearchInput.js.map +0 -1
  458. package/dist/ui/avatar.js.map +0 -1
  459. package/dist/ui/badge.js.map +0 -1
  460. package/dist/ui/breadcrumb.js.map +0 -1
  461. package/dist/ui/button.js.map +0 -1
  462. package/dist/ui/calendar.js.map +0 -1
  463. package/dist/ui/card.js.map +0 -1
  464. package/dist/ui/carousel.js.map +0 -1
  465. package/dist/ui/checkbox.js.map +0 -1
  466. package/dist/ui/collapsible.js.map +0 -1
  467. package/dist/ui/command.js.map +0 -1
  468. package/dist/ui/confirm-dialog.js.map +0 -1
  469. package/dist/ui/context-menu.js.map +0 -1
  470. package/dist/ui/cta.js.map +0 -1
  471. package/dist/ui/date-picker.js.map +0 -1
  472. package/dist/ui/date-range-picker.js.map +0 -1
  473. package/dist/ui/datetime-picker.js.map +0 -1
  474. package/dist/ui/dialog.js.map +0 -1
  475. package/dist/ui/drawer.js.map +0 -1
  476. package/dist/ui/dropdown-menu.js.map +0 -1
  477. package/dist/ui/empty-state.js.map +0 -1
  478. package/dist/ui/empty.js.map +0 -1
  479. package/dist/ui/field.js.map +0 -1
  480. package/dist/ui/focus-on-route-change.js.map +0 -1
  481. package/dist/ui/form.js.map +0 -1
  482. package/dist/ui/hover-card.js.map +0 -1
  483. package/dist/ui/input-group.js.map +0 -1
  484. package/dist/ui/input-otp.js.map +0 -1
  485. package/dist/ui/input.js.map +0 -1
  486. package/dist/ui/label.js.map +0 -1
  487. package/dist/ui/link.js.map +0 -1
  488. package/dist/ui/live-region.js.map +0 -1
  489. package/dist/ui/loading-button.js.map +0 -1
  490. package/dist/ui/map/MapBase.js.map +0 -1
  491. package/dist/ui/map/MapGeoJsonOverlay.js.map +0 -1
  492. package/dist/ui/map/MapHeatmapH3.js.map +0 -1
  493. package/dist/ui/map/MapMarkers.js.map +0 -1
  494. package/dist/ui/marketing/FeatureGrid.js.map +0 -1
  495. package/dist/ui/marketing/Hero.js.map +0 -1
  496. package/dist/ui/marketing/PricingTable.js.map +0 -1
  497. package/dist/ui/menubar.js.map +0 -1
  498. package/dist/ui/molecules/Autocomplete/index.js.map +0 -1
  499. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.js.map +0 -1
  500. package/dist/ui/molecules/SkeletonList.js.map +0 -1
  501. package/dist/ui/nav-layout.js.map +0 -1
  502. package/dist/ui/navigation-menu.js.map +0 -1
  503. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.js.map +0 -1
  504. package/dist/ui/organisms/ListPage/ListPage.js.map +0 -1
  505. package/dist/ui/page-header.js.map +0 -1
  506. package/dist/ui/pagination.js.map +0 -1
  507. package/dist/ui/popover.js.map +0 -1
  508. package/dist/ui/progress.js.map +0 -1
  509. package/dist/ui/radio-group.js.map +0 -1
  510. package/dist/ui/resizable.js.map +0 -1
  511. package/dist/ui/route-announcer.js.map +0 -1
  512. package/dist/ui/scroll-area.js.map +0 -1
  513. package/dist/ui/section.js.map +0 -1
  514. package/dist/ui/select.js.map +0 -1
  515. package/dist/ui/separator.js.map +0 -1
  516. package/dist/ui/sheet.js.map +0 -1
  517. package/dist/ui/sidebar.js.map +0 -1
  518. package/dist/ui/skeleton.js.map +0 -1
  519. package/dist/ui/skip-link.js.map +0 -1
  520. package/dist/ui/slider.js.map +0 -1
  521. package/dist/ui/sonner.js.map +0 -1
  522. package/dist/ui/stack.js.map +0 -1
  523. package/dist/ui/stat-card-group.js.map +0 -1
  524. package/dist/ui/stepper.js.map +0 -1
  525. package/dist/ui/switch.js.map +0 -1
  526. package/dist/ui/table.js.map +0 -1
  527. package/dist/ui/tabs.js.map +0 -1
  528. package/dist/ui/text.js.map +0 -1
  529. package/dist/ui/textarea.js.map +0 -1
  530. package/dist/ui/time-picker.js.map +0 -1
  531. package/dist/ui/toast.js.map +0 -1
  532. package/dist/ui/toaster.js.map +0 -1
  533. package/dist/ui/toggle-group.js.map +0 -1
  534. package/dist/ui/toggle.js.map +0 -1
  535. package/dist/ui/tooltip.js.map +0 -1
  536. package/dist/ui/typography.js.map +0 -1
  537. package/dist/ui/use-media-query.js.map +0 -1
  538. package/dist/ui/use-mobile.js.map +0 -1
  539. package/dist/ui/use-reduced-motion.js.map +0 -1
  540. package/dist/ui/use-toast.js.map +0 -1
  541. package/dist/ui/useListState.js.map +0 -1
  542. package/dist/ui/usecases/UseCaseCard.js.map +0 -1
  543. package/dist/ui/usecases/UserStoryCard.js.map +0 -1
  544. package/dist/ui/utils.js.map +0 -1
  545. package/dist/ui/visually-hidden.js.map +0 -1
@@ -1,379 +1,801 @@
1
- 'use client';
1
+ // @bun
2
+ var __require = import.meta.require;
2
3
 
3
- import { Button } from "./button.js";
4
- import { Input } from "./input.js";
5
- import { Separator } from "./separator.js";
6
- import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "./sheet.js";
7
- import { useIsMobile } from "./use-mobile.js";
8
- import { Skeleton } from "./skeleton.js";
9
- import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./tooltip.js";
10
- import * as React$1 from "react";
11
- import { PanelLeftIcon } from "lucide-react";
12
- import { cn } from "@contractspec/lib.ui-kit-core/utils";
13
- import { jsx, jsxs } from "react/jsx-runtime";
4
+ // ui/button.tsx
5
+ import * as React from "react";
14
6
  import { Slot } from "@radix-ui/react-slot";
15
7
  import { cva } from "class-variance-authority";
8
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
9
+ import { jsxDEV } from "react/jsx-dev-runtime";
10
+ var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-hidden focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", {
11
+ variants: {
12
+ variant: {
13
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
14
+ destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
15
+ outline: "border bg-background shadow-2xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
16
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
17
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
18
+ link: "text-primary underline-offset-4 hover:underline"
19
+ },
20
+ size: {
21
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
22
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
23
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
24
+ icon: "size-9"
25
+ }
26
+ },
27
+ defaultVariants: {
28
+ variant: "default",
29
+ size: "default"
30
+ }
31
+ });
32
+ var Button = React.forwardRef(({ className, variant, size, asChild = false, ...props }, ref) => {
33
+ if (asChild) {
34
+ return /* @__PURE__ */ jsxDEV(Slot, {
35
+ "data-slot": "button",
36
+ className: cn(buttonVariants({ variant, size, className })),
37
+ ...props
38
+ }, undefined, false, undefined, this);
39
+ }
40
+ return /* @__PURE__ */ jsxDEV("button", {
41
+ ref,
42
+ "data-slot": "button",
43
+ className: cn(buttonVariants({ variant, size, className })),
44
+ ...props
45
+ }, undefined, false, undefined, this);
46
+ });
47
+ Button.displayName = "Button";
48
+ // ui/utils.ts
49
+ import { clsx } from "clsx";
50
+ import { twMerge } from "tailwind-merge";
51
+ function cn2(...inputs) {
52
+ return twMerge(clsx(inputs));
53
+ }
16
54
 
17
- //#region ui/sidebar.tsx
18
- const SIDEBAR_COOKIE_NAME = "sidebar_state";
19
- const SIDEBAR_COOKIE_MAX_AGE = 3600 * 24 * 7;
20
- const SIDEBAR_WIDTH = "16rem";
21
- const SIDEBAR_WIDTH_MOBILE = "18rem";
22
- const SIDEBAR_WIDTH_ICON = "3rem";
23
- const SIDEBAR_KEYBOARD_SHORTCUT = "b";
24
- const SidebarContext = React$1.createContext(null);
55
+ // ui/input.tsx
56
+ import { cn as cn3 } from "@contractspec/lib.ui-kit-core/utils";
57
+ import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
58
+ function Input({ className, type, ...props }) {
59
+ return /* @__PURE__ */ jsxDEV2("input", {
60
+ type,
61
+ "data-slot": "input",
62
+ className: cn3("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", className),
63
+ ...props
64
+ }, undefined, false, undefined, this);
65
+ }
66
+ // ui/separator.tsx
67
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
68
+ import { cn as cn4 } from "@contractspec/lib.ui-kit-core/utils";
69
+ import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
70
+ "use client";
71
+ function Separator({
72
+ className,
73
+ orientation = "horizontal",
74
+ decorative = true,
75
+ ...props
76
+ }) {
77
+ return /* @__PURE__ */ jsxDEV3(SeparatorPrimitive.Root, {
78
+ "data-slot": "separator",
79
+ decorative,
80
+ orientation,
81
+ className: cn4("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px", className),
82
+ ...props
83
+ }, undefined, false, undefined, this);
84
+ }
85
+ // ui/skeleton.tsx
86
+ import { jsxDEV as jsxDEV4 } from "react/jsx-dev-runtime";
87
+ function Skeleton({
88
+ className,
89
+ ...props
90
+ }) {
91
+ return /* @__PURE__ */ jsxDEV4("div", {
92
+ "data-slot": "skeleton",
93
+ className: cn2("bg-accent animate-pulse rounded-md", className),
94
+ ...props
95
+ }, undefined, false, undefined, this);
96
+ }
97
+ // ui/sheet.tsx
98
+ import * as SheetPrimitive from "@radix-ui/react-dialog";
99
+ import { XIcon } from "lucide-react";
100
+ import { cn as cn5 } from "@contractspec/lib.ui-kit-core/utils";
101
+ import { jsxDEV as jsxDEV5 } from "react/jsx-dev-runtime";
102
+ "use client";
103
+ function Sheet({ ...props }) {
104
+ return /* @__PURE__ */ jsxDEV5(SheetPrimitive.Root, {
105
+ "data-slot": "sheet",
106
+ ...props
107
+ }, undefined, false, undefined, this);
108
+ }
109
+ function SheetTrigger({
110
+ ...props
111
+ }) {
112
+ return /* @__PURE__ */ jsxDEV5(SheetPrimitive.Trigger, {
113
+ "data-slot": "sheet-trigger",
114
+ ...props
115
+ }, undefined, false, undefined, this);
116
+ }
117
+ function SheetClose({
118
+ ...props
119
+ }) {
120
+ return /* @__PURE__ */ jsxDEV5(SheetPrimitive.Close, {
121
+ "data-slot": "sheet-close",
122
+ ...props
123
+ }, undefined, false, undefined, this);
124
+ }
125
+ function SheetPortal({
126
+ ...props
127
+ }) {
128
+ return /* @__PURE__ */ jsxDEV5(SheetPrimitive.Portal, {
129
+ "data-slot": "sheet-portal",
130
+ ...props
131
+ }, undefined, false, undefined, this);
132
+ }
133
+ function SheetOverlay({
134
+ className,
135
+ ...props
136
+ }) {
137
+ return /* @__PURE__ */ jsxDEV5(SheetPrimitive.Overlay, {
138
+ "data-slot": "sheet-overlay",
139
+ className: cn5("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", className),
140
+ ...props
141
+ }, undefined, false, undefined, this);
142
+ }
143
+ function SheetContent({
144
+ className,
145
+ children,
146
+ side = "right",
147
+ ...props
148
+ }) {
149
+ return /* @__PURE__ */ jsxDEV5(SheetPortal, {
150
+ children: [
151
+ /* @__PURE__ */ jsxDEV5(SheetOverlay, {}, undefined, false, undefined, this),
152
+ /* @__PURE__ */ jsxDEV5(SheetPrimitive.Content, {
153
+ "data-slot": "sheet-content",
154
+ className: cn5("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500", side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm", side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm", side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b", side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t", className),
155
+ ...props,
156
+ children: [
157
+ children,
158
+ /* @__PURE__ */ jsxDEV5(SheetPrimitive.Close, {
159
+ className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",
160
+ children: [
161
+ /* @__PURE__ */ jsxDEV5(XIcon, {
162
+ className: "size-4"
163
+ }, undefined, false, undefined, this),
164
+ /* @__PURE__ */ jsxDEV5("span", {
165
+ className: "sr-only",
166
+ children: "Close"
167
+ }, undefined, false, undefined, this)
168
+ ]
169
+ }, undefined, true, undefined, this)
170
+ ]
171
+ }, undefined, true, undefined, this)
172
+ ]
173
+ }, undefined, true, undefined, this);
174
+ }
175
+ function SheetHeader({
176
+ className,
177
+ ...props
178
+ }) {
179
+ return /* @__PURE__ */ jsxDEV5("div", {
180
+ "data-slot": "sheet-header",
181
+ className: cn5("flex flex-col gap-1.5 p-4", className),
182
+ ...props
183
+ }, undefined, false, undefined, this);
184
+ }
185
+ function SheetFooter({
186
+ className,
187
+ ...props
188
+ }) {
189
+ return /* @__PURE__ */ jsxDEV5("div", {
190
+ "data-slot": "sheet-footer",
191
+ className: cn5("mt-auto flex flex-col gap-2 p-4", className),
192
+ ...props
193
+ }, undefined, false, undefined, this);
194
+ }
195
+ function SheetTitle({
196
+ className,
197
+ ...props
198
+ }) {
199
+ return /* @__PURE__ */ jsxDEV5(SheetPrimitive.Title, {
200
+ "data-slot": "sheet-title",
201
+ className: cn5("text-foreground font-semibold", className),
202
+ ...props
203
+ }, undefined, false, undefined, this);
204
+ }
205
+ function SheetDescription({
206
+ className,
207
+ ...props
208
+ }) {
209
+ return /* @__PURE__ */ jsxDEV5(SheetPrimitive.Description, {
210
+ "data-slot": "sheet-description",
211
+ className: cn5("text-muted-foreground text-sm", className),
212
+ ...props
213
+ }, undefined, false, undefined, this);
214
+ }
215
+ // ui/use-mobile.tsx
216
+ import * as React2 from "react";
217
+ var MOBILE_BREAKPOINT = 640;
218
+ function useIsMobile() {
219
+ const [isMobile, setIsMobile] = React2.useState(undefined);
220
+ React2.useEffect(() => {
221
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
222
+ const onChange = () => {
223
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
224
+ };
225
+ mql.addEventListener("change", onChange);
226
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
227
+ return () => mql.removeEventListener("change", onChange);
228
+ }, []);
229
+ return !!isMobile;
230
+ }
231
+
232
+ // ui/tooltip.tsx
233
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
234
+ import { cn as cn6 } from "@contractspec/lib.ui-kit-core/utils";
235
+ import { jsxDEV as jsxDEV6 } from "react/jsx-dev-runtime";
236
+ "use client";
237
+ function TooltipProvider({
238
+ delayDuration = 0,
239
+ ...props
240
+ }) {
241
+ return /* @__PURE__ */ jsxDEV6(TooltipPrimitive.Provider, {
242
+ "data-slot": "tooltip-provider",
243
+ delayDuration,
244
+ ...props
245
+ }, undefined, false, undefined, this);
246
+ }
247
+ function Tooltip({
248
+ ...props
249
+ }) {
250
+ return /* @__PURE__ */ jsxDEV6(TooltipProvider, {
251
+ children: /* @__PURE__ */ jsxDEV6(TooltipPrimitive.Root, {
252
+ "data-slot": "tooltip",
253
+ ...props
254
+ }, undefined, false, undefined, this)
255
+ }, undefined, false, undefined, this);
256
+ }
257
+ function TooltipTrigger({
258
+ ...props
259
+ }) {
260
+ return /* @__PURE__ */ jsxDEV6(TooltipPrimitive.Trigger, {
261
+ "data-slot": "tooltip-trigger",
262
+ ...props
263
+ }, undefined, false, undefined, this);
264
+ }
265
+ function TooltipContent({
266
+ className,
267
+ sideOffset = 0,
268
+ children,
269
+ ...props
270
+ }) {
271
+ return /* @__PURE__ */ jsxDEV6(TooltipPrimitive.Portal, {
272
+ children: /* @__PURE__ */ jsxDEV6(TooltipPrimitive.Content, {
273
+ "data-slot": "tooltip-content",
274
+ sideOffset,
275
+ className: cn6("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance", className),
276
+ ...props,
277
+ children: [
278
+ children,
279
+ /* @__PURE__ */ jsxDEV6(TooltipPrimitive.Arrow, {
280
+ className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px]"
281
+ }, undefined, false, undefined, this)
282
+ ]
283
+ }, undefined, true, undefined, this)
284
+ }, undefined, false, undefined, this);
285
+ }
286
+ // ui/sidebar.tsx
287
+ import * as React3 from "react";
288
+ import { Slot as Slot2 } from "@radix-ui/react-slot";
289
+ import { cva as cva2 } from "class-variance-authority";
290
+ import { PanelLeftIcon } from "lucide-react";
291
+ import { cn as cn7 } from "@contractspec/lib.ui-kit-core/utils";
292
+ import { jsxDEV as jsxDEV7 } from "react/jsx-dev-runtime";
293
+ "use client";
294
+ var SIDEBAR_COOKIE_NAME = "sidebar_state";
295
+ var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
296
+ var SIDEBAR_WIDTH = "16rem";
297
+ var SIDEBAR_WIDTH_MOBILE = "18rem";
298
+ var SIDEBAR_WIDTH_ICON = "3rem";
299
+ var SIDEBAR_KEYBOARD_SHORTCUT = "b";
300
+ var SidebarContext = React3.createContext(null);
25
301
  function useSidebar() {
26
- const context = React$1.useContext(SidebarContext);
27
- if (!context) throw new Error("useSidebar must be used within a SidebarProvider.");
28
- return context;
29
- }
30
- function SidebarProvider({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }) {
31
- const isMobile = useIsMobile();
32
- const [openMobile, setOpenMobile] = React$1.useState(false);
33
- const [_open, _setOpen] = React$1.useState(defaultOpen);
34
- const open = openProp ?? _open;
35
- const setOpen = React$1.useCallback((value) => {
36
- const openState = typeof value === "function" ? value(open) : value;
37
- if (setOpenProp) setOpenProp(openState);
38
- else _setOpen(openState);
39
- document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
40
- }, [setOpenProp, open]);
41
- const toggleSidebar = React$1.useCallback(() => {
42
- return isMobile ? setOpenMobile((open$1) => !open$1) : setOpen((open$1) => !open$1);
43
- }, [
44
- isMobile,
45
- setOpen,
46
- setOpenMobile
47
- ]);
48
- React$1.useEffect(() => {
49
- const handleKeyDown = (event) => {
50
- if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
51
- event.preventDefault();
52
- toggleSidebar();
53
- }
54
- };
55
- window.addEventListener("keydown", handleKeyDown);
56
- return () => window.removeEventListener("keydown", handleKeyDown);
57
- }, [toggleSidebar]);
58
- const state = open ? "expanded" : "collapsed";
59
- const contextValue = React$1.useMemo(() => ({
60
- state,
61
- open,
62
- setOpen,
63
- isMobile,
64
- openMobile,
65
- setOpenMobile,
66
- toggleSidebar
67
- }), [
68
- state,
69
- open,
70
- setOpen,
71
- isMobile,
72
- openMobile,
73
- setOpenMobile,
74
- toggleSidebar
75
- ]);
76
- return /* @__PURE__ */ jsx(SidebarContext.Provider, {
77
- value: contextValue,
78
- children: /* @__PURE__ */ jsx(TooltipProvider, {
79
- delayDuration: 0,
80
- children: /* @__PURE__ */ jsx("div", {
81
- "data-slot": "sidebar-wrapper",
82
- style: {
83
- "--sidebar-width": SIDEBAR_WIDTH,
84
- "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
85
- ...style
86
- },
87
- className: cn("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full", className),
88
- ...props,
89
- children
90
- })
91
- })
92
- });
93
- }
94
- function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas", className, children, ...props }) {
95
- const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
96
- if (collapsible === "none") return /* @__PURE__ */ jsx("div", {
97
- "data-slot": "sidebar",
98
- className: cn("bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col", className),
99
- ...props,
100
- children
101
- });
102
- if (isMobile) return /* @__PURE__ */ jsx(Sheet, {
103
- open: openMobile,
104
- onOpenChange: setOpenMobile,
105
- ...props,
106
- children: /* @__PURE__ */ jsxs(SheetContent, {
107
- "data-sidebar": "sidebar",
108
- "data-slot": "sidebar",
109
- "data-mobile": "true",
110
- className: "bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden",
111
- style: { "--sidebar-width": SIDEBAR_WIDTH_MOBILE },
112
- side,
113
- children: [/* @__PURE__ */ jsxs(SheetHeader, {
114
- className: "sr-only",
115
- children: [/* @__PURE__ */ jsx(SheetTitle, { children: "Sidebar" }), /* @__PURE__ */ jsx(SheetDescription, { children: "Displays the mobile sidebar." })]
116
- }), /* @__PURE__ */ jsx("div", {
117
- className: "flex h-full w-full flex-col",
118
- children
119
- })]
120
- })
121
- });
122
- return /* @__PURE__ */ jsxs("div", {
123
- className: "group peer text-sidebar-foreground hidden md:block",
124
- "data-state": state,
125
- "data-collapsible": state === "collapsed" ? collapsible : "",
126
- "data-variant": variant,
127
- "data-side": side,
128
- "data-slot": "sidebar",
129
- children: [/* @__PURE__ */ jsx("div", {
130
- "data-slot": "sidebar-gap",
131
- 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)")
132
- }), /* @__PURE__ */ jsx("div", {
133
- "data-slot": "sidebar-container",
134
- 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=left]:border-r group-data-[side=right]:border-l", className),
135
- ...props,
136
- children: /* @__PURE__ */ jsx("div", {
137
- "data-sidebar": "sidebar",
138
- "data-slot": "sidebar-inner",
139
- className: "bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm",
140
- children
141
- })
142
- })]
143
- });
144
- }
145
- function SidebarTrigger({ className, onClick, ...props }) {
146
- const { toggleSidebar } = useSidebar();
147
- return /* @__PURE__ */ jsxs(Button, {
148
- "data-sidebar": "trigger",
149
- "data-slot": "sidebar-trigger",
150
- variant: "ghost",
151
- size: "icon",
152
- className: cn("size-7", className),
153
- onClick: (event) => {
154
- onClick?.(event);
155
- toggleSidebar();
156
- },
157
- ...props,
158
- children: [/* @__PURE__ */ jsx(PanelLeftIcon, {}), /* @__PURE__ */ jsx("span", {
159
- className: "sr-only",
160
- children: "Toggle Sidebar"
161
- })]
162
- });
163
- }
164
- function SidebarRail({ className, ...props }) {
165
- const { toggleSidebar } = useSidebar();
166
- return /* @__PURE__ */ jsx("button", {
167
- "data-sidebar": "rail",
168
- "data-slot": "sidebar-rail",
169
- "aria-label": "Toggle Sidebar",
170
- tabIndex: -1,
171
- onClick: toggleSidebar,
172
- title: "Toggle Sidebar",
173
- className: cn("hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex", "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", "hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", className),
174
- ...props
175
- });
176
- }
177
- function SidebarInset({ className, ...props }) {
178
- return /* @__PURE__ */ jsx("main", {
179
- "data-slot": "sidebar-inset",
180
- className: cn("bg-background relative flex w-full flex-1 flex-col", "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),
181
- ...props
182
- });
183
- }
184
- function SidebarInput({ className, ...props }) {
185
- return /* @__PURE__ */ jsx(Input, {
186
- "data-slot": "sidebar-input",
187
- "data-sidebar": "input",
188
- className: cn("bg-background h-8 w-full shadow-none", className),
189
- ...props
190
- });
191
- }
192
- function SidebarHeader({ className, ...props }) {
193
- return /* @__PURE__ */ jsx("div", {
194
- "data-slot": "sidebar-header",
195
- "data-sidebar": "header",
196
- className: cn("flex flex-col gap-2 p-2", className),
197
- ...props
198
- });
199
- }
200
- function SidebarFooter({ className, ...props }) {
201
- return /* @__PURE__ */ jsx("div", {
202
- "data-slot": "sidebar-footer",
203
- "data-sidebar": "footer",
204
- className: cn("flex flex-col gap-2 p-2", className),
205
- ...props
206
- });
207
- }
208
- function SidebarSeparator({ className, ...props }) {
209
- return /* @__PURE__ */ jsx(Separator, {
210
- "data-slot": "sidebar-separator",
211
- "data-sidebar": "separator",
212
- className: cn("bg-sidebar-border mx-2 w-auto", className),
213
- ...props
214
- });
215
- }
216
- function SidebarContent({ className, ...props }) {
217
- return /* @__PURE__ */ jsx("div", {
218
- "data-slot": "sidebar-content",
219
- "data-sidebar": "content",
220
- className: cn("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden", className),
221
- ...props
222
- });
223
- }
224
- function SidebarGroup({ className, ...props }) {
225
- return /* @__PURE__ */ jsx("div", {
226
- "data-slot": "sidebar-group",
227
- "data-sidebar": "group",
228
- className: cn("relative flex w-full min-w-0 flex-col p-2", className),
229
- ...props
230
- });
231
- }
232
- function SidebarGroupLabel({ className, asChild = false, ...props }) {
233
- return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
234
- "data-slot": "sidebar-group-label",
235
- "data-sidebar": "group-label",
236
- className: cn("text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0", className),
237
- ...props
238
- });
239
- }
240
- function SidebarGroupAction({ className, asChild = false, ...props }) {
241
- return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
242
- "data-slot": "sidebar-group-action",
243
- "data-sidebar": "group-action",
244
- className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "group-data-[collapsible=icon]:hidden", className),
245
- ...props
246
- });
247
- }
248
- function SidebarGroupContent({ className, ...props }) {
249
- return /* @__PURE__ */ jsx("div", {
250
- "data-slot": "sidebar-group-content",
251
- "data-sidebar": "group-content",
252
- className: cn("w-full text-sm", className),
253
- ...props
254
- });
255
- }
256
- function SidebarMenu({ className, ...props }) {
257
- return /* @__PURE__ */ jsx("ul", {
258
- "data-slot": "sidebar-menu",
259
- "data-sidebar": "menu",
260
- className: cn("flex w-full min-w-0 flex-col gap-1", className),
261
- ...props
262
- });
263
- }
264
- function SidebarMenuItem({ className, ...props }) {
265
- return /* @__PURE__ */ jsx("li", {
266
- "data-slot": "sidebar-menu-item",
267
- "data-sidebar": "menu-item",
268
- className: cn("group/menu-item relative", className),
269
- ...props
270
- });
271
- }
272
- const sidebarMenuButtonVariants = cva("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", {
273
- variants: {
274
- variant: {
275
- default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
276
- 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))]"
277
- },
278
- size: {
279
- default: "h-8 text-sm",
280
- sm: "h-7 text-xs",
281
- lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!"
282
- }
283
- },
284
- defaultVariants: {
285
- variant: "default",
286
- size: "default"
287
- }
302
+ const context = React3.useContext(SidebarContext);
303
+ if (!context) {
304
+ throw new Error("useSidebar must be used within a SidebarProvider.");
305
+ }
306
+ return context;
307
+ }
308
+ function SidebarProvider({
309
+ defaultOpen = true,
310
+ open: openProp,
311
+ onOpenChange: setOpenProp,
312
+ className,
313
+ style,
314
+ children,
315
+ ...props
316
+ }) {
317
+ const isMobile = useIsMobile();
318
+ const [openMobile, setOpenMobile] = React3.useState(false);
319
+ const [_open, _setOpen] = React3.useState(defaultOpen);
320
+ const open = openProp ?? _open;
321
+ const setOpen = React3.useCallback((value) => {
322
+ const openState = typeof value === "function" ? value(open) : value;
323
+ if (setOpenProp) {
324
+ setOpenProp(openState);
325
+ } else {
326
+ _setOpen(openState);
327
+ }
328
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
329
+ }, [setOpenProp, open]);
330
+ const toggleSidebar = React3.useCallback(() => {
331
+ return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
332
+ }, [isMobile, setOpen, setOpenMobile]);
333
+ React3.useEffect(() => {
334
+ const handleKeyDown = (event) => {
335
+ if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
336
+ event.preventDefault();
337
+ toggleSidebar();
338
+ }
339
+ };
340
+ window.addEventListener("keydown", handleKeyDown);
341
+ return () => window.removeEventListener("keydown", handleKeyDown);
342
+ }, [toggleSidebar]);
343
+ const state = open ? "expanded" : "collapsed";
344
+ const contextValue = React3.useMemo(() => ({
345
+ state,
346
+ open,
347
+ setOpen,
348
+ isMobile,
349
+ openMobile,
350
+ setOpenMobile,
351
+ toggleSidebar
352
+ }), [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]);
353
+ return /* @__PURE__ */ jsxDEV7(SidebarContext.Provider, {
354
+ value: contextValue,
355
+ children: /* @__PURE__ */ jsxDEV7(TooltipProvider, {
356
+ delayDuration: 0,
357
+ children: /* @__PURE__ */ jsxDEV7("div", {
358
+ "data-slot": "sidebar-wrapper",
359
+ style: {
360
+ "--sidebar-width": SIDEBAR_WIDTH,
361
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
362
+ ...style
363
+ },
364
+ className: cn7("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full", className),
365
+ ...props,
366
+ children
367
+ }, undefined, false, undefined, this)
368
+ }, undefined, false, undefined, this)
369
+ }, undefined, false, undefined, this);
370
+ }
371
+ function Sidebar({
372
+ side = "left",
373
+ variant = "sidebar",
374
+ collapsible = "offcanvas",
375
+ className,
376
+ children,
377
+ ...props
378
+ }) {
379
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
380
+ if (collapsible === "none") {
381
+ return /* @__PURE__ */ jsxDEV7("div", {
382
+ "data-slot": "sidebar",
383
+ className: cn7("bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col", className),
384
+ ...props,
385
+ children
386
+ }, undefined, false, undefined, this);
387
+ }
388
+ if (isMobile) {
389
+ return /* @__PURE__ */ jsxDEV7(Sheet, {
390
+ open: openMobile,
391
+ onOpenChange: setOpenMobile,
392
+ ...props,
393
+ children: /* @__PURE__ */ jsxDEV7(SheetContent, {
394
+ "data-sidebar": "sidebar",
395
+ "data-slot": "sidebar",
396
+ "data-mobile": "true",
397
+ className: "bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden",
398
+ style: {
399
+ "--sidebar-width": SIDEBAR_WIDTH_MOBILE
400
+ },
401
+ side,
402
+ children: [
403
+ /* @__PURE__ */ jsxDEV7(SheetHeader, {
404
+ className: "sr-only",
405
+ children: [
406
+ /* @__PURE__ */ jsxDEV7(SheetTitle, {
407
+ children: "Sidebar"
408
+ }, undefined, false, undefined, this),
409
+ /* @__PURE__ */ jsxDEV7(SheetDescription, {
410
+ children: "Displays the mobile sidebar."
411
+ }, undefined, false, undefined, this)
412
+ ]
413
+ }, undefined, true, undefined, this),
414
+ /* @__PURE__ */ jsxDEV7("div", {
415
+ className: "flex h-full w-full flex-col",
416
+ children
417
+ }, undefined, false, undefined, this)
418
+ ]
419
+ }, undefined, true, undefined, this)
420
+ }, undefined, false, undefined, this);
421
+ }
422
+ return /* @__PURE__ */ jsxDEV7("div", {
423
+ className: "group peer text-sidebar-foreground hidden md:block",
424
+ "data-state": state,
425
+ "data-collapsible": state === "collapsed" ? collapsible : "",
426
+ "data-variant": variant,
427
+ "data-side": side,
428
+ "data-slot": "sidebar",
429
+ children: [
430
+ /* @__PURE__ */ jsxDEV7("div", {
431
+ "data-slot": "sidebar-gap",
432
+ className: cn7("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)")
433
+ }, undefined, false, undefined, this),
434
+ /* @__PURE__ */ jsxDEV7("div", {
435
+ "data-slot": "sidebar-container",
436
+ className: cn7("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=left]:border-r group-data-[side=right]:border-l", className),
437
+ ...props,
438
+ children: /* @__PURE__ */ jsxDEV7("div", {
439
+ "data-sidebar": "sidebar",
440
+ "data-slot": "sidebar-inner",
441
+ className: "bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm",
442
+ children
443
+ }, undefined, false, undefined, this)
444
+ }, undefined, false, undefined, this)
445
+ ]
446
+ }, undefined, true, undefined, this);
447
+ }
448
+ function SidebarTrigger({
449
+ className,
450
+ onClick,
451
+ ...props
452
+ }) {
453
+ const { toggleSidebar } = useSidebar();
454
+ return /* @__PURE__ */ jsxDEV7(Button, {
455
+ "data-sidebar": "trigger",
456
+ "data-slot": "sidebar-trigger",
457
+ variant: "ghost",
458
+ size: "icon",
459
+ className: cn7("size-7", className),
460
+ onClick: (event) => {
461
+ onClick?.(event);
462
+ toggleSidebar();
463
+ },
464
+ ...props,
465
+ children: [
466
+ /* @__PURE__ */ jsxDEV7(PanelLeftIcon, {}, undefined, false, undefined, this),
467
+ /* @__PURE__ */ jsxDEV7("span", {
468
+ className: "sr-only",
469
+ children: "Toggle Sidebar"
470
+ }, undefined, false, undefined, this)
471
+ ]
472
+ }, undefined, true, undefined, this);
473
+ }
474
+ function SidebarRail({
475
+ className,
476
+ ...props
477
+ }) {
478
+ const { toggleSidebar } = useSidebar();
479
+ return /* @__PURE__ */ jsxDEV7("button", {
480
+ "data-sidebar": "rail",
481
+ "data-slot": "sidebar-rail",
482
+ "aria-label": "Toggle Sidebar",
483
+ tabIndex: -1,
484
+ onClick: toggleSidebar,
485
+ title: "Toggle Sidebar",
486
+ className: cn7("hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex", "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", "hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", className),
487
+ ...props
488
+ }, undefined, false, undefined, this);
489
+ }
490
+ function SidebarInset({
491
+ className,
492
+ ...props
493
+ }) {
494
+ return /* @__PURE__ */ jsxDEV7("main", {
495
+ "data-slot": "sidebar-inset",
496
+ className: cn7("bg-background relative flex w-full flex-1 flex-col", "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),
497
+ ...props
498
+ }, undefined, false, undefined, this);
499
+ }
500
+ function SidebarInput({
501
+ className,
502
+ ...props
503
+ }) {
504
+ return /* @__PURE__ */ jsxDEV7(Input, {
505
+ "data-slot": "sidebar-input",
506
+ "data-sidebar": "input",
507
+ className: cn7("bg-background h-8 w-full shadow-none", className),
508
+ ...props
509
+ }, undefined, false, undefined, this);
510
+ }
511
+ function SidebarHeader({
512
+ className,
513
+ ...props
514
+ }) {
515
+ return /* @__PURE__ */ jsxDEV7("div", {
516
+ "data-slot": "sidebar-header",
517
+ "data-sidebar": "header",
518
+ className: cn7("flex flex-col gap-2 p-2", className),
519
+ ...props
520
+ }, undefined, false, undefined, this);
521
+ }
522
+ function SidebarFooter({
523
+ className,
524
+ ...props
525
+ }) {
526
+ return /* @__PURE__ */ jsxDEV7("div", {
527
+ "data-slot": "sidebar-footer",
528
+ "data-sidebar": "footer",
529
+ className: cn7("flex flex-col gap-2 p-2", className),
530
+ ...props
531
+ }, undefined, false, undefined, this);
532
+ }
533
+ function SidebarSeparator({
534
+ className,
535
+ ...props
536
+ }) {
537
+ return /* @__PURE__ */ jsxDEV7(Separator, {
538
+ "data-slot": "sidebar-separator",
539
+ "data-sidebar": "separator",
540
+ className: cn7("bg-sidebar-border mx-2 w-auto", className),
541
+ ...props
542
+ }, undefined, false, undefined, this);
543
+ }
544
+ function SidebarContent({
545
+ className,
546
+ ...props
547
+ }) {
548
+ return /* @__PURE__ */ jsxDEV7("div", {
549
+ "data-slot": "sidebar-content",
550
+ "data-sidebar": "content",
551
+ className: cn7("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden", className),
552
+ ...props
553
+ }, undefined, false, undefined, this);
554
+ }
555
+ function SidebarGroup({
556
+ className,
557
+ ...props
558
+ }) {
559
+ return /* @__PURE__ */ jsxDEV7("div", {
560
+ "data-slot": "sidebar-group",
561
+ "data-sidebar": "group",
562
+ className: cn7("relative flex w-full min-w-0 flex-col p-2", className),
563
+ ...props
564
+ }, undefined, false, undefined, this);
565
+ }
566
+ function SidebarGroupLabel({
567
+ className,
568
+ asChild = false,
569
+ ...props
570
+ }) {
571
+ const Comp = asChild ? Slot2 : "div";
572
+ return /* @__PURE__ */ jsxDEV7(Comp, {
573
+ "data-slot": "sidebar-group-label",
574
+ "data-sidebar": "group-label",
575
+ className: cn7("text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0", className),
576
+ ...props
577
+ }, undefined, false, undefined, this);
578
+ }
579
+ function SidebarGroupAction({
580
+ className,
581
+ asChild = false,
582
+ ...props
583
+ }) {
584
+ const Comp = asChild ? Slot2 : "button";
585
+ return /* @__PURE__ */ jsxDEV7(Comp, {
586
+ "data-slot": "sidebar-group-action",
587
+ "data-sidebar": "group-action",
588
+ className: cn7("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "group-data-[collapsible=icon]:hidden", className),
589
+ ...props
590
+ }, undefined, false, undefined, this);
591
+ }
592
+ function SidebarGroupContent({
593
+ className,
594
+ ...props
595
+ }) {
596
+ return /* @__PURE__ */ jsxDEV7("div", {
597
+ "data-slot": "sidebar-group-content",
598
+ "data-sidebar": "group-content",
599
+ className: cn7("w-full text-sm", className),
600
+ ...props
601
+ }, undefined, false, undefined, this);
602
+ }
603
+ function SidebarMenu({
604
+ className,
605
+ ...props
606
+ }) {
607
+ return /* @__PURE__ */ jsxDEV7("ul", {
608
+ "data-slot": "sidebar-menu",
609
+ "data-sidebar": "menu",
610
+ className: cn7("flex w-full min-w-0 flex-col gap-1", className),
611
+ ...props
612
+ }, undefined, false, undefined, this);
613
+ }
614
+ function SidebarMenuItem({
615
+ className,
616
+ ...props
617
+ }) {
618
+ return /* @__PURE__ */ jsxDEV7("li", {
619
+ "data-slot": "sidebar-menu-item",
620
+ "data-sidebar": "menu-item",
621
+ className: cn7("group/menu-item relative", className),
622
+ ...props
623
+ }, undefined, false, undefined, this);
624
+ }
625
+ var sidebarMenuButtonVariants = cva2("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", {
626
+ variants: {
627
+ variant: {
628
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
629
+ 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))]"
630
+ },
631
+ size: {
632
+ default: "h-8 text-sm",
633
+ sm: "h-7 text-xs",
634
+ lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!"
635
+ }
636
+ },
637
+ defaultVariants: {
638
+ variant: "default",
639
+ size: "default"
640
+ }
288
641
  });
289
- function SidebarMenuButton({ asChild = false, isActive = false, variant = "default", size = "default", tooltip, className, ...props }) {
290
- const Comp = asChild ? Slot : "button";
291
- const { isMobile, state } = useSidebar();
292
- const button = /* @__PURE__ */ jsx(Comp, {
293
- "data-slot": "sidebar-menu-button",
294
- "data-sidebar": "menu-button",
295
- "data-size": size,
296
- "data-active": isActive,
297
- className: cn(sidebarMenuButtonVariants({
298
- variant,
299
- size
300
- }), className),
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
- side: "right",
310
- align: "center",
311
- hidden: state !== "collapsed" || isMobile,
312
- ...tooltip
313
- })] });
314
- }
315
- function SidebarMenuAction({ className, asChild = false, showOnHover = false, ...props }) {
316
- return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
317
- "data-slot": "sidebar-menu-action",
318
- "data-sidebar": "menu-action",
319
- className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", showOnHover && "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0", className),
320
- ...props
321
- });
322
- }
323
- function SidebarMenuBadge({ className, ...props }) {
324
- return /* @__PURE__ */ jsx("div", {
325
- "data-slot": "sidebar-menu-badge",
326
- "data-sidebar": "menu-badge",
327
- className: cn("text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none", "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", className),
328
- ...props
329
- });
330
- }
331
- function SidebarMenuSkeleton({ className, showIcon = false, ...props }) {
332
- const width = React$1.useMemo(() => {
333
- return `${Math.floor(Math.random() * 40) + 50}%`;
334
- }, []);
335
- return /* @__PURE__ */ jsxs("div", {
336
- "data-slot": "sidebar-menu-skeleton",
337
- "data-sidebar": "menu-skeleton",
338
- className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
339
- ...props,
340
- children: [showIcon && /* @__PURE__ */ jsx(Skeleton, {
341
- className: "size-4 rounded-md",
342
- "data-sidebar": "menu-skeleton-icon"
343
- }), /* @__PURE__ */ jsx(Skeleton, {
344
- className: "h-4 max-w-(--skeleton-width) flex-1",
345
- "data-sidebar": "menu-skeleton-text",
346
- style: { "--skeleton-width": width }
347
- })]
348
- });
349
- }
350
- function SidebarMenuSub({ className, ...props }) {
351
- return /* @__PURE__ */ jsx("ul", {
352
- "data-slot": "sidebar-menu-sub",
353
- "data-sidebar": "menu-sub",
354
- className: cn("border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5", "group-data-[collapsible=icon]:hidden", className),
355
- ...props
356
- });
357
- }
358
- function SidebarMenuSubItem({ className, ...props }) {
359
- return /* @__PURE__ */ jsx("li", {
360
- "data-slot": "sidebar-menu-sub-item",
361
- "data-sidebar": "menu-sub-item",
362
- className: cn("group/menu-sub-item relative", className),
363
- ...props
364
- });
365
- }
366
- function SidebarMenuSubButton({ asChild = false, size = "md", isActive = false, className, ...props }) {
367
- return /* @__PURE__ */ jsx(asChild ? Slot : "a", {
368
- "data-slot": "sidebar-menu-sub-button",
369
- "data-sidebar": "menu-sub-button",
370
- "data-size": size,
371
- "data-active": isActive,
372
- className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground", size === "sm" && "text-xs", size === "md" && "text-sm", "group-data-[collapsible=icon]:hidden", className),
373
- ...props
374
- });
642
+ function SidebarMenuButton({
643
+ asChild = false,
644
+ isActive = false,
645
+ variant = "default",
646
+ size = "default",
647
+ tooltip,
648
+ className,
649
+ ...props
650
+ }) {
651
+ const Comp = asChild ? Slot2 : "button";
652
+ const { isMobile, state } = useSidebar();
653
+ const button = /* @__PURE__ */ jsxDEV7(Comp, {
654
+ "data-slot": "sidebar-menu-button",
655
+ "data-sidebar": "menu-button",
656
+ "data-size": size,
657
+ "data-active": isActive,
658
+ className: cn7(sidebarMenuButtonVariants({ variant, size }), className),
659
+ ...props
660
+ }, undefined, false, undefined, this);
661
+ if (!tooltip) {
662
+ return button;
663
+ }
664
+ if (typeof tooltip === "string") {
665
+ tooltip = {
666
+ children: tooltip
667
+ };
668
+ }
669
+ return /* @__PURE__ */ jsxDEV7(Tooltip, {
670
+ children: [
671
+ /* @__PURE__ */ jsxDEV7(TooltipTrigger, {
672
+ asChild: true,
673
+ children: button
674
+ }, undefined, false, undefined, this),
675
+ /* @__PURE__ */ jsxDEV7(TooltipContent, {
676
+ side: "right",
677
+ align: "center",
678
+ hidden: state !== "collapsed" || isMobile,
679
+ ...tooltip
680
+ }, undefined, false, undefined, this)
681
+ ]
682
+ }, undefined, true, undefined, this);
375
683
  }
376
-
377
- //#endregion
378
- 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 };
379
- //# sourceMappingURL=sidebar.js.map
684
+ function SidebarMenuAction({
685
+ className,
686
+ asChild = false,
687
+ showOnHover = false,
688
+ ...props
689
+ }) {
690
+ const Comp = asChild ? Slot2 : "button";
691
+ return /* @__PURE__ */ jsxDEV7(Comp, {
692
+ "data-slot": "sidebar-menu-action",
693
+ "data-sidebar": "menu-action",
694
+ className: cn7("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", showOnHover && "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0", className),
695
+ ...props
696
+ }, undefined, false, undefined, this);
697
+ }
698
+ function SidebarMenuBadge({
699
+ className,
700
+ ...props
701
+ }) {
702
+ return /* @__PURE__ */ jsxDEV7("div", {
703
+ "data-slot": "sidebar-menu-badge",
704
+ "data-sidebar": "menu-badge",
705
+ className: cn7("text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none", "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", className),
706
+ ...props
707
+ }, undefined, false, undefined, this);
708
+ }
709
+ function SidebarMenuSkeleton({
710
+ className,
711
+ showIcon = false,
712
+ ...props
713
+ }) {
714
+ const width = React3.useMemo(() => {
715
+ return `${Math.floor(Math.random() * 40) + 50}%`;
716
+ }, []);
717
+ return /* @__PURE__ */ jsxDEV7("div", {
718
+ "data-slot": "sidebar-menu-skeleton",
719
+ "data-sidebar": "menu-skeleton",
720
+ className: cn7("flex h-8 items-center gap-2 rounded-md px-2", className),
721
+ ...props,
722
+ children: [
723
+ showIcon && /* @__PURE__ */ jsxDEV7(Skeleton, {
724
+ className: "size-4 rounded-md",
725
+ "data-sidebar": "menu-skeleton-icon"
726
+ }, undefined, false, undefined, this),
727
+ /* @__PURE__ */ jsxDEV7(Skeleton, {
728
+ className: "h-4 max-w-(--skeleton-width) flex-1",
729
+ "data-sidebar": "menu-skeleton-text",
730
+ style: {
731
+ "--skeleton-width": width
732
+ }
733
+ }, undefined, false, undefined, this)
734
+ ]
735
+ }, undefined, true, undefined, this);
736
+ }
737
+ function SidebarMenuSub({
738
+ className,
739
+ ...props
740
+ }) {
741
+ return /* @__PURE__ */ jsxDEV7("ul", {
742
+ "data-slot": "sidebar-menu-sub",
743
+ "data-sidebar": "menu-sub",
744
+ className: cn7("border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5", "group-data-[collapsible=icon]:hidden", className),
745
+ ...props
746
+ }, undefined, false, undefined, this);
747
+ }
748
+ function SidebarMenuSubItem({
749
+ className,
750
+ ...props
751
+ }) {
752
+ return /* @__PURE__ */ jsxDEV7("li", {
753
+ "data-slot": "sidebar-menu-sub-item",
754
+ "data-sidebar": "menu-sub-item",
755
+ className: cn7("group/menu-sub-item relative", className),
756
+ ...props
757
+ }, undefined, false, undefined, this);
758
+ }
759
+ function SidebarMenuSubButton({
760
+ asChild = false,
761
+ size = "md",
762
+ isActive = false,
763
+ className,
764
+ ...props
765
+ }) {
766
+ const Comp = asChild ? Slot2 : "a";
767
+ return /* @__PURE__ */ jsxDEV7(Comp, {
768
+ "data-slot": "sidebar-menu-sub-button",
769
+ "data-sidebar": "menu-sub-button",
770
+ "data-size": size,
771
+ "data-active": isActive,
772
+ className: cn7("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground", size === "sm" && "text-xs", size === "md" && "text-sm", "group-data-[collapsible=icon]:hidden", className),
773
+ ...props
774
+ }, undefined, false, undefined, this);
775
+ }
776
+ export {
777
+ useSidebar,
778
+ SidebarTrigger,
779
+ SidebarSeparator,
780
+ SidebarRail,
781
+ SidebarProvider,
782
+ SidebarMenuSubItem,
783
+ SidebarMenuSubButton,
784
+ SidebarMenuSub,
785
+ SidebarMenuSkeleton,
786
+ SidebarMenuItem,
787
+ SidebarMenuButton,
788
+ SidebarMenuBadge,
789
+ SidebarMenuAction,
790
+ SidebarMenu,
791
+ SidebarInset,
792
+ SidebarInput,
793
+ SidebarHeader,
794
+ SidebarGroupLabel,
795
+ SidebarGroupContent,
796
+ SidebarGroupAction,
797
+ SidebarGroup,
798
+ SidebarFooter,
799
+ SidebarContent,
800
+ Sidebar
801
+ };