@contractspec/lib.design-system 3.11.2 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/browser/components/atoms/InputPassword.js +1 -0
- package/dist/browser/components/forms/controls/index.js +1 -1
- package/dist/browser/components/legal/templates/ContactTemplate.js +1 -1
- package/dist/browser/components/list/List.js +1 -0
- package/dist/browser/components/list/index.js +1 -0
- package/dist/browser/components/molecules/Tabs.js +1 -0
- package/dist/browser/components/typography/Typography.js +1 -0
- package/dist/browser/components/typography/index.js +1 -0
- package/dist/browser/controls.js +1 -0
- package/dist/browser/forms.js +1 -0
- package/dist/browser/index.js +1 -1
- package/dist/browser/layout.js +1 -0
- package/dist/browser/list.js +1 -0
- package/dist/browser/renderers/form-contract/renderer.js +1 -1
- package/dist/browser/renderers/form-contract/shell.js +1 -1
- package/dist/browser/typography.js +1 -0
- package/dist/components/atoms/{ButtonLink.mobile.d.ts → ButtonLink.native.d.ts} +1 -1
- package/dist/components/atoms/InputPassword.d.ts +15 -0
- package/dist/components/atoms/InputPassword.js +1 -0
- package/dist/components/atoms/InputPassword.native.d.ts +17 -0
- package/dist/components/atoms/Link.native.d.ts +1 -1
- package/dist/components/forms/controls/index.d.ts +1 -0
- package/dist/components/forms/controls/index.js +1 -1
- package/dist/components/legal/templates/ContactTemplate.js +1 -1
- package/dist/components/list/List.d.ts +6 -0
- package/dist/components/list/List.js +1 -0
- package/dist/components/list/List.native.d.ts +6 -0
- package/dist/components/list/index.d.ts +1 -0
- package/dist/components/list/index.js +1 -0
- package/dist/components/molecules/Tabs.d.ts +32 -0
- package/dist/components/molecules/Tabs.js +1 -0
- package/dist/components/molecules/Tabs.native.d.ts +32 -0
- package/dist/components/organisms/{AppHeader.mobile.d.ts → AppHeader.native.d.ts} +1 -1
- package/dist/components/typography/Typography.d.ts +19 -0
- package/dist/components/typography/Typography.js +1 -0
- package/dist/components/typography/Typography.native.d.ts +19 -0
- package/dist/components/typography/index.d.ts +1 -0
- package/dist/components/typography/index.js +1 -0
- package/dist/controls.d.ts +1 -0
- package/dist/controls.js +1 -0
- package/dist/forms.d.ts +1 -0
- package/dist/forms.js +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +1 -1
- package/dist/layout.d.ts +1 -0
- package/dist/layout.js +1 -0
- package/dist/list.d.ts +1 -0
- package/dist/list.js +1 -0
- package/dist/native/components/agent/AgentMonitor.js +1 -0
- package/dist/native/components/agent/ApprovalQueue.js +1 -0
- package/dist/native/components/atoms/ActionButtons.js +1 -0
- package/dist/native/components/atoms/Button.js +1 -0
- package/dist/native/components/atoms/ButtonLink.js +1 -0
- package/dist/{browser/components/atoms/ButtonLink.mobile.js → native/components/atoms/ButtonLink.native.js} +1 -1
- package/dist/native/components/atoms/Cta.js +1 -0
- package/dist/native/components/atoms/DataChips.js +1 -0
- package/dist/native/components/atoms/EmptyState.js +1 -0
- package/dist/native/components/atoms/ErrorState.js +1 -0
- package/dist/native/components/atoms/ErrorState.native.js +1 -0
- package/dist/native/components/atoms/Input.js +1 -0
- package/dist/native/components/atoms/InputPassword.js +1 -0
- package/dist/native/components/atoms/InputPassword.native.js +1 -0
- package/dist/native/components/atoms/Link.js +1 -0
- package/dist/native/components/atoms/Link.native.js +1 -0
- package/dist/native/components/atoms/LoaderCircular.js +1 -0
- package/dist/native/components/atoms/NavBrand.js +1 -0
- package/dist/native/components/atoms/RankBadge.js +1 -0
- package/dist/native/components/atoms/ScoreBar.js +1 -0
- package/dist/native/components/atoms/Stepper.js +1 -0
- package/dist/native/components/atoms/Textarea.js +1 -0
- package/dist/native/components/data-table/DataTable.js +1 -0
- package/dist/native/components/data-table/DataTableToolbar.js +1 -0
- package/dist/{browser/components/data-table/DataTableToolbar.mobile.js → native/components/data-table/DataTableToolbar.native.js} +1 -1
- package/dist/native/components/data-table/DataTableToolbar.shared.js +1 -0
- package/dist/native/components/data-view/DataViewDetail.js +1 -0
- package/dist/native/components/data-view/DataViewList.js +1 -0
- package/dist/native/components/data-view/DataViewRenderer.js +1 -0
- package/dist/native/components/data-view/DataViewTable.js +1 -0
- package/dist/native/components/data-view/utils.js +1 -0
- package/dist/native/components/forms/ActionForm.js +1 -0
- package/dist/native/components/forms/FormCardLayout.js +1 -0
- package/dist/native/components/forms/FormDialog.js +1 -0
- package/dist/native/components/forms/FormLayout.js +1 -0
- package/dist/native/components/forms/FormOneByOneLayout.js +1 -0
- package/dist/native/components/forms/FormStepsLayout.js +1 -0
- package/dist/native/components/forms/ZodForm.js +1 -0
- package/dist/native/components/forms/controls/Autocomplete.js +1 -0
- package/dist/native/components/forms/controls/ChoiceControls.js +1 -0
- package/dist/native/components/forms/controls/Combobox.js +1 -0
- package/dist/native/components/forms/controls/DateTimeControls.js +1 -0
- package/dist/{components/forms/controls/DropdownMenu.mobile.js → native/components/forms/controls/DropdownMenu.js} +1 -1
- package/dist/native/components/forms/controls/Field.js +1 -0
- package/dist/native/components/forms/controls/InputGroup.js +1 -0
- package/dist/native/components/forms/controls/InputOTP.js +1 -0
- package/dist/native/components/forms/controls/LoadingButton.js +1 -0
- package/dist/native/components/forms/controls/NativeSelect.js +1 -0
- package/dist/native/components/forms/controls/Select.js +1 -0
- package/dist/native/components/forms/controls/index.js +1 -0
- package/dist/native/components/forms/index.js +1 -0
- package/dist/native/components/layout/Stack.js +1 -0
- package/dist/native/components/layout/index.js +1 -0
- package/dist/native/components/legal/atoms/DefinitionList.js +1 -0
- package/dist/native/components/legal/atoms/KeyValueList.js +1 -0
- package/dist/native/components/legal/atoms/LegalCallout.js +1 -0
- package/dist/native/components/legal/atoms/LegalHeading.js +1 -0
- package/dist/native/components/legal/atoms/LegalList.js +1 -0
- package/dist/native/components/legal/atoms/LegalSection.js +1 -0
- package/dist/native/components/legal/atoms/LegalText.js +1 -0
- package/dist/native/components/legal/molecules/Consent.js +1 -0
- package/dist/native/components/legal/molecules/ContactFields.js +1 -0
- package/dist/native/components/legal/molecules/LegalMeta.js +1 -0
- package/dist/native/components/legal/molecules/LegalTOC.js +1 -0
- package/dist/native/components/legal/organisms/ContactForm.js +1 -0
- package/dist/native/components/legal/organisms/GDPRDataRequest.js +1 -0
- package/dist/native/components/legal/organisms/GDPRRights.js +1 -0
- package/dist/native/components/legal/organisms/LegalPageLayout.js +1 -0
- package/dist/native/components/legal/templates/ContactTemplate.js +1 -0
- package/dist/native/components/legal/templates/CookiesTemplate.js +1 -0
- package/dist/native/components/legal/templates/PrivacyTemplate.js +1 -0
- package/dist/native/components/legal/templates/SalesTermsTemplate.js +1 -0
- package/dist/native/components/legal/templates/TermsTemplate.js +1 -0
- package/dist/native/components/list/List.js +1 -0
- package/dist/native/components/list/List.native.js +1 -0
- package/dist/native/components/list/index.js +1 -0
- package/dist/native/components/marketing/MarketingCard.js +1 -0
- package/dist/native/components/marketing/MarketingCardsSection.js +1 -0
- package/dist/native/components/marketing/MarketingComparisonSection.js +1 -0
- package/dist/native/components/marketing/MarketingIconCard.js +1 -0
- package/dist/native/components/marketing/MarketingSection.js +1 -0
- package/dist/native/components/marketing/MarketingStepCard.js +1 -0
- package/dist/native/components/molecules/AiLinkButton.js +1 -0
- package/dist/native/components/molecules/Breadcrumbs.js +1 -0
- package/dist/native/components/molecules/CodeBlock/CodeBlock.js +1 -0
- package/dist/native/components/molecules/CodeBlock/index.js +1 -0
- package/dist/native/components/molecules/CommandPalette.js +1 -0
- package/dist/native/components/molecules/CommandSearchTrigger.js +1 -0
- package/dist/native/components/molecules/CommandTabs/CommandTabs.js +1 -0
- package/dist/native/components/molecules/CommandTabs/index.js +1 -0
- package/dist/native/components/molecules/CopyButton/CopyButton.js +1 -0
- package/dist/native/components/molecules/CopyButton/index.js +1 -0
- package/dist/native/components/molecules/CopyButton/types.js +0 -0
- package/dist/native/components/molecules/DimensionScoresCard.js +1 -0
- package/dist/native/components/molecules/DropdownMenu.js +0 -0
- package/dist/native/components/molecules/EntityCard.js +1 -0
- package/dist/native/components/molecules/FiltersToolbar.js +1 -0
- package/dist/native/components/molecules/HoverPreview.js +1 -0
- package/dist/native/components/molecules/InstallCommand/InstallCommand.js +1 -0
- package/dist/native/components/molecules/InstallCommand/index.js +1 -0
- package/dist/native/components/molecules/InstallCommand/types.js +0 -0
- package/dist/native/components/molecules/LangSwitch.js +1 -0
- package/dist/native/components/molecules/LangSwitchDropdown.js +1 -0
- package/dist/native/components/molecules/LoaderBlock.js +1 -0
- package/dist/{browser/components/molecules/LoaderBlock.mobile.js → native/components/molecules/LoaderBlock.native.js} +1 -1
- package/dist/native/components/molecules/MarkdownRenderer/MarkdownRenderer.js +2 -0
- package/dist/native/components/molecules/MarkdownRenderer/formatInlineMarkdown.js +1 -0
- package/dist/native/components/molecules/MarkdownRenderer/index.js +1 -0
- package/dist/native/components/molecules/MarkdownRenderer/renderMarkdownTable.js +1 -0
- package/dist/native/components/molecules/MarkdownRenderer/types.js +0 -0
- package/dist/native/components/molecules/MobileNavMenu.js +1 -0
- package/dist/native/components/molecules/NavItemCard.js +1 -0
- package/dist/native/components/molecules/NavMain.js +1 -0
- package/dist/native/components/molecules/NavUser.js +1 -0
- package/dist/native/components/molecules/OverviewCard.js +1 -0
- package/dist/native/components/molecules/SkeletonBlock/index.js +1 -0
- package/dist/native/components/molecules/SkeletonBlock/types.js +0 -0
- package/dist/native/components/molecules/SkeletonCircle/index.js +1 -0
- package/dist/native/components/molecules/SkeletonCircle/types.js +0 -0
- package/dist/native/components/molecules/SkeletonList/index.js +1 -0
- package/dist/native/components/molecules/SkeletonList/types.js +0 -0
- package/dist/native/components/molecules/StatCard.js +1 -0
- package/dist/native/components/molecules/StatusChip.js +1 -0
- package/dist/native/components/molecules/Tabs.js +1 -0
- package/dist/native/components/molecules/Tabs.native.js +1 -0
- package/dist/native/components/molecules/hover-previews/Doc.js +1 -0
- package/dist/native/components/molecules/hover-previews/Media.js +1 -0
- package/dist/native/components/molecules/hover-previews/Simple.js +1 -0
- package/dist/native/components/molecules/hover-previews/Stats.js +1 -0
- package/dist/native/components/molecules/hover-previews/User.js +1 -0
- package/dist/native/components/organisms/AcademyLayout.js +1 -0
- package/dist/native/components/organisms/AppHeader.js +1 -0
- package/dist/{browser/components/organisms/AppHeader.mobile.js → native/components/organisms/AppHeader.native.js} +1 -1
- package/dist/native/components/organisms/AppLayout.js +1 -0
- package/dist/native/components/organisms/AppSidebar.js +1 -0
- package/dist/native/components/organisms/AppSidebar.native.js +0 -0
- package/dist/native/components/organisms/EmptyDataList.js +1 -0
- package/dist/native/components/organisms/EmptyDataList.types.js +0 -0
- package/dist/native/components/organisms/EmptySearchResult.js +1 -0
- package/dist/native/components/organisms/FAQSection.js +1 -0
- package/dist/native/components/organisms/FeatureCarousel.js +1 -0
- package/dist/native/components/organisms/FeaturesSection.js +1 -0
- package/dist/native/components/organisms/Footer.js +1 -0
- package/dist/native/components/organisms/GridLayout.js +1 -0
- package/dist/native/components/organisms/Header.js +1 -0
- package/dist/native/components/organisms/HeroResponsive.js +1 -0
- package/dist/native/components/organisms/HeroSection.js +1 -0
- package/dist/native/components/organisms/ListCardPage.js +1 -0
- package/dist/native/components/organisms/ListGridPage.js +1 -0
- package/dist/native/components/organisms/ListPageResponsive.js +1 -0
- package/dist/native/components/organisms/ListTablePage.js +1 -0
- package/dist/native/components/organisms/MarketingHeader.js +1 -0
- package/dist/native/components/organisms/MarketingHeaderDesktop.js +1 -0
- package/dist/native/components/organisms/MarketingHeaderMobile.js +1 -0
- package/dist/native/components/organisms/MarketingLayout.js +1 -0
- package/dist/native/components/organisms/ModelComparisonView.js +1 -0
- package/dist/native/components/organisms/PageHeaderResponsive.js +1 -0
- package/dist/{browser/components/organisms/PageHeaderResponsive.mobile.js → native/components/organisms/PageHeaderResponsive.native.js} +1 -1
- package/dist/native/components/organisms/PricingCarousel.js +1 -0
- package/dist/native/components/organisms/PricingSection.js +1 -0
- package/dist/native/components/organisms/TestimonialCarousel.js +1 -0
- package/dist/native/components/primitives/control.js +1 -0
- package/dist/native/components/primitives/themed.js +1 -0
- package/dist/native/components/providers/PackageManagerProvider.js +1 -0
- package/dist/native/components/templates/lists/ListPageTemplate/index.js +1 -0
- package/dist/{browser/components/templates/lists/ListPageTemplate/index.mobile.js → native/components/templates/lists/ListPageTemplate/index.native.js} +1 -1
- package/dist/native/components/templates/lists/ListPageTemplate/types.js +0 -0
- package/dist/native/components/typography/Typography.js +1 -0
- package/dist/native/components/typography/Typography.native.js +1 -0
- package/dist/native/components/typography/index.js +1 -0
- package/dist/native/components/visualization/ComparisonView.js +1 -0
- package/dist/{browser/components/visualization/ComparisonView.mobile.js → native/components/visualization/ComparisonView.native.js} +1 -1
- package/dist/native/components/visualization/TimelineView.js +1 -0
- package/dist/{browser/components/visualization/TimelineView.mobile.js → native/components/visualization/TimelineView.native.js} +1 -1
- package/dist/native/components/visualization/VisualizationCard.js +1 -0
- package/dist/native/components/visualization/VisualizationCard.native.js +1 -0
- package/dist/native/components/visualization/VisualizationGrid.js +1 -0
- package/dist/native/components/visualization/VisualizationRenderer.js +1 -0
- package/dist/native/components/visualization/types.js +0 -0
- package/dist/native/contracts.typecheck.js +1 -0
- package/dist/native/controls.js +1 -0
- package/dist/native/design-system.feature.js +1 -0
- package/dist/native/forms.js +1 -0
- package/dist/native/hooks/useListUrlState.js +1 -0
- package/dist/native/i18n/translation.js +1 -0
- package/dist/native/index.js +1 -0
- package/dist/native/layout.js +1 -0
- package/dist/native/lib/keyboard.js +1 -0
- package/dist/native/lib/utils.js +1 -0
- package/dist/native/list.js +1 -0
- package/dist/native/platform/useColorScheme.js +1 -0
- package/dist/native/platform/useReducedMotion.js +1 -0
- package/dist/native/platform/useResponsive.js +1 -0
- package/dist/native/platform/withPlatformUI.js +1 -0
- package/dist/native/renderers/form-contract/renderer.js +1 -0
- package/dist/native/renderers/form-contract/rich-fields.js +1 -0
- package/dist/native/renderers/form-contract/shell.js +1 -0
- package/dist/native/renderers/form-contract/values.js +1 -0
- package/dist/native/renderers/form-contract.js +1 -0
- package/dist/native/renderers/index.js +1 -0
- package/dist/native/theme/contracts.js +1 -0
- package/dist/native/theme/index.js +1 -0
- package/dist/native/theme/runtime-resolvers.js +1 -0
- package/dist/native/theme/runtime.js +1 -0
- package/dist/native/theme/tailwind-config.js +1 -0
- package/dist/native/theme/tailwind-css.js +9 -0
- package/dist/native/theme/tailwind-variables.js +1 -0
- package/dist/native/theme/tailwind.js +1 -0
- package/dist/native/theme/tokenBridge.js +1 -0
- package/dist/native/theme/tokens.js +1 -0
- package/dist/native/theme/variants.js +1 -0
- package/dist/native/types/nativewind-env.d.js +0 -0
- package/dist/native/types/navigation.js +0 -0
- package/dist/native/typography.js +1 -0
- package/dist/renderers/form-contract/renderer.js +1 -1
- package/dist/renderers/form-contract/shell.d.ts +5 -0
- package/dist/renderers/form-contract/shell.js +1 -1
- package/dist/typography.d.ts +1 -0
- package/dist/typography.js +1 -0
- package/package.json +3052 -22
- package/dist/browser/components/atoms/ErrorState.mobile.js +0 -1
- package/dist/browser/components/visualization/VisualizationCard.mobile.js +0 -1
- package/dist/components/agent/ApprovalQueue.mobile.js +0 -1
- package/dist/components/atoms/Button.mobile.js +0 -1
- package/dist/components/atoms/ButtonLink.mobile.js +0 -1
- package/dist/components/atoms/Cta.mobile.js +0 -1
- package/dist/components/atoms/ErrorState.mobile.js +0 -1
- package/dist/components/atoms/Input.mobile.js +0 -1
- package/dist/components/atoms/LoaderCircular.mobile.js +0 -1
- package/dist/components/atoms/Textarea.mobile.js +0 -1
- package/dist/components/data-table/DataTable.mobile.js +0 -1
- package/dist/components/data-table/DataTableToolbar.mobile.js +0 -1
- package/dist/components/data-view/DataViewRenderer.mobile.js +0 -1
- package/dist/components/data-view/DataViewTable.mobile.js +0 -1
- package/dist/components/forms/controls/Autocomplete.mobile.js +0 -1
- package/dist/components/forms/controls/ChoiceControls.mobile.js +0 -1
- package/dist/components/forms/controls/Combobox.mobile.js +0 -1
- package/dist/components/forms/controls/DateTimeControls.mobile.js +0 -1
- package/dist/components/forms/controls/Field.mobile.js +0 -1
- package/dist/components/forms/controls/InputGroup.mobile.js +0 -1
- package/dist/components/forms/controls/InputOTP.mobile.js +0 -1
- package/dist/components/forms/controls/LoadingButton.mobile.js +0 -1
- package/dist/components/forms/controls/NativeSelect.mobile.js +0 -1
- package/dist/components/forms/controls/Select.mobile.js +0 -1
- package/dist/components/layout/Stack.mobile.js +0 -1
- package/dist/components/molecules/FiltersToolbar.mobile.js +0 -1
- package/dist/components/molecules/LoaderBlock.mobile.js +0 -1
- package/dist/components/molecules/SkeletonBlock/index.mobile.js +0 -1
- package/dist/components/molecules/SkeletonCircle/index.mobile.js +0 -1
- package/dist/components/molecules/SkeletonList/index.mobile.js +0 -1
- package/dist/components/native/BottomTabs.mobile.js +0 -1
- package/dist/components/native/FlatListScreen.mobile.js +0 -1
- package/dist/components/native/SheetMenu.mobile.js +0 -1
- package/dist/components/organisms/AppHeader.mobile.js +0 -1
- package/dist/components/organisms/EmptyDataList.mobile.js +0 -1
- package/dist/components/organisms/Header.mobile.js +0 -1
- package/dist/components/organisms/ListTablePage.mobile.js +0 -1
- package/dist/components/organisms/PageHeaderResponsive.mobile.js +0 -1
- package/dist/components/templates/lists/ListPageTemplate/index.mobile.js +0 -1
- package/dist/components/visualization/ComparisonView.mobile.js +0 -1
- package/dist/components/visualization/TimelineView.mobile.js +0 -1
- package/dist/components/visualization/VisualizationCard.mobile.js +0 -1
- package/dist/components/visualization/VisualizationGrid.mobile.js +0 -1
- package/dist/components/visualization/VisualizationRenderer.mobile.js +0 -1
- package/dist/platform/useColorScheme.mobile.js +0 -1
- package/dist/platform/useReducedMotion.mobile.js +0 -1
- package/dist/platform/useResponsive.mobile.js +0 -1
- /package/dist/components/agent/{ApprovalQueue.mobile.d.ts → ApprovalQueue.native.d.ts} +0 -0
- /package/dist/components/atoms/{Button.mobile.d.ts → Button.native.d.ts} +0 -0
- /package/dist/components/atoms/{Cta.mobile.d.ts → Cta.native.d.ts} +0 -0
- /package/dist/components/atoms/{ErrorState.mobile.d.ts → ErrorState.native.d.ts} +0 -0
- /package/dist/components/atoms/{Input.mobile.d.ts → Input.native.d.ts} +0 -0
- /package/dist/components/atoms/{LoaderCircular.mobile.d.ts → LoaderCircular.native.d.ts} +0 -0
- /package/dist/components/atoms/{Textarea.mobile.d.ts → Textarea.native.d.ts} +0 -0
- /package/dist/components/data-table/{DataTable.mobile.d.ts → DataTable.native.d.ts} +0 -0
- /package/dist/components/data-table/{DataTableToolbar.mobile.d.ts → DataTableToolbar.native.d.ts} +0 -0
- /package/dist/components/data-view/{DataViewRenderer.mobile.d.ts → DataViewRenderer.native.d.ts} +0 -0
- /package/dist/components/data-view/{DataViewTable.mobile.d.ts → DataViewTable.native.d.ts} +0 -0
- /package/dist/components/forms/controls/{Autocomplete.mobile.d.ts → Autocomplete.native.d.ts} +0 -0
- /package/dist/components/forms/controls/{ChoiceControls.mobile.d.ts → ChoiceControls.native.d.ts} +0 -0
- /package/dist/components/forms/controls/{Combobox.mobile.d.ts → Combobox.native.d.ts} +0 -0
- /package/dist/components/forms/controls/{DateTimeControls.mobile.d.ts → DateTimeControls.native.d.ts} +0 -0
- /package/dist/components/forms/controls/{DropdownMenu.mobile.d.ts → DropdownMenu.native.d.ts} +0 -0
- /package/dist/components/forms/controls/{Field.mobile.d.ts → Field.native.d.ts} +0 -0
- /package/dist/components/forms/controls/{InputGroup.mobile.d.ts → InputGroup.native.d.ts} +0 -0
- /package/dist/components/forms/controls/{InputOTP.mobile.d.ts → InputOTP.native.d.ts} +0 -0
- /package/dist/components/forms/controls/{LoadingButton.mobile.d.ts → LoadingButton.native.d.ts} +0 -0
- /package/dist/components/forms/controls/{NativeSelect.mobile.d.ts → NativeSelect.native.d.ts} +0 -0
- /package/dist/components/forms/controls/{Select.mobile.d.ts → Select.native.d.ts} +0 -0
- /package/dist/components/layout/{Stack.mobile.d.ts → Stack.native.d.ts} +0 -0
- /package/dist/components/molecules/{FiltersToolbar.mobile.d.ts → FiltersToolbar.native.d.ts} +0 -0
- /package/dist/components/molecules/{LoaderBlock.mobile.d.ts → LoaderBlock.native.d.ts} +0 -0
- /package/dist/components/molecules/SkeletonBlock/{index.mobile.d.ts → index.native.d.ts} +0 -0
- /package/dist/components/molecules/SkeletonCircle/{index.mobile.d.ts → index.native.d.ts} +0 -0
- /package/dist/components/molecules/SkeletonList/{index.mobile.d.ts → index.native.d.ts} +0 -0
- /package/dist/components/native/{BottomTabs.mobile.d.ts → BottomTabs.native.d.ts} +0 -0
- /package/dist/components/native/{FlatListScreen.mobile.d.ts → FlatListScreen.native.d.ts} +0 -0
- /package/dist/components/native/{SheetMenu.mobile.d.ts → SheetMenu.native.d.ts} +0 -0
- /package/dist/components/organisms/{AppSidebar.mobile.d.ts → AppSidebar.native.d.ts} +0 -0
- /package/dist/components/organisms/{EmptyDataList.mobile.d.ts → EmptyDataList.native.d.ts} +0 -0
- /package/dist/components/organisms/{Header.mobile.d.ts → Header.native.d.ts} +0 -0
- /package/dist/components/organisms/{ListTablePage.mobile.d.ts → ListTablePage.native.d.ts} +0 -0
- /package/dist/components/organisms/{PageHeaderResponsive.mobile.d.ts → PageHeaderResponsive.native.d.ts} +0 -0
- /package/dist/components/templates/lists/ListPageTemplate/{index.mobile.d.ts → index.native.d.ts} +0 -0
- /package/dist/components/visualization/{ComparisonView.mobile.d.ts → ComparisonView.native.d.ts} +0 -0
- /package/dist/components/visualization/{TimelineView.mobile.d.ts → TimelineView.native.d.ts} +0 -0
- /package/dist/components/visualization/{VisualizationCard.mobile.d.ts → VisualizationCard.native.d.ts} +0 -0
- /package/dist/components/visualization/{VisualizationGrid.mobile.d.ts → VisualizationGrid.native.d.ts} +0 -0
- /package/dist/components/visualization/{VisualizationRenderer.mobile.d.ts → VisualizationRenderer.native.d.ts} +0 -0
- /package/dist/{browser/components/agent/ApprovalQueue.mobile.js → native/components/agent/ApprovalQueue.native.js} +0 -0
- /package/dist/{browser/components/atoms/Button.mobile.js → native/components/atoms/Button.native.js} +0 -0
- /package/dist/{browser/components/atoms/Cta.mobile.js → native/components/atoms/Cta.native.js} +0 -0
- /package/dist/{browser/components/atoms/Input.mobile.js → native/components/atoms/Input.native.js} +0 -0
- /package/dist/{browser/components/atoms/LoaderCircular.mobile.js → native/components/atoms/LoaderCircular.native.js} +0 -0
- /package/dist/{browser/components/atoms/Textarea.mobile.js → native/components/atoms/Textarea.native.js} +0 -0
- /package/dist/{browser/components/data-table/DataTable.mobile.js → native/components/data-table/DataTable.native.js} +0 -0
- /package/dist/{browser/components/data-view/DataViewRenderer.mobile.js → native/components/data-view/DataViewRenderer.native.js} +0 -0
- /package/dist/{browser/components/data-view/DataViewTable.mobile.js → native/components/data-view/DataViewTable.native.js} +0 -0
- /package/dist/{browser/components/forms/controls/Autocomplete.mobile.js → native/components/forms/controls/Autocomplete.native.js} +0 -0
- /package/dist/{browser/components/forms/controls/ChoiceControls.mobile.js → native/components/forms/controls/ChoiceControls.native.js} +0 -0
- /package/dist/{browser/components/forms/controls/Combobox.mobile.js → native/components/forms/controls/Combobox.native.js} +0 -0
- /package/dist/{browser/components/forms/controls/DateTimeControls.mobile.js → native/components/forms/controls/DateTimeControls.native.js} +0 -0
- /package/dist/{browser/components/forms/controls/DropdownMenu.mobile.js → native/components/forms/controls/DropdownMenu.native.js} +0 -0
- /package/dist/{browser/components/forms/controls/Field.mobile.js → native/components/forms/controls/Field.native.js} +0 -0
- /package/dist/{browser/components/forms/controls/InputGroup.mobile.js → native/components/forms/controls/InputGroup.native.js} +0 -0
- /package/dist/{browser/components/forms/controls/InputOTP.mobile.js → native/components/forms/controls/InputOTP.native.js} +0 -0
- /package/dist/{browser/components/forms/controls/LoadingButton.mobile.js → native/components/forms/controls/LoadingButton.native.js} +0 -0
- /package/dist/{browser/components/forms/controls/NativeSelect.mobile.js → native/components/forms/controls/NativeSelect.native.js} +0 -0
- /package/dist/{browser/components/forms/controls/Select.mobile.js → native/components/forms/controls/Select.native.js} +0 -0
- /package/dist/{browser/components/layout/Stack.mobile.js → native/components/layout/Stack.native.js} +0 -0
- /package/dist/{browser/components/organisms/AppSidebar.mobile.js → native/components/molecules/CodeBlock/types.js} +0 -0
- /package/dist/{components/organisms/AppSidebar.mobile.js → native/components/molecules/CommandTabs/types.js} +0 -0
- /package/dist/{browser/components/molecules/FiltersToolbar.mobile.js → native/components/molecules/FiltersToolbar.native.js} +0 -0
- /package/dist/{browser/components/molecules/SkeletonBlock/index.mobile.js → native/components/molecules/SkeletonBlock/index.native.js} +0 -0
- /package/dist/{browser/components/molecules/SkeletonCircle/index.mobile.js → native/components/molecules/SkeletonCircle/index.native.js} +0 -0
- /package/dist/{browser/components/molecules/SkeletonList/index.mobile.js → native/components/molecules/SkeletonList/index.native.js} +0 -0
- /package/dist/{browser/components/native/BottomTabs.mobile.js → native/components/native/BottomTabs.native.js} +0 -0
- /package/dist/{browser/components/native/FlatListScreen.mobile.js → native/components/native/FlatListScreen.native.js} +0 -0
- /package/dist/{browser/components/native/SheetMenu.mobile.js → native/components/native/SheetMenu.native.js} +0 -0
- /package/dist/{browser/components/organisms/EmptyDataList.mobile.js → native/components/organisms/EmptyDataList.native.js} +0 -0
- /package/dist/{browser/components/organisms/Header.mobile.js → native/components/organisms/Header.native.js} +0 -0
- /package/dist/{browser/components/organisms/ListTablePage.mobile.js → native/components/organisms/ListTablePage.native.js} +0 -0
- /package/dist/{browser/components/visualization/VisualizationGrid.mobile.js → native/components/visualization/VisualizationGrid.native.js} +0 -0
- /package/dist/{browser/components/visualization/VisualizationRenderer.mobile.js → native/components/visualization/VisualizationRenderer.native.js} +0 -0
- /package/dist/{browser/platform/useColorScheme.mobile.js → native/platform/useColorScheme.native.js} +0 -0
- /package/dist/{browser/platform/useReducedMotion.mobile.js → native/platform/useReducedMotion.native.js} +0 -0
- /package/dist/{browser/platform/useResponsive.mobile.js → native/platform/useResponsive.native.js} +0 -0
- /package/dist/platform/{useColorScheme.mobile.d.ts → useColorScheme.native.d.ts} +0 -0
- /package/dist/platform/{useReducedMotion.mobile.d.ts → useReducedMotion.native.d.ts} +0 -0
- /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{Empty as Q,EmptyContent as U,EmptyDescription as V,EmptyHeader as W,EmptyTitle as X}from"@contractspec/lib.ui-kit-web/ui/empty";import{Button as I}from"../atoms/Button";import{ButtonLink as Y}from"../atoms/ButtonLink";export function ErrorState({title:J="Something went wrong",description:v,icon:K,onRetry:z,retryLabel:M="Retry",supportHref:A,onContactSupport:F,supportLabel:G="Contact support",className:O}){const P=(()=>{if(A)return g(Y,{variant:"ghost",href:A,children:G});if(F)return g(I,{variant:"ghost",onPress:F,children:G});return null})();return q(Q,{className:O,children:[q(W,{children:[K,g(X,{children:J}),v?g(V,{children:v}):null]}),g(U,{children:q("div",{className:"flex flex-wrap items-center gap-2",children:[z?g(I,{onPress:z,children:M}):null,P]})})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t,jsxs as l}from"react/jsx-runtime";import*as N from"react";import{Linking as g,Text as n,View as c}from"react-native";import{Button as i}from"./Button.native";export function ErrorState({title:m="Something went wrong",description:o,icon:p,onRetry:r,retryLabel:s="Retry",supportHref:e,onContactSupport:a,supportLabel:u="Contact support",className:R}){const d=N.useCallback(()=>{if(e)g.openURL(e).catch(()=>{});else a?.()},[e,a]);return l(c,{className:["items-center p-6",R].filter(Boolean).join(" "),children:[p,t(n,{className:"font-medium text-lg",children:m}),o?t(n,{className:"mt-1 text-base text-muted-foreground",children:o}):null,l(c,{className:"mt-3 flex-row items-center gap-2",children:[r?t(i,{onPress:r,children:s}):null,t(i,{variant:"ghost",onPress:d,children:u})]})]})}export default ErrorState;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as N}from"react/jsx-runtime";import{Input as j}from"@contractspec/lib.ui-kit-web/ui/input";import{mapKeyboardToWeb as B}from"../../lib/keyboard";import{useThemedTextField as C}from"../primitives/control";export function Input({value:A,defaultValue:D,onChange:E,onSubmit:O,onFocus:G,onBlur:H,placeholder:J,disabled:M,readOnly:P,maxLength:Q,name:R,className:S,keyboard:U,componentKey:X,themeVariant:Y,placeholderI18n:Z,ariaLabelI18n:$,...z}){const _=B(U),q=C({defaultComponentKey:"Input",componentKey:X,themeVariant:Y,className:S,style:z.style,placeholder:J,placeholderI18n:Z,ariaLabelI18n:$});return N(j,{...q.themed.props,...z,className:q.themed.className,style:q.themed.style,value:A,defaultValue:D,onChange:E,onFocus:G,onBlur:H,placeholder:q.placeholder,"aria-label":q.ariaLabel,disabled:M,readOnly:P,maxLength:Q,name:R,..._})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as v}from"react/jsx-runtime";import{InputPassword as k}from"@contractspec/lib.ui-kit-web/ui/input-password";import{mapKeyboardToWeb as T}from"../../lib/keyboard";import{useThemedTextField as f}from"../primitives/control";import{useTranslatedText as g}from"../primitives/themed";function I(q){return q==="new"?"new-password":"password"}function P(q){return q==="new"?"new-password":"current-password"}export function InputPassword({value:q,defaultValue:J,onChange:M,onSubmit:Q,onFocus:R,onBlur:U,placeholder:X,disabled:Y,readOnly:Z,maxLength:$,name:_,className:j,keyboard:G,componentKey:B,themeVariant:N,placeholderI18n:O,ariaLabelI18n:S,passwordPurpose:D="current",visibilityToggle:W,showLabel:C,hideLabel:V,showLabelI18n:F,hideLabelI18n:K,...A}){const H=g(),x=T({kind:I(D),...G,autoComplete:G?.autoComplete??A.autoComplete??P(D)}),z=f({defaultComponentKey:"InputPassword",componentKey:B,themeVariant:N,className:j,style:A.style,placeholder:X,placeholderI18n:O,ariaLabelI18n:S});return v(k,{...z.themed.props,...A,...x,className:z.themed.className,style:z.themed.style,value:q,defaultValue:J,onChange:M,onFocus:R,onBlur:U,placeholder:z.placeholder,"aria-label":z.ariaLabel,disabled:Y,readOnly:Z,maxLength:$,name:_,passwordPurpose:D,visibilityToggle:W,showLabel:H(F??C??"Show password"),hideLabel:H(K??V??"Hide password"),onKeyDown:(E)=>{A.onKeyDown?.(E);if(E.defaultPrevented||E.key!=="Enter")return;Q?.()}})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as v}from"react/jsx-runtime";import{InputPassword as K}from"@contractspec/lib.ui-kit/ui/input-password";import{mapKeyboardToNative as x}from"../../lib/keyboard";import{useThemedTextField as f}from"../primitives/control";import{useTranslatedText as k}from"../primitives/themed";function T(q){return q==="new"?"new-password":"password"}function g(q){return q==="new"?"new-password":"current-password"}export function InputPassword({value:q,defaultValue:J,onChange:M,onSubmit:Q,onFocus:R,onBlur:U,placeholder:W,disabled:D,readOnly:X,maxLength:Y,className:Z,keyboard:E,componentKey:$,themeVariant:_,placeholderI18n:j,ariaLabelI18n:B,passwordPurpose:A="current",visibilityToggle:O,showLabel:S,hideLabel:C,showLabelI18n:N,hideLabelI18n:V,...G}){const H=k(),F=x({kind:T(A),...E,autoComplete:E?.autoComplete??G.autoComplete??g(A)}),z=f({defaultComponentKey:"InputPassword",componentKey:$,themeVariant:_,className:Z,placeholder:W,placeholderI18n:j,ariaLabelI18n:B});return v(K,{...z.themed.props,...G,className:z.themed.className,value:q,defaultValue:J,onChangeText:M,onSubmitEditing:Q,onFocus:R,onBlur:U,placeholder:z.placeholder,accessibilityLabel:z.ariaLabel,editable:!D&&!X,disabled:D,maxLength:Y,passwordPurpose:A,visibilityToggle:O,showLabel:H(N??S??"Show password"),hideLabel:H(V??C??"Hide password"),...F})}export default InputPassword;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";export function Link({children:t,...r}){return o("a",{...r,children:t})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{Link}from"@contractspec/lib.ui-kit/ui/link";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as A,jsxs as I}from"react/jsx-runtime";import{cn as q}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as F}from"class-variance-authority";import{Loader2 as G}from"lucide-react";const H=F("animate-spin",{variants:{size:{sm:"h-4 w-4",md:"h-5 w-5",lg:"h-6 w-6"},tone:{default:"text-foreground",muted:"text-muted-foreground"}},defaultVariants:{size:"md",tone:"muted"}});export function LoaderCircular({size:B,tone:C,label:g,className:D,...E}){return I("div",{className:q("inline-flex items-center gap-2",D),role:"status","aria-live":"polite","aria-busy":!0,...E,children:[A(G,{className:q(H({size:B,tone:C}))}),g?A("span",{className:"text-base text-muted-foreground",children:g}):null]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as D}from"react/jsx-runtime";import{cn as C}from"@contractspec/lib.ui-kit-web/ui/utils";export function NavBrand({href:d="/",logo:A,title:q,className:B}){const v=D("div",{className:C("flex items-center gap-2 truncate font-semibold",B),children:[A,q&&z("span",{className:"truncate font-bold text-xl",children:q})]});return d?z("a",{href:d,className:"flex items-center","aria-label":"Home",children:v}):v}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as C,jsxs as D}from"react/jsx-runtime";import{cn as F}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as G}from"class-variance-authority";const H=G("inline-flex items-center justify-center gap-1 rounded-md font-semibold tabular-nums",{variants:{size:{sm:"h-6 min-w-6 px-1.5 text-xs",md:"h-8 min-w-8 px-2 text-sm",lg:"h-10 min-w-10 px-3 text-base"}},defaultVariants:{size:"md"}});function J(q){if(q===1)return"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300";if(q===2)return"bg-slate-100 text-slate-700 dark:bg-slate-800/40 dark:text-slate-300";if(q===3)return"bg-amber-100 text-amber-800 dark:bg-amber-900/30 dark:text-amber-300";return"bg-muted text-muted-foreground"}function K({rank:q,previousRank:B}){const A=B-q;if(A>0)return C("span",{className:"text-green-600 text-xs dark:text-green-400","aria-label":`Up ${A}`,children:"▲"});if(A<0)return C("span",{className:"text-red-600 text-xs dark:text-red-400","aria-label":`Down ${Math.abs(A)}`,children:"▼"});return C("span",{className:"text-muted-foreground text-xs","aria-label":"Unchanged",children:"–"})}export function RankBadge({rank:q,previousRank:B,size:A,className:E}){return D("span",{className:F(H({size:A}),J(q),E),children:[D("span",{children:["#",q]}),B!=null&&C(K,{rank:q,previousRank:B})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as H}from"react/jsx-runtime";import{cn as A}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as J}from"class-variance-authority";const G=J("rounded-full",{variants:{size:{sm:"h-2",md:"h-3",lg:"h-4"}},defaultVariants:{size:"md"}});function K(d){if(d>=75)return"bg-green-500";if(d>=50)return"bg-yellow-500";if(d>=25)return"bg-orange-500";return"bg-red-500"}export function ScoreBar({score:d,label:g,maxScore:B=100,showValue:D=!0,size:E,className:I}){const F=Math.max(0,Math.min(100,d/B*100));return H("div",{className:A("flex flex-col gap-1",I),children:[(g||D)&&H("div",{className:"flex items-center justify-between text-sm",children:[g&&q("span",{className:"text-muted-foreground capitalize",children:g}),D&&q("span",{className:"font-medium tabular-nums",children:Math.round(d*10)/10})]}),q("div",{className:A("w-full overflow-hidden bg-muted",G({size:E})),role:"progressbar","aria-valuenow":d,"aria-valuemin":0,"aria-valuemax":B,"aria-label":g??"Score",children:q("div",{className:A("h-full transition-all duration-300",G({size:E}),K(F)),style:{width:`${F}%`}})})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as h}from"react/jsx-runtime";import{Stepper as g}from"@contractspec/lib.ui-kit-web/ui/stepper";export function Stepper(d){return h(g,{...d})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as k}from"react/jsx-runtime";import{Textarea as O}from"@contractspec/lib.ui-kit-web/ui/textarea";import*as W from"react";import{mapKeyboardToWeb as v}from"../../lib/keyboard";import{useThemedTextField as F}from"../primitives/control";export function Textarea({value:D,defaultValue:E,onChange:z,onSubmit:I,onFocus:G,onBlur:H,placeholder:J,disabled:M,readOnly:P,maxLength:Q,name:S,className:U,rows:X,keyboard:Y,componentKey:Z,themeVariant:$,placeholderI18n:R,ariaLabelI18n:_,...A}){const j=v(Y),q=F({defaultComponentKey:"Textarea",componentKey:Z,themeVariant:$,className:U,style:A.style,placeholder:J,placeholderI18n:R,ariaLabelI18n:_}),B=W.useCallback((N)=>z?.(N),[z]);return k(O,{...q.themed.props,...A,className:q.themed.className,style:q.themed.style,value:D,defaultValue:E,onChange:B,onFocus:G,onBlur:H,placeholder:q.placeholder,"aria-label":q.ariaLabel,disabled:M,readOnly:P,maxLength:Q,name:S,rows:X,...j})}export default Textarea;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as E}from"react/jsx-runtime";import{Card as X,CardContent as Y,CardDescription as Z,CardHeader as $,CardTitle as K}from"@contractspec/lib.ui-kit-web/ui/card";import{DataTable as V}from"@contractspec/lib.ui-kit-web/ui/data-table";import{HStack as v,VStack as H}from"@contractspec/lib.ui-kit-web/ui/stack";import{resolveTranslationNode as I,useDesignSystemTranslation as P}from"../../i18n/translation";export function DataTable({controller:J,title:z,description:B,className:L,headerActions:F,toolbar:M,footer:O,emptyState:Q,loading:U,onRowPress:W}){const G=P();return E(X,{className:L,children:[z||B||F?q($,{children:E(v,{justify:"between",align:"start",children:[E(H,{gap:"xs",children:[z?q(K,{children:I(z,G)}):null,B?q(Z,{children:I(B,G)}):null]}),F]})}):null,q(Y,{children:q(V,{controller:J,toolbar:M,footer:O,emptyState:Q,loading:U,onRowPress:W})})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as D,jsxs as a}from"react/jsx-runtime";import{Button as h}from"../atoms/Button";import{FiltersToolbar as c}from"../molecules/FiltersToolbar";import{getHiddenDataColumns as f,showHiddenDataColumns as g}from"./DataTableToolbar.shared";export function DataTableToolbar({controller:e,className:l,searchPlaceholder:n,searchValue:r,onSearchChange:s,onSearchSubmit:d,debounceMs:i,activeChips:m=[],onClearAll:u,actionsStart:p,actionsEnd:b,selectionSummary:o}){const t=f(e),T=o===void 0&&e.selectionMode!=="none"?a("span",{className:"text-muted-foreground text-sm",children:["Selected ",e.selectedRowIds.length]}):o;return D(c,{className:l,searchPlaceholder:n,searchValue:r,onSearchChange:s,onSearchSubmit:d,debounceMs:i,activeChips:m,onClearAll:u,right:a("div",{className:"flex flex-wrap items-center justify-end gap-2",children:[T,t.length?a(h,{variant:"outline",size:"sm",onPress:()=>g(e),children:["Show ",t.length," Hidden"]}):null,b]}),children:p})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as A,jsxs as z}from"react/jsx-runtime";import{HStack as $}from"@contractspec/lib.ui-kit/ui/stack";import{Text as f}from"@contractspec/lib.ui-kit/ui/text";import{Button as k}from"../atoms/Button";import{FiltersToolbar as B}from"../molecules/FiltersToolbar.
|
|
1
|
+
import{jsx as A,jsxs as z}from"react/jsx-runtime";import{HStack as $}from"@contractspec/lib.ui-kit/ui/stack";import{Text as f}from"@contractspec/lib.ui-kit/ui/text";import{Button as k}from"../atoms/Button";import{FiltersToolbar as B}from"../molecules/FiltersToolbar.native";import{getHiddenDataColumns as p,showHiddenDataColumns as w}from"./DataTableToolbar.shared";export function DataTableToolbar({controller:q,className:J,searchPlaceholder:K,searchValue:L,onSearchChange:O,onSearchSubmit:Q,debounceMs:R,activeChips:U=[],onClearAll:W,actionsStart:X,actionsEnd:Y,selectionSummary:G}){const I=p(q),Z=G===void 0&&q.selectionMode!=="none"?z(f,{className:"text-muted-foreground text-sm",children:["Selected ",q.selectedRowIds.length]}):G;return A(B,{className:J,searchPlaceholder:K,searchValue:L,onSearchChange:O,onSearchSubmit:Q,debounceMs:R,activeChips:U,onClearAll:W,right:z($,{className:"flex flex-wrap items-center justify-end gap-2",children:[Z,I.length?z(k,{variant:"outline",size:"sm",onPress:()=>w(q),children:["Show ",I.length," Hidden"]}):null,Y]}),children:X})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function getHiddenDataColumns(t){return t.columns.filter((e)=>e.kind==="data"&&e.canHide&&!e.visible)}export function showHiddenDataColumns(t){getHiddenDataColumns(t).forEach((e)=>e.toggleVisibility?.(!0))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as a}from"react/jsx-runtime";import{resolveTranslationString as r,useDesignSystemTranslation as N}from"../../i18n/translation";import{cn as u}from"../../lib/utils";import{MarkdownRenderer as f}from"../molecules/MarkdownRenderer";import{DataViewFormattedValue as w,getAtPath as V}from"./utils";export function DataViewDetail({spec:t,item:l,className:n,emptyState:v,headerActions:c}){const d=N();if(t.view.kind!=="detail")throw Error(`DataViewDetail received view kind "${t.view.kind}", expected "detail".`);const m=t.view,s=m.fields;if(!l)return a("div",{className:u("flex w-full flex-col gap-4",n),children:[a("div",{className:"flex items-center justify-between",children:[e("h3",{className:"font-semibold text-base text-foreground",children:r(t.meta.title,d)}),c]}),v??e("div",{className:"rounded-md border border-muted-foreground/40 border-dashed p-8 text-center text-muted-foreground text-sm",children:"Select a record to view details."})]});const p=m.sections&&m.sections.length>0?m.sections:[{fields:s.map((i)=>i.key)}];return a("div",{className:u("flex w-full flex-col gap-6",n),children:[a("div",{className:"flex items-center justify-between",children:[a("div",{children:[e("h3",{className:"font-semibold text-foreground text-xl",children:r(t.meta.title,d)}),e("div",{className:"text-muted-foreground text-sm",children:e(f,{content:r(t.meta.description??"",d)??""})})]}),c]}),e("div",{className:"flex flex-col gap-6",children:p.map((i,g)=>a("div",{className:"rounded-lg border border-border bg-card p-4 shadow-sm",children:[i.title?e("h4",{className:"mb-2 font-semibold text-muted-foreground text-sm uppercase tracking-wide",children:r(i.title,d)}):null,i.description?e("div",{className:"mb-4 text-muted-foreground text-sm",children:e(f,{content:r(i.description,d)??""})}):null,e("dl",{className:"grid gap-4 md:grid-cols-2",children:i.fields.map((b)=>{const o=k(s,b);if(!o)return null;const D=V(l,o.dataPath);return a("div",{className:"flex flex-col gap-1",children:[e("dt",{className:"font-semibold text-muted-foreground/80 text-xs uppercase",children:r(o.label,d)}),e("dd",{className:"text-foreground text-sm",children:e(w,{value:D,format:o.format})})]},o.key)})})]},g))})]})}function k(t,l){return t.find((n)=>n.key===l)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t,jsxs as m}from"react/jsx-runtime";import{resolveTranslationString as w,useDesignSystemTranslation as k}from"../../i18n/translation";import{cn as c}from"../../lib/utils";import{DisplayValue as f}from"./DataViewTable";export function DataViewList({spec:e,items:r,className:i,renderActions:d,onSelect:u,emptyState:g}){const v=k();if(e.view.kind!=="list")throw Error(`DataViewList received view kind "${e.view.kind}", expected "list".`);const n=e.view,o=n.fields,l=n.primaryField??o.find((a)=>a.key===n.primaryField)?.key??o[0]?.key;if(!r.length)return t("div",{className:c("flex w-full flex-col gap-4",i),children:g??t("div",{className:"rounded-md border border-muted-foreground/40 border-dashed p-8 text-center text-muted-foreground text-sm",children:"No records available."})});return t("div",{className:c("flex w-full flex-col gap-4",i),children:r.map((a,b)=>{const p=y(a);return m("button",{type:"button",className:c("flex w-full flex-col gap-2 rounded-lg border border-muted bg-card p-4 text-left shadow-sm transition hover:border-primary/40 hover:shadow-md focus-visible:border-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40",n.layout==="compact"&&"md:flex-row md:items-center md:gap-4"),onClick:()=>u?.(a),children:[m("div",{className:"flex flex-1 flex-col gap-1",children:[l?t("span",{className:"font-medium text-base text-foreground",children:t(f,{item:p,fields:o,fieldKey:l})}):null,t("div",{className:"flex flex-wrap gap-x-4 gap-y-1 text-muted-foreground text-sm",children:D(n,l).map((s)=>m("span",{className:"flex items-center gap-1.5",children:[t("span",{className:"font-medium text-foreground/80",children:x(o,s,v)}),t("span",{children:t(f,{item:p,fields:o,fieldKey:s})})]},s))})]}),d?t("div",{className:"flex shrink-0 items-center gap-2",children:d(a)}):null]},b)})})}function y(e){if(e&&typeof e==="object")return e;return{}}function x(e,r,i){return w(e.find((d)=>d.key===r)?.label??r,i)}function D(e,r){if(e.secondaryFields?.length)return e.secondaryFields;return e.fields.map((i)=>i.key).filter((i)=>i!==r)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as G,jsxs as w,Fragment as d}from"react/jsx-runtime";import{Pagination as b}from"@contractspec/lib.ui-kit-web/ui/atoms/Pagination";import{VStack as j}from"@contractspec/lib.ui-kit-web/ui/stack";import{Text as _}from"@contractspec/lib.ui-kit-web/ui/text";import*as k from"react";import{resolveTranslationString as F,useDesignSystemTranslation as N}from"../../i18n/translation";import{FiltersToolbar as x}from"../molecules/FiltersToolbar";import{DataViewDetail as A}from"./DataViewDetail";import{DataViewList as T}from"./DataViewList";import{DataViewTable as C}from"./DataViewTable";export function DataViewRenderer({spec:E,items:M=[],item:Y=null,className:I,renderActions:Q,onSelect:U,onRowClick:Z,toolbar:$,loading:q,headerActions:O,emptyState:K,footer:z,search:V,onSearchChange:L,filters:J,onFilterChange:P,pagination:H,onPageChange:R}){const W=N(),u=k.useMemo(()=>{switch(E.view.kind){case"list":return G(T,{spec:E,items:M,className:I,renderActions:Q,onSelect:U,emptyState:K});case"table":return G(C,{spec:E,items:M,className:I,onRowClick:Z,toolbar:$,loading:q,emptyState:K,headerActions:O,footer:z});case"detail":return G(A,{spec:E,item:Y,className:I,emptyState:K,headerActions:O});case"grid":{const B=E.view,X={kind:"list",layout:"card",fields:B.fields,filters:B.filters,actions:B.actions,primaryField:B.primaryField,secondaryFields:B.secondaryFields},v={...E,view:X};return G(T,{spec:v,items:M,className:I,renderActions:Q,onSelect:U,emptyState:K})}default:return G(_,{className:I,children:F("Unsupported data view kind",W)})}},[E,M,Y,I,Q,U,Z,$,q,O,K,z,W]);if(!(E.view.kind==="list"||E.view.kind==="table"||E.view.kind==="grid"))return G(d,{children:u});return w(j,{gap:"lg",children:[(E.view.filters?.length||L)&&G(x,{searchValue:V,onSearchChange:L,searchPlaceholder:F("Search...",W)??"Search...",activeChips:J?Object.entries(J).map(([B,X])=>({key:B,label:`${B}: ${X}`,onRemove:()=>{if(J){const{[B]:v,...D}=J;P?.(D)}}})):[],onClearAll:J&&Object.keys(J).length>0?()=>P?.({}):void 0,right:E.view.kind==="table"?void 0:O}),u,H&&H.total>0&&G(b,{currentPage:H.page,totalPages:Math.ceil(H.total/H.pageSize),totalItems:H.total,itemsPerPage:H.pageSize,onPageChange:(B)=>R?.(B),onItemsPerPageChange:(B)=>{R?.(1)},showItemsPerPage:!1})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as E,jsxs as V}from"react/jsx-runtime";import{useDataViewTable as A}from"@contractspec/lib.presentation-runtime-react";import{HStack as F,VStack as h}from"@contractspec/lib.ui-kit-web/ui/stack";import{Text as X}from"@contractspec/lib.ui-kit-web/ui/text";import*as C from"react";import{resolveTranslationString as W,useDesignSystemTranslation as K}from"../../i18n/translation";import{DataTable as R}from"../data-table/DataTable";import{DataViewFormattedValue as Y,getAtPath as g}from"./utils";export function DataViewTable({spec:q,items:J,className:L,onRowClick:G,toolbar:O,loading:Z,emptyState:$,headerActions:B,footer:H}){const Q=K();if(q.view.kind!=="table")throw Error(`DataViewTable received view kind "${q.view.kind}", expected "table".`);const M=q.view,P=C.useMemo(()=>(M.rowExpansion?.fields??[]).map((z)=>M.fields.find((I)=>I.key===z)).filter((z)=>Boolean(z)),[M.fields,M.rowExpansion?.fields]),N=A({spec:q,data:J,renderValue:({value:z,field:I})=>E(Y,{value:z,format:I.format}),renderExpandedContent:P.length>0?({item:z,fields:I})=>E(h,{gap:"sm",className:"py-2",children:I.map((U)=>V(F,{justify:"between",align:"start",children:[E(X,{className:"font-medium text-muted-foreground text-sm",children:W(U.label,Q)}),E(X,{className:"text-right text-sm",children:E(DisplayValue,{item:z,fields:I,fieldKey:U.key})})]},U.key))}):void 0});return E(R,{controller:N,className:L,title:W(q.meta.title,Q),description:W(q.meta.description,Q),toolbar:O,loading:Z,headerActions:B,emptyState:$,footer:H,onRowPress:G?(z)=>G(z.original):void 0})}function D(q,J){return q.find((L)=>L.key===J)}export function DisplayValue({item:q,fields:J,fieldKey:L}){const G=D(J,L);if(!G)return"";const O=g(q,G.dataPath);return E(Y,{value:O,format:G.format})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as m}from"react/jsx-runtime";import{MarkdownRenderer as a}from"../molecules/MarkdownRenderer";export function getAtPath(t,e){if(!t)return;if(!e)return t;const r=e.replace(/\[(\d+)\]/g,".$1").split(".").filter(Boolean);let n=t;for(const o of r){if(n==null||typeof n!=="object"&&!Array.isArray(n))return;n=n[o]}return n}export function DataViewFormattedValue({value:t,format:e}){if(t==null)return"";switch(e){case"boolean":return t?"Yes":"No";case"currency":return typeof t==="number"?new Intl.NumberFormat(void 0,{style:"currency",currency:"USD"}).format(t):String(t);case"percentage":return typeof t==="number"?`${(t*100).toFixed(1)}%`:String(t);case"date":return i(t,{dateStyle:"medium"});case"dateTime":return i(t,{dateStyle:"medium",timeStyle:"short"});case"markdown":return m(a,{content:t});default:return String(t)}}function i(t,e){if(t instanceof Date)return new Intl.DateTimeFormat(void 0,e).format(t);if(typeof t==="string"||typeof t==="number"){const r=new Date(t);if(!Number.isNaN(r.getTime()))return new Intl.DateTimeFormat(void 0,e).format(r)}return String(t??"")}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as B}from"react/jsx-runtime";import{cn as A}from"@contractspec/lib.ui-kit-web/ui/utils";export function ActionForm({action:g,children:q,className:v,...z}){return B("form",{action:g,className:A("space-y-3",v),...z,children:q})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as g,jsxs as z}from"react/jsx-runtime";import{Card as G,CardContent as I,CardHeader as J,CardTitle as K}from"@contractspec/lib.ui-kit-web/ui/card";import{cn as B}from"@contractspec/lib.ui-kit-web/ui/utils";export function FormCardLayout({title:q,description:v,actions:A,children:D,className:E,contentClassName:F}){return z(G,{className:B("border-none shadow-2xs",E),children:[(q||v)&&z(J,{children:[q&&g(K,{children:q}),v&&g("div",{className:"text-base text-muted-foreground",children:v})]}),z(I,{className:B("p-4 md:p-5",F),children:[g("div",{className:"space-y-4",children:D}),A&&g("div",{className:"mt-4 flex justify-end gap-2",children:A})]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as A}from"react/jsx-runtime";import{Dialog as K,DialogContent as L,DialogDescription as M,DialogFooter as N,DialogHeader as P,DialogTitle as Q}from"@contractspec/lib.ui-kit-web/ui/dialog";export function FormDialog({open:B,onOpenChange:E,title:G,description:v,children:I,footer:z,maxWidth:J="sm:max-w-[480px]"}){return q(K,{open:B,onOpenChange:E,children:A(L,{className:J,children:[A(P,{children:[q(Q,{children:G}),v&&q(M,{children:v})]}),I,z&&q(N,{children:z})]})})}
|
|
@@ -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 FormSection({children:q,className:g}){return z("div",{className:v("space-y-4",g),children:q})}export function FormRow({children:q,className:g}){return z("div",{className:v("grid grid-cols-1 gap-4 md:grid-cols-2",g),children:q})}export function FormGrid({children:q,cols:g=2,className:A}){return z("div",{className:v("grid gap-4",g===1?"grid-cols-1":g===2?"grid-cols-2":g===3?"grid-cols-3":"grid-cols-4",A),children:q})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as A,jsxs as F}from"react/jsx-runtime";import{cn as V}from"@contractspec/lib.ui-kit-web/ui/utils";import*as M from"react";import{Button as O}from"../atoms/Button";export function FormOneByOneLayout({fields:q,initialKey:D,onComplete:P,className:Q}){const G=M.useMemo(()=>Object.fromEntries(q.map((z,U)=>[z.key,U])),[q]),[E,H]=M.useState(()=>{if(D&&D in G)return G[D]||0;return 0}),J=E===q.length-1,g=q[E];if(!g)return null;const S=async()=>{if(g.validate&&!g.validate())return;if(J)await P?.();else H((z)=>Math.min(z+1,q.length-1))},T=()=>H((z)=>Math.max(0,z-1));return F("div",{className:V("flex min-h-[320px] flex-col items-stretch justify-between",Q),children:[F("div",{className:"space-y-2",children:[A("div",{className:"font-medium text-lg",children:g.title}),g.description&&A("div",{className:"text-base text-muted-foreground",children:g.description}),A("div",{className:"pt-2",children:g.input})]}),F("div",{className:"mt-6 flex items-center justify-between",children:[A(O,{variant:"ghost",onPress:T,disabled:E===0,children:"Back"}),A(O,{onPress:S,children:J?"Done":"Continue"})]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as D}from"react/jsx-runtime";import{Separator as Z}from"@contractspec/lib.ui-kit-web/ui/separator";import{cn as $}from"@contractspec/lib.ui-kit-web/ui/utils";import*as Q from"react";import{Button as T}from"../atoms/Button";export function FormStepsLayout({steps:g,initialStepKey:E,onFinish:G,canNext:H,className:U}){const J=Q.useMemo(()=>Object.fromEntries(g.map((A,Y)=>[A.key,Y])),[g]),[C,M]=Q.useState(()=>{if(E&&E in J)return J[E]||0;return 0}),V=C===0,O=C===g.length-1,q=g[C];if(!q)return null;const W=async()=>{if(!O){if(H&&!H(q.key))return;M((A)=>Math.min(A+1,g.length-1))}else if(G)await G()},X=()=>M((A)=>Math.max(0,A-1));return D("div",{className:$("space-y-4",U),children:[D("div",{className:"flex items-center justify-between",children:[z("div",{className:"truncate font-medium text-lg",children:q.title}),D("div",{className:"text-base text-muted-foreground",children:[C+1," / ",g.length]})]}),q.description&&z("div",{className:"text-base text-muted-foreground",children:q.description}),z(Z,{}),z("div",{children:q.content}),D("div",{className:"flex items-center justify-between",children:[z(T,{variant:"ghost",onPress:X,disabled:V,children:"Back"}),z(T,{onPress:W,children:O?"Finish":"Next"})]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q}from"react/jsx-runtime";import{Form as E,useForm as G,zodResolver as H}from"@contractspec/lib.ui-kit-web/ui/form";export function ZodForm({schema:A,defaultValues:B,onSubmit:C,children:D}){const g=G({resolver:H(A),defaultValues:B});return q(E,{...g,children:q("form",{onSubmit:g.handleSubmit(C),children:D(g)})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as A,jsxs as J}from"react/jsx-runtime";import{Command as k,CommandEmpty as S,CommandGroup as b,CommandInput as f,CommandItem as C,CommandList as T}from"@contractspec/lib.ui-kit-web/ui/command";import{Text as Y}from"@contractspec/lib.ui-kit-web/ui/text";import{Button as V}from"../../atoms/Button";import{HStack as w,VStack as Z}from"../../layout/Stack";import{useThemedPrimitive as v,useTranslatedText as _}from"../../primitives/themed";function M(F){return typeof F==="string"?F:String(F??"")}export function Autocomplete({query:F,options:$,selectedOptions:U,onQueryChange:E,onSelectOption:G,onRemoveOption:H,multiple:L,placeholder:P,placeholderI18n:g,readOnly:W,disabled:X,className:q,componentKey:B,themeVariant:K,emptyText:N="No results found."}){const D=_(),Q=v({defaultComponentKey:"Autocomplete",componentKey:B,themeVariant:K,className:q});return J(Z,{gap:"sm",className:Q.className,children:[J(k,{shouldFilter:!1,className:"rounded-md border border-input",children:[A(f,{value:F,onValueChange:E,placeholder:D(g??P),disabled:X||W}),J(T,{children:[A(S,{children:D(N)}),A(b,{children:$.map((z)=>{const R=U.some((I)=>M(I.value)===M(z.value));return J(C,{value:D(z.labelI18n)??z.labelI18n,onSelect:()=>G?.(z),disabled:X||z.disabled||W,children:[J(Z,{gap:"xs",children:[A(Y,{children:D(z.labelI18n)}),z.descriptionI18n?A(Y,{className:"text-muted-foreground text-xs",children:D(z.descriptionI18n)}):null]}),R?A(Y,{className:"ml-auto text-muted-foreground text-xs",children:D("Selected")}):null]},M(z.value))})})]})]}),U.length?A(w,{gap:"sm",wrap:"wrap",children:U.map((z)=>A(V,{type:"button",variant:"outline",size:"sm",onClick:()=>H?.(z),disabled:!L||W||X,children:D(z.labelI18n)},`selected-${M(z.value)}`))}):null]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as A,jsxs as W}from"react/jsx-runtime";import{Checkbox as Z}from"@contractspec/lib.ui-kit-web/ui/checkbox";import{Label as $}from"@contractspec/lib.ui-kit-web/ui/label";import{RadioGroupItem,RadioGroup as H}from"@contractspec/lib.ui-kit-web/ui/radio-group";import{Switch as L}from"@contractspec/lib.ui-kit-web/ui/switch";import{HStack as G,VStack as P}from"../../layout/Stack";import{optionValue as X}from"../../primitives/control";import{useThemedPrimitive as U,useTranslatedText as R}from"../../primitives/themed";export function Checkbox({componentKey:B,themeVariant:z,className:D,checked:E,onCheckedChange:F,...J}){const q=U({defaultComponentKey:"Checkbox",componentKey:B,themeVariant:z,className:D});return A(Z,{...q.props,...J,className:q.className,checked:Boolean(E),onCheckedChange:(M)=>F?.(Boolean(M))})}export function Switch({componentKey:B,themeVariant:z,className:D,checked:E,onCheckedChange:F,...J}){const q=U({defaultComponentKey:"Switch",componentKey:B,themeVariant:z,className:D});return A(L,{...q.props,...J,className:q.className,checked:Boolean(E),onCheckedChange:(M)=>F?.(Boolean(M))})}export function RadioGroup({options:B,value:z,onValueChange:D,disabled:E,componentKey:F,themeVariant:J,className:q}){const M=R(),Y=U({defaultComponentKey:"RadioGroup",componentKey:F,themeVariant:J,className:q});return A(H,{value:z==null?"":X(z),onValueChange:(O)=>D?.(O),disabled:E,className:Y.className,children:A(P,{gap:"sm",children:B?.map((O)=>{const Q=X(O.value);return W(G,{gap:"sm",align:"center",children:[A(RadioGroupItem,{value:Q,id:Q,disabled:O.disabled}),A($,{htmlFor:Q,children:M(O.labelI18n)})]},Q)})})})}export{RadioGroupItem};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as O}from"react/jsx-runtime";import{Combobox as J}from"@contractspec/lib.ui-kit-web/ui/combobox";import{useThemedPrimitive as L,useTranslatedText as M}from"../../primitives/themed";export function Combobox({componentKey:z,themeVariant:A,className:B,placeholder:D,placeholderI18n:E,searchPlaceholder:F,emptyText:G,...H}){const g=M(),q=L({defaultComponentKey:"Combobox",componentKey:z,themeVariant:A,className:B});return O(J,{...q.props,...H,className:q.className,placeholder:g(E??D),searchPlaceholder:g(F),emptyText:g(G)})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as J}from"react/jsx-runtime";import{DatePicker as Q}from"@contractspec/lib.ui-kit-web/ui/date-picker";import{DateRangePicker as S}from"@contractspec/lib.ui-kit-web/ui/date-range-picker";import{DateTimePicker as U}from"@contractspec/lib.ui-kit-web/ui/datetime-picker";import{TimePicker as X}from"@contractspec/lib.ui-kit-web/ui/time-picker";import{useThemedPrimitive as H,useTranslatedText as L}from"../../primitives/themed";export function DatePicker({componentKey:z,themeVariant:A,placeholder:B,placeholderI18n:C,className:q,...F}){const G=L(),E=H({defaultComponentKey:"DatePicker",componentKey:z,themeVariant:A,className:q});return J(Q,{...E.props,...F,className:E.className,placeholder:G(C??B)})}export function TimePicker({componentKey:z,themeVariant:A,placeholder:B,placeholderI18n:C,className:q,...F}){const G=L(),E=H({defaultComponentKey:"TimePicker",componentKey:z,themeVariant:A,className:q});return J(X,{...E.props,...F,className:E.className,placeholder:G(C??B)})}export function DateTimePicker({componentKey:z,themeVariant:A,datePlaceholder:B,timePlaceholder:C,datePlaceholderI18n:q,timePlaceholderI18n:F,className:G,...E}){const M=L(),O=H({defaultComponentKey:"DateTimePicker",componentKey:z,themeVariant:A,className:G});return J(U,{...O.props,...E,className:O.className,datePlaceholder:M(q??B),timePlaceholder:M(F??C)})}export function DateRangePicker({componentKey:z,themeVariant:A,className:B,...C}){const q=H({defaultComponentKey:"DateRangePicker",componentKey:z,themeVariant:A,className:B});return J(S,{...q.props,...C,className:q.className})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{DropdownMenu,DropdownMenuCheckboxItem,DropdownMenuContent,DropdownMenuGroup,DropdownMenuItem,DropdownMenuLabel,DropdownMenuPortal,DropdownMenuRadioGroup,DropdownMenuRadioItem,DropdownMenuSeparator,DropdownMenuShortcut,DropdownMenuSub,DropdownMenuSubContent,DropdownMenuSubTrigger,DropdownMenuTrigger}from"@contractspec/lib.ui-kit/ui/dropdown-menu";
|
|
1
|
+
export{DropdownMenu,DropdownMenuCheckboxItem,DropdownMenuContent,DropdownMenuGroup,DropdownMenuItem,DropdownMenuLabel,DropdownMenuPortal,DropdownMenuRadioGroup,DropdownMenuRadioItem,DropdownMenuSeparator,DropdownMenuShortcut,DropdownMenuSub,DropdownMenuSubContent,DropdownMenuSubTrigger,DropdownMenuTrigger}from"@contractspec/lib.ui-kit-web/ui/dropdown-menu";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as O}from"react/jsx-runtime";import{Field as R,FieldContent as U,FieldDescription as X,FieldError as Y,FieldGroup as Z,FieldLabel as $,FieldLegend as k,FieldSeparator as C,FieldSet as D}from"@contractspec/lib.ui-kit-web/ui/field";import{useThemedPrimitive as M,useTranslatedNode as Q}from"../../primitives/themed";export function Field({componentKey:A,themeVariant:B,className:H,layout:I,...z}){const q=M({defaultComponentKey:"Field",componentKey:A,themeVariant:B,className:H});return O(R,{...q.props,...z,className:q.className})}export function FieldSet({componentKey:A,themeVariant:B,className:H,...I}){const z=M({defaultComponentKey:"FieldSet",componentKey:A,themeVariant:B,className:H});return O(D,{...z.props,...I,className:z.className})}export function FieldLegend({componentKey:A,themeVariant:B,className:H,children:I,...z}){const q=M({defaultComponentKey:"FieldLegend",componentKey:A,themeVariant:B,className:H}),J=Q();return O(k,{...q.props,...z,className:q.className,children:J(I)})}export function FieldContent({componentKey:A,themeVariant:B,className:H,...I}){const z=M({defaultComponentKey:"FieldContent",componentKey:A,themeVariant:B,className:H});return O(U,{...z.props,...I,className:z.className})}export function FieldGroup({componentKey:A,themeVariant:B,className:H,layout:I,...z}){const q=M({defaultComponentKey:"FieldGroup",componentKey:A,themeVariant:B,className:H});return O(Z,{...q.props,...z,className:q.className})}export function FieldLabel({componentKey:A,themeVariant:B,className:H,children:I,...z}){const q=M({defaultComponentKey:"FieldLabel",componentKey:A,themeVariant:B,className:H}),J=Q();return O($,{...q.props,...z,className:q.className,children:J(I)})}export function FieldDescription({componentKey:A,themeVariant:B,className:H,children:I,...z}){const q=M({defaultComponentKey:"FieldDescription",componentKey:A,themeVariant:B,className:H}),J=Q();return O(X,{...q.props,...z,className:q.className,children:J(I)})}export function FieldError({componentKey:A,themeVariant:B,className:H,children:I,...z}){const q=M({defaultComponentKey:"FieldError",componentKey:A,themeVariant:B,className:H}),J=Q();return O(Y,{...q.props,...z,className:q.className,children:J(I)})}export function FieldSeparator({componentKey:A,themeVariant:B,className:H,children:I,...z}){const q=M({defaultComponentKey:"FieldSeparator",componentKey:A,themeVariant:B,className:H}),J=Q();return O(C,{...q.props,...z,className:q.className,children:J(I)})}export{InputGroup,InputGroupAddon,InputGroupButton,InputGroupInput,InputGroupText,InputGroupTextarea}from"@contractspec/lib.ui-kit-web/ui/input-group";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{InputGroup,InputGroupAddon,InputGroupButton,InputGroupInput,InputGroupText,InputGroupTextarea}from"@contractspec/lib.ui-kit-web/ui/input-group";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{InputOTP,InputOTPGroup,InputOTPSeparator,InputOTPSlot}from"@contractspec/lib.ui-kit-web/ui/input-otp";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as S}from"react/jsx-runtime";import{LoadingButton as M}from"@contractspec/lib.ui-kit-web/ui/loading-button";import{useThemedPrimitive as O,useTranslatedNode as Q,useTranslatedText as R}from"../../primitives/themed";export function LoadingButton({componentKey:z,themeVariant:A,className:C,children:D,loadingText:E,labelI18n:F,...G}){const q=O({defaultComponentKey:"LoadingButton",componentKey:z,themeVariant:A,className:C}),H=Q(),J=R();return S(M,{...q.props,...G,className:q.className,loadingText:J(E),children:H(F??D)})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as A}from"react/jsx-runtime";import{NativeSelectOptGroup,NativeSelect as D,NativeSelectOption as E}from"@contractspec/lib.ui-kit-web/ui/native-select";import{useThemedPrimitive as F,useTranslatedText as H}from"../../primitives/themed";export function NativeSelect({componentKey:g,themeVariant:q,className:B,placeholderI18n:I,...C}){const z=F({defaultComponentKey:"NativeSelect",componentKey:g,themeVariant:q,className:B});return A(D,{...z.props,...C,className:z.className})}export function NativeSelectOption(g){const q=H();return A(E,{...g,children:typeof g.children==="string"?q(g.children):g.children})}export{NativeSelectOptGroup};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as A,jsxs as k}from"react/jsx-runtime";import{SelectContent,SelectGroup,SelectItem,SelectTrigger,SelectValue,Select as Y}from"@contractspec/lib.ui-kit-web/ui/select";import{useThemedPrimitive as Z,useTranslatedText as $}from"../../primitives/themed";function B(z){return typeof z==="string"?z:String(z??"")}export function Select({options:z,value:D,onChange:F,placeholder:H,disabled:J,className:L,componentKey:M,themeVariant:O,placeholderI18n:Q,...R}){const E=$(),U=Z({defaultComponentKey:"Select",componentKey:M,themeVariant:O,className:L});return k(Y,{value:D==null?"":B(D),onValueChange:(q)=>F?.(q),disabled:J,...R,children:[A(SelectTrigger,{className:U.className,children:A(SelectValue,{placeholder:E(Q??H)})}),A(SelectContent,{children:A(SelectGroup,{children:z?.map((q,X)=>A(SelectItem,{value:B(q.value),disabled:q.disabled,children:E(q.labelI18n)??B(q.labelI18n)},`${B(q.value)}-${X}`))})})]})}export{SelectContent,SelectGroup,SelectItem,SelectTrigger,SelectValue};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{InputPassword}from"../../atoms/InputPassword";export{Autocomplete}from"./Autocomplete";export{Checkbox,RadioGroup,RadioGroupItem,Switch}from"./ChoiceControls";export{Combobox}from"./Combobox";export{DatePicker,DateRangePicker,DateTimePicker,TimePicker}from"./DateTimeControls";export{DropdownMenu,DropdownMenuCheckboxItem,DropdownMenuContent,DropdownMenuGroup,DropdownMenuItem,DropdownMenuLabel,DropdownMenuPortal,DropdownMenuRadioGroup,DropdownMenuRadioItem,DropdownMenuSeparator,DropdownMenuShortcut,DropdownMenuSub,DropdownMenuSubContent,DropdownMenuSubTrigger,DropdownMenuTrigger}from"./DropdownMenu";export{Field,FieldContent,FieldDescription,FieldError,FieldGroup,FieldLabel,FieldLegend,FieldSeparator,FieldSet}from"./Field";export{InputGroup,InputGroupAddon,InputGroupButton,InputGroupInput,InputGroupText,InputGroupTextarea}from"./InputGroup";export{InputOTP,InputOTPGroup,InputOTPSeparator,InputOTPSlot}from"./InputOTP";export{LoadingButton}from"./LoadingButton";export{NativeSelect,NativeSelectOptGroup,NativeSelectOption}from"./NativeSelect";export{Select}from"./Select";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{ActionForm}from"./ActionForm";export*from"./controls";export{FormCardLayout}from"./FormCardLayout";export{FormDialog}from"./FormDialog";export{FormGrid,FormRow,FormSection}from"./FormLayout";export{FormOneByOneLayout}from"./FormOneByOneLayout";export{FormStepsLayout}from"./FormStepsLayout";export{ZodForm}from"./ZodForm";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as E}from"react/jsx-runtime";import{Box as F,HStack as G,VStack as I}from"@contractspec/lib.ui-kit-web/ui/stack";import{useThemedPrimitive as D}from"../primitives/themed";export function Box({componentKey:q,themeVariant:z,className:A,...C}){const g=D({defaultComponentKey:"Box",componentKey:q,themeVariant:z,className:A});return E(F,{...g.props,...C,className:g.className})}export function HStack({componentKey:q,themeVariant:z,className:A,...C}){const g=D({defaultComponentKey:"HStack",componentKey:q,themeVariant:z,className:A});return E(G,{...g.props,...C,className:g.className})}export function VStack({componentKey:q,themeVariant:z,className:A,...C}){const g=D({defaultComponentKey:"VStack",componentKey:q,themeVariant:z,className:A});return E(I,{...g.props,...C,className:g.className})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{Box,HStack,VStack}from"./Stack";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as g,jsxs as C}from"react/jsx-runtime";import{cn as B}from"@contractspec/lib.ui-kit-web/ui/utils";export function DefinitionList({items:v,className:z}){return g("dl",{className:B("grid grid-cols-1 gap-3 md:grid-cols-3",z),children:v.map((q,A)=>C("div",{className:"col-span-1 grid grid-cols-3 gap-3 md:col-span-3",children:[g("dt",{className:"col-span-1 font-medium text-base text-foreground",children:q.term}),g("dd",{className:"col-span-2 text-base text-muted-foreground",children:q.description})]},A))})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as g,jsxs as C}from"react/jsx-runtime";import{cn as B}from"@contractspec/lib.ui-kit-web/ui/utils";export function KeyValueList({items:v,className:z}){return g("div",{className:B("grid grid-cols-1 gap-2",z),children:v.map((q,A)=>C("div",{className:"flex items-start gap-3",children:[g("div",{className:"w-40 shrink-0 font-medium text-base text-foreground",children:q.key}),g("div",{className:"flex-1 text-base text-muted-foreground",children:q.value})]},A))})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as B}from"react/jsx-runtime";import{cn as z}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as A}from"class-variance-authority";const calloutVariants=A("rounded-md border p-4",{variants:{tone:{info:"border-border bg-muted/30",warning:"border-warning/50 bg-warning/10",danger:"border-destructive/50 bg-destructive/10"}},defaultVariants:{tone:"info"}});export function LegalCallout({tone:d,className:g,...q}){return B("div",{className:z(calloutVariants({tone:d}),g),...q})}export{calloutVariants};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as G}from"react/jsx-runtime";import{cn as E}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as F}from"class-variance-authority";const headingVariants=F("text-foreground tracking-tight",{variants:{level:{h1:"font-semibold text-3xl md:text-4xl",h2:"font-semibold text-2xl md:text-3xl",h3:"font-semibold text-xl md:text-2xl",h4:"font-semibold text-lg md:text-xl"},tone:{default:"",muted:"text-muted-foreground",accent:"text-primary"},spacing:{none:"",sm:"mt-4",md:"mt-6",lg:"mt-8"}},defaultVariants:{level:"h2",tone:"default",spacing:"md"}});export function LegalHeading({as:z,level:q,tone:A,spacing:B,className:C,...D}){return G(z??q??"h2",{className:E(headingVariants({level:q,tone:A,spacing:B}),C),...D})}export{headingVariants};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as F}from"react/jsx-runtime";import{cn as D}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as E}from"class-variance-authority";const listVariants=E("",{variants:{type:{unordered:"list-disc pl-6",ordered:"list-decimal pl-6",none:"pl-0"},spacing:{sm:"space-y-1",md:"space-y-2",lg:"space-y-3"}},defaultVariants:{type:"unordered",spacing:"md"}});export function LegalList({type:q,spacing:z,className:A,children:B,...C}){return F(q==="ordered"?"ol":"ul",{className:D(listVariants({type:q,spacing:z}),A),...C,children:B})}export{listVariants};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as F}from"react/jsx-runtime";import{cn as D}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as E}from"class-variance-authority";const sectionVariants=E("space-y-3",{variants:{spacing:{sm:"py-3",md:"py-4",lg:"py-6"},border:{none:"",top:"border-t",bottom:"border-b",both:"border-y"},tone:{plain:"",subtle:"bg-muted/30"}},defaultVariants:{spacing:"md",border:"none",tone:"plain"}});export function LegalSection({spacing:q,border:z,tone:A,className:B,...C}){return F("div",{className:D(sectionVariants({spacing:q,border:z,tone:A}),B),...C})}export{sectionVariants};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as G}from"react/jsx-runtime";import{cn as E}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as F}from"class-variance-authority";const textVariants=F("text-base leading-relaxed",{variants:{tone:{default:"text-foreground",muted:"text-muted-foreground",danger:"text-destructive"},size:{base:"text-base",sm:"text-sm",lg:"text-lg"},spacing:{none:"",sm:"mt-2",md:"mt-3",lg:"mt-4"}},defaultVariants:{tone:"default",size:"base",spacing:"sm"}});export function LegalText({as:d="p",tone:q,size:A,spacing:B,className:C,...D}){return G(d,{className:E(textVariants({tone:q,size:A,spacing:B}),C),...D})}export{textVariants};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as G}from"react/jsx-runtime";import{Checkbox as K}from"@contractspec/lib.ui-kit-web/ui/checkbox";import{cn as F}from"@contractspec/lib.ui-kit-web/ui/utils";export function ConsentItem({id:A,label:D,description:B,checked:q,onChange:E,className:H}){return G("div",{className:F("flex items-start gap-3",H),children:[z(K,{id:A,checked:q,onCheckedChange:(J)=>E(Boolean(J))}),G("div",{children:[z("label",{htmlFor:A,className:"font-medium text-base",children:D}),B&&z("div",{className:"text-base text-muted-foreground",children:B})]})]})}export function ConsentList({items:A,onChange:D,className:B}){return z("div",{className:F("space-y-3",B),children:A.map((q)=>z(ConsentItem,{...q,onChange:(E)=>D(q.id,E)},q.id))})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as B}from"react/jsx-runtime";import{Label as F}from"@contractspec/lib.ui-kit-web/ui/label";import{Input as G}from"../../atoms/Input";import{Textarea as H}from"../../atoms/Textarea";export function ContactFields({value:q,onChange:D,disabled:E}){return B("div",{className:"space-y-4",children:[B("div",{className:"space-y-2",children:[z(F,{children:"Nom"}),z(G,{value:q.name,onChange:(A)=>D({...q,name:A.target.value}),disabled:E})]}),B("div",{className:"space-y-2",children:[z(F,{children:"Email"}),z(G,{type:"email",value:q.email,onChange:(A)=>D({...q,email:A.target.value}),disabled:E})]}),B("div",{className:"space-y-2",children:[z(F,{children:"Objet"}),z(G,{value:q.subject,onChange:(A)=>D({...q,subject:A.target.value}),disabled:E})]}),B("div",{className:"space-y-2",children:[z(F,{children:"Message"}),z(H,{value:q.message,onChange:(A)=>D({...q,message:A.target.value}),disabled:E,rows:6})]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as F,jsxs as A}from"react/jsx-runtime";import{cn as E}from"@contractspec/lib.ui-kit-web/ui/utils";export function LegalMeta({lastUpdated:q,version:z,className:B}){const C=(g)=>{if(!g)return null;try{return(typeof g==="string"?new Date(g):g).toLocaleDateString()}catch{return String(g)}};return A("div",{className:E("text-base text-muted-foreground",B),children:[z&&A("span",{children:["Version ",z]}),z&&q&&F("span",{className:"mx-2",children:"•"}),q&&A("span",{children:["Dernière mise à jour: ",C(q)]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q}from"react/jsx-runtime";import{cn as A}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as J}from"class-variance-authority";const tocVariants=J("text-base",{variants:{variant:{sidebar:"space-y-2",inline:"flex flex-wrap gap-3"},size:{sm:"",md:"text-base"}},defaultVariants:{variant:"sidebar",size:"md"}});export function LegalTOC({items:B,activeHref:C,onNavigate:D,variant:E,size:F,className:G,...I}){return q("nav",{"aria-label":"Table of contents",className:A(tocVariants({variant:E,size:F}),G),...I,children:E==="inline"?B.map((d)=>q("a",{href:d.href,onClick:(K)=>{D?.(d.href)},className:A("rounded-xs px-2 py-1 hover:bg-accent hover:text-accent-foreground",C===d.href&&"bg-accent text-accent-foreground"),children:d.label},d.href)):q("ul",{className:"list-none space-y-2 pl-0",children:B.map((d)=>q("li",{children:q("a",{href:d.href,onClick:()=>D?.(d.href),className:A("block rounded-xs px-2 py-1 hover:bg-accent hover:text-accent-foreground",C===d.href&&"bg-accent text-accent-foreground"),children:d.label})},d.href))})})}export{tocVariants};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as o,jsxs as g}from"react/jsx-runtime";import*as s from"react";import{Button as b}from"../../atoms/Button";import{ContactFields as c}from"../molecules/ContactFields";export function ContactForm({labels:m={submit:"Envoyer"},initialValue:r={name:"",email:"",subject:"",message:""},disabled:e,onSubmit:a}){const[i,l]=s.useState(r),[t,n]=s.useState(!1);return g("form",{onSubmit:async(u)=>{u.preventDefault();if(!a)return;n(!0);try{await a(i)}finally{n(!1)}},className:"space-y-6",children:[o(c,{value:i,onChange:l,disabled:e||t}),o(b,{disabled:e||t,type:"submit",children:t?"Envoi…":m.submit})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t,jsxs as d}from"react/jsx-runtime";import*as u from"react";import{Button as r}from"../../atoms/Button";import{LegalHeading as c}from"../atoms/LegalHeading";import{LegalSection as m}from"../atoms/LegalSection";import{LegalText as v}from"../atoms/LegalText";export function GDPRDataRequest({onExport:s,onDelete:p,labels:o={export:"Demander une copie",delete:"Demander la suppression"}}){const[e,n]=u.useState(null),l=async(a)=>{const i=a==="export"?s:p;if(!i)return;n(a);try{await i()}finally{n(null)}};return d(m,{border:"top",className:"space-y-3",children:[t(c,{as:"h2",level:"h2",children:"Demandes de données"}),t(v,{children:"Vous pouvez demander une copie de vos données ou solliciter leur suppression. Ces demandes nécessitent une vérification d’identité et sont traitées dans les délais légaux."}),d("div",{className:"flex flex-wrap gap-3",children:[t(r,{onPress:()=>l("export"),disabled:e!==null,children:e==="export"?"Envoi…":o.export}),t(r,{variant:"destructive",onPress:()=>l("delete"),disabled:e!==null,children:e==="delete"?"Envoi…":o.delete})]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t,jsxs as c}from"react/jsx-runtime";import{LegalHeading as a}from"../atoms/LegalHeading";import{LegalList as l}from"../atoms/LegalList";import{LegalSection as n}from"../atoms/LegalSection";export function GDPRRights({title:e="Vos droits RGPD",rights:i=["Accès à vos données","Rectification","Effacement (droit à l’oubli)","Opposition et limitation","Portabilité"]}){return c(n,{border:"top",children:[t(a,{as:"h2",level:"h2",children:e}),t(l,{type:"unordered",children:i.map((o,r)=>t("li",{children:o},r))})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as A}from"react/jsx-runtime";import{cn as G}from"@contractspec/lib.ui-kit-web/ui/utils";import{LegalHeading as I}from"../atoms/LegalHeading";import{LegalMeta as J}from"../molecules/LegalMeta";import{LegalTOC as B}from"../molecules/LegalTOC";export function LegalPageLayout({title:D,meta:z,toc:v,children:E,className:F}){return A("div",{className:G("mx-auto w-full max-w-6xl px-4 py-8 md:py-12",F),children:[A("div",{className:"mb-6 space-y-2",children:[q(I,{as:"h1",level:"h1",spacing:"sm",children:D}),z&&q(J,{lastUpdated:z.lastUpdated,version:z.version})]}),v&&v.length>0&&q("div",{className:"mb-6 md:hidden",children:q(B,{items:v,variant:"inline"})}),A("div",{className:"grid grid-cols-1 gap-8 md:grid-cols-[220px_minmax(0,1fr)]",children:[v&&v.length>0?q("aside",{className:"sticky top-24 hidden self-start md:block",children:q(B,{items:v,variant:"sidebar"})}):q("div",{className:"hidden md:block"}),q("article",{className:"prose max-w-none text-foreground",children:E})]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as c}from"react/jsx-runtime";import*as i from"react";import{Button as u}from"../../atoms/Button";import{ContactFields as d}from"../molecules/ContactFields";import{LegalPageLayout as g}from"../organisms/LegalPageLayout";export function ContactTemplate({title:r="Contact",meta:m,onSubmit:a}){const[o,s]=i.useState({name:"",email:"",subject:"",message:""}),[t,n]=i.useState(!1);return e(g,{title:r,meta:m,children:c("form",{onSubmit:async(l)=>{l.preventDefault();if(!a)return;n(!0);try{await a(o)}finally{n(!1)}},className:"space-y-6",children:[e(d,{value:o,onChange:s,disabled:t}),e(u,{disabled:t,type:"submit",children:t?"Envoi…":"Envoyer"})]})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t,jsxs as i}from"react/jsx-runtime";import{KeyValueList as g}from"../atoms/KeyValueList";import{LegalHeading as d}from"../atoms/LegalHeading";import{LegalSection as a}from"../atoms/LegalSection";import{LegalText as n}from"../atoms/LegalText";import{LegalPageLayout as R}from"../organisms/LegalPageLayout";export function CookiesTemplate({title:l="Politique Cookies",meta:r,toc:c,keyValues:o,sections:m}){return i(R,{title:l,meta:r,toc:c,children:[o&&o.length>0&&t(a,{border:"bottom",children:t(g,{items:o})}),m.map((e)=>i(a,{id:e.id,border:"top",className:"scroll-mt-24",children:[t(d,{as:"h2",level:"h2",children:e.title}),t(n,{as:"div",children:e.content})]},e.id))]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t,jsxs as o}from"react/jsx-runtime";import{DefinitionList as g}from"../atoms/DefinitionList";import{LegalHeading as i}from"../atoms/LegalHeading";import{LegalSection as l}from"../atoms/LegalSection";import{LegalText as m}from"../atoms/LegalText";import{LegalPageLayout as L}from"../organisms/LegalPageLayout";export function PrivacyTemplate({title:r="Politique de Confidentialité",meta:c,toc:n,sections:d,definitions:a}){return o(L,{title:r,meta:c,toc:n,children:[a&&a.length>0&&o(l,{border:"bottom",children:[t(i,{as:"h2",level:"h3",children:"Définitions"}),t(g,{items:a})]}),d.map((e)=>o(l,{id:e.id,border:"top",className:"scroll-mt-24",children:[t(i,{as:"h2",level:"h2",children:e.title}),t(m,{as:"div",children:e.content})]},e.id))]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t,jsxs as g}from"react/jsx-runtime";import{LegalHeading as r}from"../atoms/LegalHeading";import{LegalSection as n}from"../atoms/LegalSection";import{LegalText as c}from"../atoms/LegalText";import{LegalPageLayout as d}from"../organisms/LegalPageLayout";export function SalesTermsTemplate({title:a="Conditions Générales de Vente",meta:o,toc:i,sections:l}){return t(d,{title:a,meta:o,toc:i,children:l.map((e)=>g(n,{id:e.id,border:"top",className:"scroll-mt-24",children:[t(r,{as:"h2",level:"h2",children:e.title}),t(c,{as:"div",children:e.content})]},e.id))})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t,jsxs as g}from"react/jsx-runtime";import{LegalHeading as r}from"../atoms/LegalHeading";import{LegalSection as n}from"../atoms/LegalSection";import{LegalText as c}from"../atoms/LegalText";import{LegalPageLayout as d}from"../organisms/LegalPageLayout";export function TermsTemplate({title:a="Conditions Générales d’Utilisation",meta:o,toc:i,sections:l}){return t(d,{title:a,meta:o,toc:i,children:l.map((e)=>g(n,{id:e.id,border:"top",className:"scroll-mt-24",children:[t(r,{as:"h2",level:"h2",children:e.title}),t(c,{as:"div",children:e.content})]},e.id))})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as D}from"react/jsx-runtime";import{List as E,ListItem as F}from"@contractspec/lib.ui-kit-web/ui/list";import{useThemedPrimitive as C}from"../primitives/themed";export function List({componentKey:q,themeVariant:z,className:A,...B}){const g=C({defaultComponentKey:"List",componentKey:q,themeVariant:z,className:A});return D(E,{...g.props,...B,className:g.className})}export function ListItem({componentKey:q,themeVariant:z,className:A,...B}){const g=C({defaultComponentKey:"ListItem",componentKey:q,themeVariant:z,className:A});return D(F,{...g.props,...B,className:g.className})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as D}from"react/jsx-runtime";import{List as E,ListItem as F}from"@contractspec/lib.ui-kit/ui/list";import{useThemedPrimitive as C}from"../primitives/themed";export function List({componentKey:q,themeVariant:z,className:A,...B}){const g=C({defaultComponentKey:"List",componentKey:q,themeVariant:z,className:A});return D(E,{...g.props,...B,className:g.className})}export function ListItem({componentKey:q,themeVariant:z,className:A,...B}){const g=C({defaultComponentKey:"ListItem",componentKey:q,themeVariant:z,className:A});return D(F,{...g.props,...B,className:g.className})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{List,ListItem}from"./List";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as B}from"react/jsx-runtime";import{Card as v,CardContent,CardDescription,CardHeader,CardTitle}from"@contractspec/lib.ui-kit-web/ui/card";import{cn as z}from"@contractspec/lib.ui-kit-web/ui/utils";const A={default:"border-border/60 bg-card/90",muted:"border-border/50 bg-muted/50",elevated:"border-border/50 bg-card shadow-lg shadow-black/5"};export function MarketingCard({tone:g="default",className:h,...q}){return B(v,{className:z("backdrop-blur transition-shadow",A[g],h),...q})}export{CardContent as MarketingCardContent,CardDescription as MarketingCardDescription,CardHeader as MarketingCardHeader,CardTitle as MarketingCardTitle};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q}from"react/jsx-runtime";import{cn as E}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as F}from"class-variance-authority";import{MarketingSection as G}from"./MarketingSection";const H=F("grid gap-6",{variants:{columns:{1:"grid-cols-1",2:"grid-cols-1 md:grid-cols-2",3:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3",4:"grid-cols-1 md:grid-cols-2 lg:grid-cols-4"}},defaultVariants:{columns:3}});export function MarketingCardsSection({children:z,columns:A,gridClassName:B,...D}){return q(G,{...D,children:q("div",{className:E(H({columns:A}),B),children:z})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as A}from"react/jsx-runtime";import{HStack as N,VStack as z}from"@contractspec/lib.ui-kit-web/ui/stack";import{Muted as O,Small as P}from"@contractspec/lib.ui-kit-web/ui/typography";import{CheckCircle as Q}from"lucide-react";import{MarketingSection as R}from"./MarketingSection";export function MarketingComparisonSection({eyebrow:B,title:D,subtitle:E,left:F,right:G,tone:I="default",padding:J="comfortable"}){return q(R,{tone:I,padding:J,eyebrow:B,title:D,subtitle:E,align:"center",children:q("div",{className:"grid gap-8 md:grid-cols-2",children:[F,G].map((v)=>A(z,{gap:"md",align:"start",className:"rounded-xl border border-border/50 bg-card/50 p-6",children:[q(P,{className:"font-semibold text-sm",children:v.title}),q(z,{as:"div",role:"list",gap:"sm",align:"start",className:"list-none p-0",children:v.items.map((K,L)=>A(N,{as:"div",role:"listitem",gap:"sm",align:"start",children:[q(Q,{className:"mt-0.5 text-violet-400",size:18}),q(O,{className:"text-sm leading-relaxed",children:K})]},L))})]},v.title))})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as B}from"react/jsx-runtime";import{HStack as K,VStack as L}from"@contractspec/lib.ui-kit-web/ui/stack";import{Muted as O,Small as U}from"@contractspec/lib.ui-kit-web/ui/typography";import{cva as W}from"class-variance-authority";import{MarketingCard as X,MarketingCardContent as Y,MarketingCardTitle as P}from"./MarketingCard";const Z=W("w-full",{variants:{variant:{iconFirst:"space-y-3",listing:"",support:""}},defaultVariants:{variant:"iconFirst"}});export function MarketingIconCard({icon:F,title:G,description:z,tone:Q="default",iconClassName:J,headerAction:D,variant:E="iconFirst",className:R}){return q(X,{tone:Q,className:R,children:q(Y,{className:Z({variant:E}),children:E==="iconFirst"?B(L,{gap:"sm",align:"start",children:[B(K,{gap:"sm",align:"center",justify:"between",className:"w-full",children:[q(F,{className:J,size:24}),D]}),q(P,{className:"text-xl",children:G}),z?q(O,{className:"text-sm leading-relaxed",children:z}):null]}):B(K,{gap:"md",align:"start",children:[q(F,{className:J,size:E==="listing"?18:20}),B(L,{gap:"xs",align:"start",children:[q(P,{className:"font-semibold text-base",children:G}),z?q(O,{className:"text-sm leading-relaxed",children:z}):null,D?q(U,{children:D}):null]})]})})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as F}from"react/jsx-runtime";import{VStack as Q}from"@contractspec/lib.ui-kit-web/ui/stack";import{Muted as E}from"@contractspec/lib.ui-kit-web/ui/typography";import{cn as D}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as R}from"class-variance-authority";const T=R("w-full",{variants:{tone:{default:"bg-background",muted:"border-border/60 border-b bg-muted/40",panel:"bg-card/60 shadow-[0_10px_60px_-45px_rgba(0,0,0,0.35)] backdrop-blur",gradient:"bg-gradient-to-br from-violet-500/10 via-indigo-500/5 to-blue-500/5"},padding:{compact:"py-10",comfortable:"py-16 sm:py-20",spacious:"py-20 sm:py-24"}},defaultVariants:{tone:"default",padding:"comfortable"}});export function MarketingSection({children:G,eyebrow:z,title:B,subtitle:C,align:H="center",maxWidth:I="xl",tone:J,padding:K,className:L}){const O=I==="lg"?"max-w-5xl":"max-w-6xl",P=H==="center"?"items-center text-center":"items-start text-left";return q("section",{className:D(T({tone:J,padding:K}),"transition-colors",L),children:F("div",{className:D("mx-auto w-full px-4 sm:px-6 lg:px-8",O),children:[(z||B||C)&&F(Q,{gap:"sm",className:D("mb-10",P),children:[z?q(E,{className:"font-semibold text-[11px] uppercase tracking-[0.2em]",children:z}):null,B?q("div",{className:"font-bold text-3xl leading-tight md:text-4xl",children:B}):null,C?q(E,{className:"text-base md:text-lg",children:C}):null]}),G]})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as z}from"react/jsx-runtime";import{HStack as E,VStack as F}from"@contractspec/lib.ui-kit-web/ui/stack";import{Muted as G,Small as I}from"@contractspec/lib.ui-kit-web/ui/typography";import{MarketingCard as J,MarketingCardContent as K,MarketingCardHeader as L,MarketingCardTitle as N}from"./MarketingCard";export function MarketingStepCard({step:A,title:B,description:v,tone:D="default"}){return z(J,{tone:D,children:[q(L,{children:z(E,{gap:"md",align:"center",className:"w-full",children:[q("div",{className:"flex h-10 w-10 items-center justify-center rounded-lg bg-primary/15",children:q(I,{className:"font-semibold text-primary",children:A})}),q(N,{className:"text-lg",children:B})]})}),v?q(K,{children:q(F,{gap:"sm",children:q(G,{className:"text-sm leading-relaxed",children:v})})}):null]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as O}from"react/jsx-runtime";import{DropdownMenu as W,DropdownMenuContent as X,DropdownMenuItem as H,DropdownMenuTrigger as Y}from"@contractspec/lib.ui-kit-web/ui/dropdown-menu";import*as J from"react";import{Button as Z}from"../atoms/Button";function $(q){return`Please load and use this markdown context when answering: ${q}`}function K(q,F){const A=encodeURIComponent($(F));switch(q){case"claude":return`https://claude.ai/new?prompt=${A}`;case"chatgpt":default:return`https://chatgpt.com/?q=${A}`}}export function AiLinkButton({href:q,className:F}){const A=J.useCallback(()=>{try{navigator.clipboard?.writeText(q).catch(()=>{})}catch(E){}},[q]),Q=J.useCallback(()=>{const E=K("chatgpt",q);try{navigator.clipboard?.writeText(q).catch(()=>{})}catch(V){}window.open(E,"_blank","noopener,noreferrer")},[q]),S=J.useCallback(()=>{const E=K("claude",q);try{navigator.clipboard?.writeText(q).catch(()=>{})}catch(V){}window.open(E,"_blank","noopener,noreferrer")},[q]);return O(W,{children:[z(Y,{asChild:!0,children:z(Z,{className:F,variant:"secondary","aria-label":"AI actions",children:"AI"})}),O(X,{align:"end",children:[z(H,{onClick:A,children:"Get link for AI"}),z(H,{onClick:Q,children:"Open in ChatGPT"}),z(H,{onClick:S,children:"Open in Claude"})]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as K}from"react/jsx-runtime";import{BreadcrumbItem as C,BreadcrumbLink as D,BreadcrumbList as E,BreadcrumbPage as F,BreadcrumbSeparator as G,Breadcrumb as H}from"@contractspec/lib.ui-kit-web/ui/breadcrumb";import*as J from"react";export function Breadcrumbs({items:z}){if(!z?.length)return null;return q(H,{children:q(E,{children:z.map((v,A)=>K(J.Fragment,{children:[q(C,{children:v.href?q(D,{href:v.href,children:v.label}):q(F,{children:v.label})}),A<z.length-1&&q(G,{})]},A))})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as c}from"react/jsx-runtime";import{useEffect as f,useState as x}from"react";import{cn as n}from"../../../lib/utils";import{CopyButton as z}from"../CopyButton";export function CodeBlock({code:t,language:o="typescript",filename:i,showLineNumbers:l=!1,showCopyButton:d=!0,onCopy:m,className:s,...u}){const[p,g]=x(null),h=()=>{m?.()};f(()=>{let a=!0;async function v(){try{const{codeToHtml:r}=await import("shiki"),b=await r(t,{lang:o==="text"?"plaintext":o,theme:"vitesse-dark"});if(a)g(b)}catch(r){console.error("Failed to highlight code:",r)}}v();return()=>{a=!1}},[t,o]);return c("div",{className:n("relative overflow-hidden rounded-lg border border-zinc-800 bg-zinc-950",s),...u,children:[i&&e("div",{className:"flex items-center justify-between border-zinc-800 border-b bg-zinc-900/50 px-4 py-2 text-xs text-zinc-400",children:e("span",{children:i})}),c("div",{className:"relative",children:[d&&e(z,{value:t,className:"absolute top-3 right-3",onCopy:h}),p?e("div",{className:n("overflow-x-auto p-4 font-mono text-[13px] leading-6","[&_pre]:!m-0 [&_pre]:!bg-transparent [&_pre]:!p-0","[&_code]:!bg-transparent",l&&"line-numbers"),dangerouslySetInnerHTML:{__html:p}}):e("pre",{className:n("overflow-x-auto p-4 font-mono text-[13px] text-zinc-300 leading-6",l&&"line-numbers"),children:e("code",{children:t})})]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{CodeBlock}from"./CodeBlock";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as J}from"react/jsx-runtime";import{CommandDialog as X,CommandEmpty as Y,CommandGroup as Z,CommandInput as $,CommandItem as k,CommandList as D,CommandSeparator as E,CommandShortcut as G}from"@contractspec/lib.ui-kit-web/ui/command";import*as P from"react";export function CommandPalette({open:K,onOpenChange:M,groups:Q,placeholder:T="Type a command or search…"}){const[U,W]=P.useState(!1),N=typeof K==="boolean",F=N?K:U,H=N&&M?M:W;P.useEffect(()=>{const A=(q)=>{if((q.metaKey||q.ctrlKey)&&q.key.toLowerCase()==="k"){q.preventDefault();H(!F)}};document.addEventListener("keydown",A);return()=>document.removeEventListener("keydown",A)},[F,H]);return J(X,{open:F,onOpenChange:H,children:[z($,{placeholder:T}),J(D,{children:[z(Y,{children:"No results found."}),Q.map((A,q)=>z(Z,{heading:A.heading,children:A.items.map((B)=>J(k,{onSelect:B.onSelect,children:[z("span",{children:B.label}),B.shortcut&&z(G,{children:B.shortcut})]},B.id))},q)),z(E,{})]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as D,jsxs as E,Fragment as Y}from"react/jsx-runtime";import{cn as U}from"@contractspec/lib.ui-kit-web/ui/utils";import{SearchIcon as V}from"lucide-react";import*as J from"react";import{Button as W}from"../atoms/Button";import{CommandPalette as X}from"./CommandPalette";export function CommandSearchTrigger({groups:K,className:L,placeholder:M="Search…",compact:G=!1}){const[Q,A]=J.useState(!1);J.useEffect(()=>{const H=(z)=>{if((z.metaKey||z.ctrlKey)&&z.key.toLowerCase()==="k"){z.preventDefault();A((T)=>!T)}};document.addEventListener("keydown",H);return()=>document.removeEventListener("keydown",H)},[]);return E(Y,{children:[E(W,{variant:"ghost",type:"button",onPress:()=>A(!0),className:U("group inline-flex items-center gap-2 rounded-xs border px-3 text-muted-foreground text-sm hover:bg-muted/40",G?"h-9 w-9 justify-center p-0":"h-9",L),"aria-label":"Open search",children:[D(V,{className:"h-4 w-4 opacity-70"}),!G&&E("span",{className:"whitespace-nowrap",children:[M,D("span",{className:"ml-2 hidden items-center gap-1 rounded-xs border bg-muted px-1.5 font-mono text-[10px] md:inline-flex",children:"⌘K"})]})]}),D(X,{open:Q,onOpenChange:A,groups:K})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as F,jsxs as W}from"react/jsx-runtime";import{useEffect as N,useState as O}from"react";import{cn as U}from"../../../lib/utils";import{usePackageManager as R}from"../../providers/PackageManagerProvider";import{CopyButton as T}from"../CopyButton";const V="package-manager-preference";export function CommandTabs({commands:q,initialPreference:X="bun",className:Z,onCopy:$,...A}){const z=R(),[B,J]=O(()=>{return X}),Q=z?.preference??B,G=z?.setPreference??J;N(()=>{if(z)return;try{const b=localStorage.getItem(V);if(b&&q[b])J(b)}catch{}},[q,z]);const K=(b)=>{G(b);if(!z)try{localStorage.setItem(V,b)}catch{}},I=Object.keys(q);if(I.length===0)return null;const D=q[Q]?Q:I[0];if(!D)return null;const H=q[D];if(!H)return null;const L=()=>{$?.({command:H,packageManager:D})};return W("div",{className:U("relative rounded-lg border border-zinc-800 bg-zinc-950",Z),...A,children:[F("div",{className:"flex items-center border-zinc-800 border-b bg-zinc-900/50 px-2 pt-2",role:"tablist","aria-label":"Package manager selection",children:I.map((b)=>F("button",{type:"button",role:"tab","aria-selected":D===b,onClick:()=>K(b),className:U("rounded-t-md border-transparent border-t border-r border-l px-4 py-2 font-medium text-xs text-zinc-400","transition-colors hover:text-zinc-100","focus:outline-none focus:ring-2 focus:ring-zinc-600 focus:ring-offset-1 focus:ring-offset-zinc-900",D===b&&"border-zinc-800 bg-zinc-950 text-zinc-100"),children:b},b))}),W("div",{className:"relative p-4",role:"tabpanel",children:[F(T,{value:H,className:"absolute top-3 right-3",onCopy:L}),F("pre",{className:"overflow-x-auto pr-10 font-mono text-[13px] text-white leading-6",children:F("code",{children:H})})]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{CommandTabs}from"./CommandTabs";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as o,jsxs as b}from"react/jsx-runtime";import{Check as p,Copy as u}from"lucide-react";import{useCallback as l,useEffect as f,useState as m}from"react";import{cn as C}from"../../../lib/utils";export function CopyButton({value:e,onCopy:r,className:i,...c}){const[t,n]=m(!1);f(()=>{if(!t)return;const a=setTimeout(()=>{n(!1)},2000);return()=>clearTimeout(a)},[t]);const s=l(async()=>{try{await navigator.clipboard.writeText(e);n(!0);r?.()}catch{return}},[e,r]);return b("button",{type:"button",className:C("relative z-10 inline-flex h-6 w-6 items-center justify-center rounded-md","border border-zinc-700 bg-zinc-800 text-zinc-400","transition-all hover:bg-zinc-700 hover:text-zinc-100","focus:outline-none focus:ring-2 focus:ring-zinc-600 focus:ring-offset-2 focus:ring-offset-zinc-900",i),onClick:s,"aria-label":t?"Copied":"Copy to clipboard",...c,children:[o("span",{className:"sr-only",children:t?"Copied":"Copy"}),t?o(p,{className:"h-3 w-3"}):o(u,{className:"h-3 w-3"})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{CopyButton}from"./CopyButton";
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as v}from"react/jsx-runtime";import{Card as P,CardContent as Q,CardHeader as U,CardTitle as V}from"@contractspec/lib.ui-kit-web/ui/card";import{cn as W}from"@contractspec/lib.ui-kit-web/ui/utils";import{ScoreBar as X}from"../atoms/ScoreBar";const Y=["coding","reasoning","agentic","cost","latency","context","safety","custom"];export function DimensionScoresCard({dimensionScores:G,title:J="Dimension Scores",size:K="md",className:L}){const A=Y.flatMap((g)=>{const F=G[g];return F?[{dimension:g,...F}]:[]});if(A.length===0)return null;return v(P,{className:W("w-full",L),children:[q(U,{className:"pb-2",children:q(V,{className:"text-base",children:J})}),q(Q,{className:"flex flex-col gap-3",children:A.map((g)=>v("div",{className:"flex flex-col gap-0.5",children:[q(X,{score:g.score,label:g.dimension,size:K}),g.confidence<0.5&&v("span",{className:"text-muted-foreground text-xs",children:["Low confidence (",Math.round(g.confidence*100),"%)"]})]},g.dimension))})]})}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as g,jsxs as A}from"react/jsx-runtime";import{Card as b,CardContent as v}from"@contractspec/lib.ui-kit-web/ui/card";import{cn as F}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as Y}from"class-variance-authority";import{ChevronDown as _}from"lucide-react";import*as y from"react";const Z=Y("group transition-all duration-200 hover:shadow-md",{variants:{emphasis:{default:"",subtle:"border-muted/60 bg-muted/20",strong:"border-primary/50 bg-primary/5",accentGradient:"border-transparent bg-gradient-to-br from-primary/10 via-background to-secondary/10 ring-1 ring-primary/20"},density:{compact:"p-3",comfortable:"p-4 md:p-5"},interactive:{true:"transform-gpu cursor-pointer hover:scale-[1.02] hover:border-primary/40",false:""}},defaultVariants:{emphasis:"default",density:"comfortable",interactive:!1}}),h=Y("flex shrink-0 items-center justify-center rounded-lg",{variants:{size:{sm:"h-8 w-8",md:"h-10 w-10",lg:"h-12 w-12"},tone:{default:"bg-muted text-muted-foreground",primary:"bg-primary/10 text-primary",success:"bg-emerald-500/10 text-emerald-600 dark:text-emerald-400",warning:"bg-amber-500/10 text-amber-600 dark:text-amber-400",info:"bg-blue-500/10 text-blue-600 dark:text-blue-400",danger:"bg-red-500/10 text-red-600 dark:text-red-400"}},defaultVariants:{size:"md",tone:"default"}});export function EntityCard({cardTitle:$,cardSubtitle:L,icon:M,iconTone:D="default",iconSize:H="md",chips:R,meta:O,footer:Q,emphasis:W,density:z,interactive:I,className:V,contentClassName:N,href:B,preview:U,expandableContent:G,defaultExpanded:P=!1,onClick:X,...T}){const[q,k]=y.useState(P),S=B?"a":"div",E=I??!!(X||B),m=(K)=>{K.stopPropagation();k(!q)},J=g(b,{className:F(Z({emphasis:W,interactive:E}),V),onClick:X,...T,children:g(v,{className:F(Z({density:z}),N),children:A("div",{className:"space-y-3",children:[A("div",{className:"flex items-start gap-3",children:[M&&g("div",{className:h({size:H,tone:D}),children:M}),A("div",{className:"flex flex-1 items-start justify-between gap-2",children:[A("div",{className:"min-w-0 flex-1",children:[g("div",{className:"truncate font-medium text-lg transition-colors group-hover:text-primary",children:$}),L&&g("div",{className:"text-muted-foreground text-sm",children:L})]}),A("div",{className:"inline-flex shrink-0 items-center gap-2",children:[R,G&&g("button",{type:"button",onClick:m,className:"rounded-md p-1 transition-colors hover:bg-muted","aria-expanded":q,"aria-label":q?"Collapse":"Expand",children:g(_,{className:F("h-4 w-4 text-muted-foreground transition-transform duration-200",q&&"rotate-180")})})]})]})]}),O&&g("div",{className:"space-y-1",children:O}),G&&g("div",{className:F("overflow-hidden transition-all duration-200",q?"max-h-96 opacity-100":"max-h-0 opacity-0"),children:g("div",{className:"border-border/50 border-t pt-2",children:G})}),Q&&g("div",{className:"flex items-center justify-between pt-1",children:Q})]})})}),u=(()=>{if(!U)return J;try{const{HoverPreview:K}=require("./HoverPreview");return g(K,{trigger:J,content:U})}catch{return J}})();return g(S,{href:B,className:B?"block":void 0,children:u})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as E,jsxs as D}from"react/jsx-runtime";import{Badge as k}from"@contractspec/lib.ui-kit-web/ui/badge";import{cn as I}from"@contractspec/lib.ui-kit-web/ui/utils";import*as K from"react";import{Button as W}from"../atoms/Button";import{Input as N}from"../atoms/Input";export function FiltersToolbar({className:X,children:Y,right:Z,searchPlaceholder:$,searchValue:G,onSearchChange:F,onSearchSubmit:L,debounceMs:O=250,activeChips:T=[],onClearAll:H}){const[J,U]=K.useState(G??"");K.useEffect(()=>{U(G??"")},[G]);K.useEffect(()=>{if(!F)return;const z=setTimeout(()=>F(J),O);return()=>clearTimeout(z)},[J,O,F]);return D("div",{className:I("space-y-2",X),children:[D("div",{className:"flex flex-col items-stretch gap-2 md:flex-row md:items-center md:justify-between",children:[D("div",{className:"flex flex-1 items-center gap-2",children:[F?D("div",{className:"flex flex-1 items-center gap-2",children:[E(N,{value:J,onChange:(z)=>U(z.target.value),onKeyDown:(z)=>{if(z.key==="Enter")L?.()},placeholder:$,keyboard:{kind:"search"}}),E(W,{variant:"outline",onPress:()=>L?.(),className:"shrink-0",children:"Rechercher"})]}):null,Y]}),Z]}),(T.length>0||H)&&D("div",{className:"flex flex-wrap items-center gap-2",children:[T.map((z)=>D(k,{variant:"secondary",className:"inline-flex items-center gap-2",children:[E("span",{children:z.label}),z.onRemove&&E("button",{type:"button","aria-label":"Supprimer le filtre",onClick:z.onRemove,className:"rounded-xs px-1 text-base hover:bg-muted",children:"×"})]},z.key)),H&&E(W,{size:"sm",variant:"ghost",onPress:H,children:"Effacer les filtres"})]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as J}from"react/jsx-runtime";import{HoverCard as F,HoverCardContent as G,HoverCardTrigger as I}from"@contractspec/lib.ui-kit-web/ui/hover-card";export function HoverPreview({trigger:z,content:A,align:B="center",sideOffset:D=8,className:E}){return J(F,{children:[q(I,{asChild:!0,children:z}),q(G,{align:B,sideOffset:D,className:E,children:A})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as P}from"react/jsx-runtime";import{useMemo as L}from"react";import{CommandTabs as O}from"../CommandTabs";function H(z,E,B,F,J){const q=E.join(" ");if(B==="exec")switch(z){case"bun":return`bunx ${q}`;case"npm":return`npx ${q}`;case"yarn":return`yarn dlx ${q}`;case"pnpm":return`pnpm dlx ${q}`}if(B==="create")switch(z){case"bun":return`bun create ${q}`;case"npm":return`npm create ${q}`;case"yarn":return`yarn create ${q}`;case"pnpm":return`pnpm create ${q}`}if(B==="run")switch(z){case"bun":return`bun run ${q}`;case"npm":return`npm run ${q}`;case"yarn":return`yarn ${q}`;case"pnpm":return`pnpm ${q}`}const D=[F?z==="npm"?"--save-dev":"-D":"",J?"-g":""].filter(Boolean).join(" ");switch(z){case"bun":return`bun add ${q}${D?` ${D}`:""}`;case"npm":return`npm install ${q}${D?` ${D}`:""}`;case"yarn":return`yarn add ${q}${D?` ${D}`:""}`;case"pnpm":return`pnpm add ${q}${D?` ${D}`:""}`}}export function InstallCommand({package:z,type:E="add",dev:B=!1,global:F=!1,onCopy:J,...q}){const G=L(()=>Array.isArray(z)?z:[z],[z]),K=L(()=>({bun:H("bun",G,E,B,F),npm:H("npm",G,E,B,F),yarn:H("yarn",G,E,B,F),pnpm:H("pnpm",G,E,B,F)}),[G,E,B,F]);return P(O,{commands:K,onCopy:J,...q})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{InstallCommand}from"./InstallCommand";
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{Button as r}from"../atoms/Button";export function LangSwitch({value:n,options:o,onChange:i,size:a="sm"}){return t("div",{className:"flex items-center gap-1",children:o.map((e)=>t(r,{variant:n===e.code?"default":"ghost",size:a,onPress:()=>i(e.code),children:e.label},e.code))})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as E}from"react/jsx-runtime";import{DropdownMenu as K,DropdownMenuContent as L,DropdownMenuItem as O,DropdownMenuTrigger as P}from"@contractspec/lib.ui-kit-web/ui/dropdown-menu";import{Globe as Q}from"lucide-react";export function LangSwitchDropdown({value:A,options:B,onChange:F,className:H}){const J=B.find((q)=>q.code===A);return E(K,{children:[z(P,{className:H,children:E("div",{className:"inline-flex items-center gap-2 rounded-xs border px-2 py-1 text-sm hover:bg-muted/40",children:[z(Q,{className:"h-4 w-4"}),z("span",{className:"hidden sm:inline",children:J?.label??A.toUpperCase()})]})}),z(L,{align:"end",children:B.map((q)=>z(O,{onSelect:()=>F(q.code),children:q.label},q.code))})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as g,jsxs as F}from"react/jsx-runtime";import{cn as D}from"@contractspec/lib.ui-kit-web/ui/utils";import{LoaderCircular as E}from"../atoms/LoaderCircular";export function LoaderBlock({label:v,description:q,className:A,size:B="md"}){return g("div",{className:D("flex items-center justify-center p-6",A),children:F("div",{className:"inline-flex items-center gap-3",children:[g(E,{size:B,label:v}),q?g("span",{className:"text-base text-muted-foreground",children:q}):null]})})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as m}from"react/jsx-runtime";import{Text as c,View as o}from"react-native";import{LoaderCircular as i}from"../atoms/LoaderCircular.
|
|
1
|
+
import{jsx as e,jsxs as m}from"react/jsx-runtime";import{Text as c,View as o}from"react-native";import{LoaderCircular as i}from"../atoms/LoaderCircular.native";export function LoaderBlock({label:r,description:t,className:a,size:l="md"}){return e(o,{className:["items-center justify-center p-6",a].filter(Boolean).join(" "),children:m(o,{className:"flex-row items-center gap-3",children:[e(i,{size:l,label:r}),t?e(c,{className:"text-base text-muted-foreground",children:t}):null]})})}export default LoaderBlock;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as i,jsxs as n}from"react/jsx-runtime";import{formatInlineMarkdown as o}from"./formatInlineMarkdown";import{renderMarkdownTable as c}from"./renderMarkdownTable";export function MarkdownRenderer({content:a}){const l=a.split(`
|
|
2
|
+
`),s=[];let t=0;while(t<l.length){const e=l[t]??"";if(e.startsWith("|")&&l[t+1]?.match(/^\|[\s-|]+\|$/)){const r=[e];t++;while(t<l.length&&(l[t]?.startsWith("|")??!1)){r.push(l[t]??"");t++}s.push(c(r,s.length));continue}if(e.startsWith("# "))s.push(i("h1",{className:"mb-4 font-bold text-2xl",children:e.slice(2)},t));else if(e.startsWith("## "))s.push(i("h2",{className:"mt-6 mb-3 font-semibold text-xl",children:e.slice(3)},t));else if(e.startsWith("### "))s.push(i("h3",{className:"mt-4 mb-2 font-medium text-lg",children:e.slice(4)},t));else if(e.startsWith("> "))s.push(i("blockquote",{className:"my-2 border-violet-500/50 border-l-4 pl-4 text-muted-foreground italic",children:e.slice(2)},t));else if(e.startsWith("- "))s.push(i("li",{className:"ml-4 list-disc",children:o(e.slice(2))},t));else if(e.startsWith("**")&&e.includes(":**")){const[r,...m]=e.split(":**");s.push(n("p",{className:"my-1",children:[n("strong",{children:[r?.slice(2),":"]}),m.join(":**")]},t))}else if(e.startsWith("_")&&e.endsWith("_"))s.push(i("p",{className:"my-1 text-muted-foreground italic",children:e.slice(1,-1)},t));else if(!e.trim())s.push(i("div",{className:"h-2"},t));else s.push(i("p",{className:"my-1",children:o(e)},t));t++}return i("div",{className:"prose prose-sm dark:prose-invert max-w-none",children:s})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as s}from"react/jsx-runtime";export function formatInlineMarkdown(o){return o.split(/(\*\*[^*]+\*\*)/g).map((t,n)=>{if(t.startsWith("**")&&t.endsWith("**"))return s("strong",{children:t.slice(2,-2)},n);if(t.includes("`"))return t.split(/(`[^`]+`)/g).map((e,r)=>{if(e.startsWith("`")&&e.endsWith("`"))return s("code",{className:"rounded bg-violet-500/10 px-1.5 py-0.5 font-mono text-sm",children:e.slice(1,-1)},`${n}-${r}`);return e});return t})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{MarkdownRenderer}from"./MarkdownRenderer";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as c}from"react/jsx-runtime";import{formatInlineMarkdown as p}from"./formatInlineMarkdown";export function renderMarkdownTable(o,d){if(o.length<2)return null;const a=(r)=>r.split("|").slice(1,-1).map((t)=>t.trim()),m=a(o[0]??""),l=o.slice(2).map(a);return e("div",{className:"my-4 overflow-x-auto",children:c("table",{className:"min-w-full border-collapse border border-border text-sm",children:[e("thead",{children:e("tr",{className:"bg-muted/50",children:m.map((r,t)=>e("th",{className:"border border-border px-3 py-2 text-left font-semibold",children:r},t))})}),e("tbody",{children:l.map((r,t)=>e("tr",{className:"hover:bg-muted/30",children:r.map((b,n)=>e("td",{className:"border border-border px-3 py-2",children:p(b)},n))},t))})]})},`table-${d}`)}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as F}from"react/jsx-runtime";import{cn as D}from"@contractspec/lib.ui-kit-web/ui/utils";import{NavItemCard as E}from"./NavItemCard";export function MobileNavMenu({items:A,className:B}){return q("nav",{className:D("flex flex-col gap-3",B),children:A.map((g)=>F("div",{className:"flex flex-col gap-2",children:[q("a",{href:g.href||"#",className:"font-semibold text-base",children:g.label}),g.items&&g.items.length>0&&q("div",{className:"grid grid-cols-1 gap-2",children:g.items.map((z)=>q(E,{item:z},z.href))})]},String(g.key??g.href??g.label)))})}
|
|
@@ -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)))})})}
|