@contractspec/lib.design-system 3.11.2 → 4.1.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 (409) hide show
  1. package/README.md +3 -2
  2. package/dist/browser/components/atoms/InputPassword.js +1 -0
  3. package/dist/browser/components/data-view/DataViewRenderer.js +1 -1
  4. package/dist/browser/components/forms/controls/index.js +1 -1
  5. package/dist/browser/components/legal/templates/ContactTemplate.js +1 -1
  6. package/dist/browser/components/list/List.js +1 -0
  7. package/dist/browser/components/list/index.js +1 -0
  8. package/dist/browser/components/molecules/FiltersToolbar.js +1 -1
  9. package/dist/browser/components/molecules/Tabs.js +1 -0
  10. package/dist/browser/components/typography/Typography.js +1 -0
  11. package/dist/browser/components/typography/index.js +1 -0
  12. package/dist/browser/controls.js +1 -0
  13. package/dist/browser/forms.js +1 -0
  14. package/dist/browser/hooks/useListUrlState.js +1 -1
  15. package/dist/browser/index.js +1 -1
  16. package/dist/browser/layout.js +1 -0
  17. package/dist/browser/list.js +1 -0
  18. package/dist/browser/renderers/form-contract/renderer.js +1 -1
  19. package/dist/browser/renderers/form-contract/shell.js +1 -1
  20. package/dist/browser/typography.js +1 -0
  21. package/dist/components/atoms/{ButtonLink.mobile.d.ts → ButtonLink.native.d.ts} +1 -1
  22. package/dist/components/atoms/InputPassword.d.ts +15 -0
  23. package/dist/components/atoms/InputPassword.js +1 -0
  24. package/dist/components/atoms/InputPassword.native.d.ts +17 -0
  25. package/dist/components/atoms/Link.native.d.ts +1 -1
  26. package/dist/components/data-view/DataViewRenderer.d.ts +3 -3
  27. package/dist/components/data-view/DataViewRenderer.js +1 -1
  28. package/dist/components/data-view/{DataViewRenderer.mobile.d.ts → DataViewRenderer.native.d.ts} +3 -3
  29. package/dist/components/forms/controls/index.d.ts +1 -0
  30. package/dist/components/forms/controls/index.js +1 -1
  31. package/dist/components/legal/templates/ContactTemplate.js +1 -1
  32. package/dist/components/list/List.d.ts +6 -0
  33. package/dist/components/list/List.js +1 -0
  34. package/dist/components/list/List.native.d.ts +6 -0
  35. package/dist/components/list/index.d.ts +1 -0
  36. package/dist/components/list/index.js +1 -0
  37. package/dist/components/molecules/FiltersToolbar.d.ts +1 -0
  38. package/dist/components/molecules/FiltersToolbar.js +1 -1
  39. package/dist/components/molecules/Tabs.d.ts +32 -0
  40. package/dist/components/molecules/Tabs.js +1 -0
  41. package/dist/components/molecules/Tabs.native.d.ts +32 -0
  42. package/dist/components/organisms/{AppHeader.mobile.d.ts → AppHeader.native.d.ts} +1 -1
  43. package/dist/components/typography/Typography.d.ts +19 -0
  44. package/dist/components/typography/Typography.js +1 -0
  45. package/dist/components/typography/Typography.native.d.ts +19 -0
  46. package/dist/components/typography/index.d.ts +1 -0
  47. package/dist/components/typography/index.js +1 -0
  48. package/dist/controls.d.ts +1 -0
  49. package/dist/controls.js +1 -0
  50. package/dist/forms.d.ts +1 -0
  51. package/dist/forms.js +1 -0
  52. package/dist/hooks/useListUrlState.d.ts +3 -1
  53. package/dist/hooks/useListUrlState.js +1 -1
  54. package/dist/index.d.ts +4 -0
  55. package/dist/index.js +1 -1
  56. package/dist/layout.d.ts +1 -0
  57. package/dist/layout.js +1 -0
  58. package/dist/list.d.ts +1 -0
  59. package/dist/list.js +1 -0
  60. package/dist/native/components/agent/AgentMonitor.js +1 -0
  61. package/dist/native/components/agent/ApprovalQueue.js +1 -0
  62. package/dist/native/components/atoms/ActionButtons.js +1 -0
  63. package/dist/native/components/atoms/Button.js +1 -0
  64. package/dist/native/components/atoms/ButtonLink.js +1 -0
  65. package/dist/{browser/components/atoms/ButtonLink.mobile.js → native/components/atoms/ButtonLink.native.js} +1 -1
  66. package/dist/native/components/atoms/Cta.js +1 -0
  67. package/dist/native/components/atoms/DataChips.js +1 -0
  68. package/dist/native/components/atoms/EmptyState.js +1 -0
  69. package/dist/native/components/atoms/ErrorState.js +1 -0
  70. package/dist/native/components/atoms/ErrorState.native.js +1 -0
  71. package/dist/native/components/atoms/Input.js +1 -0
  72. package/dist/native/components/atoms/InputPassword.js +1 -0
  73. package/dist/native/components/atoms/InputPassword.native.js +1 -0
  74. package/dist/native/components/atoms/Link.js +1 -0
  75. package/dist/native/components/atoms/Link.native.js +1 -0
  76. package/dist/native/components/atoms/LoaderCircular.js +1 -0
  77. package/dist/native/components/atoms/NavBrand.js +1 -0
  78. package/dist/native/components/atoms/RankBadge.js +1 -0
  79. package/dist/native/components/atoms/ScoreBar.js +1 -0
  80. package/dist/native/components/atoms/Stepper.js +1 -0
  81. package/dist/native/components/atoms/Textarea.js +1 -0
  82. package/dist/native/components/data-table/DataTable.js +1 -0
  83. package/dist/native/components/data-table/DataTableToolbar.js +1 -0
  84. package/dist/{browser/components/data-table/DataTableToolbar.mobile.js → native/components/data-table/DataTableToolbar.native.js} +1 -1
  85. package/dist/native/components/data-table/DataTableToolbar.shared.js +1 -0
  86. package/dist/native/components/data-view/DataViewDetail.js +1 -0
  87. package/dist/native/components/data-view/DataViewList.js +1 -0
  88. package/dist/native/components/data-view/DataViewRenderer.js +1 -0
  89. package/dist/native/components/data-view/DataViewRenderer.native.js +1 -0
  90. package/dist/native/components/data-view/DataViewTable.js +1 -0
  91. package/dist/native/components/data-view/utils.js +1 -0
  92. package/dist/native/components/forms/ActionForm.js +1 -0
  93. package/dist/native/components/forms/FormCardLayout.js +1 -0
  94. package/dist/native/components/forms/FormDialog.js +1 -0
  95. package/dist/native/components/forms/FormLayout.js +1 -0
  96. package/dist/native/components/forms/FormOneByOneLayout.js +1 -0
  97. package/dist/native/components/forms/FormStepsLayout.js +1 -0
  98. package/dist/native/components/forms/ZodForm.js +1 -0
  99. package/dist/native/components/forms/controls/Autocomplete.js +1 -0
  100. package/dist/native/components/forms/controls/ChoiceControls.js +1 -0
  101. package/dist/native/components/forms/controls/Combobox.js +1 -0
  102. package/dist/native/components/forms/controls/DateTimeControls.js +1 -0
  103. package/dist/{components/forms/controls/DropdownMenu.mobile.js → native/components/forms/controls/DropdownMenu.js} +1 -1
  104. package/dist/native/components/forms/controls/Field.js +1 -0
  105. package/dist/native/components/forms/controls/InputGroup.js +1 -0
  106. package/dist/native/components/forms/controls/InputOTP.js +1 -0
  107. package/dist/native/components/forms/controls/LoadingButton.js +1 -0
  108. package/dist/native/components/forms/controls/NativeSelect.js +1 -0
  109. package/dist/native/components/forms/controls/Select.js +1 -0
  110. package/dist/native/components/forms/controls/index.js +1 -0
  111. package/dist/native/components/forms/index.js +1 -0
  112. package/dist/native/components/layout/Stack.js +1 -0
  113. package/dist/native/components/layout/index.js +1 -0
  114. package/dist/native/components/legal/atoms/DefinitionList.js +1 -0
  115. package/dist/native/components/legal/atoms/KeyValueList.js +1 -0
  116. package/dist/native/components/legal/atoms/LegalCallout.js +1 -0
  117. package/dist/native/components/legal/atoms/LegalHeading.js +1 -0
  118. package/dist/native/components/legal/atoms/LegalList.js +1 -0
  119. package/dist/native/components/legal/atoms/LegalSection.js +1 -0
  120. package/dist/native/components/legal/atoms/LegalText.js +1 -0
  121. package/dist/native/components/legal/molecules/Consent.js +1 -0
  122. package/dist/native/components/legal/molecules/ContactFields.js +1 -0
  123. package/dist/native/components/legal/molecules/LegalMeta.js +1 -0
  124. package/dist/native/components/legal/molecules/LegalTOC.js +1 -0
  125. package/dist/native/components/legal/organisms/ContactForm.js +1 -0
  126. package/dist/native/components/legal/organisms/GDPRDataRequest.js +1 -0
  127. package/dist/native/components/legal/organisms/GDPRRights.js +1 -0
  128. package/dist/native/components/legal/organisms/LegalPageLayout.js +1 -0
  129. package/dist/native/components/legal/templates/ContactTemplate.js +1 -0
  130. package/dist/native/components/legal/templates/CookiesTemplate.js +1 -0
  131. package/dist/native/components/legal/templates/PrivacyTemplate.js +1 -0
  132. package/dist/native/components/legal/templates/SalesTermsTemplate.js +1 -0
  133. package/dist/native/components/legal/templates/TermsTemplate.js +1 -0
  134. package/dist/native/components/list/List.js +1 -0
  135. package/dist/native/components/list/List.native.js +1 -0
  136. package/dist/native/components/list/index.js +1 -0
  137. package/dist/native/components/marketing/MarketingCard.js +1 -0
  138. package/dist/native/components/marketing/MarketingCardsSection.js +1 -0
  139. package/dist/native/components/marketing/MarketingComparisonSection.js +1 -0
  140. package/dist/native/components/marketing/MarketingIconCard.js +1 -0
  141. package/dist/native/components/marketing/MarketingSection.js +1 -0
  142. package/dist/native/components/marketing/MarketingStepCard.js +1 -0
  143. package/dist/native/components/molecules/AiLinkButton.js +1 -0
  144. package/dist/native/components/molecules/Breadcrumbs.js +1 -0
  145. package/dist/native/components/molecules/CodeBlock/CodeBlock.js +1 -0
  146. package/dist/native/components/molecules/CodeBlock/index.js +1 -0
  147. package/dist/native/components/molecules/CommandPalette.js +1 -0
  148. package/dist/native/components/molecules/CommandSearchTrigger.js +1 -0
  149. package/dist/native/components/molecules/CommandTabs/CommandTabs.js +1 -0
  150. package/dist/native/components/molecules/CommandTabs/index.js +1 -0
  151. package/dist/native/components/molecules/CopyButton/CopyButton.js +1 -0
  152. package/dist/native/components/molecules/CopyButton/index.js +1 -0
  153. package/dist/native/components/molecules/CopyButton/types.js +0 -0
  154. package/dist/native/components/molecules/DimensionScoresCard.js +1 -0
  155. package/dist/native/components/molecules/DropdownMenu.js +0 -0
  156. package/dist/native/components/molecules/EntityCard.js +1 -0
  157. package/dist/native/components/molecules/FiltersToolbar.js +1 -0
  158. package/dist/{browser/components/molecules/FiltersToolbar.mobile.js → native/components/molecules/FiltersToolbar.native.js} +1 -1
  159. package/dist/native/components/molecules/HoverPreview.js +1 -0
  160. package/dist/native/components/molecules/InstallCommand/InstallCommand.js +1 -0
  161. package/dist/native/components/molecules/InstallCommand/index.js +1 -0
  162. package/dist/native/components/molecules/InstallCommand/types.js +0 -0
  163. package/dist/native/components/molecules/LangSwitch.js +1 -0
  164. package/dist/native/components/molecules/LangSwitchDropdown.js +1 -0
  165. package/dist/native/components/molecules/LoaderBlock.js +1 -0
  166. package/dist/{browser/components/molecules/LoaderBlock.mobile.js → native/components/molecules/LoaderBlock.native.js} +1 -1
  167. package/dist/native/components/molecules/MarkdownRenderer/MarkdownRenderer.js +2 -0
  168. package/dist/native/components/molecules/MarkdownRenderer/formatInlineMarkdown.js +1 -0
  169. package/dist/native/components/molecules/MarkdownRenderer/index.js +1 -0
  170. package/dist/native/components/molecules/MarkdownRenderer/renderMarkdownTable.js +1 -0
  171. package/dist/native/components/molecules/MarkdownRenderer/types.js +0 -0
  172. package/dist/native/components/molecules/MobileNavMenu.js +1 -0
  173. package/dist/native/components/molecules/NavItemCard.js +1 -0
  174. package/dist/native/components/molecules/NavMain.js +1 -0
  175. package/dist/native/components/molecules/NavUser.js +1 -0
  176. package/dist/native/components/molecules/OverviewCard.js +1 -0
  177. package/dist/native/components/molecules/SkeletonBlock/index.js +1 -0
  178. package/dist/native/components/molecules/SkeletonBlock/types.js +0 -0
  179. package/dist/native/components/molecules/SkeletonCircle/index.js +1 -0
  180. package/dist/native/components/molecules/SkeletonCircle/types.js +0 -0
  181. package/dist/native/components/molecules/SkeletonList/index.js +1 -0
  182. package/dist/native/components/molecules/SkeletonList/types.js +0 -0
  183. package/dist/native/components/molecules/StatCard.js +1 -0
  184. package/dist/native/components/molecules/StatusChip.js +1 -0
  185. package/dist/native/components/molecules/Tabs.js +1 -0
  186. package/dist/native/components/molecules/Tabs.native.js +1 -0
  187. package/dist/native/components/molecules/hover-previews/Doc.js +1 -0
  188. package/dist/native/components/molecules/hover-previews/Media.js +1 -0
  189. package/dist/native/components/molecules/hover-previews/Simple.js +1 -0
  190. package/dist/native/components/molecules/hover-previews/Stats.js +1 -0
  191. package/dist/native/components/molecules/hover-previews/User.js +1 -0
  192. package/dist/native/components/organisms/AcademyLayout.js +1 -0
  193. package/dist/native/components/organisms/AppHeader.js +1 -0
  194. package/dist/{browser/components/organisms/AppHeader.mobile.js → native/components/organisms/AppHeader.native.js} +1 -1
  195. package/dist/native/components/organisms/AppLayout.js +1 -0
  196. package/dist/native/components/organisms/AppSidebar.js +1 -0
  197. package/dist/native/components/organisms/AppSidebar.native.js +0 -0
  198. package/dist/native/components/organisms/EmptyDataList.js +1 -0
  199. package/dist/native/components/organisms/EmptyDataList.types.js +0 -0
  200. package/dist/native/components/organisms/EmptySearchResult.js +1 -0
  201. package/dist/native/components/organisms/FAQSection.js +1 -0
  202. package/dist/native/components/organisms/FeatureCarousel.js +1 -0
  203. package/dist/native/components/organisms/FeaturesSection.js +1 -0
  204. package/dist/native/components/organisms/Footer.js +1 -0
  205. package/dist/native/components/organisms/GridLayout.js +1 -0
  206. package/dist/native/components/organisms/Header.js +1 -0
  207. package/dist/native/components/organisms/HeroResponsive.js +1 -0
  208. package/dist/native/components/organisms/HeroSection.js +1 -0
  209. package/dist/native/components/organisms/ListCardPage.js +1 -0
  210. package/dist/native/components/organisms/ListGridPage.js +1 -0
  211. package/dist/native/components/organisms/ListPageResponsive.js +1 -0
  212. package/dist/native/components/organisms/ListTablePage.js +1 -0
  213. package/dist/native/components/organisms/MarketingHeader.js +1 -0
  214. package/dist/native/components/organisms/MarketingHeaderDesktop.js +1 -0
  215. package/dist/native/components/organisms/MarketingHeaderMobile.js +1 -0
  216. package/dist/native/components/organisms/MarketingLayout.js +1 -0
  217. package/dist/native/components/organisms/ModelComparisonView.js +1 -0
  218. package/dist/native/components/organisms/PageHeaderResponsive.js +1 -0
  219. package/dist/{browser/components/organisms/PageHeaderResponsive.mobile.js → native/components/organisms/PageHeaderResponsive.native.js} +1 -1
  220. package/dist/native/components/organisms/PricingCarousel.js +1 -0
  221. package/dist/native/components/organisms/PricingSection.js +1 -0
  222. package/dist/native/components/organisms/TestimonialCarousel.js +1 -0
  223. package/dist/native/components/primitives/control.js +1 -0
  224. package/dist/native/components/primitives/themed.js +1 -0
  225. package/dist/native/components/providers/PackageManagerProvider.js +1 -0
  226. package/dist/native/components/templates/lists/ListPageTemplate/index.js +1 -0
  227. package/dist/{browser/components/templates/lists/ListPageTemplate/index.mobile.js → native/components/templates/lists/ListPageTemplate/index.native.js} +1 -1
  228. package/dist/native/components/templates/lists/ListPageTemplate/types.js +0 -0
  229. package/dist/native/components/typography/Typography.js +1 -0
  230. package/dist/native/components/typography/Typography.native.js +1 -0
  231. package/dist/native/components/typography/index.js +1 -0
  232. package/dist/native/components/visualization/ComparisonView.js +1 -0
  233. package/dist/{browser/components/visualization/ComparisonView.mobile.js → native/components/visualization/ComparisonView.native.js} +1 -1
  234. package/dist/native/components/visualization/TimelineView.js +1 -0
  235. package/dist/{browser/components/visualization/TimelineView.mobile.js → native/components/visualization/TimelineView.native.js} +1 -1
  236. package/dist/native/components/visualization/VisualizationCard.js +1 -0
  237. package/dist/native/components/visualization/VisualizationCard.native.js +1 -0
  238. package/dist/native/components/visualization/VisualizationGrid.js +1 -0
  239. package/dist/native/components/visualization/VisualizationRenderer.js +1 -0
  240. package/dist/native/components/visualization/types.js +0 -0
  241. package/dist/native/contracts.typecheck.js +1 -0
  242. package/dist/native/controls.js +1 -0
  243. package/dist/native/design-system.feature.js +1 -0
  244. package/dist/native/forms.js +1 -0
  245. package/dist/native/hooks/useListUrlState.js +1 -0
  246. package/dist/native/i18n/translation.js +1 -0
  247. package/dist/native/index.js +1 -0
  248. package/dist/native/layout.js +1 -0
  249. package/dist/native/lib/keyboard.js +1 -0
  250. package/dist/native/lib/utils.js +1 -0
  251. package/dist/native/list.js +1 -0
  252. package/dist/native/platform/useColorScheme.js +1 -0
  253. package/dist/native/platform/useReducedMotion.js +1 -0
  254. package/dist/native/platform/useResponsive.js +1 -0
  255. package/dist/native/platform/withPlatformUI.js +1 -0
  256. package/dist/native/renderers/form-contract/renderer.js +1 -0
  257. package/dist/native/renderers/form-contract/rich-fields.js +1 -0
  258. package/dist/native/renderers/form-contract/shell.js +1 -0
  259. package/dist/native/renderers/form-contract/values.js +1 -0
  260. package/dist/native/renderers/form-contract.js +1 -0
  261. package/dist/native/renderers/index.js +1 -0
  262. package/dist/native/theme/contracts.js +1 -0
  263. package/dist/native/theme/index.js +1 -0
  264. package/dist/native/theme/runtime-resolvers.js +1 -0
  265. package/dist/native/theme/runtime.js +1 -0
  266. package/dist/native/theme/tailwind-config.js +1 -0
  267. package/dist/native/theme/tailwind-css.js +9 -0
  268. package/dist/native/theme/tailwind-variables.js +1 -0
  269. package/dist/native/theme/tailwind.js +1 -0
  270. package/dist/native/theme/tokenBridge.js +1 -0
  271. package/dist/native/theme/tokens.js +1 -0
  272. package/dist/native/theme/variants.js +1 -0
  273. package/dist/native/types/nativewind-env.d.js +0 -0
  274. package/dist/native/types/navigation.js +0 -0
  275. package/dist/native/typography.js +1 -0
  276. package/dist/renderers/form-contract/renderer.js +1 -1
  277. package/dist/renderers/form-contract/shell.d.ts +5 -0
  278. package/dist/renderers/form-contract/shell.js +1 -1
  279. package/dist/typography.d.ts +1 -0
  280. package/dist/typography.js +1 -0
  281. package/package.json +3052 -22
  282. package/dist/browser/components/atoms/ErrorState.mobile.js +0 -1
  283. package/dist/browser/components/data-view/DataViewRenderer.mobile.js +0 -1
  284. package/dist/browser/components/visualization/VisualizationCard.mobile.js +0 -1
  285. package/dist/components/agent/ApprovalQueue.mobile.js +0 -1
  286. package/dist/components/atoms/Button.mobile.js +0 -1
  287. package/dist/components/atoms/ButtonLink.mobile.js +0 -1
  288. package/dist/components/atoms/Cta.mobile.js +0 -1
  289. package/dist/components/atoms/ErrorState.mobile.js +0 -1
  290. package/dist/components/atoms/Input.mobile.js +0 -1
  291. package/dist/components/atoms/LoaderCircular.mobile.js +0 -1
  292. package/dist/components/atoms/Textarea.mobile.js +0 -1
  293. package/dist/components/data-table/DataTable.mobile.js +0 -1
  294. package/dist/components/data-table/DataTableToolbar.mobile.js +0 -1
  295. package/dist/components/data-view/DataViewRenderer.mobile.js +0 -1
  296. package/dist/components/data-view/DataViewTable.mobile.js +0 -1
  297. package/dist/components/forms/controls/Autocomplete.mobile.js +0 -1
  298. package/dist/components/forms/controls/ChoiceControls.mobile.js +0 -1
  299. package/dist/components/forms/controls/Combobox.mobile.js +0 -1
  300. package/dist/components/forms/controls/DateTimeControls.mobile.js +0 -1
  301. package/dist/components/forms/controls/Field.mobile.js +0 -1
  302. package/dist/components/forms/controls/InputGroup.mobile.js +0 -1
  303. package/dist/components/forms/controls/InputOTP.mobile.js +0 -1
  304. package/dist/components/forms/controls/LoadingButton.mobile.js +0 -1
  305. package/dist/components/forms/controls/NativeSelect.mobile.js +0 -1
  306. package/dist/components/forms/controls/Select.mobile.js +0 -1
  307. package/dist/components/layout/Stack.mobile.js +0 -1
  308. package/dist/components/molecules/FiltersToolbar.mobile.js +0 -1
  309. package/dist/components/molecules/LoaderBlock.mobile.js +0 -1
  310. package/dist/components/molecules/SkeletonBlock/index.mobile.js +0 -1
  311. package/dist/components/molecules/SkeletonCircle/index.mobile.js +0 -1
  312. package/dist/components/molecules/SkeletonList/index.mobile.js +0 -1
  313. package/dist/components/native/BottomTabs.mobile.js +0 -1
  314. package/dist/components/native/FlatListScreen.mobile.js +0 -1
  315. package/dist/components/native/SheetMenu.mobile.js +0 -1
  316. package/dist/components/organisms/AppHeader.mobile.js +0 -1
  317. package/dist/components/organisms/EmptyDataList.mobile.js +0 -1
  318. package/dist/components/organisms/Header.mobile.js +0 -1
  319. package/dist/components/organisms/ListTablePage.mobile.js +0 -1
  320. package/dist/components/organisms/PageHeaderResponsive.mobile.js +0 -1
  321. package/dist/components/templates/lists/ListPageTemplate/index.mobile.js +0 -1
  322. package/dist/components/visualization/ComparisonView.mobile.js +0 -1
  323. package/dist/components/visualization/TimelineView.mobile.js +0 -1
  324. package/dist/components/visualization/VisualizationCard.mobile.js +0 -1
  325. package/dist/components/visualization/VisualizationGrid.mobile.js +0 -1
  326. package/dist/components/visualization/VisualizationRenderer.mobile.js +0 -1
  327. package/dist/platform/useColorScheme.mobile.js +0 -1
  328. package/dist/platform/useReducedMotion.mobile.js +0 -1
  329. package/dist/platform/useResponsive.mobile.js +0 -1
  330. /package/dist/components/agent/{ApprovalQueue.mobile.d.ts → ApprovalQueue.native.d.ts} +0 -0
  331. /package/dist/components/atoms/{Button.mobile.d.ts → Button.native.d.ts} +0 -0
  332. /package/dist/components/atoms/{Cta.mobile.d.ts → Cta.native.d.ts} +0 -0
  333. /package/dist/components/atoms/{ErrorState.mobile.d.ts → ErrorState.native.d.ts} +0 -0
  334. /package/dist/components/atoms/{Input.mobile.d.ts → Input.native.d.ts} +0 -0
  335. /package/dist/components/atoms/{LoaderCircular.mobile.d.ts → LoaderCircular.native.d.ts} +0 -0
  336. /package/dist/components/atoms/{Textarea.mobile.d.ts → Textarea.native.d.ts} +0 -0
  337. /package/dist/components/data-table/{DataTable.mobile.d.ts → DataTable.native.d.ts} +0 -0
  338. /package/dist/components/data-table/{DataTableToolbar.mobile.d.ts → DataTableToolbar.native.d.ts} +0 -0
  339. /package/dist/components/data-view/{DataViewTable.mobile.d.ts → DataViewTable.native.d.ts} +0 -0
  340. /package/dist/components/forms/controls/{Autocomplete.mobile.d.ts → Autocomplete.native.d.ts} +0 -0
  341. /package/dist/components/forms/controls/{ChoiceControls.mobile.d.ts → ChoiceControls.native.d.ts} +0 -0
  342. /package/dist/components/forms/controls/{Combobox.mobile.d.ts → Combobox.native.d.ts} +0 -0
  343. /package/dist/components/forms/controls/{DateTimeControls.mobile.d.ts → DateTimeControls.native.d.ts} +0 -0
  344. /package/dist/components/forms/controls/{DropdownMenu.mobile.d.ts → DropdownMenu.native.d.ts} +0 -0
  345. /package/dist/components/forms/controls/{Field.mobile.d.ts → Field.native.d.ts} +0 -0
  346. /package/dist/components/forms/controls/{InputGroup.mobile.d.ts → InputGroup.native.d.ts} +0 -0
  347. /package/dist/components/forms/controls/{InputOTP.mobile.d.ts → InputOTP.native.d.ts} +0 -0
  348. /package/dist/components/forms/controls/{LoadingButton.mobile.d.ts → LoadingButton.native.d.ts} +0 -0
  349. /package/dist/components/forms/controls/{NativeSelect.mobile.d.ts → NativeSelect.native.d.ts} +0 -0
  350. /package/dist/components/forms/controls/{Select.mobile.d.ts → Select.native.d.ts} +0 -0
  351. /package/dist/components/layout/{Stack.mobile.d.ts → Stack.native.d.ts} +0 -0
  352. /package/dist/components/molecules/{FiltersToolbar.mobile.d.ts → FiltersToolbar.native.d.ts} +0 -0
  353. /package/dist/components/molecules/{LoaderBlock.mobile.d.ts → LoaderBlock.native.d.ts} +0 -0
  354. /package/dist/components/molecules/SkeletonBlock/{index.mobile.d.ts → index.native.d.ts} +0 -0
  355. /package/dist/components/molecules/SkeletonCircle/{index.mobile.d.ts → index.native.d.ts} +0 -0
  356. /package/dist/components/molecules/SkeletonList/{index.mobile.d.ts → index.native.d.ts} +0 -0
  357. /package/dist/components/native/{BottomTabs.mobile.d.ts → BottomTabs.native.d.ts} +0 -0
  358. /package/dist/components/native/{FlatListScreen.mobile.d.ts → FlatListScreen.native.d.ts} +0 -0
  359. /package/dist/components/native/{SheetMenu.mobile.d.ts → SheetMenu.native.d.ts} +0 -0
  360. /package/dist/components/organisms/{AppSidebar.mobile.d.ts → AppSidebar.native.d.ts} +0 -0
  361. /package/dist/components/organisms/{EmptyDataList.mobile.d.ts → EmptyDataList.native.d.ts} +0 -0
  362. /package/dist/components/organisms/{Header.mobile.d.ts → Header.native.d.ts} +0 -0
  363. /package/dist/components/organisms/{ListTablePage.mobile.d.ts → ListTablePage.native.d.ts} +0 -0
  364. /package/dist/components/organisms/{PageHeaderResponsive.mobile.d.ts → PageHeaderResponsive.native.d.ts} +0 -0
  365. /package/dist/components/templates/lists/ListPageTemplate/{index.mobile.d.ts → index.native.d.ts} +0 -0
  366. /package/dist/components/visualization/{ComparisonView.mobile.d.ts → ComparisonView.native.d.ts} +0 -0
  367. /package/dist/components/visualization/{TimelineView.mobile.d.ts → TimelineView.native.d.ts} +0 -0
  368. /package/dist/components/visualization/{VisualizationCard.mobile.d.ts → VisualizationCard.native.d.ts} +0 -0
  369. /package/dist/components/visualization/{VisualizationGrid.mobile.d.ts → VisualizationGrid.native.d.ts} +0 -0
  370. /package/dist/components/visualization/{VisualizationRenderer.mobile.d.ts → VisualizationRenderer.native.d.ts} +0 -0
  371. /package/dist/{browser/components/agent/ApprovalQueue.mobile.js → native/components/agent/ApprovalQueue.native.js} +0 -0
  372. /package/dist/{browser/components/atoms/Button.mobile.js → native/components/atoms/Button.native.js} +0 -0
  373. /package/dist/{browser/components/atoms/Cta.mobile.js → native/components/atoms/Cta.native.js} +0 -0
  374. /package/dist/{browser/components/atoms/Input.mobile.js → native/components/atoms/Input.native.js} +0 -0
  375. /package/dist/{browser/components/atoms/LoaderCircular.mobile.js → native/components/atoms/LoaderCircular.native.js} +0 -0
  376. /package/dist/{browser/components/atoms/Textarea.mobile.js → native/components/atoms/Textarea.native.js} +0 -0
  377. /package/dist/{browser/components/data-table/DataTable.mobile.js → native/components/data-table/DataTable.native.js} +0 -0
  378. /package/dist/{browser/components/data-view/DataViewTable.mobile.js → native/components/data-view/DataViewTable.native.js} +0 -0
  379. /package/dist/{browser/components/forms/controls/Autocomplete.mobile.js → native/components/forms/controls/Autocomplete.native.js} +0 -0
  380. /package/dist/{browser/components/forms/controls/ChoiceControls.mobile.js → native/components/forms/controls/ChoiceControls.native.js} +0 -0
  381. /package/dist/{browser/components/forms/controls/Combobox.mobile.js → native/components/forms/controls/Combobox.native.js} +0 -0
  382. /package/dist/{browser/components/forms/controls/DateTimeControls.mobile.js → native/components/forms/controls/DateTimeControls.native.js} +0 -0
  383. /package/dist/{browser/components/forms/controls/DropdownMenu.mobile.js → native/components/forms/controls/DropdownMenu.native.js} +0 -0
  384. /package/dist/{browser/components/forms/controls/Field.mobile.js → native/components/forms/controls/Field.native.js} +0 -0
  385. /package/dist/{browser/components/forms/controls/InputGroup.mobile.js → native/components/forms/controls/InputGroup.native.js} +0 -0
  386. /package/dist/{browser/components/forms/controls/InputOTP.mobile.js → native/components/forms/controls/InputOTP.native.js} +0 -0
  387. /package/dist/{browser/components/forms/controls/LoadingButton.mobile.js → native/components/forms/controls/LoadingButton.native.js} +0 -0
  388. /package/dist/{browser/components/forms/controls/NativeSelect.mobile.js → native/components/forms/controls/NativeSelect.native.js} +0 -0
  389. /package/dist/{browser/components/forms/controls/Select.mobile.js → native/components/forms/controls/Select.native.js} +0 -0
  390. /package/dist/{browser/components/layout/Stack.mobile.js → native/components/layout/Stack.native.js} +0 -0
  391. /package/dist/{browser/components/organisms/AppSidebar.mobile.js → native/components/molecules/CodeBlock/types.js} +0 -0
  392. /package/dist/{components/organisms/AppSidebar.mobile.js → native/components/molecules/CommandTabs/types.js} +0 -0
  393. /package/dist/{browser/components/molecules/SkeletonBlock/index.mobile.js → native/components/molecules/SkeletonBlock/index.native.js} +0 -0
  394. /package/dist/{browser/components/molecules/SkeletonCircle/index.mobile.js → native/components/molecules/SkeletonCircle/index.native.js} +0 -0
  395. /package/dist/{browser/components/molecules/SkeletonList/index.mobile.js → native/components/molecules/SkeletonList/index.native.js} +0 -0
  396. /package/dist/{browser/components/native/BottomTabs.mobile.js → native/components/native/BottomTabs.native.js} +0 -0
  397. /package/dist/{browser/components/native/FlatListScreen.mobile.js → native/components/native/FlatListScreen.native.js} +0 -0
  398. /package/dist/{browser/components/native/SheetMenu.mobile.js → native/components/native/SheetMenu.native.js} +0 -0
  399. /package/dist/{browser/components/organisms/EmptyDataList.mobile.js → native/components/organisms/EmptyDataList.native.js} +0 -0
  400. /package/dist/{browser/components/organisms/Header.mobile.js → native/components/organisms/Header.native.js} +0 -0
  401. /package/dist/{browser/components/organisms/ListTablePage.mobile.js → native/components/organisms/ListTablePage.native.js} +0 -0
  402. /package/dist/{browser/components/visualization/VisualizationGrid.mobile.js → native/components/visualization/VisualizationGrid.native.js} +0 -0
  403. /package/dist/{browser/components/visualization/VisualizationRenderer.mobile.js → native/components/visualization/VisualizationRenderer.native.js} +0 -0
  404. /package/dist/{browser/platform/useColorScheme.mobile.js → native/platform/useColorScheme.native.js} +0 -0
  405. /package/dist/{browser/platform/useReducedMotion.mobile.js → native/platform/useReducedMotion.native.js} +0 -0
  406. /package/dist/{browser/platform/useResponsive.mobile.js → native/platform/useResponsive.native.js} +0 -0
  407. /package/dist/platform/{useColorScheme.mobile.d.ts → useColorScheme.native.d.ts} +0 -0
  408. /package/dist/platform/{useReducedMotion.mobile.d.ts → useReducedMotion.native.d.ts} +0 -0
  409. /package/dist/platform/{useResponsive.mobile.d.ts → useResponsive.native.d.ts} +0 -0
