@contractspec/lib.design-system 3.11.1 → 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 (400) 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/ZodForm.d.ts +1 -2
  24. package/dist/components/forms/controls/index.d.ts +1 -0
  25. package/dist/components/forms/controls/index.js +1 -1
  26. package/dist/components/legal/templates/ContactTemplate.js +1 -1
  27. package/dist/components/list/List.d.ts +6 -0
  28. package/dist/components/list/List.js +1 -0
  29. package/dist/components/list/List.native.d.ts +6 -0
  30. package/dist/components/list/index.d.ts +1 -0
  31. package/dist/components/list/index.js +1 -0
  32. package/dist/components/molecules/Tabs.d.ts +32 -0
  33. package/dist/components/molecules/Tabs.js +1 -0
  34. package/dist/components/molecules/Tabs.native.d.ts +32 -0
  35. package/dist/components/organisms/{AppHeader.mobile.d.ts → AppHeader.native.d.ts} +1 -1
  36. package/dist/components/typography/Typography.d.ts +19 -0
  37. package/dist/components/typography/Typography.js +1 -0
  38. package/dist/components/typography/Typography.native.d.ts +19 -0
  39. package/dist/components/typography/index.d.ts +1 -0
  40. package/dist/components/typography/index.js +1 -0
  41. package/dist/controls.d.ts +1 -0
  42. package/dist/controls.js +1 -0
  43. package/dist/forms.d.ts +1 -0
  44. package/dist/forms.js +1 -0
  45. package/dist/index.d.ts +4 -0
  46. package/dist/index.js +1 -1
  47. package/dist/layout.d.ts +1 -0
  48. package/dist/layout.js +1 -0
  49. package/dist/list.d.ts +1 -0
  50. package/dist/list.js +1 -0
  51. package/dist/native/components/agent/AgentMonitor.js +1 -0
  52. package/dist/native/components/agent/ApprovalQueue.js +1 -0
  53. package/dist/native/components/atoms/ActionButtons.js +1 -0
  54. package/dist/native/components/atoms/Button.js +1 -0
  55. package/dist/native/components/atoms/ButtonLink.js +1 -0
  56. package/dist/{browser/components/atoms/ButtonLink.mobile.js → native/components/atoms/ButtonLink.native.js} +1 -1
  57. package/dist/native/components/atoms/Cta.js +1 -0
  58. package/dist/native/components/atoms/DataChips.js +1 -0
  59. package/dist/native/components/atoms/EmptyState.js +1 -0
  60. package/dist/native/components/atoms/ErrorState.js +1 -0
  61. package/dist/native/components/atoms/ErrorState.native.js +1 -0
  62. package/dist/native/components/atoms/Input.js +1 -0
  63. package/dist/native/components/atoms/InputPassword.js +1 -0
  64. package/dist/native/components/atoms/InputPassword.native.js +1 -0
  65. package/dist/native/components/atoms/Link.js +1 -0
  66. package/dist/native/components/atoms/Link.native.js +1 -0
  67. package/dist/native/components/atoms/LoaderCircular.js +1 -0
  68. package/dist/native/components/atoms/NavBrand.js +1 -0
  69. package/dist/native/components/atoms/RankBadge.js +1 -0
  70. package/dist/native/components/atoms/ScoreBar.js +1 -0
  71. package/dist/native/components/atoms/Stepper.js +1 -0
  72. package/dist/native/components/atoms/Textarea.js +1 -0
  73. package/dist/native/components/data-table/DataTable.js +1 -0
  74. package/dist/native/components/data-table/DataTableToolbar.js +1 -0
  75. package/dist/{browser/components/data-table/DataTableToolbar.mobile.js → native/components/data-table/DataTableToolbar.native.js} +1 -1
  76. package/dist/native/components/data-table/DataTableToolbar.shared.js +1 -0
  77. package/dist/native/components/data-view/DataViewDetail.js +1 -0
  78. package/dist/native/components/data-view/DataViewList.js +1 -0
  79. package/dist/native/components/data-view/DataViewRenderer.js +1 -0
  80. package/dist/native/components/data-view/DataViewTable.js +1 -0
  81. package/dist/native/components/data-view/utils.js +1 -0
  82. package/dist/native/components/forms/ActionForm.js +1 -0
  83. package/dist/native/components/forms/FormCardLayout.js +1 -0
  84. package/dist/native/components/forms/FormDialog.js +1 -0
  85. package/dist/native/components/forms/FormLayout.js +1 -0
  86. package/dist/native/components/forms/FormOneByOneLayout.js +1 -0
  87. package/dist/native/components/forms/FormStepsLayout.js +1 -0
  88. package/dist/native/components/forms/ZodForm.js +1 -0
  89. package/dist/native/components/forms/controls/Autocomplete.js +1 -0
  90. package/dist/native/components/forms/controls/ChoiceControls.js +1 -0
  91. package/dist/native/components/forms/controls/Combobox.js +1 -0
  92. package/dist/native/components/forms/controls/DateTimeControls.js +1 -0
  93. package/dist/{components/forms/controls/DropdownMenu.mobile.js → native/components/forms/controls/DropdownMenu.js} +1 -1
  94. package/dist/native/components/forms/controls/Field.js +1 -0
  95. package/dist/native/components/forms/controls/InputGroup.js +1 -0
  96. package/dist/native/components/forms/controls/InputOTP.js +1 -0
  97. package/dist/native/components/forms/controls/LoadingButton.js +1 -0
  98. package/dist/native/components/forms/controls/NativeSelect.js +1 -0
  99. package/dist/native/components/forms/controls/Select.js +1 -0
  100. package/dist/native/components/forms/controls/index.js +1 -0
  101. package/dist/native/components/forms/index.js +1 -0
  102. package/dist/native/components/layout/Stack.js +1 -0
  103. package/dist/native/components/layout/index.js +1 -0
  104. package/dist/native/components/legal/atoms/DefinitionList.js +1 -0
  105. package/dist/native/components/legal/atoms/KeyValueList.js +1 -0
  106. package/dist/native/components/legal/atoms/LegalCallout.js +1 -0
  107. package/dist/native/components/legal/atoms/LegalHeading.js +1 -0
  108. package/dist/native/components/legal/atoms/LegalList.js +1 -0
  109. package/dist/native/components/legal/atoms/LegalSection.js +1 -0
  110. package/dist/native/components/legal/atoms/LegalText.js +1 -0
  111. package/dist/native/components/legal/molecules/Consent.js +1 -0
  112. package/dist/native/components/legal/molecules/ContactFields.js +1 -0
  113. package/dist/native/components/legal/molecules/LegalMeta.js +1 -0
  114. package/dist/native/components/legal/molecules/LegalTOC.js +1 -0
  115. package/dist/native/components/legal/organisms/ContactForm.js +1 -0
  116. package/dist/native/components/legal/organisms/GDPRDataRequest.js +1 -0
  117. package/dist/native/components/legal/organisms/GDPRRights.js +1 -0
  118. package/dist/native/components/legal/organisms/LegalPageLayout.js +1 -0
  119. package/dist/native/components/legal/templates/ContactTemplate.js +1 -0
  120. package/dist/native/components/legal/templates/CookiesTemplate.js +1 -0
  121. package/dist/native/components/legal/templates/PrivacyTemplate.js +1 -0
  122. package/dist/native/components/legal/templates/SalesTermsTemplate.js +1 -0
  123. package/dist/native/components/legal/templates/TermsTemplate.js +1 -0
  124. package/dist/native/components/list/List.js +1 -0
  125. package/dist/native/components/list/List.native.js +1 -0
  126. package/dist/native/components/list/index.js +1 -0
  127. package/dist/native/components/marketing/MarketingCard.js +1 -0
  128. package/dist/native/components/marketing/MarketingCardsSection.js +1 -0
  129. package/dist/native/components/marketing/MarketingComparisonSection.js +1 -0
  130. package/dist/native/components/marketing/MarketingIconCard.js +1 -0
  131. package/dist/native/components/marketing/MarketingSection.js +1 -0
  132. package/dist/native/components/marketing/MarketingStepCard.js +1 -0
  133. package/dist/native/components/molecules/AiLinkButton.js +1 -0
  134. package/dist/native/components/molecules/Breadcrumbs.js +1 -0
  135. package/dist/native/components/molecules/CodeBlock/CodeBlock.js +1 -0
  136. package/dist/native/components/molecules/CodeBlock/index.js +1 -0
  137. package/dist/native/components/molecules/CommandPalette.js +1 -0
  138. package/dist/native/components/molecules/CommandSearchTrigger.js +1 -0
  139. package/dist/native/components/molecules/CommandTabs/CommandTabs.js +1 -0
  140. package/dist/native/components/molecules/CommandTabs/index.js +1 -0
  141. package/dist/native/components/molecules/CopyButton/CopyButton.js +1 -0
  142. package/dist/native/components/molecules/CopyButton/index.js +1 -0
  143. package/dist/native/components/molecules/CopyButton/types.js +0 -0
  144. package/dist/native/components/molecules/DimensionScoresCard.js +1 -0
  145. package/dist/native/components/molecules/DropdownMenu.js +0 -0
  146. package/dist/native/components/molecules/EntityCard.js +1 -0
  147. package/dist/native/components/molecules/FiltersToolbar.js +1 -0
  148. package/dist/native/components/molecules/HoverPreview.js +1 -0
  149. package/dist/native/components/molecules/InstallCommand/InstallCommand.js +1 -0
  150. package/dist/native/components/molecules/InstallCommand/index.js +1 -0
  151. package/dist/native/components/molecules/InstallCommand/types.js +0 -0
  152. package/dist/native/components/molecules/LangSwitch.js +1 -0
  153. package/dist/native/components/molecules/LangSwitchDropdown.js +1 -0
  154. package/dist/native/components/molecules/LoaderBlock.js +1 -0
  155. package/dist/{browser/components/molecules/LoaderBlock.mobile.js → native/components/molecules/LoaderBlock.native.js} +1 -1
  156. package/dist/native/components/molecules/MarkdownRenderer/MarkdownRenderer.js +2 -0
  157. package/dist/native/components/molecules/MarkdownRenderer/formatInlineMarkdown.js +1 -0
  158. package/dist/native/components/molecules/MarkdownRenderer/index.js +1 -0
  159. package/dist/native/components/molecules/MarkdownRenderer/renderMarkdownTable.js +1 -0
  160. package/dist/native/components/molecules/MarkdownRenderer/types.js +0 -0
  161. package/dist/native/components/molecules/MobileNavMenu.js +1 -0
  162. package/dist/native/components/molecules/NavItemCard.js +1 -0
  163. package/dist/native/components/molecules/NavMain.js +1 -0
  164. package/dist/native/components/molecules/NavUser.js +1 -0
  165. package/dist/native/components/molecules/OverviewCard.js +1 -0
  166. package/dist/native/components/molecules/SkeletonBlock/index.js +1 -0
  167. package/dist/native/components/molecules/SkeletonBlock/types.js +0 -0
  168. package/dist/native/components/molecules/SkeletonCircle/index.js +1 -0
  169. package/dist/native/components/molecules/SkeletonCircle/types.js +0 -0
  170. package/dist/native/components/molecules/SkeletonList/index.js +1 -0
  171. package/dist/native/components/molecules/SkeletonList/types.js +0 -0
  172. package/dist/native/components/molecules/StatCard.js +1 -0
  173. package/dist/native/components/molecules/StatusChip.js +1 -0
  174. package/dist/native/components/molecules/Tabs.js +1 -0
  175. package/dist/native/components/molecules/Tabs.native.js +1 -0
  176. package/dist/native/components/molecules/hover-previews/Doc.js +1 -0
  177. package/dist/native/components/molecules/hover-previews/Media.js +1 -0
  178. package/dist/native/components/molecules/hover-previews/Simple.js +1 -0
  179. package/dist/native/components/molecules/hover-previews/Stats.js +1 -0
  180. package/dist/native/components/molecules/hover-previews/User.js +1 -0
  181. package/dist/native/components/organisms/AcademyLayout.js +1 -0
  182. package/dist/native/components/organisms/AppHeader.js +1 -0
  183. package/dist/{browser/components/organisms/AppHeader.mobile.js → native/components/organisms/AppHeader.native.js} +1 -1
  184. package/dist/native/components/organisms/AppLayout.js +1 -0
  185. package/dist/native/components/organisms/AppSidebar.js +1 -0
  186. package/dist/native/components/organisms/AppSidebar.native.js +0 -0
  187. package/dist/native/components/organisms/EmptyDataList.js +1 -0
  188. package/dist/native/components/organisms/EmptyDataList.types.js +0 -0
  189. package/dist/native/components/organisms/EmptySearchResult.js +1 -0
  190. package/dist/native/components/organisms/FAQSection.js +1 -0
  191. package/dist/native/components/organisms/FeatureCarousel.js +1 -0
  192. package/dist/native/components/organisms/FeaturesSection.js +1 -0
  193. package/dist/native/components/organisms/Footer.js +1 -0
  194. package/dist/native/components/organisms/GridLayout.js +1 -0
  195. package/dist/native/components/organisms/Header.js +1 -0
  196. package/dist/native/components/organisms/HeroResponsive.js +1 -0
  197. package/dist/native/components/organisms/HeroSection.js +1 -0
  198. package/dist/native/components/organisms/ListCardPage.js +1 -0
  199. package/dist/native/components/organisms/ListGridPage.js +1 -0
  200. package/dist/native/components/organisms/ListPageResponsive.js +1 -0
  201. package/dist/native/components/organisms/ListTablePage.js +1 -0
  202. package/dist/native/components/organisms/MarketingHeader.js +1 -0
  203. package/dist/native/components/organisms/MarketingHeaderDesktop.js +1 -0
  204. package/dist/native/components/organisms/MarketingHeaderMobile.js +1 -0
  205. package/dist/native/components/organisms/MarketingLayout.js +1 -0
  206. package/dist/native/components/organisms/ModelComparisonView.js +1 -0
  207. package/dist/native/components/organisms/PageHeaderResponsive.js +1 -0
  208. package/dist/{browser/components/organisms/PageHeaderResponsive.mobile.js → native/components/organisms/PageHeaderResponsive.native.js} +1 -1
  209. package/dist/native/components/organisms/PricingCarousel.js +1 -0
  210. package/dist/native/components/organisms/PricingSection.js +1 -0
  211. package/dist/native/components/organisms/TestimonialCarousel.js +1 -0
  212. package/dist/native/components/primitives/control.js +1 -0
  213. package/dist/native/components/primitives/themed.js +1 -0
  214. package/dist/native/components/providers/PackageManagerProvider.js +1 -0
  215. package/dist/native/components/templates/lists/ListPageTemplate/index.js +1 -0
  216. package/dist/{browser/components/templates/lists/ListPageTemplate/index.mobile.js → native/components/templates/lists/ListPageTemplate/index.native.js} +1 -1
  217. package/dist/native/components/templates/lists/ListPageTemplate/types.js +0 -0
  218. package/dist/native/components/typography/Typography.js +1 -0
  219. package/dist/native/components/typography/Typography.native.js +1 -0
  220. package/dist/native/components/typography/index.js +1 -0
  221. package/dist/native/components/visualization/ComparisonView.js +1 -0
  222. package/dist/{browser/components/visualization/ComparisonView.mobile.js → native/components/visualization/ComparisonView.native.js} +1 -1
  223. package/dist/native/components/visualization/TimelineView.js +1 -0
  224. package/dist/{browser/components/visualization/TimelineView.mobile.js → native/components/visualization/TimelineView.native.js} +1 -1
  225. package/dist/native/components/visualization/VisualizationCard.js +1 -0
  226. package/dist/native/components/visualization/VisualizationCard.native.js +1 -0
  227. package/dist/native/components/visualization/VisualizationGrid.js +1 -0
  228. package/dist/native/components/visualization/VisualizationRenderer.js +1 -0
  229. package/dist/native/components/visualization/types.js +0 -0
  230. package/dist/native/contracts.typecheck.js +1 -0
  231. package/dist/native/controls.js +1 -0
  232. package/dist/native/design-system.feature.js +1 -0
  233. package/dist/native/forms.js +1 -0
  234. package/dist/native/hooks/useListUrlState.js +1 -0
  235. package/dist/native/i18n/translation.js +1 -0
  236. package/dist/native/index.js +1 -0
  237. package/dist/native/layout.js +1 -0
  238. package/dist/native/lib/keyboard.js +1 -0
  239. package/dist/native/lib/utils.js +1 -0
  240. package/dist/native/list.js +1 -0
  241. package/dist/native/platform/useColorScheme.js +1 -0
  242. package/dist/native/platform/useReducedMotion.js +1 -0
  243. package/dist/native/platform/useResponsive.js +1 -0
  244. package/dist/native/platform/withPlatformUI.js +1 -0
  245. package/dist/native/renderers/form-contract/renderer.js +1 -0
  246. package/dist/native/renderers/form-contract/rich-fields.js +1 -0
  247. package/dist/native/renderers/form-contract/shell.js +1 -0
  248. package/dist/native/renderers/form-contract/values.js +1 -0
  249. package/dist/native/renderers/form-contract.js +1 -0
  250. package/dist/native/renderers/index.js +1 -0
  251. package/dist/native/theme/contracts.js +1 -0
  252. package/dist/native/theme/index.js +1 -0
  253. package/dist/native/theme/runtime-resolvers.js +1 -0
  254. package/dist/native/theme/runtime.js +1 -0
  255. package/dist/native/theme/tailwind-config.js +1 -0
  256. package/dist/native/theme/tailwind-css.js +9 -0
  257. package/dist/native/theme/tailwind-variables.js +1 -0
  258. package/dist/native/theme/tailwind.js +1 -0
  259. package/dist/native/theme/tokenBridge.js +1 -0
  260. package/dist/native/theme/tokens.js +1 -0
  261. package/dist/native/theme/variants.js +1 -0
  262. package/dist/native/types/nativewind-env.d.js +0 -0
  263. package/dist/native/types/navigation.js +0 -0
  264. package/dist/native/typography.js +1 -0
  265. package/dist/renderers/form-contract/renderer.js +1 -1
  266. package/dist/renderers/form-contract/shell.d.ts +5 -0
  267. package/dist/renderers/form-contract/shell.js +1 -1
  268. package/dist/typography.d.ts +1 -0
  269. package/dist/typography.js +1 -0
  270. package/package.json +3054 -24
  271. package/dist/browser/components/atoms/ErrorState.mobile.js +0 -1
  272. package/dist/browser/components/visualization/VisualizationCard.mobile.js +0 -1
  273. package/dist/components/agent/ApprovalQueue.mobile.js +0 -1
  274. package/dist/components/atoms/Button.mobile.js +0 -1
  275. package/dist/components/atoms/ButtonLink.mobile.js +0 -1
  276. package/dist/components/atoms/Cta.mobile.js +0 -1
  277. package/dist/components/atoms/ErrorState.mobile.js +0 -1
  278. package/dist/components/atoms/Input.mobile.js +0 -1
  279. package/dist/components/atoms/LoaderCircular.mobile.js +0 -1
  280. package/dist/components/atoms/Textarea.mobile.js +0 -1
  281. package/dist/components/data-table/DataTable.mobile.js +0 -1
  282. package/dist/components/data-table/DataTableToolbar.mobile.js +0 -1
  283. package/dist/components/data-view/DataViewRenderer.mobile.js +0 -1
  284. package/dist/components/data-view/DataViewTable.mobile.js +0 -1
  285. package/dist/components/forms/controls/Autocomplete.mobile.js +0 -1
  286. package/dist/components/forms/controls/ChoiceControls.mobile.js +0 -1
  287. package/dist/components/forms/controls/Combobox.mobile.js +0 -1
  288. package/dist/components/forms/controls/DateTimeControls.mobile.js +0 -1
  289. package/dist/components/forms/controls/Field.mobile.js +0 -1
  290. package/dist/components/forms/controls/InputGroup.mobile.js +0 -1
  291. package/dist/components/forms/controls/InputOTP.mobile.js +0 -1
  292. package/dist/components/forms/controls/LoadingButton.mobile.js +0 -1
  293. package/dist/components/forms/controls/NativeSelect.mobile.js +0 -1
  294. package/dist/components/forms/controls/Select.mobile.js +0 -1
  295. package/dist/components/layout/Stack.mobile.js +0 -1
  296. package/dist/components/molecules/FiltersToolbar.mobile.js +0 -1
  297. package/dist/components/molecules/LoaderBlock.mobile.js +0 -1
  298. package/dist/components/molecules/SkeletonBlock/index.mobile.js +0 -1
  299. package/dist/components/molecules/SkeletonCircle/index.mobile.js +0 -1
  300. package/dist/components/molecules/SkeletonList/index.mobile.js +0 -1
  301. package/dist/components/native/BottomTabs.mobile.js +0 -1
  302. package/dist/components/native/FlatListScreen.mobile.js +0 -1
  303. package/dist/components/native/SheetMenu.mobile.js +0 -1
  304. package/dist/components/organisms/AppHeader.mobile.js +0 -1
  305. package/dist/components/organisms/EmptyDataList.mobile.js +0 -1
  306. package/dist/components/organisms/Header.mobile.js +0 -1
  307. package/dist/components/organisms/ListTablePage.mobile.js +0 -1
  308. package/dist/components/organisms/PageHeaderResponsive.mobile.js +0 -1
  309. package/dist/components/templates/lists/ListPageTemplate/index.mobile.js +0 -1
  310. package/dist/components/visualization/ComparisonView.mobile.js +0 -1
  311. package/dist/components/visualization/TimelineView.mobile.js +0 -1
  312. package/dist/components/visualization/VisualizationCard.mobile.js +0 -1
  313. package/dist/components/visualization/VisualizationGrid.mobile.js +0 -1
  314. package/dist/components/visualization/VisualizationRenderer.mobile.js +0 -1
  315. package/dist/platform/useColorScheme.mobile.js +0 -1
  316. package/dist/platform/useReducedMotion.mobile.js +0 -1
  317. package/dist/platform/useResponsive.mobile.js +0 -1
  318. /package/dist/components/agent/{ApprovalQueue.mobile.d.ts → ApprovalQueue.native.d.ts} +0 -0
  319. /package/dist/components/atoms/{Button.mobile.d.ts → Button.native.d.ts} +0 -0
  320. /package/dist/components/atoms/{Cta.mobile.d.ts → Cta.native.d.ts} +0 -0
  321. /package/dist/components/atoms/{ErrorState.mobile.d.ts → ErrorState.native.d.ts} +0 -0
  322. /package/dist/components/atoms/{Input.mobile.d.ts → Input.native.d.ts} +0 -0
  323. /package/dist/components/atoms/{LoaderCircular.mobile.d.ts → LoaderCircular.native.d.ts} +0 -0
  324. /package/dist/components/atoms/{Textarea.mobile.d.ts → Textarea.native.d.ts} +0 -0
  325. /package/dist/components/data-table/{DataTable.mobile.d.ts → DataTable.native.d.ts} +0 -0
  326. /package/dist/components/data-table/{DataTableToolbar.mobile.d.ts → DataTableToolbar.native.d.ts} +0 -0
  327. /package/dist/components/data-view/{DataViewRenderer.mobile.d.ts → DataViewRenderer.native.d.ts} +0 -0
  328. /package/dist/components/data-view/{DataViewTable.mobile.d.ts → DataViewTable.native.d.ts} +0 -0
  329. /package/dist/components/forms/controls/{Autocomplete.mobile.d.ts → Autocomplete.native.d.ts} +0 -0
  330. /package/dist/components/forms/controls/{ChoiceControls.mobile.d.ts → ChoiceControls.native.d.ts} +0 -0
  331. /package/dist/components/forms/controls/{Combobox.mobile.d.ts → Combobox.native.d.ts} +0 -0
  332. /package/dist/components/forms/controls/{DateTimeControls.mobile.d.ts → DateTimeControls.native.d.ts} +0 -0
  333. /package/dist/components/forms/controls/{DropdownMenu.mobile.d.ts → DropdownMenu.native.d.ts} +0 -0
  334. /package/dist/components/forms/controls/{Field.mobile.d.ts → Field.native.d.ts} +0 -0
  335. /package/dist/components/forms/controls/{InputGroup.mobile.d.ts → InputGroup.native.d.ts} +0 -0
  336. /package/dist/components/forms/controls/{InputOTP.mobile.d.ts → InputOTP.native.d.ts} +0 -0
  337. /package/dist/components/forms/controls/{LoadingButton.mobile.d.ts → LoadingButton.native.d.ts} +0 -0
  338. /package/dist/components/forms/controls/{NativeSelect.mobile.d.ts → NativeSelect.native.d.ts} +0 -0
  339. /package/dist/components/forms/controls/{Select.mobile.d.ts → Select.native.d.ts} +0 -0
  340. /package/dist/components/layout/{Stack.mobile.d.ts → Stack.native.d.ts} +0 -0
  341. /package/dist/components/molecules/{FiltersToolbar.mobile.d.ts → FiltersToolbar.native.d.ts} +0 -0
  342. /package/dist/components/molecules/{LoaderBlock.mobile.d.ts → LoaderBlock.native.d.ts} +0 -0
  343. /package/dist/components/molecules/SkeletonBlock/{index.mobile.d.ts → index.native.d.ts} +0 -0
  344. /package/dist/components/molecules/SkeletonCircle/{index.mobile.d.ts → index.native.d.ts} +0 -0
  345. /package/dist/components/molecules/SkeletonList/{index.mobile.d.ts → index.native.d.ts} +0 -0
  346. /package/dist/components/native/{BottomTabs.mobile.d.ts → BottomTabs.native.d.ts} +0 -0
  347. /package/dist/components/native/{FlatListScreen.mobile.d.ts → FlatListScreen.native.d.ts} +0 -0
  348. /package/dist/components/native/{SheetMenu.mobile.d.ts → SheetMenu.native.d.ts} +0 -0
  349. /package/dist/components/organisms/{AppSidebar.mobile.d.ts → AppSidebar.native.d.ts} +0 -0
  350. /package/dist/components/organisms/{EmptyDataList.mobile.d.ts → EmptyDataList.native.d.ts} +0 -0
  351. /package/dist/components/organisms/{Header.mobile.d.ts → Header.native.d.ts} +0 -0
  352. /package/dist/components/organisms/{ListTablePage.mobile.d.ts → ListTablePage.native.d.ts} +0 -0
  353. /package/dist/components/organisms/{PageHeaderResponsive.mobile.d.ts → PageHeaderResponsive.native.d.ts} +0 -0
  354. /package/dist/components/templates/lists/ListPageTemplate/{index.mobile.d.ts → index.native.d.ts} +0 -0
  355. /package/dist/components/visualization/{ComparisonView.mobile.d.ts → ComparisonView.native.d.ts} +0 -0
  356. /package/dist/components/visualization/{TimelineView.mobile.d.ts → TimelineView.native.d.ts} +0 -0
  357. /package/dist/components/visualization/{VisualizationCard.mobile.d.ts → VisualizationCard.native.d.ts} +0 -0
  358. /package/dist/components/visualization/{VisualizationGrid.mobile.d.ts → VisualizationGrid.native.d.ts} +0 -0
  359. /package/dist/components/visualization/{VisualizationRenderer.mobile.d.ts → VisualizationRenderer.native.d.ts} +0 -0
  360. /package/dist/{browser/components/agent/ApprovalQueue.mobile.js → native/components/agent/ApprovalQueue.native.js} +0 -0
  361. /package/dist/{browser/components/atoms/Button.mobile.js → native/components/atoms/Button.native.js} +0 -0
  362. /package/dist/{browser/components/atoms/Cta.mobile.js → native/components/atoms/Cta.native.js} +0 -0
  363. /package/dist/{browser/components/atoms/Input.mobile.js → native/components/atoms/Input.native.js} +0 -0
  364. /package/dist/{browser/components/atoms/LoaderCircular.mobile.js → native/components/atoms/LoaderCircular.native.js} +0 -0
  365. /package/dist/{browser/components/atoms/Textarea.mobile.js → native/components/atoms/Textarea.native.js} +0 -0
  366. /package/dist/{browser/components/data-table/DataTable.mobile.js → native/components/data-table/DataTable.native.js} +0 -0
  367. /package/dist/{browser/components/data-view/DataViewRenderer.mobile.js → native/components/data-view/DataViewRenderer.native.js} +0 -0
  368. /package/dist/{browser/components/data-view/DataViewTable.mobile.js → native/components/data-view/DataViewTable.native.js} +0 -0
  369. /package/dist/{browser/components/forms/controls/Autocomplete.mobile.js → native/components/forms/controls/Autocomplete.native.js} +0 -0
  370. /package/dist/{browser/components/forms/controls/ChoiceControls.mobile.js → native/components/forms/controls/ChoiceControls.native.js} +0 -0
  371. /package/dist/{browser/components/forms/controls/Combobox.mobile.js → native/components/forms/controls/Combobox.native.js} +0 -0
  372. /package/dist/{browser/components/forms/controls/DateTimeControls.mobile.js → native/components/forms/controls/DateTimeControls.native.js} +0 -0
  373. /package/dist/{browser/components/forms/controls/DropdownMenu.mobile.js → native/components/forms/controls/DropdownMenu.native.js} +0 -0
  374. /package/dist/{browser/components/forms/controls/Field.mobile.js → native/components/forms/controls/Field.native.js} +0 -0
  375. /package/dist/{browser/components/forms/controls/InputGroup.mobile.js → native/components/forms/controls/InputGroup.native.js} +0 -0
  376. /package/dist/{browser/components/forms/controls/InputOTP.mobile.js → native/components/forms/controls/InputOTP.native.js} +0 -0
  377. /package/dist/{browser/components/forms/controls/LoadingButton.mobile.js → native/components/forms/controls/LoadingButton.native.js} +0 -0
  378. /package/dist/{browser/components/forms/controls/NativeSelect.mobile.js → native/components/forms/controls/NativeSelect.native.js} +0 -0
  379. /package/dist/{browser/components/forms/controls/Select.mobile.js → native/components/forms/controls/Select.native.js} +0 -0
  380. /package/dist/{browser/components/layout/Stack.mobile.js → native/components/layout/Stack.native.js} +0 -0
  381. /package/dist/{browser/components/organisms/AppSidebar.mobile.js → native/components/molecules/CodeBlock/types.js} +0 -0
  382. /package/dist/{components/organisms/AppSidebar.mobile.js → native/components/molecules/CommandTabs/types.js} +0 -0
  383. /package/dist/{browser/components/molecules/FiltersToolbar.mobile.js → native/components/molecules/FiltersToolbar.native.js} +0 -0
  384. /package/dist/{browser/components/molecules/SkeletonBlock/index.mobile.js → native/components/molecules/SkeletonBlock/index.native.js} +0 -0
  385. /package/dist/{browser/components/molecules/SkeletonCircle/index.mobile.js → native/components/molecules/SkeletonCircle/index.native.js} +0 -0
  386. /package/dist/{browser/components/molecules/SkeletonList/index.mobile.js → native/components/molecules/SkeletonList/index.native.js} +0 -0
  387. /package/dist/{browser/components/native/BottomTabs.mobile.js → native/components/native/BottomTabs.native.js} +0 -0
  388. /package/dist/{browser/components/native/FlatListScreen.mobile.js → native/components/native/FlatListScreen.native.js} +0 -0
  389. /package/dist/{browser/components/native/SheetMenu.mobile.js → native/components/native/SheetMenu.native.js} +0 -0
  390. /package/dist/{browser/components/organisms/EmptyDataList.mobile.js → native/components/organisms/EmptyDataList.native.js} +0 -0
  391. /package/dist/{browser/components/organisms/Header.mobile.js → native/components/organisms/Header.native.js} +0 -0
  392. /package/dist/{browser/components/organisms/ListTablePage.mobile.js → native/components/organisms/ListTablePage.native.js} +0 -0
  393. /package/dist/{browser/components/visualization/VisualizationGrid.mobile.js → native/components/visualization/VisualizationGrid.native.js} +0 -0
  394. /package/dist/{browser/components/visualization/VisualizationRenderer.mobile.js → native/components/visualization/VisualizationRenderer.native.js} +0 -0
  395. /package/dist/{browser/platform/useColorScheme.mobile.js → native/platform/useColorScheme.native.js} +0 -0
  396. /package/dist/{browser/platform/useReducedMotion.mobile.js → native/platform/useReducedMotion.native.js} +0 -0
  397. /package/dist/{browser/platform/useResponsive.mobile.js → native/platform/useResponsive.native.js} +0 -0
  398. /package/dist/platform/{useColorScheme.mobile.d.ts → useColorScheme.native.d.ts} +0 -0
  399. /package/dist/platform/{useReducedMotion.mobile.d.ts → useReducedMotion.native.d.ts} +0 -0
  400. /package/dist/platform/{useResponsive.mobile.d.ts → useResponsive.native.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ import{jsx as g,jsxs as q}from"react/jsx-runtime";import{cn as B}from"@contractspec/lib.ui-kit-web/ui/utils";export function NavItemCard({item:d,className:v}){return g("a",{href:d.href,className:B("block rounded-md p-2 transition-colors hover:bg-accent",v),"aria-label":typeof d.label==="string"?d.label:d.ariaLabel,target:d.target,rel:d.external?"noopener noreferrer":void 0,onClick:d.onClick,children:q("div",{className:"flex items-center gap-3",children:[d.imageSrc?g("img",{src:d.imageSrc,alt:d.imageAlt||"",className:"h-12 w-12 rounded-xs object-cover"}):d.icon||null,q("div",{className:"min-w-0",children:[q("div",{className:"flex items-center gap-2 font-medium text-base",children:[d.label,d.badge&&g("span",{className:"ml-1 text-muted-foreground text-xs",children:d.badge})]}),d.description&&g("div",{className:"line-clamp-2 text-muted-foreground text-sm",children:d.description}),d.categories&&d.categories.length>0&&g("div",{className:"mt-1 flex flex-wrap items-center gap-1",children:d.categories.map((z,A)=>g("span",{className:"rounded-xs bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground",children:z},A))})]})]})})}
@@ -0,0 +1 @@
1
+ import{jsx as d,jsxs as E,Fragment as V}from"react/jsx-runtime";import{NavigationMenu as K,NavigationMenuContent as M,NavigationMenuItem as O,NavigationMenuLink as D,NavigationMenuList as P,NavigationMenuTrigger as Q}from"@contractspec/lib.ui-kit-web/ui/navigation-menu";import{HStack as R}from"@contractspec/lib.ui-kit-web/ui/stack";import{Text as B}from"@contractspec/lib.ui-kit-web/ui/text";import{cn as U}from"@contractspec/lib.ui-kit-web/ui/utils";export function NavMain({items:G,className:J}){return d(K,{className:U("hidden md:flex",J),children:d(P,{children:G.map((z)=>d(O,{children:z.items&&z.items.length>0?E(V,{children:[d(Q,{children:d(B,{children:z.label})}),d(M,{children:d(R,{className:"grid w-[500px] grid-cols-2 gap-3 p-3",children:z.items.map((A)=>E(D,{href:A.href,className:"block rounded-md p-2 hover:bg-accent",children:[d(B,{className:"font-medium text-base",children:A.label}),A.badge&&d(B,{className:"ml-2 text-muted-foreground text-xs",children:A.badge})]},A.href))})})]}):d(D,{href:z.href||"#",children:z.label})},String(z.key??z.href??z.label)))})})}
@@ -0,0 +1 @@
1
+ import{jsx as z,jsxs as G,Fragment as C}from"react/jsx-runtime";import{Avatar as P,AvatarFallback as Q,AvatarImage as R}from"@contractspec/lib.ui-kit-web/ui/avatar";import{DropdownMenu as V,DropdownMenuContent as W,DropdownMenuItem as X,DropdownMenuLabel as Y,DropdownMenuSeparator as Z,DropdownMenuTrigger as $}from"@contractspec/lib.ui-kit-web/ui/dropdown-menu";import{Button as q}from"../atoms/Button";export function NavUser({name:H,email:J,imageUrl:K,items:N}){return G(V,{children:[z($,{asChild:!0,children:z(q,{variant:"ghost",size:"icon","aria-label":"Account",children:z(P,{className:"h-8 w-8",children:K?z(R,{src:K,alt:H??"user"}):z(Q,{children:H?.[0]??"?"})})})}),G(W,{align:"end",className:"w-56",children:[(H||J)&&G(C,{children:[z(Y,{children:G("div",{className:"flex flex-col",children:[H&&z("span",{className:"font-medium",children:H}),J&&z("span",{className:"text-base text-muted-foreground",children:J})]})}),z(Z,{})]}),N.map((E,O)=>z(X,{onClick:E.onClick,asChild:!E.href,children:E.href?z("a",{href:E.href,className:E.danger?"text-destructive":void 0,children:G("span",{className:"inline-flex items-center gap-2",children:[E.icon,E.label]})}):z("span",{className:E.danger?"text-destructive":void 0,children:G("span",{className:"inline-flex items-center gap-2",children:[E.icon,E.label]})})},O))]})]})}
@@ -0,0 +1 @@
1
+ import{jsx as q,jsxs as z}from"react/jsx-runtime";import{Dialog as I,DialogContent as J,DialogHeader as K,DialogTitle as M,DialogTrigger as N}from"@contractspec/lib.ui-kit-web/ui/dialog";import O from"next/link";export function OverviewCard({title:A,summary:B,href:E,preview:F,ctaLabel:G}){return z(I,{children:[q(N,{asChild:!0,children:z("button",{className:"rounded-md border bg-background/50 p-4 text-left shadow-2xs transition hover:bg-accent/40",children:[q("div",{className:"font-medium text-lg",children:A}),q("div",{className:"text-foreground/80",children:B})]})}),z(J,{className:"max-h-[90vh] max-w-2xl overflow-y-auto sm:max-w-3xl",children:[q(K,{children:q(M,{children:A})}),z("div",{className:"space-y-4",children:[F,q("div",{children:q(O,{href:E,className:"inline-flex rounded-md bg-primary px-4 py-2 text-primary-foreground",children:G})})]})]})]})}
@@ -0,0 +1 @@
1
+ export{SkeletonBlock as default,SkeletonBlock}from"./index.web";export*from"./types";
@@ -0,0 +1 @@
1
+ export{SkeletonCircle as default,SkeletonCircle}from"./index.web";export*from"./types";
@@ -0,0 +1 @@
1
+ export{SkeletonList as default,SkeletonList}from"./index.web";export*from"./types";
@@ -0,0 +1 @@
1
+ import{jsx as g,jsxs as E}from"react/jsx-runtime";import{Card as J,CardContent as K}from"@contractspec/lib.ui-kit-web/ui/card";import{cn as D}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as L}from"class-variance-authority";const M=L("",{variants:{emphasis:{default:"",subtle:"bg-muted/20",strong:"bg-primary/5"},density:{compact:"p-3",comfortable:"p-4 md:p-5"}},defaultVariants:{emphasis:"default",density:"comfortable"}});export function StatCard({label:q,value:z,hint:A,icon:B,emphasis:F,density:G,className:H,...I}){return g(J,{className:H,...I,children:E(K,{className:D("flex items-center gap-3",M({emphasis:F,density:G})),children:[B&&g("div",{className:"text-muted-foreground",children:B}),E("div",{className:"min-w-0",children:[g("div",{className:"text-base text-muted-foreground",children:q}),g("div",{className:"truncate font-semibold text-2xl",children:z}),A&&g("div",{className:"text-base text-muted-foreground",children:A})]})]})})}export function StatCardGroup({children:q,className:z}){return g("div",{className:D("grid grid-cols-1 gap-3 md:grid-cols-2 lg:grid-cols-4",z),children:q})}
@@ -0,0 +1 @@
1
+ import{jsx as A,jsxs as M}from"react/jsx-runtime";import{cn as J}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as K}from"class-variance-authority";const L=K("inline-flex items-center gap-1 rounded-md px-2 py-0.5 font-medium text-base",{variants:{tone:{neutral:"bg-muted/40 text-foreground",info:"bg-accent/15 text-accent",success:"bg-green-100 text-green-700",warning:"bg-warning/10 text-warning",danger:"bg-destructive/10 text-destructive"},size:{sm:"text-sm",md:"text-base"}},defaultVariants:{tone:"neutral",size:"md"}});export function StatusChip({tone:B,size:D,icon:g,label:E,className:F,hoverContent:q,...G}){const d=M("span",{className:J(L({tone:B,size:D}),F),...G,children:[g&&A("span",{className:"inline-flex h-4 w-4 items-center justify-center",children:g}),E]});if(!q)return d;try{const{HoverPreview:I}=require("./HoverPreview");return A(I,{trigger:d,content:q})}catch{return d}}
@@ -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 H}from"react/jsx-runtime";import{Tabs as L,TabsContent as I,TabsList as R,TabsTrigger as w}from"@contractspec/lib.ui-kit/ui/tabs";import*as U from"react";import{useThemedPrimitive as G}from"../primitives/themed";export function Tabs({value:q,defaultValue:B,onValueChange:z,className:D,children:A,orientation:F,dir:E,activationMode:W,componentKey:X,themeVariant:Y}){console.log("tabs mobile");const J=G({defaultComponentKey:"Tabs",componentKey:X,themeVariant:Y,className:D}),[Z,O]=U.useState(B??""),Q=q!==void 0,$=Q?q:Z,k=U.useCallback((S)=>{if(!Q)O(S);z?.(S)},[z,O]);return H(L,{...J.props,value:$,onValueChange:k,className:J.className,orientation:F,dir:E,activationMode:W,children:A})}export function TabsList({className:q,children:B,componentKey:z,themeVariant:D}){const A=G({defaultComponentKey:"TabsList",componentKey:z,themeVariant:D,className:q});return H(R,{...A.props,className:A.className,children:B})}export function TabsTrigger({value:q,disabled:B,className:z,children:D,componentKey:A,themeVariant:F}){const E=G({defaultComponentKey:"TabsTrigger",componentKey:A,themeVariant:F,className:z});return H(w,{...E.props,value:q,disabled:B,className:E.className,children:D})}export function TabsContent({value:q,forceMount:B,className:z,children:D,componentKey:A,themeVariant:F}){const E=G({defaultComponentKey:"TabsContent",componentKey:A,themeVariant:F,className:z});return H(I,{...E.props,value:q,forceMount:B?!0:void 0,className:E.className,children:D})}
@@ -0,0 +1 @@
1
+ import{jsx as k,jsxs as g}from"react/jsx-runtime";export function HoverPreviewDoc({docType:D,number:q,title:z,meta:A=[],status:E,amount:B,className:F}){return g("div",{className:["space-y-2",F].filter(Boolean).join(" "),children:[g("div",{className:"flex items-center justify-between",children:[g("div",{className:"truncate font-medium text-sm",children:[D,q?` ${q}`:""]}),E]}),z&&k("div",{className:"truncate text-base text-muted-foreground",children:z}),A.length>0&&k("div",{className:"mt-1 space-y-1 text-base text-muted-foreground",children:A.map((C,G)=>g("div",{className:"flex items-center gap-2",children:[g("span",{className:"whitespace-nowrap",children:[C.label,":"]}),k("span",{className:"truncate",children:C.value})]},G))}),B&&k("div",{className:"pt-1 font-medium text-base",children:B})]})}
@@ -0,0 +1 @@
1
+ import{jsx as e,jsxs as o}from"react/jsx-runtime";export function HoverPreviewMedia({title:t,subtitle:a,media:r,caption:d,className:i}){return o("div",{className:["space-y-2",i].filter(Boolean).join(" "),children:[t&&e("div",{className:"truncate font-medium text-sm",children:t}),a&&e("div",{className:"truncate text-base text-muted-foreground",children:a}),e("div",{className:"rounded-md border bg-card p-1",children:r}),d&&e("div",{className:"text-base text-muted-foreground",children:d})]})}
@@ -0,0 +1 @@
1
+ import{jsx as e,jsxs as a,Fragment as n}from"react/jsx-runtime";export function HoverPreviewSimple({title:r,subtitle:i,lines:c=[],footer:o,className:d}){return a("div",{className:["space-y-2",d].filter(Boolean).join(" "),children:[e("div",{className:"truncate font-medium text-sm",children:r}),i&&e("div",{className:"truncate text-base text-muted-foreground",children:i}),c.length>0&&e("div",{className:"mt-2 space-y-1",children:c.map((t,l)=>a("div",{className:"flex items-center gap-2 text-base text-muted-foreground",children:[t.icon,t.label?a(n,{children:[a("span",{className:"whitespace-nowrap",children:[t.label,":"]}),e("span",{className:"truncate",children:t.value})]}):e("span",{className:"truncate",children:t.value})]},l))}),o&&e("div",{className:"pt-1 text-base text-muted-foreground",children:o})]})}
@@ -0,0 +1 @@
1
+ import{jsx as e,jsxs as d}from"react/jsx-runtime";export function HoverPreviewStats({title:t,stats:o,footer:a,className:c}){return d("div",{className:["space-y-2",c].filter(Boolean).join(" "),children:[t&&e("div",{className:"truncate font-medium text-sm",children:t}),e("div",{className:"grid grid-cols-1 gap-2",children:o.map((i,v)=>d("div",{className:"flex items-baseline justify-between gap-3",children:[e("div",{className:"text-base text-muted-foreground",children:i.label}),e("div",{className:"truncate font-semibold text-sm",children:i.value})]},v))}),a&&e("div",{className:"pt-1 text-base text-muted-foreground",children:a})]})}
@@ -0,0 +1 @@
1
+ import{jsx as e,jsxs as a}from"react/jsx-runtime";export function HoverPreviewUser({avatar:d,name:o,email:t,meta:i=[],actions:c,className:v}){return a("div",{className:["space-y-2",v].filter(Boolean).join(" "),children:[a("div",{className:"flex items-center gap-3",children:[d,a("div",{className:"min-w-0",children:[e("div",{className:"truncate font-medium text-sm",children:o}),t&&e("div",{className:"truncate text-base text-muted-foreground",children:t})]})]}),i.length>0&&e("div",{className:"space-y-1 text-base text-muted-foreground",children:i.map((r,l)=>a("div",{className:"flex items-center gap-2",children:[a("span",{className:"whitespace-nowrap",children:[r.label,":"]}),e("span",{className:"truncate",children:r.value})]},l))}),c&&e("div",{className:"pt-1",children:c})]})}
@@ -0,0 +1 @@
1
+ import{jsx as q,jsxs as A}from"react/jsx-runtime";import{Breadcrumb as K,BreadcrumbItem as M,BreadcrumbLink as O,BreadcrumbList as Q,BreadcrumbPage as T,BreadcrumbSeparator as U}from"@contractspec/lib.ui-kit-web/ui/breadcrumb";import{cn as V}from"@contractspec/lib.ui-kit-web/ui/utils";import*as W from"react";export function AcademyLayout({header:D,toc:E,breadcrumb:v,children:F,rightPanel:G,footer:H,className:J}){return A("div",{className:V("min-h-svh bg-background",J),children:[D,A("div",{className:"mx-auto grid w-full max-w-7xl grid-cols-1 gap-6 px-4 py-6 md:grid-cols-[220px_minmax(0,1fr)_240px]",children:[q("aside",{className:"sticky top-24 hidden self-start md:block",children:E}),A("main",{className:"min-w-0",children:[v&&v.items?.length?q("div",{className:"mb-4",children:q(K,{children:q(Q,{children:v.items.map((z,C)=>A(W.Fragment,{children:[q(M,{children:z.href?q(O,{href:z.href,children:z.label}):q(T,{children:z.label})}),C<v.items.length-1&&q(U,{})]},C))})})}):null,q("article",{className:"prose max-w-none text-foreground",children:F})]}),q("aside",{className:"sticky top-24 hidden self-start lg:block",children:G})]}),H]})}
@@ -0,0 +1 @@
1
+ import{jsx as z,jsxs as A,Fragment as K}from"react/jsx-runtime";import{Separator as G}from"@contractspec/lib.ui-kit-web/ui/separator";import{cn as I}from"@contractspec/lib.ui-kit-web/ui/utils";import{Header as J}from"./Header";export function AppHeader({breadcrumb:B,toolbarRight:C,className:D,...E}){return z("div",{className:I("w-full border-b bg-background/95 backdrop-blur-xs supports-backdrop-filter:bg-background/60",D),children:A("div",{className:"mx-auto w-full max-w-7xl px-2 md:px-4",children:[z(J,{...E}),(B||C)&&A(K,{children:[z(G,{}),A("div",{className:"flex items-center justify-between gap-3 py-2",children:[z("div",{className:"min-w-0 overflow-hidden text-ellipsis",children:B}),z("div",{className:"flex items-center gap-2",children:C})]})]})]})})}
@@ -1 +1 @@
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:"☰"})}),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
+ 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.native";import{SheetMenu as W}from"../native/SheetMenu.native";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:"☰"})}),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})]})}
@@ -0,0 +1 @@
1
+ import{jsx as z,jsxs as D,Fragment as v}from"react/jsx-runtime";import{Breadcrumb as Q,BreadcrumbItem as T,BreadcrumbLink as U,BreadcrumbList as V,BreadcrumbPage as W,BreadcrumbSeparator as X}from"@contractspec/lib.ui-kit-web/ui/breadcrumb";import{Separator as Y}from"@contractspec/lib.ui-kit-web/ui/separator";import{cn as Z}from"@contractspec/lib.ui-kit-web/ui/utils";import*as $ from"react";import{AppSidebar as q}from"./AppSidebar";export function AppLayout({header:K,sidebar:C,breadcrumb:E,children:M,footer:H,className:O}){return D("div",{className:Z("min-h-svh bg-background",O),children:[K,D("div",{className:"mx-auto grid w-full max-w-7xl grid-cols-1 gap-4 px-4 py-4 md:grid-cols-[260px_minmax(0,1fr)]",children:[z("aside",{className:"hidden md:block",children:C?z(q,{sections:C.sections,top:C.top,bottom:C.bottom,className:C.className,density:C.density}):z("div",{})}),D("main",{className:"min-w-0",children:[E&&E.items?.length?z("div",{className:"mb-2",children:z(Q,{children:z(V,{children:E.items.map((G,J)=>D($.Fragment,{children:[z(T,{children:G.href?z(U,{href:G.href,children:G.label}):z(W,{children:G.label})}),J<E.items.length-1&&z(X,{})]},J))})})}):null,M]})]}),H&&D(v,{children:[z(Y,{className:"mt-4"}),H]})]})}
@@ -0,0 +1 @@
1
+ import{jsx as q,jsxs as A}from"react/jsx-runtime";import{Sidebar as X,SidebarContent as Y,SidebarFooter as Z,SidebarGroup as $,SidebarGroupContent as g,SidebarGroupLabel as k,SidebarHeader as F,SidebarInput as H,SidebarMenu as L,SidebarMenuBadge as R,SidebarMenuButton as V,SidebarMenuItem as B,SidebarProvider as C,SidebarRail as I}from"@contractspec/lib.ui-kit-web/ui/sidebar";import{cn as N}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as v}from"class-variance-authority";export function AppSidebar({sections:J,top:K,bottom:O,searchPlaceholder:E="Search…",className:Q,density:T}){const U=v("",{variants:{density:{compact:"text-sm",comfortable:"text-base"}},defaultVariants:{density:"comfortable"}});return q(C,{children:A(X,{className:N(U({density:T}),Q),children:[q(I,{}),A(F,{children:[K,q(H,{placeholder:E,"aria-label":E})]}),q(Y,{children:J.map((D,W)=>A($,{children:[D.title&&q(k,{children:D.title}),q(g,{children:q(L,{children:D.items.map((z)=>A(B,{children:[q(V,{asChild:!!z.href,isActive:!1,children:A("a",{href:z.href,target:z.target,className:"inline-flex items-center gap-2",children:[z.icon,q("span",{children:z.label})]})}),z.badge!=null&&q(R,{children:String(z.badge)})]},z.href))})})]},W))}),q(Z,{children:O})]})})}
@@ -0,0 +1 @@
1
+ import{jsx as q,jsxs as v}from"react/jsx-runtime";import{Empty as W,EmptyContent as X,EmptyDescription as Y,EmptyHeader as Z,EmptyMedia as $,EmptyTitle as k}from"@contractspec/lib.ui-kit-web/ui/empty";import{Button as C}from"../atoms/Button";export function EmptyDataList({emptyListTitle:A,emptyListDescription:F,createButton:O,secondaryButton:P,media:G,mediaVariant:Q="icon",learnMoreHref:g,learnMoreLabel:z,learnMoreEndIcon:J,onLearnMore:R,handleLearnMore:S,className:U}){const K=R??S;return v(W,{className:U,children:[v(Z,{children:[G?q($,{variant:Q,children:G}):null,A?q(k,{children:A}):null,F?q(Y,{children:F}):null]}),q(X,{children:v("div",{className:"flex gap-2",children:[O,P]})}),(g||K)&&z?q(C,{variant:"link",asChild:Boolean(g),className:"text-muted-foreground",size:"sm",onPress:g?void 0:K,children:g?v("a",{href:g,children:[z," ",J]}):v("span",{children:[z," ",J]})}):null]})}
@@ -0,0 +1 @@
1
+ import{jsx as v,jsxs as B}from"react/jsx-runtime";import{Empty as X,EmptyContent as Y,EmptyDescription as Z,EmptyHeader as $,EmptyTitle as k}from"@contractspec/lib.ui-kit-web/ui/empty";import*as q from"react";import{Input as H}from"../atoms/Input";export function EmptySearchResult({emptySearchTitle:F,emtptySearchTitle:G,emptySearchDescription:J,emtptySearchDescription:K,onSearchChange:L,handleSearchChange:M,className:O}){const P=F??G??"No results",z=J??K??"Try another search.",U=L??M,[V,W]=q.useState("");return B(X,{className:O,children:[B($,{children:[v(k,{children:P}),z?v(Z,{children:z}):null]}),v(Y,{children:v(H,{value:V,onChange:(A)=>{W(A.target.value);U?.(A.target.value)},placeholder:"Search…",keyboard:{kind:"search"}})})]})}
@@ -0,0 +1 @@
1
+ import{jsx as v,jsxs as E}from"react/jsx-runtime";import{Accordion as X,AccordionContent as Y,AccordionItem as Z,AccordionTrigger as $}from"@contractspec/lib.ui-kit-web/ui/accordion";import{VStack as K}from"@contractspec/lib.ui-kit-web/ui/stack";import*as R from"react";export function FAQSection({title:L,subtitle:F,children:M,className:P,items:z,accordionType:B="single",collapsible:Q=!0,defaultOpenIndex:G=0,accordionClassName:U}){const D=Array.isArray(z)&&z.length>0,W=R.useMemo(()=>{if(!D)return;if(B==="multiple")return;return`item-${Math.max(0,Math.min((z?.length??1)-1,G))}`},[D,B,G,z]);return v("section",{className:`py-12 sm:py-16 lg:py-24 ${P||""}`,children:E("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:[E(K,{className:"gap-2 text-center",children:[v("h2",{className:"font-bold text-3xl md:text-4xl",children:L}),F?v("p",{className:"mx-auto max-w-2xl text-base text-muted-foreground",children:F}):null]}),v("div",{className:"mx-auto mt-8 max-w-3xl",children:D?v(K,{className:"mt-8",children:v(X,{type:B,collapsible:Q,defaultValue:W,className:U,children:z?.map((H,J)=>E(Z,{value:`item-${J}`,children:[v($,{className:"px-6",children:v("span",{className:"font-medium text-foreground text-lg",children:H.question})}),v(Y,{className:"px-6",children:v("p",{className:"text-muted-foreground",children:H.answer})})]},J))})}):M})]})})}
@@ -0,0 +1 @@
1
+ import{jsx as g,jsxs as z}from"react/jsx-runtime";import{Card as E,CardContent as F}from"@contractspec/lib.ui-kit-web/ui/card";import{Carousel as G,CarouselContent as H,CarouselItem as J,CarouselNext as K,CarouselPrevious as L}from"@contractspec/lib.ui-kit-web/ui/carousel";export function FeatureCarousel({slides:A,className:B}){return g("div",{className:B,children:z(G,{children:[g(H,{children:A.map((q,D)=>g(J,{children:g(E,{children:z(F,{className:"grid grid-cols-1 gap-4 p-6 md:grid-cols-2",children:[z("div",{className:"space-y-2",children:[g("div",{className:"font-semibold text-2xl",children:q.title}),q.description&&g("div",{className:"text-base text-muted-foreground",children:q.description})]}),g("div",{className:"flex items-center justify-center",children:q.media})]})})},D))}),g(L,{}),g(K,{})]})})}
@@ -0,0 +1 @@
1
+ import{jsx as g,jsxs as z}from"react/jsx-runtime";import{VStack as E}from"@contractspec/lib.ui-kit-web/ui/stack";import{cva as F}from"class-variance-authority";const G=F("",{variants:{density:{compact:"py-10",comfortable:"py-12 sm:py-16 lg:py-24"}},defaultVariants:{density:"comfortable"}});export function FeaturesSection({title:A,subtitle:q,children:B,className:C,density:D}){return g("section",{className:[G({density:D}),C].filter(Boolean).join(" "),children:z("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:[z(E,{className:"gap-2 text-center",children:[g("h2",{className:"font-bold text-3xl md:text-4xl",children:A}),q?g("p",{className:"mx-auto max-w-2xl text-base text-muted-foreground",children:q}):null]}),g("div",{className:"mt-10",children:B})]})})}
@@ -0,0 +1 @@
1
+ import{jsx as d,jsxs as A}from"react/jsx-runtime";import{VStack as G}from"@contractspec/lib.ui-kit-web/ui/stack";import{cn as H}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as I}from"class-variance-authority";const J=I("border-t px-4 text-base",{variants:{variant:{default:"",marketing:"bg-muted/30"},density:{compact:"py-4",comfortable:"py-6"}},defaultVariants:{density:"comfortable",variant:"default"}});export function Footer({left:B,center:C,right:D,links:q,className:E,variant:F}){return A("footer",{className:H(J({variant:F}),E),children:[A("div",{className:"grid grid-cols-1 items-center gap-3 sm:grid-cols-3",children:[d("div",{className:"flex items-center gap-3",children:B}),d("div",{className:"text-center text-muted-foreground",children:C}),d(G,{children:D})]}),q&&q.length>0&&d("div",{className:"mt-4 flex flex-wrap items-center justify-center gap-3 text-base text-muted-foreground",children:q.map((z)=>d("a",{href:z.href,className:"hover:text-foreground",children:z.label},String(z.href)))})]})}
@@ -0,0 +1 @@
1
+ import{jsx as M}from"react/jsx-runtime";import{cn as H}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as I}from"class-variance-authority";import{useResponsive as J}from"../../platform/useResponsive";const K=I("grid",{variants:{gap:{sm:"gap-3",md:"gap-4",lg:"gap-6"}},defaultVariants:{gap:"md"}});export function GridLayout({children:B,className:D,columns:z,gap:E}){const{screen:A}=J(),q=A==="desktop"?z?.desktop??1:A==="tablet"?z?.tablet??1:z?.mobile??1,F=q===1?"grid-cols-1":q===2?"grid-cols-2":q===3?"grid-cols-3":q===4?"grid-cols-4":"grid-cols-1";return M("div",{className:H(K({gap:E}),F,D),children:B})}export default GridLayout;
@@ -0,0 +1 @@
1
+ import{jsx as z,jsxs as G,Fragment as U}from"react/jsx-runtime";import{Separator as X}from"@contractspec/lib.ui-kit-web/ui/separator";import{Sheet as Y,SheetContent as Z,SheetTitle as $,SheetTrigger as q}from"@contractspec/lib.ui-kit-web/ui/sheet";import{cn as P}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as Q}from"class-variance-authority";import{Menu as C}from"lucide-react";import{Button as D}from"../atoms/Button";import{ButtonLink as F}from"../atoms/ButtonLink";import{NavMain as A}from"../molecules/NavMain";import{NavUser as R}from"../molecules/NavUser";import{AppSidebar as L}from"./AppSidebar";const T=Q("hidden items-center justify-between gap-4 md:flex",{variants:{density:{compact:"px-3 py-1",comfortable:"px-4 py-2"}},defaultVariants:{density:"comfortable"}}),V=Q("flex items-center justify-between md:hidden",{variants:{density:{compact:"px-2 py-1",comfortable:"px-3 py-2"}},defaultVariants:{density:"comfortable"}});export function DesktopHeader({logo:I,nav:K,userMenu:E,cta:J,className:O,density:W}){return G("header",{className:P(T({density:W}),O),children:[G("div",{className:"flex items-center gap-4",children:[I,z(X,{orientation:"vertical",className:"h-6"}),z(A,{items:K})]}),G("div",{className:"flex items-center gap-2",children:[J&&z(F,{variant:J.variant,href:J.href,children:J.label}),E&&z(R,{...E})]})]})}export function MobileHeader({logo:I,userMenu:K,mobileSidebar:E,className:J,density:O}){return G("header",{className:P(V({density:O}),J),children:[G(Y,{children:[z(q,{asChild:!0,children:z(D,{variant:"ghost",size:"icon","aria-label":"Open menu",children:z(C,{className:"h-5 w-5"})})}),G(Z,{side:"left",className:"w-[300px] p-0",children:[z($,{className:"sr-only",children:"Menu"}),E?z(L,{sections:E.sections,top:E.top,bottom:E.bottom,className:"h-svh"}):z("div",{className:"p-4",children:"No sidebar configured"})]})]}),z("div",{className:"flex-1 px-2",children:I}),z("div",{className:"flex items-center gap-2",children:K&&z(R,{...K})})]})}export function Header(I){return G(U,{children:[z(MobileHeader,{...I}),z(DesktopHeader,{...I})]})}
@@ -0,0 +1 @@
1
+ import{jsx as t}from"react/jsx-runtime";import{useResponsive as a}from"../../platform/useResponsive";import{HeroSection as r}from"./HeroSection";export function HeroResponsive({title:o,subtitle:i,primaryCta:s,secondaryCta:n,className:p}){const{screen:e}=a();return t(r,{title:t("div",{className:`${e==="desktop"?"text-5xl":e==="tablet"?"text-4xl":"text-3xl"}`,children:o}),subtitle:i,primaryCta:s,secondaryCta:n,className:[p,e==="desktop"?"gap-6":e==="tablet"?"gap-4":"gap-3"].filter(Boolean).join(" ")})}
@@ -0,0 +1 @@
1
+ import{jsx as q}from"react/jsx-runtime";import{Hero as G}from"@contractspec/lib.ui-kit-web/ui/marketing/Hero";import{cva as I}from"class-variance-authority";const J=I("relative overflow-hidden bg-linear-to-b from-background to-muted/20",{variants:{density:{compact:"py-12",comfortable:"py-16 sm:py-24 lg:py-32"}},defaultVariants:{density:"comfortable"}});export function HeroSection({title:z,subtitle:A,primaryCta:B,secondaryCta:D,className:E,density:F}){return q("section",{className:[J({density:F}),E].filter(Boolean).join(" "),children:q("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:q(G,{title:z,subtitle:A,primaryCta:B,secondaryCta:D})})})}
@@ -0,0 +1 @@
1
+ import{jsx as q,jsxs as I}from"react/jsx-runtime";import{Card as U,CardContent as W}from"@contractspec/lib.ui-kit-web/ui/card";import{VStack as G}from"@contractspec/lib.ui-kit-web/ui/stack";import{cva as H}from"class-variance-authority";import{useResponsive as X}from"../../platform/useResponsive";const Y=H("",{variants:{density:{compact:"gap-3",comfortable:"gap-4 md:gap-5"}},defaultVariants:{density:"comfortable"}}),Z=H("grid",{variants:{size:{sm:"gap-3",md:"gap-4",lg:"gap-6"}},defaultVariants:{size:"md"}});export function ListCardPage({title:J,subtitle:D,items:K,renderCard:L,className:M,columns:B,density:O,size:P}){const{screen:E}=X(),A=E==="desktop"?B?.desktop??3:E==="tablet"?B?.tablet??2:B?.mobile??1,Q=A===1?"grid-cols-1":A===2?"grid-cols-2":A===3?"grid-cols-3":A===4?"grid-cols-4":"grid-cols-3";return I(G,{className:[Y({density:O}),M].filter(Boolean).join(" "),children:[I(G,{className:"gap-1",children:[q("h1",{className:"font-bold text-2xl md:text-3xl",children:J}),D?q("p",{className:"text-base text-muted-foreground",children:D}):null]}),q("div",{className:[Z({size:P}),Q].join(" "),children:K.map((T,F)=>q(U,{className:"border-none shadow-2xs",children:q(W,{className:"p-4 md:p-5 lg:p-6",children:L(T,F)})},F))})]})}
@@ -0,0 +1 @@
1
+ import{jsx as A,jsxs as K}from"react/jsx-runtime";import{VStack as H}from"@contractspec/lib.ui-kit-web/ui/stack";import{cva as J}from"class-variance-authority";import{useResponsive as Y}from"../../platform/useResponsive";const Z=J("",{variants:{density:{compact:"gap-3",comfortable:"gap-4 md:gap-5 lg:gap-6"}},defaultVariants:{density:"comfortable"}}),$=J("",{variants:{size:{sm:"gap-3",md:"gap-4",lg:"gap-6"}},defaultVariants:{size:"md"}});export function ListGridPage({title:L,subtitle:D,items:M,renderItem:O,className:P,columns:B,density:Q,size:T}){const{screen:E}=Y(),q=E==="desktop"?B?.desktop??3:E==="tablet"?B?.tablet??2:B?.mobile??1,U=`grid ${$({size:T})}`,W=q===1?"grid-cols-1":q===2?"grid-cols-2":q===3?"grid-cols-3":q===4?"grid-cols-4":"grid-cols-3";return K(H,{className:[Z({density:Q}),P].filter(Boolean).join(" "),children:[K(H,{className:"gap-1",children:[A("h1",{className:"font-bold text-2xl md:text-3xl",children:L}),D?A("p",{className:"text-base text-muted-foreground",children:D}):null]}),A("div",{className:`${U} ${W}`,children:M.map((X,F)=>A("div",{children:O(X,F)},F))})]})}
@@ -0,0 +1 @@
1
+ import{jsx as B}from"react/jsx-runtime";import{ListPage as z}from"@contractspec/lib.ui-kit-web/ui/organisms/ListPage";import{useResponsive as A}from"../../platform/useResponsive";export function ListPageResponsive(d){const{screen:h}=A(),q=[d.className,h==="desktop"?"space-y-6":h==="tablet"?"space-y-5":"space-y-4"].filter(Boolean).join(" ");return B(z,{...d,className:q})}
@@ -0,0 +1 @@
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-web/ui/stack";import{Text as G}from"@contractspec/lib.ui-kit-web/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})]})}
@@ -0,0 +1 @@
1
+ import{jsx as z,jsxs as J,Fragment as I}from"react/jsx-runtime";import{NavigationMenu as M,NavigationMenuContent as L,NavigationMenuItem as C,NavigationMenuLink as P,NavigationMenuList as k,NavigationMenuTrigger as N}from"@contractspec/lib.ui-kit-web/ui/navigation-menu";import{Separator as d}from"@contractspec/lib.ui-kit-web/ui/separator";import{Sheet as p,SheetContent as S,SheetHeader as v,SheetTrigger as h}from"@contractspec/lib.ui-kit-web/ui/sheet";import{Box as Y,HStack as W,VStack as b}from"@contractspec/lib.ui-kit-web/ui/stack";import{Text as q}from"@contractspec/lib.ui-kit-web/ui/text";import{cn as D}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as u}from"class-variance-authority";import{Menu as f}from"lucide-react";import*as g from"react";import{Button as y}from"../atoms/Button";import{ButtonLink as F}from"../atoms/ButtonLink";import{CommandSearchTrigger as U}from"../molecules/CommandSearchTrigger";import{LangSwitchDropdown as _}from"../molecules/LangSwitchDropdown";import{MobileNavMenu as l}from"../molecules/MobileNavMenu";import{NavItemCard as w}from"../molecules/NavItemCard";import{NavUser as j}from"../molecules/NavUser";const x=u("flex items-center justify-between gap-4",{variants:{density:{compact:"px-3 py-2",comfortable:"px-4 py-3"}},defaultVariants:{density:"comfortable"}});export function MarketingHeader({logo:V,nav:X=[],navLinkClassName:Z,userMenu:$,cta:A,className:H,density:B,right:O,commandPaletteGroups:K,langSwitchProps:Q}){const[T,G]=g.useState(!1);return z(W,{as:"header",className:D("sticky top-0 z-50 w-full border-b bg-background/95 backdrop-blur-xs supports-backdrop-filter:bg-background/60",H),children:J(W,{className:D("mx-auto w-full max-w-7xl items-center justify-center",x({density:B})),children:[z(b,{className:"flex items-center gap-2 md:hidden",children:J(p,{open:T,onOpenChange:G,children:[z(h,{asChild:!0,children:z(y,{variant:"ghost",size:"icon","aria-label":"Open menu",children:z(f,{className:"h-5 w-5"})})}),J(S,{side:"left",className:"w-[320px] p-4",children:[!!K?.length&&z(v,{children:z(U,{groups:K})}),A&&z(b,{className:"mb-3",children:z(F,{variant:A.variant,size:A.size,href:A.href,onClick:A.onClick,children:z(q,{children:A.label})})}),z(l,{items:X})]})]})}),V,z(W,{className:"hidden items-center gap-4 md:flex",children:X.length>0&&J(I,{children:[z(d,{orientation:"vertical",className:"h-6"}),z(M,{className:"hidden md:flex",children:z(k,{children:X.map((E)=>z(C,{children:E.items&&E.items.length>0?J(I,{children:[z(N,{className:Z,children:E.label}),z(L,{children:z("div",{className:"grid w-[760px] grid-cols-3 gap-3 p-3",children:E.items.map((R)=>z(w,{item:R},R.href))})})]}):z(P,{className:Z,href:E.href||"#",children:E.label})},String(E.key??E.href??E.label)))})})]})}),J(W,{className:"flex items-center gap-2",children:[!!K?.length&&z(Y,{className:"hidden items-center gap-2 md:flex",children:z(U,{groups:K})}),Q?.options?.length>1&&z(_,{value:Q.value,onChange:Q.onChange,options:Q.options}),O&&z(Y,{className:"hidden md:flex",children:O}),A&&z(Y,{className:"hidden md:flex",children:z(F,{variant:A.variant,size:A.size,href:A.href,onClick:A.onClick,children:z(q,{children:A.label})})}),$&&z(j,{...$})]})]})})}
@@ -0,0 +1 @@
1
+ import{jsx as z,jsxs as E,Fragment as O}from"react/jsx-runtime";import{NavigationMenu as X,NavigationMenuContent as Y,NavigationMenuItem as Z,NavigationMenuLink as $,NavigationMenuList as S,NavigationMenuTrigger as T}from"@contractspec/lib.ui-kit-web/ui/navigation-menu";import{Separator as V}from"@contractspec/lib.ui-kit-web/ui/separator";import{cn as K}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as b}from"class-variance-authority";import{ButtonLink as p}from"../atoms/ButtonLink";import{NavItemCard as q}from"../molecules/NavItemCard";import{NavUser as B}from"../molecules/NavUser";const F=b("hidden items-center justify-between gap-4 md:flex",{variants:{density:{compact:"px-3 py-2",comfortable:"px-4 py-3"}},defaultVariants:{density:"comfortable"}});export function MarketingHeaderDesktop({logo:P,nav:G=[],userMenu:H,cta:D,className:Q,density:R,right:W}){return z("div",{className:K("w-full border-b bg-background/95 backdrop-blur-xs supports-backdrop-filter:bg-background/60",Q),children:E("div",{className:K("mx-auto w-full max-w-7xl",F({density:R})),children:[E("div",{className:"flex items-center gap-4",children:[P,G.length>0&&E(O,{children:[z(V,{orientation:"vertical",className:"h-6"}),z(X,{children:z(S,{children:G.map((A)=>z(Z,{children:A.items&&A.items.length>0?E(O,{children:[z(T,{children:A.label}),z(Y,{children:z("div",{className:"grid w-[760px] grid-cols-3 gap-3 p-3",children:A.items.map((J)=>z(q,{item:J},J.href))})})]}):z($,{href:A.href||"#",children:A.label})},String(A.key??A.href??A.label)))})})]})]}),E("div",{className:"flex items-center gap-2",children:[W,D&&z(p,{variant:D.variant,size:D.size,href:D.href,onClick:D.onClick,children:D.label}),H&&z(B,{...H})]})]})})}
@@ -0,0 +1 @@
1
+ import{jsx as q,jsxs as z}from"react/jsx-runtime";import{Sheet as X,SheetContent as Y,SheetFooter as Z,SheetHeader as $,SheetTitle as k,SheetTrigger as B}from"@contractspec/lib.ui-kit-web/ui/sheet";import{VStack as F}from"@contractspec/lib.ui-kit-web/ui/stack";import{cn as H}from"@contractspec/lib.ui-kit-web/ui/utils";import{Menu as O}from"lucide-react";import*as R from"react";import{Button as V}from"../atoms/Button";import{CommandSearchTrigger as b}from"../molecules/CommandSearchTrigger";import{LangSwitchDropdown as D}from"../molecules/LangSwitchDropdown";import{MobileNavMenu as L}from"../molecules/MobileNavMenu";export function MarketingHeaderMobile({logo:I,nav:J=[],className:K,right:Q,commandPaletteGroups:E,langSwitchProps:A}){const[U,W]=R.useState(!1);return q("div",{className:H("w-full border-b bg-background/95 backdrop-blur-xs supports-backdrop-filter:bg-background/60 md:hidden",K),children:z("div",{className:"mx-auto flex w-full max-w-7xl items-center justify-between px-3 py-2",children:[z("div",{className:"flex items-center gap-2",children:[z(X,{open:U,onOpenChange:W,children:[q(B,{asChild:!0,children:q(V,{variant:"ghost",size:"icon","aria-label":"Open menu",children:q(O,{className:"h-5 w-5"})})}),z(Y,{side:"left",className:"w-[320px] p-4",children:[z($,{children:[q(k,{children:"Menu"}),!!E?.length&&q("div",{className:"mb-3",children:q(b,{groups:E,compact:!0})})]}),q(F,{children:q(L,{items:J})}),q(Z,{children:Q})]})]}),I]}),q("div",{className:"flex items-center gap-2",children:A?.options?.length>1&&q(D,{value:A.value,options:A.options,onChange:A.onChange})})]})})}
@@ -0,0 +1 @@
1
+ import{jsx as C,jsxs as D}from"react/jsx-runtime";import{VStack as A}from"@contractspec/lib.ui-kit-web/ui/stack";import{cn as B}from"@contractspec/lib.ui-kit-web/ui/utils";export function MarketingLayout({header:g,children:q,footer:v,className:z}){return D(A,{gap:"none",className:B("min-h-svh bg-background",z),children:[g,C("main",{id:"main",className:"flex-1",children:q}),v]})}
@@ -0,0 +1 @@
1
+ import{jsx as q,jsxs as F}from"react/jsx-runtime";import{Card as K,CardContent as L,CardHeader as Q,CardTitle as U}from"@contractspec/lib.ui-kit-web/ui/card";import{cn as I}from"@contractspec/lib.ui-kit-web/ui/utils";import{RankBadge as V}from"../atoms/RankBadge";import{DimensionScoresCard as W}from"../molecules/DimensionScoresCard";import{StatCard as X}from"../molecules/StatCard";export function ModelComparisonView({models:A,title:G="Model Comparison",className:z}){if(A.length===0)return q(K,{className:z,children:q(L,{className:"py-8 text-center",children:q("p",{className:"text-muted-foreground",children:"No models selected for comparison."})})});return F("div",{className:I("flex flex-col gap-4",z),children:[q("h2",{className:"font-semibold text-xl",children:G}),q("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2 lg:grid-cols-4",children:A.map((v)=>q(X,{label:v.displayName??v.modelId,value:Math.round(v.compositeScore*10)/10,hint:v.providerKey,icon:q(V,{rank:v.rank,previousRank:v.previousRank,size:"sm"})},v.modelId))}),q("div",{className:I("grid gap-4",A.length===1&&"grid-cols-1",A.length===2&&"grid-cols-1 md:grid-cols-2",A.length>=3&&"grid-cols-1 md:grid-cols-2 lg:grid-cols-3"),children:A.map((v)=>q(W,{dimensionScores:v.dimensionScores,title:v.displayName??v.modelId,size:"sm"},v.modelId))}),A.length>=2&&q(Y,{models:A})]})}function Y({models:A}){const G=Array.from(new Set(A.flatMap((z)=>Object.keys(z.dimensionScores)))).sort();if(G.length===0)return null;return F(K,{children:[q(Q,{className:"pb-2",children:q(U,{className:"text-base",children:"Head-to-Head"})}),q(L,{className:"overflow-x-auto",children:F("table",{className:"w-full text-sm",children:[q("thead",{children:F("tr",{className:"border-b",children:[q("th",{className:"py-2 text-left font-medium text-muted-foreground",children:"Dimension"}),A.map((z)=>q("th",{className:"py-2 text-right font-medium text-muted-foreground",children:z.displayName??z.modelId},z.modelId))]})}),F("tbody",{children:[G.map((z)=>{const v=A.map((E)=>E.dimensionScores[z]?.score??null),M=Math.max(...v.filter((E)=>E!==null));return F("tr",{className:"border-b last:border-0",children:[q("td",{className:"py-2 capitalize",children:z}),v.map((E,O)=>{const J=A[O];if(!J)return null;return q("td",{className:I("py-2 text-right tabular-nums",E===M&&v.filter((P)=>P!==null).length>1?"font-semibold text-green-600 dark:text-green-400":""),children:E!=null?(Math.round(E*10)/10).toFixed(1):"–"},J.modelId)})]},z)}),F("tr",{className:"border-t-2 font-semibold",children:[q("td",{className:"py-2",children:"Composite"}),A.map((z)=>q("td",{className:"py-2 text-right tabular-nums",children:(Math.round(z.compositeScore*10)/10).toFixed(1)},z.modelId))]})]})]})})]})}
@@ -0,0 +1 @@
1
+ import{jsx as D}from"react/jsx-runtime";import{PageHeader as B}from"@contractspec/lib.ui-kit-web/ui/page-header";import{useResponsive as C}from"../../platform/useResponsive";export function PageHeaderResponsive(q){const{screen:z}=C(),A=z==="desktop"?"lg":z==="tablet"?"md":"sm";return D(B,{...q,spacing:q.spacing??A})}
@@ -1 +1 @@
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
+ 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.native";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]})]})}
@@ -0,0 +1 @@
1
+ import{jsx as g,jsxs as z}from"react/jsx-runtime";import{Card as H,CardContent as J}from"@contractspec/lib.ui-kit-web/ui/card";import{Carousel as K,CarouselContent as M,CarouselItem as O,CarouselNext as Q,CarouselPrevious as R}from"@contractspec/lib.ui-kit-web/ui/carousel";import{Button as S}from"../atoms/Button";import{ButtonLink as T}from"../atoms/ButtonLink";export function PricingCarousel({tiers:A,className:D}){return g("div",{className:D,children:z(K,{children:[g(M,{children:A.map((q,E)=>g(O,{children:g(H,{className:q.highlighted?"border-primary shadow-lg":void 0,children:z(J,{className:"p-6",children:[g("div",{className:"mb-2 font-medium text-base text-muted-foreground",children:q.name}),g("div",{className:"font-semibold text-3xl",children:q.price}),q.tagline&&g("div",{className:"mt-1 text-base text-muted-foreground",children:q.tagline}),g("ul",{className:"mt-4 space-y-2 text-base",children:q.features.map((F,G)=>z("li",{className:"flex items-start gap-2",children:[g("span",{className:"mt-1 h-1.5 w-1.5 rounded-full bg-primary"}),g("span",{children:F})]},G))}),q.cta&&g("div",{className:"mt-6",children:q.cta.href?g(T,{className:"w-full",href:q.cta.href,children:q.cta.label}):g(S,{className:"w-full",onPress:q.cta.onPress,children:q.cta.label})})]})})},E))}),g(R,{}),g(Q,{})]})})}
@@ -0,0 +1 @@
1
+ import{jsx as d,jsxs as z}from"react/jsx-runtime";import{PricingTable as C}from"@contractspec/lib.ui-kit-web/ui/marketing/PricingTable";export function PricingSection({tiers:A,title:q,subtitle:v,className:B}){return d("section",{className:`py-12 sm:py-16 lg:py-24 ${B||""}`,children:z("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:[q?z("div",{className:"mb-8 text-center",children:[d("h2",{className:"font-bold text-3xl md:text-4xl",children:q}),v?d("p",{className:"mx-auto mt-2 max-w-2xl text-base text-muted-foreground",children:v}):null]}):null,d(C,{tiers:A})]})})}
@@ -0,0 +1 @@
1
+ import{jsx as g,jsxs as z}from"react/jsx-runtime";import{Card as E,CardContent as F}from"@contractspec/lib.ui-kit-web/ui/card";import{Carousel as G,CarouselContent as H,CarouselItem as J,CarouselNext as K,CarouselPrevious as L}from"@contractspec/lib.ui-kit-web/ui/carousel";export function TestimonialCarousel({testimonials:A,className:B}){return g("div",{className:B,children:z(G,{children:[g(H,{children:A.map((q,D)=>g(J,{children:g(E,{children:z(F,{className:"p-6",children:[g("div",{className:"text-lg",children:q.quote}),z("div",{className:"mt-4 flex items-center gap-3",children:[q.avatar,z("div",{className:"text-base",children:[g("div",{className:"font-medium",children:q.author}),q.role&&g("div",{className:"text-muted-foreground",children:q.role})]})]})]})})},D))}),g(L,{}),g(K,{})]})})}
@@ -0,0 +1 @@
1
+ import{useThemedPrimitive as l,useTranslatedText as m}from"./themed";export function optionValue(e){return typeof e==="string"?e:String(e??"")}export function inputValue(e){if(typeof e==="string")return e;if(typeof e==="object"&&e!==null&&"currentTarget"in e){const t=e.currentTarget;if(typeof t==="object"&&t!==null&&"value"in t)return optionValue(t.value)}return optionValue(e)}export function useThemedTextField({defaultComponentKey:e,componentKey:t,themeVariant:n,className:o,style:i,placeholder:s,placeholderI18n:a,ariaLabelI18n:p}){const d=l({defaultComponentKey:e,componentKey:t,themeVariant:n,className:o,style:i}),r=m();return{themed:d,placeholder:r(a??s),ariaLabel:r(p)}}
@@ -0,0 +1 @@
1
+ import{cn as H}from"@contractspec/lib.ui-kit-core/utils";import*as x from"react";import{resolveTranslationNode as I,resolveTranslationString as J,useDesignSystemTranslation as z}from"../../i18n/translation";import{componentTokensToCssVars as L,useComponentTheme as M}from"../../theme/runtime";export function useThemedPrimitive({defaultComponentKey:j,componentKey:q,themeVariant:A,className:B,style:E}){const w=M(q??j,A),F=typeof w.props.className==="string"?w.props.className:void 0,G=L(w.tokens);return{props:w.props,className:H(F,B),style:{...G,...E}}}export function useTranslatedText(){const j=z();return x.useCallback((q)=>J(q,j),[j])}export function useTranslatedNode(){const j=z();return x.useCallback((q)=>I(q,j),[j])}
@@ -0,0 +1 @@
1
+ import{jsx as X}from"react/jsx-runtime";import{createContext as N,useCallback as Q,useContext as U,useEffect as V,useState as W}from"react";const B="package-manager-preference",D=N(null);export function PackageManagerProvider({children:F,defaultPreference:I="bun"}){const[J,z]=W(I);V(()=>{try{const q=localStorage.getItem(B);if(q&&["bun","npm","yarn","pnpm"].includes(q))z(q)}catch{}},[]);const L=Q((q)=>{z(q);try{localStorage.setItem(B,q)}catch{}},[]);return X(D.Provider,{value:{preference:J,setPreference:L},children:F})}export function usePackageManager(){return U(D)}
@@ -0,0 +1 @@
1
+ export*from"./index.web";export*from"./types";
@@ -1 +1 @@
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
+ import{jsx as k,jsxs as D,Fragment as q}from"react/jsx-runtime";import{FiltersToolbar as X}from"../../../molecules/FiltersToolbar.native";import{FlatListScreen as Y}from"../../../native/FlatListScreen.native";import{EmptyDataList as Z}from"../../../organisms/EmptyDataList.native";import{PageHeaderResponsive as $}from"../../../organisms/PageHeaderResponsive.native";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})}
@@ -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
+ import{jsx as J}from"react/jsx-runtime";import{Text as U}from"@contractspec/lib.ui-kit/ui/text";import{BlockQuote as W,Code as X,H1 as Y,H2 as Z,H3 as $,H4 as b,Large as B,Lead as M,Muted as Q,P as S,Small as k}from"@contractspec/lib.ui-kit/ui/typography";import{useThemedPrimitive as w}from"../primitives/themed";function I({defaultComponentKey:z,componentKey:A,themeVariant:E,className:D}){return w({defaultComponentKey:z,componentKey:A,themeVariant:E,className:D})}export function Text({componentKey:z,themeVariant:A,className:E,...D}){const F=I({defaultComponentKey:"Text",componentKey:z,themeVariant:A,className:E});return J(U,{...F.props,...D,className:F.className})}function q(z,A){return function E({componentKey:D,themeVariant:F,className:O,...R}){const G=I({defaultComponentKey:A,componentKey:D,themeVariant:F,className:O});return J(z,{...G.props,...R,className:G.className})}}export const H1=q(Y,"H1"),H2=q(Z,"H2"),H3=q($,"H3"),H4=q(b,"H4"),P=q(S,"P"),Lead=q(M,"Lead"),Large=q(B,"Large"),Small=q(k,"Small"),Muted=q(Q,"Muted"),Code=q(X,"Code"),BlockQuote=q(W,"BlockQuote");
@@ -0,0 +1 @@
1
+ export{BlockQuote,Code,H1,H2,H3,H4,Large,Lead,Muted,P,Small,Text}from"./Typography";
@@ -0,0 +1 @@
1
+ import{jsx as A,jsxs as G}from"react/jsx-runtime";import{cn as K}from"@contractspec/lib.ui-kit-web/ui/utils";import{resolveTranslationNode as F,useDesignSystemTranslation as L}from"../../i18n/translation";import{VisualizationCard as M}from"./VisualizationCard";export function ComparisonView({items:H,title:I="Comparison",description:B,className:J}){const E=L();return G("section",{className:K("space-y-4",J),children:[G("div",{className:"space-y-1",children:[A("h3",{className:"font-semibold text-lg",children:F(I,E)}),B?A("p",{className:"text-muted-foreground text-sm",children:F(B,E)}):null]}),A("div",{className:"grid grid-cols-1 gap-4 lg:grid-cols-2",children:H.map((q)=>A(M,{className:q.className,data:q.data,description:q.description,footer:q.footer,height:q.height,spec:q.spec,title:q.title},q.key))})]})}
@@ -1 +1 @@
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
+ 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.native";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))]})}
@@ -0,0 +1 @@
1
+ import{jsx as A,jsxs as G}from"react/jsx-runtime";import{cn as K}from"@contractspec/lib.ui-kit-web/ui/utils";import{resolveTranslationNode as F,useDesignSystemTranslation as L}from"../../i18n/translation";import{VisualizationCard as M}from"./VisualizationCard";export function TimelineView({items:H,title:I="Timeline",description:B,className:J}){const E=L();return G("section",{className:K("space-y-4",J),children:[G("div",{className:"space-y-1",children:[A("h3",{className:"font-semibold text-lg",children:F(I,E)}),B?A("p",{className:"text-muted-foreground text-sm",children:F(B,E)}):null]}),A("div",{className:"space-y-4",children:H.map((q)=>A(M,{className:q.className,data:q.data,description:q.description,footer:q.footer,height:q.height,spec:q.spec,title:q.title},q.key))})]})}
@@ -1 +1 @@
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
+ 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.native";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))]})}
@@ -0,0 +1 @@
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-web/ui/card";import{cn as k}from"@contractspec/lib.ui-kit-web/ui/utils";import{resolveTranslationNode as F,resolveTranslationString as H,useDesignSystemTranslation as b}from"../../i18n/translation";import{VisualizationRenderer as z}from"./VisualizationRenderer";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,{className:"gap-2",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]})}
@@ -0,0 +1 @@
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 b}from"@contractspec/lib.ui-kit/ui/utils";import{resolveTranslationNode as k,resolveTranslationString as F,useDesignSystemTranslation as H}from"../../i18n/translation";import{VisualizationRenderer as z}from"./VisualizationRenderer.native";export function VisualizationCard({spec:E,data:K,title:L,description:M,footer:G,className:O,contentClassName:P,height:Q}){const I=H(),A=L??k(E.meta.title,I),B=M??F(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:b(A||B?"pt-0":"",P),children:q(z,{data:K,height:Q,spec:E})}),G?q(Y,{children:G}):null]})}
@@ -0,0 +1 @@
1
+ import{jsx as z}from"react/jsx-runtime";import{cn as v}from"@contractspec/lib.ui-kit-web/ui/utils";export function VisualizationGrid({children:g,className:q}){return z("div",{className:v("grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3",q),children:g})}
@@ -0,0 +1 @@
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-web/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})}
File without changes
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1 @@
1
+ export*from"./components/forms/controls";
@@ -0,0 +1 @@
1
+ import{defineFeature as g}from"@contractspec/lib.contracts-spec/features";export const DesignSystemFeature=g({meta:{key:"libs.design-system",version:"1.0.0",title:"Design System",description:"Design tokens and theming primitives",domain:"design-system",owners:["@contractspec-core"],tags:["package","libs","design-system"],stability:"experimental"}});
@@ -0,0 +1 @@
1
+ export*from"./components/forms";
@@ -0,0 +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}}
@@ -0,0 +1 @@
1
+ import{jsx as g}from"react/jsx-runtime";import*as a from"react";const l=a.createContext(void 0);export function DesignSystemTranslationProvider({children:e,resolver:n}){return g(l.Provider,{value:n,children:e})}export function useDesignSystemTranslation(){return a.useContext(l)}export function resolveTranslationString(e,n){if(!e)return e;return n?.(e)??e}export function resolveTranslationNode(e,n){return typeof e==="string"?resolveTranslationString(e,n):e}export function createTranslationResolver({registry:e,locale:n,fallbackLocale:o,specKeys:c=[]}){return(i)=>{const r=i.match(/^([^:]+)::(.+)$/);if(r?.[1]&&r[2]){const[,s,t]=r;return e.getWithFallback(s,t,n,o)?.message.value}for(const s of c){const t=e.getWithFallback(s,i,n,o);if(t)return t.message.value}return}}
@@ -0,0 +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{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
+ function w(h){if(!h)return;switch(h){case"email":return"email";case"url":return"url";case"username":return"username";case"new-password":return"new-password";case"current-password":return"password";case"one-time-code":return"otp";case"tel":case"tel-country-code":case"tel-national":case"tel-area-code":case"tel-local":case"tel-local-prefix":case"tel-local-suffix":case"tel-extension":return"tel";case"postal-code":case"cc-number":case"cc-csc":case"bday-day":case"bday-month":case"bday-year":return"int";case"cc-exp":case"cc-exp-month":case"cc-exp-year":return"numbers-and-punctuation";case"bday":return"date";default:return"text"}}function x(h,j){if(!j)return;if(["name","given-name","additional-name","family-name","honorific-prefix","honorific-suffix","nickname","organization","organization-title","cc-name","cc-given-name","cc-additional-name","cc-family-name"].includes(j))h.autoCapitalize="words";if(["username","new-password","current-password","one-time-code","email","url"].includes(j))h.autoCapitalize="none"}function z(h,j){if(!j)return;const q={name:"name","given-name":"givenName","additional-name":"middleName","family-name":"familyName",username:"username","current-password":"password","new-password":"newPassword",email:"emailAddress",url:"URL",tel:"telephoneNumber","address-line1":"streetAddressLine1","address-line2":"streetAddressLine2","postal-code":"postalCode",organization:"organizationName","organization-title":"jobTitle","one-time-code":"oneTimeCode"}[j];if(q)h.textContentType=q;if(["name","given-name","additional-name","family-name","honorific-prefix","honorific-suffix","nickname","organization","organization-title","cc-name","cc-given-name","cc-additional-name","cc-family-name"].includes(j))h.autoCapitalize="words";if(["username","new-password","current-password","one-time-code","email","url"].includes(j))h.autoCapitalize="none"}export function mapKeyboardToWeb(h){const j=h?.kind??w(h?.autoComplete)??"text",g={};switch(j){case"password":g.type="password";g.autoCapitalize="none";g.autoComplete=h?.autoComplete??"current-password";if(h?.autoCorrect!=null)g.autoCorrect=h.autoCorrect;break;case"new-password":g.type="password";g.autoCapitalize="none";g.autoComplete=h?.autoComplete??"new-password";if(h?.autoCorrect!=null)g.autoCorrect=h.autoCorrect;break;case"username":g.type="text";g.autoCapitalize="none";g.autoComplete=h?.autoComplete??"username";break;case"email":g.type="email";g.inputMode="email";g.autoCapitalize="none";g.autoComplete=h?.autoComplete??"email";break;case"url":g.type="url";g.inputMode="url";g.autoComplete=h?.autoComplete??"url";break;case"search":g.type="search";g.inputMode="search";g.enterKeyHint=h?.enterKeyHint??"search";g.autoComplete=h?.autoComplete??"off";break;case"phone":case"tel":g.type="tel";g.inputMode="tel";g.autoComplete=h?.autoComplete??"tel";break;case"number":case"int":g.type="text";g.inputMode="numeric";g.pattern="[0-9]*";break;case"decimal":g.type="text";g.inputMode="decimal";g.step="any";break;case"numbers-and-punctuation":g.type="text";g.inputMode="text";g.pattern="[0-9.,-]*";break;case"otp":g.type="text";g.inputMode="numeric";g.autoComplete=h?.autoComplete??"one-time-code";g.autoCapitalize="none";break;case"name":g.type="text";g.autoComplete=h?.autoComplete??"name";g.autoCapitalize=h?.autoCapitalize??"words";break;case"given-name":g.type="text";g.autoComplete=h?.autoComplete??"given-name";g.autoCapitalize=h?.autoCapitalize??"words";break;case"family-name":g.type="text";g.autoComplete=h?.autoComplete??"family-name";g.autoCapitalize=h?.autoCapitalize??"words";break;case"address-line1":g.type="text";g.autoComplete=h?.autoComplete??"address-line1";break;case"address-line2":g.type="text";g.autoComplete=h?.autoComplete??"address-line2";break;case"postal-code":g.type="text";g.inputMode="numeric";g.pattern="[0-9]*";g.autoComplete=h?.autoComplete??"postal-code";break;case"cc-number":g.type="text";g.inputMode="numeric";g.pattern="[0-9]*";g.autoComplete=h?.autoComplete??"cc-number";break;case"cc-exp":g.type="text";g.inputMode="numeric";g.pattern="[0-9/]*";g.autoComplete=h?.autoComplete??"cc-exp";break;case"cc-csc":g.type="text";g.inputMode="numeric";g.pattern="[0-9]*";g.autoComplete=h?.autoComplete??"cc-csc";break;case"off":g.type="text";g.autoComplete="off";break;case"date":g.type="date";g.inputMode="date";g.pattern="[0-9./-]*";break;default:g.type="text";break}if(h?.autoCapitalize)g.autoCapitalize=h.autoCapitalize;if(h?.autoComplete)g.autoComplete=h.autoComplete;if(h?.autoCorrect!=null)g.autoCorrect=h.autoCorrect;if(h?.enterKeyHint)g.enterKeyHint=h.enterKeyHint;x(g,h?.autoComplete);return g}export function mapKeyboardToNative(h){const j=h?.kind??w(h?.autoComplete)??"text",g={};switch(j){case"password":g.secureTextEntry=!0;g.textContentType="password";g.keyboardType="default";g.autoCapitalize="none";g.autoComplete=h?.autoComplete??"password";break;case"new-password":g.secureTextEntry=!0;g.textContentType="newPassword";g.keyboardType="default";g.autoCapitalize="none";g.autoComplete=h?.autoComplete??"new-password";break;case"username":g.textContentType="username";g.keyboardType="default";g.autoCapitalize="none";g.autoComplete=h?.autoComplete??"username";break;case"email":g.keyboardType="email-address";g.textContentType="emailAddress";g.autoCapitalize="none";g.autoComplete=h?.autoComplete??"email";break;case"url":g.keyboardType="url";g.textContentType="URL";g.autoComplete=h?.autoComplete??"url";break;case"search":g.keyboardType="default";g.returnKeyType="search";g.autoComplete=h?.autoComplete??"off";break;case"phone":case"tel":g.keyboardType="phone-pad";g.textContentType="telephoneNumber";g.autoComplete=h?.autoComplete??"tel";break;case"number":case"int":g.keyboardType="number-pad";break;case"decimal":g.keyboardType="decimal-pad";break;case"numbers-and-punctuation":g.keyboardType="numbers-and-punctuation";break;case"otp":g.keyboardType="number-pad";g.textContentType="oneTimeCode";g.autoComplete=h?.autoComplete??"one-time-code";g.autoCapitalize="none";break;case"name":g.textContentType="name";g.autoCapitalize="words";g.autoComplete=h?.autoComplete??"name";break;case"given-name":g.textContentType="givenName";g.autoCapitalize="words";g.autoComplete=h?.autoComplete??"given-name";break;case"family-name":g.textContentType="familyName";g.autoCapitalize="words";g.autoComplete=h?.autoComplete??"family-name";break;case"address-line1":g.textContentType="streetAddressLine1";g.autoComplete=h?.autoComplete??"address-line1";break;case"address-line2":g.textContentType="streetAddressLine2";g.autoComplete=h?.autoComplete??"address-line2";break;case"postal-code":g.keyboardType="numbers-and-punctuation";g.textContentType="postalCode";g.autoComplete=h?.autoComplete??"postal-code";break;case"cc-number":g.keyboardType="number-pad";g.textContentType="creditCardNumber";g.autoComplete=h?.autoComplete??"cc-number";break;case"cc-exp":g.keyboardType="numbers-and-punctuation";g.autoComplete=h?.autoComplete??"cc-exp";break;case"cc-csc":g.keyboardType="number-pad";g.autoComplete=h?.autoComplete??"cc-csc";break;case"off":g.autoComplete="off";break;case"date":g.keyboardType="default";break;default:g.keyboardType="default";break}if(h?.autoCapitalize)g.autoCapitalize=h.autoCapitalize;if(h?.autoCorrect!=null)g.autoCorrect=h.autoCorrect;if(h?.enterKeyHint){const q={enter:"default",done:"done",go:"go",next:"next",search:"search",send:"send"};g.returnKeyType=q[h.enterKeyHint]??"default"}z(g,h?.autoComplete);return g}
@@ -0,0 +1 @@
1
+ import{clsx as e}from"clsx";import{twMerge as t}from"tailwind-merge";export function cn(...r){return t(e(r))}
@@ -0,0 +1 @@
1
+ export*from"./components/list";
@@ -0,0 +1 @@
1
+ import*as o from"react";export function useColorScheme(){const[r,c]=o.useState("light");o.useEffect(()=>{if(typeof window>"u"||!window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),t=()=>c(e.matches?"dark":"light");t();e.addEventListener?.("change",t);return()=>e.removeEventListener?.("change",t)},[]);return r}
@@ -0,0 +1 @@
1
+ import*as n from"react";export function useReducedMotion(){const[d,c]=n.useState(!1);n.useEffect(()=>{if(typeof window>"u"||!window.matchMedia)return;const e=window.matchMedia("(prefers-reduced-motion: reduce)"),t=()=>c(e.matches);t();e.addEventListener?.("change",t);return()=>e.removeEventListener?.("change",t)},[]);return d}
@@ -0,0 +1 @@
1
+ import*as t from"react";const u={sm:640,md:768,lg:1024,xl:1280};export function useResponsive(s){const e=t.useMemo(()=>({...u,...s}),[s]),[n,d]=t.useState(typeof window<"u"?window.innerWidth:e.md);t.useEffect(()=>{if(typeof window>"u")return;const r=()=>d(window.innerWidth);window.addEventListener("resize",r);return()=>window.removeEventListener("resize",r)},[]);const i=n>=e.sm,m=n>=e.md,o=n>=e.lg,c=n>=e.xl;return{width:n,breakpoints:e,isSM:i,isMD:m,isLG:o,isXL:c,screen:o?"desktop":i?"tablet":"mobile"}}
@@ -0,0 +1 @@
1
+ export const DEFAULT_BREAKPOINTS={sm:640,md:768,lg:1024,xl:1280};export function withPlatformUI(j){const q=j.platform??"web",y={...DEFAULT_BREAKPOINTS,...j.breakpoints};return{platform:q,tokens:j.tokens,breakpoints:y}}
@@ -0,0 +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 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})});
@@ -0,0 +1 @@
1
+ import{jsx as q,jsxs as Z}from"react/jsx-runtime";import{Input as D}from"../../components/atoms/Input";import{Select as Q}from"../../components/forms/controls/Select";import{VStack as U}from"../../components/layout/Stack";import{inputValue as G,optionValue as W}from"../../components/primitives/control";import{useTranslatedText as Y}from"../../components/primitives/themed";import{FORM_FALLBACK_TEXT as H,updateAddress as J,updatePhone as N}from"./values";export const AddressField=(b)=>{const z=Y();return Z(U,{gap:"sm",children:[q(D,{value:b.value?.line1??"",onChange:(g)=>b.onChange?.(J(b.value,"line1",G(g))),placeholder:z(b.parts?.placeholdersI18n?.line1??H.addressLine1),readOnly:b.readOnly,disabled:b.disabled}),q(D,{value:b.value?.line2??"",onChange:(g)=>b.onChange?.(J(b.value,"line2",G(g))),placeholder:z(b.parts?.placeholdersI18n?.line2??H.addressLine2),readOnly:b.readOnly,disabled:b.disabled}),q(D,{value:b.value?.city??"",onChange:(g)=>b.onChange?.(J(b.value,"city",G(g))),placeholder:z(b.parts?.placeholdersI18n?.city??H.city),readOnly:b.readOnly,disabled:b.disabled}),q(D,{value:b.value?.region??"",onChange:(g)=>b.onChange?.(J(b.value,"region",G(g))),placeholder:z(b.parts?.placeholdersI18n?.region??H.region),readOnly:b.readOnly,disabled:b.disabled}),q(D,{value:b.value?.postalCode??"",onChange:(g)=>b.onChange?.(J(b.value,"postalCode",G(g))),placeholder:z(b.parts?.placeholdersI18n?.postalCode??H.postalCode),readOnly:b.readOnly,disabled:b.disabled}),b.countryOptions?.length?q(Q,{value:b.value?.countryCode??"",onChange:(g)=>b.onChange?.(J(b.value,"countryCode",W(g))),options:b.countryOptions,disabled:b.disabled||b.readOnly}):q(D,{value:b.value?.countryCode??"",onChange:(g)=>b.onChange?.(J(b.value,"countryCode",G(g))),placeholder:z(b.parts?.placeholdersI18n?.countryCode??H.countryCode),readOnly:b.readOnly,disabled:b.disabled})]})},PhoneField=(b)=>{const z=Y();return Z(U,{gap:"sm",children:[b.countryOptions?.length?q(Q,{value:b.value?.countryCode??"",onChange:(g)=>b.onChange?.(N(b.value,"countryCode",W(g))),options:b.countryOptions,disabled:b.disabled||b.readOnly}):q(D,{value:b.value?.countryCode??"",onChange:(g)=>b.onChange?.(N(b.value,"countryCode",G(g))),placeholder:z(b.parts?.placeholdersI18n?.countryCode??H.countryCode),readOnly:b.readOnly,disabled:b.disabled}),q(D,{value:b.value?.nationalNumber??"",onChange:(g)=>b.onChange?.(N(b.value,"nationalNumber",G(g))),placeholder:z(b.parts?.placeholdersI18n?.nationalNumber??H.phoneNumber),readOnly:b.readOnly,disabled:b.disabled}),q(D,{value:b.value?.extension??"",onChange:(g)=>b.onChange?.(N(b.value,"extension",G(g))),placeholder:z(b.parts?.placeholdersI18n?.extension??H.extension),readOnly:b.readOnly,disabled:b.disabled})]})};
@@ -0,0 +1 @@
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 const FORM_FALLBACK_TEXT={addressLine1:"Address line 1",addressLine2:"Address line 2",city:"City",countryCode:"Country code",extension:"Extension",phoneNumber:"Phone number",postalCode:"Postal code",region:"Region"};export function updateAddress(e,o,n){return{line1:e?.line1??"",line2:e?.line2,city:e?.city,region:e?.region,postalCode:e?.postalCode,countryCode:e?.countryCode,[o]:n}}export function updatePhone(e,o,n){return{countryCode:e?.countryCode??"",nationalNumber:e?.nationalNumber??"",extension:e?.extension,e164:e?.e164,[o]:n}}
@@ -0,0 +1 @@
1
+ export{formRenderer}from"./form-contract/renderer";
@@ -0,0 +1 @@
1
+ export*from"./form-contract";
@@ -0,0 +1 @@
1
+ import{mapTokensForPlatform as f}from"./tokenBridge";import{defaultTokens as T}from"./tokens";function m(e,o){if(!o)return e;const n={...e},t=n;for(const[s,r]of Object.entries(o))if(r?.value!=null)t[s]=r.value;return n}export function mergeThemeTokens(e,o){if(!o)return e;return{...e,colors:m(e.colors,o.colors),radii:m(e.radii,o.radii),space:m(e.space,o.space),typography:m(e.typography,o.typography)}}function a(e,o){if(!o?.targets?.length)return!0;return o.targets.includes(e.target)}export function resolveThemeSpecTokens(e,o,n=T){let t=mergeThemeTokens(n,e.tokens);const s=o?.mode;if(s)t=mergeThemeTokens(t,e.modes?.[s]?.tokens);for(const r of e.overrides??[])if(a(r,o)){t=mergeThemeTokens(t,r.tokens);if(s)t=mergeThemeTokens(t,r.modes?.[s]?.tokens)}return t}export function resolveThemeRefTokens(e,o,n){const t=e.get(o.key,o.version);if(!t)return T;const s=t.meta.extends?resolveThemeRefTokens(e,t.meta.extends,n):T;return resolveThemeSpecTokens(t,n,s)}export function resolveThemeModeTokens(e,o,n,t){if("tokens"in e){const i=e,h=o,c=n,d=t;return resolveThemeSpecTokens(i,{...c,mode:h},d??T)}return resolveThemeRefTokens(e,o,{...t,mode:n})}export function resolvePlatformTheme(e,o,n,t){if("tokens"in e){const i=e,h=o,c=resolveThemeSpecTokens(i,n);return f(h,c)}const s=e,r=o,u=n,l=resolveThemeRefTokens(s,r,t);return f(u,l)}
@@ -0,0 +1 @@
1
+ export*from"./contracts";export*from"./runtime";export*from"./tailwind";export{mapTokensForPlatform}from"./tokenBridge";export*from"./tokens";export*from"./variants";
@@ -0,0 +1 @@
1
+ import{resolveThemeModeTokens as m}from"./contracts";import{themeSpecToCssVariables as u}from"./tailwind";import{defaultTokens as a}from"./tokens";export function resolveRuntimeTokens({tokens:e,theme:n,registry:o,themeRef:t,context:r,mode:s}){if(n)return m(n,s,r,e??a);if(o&&t)return m(o,t,s,r);return e??a}function d(e,n){if(!n?.targets?.length)return!0;return n.targets.includes(e.target)}function c(...e){const n=new Map;for(const o of e)for(const t of o??[]){const r=n.get(t.component);n.set(t.component,{component:t.component,variants:{...r?.variants,...t.variants}})}return n.size?[...n.values()]:void 0}function p(e,n){const o=n?.mode,t=(e.overrides??[]).filter((r)=>d(r,n)).flatMap((r)=>[r.components,o?r.modes?.[o]?.components:void 0]);return c(e.components,o?e.modes?.[o]?.components:void 0,...t)}function f(e,n,o){const t=e.get(n.key,n.version);if(!t)return;const r=t.meta.extends?f(e,t.meta.extends,o):void 0;return c(r,p(t,o))}export function resolveRuntimeComponents({theme:e,registry:n,themeRef:o,context:t}){if(e)return p(e,t);if(n&&o)return f(n,o,t);return}export function resolveRuntimeCssVariables({theme:e,registry:n,themeRef:o,context:t,mode:r}){if(e)return u(e,{context:t}).modes[r];if(n&&o)return u(n,o,{context:t}).modes[r];return}export function componentTokensToCssVars(e){if(!e)return;const n={};for(const[o,t]of Object.entries(e)){const r=t??{};for(const[s,i]of Object.entries(r))if(i?.value!=null)n[`--ds-${T(o)}-${l(s)}`]=i.value}return n}function T(e){if(e==="colors")return"color";if(e==="radii")return"radius";return e}function l(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[\s_.]+/g,"-").toLowerCase()}
@@ -0,0 +1 @@
1
+ import{jsx as f}from"react/jsx-runtime";import*as s from"react";import{componentTokensToCssVars,resolveRuntimeComponents as C,resolveRuntimeCssVariables as g,resolveRuntimeTokens as v}from"./runtime-resolvers";import{mapTokensForPlatform as x}from"./tokenBridge";const l=s.createContext(void 0);export function DesignSystemThemeProvider({children:r,platform:t="web",tokens:i,theme:e,registry:m,themeRef:p,targets:a,mode:n="light",applyCssVariables:h}){const o=s.useMemo(()=>a?.length?{targets:a,mode:n}:{mode:n},[a,n]),T=s.useMemo(()=>v({tokens:i,theme:e,registry:m,themeRef:p,context:o,mode:n}),[i,e,m,p,o,n]),u=s.useMemo(()=>C({theme:e,registry:m,themeRef:p,context:o}),[e,m,p,o]),c=s.useMemo(()=>g({theme:e,registry:m,themeRef:p,context:o,mode:n}),[e,m,p,o,n]),d=s.useMemo(()=>({platform:t,tokens:T,platformTokens:x(t,T),components:u,mode:n,cssVariables:c,context:o}),[t,T,u,n,c,o]),k=h&&c?f("div",{style:c,children:r}):r;return f(l.Provider,{value:d,children:k})}export function useDesignSystemTheme(){return s.useContext(l)}function S(r,t,i){return r?.find((e)=>e.component===t)?.variants?.[i]}export function useComponentTheme(r,t="default"){const i=useDesignSystemTheme(),e=S(i?.components,r,t);return{props:e?.props??{},tokens:e?.tokens}}export{componentTokensToCssVars};
@@ -0,0 +1 @@
1
+ function n(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[\s_.]+/g,"-").toLowerCase()}function c(e){const r={};for(const o of Object.keys(e.colors)){if(o.endsWith("Foreground"))continue;const t=n(o),s=`${o}Foreground`,i=`var(--ds-color-${t})`;r[t]=s in e.colors?{DEFAULT:i,foreground:`var(--ds-color-${n(s)})`}:i}return r}export function themeSpecToTailwindTheme(e){return{colors:c(e),borderRadius:Object.fromEntries(Object.keys(e.radii).map((r)=>[n(r),`var(--ds-radius-${n(r)})`])),spacing:Object.fromEntries(Object.keys(e.space).map((r)=>[n(r),`var(--ds-space-${n(r)})`])),fontSize:Object.fromEntries(Object.keys(e.typography).map((r)=>[n(r),`var(--ds-typography-${n(r)})`]))}}export function themeSpecToTailwindPreset(e){return{darkMode:["class"],theme:{extend:themeSpecToTailwindTheme(e)}}}
@@ -0,0 +1,9 @@
1
+ const a=["light","dark"];function n(e,s){const r=Object.entries(s).sort(([t],[i])=>t.localeCompare(i)).map(([t,i])=>` ${t}: ${i};`).join(`
2
+ `);return`${e} {
3
+ ${r}
4
+ }`}function l(e){return Object.assign({},...Object.values(e.modes))}function d(e){if(e.startsWith("--ds-color-"))return`--color-${e.slice(11)}`;if(e.startsWith("--ds-radius-"))return`--radius-${e.slice(12)}`;if(e.startsWith("--ds-space-"))return`--spacing-${e.slice(11)}`;if(e.startsWith("--ds-typography-"))return`--text-${e.slice(16)}`;return}function o(e){return`@theme inline {
5
+ ${Object.keys(l(e)).sort().flatMap((r)=>{const t=d(r);return t?[` ${t}: var(${r});`]:[]}).join(`
6
+ `)}
7
+ }`}export function themeSpecToTailwindCss(e,s={}){return[s.includeCustomVariant?"@custom-variant dark (&:where(.dark, .dark *));":void 0,n(s.rootSelector??":root",e.light),n(s.darkSelector??".dark",e.dark),...Object.entries(e.modes).filter(([t])=>!a.includes(t)).map(([t,i])=>n(`[data-theme="${t}"]`,i)),s.includeTheme===!1?void 0:o(e)].filter(Boolean).join(`
8
+
9
+ `)}