@contractspec/lib.ui-kit-web 1.44.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 (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 +47 -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 +38 -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 +51 -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 +40 -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 +105 -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 +200 -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 +338 -0
@@ -0,0 +1,105 @@
1
+ import { Button } from "../../button.js";
2
+ import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../../collapsible.js";
3
+ import { FilterSelect } from "../../atoms/FilterSelect/FilterSelect.js";
4
+ import "../../atoms/FilterSelect/index.js";
5
+ import { SearchInput } from "../../atoms/SearchInput/SearchInput.js";
6
+ import "../../atoms/SearchInput/index.js";
7
+ import React, { useState } from "react";
8
+ import { ChevronDown, ChevronUp, Filter } from "lucide-react";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+
11
+ //#region ui/molecules/SearchAndFilter/SearchAndFilter.tsx
12
+ const SearchAndFilter = ({ searchValue, onSearchChange, searchPlaceholder, filters = [], isLoading = false, disabled = false, className = "", collapsible = true, defaultCollapsed = false }) => {
13
+ const [isCollapsed, setIsCollapsed] = useState(defaultCollapsed);
14
+ const hasFilters = filters.length > 0;
15
+ const activeFiltersCount = filters.filter((f) => f.value).length;
16
+ const shouldUseCollapsible = collapsible && hasFilters;
17
+ console.log("SearchAndFilter", { filters });
18
+ const FilterComponents = () => /* @__PURE__ */ jsx("div", {
19
+ className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",
20
+ children: filters.map((filter) => /* @__PURE__ */ jsx(FilterSelect, {
21
+ value: filter.value,
22
+ options: filter.options,
23
+ onChange: filter.onChange,
24
+ label: filter.label,
25
+ disabled: disabled || isLoading,
26
+ showCounts: filter.showCounts,
27
+ className: "min-w-0"
28
+ }, filter.key))
29
+ });
30
+ return /* @__PURE__ */ jsxs("div", {
31
+ className: `space-y-4 ${className}`,
32
+ children: [
33
+ /* @__PURE__ */ jsxs("div", {
34
+ className: "flex flex-col gap-4 sm:flex-row",
35
+ children: [/* @__PURE__ */ jsx("div", {
36
+ className: "flex-1",
37
+ children: /* @__PURE__ */ jsx(SearchInput, {
38
+ value: searchValue,
39
+ onChange: onSearchChange,
40
+ placeholder: searchPlaceholder,
41
+ disabled: disabled || isLoading,
42
+ className: "w-full"
43
+ })
44
+ }), shouldUseCollapsible && /* @__PURE__ */ jsxs(Collapsible, {
45
+ open: !isCollapsed,
46
+ onOpenChange: setIsCollapsed,
47
+ className: "sm:hidden",
48
+ children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
49
+ asChild: true,
50
+ children: /* @__PURE__ */ jsxs(Button, {
51
+ variant: "outline",
52
+ className: "sm:hidden",
53
+ disabled: disabled || isLoading,
54
+ children: [
55
+ /* @__PURE__ */ jsx(Filter, { className: "mr-2 h-4 w-4" }),
56
+ "Filtres",
57
+ activeFiltersCount > 0 && /* @__PURE__ */ jsx("span", {
58
+ className: "bg-primary text-primary-foreground ml-2 flex h-5 w-5 items-center justify-center rounded-full text-sm",
59
+ children: activeFiltersCount
60
+ }),
61
+ isCollapsed ? /* @__PURE__ */ jsx(ChevronDown, { className: "ml-2 h-4 w-4" }) : /* @__PURE__ */ jsx(ChevronUp, { className: "ml-2 h-4 w-4" })
62
+ ]
63
+ })
64
+ }), /* @__PURE__ */ jsx(CollapsibleContent, {
65
+ className: "mt-4 space-y-4",
66
+ children: /* @__PURE__ */ jsx(FilterComponents, {})
67
+ })]
68
+ })]
69
+ }),
70
+ hasFilters && /* @__PURE__ */ jsx("div", {
71
+ className: "hidden sm:block",
72
+ children: /* @__PURE__ */ jsx(FilterComponents, {})
73
+ }),
74
+ activeFiltersCount > 0 && /* @__PURE__ */ jsxs("div", {
75
+ className: "flex flex-wrap items-center gap-2",
76
+ children: [/* @__PURE__ */ jsx("span", {
77
+ className: "text-muted-foreground text-base",
78
+ children: "Filtres actifs:"
79
+ }), filters.filter((f) => f.value).map((filter) => {
80
+ const selectedOption = filter.options.find((opt) => opt.value === filter.value);
81
+ return /* @__PURE__ */ jsxs(Button, {
82
+ variant: "secondary",
83
+ size: "sm",
84
+ onClick: () => filter.onChange(""),
85
+ disabled: disabled || isLoading,
86
+ className: "h-7 px-2 text-sm",
87
+ children: [
88
+ filter.label,
89
+ ": ",
90
+ selectedOption?.label,
91
+ /* @__PURE__ */ jsx("span", {
92
+ className: "ml-1",
93
+ children: "×"
94
+ })
95
+ ]
96
+ }, filter.key);
97
+ })]
98
+ })
99
+ ]
100
+ });
101
+ };
102
+
103
+ //#endregion
104
+ export { SearchAndFilter };
105
+ //# 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 "@contractspec/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"}
File without changes
@@ -0,0 +1,16 @@
1
+ import * as react_jsx_runtime234 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_runtime234.JSX.Element;
14
+ //#endregion
15
+ export { SkeletonList };
16
+ //# sourceMappingURL=SkeletonList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkeletonList.d.ts","names":[],"sources":["../../../ui/molecules/SkeletonList.tsx"],"sourcesContent":[],"mappings":";;;UAGU,KAAA;;;EAAA,aAAK,CAAA,EAAA,MAAA;AAMf;AACE,iBADc,YAAA,CACd;EAAA,KAAA;EAAA,SAAA;EAAA;AAAA,CAAA,EAGC,KAHD,CAAA,EAGM,oBAAA,CAAA,GAAA,CAAA,OAHN"}
@@ -0,0 +1,15 @@
1
+ import { Skeleton } from "../skeleton.js";
2
+ import "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+
5
+ //#region ui/molecules/SkeletonList.tsx
6
+ function SkeletonList({ count = 6, className = "", itemClassName = "" }) {
7
+ return /* @__PURE__ */ jsx("div", {
8
+ className: `space-y-3 ${className}`,
9
+ children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ jsx(Skeleton, { className: `h-20 rounded-md ${itemClassName}` }, i))
10
+ });
11
+ }
12
+
13
+ //#endregion
14
+ export { SkeletonList };
15
+ //# sourceMappingURL=SkeletonList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkeletonList.js","names":[],"sources":["../../../ui/molecules/SkeletonList.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Skeleton } from '../skeleton';\n\ninterface Props {\n count?: number;\n className?: string;\n itemClassName?: string;\n}\n\nexport function SkeletonList({\n count = 6,\n className = '',\n itemClassName = '',\n}: Props) {\n return (\n <div className={`space-y-3 ${className}`}>\n {Array.from({ length: count }).map((_, i) => (\n <Skeleton key={i} className={`h-20 rounded-md ${itemClassName}`} />\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,aAAa,EAC3B,QAAQ,GACR,YAAY,IACZ,gBAAgB,MACR;AACR,QACE,oBAAC;EAAI,WAAW,aAAa;YAC1B,MAAM,KAAK,EAAE,QAAQ,OAAO,CAAC,CAAC,KAAK,GAAG,MACrC,oBAAC,YAAiB,WAAW,mBAAmB,mBAAjC,EAAoD,CACnE;GACE"}
@@ -0,0 +1,71 @@
1
+ import { NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger } from "./navigation-menu.js";
2
+ import * as React$1 from "react";
3
+ import * as react_jsx_runtime52 from "react/jsx-runtime";
4
+ import * as class_variance_authority_types7 from "class-variance-authority/types";
5
+
6
+ //#region ui/nav-layout.d.ts
7
+ declare const navPanelVariants: (props?: ({
8
+ width?: "sm" | "md" | "lg" | "full" | null | undefined;
9
+ padding?: "none" | "sm" | "md" | null | undefined;
10
+ } & class_variance_authority_types7.ClassProp) | undefined) => string;
11
+ interface NavPanelProps extends React$1.ComponentPropsWithoutRef<'div'> {
12
+ width?: 'sm' | 'md' | 'lg' | 'full';
13
+ padding?: 'none' | 'sm' | 'md';
14
+ }
15
+ declare function NavPanel({
16
+ width,
17
+ padding,
18
+ className,
19
+ ...props
20
+ }: NavPanelProps): react_jsx_runtime52.JSX.Element;
21
+ declare function NavSimpleList({
22
+ title,
23
+ items
24
+ }: {
25
+ title?: React$1.ReactNode;
26
+ items: {
27
+ href: string;
28
+ label: string;
29
+ description?: string;
30
+ }[];
31
+ }): react_jsx_runtime52.JSX.Element;
32
+ declare function NavColumns({
33
+ columns
34
+ }: {
35
+ columns: {
36
+ title?: string;
37
+ items: {
38
+ href: string;
39
+ label: string;
40
+ description?: string;
41
+ }[];
42
+ }[];
43
+ }): react_jsx_runtime52.JSX.Element;
44
+ declare function NavCategorizedWithPreview({
45
+ categories,
46
+ modules,
47
+ activeCategory,
48
+ setActiveCategory,
49
+ activeKey: _activeKey,
50
+ setActiveKey,
51
+ preview
52
+ }: {
53
+ categories: {
54
+ key: string;
55
+ label: string;
56
+ }[];
57
+ modules: {
58
+ key: string;
59
+ title: string;
60
+ description?: string;
61
+ categories: string[];
62
+ }[];
63
+ activeCategory: string;
64
+ setActiveCategory: (k: string) => void;
65
+ activeKey: string | null;
66
+ setActiveKey: (k: string | null) => void;
67
+ preview: React$1.ReactNode;
68
+ }): react_jsx_runtime52.JSX.Element;
69
+ //#endregion
70
+ export { NavCategorizedWithPreview, NavColumns, NavigationMenuContent as NavContent, NavigationMenuItem as NavItem, NavigationMenuLink as NavLink, NavigationMenuList as NavList, NavPanel, NavPanelProps, NavigationMenu as NavRoot, NavSimpleList, NavigationMenuTrigger as NavTrigger, navPanelVariants };
71
+ //# sourceMappingURL=nav-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-layout.d.ts","names":[],"sources":["../../ui/nav-layout.tsx"],"sourcesContent":[],"mappings":";;;;;;cAYa;;;IAkBX,+BAAA,CAAA;AAlBW,UAoBI,aAAA,SAAsB,OAAA,CAAM,wBAF3C,CAAA,KAAA,CAAA,CAAA;EAEe,KAAA,CAAA,EAAA,IAAA,GAAA,IAAc,GAAA,IAAA,GAAQ,MAAA;EAKvB,OAAA,CAAA,EAAA,MAAQ,GAAA,IAAA,GAAA,IAAA;;AAEtB,iBAFc,QAAA,CAEd;EAAA,KAAA;EAAA,OAAA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAGC,aAHD,CAAA,EAGc,mBAAA,CAAA,GAAA,CAAA,OAHd;AACA,iBAYc,aAAA,CAZd;EAAA,KAAA;EAAA;CAAA,EAAA;EAEC,KAAA,CAAA,EAcO,OAAA,CAAM,SAdb;EAAa,KAAA,EAAA;IAAA,IAAA,EAAA,MAAA;IAUA,KAAA,EAAA,MAAa;IAC3B,WAAA,CAAA,EAAA,MAAA;EACA,CAAA,EAAA;CAEQ,CAAA,EAET,mBAAA,CAAA,GAAA,CAAA,OAFe;AAEf,iBA4Be,UAAA,CA5Bf;EAAA;CAAA,EAAA;EAAA,OAAA,EAAA;IA4Be,KAAA,CAAA,EAAA,MAAU;IA2CV,KAAA,EAAA;MACd,IAAA,EAAA,MAAA;MACA,KAAA,EAAA,MAAA;MACA,WAAA,CAAA,EAAA,MAAA;IACA,CAAA,EAAA;EACW,CAAA,EAAA;CACX,CAAA,EA1CD,mBAAA,CAAA,GAAA,CAAA,OA0CC;AACA,iBAPc,yBAAA,CAOd;EAAA,UAAA;EAAA,OAAA;EAAA,cAAA;EAAA,iBAAA;EAAA,SAAA,EAFW,UAEX;EAAA,YAAA;EAAA;CAAA,EAAA;EAaS,UAAM,EAAA;IAChB,GAAA,EAAA,MAAA;IAAA,KAAA,EAAA,MAAA;;;;;;;;;;;;WADU,OAAA,CAAM;IAChB,mBAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1,133 @@
1
+ import { NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger } from "./navigation-menu.js";
2
+ import * as React$1 from "react";
3
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { cva } from "class-variance-authority";
6
+
7
+ //#region ui/nav-layout.tsx
8
+ const navPanelVariants = cva("", {
9
+ variants: {
10
+ width: {
11
+ sm: "w-[280px]",
12
+ md: "w-[500px]",
13
+ lg: "w-[900px]",
14
+ full: "w-[calc(100vw-2rem)]"
15
+ },
16
+ padding: {
17
+ none: "",
18
+ sm: "p-2",
19
+ md: "p-3"
20
+ }
21
+ },
22
+ defaultVariants: {
23
+ width: "lg",
24
+ padding: "md"
25
+ }
26
+ });
27
+ function NavPanel({ width, padding, className, ...props }) {
28
+ return /* @__PURE__ */ jsx("div", {
29
+ className: cn(navPanelVariants({
30
+ width,
31
+ padding
32
+ }), className),
33
+ ...props
34
+ });
35
+ }
36
+ function NavSimpleList({ title, items }) {
37
+ return /* @__PURE__ */ jsxs("div", { children: [title && /* @__PURE__ */ jsx("div", {
38
+ className: "mb-2 text-base font-semibold",
39
+ children: title
40
+ }), /* @__PURE__ */ jsx("ul", {
41
+ className: "grid w-[280px] gap-2",
42
+ children: items.map((it) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(NavigationMenuLink, {
43
+ asChild: true,
44
+ children: /* @__PURE__ */ jsxs("a", {
45
+ href: it.href,
46
+ className: "hover:bg-accent block rounded-md p-2",
47
+ children: [/* @__PURE__ */ jsx("div", {
48
+ className: "text-base font-medium",
49
+ children: it.label
50
+ }), it.description && /* @__PURE__ */ jsx("div", {
51
+ className: "text-muted-foreground line-clamp-2 text-sm",
52
+ children: it.description
53
+ })]
54
+ })
55
+ }) }, it.href))
56
+ })] });
57
+ }
58
+ function NavColumns({ columns }) {
59
+ return /* @__PURE__ */ jsx("div", {
60
+ className: "grid w-[500px] grid-cols-2 gap-3",
61
+ children: columns.map((col, idx) => /* @__PURE__ */ jsxs("div", { children: [col.title && /* @__PURE__ */ jsx("div", {
62
+ className: "text-muted-foreground mb-2 text-base font-semibold",
63
+ children: col.title
64
+ }), /* @__PURE__ */ jsx("ul", {
65
+ className: "grid gap-2",
66
+ children: col.items.map((it) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(NavigationMenuLink, {
67
+ asChild: true,
68
+ children: /* @__PURE__ */ jsxs("a", {
69
+ href: it.href,
70
+ className: "hover:bg-accent block rounded-md p-2",
71
+ children: [/* @__PURE__ */ jsx("div", {
72
+ className: "text-base font-medium",
73
+ children: it.label
74
+ }), it.description && /* @__PURE__ */ jsx("div", {
75
+ className: "text-muted-foreground line-clamp-2 text-sm",
76
+ children: it.description
77
+ })]
78
+ })
79
+ }) }, it.href))
80
+ })] }, idx))
81
+ });
82
+ }
83
+ function NavCategorizedWithPreview({ categories, modules, activeCategory, setActiveCategory, activeKey: _activeKey, setActiveKey, preview }) {
84
+ const visible = React$1.useMemo(() => modules.filter((m) => activeCategory === "all" || m.categories.includes(activeCategory)), [modules, activeCategory]);
85
+ return /* @__PURE__ */ jsxs("div", {
86
+ className: "flex items-start gap-3",
87
+ children: [
88
+ /* @__PURE__ */ jsxs("div", {
89
+ className: "max-h-96 w-48 shrink-0 overflow-auto pr-1",
90
+ children: [/* @__PURE__ */ jsx("button", {
91
+ className: `hover:bg-muted w-full rounded-md px-3 py-2 text-left text-base transition-colors ${activeCategory === "all" ? "bg-muted" : ""}`,
92
+ onMouseEnter: () => setActiveCategory("all"),
93
+ onFocus: () => setActiveCategory("all"),
94
+ onClick: () => setActiveCategory("all"),
95
+ children: "All"
96
+ }), categories.map((c) => /* @__PURE__ */ jsx("button", {
97
+ className: `hover:bg-muted w-full rounded-md px-3 py-2 text-left text-base transition-colors ${activeCategory === c.key ? "bg-muted" : ""}`,
98
+ onMouseEnter: () => setActiveCategory(c.key),
99
+ onFocus: () => setActiveCategory(c.key),
100
+ onClick: () => setActiveCategory(c.key),
101
+ children: c.label
102
+ }, c.key))]
103
+ }),
104
+ /* @__PURE__ */ jsx("div", {
105
+ className: "grid max-h-96 flex-1 grid-cols-1 gap-1 overflow-auto pr-1",
106
+ children: visible.map((m) => /* @__PURE__ */ jsx(NavigationMenuLink, {
107
+ asChild: true,
108
+ children: /* @__PURE__ */ jsxs("a", {
109
+ href: `/modules/${m.key}`,
110
+ className: "hover:bg-muted rounded-md px-3 py-2 text-left transition-colors",
111
+ onMouseEnter: () => setActiveKey(m.key),
112
+ onFocus: () => setActiveKey(m.key),
113
+ children: [/* @__PURE__ */ jsx("div", {
114
+ className: "text-base font-medium",
115
+ children: m.title
116
+ }), m.description && /* @__PURE__ */ jsx("div", {
117
+ className: "text-muted-foreground line-clamp-2 text-sm",
118
+ children: m.description
119
+ })]
120
+ })
121
+ }, m.key))
122
+ }),
123
+ /* @__PURE__ */ jsx("div", {
124
+ className: "w-[320px] shrink-0",
125
+ children: preview
126
+ })
127
+ ]
128
+ });
129
+ }
130
+
131
+ //#endregion
132
+ export { NavCategorizedWithPreview, NavColumns, NavigationMenuContent as NavContent, NavigationMenuItem as NavItem, NavigationMenuLink as NavLink, NavigationMenuList as NavList, NavPanel, NavigationMenu as NavRoot, NavSimpleList, NavigationMenuTrigger as NavTrigger, navPanelVariants };
133
+ //# sourceMappingURL=nav-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-layout.js","names":["React"],"sources":["../../ui/nav-layout.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n} from './navigation-menu';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '@contractspec/lib.ui-kit-core/utils';\n\nexport const navPanelVariants = cva('', {\n variants: {\n width: {\n sm: 'w-[280px]',\n md: 'w-[500px]',\n lg: 'w-[900px]',\n full: 'w-[calc(100vw-2rem)]',\n },\n padding: {\n none: '',\n sm: 'p-2',\n md: 'p-3',\n },\n },\n defaultVariants: {\n width: 'lg',\n padding: 'md',\n },\n});\n\nexport interface NavPanelProps extends React.ComponentPropsWithoutRef<'div'> {\n width?: 'sm' | 'md' | 'lg' | 'full';\n padding?: 'none' | 'sm' | 'md';\n}\n\nexport function NavPanel({\n width,\n padding,\n className,\n ...props\n}: NavPanelProps) {\n return (\n <div\n className={cn(navPanelVariants({ width, padding }), className)}\n {...props}\n />\n );\n}\n\n// Simple list layout\nexport function NavSimpleList({\n title,\n items,\n}: {\n title?: React.ReactNode;\n items: { href: string; label: string; description?: string }[];\n}) {\n return (\n <div>\n {title && <div className=\"mb-2 text-base font-semibold\">{title}</div>}\n <ul className=\"grid w-[280px] gap-2\">\n {items.map((it) => (\n <li key={it.href}>\n <NavigationMenuLink asChild>\n <a\n href={it.href}\n className=\"hover:bg-accent block rounded-md p-2\"\n >\n <div className=\"text-base font-medium\">{it.label}</div>\n {it.description && (\n <div className=\"text-muted-foreground line-clamp-2 text-sm\">\n {it.description}\n </div>\n )}\n </a>\n </NavigationMenuLink>\n </li>\n ))}\n </ul>\n </div>\n );\n}\n\n// Columns layout\nexport function NavColumns({\n columns,\n}: {\n columns: {\n title?: string;\n items: { href: string; label: string; description?: string }[];\n }[];\n}) {\n return (\n <div className=\"grid w-[500px] grid-cols-2 gap-3\">\n {columns.map((col, idx) => (\n <div key={idx}>\n {col.title && (\n <div className=\"text-muted-foreground mb-2 text-base font-semibold\">\n {col.title}\n </div>\n )}\n <ul className=\"grid gap-2\">\n {col.items.map((it) => (\n <li key={it.href}>\n <NavigationMenuLink asChild>\n <a\n href={it.href}\n className=\"hover:bg-accent block rounded-md p-2\"\n >\n <div className=\"text-base font-medium\">{it.label}</div>\n {it.description && (\n <div className=\"text-muted-foreground line-clamp-2 text-sm\">\n {it.description}\n </div>\n )}\n </a>\n </NavigationMenuLink>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n );\n}\n\n// Categorized with preview layout\nexport function NavCategorizedWithPreview({\n categories,\n modules,\n activeCategory,\n setActiveCategory,\n activeKey: _activeKey,\n setActiveKey,\n preview,\n}: {\n categories: { key: string; label: string }[];\n modules: {\n key: string;\n title: string;\n description?: string;\n categories: string[];\n }[];\n activeCategory: string;\n setActiveCategory: (k: string) => void;\n activeKey: string | null;\n setActiveKey: (k: string | null) => void;\n preview: React.ReactNode;\n}) {\n const visible = React.useMemo(\n () =>\n modules.filter(\n (m) => activeCategory === 'all' || m.categories.includes(activeCategory)\n ),\n [modules, activeCategory]\n );\n\n return (\n <div className=\"flex items-start gap-3\">\n <div className=\"max-h-96 w-48 shrink-0 overflow-auto pr-1\">\n <button\n className={`hover:bg-muted w-full rounded-md px-3 py-2 text-left text-base transition-colors ${\n activeCategory === 'all' ? 'bg-muted' : ''\n }`}\n onMouseEnter={() => setActiveCategory('all')}\n onFocus={() => setActiveCategory('all')}\n onClick={() => setActiveCategory('all')}\n >\n All\n </button>\n {categories.map((c) => (\n <button\n key={c.key}\n className={`hover:bg-muted w-full rounded-md px-3 py-2 text-left text-base transition-colors ${\n activeCategory === c.key ? 'bg-muted' : ''\n }`}\n onMouseEnter={() => setActiveCategory(c.key)}\n onFocus={() => setActiveCategory(c.key)}\n onClick={() => setActiveCategory(c.key)}\n >\n {c.label}\n </button>\n ))}\n </div>\n <div className=\"grid max-h-96 flex-1 grid-cols-1 gap-1 overflow-auto pr-1\">\n {visible.map((m) => (\n <NavigationMenuLink asChild key={m.key}>\n <a\n href={`/modules/${m.key}`}\n className=\"hover:bg-muted rounded-md px-3 py-2 text-left transition-colors\"\n onMouseEnter={() => setActiveKey(m.key)}\n onFocus={() => setActiveKey(m.key)}\n >\n <div className=\"text-base font-medium\">{m.title}</div>\n {m.description && (\n <div className=\"text-muted-foreground line-clamp-2 text-sm\">\n {m.description}\n </div>\n )}\n </a>\n </NavigationMenuLink>\n ))}\n </div>\n <div className=\"w-[320px] shrink-0\">{preview}</div>\n </div>\n );\n}\n\nexport {\n NavigationMenu as NavRoot,\n NavigationMenuList as NavList,\n NavigationMenuItem as NavItem,\n NavigationMenuTrigger as NavTrigger,\n NavigationMenuContent as NavContent,\n NavigationMenuLink as NavLink,\n};\n"],"mappings":";;;;;;;AAYA,MAAa,mBAAmB,IAAI,IAAI;CACtC,UAAU;EACR,OAAO;GACL,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,MAAM;GACP;EACD,SAAS;GACP,MAAM;GACN,IAAI;GACJ,IAAI;GACL;EACF;CACD,iBAAiB;EACf,OAAO;EACP,SAAS;EACV;CACF,CAAC;AAOF,SAAgB,SAAS,EACvB,OACA,SACA,WACA,GAAG,SACa;AAChB,QACE,oBAAC;EACC,WAAW,GAAG,iBAAiB;GAAE;GAAO;GAAS,CAAC,EAAE,UAAU;EAC9D,GAAI;GACJ;;AAKN,SAAgB,cAAc,EAC5B,OACA,SAIC;AACD,QACE,qBAAC,oBACE,SAAS,oBAAC;EAAI,WAAU;YAAgC;GAAY,EACrE,oBAAC;EAAG,WAAU;YACX,MAAM,KAAK,OACV,oBAAC,kBACC,oBAAC;GAAmB;aAClB,qBAAC;IACC,MAAM,GAAG;IACT,WAAU;eAEV,oBAAC;KAAI,WAAU;eAAyB,GAAG;MAAY,EACtD,GAAG,eACF,oBAAC;KAAI,WAAU;eACZ,GAAG;MACA;KAEN;IACe,IAbd,GAAG,KAcP,CACL;GACC,IACD;;AAKV,SAAgB,WAAW,EACzB,WAMC;AACD,QACE,oBAAC;EAAI,WAAU;YACZ,QAAQ,KAAK,KAAK,QACjB,qBAAC,oBACE,IAAI,SACH,oBAAC;GAAI,WAAU;aACZ,IAAI;IACD,EAER,oBAAC;GAAG,WAAU;aACX,IAAI,MAAM,KAAK,OACd,oBAAC,kBACC,oBAAC;IAAmB;cAClB,qBAAC;KACC,MAAM,GAAG;KACT,WAAU;gBAEV,oBAAC;MAAI,WAAU;gBAAyB,GAAG;OAAY,EACtD,GAAG,eACF,oBAAC;MAAI,WAAU;gBACZ,GAAG;OACA;MAEN;KACe,IAbd,GAAG,KAcP,CACL;IACC,KAxBG,IAyBJ,CACN;GACE;;AAKV,SAAgB,0BAA0B,EACxC,YACA,SACA,gBACA,mBACA,WAAW,YACX,cACA,WAcC;CACD,MAAM,UAAUA,QAAM,cAElB,QAAQ,QACL,MAAM,mBAAmB,SAAS,EAAE,WAAW,SAAS,eAAe,CACzE,EACH,CAAC,SAAS,eAAe,CAC1B;AAED,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KACC,WAAW,oFACT,mBAAmB,QAAQ,aAAa;KAE1C,oBAAoB,kBAAkB,MAAM;KAC5C,eAAe,kBAAkB,MAAM;KACvC,eAAe,kBAAkB,MAAM;eACxC;MAEQ,EACR,WAAW,KAAK,MACf,oBAAC;KAEC,WAAW,oFACT,mBAAmB,EAAE,MAAM,aAAa;KAE1C,oBAAoB,kBAAkB,EAAE,IAAI;KAC5C,eAAe,kBAAkB,EAAE,IAAI;KACvC,eAAe,kBAAkB,EAAE,IAAI;eAEtC,EAAE;OARE,EAAE,IASA,CACT;KACE;GACN,oBAAC;IAAI,WAAU;cACZ,QAAQ,KAAK,MACZ,oBAAC;KAAmB;eAClB,qBAAC;MACC,MAAM,YAAY,EAAE;MACpB,WAAU;MACV,oBAAoB,aAAa,EAAE,IAAI;MACvC,eAAe,aAAa,EAAE,IAAI;iBAElC,oBAAC;OAAI,WAAU;iBAAyB,EAAE;QAAY,EACrD,EAAE,eACD,oBAAC;OAAI,WAAU;iBACZ,EAAE;QACC;OAEN;OAb2B,EAAE,IAcd,CACrB;KACE;GACN,oBAAC;IAAI,WAAU;cAAsB;KAAc;;GAC/C"}
@@ -0,0 +1,47 @@
1
+ import * as React$1 from "react";
2
+ import * as react_jsx_runtime60 from "react/jsx-runtime";
3
+ import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
4
+ import * as class_variance_authority_types8 from "class-variance-authority/types";
5
+
6
+ //#region ui/navigation-menu.d.ts
7
+ declare function NavigationMenu({
8
+ className,
9
+ children,
10
+ viewport,
11
+ ...props
12
+ }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Root> & {
13
+ viewport?: boolean;
14
+ }): react_jsx_runtime60.JSX.Element;
15
+ declare function NavigationMenuList({
16
+ className,
17
+ ...props
18
+ }: React$1.ComponentProps<typeof NavigationMenuPrimitive.List>): react_jsx_runtime60.JSX.Element;
19
+ declare function NavigationMenuItem({
20
+ className,
21
+ ...props
22
+ }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Item>): react_jsx_runtime60.JSX.Element;
23
+ declare const navigationMenuTriggerStyle: (props?: class_variance_authority_types8.ClassProp | undefined) => string;
24
+ declare function NavigationMenuTrigger({
25
+ className,
26
+ children,
27
+ ...props
28
+ }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Trigger>): react_jsx_runtime60.JSX.Element;
29
+ declare function NavigationMenuContent({
30
+ className,
31
+ ...props
32
+ }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Content>): react_jsx_runtime60.JSX.Element;
33
+ declare function NavigationMenuViewport({
34
+ className,
35
+ ...props
36
+ }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Viewport>): react_jsx_runtime60.JSX.Element;
37
+ declare function NavigationMenuLink({
38
+ className,
39
+ ...props
40
+ }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Link>): react_jsx_runtime60.JSX.Element;
41
+ declare function NavigationMenuIndicator({
42
+ className,
43
+ ...props
44
+ }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Indicator>): react_jsx_runtime60.JSX.Element;
45
+ //#endregion
46
+ export { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, navigationMenuTriggerStyle };
47
+ //# sourceMappingURL=navigation-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-menu.d.ts","names":[],"sources":["../../ui/navigation-menu.tsx"],"sourcesContent":[],"mappings":";;;;;;iBAOS,cAAA;;;;;GAKN,OAAA,CAAM,sBAAsB,uBAAA,CAAwB;;IAEtD,mBAAA,CAAA,GAAA,CAAA;iBAiBQ,kBAAA;;;GAGN,OAAA,CAAM,sBAAsB,uBAAA,CAAwB,QAAK,mBAAA,CAAA,GAAA,CAAA;AAjCe,iBA8ClE,kBAAA,CAxCc;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA2CpB,OAAA,CAAM,cA3Cc,CAAA,OA2CQ,uBAAA,CAAwB,IA3ChC,CAAA,CAAA,EA2CqC,mBAAA,CAAA,GAAA,CAAA,OA3CrC;cAqDjB,0BApDJ,EAAA,CAAA,KAAA,CAAA,EAsDD,+BAAA,CAF+B,SAAA,GApD9B,SAAA,EAAA,GAAA,MAAA;iBAwDO,qBAAA,CAvDP;EAAA,SAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EA2DC,OAAA,CAAM,cA3DP,CAAA,OA2D6B,uBAAA,CAAwB,OA3DrD,CAAA,CAAA,EA2D6D,mBAAA,CAAA,GAAA,CAAA,OA3D7D;iBA2EO,qBAAA,CA1EP;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA6EC,OAAA,CAAM,cA7EP,CAAA,OA6E6B,uBAAA,CAAwB,OA7ErD,CAAA,CAAA,EA6E6D,mBAAA,CAAA,GAAA,CAAA,OA7E7D;iBA2FO,sBAAA,CAzF8C;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA4FpD,OAAA,CAAM,cA5F8C,CAAA,OA4FxB,uBAAA,CAAwB,QA5FA,CAAA,CAAA,EA4FS,mBAAA,CAAA,GAAA,CAAA,OA5FT;iBA+G9C,kBAAA,CA/GA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAkHN,OAAA,CAAM,cAlHA,CAAA,OAkHsB,uBAAA,CAAwB,IAlH9C,CAAA,CAAA,EAkHmD,mBAAA,CAAA,GAAA,CAAA,OAlHnD;iBA+HA,uBAAA,CA7HR;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAgIE,OAAA,CAAM,cAhIR,CAAA,OAgI8B,uBAAA,CAAwB,SAhItD,CAAA,CAAA,EAgIgE,mBAAA,CAAA,GAAA,CAAA,OAhIhE"}
@@ -0,0 +1,83 @@
1
+ import "react";
2
+ import { ChevronDownIcon } from "lucide-react";
3
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { cva } from "class-variance-authority";
6
+ import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
7
+
8
+ //#region ui/navigation-menu.tsx
9
+ function NavigationMenu({ className, children, viewport = true, ...props }) {
10
+ return /* @__PURE__ */ jsxs(NavigationMenuPrimitive.Root, {
11
+ "data-slot": "navigation-menu",
12
+ "data-viewport": viewport,
13
+ className: cn("group/navigation-menu relative flex max-w-max flex-1 items-center justify-center", className),
14
+ ...props,
15
+ children: [children, viewport && /* @__PURE__ */ jsx(NavigationMenuViewport, {})]
16
+ });
17
+ }
18
+ function NavigationMenuList({ className, ...props }) {
19
+ return /* @__PURE__ */ jsx(NavigationMenuPrimitive.List, {
20
+ "data-slot": "navigation-menu-list",
21
+ className: cn("group flex flex-1 list-none items-center justify-center gap-1", className),
22
+ ...props
23
+ });
24
+ }
25
+ function NavigationMenuItem({ className, ...props }) {
26
+ return /* @__PURE__ */ jsx(NavigationMenuPrimitive.Item, {
27
+ "data-slot": "navigation-menu-item",
28
+ className: cn("relative", className),
29
+ ...props
30
+ });
31
+ }
32
+ const navigationMenuTriggerStyle = cva("group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-hidden transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1");
33
+ function NavigationMenuTrigger({ className, children, ...props }) {
34
+ return /* @__PURE__ */ jsxs(NavigationMenuPrimitive.Trigger, {
35
+ "data-slot": "navigation-menu-trigger",
36
+ className: cn(navigationMenuTriggerStyle(), "group", className),
37
+ ...props,
38
+ children: [
39
+ children,
40
+ " ",
41
+ /* @__PURE__ */ jsx(ChevronDownIcon, {
42
+ className: "relative top-px ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
43
+ "aria-hidden": "true"
44
+ })
45
+ ]
46
+ });
47
+ }
48
+ function NavigationMenuContent({ className, ...props }) {
49
+ return /* @__PURE__ */ jsx(NavigationMenuPrimitive.Content, {
50
+ "data-slot": "navigation-menu-content",
51
+ className: cn("data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto", "bg-background group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground data-[state=open]:group-data-[viewport=false]/navigation-menu:animate-in data-[state=closed]:group-data-[viewport=false]/navigation-menu:animate-out data-[state=closed]:group-data-[viewport=false]/navigation-menu:fade-out-0 data-[state=open]:group-data-[viewport=false]/navigation-menu:fade-in-0 data-[state=closed]:group-data-[viewport=false]/navigation-menu:zoom-out-95 data-[state=open]:group-data-[viewport=false]/navigation-menu:zoom-in-95 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow-2xs group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-hidden", className),
52
+ ...props
53
+ });
54
+ }
55
+ function NavigationMenuViewport({ className, ...props }) {
56
+ return /* @__PURE__ */ jsx("div", {
57
+ className: cn("absolute top-full left-0 isolate z-50 flex justify-center"),
58
+ children: /* @__PURE__ */ jsx(NavigationMenuPrimitive.Viewport, {
59
+ "data-slot": "navigation-menu-viewport",
60
+ className: cn("origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-md border shadow-2xs md:w-(--radix-navigation-menu-viewport-width)", className),
61
+ ...props
62
+ })
63
+ });
64
+ }
65
+ function NavigationMenuLink({ className, ...props }) {
66
+ return /* @__PURE__ */ jsx(NavigationMenuPrimitive.Link, {
67
+ "data-slot": "navigation-menu-link",
68
+ className: cn("hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground data-[active=true]:hover:bg-accent data-[active=true]:focus:bg-accent [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-xs p-2 text-sm outline-hidden transition-all focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4", className),
69
+ ...props
70
+ });
71
+ }
72
+ function NavigationMenuIndicator({ className, ...props }) {
73
+ return /* @__PURE__ */ jsx(NavigationMenuPrimitive.Indicator, {
74
+ "data-slot": "navigation-menu-indicator",
75
+ className: cn("data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-1 flex h-1.5 items-end justify-center overflow-hidden", className),
76
+ ...props,
77
+ children: /* @__PURE__ */ jsx("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
78
+ });
79
+ }
80
+
81
+ //#endregion
82
+ export { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, navigationMenuTriggerStyle };
83
+ //# sourceMappingURL=navigation-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-menu.js","names":[],"sources":["../../ui/navigation-menu.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';\nimport { cva } from 'class-variance-authority';\nimport { ChevronDownIcon } from 'lucide-react';\n\nimport { cn } from '@contractspec/lib.ui-kit-core/utils';\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n 'group/navigation-menu relative flex max-w-max flex-1 items-center justify-center',\n className\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n 'group flex flex-1 list-none items-center justify-center gap-1',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn('relative', className)}\n {...props}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n 'group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-hidden transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1'\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), 'group', className)}\n {...props}\n >\n {children}{' '}\n <ChevronDownIcon\n className=\"relative top-px ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n 'data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto',\n 'bg-background group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground data-[state=open]:group-data-[viewport=false]/navigation-menu:animate-in data-[state=closed]:group-data-[viewport=false]/navigation-menu:animate-out data-[state=closed]:group-data-[viewport=false]/navigation-menu:fade-out-0 data-[state=open]:group-data-[viewport=false]/navigation-menu:fade-in-0 data-[state=closed]:group-data-[viewport=false]/navigation-menu:zoom-out-95 data-[state=open]:group-data-[viewport=false]/navigation-menu:zoom-in-95 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow-2xs group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div\n className={cn(\n 'absolute top-full left-0 isolate z-50 flex justify-center'\n )}\n >\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n 'origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-md border shadow-2xs md:w-(--radix-navigation-menu-viewport-width)',\n className\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(\n \"hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground data-[active=true]:hover:bg-accent data-[active=true]:focus:bg-accent [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-xs p-2 text-sm outline-hidden transition-all focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n 'data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-1 flex h-1.5 items-end justify-center overflow-hidden',\n className\n )}\n {...props}\n >\n <div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n};\n"],"mappings":";;;;;;;;AAOA,SAAS,eAAe,EACtB,WACA,UACA,WAAW,MACX,GAAG,SAGF;AACD,QACE,qBAAC,wBAAwB;EACvB,aAAU;EACV,iBAAe;EACf,WAAW,GACT,oFACA,UACD;EACD,GAAI;aAEH,UACA,YAAY,oBAAC,2BAAyB;GACV;;AAInC,SAAS,mBAAmB,EAC1B,WACA,GAAG,SACyD;AAC5D,QACE,oBAAC,wBAAwB;EACvB,aAAU;EACV,WAAW,GACT,iEACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,mBAAmB,EAC1B,WACA,GAAG,SACyD;AAC5D,QACE,oBAAC,wBAAwB;EACvB,aAAU;EACV,WAAW,GAAG,YAAY,UAAU;EACpC,GAAI;GACJ;;AAIN,MAAM,6BAA6B,IACjC,igBACD;AAED,SAAS,sBAAsB,EAC7B,WACA,UACA,GAAG,SAC4D;AAC/D,QACE,qBAAC,wBAAwB;EACvB,aAAU;EACV,WAAW,GAAG,4BAA4B,EAAE,SAAS,UAAU;EAC/D,GAAI;;GAEH;GAAU;GACX,oBAAC;IACC,WAAU;IACV,eAAY;KACZ;;GAC8B;;AAItC,SAAS,sBAAsB,EAC7B,WACA,GAAG,SAC4D;AAC/D,QACE,oBAAC,wBAAwB;EACvB,aAAU;EACV,WAAW,GACT,oWACA,ijCACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,uBAAuB,EAC9B,WACA,GAAG,SAC6D;AAChE,QACE,oBAAC;EACC,WAAW,GACT,4DACD;YAED,oBAAC,wBAAwB;GACvB,aAAU;GACV,WAAW,GACT,gVACA,UACD;GACD,GAAI;IACJ;GACE;;AAIV,SAAS,mBAAmB,EAC1B,WACA,GAAG,SACyD;AAC5D,QACE,oBAAC,wBAAwB;EACvB,aAAU;EACV,WAAW,GACT,2dACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,wBAAwB,EAC/B,WACA,GAAG,SAC8D;AACjE,QACE,oBAAC,wBAAwB;EACvB,aAAU;EACV,WAAW,GACT,8LACA,UACD;EACD,GAAI;YAEJ,oBAAC,SAAI,WAAU,2EAA2E;GACxD"}
@@ -0,0 +1,30 @@
1
+ import React from "react";
2
+ import * as react_jsx_runtime254 from "react/jsx-runtime";
3
+
4
+ //#region ui/organisms/ErrorBoundary/ErrorBoundary.d.ts
5
+ interface ErrorBoundaryState {
6
+ hasError: boolean;
7
+ error: Error | null;
8
+ errorId: string | null;
9
+ }
10
+ interface ErrorBoundaryProps {
11
+ children: React.ReactNode;
12
+ fallback?: React.ComponentType<ErrorFallbackProps>;
13
+ onError?: (error: Error, errorInfo: React.ErrorInfo) => void;
14
+ }
15
+ interface ErrorFallbackProps {
16
+ error: Error;
17
+ errorId: string | null;
18
+ resetError: () => void;
19
+ }
20
+ declare class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {
21
+ constructor(props: ErrorBoundaryProps);
22
+ static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState>;
23
+ componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void;
24
+ resetError: () => void;
25
+ render(): string | number | bigint | boolean | react_jsx_runtime254.JSX.Element | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | undefined;
26
+ }
27
+ declare const useErrorHandler: () => (error: Error) => never;
28
+ //#endregion
29
+ export { ErrorBoundary, type ErrorBoundaryProps, type ErrorFallbackProps, useErrorHandler };
30
+ //# sourceMappingURL=ErrorBoundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorBoundary.d.ts","names":[],"sources":["../../../../ui/organisms/ErrorBoundary/ErrorBoundary.tsx"],"sourcesContent":[],"mappings":";;;;UAOU,kBAAA;;SAED;EAFC,OAAA,EAAA,MAAA,GAAA,IAAkB;AAEd;UAIJ,kBAAA,CACQ;EACe,QAAA,EADrB,KAAA,CAAM,SACe;EAApB,QAAM,CAAA,EAAN,KAAA,CAAM,aAAA,CAAc,kBAAd,CAAA;EACC,OAAA,CAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,SAAA,EAAkB,KAAA,CAAM,SAAxB,EAAA,GAAA,IAAA;;UAGV,kBAAA,CAH2C;EAG3C,KAAA,EACD,KADC;EAmEG,OAAA,EAAA,MAAA,GAAc,IAAA;EACzB,UAAA,EAAA,GAAA,GAAA,IAAA;;AAGmB,cAJR,aAAA,SAAsB,KAAA,CAAM,SAIpB,CAHnB,kBAGmB,EAFnB,kBAEmB,CAAA,CAAA;EASoB,WAAA,CAAA,KAAA,EATpB,kBASoB;EAAgB,OAAA,wBAAA,CAAA,KAAA,EAAhB,KAAgB,CAAA,EAAR,OAAQ,CAAA,kBAAA,CAAA;EAAR,iBAAA,CAAA,KAAA,EAOtB,KAPsB,EAAA,SAAA,EAOJ,KAAA,CAAM,SAPF,CAAA,EAAA,IAAA;EAOtB,UAAA,EAAA,GAAA,GAAA,IAAA;EAAkB,MAAM,CAAA,CAAA,EAAA,MAAA,GAAA,MAAA,GAAA,MAAA,GAAA,OAAA,GAgC3C,oBAAA,CAAA,GAAA,CAAA,OAAA,GAAA,QAhC2C,CAgC3C,KAAA,CAAA,SAhC2C,CAAA,GAgC3C,OAhC2C,CAAA,MAAA,GAAA,MAAA,GAAA,MAAA,GAAA,OAAA,GAgC3C,KAAA,CAAA,WAhC2C,GAgC3C,KAAA,CAAA,YAhC2C,CAAA,OAAA,EAAA,MAAA,GAgC3C,KAAA,CAAA,qBAhC2C,CAAA,GAAA,CAAA,CAAA,GAgC3C,QAhC2C,CAgC3C,KAAA,CAAA,SAhC2C,CAAA,GAAA,IAAA,GAAA,SAAA,CAAA,GAAA,IAAA,GAAA,SAAA;;AAgC3C,cAkBK,eAlBL,EAAA,GAAA,GAAA,CAAA,KAAA,EAmB2B,KAnB3B,EAAA,GAAA,KAAA"}