@contractspec/lib.ui-kit-web 0.0.0-canary-20260113162409

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 (424) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +109 -0
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.js +0 -0
  5. package/dist/ui/accordion.d.ts +25 -0
  6. package/dist/ui/accordion.d.ts.map +1 -0
  7. package/dist/ui/accordion.js +48 -0
  8. package/dist/ui/accordion.js.map +1 -0
  9. package/dist/ui/alert-dialog.d.ts +49 -0
  10. package/dist/ui/alert-dialog.d.ts.map +1 -0
  11. package/dist/ui/alert-dialog.js +85 -0
  12. package/dist/ui/alert-dialog.js.map +1 -0
  13. package/dist/ui/alert.d.ts +25 -0
  14. package/dist/ui/alert.d.ts.map +1 -0
  15. package/dist/ui/alert.js +39 -0
  16. package/dist/ui/alert.js.map +1 -0
  17. package/dist/ui/aspect-ratio.d.ts +8 -0
  18. package/dist/ui/aspect-ratio.d.ts.map +1 -0
  19. package/dist/ui/aspect-ratio.js +10 -0
  20. package/dist/ui/aspect-ratio.js.map +1 -0
  21. package/dist/ui/atoms/FilterSelect/FilterSelect.d.ts +8 -0
  22. package/dist/ui/atoms/FilterSelect/FilterSelect.d.ts.map +1 -0
  23. package/dist/ui/atoms/FilterSelect/FilterSelect.js +53 -0
  24. package/dist/ui/atoms/FilterSelect/FilterSelect.js.map +1 -0
  25. package/dist/ui/atoms/FilterSelect/index.d.ts +3 -0
  26. package/dist/ui/atoms/FilterSelect/index.js +3 -0
  27. package/dist/ui/atoms/FilterSelect/types.d.ts +19 -0
  28. package/dist/ui/atoms/FilterSelect/types.d.ts.map +1 -0
  29. package/dist/ui/atoms/FilterSelect/types.js +0 -0
  30. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.d.ts +23 -0
  31. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.d.ts.map +1 -0
  32. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.js +46 -0
  33. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.js.map +1 -0
  34. package/dist/ui/atoms/LoadingSpinner/index.d.ts +2 -0
  35. package/dist/ui/atoms/LoadingSpinner/index.js +3 -0
  36. package/dist/ui/atoms/Pagination/Pagination.d.ts +8 -0
  37. package/dist/ui/atoms/Pagination/Pagination.d.ts.map +1 -0
  38. package/dist/ui/atoms/Pagination/Pagination.js +157 -0
  39. package/dist/ui/atoms/Pagination/Pagination.js.map +1 -0
  40. package/dist/ui/atoms/Pagination/index.d.ts +3 -0
  41. package/dist/ui/atoms/Pagination/index.js +3 -0
  42. package/dist/ui/atoms/Pagination/types.d.ts +16 -0
  43. package/dist/ui/atoms/Pagination/types.d.ts.map +1 -0
  44. package/dist/ui/atoms/Pagination/types.js +0 -0
  45. package/dist/ui/atoms/SearchInput/SearchInput.d.ts +8 -0
  46. package/dist/ui/atoms/SearchInput/SearchInput.d.ts.map +1 -0
  47. package/dist/ui/atoms/SearchInput/SearchInput.js +50 -0
  48. package/dist/ui/atoms/SearchInput/SearchInput.js.map +1 -0
  49. package/dist/ui/atoms/SearchInput/index.d.ts +3 -0
  50. package/dist/ui/atoms/SearchInput/index.js +3 -0
  51. package/dist/ui/atoms/SearchInput/types.d.ts +13 -0
  52. package/dist/ui/atoms/SearchInput/types.d.ts.map +1 -0
  53. package/dist/ui/atoms/SearchInput/types.js +0 -0
  54. package/dist/ui/avatar.d.ts +20 -0
  55. package/dist/ui/avatar.d.ts.map +1 -0
  56. package/dist/ui/avatar.js +33 -0
  57. package/dist/ui/avatar.js.map +1 -0
  58. package/dist/ui/badge.d.ts +20 -0
  59. package/dist/ui/badge.d.ts.map +1 -0
  60. package/dist/ui/badge.js +27 -0
  61. package/dist/ui/badge.js.map +1 -0
  62. package/dist/ui/breadcrumb.d.ts +38 -0
  63. package/dist/ui/breadcrumb.d.ts.map +1 -0
  64. package/dist/ui/breadcrumb.js +72 -0
  65. package/dist/ui/breadcrumb.js.map +1 -0
  66. package/dist/ui/button.d.ts +21 -0
  67. package/dist/ui/button.d.ts.map +1 -0
  68. package/dist/ui/button.js +55 -0
  69. package/dist/ui/button.js.map +1 -0
  70. package/dist/ui/calendar.d.ts +27 -0
  71. package/dist/ui/calendar.d.ts.map +1 -0
  72. package/dist/ui/calendar.js +109 -0
  73. package/dist/ui/calendar.js.map +1 -0
  74. package/dist/ui/card.d.ts +35 -0
  75. package/dist/ui/card.d.ts.map +1 -0
  76. package/dist/ui/card.js +58 -0
  77. package/dist/ui/card.js.map +1 -0
  78. package/dist/ui/carousel.d.ts +48 -0
  79. package/dist/ui/carousel.d.ts.map +1 -0
  80. package/dist/ui/carousel.js +136 -0
  81. package/dist/ui/carousel.js.map +1 -0
  82. package/dist/ui/checkbox.d.ts +12 -0
  83. package/dist/ui/checkbox.d.ts.map +1 -0
  84. package/dist/ui/checkbox.js +25 -0
  85. package/dist/ui/checkbox.js.map +1 -0
  86. package/dist/ui/collapsible.d.ts +16 -0
  87. package/dist/ui/collapsible.d.ts.map +1 -0
  88. package/dist/ui/collapsible.js +28 -0
  89. package/dist/ui/collapsible.js.map +1 -0
  90. package/dist/ui/command.d.ts +53 -0
  91. package/dist/ui/command.d.ts.map +1 -0
  92. package/dist/ui/command.js +90 -0
  93. package/dist/ui/command.js.map +1 -0
  94. package/dist/ui/confirm-dialog.d.ts +31 -0
  95. package/dist/ui/confirm-dialog.d.ts.map +1 -0
  96. package/dist/ui/confirm-dialog.js +34 -0
  97. package/dist/ui/confirm-dialog.js.map +1 -0
  98. package/dist/ui/context-menu.d.ts +35 -0
  99. package/dist/ui/context-menu.d.ts.map +1 -0
  100. package/dist/ui/context-menu.js +84 -0
  101. package/dist/ui/context-menu.js.map +1 -0
  102. package/dist/ui/cta.d.ts +23 -0
  103. package/dist/ui/cta.d.ts.map +1 -0
  104. package/dist/ui/cta.js +39 -0
  105. package/dist/ui/cta.js.map +1 -0
  106. package/dist/ui/date-picker.d.ts +26 -0
  107. package/dist/ui/date-picker.d.ts.map +1 -0
  108. package/dist/ui/date-picker.js +101 -0
  109. package/dist/ui/date-picker.js.map +1 -0
  110. package/dist/ui/date-range-picker.d.ts +26 -0
  111. package/dist/ui/date-range-picker.d.ts.map +1 -0
  112. package/dist/ui/date-range-picker.js +54 -0
  113. package/dist/ui/date-range-picker.js.map +1 -0
  114. package/dist/ui/datetime-picker.d.ts +28 -0
  115. package/dist/ui/datetime-picker.d.ts.map +1 -0
  116. package/dist/ui/datetime-picker.js +44 -0
  117. package/dist/ui/datetime-picker.js.map +1 -0
  118. package/dist/ui/dialog.d.ts +48 -0
  119. package/dist/ui/dialog.d.ts.map +1 -0
  120. package/dist/ui/dialog.js +90 -0
  121. package/dist/ui/dialog.js.map +1 -0
  122. package/dist/ui/drawer.d.ts +45 -0
  123. package/dist/ui/drawer.d.ts.map +1 -0
  124. package/dist/ui/drawer.js +82 -0
  125. package/dist/ui/drawer.js.map +1 -0
  126. package/dist/ui/dropdown-menu.d.ts +78 -0
  127. package/dist/ui/dropdown-menu.d.ts.map +1 -0
  128. package/dist/ui/dropdown-menu.js +127 -0
  129. package/dist/ui/dropdown-menu.js.map +1 -0
  130. package/dist/ui/empty-state.d.ts +29 -0
  131. package/dist/ui/empty-state.d.ts.map +1 -0
  132. package/dist/ui/empty-state.js +43 -0
  133. package/dist/ui/empty-state.js.map +1 -0
  134. package/dist/ui/empty.d.ts +37 -0
  135. package/dist/ui/empty.d.ts.map +1 -0
  136. package/dist/ui/empty.js +62 -0
  137. package/dist/ui/empty.js.map +1 -0
  138. package/dist/ui/field.d.ts +66 -0
  139. package/dist/ui/field.d.ts.map +1 -0
  140. package/dist/ui/field.js +121 -0
  141. package/dist/ui/field.js.map +1 -0
  142. package/dist/ui/focus-on-route-change.d.ts +9 -0
  143. package/dist/ui/focus-on-route-change.d.ts.map +1 -0
  144. package/dist/ui/focus-on-route-change.js +17 -0
  145. package/dist/ui/focus-on-route-change.js.map +1 -0
  146. package/dist/ui/form.d.ts +47 -0
  147. package/dist/ui/form.d.ts.map +1 -0
  148. package/dist/ui/form.js +94 -0
  149. package/dist/ui/form.js.map +1 -0
  150. package/dist/ui/hover-card.d.ts +20 -0
  151. package/dist/ui/hover-card.d.ts.map +1 -0
  152. package/dist/ui/hover-card.js +36 -0
  153. package/dist/ui/hover-card.js.map +1 -0
  154. package/dist/ui/input-group.d.ts +44 -0
  155. package/dist/ui/input-group.d.ts.map +1 -0
  156. package/dist/ui/input-group.js +89 -0
  157. package/dist/ui/input-group.js.map +1 -0
  158. package/dist/ui/input-otp.d.ts +39 -0
  159. package/dist/ui/input-otp.d.ts.map +1 -0
  160. package/dist/ui/input-otp.js +46 -0
  161. package/dist/ui/input-otp.js.map +1 -0
  162. package/dist/ui/input.d.ts +13 -0
  163. package/dist/ui/input.d.ts.map +1 -0
  164. package/dist/ui/input.js +17 -0
  165. package/dist/ui/input.js.map +1 -0
  166. package/dist/ui/label.d.ts +12 -0
  167. package/dist/ui/label.d.ts.map +1 -0
  168. package/dist/ui/label.js +19 -0
  169. package/dist/ui/label.js.map +1 -0
  170. package/dist/ui/link.d.ts +9 -0
  171. package/dist/ui/link.d.ts.map +1 -0
  172. package/dist/ui/link.js +18 -0
  173. package/dist/ui/link.js.map +1 -0
  174. package/dist/ui/live-region.d.ts +17 -0
  175. package/dist/ui/live-region.d.ts.map +1 -0
  176. package/dist/ui/live-region.js +47 -0
  177. package/dist/ui/live-region.js.map +1 -0
  178. package/dist/ui/loading-button.d.ts +20 -0
  179. package/dist/ui/loading-button.d.ts.map +1 -0
  180. package/dist/ui/loading-button.js +21 -0
  181. package/dist/ui/loading-button.js.map +1 -0
  182. package/dist/ui/map/MapBase.d.ts +28 -0
  183. package/dist/ui/map/MapBase.d.ts.map +1 -0
  184. package/dist/ui/map/MapBase.js +46 -0
  185. package/dist/ui/map/MapBase.js.map +1 -0
  186. package/dist/ui/map/MapGeoJsonOverlay.d.ts +16 -0
  187. package/dist/ui/map/MapGeoJsonOverlay.d.ts.map +1 -0
  188. package/dist/ui/map/MapGeoJsonOverlay.js +37 -0
  189. package/dist/ui/map/MapGeoJsonOverlay.js.map +1 -0
  190. package/dist/ui/map/MapHeatmapH3.d.ts +18 -0
  191. package/dist/ui/map/MapHeatmapH3.d.ts.map +1 -0
  192. package/dist/ui/map/MapHeatmapH3.js +50 -0
  193. package/dist/ui/map/MapHeatmapH3.js.map +1 -0
  194. package/dist/ui/map/MapMarkers.d.ts +20 -0
  195. package/dist/ui/map/MapMarkers.d.ts.map +1 -0
  196. package/dist/ui/map/MapMarkers.js +39 -0
  197. package/dist/ui/map/MapMarkers.js.map +1 -0
  198. package/dist/ui/map/index.d.ts +5 -0
  199. package/dist/ui/map/index.js +6 -0
  200. package/dist/ui/marketing/FeatureGrid.d.ts +21 -0
  201. package/dist/ui/marketing/FeatureGrid.d.ts.map +1 -0
  202. package/dist/ui/marketing/FeatureGrid.js +35 -0
  203. package/dist/ui/marketing/FeatureGrid.js.map +1 -0
  204. package/dist/ui/marketing/Hero.d.ts +28 -0
  205. package/dist/ui/marketing/Hero.d.ts.map +1 -0
  206. package/dist/ui/marketing/Hero.js +53 -0
  207. package/dist/ui/marketing/Hero.js.map +1 -0
  208. package/dist/ui/marketing/PricingTable.d.ts +25 -0
  209. package/dist/ui/marketing/PricingTable.d.ts.map +1 -0
  210. package/dist/ui/marketing/PricingTable.js +60 -0
  211. package/dist/ui/marketing/PricingTable.js.map +1 -0
  212. package/dist/ui/marketing/index.d.ts +4 -0
  213. package/dist/ui/marketing/index.js +5 -0
  214. package/dist/ui/menubar.d.ts +85 -0
  215. package/dist/ui/menubar.d.ts.map +1 -0
  216. package/dist/ui/menubar.js +137 -0
  217. package/dist/ui/menubar.js.map +1 -0
  218. package/dist/ui/molecules/Autocomplete/index.d.ts +7 -0
  219. package/dist/ui/molecules/Autocomplete/index.d.ts.map +1 -0
  220. package/dist/ui/molecules/Autocomplete/index.js +85 -0
  221. package/dist/ui/molecules/Autocomplete/index.js.map +1 -0
  222. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.d.ts +8 -0
  223. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.d.ts.map +1 -0
  224. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.js +103 -0
  225. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.js.map +1 -0
  226. package/dist/ui/molecules/SearchAndFilter/index.d.ts +3 -0
  227. package/dist/ui/molecules/SearchAndFilter/index.js +3 -0
  228. package/dist/ui/molecules/SearchAndFilter/types.d.ts +24 -0
  229. package/dist/ui/molecules/SearchAndFilter/types.d.ts.map +1 -0
  230. package/dist/ui/molecules/SearchAndFilter/types.js +0 -0
  231. package/dist/ui/molecules/SkeletonList.d.ts +16 -0
  232. package/dist/ui/molecules/SkeletonList.d.ts.map +1 -0
  233. package/dist/ui/molecules/SkeletonList.js +15 -0
  234. package/dist/ui/molecules/SkeletonList.js.map +1 -0
  235. package/dist/ui/nav-layout.d.ts +71 -0
  236. package/dist/ui/nav-layout.d.ts.map +1 -0
  237. package/dist/ui/nav-layout.js +133 -0
  238. package/dist/ui/nav-layout.js.map +1 -0
  239. package/dist/ui/navigation-menu.d.ts +47 -0
  240. package/dist/ui/navigation-menu.d.ts.map +1 -0
  241. package/dist/ui/navigation-menu.js +83 -0
  242. package/dist/ui/navigation-menu.js.map +1 -0
  243. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.d.ts +30 -0
  244. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.d.ts.map +1 -0
  245. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.js +107 -0
  246. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.js.map +1 -0
  247. package/dist/ui/organisms/ErrorBoundary/index.d.ts +2 -0
  248. package/dist/ui/organisms/ErrorBoundary/index.js +3 -0
  249. package/dist/ui/organisms/ListPage/ListPage.d.ts +29 -0
  250. package/dist/ui/organisms/ListPage/ListPage.d.ts.map +1 -0
  251. package/dist/ui/organisms/ListPage/ListPage.js +198 -0
  252. package/dist/ui/organisms/ListPage/ListPage.js.map +1 -0
  253. package/dist/ui/organisms/ListPage/index.d.ts +3 -0
  254. package/dist/ui/organisms/ListPage/index.js +3 -0
  255. package/dist/ui/organisms/ListPage/types.d.ts +41 -0
  256. package/dist/ui/organisms/ListPage/types.d.ts.map +1 -0
  257. package/dist/ui/organisms/ListPage/types.js +0 -0
  258. package/dist/ui/page-header.d.ts +27 -0
  259. package/dist/ui/page-header.d.ts.map +1 -0
  260. package/dist/ui/page-header.js +40 -0
  261. package/dist/ui/page-header.js.map +1 -0
  262. package/dist/ui/pagination.d.ts +50 -0
  263. package/dist/ui/pagination.d.ts.map +1 -0
  264. package/dist/ui/pagination.js +65 -0
  265. package/dist/ui/pagination.js.map +1 -0
  266. package/dist/ui/popover.d.ts +23 -0
  267. package/dist/ui/popover.d.ts.map +1 -0
  268. package/dist/ui/popover.js +39 -0
  269. package/dist/ui/popover.js.map +1 -0
  270. package/dist/ui/progress.d.ts +13 -0
  271. package/dist/ui/progress.d.ts.map +1 -0
  272. package/dist/ui/progress.js +24 -0
  273. package/dist/ui/progress.js.map +1 -0
  274. package/dist/ui/radio-group.d.ts +16 -0
  275. package/dist/ui/radio-group.d.ts.map +1 -0
  276. package/dist/ui/radio-group.js +32 -0
  277. package/dist/ui/radio-group.js.map +1 -0
  278. package/dist/ui/resizable.d.ts +36 -0
  279. package/dist/ui/resizable.d.ts.map +1 -0
  280. package/dist/ui/resizable.js +25 -0
  281. package/dist/ui/resizable.js.map +1 -0
  282. package/dist/ui/route-announcer.d.ts +11 -0
  283. package/dist/ui/route-announcer.d.ts.map +1 -0
  284. package/dist/ui/route-announcer.js +22 -0
  285. package/dist/ui/route-announcer.js.map +1 -0
  286. package/dist/ui/scroll-area.d.ts +18 -0
  287. package/dist/ui/scroll-area.d.ts.map +1 -0
  288. package/dist/ui/scroll-area.js +40 -0
  289. package/dist/ui/scroll-area.js.map +1 -0
  290. package/dist/ui/section.d.ts +27 -0
  291. package/dist/ui/section.d.ts.map +1 -0
  292. package/dist/ui/section.js +63 -0
  293. package/dist/ui/section.js.map +1 -0
  294. package/dist/ui/select.d.ts +52 -0
  295. package/dist/ui/select.d.ts.map +1 -0
  296. package/dist/ui/select.js +100 -0
  297. package/dist/ui/select.js.map +1 -0
  298. package/dist/ui/separator.d.ts +14 -0
  299. package/dist/ui/separator.d.ts.map +1 -0
  300. package/dist/ui/separator.js +21 -0
  301. package/dist/ui/separator.js.map +1 -0
  302. package/dist/ui/sheet.d.ts +41 -0
  303. package/dist/ui/sheet.d.ts.map +1 -0
  304. package/dist/ui/sheet.js +86 -0
  305. package/dist/ui/sheet.js.map +1 -0
  306. package/dist/ui/sidebar.d.ts +167 -0
  307. package/dist/ui/sidebar.d.ts.map +1 -0
  308. package/dist/ui/sidebar.js +379 -0
  309. package/dist/ui/sidebar.js.map +1 -0
  310. package/dist/ui/skeleton.d.ts +11 -0
  311. package/dist/ui/skeleton.d.ts.map +1 -0
  312. package/dist/ui/skeleton.js +15 -0
  313. package/dist/ui/skeleton.js.map +1 -0
  314. package/dist/ui/skip-link.d.ts +17 -0
  315. package/dist/ui/skip-link.d.ts.map +1 -0
  316. package/dist/ui/skip-link.js +17 -0
  317. package/dist/ui/skip-link.js.map +1 -0
  318. package/dist/ui/slider.d.ts +16 -0
  319. package/dist/ui/slider.d.ts.map +1 -0
  320. package/dist/ui/slider.js +40 -0
  321. package/dist/ui/slider.js.map +1 -0
  322. package/dist/ui/sonner.d.ts +10 -0
  323. package/dist/ui/sonner.d.ts.map +1 -0
  324. package/dist/ui/sonner.js +24 -0
  325. package/dist/ui/sonner.js.map +1 -0
  326. package/dist/ui/stack.d.ts +48 -0
  327. package/dist/ui/stack.d.ts.map +1 -0
  328. package/dist/ui/stack.js +158 -0
  329. package/dist/ui/stack.js.map +1 -0
  330. package/dist/ui/stat-card-group.d.ts +19 -0
  331. package/dist/ui/stat-card-group.d.ts.map +1 -0
  332. package/dist/ui/stat-card-group.js +39 -0
  333. package/dist/ui/stat-card-group.js.map +1 -0
  334. package/dist/ui/stepper.d.ts +23 -0
  335. package/dist/ui/stepper.d.ts.map +1 -0
  336. package/dist/ui/stepper.js +37 -0
  337. package/dist/ui/stepper.js.map +1 -0
  338. package/dist/ui/switch.d.ts +15 -0
  339. package/dist/ui/switch.d.ts.map +1 -0
  340. package/dist/ui/switch.js +23 -0
  341. package/dist/ui/switch.js.map +1 -0
  342. package/dist/ui/table.d.ts +39 -0
  343. package/dist/ui/table.d.ts.map +1 -0
  344. package/dist/ui/table.js +71 -0
  345. package/dist/ui/table.js.map +1 -0
  346. package/dist/ui/tabs.d.ts +24 -0
  347. package/dist/ui/tabs.d.ts.map +1 -0
  348. package/dist/ui/tabs.js +40 -0
  349. package/dist/ui/tabs.js.map +1 -0
  350. package/dist/ui/text.d.ts +15 -0
  351. package/dist/ui/text.d.ts.map +1 -0
  352. package/dist/ui/text.js +16 -0
  353. package/dist/ui/text.js.map +1 -0
  354. package/dist/ui/textarea.d.ts +12 -0
  355. package/dist/ui/textarea.d.ts.map +1 -0
  356. package/dist/ui/textarea.js +16 -0
  357. package/dist/ui/textarea.js.map +1 -0
  358. package/dist/ui/time-picker.d.ts +22 -0
  359. package/dist/ui/time-picker.d.ts.map +1 -0
  360. package/dist/ui/time-picker.js +81 -0
  361. package/dist/ui/time-picker.js.map +1 -0
  362. package/dist/ui/toast.d.ts +20 -0
  363. package/dist/ui/toast.d.ts.map +1 -0
  364. package/dist/ui/toast.js +62 -0
  365. package/dist/ui/toast.js.map +1 -0
  366. package/dist/ui/toaster.d.ts +7 -0
  367. package/dist/ui/toaster.d.ts.map +1 -0
  368. package/dist/ui/toaster.js +27 -0
  369. package/dist/ui/toaster.js.map +1 -0
  370. package/dist/ui/toggle-group.d.ts +24 -0
  371. package/dist/ui/toggle-group.d.ts.map +1 -0
  372. package/dist/ui/toggle-group.js +48 -0
  373. package/dist/ui/toggle-group.js.map +1 -0
  374. package/dist/ui/toggle.d.ts +20 -0
  375. package/dist/ui/toggle.d.ts.map +1 -0
  376. package/dist/ui/toggle.js +41 -0
  377. package/dist/ui/toggle.js.map +1 -0
  378. package/dist/ui/tooltip.d.ts +24 -0
  379. package/dist/ui/tooltip.d.ts.map +1 -0
  380. package/dist/ui/tooltip.js +40 -0
  381. package/dist/ui/tooltip.js.map +1 -0
  382. package/dist/ui/typography.d.ts +65 -0
  383. package/dist/ui/typography.d.ts.map +1 -0
  384. package/dist/ui/typography.js +87 -0
  385. package/dist/ui/typography.js.map +1 -0
  386. package/dist/ui/use-media-query.d.ts +5 -0
  387. package/dist/ui/use-media-query.d.ts.map +1 -0
  388. package/dist/ui/use-media-query.js +20 -0
  389. package/dist/ui/use-media-query.js.map +1 -0
  390. package/dist/ui/use-mobile.d.ts +5 -0
  391. package/dist/ui/use-mobile.d.ts.map +1 -0
  392. package/dist/ui/use-mobile.js +21 -0
  393. package/dist/ui/use-mobile.js.map +1 -0
  394. package/dist/ui/use-reduced-motion.d.ts +5 -0
  395. package/dist/ui/use-reduced-motion.d.ts.map +1 -0
  396. package/dist/ui/use-reduced-motion.js +18 -0
  397. package/dist/ui/use-reduced-motion.js.map +1 -0
  398. package/dist/ui/use-toast.d.ts +50 -0
  399. package/dist/ui/use-toast.d.ts.map +1 -0
  400. package/dist/ui/use-toast.js +122 -0
  401. package/dist/ui/use-toast.js.map +1 -0
  402. package/dist/ui/useListState.d.ts +34 -0
  403. package/dist/ui/useListState.d.ts.map +1 -0
  404. package/dist/ui/useListState.js +75 -0
  405. package/dist/ui/useListState.js.map +1 -0
  406. package/dist/ui/usecases/UseCaseCard.d.ts +19 -0
  407. package/dist/ui/usecases/UseCaseCard.d.ts.map +1 -0
  408. package/dist/ui/usecases/UseCaseCard.js +35 -0
  409. package/dist/ui/usecases/UseCaseCard.js.map +1 -0
  410. package/dist/ui/usecases/UserStoryCard.d.ts +15 -0
  411. package/dist/ui/usecases/UserStoryCard.d.ts.map +1 -0
  412. package/dist/ui/usecases/UserStoryCard.js +36 -0
  413. package/dist/ui/usecases/UserStoryCard.js.map +1 -0
  414. package/dist/ui/usecases/index.d.ts +3 -0
  415. package/dist/ui/usecases/index.js +4 -0
  416. package/dist/ui/utils.d.ts +7 -0
  417. package/dist/ui/utils.d.ts.map +1 -0
  418. package/dist/ui/utils.js +11 -0
  419. package/dist/ui/utils.js.map +1 -0
  420. package/dist/ui/visually-hidden.d.ts +10 -0
  421. package/dist/ui/visually-hidden.d.ts.map +1 -0
  422. package/dist/ui/visually-hidden.js +31 -0
  423. package/dist/ui/visually-hidden.js.map +1 -0
  424. package/package.json +346 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Chaman Ventures, SASU
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,109 @@
1
+ # @contractspec/lib.ui-kit-web
2
+
3
+ Website: https://contractspec.io/
4
+
5
+
6
+ Web-specific UI components and primitives for Next.js/React applications, built on top of Radix UI and Tailwind CSS.
7
+
8
+ ## Purpose
9
+
10
+ To provide a comprehensive set of accessible, high-performance UI components specifically optimized for the modern web. While `@contractspec/lib.ui-kit` focuses on universal (native + web) compatibility, this library leverages web-only capabilities like portals, heavy data tables, and mapping libraries.
11
+
12
+ ## Installation
13
+
14
+ ```bash
15
+ npm install @contractspec/lib.ui-kit-web
16
+ # or
17
+ bun add @contractspec/lib.ui-kit-web
18
+ ```
19
+
20
+ ## Key Concepts
21
+
22
+ - **Radix UI Primitives**: Most components are unstyled accessible wrappers around Radix UI.
23
+ - **Shadcn UI Compatible**: Structure and styling closely follow the popular shadcn/ui patterns, making it easy to adopt and extend.
24
+ - **Web Optimizations**: Includes `SkipLink`, `VisuallyHidden`, and `LiveRegion` for WCAG compliance.
25
+ - **Mapping**: Integrated `maplibre-gl` components for geo-spatial visualizations.
26
+
27
+ ## Exports
28
+
29
+ ### Core UI
30
+
31
+ - Standard Radix wrappers: `accordion`, `dialog`, `dropdown-menu`, `popover`, `tabs`, etc.
32
+ - Forms: `input`, `select`, `checkbox`, `switch`, `slider`, `radio-group`.
33
+ - Feedback: `toast`, `alert`, `progress`, `skeleton`.
34
+
35
+ ### Web Specifics
36
+
37
+ - `ui/map/*`: `MapBase`, `MapGeoJsonOverlay`, `MapHeatmapH3`, `MapMarkers`.
38
+ - `ui/resizable`: Resizable panel layouts.
39
+ - `ui/scroll-area`: Custom cross-browser scrollbars.
40
+ - `ui/sonner`: High-performance toast notifications.
41
+
42
+ ### Accessibility
43
+
44
+ - `ui/skip-link`: For keyboard navigation users.
45
+ - `ui/visually-hidden`: For screen-reader only content.
46
+ - `ui/live-region`: Announce dynamic changes.
47
+ - `ui/route-announcer`: Announce page changes in SPAs.
48
+
49
+ ## Usage
50
+
51
+ ```tsx
52
+ import { Button } from '@contractspec/lib.ui-kit-web/ui/button';
53
+ import {
54
+ Dialog,
55
+ DialogContent,
56
+ DialogTrigger,
57
+ } from '@contractspec/lib.ui-kit-web/ui/dialog';
58
+ import { Input } from '@contractspec/lib.ui-kit-web/ui/input';
59
+
60
+ export function LoginModal() {
61
+ return (
62
+ <Dialog>
63
+ <DialogTrigger asChild>
64
+ <Button variant="outline">Login</Button>
65
+ </DialogTrigger>
66
+ <DialogContent className="sm:max-w-[425px]">
67
+ <div className="grid gap-4 py-4">
68
+ <Input id="email" placeholder="Email" />
69
+ <Button type="submit">Sign in</Button>
70
+ </div>
71
+ </DialogContent>
72
+ </Dialog>
73
+ );
74
+ }
75
+ ```
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
@@ -0,0 +1 @@
1
+ export { };
package/dist/index.js ADDED
File without changes
@@ -0,0 +1,25 @@
1
+ import * as React$1 from "react";
2
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
3
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
4
+
5
+ //#region ui/accordion.d.ts
6
+ declare function Accordion({
7
+ ...props
8
+ }: React$1.ComponentProps<typeof AccordionPrimitive.Root>): react_jsx_runtime0.JSX.Element;
9
+ declare function AccordionItem({
10
+ className,
11
+ ...props
12
+ }: React$1.ComponentProps<typeof AccordionPrimitive.Item>): react_jsx_runtime0.JSX.Element;
13
+ declare function AccordionTrigger({
14
+ className,
15
+ children,
16
+ ...props
17
+ }: React$1.ComponentProps<typeof AccordionPrimitive.Trigger>): react_jsx_runtime0.JSX.Element;
18
+ declare function AccordionContent({
19
+ className,
20
+ children,
21
+ ...props
22
+ }: React$1.ComponentProps<typeof AccordionPrimitive.Content>): react_jsx_runtime0.JSX.Element;
23
+ //#endregion
24
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
25
+ //# sourceMappingURL=accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.d.ts","names":[],"sources":["../../ui/accordion.tsx"],"sourcesContent":[],"mappings":";;;;;iBAQS,SAAA;;GAEN,OAAA,CAAM,sBAAsB,kBAAA,CAAmB,QAAK,kBAAA,CAAA,GAAA,CAAA;iBAI9C,aAAA;;;GAGN,OAAA,CAAM,sBAAsB,kBAAA,CAAmB,QAAK,kBAAA,CAAA,GAAA,CAAA;iBAU9C,gBAAA;;;;GAIN,OAAA,CAAM,sBAAsB,kBAAA,CAAmB,WAAQ,kBAAA,CAAA,GAAA,CAAA;AA5BM,iBA8CvD,gBAAA,CAzCS;EAAA,SAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EA6Cf,OAAA,CAAM,cA7CS,CAAA,OA6Ca,kBAAA,CAAmB,OA7ChC,CAAA,CAAA,EA6CwC,kBAAA,CAAA,GAAA,CAAA,OA7CxC"}
@@ -0,0 +1,48 @@
1
+ 'use client';
2
+
3
+ import "react";
4
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
5
+ import { ChevronDownIcon } from "lucide-react";
6
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+
9
+ //#region ui/accordion.tsx
10
+ function Accordion({ ...props }) {
11
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Root, {
12
+ "data-slot": "accordion",
13
+ ...props
14
+ });
15
+ }
16
+ function AccordionItem({ className, ...props }) {
17
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Item, {
18
+ "data-slot": "accordion-item",
19
+ className: cn("border-b last:border-b-0", className),
20
+ ...props
21
+ });
22
+ }
23
+ function AccordionTrigger({ className, children, ...props }) {
24
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Header, {
25
+ className: "flex",
26
+ children: /* @__PURE__ */ jsxs(AccordionPrimitive.Trigger, {
27
+ "data-slot": "accordion-trigger",
28
+ className: cn("focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium outline-hidden transition-all hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180", className),
29
+ ...props,
30
+ children: [children, /* @__PURE__ */ jsx(ChevronDownIcon, { className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })]
31
+ })
32
+ });
33
+ }
34
+ function AccordionContent({ className, children, ...props }) {
35
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Content, {
36
+ "data-slot": "accordion-content",
37
+ className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",
38
+ ...props,
39
+ children: /* @__PURE__ */ jsx("div", {
40
+ className: cn("pt-0 pb-4", className),
41
+ children
42
+ })
43
+ });
44
+ }
45
+
46
+ //#endregion
47
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
48
+ //# sourceMappingURL=accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.js","names":[],"sources":["../../ui/accordion.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { ChevronDownIcon } from 'lucide-react';\n\nimport { cn } from '@contractspec/lib.ui-kit-core/utils';\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn('border-b last:border-b-0', className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium outline-hidden transition-all hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180',\n className\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn('pt-0 pb-4', className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n"],"mappings":";;;;;;;;;AAQA,SAAS,UAAU,EACjB,GAAG,SACoD;AACvD,QAAO,oBAAC,mBAAmB;EAAK,aAAU;EAAY,GAAI;GAAS;;AAGrE,SAAS,cAAc,EACrB,WACA,GAAG,SACoD;AACvD,QACE,oBAAC,mBAAmB;EAClB,aAAU;EACV,WAAW,GAAG,4BAA4B,UAAU;EACpD,GAAI;GACJ;;AAIN,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACuD;AAC1D,QACE,oBAAC,mBAAmB;EAAO,WAAU;YACnC,qBAAC,mBAAmB;GAClB,aAAU;GACV,WAAW,GACT,gTACA,UACD;GACD,GAAI;cAEH,UACD,oBAAC,mBAAgB,WAAU,gHAAgH;IAChH;GACH;;AAIhC,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACuD;AAC1D,QACE,oBAAC,mBAAmB;EAClB,aAAU;EACV,WAAU;EACV,GAAI;YAEJ,oBAAC;GAAI,WAAW,GAAG,aAAa,UAAU;GAAG;IAAe;GACjC"}
@@ -0,0 +1,49 @@
1
+ import * as React$1 from "react";
2
+ import * as react_jsx_runtime258 from "react/jsx-runtime";
3
+ import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
4
+
5
+ //#region ui/alert-dialog.d.ts
6
+ declare function AlertDialog({
7
+ ...props
8
+ }: React$1.ComponentProps<typeof AlertDialogPrimitive.Root>): react_jsx_runtime258.JSX.Element;
9
+ declare function AlertDialogTrigger({
10
+ ...props
11
+ }: React$1.ComponentProps<typeof AlertDialogPrimitive.Trigger>): react_jsx_runtime258.JSX.Element;
12
+ declare function AlertDialogPortal({
13
+ ...props
14
+ }: React$1.ComponentProps<typeof AlertDialogPrimitive.Portal>): react_jsx_runtime258.JSX.Element;
15
+ declare function AlertDialogOverlay({
16
+ className,
17
+ ...props
18
+ }: React$1.ComponentProps<typeof AlertDialogPrimitive.Overlay>): react_jsx_runtime258.JSX.Element;
19
+ declare function AlertDialogContent({
20
+ className,
21
+ ...props
22
+ }: React$1.ComponentProps<typeof AlertDialogPrimitive.Content>): react_jsx_runtime258.JSX.Element;
23
+ declare function AlertDialogHeader({
24
+ className,
25
+ ...props
26
+ }: React$1.ComponentPropsWithoutRef<'div'>): react_jsx_runtime258.JSX.Element;
27
+ declare function AlertDialogFooter({
28
+ className,
29
+ ...props
30
+ }: React$1.ComponentPropsWithoutRef<'div'>): react_jsx_runtime258.JSX.Element;
31
+ declare function AlertDialogTitle({
32
+ className,
33
+ ...props
34
+ }: React$1.ComponentProps<typeof AlertDialogPrimitive.Title>): react_jsx_runtime258.JSX.Element;
35
+ declare function AlertDialogDescription({
36
+ className,
37
+ ...props
38
+ }: React$1.ComponentProps<typeof AlertDialogPrimitive.Description>): react_jsx_runtime258.JSX.Element;
39
+ declare function AlertDialogAction({
40
+ className,
41
+ ...props
42
+ }: React$1.ComponentProps<typeof AlertDialogPrimitive.Action>): react_jsx_runtime258.JSX.Element;
43
+ declare function AlertDialogCancel({
44
+ className,
45
+ ...props
46
+ }: React$1.ComponentProps<typeof AlertDialogPrimitive.Cancel>): react_jsx_runtime258.JSX.Element;
47
+ //#endregion
48
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
49
+ //# sourceMappingURL=alert-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-dialog.d.ts","names":[],"sources":["../../ui/alert-dialog.tsx"],"sourcesContent":[],"mappings":";;;;;iBAQS,WAAA;;GAEN,OAAA,CAAM,sBAAsB,oBAAA,CAAqB,QAAK,oBAAA,CAAA,GAAA,CAAA;iBAIhD,kBAAA;;GAEN,OAAA,CAAM,sBAAsB,oBAAA,CAAqB,WAAQ,oBAAA,CAAA,GAAA,CAAA;iBAMnD,iBAAA;;GAEN,OAAA,CAAM,sBAAsB,oBAAA,CAAqB,UAAO,oBAAA,CAAA,GAAA,CAAA;AArBU,iBA2B5D,kBAAA,CAtBW;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAyBjB,OAAA,CAAM,cAzBW,CAAA,OAyBW,oBAAA,CAAqB,OAzBhC,CAAA,CAAA,EAyBwC,oBAAA,CAAA,GAAA,CAAA,OAzBxC;iBAsCX,kBAAA,CApC2C;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAuCjD,OAAA,CAAM,cAvC2C,CAAA,OAuCrB,oBAAA,CAAqB,OAvCA,CAAA,CAAA,EAuCQ,oBAAA,CAAA,GAAA,CAAA,OAvCR;iBAuD3C,iBAAA,CAvDA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA0DN,OAAA,CAAM,wBA1DA,CAAA,KAAA,CAAA,CAAA,EA0D+B,oBAAA,CAAA,GAAA,CAAA,OA1D/B;iBAoEA,iBAAA,CApEgD;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAuEtD,OAAA,CAAM,wBAvEgD,CAAA,KAAA,CAAA,CAAA,EAuEjB,oBAAA,CAAA,GAAA,CAAA,OAvEiB;iBAoFhD,gBAAA,CApFgD;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAuFtD,OAAA,CAAM,cAvFgD,CAAA,OAuF1B,oBAAA,CAAqB,KAvFK,CAAA,CAAA,EAuFC,oBAAA,CAAA,GAAA,CAAA,OAvFD;AAAA,iBAiGhD,sBAAA,CA7FkB;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAgGxB,OAAA,CAAM,cAhGkB,CAAA,OAgGI,oBAAA,CAAqB,WAhGzB,CAAA,CAAA,EAgGqC,oBAAA,CAAA,GAAA,CAAA,OAhGrC;iBA0GlB,iBAAA,CAxG2C;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA2GjD,OAAA,CAAM,cA3G2C,CAAA,OA2GrB,oBAAA,CAAqB,MA3GA,CAAA,CAAA,EA2GO,oBAAA,CAAA,GAAA,CAAA,OA3GP;iBAoH3C,iBAAA,CApHA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAuHN,OAAA,CAAM,cAvHA,CAAA,OAuHsB,oBAAA,CAAqB,MAvH3C,CAAA,CAAA,EAuHkD,oBAAA,CAAA,GAAA,CAAA,OAvHlD"}
@@ -0,0 +1,85 @@
1
+ 'use client';
2
+
3
+ import { buttonVariants } from "./button.js";
4
+ import "react";
5
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
8
+
9
+ //#region ui/alert-dialog.tsx
10
+ function AlertDialog({ ...props }) {
11
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Root, {
12
+ "data-slot": "alert-dialog",
13
+ ...props
14
+ });
15
+ }
16
+ function AlertDialogTrigger({ ...props }) {
17
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Trigger, {
18
+ "data-slot": "alert-dialog-trigger",
19
+ ...props
20
+ });
21
+ }
22
+ function AlertDialogPortal({ ...props }) {
23
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Portal, {
24
+ "data-slot": "alert-dialog-portal",
25
+ ...props
26
+ });
27
+ }
28
+ function AlertDialogOverlay({ className, ...props }) {
29
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Overlay, {
30
+ "data-slot": "alert-dialog-overlay",
31
+ className: cn("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),
32
+ ...props
33
+ });
34
+ }
35
+ function AlertDialogContent({ className, ...props }) {
36
+ return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [/* @__PURE__ */ jsx(AlertDialogOverlay, {}), /* @__PURE__ */ jsx(AlertDialogPrimitive.Content, {
37
+ "data-slot": "alert-dialog-content",
38
+ className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className),
39
+ ...props
40
+ })] });
41
+ }
42
+ function AlertDialogHeader({ className, ...props }) {
43
+ return /* @__PURE__ */ jsx("div", {
44
+ "data-slot": "alert-dialog-header",
45
+ className: cn("flex flex-col gap-2 text-center sm:text-left", className),
46
+ ...props
47
+ });
48
+ }
49
+ function AlertDialogFooter({ className, ...props }) {
50
+ return /* @__PURE__ */ jsx("div", {
51
+ "data-slot": "alert-dialog-footer",
52
+ className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
53
+ ...props
54
+ });
55
+ }
56
+ function AlertDialogTitle({ className, ...props }) {
57
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Title, {
58
+ "data-slot": "alert-dialog-title",
59
+ className: cn("text-lg font-semibold", className),
60
+ ...props
61
+ });
62
+ }
63
+ function AlertDialogDescription({ className, ...props }) {
64
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Description, {
65
+ "data-slot": "alert-dialog-description",
66
+ className: cn("text-muted-foreground text-sm", className),
67
+ ...props
68
+ });
69
+ }
70
+ function AlertDialogAction({ className, ...props }) {
71
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Action, {
72
+ className: cn(buttonVariants(), className),
73
+ ...props
74
+ });
75
+ }
76
+ function AlertDialogCancel({ className, ...props }) {
77
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Cancel, {
78
+ className: cn(buttonVariants({ variant: "outline" }), className),
79
+ ...props
80
+ });
81
+ }
82
+
83
+ //#endregion
84
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
85
+ //# sourceMappingURL=alert-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-dialog.js","names":[],"sources":["../../ui/alert-dialog.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@contractspec/lib.ui-kit-core/utils';\nimport { buttonVariants } from './button';\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />;\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n );\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n );\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n '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',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogContent({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg',\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentPropsWithoutRef<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn('flex flex-col gap-2 text-center sm:text-left', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentPropsWithoutRef<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn('text-lg font-semibold', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants(), className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: 'outline' }), className)}\n {...props}\n />\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n"],"mappings":";;;;;;;;;AAQA,SAAS,YAAY,EACnB,GAAG,SACsD;AACzD,QAAO,oBAAC,qBAAqB;EAAK,aAAU;EAAe,GAAI;GAAS;;AAG1E,SAAS,mBAAmB,EAC1B,GAAG,SACyD;AAC5D,QACE,oBAAC,qBAAqB;EAAQ,aAAU;EAAuB,GAAI;GAAS;;AAIhF,SAAS,kBAAkB,EACzB,GAAG,SACwD;AAC3D,QACE,oBAAC,qBAAqB;EAAO,aAAU;EAAsB,GAAI;GAAS;;AAI9E,SAAS,mBAAmB,EAC1B,WACA,GAAG,SACyD;AAC5D,QACE,oBAAC,qBAAqB;EACpB,aAAU;EACV,WAAW,GACT,0JACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,mBAAmB,EAC1B,WACA,GAAG,SACyD;AAC5D,QACE,qBAAC,gCACC,oBAAC,uBAAqB,EACtB,oBAAC,qBAAqB;EACpB,aAAU;EACV,WAAW,GACT,+WACA,UACD;EACD,GAAI;GACJ,IACgB;;AAIxB,SAAS,kBAAkB,EACzB,WACA,GAAG,SACqC;AACxC,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,gDAAgD,UAAU;EACxE,GAAI;GACJ;;AAIN,SAAS,kBAAkB,EACzB,WACA,GAAG,SACqC;AACxC,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,0DACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,iBAAiB,EACxB,WACA,GAAG,SACuD;AAC1D,QACE,oBAAC,qBAAqB;EACpB,aAAU;EACV,WAAW,GAAG,yBAAyB,UAAU;EACjD,GAAI;GACJ;;AAIN,SAAS,uBAAuB,EAC9B,WACA,GAAG,SAC6D;AAChE,QACE,oBAAC,qBAAqB;EACpB,aAAU;EACV,WAAW,GAAG,iCAAiC,UAAU;EACzD,GAAI;GACJ;;AAIN,SAAS,kBAAkB,EACzB,WACA,GAAG,SACwD;AAC3D,QACE,oBAAC,qBAAqB;EACpB,WAAW,GAAG,gBAAgB,EAAE,UAAU;EAC1C,GAAI;GACJ;;AAIN,SAAS,kBAAkB,EACzB,WACA,GAAG,SACwD;AAC3D,QACE,oBAAC,qBAAqB;EACpB,WAAW,GAAG,eAAe,EAAE,SAAS,WAAW,CAAC,EAAE,UAAU;EAChE,GAAI;GACJ"}
@@ -0,0 +1,25 @@
1
+ import * as React$1 from "react";
2
+ import * as react_jsx_runtime269 from "react/jsx-runtime";
3
+ import { VariantProps } from "class-variance-authority";
4
+ import * as class_variance_authority_types22 from "class-variance-authority/types";
5
+
6
+ //#region ui/alert.d.ts
7
+ declare const alertVariants: (props?: ({
8
+ variant?: "default" | "destructive" | null | undefined;
9
+ } & class_variance_authority_types22.ClassProp) | undefined) => string;
10
+ declare function Alert({
11
+ className,
12
+ variant,
13
+ ...props
14
+ }: React$1.ComponentPropsWithoutRef<'div'> & VariantProps<typeof alertVariants>): react_jsx_runtime269.JSX.Element;
15
+ declare function AlertTitle({
16
+ className,
17
+ ...props
18
+ }: React$1.ComponentPropsWithoutRef<'div'>): react_jsx_runtime269.JSX.Element;
19
+ declare function AlertDescription({
20
+ className,
21
+ ...props
22
+ }: React$1.ComponentPropsWithoutRef<'div'>): react_jsx_runtime269.JSX.Element;
23
+ //#endregion
24
+ export { Alert, AlertDescription, AlertTitle };
25
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","names":[],"sources":["../../ui/alert.tsx"],"sourcesContent":[],"mappings":";;;;;;cAKM;;IAcL,gCAAA,CAAA;iBAEQ,KAAA;;;;GAIN,OAAA,CAAM,kCAAkC,oBAAoB,iBAAc,oBAAA,CAAA,GAAA,CAAA;AAxBX,iBAmCzD,UAAA,CAjBR;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAoBE,OAAA,CAAM,wBApBR,CAAA,KAAA,CAAA,CAAA,EAoBuC,oBAAA,CAAA,GAAA,CAAA,OApBvC;iBAiCQ,gBAAA,CA/BK;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAkCX,OAAA,CAAM,wBAlCK,CAAA,KAAA,CAAA,CAAA,EAkC0B,oBAAA,CAAA,GAAA,CAAA,OAlC1B"}
@@ -0,0 +1,39 @@
1
+ import "react";
2
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { cva } from "class-variance-authority";
5
+
6
+ //#region ui/alert.tsx
7
+ const alertVariants = cva("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", {
8
+ variants: { variant: {
9
+ default: "bg-card text-card-foreground",
10
+ destructive: "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"
11
+ } },
12
+ defaultVariants: { variant: "default" }
13
+ });
14
+ function Alert({ className, variant, ...props }) {
15
+ return /* @__PURE__ */ jsx("div", {
16
+ "data-slot": "alert",
17
+ role: "alert",
18
+ className: cn(alertVariants({ variant }), className),
19
+ ...props
20
+ });
21
+ }
22
+ function AlertTitle({ className, ...props }) {
23
+ return /* @__PURE__ */ jsx("div", {
24
+ "data-slot": "alert-title",
25
+ className: cn("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight", className),
26
+ ...props
27
+ });
28
+ }
29
+ function AlertDescription({ className, ...props }) {
30
+ return /* @__PURE__ */ jsx("div", {
31
+ "data-slot": "alert-description",
32
+ className: cn("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed", className),
33
+ ...props
34
+ });
35
+ }
36
+
37
+ //#endregion
38
+ export { Alert, AlertDescription, AlertTitle };
39
+ //# sourceMappingURL=alert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.js","names":[],"sources":["../../ui/alert.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@contractspec/lib.ui-kit-core/utils';\n\nconst alertVariants = cva(\n 'relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',\n {\n variants: {\n variant: {\n default: 'bg-card text-card-foreground',\n destructive:\n 'text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentPropsWithoutRef<'div'> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({\n className,\n ...props\n}: React.ComponentPropsWithoutRef<'div'>) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n 'col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentPropsWithoutRef<'div'>) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n 'text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertTitle, AlertDescription };\n"],"mappings":";;;;;;AAKA,MAAM,gBAAgB,IACpB,qOACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,aACE;EACH,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;AAED,SAAS,MAAM,EACb,WACA,SACA,GAAG,SAC0E;AAC7E,QACE,oBAAC;EACC,aAAU;EACV,MAAK;EACL,WAAW,GAAG,cAAc,EAAE,SAAS,CAAC,EAAE,UAAU;EACpD,GAAI;GACJ;;AAIN,SAAS,WAAW,EAClB,WACA,GAAG,SACqC;AACxC,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,+DACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,iBAAiB,EACxB,WACA,GAAG,SACqC;AACxC,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,kGACA,UACD;EACD,GAAI;GACJ"}
@@ -0,0 +1,8 @@
1
+ import * as react6 from "react";
2
+ import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
3
+
4
+ //#region ui/aspect-ratio.d.ts
5
+ declare const AspectRatio: react6.ForwardRefExoticComponent<AspectRatioPrimitive.AspectRatioProps & react6.RefAttributes<HTMLDivElement>>;
6
+ //#endregion
7
+ export { AspectRatio };
8
+ //# sourceMappingURL=aspect-ratio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aspect-ratio.d.ts","names":[],"sources":["../../ui/aspect-ratio.tsx"],"sourcesContent":[],"mappings":";;;;cAIM,aAAW,MAAA,CAAA,0BAAA,oBAAA,CAAA,mBAAA,MAAA,CAAA,cAAA"}
@@ -0,0 +1,10 @@
1
+ 'use client';
2
+
3
+ import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
4
+
5
+ //#region ui/aspect-ratio.tsx
6
+ const AspectRatio = AspectRatioPrimitive.Root;
7
+
8
+ //#endregion
9
+ export { AspectRatio };
10
+ //# sourceMappingURL=aspect-ratio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aspect-ratio.js","names":[],"sources":["../../ui/aspect-ratio.tsx"],"sourcesContent":["'use client';\n\nimport * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';\n\nconst AspectRatio = AspectRatioPrimitive.Root;\n\nexport { AspectRatio };\n"],"mappings":";;;;;AAIA,MAAM,cAAc,qBAAqB"}
@@ -0,0 +1,8 @@
1
+ import { FilterSelectProps } from "./types.js";
2
+ import React from "react";
3
+
4
+ //#region ui/atoms/FilterSelect/FilterSelect.d.ts
5
+ declare const FilterSelect: React.FC<FilterSelectProps>;
6
+ //#endregion
7
+ export { FilterSelect };
8
+ //# sourceMappingURL=FilterSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterSelect.d.ts","names":[],"sources":["../../../../ui/atoms/FilterSelect/FilterSelect.tsx"],"sourcesContent":[],"mappings":";;;;cAWa,cAAc,KAAA,CAAM,GAAG"}
@@ -0,0 +1,53 @@
1
+ import { Label } from "../../label.js";
2
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../../select.js";
3
+ import React from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+
6
+ //#region ui/atoms/FilterSelect/FilterSelect.tsx
7
+ const FilterSelect = ({ value, options, onChange, placeholder = "Sélectionner...", label, disabled = false, className = "", showCounts = false }) => {
8
+ return /* @__PURE__ */ jsxs("div", {
9
+ className: `space-y-2 ${className}`,
10
+ children: [label && /* @__PURE__ */ jsx(Label, {
11
+ className: "text-foreground text-base font-medium",
12
+ children: label
13
+ }), /* @__PURE__ */ jsxs(Select, {
14
+ value,
15
+ onValueChange: onChange,
16
+ disabled,
17
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
18
+ className: "w-full",
19
+ children: /* @__PURE__ */ jsx(SelectValue, { placeholder })
20
+ }), /* @__PURE__ */ jsxs(SelectContent, {
21
+ className: "bg-background",
22
+ children: [/* @__PURE__ */ jsxs(SelectItem, {
23
+ value: "all",
24
+ children: ["Tous", showCounts && /* @__PURE__ */ jsxs("span", {
25
+ className: "text-muted-foreground ml-2 text-sm",
26
+ children: [
27
+ "(",
28
+ options.reduce((sum, option) => sum + (option.count || 0), 0),
29
+ ")"
30
+ ]
31
+ })]
32
+ }), options.map((option) => /* @__PURE__ */ jsx(SelectItem, {
33
+ value: option.value,
34
+ children: /* @__PURE__ */ jsxs("div", {
35
+ className: "flex w-full items-center justify-between",
36
+ children: [/* @__PURE__ */ jsx("span", { children: option.label }), showCounts && option.count !== void 0 && /* @__PURE__ */ jsxs("span", {
37
+ className: "text-muted-foreground ml-2 text-sm",
38
+ children: [
39
+ "(",
40
+ option.count,
41
+ ")"
42
+ ]
43
+ })]
44
+ })
45
+ }, option.value))]
46
+ })]
47
+ })]
48
+ });
49
+ };
50
+
51
+ //#endregion
52
+ export { FilterSelect };
53
+ //# sourceMappingURL=FilterSelect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterSelect.js","names":[],"sources":["../../../../ui/atoms/FilterSelect/FilterSelect.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../../select';\nimport { Label } from '../../label';\nimport type { FilterSelectProps } from './types';\n\nexport const FilterSelect: React.FC<FilterSelectProps> = ({\n value,\n options,\n onChange,\n placeholder = 'Sélectionner...',\n label,\n disabled = false,\n className = '',\n showCounts = false,\n}) => {\n return (\n <div className={`space-y-2 ${className}`}>\n {label && (\n <Label className=\"text-foreground text-base font-medium\">{label}</Label>\n )}\n <Select value={value} onValueChange={onChange} disabled={disabled}>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent className=\"bg-background\">\n {/* All/Reset option */}\n <SelectItem value=\"all\">\n Tous\n {showCounts && (\n <span className=\"text-muted-foreground ml-2 text-sm\">\n ({options.reduce((sum, option) => sum + (option.count || 0), 0)}\n )\n </span>\n )}\n </SelectItem>\n\n {/* Filter options */}\n {options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n <div className=\"flex w-full items-center justify-between\">\n <span>{option.label}</span>\n {showCounts && option.count !== undefined && (\n <span className=\"text-muted-foreground ml-2 text-sm\">\n ({option.count})\n </span>\n )}\n </div>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n};\n"],"mappings":";;;;;;AAWA,MAAa,gBAA6C,EACxD,OACA,SACA,UACA,cAAc,mBACd,OACA,WAAW,OACX,YAAY,IACZ,aAAa,YACT;AACJ,QACE,qBAAC;EAAI,WAAW,aAAa;aAC1B,SACC,oBAAC;GAAM,WAAU;aAAyC;IAAc,EAE1E,qBAAC;GAAc;GAAO,eAAe;GAAoB;cACvD,oBAAC;IAAc,WAAU;cACvB,oBAAC,eAAyB,cAAe;KAC3B,EAChB,qBAAC;IAAc,WAAU;eAEvB,qBAAC;KAAW,OAAM;gBAAM,QAErB,cACC,qBAAC;MAAK,WAAU;;OAAqC;OACjD,QAAQ,QAAQ,KAAK,WAAW,OAAO,OAAO,SAAS,IAAI,EAAE;OAAC;;OAE3D;MAEE,EAGZ,QAAQ,KAAK,WACZ,oBAAC;KAA8B,OAAO,OAAO;eAC3C,qBAAC;MAAI,WAAU;iBACb,oBAAC,oBAAM,OAAO,QAAa,EAC1B,cAAc,OAAO,UAAU,UAC9B,qBAAC;OAAK,WAAU;;QAAqC;QACjD,OAAO;QAAM;;QACV;OAEL;OARS,OAAO,MASX,CACb;KACY;IACT;GACL"}
@@ -0,0 +1,3 @@
1
+ import { FilterOption, FilterSelectProps } from "./types.js";
2
+ import { FilterSelect } from "./FilterSelect.js";
3
+ export { type FilterOption, FilterSelect, type FilterSelectProps };
@@ -0,0 +1,3 @@
1
+ import { FilterSelect } from "./FilterSelect.js";
2
+
3
+ export { FilterSelect };
@@ -0,0 +1,19 @@
1
+ //#region ui/atoms/FilterSelect/types.d.ts
2
+ interface FilterOption {
3
+ value: string;
4
+ label: string;
5
+ count?: number;
6
+ }
7
+ interface FilterSelectProps {
8
+ value: string;
9
+ options: FilterOption[];
10
+ onChange: (value: string) => void;
11
+ placeholder?: string;
12
+ label?: string;
13
+ disabled?: boolean;
14
+ className?: string;
15
+ showCounts?: boolean;
16
+ }
17
+ //#endregion
18
+ export { FilterOption, FilterSelectProps };
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../../ui/atoms/FilterSelect/types.ts"],"sourcesContent":[],"mappings":";UAAiB,YAAA;EAAA,KAAA,EAAA,MAAA;EAMA,KAAA,EAAA,MAAA;;;UAAA,iBAAA;;WAEN"}
File without changes
@@ -0,0 +1,23 @@
1
+ import React from "react";
2
+
3
+ //#region ui/atoms/LoadingSpinner/LoadingSpinner.d.ts
4
+ interface LoadingSpinnerProps {
5
+ size?: 'sm' | 'md' | 'lg' | 'xl';
6
+ className?: string;
7
+ text?: string;
8
+ fullScreen?: boolean;
9
+ }
10
+ declare const LoadingSpinner: React.FC<LoadingSpinnerProps>;
11
+ declare const SkeletonLine: React.FC<{
12
+ className?: string;
13
+ }>;
14
+ declare const SkeletonCard: React.FC<{
15
+ className?: string;
16
+ }>;
17
+ declare const SkeletonTable: React.FC<{
18
+ rows?: number;
19
+ cols?: number;
20
+ }>;
21
+ //#endregion
22
+ export { LoadingSpinner, SkeletonCard, SkeletonLine, SkeletonTable };
23
+ //# sourceMappingURL=LoadingSpinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingSpinner.d.ts","names":[],"sources":["../../../../ui/atoms/LoadingSpinner/LoadingSpinner.tsx"],"sourcesContent":[],"mappings":";;;UAIU,mBAAA;;EAAA,SAAA,CAAA,EAAA,MAAA;EAcG,IAAA,CAAA,EAAA,MAAA;EAgCA,UAAA,CAAA,EAAA,OAIZ;AAED;AAea,cArDA,cAqDe,EArDC,KAAA,CAAM,EAqDC,CArDE,mBAqDF,CAAA;cArBvB,cAAc,KAAA,CAAM;;;cAMpB,cAAc,KAAA,CAAM;;;cAepB,eAAe,KAAA,CAAM"}