@lssm/lib.ui-kit-web 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +1 -0
  3. package/dist/node_modules/sonner/dist/index.js +630 -0
  4. package/dist/node_modules/sonner/dist/index.js.map +1 -0
  5. package/dist/tsconfig.tsbuildinfo +1 -0
  6. package/dist/ui/accordion.d.ts +25 -0
  7. package/dist/ui/accordion.d.ts.map +1 -0
  8. package/dist/ui/accordion.js +49 -0
  9. package/dist/ui/accordion.js.map +1 -0
  10. package/dist/ui/alert-dialog.d.ts +49 -0
  11. package/dist/ui/alert-dialog.d.ts.map +1 -0
  12. package/dist/ui/alert-dialog.js +86 -0
  13. package/dist/ui/alert-dialog.js.map +1 -0
  14. package/dist/ui/alert.d.ts +25 -0
  15. package/dist/ui/alert.d.ts.map +1 -0
  16. package/dist/ui/alert.js +39 -0
  17. package/dist/ui/alert.js.map +1 -0
  18. package/dist/ui/aspect-ratio.d.ts +8 -0
  19. package/dist/ui/aspect-ratio.d.ts.map +1 -0
  20. package/dist/ui/aspect-ratio.js +11 -0
  21. package/dist/ui/aspect-ratio.js.map +1 -0
  22. package/dist/ui/atoms/FilterSelect/FilterSelect.d.ts +8 -0
  23. package/dist/ui/atoms/FilterSelect/FilterSelect.d.ts.map +1 -0
  24. package/dist/ui/atoms/FilterSelect/FilterSelect.js +53 -0
  25. package/dist/ui/atoms/FilterSelect/FilterSelect.js.map +1 -0
  26. package/dist/ui/atoms/FilterSelect/index.d.ts +3 -0
  27. package/dist/ui/atoms/FilterSelect/index.js +3 -0
  28. package/dist/ui/atoms/FilterSelect/types.d.ts +19 -0
  29. package/dist/ui/atoms/FilterSelect/types.d.ts.map +1 -0
  30. package/dist/ui/atoms/FilterSelect/types.js +1 -0
  31. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.d.ts +23 -0
  32. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.d.ts.map +1 -0
  33. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.js +46 -0
  34. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.js.map +1 -0
  35. package/dist/ui/atoms/LoadingSpinner/index.d.ts +2 -0
  36. package/dist/ui/atoms/LoadingSpinner/index.js +3 -0
  37. package/dist/ui/atoms/Pagination/Pagination.d.ts +8 -0
  38. package/dist/ui/atoms/Pagination/Pagination.d.ts.map +1 -0
  39. package/dist/ui/atoms/Pagination/Pagination.js +157 -0
  40. package/dist/ui/atoms/Pagination/Pagination.js.map +1 -0
  41. package/dist/ui/atoms/Pagination/index.d.ts +3 -0
  42. package/dist/ui/atoms/Pagination/index.js +3 -0
  43. package/dist/ui/atoms/Pagination/types.d.ts +16 -0
  44. package/dist/ui/atoms/Pagination/types.d.ts.map +1 -0
  45. package/dist/ui/atoms/Pagination/types.js +1 -0
  46. package/dist/ui/atoms/SearchInput/SearchInput.d.ts +8 -0
  47. package/dist/ui/atoms/SearchInput/SearchInput.d.ts.map +1 -0
  48. package/dist/ui/atoms/SearchInput/SearchInput.js +50 -0
  49. package/dist/ui/atoms/SearchInput/SearchInput.js.map +1 -0
  50. package/dist/ui/atoms/SearchInput/index.d.ts +3 -0
  51. package/dist/ui/atoms/SearchInput/index.js +3 -0
  52. package/dist/ui/atoms/SearchInput/types.d.ts +13 -0
  53. package/dist/ui/atoms/SearchInput/types.d.ts.map +1 -0
  54. package/dist/ui/atoms/SearchInput/types.js +1 -0
  55. package/dist/ui/avatar.d.ts +20 -0
  56. package/dist/ui/avatar.d.ts.map +1 -0
  57. package/dist/ui/avatar.js +34 -0
  58. package/dist/ui/avatar.js.map +1 -0
  59. package/dist/ui/badge.d.ts +20 -0
  60. package/dist/ui/badge.d.ts.map +1 -0
  61. package/dist/ui/badge.js +27 -0
  62. package/dist/ui/badge.js.map +1 -0
  63. package/dist/ui/breadcrumb.d.ts +38 -0
  64. package/dist/ui/breadcrumb.d.ts.map +1 -0
  65. package/dist/ui/breadcrumb.js +72 -0
  66. package/dist/ui/breadcrumb.js.map +1 -0
  67. package/dist/ui/button.d.ts +23 -0
  68. package/dist/ui/button.d.ts.map +1 -0
  69. package/dist/ui/button.js +44 -0
  70. package/dist/ui/button.js.map +1 -0
  71. package/dist/ui/calendar.d.ts +27 -0
  72. package/dist/ui/calendar.d.ts.map +1 -0
  73. package/dist/ui/calendar.js +110 -0
  74. package/dist/ui/calendar.js.map +1 -0
  75. package/dist/ui/card.d.ts +35 -0
  76. package/dist/ui/card.d.ts.map +1 -0
  77. package/dist/ui/card.js +58 -0
  78. package/dist/ui/card.js.map +1 -0
  79. package/dist/ui/carousel.d.ts +48 -0
  80. package/dist/ui/carousel.d.ts.map +1 -0
  81. package/dist/ui/carousel.js +137 -0
  82. package/dist/ui/carousel.js.map +1 -0
  83. package/dist/ui/checkbox.d.ts +12 -0
  84. package/dist/ui/checkbox.d.ts.map +1 -0
  85. package/dist/ui/checkbox.js +26 -0
  86. package/dist/ui/checkbox.js.map +1 -0
  87. package/dist/ui/collapsible.d.ts +16 -0
  88. package/dist/ui/collapsible.d.ts.map +1 -0
  89. package/dist/ui/collapsible.js +29 -0
  90. package/dist/ui/collapsible.js.map +1 -0
  91. package/dist/ui/command.d.ts +53 -0
  92. package/dist/ui/command.d.ts.map +1 -0
  93. package/dist/ui/command.js +91 -0
  94. package/dist/ui/command.js.map +1 -0
  95. package/dist/ui/confirm-dialog.d.ts +31 -0
  96. package/dist/ui/confirm-dialog.d.ts.map +1 -0
  97. package/dist/ui/confirm-dialog.js +34 -0
  98. package/dist/ui/confirm-dialog.js.map +1 -0
  99. package/dist/ui/context-menu.d.ts +35 -0
  100. package/dist/ui/context-menu.d.ts.map +1 -0
  101. package/dist/ui/context-menu.js +85 -0
  102. package/dist/ui/context-menu.js.map +1 -0
  103. package/dist/ui/cta.d.ts +15 -0
  104. package/dist/ui/cta.d.ts.map +1 -0
  105. package/dist/ui/cta.js +39 -0
  106. package/dist/ui/cta.js.map +1 -0
  107. package/dist/ui/date-picker.d.ts +26 -0
  108. package/dist/ui/date-picker.d.ts.map +1 -0
  109. package/dist/ui/date-picker.js +102 -0
  110. package/dist/ui/date-picker.js.map +1 -0
  111. package/dist/ui/date-range-picker.d.ts +26 -0
  112. package/dist/ui/date-range-picker.d.ts.map +1 -0
  113. package/dist/ui/date-range-picker.js +55 -0
  114. package/dist/ui/date-range-picker.js.map +1 -0
  115. package/dist/ui/datetime-picker.d.ts +28 -0
  116. package/dist/ui/datetime-picker.d.ts.map +1 -0
  117. package/dist/ui/datetime-picker.js +45 -0
  118. package/dist/ui/datetime-picker.js.map +1 -0
  119. package/dist/ui/dialog.d.ts +48 -0
  120. package/dist/ui/dialog.d.ts.map +1 -0
  121. package/dist/ui/dialog.js +91 -0
  122. package/dist/ui/dialog.js.map +1 -0
  123. package/dist/ui/drawer.d.ts +45 -0
  124. package/dist/ui/drawer.d.ts.map +1 -0
  125. package/dist/ui/drawer.js +83 -0
  126. package/dist/ui/drawer.js.map +1 -0
  127. package/dist/ui/dropdown-menu.d.ts +78 -0
  128. package/dist/ui/dropdown-menu.d.ts.map +1 -0
  129. package/dist/ui/dropdown-menu.js +128 -0
  130. package/dist/ui/dropdown-menu.js.map +1 -0
  131. package/dist/ui/empty-state.d.ts +29 -0
  132. package/dist/ui/empty-state.d.ts.map +1 -0
  133. package/dist/ui/empty-state.js +43 -0
  134. package/dist/ui/empty-state.js.map +1 -0
  135. package/dist/ui/empty.d.ts +36 -0
  136. package/dist/ui/empty.d.ts.map +1 -0
  137. package/dist/ui/empty.js +62 -0
  138. package/dist/ui/empty.js.map +1 -0
  139. package/dist/ui/field.d.ts +65 -0
  140. package/dist/ui/field.d.ts.map +1 -0
  141. package/dist/ui/field.js +122 -0
  142. package/dist/ui/field.js.map +1 -0
  143. package/dist/ui/focus-on-route-change.d.ts +9 -0
  144. package/dist/ui/focus-on-route-change.d.ts.map +1 -0
  145. package/dist/ui/focus-on-route-change.js +17 -0
  146. package/dist/ui/focus-on-route-change.js.map +1 -0
  147. package/dist/ui/form.d.ts +47 -0
  148. package/dist/ui/form.d.ts.map +1 -0
  149. package/dist/ui/form.js +95 -0
  150. package/dist/ui/form.js.map +1 -0
  151. package/dist/ui/hover-card.d.ts +20 -0
  152. package/dist/ui/hover-card.d.ts.map +1 -0
  153. package/dist/ui/hover-card.js +37 -0
  154. package/dist/ui/hover-card.js.map +1 -0
  155. package/dist/ui/input-group.d.ts +44 -0
  156. package/dist/ui/input-group.d.ts.map +1 -0
  157. package/dist/ui/input-group.js +84 -0
  158. package/dist/ui/input-group.js.map +1 -0
  159. package/dist/ui/input-otp.d.ts +39 -0
  160. package/dist/ui/input-otp.d.ts.map +1 -0
  161. package/dist/ui/input-otp.js +47 -0
  162. package/dist/ui/input-otp.js.map +1 -0
  163. package/dist/ui/input.d.ts +13 -0
  164. package/dist/ui/input.d.ts.map +1 -0
  165. package/dist/ui/input.js +17 -0
  166. package/dist/ui/input.js.map +1 -0
  167. package/dist/ui/label.d.ts +12 -0
  168. package/dist/ui/label.d.ts.map +1 -0
  169. package/dist/ui/label.js +20 -0
  170. package/dist/ui/label.js.map +1 -0
  171. package/dist/ui/link.d.ts +9 -0
  172. package/dist/ui/link.d.ts.map +1 -0
  173. package/dist/ui/link.js +18 -0
  174. package/dist/ui/link.js.map +1 -0
  175. package/dist/ui/live-region.d.ts +17 -0
  176. package/dist/ui/live-region.d.ts.map +1 -0
  177. package/dist/ui/live-region.js +48 -0
  178. package/dist/ui/live-region.js.map +1 -0
  179. package/dist/ui/loading-button.d.ts +20 -0
  180. package/dist/ui/loading-button.d.ts.map +1 -0
  181. package/dist/ui/loading-button.js +21 -0
  182. package/dist/ui/loading-button.js.map +1 -0
  183. package/dist/ui/map/MapBase.d.ts +29 -0
  184. package/dist/ui/map/MapBase.d.ts.map +1 -0
  185. package/dist/ui/map/MapBase.js +48 -0
  186. package/dist/ui/map/MapBase.js.map +1 -0
  187. package/dist/ui/map/MapGeoJsonOverlay.d.ts +16 -0
  188. package/dist/ui/map/MapGeoJsonOverlay.d.ts.map +1 -0
  189. package/dist/ui/map/MapGeoJsonOverlay.js +39 -0
  190. package/dist/ui/map/MapGeoJsonOverlay.js.map +1 -0
  191. package/dist/ui/map/MapHeatmapH3.d.ts +18 -0
  192. package/dist/ui/map/MapHeatmapH3.d.ts.map +1 -0
  193. package/dist/ui/map/MapHeatmapH3.js +52 -0
  194. package/dist/ui/map/MapHeatmapH3.js.map +1 -0
  195. package/dist/ui/map/MapMarkers.d.ts +20 -0
  196. package/dist/ui/map/MapMarkers.d.ts.map +1 -0
  197. package/dist/ui/map/MapMarkers.js +35 -0
  198. package/dist/ui/map/MapMarkers.js.map +1 -0
  199. package/dist/ui/map/index.d.ts +5 -0
  200. package/dist/ui/map/index.js +6 -0
  201. package/dist/ui/marketing/FeatureGrid.d.ts +21 -0
  202. package/dist/ui/marketing/FeatureGrid.d.ts.map +1 -0
  203. package/dist/ui/marketing/FeatureGrid.js +35 -0
  204. package/dist/ui/marketing/FeatureGrid.js.map +1 -0
  205. package/dist/ui/marketing/Hero.d.ts +28 -0
  206. package/dist/ui/marketing/Hero.d.ts.map +1 -0
  207. package/dist/ui/marketing/Hero.js +53 -0
  208. package/dist/ui/marketing/Hero.js.map +1 -0
  209. package/dist/ui/marketing/PricingTable.d.ts +25 -0
  210. package/dist/ui/marketing/PricingTable.d.ts.map +1 -0
  211. package/dist/ui/marketing/PricingTable.js +60 -0
  212. package/dist/ui/marketing/PricingTable.js.map +1 -0
  213. package/dist/ui/marketing/index.d.ts +4 -0
  214. package/dist/ui/marketing/index.js +5 -0
  215. package/dist/ui/menubar.d.ts +85 -0
  216. package/dist/ui/menubar.d.ts.map +1 -0
  217. package/dist/ui/menubar.js +138 -0
  218. package/dist/ui/menubar.js.map +1 -0
  219. package/dist/ui/molecules/Autocomplete/index.d.ts +7 -0
  220. package/dist/ui/molecules/Autocomplete/index.d.ts.map +1 -0
  221. package/dist/ui/molecules/Autocomplete/index.js +86 -0
  222. package/dist/ui/molecules/Autocomplete/index.js.map +1 -0
  223. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.d.ts +8 -0
  224. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.d.ts.map +1 -0
  225. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.js +103 -0
  226. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.js.map +1 -0
  227. package/dist/ui/molecules/SearchAndFilter/index.d.ts +3 -0
  228. package/dist/ui/molecules/SearchAndFilter/index.js +3 -0
  229. package/dist/ui/molecules/SearchAndFilter/types.d.ts +24 -0
  230. package/dist/ui/molecules/SearchAndFilter/types.d.ts.map +1 -0
  231. package/dist/ui/molecules/SearchAndFilter/types.js +1 -0
  232. package/dist/ui/molecules/SkeletonList.d.ts +16 -0
  233. package/dist/ui/molecules/SkeletonList.d.ts.map +1 -0
  234. package/dist/ui/molecules/SkeletonList.js +15 -0
  235. package/dist/ui/molecules/SkeletonList.js.map +1 -0
  236. package/dist/ui/nav-layout.d.ts +71 -0
  237. package/dist/ui/nav-layout.d.ts.map +1 -0
  238. package/dist/ui/nav-layout.js +133 -0
  239. package/dist/ui/nav-layout.js.map +1 -0
  240. package/dist/ui/navigation-menu.d.ts +47 -0
  241. package/dist/ui/navigation-menu.d.ts.map +1 -0
  242. package/dist/ui/navigation-menu.js +83 -0
  243. package/dist/ui/navigation-menu.js.map +1 -0
  244. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.d.ts +30 -0
  245. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.d.ts.map +1 -0
  246. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.js +112 -0
  247. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.js.map +1 -0
  248. package/dist/ui/organisms/ErrorBoundary/index.d.ts +2 -0
  249. package/dist/ui/organisms/ErrorBoundary/index.js +3 -0
  250. package/dist/ui/organisms/ListPage/ListPage.d.ts +29 -0
  251. package/dist/ui/organisms/ListPage/ListPage.d.ts.map +1 -0
  252. package/dist/ui/organisms/ListPage/ListPage.js +198 -0
  253. package/dist/ui/organisms/ListPage/ListPage.js.map +1 -0
  254. package/dist/ui/organisms/ListPage/index.d.ts +3 -0
  255. package/dist/ui/organisms/ListPage/index.js +3 -0
  256. package/dist/ui/organisms/ListPage/types.d.ts +41 -0
  257. package/dist/ui/organisms/ListPage/types.d.ts.map +1 -0
  258. package/dist/ui/organisms/ListPage/types.js +1 -0
  259. package/dist/ui/page-header.d.ts +27 -0
  260. package/dist/ui/page-header.d.ts.map +1 -0
  261. package/dist/ui/page-header.js +40 -0
  262. package/dist/ui/page-header.js.map +1 -0
  263. package/dist/ui/pagination.d.ts +50 -0
  264. package/dist/ui/pagination.d.ts.map +1 -0
  265. package/dist/ui/pagination.js +65 -0
  266. package/dist/ui/pagination.js.map +1 -0
  267. package/dist/ui/popover.d.ts +23 -0
  268. package/dist/ui/popover.d.ts.map +1 -0
  269. package/dist/ui/popover.js +40 -0
  270. package/dist/ui/popover.js.map +1 -0
  271. package/dist/ui/progress.d.ts +13 -0
  272. package/dist/ui/progress.d.ts.map +1 -0
  273. package/dist/ui/progress.js +25 -0
  274. package/dist/ui/progress.js.map +1 -0
  275. package/dist/ui/radio-group.d.ts +16 -0
  276. package/dist/ui/radio-group.d.ts.map +1 -0
  277. package/dist/ui/radio-group.js +33 -0
  278. package/dist/ui/radio-group.js.map +1 -0
  279. package/dist/ui/resizable.d.ts +36 -0
  280. package/dist/ui/resizable.d.ts.map +1 -0
  281. package/dist/ui/resizable.js +26 -0
  282. package/dist/ui/resizable.js.map +1 -0
  283. package/dist/ui/route-announcer.d.ts +11 -0
  284. package/dist/ui/route-announcer.d.ts.map +1 -0
  285. package/dist/ui/route-announcer.js +23 -0
  286. package/dist/ui/route-announcer.js.map +1 -0
  287. package/dist/ui/scroll-area.d.ts +18 -0
  288. package/dist/ui/scroll-area.d.ts.map +1 -0
  289. package/dist/ui/scroll-area.js +41 -0
  290. package/dist/ui/scroll-area.js.map +1 -0
  291. package/dist/ui/section.d.ts +27 -0
  292. package/dist/ui/section.d.ts.map +1 -0
  293. package/dist/ui/section.js +63 -0
  294. package/dist/ui/section.js.map +1 -0
  295. package/dist/ui/select.d.ts +52 -0
  296. package/dist/ui/select.d.ts.map +1 -0
  297. package/dist/ui/select.js +101 -0
  298. package/dist/ui/select.js.map +1 -0
  299. package/dist/ui/separator.d.ts +14 -0
  300. package/dist/ui/separator.d.ts.map +1 -0
  301. package/dist/ui/separator.js +22 -0
  302. package/dist/ui/separator.js.map +1 -0
  303. package/dist/ui/sheet.d.ts +41 -0
  304. package/dist/ui/sheet.d.ts.map +1 -0
  305. package/dist/ui/sheet.js +87 -0
  306. package/dist/ui/sheet.js.map +1 -0
  307. package/dist/ui/sidebar.d.ts +77 -0
  308. package/dist/ui/sidebar.d.ts.map +1 -0
  309. package/dist/ui/sidebar.js +380 -0
  310. package/dist/ui/sidebar.js.map +1 -0
  311. package/dist/ui/skeleton.d.ts +10 -0
  312. package/dist/ui/skeleton.d.ts.map +1 -0
  313. package/dist/ui/skeleton.js +15 -0
  314. package/dist/ui/skeleton.js.map +1 -0
  315. package/dist/ui/skip-link.d.ts +17 -0
  316. package/dist/ui/skip-link.d.ts.map +1 -0
  317. package/dist/ui/skip-link.js +17 -0
  318. package/dist/ui/skip-link.js.map +1 -0
  319. package/dist/ui/slider.d.ts +16 -0
  320. package/dist/ui/slider.d.ts.map +1 -0
  321. package/dist/ui/slider.js +41 -0
  322. package/dist/ui/slider.js.map +1 -0
  323. package/dist/ui/sonner.d.ts +10 -0
  324. package/dist/ui/sonner.d.ts.map +1 -0
  325. package/dist/ui/sonner.js +25 -0
  326. package/dist/ui/sonner.js.map +1 -0
  327. package/dist/ui/stack.d.ts +48 -0
  328. package/dist/ui/stack.d.ts.map +1 -0
  329. package/dist/ui/stack.js +158 -0
  330. package/dist/ui/stack.js.map +1 -0
  331. package/dist/ui/stat-card-group.d.ts +19 -0
  332. package/dist/ui/stat-card-group.d.ts.map +1 -0
  333. package/dist/ui/stat-card-group.js +39 -0
  334. package/dist/ui/stat-card-group.js.map +1 -0
  335. package/dist/ui/stepper.d.ts +23 -0
  336. package/dist/ui/stepper.d.ts.map +1 -0
  337. package/dist/ui/stepper.js +37 -0
  338. package/dist/ui/stepper.js.map +1 -0
  339. package/dist/ui/switch.d.ts +12 -0
  340. package/dist/ui/switch.d.ts.map +1 -0
  341. package/dist/ui/switch.js +24 -0
  342. package/dist/ui/switch.js.map +1 -0
  343. package/dist/ui/table.d.ts +39 -0
  344. package/dist/ui/table.d.ts.map +1 -0
  345. package/dist/ui/table.js +72 -0
  346. package/dist/ui/table.js.map +1 -0
  347. package/dist/ui/tabs.d.ts +24 -0
  348. package/dist/ui/tabs.d.ts.map +1 -0
  349. package/dist/ui/tabs.js +41 -0
  350. package/dist/ui/tabs.js.map +1 -0
  351. package/dist/ui/text.d.ts +16 -0
  352. package/dist/ui/text.d.ts.map +1 -0
  353. package/dist/ui/text.js +16 -0
  354. package/dist/ui/text.js.map +1 -0
  355. package/dist/ui/textarea.d.ts +12 -0
  356. package/dist/ui/textarea.d.ts.map +1 -0
  357. package/dist/ui/textarea.js +16 -0
  358. package/dist/ui/textarea.js.map +1 -0
  359. package/dist/ui/time-picker.d.ts +22 -0
  360. package/dist/ui/time-picker.d.ts.map +1 -0
  361. package/dist/ui/time-picker.js +82 -0
  362. package/dist/ui/time-picker.js.map +1 -0
  363. package/dist/ui/toast.d.ts +20 -0
  364. package/dist/ui/toast.d.ts.map +1 -0
  365. package/dist/ui/toast.js +63 -0
  366. package/dist/ui/toast.js.map +1 -0
  367. package/dist/ui/toaster.d.ts +7 -0
  368. package/dist/ui/toaster.d.ts.map +1 -0
  369. package/dist/ui/toaster.js +28 -0
  370. package/dist/ui/toaster.js.map +1 -0
  371. package/dist/ui/toggle-group.d.ts +24 -0
  372. package/dist/ui/toggle-group.d.ts.map +1 -0
  373. package/dist/ui/toggle-group.js +49 -0
  374. package/dist/ui/toggle-group.js.map +1 -0
  375. package/dist/ui/toggle.d.ts +20 -0
  376. package/dist/ui/toggle.d.ts.map +1 -0
  377. package/dist/ui/toggle.js +42 -0
  378. package/dist/ui/toggle.js.map +1 -0
  379. package/dist/ui/tooltip.d.ts +24 -0
  380. package/dist/ui/tooltip.d.ts.map +1 -0
  381. package/dist/ui/tooltip.js +41 -0
  382. package/dist/ui/tooltip.js.map +1 -0
  383. package/dist/ui/typography.d.ts +65 -0
  384. package/dist/ui/typography.d.ts.map +1 -0
  385. package/dist/ui/typography.js +87 -0
  386. package/dist/ui/typography.js.map +1 -0
  387. package/dist/ui/use-media-query.d.ts +5 -0
  388. package/dist/ui/use-media-query.d.ts.map +1 -0
  389. package/dist/ui/use-media-query.js +20 -0
  390. package/dist/ui/use-media-query.js.map +1 -0
  391. package/dist/ui/use-mobile.d.ts +5 -0
  392. package/dist/ui/use-mobile.d.ts.map +1 -0
  393. package/dist/ui/use-mobile.js +21 -0
  394. package/dist/ui/use-mobile.js.map +1 -0
  395. package/dist/ui/use-reduced-motion.d.ts +5 -0
  396. package/dist/ui/use-reduced-motion.d.ts.map +1 -0
  397. package/dist/ui/use-reduced-motion.js +18 -0
  398. package/dist/ui/use-reduced-motion.js.map +1 -0
  399. package/dist/ui/use-toast.d.ts +50 -0
  400. package/dist/ui/use-toast.d.ts.map +1 -0
  401. package/dist/ui/use-toast.js +123 -0
  402. package/dist/ui/use-toast.js.map +1 -0
  403. package/dist/ui/useListState.d.ts +34 -0
  404. package/dist/ui/useListState.d.ts.map +1 -0
  405. package/dist/ui/useListState.js +75 -0
  406. package/dist/ui/useListState.js.map +1 -0
  407. package/dist/ui/usecases/UseCaseCard.d.ts +19 -0
  408. package/dist/ui/usecases/UseCaseCard.d.ts.map +1 -0
  409. package/dist/ui/usecases/UseCaseCard.js +35 -0
  410. package/dist/ui/usecases/UseCaseCard.js.map +1 -0
  411. package/dist/ui/usecases/UserStoryCard.d.ts +15 -0
  412. package/dist/ui/usecases/UserStoryCard.d.ts.map +1 -0
  413. package/dist/ui/usecases/UserStoryCard.js +36 -0
  414. package/dist/ui/usecases/UserStoryCard.js.map +1 -0
  415. package/dist/ui/usecases/index.d.ts +3 -0
  416. package/dist/ui/usecases/index.js +4 -0
  417. package/dist/ui/utils.d.ts +7 -0
  418. package/dist/ui/utils.d.ts.map +1 -0
  419. package/dist/ui/utils.js +11 -0
  420. package/dist/ui/utils.js.map +1 -0
  421. package/dist/ui/visually-hidden.d.ts +10 -0
  422. package/dist/ui/visually-hidden.d.ts.map +1 -0
  423. package/dist/ui/visually-hidden.js +31 -0
  424. package/dist/ui/visually-hidden.js.map +1 -0
  425. package/package.json +222 -0
