@contractspec/lib.design-system 3.11.2 → 4.0.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 (399) hide show
  1. package/README.md +1 -1
  2. package/dist/browser/components/atoms/InputPassword.js +1 -0
  3. package/dist/browser/components/forms/controls/index.js +1 -1
  4. package/dist/browser/components/legal/templates/ContactTemplate.js +1 -1
  5. package/dist/browser/components/list/List.js +1 -0
  6. package/dist/browser/components/list/index.js +1 -0
  7. package/dist/browser/components/molecules/Tabs.js +1 -0
  8. package/dist/browser/components/typography/Typography.js +1 -0
  9. package/dist/browser/components/typography/index.js +1 -0
  10. package/dist/browser/controls.js +1 -0
  11. package/dist/browser/forms.js +1 -0
  12. package/dist/browser/index.js +1 -1
  13. package/dist/browser/layout.js +1 -0
  14. package/dist/browser/list.js +1 -0
  15. package/dist/browser/renderers/form-contract/renderer.js +1 -1
  16. package/dist/browser/renderers/form-contract/shell.js +1 -1
  17. package/dist/browser/typography.js +1 -0
  18. package/dist/components/atoms/{ButtonLink.mobile.d.ts → ButtonLink.native.d.ts} +1 -1
  19. package/dist/components/atoms/InputPassword.d.ts +15 -0
  20. package/dist/components/atoms/InputPassword.js +1 -0
  21. package/dist/components/atoms/InputPassword.native.d.ts +17 -0
  22. package/dist/components/atoms/Link.native.d.ts +1 -1
  23. package/dist/components/forms/controls/index.d.ts +1 -0
  24. package/dist/components/forms/controls/index.js +1 -1
  25. package/dist/components/legal/templates/ContactTemplate.js +1 -1
  26. package/dist/components/list/List.d.ts +6 -0
  27. package/dist/components/list/List.js +1 -0
  28. package/dist/components/list/List.native.d.ts +6 -0
  29. package/dist/components/list/index.d.ts +1 -0
  30. package/dist/components/list/index.js +1 -0
  31. package/dist/components/molecules/Tabs.d.ts +32 -0
  32. package/dist/components/molecules/Tabs.js +1 -0
  33. package/dist/components/molecules/Tabs.native.d.ts +32 -0
  34. package/dist/components/organisms/{AppHeader.mobile.d.ts → AppHeader.native.d.ts} +1 -1
  35. package/dist/components/typography/Typography.d.ts +19 -0
  36. package/dist/components/typography/Typography.js +1 -0
  37. package/dist/components/typography/Typography.native.d.ts +19 -0
  38. package/dist/components/typography/index.d.ts +1 -0
  39. package/dist/components/typography/index.js +1 -0
  40. package/dist/controls.d.ts +1 -0
  41. package/dist/controls.js +1 -0
  42. package/dist/forms.d.ts +1 -0
  43. package/dist/forms.js +1 -0
  44. package/dist/index.d.ts +4 -0
  45. package/dist/index.js +1 -1
  46. package/dist/layout.d.ts +1 -0
  47. package/dist/layout.js +1 -0
  48. package/dist/list.d.ts +1 -0
  49. package/dist/list.js +1 -0
  50. package/dist/native/components/agent/AgentMonitor.js +1 -0
  51. package/dist/native/components/agent/ApprovalQueue.js +1 -0
  52. package/dist/native/components/atoms/ActionButtons.js +1 -0
  53. package/dist/native/components/atoms/Button.js +1 -0
  54. package/dist/native/components/atoms/ButtonLink.js +1 -0
  55. package/dist/{browser/components/atoms/ButtonLink.mobile.js → native/components/atoms/ButtonLink.native.js} +1 -1
  56. package/dist/native/components/atoms/Cta.js +1 -0
  57. package/dist/native/components/atoms/DataChips.js +1 -0
  58. package/dist/native/components/atoms/EmptyState.js +1 -0
  59. package/dist/native/components/atoms/ErrorState.js +1 -0
  60. package/dist/native/components/atoms/ErrorState.native.js +1 -0
  61. package/dist/native/components/atoms/Input.js +1 -0
  62. package/dist/native/components/atoms/InputPassword.js +1 -0
  63. package/dist/native/components/atoms/InputPassword.native.js +1 -0
  64. package/dist/native/components/atoms/Link.js +1 -0
  65. package/dist/native/components/atoms/Link.native.js +1 -0
  66. package/dist/native/components/atoms/LoaderCircular.js +1 -0
  67. package/dist/native/components/atoms/NavBrand.js +1 -0
  68. package/dist/native/components/atoms/RankBadge.js +1 -0
  69. package/dist/native/components/atoms/ScoreBar.js +1 -0
  70. package/dist/native/components/atoms/Stepper.js +1 -0
  71. package/dist/native/components/atoms/Textarea.js +1 -0
  72. package/dist/native/components/data-table/DataTable.js +1 -0
  73. package/dist/native/components/data-table/DataTableToolbar.js +1 -0
  74. package/dist/{browser/components/data-table/DataTableToolbar.mobile.js → native/components/data-table/DataTableToolbar.native.js} +1 -1
  75. package/dist/native/components/data-table/DataTableToolbar.shared.js +1 -0
  76. package/dist/native/components/data-view/DataViewDetail.js +1 -0
  77. package/dist/native/components/data-view/DataViewList.js +1 -0
  78. package/dist/native/components/data-view/DataViewRenderer.js +1 -0
  79. package/dist/native/components/data-view/DataViewTable.js +1 -0
  80. package/dist/native/components/data-view/utils.js +1 -0
  81. package/dist/native/components/forms/ActionForm.js +1 -0
  82. package/dist/native/components/forms/FormCardLayout.js +1 -0
  83. package/dist/native/components/forms/FormDialog.js +1 -0
  84. package/dist/native/components/forms/FormLayout.js +1 -0
  85. package/dist/native/components/forms/FormOneByOneLayout.js +1 -0
  86. package/dist/native/components/forms/FormStepsLayout.js +1 -0
  87. package/dist/native/components/forms/ZodForm.js +1 -0
  88. package/dist/native/components/forms/controls/Autocomplete.js +1 -0
  89. package/dist/native/components/forms/controls/ChoiceControls.js +1 -0
  90. package/dist/native/components/forms/controls/Combobox.js +1 -0
  91. package/dist/native/components/forms/controls/DateTimeControls.js +1 -0
  92. package/dist/{components/forms/controls/DropdownMenu.mobile.js → native/components/forms/controls/DropdownMenu.js} +1 -1
  93. package/dist/native/components/forms/controls/Field.js +1 -0
  94. package/dist/native/components/forms/controls/InputGroup.js +1 -0
  95. package/dist/native/components/forms/controls/InputOTP.js +1 -0
  96. package/dist/native/components/forms/controls/LoadingButton.js +1 -0
  97. package/dist/native/components/forms/controls/NativeSelect.js +1 -0
  98. package/dist/native/components/forms/controls/Select.js +1 -0
  99. package/dist/native/components/forms/controls/index.js +1 -0
  100. package/dist/native/components/forms/index.js +1 -0
  101. package/dist/native/components/layout/Stack.js +1 -0
  102. package/dist/native/components/layout/index.js +1 -0
  103. package/dist/native/components/legal/atoms/DefinitionList.js +1 -0
  104. package/dist/native/components/legal/atoms/KeyValueList.js +1 -0
  105. package/dist/native/components/legal/atoms/LegalCallout.js +1 -0
  106. package/dist/native/components/legal/atoms/LegalHeading.js +1 -0
  107. package/dist/native/components/legal/atoms/LegalList.js +1 -0
  108. package/dist/native/components/legal/atoms/LegalSection.js +1 -0
  109. package/dist/native/components/legal/atoms/LegalText.js +1 -0
  110. package/dist/native/components/legal/molecules/Consent.js +1 -0
  111. package/dist/native/components/legal/molecules/ContactFields.js +1 -0
  112. package/dist/native/components/legal/molecules/LegalMeta.js +1 -0
  113. package/dist/native/components/legal/molecules/LegalTOC.js +1 -0
  114. package/dist/native/components/legal/organisms/ContactForm.js +1 -0
  115. package/dist/native/components/legal/organisms/GDPRDataRequest.js +1 -0
  116. package/dist/native/components/legal/organisms/GDPRRights.js +1 -0
  117. package/dist/native/components/legal/organisms/LegalPageLayout.js +1 -0
  118. package/dist/native/components/legal/templates/ContactTemplate.js +1 -0
  119. package/dist/native/components/legal/templates/CookiesTemplate.js +1 -0
  120. package/dist/native/components/legal/templates/PrivacyTemplate.js +1 -0
  121. package/dist/native/components/legal/templates/SalesTermsTemplate.js +1 -0
  122. package/dist/native/components/legal/templates/TermsTemplate.js +1 -0
  123. package/dist/native/components/list/List.js +1 -0
  124. package/dist/native/components/list/List.native.js +1 -0
  125. package/dist/native/components/list/index.js +1 -0
  126. package/dist/native/components/marketing/MarketingCard.js +1 -0
  127. package/dist/native/components/marketing/MarketingCardsSection.js +1 -0
  128. package/dist/native/components/marketing/MarketingComparisonSection.js +1 -0
  129. package/dist/native/components/marketing/MarketingIconCard.js +1 -0
  130. package/dist/native/components/marketing/MarketingSection.js +1 -0
  131. package/dist/native/components/marketing/MarketingStepCard.js +1 -0
  132. package/dist/native/components/molecules/AiLinkButton.js +1 -0
  133. package/dist/native/components/molecules/Breadcrumbs.js +1 -0
  134. package/dist/native/components/molecules/CodeBlock/CodeBlock.js +1 -0
  135. package/dist/native/components/molecules/CodeBlock/index.js +1 -0
  136. package/dist/native/components/molecules/CommandPalette.js +1 -0
  137. package/dist/native/components/molecules/CommandSearchTrigger.js +1 -0
  138. package/dist/native/components/molecules/CommandTabs/CommandTabs.js +1 -0
  139. package/dist/native/components/molecules/CommandTabs/index.js +1 -0
  140. package/dist/native/components/molecules/CopyButton/CopyButton.js +1 -0
  141. package/dist/native/components/molecules/CopyButton/index.js +1 -0
  142. package/dist/native/components/molecules/CopyButton/types.js +0 -0
  143. package/dist/native/components/molecules/DimensionScoresCard.js +1 -0
  144. package/dist/native/components/molecules/DropdownMenu.js +0 -0
  145. package/dist/native/components/molecules/EntityCard.js +1 -0
  146. package/dist/native/components/molecules/FiltersToolbar.js +1 -0
  147. package/dist/native/components/molecules/HoverPreview.js +1 -0
  148. package/dist/native/components/molecules/InstallCommand/InstallCommand.js +1 -0
  149. package/dist/native/components/molecules/InstallCommand/index.js +1 -0
  150. package/dist/native/components/molecules/InstallCommand/types.js +0 -0
  151. package/dist/native/components/molecules/LangSwitch.js +1 -0
  152. package/dist/native/components/molecules/LangSwitchDropdown.js +1 -0
  153. package/dist/native/components/molecules/LoaderBlock.js +1 -0
  154. package/dist/{browser/components/molecules/LoaderBlock.mobile.js → native/components/molecules/LoaderBlock.native.js} +1 -1
  155. package/dist/native/components/molecules/MarkdownRenderer/MarkdownRenderer.js +2 -0
  156. package/dist/native/components/molecules/MarkdownRenderer/formatInlineMarkdown.js +1 -0
  157. package/dist/native/components/molecules/MarkdownRenderer/index.js +1 -0
  158. package/dist/native/components/molecules/MarkdownRenderer/renderMarkdownTable.js +1 -0
  159. package/dist/native/components/molecules/MarkdownRenderer/types.js +0 -0
  160. package/dist/native/components/molecules/MobileNavMenu.js +1 -0
  161. package/dist/native/components/molecules/NavItemCard.js +1 -0
  162. package/dist/native/components/molecules/NavMain.js +1 -0
  163. package/dist/native/components/molecules/NavUser.js +1 -0
  164. package/dist/native/components/molecules/OverviewCard.js +1 -0
  165. package/dist/native/components/molecules/SkeletonBlock/index.js +1 -0
  166. package/dist/native/components/molecules/SkeletonBlock/types.js +0 -0
  167. package/dist/native/components/molecules/SkeletonCircle/index.js +1 -0
  168. package/dist/native/components/molecules/SkeletonCircle/types.js +0 -0
  169. package/dist/native/components/molecules/SkeletonList/index.js +1 -0
  170. package/dist/native/components/molecules/SkeletonList/types.js +0 -0
  171. package/dist/native/components/molecules/StatCard.js +1 -0
  172. package/dist/native/components/molecules/StatusChip.js +1 -0
  173. package/dist/native/components/molecules/Tabs.js +1 -0
  174. package/dist/native/components/molecules/Tabs.native.js +1 -0
  175. package/dist/native/components/molecules/hover-previews/Doc.js +1 -0
  176. package/dist/native/components/molecules/hover-previews/Media.js +1 -0
  177. package/dist/native/components/molecules/hover-previews/Simple.js +1 -0
  178. package/dist/native/components/molecules/hover-previews/Stats.js +1 -0
  179. package/dist/native/components/molecules/hover-previews/User.js +1 -0
  180. package/dist/native/components/organisms/AcademyLayout.js +1 -0
  181. package/dist/native/components/organisms/AppHeader.js +1 -0
  182. package/dist/{browser/components/organisms/AppHeader.mobile.js → native/components/organisms/AppHeader.native.js} +1 -1
  183. package/dist/native/components/organisms/AppLayout.js +1 -0
  184. package/dist/native/components/organisms/AppSidebar.js +1 -0
  185. package/dist/native/components/organisms/AppSidebar.native.js +0 -0
  186. package/dist/native/components/organisms/EmptyDataList.js +1 -0
  187. package/dist/native/components/organisms/EmptyDataList.types.js +0 -0
  188. package/dist/native/components/organisms/EmptySearchResult.js +1 -0
  189. package/dist/native/components/organisms/FAQSection.js +1 -0
  190. package/dist/native/components/organisms/FeatureCarousel.js +1 -0
  191. package/dist/native/components/organisms/FeaturesSection.js +1 -0
  192. package/dist/native/components/organisms/Footer.js +1 -0
  193. package/dist/native/components/organisms/GridLayout.js +1 -0
  194. package/dist/native/components/organisms/Header.js +1 -0
  195. package/dist/native/components/organisms/HeroResponsive.js +1 -0
  196. package/dist/native/components/organisms/HeroSection.js +1 -0
  197. package/dist/native/components/organisms/ListCardPage.js +1 -0
  198. package/dist/native/components/organisms/ListGridPage.js +1 -0
  199. package/dist/native/components/organisms/ListPageResponsive.js +1 -0
  200. package/dist/native/components/organisms/ListTablePage.js +1 -0
  201. package/dist/native/components/organisms/MarketingHeader.js +1 -0
  202. package/dist/native/components/organisms/MarketingHeaderDesktop.js +1 -0
  203. package/dist/native/components/organisms/MarketingHeaderMobile.js +1 -0
  204. package/dist/native/components/organisms/MarketingLayout.js +1 -0
  205. package/dist/native/components/organisms/ModelComparisonView.js +1 -0
  206. package/dist/native/components/organisms/PageHeaderResponsive.js +1 -0
  207. package/dist/{browser/components/organisms/PageHeaderResponsive.mobile.js → native/components/organisms/PageHeaderResponsive.native.js} +1 -1
  208. package/dist/native/components/organisms/PricingCarousel.js +1 -0
  209. package/dist/native/components/organisms/PricingSection.js +1 -0
  210. package/dist/native/components/organisms/TestimonialCarousel.js +1 -0
  211. package/dist/native/components/primitives/control.js +1 -0
  212. package/dist/native/components/primitives/themed.js +1 -0
  213. package/dist/native/components/providers/PackageManagerProvider.js +1 -0
  214. package/dist/native/components/templates/lists/ListPageTemplate/index.js +1 -0
  215. package/dist/{browser/components/templates/lists/ListPageTemplate/index.mobile.js → native/components/templates/lists/ListPageTemplate/index.native.js} +1 -1
  216. package/dist/native/components/templates/lists/ListPageTemplate/types.js +0 -0
  217. package/dist/native/components/typography/Typography.js +1 -0
  218. package/dist/native/components/typography/Typography.native.js +1 -0
  219. package/dist/native/components/typography/index.js +1 -0
  220. package/dist/native/components/visualization/ComparisonView.js +1 -0
  221. package/dist/{browser/components/visualization/ComparisonView.mobile.js → native/components/visualization/ComparisonView.native.js} +1 -1
  222. package/dist/native/components/visualization/TimelineView.js +1 -0
  223. package/dist/{browser/components/visualization/TimelineView.mobile.js → native/components/visualization/TimelineView.native.js} +1 -1
  224. package/dist/native/components/visualization/VisualizationCard.js +1 -0
  225. package/dist/native/components/visualization/VisualizationCard.native.js +1 -0
  226. package/dist/native/components/visualization/VisualizationGrid.js +1 -0
  227. package/dist/native/components/visualization/VisualizationRenderer.js +1 -0
  228. package/dist/native/components/visualization/types.js +0 -0
  229. package/dist/native/contracts.typecheck.js +1 -0
  230. package/dist/native/controls.js +1 -0
  231. package/dist/native/design-system.feature.js +1 -0
  232. package/dist/native/forms.js +1 -0
  233. package/dist/native/hooks/useListUrlState.js +1 -0
  234. package/dist/native/i18n/translation.js +1 -0
  235. package/dist/native/index.js +1 -0
  236. package/dist/native/layout.js +1 -0
  237. package/dist/native/lib/keyboard.js +1 -0
  238. package/dist/native/lib/utils.js +1 -0
  239. package/dist/native/list.js +1 -0
  240. package/dist/native/platform/useColorScheme.js +1 -0
  241. package/dist/native/platform/useReducedMotion.js +1 -0
  242. package/dist/native/platform/useResponsive.js +1 -0
  243. package/dist/native/platform/withPlatformUI.js +1 -0
  244. package/dist/native/renderers/form-contract/renderer.js +1 -0
  245. package/dist/native/renderers/form-contract/rich-fields.js +1 -0
  246. package/dist/native/renderers/form-contract/shell.js +1 -0
  247. package/dist/native/renderers/form-contract/values.js +1 -0
  248. package/dist/native/renderers/form-contract.js +1 -0
  249. package/dist/native/renderers/index.js +1 -0
  250. package/dist/native/theme/contracts.js +1 -0
  251. package/dist/native/theme/index.js +1 -0
  252. package/dist/native/theme/runtime-resolvers.js +1 -0
  253. package/dist/native/theme/runtime.js +1 -0
  254. package/dist/native/theme/tailwind-config.js +1 -0
  255. package/dist/native/theme/tailwind-css.js +9 -0
  256. package/dist/native/theme/tailwind-variables.js +1 -0
  257. package/dist/native/theme/tailwind.js +1 -0
  258. package/dist/native/theme/tokenBridge.js +1 -0
  259. package/dist/native/theme/tokens.js +1 -0
  260. package/dist/native/theme/variants.js +1 -0
  261. package/dist/native/types/nativewind-env.d.js +0 -0
  262. package/dist/native/types/navigation.js +0 -0
  263. package/dist/native/typography.js +1 -0
  264. package/dist/renderers/form-contract/renderer.js +1 -1
  265. package/dist/renderers/form-contract/shell.d.ts +5 -0
  266. package/dist/renderers/form-contract/shell.js +1 -1
  267. package/dist/typography.d.ts +1 -0
  268. package/dist/typography.js +1 -0
  269. package/package.json +3052 -22
  270. package/dist/browser/components/atoms/ErrorState.mobile.js +0 -1
  271. package/dist/browser/components/visualization/VisualizationCard.mobile.js +0 -1
  272. package/dist/components/agent/ApprovalQueue.mobile.js +0 -1
  273. package/dist/components/atoms/Button.mobile.js +0 -1
  274. package/dist/components/atoms/ButtonLink.mobile.js +0 -1
  275. package/dist/components/atoms/Cta.mobile.js +0 -1
  276. package/dist/components/atoms/ErrorState.mobile.js +0 -1
  277. package/dist/components/atoms/Input.mobile.js +0 -1
  278. package/dist/components/atoms/LoaderCircular.mobile.js +0 -1
  279. package/dist/components/atoms/Textarea.mobile.js +0 -1
  280. package/dist/components/data-table/DataTable.mobile.js +0 -1
  281. package/dist/components/data-table/DataTableToolbar.mobile.js +0 -1
  282. package/dist/components/data-view/DataViewRenderer.mobile.js +0 -1
  283. package/dist/components/data-view/DataViewTable.mobile.js +0 -1
  284. package/dist/components/forms/controls/Autocomplete.mobile.js +0 -1
  285. package/dist/components/forms/controls/ChoiceControls.mobile.js +0 -1
  286. package/dist/components/forms/controls/Combobox.mobile.js +0 -1
  287. package/dist/components/forms/controls/DateTimeControls.mobile.js +0 -1
  288. package/dist/components/forms/controls/Field.mobile.js +0 -1
  289. package/dist/components/forms/controls/InputGroup.mobile.js +0 -1
  290. package/dist/components/forms/controls/InputOTP.mobile.js +0 -1
  291. package/dist/components/forms/controls/LoadingButton.mobile.js +0 -1
  292. package/dist/components/forms/controls/NativeSelect.mobile.js +0 -1
  293. package/dist/components/forms/controls/Select.mobile.js +0 -1
  294. package/dist/components/layout/Stack.mobile.js +0 -1
  295. package/dist/components/molecules/FiltersToolbar.mobile.js +0 -1
  296. package/dist/components/molecules/LoaderBlock.mobile.js +0 -1
  297. package/dist/components/molecules/SkeletonBlock/index.mobile.js +0 -1
  298. package/dist/components/molecules/SkeletonCircle/index.mobile.js +0 -1
  299. package/dist/components/molecules/SkeletonList/index.mobile.js +0 -1
  300. package/dist/components/native/BottomTabs.mobile.js +0 -1
  301. package/dist/components/native/FlatListScreen.mobile.js +0 -1
  302. package/dist/components/native/SheetMenu.mobile.js +0 -1
  303. package/dist/components/organisms/AppHeader.mobile.js +0 -1
  304. package/dist/components/organisms/EmptyDataList.mobile.js +0 -1
  305. package/dist/components/organisms/Header.mobile.js +0 -1
  306. package/dist/components/organisms/ListTablePage.mobile.js +0 -1
  307. package/dist/components/organisms/PageHeaderResponsive.mobile.js +0 -1
  308. package/dist/components/templates/lists/ListPageTemplate/index.mobile.js +0 -1
  309. package/dist/components/visualization/ComparisonView.mobile.js +0 -1
  310. package/dist/components/visualization/TimelineView.mobile.js +0 -1
  311. package/dist/components/visualization/VisualizationCard.mobile.js +0 -1
  312. package/dist/components/visualization/VisualizationGrid.mobile.js +0 -1
  313. package/dist/components/visualization/VisualizationRenderer.mobile.js +0 -1
  314. package/dist/platform/useColorScheme.mobile.js +0 -1
  315. package/dist/platform/useReducedMotion.mobile.js +0 -1
  316. package/dist/platform/useResponsive.mobile.js +0 -1
  317. /package/dist/components/agent/{ApprovalQueue.mobile.d.ts → ApprovalQueue.native.d.ts} +0 -0
  318. /package/dist/components/atoms/{Button.mobile.d.ts → Button.native.d.ts} +0 -0
  319. /package/dist/components/atoms/{Cta.mobile.d.ts → Cta.native.d.ts} +0 -0
  320. /package/dist/components/atoms/{ErrorState.mobile.d.ts → ErrorState.native.d.ts} +0 -0
  321. /package/dist/components/atoms/{Input.mobile.d.ts → Input.native.d.ts} +0 -0
  322. /package/dist/components/atoms/{LoaderCircular.mobile.d.ts → LoaderCircular.native.d.ts} +0 -0
  323. /package/dist/components/atoms/{Textarea.mobile.d.ts → Textarea.native.d.ts} +0 -0
  324. /package/dist/components/data-table/{DataTable.mobile.d.ts → DataTable.native.d.ts} +0 -0
  325. /package/dist/components/data-table/{DataTableToolbar.mobile.d.ts → DataTableToolbar.native.d.ts} +0 -0
  326. /package/dist/components/data-view/{DataViewRenderer.mobile.d.ts → DataViewRenderer.native.d.ts} +0 -0
  327. /package/dist/components/data-view/{DataViewTable.mobile.d.ts → DataViewTable.native.d.ts} +0 -0
  328. /package/dist/components/forms/controls/{Autocomplete.mobile.d.ts → Autocomplete.native.d.ts} +0 -0
  329. /package/dist/components/forms/controls/{ChoiceControls.mobile.d.ts → ChoiceControls.native.d.ts} +0 -0
  330. /package/dist/components/forms/controls/{Combobox.mobile.d.ts → Combobox.native.d.ts} +0 -0
  331. /package/dist/components/forms/controls/{DateTimeControls.mobile.d.ts → DateTimeControls.native.d.ts} +0 -0
  332. /package/dist/components/forms/controls/{DropdownMenu.mobile.d.ts → DropdownMenu.native.d.ts} +0 -0
  333. /package/dist/components/forms/controls/{Field.mobile.d.ts → Field.native.d.ts} +0 -0
  334. /package/dist/components/forms/controls/{InputGroup.mobile.d.ts → InputGroup.native.d.ts} +0 -0
  335. /package/dist/components/forms/controls/{InputOTP.mobile.d.ts → InputOTP.native.d.ts} +0 -0
  336. /package/dist/components/forms/controls/{LoadingButton.mobile.d.ts → LoadingButton.native.d.ts} +0 -0
  337. /package/dist/components/forms/controls/{NativeSelect.mobile.d.ts → NativeSelect.native.d.ts} +0 -0
  338. /package/dist/components/forms/controls/{Select.mobile.d.ts → Select.native.d.ts} +0 -0
  339. /package/dist/components/layout/{Stack.mobile.d.ts → Stack.native.d.ts} +0 -0
  340. /package/dist/components/molecules/{FiltersToolbar.mobile.d.ts → FiltersToolbar.native.d.ts} +0 -0
  341. /package/dist/components/molecules/{LoaderBlock.mobile.d.ts → LoaderBlock.native.d.ts} +0 -0
  342. /package/dist/components/molecules/SkeletonBlock/{index.mobile.d.ts → index.native.d.ts} +0 -0
  343. /package/dist/components/molecules/SkeletonCircle/{index.mobile.d.ts → index.native.d.ts} +0 -0
  344. /package/dist/components/molecules/SkeletonList/{index.mobile.d.ts → index.native.d.ts} +0 -0
  345. /package/dist/components/native/{BottomTabs.mobile.d.ts → BottomTabs.native.d.ts} +0 -0
  346. /package/dist/components/native/{FlatListScreen.mobile.d.ts → FlatListScreen.native.d.ts} +0 -0
  347. /package/dist/components/native/{SheetMenu.mobile.d.ts → SheetMenu.native.d.ts} +0 -0
  348. /package/dist/components/organisms/{AppSidebar.mobile.d.ts → AppSidebar.native.d.ts} +0 -0
  349. /package/dist/components/organisms/{EmptyDataList.mobile.d.ts → EmptyDataList.native.d.ts} +0 -0
  350. /package/dist/components/organisms/{Header.mobile.d.ts → Header.native.d.ts} +0 -0
  351. /package/dist/components/organisms/{ListTablePage.mobile.d.ts → ListTablePage.native.d.ts} +0 -0
  352. /package/dist/components/organisms/{PageHeaderResponsive.mobile.d.ts → PageHeaderResponsive.native.d.ts} +0 -0
  353. /package/dist/components/templates/lists/ListPageTemplate/{index.mobile.d.ts → index.native.d.ts} +0 -0
  354. /package/dist/components/visualization/{ComparisonView.mobile.d.ts → ComparisonView.native.d.ts} +0 -0
  355. /package/dist/components/visualization/{TimelineView.mobile.d.ts → TimelineView.native.d.ts} +0 -0
  356. /package/dist/components/visualization/{VisualizationCard.mobile.d.ts → VisualizationCard.native.d.ts} +0 -0
  357. /package/dist/components/visualization/{VisualizationGrid.mobile.d.ts → VisualizationGrid.native.d.ts} +0 -0
  358. /package/dist/components/visualization/{VisualizationRenderer.mobile.d.ts → VisualizationRenderer.native.d.ts} +0 -0
  359. /package/dist/{browser/components/agent/ApprovalQueue.mobile.js → native/components/agent/ApprovalQueue.native.js} +0 -0
  360. /package/dist/{browser/components/atoms/Button.mobile.js → native/components/atoms/Button.native.js} +0 -0
  361. /package/dist/{browser/components/atoms/Cta.mobile.js → native/components/atoms/Cta.native.js} +0 -0
  362. /package/dist/{browser/components/atoms/Input.mobile.js → native/components/atoms/Input.native.js} +0 -0
  363. /package/dist/{browser/components/atoms/LoaderCircular.mobile.js → native/components/atoms/LoaderCircular.native.js} +0 -0
  364. /package/dist/{browser/components/atoms/Textarea.mobile.js → native/components/atoms/Textarea.native.js} +0 -0
  365. /package/dist/{browser/components/data-table/DataTable.mobile.js → native/components/data-table/DataTable.native.js} +0 -0
  366. /package/dist/{browser/components/data-view/DataViewRenderer.mobile.js → native/components/data-view/DataViewRenderer.native.js} +0 -0
  367. /package/dist/{browser/components/data-view/DataViewTable.mobile.js → native/components/data-view/DataViewTable.native.js} +0 -0
  368. /package/dist/{browser/components/forms/controls/Autocomplete.mobile.js → native/components/forms/controls/Autocomplete.native.js} +0 -0
  369. /package/dist/{browser/components/forms/controls/ChoiceControls.mobile.js → native/components/forms/controls/ChoiceControls.native.js} +0 -0
  370. /package/dist/{browser/components/forms/controls/Combobox.mobile.js → native/components/forms/controls/Combobox.native.js} +0 -0
  371. /package/dist/{browser/components/forms/controls/DateTimeControls.mobile.js → native/components/forms/controls/DateTimeControls.native.js} +0 -0
  372. /package/dist/{browser/components/forms/controls/DropdownMenu.mobile.js → native/components/forms/controls/DropdownMenu.native.js} +0 -0
  373. /package/dist/{browser/components/forms/controls/Field.mobile.js → native/components/forms/controls/Field.native.js} +0 -0
  374. /package/dist/{browser/components/forms/controls/InputGroup.mobile.js → native/components/forms/controls/InputGroup.native.js} +0 -0
  375. /package/dist/{browser/components/forms/controls/InputOTP.mobile.js → native/components/forms/controls/InputOTP.native.js} +0 -0
  376. /package/dist/{browser/components/forms/controls/LoadingButton.mobile.js → native/components/forms/controls/LoadingButton.native.js} +0 -0
  377. /package/dist/{browser/components/forms/controls/NativeSelect.mobile.js → native/components/forms/controls/NativeSelect.native.js} +0 -0
  378. /package/dist/{browser/components/forms/controls/Select.mobile.js → native/components/forms/controls/Select.native.js} +0 -0
  379. /package/dist/{browser/components/layout/Stack.mobile.js → native/components/layout/Stack.native.js} +0 -0
  380. /package/dist/{browser/components/organisms/AppSidebar.mobile.js → native/components/molecules/CodeBlock/types.js} +0 -0
  381. /package/dist/{components/organisms/AppSidebar.mobile.js → native/components/molecules/CommandTabs/types.js} +0 -0
  382. /package/dist/{browser/components/molecules/FiltersToolbar.mobile.js → native/components/molecules/FiltersToolbar.native.js} +0 -0
  383. /package/dist/{browser/components/molecules/SkeletonBlock/index.mobile.js → native/components/molecules/SkeletonBlock/index.native.js} +0 -0
  384. /package/dist/{browser/components/molecules/SkeletonCircle/index.mobile.js → native/components/molecules/SkeletonCircle/index.native.js} +0 -0
  385. /package/dist/{browser/components/molecules/SkeletonList/index.mobile.js → native/components/molecules/SkeletonList/index.native.js} +0 -0
  386. /package/dist/{browser/components/native/BottomTabs.mobile.js → native/components/native/BottomTabs.native.js} +0 -0
  387. /package/dist/{browser/components/native/FlatListScreen.mobile.js → native/components/native/FlatListScreen.native.js} +0 -0
  388. /package/dist/{browser/components/native/SheetMenu.mobile.js → native/components/native/SheetMenu.native.js} +0 -0
  389. /package/dist/{browser/components/organisms/EmptyDataList.mobile.js → native/components/organisms/EmptyDataList.native.js} +0 -0
  390. /package/dist/{browser/components/organisms/Header.mobile.js → native/components/organisms/Header.native.js} +0 -0
  391. /package/dist/{browser/components/organisms/ListTablePage.mobile.js → native/components/organisms/ListTablePage.native.js} +0 -0
  392. /package/dist/{browser/components/visualization/VisualizationGrid.mobile.js → native/components/visualization/VisualizationGrid.native.js} +0 -0
  393. /package/dist/{browser/components/visualization/VisualizationRenderer.mobile.js → native/components/visualization/VisualizationRenderer.native.js} +0 -0
  394. /package/dist/{browser/platform/useColorScheme.mobile.js → native/platform/useColorScheme.native.js} +0 -0
  395. /package/dist/{browser/platform/useReducedMotion.mobile.js → native/platform/useReducedMotion.native.js} +0 -0
  396. /package/dist/{browser/platform/useResponsive.mobile.js → native/platform/useResponsive.native.js} +0 -0
  397. /package/dist/platform/{useColorScheme.mobile.d.ts → useColorScheme.native.d.ts} +0 -0
  398. /package/dist/platform/{useReducedMotion.mobile.d.ts → useReducedMotion.native.d.ts} +0 -0
  399. /package/dist/platform/{useResponsive.mobile.d.ts → useResponsive.native.d.ts} +0 -0