package/README.md CHANGED
@@ -285,10 +285,11 @@ hidden-column recovery without widening the primitive table API.
285
285
  ### Renderers and hooks
286
286
 
287
287
  - renderer exports from `./renderers`
288
- - form-contract renderer support, including readonly, autocomplete, address, phone, date, time, datetime, semantic FormSpec groups, grid layout hints, and text/textarea input groups
288
+ - form-contract renderer support, including readonly, password, autocomplete, address, phone, date, time, datetime, semantic FormSpec groups, grid layout hints, mobile-safe FormSpec column helper output, and text/textarea input groups
289
289
  - translation-aware rendering through `DesignSystemTranslationProvider` and `createTranslationResolver`
290
290
  - theme-aware form controls and stack primitives that consume ThemeSpec component variant props
291
- - hooks such as `useListUrlState`
291
+ - hooks such as `useListUrlState`, including scoped list filters where locked constraints are excluded from user-editable URL state
292
+ - DataViewRenderer filter chips for scoped DataView filters, including disabled locked chips on web and native surfaces
292
293
  - navigation-related shared types
293
294
 
294
295
  ### Component composition layers
@@ -0,0 +1 @@
1
+ import{jsx as v}from"react/jsx-runtime";import{InputPassword as k}from"@contractspec/lib.ui-kit-web/ui/input-password";import{mapKeyboardToWeb as T}from"../../lib/keyboard";import{useThemedTextField as f}from"../primitives/control";import{useTranslatedText as g}from"../primitives/themed";function I(q){return q==="new"?"new-password":"password"}function P(q){return q==="new"?"new-password":"current-password"}export function InputPassword({value:q,defaultValue:J,onChange:M,onSubmit:Q,onFocus:R,onBlur:U,placeholder:X,disabled:Y,readOnly:Z,maxLength:$,name:_,className:j,keyboard:G,componentKey:B,themeVariant:N,placeholderI18n:O,ariaLabelI18n:S,passwordPurpose:D="current",visibilityToggle:W,showLabel:C,hideLabel:V,showLabelI18n:F,hideLabelI18n:K,...A}){const H=g(),x=T({kind:I(D),...G,autoComplete:G?.autoComplete??A.autoComplete??P(D)}),z=f({defaultComponentKey:"InputPassword",componentKey:B,themeVariant:N,className:j,style:A.style,placeholder:X,placeholderI18n:O,ariaLabelI18n:S});return v(k,{...z.themed.props,...A,...x,className:z.themed.className,style:z.themed.style,value:q,defaultValue:J,onChange:M,onFocus:R,onBlur:U,placeholder:z.placeholder,"aria-label":z.ariaLabel,disabled:Y,readOnly:Z,maxLength:$,name:_,passwordPurpose:D,visibilityToggle:W,showLabel:H(F??C??"Show password"),hideLabel:H(K??V??"Hide password"),onKeyDown:(E)=>{A.onKeyDown?.(E);if(E.defaultPrevented||E.key!=="Enter")return;Q?.()}})}
@@ -1 +1 @@
1
- import{jsx as G,jsxs as w,Fragment as d}from"react/jsx-runtime";import{Pagination as b}from"@contractspec/lib.ui-kit-web/ui/atoms/Pagination";import{VStack as j}from"@contractspec/lib.ui-kit-web/ui/stack";import{Text as _}from"@contractspec/lib.ui-kit-web/ui/text";import*as k from"react";import{resolveTranslationString as F,useDesignSystemTranslation as N}from"../../i18n/translation";import{FiltersToolbar as x}from"../molecules/FiltersToolbar";import{DataViewDetail as A}from"./DataViewDetail";import{DataViewList as T}from"./DataViewList";import{DataViewTable as C}from"./DataViewTable";export function DataViewRenderer({spec:E,items:M=[],item:Y=null,className:I,renderActions:Q,onSelect:U,onRowClick:Z,toolbar:$,loading:q,headerActions:O,emptyState:K,footer:z,search:V,onSearchChange:L,filters:J,onFilterChange:P,pagination:H,onPageChange:R}){const W=N(),u=k.useMemo(()=>{switch(E.view.kind){case"list":return G(T,{spec:E,items:M,className:I,renderActions:Q,onSelect:U,emptyState:K});case"table":return G(C,{spec:E,items:M,className:I,onRowClick:Z,toolbar:$,loading:q,emptyState:K,headerActions:O,footer:z});case"detail":return G(A,{spec:E,item:Y,className:I,emptyState:K,headerActions:O});case"grid":{const B=E.view,X={kind:"list",layout:"card",fields:B.fields,filters:B.filters,actions:B.actions,primaryField:B.primaryField,secondaryFields:B.secondaryFields},v={...E,view:X};return G(T,{spec:v,items:M,className:I,renderActions:Q,onSelect:U,emptyState:K})}default:return G(_,{className:I,children:F("Unsupported data view kind",W)})}},[E,M,Y,I,Q,U,Z,$,q,O,K,z,W]);if(!(E.view.kind==="list"||E.view.kind==="table"||E.view.kind==="grid"))return G(d,{children:u});return w(j,{gap:"lg",children:[(E.view.filters?.length||L)&&G(x,{searchValue:V,onSearchChange:L,searchPlaceholder:F("Search...",W)??"Search...",activeChips:J?Object.entries(J).map(([B,X])=>({key:B,label:`${B}: ${X}`,onRemove:()=>{if(J){const{[B]:v,...D}=J;P?.(D)}}})):[],onClearAll:J&&Object.keys(J).length>0?()=>P?.({}):void 0,right:E.view.kind==="table"?void 0:O}),u,H&&H.total>0&&G(b,{currentPage:H.page,totalPages:Math.ceil(H.total/H.pageSize),totalItems:H.total,itemsPerPage:H.pageSize,onPageChange:(B)=>R?.(B),onItemsPerPageChange:(B)=>{R?.(1)},showItemsPerPage:!1})]})}
1
+ import{jsx as J,jsxs as c,Fragment as p}from"react/jsx-runtime";import{resolveDataViewFilters as S}from"@contractspec/lib.contracts-spec/data-views";import{Pagination as d}from"@contractspec/lib.ui-kit-web/ui/atoms/Pagination";import{VStack as h}from"@contractspec/lib.ui-kit-web/ui/stack";import{Text as f}from"@contractspec/lib.ui-kit-web/ui/text";import*as L from"react";import{resolveTranslationString as V,useDesignSystemTranslation as u}from"../../i18n/translation";import{FiltersToolbar as m}from"../molecules/FiltersToolbar";import{DataViewDetail as v}from"./DataViewDetail";import{DataViewList as b}from"./DataViewList";import{DataViewTable as y}from"./DataViewTable";export function DataViewRenderer({spec:B,items:G=[],item:X=null,className:M,renderActions:$,onSelect:q,onRowClick:P,toolbar:R,loading:T,headerActions:Y,emptyState:Q,footer:j,search:w,onSearchChange:_,filters:I,onFilterChange:Z,pagination:K,onPageChange:D}){const z=u(),O=L.useMemo(()=>S({filters:B.view.filters,scope:B.view.filterScope,user:g(I)}),[I,B.view.filterScope,B.view.filters]),N=L.useMemo(()=>{if(B.view.filterScope){const E=Object.entries(O.user).map(([H,W])=>({key:H,label:`${A(B,H)}: ${F(W)}`,onRemove:()=>{const{[H]:r,...C}=O.user;Z?.(C)}})),U=O.lockedChips==="hidden"?[]:Object.entries(O.locked).map(([H,W])=>({key:`locked-${H}`,label:`${A(B,H)}: ${F(W)}`,disabled:!0}));return[...E,...U]}return I?Object.entries(I).map(([E,U])=>({key:E,label:`${E}: ${String(U)}`,onRemove:()=>{const{[E]:H,...W}=I;Z?.(W)}})):[]},[I,Z,O,B]),k=B.view.filterScope?Object.keys(O.user).length>0:Boolean(I&&Object.keys(I).length>0),x=L.useMemo(()=>{switch(B.view.kind){case"list":return J(b,{spec:B,items:G,className:M,renderActions:$,onSelect:q,emptyState:Q});case"table":return J(y,{spec:B,items:G,className:M,onRowClick:P,toolbar:R,loading:T,emptyState:Q,headerActions:Y,footer:j});case"detail":return J(v,{spec:B,item:X,className:M,emptyState:Q,headerActions:Y});case"grid":{const E=B.view,U={kind:"list",layout:"card",fields:E.fields,filters:E.filters,actions:E.actions,primaryField:E.primaryField,secondaryFields:E.secondaryFields,filterScope:E.filterScope},H={...B,view:U};return J(b,{spec:H,items:G,className:M,renderActions:$,onSelect:q,emptyState:Q})}default:return J(f,{className:M,children:V("Unsupported data view kind",z)})}},[B,G,X,M,$,q,P,R,T,Y,Q,j,z]);if(!(B.view.kind==="list"||B.view.kind==="table"||B.view.kind==="grid"))return J(p,{children:x});return c(h,{gap:"lg",children:[(B.view.filters?.length||_||N.length)&&J(m,{searchValue:w,onSearchChange:_,searchPlaceholder:V("Search...",z)??"Search...",activeChips:N,onClearAll:k?()=>Z?.({}):void 0,right:B.view.kind==="table"?void 0:Y}),x,K&&K.total>0&&J(d,{currentPage:K.page,totalPages:Math.ceil(K.total/K.pageSize),totalItems:K.total,itemsPerPage:K.pageSize,onPageChange:(E)=>D?.(E),onItemsPerPageChange:(E)=>{D?.(1)},showItemsPerPage:!1})]})}function g(B){if(!B)return;return Object.fromEntries(Object.entries(B??{}).filter((G)=>Boolean(G[1]&&typeof G[1]==="object"&&"kind"in G[1]&&typeof G[1].kind==="string")))}function A(B,G){return B.view.filters?.find((X)=>X.key===G)?.label??G}function F(B){if(!B)return"";if(B.kind==="single")return String(B.value);if(B.kind==="multi")return B.values.map(String).join(", ");if(B.kind==="range")return[B.from==null?"":String(B.from),B.to==null?"":String(B.to)].filter(Boolean).join(" - ");return`${B.mode}(${B.clauses.length})`}
@@ -1 +1 @@
1
- export{Autocomplete}from"./Autocomplete";export{Checkbox,RadioGroup,RadioGroupItem,Switch}from"./ChoiceControls";export{Combobox}from"./Combobox";export{DatePicker,DateRangePicker,DateTimePicker,TimePicker}from"./DateTimeControls";export{DropdownMenu,DropdownMenuCheckboxItem,DropdownMenuContent,DropdownMenuGroup,DropdownMenuItem,DropdownMenuLabel,DropdownMenuPortal,DropdownMenuRadioGroup,DropdownMenuRadioItem,DropdownMenuSeparator,DropdownMenuShortcut,DropdownMenuSub,DropdownMenuSubContent,DropdownMenuSubTrigger,DropdownMenuTrigger}from"./DropdownMenu";export{Field,FieldContent,FieldDescription,FieldError,FieldGroup,FieldLabel,FieldLegend,FieldSeparator,FieldSet}from"./Field";export{InputGroup,InputGroupAddon,InputGroupButton,InputGroupInput,InputGroupText,InputGroupTextarea}from"./InputGroup";export{InputOTP,InputOTPGroup,InputOTPSeparator,InputOTPSlot}from"./InputOTP";export{LoadingButton}from"./LoadingButton";export{NativeSelect,NativeSelectOptGroup,NativeSelectOption}from"./NativeSelect";export{Select}from"./Select";
1
+ export{InputPassword}from"../../atoms/InputPassword";export{Autocomplete}from"./Autocomplete";export{Checkbox,RadioGroup,RadioGroupItem,Switch}from"./ChoiceControls";export{Combobox}from"./Combobox";export{DatePicker,DateRangePicker,DateTimePicker,TimePicker}from"./DateTimeControls";export{DropdownMenu,DropdownMenuCheckboxItem,DropdownMenuContent,DropdownMenuGroup,DropdownMenuItem,DropdownMenuLabel,DropdownMenuPortal,DropdownMenuRadioGroup,DropdownMenuRadioItem,DropdownMenuSeparator,DropdownMenuShortcut,DropdownMenuSub,DropdownMenuSubContent,DropdownMenuSubTrigger,DropdownMenuTrigger}from"./DropdownMenu";export{Field,FieldContent,FieldDescription,FieldError,FieldGroup,FieldLabel,FieldLegend,FieldSeparator,FieldSet}from"./Field";export{InputGroup,InputGroupAddon,InputGroupButton,InputGroupInput,InputGroupText,InputGroupTextarea}from"./InputGroup";export{InputOTP,InputOTPGroup,InputOTPSeparator,InputOTPSlot}from"./InputOTP";export{LoadingButton}from"./LoadingButton";export{NativeSelect,NativeSelectOptGroup,NativeSelectOption}from"./NativeSelect";export{Select}from"./Select";
@@ -1 +1 @@
1
- import{jsx as e,jsxs as c}from"react/jsx-runtime";import*as i from"react";import{Button as u}from"../../../index";import{ContactFields as d}from"../molecules/ContactFields";import{LegalPageLayout as g}from"../organisms/LegalPageLayout";export function ContactTemplate({title:r="Contact",meta:m,onSubmit:a}){const[o,s]=i.useState({name:"",email:"",subject:"",message:""}),[t,n]=i.useState(!1);return e(g,{title:r,meta:m,children:c("form",{onSubmit:async(l)=>{l.preventDefault();if(!a)return;n(!0);try{await a(o)}finally{n(!1)}},className:"space-y-6",children:[e(d,{value:o,onChange:s,disabled:t}),e(u,{disabled:t,type:"submit",children:t?"Envoi…":"Envoyer"})]})})}
1
+ import{jsx as e,jsxs as c}from"react/jsx-runtime";import*as i from"react";import{Button as u}from"../../atoms/Button";import{ContactFields as d}from"../molecules/ContactFields";import{LegalPageLayout as g}from"../organisms/LegalPageLayout";export function ContactTemplate({title:r="Contact",meta:m,onSubmit:a}){const[o,s]=i.useState({name:"",email:"",subject:"",message:""}),[t,n]=i.useState(!1);return e(g,{title:r,meta:m,children:c("form",{onSubmit:async(l)=>{l.preventDefault();if(!a)return;n(!0);try{await a(o)}finally{n(!1)}},className:"space-y-6",children:[e(d,{value:o,onChange:s,disabled:t}),e(u,{disabled:t,type:"submit",children:t?"Envoi…":"Envoyer"})]})})}
@@ -0,0 +1 @@
1
+ import{jsx as D}from"react/jsx-runtime";import{List as E,ListItem as F}from"@contractspec/lib.ui-kit-web/ui/list";import{useThemedPrimitive as C}from"../primitives/themed";export function List({componentKey:q,themeVariant:z,className:A,...B}){const g=C({defaultComponentKey:"List",componentKey:q,themeVariant:z,className:A});return D(E,{...g.props,...B,className:g.className})}export function ListItem({componentKey:q,themeVariant:z,className:A,...B}){const g=C({defaultComponentKey:"ListItem",componentKey:q,themeVariant:z,className:A});return D(F,{...g.props,...B,className:g.className})}
@@ -0,0 +1 @@
1
+ export{List,ListItem}from"./List";
@@ -1 +1 @@
1
- import{jsx as E,jsxs as D}from"react/jsx-runtime";import{Badge as k}from"@contractspec/lib.ui-kit-web/ui/badge";import{cn as I}from"@contractspec/lib.ui-kit-web/ui/utils";import*as K from"react";import{Button as W}from"../atoms/Button";import{Input as N}from"../atoms/Input";export function FiltersToolbar({className:X,children:Y,right:Z,searchPlaceholder:$,searchValue:G,onSearchChange:F,onSearchSubmit:L,debounceMs:O=250,activeChips:T=[],onClearAll:H}){const[J,U]=K.useState(G??"");K.useEffect(()=>{U(G??"")},[G]);K.useEffect(()=>{if(!F)return;const z=setTimeout(()=>F(J),O);return()=>clearTimeout(z)},[J,O,F]);return D("div",{className:I("space-y-2",X),children:[D("div",{className:"flex flex-col items-stretch gap-2 md:flex-row md:items-center md:justify-between",children:[D("div",{className:"flex flex-1 items-center gap-2",children:[F?D("div",{className:"flex flex-1 items-center gap-2",children:[E(N,{value:J,onChange:(z)=>U(z.target.value),onKeyDown:(z)=>{if(z.key==="Enter")L?.()},placeholder:$,keyboard:{kind:"search"}}),E(W,{variant:"outline",onPress:()=>L?.(),className:"shrink-0",children:"Rechercher"})]}):null,Y]}),Z]}),(T.length>0||H)&&D("div",{className:"flex flex-wrap items-center gap-2",children:[T.map((z)=>D(k,{variant:"secondary",className:"inline-flex items-center gap-2",children:[E("span",{children:z.label}),z.onRemove&&E("button",{type:"button","aria-label":"Supprimer le filtre",onClick:z.onRemove,className:"rounded-xs px-1 text-base hover:bg-muted",children:"×"})]},z.key)),H&&E(W,{size:"sm",variant:"ghost",onPress:H,children:"Effacer les filtres"})]})]})}
1
+ import{jsx as E,jsxs as D}from"react/jsx-runtime";import{Badge as I}from"@contractspec/lib.ui-kit-web/ui/badge";import{cn as W}from"@contractspec/lib.ui-kit-web/ui/utils";import*as K from"react";import{Button as X}from"../atoms/Button";import{Input as N}from"../atoms/Input";export function FiltersToolbar({className:Y,children:Z,right:$,searchPlaceholder:k,searchValue:G,onSearchChange:F,onSearchSubmit:L,debounceMs:O=250,activeChips:T=[],onClearAll:H}){const[J,U]=K.useState(G??"");K.useEffect(()=>{U(G??"")},[G]);K.useEffect(()=>{if(!F)return;const z=setTimeout(()=>F(J),O);return()=>clearTimeout(z)},[J,O,F]);return D("div",{className:W("space-y-2",Y),children:[D("div",{className:"flex flex-col items-stretch gap-2 md:flex-row md:items-center md:justify-between",children:[D("div",{className:"flex flex-1 items-center gap-2",children:[F?D("div",{className:"flex flex-1 items-center gap-2",children:[E(N,{value:J,onChange:(z)=>U(z.target.value),onKeyDown:(z)=>{if(z.key==="Enter")L?.()},placeholder:k,keyboard:{kind:"search"}}),E(X,{variant:"outline",onPress:()=>L?.(),className:"shrink-0",children:"Rechercher"})]}):null,Z]}),$]}),(T.length>0||H)&&D("div",{className:"flex flex-wrap items-center gap-2",children:[T.map((z)=>D(I,{variant:"secondary",className:W("inline-flex items-center gap-2",z.disabled&&"opacity-70"),children:[E("span",{children:z.label}),z.onRemove&&!z.disabled&&E("button",{type:"button","aria-label":"Supprimer le filtre",onClick:z.onRemove,className:"rounded-xs px-1 text-base hover:bg-muted",children:"×"})]},z.key)),H&&E(X,{size:"sm",variant:"ghost",onPress:H,children:"Effacer les filtres"})]})]})}
@@ -0,0 +1 @@
1
+ import{jsx as H}from"react/jsx-runtime";import{Tabs as R,TabsContent as S,TabsList as U,TabsTrigger as X}from"@contractspec/lib.ui-kit-web/ui/tabs";import{useThemedPrimitive as G}from"../primitives/themed";export function Tabs({value:z,defaultValue:A,onValueChange:B,className:D,children:q,orientation:F,dir:E,activationMode:J,componentKey:O,themeVariant:Q}){console.log("tabs web");const I=G({defaultComponentKey:"Tabs",componentKey:O,themeVariant:Q,className:D});return H(R,{...I.props,value:z,defaultValue:A,onValueChange:B,className:I.className,orientation:F,dir:E,activationMode:J,children:q})}export function TabsList({className:z,children:A,componentKey:B,themeVariant:D}){const q=G({defaultComponentKey:"TabsList",componentKey:B,themeVariant:D,className:z});return H(U,{...q.props,className:q.className,children:A})}export function TabsTrigger({value:z,disabled:A,className:B,children:D,componentKey:q,themeVariant:F}){const E=G({defaultComponentKey:"TabsTrigger",componentKey:q,themeVariant:F,className:B});return H(X,{...E.props,value:z,disabled:A,className:E.className,children:D})}export function TabsContent({value:z,forceMount:A,className:B,children:D,componentKey:q,themeVariant:F}){const E=G({defaultComponentKey:"TabsContent",componentKey:q,themeVariant:F,className:B});return H(S,{...E.props,value:z,forceMount:A?!0:void 0,className:E.className,children:D})}
@@ -0,0 +1 @@
1
+ import{jsx as G}from"react/jsx-runtime";import{Text as I}from"@contractspec/lib.ui-kit-web/ui/text";import{BlockQuote as J,Code as O,H1 as R,H2 as U,H3 as X,H4 as Y,Large as Z,Lead as $,Muted as B,P as M,Small as Q}from"@contractspec/lib.ui-kit-web/ui/typography";import{useThemedPrimitive as S}from"../primitives/themed";function F({defaultComponentKey:z,componentKey:A,themeVariant:D,className:E}){return S({defaultComponentKey:z,componentKey:A,themeVariant:D,className:E})}export function Text({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"Text",componentKey:z,themeVariant:A,className:D});return G(I,{...q.props,...E,className:q.className})}export function H1({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"H1",componentKey:z,themeVariant:A,className:D});return G(R,{...q.props,...E,className:q.className})}export function H2({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"H2",componentKey:z,themeVariant:A,className:D});return G(U,{...q.props,...E,className:q.className})}export function H3({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"H3",componentKey:z,themeVariant:A,className:D});return G(X,{...q.props,...E,className:q.className})}export function H4({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"H4",componentKey:z,themeVariant:A,className:D});return G(Y,{...q.props,...E,className:q.className})}export function P({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"P",componentKey:z,themeVariant:A,className:D});return G(M,{...q.props,...E,className:q.className})}export function Lead({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"Lead",componentKey:z,themeVariant:A,className:D});return G($,{...q.props,...E,className:q.className})}export function Large({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"Large",componentKey:z,themeVariant:A,className:D});return G(Z,{...q.props,...E,className:q.className})}export function Small({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"Small",componentKey:z,themeVariant:A,className:D});return G(Q,{...q.props,...E,className:q.className})}export function Muted({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"Muted",componentKey:z,themeVariant:A,className:D});return G(B,{...q.props,...E,className:q.className})}export function Code({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"Code",componentKey:z,themeVariant:A,className:D});return G(O,{...q.props,...E,className:q.className})}export function BlockQuote({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"BlockQuote",componentKey:z,themeVariant:A,className:D});return G(J,{...q.props,...E,className:q.className})}
@@ -0,0 +1 @@
1
+ export{BlockQuote,Code,H1,H2,H3,H4,Large,Lead,Muted,P,Small,Text}from"./Typography";
@@ -0,0 +1 @@
1
+ export*from"./components/forms/controls";
@@ -0,0 +1 @@
1
+ export*from"./components/forms";
@@ -1 +1 @@
1
- import*as a from"react";export function useListUrlState({defaults:n,paramKeys:t={q:"q",page:"page",limit:"limit",sort:"sort",filters:"f"},replaceState:d=!0}){const w=a.useCallback(()=>{if(typeof window>"u")return n;const e=new URL(window.location.href).searchParams,c=(f,o)=>{const s=f?Number(f):NaN;return Number.isFinite(s)&&s>0?s:o},r=e.get(t.filters);let i=n.filters;if(r)try{i=JSON.parse(r)}catch{i=n.filters}return{q:e.get(t.q)??n.q,page:c(e.get(t.page),n.page),limit:c(e.get(t.limit),n.limit),sort:e.get(t.sort),filters:i}},[n,t]),[g,F]=a.useState(w),u=a.useCallback((l)=>{if(typeof window>"u")return;const e=new URL(window.location.href),c=e.searchParams,r={...g,...l},i=(o,s)=>{if(s==null||s===""||s==="null")c.delete(o);else c.set(o,s)};i(t.q,r.q||null);i(t.page,String(r.page));i(t.limit,String(r.limit));i(t.sort,r.sort??null);try{const o=JSON.stringify(r.filters??{});i(t.filters,o==="{}"?null:o)}catch{}const f=`${e.pathname}?${c.toString()}${e.hash}`;if(d)window.history.replaceState({},"",f);else window.history.pushState({},"",f);F(r)},[g,t,d]),S=a.useCallback((l,e)=>{u({filters:{...g.filters,[l]:e}})},[g.filters,u]),T=a.useCallback(()=>{u({filters:{},page:1})},[u]);a.useEffect(()=>{const l=()=>F(w());window.addEventListener("popstate",l);return()=>window.removeEventListener("popstate",l)},[w]);return{state:g,setState:u,setFilter:S,clearFilters:T}}
1
+ import{createInitialListFilters as N,sanitizeListUserFilters as _}from"@contractspec/lib.presentation-runtime-core";import*as Q from"react";export function useListUrlState({defaults:E,paramKeys:h={q:"q",page:"page",limit:"limit",sort:"sort",filters:"f"},replaceState:$=!0,filterScope:J}){const Y=Q.useMemo(()=>({...N(J),..._(E.filters,J)}),[E.filters,J]),Z=Q.useCallback(()=>{if(typeof window>"u")return E;const A=new URL(window.location.href).searchParams,V=(X,M)=>{const H=X?Number(X):NaN;return Number.isFinite(H)&&H>0?H:M},C=A.get(h.filters);let B=E.filters;if(C)try{B=_(JSON.parse(C),J)}catch{B=Y}else B=Y;return{q:A.get(h.q)??E.q,page:V(A.get(h.page),E.page),limit:V(A.get(h.limit),E.limit),sort:A.get(h.sort),filters:B}},[Y,E,J,h]),[T,b]=Q.useState(Z),W=Q.useCallback((G)=>{if(typeof window>"u")return;const A=new URL(window.location.href),V=A.searchParams,C={...T,...G,filters:_(G.filters??T.filters,J)},B=(M,H)=>{if(H==null||H===""||H==="null")V.delete(M);else V.set(M,H)};B(h.q,C.q||null);B(h.page,String(C.page));B(h.limit,String(C.limit));B(h.sort,C.sort??null);try{const M=JSON.stringify(C.filters??{});B(h.filters,M==="{}"?null:M)}catch{}const X=`${A.pathname}?${V.toString()}${A.hash}`;if($)window.history.replaceState({},"",X);else window.history.pushState({},"",X);b(C)},[J,T,h,$]),I=Q.useCallback((G,A)=>{W({filters:{...T.filters,[G]:A}})},[T.filters,W]),j=Q.useCallback(()=>{W({filters:{},page:1})},[W]);Q.useEffect(()=>{const G=()=>b(Z());window.addEventListener("popstate",G);return()=>window.removeEventListener("popstate",G)},[Z]);return{state:T,setState:W,setFilter:I,clearFilters:j}}
@@ -1 +1 @@
1
- export{AgentMonitor}from"./components/agent/AgentMonitor";export{ApprovalQueue}from"./components/agent/ApprovalQueue";export{DeleteButton,EditButton,ToggleButton,ToggleLeftButton,ToggleRightButton,ViewButton}from"./components/atoms/ActionButtons";export{Button}from"./components/atoms/Button";export{ButtonLink}from"./components/atoms/ButtonLink";export{Cta}from"./components/atoms/Cta";export{DateChip,DurationChip,PlaceChip,TimeChip}from"./components/atoms/DataChips";export{EmptyState}from"./components/atoms/EmptyState";export{ErrorState}from"./components/atoms/ErrorState";export{Input}from"./components/atoms/Input";export{Link}from"./components/atoms/Link";export{LoaderCircular}from"./components/atoms/LoaderCircular";export{NavBrand}from"./components/atoms/NavBrand";export{RankBadge}from"./components/atoms/RankBadge";export{ScoreBar}from"./components/atoms/ScoreBar";export{Stepper}from"./components/atoms/Stepper";export{Textarea}from"./components/atoms/Textarea";export{DataTable}from"./components/data-table/DataTable";export{DataTableToolbar}from"./components/data-table/DataTableToolbar";export{DataViewDetail}from"./components/data-view/DataViewDetail";export{DataViewList}from"./components/data-view/DataViewList";export{DataViewRenderer}from"./components/data-view/DataViewRenderer";export{DataViewTable}from"./components/data-view/DataViewTable";export*from"./components/forms";export*from"./components/layout";export{DefinitionList}from"./components/legal/atoms/DefinitionList";export{KeyValueList}from"./components/legal/atoms/KeyValueList";export{LegalCallout}from"./components/legal/atoms/LegalCallout";export{LegalHeading}from"./components/legal/atoms/LegalHeading";export{LegalList}from"./components/legal/atoms/LegalList";export{LegalSection}from"./components/legal/atoms/LegalSection";export{LegalText}from"./components/legal/atoms/LegalText";export{ConsentItem,ConsentList}from"./components/legal/molecules/Consent";export{ContactFields}from"./components/legal/molecules/ContactFields";export{LegalMeta}from"./components/legal/molecules/LegalMeta";export{LegalTOC}from"./components/legal/molecules/LegalTOC";export*from"./components/legal/organisms/ContactForm";export*from"./components/legal/organisms/GDPRDataRequest";export*from"./components/legal/organisms/GDPRRights";export*from"./components/legal/organisms/LegalPageLayout";export{ContactTemplate}from"./components/legal/templates/ContactTemplate";export{CookiesTemplate}from"./components/legal/templates/CookiesTemplate";export{PrivacyTemplate}from"./components/legal/templates/PrivacyTemplate";export{SalesTermsTemplate}from"./components/legal/templates/SalesTermsTemplate";export{TermsTemplate}from"./components/legal/templates/TermsTemplate";export{MarketingCard,MarketingCardContent,MarketingCardDescription,MarketingCardHeader,MarketingCardTitle}from"./components/marketing/MarketingCard";export{MarketingCardsSection}from"./components/marketing/MarketingCardsSection";export{MarketingComparisonSection}from"./components/marketing/MarketingComparisonSection";export{MarketingIconCard}from"./components/marketing/MarketingIconCard";export{MarketingSection}from"./components/marketing/MarketingSection";export{MarketingStepCard}from"./components/marketing/MarketingStepCard";export{AiLinkButton}from"./components/molecules/AiLinkButton";export{Breadcrumbs}from"./components/molecules/Breadcrumbs";export{CodeBlock}from"./components/molecules/CodeBlock";export{CommandPalette}from"./components/molecules/CommandPalette";export{CommandSearchTrigger}from"./components/molecules/CommandSearchTrigger";export{CommandTabs}from"./components/molecules/CommandTabs";export{CopyButton}from"./components/molecules/CopyButton";export{DimensionScoresCard}from"./components/molecules/DimensionScoresCard";export{EntityCard}from"./components/molecules/EntityCard";export{FiltersToolbar}from"./components/molecules/FiltersToolbar";export{HoverPreview}from"./components/molecules/HoverPreview";export{HoverPreviewDoc}from"./components/molecules/hover-previews/Doc";export{HoverPreviewMedia}from"./components/molecules/hover-previews/Media";export{HoverPreviewSimple}from"./components/molecules/hover-previews/Simple";export{HoverPreviewStats}from"./components/molecules/hover-previews/Stats";export{HoverPreviewUser}from"./components/molecules/hover-previews/User";export{InstallCommand}from"./components/molecules/InstallCommand";export{LangSwitch}from"./components/molecules/LangSwitch";export{LoaderBlock}from"./components/molecules/LoaderBlock";export{MarkdownRenderer}from"./components/molecules/MarkdownRenderer";export{NavMain}from"./components/molecules/NavMain";export{NavUser}from"./components/molecules/NavUser";export{OverviewCard}from"./components/molecules/OverviewCard";export{SkeletonBlock}from"./components/molecules/SkeletonBlock";export{SkeletonCircle}from"./components/molecules/SkeletonCircle";export{SkeletonList}from"./components/molecules/SkeletonList";export{StatCard,StatCardGroup}from"./components/molecules/StatCard";export{StatusChip}from"./components/molecules/StatusChip";export{AcademyLayout}from"./components/organisms/AcademyLayout";export{AppHeader}from"./components/organisms/AppHeader";export{AppLayout}from"./components/organisms/AppLayout";export{AppSidebar}from"./components/organisms/AppSidebar";export{EmptyDataList}from"./components/organisms/EmptyDataList";export{EmptySearchResult}from"./components/organisms/EmptySearchResult";export{FAQSection}from"./components/organisms/FAQSection";export{FeatureCarousel}from"./components/organisms/FeatureCarousel";export{FeaturesSection}from"./components/organisms/FeaturesSection";export{Footer}from"./components/organisms/Footer";export{DesktopHeader,Header,MobileHeader}from"./components/organisms/Header";export{HeroResponsive}from"./components/organisms/HeroResponsive";export{HeroSection}from"./components/organisms/HeroSection";export{ListCardPage}from"./components/organisms/ListCardPage";export{ListGridPage}from"./components/organisms/ListGridPage";export{ListPageResponsive}from"./components/organisms/ListPageResponsive";export{ListTablePage}from"./components/organisms/ListTablePage";export{MarketingHeader}from"./components/organisms/MarketingHeader";export{MarketingHeaderDesktop}from"./components/organisms/MarketingHeaderDesktop";export{MarketingHeaderMobile}from"./components/organisms/MarketingHeaderMobile";export{MarketingLayout}from"./components/organisms/MarketingLayout";export{ModelComparisonView}from"./components/organisms/ModelComparisonView";export{PageHeaderResponsive}from"./components/organisms/PageHeaderResponsive";export{PricingCarousel}from"./components/organisms/PricingCarousel";export{PricingSection}from"./components/organisms/PricingSection";export{TestimonialCarousel}from"./components/organisms/TestimonialCarousel";export{PackageManagerProvider,usePackageManager}from"./components/providers/PackageManagerProvider";export{ListPageTemplate}from"./components/templates/lists/ListPageTemplate";export{ComparisonView}from"./components/visualization/ComparisonView";export{TimelineView}from"./components/visualization/TimelineView";export{VisualizationCard}from"./components/visualization/VisualizationCard";export{VisualizationGrid}from"./components/visualization/VisualizationGrid";export{VisualizationRenderer}from"./components/visualization/VisualizationRenderer";export*from"./design-system.feature";export{useListUrlState}from"./hooks/useListUrlState";export*from"./i18n/translation";export{useColorScheme}from"./platform/useColorScheme";export{useReducedMotion}from"./platform/useReducedMotion";export{useResponsive}from"./platform/useResponsive";export*from"./platform/withPlatformUI";export*from"./renderers";export*from"./theme";export*from"./types/navigation";
1
+ export{AgentMonitor}from"./components/agent/AgentMonitor";export{ApprovalQueue}from"./components/agent/ApprovalQueue";export{DeleteButton,EditButton,ToggleButton,ToggleLeftButton,ToggleRightButton,ViewButton}from"./components/atoms/ActionButtons";export{Button}from"./components/atoms/Button";export{ButtonLink}from"./components/atoms/ButtonLink";export{Cta}from"./components/atoms/Cta";export{DateChip,DurationChip,PlaceChip,TimeChip}from"./components/atoms/DataChips";export{EmptyState}from"./components/atoms/EmptyState";export{ErrorState}from"./components/atoms/ErrorState";export{Input}from"./components/atoms/Input";export{InputPassword}from"./components/atoms/InputPassword";export{Link}from"./components/atoms/Link";export{LoaderCircular}from"./components/atoms/LoaderCircular";export{NavBrand}from"./components/atoms/NavBrand";export{RankBadge}from"./components/atoms/RankBadge";export{ScoreBar}from"./components/atoms/ScoreBar";export{Stepper}from"./components/atoms/Stepper";export{Textarea}from"./components/atoms/Textarea";export{DataTable}from"./components/data-table/DataTable";export{DataTableToolbar}from"./components/data-table/DataTableToolbar";export{DataViewDetail}from"./components/data-view/DataViewDetail";export{DataViewList}from"./components/data-view/DataViewList";export{DataViewRenderer}from"./components/data-view/DataViewRenderer";export{DataViewTable}from"./components/data-view/DataViewTable";export*from"./components/forms";export*from"./components/layout";export{DefinitionList}from"./components/legal/atoms/DefinitionList";export{KeyValueList}from"./components/legal/atoms/KeyValueList";export{LegalCallout}from"./components/legal/atoms/LegalCallout";export{LegalHeading}from"./components/legal/atoms/LegalHeading";export{LegalList}from"./components/legal/atoms/LegalList";export{LegalSection}from"./components/legal/atoms/LegalSection";export{LegalText}from"./components/legal/atoms/LegalText";export{ConsentItem,ConsentList}from"./components/legal/molecules/Consent";export{ContactFields}from"./components/legal/molecules/ContactFields";export{LegalMeta}from"./components/legal/molecules/LegalMeta";export{LegalTOC}from"./components/legal/molecules/LegalTOC";export*from"./components/legal/organisms/ContactForm";export*from"./components/legal/organisms/GDPRDataRequest";export*from"./components/legal/organisms/GDPRRights";export*from"./components/legal/organisms/LegalPageLayout";export{ContactTemplate}from"./components/legal/templates/ContactTemplate";export{CookiesTemplate}from"./components/legal/templates/CookiesTemplate";export{PrivacyTemplate}from"./components/legal/templates/PrivacyTemplate";export{SalesTermsTemplate}from"./components/legal/templates/SalesTermsTemplate";export{TermsTemplate}from"./components/legal/templates/TermsTemplate";export{List,ListItem}from"./components/list";export{MarketingCard,MarketingCardContent,MarketingCardDescription,MarketingCardHeader,MarketingCardTitle}from"./components/marketing/MarketingCard";export{MarketingCardsSection}from"./components/marketing/MarketingCardsSection";export{MarketingComparisonSection}from"./components/marketing/MarketingComparisonSection";export{MarketingIconCard}from"./components/marketing/MarketingIconCard";export{MarketingSection}from"./components/marketing/MarketingSection";export{MarketingStepCard}from"./components/marketing/MarketingStepCard";export{AiLinkButton}from"./components/molecules/AiLinkButton";export{Breadcrumbs}from"./components/molecules/Breadcrumbs";export{CodeBlock}from"./components/molecules/CodeBlock";export{CommandPalette}from"./components/molecules/CommandPalette";export{CommandSearchTrigger}from"./components/molecules/CommandSearchTrigger";export{CommandTabs}from"./components/molecules/CommandTabs";export{CopyButton}from"./components/molecules/CopyButton";export{DimensionScoresCard}from"./components/molecules/DimensionScoresCard";export{EntityCard}from"./components/molecules/EntityCard";export{FiltersToolbar}from"./components/molecules/FiltersToolbar";export{HoverPreview}from"./components/molecules/HoverPreview";export{HoverPreviewDoc}from"./components/molecules/hover-previews/Doc";export{HoverPreviewMedia}from"./components/molecules/hover-previews/Media";export{HoverPreviewSimple}from"./components/molecules/hover-previews/Simple";export{HoverPreviewStats}from"./components/molecules/hover-previews/Stats";export{HoverPreviewUser}from"./components/molecules/hover-previews/User";export{InstallCommand}from"./components/molecules/InstallCommand";export{LangSwitch}from"./components/molecules/LangSwitch";export{LoaderBlock}from"./components/molecules/LoaderBlock";export{MarkdownRenderer}from"./components/molecules/MarkdownRenderer";export{NavMain}from"./components/molecules/NavMain";export{NavUser}from"./components/molecules/NavUser";export{OverviewCard}from"./components/molecules/OverviewCard";export{SkeletonBlock}from"./components/molecules/SkeletonBlock";export{SkeletonCircle}from"./components/molecules/SkeletonCircle";export{SkeletonList}from"./components/molecules/SkeletonList";export{StatCard,StatCardGroup}from"./components/molecules/StatCard";export{StatusChip}from"./components/molecules/StatusChip";export{Tabs,TabsContent,TabsList,TabsTrigger}from"./components/molecules/Tabs";export{AcademyLayout}from"./components/organisms/AcademyLayout";export{AppHeader}from"./components/organisms/AppHeader";export{AppLayout}from"./components/organisms/AppLayout";export{AppSidebar}from"./components/organisms/AppSidebar";export{EmptyDataList}from"./components/organisms/EmptyDataList";export{EmptySearchResult}from"./components/organisms/EmptySearchResult";export{FAQSection}from"./components/organisms/FAQSection";export{FeatureCarousel}from"./components/organisms/FeatureCarousel";export{FeaturesSection}from"./components/organisms/FeaturesSection";export{Footer}from"./components/organisms/Footer";export{DesktopHeader,Header,MobileHeader}from"./components/organisms/Header";export{HeroResponsive}from"./components/organisms/HeroResponsive";export{HeroSection}from"./components/organisms/HeroSection";export{ListCardPage}from"./components/organisms/ListCardPage";export{ListGridPage}from"./components/organisms/ListGridPage";export{ListPageResponsive}from"./components/organisms/ListPageResponsive";export{ListTablePage}from"./components/organisms/ListTablePage";export{MarketingHeader}from"./components/organisms/MarketingHeader";export{MarketingHeaderDesktop}from"./components/organisms/MarketingHeaderDesktop";export{MarketingHeaderMobile}from"./components/organisms/MarketingHeaderMobile";export{MarketingLayout}from"./components/organisms/MarketingLayout";export{ModelComparisonView}from"./components/organisms/ModelComparisonView";export{PageHeaderResponsive}from"./components/organisms/PageHeaderResponsive";export{PricingCarousel}from"./components/organisms/PricingCarousel";export{PricingSection}from"./components/organisms/PricingSection";export{TestimonialCarousel}from"./components/organisms/TestimonialCarousel";export{PackageManagerProvider,usePackageManager}from"./components/providers/PackageManagerProvider";export{ListPageTemplate}from"./components/templates/lists/ListPageTemplate";export{BlockQuote,Code,H1,H2,H3,H4,Large,Lead,Muted,P,Small,Text}from"./components/typography";export{ComparisonView}from"./components/visualization/ComparisonView";export{TimelineView}from"./components/visualization/TimelineView";export{VisualizationCard}from"./components/visualization/VisualizationCard";export{VisualizationGrid}from"./components/visualization/VisualizationGrid";export{VisualizationRenderer}from"./components/visualization/VisualizationRenderer";export*from"./design-system.feature";export{useListUrlState}from"./hooks/useListUrlState";export*from"./i18n/translation";export{useColorScheme}from"./platform/useColorScheme";export{useReducedMotion}from"./platform/useReducedMotion";export{useResponsive}from"./platform/useResponsive";export*from"./platform/withPlatformUI";export*from"./renderers";export*from"./theme";export*from"./types/navigation";
@@ -0,0 +1 @@
1
+ export*from"./components/layout";
@@ -0,0 +1 @@
1
+ export*from"./components/list";
@@ -1 +1 @@
1
- import{shadcnDriver as j}from"@contractspec/lib.contracts-runtime-client-react/drivers/shadcn";import{createFormRenderer as q}from"@contractspec/lib.contracts-runtime-client-react/form-render";import{Autocomplete as z}from"../../components/forms/controls/Autocomplete";import{Checkbox as H,RadioGroup as J,Switch as K}from"../../components/forms/controls/ChoiceControls";import{DatePicker as M,DateTimePicker as N,TimePicker as O}from"../../components/forms/controls/DateTimeControls";import{FieldContent as Q,FieldGroup as U,FieldLegend as V,FieldSet as X,Field as Y,InputGroup as Z,InputGroupAddon as _}from"../../components/forms/controls/Field";import{Select as $}from"../../components/forms/controls/Select";import{AddressField as g,PhoneField as v}from"./rich-fields";import{Actions as w,FieldArray as B,FieldArrayItem as E,FormRoot as W,InputGroupIcon as b,TranslatedButton as f,TranslatedFieldDescription as y,TranslatedFieldError as C,TranslatedFieldLabel as L,TranslatedInput as R,TranslatedInputGroupInput as k,TranslatedInputGroupText as x,TranslatedInputGroupTextarea as D,TranslatedTextarea as P}from"./shell";export const formRenderer=q({submitMode:"button",driver:j({FormRoot:W,Field:Y,FieldLabel:L,FieldDescription:y,FieldError:C,FieldContent:Q,FieldGroup:U,FieldSet:X,FieldLegend:V,FieldArray:B,FieldArrayItem:E,Actions:w,Input:R,Textarea:P,InputGroup:Z,InputGroupAddon:_,InputGroupInput:k,InputGroupTextarea:D,InputGroupText:x,InputGroupIcon:b,Select:$,Checkbox:H,RadioGroup:J,Switch:K,Autocomplete:z,AddressField:g,PhoneField:v,DateField:M,TimeField:O,DateTimeField:N,Button:f})});
1
+ import{shadcnDriver as j}from"@contractspec/lib.contracts-runtime-client-react/drivers/shadcn";import{createFormRenderer as q}from"@contractspec/lib.contracts-runtime-client-react/form-render";import{Autocomplete as z}from"../../components/forms/controls/Autocomplete";import{Checkbox as H,RadioGroup as J,Switch as K}from"../../components/forms/controls/ChoiceControls";import{DatePicker as M,DateTimePicker as N,TimePicker as O}from"../../components/forms/controls/DateTimeControls";import{FieldContent as Q,FieldGroup as U,FieldLegend as V,FieldSet as X,Field as Y,InputGroup as Z,InputGroupAddon as _}from"../../components/forms/controls/Field";import{Select as $}from"../../components/forms/controls/Select";import{AddressField as g,PhoneField as v}from"./rich-fields";import{Actions as B,FieldArray as E,FieldArrayItem as W,FormRoot as b,InputGroupIcon as f,TranslatedButton as w,TranslatedFieldDescription as y,TranslatedFieldError as C,TranslatedFieldLabel as L,TranslatedInput as R,TranslatedInputGroupInput as k,TranslatedInputGroupText as x,TranslatedInputGroupTextarea as D,TranslatedPasswordInput as S,TranslatedTextarea as P}from"./shell";export const formRenderer=q({submitMode:"button",driver:j({FormRoot:b,Field:Y,FieldLabel:L,FieldDescription:y,FieldError:C,FieldContent:Q,FieldGroup:U,FieldSet:X,FieldLegend:V,FieldArray:E,FieldArrayItem:W,Actions:B,Input:R,PasswordInput:S,Textarea:P,InputGroup:Z,InputGroupAddon:_,InputGroupInput:k,InputGroupTextarea:D,InputGroupText:x,InputGroupIcon:f,Select:$,Checkbox:H,RadioGroup:J,Switch:K,Autocomplete:z,AddressField:g,PhoneField:v,DateField:M,TimeField:O,DateTimeField:N,Button:w})});
@@ -1 +1 @@
1
- import{jsx as z}from"react/jsx-runtime";import{CalendarIcon as Y,ClockIcon as Z,InfoIcon as R,MailIcon as $,SearchIcon as v,UserIcon as B}from"lucide-react";import{Button as D}from"../../components/atoms/Button";import{Input as E}from"../../components/atoms/Input";import{Textarea as H}from"../../components/atoms/Textarea";import{FieldDescription as L,FieldError as M,FieldLabel as U,InputGroupInput as K,InputGroupText as P,InputGroupTextarea as F}from"../../components/forms/controls/Field";import{HStack as V,VStack as Q}from"../../components/layout/Stack";import{useTranslatedNode as A,useTranslatedText as J}from"../../components/primitives/themed";export const TranslatedFieldLabel=(g)=>{const q=A();return z(U,{...g,children:q(g.children)})},TranslatedFieldDescription=(g)=>{const q=A();return z(L,{...g,children:q(g.children)})},TranslatedFieldError=(g)=>{const q=A();return z(M,{...g,children:q(g.children)})},TranslatedInput=(g)=>{const q=J();return z(E,{...g,placeholder:q(g.placeholder)})},TranslatedTextarea=(g)=>{const q=J();return z(H,{...g,placeholder:q(g.placeholder)})},TranslatedInputGroupInput=(g)=>{const q=J();return z(K,{...g,placeholder:q(g.placeholder)})},TranslatedInputGroupTextarea=(g)=>{const q=J();return z(F,{...g,placeholder:q(g.placeholder)})},TranslatedInputGroupText=(g)=>{const q=A();return z(P,{...g,children:q(g.children)})};const G={calendar:Y,clock:Z,info:R,mail:$,search:v,user:B};export const InputGroupIcon=({iconKey:g,label:q})=>{const O=G[g]??R;return z(O,{"aria-hidden":q?void 0:!0,"aria-label":q,className:"size-4"})},TranslatedButton=({children:g,onClick:q,onPress:O,...W})=>{const X=A();return z(D,{...W,onClick:q?()=>q():void 0,onPress:O??q,children:X(g)})},FormRoot=({children:g,className:q})=>z(Q,{gap:"lg",className:q,children:g}),FieldArray=({children:g,className:q})=>z(Q,{gap:"md",className:q,children:g}),FieldArrayItem=({children:g,className:q})=>z(Q,{gap:"sm",className:q,children:g}),Actions=({children:g,className:q})=>z(V,{gap:"sm",wrap:"wrap",className:q,children:g});
1
+ import{jsx as z}from"react/jsx-runtime";import{CalendarIcon as Y,ClockIcon as Z,InfoIcon as X,MailIcon as $,SearchIcon as v,UserIcon as B}from"lucide-react";import{Button as D}from"../../components/atoms/Button";import{Input as E}from"../../components/atoms/Input";import{InputPassword as H}from"../../components/atoms/InputPassword";import{Textarea as M}from"../../components/atoms/Textarea";import{FieldDescription as U,FieldError as K,FieldLabel as F,InputGroupInput as L,InputGroupText as V,InputGroupTextarea as G}from"../../components/forms/controls/Field";import{HStack as P,VStack as W}from"../../components/layout/Stack";import{useTranslatedNode as J,useTranslatedText as O}from"../../components/primitives/themed";export const TranslatedFieldLabel=(g)=>{const q=J();return z(F,{...g,children:q(g.children)})},TranslatedFieldDescription=(g)=>{const q=J();return z(U,{...g,children:q(g.children)})},TranslatedFieldError=(g)=>{const q=J();return z(K,{...g,children:q(g.children)})},TranslatedInput=(g)=>{const q=O();return z(E,{...g,placeholder:q(g.placeholder)})},TranslatedPasswordInput=(g)=>{const q=O(),{showLabelI18n:A,hideLabelI18n:Q,...R}=g;return z(H,{...R,placeholder:q(g.placeholder),showLabel:q(A??g.showLabel),hideLabel:q(Q??g.hideLabel)})},TranslatedTextarea=(g)=>{const q=O();return z(M,{...g,placeholder:q(g.placeholder)})},TranslatedInputGroupInput=(g)=>{const q=O();return z(L,{...g,placeholder:q(g.placeholder)})},TranslatedInputGroupTextarea=(g)=>{const q=O();return z(G,{...g,placeholder:q(g.placeholder)})},TranslatedInputGroupText=(g)=>{const q=J();return z(V,{...g,children:q(g.children)})};const S={calendar:Y,clock:Z,info:X,mail:$,search:v,user:B};export const InputGroupIcon=({iconKey:g,label:q})=>{const A=S[g]??X;return z(A,{"aria-hidden":q?void 0:!0,"aria-label":q,className:"size-4"})},TranslatedButton=({children:g,onClick:q,onPress:A,...Q})=>{const R=J();return z(D,{...Q,onClick:q?()=>q():void 0,onPress:A??q,children:R(g)})},FormRoot=({children:g,className:q})=>z(W,{gap:"lg",className:q,children:g}),FieldArray=({children:g,className:q})=>z(W,{gap:"md",className:q,children:g}),FieldArrayItem=({children:g,className:q})=>z(W,{gap:"sm",className:q,children:g}),Actions=({children:g,className:q})=>z(P,{gap:"sm",wrap:"wrap",className:q,children:g});
@@ -0,0 +1 @@
1
+ export*from"./components/typography";
@@ -1,4 +1,4 @@
1
- import { type ButtonProps } from './Button.mobile';
1
+ import { type ButtonProps } from './Button.native';
2
2
  export type ButtonLinkProps = Omit<ButtonProps, 'onPress'> & {
3
3
  href: string;
4
4
  replace?: boolean;
@@ -0,0 +1,15 @@
1
+ import { type InputPasswordProps as WebInputPasswordProps } from '@contractspec/lib.ui-kit-web/ui/input-password';
2
+ import { type ControlThemeProps, type TextFieldBaseProps } from '../primitives/control';
3
+ type PasswordPurpose = 'current' | 'new';
4
+ interface InputPasswordBaseProps extends TextFieldBaseProps {
5
+ name?: string;
6
+ passwordPurpose?: PasswordPurpose;
7
+ visibilityToggle?: boolean;
8
+ showLabel?: string;
9
+ hideLabel?: string;
10
+ showLabelI18n?: string;
11
+ hideLabelI18n?: string;
12
+ }
13
+ export type InputPasswordProps = Omit<WebInputPasswordProps, 'type' | 'showLabel' | 'hideLabel' | 'passwordPurpose' | 'visibilityToggle'> & InputPasswordBaseProps & ControlThemeProps;
14
+ export declare function InputPassword({ value, defaultValue, onChange, onSubmit, onFocus, onBlur, placeholder, disabled, readOnly, maxLength, name, className, keyboard, componentKey, themeVariant, placeholderI18n, ariaLabelI18n, passwordPurpose, visibilityToggle, showLabel, hideLabel, showLabelI18n, hideLabelI18n, ...rest }: InputPasswordProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
@@ -0,0 +1 @@
1
+ import{jsx as v}from"react/jsx-runtime";import{InputPassword as k}from"@contractspec/lib.ui-kit-web/ui/input-password";import{mapKeyboardToWeb as T}from"../../lib/keyboard";import{useThemedTextField as f}from"../primitives/control";import{useTranslatedText as g}from"../primitives/themed";function I(q){return q==="new"?"new-password":"password"}function P(q){return q==="new"?"new-password":"current-password"}export function InputPassword({value:q,defaultValue:J,onChange:M,onSubmit:Q,onFocus:R,onBlur:U,placeholder:X,disabled:Y,readOnly:Z,maxLength:$,name:_,className:j,keyboard:G,componentKey:B,themeVariant:N,placeholderI18n:O,ariaLabelI18n:S,passwordPurpose:D="current",visibilityToggle:W,showLabel:C,hideLabel:V,showLabelI18n:F,hideLabelI18n:K,...A}){const H=g(),x=T({kind:I(D),...G,autoComplete:G?.autoComplete??A.autoComplete??P(D)}),z=f({defaultComponentKey:"InputPassword",componentKey:B,themeVariant:N,className:j,style:A.style,placeholder:X,placeholderI18n:O,ariaLabelI18n:S});return v(k,{...z.themed.props,...A,...x,className:z.themed.className,style:z.themed.style,value:q,defaultValue:J,onChange:M,onFocus:R,onBlur:U,placeholder:z.placeholder,"aria-label":z.ariaLabel,disabled:Y,readOnly:Z,maxLength:$,name:_,passwordPurpose:D,visibilityToggle:W,showLabel:H(F??C??"Show password"),hideLabel:H(K??V??"Hide password"),onKeyDown:(E)=>{A.onKeyDown?.(E);if(E.defaultPrevented||E.key!=="Enter")return;Q?.()}})}
@@ -0,0 +1,17 @@
1
+ import { type InputPasswordProps as NativeInputPasswordProps } from '@contractspec/lib.ui-kit/ui/input-password';
2
+ import { type ControlThemeProps, type TextFieldBaseProps } from '../primitives/control';
3
+ type PasswordPurpose = 'current' | 'new';
4
+ interface InputPasswordBaseProps extends TextFieldBaseProps {
5
+ value?: string;
6
+ defaultValue?: string;
7
+ onChange?: (text: string) => void;
8
+ passwordPurpose?: PasswordPurpose;
9
+ visibilityToggle?: boolean;
10
+ showLabel?: string;
11
+ hideLabel?: string;
12
+ showLabelI18n?: string;
13
+ hideLabelI18n?: string;
14
+ }
15
+ export type InputPasswordProps = Omit<NativeInputPasswordProps, 'value' | 'defaultValue' | 'onChangeText' | 'secureTextEntry' | 'textContentType' | 'showLabel' | 'hideLabel' | 'passwordPurpose' | 'visibilityToggle'> & InputPasswordBaseProps & ControlThemeProps;
16
+ export declare function InputPassword({ value, defaultValue, onChange, onSubmit, onFocus, onBlur, placeholder, disabled, readOnly, maxLength, className, keyboard, componentKey, themeVariant, placeholderI18n, ariaLabelI18n, passwordPurpose, visibilityToggle, showLabel, hideLabel, showLabelI18n, hideLabelI18n, ...rest }: InputPasswordProps): import("react/jsx-runtime").JSX.Element;
17
+ export default InputPassword;
@@ -1 +1 @@
1
- export {};
1
+ export { Link } from '@contractspec/lib.ui-kit/ui/link';
@@ -1,4 +1,4 @@
1
- import type { DataViewSpec } from '@contractspec/lib.contracts-spec/data-views';
1
+ import type { DataViewFilterSet, DataViewSpec } from '@contractspec/lib.contracts-spec/data-views';
2
2
  import * as React from 'react';
3
3
  export interface DataViewRendererProps {
4
4
  spec: DataViewSpec;
@@ -15,8 +15,8 @@ export interface DataViewRendererProps {
15
15
  footer?: React.ReactNode;
16
16
  search?: string;
17
17
  onSearchChange?: (value: string) => void;
18
- filters?: Record<string, unknown>;
19
- onFilterChange?: (filters: Record<string, unknown>) => void;
18
+ filters?: Record<string, unknown> | DataViewFilterSet;
19
+ onFilterChange?: (filters: Record<string, unknown> | DataViewFilterSet) => void;
20
20
  pagination?: {
21
21
  page: number;
22
22
  pageSize: number;
@@ -1 +1 @@
1
- import{jsx as G,jsxs as w,Fragment as d}from"react/jsx-runtime";import{Pagination as b}from"@contractspec/lib.ui-kit-web/ui/atoms/Pagination";import{VStack as j}from"@contractspec/lib.ui-kit-web/ui/stack";import{Text as _}from"@contractspec/lib.ui-kit-web/ui/text";import*as k from"react";import{resolveTranslationString as F,useDesignSystemTranslation as N}from"../../i18n/translation";import{FiltersToolbar as x}from"../molecules/FiltersToolbar";import{DataViewDetail as A}from"./DataViewDetail";import{DataViewList as T}from"./DataViewList";import{DataViewTable as C}from"./DataViewTable";export function DataViewRenderer({spec:E,items:M=[],item:Y=null,className:I,renderActions:Q,onSelect:U,onRowClick:Z,toolbar:$,loading:q,headerActions:O,emptyState:K,footer:z,search:V,onSearchChange:L,filters:J,onFilterChange:P,pagination:H,onPageChange:R}){const W=N(),u=k.useMemo(()=>{switch(E.view.kind){case"list":return G(T,{spec:E,items:M,className:I,renderActions:Q,onSelect:U,emptyState:K});case"table":return G(C,{spec:E,items:M,className:I,onRowClick:Z,toolbar:$,loading:q,emptyState:K,headerActions:O,footer:z});case"detail":return G(A,{spec:E,item:Y,className:I,emptyState:K,headerActions:O});case"grid":{const B=E.view,X={kind:"list",layout:"card",fields:B.fields,filters:B.filters,actions:B.actions,primaryField:B.primaryField,secondaryFields:B.secondaryFields},v={...E,view:X};return G(T,{spec:v,items:M,className:I,renderActions:Q,onSelect:U,emptyState:K})}default:return G(_,{className:I,children:F("Unsupported data view kind",W)})}},[E,M,Y,I,Q,U,Z,$,q,O,K,z,W]);if(!(E.view.kind==="list"||E.view.kind==="table"||E.view.kind==="grid"))return G(d,{children:u});return w(j,{gap:"lg",children:[(E.view.filters?.length||L)&&G(x,{searchValue:V,onSearchChange:L,searchPlaceholder:F("Search...",W)??"Search...",activeChips:J?Object.entries(J).map(([B,X])=>({key:B,label:`${B}: ${X}`,onRemove:()=>{if(J){const{[B]:v,...D}=J;P?.(D)}}})):[],onClearAll:J&&Object.keys(J).length>0?()=>P?.({}):void 0,right:E.view.kind==="table"?void 0:O}),u,H&&H.total>0&&G(b,{currentPage:H.page,totalPages:Math.ceil(H.total/H.pageSize),totalItems:H.total,itemsPerPage:H.pageSize,onPageChange:(B)=>R?.(B),onItemsPerPageChange:(B)=>{R?.(1)},showItemsPerPage:!1})]})}
1
+ import{jsx as J,jsxs as c,Fragment as p}from"react/jsx-runtime";import{resolveDataViewFilters as S}from"@contractspec/lib.contracts-spec/data-views";import{Pagination as d}from"@contractspec/lib.ui-kit-web/ui/atoms/Pagination";import{VStack as h}from"@contractspec/lib.ui-kit-web/ui/stack";import{Text as f}from"@contractspec/lib.ui-kit-web/ui/text";import*as L from"react";import{resolveTranslationString as V,useDesignSystemTranslation as u}from"../../i18n/translation";import{FiltersToolbar as m}from"../molecules/FiltersToolbar";import{DataViewDetail as v}from"./DataViewDetail";import{DataViewList as b}from"./DataViewList";import{DataViewTable as y}from"./DataViewTable";export function DataViewRenderer({spec:B,items:G=[],item:X=null,className:M,renderActions:$,onSelect:q,onRowClick:P,toolbar:R,loading:T,headerActions:Y,emptyState:Q,footer:j,search:w,onSearchChange:_,filters:I,onFilterChange:Z,pagination:K,onPageChange:D}){const z=u(),O=L.useMemo(()=>S({filters:B.view.filters,scope:B.view.filterScope,user:g(I)}),[I,B.view.filterScope,B.view.filters]),N=L.useMemo(()=>{if(B.view.filterScope){const E=Object.entries(O.user).map(([H,W])=>({key:H,label:`${A(B,H)}: ${F(W)}`,onRemove:()=>{const{[H]:r,...C}=O.user;Z?.(C)}})),U=O.lockedChips==="hidden"?[]:Object.entries(O.locked).map(([H,W])=>({key:`locked-${H}`,label:`${A(B,H)}: ${F(W)}`,disabled:!0}));return[...E,...U]}return I?Object.entries(I).map(([E,U])=>({key:E,label:`${E}: ${String(U)}`,onRemove:()=>{const{[E]:H,...W}=I;Z?.(W)}})):[]},[I,Z,O,B]),k=B.view.filterScope?Object.keys(O.user).length>0:Boolean(I&&Object.keys(I).length>0),x=L.useMemo(()=>{switch(B.view.kind){case"list":return J(b,{spec:B,items:G,className:M,renderActions:$,onSelect:q,emptyState:Q});case"table":return J(y,{spec:B,items:G,className:M,onRowClick:P,toolbar:R,loading:T,emptyState:Q,headerActions:Y,footer:j});case"detail":return J(v,{spec:B,item:X,className:M,emptyState:Q,headerActions:Y});case"grid":{const E=B.view,U={kind:"list",layout:"card",fields:E.fields,filters:E.filters,actions:E.actions,primaryField:E.primaryField,secondaryFields:E.secondaryFields,filterScope:E.filterScope},H={...B,view:U};return J(b,{spec:H,items:G,className:M,renderActions:$,onSelect:q,emptyState:Q})}default:return J(f,{className:M,children:V("Unsupported data view kind",z)})}},[B,G,X,M,$,q,P,R,T,Y,Q,j,z]);if(!(B.view.kind==="list"||B.view.kind==="table"||B.view.kind==="grid"))return J(p,{children:x});return c(h,{gap:"lg",children:[(B.view.filters?.length||_||N.length)&&J(m,{searchValue:w,onSearchChange:_,searchPlaceholder:V("Search...",z)??"Search...",activeChips:N,onClearAll:k?()=>Z?.({}):void 0,right:B.view.kind==="table"?void 0:Y}),x,K&&K.total>0&&J(d,{currentPage:K.page,totalPages:Math.ceil(K.total/K.pageSize),totalItems:K.total,itemsPerPage:K.pageSize,onPageChange:(E)=>D?.(E),onItemsPerPageChange:(E)=>{D?.(1)},showItemsPerPage:!1})]})}function g(B){if(!B)return;return Object.fromEntries(Object.entries(B??{}).filter((G)=>Boolean(G[1]&&typeof G[1]==="object"&&"kind"in G[1]&&typeof G[1].kind==="string")))}function A(B,G){return B.view.filters?.find((X)=>X.key===G)?.label??G}function F(B){if(!B)return"";if(B.kind==="single")return String(B.value);if(B.kind==="multi")return B.values.map(String).join(", ");if(B.kind==="range")return[B.from==null?"":String(B.from),B.to==null?"":String(B.to)].filter(Boolean).join(" - ");return`${B.mode}(${B.clauses.length})`}
@@ -1,4 +1,4 @@
1
- import type { DataViewSpec } from '@contractspec/lib.contracts-spec/data-views';
1
+ import type { DataViewFilterSet, DataViewSpec } from '@contractspec/lib.contracts-spec/data-views';
2
2
  import * as React from 'react';
3
3
  export interface DataViewRendererProps {
4
4
  spec: DataViewSpec;
@@ -15,8 +15,8 @@ export interface DataViewRendererProps {
15
15
  footer?: React.ReactNode;
16
16
  search?: string;
17
17
  onSearchChange?: (value: string) => void;
18
- filters?: Record<string, unknown>;
19
- onFilterChange?: (filters: Record<string, unknown>) => void;
18
+ filters?: Record<string, unknown> | DataViewFilterSet;
19
+ onFilterChange?: (filters: Record<string, unknown> | DataViewFilterSet) => void;
20
20
  pagination?: {
21
21
  page: number;
22
22
  pageSize: number;
@@ -1,3 +1,4 @@
1
+ export { InputPassword } from '../../atoms/InputPassword';
1
2
  export { Autocomplete, type AutocompleteProps, } from './Autocomplete';
2
3
  export { Checkbox, RadioGroup, RadioGroupItem, Switch, } from './ChoiceControls';
3
4
  export { Combobox, type ComboboxProps } from './Combobox';
@@ -1 +1 @@
1
- export{Autocomplete}from"./Autocomplete";export{Checkbox,RadioGroup,RadioGroupItem,Switch}from"./ChoiceControls";export{Combobox}from"./Combobox";export{DatePicker,DateRangePicker,DateTimePicker,TimePicker}from"./DateTimeControls";export{DropdownMenu,DropdownMenuCheckboxItem,DropdownMenuContent,DropdownMenuGroup,DropdownMenuItem,DropdownMenuLabel,DropdownMenuPortal,DropdownMenuRadioGroup,DropdownMenuRadioItem,DropdownMenuSeparator,DropdownMenuShortcut,DropdownMenuSub,DropdownMenuSubContent,DropdownMenuSubTrigger,DropdownMenuTrigger}from"./DropdownMenu";export{Field,FieldContent,FieldDescription,FieldError,FieldGroup,FieldLabel,FieldLegend,FieldSeparator,FieldSet}from"./Field";export{InputGroup,InputGroupAddon,InputGroupButton,InputGroupInput,InputGroupText,InputGroupTextarea}from"./InputGroup";export{InputOTP,InputOTPGroup,InputOTPSeparator,InputOTPSlot}from"./InputOTP";export{LoadingButton}from"./LoadingButton";export{NativeSelect,NativeSelectOptGroup,NativeSelectOption}from"./NativeSelect";export{Select}from"./Select";
1
+ export{InputPassword}from"../../atoms/InputPassword";export{Autocomplete}from"./Autocomplete";export{Checkbox,RadioGroup,RadioGroupItem,Switch}from"./ChoiceControls";export{Combobox}from"./Combobox";export{DatePicker,DateRangePicker,DateTimePicker,TimePicker}from"./DateTimeControls";export{DropdownMenu,DropdownMenuCheckboxItem,DropdownMenuContent,DropdownMenuGroup,DropdownMenuItem,DropdownMenuLabel,DropdownMenuPortal,DropdownMenuRadioGroup,DropdownMenuRadioItem,DropdownMenuSeparator,DropdownMenuShortcut,DropdownMenuSub,DropdownMenuSubContent,DropdownMenuSubTrigger,DropdownMenuTrigger}from"./DropdownMenu";export{Field,FieldContent,FieldDescription,FieldError,FieldGroup,FieldLabel,FieldLegend,FieldSeparator,FieldSet}from"./Field";export{InputGroup,InputGroupAddon,InputGroupButton,InputGroupInput,InputGroupText,InputGroupTextarea}from"./InputGroup";export{InputOTP,InputOTPGroup,InputOTPSeparator,InputOTPSlot}from"./InputOTP";export{LoadingButton}from"./LoadingButton";export{NativeSelect,NativeSelectOptGroup,NativeSelectOption}from"./NativeSelect";export{Select}from"./Select";
@@ -1 +1 @@
1
- import{jsx as e,jsxs as c}from"react/jsx-runtime";import*as i from"react";import{Button as u}from"../../../index";import{ContactFields as d}from"../molecules/ContactFields";import{LegalPageLayout as g}from"../organisms/LegalPageLayout";export function ContactTemplate({title:r="Contact",meta:m,onSubmit:a}){const[o,s]=i.useState({name:"",email:"",subject:"",message:""}),[t,n]=i.useState(!1);return e(g,{title:r,meta:m,children:c("form",{onSubmit:async(l)=>{l.preventDefault();if(!a)return;n(!0);try{await a(o)}finally{n(!1)}},className:"space-y-6",children:[e(d,{value:o,onChange:s,disabled:t}),e(u,{disabled:t,type:"submit",children:t?"Envoi\u2026":"Envoyer"})]})})}
1
+ import{jsx as e,jsxs as c}from"react/jsx-runtime";import*as i from"react";import{Button as u}from"../../atoms/Button";import{ContactFields as d}from"../molecules/ContactFields";import{LegalPageLayout as g}from"../organisms/LegalPageLayout";export function ContactTemplate({title:r="Contact",meta:m,onSubmit:a}){const[o,s]=i.useState({name:"",email:"",subject:"",message:""}),[t,n]=i.useState(!1);return e(g,{title:r,meta:m,children:c("form",{onSubmit:async(l)=>{l.preventDefault();if(!a)return;n(!0);try{await a(o)}finally{n(!1)}},className:"space-y-6",children:[e(d,{value:o,onChange:s,disabled:t}),e(u,{disabled:t,type:"submit",children:t?"Envoi\u2026":"Envoyer"})]})})}
@@ -0,0 +1,6 @@
1
+ import { type ListItemProps as WebListItemProps, type ListProps as WebListProps } from '@contractspec/lib.ui-kit-web/ui/list';
2
+ import { type ThemedPrimitiveProps } from '../primitives/themed';
3
+ export type ListProps = WebListProps & ThemedPrimitiveProps;
4
+ export type ListItemProps = WebListItemProps & ThemedPrimitiveProps;
5
+ export declare function List({ componentKey, themeVariant, className, ...props }: ListProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function ListItem({ componentKey, themeVariant, className, ...props }: ListItemProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as D}from"react/jsx-runtime";import{List as E,ListItem as F}from"@contractspec/lib.ui-kit-web/ui/list";import{useThemedPrimitive as C}from"../primitives/themed";export function List({componentKey:q,themeVariant:z,className:A,...B}){const g=C({defaultComponentKey:"List",componentKey:q,themeVariant:z,className:A});return D(E,{...g.props,...B,className:g.className})}export function ListItem({componentKey:q,themeVariant:z,className:A,...B}){const g=C({defaultComponentKey:"ListItem",componentKey:q,themeVariant:z,className:A});return D(F,{...g.props,...B,className:g.className})}
@@ -0,0 +1,6 @@
1
+ import { type ListItemProps as NativeListItemProps, type ListProps as NativeListProps } from '@contractspec/lib.ui-kit/ui/list';
2
+ import { type ThemedPrimitiveProps } from '../primitives/themed';
3
+ export type ListProps = NativeListProps & ThemedPrimitiveProps;
4
+ export type ListItemProps = NativeListItemProps & ThemedPrimitiveProps;
5
+ export declare function List({ componentKey, themeVariant, className, ...props }: ListProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function ListItem({ componentKey, themeVariant, className, ...props }: ListItemProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export { List, ListItem, type ListItemProps, type ListProps } from './List';
@@ -0,0 +1 @@
1
+ export{List,ListItem}from"./List";
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  export interface ActiveFilterChip {
3
3
  key: string;
4
4
  label: React.ReactNode;
5
+ disabled?: boolean;
5
6
  onRemove?: () => void;
6
7
  }
7
8
  export interface FiltersToolbarProps {
@@ -1 +1 @@
1
- import{jsx as E,jsxs as D}from"react/jsx-runtime";import{Badge as k}from"@contractspec/lib.ui-kit-web/ui/badge";import{cn as I}from"@contractspec/lib.ui-kit-web/ui/utils";import*as K from"react";import{Button as W}from"../atoms/Button";import{Input as N}from"../atoms/Input";export function FiltersToolbar({className:X,children:Y,right:Z,searchPlaceholder:$,searchValue:G,onSearchChange:F,onSearchSubmit:L,debounceMs:O=250,activeChips:T=[],onClearAll:H}){const[J,U]=K.useState(G??"");K.useEffect(()=>{U(G??"")},[G]);K.useEffect(()=>{if(!F)return;const z=setTimeout(()=>F(J),O);return()=>clearTimeout(z)},[J,O,F]);return D("div",{className:I("space-y-2",X),children:[D("div",{className:"flex flex-col items-stretch gap-2 md:flex-row md:items-center md:justify-between",children:[D("div",{className:"flex flex-1 items-center gap-2",children:[F?D("div",{className:"flex flex-1 items-center gap-2",children:[E(N,{value:J,onChange:(z)=>U(z.target.value),onKeyDown:(z)=>{if(z.key==="Enter")L?.()},placeholder:$,keyboard:{kind:"search"}}),E(W,{variant:"outline",onPress:()=>L?.(),className:"shrink-0",children:"Rechercher"})]}):null,Y]}),Z]}),(T.length>0||H)&&D("div",{className:"flex flex-wrap items-center gap-2",children:[T.map((z)=>D(k,{variant:"secondary",className:"inline-flex items-center gap-2",children:[E("span",{children:z.label}),z.onRemove&&E("button",{type:"button","aria-label":"Supprimer le filtre",onClick:z.onRemove,className:"rounded-xs px-1 text-base hover:bg-muted",children:"\xD7"})]},z.key)),H&&E(W,{size:"sm",variant:"ghost",onPress:H,children:"Effacer les filtres"})]})]})}
1
+ import{jsx as E,jsxs as D}from"react/jsx-runtime";import{Badge as I}from"@contractspec/lib.ui-kit-web/ui/badge";import{cn as W}from"@contractspec/lib.ui-kit-web/ui/utils";import*as K from"react";import{Button as X}from"../atoms/Button";import{Input as N}from"../atoms/Input";export function FiltersToolbar({className:Y,children:Z,right:$,searchPlaceholder:k,searchValue:G,onSearchChange:F,onSearchSubmit:L,debounceMs:O=250,activeChips:T=[],onClearAll:H}){const[J,U]=K.useState(G??"");K.useEffect(()=>{U(G??"")},[G]);K.useEffect(()=>{if(!F)return;const z=setTimeout(()=>F(J),O);return()=>clearTimeout(z)},[J,O,F]);return D("div",{className:W("space-y-2",Y),children:[D("div",{className:"flex flex-col items-stretch gap-2 md:flex-row md:items-center md:justify-between",children:[D("div",{className:"flex flex-1 items-center gap-2",children:[F?D("div",{className:"flex flex-1 items-center gap-2",children:[E(N,{value:J,onChange:(z)=>U(z.target.value),onKeyDown:(z)=>{if(z.key==="Enter")L?.()},placeholder:k,keyboard:{kind:"search"}}),E(X,{variant:"outline",onPress:()=>L?.(),className:"shrink-0",children:"Rechercher"})]}):null,Z]}),$]}),(T.length>0||H)&&D("div",{className:"flex flex-wrap items-center gap-2",children:[T.map((z)=>D(I,{variant:"secondary",className:W("inline-flex items-center gap-2",z.disabled&&"opacity-70"),children:[E("span",{children:z.label}),z.onRemove&&!z.disabled&&E("button",{type:"button","aria-label":"Supprimer le filtre",onClick:z.onRemove,className:"rounded-xs px-1 text-base hover:bg-muted",children:"\xD7"})]},z.key)),H&&E(X,{size:"sm",variant:"ghost",onPress:H,children:"Effacer les filtres"})]})]})}
@@ -0,0 +1,32 @@
1
+ import * as React from 'react';
2
+ import { type ThemedPrimitiveProps } from '../primitives/themed';
3
+ export interface TabsProps extends ThemedPrimitiveProps {
4
+ value?: string;
5
+ defaultValue?: string;
6
+ onValueChange?: (value: string) => void;
7
+ className?: string;
8
+ children?: React.ReactNode;
9
+ orientation?: 'horizontal' | 'vertical';
10
+ dir?: 'ltr' | 'rtl';
11
+ activationMode?: 'automatic' | 'manual';
12
+ }
13
+ export interface TabsListProps extends ThemedPrimitiveProps {
14
+ className?: string;
15
+ children?: React.ReactNode;
16
+ }
17
+ export interface TabsTriggerProps extends ThemedPrimitiveProps {
18
+ value: string;
19
+ disabled?: boolean;
20
+ className?: string;
21
+ children?: React.ReactNode;
22
+ }
23
+ export interface TabsContentProps extends ThemedPrimitiveProps {
24
+ value: string;
25
+ forceMount?: boolean;
26
+ className?: string;
27
+ children?: React.ReactNode;
28
+ }
29
+ export declare function Tabs({ value, defaultValue, onValueChange, className, children, orientation, dir, activationMode, componentKey, themeVariant, }: TabsProps): import("react/jsx-runtime").JSX.Element;
30
+ export declare function TabsList({ className, children, componentKey, themeVariant, }: TabsListProps): import("react/jsx-runtime").JSX.Element;
31
+ export declare function TabsTrigger({ value, disabled, className, children, componentKey, themeVariant, }: TabsTriggerProps): import("react/jsx-runtime").JSX.Element;
32
+ export declare function TabsContent({ value, forceMount, className, children, componentKey, themeVariant, }: TabsContentProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as H}from"react/jsx-runtime";import{Tabs as R,TabsContent as S,TabsList as U,TabsTrigger as X}from"@contractspec/lib.ui-kit-web/ui/tabs";import{useThemedPrimitive as G}from"../primitives/themed";export function Tabs({value:z,defaultValue:A,onValueChange:B,className:D,children:q,orientation:F,dir:E,activationMode:J,componentKey:O,themeVariant:Q}){console.log("tabs web");const I=G({defaultComponentKey:"Tabs",componentKey:O,themeVariant:Q,className:D});return H(R,{...I.props,value:z,defaultValue:A,onValueChange:B,className:I.className,orientation:F,dir:E,activationMode:J,children:q})}export function TabsList({className:z,children:A,componentKey:B,themeVariant:D}){const q=G({defaultComponentKey:"TabsList",componentKey:B,themeVariant:D,className:z});return H(U,{...q.props,className:q.className,children:A})}export function TabsTrigger({value:z,disabled:A,className:B,children:D,componentKey:q,themeVariant:F}){const E=G({defaultComponentKey:"TabsTrigger",componentKey:q,themeVariant:F,className:B});return H(X,{...E.props,value:z,disabled:A,className:E.className,children:D})}export function TabsContent({value:z,forceMount:A,className:B,children:D,componentKey:q,themeVariant:F}){const E=G({defaultComponentKey:"TabsContent",componentKey:q,themeVariant:F,className:B});return H(S,{...E.props,value:z,forceMount:A?!0:void 0,className:E.className,children:D})}
@@ -0,0 +1,32 @@
1
+ import * as React from 'react';
2
+ import { type ThemedPrimitiveProps } from '../primitives/themed';
3
+ export interface TabsProps extends ThemedPrimitiveProps {
4
+ value?: string;
5
+ defaultValue?: string;
6
+ onValueChange?: (value: string) => void;
7
+ className?: string;
8
+ children?: React.ReactNode;
9
+ orientation?: 'horizontal' | 'vertical';
10
+ dir?: 'ltr' | 'rtl';
11
+ activationMode?: 'automatic' | 'manual';
12
+ }
13
+ export interface TabsListProps extends ThemedPrimitiveProps {
14
+ className?: string;
15
+ children?: React.ReactNode;
16
+ }
17
+ export interface TabsTriggerProps extends ThemedPrimitiveProps {
18
+ value: string;
19
+ disabled?: boolean;
20
+ className?: string;
21
+ children?: React.ReactNode;
22
+ }
23
+ export interface TabsContentProps extends ThemedPrimitiveProps {
24
+ value: string;
25
+ forceMount?: boolean;
26
+ className?: string;
27
+ children?: React.ReactNode;
28
+ }
29
+ export declare function Tabs({ value, defaultValue, onValueChange, className, children, orientation, dir, activationMode, componentKey, themeVariant, }: TabsProps): import("react/jsx-runtime").JSX.Element;
30
+ export declare function TabsList({ className, children, componentKey, themeVariant, }: TabsListProps): import("react/jsx-runtime").JSX.Element;
31
+ export declare function TabsTrigger({ value, disabled, className, children, componentKey, themeVariant, }: TabsTriggerProps): import("react/jsx-runtime").JSX.Element;
32
+ export declare function TabsContent({ value, forceMount, className, children, componentKey, themeVariant, }: TabsContentProps): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type BottomTabItem } from '../native/BottomTabs.mobile';
2
+ import { type BottomTabItem } from '../native/BottomTabs.native';
3
3
  export interface AppHeaderMobileProps {
4
4
  logo?: React.ReactNode;
5
5
  toolbarRight?: React.ReactNode;
@@ -0,0 +1,19 @@
1
+ import { Text as WebText } from '@contractspec/lib.ui-kit-web/ui/text';
2
+ import { BlockQuote as WebBlockQuote, Code as WebCode, H1 as WebH1, H2 as WebH2, H3 as WebH3, H4 as WebH4, Large as WebLarge, Lead as WebLead, Muted as WebMuted, P as WebP, Small as WebSmall } from '@contractspec/lib.ui-kit-web/ui/typography';
3
+ import * as React from 'react';
4
+ import { type ThemedPrimitiveProps } from '../primitives/themed';
5
+ type ThemedTextProps = React.ComponentProps<typeof WebText> & ThemedPrimitiveProps;
6
+ type ThemedTypographyProps<TComponent extends React.ElementType> = React.ComponentProps<TComponent> & ThemedPrimitiveProps;
7
+ export declare function Text({ componentKey, themeVariant, className, ...props }: ThemedTextProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare function H1({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof WebH1>): import("react/jsx-runtime").JSX.Element;
9
+ export declare function H2({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof WebH2>): import("react/jsx-runtime").JSX.Element;
10
+ export declare function H3({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof WebH3>): import("react/jsx-runtime").JSX.Element;
11
+ export declare function H4({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof WebH4>): import("react/jsx-runtime").JSX.Element;
12
+ export declare function P({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof WebP>): import("react/jsx-runtime").JSX.Element;
13
+ export declare function Lead({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof WebLead>): import("react/jsx-runtime").JSX.Element;
14
+ export declare function Large({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof WebLarge>): import("react/jsx-runtime").JSX.Element;
15
+ export declare function Small({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof WebSmall>): import("react/jsx-runtime").JSX.Element;
16
+ export declare function Muted({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof WebMuted>): import("react/jsx-runtime").JSX.Element;
17
+ export declare function Code({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof WebCode>): import("react/jsx-runtime").JSX.Element;
18
+ export declare function BlockQuote({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof WebBlockQuote>): import("react/jsx-runtime").JSX.Element;
19
+ export {};
@@ -0,0 +1 @@
1
+ import{jsx as G}from"react/jsx-runtime";import{Text as I}from"@contractspec/lib.ui-kit-web/ui/text";import{BlockQuote as J,Code as O,H1 as R,H2 as U,H3 as X,H4 as Y,Large as Z,Lead as $,Muted as B,P as M,Small as Q}from"@contractspec/lib.ui-kit-web/ui/typography";import{useThemedPrimitive as S}from"../primitives/themed";function F({defaultComponentKey:z,componentKey:A,themeVariant:D,className:E}){return S({defaultComponentKey:z,componentKey:A,themeVariant:D,className:E})}export function Text({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"Text",componentKey:z,themeVariant:A,className:D});return G(I,{...q.props,...E,className:q.className})}export function H1({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"H1",componentKey:z,themeVariant:A,className:D});return G(R,{...q.props,...E,className:q.className})}export function H2({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"H2",componentKey:z,themeVariant:A,className:D});return G(U,{...q.props,...E,className:q.className})}export function H3({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"H3",componentKey:z,themeVariant:A,className:D});return G(X,{...q.props,...E,className:q.className})}export function H4({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"H4",componentKey:z,themeVariant:A,className:D});return G(Y,{...q.props,...E,className:q.className})}export function P({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"P",componentKey:z,themeVariant:A,className:D});return G(M,{...q.props,...E,className:q.className})}export function Lead({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"Lead",componentKey:z,themeVariant:A,className:D});return G($,{...q.props,...E,className:q.className})}export function Large({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"Large",componentKey:z,themeVariant:A,className:D});return G(Z,{...q.props,...E,className:q.className})}export function Small({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"Small",componentKey:z,themeVariant:A,className:D});return G(Q,{...q.props,...E,className:q.className})}export function Muted({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"Muted",componentKey:z,themeVariant:A,className:D});return G(B,{...q.props,...E,className:q.className})}export function Code({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"Code",componentKey:z,themeVariant:A,className:D});return G(O,{...q.props,...E,className:q.className})}export function BlockQuote({componentKey:z,themeVariant:A,className:D,...E}){const q=F({defaultComponentKey:"BlockQuote",componentKey:z,themeVariant:A,className:D});return G(J,{...q.props,...E,className:q.className})}
@@ -0,0 +1,19 @@
1
+ import { Text as NativeText } from '@contractspec/lib.ui-kit/ui/text';
2
+ import { BlockQuote as NativeBlockQuote, Code as NativeCode, H1 as NativeH1, H2 as NativeH2, H3 as NativeH3, H4 as NativeH4, Large as NativeLarge, Lead as NativeLead, Muted as NativeMuted, P as NativeP, Small as NativeSmall } from '@contractspec/lib.ui-kit/ui/typography';
3
+ import * as React from 'react';
4
+ import { type ThemedPrimitiveProps } from '../primitives/themed';
5
+ type ThemedTextProps = React.ComponentProps<typeof NativeText> & ThemedPrimitiveProps;
6
+ type ThemedTypographyProps<TComponent extends React.ElementType> = React.ComponentProps<TComponent> & ThemedPrimitiveProps;
7
+ export declare function Text({ componentKey, themeVariant, className, ...props }: ThemedTextProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare const H1: ({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof NativeH1>) => import("react/jsx-runtime").JSX.Element;
9
+ export declare const H2: ({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof NativeH2>) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const H3: ({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof NativeH3>) => import("react/jsx-runtime").JSX.Element;
11
+ export declare const H4: ({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof NativeH4>) => import("react/jsx-runtime").JSX.Element;
12
+ export declare const P: ({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof NativeP>) => import("react/jsx-runtime").JSX.Element;
13
+ export declare const Lead: ({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof NativeLead>) => import("react/jsx-runtime").JSX.Element;
14
+ export declare const Large: ({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof NativeLarge>) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const Small: ({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof NativeSmall>) => import("react/jsx-runtime").JSX.Element;
16
+ export declare const Muted: ({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof NativeMuted>) => import("react/jsx-runtime").JSX.Element;
17
+ export declare const Code: ({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof NativeCode>) => import("react/jsx-runtime").JSX.Element;
18
+ export declare const BlockQuote: ({ componentKey, themeVariant, className, ...props }: ThemedTypographyProps<typeof NativeBlockQuote>) => import("react/jsx-runtime").JSX.Element;
19
+ export {};
@@ -0,0 +1 @@
1
+ export { BlockQuote, Code, H1, H2, H3, H4, Large, Lead, Muted, P, Small, Text, } from './Typography';
@@ -0,0 +1 @@
1
+ export{BlockQuote,Code,H1,H2,H3,H4,Large,Lead,Muted,P,Small,Text}from"./Typography";
@@ -0,0 +1 @@
1
+ export * from './components/forms/controls';
@@ -0,0 +1 @@
1
+ export*from"./components/forms/controls";
@@ -0,0 +1 @@
1
+ export * from './components/forms';
package/dist/forms.js ADDED
@@ -0,0 +1 @@
1
+ export*from"./components/forms";
@@ -1,3 +1,4 @@
1
+ import type { ListFilterScope } from '@contractspec/lib.presentation-runtime-core';
1
2
  export interface ListUrlState<TFilters extends Record<string, unknown> = Record<string, unknown>> {
2
3
  q: string;
3
4
  page: number;
@@ -5,8 +6,9 @@ export interface ListUrlState<TFilters extends Record<string, unknown> = Record<
5
6
  sort?: string | null;
6
7
  filters: TFilters;
7
8
  }
8
- export declare function useListUrlState<TFilters extends Record<string, unknown> = Record<string, unknown>>({ defaults, paramKeys, replaceState, }: {
9
+ export declare function useListUrlState<TFilters extends Record<string, unknown> = Record<string, unknown>>({ defaults, paramKeys, replaceState, filterScope, }: {
9
10
  defaults: ListUrlState<TFilters>;
11
+ filterScope?: ListFilterScope<TFilters>;
10
12
  paramKeys?: {
11
13
  q: string;
12
14
  page: string;