@@ -0,0 +1,60 @@
1
+ import { cn } from "../utils.js";
2
+ import { Button } from "../button.js";
3
+ import "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+
6
+ //#region ui/marketing/PricingTable.tsx
7
+ function PricingTable({ tiers, className }) {
8
+ return /* @__PURE__ */ jsxs("section", {
9
+ className: cn("mx-auto max-w-6xl py-12", className),
10
+ children: [/* @__PURE__ */ jsx("div", {
11
+ className: "grid grid-cols-1 gap-6 md:grid-cols-3",
12
+ children: tiers.map((t, idx) => /* @__PURE__ */ jsxs("div", {
13
+ className: cn("flex flex-col rounded-lg border p-6", t.highlighted && "border-primary shadow-lg"),
14
+ children: [
15
+ /* @__PURE__ */ jsx("div", {
16
+ className: "text-muted-foreground mb-2 text-base font-medium",
17
+ children: t.name
18
+ }),
19
+ /* @__PURE__ */ jsx("div", {
20
+ className: "text-3xl font-semibold",
21
+ children: t.price
22
+ }),
23
+ t.tagline && /* @__PURE__ */ jsx("div", {
24
+ className: "text-muted-foreground mt-1 text-base",
25
+ children: t.tagline
26
+ }),
27
+ /* @__PURE__ */ jsx("ul", {
28
+ className: "mt-4 space-y-2 text-base",
29
+ children: t.features.map((f, i) => /* @__PURE__ */ jsxs("li", {
30
+ className: "flex items-start gap-2",
31
+ children: [/* @__PURE__ */ jsx("span", { className: "bg-primary mt-1 h-1.5 w-1.5 rounded-full" }), /* @__PURE__ */ jsx("span", { children: f })]
32
+ }, i))
33
+ }),
34
+ t.cta && /* @__PURE__ */ jsx("div", {
35
+ className: "mt-6",
36
+ children: t.cta.href ? /* @__PURE__ */ jsx(Button, {
37
+ asChild: true,
38
+ className: "w-full",
39
+ children: /* @__PURE__ */ jsx("a", {
40
+ href: t.cta.href,
41
+ children: t.cta.label
42
+ })
43
+ }) : /* @__PURE__ */ jsx(Button, {
44
+ className: "w-full",
45
+ onClick: t.cta.onClick,
46
+ children: t.cta.label
47
+ })
48
+ })
49
+ ]
50
+ }, idx))
51
+ }), /* @__PURE__ */ jsx("p", {
52
+ className: "text-muted-foreground mt-6 text-center text-base",
53
+ children: "Usage-based tiers inspired by generous free allowances and per-unit pricing."
54
+ })]
55
+ });
56
+ }
57
+
58
+ //#endregion
59
+ export { PricingTable };
60
+ //# sourceMappingURL=PricingTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PricingTable.js","names":[],"sources":["../../../ui/marketing/PricingTable.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Button } from '../button';\nimport { cn } from '../utils';\n\nexport interface PricingTier {\n name: string;\n price: string;\n tagline?: string;\n features: string[];\n cta?: { label: string; href?: string; onClick?: () => void };\n highlighted?: boolean;\n}\n\nexport function PricingTable({\n tiers,\n className,\n}: {\n tiers: PricingTier[];\n className?: string;\n}) {\n return (\n <section className={cn('mx-auto max-w-6xl py-12', className)}>\n <div className=\"grid grid-cols-1 gap-6 md:grid-cols-3\">\n {tiers.map((t, idx) => (\n <div\n key={idx}\n className={cn(\n 'flex flex-col rounded-lg border p-6',\n t.highlighted && 'border-primary shadow-lg'\n )}\n >\n <div className=\"text-muted-foreground mb-2 text-base font-medium\">\n {t.name}\n </div>\n <div className=\"text-3xl font-semibold\">{t.price}</div>\n {t.tagline && (\n <div className=\"text-muted-foreground mt-1 text-base\">\n {t.tagline}\n </div>\n )}\n <ul className=\"mt-4 space-y-2 text-base\">\n {t.features.map((f, i) => (\n <li key={i} className=\"flex items-start gap-2\">\n <span className=\"bg-primary mt-1 h-1.5 w-1.5 rounded-full\" />\n <span>{f}</span>\n </li>\n ))}\n </ul>\n {t.cta && (\n <div className=\"mt-6\">\n {t.cta.href ? (\n <Button asChild className=\"w-full\">\n {}\n <a href={t.cta.href}>{t.cta.label}</a>\n </Button>\n ) : (\n <Button className=\"w-full\" onClick={t.cta.onClick}>\n {t.cta.label}\n </Button>\n )}\n </div>\n )}\n </div>\n ))}\n </div>\n <p className=\"text-muted-foreground mt-6 text-center text-base\">\n Usage-based tiers inspired by generous free allowances and per-unit\n pricing.\n </p>\n </section>\n );\n}\n"],"mappings":";;;;;;AAaA,SAAgB,aAAa,EAC3B,OACA,aAIC;AACD,QACE,qBAAC;EAAQ,WAAW,GAAG,2BAA2B,UAAU;aAC1D,oBAAC;GAAI,WAAU;aACZ,MAAM,KAAK,GAAG,QACb,qBAAC;IAEC,WAAW,GACT,uCACA,EAAE,eAAe,2BAClB;;KAED,oBAAC;MAAI,WAAU;gBACZ,EAAE;OACC;KACN,oBAAC;MAAI,WAAU;gBAA0B,EAAE;OAAY;KACtD,EAAE,WACD,oBAAC;MAAI,WAAU;gBACZ,EAAE;OACC;KAER,oBAAC;MAAG,WAAU;gBACX,EAAE,SAAS,KAAK,GAAG,MAClB,qBAAC;OAAW,WAAU;kBACpB,oBAAC,UAAK,WAAU,6CAA6C,EAC7D,oBAAC,oBAAM,IAAS;SAFT,EAGJ,CACL;OACC;KACJ,EAAE,OACD,oBAAC;MAAI,WAAU;gBACZ,EAAE,IAAI,OACL,oBAAC;OAAO;OAAQ,WAAU;iBAExB,oBAAC;QAAE,MAAM,EAAE,IAAI;kBAAO,EAAE,IAAI;SAAU;QAC/B,GAET,oBAAC;OAAO,WAAU;OAAS,SAAS,EAAE,IAAI;iBACvC,EAAE,IAAI;QACA;OAEP;;MAnCH,IAqCD,CACN;IACE,EACN,oBAAC;GAAE,WAAU;aAAmD;IAG5D;GACI"}
@@ -0,0 +1,4 @@
1
+ import { FeatureGrid, FeatureItem } from "./FeatureGrid.js";
2
+ import { Hero } from "./Hero.js";
3
+ import { PricingTable, PricingTier } from "./PricingTable.js";
4
+ export { FeatureGrid, type FeatureItem, Hero, PricingTable, type PricingTier };
@@ -0,0 +1,5 @@
1
+ import { FeatureGrid } from "./FeatureGrid.js";
2
+ import { Hero } from "./Hero.js";
3
+ import { PricingTable } from "./PricingTable.js";
4
+
5
+ export { FeatureGrid, Hero, PricingTable };
@@ -0,0 +1,85 @@
1
+ import * as React$1 from "react";
2
+ import * as react_jsx_runtime18 from "react/jsx-runtime";
3
+ import * as MenubarPrimitive from "@radix-ui/react-menubar";
4
+
5
+ //#region ui/menubar.d.ts
6
+ declare function Menubar({
7
+ className,
8
+ ...props
9
+ }: React$1.ComponentProps<typeof MenubarPrimitive.Root>): react_jsx_runtime18.JSX.Element;
10
+ declare function MenubarMenu({
11
+ ...props
12
+ }: React$1.ComponentProps<typeof MenubarPrimitive.Menu>): react_jsx_runtime18.JSX.Element;
13
+ declare function MenubarGroup({
14
+ ...props
15
+ }: React$1.ComponentProps<typeof MenubarPrimitive.Group>): react_jsx_runtime18.JSX.Element;
16
+ declare function MenubarPortal({
17
+ ...props
18
+ }: React$1.ComponentProps<typeof MenubarPrimitive.Portal>): react_jsx_runtime18.JSX.Element;
19
+ declare function MenubarRadioGroup({
20
+ ...props
21
+ }: React$1.ComponentProps<typeof MenubarPrimitive.RadioGroup>): react_jsx_runtime18.JSX.Element;
22
+ declare function MenubarTrigger({
23
+ className,
24
+ ...props
25
+ }: React$1.ComponentProps<typeof MenubarPrimitive.Trigger>): react_jsx_runtime18.JSX.Element;
26
+ declare function MenubarContent({
27
+ className,
28
+ align,
29
+ alignOffset,
30
+ sideOffset,
31
+ ...props
32
+ }: React$1.ComponentProps<typeof MenubarPrimitive.Content>): react_jsx_runtime18.JSX.Element;
33
+ declare function MenubarItem({
34
+ className,
35
+ inset,
36
+ variant,
37
+ ...props
38
+ }: React$1.ComponentProps<typeof MenubarPrimitive.Item> & {
39
+ inset?: boolean;
40
+ variant?: 'default' | 'destructive';
41
+ }): react_jsx_runtime18.JSX.Element;
42
+ declare function MenubarCheckboxItem({
43
+ className,
44
+ children,
45
+ checked,
46
+ ...props
47
+ }: React$1.ComponentProps<typeof MenubarPrimitive.CheckboxItem>): react_jsx_runtime18.JSX.Element;
48
+ declare function MenubarRadioItem({
49
+ className,
50
+ children,
51
+ ...props
52
+ }: React$1.ComponentProps<typeof MenubarPrimitive.RadioItem>): react_jsx_runtime18.JSX.Element;
53
+ declare function MenubarLabel({
54
+ className,
55
+ inset,
56
+ ...props
57
+ }: React$1.ComponentProps<typeof MenubarPrimitive.Label> & {
58
+ inset?: boolean;
59
+ }): react_jsx_runtime18.JSX.Element;
60
+ declare function MenubarSeparator({
61
+ className,
62
+ ...props
63
+ }: React$1.ComponentProps<typeof MenubarPrimitive.Separator>): react_jsx_runtime18.JSX.Element;
64
+ declare function MenubarShortcut({
65
+ className,
66
+ ...props
67
+ }: React$1.ComponentProps<'span'>): react_jsx_runtime18.JSX.Element;
68
+ declare function MenubarSub({
69
+ ...props
70
+ }: React$1.ComponentProps<typeof MenubarPrimitive.Sub>): react_jsx_runtime18.JSX.Element;
71
+ declare function MenubarSubTrigger({
72
+ className,
73
+ inset,
74
+ children,
75
+ ...props
76
+ }: React$1.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {
77
+ inset?: boolean;
78
+ }): react_jsx_runtime18.JSX.Element;
79
+ declare function MenubarSubContent({
80
+ className,
81
+ ...props
82
+ }: React$1.ComponentProps<typeof MenubarPrimitive.SubContent>): react_jsx_runtime18.JSX.Element;
83
+ //#endregion
84
+ export { Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger };
85
+ //# sourceMappingURL=menubar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menubar.d.ts","names":[],"sources":["../../ui/menubar.tsx"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ 'use client';
2
+
3
+
4
+ import { cn } from "./utils.js";
5
+ import "react";
6
+ import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import * as MenubarPrimitive from "@radix-ui/react-menubar";
9
+
10
+ //#region ui/menubar.tsx
11
+ function Menubar({ className,...props }) {
12
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Root, {
13
+ "data-slot": "menubar",
14
+ className: cn("bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-2xs", className),
15
+ ...props
16
+ });
17
+ }
18
+ function MenubarMenu({ ...props }) {
19
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Menu, {
20
+ "data-slot": "menubar-menu",
21
+ ...props
22
+ });
23
+ }
24
+ function MenubarGroup({ ...props }) {
25
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Group, {
26
+ "data-slot": "menubar-group",
27
+ ...props
28
+ });
29
+ }
30
+ function MenubarPortal({ ...props }) {
31
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Portal, {
32
+ "data-slot": "menubar-portal",
33
+ ...props
34
+ });
35
+ }
36
+ function MenubarRadioGroup({ ...props }) {
37
+ return /* @__PURE__ */ jsx(MenubarPrimitive.RadioGroup, {
38
+ "data-slot": "menubar-radio-group",
39
+ ...props
40
+ });
41
+ }
42
+ function MenubarTrigger({ className,...props }) {
43
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Trigger, {
44
+ "data-slot": "menubar-trigger",
45
+ className: cn("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-xs px-2 py-1 text-sm font-medium outline-hidden select-none", className),
46
+ ...props
47
+ });
48
+ }
49
+ function MenubarContent({ className, align = "start", alignOffset = -4, sideOffset = 8,...props }) {
50
+ return /* @__PURE__ */ jsx(MenubarPortal, { children: /* @__PURE__ */ jsx(MenubarPrimitive.Content, {
51
+ "data-slot": "menubar-content",
52
+ align,
53
+ alignOffset,
54
+ sideOffset,
55
+ className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 min-w-48 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md", className),
56
+ ...props
57
+ }) });
58
+ }
59
+ function MenubarItem({ className, inset, variant = "default",...props }) {
60
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Item, {
61
+ "data-slot": "menubar-item",
62
+ "data-inset": inset,
63
+ "data-variant": variant,
64
+ className: cn("data-[variant=destructive]:*:[svg]:text-destructive! focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-xs px-2 py-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
65
+ ...props
66
+ });
67
+ }
68
+ function MenubarCheckboxItem({ className, children, checked,...props }) {
69
+ return /* @__PURE__ */ jsxs(MenubarPrimitive.CheckboxItem, {
70
+ "data-slot": "menubar-checkbox-item",
71
+ className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
72
+ checked,
73
+ ...props,
74
+ children: [/* @__PURE__ */ jsx("span", {
75
+ className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",
76
+ children: /* @__PURE__ */ jsx(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) })
77
+ }), children]
78
+ });
79
+ }
80
+ function MenubarRadioItem({ className, children,...props }) {
81
+ return /* @__PURE__ */ jsxs(MenubarPrimitive.RadioItem, {
82
+ "data-slot": "menubar-radio-item",
83
+ className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
84
+ ...props,
85
+ children: [/* @__PURE__ */ jsx("span", {
86
+ className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",
87
+ children: /* @__PURE__ */ jsx(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) })
88
+ }), children]
89
+ });
90
+ }
91
+ function MenubarLabel({ className, inset,...props }) {
92
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Label, {
93
+ "data-slot": "menubar-label",
94
+ "data-inset": inset,
95
+ className: cn("px-2 py-1.5 text-sm font-medium data-inset:pl-8", className),
96
+ ...props
97
+ });
98
+ }
99
+ function MenubarSeparator({ className,...props }) {
100
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Separator, {
101
+ "data-slot": "menubar-separator",
102
+ className: cn("bg-border -mx-1 my-1 h-px", className),
103
+ ...props
104
+ });
105
+ }
106
+ function MenubarShortcut({ className,...props }) {
107
+ return /* @__PURE__ */ jsx("span", {
108
+ "data-slot": "menubar-shortcut",
109
+ className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className),
110
+ ...props
111
+ });
112
+ }
113
+ function MenubarSub({ ...props }) {
114
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Sub, {
115
+ "data-slot": "menubar-sub",
116
+ ...props
117
+ });
118
+ }
119
+ function MenubarSubTrigger({ className, inset, children,...props }) {
120
+ return /* @__PURE__ */ jsxs(MenubarPrimitive.SubTrigger, {
121
+ "data-slot": "menubar-sub-trigger",
122
+ "data-inset": inset,
123
+ className: cn("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none data-inset:pl-8", className),
124
+ ...props,
125
+ children: [children, /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto h-4 w-4" })]
126
+ });
127
+ }
128
+ function MenubarSubContent({ className,...props }) {
129
+ return /* @__PURE__ */ jsx(MenubarPrimitive.SubContent, {
130
+ "data-slot": "menubar-sub-content",
131
+ className: cn("bg-popover text-popover-foreground 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 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 min-w-32 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg", className),
132
+ ...props
133
+ });
134
+ }
135
+
136
+ //#endregion
137
+ export { Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger };
138
+ //# sourceMappingURL=menubar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menubar.js","names":[],"sources":["../../ui/menubar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as MenubarPrimitive from '@radix-ui/react-menubar';\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\n\nimport { cn } from './utils';\n\nfunction Menubar({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n return (\n <MenubarPrimitive.Root\n data-slot=\"menubar\"\n className={cn(\n 'bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-2xs',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarMenu({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />;\n}\n\nfunction MenubarGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />;\n}\n\nfunction MenubarPortal({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />;\n}\n\nfunction MenubarRadioGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n return (\n <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n );\n}\n\nfunction MenubarTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n return (\n <MenubarPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-xs px-2 py-1 text-sm font-medium outline-hidden select-none',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarContent({\n className,\n align = 'start',\n alignOffset = -4,\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n data-slot=\"menubar-content\"\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 min-w-48 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md',\n className\n )}\n {...props}\n />\n </MenubarPortal>\n );\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n}) {\n return (\n <MenubarPrimitive.Item\n data-slot=\"menubar-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"data-[variant=destructive]:*:[svg]:text-destructive! focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-xs px-2 py-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) {\n return (\n <MenubarPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n );\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) {\n return (\n <MenubarPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n );\n}\n\nfunction MenubarLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <MenubarPrimitive.Label\n data-slot=\"menubar-label\"\n data-inset={inset}\n className={cn(\n 'px-2 py-1.5 text-sm font-medium data-inset:pl-8',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n return (\n <MenubarPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn('bg-border -mx-1 my-1 h-px', className)}\n {...props}\n />\n );\n}\n\nfunction MenubarShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"menubar-shortcut\"\n className={cn(\n 'text-muted-foreground ml-auto text-xs tracking-widest',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarSub({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />;\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <MenubarPrimitive.SubTrigger\n data-slot=\"menubar-sub-trigger\"\n data-inset={inset}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none data-inset:pl-8',\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n );\n}\n\nfunction MenubarSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n return (\n <MenubarPrimitive.SubContent\n data-slot=\"menubar-sub-content\"\n className={cn(\n 'bg-popover text-popover-foreground 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 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 min-w-32 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg',\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n Menubar,\n MenubarPortal,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarGroup,\n MenubarSeparator,\n MenubarLabel,\n MenubarItem,\n MenubarShortcut,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n};\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import * as react_jsx_runtime249 from "react/jsx-runtime";
2
+
3
+ //#region ui/molecules/Autocomplete/index.d.ts
4
+ declare function ComboBoxResponsive(): react_jsx_runtime249.JSX.Element;
5
+ //#endregion
6
+ export { ComboBoxResponsive };
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../ui/molecules/Autocomplete/index.tsx"],"sourcesContent":[],"mappings":";;;iBAyCgB,kBAAA,CAAA,GAAkB,oBAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1,86 @@
1
+ 'use client';
2
+
3
+
4
+ import { Button } from "../../button.js";
5
+ import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from "../../command.js";
6
+ import { Popover, PopoverContent, PopoverTrigger } from "../../popover.js";
7
+ import { Drawer, DrawerContent, DrawerTrigger } from "../../drawer.js";
8
+ import { useMediaQuery } from "../../use-media-query.js";
9
+ import * as React$1 from "react";
10
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
11
+
12
+ //#region ui/molecules/Autocomplete/index.tsx
13
+ const statuses = [
14
+ {
15
+ value: "backlog",
16
+ label: "Backlog"
17
+ },
18
+ {
19
+ value: "in progress",
20
+ label: "In Progress"
21
+ },
22
+ {
23
+ value: "done",
24
+ label: "Done"
25
+ },
26
+ {
27
+ value: "canceled",
28
+ label: "Canceled"
29
+ }
30
+ ];
31
+ function ComboBoxResponsive() {
32
+ const [open, setOpen] = React$1.useState(false);
33
+ const isDesktop = useMediaQuery("(min-width: 768px)");
34
+ const [selectedStatus, setSelectedStatus] = React$1.useState(null);
35
+ if (isDesktop) return /* @__PURE__ */ jsxs(Popover, {
36
+ open,
37
+ onOpenChange: setOpen,
38
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, {
39
+ asChild: true,
40
+ children: /* @__PURE__ */ jsx(Button, {
41
+ variant: "outline",
42
+ className: "w-[150px] justify-start",
43
+ children: selectedStatus ? /* @__PURE__ */ jsx(Fragment, { children: selectedStatus.label }) : /* @__PURE__ */ jsx(Fragment, { children: "+ Set status" })
44
+ })
45
+ }), /* @__PURE__ */ jsx(PopoverContent, {
46
+ className: "w-[200px] p-0",
47
+ align: "start",
48
+ children: /* @__PURE__ */ jsx(StatusList, {
49
+ setOpen,
50
+ setSelectedStatus
51
+ })
52
+ })]
53
+ });
54
+ return /* @__PURE__ */ jsxs(Drawer, {
55
+ open,
56
+ onOpenChange: setOpen,
57
+ children: [/* @__PURE__ */ jsx(DrawerTrigger, {
58
+ asChild: true,
59
+ children: /* @__PURE__ */ jsx(Button, {
60
+ variant: "outline",
61
+ className: "w-[150px] justify-start",
62
+ children: selectedStatus ? /* @__PURE__ */ jsx(Fragment, { children: selectedStatus.label }) : /* @__PURE__ */ jsx(Fragment, { children: "+ Set status" })
63
+ })
64
+ }), /* @__PURE__ */ jsx(DrawerContent, { children: /* @__PURE__ */ jsx("div", {
65
+ className: "mt-4 border-t",
66
+ children: /* @__PURE__ */ jsx(StatusList, {
67
+ setOpen,
68
+ setSelectedStatus
69
+ })
70
+ }) })]
71
+ });
72
+ }
73
+ function StatusList({ setOpen, setSelectedStatus }) {
74
+ return /* @__PURE__ */ jsxs(Command, { children: [/* @__PURE__ */ jsx(CommandInput, { placeholder: "Filter status..." }), /* @__PURE__ */ jsxs(CommandList, { children: [/* @__PURE__ */ jsx(CommandEmpty, { children: "No results found." }), /* @__PURE__ */ jsx(CommandGroup, { children: statuses.map((status) => /* @__PURE__ */ jsx(CommandItem, {
75
+ value: status.value,
76
+ onSelect: (value) => {
77
+ setSelectedStatus(statuses.find((priority) => priority.value === value) || null);
78
+ setOpen(false);
79
+ },
80
+ children: status.label
81
+ }, status.value)) })] })] });
82
+ }
83
+
84
+ //#endregion
85
+ export { ComboBoxResponsive };
86
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["statuses: Status[]","React"],"sources":["../../../../ui/molecules/Autocomplete/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport { Button } from '../../button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '../../command';\nimport { Drawer, DrawerContent, DrawerTrigger } from '../../drawer';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../popover';\nimport { useMediaQuery } from '../../use-media-query';\n\ninterface Status {\n value: string;\n label: string;\n}\n\nconst statuses: Status[] = [\n {\n value: 'backlog',\n label: 'Backlog',\n },\n {\n value: 'in progress',\n label: 'In Progress',\n },\n {\n value: 'done',\n label: 'Done',\n },\n {\n value: 'canceled',\n label: 'Canceled',\n },\n];\n\nexport function ComboBoxResponsive() {\n const [open, setOpen] = React.useState(false);\n const isDesktop = useMediaQuery('(min-width: 768px)');\n const [selectedStatus, setSelectedStatus] = React.useState<Status | null>(\n null\n );\n\n if (isDesktop) {\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" className=\"w-[150px] justify-start\">\n {selectedStatus ? <>{selectedStatus.label}</> : <>+ Set status</>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[200px] p-0\" align=\"start\">\n <StatusList setOpen={setOpen} setSelectedStatus={setSelectedStatus} />\n </PopoverContent>\n </Popover>\n );\n }\n\n return (\n <Drawer open={open} onOpenChange={setOpen}>\n <DrawerTrigger asChild>\n <Button variant=\"outline\" className=\"w-[150px] justify-start\">\n {selectedStatus ? <>{selectedStatus.label}</> : <>+ Set status</>}\n </Button>\n </DrawerTrigger>\n <DrawerContent>\n <div className=\"mt-4 border-t\">\n <StatusList setOpen={setOpen} setSelectedStatus={setSelectedStatus} />\n </div>\n </DrawerContent>\n </Drawer>\n );\n}\n\nfunction StatusList({\n setOpen,\n setSelectedStatus,\n}: {\n setOpen: (open: boolean) => void;\n setSelectedStatus: (status: Status | null) => void;\n}) {\n return (\n <Command>\n <CommandInput placeholder=\"Filter status...\" />\n <CommandList>\n <CommandEmpty>No results found.</CommandEmpty>\n <CommandGroup>\n {statuses.map((status) => (\n <CommandItem\n key={status.value}\n value={status.value}\n onSelect={(value) => {\n setSelectedStatus(\n statuses.find((priority) => priority.value === value) || null\n );\n setOpen(false);\n }}\n >\n {status.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAsBA,MAAMA,WAAqB;CACzB;EACE,OAAO;EACP,OAAO;EACR;CACD;EACE,OAAO;EACP,OAAO;EACR;CACD;EACE,OAAO;EACP,OAAO;EACR;CACD;EACE,OAAO;EACP,OAAO;EACR;CACF;AAED,SAAgB,qBAAqB;CACnC,MAAM,CAAC,MAAM,WAAWC,QAAM,SAAS,MAAM;CAC7C,MAAM,YAAY,cAAc,qBAAqB;CACrD,MAAM,CAAC,gBAAgB,qBAAqBA,QAAM,SAChD,KACD;AAED,KAAI,UACF,QACE,qBAAC;EAAc;EAAM,cAAc;aACjC,oBAAC;GAAe;aACd,oBAAC;IAAO,SAAQ;IAAU,WAAU;cACjC,iBAAiB,0CAAG,eAAe,QAAS,GAAG,0CAAE,iBAAe;KAC1D;IACM,EACjB,oBAAC;GAAe,WAAU;GAAgB,OAAM;aAC9C,oBAAC;IAAoB;IAA4B;KAAqB;IACvD;GACT;AAId,QACE,qBAAC;EAAa;EAAM,cAAc;aAChC,oBAAC;GAAc;aACb,oBAAC;IAAO,SAAQ;IAAU,WAAU;cACjC,iBAAiB,0CAAG,eAAe,QAAS,GAAG,0CAAE,iBAAe;KAC1D;IACK,EAChB,oBAAC,2BACC,oBAAC;GAAI,WAAU;aACb,oBAAC;IAAoB;IAA4B;KAAqB;IAClE,GACQ;GACT;;AAIb,SAAS,WAAW,EAClB,SACA,qBAIC;AACD,QACE,qBAAC,sBACC,oBAAC,gBAAa,aAAY,qBAAqB,EAC/C,qBAAC,0BACC,oBAAC,0BAAa,sBAAgC,EAC9C,oBAAC,0BACE,SAAS,KAAK,WACb,oBAAC;EAEC,OAAO,OAAO;EACd,WAAW,UAAU;AACnB,qBACE,SAAS,MAAM,aAAa,SAAS,UAAU,MAAM,IAAI,KAC1D;AACD,WAAQ,MAAM;;YAGf,OAAO;IATH,OAAO,MAUA,CACd,GACW,IACH,IACN"}
@@ -0,0 +1,8 @@
1
+ import { SearchAndFilterProps } from "./types.js";
2
+ import React from "react";
3
+
4
+ //#region ui/molecules/SearchAndFilter/SearchAndFilter.d.ts
5
+ declare const SearchAndFilter: React.FC<SearchAndFilterProps>;
6
+ //#endregion
7
+ export { SearchAndFilter };
8
+ //# sourceMappingURL=SearchAndFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchAndFilter.d.ts","names":[],"sources":["../../../../ui/molecules/SearchAndFilter/SearchAndFilter.tsx"],"sourcesContent":[],"mappings":";;;;cAYa,iBAAiB,KAAA,CAAM,GAAG"}
@@ -0,0 +1,103 @@
1
+ import { Button } from "../../button.js";
2
+ import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../../collapsible.js";
3
+ import { FilterSelect } from "../../atoms/FilterSelect/FilterSelect.js";
4
+ import { SearchInput } from "../../atoms/SearchInput/SearchInput.js";
5
+ import React, { useState } from "react";
6
+ import { ChevronDown, ChevronUp, Filter } from "lucide-react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+
9
+ //#region ui/molecules/SearchAndFilter/SearchAndFilter.tsx
10
+ const SearchAndFilter = ({ searchValue, onSearchChange, searchPlaceholder, filters = [], isLoading = false, disabled = false, className = "", collapsible = true, defaultCollapsed = false }) => {
11
+ const [isCollapsed, setIsCollapsed] = useState(defaultCollapsed);
12
+ const hasFilters = filters.length > 0;
13
+ const activeFiltersCount = filters.filter((f) => f.value).length;
14
+ const shouldUseCollapsible = collapsible && hasFilters;
15
+ console.log("SearchAndFilter", { filters });
16
+ const FilterComponents = () => /* @__PURE__ */ jsx("div", {
17
+ className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",
18
+ children: filters.map((filter) => /* @__PURE__ */ jsx(FilterSelect, {
19
+ value: filter.value,
20
+ options: filter.options,
21
+ onChange: filter.onChange,
22
+ label: filter.label,
23
+ disabled: disabled || isLoading,
24
+ showCounts: filter.showCounts,
25
+ className: "min-w-0"
26
+ }, filter.key))
27
+ });
28
+ return /* @__PURE__ */ jsxs("div", {
29
+ className: `space-y-4 ${className}`,
30
+ children: [
31
+ /* @__PURE__ */ jsxs("div", {
32
+ className: "flex flex-col gap-4 sm:flex-row",
33
+ children: [/* @__PURE__ */ jsx("div", {
34
+ className: "flex-1",
35
+ children: /* @__PURE__ */ jsx(SearchInput, {
36
+ value: searchValue,
37
+ onChange: onSearchChange,
38
+ placeholder: searchPlaceholder,
39
+ disabled: disabled || isLoading,
40
+ className: "w-full"
41
+ })
42
+ }), shouldUseCollapsible && /* @__PURE__ */ jsxs(Collapsible, {
43
+ open: !isCollapsed,
44
+ onOpenChange: setIsCollapsed,
45
+ className: "sm:hidden",
46
+ children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
47
+ asChild: true,
48
+ children: /* @__PURE__ */ jsxs(Button, {
49
+ variant: "outline",
50
+ className: "sm:hidden",
51
+ disabled: disabled || isLoading,
52
+ children: [
53
+ /* @__PURE__ */ jsx(Filter, { className: "mr-2 h-4 w-4" }),
54
+ "Filtres",
55
+ activeFiltersCount > 0 && /* @__PURE__ */ jsx("span", {
56
+ className: "bg-primary text-primary-foreground ml-2 flex h-5 w-5 items-center justify-center rounded-full text-sm",
57
+ children: activeFiltersCount
58
+ }),
59
+ isCollapsed ? /* @__PURE__ */ jsx(ChevronDown, { className: "ml-2 h-4 w-4" }) : /* @__PURE__ */ jsx(ChevronUp, { className: "ml-2 h-4 w-4" })
60
+ ]
61
+ })
62
+ }), /* @__PURE__ */ jsx(CollapsibleContent, {
63
+ className: "mt-4 space-y-4",
64
+ children: /* @__PURE__ */ jsx(FilterComponents, {})
65
+ })]
66
+ })]
67
+ }),
68
+ hasFilters && /* @__PURE__ */ jsx("div", {
69
+ className: "hidden sm:block",
70
+ children: /* @__PURE__ */ jsx(FilterComponents, {})
71
+ }),
72
+ activeFiltersCount > 0 && /* @__PURE__ */ jsxs("div", {
73
+ className: "flex flex-wrap items-center gap-2",
74
+ children: [/* @__PURE__ */ jsx("span", {
75
+ className: "text-muted-foreground text-base",
76
+ children: "Filtres actifs:"
77
+ }), filters.filter((f) => f.value).map((filter) => {
78
+ const selectedOption = filter.options.find((opt) => opt.value === filter.value);
79
+ return /* @__PURE__ */ jsxs(Button, {
80
+ variant: "secondary",
81
+ size: "sm",
82
+ onClick: () => filter.onChange(""),
83
+ disabled: disabled || isLoading,
84
+ className: "h-7 px-2 text-sm",
85
+ children: [
86
+ filter.label,
87
+ ": ",
88
+ selectedOption?.label,
89
+ /* @__PURE__ */ jsx("span", {
90
+ className: "ml-1",
91
+ children: "×"
92
+ })
93
+ ]
94
+ }, filter.key);
95
+ })]
96
+ })
97
+ ]
98
+ });
99
+ };
100
+
101
+ //#endregion
102
+ export { SearchAndFilter };
103
+ //# sourceMappingURL=SearchAndFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchAndFilter.js","names":["SearchAndFilter: React.FC<SearchAndFilterProps>"],"sources":["../../../../ui/molecules/SearchAndFilter/SearchAndFilter.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { ChevronDown, ChevronUp, Filter } from 'lucide-react';\nimport { Button } from '../../button';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '../../collapsible';\nimport { SearchInput } from '../../atoms/SearchInput';\nimport { FilterSelect } from '../../atoms/FilterSelect';\nimport type { SearchAndFilterProps } from './types';\n\nexport const SearchAndFilter: React.FC<SearchAndFilterProps> = ({\n searchValue,\n onSearchChange,\n searchPlaceholder,\n filters = [],\n isLoading = false,\n disabled = false,\n className = '',\n collapsible = true,\n defaultCollapsed = false,\n}) => {\n const [isCollapsed, setIsCollapsed] = useState(defaultCollapsed);\n\n const hasFilters = filters.length > 0;\n const activeFiltersCount = filters.filter((f) => f.value).length;\n\n // On mobile, show collapsible by default; on desktop, always show filters\n const shouldUseCollapsible = collapsible && hasFilters;\n\n console.log('SearchAndFilter', { filters });\n\n const FilterComponents = () => (\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\">\n {filters.map((filter) => (\n <FilterSelect\n key={filter.key}\n value={filter.value}\n options={filter.options}\n onChange={filter.onChange}\n label={filter.label}\n disabled={disabled || isLoading}\n showCounts={filter.showCounts}\n className=\"min-w-0\"\n />\n ))}\n </div>\n );\n\n return (\n <div className={`space-y-4 ${className}`}>\n {/* Search - Always visible */}\n <div className=\"flex flex-col gap-4 sm:flex-row\">\n <div className=\"flex-1\">\n <SearchInput\n value={searchValue}\n onChange={onSearchChange}\n placeholder={searchPlaceholder}\n disabled={disabled || isLoading}\n className=\"w-full\"\n />\n </div>\n\n {/* Filter toggle for mobile */}\n {shouldUseCollapsible && (\n <Collapsible\n open={!isCollapsed}\n onOpenChange={setIsCollapsed}\n className=\"sm:hidden\"\n >\n <CollapsibleTrigger asChild>\n <Button\n variant=\"outline\"\n className=\"sm:hidden\"\n disabled={disabled || isLoading}\n >\n <Filter className=\"mr-2 h-4 w-4\" />\n Filtres\n {activeFiltersCount > 0 && (\n <span className=\"bg-primary text-primary-foreground ml-2 flex h-5 w-5 items-center justify-center rounded-full text-sm\">\n {activeFiltersCount}\n </span>\n )}\n {isCollapsed ? (\n <ChevronDown className=\"ml-2 h-4 w-4\" />\n ) : (\n <ChevronUp className=\"ml-2 h-4 w-4\" />\n )}\n </Button>\n </CollapsibleTrigger>\n <CollapsibleContent className=\"mt-4 space-y-4\">\n <FilterComponents />\n </CollapsibleContent>\n </Collapsible>\n )}\n </div>\n\n {/* Filters - Always visible on desktop, collapsible on mobile */}\n {hasFilters && (\n <div className=\"hidden sm:block\">\n <FilterComponents />\n </div>\n )}\n\n {/* Active filters summary */}\n {activeFiltersCount > 0 && (\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-muted-foreground text-base\">\n Filtres actifs:\n </span>\n {filters\n .filter((f) => f.value)\n .map((filter) => {\n const selectedOption = filter.options.find(\n (opt) => opt.value === filter.value\n );\n return (\n <Button\n key={filter.key}\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => filter.onChange('')}\n disabled={disabled || isLoading}\n className=\"h-7 px-2 text-sm\"\n >\n {filter.label}: {selectedOption?.label}\n <span className=\"ml-1\">×</span>\n </Button>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;AAYA,MAAaA,mBAAmD,EAC9D,aACA,gBACA,mBACA,UAAU,EAAE,EACZ,YAAY,OACZ,WAAW,OACX,YAAY,IACZ,cAAc,MACd,mBAAmB,YACf;CACJ,MAAM,CAAC,aAAa,kBAAkB,SAAS,iBAAiB;CAEhE,MAAM,aAAa,QAAQ,SAAS;CACpC,MAAM,qBAAqB,QAAQ,QAAQ,MAAM,EAAE,MAAM,CAAC;CAG1D,MAAM,uBAAuB,eAAe;AAE5C,SAAQ,IAAI,mBAAmB,EAAE,SAAS,CAAC;CAE3C,MAAM,yBACJ,oBAAC;EAAI,WAAU;YACZ,QAAQ,KAAK,WACZ,oBAAC;GAEC,OAAO,OAAO;GACd,SAAS,OAAO;GAChB,UAAU,OAAO;GACjB,OAAO,OAAO;GACd,UAAU,YAAY;GACtB,YAAY,OAAO;GACnB,WAAU;KAPL,OAAO,IAQZ,CACF;GACE;AAGR,QACE,qBAAC;EAAI,WAAW,aAAa;;GAE3B,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAI,WAAU;eACb,oBAAC;MACC,OAAO;MACP,UAAU;MACV,aAAa;MACb,UAAU,YAAY;MACtB,WAAU;OACV;MACE,EAGL,wBACC,qBAAC;KACC,MAAM,CAAC;KACP,cAAc;KACd,WAAU;gBAEV,oBAAC;MAAmB;gBAClB,qBAAC;OACC,SAAQ;OACR,WAAU;OACV,UAAU,YAAY;;QAEtB,oBAAC,UAAO,WAAU,iBAAiB;;QAElC,qBAAqB,KACpB,oBAAC;SAAK,WAAU;mBACb;UACI;QAER,cACC,oBAAC,eAAY,WAAU,iBAAiB,GAExC,oBAAC,aAAU,WAAU,iBAAiB;;QAEjC;OACU,EACrB,oBAAC;MAAmB,WAAU;gBAC5B,oBAAC,qBAAmB;OACD;MACT;KAEZ;GAGL,cACC,oBAAC;IAAI,WAAU;cACb,oBAAC,qBAAmB;KAChB;GAIP,qBAAqB,KACpB,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,WAAU;eAAkC;MAE3C,EACN,QACE,QAAQ,MAAM,EAAE,MAAM,CACtB,KAAK,WAAW;KACf,MAAM,iBAAiB,OAAO,QAAQ,MACnC,QAAQ,IAAI,UAAU,OAAO,MAC/B;AACD,YACE,qBAAC;MAEC,SAAQ;MACR,MAAK;MACL,eAAe,OAAO,SAAS,GAAG;MAClC,UAAU,YAAY;MACtB,WAAU;;OAET,OAAO;OAAM;OAAG,gBAAgB;OACjC,oBAAC;QAAK,WAAU;kBAAO;SAAQ;;QAR1B,OAAO,IASL;MAEX;KACA;;GAEJ"}
@@ -0,0 +1,3 @@
1
+ import { SearchAndFilterProps } from "./types.js";
2
+ import { SearchAndFilter } from "./SearchAndFilter.js";
3
+ export { SearchAndFilter, type SearchAndFilterProps };
@@ -0,0 +1,3 @@
1
+ import { SearchAndFilter } from "./SearchAndFilter.js";
2
+
3
+ export { SearchAndFilter };
@@ -0,0 +1,24 @@
1
+ import { FilterOption } from "@lssm/lib.ui-kit-web/ui/atoms/FilterSelect";
2
+
3
+ //#region ui/molecules/SearchAndFilter/types.d.ts
4
+ interface SearchAndFilterProps {
5
+ searchValue: string;
6
+ onSearchChange: (value: string) => void;
7
+ searchPlaceholder?: string;
8
+ filters?: {
9
+ key: string;
10
+ label: string;
11
+ value: string;
12
+ options: FilterOption[];
13
+ onChange: (value: string) => void;
14
+ showCounts?: boolean;
15
+ }[];
16
+ isLoading?: boolean;
17
+ disabled?: boolean;
18
+ className?: string;
19
+ collapsible?: boolean;
20
+ defaultCollapsed?: boolean;
21
+ }
22
+ //#endregion
23
+ export { SearchAndFilterProps };
24
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../../ui/molecules/SearchAndFilter/types.ts"],"sourcesContent":[],"mappings":";;;UAEiB,oBAAA;;EAAA,cAAA,EAAA,CAAA,KAAA,EAAoB,MAAA,EAAA,GAAA,IAWxB;;;;;;aAAA"}
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,16 @@
1
+ import * as react_jsx_runtime199 from "react/jsx-runtime";
2
+
3
+ //#region ui/molecules/SkeletonList.d.ts
4
+ interface Props {
5
+ count?: number;
6
+ className?: string;
7
+ itemClassName?: string;
8
+ }
9
+ declare function SkeletonList({
10
+ count,
11
+ className,
12
+ itemClassName
13
+ }: Props): react_jsx_runtime199.JSX.Element;
14
+ //#endregion
15
+ export { SkeletonList };
16
+ //# sourceMappingURL=SkeletonList.d.ts.map