@@ -1 +0,0 @@
1
- import{jsx as t,jsxs as l}from"react/jsx-runtime";import*as N from"react";import{Linking as g,Text as n,View as c}from"react-native";import{Button as i}from"../atoms/Button.mobile";export function ErrorState({title:m="Something went wrong",description:o,icon:p,onRetry:r,retryLabel:s="Retry",supportHref:e,onContactSupport:a,supportLabel:u="Contact support",className:R}){const d=N.useCallback(()=>{if(e)g.openURL(e).catch(()=>{});else a?.()},[e,a]);return l(c,{className:["items-center p-6",R].filter(Boolean).join(" "),children:[p,t(n,{className:"font-medium text-lg",children:m}),o?t(n,{className:"mt-1 text-base text-muted-foreground",children:o}):null,l(c,{className:"mt-3 flex-row items-center gap-2",children:[r?t(i,{onPress:r,children:s}):null,t(i,{variant:"ghost",onPress:d,children:u})]})]})}export default ErrorState;
@@ -1 +0,0 @@
1
- import{jsx as q,jsxs as J}from"react/jsx-runtime";import{Card as U,CardContent as W,CardDescription as X,CardFooter as Y,CardHeader as Z,CardTitle as $}from"@contractspec/lib.ui-kit/ui/card";import{cn as k}from"@contractspec/lib.ui-kit/ui/utils";import{resolveTranslationNode as F,resolveTranslationString as H,useDesignSystemTranslation as b}from"../../i18n/translation";import{VisualizationRenderer as z}from"./VisualizationRenderer.mobile";export function VisualizationCard({spec:E,data:K,title:L,description:M,footer:G,className:O,contentClassName:P,height:Q}){const I=b(),A=L??F(E.meta.title,I),B=M??H(E.meta.description,I);return J(U,{className:O,children:[A||B?J(Z,{children:[A?q($,{children:A}):null,B?q(X,{children:B}):null]}):null,q(W,{className:k(A||B?"pt-0":"",P),children:q(z,{data:K,height:Q,spec:E})}),G?q(Y,{children:G}):null]})}
@@ -1 +0,0 @@
1
- import{jsx as E,jsxs as C}from"react/jsx-runtime";import{useContractTable as W}from"@contractspec/lib.presentation-runtime-react";import{Badge as X}from"@contractspec/lib.ui-kit/ui/badge";import{HStack as Y}from"@contractspec/lib.ui-kit/ui/stack";import{Text as L}from"@contractspec/lib.ui-kit/ui/text";import{Button as O}from"../atoms/Button";import{DataTable as Z}from"../data-table/DataTable";export function ApprovalQueue({title:F="Approvals",description:G="Requests escalated by AI agents",requests:I,onApprove:J,onReject:K,className:P,emptyState:Q=E(L,{className:"text-muted-foreground",children:"Nothing waiting for review."})}){const U=W({data:I,columns:[{id:"agent",header:"Agent",accessor:(z)=>z.agentId,cell:({item:z})=>E(L,{className:"font-medium",children:z.agentId})},{id:"reason",header:"Reason",accessor:(z)=>z.reason,cell:({item:z})=>E(L,{className:"max-w-sm",children:z.reason})},{id:"tenant",header:"Tenant",accessor:(z)=>z.tenantId??"\u2014"},{id:"requested",header:"Requested",accessor:(z)=>h(z.requestedAt)},{id:"status",header:"Status",accessor:(z)=>z.status,cell:({item:z})=>E(X,{variant:$(z.status),children:z.status})},{id:"actions",header:"Actions",canSort:!1,canHide:!1,canResize:!1,cell:({item:z})=>C(Y,{gap:"sm",children:[E(O,{size:"sm",variant:"secondary",disabled:z.status!=="pending",onPress:()=>K?.(z),children:"Reject"}),E(O,{size:"sm",disabled:z.status!=="pending",onPress:()=>J?.(z),children:"Approve"})]})}]});return E(Z,{controller:U,title:F,description:G,className:P,emptyState:Q})}function $(F){switch(F){case"approved":return"default";case"rejected":return"destructive";default:return"secondary"}}function h(F){const G=new Intl.RelativeTimeFormat(void 0,{numeric:"auto"}),I=Math.round((Date.now()-new Date(F).getTime())/60000);if(Math.abs(I)<60)return G.format(-I,"minute");const J=Math.round(I/60);if(Math.abs(J)<24)return G.format(-J,"hour");const K=Math.round(J/24);return G.format(-K,"day")}
@@ -1 +0,0 @@
1
- import{jsx as q,jsxs as L}from"react/jsx-runtime";import{Button as H}from"@contractspec/lib.ui-kit/ui/button";import{HStack as S}from"@contractspec/lib.ui-kit/ui/stack";import{Text as k}from"@contractspec/lib.ui-kit/ui/text";import{ActivityIndicator as G}from"react-native";import{useThemedPrimitive as A,useTranslatedNode as B,useTranslatedText as K}from"../primitives/themed";export function Button({children:J,loading:C,loadingText:M,spinnerPlacement:E="start",disabled:O,className:Q,componentKey:R,themeVariant:U,labelI18n:W,ariaLabelI18n:X,...z}){const F=A({defaultComponentKey:"Button",componentKey:R,themeVariant:U,className:Q}),Y=B(),Z=K(),$=Boolean(O||C),D=C?L(S,{className:"items-center gap-x-2",children:[E==="start"?q(G,{size:"small",color:z.variant==="outline"?"#6b7280":"#ffffff"}):null,q(k,{children:M||"Loading\u2026"}),E==="end"?q(G,{size:"small",color:z.variant==="outline"?"#6b7280":"#ffffff"}):null]}):Y(W??J);return q(H,{...F.props,disabled:$,className:F.className,accessibilityLabel:Z(X),...z,children:D})}export default Button;
@@ -1 +0,0 @@
1
- var {require}=import.meta;import{jsx as U}from"react/jsx-runtime";import*as S from"react";import{Linking as K}from"react-native";import{Button as T}from"./Button.mobile";export function ButtonLink({href:q,replace:D,loading:F,disabled:G,onPressIn:M,onPressOut:N,...H}){const J=Boolean(G||F),Q=S.useCallback(()=>{if(J)return;try{const A=require("expo-router");if(A?.Link){const z=A.router??A.useRouter?.();if(z?.replace&&D)z.replace(q);else if(z?.push)z.push(q);else K.openURL(q);return}}catch{}K.openURL(q)},[J,q,D]);return U(T,{...H,onPress:Q,loading:F,disabled:G,onPressIn:M,onPressOut:N,children:H.children})}export default ButtonLink;
@@ -1 +0,0 @@
1
- var {require}=import.meta;import{jsx as K}from"react/jsx-runtime";import{Button as J}from"./Button";export function Cta({capture:D,ctaName:q,size:E="touch",onClick:F,children:G,ref:H,...I}){return K(J,{size:E,onPress:()=>{try{if(q){if(D)D(q);let v;try{v=require("posthog-react-native").default??require("posthog-react-native")}catch{}if(v&&typeof v.capture==="function")v.capture("cta_click",{cta:q});else{const A=globalThis.posthog;if(A&&typeof A.capture==="function")A.capture("cta_click",{cta:q})}}}catch{}F?.()},ref:H,...I,children:G})}
@@ -1 +0,0 @@
1
- import{jsx as t,jsxs as l}from"react/jsx-runtime";import*as N from"react";import{Linking as g,Text as n,View as c}from"react-native";import{Button as i}from"../atoms/Button.mobile";export function ErrorState({title:m="Something went wrong",description:o,icon:p,onRetry:r,retryLabel:s="Retry",supportHref:e,onContactSupport:a,supportLabel:u="Contact support",className:R}){const d=N.useCallback(()=>{if(e)g.openURL(e).catch(()=>{});else a?.()},[e,a]);return l(c,{className:["items-center p-6",R].filter(Boolean).join(" "),children:[p,t(n,{className:"font-medium text-lg",children:m}),o?t(n,{className:"mt-1 text-base text-muted-foreground",children:o}):null,l(c,{className:"mt-3 flex-row items-center gap-2",children:[r?t(i,{onPress:r,children:s}):null,t(i,{variant:"ghost",onPress:d,children:u})]})]})}export default ErrorState;
@@ -1 +0,0 @@
1
- import{jsx as C}from"react/jsx-runtime";import{Input as _}from"@contractspec/lib.ui-kit/ui/input";import{mapKeyboardToNative as j}from"../../lib/keyboard";import{useThemedTextField as B}from"../primitives/control";export function Input({value:z,defaultValue:A,onChange:D,onSubmit:E,onFocus:G,onBlur:H,placeholder:J,disabled:M,readOnly:P,maxLength:Q,className:R,keyboard:U,componentKey:W,themeVariant:X,placeholderI18n:Y,ariaLabelI18n:Z,...$}){const w=j(U),q=B({defaultComponentKey:"Input",componentKey:W,themeVariant:X,className:R,placeholder:J,placeholderI18n:Y,ariaLabelI18n:Z});return C(_,{...q.themed.props,...$,className:q.themed.className,value:z,defaultValue:A,onChangeText:D,onSubmitEditing:E,onFocus:G,onBlur:H,placeholder:q.placeholder,accessibilityLabel:q.ariaLabel,editable:!M&&!P,maxLength:Q,...w})}export default Input;
@@ -1 +0,0 @@
1
- import{jsx as t,jsxs as n}from"react/jsx-runtime";import{ActivityIndicator as l,Text as o,View as i}from"react-native";function m(e){switch(e){case"sm":return"small";case"lg":return"large";case"md":default:return"small"}}export function LoaderCircular({size:e="md",label:r,className:a}){return n(i,{className:["inline-flex flex-row items-center gap-2",a].filter(Boolean).join(" "),children:[t(l,{size:m(e)}),r?t(o,{className:"text-base text-muted-foreground",children:r}):null]})}export default LoaderCircular;
@@ -1 +0,0 @@
1
- import{jsx as C}from"react/jsx-runtime";import{Textarea as _}from"@contractspec/lib.ui-kit/ui/textarea";import{mapKeyboardToNative as j}from"../../lib/keyboard";import{useThemedTextField as B}from"../primitives/control";export function Textarea({value:z,defaultValue:A,onChange:D,onSubmit:E,onFocus:G,onBlur:H,placeholder:J,disabled:M,readOnly:P,maxLength:Q,className:R,keyboard:U,componentKey:W,themeVariant:X,placeholderI18n:Y,ariaLabelI18n:Z,...$}){const w=j(U),q=B({defaultComponentKey:"Textarea",componentKey:W,themeVariant:X,className:R,placeholder:J,placeholderI18n:Y,ariaLabelI18n:Z});return C(_,{...q.themed.props,...$,className:q.themed.className,value:z,defaultValue:A,onChangeText:D,onSubmitEditing:E,onFocus:G,onBlur:H,placeholder:q.placeholder,accessibilityLabel:q.ariaLabel,editable:!M&&!P,maxLength:Q,...w})}export default Textarea;
@@ -1 +0,0 @@
1
- import{jsx as q,jsxs as E}from"react/jsx-runtime";import{Card as X,CardContent as Y,CardDescription as Z,CardHeader as $,CardTitle as K}from"@contractspec/lib.ui-kit/ui/card";import{DataTable as V}from"@contractspec/lib.ui-kit/ui/data-table";import{HStack as v,VStack as H}from"@contractspec/lib.ui-kit/ui/stack";import{resolveTranslationNode as I,useDesignSystemTranslation as P}from"../../i18n/translation";export function DataTable({controller:J,title:z,description:B,className:L,headerActions:F,toolbar:M,footer:O,emptyState:Q,loading:U,onRowPress:W}){const G=P();return E(X,{className:L,children:[z||B||F?q($,{children:E(v,{justify:"between",align:"start",children:[E(H,{gap:"xs",children:[z?q(K,{children:I(z,G)}):null,B?q(Z,{children:I(B,G)}):null]}),F]})}):null,q(Y,{children:q(V,{controller:J,toolbar:M,footer:O,emptyState:Q,loading:U,onRowPress:W})})]})}
@@ -1 +0,0 @@
1
- import{jsx as A,jsxs as z}from"react/jsx-runtime";import{HStack as $}from"@contractspec/lib.ui-kit/ui/stack";import{Text as f}from"@contractspec/lib.ui-kit/ui/text";import{Button as k}from"../atoms/Button";import{FiltersToolbar as B}from"../molecules/FiltersToolbar.mobile";import{getHiddenDataColumns as p,showHiddenDataColumns as w}from"./DataTableToolbar.shared";export function DataTableToolbar({controller:q,className:J,searchPlaceholder:K,searchValue:L,onSearchChange:O,onSearchSubmit:Q,debounceMs:R,activeChips:U=[],onClearAll:W,actionsStart:X,actionsEnd:Y,selectionSummary:G}){const I=p(q),Z=G===void 0&&q.selectionMode!=="none"?z(f,{className:"text-muted-foreground text-sm",children:["Selected ",q.selectedRowIds.length]}):G;return A(B,{className:J,searchPlaceholder:K,searchValue:L,onSearchChange:O,onSearchSubmit:Q,debounceMs:R,activeChips:U,onClearAll:W,right:z($,{className:"flex flex-wrap items-center justify-end gap-2",children:[Z,I.length?z(k,{variant:"outline",size:"sm",onPress:()=>w(q),children:["Show ",I.length," Hidden"]}):null,Y]}),children:X})}
@@ -1 +0,0 @@
1
- import{jsx as G,jsxs as d,Fragment as w}from"react/jsx-runtime";import{Pagination as D}from"@contractspec/lib.ui-kit/ui/atoms/Pagination";import{VStack as j}from"@contractspec/lib.ui-kit/ui/stack";import{Text as _}from"@contractspec/lib.ui-kit/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(w,{children:u});return d(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,...b}=J;P?.(b)}}})):[],onClearAll:J&&Object.keys(J).length>0?()=>P?.({}):void 0,right:E.view.kind==="table"?void 0:O}),u,H&&H.total>0?G(D,{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}):null]})}
@@ -1 +0,0 @@
1
- import{jsx as E,jsxs as D}from"react/jsx-runtime";import{useDataViewTable as A}from"@contractspec/lib.presentation-runtime-react";import{HStack as F,VStack as h}from"@contractspec/lib.ui-kit/ui/stack";import{Text as X}from"@contractspec/lib.ui-kit/ui/text";import*as C from"react";import{resolveTranslationString as W,useDesignSystemTranslation as K}from"../../i18n/translation";import{DataTable as R}from"../data-table/DataTable";import{DataViewFormattedValue as Y,getAtPath as b}from"./utils";export function DataViewTable({spec:q,items:J,className:L,onRowClick:G,toolbar:O,loading:Z,emptyState:$,headerActions:B,footer:H}){const Q=K();if(q.view.kind!=="table")throw Error(`DataViewTable received view kind "${q.view.kind}", expected "table".`);const M=q.view,P=C.useMemo(()=>(M.rowExpansion?.fields??[]).map((z)=>M.fields.find((I)=>I.key===z)).filter((z)=>Boolean(z)),[M.fields,M.rowExpansion?.fields]),N=A({spec:q,data:J,renderValue:({value:z,field:I})=>E(Y,{value:z,format:I.format}),renderExpandedContent:P.length>0?({item:z,fields:I})=>E(h,{gap:"sm",className:"py-2",children:I.map((U)=>D(F,{justify:"between",align:"start",children:[E(X,{className:"font-medium text-muted-foreground text-sm",children:W(U.label,Q)}),E(X,{className:"text-right text-sm",children:E(DisplayValue,{item:z,fields:I,fieldKey:U.key})})]},U.key))}):void 0});return E(R,{controller:N,className:L,title:W(q.meta.title,Q),description:W(q.meta.description,Q),toolbar:O,loading:Z,headerActions:B,emptyState:$,footer:H,onRowPress:G?(z)=>G(z.original):void 0})}function g(q,J){return q.find((L)=>L.key===J)}export function DisplayValue({item:q,fields:J,fieldKey:L}){const G=g(J,L);if(!G)return"";const O=b(q,G.dataPath);return E(Y,{value:O,format:G.format})}
@@ -1 +0,0 @@
1
- import{jsx as A,jsxs as S}from"react/jsx-runtime";import{Text as J}from"@contractspec/lib.ui-kit/ui/text";import{Button as U}from"../../atoms/Button";import{Input as R}from"../../atoms/Input";import{HStack as B,VStack as W}from"../../layout/Stack";import{useThemedPrimitive as I,useTranslatedText as k}from"../../primitives/themed";function X(D){return typeof D==="string"?D:String(D??"")}export function Autocomplete({query:D,options:L,selectedOptions:M,onQueryChange:Y,onSelectOption:Z,onRemoveOption:$,multiple:H,placeholder:P,placeholderI18n:g,readOnly:F,disabled:G,className:q,componentKey:C,themeVariant:K,emptyText:N="No results found."}){const E=k(),Q=I({defaultComponentKey:"Autocomplete",componentKey:C,themeVariant:K,className:q});return S(W,{gap:"sm",className:Q.className,children:[A(R,{value:D,onChange:(z)=>{if(typeof z==="string")Y?.(z)},placeholder:E(g??P),disabled:G||F}),A(W,{gap:"xs",children:L.length?L.map((z)=>A(U,{variant:"ghost",onPress:()=>Z?.(z),disabled:G||z.disabled||F,children:A(J,{children:E(z.labelI18n)})},X(z.value))):A(J,{children:E(N)})}),M.length?A(B,{gap:"sm",wrap:"wrap",children:M.map((z)=>A(U,{variant:"outline",size:"sm",onPress:()=>$?.(z),disabled:!H||F||G,children:A(J,{children:E(z.labelI18n)})},`selected-${X(z.value)}`))}):null]})}
@@ -1 +0,0 @@
1
- import{jsx as A,jsxs as R}from"react/jsx-runtime";import{Checkbox as Y}from"@contractspec/lib.ui-kit/ui/checkbox";import{Label as Z}from"@contractspec/lib.ui-kit/ui/label";import{RadioGroup as $,RadioGroupItem}from"@contractspec/lib.ui-kit/ui/radio-group";import{Switch as H}from"@contractspec/lib.ui-kit/ui/switch";import{HStack as L,VStack as G}from"../../layout/Stack";import{optionValue as W}from"../../primitives/control";import{useThemedPrimitive as Q,useTranslatedText as P}from"../../primitives/themed";export function Checkbox({componentKey:B,themeVariant:z,className:D,checked:E,onCheckedChange:F,...J}){const q=Q({defaultComponentKey:"Checkbox",componentKey:B,themeVariant:z,className:D});return A(Y,{...q.props,...J,className:q.className,checked:Boolean(E),onCheckedChange:(M)=>F?.(Boolean(M))})}export function Switch({componentKey:B,themeVariant:z,className:D,checked:E,onCheckedChange:F,...J}){const q=Q({defaultComponentKey:"Switch",componentKey:B,themeVariant:z,className:D});return A(H,{...q.props,...J,className:q.className,checked:Boolean(E),onCheckedChange:(M)=>F?.(Boolean(M))})}export function RadioGroup({options:B,value:z,onValueChange:D,disabled:E,componentKey:F,themeVariant:J,className:q}){const M=P(),X=Q({defaultComponentKey:"RadioGroup",componentKey:F,themeVariant:J,className:q});return A($,{value:z==null?"":W(z),onValueChange:(O)=>D?.(O),disabled:E,className:X.className,children:A(G,{gap:"sm",children:B?.map((O)=>{const U=W(O.value);return R(L,{gap:"sm",align:"center",children:[A(RadioGroupItem,{value:U,disabled:O.disabled}),A(Z,{children:M(O.labelI18n)})]},U)})})})}export{RadioGroupItem};
@@ -1 +0,0 @@
1
- export{Autocomplete as Combobox}from"./Autocomplete";
@@ -1 +0,0 @@
1
- import{jsx as J}from"react/jsx-runtime";import{DatePicker as Q}from"@contractspec/lib.ui-kit/ui/date-picker";import{DateRangePicker as S}from"@contractspec/lib.ui-kit/ui/date-range-picker";import{DateTimePicker as U}from"@contractspec/lib.ui-kit/ui/datetime-picker";import{TimePicker as W}from"@contractspec/lib.ui-kit/ui/time-picker";import{useThemedPrimitive as H,useTranslatedText as L}from"../../primitives/themed";export function DatePicker({componentKey:z,themeVariant:A,placeholder:B,placeholderI18n:C,className:q,...F}){const G=L(),E=H({defaultComponentKey:"DatePicker",componentKey:z,themeVariant:A,className:q});return J(Q,{...E.props,...F,className:E.className,placeholder:G(C??B)})}export function TimePicker({componentKey:z,themeVariant:A,placeholder:B,placeholderI18n:C,className:q,...F}){const G=L(),E=H({defaultComponentKey:"TimePicker",componentKey:z,themeVariant:A,className:q});return J(W,{...E.props,...F,className:E.className,placeholder:G(C??B)})}export function DateTimePicker({componentKey:z,themeVariant:A,datePlaceholder:B,timePlaceholder:C,datePlaceholderI18n:q,timePlaceholderI18n:F,className:G,...E}){const M=L(),O=H({defaultComponentKey:"DateTimePicker",componentKey:z,themeVariant:A,className:G});return J(U,{...O.props,...E,className:O.className,datePlaceholder:M(q??B),timePlaceholder:M(F??C)})}export function DateRangePicker({componentKey:z,themeVariant:A,className:B,...C}){const q=H({defaultComponentKey:"DateRangePicker",componentKey:z,themeVariant:A,className:B});return J(S,{...q.props,...C,className:q.className})}
@@ -1 +0,0 @@
1
- export{Field,FieldContent,FieldDescription,FieldError,FieldGroup,FieldLabel,FieldLegend,FieldSeparator,FieldSet}from"./Field";
@@ -1 +0,0 @@
1
- export{Text as InputGroupText}from"@contractspec/lib.ui-kit/ui/text";export{Button as InputGroupButton}from"../../atoms/Button";export{Input as InputGroupInput}from"../../atoms/Input";export{Textarea as InputGroupTextarea}from"../../atoms/Textarea";export{HStack as InputGroup,HStack as InputGroupAddon}from"../../layout/Stack";
@@ -1 +0,0 @@
1
- export{Input as InputOTP}from"../../atoms/Input";export{Box as InputOTPSlot,Box as InputOTPSeparator,HStack as InputOTPGroup}from"../../layout/Stack";
@@ -1 +0,0 @@
1
- import{jsx as S}from"react/jsx-runtime";import{LoadingButton as M}from"@contractspec/lib.ui-kit/ui/loading-button";import{useThemedPrimitive as O,useTranslatedNode as Q,useTranslatedText as R}from"../../primitives/themed";export function LoadingButton({componentKey:z,themeVariant:A,className:C,children:D,loadingText:E,labelI18n:F,...G}){const q=O({defaultComponentKey:"LoadingButton",componentKey:z,themeVariant:A,className:C}),H=Q(),J=R();return S(M,{...q.props,...G,className:q.className,loadingText:J(E),children:H(F??D)})}
@@ -1 +0,0 @@
1
- export{Select as NativeSelect,SelectGroup as NativeSelectOptGroup,SelectItem as NativeSelectOption}from"./Select";
@@ -1 +0,0 @@
1
- import{jsx as B,jsxs as $}from"react/jsx-runtime";import{Select as X,SelectContent,SelectGroup,SelectItem,SelectTrigger,SelectValue}from"@contractspec/lib.ui-kit/ui/select";import{useThemedPrimitive as Y,useTranslatedText as Z}from"../../primitives/themed";function A(z){return typeof z==="string"?z:String(z??"")}export function Select({options:z,value:D,onChange:F,placeholder:H,disabled:J,className:L,componentKey:M,themeVariant:O,placeholderI18n:Q}){const E=Z(),U=Y({defaultComponentKey:"Select",componentKey:M,themeVariant:O,className:L});return $(X,{value:D==null?void 0:{value:A(D),label:A(D)},onValueChange:(q)=>F?.(q?.value),children:[B(SelectTrigger,{disabled:J,className:U.className,children:B(SelectValue,{placeholder:E(Q??H)??""})}),B(SelectContent,{children:B(SelectGroup,{children:z?.map((q,W)=>B(SelectItem,{value:A(q.value),label:E(q.labelI18n)??A(q.labelI18n),disabled:q.disabled},`${A(q.value)}-${W}`))})})]})}export{SelectContent,SelectGroup,SelectItem,SelectTrigger,SelectValue};
@@ -1 +0,0 @@
1
- import{jsx as E}from"react/jsx-runtime";import{Box as F,HStack as G,VStack as I}from"@contractspec/lib.ui-kit/ui/stack";import{useThemedPrimitive as D}from"../primitives/themed";export function Box({componentKey:q,themeVariant:z,className:A,...C}){const g=D({defaultComponentKey:"Box",componentKey:q,themeVariant:z,className:A});return E(F,{...g.props,...C,className:g.className})}export function HStack({componentKey:q,themeVariant:z,className:A,...C}){const g=D({defaultComponentKey:"HStack",componentKey:q,themeVariant:z,className:A});return E(G,{...g.props,...C,className:g.className})}export function VStack({componentKey:q,themeVariant:z,className:A,...C}){const g=D({defaultComponentKey:"VStack",componentKey:q,themeVariant:z,className:A});return E(I,{...g.props,...C,className:g.className})}
@@ -1 +0,0 @@
1
- import{jsx as E,jsxs as F}from"react/jsx-runtime";import{HStack as L,VStack as P}from"@contractspec/lib.ui-kit/ui/stack";import*as O from"react";import{Button as T}from"../atoms/Button";import{Input as Q}from"../atoms/Input";export function FiltersToolbar({className:Y,children:Z,right:$,searchPlaceholder:I,searchValue:G,onSearchChange:D,onSearchSubmit:N,debounceMs:U=250,activeChips:W=[],onClearAll:J}){const[K,X]=O.useState(G??"");O.useEffect(()=>{X(G??"")},[G]);O.useEffect(()=>{if(!D)return;const z=setTimeout(()=>D(K),U);return()=>clearTimeout(z)},[K,U,D]);return F(P,{className:Y,children:[F(L,{className:"items-center gap-2",children:[D?F(L,{className:"flex-1 items-center gap-2",children:[E(Q,{value:K,onChange:(z)=>X(z.target.value),placeholder:I,keyboard:{kind:"search"}}),E(T,{variant:"outline",onPress:()=>N?.(),children:"Rechercher"})]}):null,Z,$]}),(W.length>0||J)&&F(L,{className:"mt-2 flex flex-wrap items-center gap-2",children:[W.map((z)=>E(T,{size:"sm",variant:"secondary",onPress:z.onRemove,children:z.label},z.key)),J?E(T,{size:"sm",variant:"ghost",onPress:J,children:"Effacer les filtres"}):null]})]})}
@@ -1 +0,0 @@
1
- import{jsx as e,jsxs as m}from"react/jsx-runtime";import{Text as c,View as o}from"react-native";import{LoaderCircular as i}from"../atoms/LoaderCircular.mobile";export function LoaderBlock({label:r,description:t,className:a,size:l="md"}){return e(o,{className:["items-center justify-center p-6",a].filter(Boolean).join(" "),children:m(o,{className:"flex-row items-center gap-3",children:[e(i,{size:l,label:r}),t?e(c,{className:"text-base text-muted-foreground",children:t}):null]})})}export default LoaderBlock;
@@ -1 +0,0 @@
1
- import{jsx as d}from"react/jsx-runtime";import{View as t}from"react-native";export function SkeletonBlock({w:l="w-full",h:e="h-4",rounded:o="md",className:r}){return d(t,{className:[l,e,o==="full"?"rounded-full":o==="lg"?"rounded-lg":o==="sm"?"rounded-xs":"rounded-md","bg-muted",r].filter(Boolean).join(" ")})}export default SkeletonBlock;
@@ -1 +0,0 @@
1
- import{jsx as l}from"react/jsx-runtime";import{View as r}from"react-native";export function SkeletonCircle({size:e=32,sizeClass:o,className:t}){if(o)return l(r,{className:["rounded-full bg-muted",o,t].filter(Boolean).join(" ")});return l(r,{className:["rounded-full bg-muted",t].filter(Boolean).join(" "),style:{width:e,height:e}})}export default SkeletonCircle;
@@ -1 +0,0 @@
1
- import{jsx as e}from"react/jsx-runtime";import{View as o}from"react-native";import{SkeletonBlock as p}from"../SkeletonBlock";export function SkeletonList({count:t=10,className:r}){return e(o,{className:r,children:Array.from({length:Math.max(1,t)}).map((i,m)=>e(o,{className:"mb-2",children:e(p,{h:"h-5",rounded:"md"})},m))})}export default SkeletonList;
@@ -1 +0,0 @@
1
- import{jsx as q,jsxs as E}from"react/jsx-runtime";import{cn as g}from"@contractspec/lib.ui-kit-web/ui/utils";import{Pressable as B,Text as C,View as D}from"react-native";export function BottomTabs({items:z,className:A}){return q(D,{className:g("flex flex-row items-stretch border-t bg-background",A),children:z.map((d)=>E(B,{className:g("flex-1 items-center justify-center py-2",d.active?"bg-muted":void 0),onPress:d.onPress,accessibilityRole:"tab",accessibilityState:{selected:!!d.active},accessibilityLabel:d.label,children:[d.icon,q(C,{className:g("mt-1 text-xs",d.active?"text-foreground":"text-muted-foreground"),children:d.label})]},d.key))})}
@@ -1 +0,0 @@
1
- import{jsx as q,jsxs as R}from"react/jsx-runtime";import{VStack as K}from"@contractspec/lib.ui-kit/ui/stack";import{Text as b}from"@contractspec/lib.ui-kit/ui/text";import{cva as v}from"class-variance-authority";import{FlatList as I,RefreshControl as L}from"react-native";import{SafeAreaView as P}from"react-native-safe-area-context";const k=v("",{variants:{padding:{none:"",sm:"px-3 py-3",md:"px-4 py-4",lg:"px-5 py-5"}},defaultVariants:{padding:"none"}});export function FlatListScreen({children:M,data:O,renderItem:Q,header:z,className:T,contentClassName:U,edges:W=["top","left","right"],showsVerticalScrollIndicator:X=!1,keyboardShouldPersistTaps:Y="handled",onRefresh:B,refreshing:D=!1,emptyComponent:G,emptyText:Z="No items found",padding:$,...A}){const E=()=>{if(G)return G;return q(K,{align:"center",justify:"center",className:"py-20",children:q(b,{className:"text-center text-muted-foreground",children:Z})})},F=z?q(K,{className:[k({padding:$}),U].filter(Boolean).join(" "),children:z}):void 0;return R(P,{style:{flex:1},edges:W,children:[q(I,{data:O,renderItem:Q,keyExtractor:(H,N)=>{const J=H;return J?.id?.toString()||J?.key?.toString()||String(N)},showsVerticalScrollIndicator:X,keyboardShouldPersistTaps:Y,ListHeaderComponent:F,ListEmptyComponent:E,refreshing:D,refreshControl:B?q(L,{refreshing:D,onRefresh:B}):void 0,...A}),M]})}
@@ -1 +0,0 @@
1
- import{jsx as q,jsxs as M}from"react/jsx-runtime";import{Dialog as F,DialogContent as G,DialogHeader as I,DialogTitle as J}from"@contractspec/lib.ui-kit-web/ui/dialog";import{Text as K,View as L}from"react-native";export function SheetMenu({open:A,onOpenChange:B,title:E="Menu",children:z}){return M(F,{open:A,onOpenChange:B,children:[q(I,{children:q(J,{children:E})}),q(G,{children:q(L,{className:"gap-2",children:typeof z==="string"?q(K,{children:z}):z})})]})}
@@ -1 +0,0 @@
1
- import{jsx as d,jsxs as F}from"react/jsx-runtime";import{cn as K}from"@contractspec/lib.ui-kit/ui/utils";import*as L from"react";import{Pressable as Q,Text as E,View as q}from"react-native";import{BottomTabs as U}from"../native/BottomTabs.mobile";import{SheetMenu as W}from"../native/SheetMenu.mobile";export function AppHeader({logo:z,toolbarRight:G,className:H,menuContent:I,bottomTabs:A}){const[J,D]=L.useState(!1);return F(q,{className:K("border-b bg-background",H),children:[F(q,{className:"flex-row items-center justify-between px-3 py-2",children:[d(Q,{accessibilityLabel:"Open menu",onPress:()=>D(!0),children:d(E,{className:"text-lg",children:"\u2630"})}),d(q,{className:"px-2",children:typeof z==="string"?d(E,{className:"font-bold text-xl",children:z}):z}),d(q,{className:"flex-row items-center gap-2",children:G})]}),A&&A.length>0&&d(U,{items:A}),d(W,{open:J,onOpenChange:D,title:"Menu",children:I})]})}
@@ -1 +0,0 @@
1
- import{jsx as g,jsxs as F}from"react/jsx-runtime";import{Empty as K,EmptyContent as O,EmptyDescription as P,EmptyHeader as Q,EmptyMedia as R,EmptyTitle as U}from"@contractspec/lib.ui-kit/ui/empty";import{HStack as W}from"@contractspec/lib.ui-kit-web/ui/stack";import{Text as A}from"@contractspec/lib.ui-kit-web/ui/text";export function EmptyDataList({emptyListTitle:q,emptyListDescription:v,createButton:G,secondaryButton:X,media:z,mediaVariant:I="icon",learnMoreHref:Y,learnMoreLabel:Z,learnMoreEndIcon:$,onLearnMore:C,handleLearnMore:M,className:J}){return F(K,{className:J,children:[F(Q,{children:[z?g(R,{variant:I,children:z}):null,q?g(U,{children:g(A,{children:q})}):null,v?g(P,{children:g(A,{children:v})}):null]}),g(O,{children:g(W,{className:"gap-2",children:G})})]})}export default EmptyDataList;
@@ -1 +0,0 @@
1
- import{jsx as v}from"react/jsx-runtime";import{VStack as q}from"@contractspec/lib.ui-kit/ui/stack";export function Header({logo:h}){return v(q,{className:"px-3 py-2",children:h})}export const DesktopHeader=Header;export const MobileHeader=Header;
@@ -1 +0,0 @@
1
- import{jsx as z,jsxs as H}from"react/jsx-runtime";import{useContractTable as U}from"@contractspec/lib.presentation-runtime-react";import{VStack as F}from"@contractspec/lib.ui-kit/ui/stack";import{Text as G}from"@contractspec/lib.ui-kit/ui/text";import{cva as W}from"class-variance-authority";import{DataTable as X}from"../data-table/DataTable";const Y=W("",{variants:{density:{compact:"gap-3",comfortable:"gap-4 md:gap-5"}},defaultVariants:{density:"comfortable"}});export function ListTablePage({title:J,subtitle:B,items:K,columns:L,className:M,density:O,renderActions:E}){const P=U({data:K,columns:[...L.map((g,q)=>({id:`column.${q}`,header:g.header,cell:({item:Q,rowIndex:R})=>g.cell(Q,R)})),...E?[{id:"actions",header:"Actions",label:"Actions",canSort:!1,canHide:!1,canResize:!1,cell:({item:g,rowIndex:q})=>E(g,q)}]:[]]});return H(F,{className:[Y({density:O}),M].filter(Boolean).join(" "),children:[H(F,{className:"gap-1",children:[z(G,{className:"font-bold text-2xl md:text-3xl",children:J}),B?z(G,{className:"text-base text-muted-foreground",children:B}):null]}),z(X,{controller:P})]})}
@@ -1 +0,0 @@
1
- import{jsx as F,jsxs as A}from"react/jsx-runtime";import{HStack as L,VStack as D}from"@contractspec/lib.ui-kit/ui/stack";import{Text as E}from"@contractspec/lib.ui-kit/ui/text";import{useResponsive as M}from"../../platform/useResponsive.mobile";export function PageHeaderResponsive({title:z,subtitle:q,actions:G,breadcrumb:I,spacing:J,className:K}){const{screen:B}=M(),C=J??(B==="desktop"?"lg":B==="tablet"?"md":"sm");return A(D,{className:[C==="lg"?"gap-4":C==="md"?"gap-3":"gap-2",K].filter(Boolean).join(" "),children:[I,A(L,{className:"items-start justify-between",children:[A(D,{className:"gap-1",children:[typeof z==="string"?F(E,{className:"font-bold text-2xl",children:z}):z,q?typeof q==="string"?F(E,{className:"text-base text-muted-foreground",children:q}):q:null]}),G]})]})}
@@ -1 +0,0 @@
1
- import{jsx as k,jsxs as D,Fragment as q}from"react/jsx-runtime";import{FiltersToolbar as X}from"../../../molecules/FiltersToolbar.mobile";import{FlatListScreen as Y}from"../../../native/FlatListScreen.mobile";import{EmptyDataList as Z}from"../../../organisms/EmptyDataList.mobile";import{PageHeaderResponsive as $}from"../../../organisms/PageHeaderResponsive.mobile";export*from"./types";export function ListPageTemplate({children:E,title:A,description:B,breadcrumb:G,actions:J,searchPlaceholder:K,searchValue:M,onSearchChange:N,onSearchSubmit:O,isLoading:Q,data:U,renderItem:W,emptyProps:z}){return k(Y,{refreshing:Q,header:D(q,{children:[k($,{title:A,subtitle:B,breadcrumb:G,actions:J}),k(X,{searchPlaceholder:K,searchValue:M,onSearchChange:N,onSearchSubmit:O})]}),data:U??[],renderItem:W,showsVerticalScrollIndicator:!1,padding:"md",emptyComponent:z?k(Z,{...z}):void 0})}
@@ -1 +0,0 @@
1
- import{jsx as A,jsxs as I}from"react/jsx-runtime";import{VStack as F}from"@contractspec/lib.ui-kit/ui/stack";import{Text as G}from"@contractspec/lib.ui-kit/ui/text";import{resolveTranslationNode as H,useDesignSystemTranslation as M}from"../../i18n/translation";import{VisualizationCard as O}from"./VisualizationCard.mobile";export function ComparisonView({items:J,title:K="Comparison",description:B,className:L}){const E=M();return I(F,{gap:"md",className:L,children:[I(F,{gap:"xs",children:[A(G,{className:"font-semibold text-xl",children:H(K,E)}),B?A(G,{className:"text-muted-foreground text-sm",children:H(B,E)}):null]}),J.map((q)=>A(O,{className:q.className,data:q.data,description:q.description,footer:q.footer,height:q.height,spec:q.spec,title:q.title},q.key))]})}
@@ -1 +0,0 @@
1
- import{jsx as A,jsxs as I}from"react/jsx-runtime";import{VStack as F}from"@contractspec/lib.ui-kit/ui/stack";import{Text as G}from"@contractspec/lib.ui-kit/ui/text";import{resolveTranslationNode as H,useDesignSystemTranslation as M}from"../../i18n/translation";import{VisualizationCard as O}from"./VisualizationCard.mobile";export function TimelineView({items:J,title:K="Timeline",description:B,className:L}){const E=M();return I(F,{gap:"md",className:L,children:[I(F,{gap:"xs",children:[A(G,{className:"font-semibold text-xl",children:H(K,E)}),B?A(G,{className:"text-muted-foreground text-sm",children:H(B,E)}):null]}),J.map((q)=>A(O,{className:q.className,data:q.data,description:q.description,footer:q.footer,height:q.height,spec:q.spec,title:q.title},q.key))]})}
@@ -1 +0,0 @@
1
- import{jsx as q,jsxs as J}from"react/jsx-runtime";import{Card as U,CardContent as W,CardDescription as X,CardFooter as Y,CardHeader as Z,CardTitle as $}from"@contractspec/lib.ui-kit/ui/card";import{cn as k}from"@contractspec/lib.ui-kit/ui/utils";import{resolveTranslationNode as F,resolveTranslationString as H,useDesignSystemTranslation as b}from"../../i18n/translation";import{VisualizationRenderer as z}from"./VisualizationRenderer.mobile";export function VisualizationCard({spec:E,data:K,title:L,description:M,footer:G,className:O,contentClassName:P,height:Q}){const I=b(),A=L??F(E.meta.title,I),B=M??H(E.meta.description,I);return J(U,{className:O,children:[A||B?J(Z,{children:[A?q($,{children:A}):null,B?q(X,{children:B}):null]}):null,q(W,{className:k(A||B?"pt-0":"",P),children:q(z,{data:K,height:Q,spec:E})}),G?q(Y,{children:G}):null]})}
@@ -1 +0,0 @@
1
- import{jsx as z}from"react/jsx-runtime";import{VStack as v}from"@contractspec/lib.ui-kit/ui/stack";export function VisualizationGrid({children:g,className:q}){return z(v,{gap:"md",className:q,children:g})}
@@ -1 +0,0 @@
1
- import{jsx as C,Fragment as Q}from"react/jsx-runtime";import{useVisualizationModel as L}from"@contractspec/lib.presentation-runtime-react";import{Visualization as O}from"@contractspec/lib.ui-kit/ui/visualization";export function VisualizationRenderer({spec:E,data:G,className:H,height:I,emptyState:B,onDataPointPress:J}){const A=L({spec:E,data:G});if(!(A.metric?.value!=null||A.series.some((K)=>K.points.length>0)||A.table.rows.length>0)&&B)return C(Q,{children:B});return C(O,{className:H,height:I,model:A,onDataPointPress:J})}
@@ -1 +0,0 @@
1
- import*as f from"react";import{Appearance as g}from"react-native";export function useColorScheme(){const[j,k]=f.useState(()=>g.getColorScheme?.()==="dark"?"dark":"light");f.useEffect(()=>{const q=({colorScheme:z})=>{k(z==="dark"?"dark":"light")},w=g.addChangeListener?.(q);return()=>w?.remove?.()},[]);return j}
@@ -1 +0,0 @@
1
- import*as z from"react";import{AccessibilityInfo as k}from"react-native";export function useReducedMotion(){const[B,q]=z.useState(!1);z.useEffect(()=>{let g=!0;k?.isReduceMotionEnabled().then((j)=>{if(g)q(Boolean(j))});const w=(j)=>{if(g)q(Boolean(j))},C=k?.addEventListener?.("reduceMotionChanged",w);return()=>{g=!1;C?.remove?.();k?.removeEventListener?.("reduceMotionChanged",w)}},[]);return B}
@@ -1 +0,0 @@
1
- import{useEffect as I,useMemo as J,useState as K}from"react";import{Dimensions as y}from"react-native";const O={sm:640,md:768,lg:1024,xl:1280};export function useResponsive(k){const g=J(()=>({...O,...k}),[k]),[j,z]=K(y.get("window").width);I(()=>{const x=y.addEventListener("change",({window:H})=>{z(H.width)});return()=>{if(typeof x?.remove==="function")x.remove()}},[]);const l=j>=g.sm,B=j>=g.md,q=j>=g.lg,C=j>=g.xl;return{width:j,breakpoints:g,isSM:l,isMD:B,isLG:q,isXL:C,screen:q?"desktop":l?"tablet":"mobile"}}