@contractspec/lib.design-system 3.10.0 → 3.11.1
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 +116 -5
- package/dist/browser/components/agent/AgentMonitor.js +1 -0
- package/dist/browser/components/agent/ApprovalQueue.js +1 -0
- package/dist/browser/components/agent/ApprovalQueue.mobile.js +1 -0
- package/dist/browser/components/atoms/ActionButtons.js +1 -0
- package/dist/browser/components/atoms/Button.js +1 -0
- package/dist/browser/components/atoms/Button.mobile.js +1 -0
- package/dist/browser/components/atoms/ButtonLink.js +1 -0
- package/dist/browser/components/atoms/ButtonLink.mobile.js +1 -0
- package/dist/browser/components/atoms/Cta.js +1 -0
- package/dist/browser/components/atoms/Cta.mobile.js +1 -0
- package/dist/browser/components/atoms/DataChips.js +1 -0
- package/dist/browser/components/atoms/EmptyState.js +1 -0
- package/dist/browser/components/atoms/ErrorState.js +1 -0
- package/dist/browser/components/atoms/ErrorState.mobile.js +1 -0
- package/dist/browser/components/atoms/Input.js +1 -0
- package/dist/browser/components/atoms/Input.mobile.js +1 -0
- package/dist/browser/components/atoms/Link.js +1 -0
- package/dist/browser/components/atoms/Link.web.js +1 -0
- package/dist/browser/components/atoms/LoaderCircular.js +1 -0
- package/dist/browser/components/atoms/LoaderCircular.mobile.js +1 -0
- package/dist/browser/components/atoms/NavBrand.js +1 -0
- package/dist/browser/components/atoms/RankBadge.js +1 -0
- package/dist/browser/components/atoms/ScoreBar.js +1 -0
- package/dist/browser/components/atoms/Stepper.js +1 -0
- package/dist/browser/components/atoms/Textarea.js +1 -0
- package/dist/browser/components/atoms/Textarea.mobile.js +1 -0
- package/dist/browser/components/data-table/DataTable.js +1 -0
- package/dist/browser/components/data-table/DataTable.mobile.js +1 -0
- package/dist/browser/components/data-table/DataTableToolbar.js +1 -0
- package/dist/browser/components/data-table/DataTableToolbar.mobile.js +1 -0
- package/dist/browser/components/data-table/DataTableToolbar.shared.js +1 -0
- package/dist/browser/components/data-view/DataViewDetail.js +1 -0
- package/dist/browser/components/data-view/DataViewList.js +1 -0
- package/dist/browser/components/data-view/DataViewRenderer.js +1 -0
- package/dist/browser/components/data-view/DataViewRenderer.mobile.js +1 -0
- package/dist/browser/components/data-view/DataViewTable.js +1 -0
- package/dist/browser/components/data-view/DataViewTable.mobile.js +1 -0
- package/dist/browser/components/data-view/utils.js +1 -0
- package/dist/browser/components/forms/ActionForm.js +1 -0
- package/dist/browser/components/forms/FormCardLayout.js +1 -0
- package/dist/browser/components/forms/FormDialog.js +1 -0
- package/dist/browser/components/forms/FormLayout.js +1 -0
- package/dist/browser/components/forms/FormOneByOneLayout.js +1 -0
- package/dist/browser/components/forms/FormStepsLayout.js +1 -0
- package/dist/browser/components/forms/ZodForm.js +1 -0
- package/dist/browser/components/forms/controls/Autocomplete.js +1 -0
- package/dist/browser/components/forms/controls/Autocomplete.mobile.js +1 -0
- package/dist/browser/components/forms/controls/ChoiceControls.js +1 -0
- package/dist/browser/components/forms/controls/ChoiceControls.mobile.js +1 -0
- package/dist/browser/components/forms/controls/Combobox.js +1 -0
- package/dist/browser/components/forms/controls/Combobox.mobile.js +1 -0
- package/dist/browser/components/forms/controls/DateTimeControls.js +1 -0
- package/dist/browser/components/forms/controls/DateTimeControls.mobile.js +1 -0
- package/dist/browser/components/forms/controls/DropdownMenu.js +1 -0
- package/dist/browser/components/forms/controls/DropdownMenu.mobile.js +1 -0
- package/dist/browser/components/forms/controls/Field.js +1 -0
- package/dist/browser/components/forms/controls/Field.mobile.js +1 -0
- package/dist/browser/components/forms/controls/InputGroup.js +1 -0
- package/dist/browser/components/forms/controls/InputGroup.mobile.js +1 -0
- package/dist/browser/components/forms/controls/InputOTP.js +1 -0
- package/dist/browser/components/forms/controls/InputOTP.mobile.js +1 -0
- package/dist/browser/components/forms/controls/LoadingButton.js +1 -0
- package/dist/browser/components/forms/controls/LoadingButton.mobile.js +1 -0
- package/dist/browser/components/forms/controls/NativeSelect.js +1 -0
- package/dist/browser/components/forms/controls/NativeSelect.mobile.js +1 -0
- package/dist/browser/components/forms/controls/Select.js +1 -0
- package/dist/browser/components/forms/controls/Select.mobile.js +1 -0
- package/dist/browser/components/forms/controls/index.js +1 -0
- package/dist/browser/components/forms/index.js +1 -0
- package/dist/browser/components/layout/Stack.js +1 -0
- package/dist/browser/components/layout/Stack.mobile.js +1 -0
- package/dist/browser/components/layout/index.js +1 -0
- package/dist/browser/components/legal/atoms/DefinitionList.js +1 -0
- package/dist/browser/components/legal/atoms/KeyValueList.js +1 -0
- package/dist/browser/components/legal/atoms/LegalCallout.js +1 -0
- package/dist/browser/components/legal/atoms/LegalHeading.js +1 -0
- package/dist/browser/components/legal/atoms/LegalList.js +1 -0
- package/dist/browser/components/legal/atoms/LegalSection.js +1 -0
- package/dist/browser/components/legal/atoms/LegalText.js +1 -0
- package/dist/browser/components/legal/molecules/Consent.js +1 -0
- package/dist/browser/components/legal/molecules/ContactFields.js +1 -0
- package/dist/browser/components/legal/molecules/LegalMeta.js +1 -0
- package/dist/browser/components/legal/molecules/LegalTOC.js +1 -0
- package/dist/browser/components/legal/organisms/ContactForm.js +1 -0
- package/dist/browser/components/legal/organisms/GDPRDataRequest.js +1 -0
- package/dist/browser/components/legal/organisms/GDPRRights.js +1 -0
- package/dist/browser/components/legal/organisms/LegalPageLayout.js +1 -0
- package/dist/browser/components/legal/templates/ContactTemplate.js +1 -0
- package/dist/browser/components/legal/templates/CookiesTemplate.js +1 -0
- package/dist/browser/components/legal/templates/PrivacyTemplate.js +1 -0
- package/dist/browser/components/legal/templates/SalesTermsTemplate.js +1 -0
- package/dist/browser/components/legal/templates/TermsTemplate.js +1 -0
- package/dist/browser/components/marketing/MarketingCard.js +1 -0
- package/dist/browser/components/marketing/MarketingCardsSection.js +1 -0
- package/dist/browser/components/marketing/MarketingComparisonSection.js +1 -0
- package/dist/browser/components/marketing/MarketingIconCard.js +1 -0
- package/dist/browser/components/marketing/MarketingSection.js +1 -0
- package/dist/browser/components/marketing/MarketingStepCard.js +1 -0
- package/dist/browser/components/molecules/AiLinkButton.js +1 -0
- package/dist/browser/components/molecules/Breadcrumbs.js +1 -0
- package/dist/browser/components/molecules/CodeBlock/CodeBlock.js +1 -0
- package/dist/browser/components/molecules/CodeBlock/index.js +1 -0
- package/dist/browser/components/molecules/CodeBlock/types.js +0 -0
- package/dist/browser/components/molecules/CommandPalette.js +1 -0
- package/dist/browser/components/molecules/CommandSearchTrigger.js +1 -0
- package/dist/browser/components/molecules/CommandTabs/CommandTabs.js +1 -0
- package/dist/browser/components/molecules/CommandTabs/index.js +1 -0
- package/dist/browser/components/molecules/CommandTabs/types.js +0 -0
- package/dist/browser/components/molecules/CopyButton/CopyButton.js +1 -0
- package/dist/browser/components/molecules/CopyButton/index.js +1 -0
- package/dist/browser/components/molecules/CopyButton/types.js +0 -0
- package/dist/browser/components/molecules/DimensionScoresCard.js +1 -0
- package/dist/browser/components/molecules/DropdownMenu.js +0 -0
- package/dist/browser/components/molecules/EntityCard.js +1 -0
- package/dist/browser/components/molecules/FiltersToolbar.js +1 -0
- package/dist/browser/components/molecules/FiltersToolbar.mobile.js +1 -0
- package/dist/browser/components/molecules/HoverPreview.js +1 -0
- package/dist/browser/components/molecules/InstallCommand/InstallCommand.js +1 -0
- package/dist/browser/components/molecules/InstallCommand/index.js +1 -0
- package/dist/browser/components/molecules/InstallCommand/types.js +0 -0
- package/dist/browser/components/molecules/LangSwitch.js +1 -0
- package/dist/browser/components/molecules/LangSwitchDropdown.js +1 -0
- package/dist/browser/components/molecules/LoaderBlock.js +1 -0
- package/dist/browser/components/molecules/LoaderBlock.mobile.js +1 -0
- package/dist/browser/components/molecules/MarkdownRenderer/MarkdownRenderer.js +2 -0
- package/dist/browser/components/molecules/MarkdownRenderer/formatInlineMarkdown.js +1 -0
- package/dist/browser/components/molecules/MarkdownRenderer/index.js +1 -0
- package/dist/browser/components/molecules/MarkdownRenderer/renderMarkdownTable.js +1 -0
- package/dist/browser/components/molecules/MarkdownRenderer/types.js +0 -0
- package/dist/browser/components/molecules/MobileNavMenu.js +1 -0
- package/dist/browser/components/molecules/NavItemCard.js +1 -0
- package/dist/browser/components/molecules/NavMain.js +1 -0
- package/dist/browser/components/molecules/NavUser.js +1 -0
- package/dist/browser/components/molecules/OverviewCard.js +1 -0
- package/dist/browser/components/molecules/SkeletonBlock/index.js +1 -0
- package/dist/browser/components/molecules/SkeletonBlock/index.mobile.js +1 -0
- package/dist/browser/components/molecules/SkeletonBlock/index.web.js +1 -0
- package/dist/browser/components/molecules/SkeletonBlock/types.js +0 -0
- package/dist/browser/components/molecules/SkeletonCircle/index.js +1 -0
- package/dist/browser/components/molecules/SkeletonCircle/index.mobile.js +1 -0
- package/dist/browser/components/molecules/SkeletonCircle/index.web.js +1 -0
- package/dist/browser/components/molecules/SkeletonCircle/types.js +0 -0
- package/dist/browser/components/molecules/SkeletonList/index.js +1 -0
- package/dist/browser/components/molecules/SkeletonList/index.mobile.js +1 -0
- package/dist/browser/components/molecules/SkeletonList/index.web.js +1 -0
- package/dist/browser/components/molecules/SkeletonList/types.js +0 -0
- package/dist/browser/components/molecules/StatCard.js +1 -0
- package/dist/browser/components/molecules/StatusChip.js +1 -0
- package/dist/browser/components/molecules/hover-previews/Doc.js +1 -0
- package/dist/browser/components/molecules/hover-previews/Media.js +1 -0
- package/dist/browser/components/molecules/hover-previews/Simple.js +1 -0
- package/dist/browser/components/molecules/hover-previews/Stats.js +1 -0
- package/dist/browser/components/molecules/hover-previews/User.js +1 -0
- package/dist/browser/components/native/BottomTabs.mobile.js +1 -0
- package/dist/browser/components/native/FlatListScreen.mobile.js +1 -0
- package/dist/browser/components/native/SheetMenu.mobile.js +1 -0
- package/dist/browser/components/organisms/AcademyLayout.js +1 -0
- package/dist/browser/components/organisms/AppHeader.js +1 -0
- package/dist/browser/components/organisms/AppHeader.mobile.js +1 -0
- package/dist/browser/components/organisms/AppLayout.js +1 -0
- package/dist/browser/components/organisms/AppSidebar.js +1 -0
- package/dist/browser/components/organisms/AppSidebar.mobile.js +0 -0
- package/dist/browser/components/organisms/EmptyDataList.js +1 -0
- package/dist/browser/components/organisms/EmptyDataList.mobile.js +1 -0
- package/dist/browser/components/organisms/EmptyDataList.types.js +0 -0
- package/dist/browser/components/organisms/EmptySearchResult.js +1 -0
- package/dist/browser/components/organisms/FAQSection.js +1 -0
- package/dist/browser/components/organisms/FeatureCarousel.js +1 -0
- package/dist/browser/components/organisms/FeaturesSection.js +1 -0
- package/dist/browser/components/organisms/Footer.js +1 -0
- package/dist/browser/components/organisms/GridLayout.js +1 -0
- package/dist/browser/components/organisms/Header.js +1 -0
- package/dist/browser/components/organisms/Header.mobile.js +1 -0
- package/dist/browser/components/organisms/HeroResponsive.js +1 -0
- package/dist/browser/components/organisms/HeroSection.js +1 -0
- package/dist/browser/components/organisms/ListCardPage.js +1 -0
- package/dist/browser/components/organisms/ListGridPage.js +1 -0
- package/dist/browser/components/organisms/ListPageResponsive.js +1 -0
- package/dist/browser/components/organisms/ListTablePage.js +1 -0
- package/dist/browser/components/organisms/ListTablePage.mobile.js +1 -0
- package/dist/browser/components/organisms/MarketingHeader.js +1 -0
- package/dist/browser/components/organisms/MarketingHeaderDesktop.js +1 -0
- package/dist/browser/components/organisms/MarketingHeaderMobile.js +1 -0
- package/dist/browser/components/organisms/MarketingLayout.js +1 -0
- package/dist/browser/components/organisms/ModelComparisonView.js +1 -0
- package/dist/browser/components/organisms/PageHeaderResponsive.js +1 -0
- package/dist/browser/components/organisms/PageHeaderResponsive.mobile.js +1 -0
- package/dist/browser/components/organisms/PricingCarousel.js +1 -0
- package/dist/browser/components/organisms/PricingSection.js +1 -0
- package/dist/browser/components/organisms/TestimonialCarousel.js +1 -0
- package/dist/browser/components/primitives/control.js +1 -0
- package/dist/browser/components/primitives/themed.js +1 -0
- package/dist/browser/components/providers/PackageManagerProvider.js +1 -0
- package/dist/browser/components/templates/lists/ListPageTemplate/index.js +1 -0
- package/dist/browser/components/templates/lists/ListPageTemplate/index.mobile.js +1 -0
- package/dist/browser/components/templates/lists/ListPageTemplate/index.web.js +1 -0
- package/dist/browser/components/templates/lists/ListPageTemplate/types.js +0 -0
- package/dist/browser/components/visualization/ComparisonView.js +1 -0
- package/dist/browser/components/visualization/ComparisonView.mobile.js +1 -0
- package/dist/browser/components/visualization/TimelineView.js +1 -0
- package/dist/browser/components/visualization/TimelineView.mobile.js +1 -0
- package/dist/browser/components/visualization/VisualizationCard.js +1 -0
- package/dist/browser/components/visualization/VisualizationCard.mobile.js +1 -0
- package/dist/browser/components/visualization/VisualizationGrid.js +1 -0
- package/dist/browser/components/visualization/VisualizationGrid.mobile.js +1 -0
- package/dist/browser/components/visualization/VisualizationRenderer.js +1 -0
- package/dist/browser/components/visualization/VisualizationRenderer.mobile.js +1 -0
- package/dist/browser/components/visualization/types.js +0 -0
- package/dist/browser/contracts.typecheck.js +1 -0
- package/dist/browser/design-system.feature.js +1 -0
- package/dist/browser/hooks/useListUrlState.js +1 -0
- package/dist/browser/i18n/translation.js +1 -0
- package/dist/browser/index.js +1 -1
- package/dist/browser/lib/keyboard.js +1 -0
- package/dist/browser/lib/utils.js +1 -0
- package/dist/browser/platform/useColorScheme.js +1 -0
- package/dist/browser/platform/useColorScheme.mobile.js +1 -0
- package/dist/browser/platform/useReducedMotion.js +1 -0
- package/dist/browser/platform/useReducedMotion.mobile.js +1 -0
- package/dist/browser/platform/useResponsive.js +1 -0
- package/dist/browser/platform/useResponsive.mobile.js +1 -0
- package/dist/browser/platform/withPlatformUI.js +1 -0
- package/dist/browser/renderers/form-contract/renderer.js +1 -0
- package/dist/browser/renderers/form-contract/rich-fields.js +1 -0
- package/dist/browser/renderers/form-contract/shell.js +1 -0
- package/dist/browser/renderers/form-contract/values.js +1 -0
- package/dist/browser/renderers/form-contract.js +1 -0
- package/dist/browser/renderers/index.js +1 -0
- package/dist/browser/theme/contracts.js +1 -0
- package/dist/browser/theme/index.js +1 -0
- package/dist/browser/theme/runtime-resolvers.js +1 -0
- package/dist/browser/theme/runtime.js +1 -0
- package/dist/browser/theme/tailwind-config.js +1 -0
- package/dist/browser/theme/tailwind-css.js +9 -0
- package/dist/browser/theme/tailwind-variables.js +1 -0
- package/dist/browser/theme/tailwind.js +1 -0
- package/dist/browser/theme/tokenBridge.js +1 -0
- package/dist/browser/theme/tokens.js +1 -0
- package/dist/browser/theme/variants.js +1 -0
- package/dist/browser/types/nativewind-env.d.js +0 -0
- package/dist/browser/types/navigation.js +0 -0
- package/dist/components/agent/AgentMonitor.js +1 -0
- package/dist/components/agent/ApprovalQueue.js +1 -0
- package/dist/components/agent/ApprovalQueue.mobile.js +1 -0
- package/dist/components/atoms/ActionButtons.js +1 -0
- package/dist/components/atoms/Button.d.ts +3 -2
- package/dist/components/atoms/Button.js +1 -0
- package/dist/components/atoms/Button.mobile.d.ts +3 -2
- package/dist/components/atoms/Button.mobile.js +1 -0
- package/dist/components/atoms/ButtonLink.js +1 -0
- package/dist/components/atoms/ButtonLink.mobile.js +1 -0
- package/dist/components/atoms/Cta.js +1 -0
- package/dist/components/atoms/Cta.mobile.js +1 -0
- package/dist/components/atoms/DataChips.js +1 -0
- package/dist/components/atoms/EmptyState.js +1 -0
- package/dist/components/atoms/ErrorState.js +1 -0
- package/dist/components/atoms/ErrorState.mobile.js +1 -0
- package/dist/components/atoms/Input.d.ts +4 -12
- package/dist/components/atoms/Input.js +1 -0
- package/dist/components/atoms/Input.mobile.d.ts +4 -13
- package/dist/components/atoms/Input.mobile.js +1 -0
- package/dist/components/atoms/Link.js +1 -0
- package/dist/components/atoms/Link.web.js +1 -0
- package/dist/components/atoms/LoaderCircular.js +1 -0
- package/dist/components/atoms/LoaderCircular.mobile.js +1 -0
- package/dist/components/atoms/NavBrand.js +1 -0
- package/dist/components/atoms/RankBadge.js +1 -0
- package/dist/components/atoms/ScoreBar.js +1 -0
- package/dist/components/atoms/Stepper.js +1 -0
- package/dist/components/atoms/Textarea.d.ts +4 -10
- package/dist/components/atoms/Textarea.js +1 -0
- package/dist/components/atoms/Textarea.mobile.d.ts +4 -13
- package/dist/components/atoms/Textarea.mobile.js +1 -0
- package/dist/components/data-table/DataTable.js +1 -0
- package/dist/components/data-table/DataTable.mobile.js +1 -0
- package/dist/components/data-table/DataTableToolbar.js +1 -0
- package/dist/components/data-table/DataTableToolbar.mobile.js +1 -0
- package/dist/components/data-table/DataTableToolbar.shared.js +1 -0
- package/dist/components/data-view/DataViewDetail.js +1 -0
- package/dist/components/data-view/DataViewList.js +1 -0
- package/dist/components/data-view/DataViewRenderer.js +1 -0
- package/dist/components/data-view/DataViewRenderer.mobile.js +1 -0
- package/dist/components/data-view/DataViewTable.d.ts +1 -1
- package/dist/components/data-view/DataViewTable.js +1 -0
- package/dist/components/data-view/DataViewTable.mobile.d.ts +1 -1
- package/dist/components/data-view/DataViewTable.mobile.js +1 -0
- package/dist/components/data-view/utils.js +1 -0
- package/dist/components/forms/ActionForm.js +1 -0
- package/dist/components/forms/FormCardLayout.js +1 -0
- package/dist/components/forms/FormDialog.js +1 -0
- package/dist/components/forms/FormLayout.js +1 -0
- package/dist/components/forms/FormOneByOneLayout.js +1 -0
- package/dist/components/forms/FormStepsLayout.js +1 -0
- package/dist/components/forms/ZodForm.js +1 -0
- package/dist/components/forms/controls/Autocomplete.d.ts +17 -0
- package/dist/components/forms/controls/Autocomplete.js +1 -0
- package/dist/components/forms/controls/Autocomplete.mobile.d.ts +17 -0
- package/dist/components/forms/controls/Autocomplete.mobile.js +1 -0
- package/dist/components/forms/controls/ChoiceControls.d.ts +26 -0
- package/dist/components/forms/controls/ChoiceControls.js +1 -0
- package/dist/components/forms/controls/ChoiceControls.mobile.d.ts +26 -0
- package/dist/components/forms/controls/ChoiceControls.mobile.js +1 -0
- package/dist/components/forms/controls/Combobox.d.ts +4 -0
- package/dist/components/forms/controls/Combobox.js +1 -0
- package/dist/components/forms/controls/Combobox.mobile.d.ts +2 -0
- package/dist/components/forms/controls/Combobox.mobile.js +1 -0
- package/dist/components/forms/controls/DateTimeControls.d.ts +20 -0
- package/dist/components/forms/controls/DateTimeControls.js +1 -0
- package/dist/components/forms/controls/DateTimeControls.mobile.d.ts +20 -0
- package/dist/components/forms/controls/DateTimeControls.mobile.js +1 -0
- package/dist/components/forms/controls/DropdownMenu.d.ts +1 -0
- package/dist/components/forms/controls/DropdownMenu.js +1 -0
- package/dist/components/forms/controls/DropdownMenu.mobile.d.ts +1 -0
- package/dist/components/forms/controls/DropdownMenu.mobile.js +1 -0
- package/dist/components/forms/controls/Field.d.ts +27 -0
- package/dist/components/forms/controls/Field.js +1 -0
- package/dist/components/forms/controls/Field.mobile.d.ts +2 -0
- package/dist/components/forms/controls/Field.mobile.js +1 -0
- package/dist/components/forms/controls/InputGroup.d.ts +1 -0
- package/dist/components/forms/controls/InputGroup.js +1 -0
- package/dist/components/forms/controls/InputGroup.mobile.d.ts +5 -0
- package/dist/components/forms/controls/InputGroup.mobile.js +1 -0
- package/dist/components/forms/controls/InputOTP.d.ts +1 -0
- package/dist/components/forms/controls/InputOTP.js +1 -0
- package/dist/components/forms/controls/InputOTP.mobile.d.ts +2 -0
- package/dist/components/forms/controls/InputOTP.mobile.js +1 -0
- package/dist/components/forms/controls/LoadingButton.d.ts +4 -0
- package/dist/components/forms/controls/LoadingButton.js +1 -0
- package/dist/components/forms/controls/LoadingButton.mobile.d.ts +4 -0
- package/dist/components/forms/controls/LoadingButton.mobile.js +1 -0
- package/dist/components/forms/controls/NativeSelect.d.ts +7 -0
- package/dist/components/forms/controls/NativeSelect.js +1 -0
- package/dist/components/forms/controls/NativeSelect.mobile.d.ts +2 -0
- package/dist/components/forms/controls/NativeSelect.mobile.js +1 -0
- package/dist/components/forms/controls/Select.d.ts +15 -0
- package/dist/components/forms/controls/Select.js +1 -0
- package/dist/components/forms/controls/Select.mobile.d.ts +13 -0
- package/dist/components/forms/controls/Select.mobile.js +1 -0
- package/dist/components/forms/controls/index.d.ts +11 -0
- package/dist/components/forms/controls/index.js +1 -0
- package/dist/components/forms/index.d.ts +8 -0
- package/dist/components/forms/index.js +1 -0
- package/dist/components/layout/Stack.d.ts +9 -0
- package/dist/components/layout/Stack.js +1 -0
- package/dist/components/layout/Stack.mobile.d.ts +13 -0
- package/dist/components/layout/Stack.mobile.js +1 -0
- package/dist/components/layout/index.d.ts +1 -0
- package/dist/components/layout/index.js +1 -0
- package/dist/components/legal/atoms/DefinitionList.js +1 -0
- package/dist/components/legal/atoms/KeyValueList.js +1 -0
- package/dist/components/legal/atoms/LegalCallout.d.ts +1 -1
- package/dist/components/legal/atoms/LegalCallout.js +1 -0
- package/dist/components/legal/atoms/LegalHeading.js +1 -0
- package/dist/components/legal/atoms/LegalList.d.ts +1 -1
- package/dist/components/legal/atoms/LegalList.js +1 -0
- package/dist/components/legal/atoms/LegalSection.d.ts +1 -1
- package/dist/components/legal/atoms/LegalSection.js +1 -0
- package/dist/components/legal/atoms/LegalText.js +1 -0
- package/dist/components/legal/molecules/Consent.js +1 -0
- package/dist/components/legal/molecules/ContactFields.js +1 -0
- package/dist/components/legal/molecules/LegalMeta.js +1 -0
- package/dist/components/legal/molecules/LegalTOC.js +1 -0
- package/dist/components/legal/organisms/ContactForm.js +1 -0
- package/dist/components/legal/organisms/GDPRDataRequest.js +1 -0
- package/dist/components/legal/organisms/GDPRRights.js +1 -0
- package/dist/components/legal/organisms/LegalPageLayout.js +1 -0
- package/dist/components/legal/templates/ContactTemplate.js +1 -0
- package/dist/components/legal/templates/CookiesTemplate.js +1 -0
- package/dist/components/legal/templates/PrivacyTemplate.js +1 -0
- package/dist/components/legal/templates/SalesTermsTemplate.js +1 -0
- package/dist/components/legal/templates/TermsTemplate.js +1 -0
- package/dist/components/marketing/MarketingCard.js +1 -0
- package/dist/components/marketing/MarketingCardsSection.js +1 -0
- package/dist/components/marketing/MarketingComparisonSection.js +1 -0
- package/dist/components/marketing/MarketingIconCard.js +1 -0
- package/dist/components/marketing/MarketingSection.js +1 -0
- package/dist/components/marketing/MarketingStepCard.js +1 -0
- package/dist/components/molecules/AiLinkButton.js +1 -0
- package/dist/components/molecules/Breadcrumbs.js +1 -0
- package/dist/components/molecules/CodeBlock/CodeBlock.js +1 -0
- package/dist/components/molecules/CodeBlock/index.js +1 -0
- package/dist/components/molecules/CodeBlock/types.js +0 -0
- package/dist/components/molecules/CommandPalette.js +1 -0
- package/dist/components/molecules/CommandSearchTrigger.js +1 -0
- package/dist/components/molecules/CommandTabs/CommandTabs.js +1 -0
- package/dist/components/molecules/CommandTabs/index.js +1 -0
- package/dist/components/molecules/CommandTabs/types.js +0 -0
- package/dist/components/molecules/CopyButton/CopyButton.js +1 -0
- package/dist/components/molecules/CopyButton/index.js +1 -0
- package/dist/components/molecules/CopyButton/types.js +0 -0
- package/dist/components/molecules/DimensionScoresCard.js +1 -0
- package/dist/components/molecules/DropdownMenu.js +0 -0
- package/dist/components/molecules/EntityCard.js +1 -0
- package/dist/components/molecules/FiltersToolbar.js +1 -0
- package/dist/components/molecules/FiltersToolbar.mobile.js +1 -0
- package/dist/components/molecules/HoverPreview.js +1 -0
- package/dist/components/molecules/InstallCommand/InstallCommand.js +1 -0
- package/dist/components/molecules/InstallCommand/index.js +1 -0
- package/dist/components/molecules/InstallCommand/types.js +0 -0
- package/dist/components/molecules/LangSwitch.js +1 -0
- package/dist/components/molecules/LangSwitchDropdown.js +1 -0
- package/dist/components/molecules/LoaderBlock.js +1 -0
- package/dist/components/molecules/LoaderBlock.mobile.js +1 -0
- package/dist/components/molecules/MarkdownRenderer/MarkdownRenderer.js +2 -0
- package/dist/components/molecules/MarkdownRenderer/formatInlineMarkdown.js +1 -0
- package/dist/components/molecules/MarkdownRenderer/index.js +1 -0
- package/dist/components/molecules/MarkdownRenderer/renderMarkdownTable.js +1 -0
- package/dist/components/molecules/MarkdownRenderer/types.js +0 -0
- package/dist/components/molecules/MobileNavMenu.js +1 -0
- package/dist/components/molecules/NavItemCard.js +1 -0
- package/dist/components/molecules/NavMain.js +1 -0
- package/dist/components/molecules/NavUser.js +1 -0
- package/dist/components/molecules/OverviewCard.js +1 -0
- package/dist/components/molecules/SkeletonBlock/index.js +1 -0
- package/dist/components/molecules/SkeletonBlock/index.mobile.js +1 -0
- package/dist/components/molecules/SkeletonBlock/index.web.js +1 -0
- package/dist/components/molecules/SkeletonBlock/types.js +0 -0
- package/dist/components/molecules/SkeletonCircle/index.js +1 -0
- package/dist/components/molecules/SkeletonCircle/index.mobile.js +1 -0
- package/dist/components/molecules/SkeletonCircle/index.web.js +1 -0
- package/dist/components/molecules/SkeletonCircle/types.js +0 -0
- package/dist/components/molecules/SkeletonList/index.js +1 -0
- package/dist/components/molecules/SkeletonList/index.mobile.js +1 -0
- package/dist/components/molecules/SkeletonList/index.web.js +1 -0
- package/dist/components/molecules/SkeletonList/types.js +0 -0
- package/dist/components/molecules/StatCard.js +1 -0
- package/dist/components/molecules/StatusChip.d.ts +1 -1
- package/dist/components/molecules/StatusChip.js +1 -0
- package/dist/components/molecules/hover-previews/Doc.js +1 -0
- package/dist/components/molecules/hover-previews/Media.js +1 -0
- package/dist/components/molecules/hover-previews/Simple.js +1 -0
- package/dist/components/molecules/hover-previews/Stats.js +1 -0
- package/dist/components/molecules/hover-previews/User.js +1 -0
- package/dist/components/native/BottomTabs.mobile.js +1 -0
- package/dist/components/native/FlatListScreen.mobile.js +1 -0
- package/dist/components/native/SheetMenu.mobile.js +1 -0
- package/dist/components/organisms/AcademyLayout.js +1 -0
- package/dist/components/organisms/AppHeader.js +1 -0
- package/dist/components/organisms/AppHeader.mobile.js +1 -0
- package/dist/components/organisms/AppLayout.js +1 -0
- package/dist/components/organisms/AppSidebar.js +1 -0
- package/dist/components/organisms/AppSidebar.mobile.js +0 -0
- package/dist/components/organisms/EmptyDataList.js +1 -0
- package/dist/components/organisms/EmptyDataList.mobile.js +1 -0
- package/dist/components/organisms/EmptyDataList.types.js +0 -0
- package/dist/components/organisms/EmptySearchResult.js +1 -0
- package/dist/components/organisms/FAQSection.js +1 -0
- package/dist/components/organisms/FeatureCarousel.js +1 -0
- package/dist/components/organisms/FeaturesSection.js +1 -0
- package/dist/components/organisms/Footer.js +1 -0
- package/dist/components/organisms/GridLayout.js +1 -0
- package/dist/components/organisms/Header.js +1 -0
- package/dist/components/organisms/Header.mobile.js +1 -0
- package/dist/components/organisms/HeroResponsive.js +1 -0
- package/dist/components/organisms/HeroSection.js +1 -0
- package/dist/components/organisms/ListCardPage.js +1 -0
- package/dist/components/organisms/ListGridPage.js +1 -0
- package/dist/components/organisms/ListPageResponsive.js +1 -0
- package/dist/components/organisms/ListTablePage.js +1 -0
- package/dist/components/organisms/ListTablePage.mobile.js +1 -0
- package/dist/components/organisms/MarketingHeader.js +1 -0
- package/dist/components/organisms/MarketingHeaderDesktop.js +1 -0
- package/dist/components/organisms/MarketingHeaderMobile.js +1 -0
- package/dist/components/organisms/MarketingLayout.js +1 -0
- package/dist/components/organisms/ModelComparisonView.js +1 -0
- package/dist/components/organisms/PageHeaderResponsive.js +1 -0
- package/dist/components/organisms/PageHeaderResponsive.mobile.js +1 -0
- package/dist/components/organisms/PricingCarousel.js +1 -0
- package/dist/components/organisms/PricingSection.js +1 -0
- package/dist/components/organisms/TestimonialCarousel.js +1 -0
- package/dist/components/primitives/control.d.ts +894 -0
- package/dist/components/primitives/control.js +1 -0
- package/dist/components/primitives/themed.d.ts +881 -0
- package/dist/components/primitives/themed.js +1 -0
- package/dist/components/providers/PackageManagerProvider.js +1 -0
- package/dist/components/templates/lists/ListPageTemplate/index.js +1 -0
- package/dist/components/templates/lists/ListPageTemplate/index.mobile.js +1 -0
- package/dist/components/templates/lists/ListPageTemplate/index.web.js +1 -0
- package/dist/components/templates/lists/ListPageTemplate/types.js +0 -0
- package/dist/components/visualization/ComparisonView.js +1 -0
- package/dist/components/visualization/ComparisonView.mobile.js +1 -0
- package/dist/components/visualization/TimelineView.js +1 -0
- package/dist/components/visualization/TimelineView.mobile.js +1 -0
- package/dist/components/visualization/VisualizationCard.js +1 -0
- package/dist/components/visualization/VisualizationCard.mobile.js +1 -0
- package/dist/components/visualization/VisualizationGrid.js +1 -0
- package/dist/components/visualization/VisualizationGrid.mobile.js +1 -0
- package/dist/components/visualization/VisualizationRenderer.js +1 -0
- package/dist/components/visualization/VisualizationRenderer.mobile.js +1 -0
- package/dist/components/visualization/types.js +0 -0
- package/dist/contracts.typecheck.js +1 -0
- package/dist/design-system.feature.d.ts +1 -0
- package/dist/design-system.feature.js +1 -0
- package/dist/hooks/useListUrlState.js +1 -0
- package/dist/i18n/translation.js +1 -0
- package/dist/index.d.ts +4 -11
- package/dist/index.js +1 -2
- package/dist/lib/keyboard.js +1 -0
- package/dist/lib/utils.js +1 -0
- package/dist/platform/useColorScheme.js +1 -0
- package/dist/platform/useColorScheme.mobile.js +1 -0
- package/dist/platform/useReducedMotion.js +1 -0
- package/dist/platform/useReducedMotion.mobile.js +1 -0
- package/dist/platform/useResponsive.js +1 -0
- package/dist/platform/useResponsive.mobile.js +1 -0
- package/dist/platform/withPlatformUI.js +1 -0
- package/dist/renderers/form-contract/renderer.d.ts +3 -0
- package/dist/renderers/form-contract/renderer.js +1 -0
- package/dist/renderers/form-contract/rich-fields.d.ts +23 -0
- package/dist/renderers/form-contract/rich-fields.js +1 -0
- package/dist/renderers/form-contract/shell.d.ts +35 -0
- package/dist/renderers/form-contract/shell.js +1 -0
- package/dist/renderers/form-contract/values.d.ts +27 -0
- package/dist/renderers/form-contract/values.js +1 -0
- package/dist/renderers/form-contract.d.ts +1 -3
- package/dist/renderers/form-contract.js +1 -0
- package/dist/renderers/index.js +1 -0
- package/dist/theme/contracts.d.ts +3 -0
- package/dist/theme/contracts.js +1 -0
- package/dist/theme/index.d.ts +6 -0
- package/dist/theme/index.js +1 -0
- package/dist/theme/runtime-resolvers.d.ts +26 -0
- package/dist/theme/runtime-resolvers.js +1 -0
- package/dist/theme/runtime.d.ts +34 -0
- package/dist/theme/runtime.js +1 -0
- package/dist/theme/tailwind-config.d.ts +15 -0
- package/dist/theme/tailwind-config.js +1 -0
- package/dist/theme/tailwind-css.d.ts +2 -0
- package/dist/theme/tailwind-css.js +9 -0
- package/dist/theme/tailwind-variables.d.ts +19 -0
- package/dist/theme/tailwind-variables.js +1 -0
- package/dist/theme/tailwind.d.ts +3 -0
- package/dist/theme/tailwind.js +1 -0
- package/dist/theme/tokenBridge.js +1 -0
- package/dist/theme/tokens.js +1 -0
- package/dist/theme/variants.d.ts +1 -1
- package/dist/theme/variants.js +1 -0
- package/dist/types/nativewind-env.d.js +0 -0
- package/dist/types/navigation.js +0 -0
- package/package.json +70 -9
|
@@ -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"../../../index";import{ContactFields as d}from"../molecules/ContactFields";import{LegalPageLayout as g}from"../organisms/LegalPageLayout";export function ContactTemplate({title:r="Contact",meta:m,onSubmit:a}){const[o,s]=i.useState({name:"",email:"",subject:"",message:""}),[t,n]=i.useState(!1);return e(g,{title:r,meta:m,children:c("form",{onSubmit:async(l)=>{l.preventDefault();if(!a)return;n(!0);try{await a(o)}finally{n(!1)}},className:"space-y-6",children:[e(d,{value:o,onChange:s,disabled:t}),e(u,{disabled:t,type:"submit",children:t?"Envoi…":"Envoyer"})]})})}
|
|
@@ -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 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";
|
|
File without changes
|
|
@@ -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";
|
|
File without changes
|
|
@@ -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 E,jsxs as F}from"react/jsx-runtime";import{HStack as L,VStack as P}from"@contractspec/lib.ui-kit/ui/stack";import*as O from"react";import{Button as T}from"../atoms/Button";import{Input as Q}from"../atoms/Input";export function FiltersToolbar({className:Y,children:Z,right:$,searchPlaceholder:I,searchValue:G,onSearchChange:D,onSearchSubmit:N,debounceMs:U=250,activeChips:W=[],onClearAll:J}){const[K,X]=O.useState(G??"");O.useEffect(()=>{X(G??"")},[G]);O.useEffect(()=>{if(!D)return;const z=setTimeout(()=>D(K),U);return()=>clearTimeout(z)},[K,U,D]);return F(P,{className:Y,children:[F(L,{className:"items-center gap-2",children:[D?F(L,{className:"flex-1 items-center gap-2",children:[E(Q,{value:K,onChange:(z)=>X(z.target.value),placeholder:I,keyboard:{kind:"search"}}),E(T,{variant:"outline",onPress:()=>N?.(),children:"Rechercher"})]}):null,Z,$]}),(W.length>0||J)&&F(L,{className:"mt-2 flex flex-wrap items-center gap-2",children:[W.map((z)=>E(T,{size:"sm",variant:"secondary",onPress:z.onRemove,children:z.label},z.key)),J?E(T,{size:"sm",variant:"ghost",onPress:J,children:"Effacer les filtres"}):null]})]})}
|
|
@@ -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]})})}
|
|
@@ -0,0 +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.mobile";export function LoaderBlock({label:r,description:t,className:a,size:l="md"}){return e(o,{className:["items-center justify-center p-6",a].filter(Boolean).join(" "),children:m(o,{className:"flex-row items-center gap-3",children:[e(i,{size:l,label:r}),t?e(c,{className:"text-base text-muted-foreground",children:t}):null]})})}export default LoaderBlock;
|
|
@@ -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)))})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as G,Fragment as C}from"react/jsx-runtime";import{Avatar as P,AvatarFallback as Q,AvatarImage as R}from"@contractspec/lib.ui-kit-web/ui/avatar";import{DropdownMenu as V,DropdownMenuContent as W,DropdownMenuItem as X,DropdownMenuLabel as Y,DropdownMenuSeparator as Z,DropdownMenuTrigger as $}from"@contractspec/lib.ui-kit-web/ui/dropdown-menu";import{Button as q}from"../atoms/Button";export function NavUser({name:H,email:J,imageUrl:K,items:N}){return G(V,{children:[z($,{asChild:!0,children:z(q,{variant:"ghost",size:"icon","aria-label":"Account",children:z(P,{className:"h-8 w-8",children:K?z(R,{src:K,alt:H??"user"}):z(Q,{children:H?.[0]??"?"})})})}),G(W,{align:"end",className:"w-56",children:[(H||J)&&G(C,{children:[z(Y,{children:G("div",{className:"flex flex-col",children:[H&&z("span",{className:"font-medium",children:H}),J&&z("span",{className:"text-base text-muted-foreground",children:J})]})}),z(Z,{})]}),N.map((E,O)=>z(X,{onClick:E.onClick,asChild:!E.href,children:E.href?z("a",{href:E.href,className:E.danger?"text-destructive":void 0,children:G("span",{className:"inline-flex items-center gap-2",children:[E.icon,E.label]})}):z("span",{className:E.danger?"text-destructive":void 0,children:G("span",{className:"inline-flex items-center gap-2",children:[E.icon,E.label]})})},O))]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as z}from"react/jsx-runtime";import{Dialog as I,DialogContent as J,DialogHeader as K,DialogTitle as M,DialogTrigger as N}from"@contractspec/lib.ui-kit-web/ui/dialog";import O from"next/link";export function OverviewCard({title:A,summary:B,href:E,preview:F,ctaLabel:G}){return z(I,{children:[q(N,{asChild:!0,children:z("button",{className:"rounded-md border bg-background/50 p-4 text-left shadow-2xs transition hover:bg-accent/40",children:[q("div",{className:"font-medium text-lg",children:A}),q("div",{className:"text-foreground/80",children:B})]})}),z(J,{className:"max-h-[90vh] max-w-2xl overflow-y-auto sm:max-w-3xl",children:[q(K,{children:q(M,{children:A})}),z("div",{className:"space-y-4",children:[F,q("div",{children:q(O,{href:E,className:"inline-flex rounded-md bg-primary px-4 py-2 text-primary-foreground",children:G})})]})]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{SkeletonBlock as default,SkeletonBlock}from"./index.web";export*from"./types";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as d}from"react/jsx-runtime";import{View as t}from"react-native";export function SkeletonBlock({w:l="w-full",h:e="h-4",rounded:o="md",className:r}){return d(t,{className:[l,e,o==="full"?"rounded-full":o==="lg"?"rounded-lg":o==="sm"?"rounded-xs":"rounded-md","bg-muted",r].filter(Boolean).join(" ")})}export default SkeletonBlock;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as C}from"react/jsx-runtime";import{Skeleton as A}from"@contractspec/lib.ui-kit-web/ui/skeleton";import{cn as B}from"@contractspec/lib.ui-kit-web/ui/utils";export function SkeletonBlock({w:q="w-full",h:v="h-4",rounded:g="md",className:z}){return C(A,{className:B(q,v,g==="full"?"rounded-full":g==="lg"?"rounded-lg":g==="sm"?"rounded-xs":"rounded-md",z)})}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{SkeletonCircle as default,SkeletonCircle}from"./index.web";export*from"./types";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as l}from"react/jsx-runtime";import{View as r}from"react-native";export function SkeletonCircle({size:e=32,sizeClass:o,className:t}){if(o)return l(r,{className:["rounded-full bg-muted",o,t].filter(Boolean).join(" ")});return l(r,{className:["rounded-full bg-muted",t].filter(Boolean).join(" "),style:{width:e,height:e}})}export default SkeletonCircle;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as v}from"react/jsx-runtime";import{Skeleton as q}from"@contractspec/lib.ui-kit-web/ui/skeleton";export function SkeletonCircle({size:d=32,sizeClass:g,className:A}){const h=["rounded-full",g||void 0,A].filter(Boolean).join(" ");return g?v(q,{className:h}):v(q,{className:h,style:{width:d,height:d}})}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{SkeletonList as default,SkeletonList}from"./index.web";export*from"./types";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{View as o}from"react-native";import{SkeletonBlock as p}from"../SkeletonBlock";export function SkeletonList({count:t=10,className:r}){return e(o,{className:r,children:Array.from({length:Math.max(1,t)}).map((i,m)=>e(o,{className:"mb-2",children:e(p,{h:"h-5",rounded:"md"})},m))})}export default SkeletonList;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q}from"react/jsx-runtime";import{SkeletonList as h}from"@contractspec/lib.ui-kit-web/ui/molecules/SkeletonList";export function SkeletonList({count:d=10,className:g}){return q(h,{count:d,className:g})}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as g,jsxs as E}from"react/jsx-runtime";import{Card as J,CardContent as K}from"@contractspec/lib.ui-kit-web/ui/card";import{cn as D}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as L}from"class-variance-authority";const M=L("",{variants:{emphasis:{default:"",subtle:"bg-muted/20",strong:"bg-primary/5"},density:{compact:"p-3",comfortable:"p-4 md:p-5"}},defaultVariants:{emphasis:"default",density:"comfortable"}});export function StatCard({label:q,value:z,hint:A,icon:B,emphasis:F,density:G,className:H,...I}){return g(J,{className:H,...I,children:E(K,{className:D("flex items-center gap-3",M({emphasis:F,density:G})),children:[B&&g("div",{className:"text-muted-foreground",children:B}),E("div",{className:"min-w-0",children:[g("div",{className:"text-base text-muted-foreground",children:q}),g("div",{className:"truncate font-semibold text-2xl",children:z}),A&&g("div",{className:"text-base text-muted-foreground",children:A})]})]})})}export function StatCardGroup({children:q,className:z}){return g("div",{className:D("grid grid-cols-1 gap-3 md:grid-cols-2 lg:grid-cols-4",z),children:q})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as A,jsxs as M}from"react/jsx-runtime";import{cn as J}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as K}from"class-variance-authority";const L=K("inline-flex items-center gap-1 rounded-md px-2 py-0.5 font-medium text-base",{variants:{tone:{neutral:"bg-muted/40 text-foreground",info:"bg-accent/15 text-accent",success:"bg-green-100 text-green-700",warning:"bg-warning/10 text-warning",danger:"bg-destructive/10 text-destructive"},size:{sm:"text-sm",md:"text-base"}},defaultVariants:{tone:"neutral",size:"md"}});export function StatusChip({tone:B,size:D,icon:g,label:E,className:F,hoverContent:q,...G}){const d=M("span",{className:J(L({tone:B,size:D}),F),...G,children:[g&&A("span",{className:"inline-flex h-4 w-4 items-center justify-center",children:g}),E]});if(!q)return d;try{const{HoverPreview:I}=require("./HoverPreview");return A(I,{trigger:d,content:q})}catch{return d}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as k,jsxs as g}from"react/jsx-runtime";export function HoverPreviewDoc({docType:D,number:q,title:z,meta:A=[],status:E,amount:B,className:F}){return g("div",{className:["space-y-2",F].filter(Boolean).join(" "),children:[g("div",{className:"flex items-center justify-between",children:[g("div",{className:"truncate font-medium text-sm",children:[D,q?` ${q}`:""]}),E]}),z&&k("div",{className:"truncate text-base text-muted-foreground",children:z}),A.length>0&&k("div",{className:"mt-1 space-y-1 text-base text-muted-foreground",children:A.map((C,G)=>g("div",{className:"flex items-center gap-2",children:[g("span",{className:"whitespace-nowrap",children:[C.label,":"]}),k("span",{className:"truncate",children:C.value})]},G))}),B&&k("div",{className:"pt-1 font-medium text-base",children:B})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";export function HoverPreviewMedia({title:t,subtitle:a,media:r,caption:d,className:i}){return o("div",{className:["space-y-2",i].filter(Boolean).join(" "),children:[t&&e("div",{className:"truncate font-medium text-sm",children:t}),a&&e("div",{className:"truncate text-base text-muted-foreground",children:a}),e("div",{className:"rounded-md border bg-card p-1",children:r}),d&&e("div",{className:"text-base text-muted-foreground",children:d})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as a,Fragment as n}from"react/jsx-runtime";export function HoverPreviewSimple({title:r,subtitle:i,lines:c=[],footer:o,className:d}){return a("div",{className:["space-y-2",d].filter(Boolean).join(" "),children:[e("div",{className:"truncate font-medium text-sm",children:r}),i&&e("div",{className:"truncate text-base text-muted-foreground",children:i}),c.length>0&&e("div",{className:"mt-2 space-y-1",children:c.map((t,l)=>a("div",{className:"flex items-center gap-2 text-base text-muted-foreground",children:[t.icon,t.label?a(n,{children:[a("span",{className:"whitespace-nowrap",children:[t.label,":"]}),e("span",{className:"truncate",children:t.value})]}):e("span",{className:"truncate",children:t.value})]},l))}),o&&e("div",{className:"pt-1 text-base text-muted-foreground",children:o})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as d}from"react/jsx-runtime";export function HoverPreviewStats({title:t,stats:o,footer:a,className:c}){return d("div",{className:["space-y-2",c].filter(Boolean).join(" "),children:[t&&e("div",{className:"truncate font-medium text-sm",children:t}),e("div",{className:"grid grid-cols-1 gap-2",children:o.map((i,v)=>d("div",{className:"flex items-baseline justify-between gap-3",children:[e("div",{className:"text-base text-muted-foreground",children:i.label}),e("div",{className:"truncate font-semibold text-sm",children:i.value})]},v))}),a&&e("div",{className:"pt-1 text-base text-muted-foreground",children:a})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as a}from"react/jsx-runtime";export function HoverPreviewUser({avatar:d,name:o,email:t,meta:i=[],actions:c,className:v}){return a("div",{className:["space-y-2",v].filter(Boolean).join(" "),children:[a("div",{className:"flex items-center gap-3",children:[d,a("div",{className:"min-w-0",children:[e("div",{className:"truncate font-medium text-sm",children:o}),t&&e("div",{className:"truncate text-base text-muted-foreground",children:t})]})]}),i.length>0&&e("div",{className:"space-y-1 text-base text-muted-foreground",children:i.map((r,l)=>a("div",{className:"flex items-center gap-2",children:[a("span",{className:"whitespace-nowrap",children:[r.label,":"]}),e("span",{className:"truncate",children:r.value})]},l))}),c&&e("div",{className:"pt-1",children:c})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as E}from"react/jsx-runtime";import{cn as g}from"@contractspec/lib.ui-kit-web/ui/utils";import{Pressable as B,Text as C,View as D}from"react-native";export function BottomTabs({items:z,className:A}){return q(D,{className:g("flex flex-row items-stretch border-t bg-background",A),children:z.map((d)=>E(B,{className:g("flex-1 items-center justify-center py-2",d.active?"bg-muted":void 0),onPress:d.onPress,accessibilityRole:"tab",accessibilityState:{selected:!!d.active},accessibilityLabel:d.label,children:[d.icon,q(C,{className:g("mt-1 text-xs",d.active?"text-foreground":"text-muted-foreground"),children:d.label})]},d.key))})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as R}from"react/jsx-runtime";import{VStack as K}from"@contractspec/lib.ui-kit/ui/stack";import{Text as b}from"@contractspec/lib.ui-kit/ui/text";import{cva as v}from"class-variance-authority";import{FlatList as I,RefreshControl as L}from"react-native";import{SafeAreaView as P}from"react-native-safe-area-context";const k=v("",{variants:{padding:{none:"",sm:"px-3 py-3",md:"px-4 py-4",lg:"px-5 py-5"}},defaultVariants:{padding:"none"}});export function FlatListScreen({children:M,data:O,renderItem:Q,header:z,className:T,contentClassName:U,edges:W=["top","left","right"],showsVerticalScrollIndicator:X=!1,keyboardShouldPersistTaps:Y="handled",onRefresh:B,refreshing:D=!1,emptyComponent:G,emptyText:Z="No items found",padding:$,...A}){const E=()=>{if(G)return G;return q(K,{align:"center",justify:"center",className:"py-20",children:q(b,{className:"text-center text-muted-foreground",children:Z})})},F=z?q(K,{className:[k({padding:$}),U].filter(Boolean).join(" "),children:z}):void 0;return R(P,{style:{flex:1},edges:W,children:[q(I,{data:O,renderItem:Q,keyExtractor:(H,N)=>{const J=H;return J?.id?.toString()||J?.key?.toString()||String(N)},showsVerticalScrollIndicator:X,keyboardShouldPersistTaps:Y,ListHeaderComponent:F,ListEmptyComponent:E,refreshing:D,refreshControl:B?q(L,{refreshing:D,onRefresh:B}):void 0,...A}),M]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as M}from"react/jsx-runtime";import{Dialog as F,DialogContent as G,DialogHeader as I,DialogTitle as J}from"@contractspec/lib.ui-kit-web/ui/dialog";import{Text as K,View as L}from"react-native";export function SheetMenu({open:A,onOpenChange:B,title:E="Menu",children:z}){return M(F,{open:A,onOpenChange:B,children:[q(I,{children:q(J,{children:E})}),q(G,{children:q(L,{className:"gap-2",children:typeof z==="string"?q(K,{children:z}):z})})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as A}from"react/jsx-runtime";import{Breadcrumb as K,BreadcrumbItem as M,BreadcrumbLink as O,BreadcrumbList as Q,BreadcrumbPage as T,BreadcrumbSeparator as U}from"@contractspec/lib.ui-kit-web/ui/breadcrumb";import{cn as V}from"@contractspec/lib.ui-kit-web/ui/utils";import*as W from"react";export function AcademyLayout({header:D,toc:E,breadcrumb:v,children:F,rightPanel:G,footer:H,className:J}){return A("div",{className:V("min-h-svh bg-background",J),children:[D,A("div",{className:"mx-auto grid w-full max-w-7xl grid-cols-1 gap-6 px-4 py-6 md:grid-cols-[220px_minmax(0,1fr)_240px]",children:[q("aside",{className:"sticky top-24 hidden self-start md:block",children:E}),A("main",{className:"min-w-0",children:[v&&v.items?.length?q("div",{className:"mb-4",children:q(K,{children:q(Q,{children:v.items.map((z,C)=>A(W.Fragment,{children:[q(M,{children:z.href?q(O,{href:z.href,children:z.label}):q(T,{children:z.label})}),C<v.items.length-1&&q(U,{})]},C))})})}):null,q("article",{className:"prose max-w-none text-foreground",children:F})]}),q("aside",{className:"sticky top-24 hidden self-start lg:block",children:G})]}),H]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as A,Fragment as K}from"react/jsx-runtime";import{Separator as G}from"@contractspec/lib.ui-kit-web/ui/separator";import{cn as I}from"@contractspec/lib.ui-kit-web/ui/utils";import{Header as J}from"./Header";export function AppHeader({breadcrumb:B,toolbarRight:C,className:D,...E}){return z("div",{className:I("w-full border-b bg-background/95 backdrop-blur-xs supports-backdrop-filter:bg-background/60",D),children:A("div",{className:"mx-auto w-full max-w-7xl px-2 md:px-4",children:[z(J,{...E}),(B||C)&&A(K,{children:[z(G,{}),A("div",{className:"flex items-center justify-between gap-3 py-2",children:[z("div",{className:"min-w-0 overflow-hidden text-ellipsis",children:B}),z("div",{className:"flex items-center gap-2",children:C})]})]})]})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as d,jsxs as F}from"react/jsx-runtime";import{cn as K}from"@contractspec/lib.ui-kit/ui/utils";import*as L from"react";import{Pressable as Q,Text as E,View as q}from"react-native";import{BottomTabs as U}from"../native/BottomTabs.mobile";import{SheetMenu as W}from"../native/SheetMenu.mobile";export function AppHeader({logo:z,toolbarRight:G,className:H,menuContent:I,bottomTabs:A}){const[J,D]=L.useState(!1);return F(q,{className:K("border-b bg-background",H),children:[F(q,{className:"flex-row items-center justify-between px-3 py-2",children:[d(Q,{accessibilityLabel:"Open menu",onPress:()=>D(!0),children:d(E,{className:"text-lg",children:"☰"})}),d(q,{className:"px-2",children:typeof z==="string"?d(E,{className:"font-bold text-xl",children:z}):z}),d(q,{className:"flex-row items-center gap-2",children:G})]}),A&&A.length>0&&d(U,{items:A}),d(W,{open:J,onOpenChange:D,title:"Menu",children:I})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as D,Fragment as v}from"react/jsx-runtime";import{Breadcrumb as Q,BreadcrumbItem as T,BreadcrumbLink as U,BreadcrumbList as V,BreadcrumbPage as W,BreadcrumbSeparator as X}from"@contractspec/lib.ui-kit-web/ui/breadcrumb";import{Separator as Y}from"@contractspec/lib.ui-kit-web/ui/separator";import{cn as Z}from"@contractspec/lib.ui-kit-web/ui/utils";import*as $ from"react";import{AppSidebar as q}from"./AppSidebar";export function AppLayout({header:K,sidebar:C,breadcrumb:E,children:M,footer:H,className:O}){return D("div",{className:Z("min-h-svh bg-background",O),children:[K,D("div",{className:"mx-auto grid w-full max-w-7xl grid-cols-1 gap-4 px-4 py-4 md:grid-cols-[260px_minmax(0,1fr)]",children:[z("aside",{className:"hidden md:block",children:C?z(q,{sections:C.sections,top:C.top,bottom:C.bottom,className:C.className,density:C.density}):z("div",{})}),D("main",{className:"min-w-0",children:[E&&E.items?.length?z("div",{className:"mb-2",children:z(Q,{children:z(V,{children:E.items.map((G,J)=>D($.Fragment,{children:[z(T,{children:G.href?z(U,{href:G.href,children:G.label}):z(W,{children:G.label})}),J<E.items.length-1&&z(X,{})]},J))})})}):null,M]})]}),H&&D(v,{children:[z(Y,{className:"mt-4"}),H]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as A}from"react/jsx-runtime";import{Sidebar as X,SidebarContent as Y,SidebarFooter as Z,SidebarGroup as $,SidebarGroupContent as g,SidebarGroupLabel as k,SidebarHeader as F,SidebarInput as H,SidebarMenu as L,SidebarMenuBadge as R,SidebarMenuButton as V,SidebarMenuItem as B,SidebarProvider as C,SidebarRail as I}from"@contractspec/lib.ui-kit-web/ui/sidebar";import{cn as N}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as v}from"class-variance-authority";export function AppSidebar({sections:J,top:K,bottom:O,searchPlaceholder:E="Search…",className:Q,density:T}){const U=v("",{variants:{density:{compact:"text-sm",comfortable:"text-base"}},defaultVariants:{density:"comfortable"}});return q(C,{children:A(X,{className:N(U({density:T}),Q),children:[q(I,{}),A(F,{children:[K,q(H,{placeholder:E,"aria-label":E})]}),q(Y,{children:J.map((D,W)=>A($,{children:[D.title&&q(k,{children:D.title}),q(g,{children:q(L,{children:D.items.map((z)=>A(B,{children:[q(V,{asChild:!!z.href,isActive:!1,children:A("a",{href:z.href,target:z.target,className:"inline-flex items-center gap-2",children:[z.icon,q("span",{children:z.label})]})}),z.badge!=null&&q(R,{children:String(z.badge)})]},z.href))})})]},W))}),q(Z,{children:O})]})})}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as v}from"react/jsx-runtime";import{Empty as W,EmptyContent as X,EmptyDescription as Y,EmptyHeader as Z,EmptyMedia as $,EmptyTitle as k}from"@contractspec/lib.ui-kit-web/ui/empty";import{Button as C}from"../atoms/Button";export function EmptyDataList({emptyListTitle:A,emptyListDescription:F,createButton:O,secondaryButton:P,media:G,mediaVariant:Q="icon",learnMoreHref:g,learnMoreLabel:z,learnMoreEndIcon:J,onLearnMore:R,handleLearnMore:S,className:U}){const K=R??S;return v(W,{className:U,children:[v(Z,{children:[G?q($,{variant:Q,children:G}):null,A?q(k,{children:A}):null,F?q(Y,{children:F}):null]}),q(X,{children:v("div",{className:"flex gap-2",children:[O,P]})}),(g||K)&&z?q(C,{variant:"link",asChild:Boolean(g),className:"text-muted-foreground",size:"sm",onPress:g?void 0:K,children:g?v("a",{href:g,children:[z," ",J]}):v("span",{children:[z," ",J]})}):null]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as g,jsxs as F}from"react/jsx-runtime";import{Empty as K,EmptyContent as O,EmptyDescription as P,EmptyHeader as Q,EmptyMedia as R,EmptyTitle as U}from"@contractspec/lib.ui-kit/ui/empty";import{HStack as W}from"@contractspec/lib.ui-kit-web/ui/stack";import{Text as A}from"@contractspec/lib.ui-kit-web/ui/text";export function EmptyDataList({emptyListTitle:q,emptyListDescription:v,createButton:G,secondaryButton:X,media:z,mediaVariant:I="icon",learnMoreHref:Y,learnMoreLabel:Z,learnMoreEndIcon:$,onLearnMore:C,handleLearnMore:M,className:J}){return F(K,{className:J,children:[F(Q,{children:[z?g(R,{variant:I,children:z}):null,q?g(U,{children:g(A,{children:q})}):null,v?g(P,{children:g(A,{children:v})}):null]}),g(O,{children:g(W,{className:"gap-2",children:G})})]})}export default EmptyDataList;
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as v,jsxs as B}from"react/jsx-runtime";import{Empty as X,EmptyContent as Y,EmptyDescription as Z,EmptyHeader as $,EmptyTitle as k}from"@contractspec/lib.ui-kit-web/ui/empty";import*as q from"react";import{Input as H}from"../atoms/Input";export function EmptySearchResult({emptySearchTitle:F,emtptySearchTitle:G,emptySearchDescription:J,emtptySearchDescription:K,onSearchChange:L,handleSearchChange:M,className:O}){const P=F??G??"No results",z=J??K??"Try another search.",U=L??M,[V,W]=q.useState("");return B(X,{className:O,children:[B($,{children:[v(k,{children:P}),z?v(Z,{children:z}):null]}),v(Y,{children:v(H,{value:V,onChange:(A)=>{W(A.target.value);U?.(A.target.value)},placeholder:"Search…",keyboard:{kind:"search"}})})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as v,jsxs as E}from"react/jsx-runtime";import{Accordion as X,AccordionContent as Y,AccordionItem as Z,AccordionTrigger as $}from"@contractspec/lib.ui-kit-web/ui/accordion";import{VStack as K}from"@contractspec/lib.ui-kit-web/ui/stack";import*as R from"react";export function FAQSection({title:L,subtitle:F,children:M,className:P,items:z,accordionType:B="single",collapsible:Q=!0,defaultOpenIndex:G=0,accordionClassName:U}){const D=Array.isArray(z)&&z.length>0,W=R.useMemo(()=>{if(!D)return;if(B==="multiple")return;return`item-${Math.max(0,Math.min((z?.length??1)-1,G))}`},[D,B,G,z]);return v("section",{className:`py-12 sm:py-16 lg:py-24 ${P||""}`,children:E("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:[E(K,{className:"gap-2 text-center",children:[v("h2",{className:"font-bold text-3xl md:text-4xl",children:L}),F?v("p",{className:"mx-auto max-w-2xl text-base text-muted-foreground",children:F}):null]}),v("div",{className:"mx-auto mt-8 max-w-3xl",children:D?v(K,{className:"mt-8",children:v(X,{type:B,collapsible:Q,defaultValue:W,className:U,children:z?.map((H,J)=>E(Z,{value:`item-${J}`,children:[v($,{className:"px-6",children:v("span",{className:"font-medium text-foreground text-lg",children:H.question})}),v(Y,{className:"px-6",children:v("p",{className:"text-muted-foreground",children:H.answer})})]},J))})}):M})]})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as g,jsxs as z}from"react/jsx-runtime";import{Card as E,CardContent as F}from"@contractspec/lib.ui-kit-web/ui/card";import{Carousel as G,CarouselContent as H,CarouselItem as J,CarouselNext as K,CarouselPrevious as L}from"@contractspec/lib.ui-kit-web/ui/carousel";export function FeatureCarousel({slides:A,className:B}){return g("div",{className:B,children:z(G,{children:[g(H,{children:A.map((q,D)=>g(J,{children:g(E,{children:z(F,{className:"grid grid-cols-1 gap-4 p-6 md:grid-cols-2",children:[z("div",{className:"space-y-2",children:[g("div",{className:"font-semibold text-2xl",children:q.title}),q.description&&g("div",{className:"text-base text-muted-foreground",children:q.description})]}),g("div",{className:"flex items-center justify-center",children:q.media})]})})},D))}),g(L,{}),g(K,{})]})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as g,jsxs as z}from"react/jsx-runtime";import{VStack as E}from"@contractspec/lib.ui-kit-web/ui/stack";import{cva as F}from"class-variance-authority";const G=F("",{variants:{density:{compact:"py-10",comfortable:"py-12 sm:py-16 lg:py-24"}},defaultVariants:{density:"comfortable"}});export function FeaturesSection({title:A,subtitle:q,children:B,className:C,density:D}){return g("section",{className:[G({density:D}),C].filter(Boolean).join(" "),children:z("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:[z(E,{className:"gap-2 text-center",children:[g("h2",{className:"font-bold text-3xl md:text-4xl",children:A}),q?g("p",{className:"mx-auto max-w-2xl text-base text-muted-foreground",children:q}):null]}),g("div",{className:"mt-10",children:B})]})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as d,jsxs as A}from"react/jsx-runtime";import{VStack as G}from"@contractspec/lib.ui-kit-web/ui/stack";import{cn as H}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as I}from"class-variance-authority";const J=I("border-t px-4 text-base",{variants:{variant:{default:"",marketing:"bg-muted/30"},density:{compact:"py-4",comfortable:"py-6"}},defaultVariants:{density:"comfortable",variant:"default"}});export function Footer({left:B,center:C,right:D,links:q,className:E,variant:F}){return A("footer",{className:H(J({variant:F}),E),children:[A("div",{className:"grid grid-cols-1 items-center gap-3 sm:grid-cols-3",children:[d("div",{className:"flex items-center gap-3",children:B}),d("div",{className:"text-center text-muted-foreground",children:C}),d(G,{children:D})]}),q&&q.length>0&&d("div",{className:"mt-4 flex flex-wrap items-center justify-center gap-3 text-base text-muted-foreground",children:q.map((z)=>d("a",{href:z.href,className:"hover:text-foreground",children:z.label},String(z.href)))})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as M}from"react/jsx-runtime";import{cn as H}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as I}from"class-variance-authority";import{useResponsive as J}from"../../platform/useResponsive";const K=I("grid",{variants:{gap:{sm:"gap-3",md:"gap-4",lg:"gap-6"}},defaultVariants:{gap:"md"}});export function GridLayout({children:B,className:D,columns:z,gap:E}){const{screen:A}=J(),q=A==="desktop"?z?.desktop??1:A==="tablet"?z?.tablet??1:z?.mobile??1,F=q===1?"grid-cols-1":q===2?"grid-cols-2":q===3?"grid-cols-3":q===4?"grid-cols-4":"grid-cols-1";return M("div",{className:H(K({gap:E}),F,D),children:B})}export default GridLayout;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as G,Fragment as U}from"react/jsx-runtime";import{Separator as X}from"@contractspec/lib.ui-kit-web/ui/separator";import{Sheet as Y,SheetContent as Z,SheetTitle as $,SheetTrigger as q}from"@contractspec/lib.ui-kit-web/ui/sheet";import{cn as P}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as Q}from"class-variance-authority";import{Menu as C}from"lucide-react";import{Button as D}from"../atoms/Button";import{ButtonLink as F}from"../atoms/ButtonLink";import{NavMain as A}from"../molecules/NavMain";import{NavUser as R}from"../molecules/NavUser";import{AppSidebar as L}from"./AppSidebar";const T=Q("hidden items-center justify-between gap-4 md:flex",{variants:{density:{compact:"px-3 py-1",comfortable:"px-4 py-2"}},defaultVariants:{density:"comfortable"}}),V=Q("flex items-center justify-between md:hidden",{variants:{density:{compact:"px-2 py-1",comfortable:"px-3 py-2"}},defaultVariants:{density:"comfortable"}});export function DesktopHeader({logo:I,nav:K,userMenu:E,cta:J,className:O,density:W}){return G("header",{className:P(T({density:W}),O),children:[G("div",{className:"flex items-center gap-4",children:[I,z(X,{orientation:"vertical",className:"h-6"}),z(A,{items:K})]}),G("div",{className:"flex items-center gap-2",children:[J&&z(F,{variant:J.variant,href:J.href,children:J.label}),E&&z(R,{...E})]})]})}export function MobileHeader({logo:I,userMenu:K,mobileSidebar:E,className:J,density:O}){return G("header",{className:P(V({density:O}),J),children:[G(Y,{children:[z(q,{asChild:!0,children:z(D,{variant:"ghost",size:"icon","aria-label":"Open menu",children:z(C,{className:"h-5 w-5"})})}),G(Z,{side:"left",className:"w-[300px] p-0",children:[z($,{className:"sr-only",children:"Menu"}),E?z(L,{sections:E.sections,top:E.top,bottom:E.bottom,className:"h-svh"}):z("div",{className:"p-4",children:"No sidebar configured"})]})]}),z("div",{className:"flex-1 px-2",children:I}),z("div",{className:"flex items-center gap-2",children:K&&z(R,{...K})})]})}export function Header(I){return G(U,{children:[z(MobileHeader,{...I}),z(DesktopHeader,{...I})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as v}from"react/jsx-runtime";import{VStack as q}from"@contractspec/lib.ui-kit/ui/stack";export function Header({logo:h}){return v(q,{className:"px-3 py-2",children:h})}export const DesktopHeader=Header,MobileHeader=Header;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{useResponsive as a}from"../../platform/useResponsive";import{HeroSection as r}from"./HeroSection";export function HeroResponsive({title:o,subtitle:i,primaryCta:s,secondaryCta:n,className:p}){const{screen:e}=a();return t(r,{title:t("div",{className:`${e==="desktop"?"text-5xl":e==="tablet"?"text-4xl":"text-3xl"}`,children:o}),subtitle:i,primaryCta:s,secondaryCta:n,className:[p,e==="desktop"?"gap-6":e==="tablet"?"gap-4":"gap-3"].filter(Boolean).join(" ")})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q}from"react/jsx-runtime";import{Hero as G}from"@contractspec/lib.ui-kit-web/ui/marketing/Hero";import{cva as I}from"class-variance-authority";const J=I("relative overflow-hidden bg-linear-to-b from-background to-muted/20",{variants:{density:{compact:"py-12",comfortable:"py-16 sm:py-24 lg:py-32"}},defaultVariants:{density:"comfortable"}});export function HeroSection({title:z,subtitle:A,primaryCta:B,secondaryCta:D,className:E,density:F}){return q("section",{className:[J({density:F}),E].filter(Boolean).join(" "),children:q("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:q(G,{title:z,subtitle:A,primaryCta:B,secondaryCta:D})})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as I}from"react/jsx-runtime";import{Card as U,CardContent as W}from"@contractspec/lib.ui-kit-web/ui/card";import{VStack as G}from"@contractspec/lib.ui-kit-web/ui/stack";import{cva as H}from"class-variance-authority";import{useResponsive as X}from"../../platform/useResponsive";const Y=H("",{variants:{density:{compact:"gap-3",comfortable:"gap-4 md:gap-5"}},defaultVariants:{density:"comfortable"}}),Z=H("grid",{variants:{size:{sm:"gap-3",md:"gap-4",lg:"gap-6"}},defaultVariants:{size:"md"}});export function ListCardPage({title:J,subtitle:D,items:K,renderCard:L,className:M,columns:B,density:O,size:P}){const{screen:E}=X(),A=E==="desktop"?B?.desktop??3:E==="tablet"?B?.tablet??2:B?.mobile??1,Q=A===1?"grid-cols-1":A===2?"grid-cols-2":A===3?"grid-cols-3":A===4?"grid-cols-4":"grid-cols-3";return I(G,{className:[Y({density:O}),M].filter(Boolean).join(" "),children:[I(G,{className:"gap-1",children:[q("h1",{className:"font-bold text-2xl md:text-3xl",children:J}),D?q("p",{className:"text-base text-muted-foreground",children:D}):null]}),q("div",{className:[Z({size:P}),Q].join(" "),children:K.map((T,F)=>q(U,{className:"border-none shadow-2xs",children:q(W,{className:"p-4 md:p-5 lg:p-6",children:L(T,F)})},F))})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as A,jsxs as K}from"react/jsx-runtime";import{VStack as H}from"@contractspec/lib.ui-kit-web/ui/stack";import{cva as J}from"class-variance-authority";import{useResponsive as Y}from"../../platform/useResponsive";const Z=J("",{variants:{density:{compact:"gap-3",comfortable:"gap-4 md:gap-5 lg:gap-6"}},defaultVariants:{density:"comfortable"}}),$=J("",{variants:{size:{sm:"gap-3",md:"gap-4",lg:"gap-6"}},defaultVariants:{size:"md"}});export function ListGridPage({title:L,subtitle:D,items:M,renderItem:O,className:P,columns:B,density:Q,size:T}){const{screen:E}=Y(),q=E==="desktop"?B?.desktop??3:E==="tablet"?B?.tablet??2:B?.mobile??1,U=`grid ${$({size:T})}`,W=q===1?"grid-cols-1":q===2?"grid-cols-2":q===3?"grid-cols-3":q===4?"grid-cols-4":"grid-cols-3";return K(H,{className:[Z({density:Q}),P].filter(Boolean).join(" "),children:[K(H,{className:"gap-1",children:[A("h1",{className:"font-bold text-2xl md:text-3xl",children:L}),D?A("p",{className:"text-base text-muted-foreground",children:D}):null]}),A("div",{className:`${U} ${W}`,children:M.map((X,F)=>A("div",{children:O(X,F)},F))})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as B}from"react/jsx-runtime";import{ListPage as z}from"@contractspec/lib.ui-kit-web/ui/organisms/ListPage";import{useResponsive as A}from"../../platform/useResponsive";export function ListPageResponsive(d){const{screen:h}=A(),q=[d.className,h==="desktop"?"space-y-6":h==="tablet"?"space-y-5":"space-y-4"].filter(Boolean).join(" ");return B(z,{...d,className:q})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as H}from"react/jsx-runtime";import{useContractTable as U}from"@contractspec/lib.presentation-runtime-react";import{VStack as F}from"@contractspec/lib.ui-kit-web/ui/stack";import{Text as G}from"@contractspec/lib.ui-kit-web/ui/text";import{cva as W}from"class-variance-authority";import{DataTable as X}from"../data-table/DataTable";const Y=W("",{variants:{density:{compact:"gap-3",comfortable:"gap-4 md:gap-5"}},defaultVariants:{density:"comfortable"}});export function ListTablePage({title:J,subtitle:B,items:K,columns:L,className:M,density:O,renderActions:E}){const P=U({data:K,columns:[...L.map((g,q)=>({id:`column.${q}`,header:g.header,cell:({item:Q,rowIndex:R})=>g.cell(Q,R)})),...E?[{id:"actions",header:"Actions",label:"Actions",canSort:!1,canHide:!1,canResize:!1,cell:({item:g,rowIndex:q})=>E(g,q)}]:[]]});return H(F,{className:[Y({density:O}),M].filter(Boolean).join(" "),children:[H(F,{className:"gap-1",children:[z(G,{className:"font-bold text-2xl md:text-3xl",children:J}),B?z(G,{className:"text-base text-muted-foreground",children:B}):null]}),z(X,{controller:P})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as H}from"react/jsx-runtime";import{useContractTable as U}from"@contractspec/lib.presentation-runtime-react";import{VStack as F}from"@contractspec/lib.ui-kit/ui/stack";import{Text as G}from"@contractspec/lib.ui-kit/ui/text";import{cva as W}from"class-variance-authority";import{DataTable as X}from"../data-table/DataTable";const Y=W("",{variants:{density:{compact:"gap-3",comfortable:"gap-4 md:gap-5"}},defaultVariants:{density:"comfortable"}});export function ListTablePage({title:J,subtitle:B,items:K,columns:L,className:M,density:O,renderActions:E}){const P=U({data:K,columns:[...L.map((g,q)=>({id:`column.${q}`,header:g.header,cell:({item:Q,rowIndex:R})=>g.cell(Q,R)})),...E?[{id:"actions",header:"Actions",label:"Actions",canSort:!1,canHide:!1,canResize:!1,cell:({item:g,rowIndex:q})=>E(g,q)}]:[]]});return H(F,{className:[Y({density:O}),M].filter(Boolean).join(" "),children:[H(F,{className:"gap-1",children:[z(G,{className:"font-bold text-2xl md:text-3xl",children:J}),B?z(G,{className:"text-base text-muted-foreground",children:B}):null]}),z(X,{controller:P})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as J,Fragment as I}from"react/jsx-runtime";import{NavigationMenu as M,NavigationMenuContent as L,NavigationMenuItem as C,NavigationMenuLink as P,NavigationMenuList as k,NavigationMenuTrigger as N}from"@contractspec/lib.ui-kit-web/ui/navigation-menu";import{Separator as d}from"@contractspec/lib.ui-kit-web/ui/separator";import{Sheet as p,SheetContent as S,SheetHeader as v,SheetTrigger as h}from"@contractspec/lib.ui-kit-web/ui/sheet";import{Box as Y,HStack as W,VStack as b}from"@contractspec/lib.ui-kit-web/ui/stack";import{Text as q}from"@contractspec/lib.ui-kit-web/ui/text";import{cn as D}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as u}from"class-variance-authority";import{Menu as f}from"lucide-react";import*as g from"react";import{Button as y}from"../atoms/Button";import{ButtonLink as F}from"../atoms/ButtonLink";import{CommandSearchTrigger as U}from"../molecules/CommandSearchTrigger";import{LangSwitchDropdown as _}from"../molecules/LangSwitchDropdown";import{MobileNavMenu as l}from"../molecules/MobileNavMenu";import{NavItemCard as w}from"../molecules/NavItemCard";import{NavUser as j}from"../molecules/NavUser";const x=u("flex items-center justify-between gap-4",{variants:{density:{compact:"px-3 py-2",comfortable:"px-4 py-3"}},defaultVariants:{density:"comfortable"}});export function MarketingHeader({logo:V,nav:X=[],navLinkClassName:Z,userMenu:$,cta:A,className:H,density:B,right:O,commandPaletteGroups:K,langSwitchProps:Q}){const[T,G]=g.useState(!1);return z(W,{as:"header",className:D("sticky top-0 z-50 w-full border-b bg-background/95 backdrop-blur-xs supports-backdrop-filter:bg-background/60",H),children:J(W,{className:D("mx-auto w-full max-w-7xl items-center justify-center",x({density:B})),children:[z(b,{className:"flex items-center gap-2 md:hidden",children:J(p,{open:T,onOpenChange:G,children:[z(h,{asChild:!0,children:z(y,{variant:"ghost",size:"icon","aria-label":"Open menu",children:z(f,{className:"h-5 w-5"})})}),J(S,{side:"left",className:"w-[320px] p-4",children:[!!K?.length&&z(v,{children:z(U,{groups:K})}),A&&z(b,{className:"mb-3",children:z(F,{variant:A.variant,size:A.size,href:A.href,onClick:A.onClick,children:z(q,{children:A.label})})}),z(l,{items:X})]})]})}),V,z(W,{className:"hidden items-center gap-4 md:flex",children:X.length>0&&J(I,{children:[z(d,{orientation:"vertical",className:"h-6"}),z(M,{className:"hidden md:flex",children:z(k,{children:X.map((E)=>z(C,{children:E.items&&E.items.length>0?J(I,{children:[z(N,{className:Z,children:E.label}),z(L,{children:z("div",{className:"grid w-[760px] grid-cols-3 gap-3 p-3",children:E.items.map((R)=>z(w,{item:R},R.href))})})]}):z(P,{className:Z,href:E.href||"#",children:E.label})},String(E.key??E.href??E.label)))})})]})}),J(W,{className:"flex items-center gap-2",children:[!!K?.length&&z(Y,{className:"hidden items-center gap-2 md:flex",children:z(U,{groups:K})}),Q?.options?.length>1&&z(_,{value:Q.value,onChange:Q.onChange,options:Q.options}),O&&z(Y,{className:"hidden md:flex",children:O}),A&&z(Y,{className:"hidden md:flex",children:z(F,{variant:A.variant,size:A.size,href:A.href,onClick:A.onClick,children:z(q,{children:A.label})})}),$&&z(j,{...$})]})]})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as E,Fragment as O}from"react/jsx-runtime";import{NavigationMenu as X,NavigationMenuContent as Y,NavigationMenuItem as Z,NavigationMenuLink as $,NavigationMenuList as S,NavigationMenuTrigger as T}from"@contractspec/lib.ui-kit-web/ui/navigation-menu";import{Separator as V}from"@contractspec/lib.ui-kit-web/ui/separator";import{cn as K}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as b}from"class-variance-authority";import{ButtonLink as p}from"../atoms/ButtonLink";import{NavItemCard as q}from"../molecules/NavItemCard";import{NavUser as B}from"../molecules/NavUser";const F=b("hidden items-center justify-between gap-4 md:flex",{variants:{density:{compact:"px-3 py-2",comfortable:"px-4 py-3"}},defaultVariants:{density:"comfortable"}});export function MarketingHeaderDesktop({logo:P,nav:G=[],userMenu:H,cta:D,className:Q,density:R,right:W}){return z("div",{className:K("w-full border-b bg-background/95 backdrop-blur-xs supports-backdrop-filter:bg-background/60",Q),children:E("div",{className:K("mx-auto w-full max-w-7xl",F({density:R})),children:[E("div",{className:"flex items-center gap-4",children:[P,G.length>0&&E(O,{children:[z(V,{orientation:"vertical",className:"h-6"}),z(X,{children:z(S,{children:G.map((A)=>z(Z,{children:A.items&&A.items.length>0?E(O,{children:[z(T,{children:A.label}),z(Y,{children:z("div",{className:"grid w-[760px] grid-cols-3 gap-3 p-3",children:A.items.map((J)=>z(q,{item:J},J.href))})})]}):z($,{href:A.href||"#",children:A.label})},String(A.key??A.href??A.label)))})})]})]}),E("div",{className:"flex items-center gap-2",children:[W,D&&z(p,{variant:D.variant,size:D.size,href:D.href,onClick:D.onClick,children:D.label}),H&&z(B,{...H})]})]})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as q,jsxs as z}from"react/jsx-runtime";import{Sheet as X,SheetContent as Y,SheetFooter as Z,SheetHeader as $,SheetTitle as k,SheetTrigger as B}from"@contractspec/lib.ui-kit-web/ui/sheet";import{VStack as F}from"@contractspec/lib.ui-kit-web/ui/stack";import{cn as H}from"@contractspec/lib.ui-kit-web/ui/utils";import{Menu as O}from"lucide-react";import*as R from"react";import{Button as V}from"../atoms/Button";import{CommandSearchTrigger as b}from"../molecules/CommandSearchTrigger";import{LangSwitchDropdown as D}from"../molecules/LangSwitchDropdown";import{MobileNavMenu as L}from"../molecules/MobileNavMenu";export function MarketingHeaderMobile({logo:I,nav:J=[],className:K,right:Q,commandPaletteGroups:E,langSwitchProps:A}){const[U,W]=R.useState(!1);return q("div",{className:H("w-full border-b bg-background/95 backdrop-blur-xs supports-backdrop-filter:bg-background/60 md:hidden",K),children:z("div",{className:"mx-auto flex w-full max-w-7xl items-center justify-between px-3 py-2",children:[z("div",{className:"flex items-center gap-2",children:[z(X,{open:U,onOpenChange:W,children:[q(B,{asChild:!0,children:q(V,{variant:"ghost",size:"icon","aria-label":"Open menu",children:q(O,{className:"h-5 w-5"})})}),z(Y,{side:"left",className:"w-[320px] p-4",children:[z($,{children:[q(k,{children:"Menu"}),!!E?.length&&q("div",{className:"mb-3",children:q(b,{groups:E,compact:!0})})]}),q(F,{children:q(L,{items:J})}),q(Z,{children:Q})]})]}),I]}),q("div",{className:"flex items-center gap-2",children:A?.options?.length>1&&q(D,{value:A.value,options:A.options,onChange:A.onChange})})]})})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as C,jsxs as D}from"react/jsx-runtime";import{VStack as A}from"@contractspec/lib.ui-kit-web/ui/stack";import{cn as B}from"@contractspec/lib.ui-kit-web/ui/utils";export function MarketingLayout({header:g,children:q,footer:v,className:z}){return D(A,{gap:"none",className:B("min-h-svh bg-background",z),children:[g,C("main",{id:"main",className:"flex-1",children:q}),v]})}
|