@contractspec/lib.design-system 1.56.1 → 1.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.js +7062 -0
- package/dist/components/agent/AgentMonitor.d.ts +15 -26
- package/dist/components/agent/AgentMonitor.d.ts.map +1 -1
- package/dist/components/agent/ApprovalQueue.d.ts +11 -24
- package/dist/components/agent/ApprovalQueue.d.ts.map +1 -1
- package/dist/components/atoms/ActionButtons.d.ts +17 -22
- package/dist/components/atoms/ActionButtons.d.ts.map +1 -1
- package/dist/components/atoms/Button.d.ts +15 -36
- package/dist/components/atoms/Button.d.ts.map +1 -1
- package/dist/components/atoms/Button.mobile.d.ts +11 -0
- package/dist/components/atoms/Button.mobile.d.ts.map +1 -0
- package/dist/components/atoms/ButtonLink.d.ts +5 -20
- package/dist/components/atoms/ButtonLink.d.ts.map +1 -1
- package/dist/components/atoms/ButtonLink.mobile.d.ts +8 -0
- package/dist/components/atoms/ButtonLink.mobile.d.ts.map +1 -0
- package/dist/components/atoms/Cta.d.ts +35 -30
- package/dist/components/atoms/Cta.d.ts.map +1 -1
- package/dist/components/atoms/Cta.mobile.d.ts +28 -0
- package/dist/components/atoms/Cta.mobile.d.ts.map +1 -0
- package/dist/components/atoms/DataChips.d.ts +19 -36
- package/dist/components/atoms/DataChips.d.ts.map +1 -1
- package/dist/components/atoms/EmptyState.d.ts +2 -7
- package/dist/components/atoms/EmptyState.d.ts.map +1 -1
- package/dist/components/atoms/ErrorState.d.ts +12 -27
- package/dist/components/atoms/ErrorState.d.ts.map +1 -1
- package/dist/components/atoms/ErrorState.mobile.d.ts +15 -0
- package/dist/components/atoms/ErrorState.mobile.d.ts.map +1 -0
- package/dist/components/atoms/Input.d.ts +14 -33
- package/dist/components/atoms/Input.d.ts.map +1 -1
- package/dist/components/atoms/Input.mobile.d.ts +21 -0
- package/dist/components/atoms/Input.mobile.d.ts.map +1 -0
- package/dist/components/atoms/Link.d.ts +3 -11
- package/dist/components/atoms/Link.d.ts.map +1 -1
- package/dist/components/atoms/Link.native.d.ts +2 -0
- package/dist/components/atoms/Link.native.d.ts.map +1 -0
- package/dist/components/atoms/Link.web.d.ts +14 -18
- package/dist/components/atoms/Link.web.d.ts.map +1 -1
- package/dist/components/atoms/LoaderCircular.d.ts +9 -20
- package/dist/components/atoms/LoaderCircular.d.ts.map +1 -1
- package/dist/components/atoms/LoaderCircular.mobile.d.ts +10 -0
- package/dist/components/atoms/LoaderCircular.mobile.d.ts.map +1 -0
- package/dist/components/atoms/NavBrand.d.ts +7 -17
- package/dist/components/atoms/NavBrand.d.ts.map +1 -1
- package/dist/components/atoms/Stepper.d.ts +2 -7
- package/dist/components/atoms/Stepper.d.ts.map +1 -1
- package/dist/components/atoms/Textarea.d.ts +15 -35
- package/dist/components/atoms/Textarea.d.ts.map +1 -1
- package/dist/components/atoms/Textarea.mobile.d.ts +21 -0
- package/dist/components/atoms/Textarea.mobile.d.ts.map +1 -0
- package/dist/components/data-view/DataViewDetail.d.ts +9 -20
- package/dist/components/data-view/DataViewDetail.d.ts.map +1 -1
- package/dist/components/data-view/DataViewList.d.ts +10 -22
- package/dist/components/data-view/DataViewList.d.ts.map +1 -1
- package/dist/components/data-view/DataViewRenderer.d.ts +24 -46
- package/dist/components/data-view/DataViewRenderer.d.ts.map +1 -1
- package/dist/components/data-view/DataViewTable.d.ts +16 -24
- package/dist/components/data-view/DataViewTable.d.ts.map +1 -1
- package/dist/components/data-view/utils.d.ts +7 -0
- package/dist/components/data-view/utils.d.ts.map +1 -0
- package/dist/components/forms/ActionForm.d.ts +5 -15
- package/dist/components/forms/ActionForm.d.ts.map +1 -1
- package/dist/components/forms/FormCardLayout.d.ts +9 -21
- package/dist/components/forms/FormCardLayout.d.ts.map +1 -1
- package/dist/components/forms/FormDialog.d.ts +10 -23
- package/dist/components/forms/FormDialog.d.ts.map +1 -1
- package/dist/components/forms/FormLayout.d.ts +14 -29
- package/dist/components/forms/FormLayout.d.ts.map +1 -1
- package/dist/components/forms/FormOneByOneLayout.d.ts +13 -23
- package/dist/components/forms/FormOneByOneLayout.d.ts.map +1 -1
- package/dist/components/forms/FormStepsLayout.d.ts +13 -24
- package/dist/components/forms/FormStepsLayout.d.ts.map +1 -1
- package/dist/components/forms/ZodForm.d.ts +10 -20
- package/dist/components/forms/ZodForm.d.ts.map +1 -1
- package/dist/components/legal/atoms/DefinitionList.d.ts +8 -16
- package/dist/components/legal/atoms/DefinitionList.d.ts.map +1 -1
- package/dist/components/legal/atoms/KeyValueList.d.ts +8 -16
- package/dist/components/legal/atoms/KeyValueList.d.ts.map +1 -1
- package/dist/components/legal/atoms/LegalCallout.d.ts +7 -16
- package/dist/components/legal/atoms/LegalCallout.d.ts.map +1 -1
- package/dist/components/legal/atoms/LegalHeading.d.ts +10 -22
- package/dist/components/legal/atoms/LegalHeading.d.ts.map +1 -1
- package/dist/components/legal/atoms/LegalList.d.ts +8 -19
- package/dist/components/legal/atoms/LegalList.d.ts.map +1 -1
- package/dist/components/legal/atoms/LegalSection.d.ts +9 -20
- package/dist/components/legal/atoms/LegalSection.d.ts.map +1 -1
- package/dist/components/legal/atoms/LegalText.d.ts +10 -22
- package/dist/components/legal/atoms/LegalText.d.ts.map +1 -1
- package/dist/components/legal/molecules/Consent.d.ts +15 -31
- package/dist/components/legal/molecules/Consent.d.ts.map +1 -1
- package/dist/components/legal/molecules/ContactFields.d.ts +15 -24
- package/dist/components/legal/molecules/ContactFields.d.ts.map +1 -1
- package/dist/components/legal/molecules/LegalMeta.d.ts +5 -14
- package/dist/components/legal/molecules/LegalMeta.d.ts.map +1 -1
- package/dist/components/legal/molecules/LegalTOC.d.ts +14 -27
- package/dist/components/legal/molecules/LegalTOC.d.ts.map +1 -1
- package/dist/components/legal/organisms/ContactForm.d.ts +19 -29
- package/dist/components/legal/organisms/ContactForm.d.ts.map +1 -1
- package/dist/components/legal/organisms/GDPRDataRequest.d.ts +9 -18
- package/dist/components/legal/organisms/GDPRDataRequest.d.ts.map +1 -1
- package/dist/components/legal/organisms/GDPRRights.d.ts +5 -13
- package/dist/components/legal/organisms/GDPRRights.d.ts.map +1 -1
- package/dist/components/legal/organisms/LegalPageLayout.d.ts +12 -23
- package/dist/components/legal/organisms/LegalPageLayout.d.ts.map +1 -1
- package/dist/components/legal/templates/ContactTemplate.d.ts +14 -23
- package/dist/components/legal/templates/ContactTemplate.d.ts.map +1 -1
- package/dist/components/legal/templates/CookiesTemplate.d.ts +21 -32
- package/dist/components/legal/templates/CookiesTemplate.d.ts.map +1 -1
- package/dist/components/legal/templates/PrivacyTemplate.d.ts +21 -32
- package/dist/components/legal/templates/PrivacyTemplate.d.ts.map +1 -1
- package/dist/components/legal/templates/SalesTermsTemplate.d.ts +17 -27
- package/dist/components/legal/templates/SalesTermsTemplate.d.ts.map +1 -1
- package/dist/components/legal/templates/TermsTemplate.d.ts +17 -27
- package/dist/components/legal/templates/TermsTemplate.d.ts.map +1 -1
- package/dist/components/marketing/MarketingCard.d.ts +6 -14
- package/dist/components/marketing/MarketingCard.d.ts.map +1 -1
- package/dist/components/marketing/MarketingCardsSection.d.ts +8 -18
- package/dist/components/marketing/MarketingCardsSection.d.ts.map +1 -1
- package/dist/components/marketing/MarketingComparisonSection.d.ts +14 -26
- package/dist/components/marketing/MarketingComparisonSection.d.ts.map +1 -1
- package/dist/components/marketing/MarketingIconCard.d.ts +18 -32
- package/dist/components/marketing/MarketingIconCard.d.ts.map +1 -1
- package/dist/components/marketing/MarketingSection.d.ts +15 -30
- package/dist/components/marketing/MarketingSection.d.ts.map +1 -1
- package/dist/components/marketing/MarketingStepCard.d.ts +8 -17
- package/dist/components/marketing/MarketingStepCard.d.ts.map +1 -1
- package/dist/components/molecules/AiLinkButton.d.ts +6 -13
- package/dist/components/molecules/AiLinkButton.d.ts.map +1 -1
- package/dist/components/molecules/Breadcrumbs.d.ts +7 -14
- package/dist/components/molecules/Breadcrumbs.d.ts.map +1 -1
- package/dist/components/molecules/CodeBlock/CodeBlock.d.ts +2 -16
- package/dist/components/molecules/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/components/molecules/CodeBlock/index.d.ts +3 -2
- package/dist/components/molecules/CodeBlock/index.d.ts.map +1 -0
- package/dist/components/molecules/CodeBlock/types.d.ts +15 -19
- package/dist/components/molecules/CodeBlock/types.d.ts.map +1 -1
- package/dist/components/molecules/CommandPalette.d.ts +14 -24
- package/dist/components/molecules/CommandPalette.d.ts.map +1 -1
- package/dist/components/molecules/CommandSearchTrigger.d.ts +8 -18
- package/dist/components/molecules/CommandSearchTrigger.d.ts.map +1 -1
- package/dist/components/molecules/CommandTabs/CommandTabs.d.ts +2 -13
- package/dist/components/molecules/CommandTabs/CommandTabs.d.ts.map +1 -1
- package/dist/components/molecules/CommandTabs/index.d.ts +3 -2
- package/dist/components/molecules/CommandTabs/index.d.ts.map +1 -0
- package/dist/components/molecules/CommandTabs/types.d.ts +17 -21
- package/dist/components/molecules/CommandTabs/types.d.ts.map +1 -1
- package/dist/components/molecules/CopyButton/CopyButton.d.ts +2 -12
- package/dist/components/molecules/CopyButton/CopyButton.d.ts.map +1 -1
- package/dist/components/molecules/CopyButton/index.d.ts +3 -2
- package/dist/components/molecules/CopyButton/index.d.ts.map +1 -0
- package/dist/components/molecules/CopyButton/types.d.ts +6 -10
- package/dist/components/molecules/CopyButton/types.d.ts.map +1 -1
- package/dist/components/molecules/DropdownMenu.d.ts +2 -0
- package/dist/components/molecules/DropdownMenu.d.ts.map +1 -0
- package/dist/components/molecules/EntityCard.d.ts +28 -53
- package/dist/components/molecules/EntityCard.d.ts.map +1 -1
- package/dist/components/molecules/FiltersToolbar.d.ts +17 -33
- package/dist/components/molecules/FiltersToolbar.d.ts.map +1 -1
- package/dist/components/molecules/FiltersToolbar.mobile.d.ts +3 -0
- package/dist/components/molecules/FiltersToolbar.mobile.d.ts.map +1 -0
- package/dist/components/molecules/HoverPreview.d.ts +8 -19
- package/dist/components/molecules/HoverPreview.d.ts.map +1 -1
- package/dist/components/molecules/InstallCommand/InstallCommand.d.ts +2 -15
- package/dist/components/molecules/InstallCommand/InstallCommand.d.ts.map +1 -1
- package/dist/components/molecules/InstallCommand/index.d.ts +3 -2
- package/dist/components/molecules/InstallCommand/index.d.ts.map +1 -0
- package/dist/components/molecules/InstallCommand/types.d.ts +17 -21
- package/dist/components/molecules/InstallCommand/types.d.ts.map +1 -1
- package/dist/components/molecules/LangSwitch.d.ts +10 -20
- package/dist/components/molecules/LangSwitch.d.ts.map +1 -1
- package/dist/components/molecules/LangSwitchDropdown.d.ts +12 -0
- package/dist/components/molecules/LangSwitchDropdown.d.ts.map +1 -0
- package/dist/components/molecules/LoaderBlock.d.ts +7 -17
- package/dist/components/molecules/LoaderBlock.d.ts.map +1 -1
- package/dist/components/molecules/LoaderBlock.mobile.d.ts +10 -0
- package/dist/components/molecules/LoaderBlock.mobile.d.ts.map +1 -0
- package/dist/components/molecules/MobileNavMenu.d.ts +6 -0
- package/dist/components/molecules/MobileNavMenu.d.ts.map +1 -0
- package/dist/components/molecules/NavItemCard.d.ts +7 -0
- package/dist/components/molecules/NavItemCard.d.ts.map +1 -0
- package/dist/components/molecules/NavMain.d.ts +5 -13
- package/dist/components/molecules/NavMain.d.ts.map +1 -1
- package/dist/components/molecules/NavUser.d.ts +7 -17
- package/dist/components/molecules/NavUser.d.ts.map +1 -1
- package/dist/components/molecules/OverviewCard.d.ts +8 -18
- package/dist/components/molecules/OverviewCard.d.ts.map +1 -1
- package/dist/components/molecules/SkeletonBlock/index.d.ts +3 -2
- package/dist/components/molecules/SkeletonBlock/index.d.ts.map +1 -0
- package/dist/components/molecules/SkeletonBlock/index.mobile.d.ts +4 -0
- package/dist/components/molecules/SkeletonBlock/index.mobile.d.ts.map +1 -0
- package/dist/components/molecules/SkeletonBlock/index.web.d.ts +2 -12
- package/dist/components/molecules/SkeletonBlock/index.web.d.ts.map +1 -1
- package/dist/components/molecules/SkeletonBlock/types.d.ts +5 -8
- package/dist/components/molecules/SkeletonBlock/types.d.ts.map +1 -1
- package/dist/components/molecules/SkeletonCircle/index.d.ts +3 -2
- package/dist/components/molecules/SkeletonCircle/index.d.ts.map +1 -0
- package/dist/components/molecules/SkeletonCircle/index.mobile.d.ts +4 -0
- package/dist/components/molecules/SkeletonCircle/index.mobile.d.ts.map +1 -0
- package/dist/components/molecules/SkeletonCircle/index.web.d.ts +2 -11
- package/dist/components/molecules/SkeletonCircle/index.web.d.ts.map +1 -1
- package/dist/components/molecules/SkeletonCircle/types.d.ts +4 -7
- package/dist/components/molecules/SkeletonCircle/types.d.ts.map +1 -1
- package/dist/components/molecules/SkeletonList/index.d.ts +3 -2
- package/dist/components/molecules/SkeletonList/index.d.ts.map +1 -0
- package/dist/components/molecules/SkeletonList/index.mobile.d.ts +4 -0
- package/dist/components/molecules/SkeletonList/index.mobile.d.ts.map +1 -0
- package/dist/components/molecules/SkeletonList/index.web.d.ts +2 -10
- package/dist/components/molecules/SkeletonList/index.web.d.ts.map +1 -1
- package/dist/components/molecules/SkeletonList/types.d.ts +3 -6
- package/dist/components/molecules/SkeletonList/types.d.ts.map +1 -1
- package/dist/components/molecules/StatCard.d.ts +17 -34
- package/dist/components/molecules/StatCard.d.ts.map +1 -1
- package/dist/components/molecules/StatusChip.d.ts +11 -24
- package/dist/components/molecules/StatusChip.d.ts.map +1 -1
- package/dist/components/molecules/hover-previews/Doc.d.ts +13 -26
- package/dist/components/molecules/hover-previews/Doc.d.ts.map +1 -1
- package/dist/components/molecules/hover-previews/Media.d.ts +8 -19
- package/dist/components/molecules/hover-previews/Media.d.ts.map +1 -1
- package/dist/components/molecules/hover-previews/Simple.d.ts +12 -23
- package/dist/components/molecules/hover-previews/Simple.d.ts.map +1 -1
- package/dist/components/molecules/hover-previews/Stats.d.ts +11 -21
- package/dist/components/molecules/hover-previews/Stats.d.ts.map +1 -1
- package/dist/components/molecules/hover-previews/User.d.ts +12 -24
- package/dist/components/molecules/hover-previews/User.d.ts.map +1 -1
- package/dist/components/native/BottomTabs.mobile.d.ts +13 -0
- package/dist/components/native/BottomTabs.mobile.d.ts.map +1 -0
- package/dist/components/native/FlatListScreen.mobile.d.ts +23 -0
- package/dist/components/native/FlatListScreen.mobile.d.ts.map +1 -0
- package/dist/components/native/SheetMenu.mobile.d.ts +8 -0
- package/dist/components/native/SheetMenu.mobile.d.ts.map +1 -0
- package/dist/components/organisms/AcademyLayout.d.ts +15 -28
- package/dist/components/organisms/AcademyLayout.d.ts.map +1 -1
- package/dist/components/organisms/AppHeader.d.ts +7 -17
- package/dist/components/organisms/AppHeader.d.ts.map +1 -1
- package/dist/components/organisms/AppHeader.mobile.d.ts +11 -0
- package/dist/components/organisms/AppHeader.mobile.d.ts.map +1 -0
- package/dist/components/organisms/AppLayout.d.ts +15 -27
- package/dist/components/organisms/AppLayout.d.ts.map +1 -1
- package/dist/components/organisms/AppSidebar.d.ts +10 -22
- package/dist/components/organisms/AppSidebar.d.ts.map +1 -1
- package/dist/components/organisms/AppSidebar.mobile.d.ts +2 -0
- package/dist/components/organisms/AppSidebar.mobile.d.ts.map +1 -0
- package/dist/components/organisms/EmptyDataList.d.ts +2 -20
- package/dist/components/organisms/EmptyDataList.d.ts.map +1 -1
- package/dist/components/organisms/EmptyDataList.mobile.d.ts +4 -0
- package/dist/components/organisms/EmptyDataList.mobile.d.ts.map +1 -0
- package/dist/components/organisms/EmptyDataList.types.d.ts +14 -18
- package/dist/components/organisms/EmptyDataList.types.d.ts.map +1 -1
- package/dist/components/organisms/EmptySearchResult.d.ts +10 -23
- package/dist/components/organisms/EmptySearchResult.d.ts.map +1 -1
- package/dist/components/organisms/FAQSection.d.ts +15 -30
- package/dist/components/organisms/FAQSection.d.ts.map +1 -1
- package/dist/components/organisms/FeatureCarousel.d.ts +9 -17
- package/dist/components/organisms/FeatureCarousel.d.ts.map +1 -1
- package/dist/components/organisms/FeaturesSection.d.ts +8 -19
- package/dist/components/organisms/FeaturesSection.d.ts.map +1 -1
- package/dist/components/organisms/Footer.d.ts +12 -24
- package/dist/components/organisms/Footer.d.ts.map +1 -1
- package/dist/components/organisms/GridLayout.d.ts +16 -0
- package/dist/components/organisms/GridLayout.d.ts.map +1 -0
- package/dist/components/organisms/Header.d.ts +18 -36
- package/dist/components/organisms/Header.d.ts.map +1 -1
- package/dist/components/organisms/Header.mobile.d.ts +18 -0
- package/dist/components/organisms/Header.mobile.d.ts.map +1 -0
- package/dist/components/organisms/HeroResponsive.d.ts +3 -14
- package/dist/components/organisms/HeroResponsive.d.ts.map +1 -1
- package/dist/components/organisms/HeroSection.d.ts +17 -29
- package/dist/components/organisms/HeroSection.d.ts.map +1 -1
- package/dist/components/organisms/ListCardPage.d.ts +19 -33
- package/dist/components/organisms/ListCardPage.d.ts.map +1 -1
- package/dist/components/organisms/ListGridPage.d.ts +19 -33
- package/dist/components/organisms/ListGridPage.d.ts.map +1 -1
- package/dist/components/organisms/ListPageResponsive.d.ts +2 -7
- package/dist/components/organisms/ListPageResponsive.d.ts.map +1 -1
- package/dist/components/organisms/ListTablePage.d.ts +17 -30
- package/dist/components/organisms/ListTablePage.d.ts.map +1 -1
- package/dist/components/organisms/MarketingHeader.d.ts +21 -37
- package/dist/components/organisms/MarketingHeader.d.ts.map +1 -1
- package/dist/components/organisms/MarketingHeaderDesktop.d.ts +2 -15
- package/dist/components/organisms/MarketingHeaderDesktop.d.ts.map +1 -1
- package/dist/components/organisms/MarketingHeaderMobile.d.ts +2 -12
- package/dist/components/organisms/MarketingHeaderMobile.d.ts.map +1 -1
- package/dist/components/organisms/MarketingLayout.d.ts +7 -17
- package/dist/components/organisms/MarketingLayout.d.ts.map +1 -1
- package/dist/components/organisms/PageHeaderResponsive.d.ts +3 -8
- package/dist/components/organisms/PageHeaderResponsive.d.ts.map +1 -1
- package/dist/components/organisms/PageHeaderResponsive.mobile.d.ts +12 -0
- package/dist/components/organisms/PageHeaderResponsive.mobile.d.ts.map +1 -0
- package/dist/components/organisms/PricingCarousel.d.ts +15 -23
- package/dist/components/organisms/PricingCarousel.d.ts.map +1 -1
- package/dist/components/organisms/PricingSection.d.ts +8 -18
- package/dist/components/organisms/PricingSection.d.ts.map +1 -1
- package/dist/components/organisms/TestimonialCarousel.d.ts +10 -18
- package/dist/components/organisms/TestimonialCarousel.d.ts.map +1 -1
- package/dist/components/providers/PackageManagerProvider.d.ts +8 -16
- package/dist/components/providers/PackageManagerProvider.d.ts.map +1 -1
- package/dist/components/templates/lists/ListPageTemplate/index.d.ts +3 -2
- package/dist/components/templates/lists/ListPageTemplate/index.d.ts.map +1 -0
- package/dist/components/templates/lists/ListPageTemplate/index.mobile.d.ts +4 -0
- package/dist/components/templates/lists/ListPageTemplate/index.mobile.d.ts.map +1 -0
- package/dist/components/templates/lists/ListPageTemplate/index.web.d.ts +3 -22
- package/dist/components/templates/lists/ListPageTemplate/index.web.d.ts.map +1 -1
- package/dist/components/templates/lists/ListPageTemplate/types.d.ts +20 -24
- package/dist/components/templates/lists/ListPageTemplate/types.d.ts.map +1 -1
- package/dist/hooks/useListUrlState.d.ts +20 -27
- package/dist/hooks/useListUrlState.d.ts.map +1 -1
- package/dist/index.d.ts +116 -129
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7055 -119
- package/dist/lib/keyboard.d.ts +10 -11
- package/dist/lib/keyboard.d.ts.map +1 -1
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/platform/useColorScheme.d.ts +2 -5
- package/dist/platform/useColorScheme.d.ts.map +1 -1
- package/dist/platform/useColorScheme.mobile.d.ts +3 -0
- package/dist/platform/useColorScheme.mobile.d.ts.map +1 -0
- package/dist/platform/useReducedMotion.d.ts +1 -4
- package/dist/platform/useReducedMotion.d.ts.map +1 -1
- package/dist/platform/useReducedMotion.mobile.d.ts +2 -0
- package/dist/platform/useReducedMotion.mobile.d.ts.map +1 -0
- package/dist/platform/useResponsive.d.ts +15 -17
- package/dist/platform/useResponsive.d.ts.map +1 -1
- package/dist/platform/useResponsive.mobile.d.ts +22 -0
- package/dist/platform/useResponsive.mobile.d.ts.map +1 -0
- package/dist/platform/withPlatformUI.d.ts +22 -19
- package/dist/platform/withPlatformUI.d.ts.map +1 -1
- package/dist/renderers/form-contract.d.ts +2 -9
- package/dist/renderers/form-contract.d.ts.map +1 -1
- package/dist/renderers/index.d.ts +2 -1
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/theme/tokenBridge.d.ts +14 -17
- package/dist/theme/tokenBridge.d.ts.map +1 -1
- package/dist/theme/tokens.d.ts +41 -44
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme/variants.d.ts +12 -17
- package/dist/theme/variants.d.ts.map +1 -1
- package/dist/types/navigation.d.ts +36 -40
- package/dist/types/navigation.d.ts.map +1 -1
- package/package.json +23 -19
- package/dist/_virtual/rolldown_runtime.js +0 -37
- package/dist/components/agent/AgentMonitor.js +0 -79
- package/dist/components/agent/AgentMonitor.js.map +0 -1
- package/dist/components/agent/ApprovalQueue.js +0 -89
- package/dist/components/agent/ApprovalQueue.js.map +0 -1
- package/dist/components/atoms/ActionButtons.js +0 -98
- package/dist/components/atoms/ActionButtons.js.map +0 -1
- package/dist/components/atoms/Button.js +0 -34
- package/dist/components/atoms/Button.js.map +0 -1
- package/dist/components/atoms/ButtonLink.js +0 -36
- package/dist/components/atoms/ButtonLink.js.map +0 -1
- package/dist/components/atoms/Cta.js +0 -56
- package/dist/components/atoms/Cta.js.map +0 -1
- package/dist/components/atoms/DataChips.js +0 -88
- package/dist/components/atoms/DataChips.js.map +0 -1
- package/dist/components/atoms/EmptyState.js +0 -14
- package/dist/components/atoms/EmptyState.js.map +0 -1
- package/dist/components/atoms/ErrorState.js +0 -40
- package/dist/components/atoms/ErrorState.js.map +0 -1
- package/dist/components/atoms/Input.js +0 -28
- package/dist/components/atoms/Input.js.map +0 -1
- package/dist/components/atoms/Link.js +0 -14
- package/dist/components/atoms/Link.js.map +0 -1
- package/dist/components/atoms/Link.web.js +0 -16
- package/dist/components/atoms/Link.web.js.map +0 -1
- package/dist/components/atoms/LoaderCircular.js +0 -44
- package/dist/components/atoms/LoaderCircular.js.map +0 -1
- package/dist/components/atoms/NavBrand.js +0 -26
- package/dist/components/atoms/NavBrand.js.map +0 -1
- package/dist/components/atoms/Stepper.js +0 -14
- package/dist/components/atoms/Stepper.js.map +0 -1
- package/dist/components/atoms/Textarea.js +0 -30
- package/dist/components/atoms/Textarea.js.map +0 -1
- package/dist/components/data-view/DataViewDetail.js +0 -85
- package/dist/components/data-view/DataViewDetail.js.map +0 -1
- package/dist/components/data-view/DataViewList.js +0 -74
- package/dist/components/data-view/DataViewList.js.map +0 -1
- package/dist/components/data-view/DataViewRenderer.js +0 -148
- package/dist/components/data-view/DataViewRenderer.js.map +0 -1
- package/dist/components/data-view/DataViewTable.js +0 -100
- package/dist/components/data-view/DataViewTable.js.map +0 -1
- package/dist/components/data-view/utils.js +0 -50
- package/dist/components/data-view/utils.js.map +0 -1
- package/dist/components/forms/ActionForm.js +0 -19
- package/dist/components/forms/ActionForm.js.map +0 -1
- package/dist/components/forms/FormCardLayout.js +0 -28
- package/dist/components/forms/FormCardLayout.js.map +0 -1
- package/dist/components/forms/FormDialog.js +0 -25
- package/dist/components/forms/FormDialog.js.map +0 -1
- package/dist/components/forms/FormLayout.js +0 -29
- package/dist/components/forms/FormLayout.js.map +0 -1
- package/dist/components/forms/FormOneByOneLayout.js +0 -57
- package/dist/components/forms/FormOneByOneLayout.js.map +0 -1
- package/dist/components/forms/FormStepsLayout.js +0 -66
- package/dist/components/forms/FormStepsLayout.js.map +0 -1
- package/dist/components/forms/ZodForm.js +0 -25
- package/dist/components/forms/ZodForm.js.map +0 -1
- package/dist/components/legal/atoms/DefinitionList.js +0 -24
- package/dist/components/legal/atoms/DefinitionList.js.map +0 -1
- package/dist/components/legal/atoms/KeyValueList.js +0 -24
- package/dist/components/legal/atoms/KeyValueList.js.map +0 -1
- package/dist/components/legal/atoms/LegalCallout.js +0 -24
- package/dist/components/legal/atoms/LegalCallout.js.map +0 -1
- package/dist/components/legal/atoms/LegalHeading.js +0 -46
- package/dist/components/legal/atoms/LegalHeading.js.map +0 -1
- package/dist/components/legal/atoms/LegalList.js +0 -38
- package/dist/components/legal/atoms/LegalList.js.map +0 -1
- package/dist/components/legal/atoms/LegalSection.js +0 -44
- package/dist/components/legal/atoms/LegalSection.js.map +0 -1
- package/dist/components/legal/atoms/LegalText.js +0 -45
- package/dist/components/legal/atoms/LegalText.js.map +0 -1
- package/dist/components/legal/molecules/Consent.js +0 -36
- package/dist/components/legal/molecules/Consent.js.map +0 -1
- package/dist/components/legal/molecules/ContactFields.js +0 -64
- package/dist/components/legal/molecules/ContactFields.js.map +0 -1
- package/dist/components/legal/molecules/LegalMeta.js +0 -30
- package/dist/components/legal/molecules/LegalMeta.js.map +0 -1
- package/dist/components/legal/molecules/LegalTOC.js +0 -52
- package/dist/components/legal/molecules/LegalTOC.js.map +0 -1
- package/dist/components/legal/organisms/ContactForm.js +0 -42
- package/dist/components/legal/organisms/ContactForm.js.map +0 -1
- package/dist/components/legal/organisms/GDPRDataRequest.js +0 -53
- package/dist/components/legal/organisms/GDPRDataRequest.js.map +0 -1
- package/dist/components/legal/organisms/GDPRRights.js +0 -30
- package/dist/components/legal/organisms/GDPRRights.js.map +0 -1
- package/dist/components/legal/organisms/LegalPageLayout.js +0 -51
- package/dist/components/legal/organisms/LegalPageLayout.js.map +0 -1
- package/dist/components/legal/templates/ContactTemplate.js +0 -47
- package/dist/components/legal/templates/ContactTemplate.js.map +0 -1
- package/dist/components/legal/templates/CookiesTemplate.js +0 -36
- package/dist/components/legal/templates/CookiesTemplate.js.map +0 -1
- package/dist/components/legal/templates/PrivacyTemplate.js +0 -40
- package/dist/components/legal/templates/PrivacyTemplate.js.map +0 -1
- package/dist/components/legal/templates/SalesTermsTemplate.js +0 -32
- package/dist/components/legal/templates/SalesTermsTemplate.js.map +0 -1
- package/dist/components/legal/templates/TermsTemplate.js +0 -34
- package/dist/components/legal/templates/TermsTemplate.js.map +0 -1
- package/dist/components/marketing/MarketingCard.js +0 -21
- package/dist/components/marketing/MarketingCard.js.map +0 -1
- package/dist/components/marketing/MarketingCardsSection.js +0 -29
- package/dist/components/marketing/MarketingCardsSection.js.map +0 -1
- package/dist/components/marketing/MarketingComparisonSection.js +0 -53
- package/dist/components/marketing/MarketingComparisonSection.js.map +0 -1
- package/dist/components/marketing/MarketingIconCard.js +0 -74
- package/dist/components/marketing/MarketingIconCard.js.map +0 -1
- package/dist/components/marketing/MarketingSection.js +0 -62
- package/dist/components/marketing/MarketingSection.js.map +0 -1
- package/dist/components/marketing/MarketingStepCard.js +0 -37
- package/dist/components/marketing/MarketingStepCard.js.map +0 -1
- package/dist/components/molecules/AiLinkButton.js +0 -67
- package/dist/components/molecules/AiLinkButton.js.map +0 -1
- package/dist/components/molecules/Breadcrumbs.js +0 -18
- package/dist/components/molecules/Breadcrumbs.js.map +0 -1
- package/dist/components/molecules/CodeBlock/CodeBlock.js +0 -58
- package/dist/components/molecules/CodeBlock/CodeBlock.js.map +0 -1
- package/dist/components/molecules/CommandPalette.js +0 -42
- package/dist/components/molecules/CommandPalette.js.map +0 -1
- package/dist/components/molecules/CommandSearchTrigger.js +0 -45
- package/dist/components/molecules/CommandSearchTrigger.js.map +0 -1
- package/dist/components/molecules/CommandTabs/CommandTabs.js +0 -75
- package/dist/components/molecules/CommandTabs/CommandTabs.js.map +0 -1
- package/dist/components/molecules/CopyButton/CopyButton.js +0 -42
- package/dist/components/molecules/CopyButton/CopyButton.js.map +0 -1
- package/dist/components/molecules/EntityCard.js +0 -149
- package/dist/components/molecules/EntityCard.js.map +0 -1
- package/dist/components/molecules/FiltersToolbar.js +0 -71
- package/dist/components/molecules/FiltersToolbar.js.map +0 -1
- package/dist/components/molecules/HoverPreview.js +0 -26
- package/dist/components/molecules/HoverPreview.js.map +0 -1
- package/dist/components/molecules/InstallCommand/InstallCommand.js +0 -69
- package/dist/components/molecules/InstallCommand/InstallCommand.js.map +0 -1
- package/dist/components/molecules/LangSwitch.js +0 -22
- package/dist/components/molecules/LangSwitch.js.map +0 -1
- package/dist/components/molecules/LangSwitchDropdown.js +0 -38
- package/dist/components/molecules/LangSwitchDropdown.js.map +0 -1
- package/dist/components/molecules/LoaderBlock.js +0 -25
- package/dist/components/molecules/LoaderBlock.js.map +0 -1
- package/dist/components/molecules/MobileNavMenu.js +0 -28
- package/dist/components/molecules/MobileNavMenu.js.map +0 -1
- package/dist/components/molecules/NavItemCard.js +0 -51
- package/dist/components/molecules/NavItemCard.js.map +0 -1
- package/dist/components/molecules/NavMain.js +0 -34
- package/dist/components/molecules/NavMain.js.map +0 -1
- package/dist/components/molecules/NavUser.js +0 -58
- package/dist/components/molecules/NavUser.js.map +0 -1
- package/dist/components/molecules/OverviewCard.js +0 -37
- package/dist/components/molecules/OverviewCard.js.map +0 -1
- package/dist/components/molecules/SkeletonBlock/index.web.js +0 -13
- package/dist/components/molecules/SkeletonBlock/index.web.js.map +0 -1
- package/dist/components/molecules/SkeletonCircle/index.web.js +0 -23
- package/dist/components/molecules/SkeletonCircle/index.web.js.map +0 -1
- package/dist/components/molecules/SkeletonList/index.web.js +0 -14
- package/dist/components/molecules/SkeletonList/index.web.js.map +0 -1
- package/dist/components/molecules/StatCard.js +0 -68
- package/dist/components/molecules/StatCard.js.map +0 -1
- package/dist/components/molecules/StatusChip.js +0 -56
- package/dist/components/molecules/StatusChip.js.map +0 -1
- package/dist/components/molecules/hover-previews/Doc.js +0 -45
- package/dist/components/molecules/hover-previews/Doc.js.map +0 -1
- package/dist/components/molecules/hover-previews/Media.js +0 -33
- package/dist/components/molecules/hover-previews/Media.js.map +0 -1
- package/dist/components/molecules/hover-previews/Simple.js +0 -45
- package/dist/components/molecules/hover-previews/Simple.js.map +0 -1
- package/dist/components/molecules/hover-previews/Stats.js +0 -38
- package/dist/components/molecules/hover-previews/Stats.js.map +0 -1
- package/dist/components/molecules/hover-previews/User.js +0 -47
- package/dist/components/molecules/hover-previews/User.js.map +0 -1
- package/dist/components/organisms/AcademyLayout.js +0 -47
- package/dist/components/organisms/AcademyLayout.js.map +0 -1
- package/dist/components/organisms/AppHeader.js +0 -31
- package/dist/components/organisms/AppHeader.js.map +0 -1
- package/dist/components/organisms/AppLayout.js +0 -45
- package/dist/components/organisms/AppLayout.js.map +0 -1
- package/dist/components/organisms/AppSidebar.js +0 -40
- package/dist/components/organisms/AppSidebar.js.map +0 -1
- package/dist/components/organisms/EmptyDataList.js +0 -49
- package/dist/components/organisms/EmptyDataList.js.map +0 -1
- package/dist/components/organisms/EmptySearchResult.js +0 -28
- package/dist/components/organisms/EmptySearchResult.js.map +0 -1
- package/dist/components/organisms/FAQSection.js +0 -66
- package/dist/components/organisms/FAQSection.js.map +0 -1
- package/dist/components/organisms/FeatureCarousel.js +0 -35
- package/dist/components/organisms/FeatureCarousel.js.map +0 -1
- package/dist/components/organisms/FeaturesSection.js +0 -38
- package/dist/components/organisms/FeaturesSection.js.map +0 -1
- package/dist/components/organisms/Footer.js +0 -53
- package/dist/components/organisms/Footer.js.map +0 -1
- package/dist/components/organisms/Header.js +0 -100
- package/dist/components/organisms/Header.js.map +0 -1
- package/dist/components/organisms/HeroResponsive.js +0 -25
- package/dist/components/organisms/HeroResponsive.js.map +0 -1
- package/dist/components/organisms/HeroSection.js +0 -31
- package/dist/components/organisms/HeroSection.js.map +0 -1
- package/dist/components/organisms/ListCardPage.js +0 -56
- package/dist/components/organisms/ListCardPage.js.map +0 -1
- package/dist/components/organisms/ListGridPage.js +0 -50
- package/dist/components/organisms/ListGridPage.js.map +0 -1
- package/dist/components/organisms/ListPageResponsive.js +0 -20
- package/dist/components/organisms/ListPageResponsive.js.map +0 -1
- package/dist/components/organisms/ListTablePage.js +0 -47
- package/dist/components/organisms/ListTablePage.js.map +0 -1
- package/dist/components/organisms/MarketingHeader.js +0 -127
- package/dist/components/organisms/MarketingHeader.js.map +0 -1
- package/dist/components/organisms/MarketingHeaderDesktop.js +0 -58
- package/dist/components/organisms/MarketingHeaderDesktop.js.map +0 -1
- package/dist/components/organisms/MarketingHeaderMobile.js +0 -70
- package/dist/components/organisms/MarketingHeaderMobile.js.map +0 -1
- package/dist/components/organisms/MarketingLayout.js +0 -27
- package/dist/components/organisms/MarketingLayout.js.map +0 -1
- package/dist/components/organisms/PageHeaderResponsive.js +0 -20
- package/dist/components/organisms/PageHeaderResponsive.js.map +0 -1
- package/dist/components/organisms/PricingCarousel.js +0 -60
- package/dist/components/organisms/PricingCarousel.js.map +0 -1
- package/dist/components/organisms/PricingSection.js +0 -27
- package/dist/components/organisms/PricingSection.js.map +0 -1
- package/dist/components/organisms/TestimonialCarousel.js +0 -38
- package/dist/components/organisms/TestimonialCarousel.js.map +0 -1
- package/dist/components/providers/PackageManagerProvider.js +0 -50
- package/dist/components/providers/PackageManagerProvider.js.map +0 -1
- package/dist/components/templates/lists/ListPageTemplate/index.web.js +0 -53
- package/dist/components/templates/lists/ListPageTemplate/index.web.js.map +0 -1
- package/dist/example-shared-ui/src/EvolutionDashboard.js +0 -7
- package/dist/example-shared-ui/src/EvolutionSidebar.js +0 -7
- package/dist/example-shared-ui/src/LocalDataIndicator.js +0 -6
- package/dist/example-shared-ui/src/MarkdownView.js +0 -119
- package/dist/example-shared-ui/src/MarkdownView.js.map +0 -1
- package/dist/example-shared-ui/src/OverlayContextProvider.js +0 -11
- package/dist/example-shared-ui/src/OverlayContextProvider.js.map +0 -1
- package/dist/example-shared-ui/src/PersonalizationInsights.js +0 -7
- package/dist/example-shared-ui/src/SaveToStudioButton.js +0 -6
- package/dist/example-shared-ui/src/SpecEditorPanel.js +0 -6
- package/dist/example-shared-ui/src/TemplateShell.js +0 -3
- package/dist/example-shared-ui/src/hooks/index.js +0 -5
- package/dist/example-shared-ui/src/hooks/useBehaviorTracking.js +0 -3
- package/dist/example-shared-ui/src/hooks/useEvolution.js +0 -3
- package/dist/example-shared-ui/src/hooks/useRegistryTemplates.js +0 -1
- package/dist/example-shared-ui/src/hooks/useSpecContent.js +0 -4
- package/dist/example-shared-ui/src/hooks/useWorkflowComposer.js +0 -3
- package/dist/example-shared-ui/src/index.js +0 -12
- package/dist/example-shared-ui/src/lib/component-registry.js +0 -27
- package/dist/example-shared-ui/src/lib/component-registry.js.map +0 -1
- package/dist/example-shared-ui/src/lib/runtime-context.js +0 -9
- package/dist/example-shared-ui/src/lib/runtime-context.js.map +0 -1
- package/dist/hooks/useListUrlState.js +0 -90
- package/dist/hooks/useListUrlState.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/keyboard.js +0 -194
- package/dist/lib/keyboard.js.map +0 -1
- package/dist/lib/utils.js +0 -11
- package/dist/lib/utils.js.map +0 -1
- package/dist/platform/useColorScheme.js +0 -21
- package/dist/platform/useColorScheme.js.map +0 -1
- package/dist/platform/useReducedMotion.js +0 -21
- package/dist/platform/useReducedMotion.js.map +0 -1
- package/dist/platform/useResponsive.js +0 -40
- package/dist/platform/useResponsive.js.map +0 -1
- package/dist/platform/withPlatformUI.js +0 -31
- package/dist/platform/withPlatformUI.js.map +0 -1
- package/dist/renderers/form-contract.js +0 -76
- package/dist/renderers/form-contract.js.map +0 -1
- package/dist/theme/tokenBridge.js +0 -25
- package/dist/theme/tokenBridge.js.map +0 -1
- package/dist/theme/tokens.js +0 -49
- package/dist/theme/tokens.js.map +0 -1
- package/dist/theme/variants.js +0 -44
- package/dist/theme/variants.js.map +0 -1
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { createContext, useCallback, useContext, useEffect, useState } from "react";
|
|
4
|
-
import { jsx } from "react/jsx-runtime";
|
|
5
|
-
|
|
6
|
-
//#region src/components/providers/PackageManagerProvider.tsx
|
|
7
|
-
const STORAGE_KEY = "package-manager-preference";
|
|
8
|
-
const PackageManagerContext = createContext(null);
|
|
9
|
-
/**
|
|
10
|
-
* Provider for sharing package manager preference across CommandTabs components.
|
|
11
|
-
* Wrap your documentation layout with this provider to sync preference across all instances.
|
|
12
|
-
*/
|
|
13
|
-
function PackageManagerProvider({ children, defaultPreference = "bun" }) {
|
|
14
|
-
const [preference, setPreferenceState] = useState(defaultPreference);
|
|
15
|
-
useEffect(() => {
|
|
16
|
-
try {
|
|
17
|
-
const saved = localStorage.getItem(STORAGE_KEY);
|
|
18
|
-
if (saved && [
|
|
19
|
-
"bun",
|
|
20
|
-
"npm",
|
|
21
|
-
"yarn",
|
|
22
|
-
"pnpm"
|
|
23
|
-
].includes(saved)) setPreferenceState(saved);
|
|
24
|
-
} catch {}
|
|
25
|
-
}, []);
|
|
26
|
-
const setPreference = useCallback((pm) => {
|
|
27
|
-
setPreferenceState(pm);
|
|
28
|
-
try {
|
|
29
|
-
localStorage.setItem(STORAGE_KEY, pm);
|
|
30
|
-
} catch {}
|
|
31
|
-
}, []);
|
|
32
|
-
return /* @__PURE__ */ jsx(PackageManagerContext.Provider, {
|
|
33
|
-
value: {
|
|
34
|
-
preference,
|
|
35
|
-
setPreference
|
|
36
|
-
},
|
|
37
|
-
children
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Hook to access the package manager preference.
|
|
42
|
-
* Returns null if not wrapped in a PackageManagerProvider (components will use local state).
|
|
43
|
-
*/
|
|
44
|
-
function usePackageManager() {
|
|
45
|
-
return useContext(PackageManagerContext);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
//#endregion
|
|
49
|
-
export { PackageManagerProvider, usePackageManager };
|
|
50
|
-
//# sourceMappingURL=PackageManagerProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PackageManagerProvider.js","names":[],"sources":["../../../src/components/providers/PackageManagerProvider.tsx"],"sourcesContent":["'use client';\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useState,\n type ReactNode,\n} from 'react';\nimport type {\n PackageManager,\n PackageManagerContextValue,\n} from '../molecules/CommandTabs/types';\n\nconst STORAGE_KEY = 'package-manager-preference';\n\nconst PackageManagerContext = createContext<PackageManagerContextValue | null>(\n null\n);\n\nexport interface PackageManagerProviderProps {\n children: ReactNode;\n /** Default package manager preference */\n defaultPreference?: PackageManager;\n}\n\n/**\n * Provider for sharing package manager preference across CommandTabs components.\n * Wrap your documentation layout with this provider to sync preference across all instances.\n */\nexport function PackageManagerProvider({\n children,\n defaultPreference = 'bun',\n}: PackageManagerProviderProps) {\n const [preference, setPreferenceState] =\n useState<PackageManager>(defaultPreference);\n\n // Hydrate from localStorage on mount\n useEffect(() => {\n try {\n const saved = localStorage.getItem(STORAGE_KEY) as PackageManager | null;\n if (saved && ['bun', 'npm', 'yarn', 'pnpm'].includes(saved)) {\n setPreferenceState(saved);\n }\n } catch {\n // localStorage not available\n }\n }, []);\n\n const setPreference = useCallback((pm: PackageManager) => {\n setPreferenceState(pm);\n try {\n localStorage.setItem(STORAGE_KEY, pm);\n } catch {\n // localStorage not available\n }\n }, []);\n\n return (\n <PackageManagerContext.Provider value={{ preference, setPreference }}>\n {children}\n </PackageManagerContext.Provider>\n );\n}\n\n/**\n * Hook to access the package manager preference.\n * Returns null if not wrapped in a PackageManagerProvider (components will use local state).\n */\nexport function usePackageManager(): PackageManagerContextValue | null {\n return useContext(PackageManagerContext);\n}\n"],"mappings":";;;;;;AAeA,MAAM,cAAc;AAEpB,MAAM,wBAAwB,cAC5B,KACD;;;;;AAYD,SAAgB,uBAAuB,EACrC,UACA,oBAAoB,SACU;CAC9B,MAAM,CAAC,YAAY,sBACjB,SAAyB,kBAAkB;AAG7C,iBAAgB;AACd,MAAI;GACF,MAAM,QAAQ,aAAa,QAAQ,YAAY;AAC/C,OAAI,SAAS;IAAC;IAAO;IAAO;IAAQ;IAAO,CAAC,SAAS,MAAM,CACzD,oBAAmB,MAAM;UAErB;IAGP,EAAE,CAAC;CAEN,MAAM,gBAAgB,aAAa,OAAuB;AACxD,qBAAmB,GAAG;AACtB,MAAI;AACF,gBAAa,QAAQ,aAAa,GAAG;UAC/B;IAGP,EAAE,CAAC;AAEN,QACE,oBAAC,sBAAsB;EAAS,OAAO;GAAE;GAAY;GAAe;EACjE;GAC8B;;;;;;AAQrC,SAAgB,oBAAuD;AACrE,QAAO,WAAW,sBAAsB"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { PageHeaderResponsive } from "../../../organisms/PageHeaderResponsive.js";
|
|
2
|
-
import { FiltersToolbar } from "../../../molecules/FiltersToolbar.js";
|
|
3
|
-
import { AiLinkButton } from "../../../molecules/AiLinkButton.js";
|
|
4
|
-
import { EmptyDataList } from "../../../organisms/EmptyDataList.js";
|
|
5
|
-
import * as React from "react";
|
|
6
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
import { cva } from "class-variance-authority";
|
|
8
|
-
import { cn } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
9
|
-
import { Card, CardContent } from "@contractspec/lib.ui-kit-web/ui/card";
|
|
10
|
-
import { Skeleton } from "@contractspec/lib.ui-kit-web/ui/skeleton";
|
|
11
|
-
|
|
12
|
-
//#region src/components/templates/lists/ListPageTemplate/index.web.tsx
|
|
13
|
-
const containerVariants = cva("space-y-4 md:space-y-6");
|
|
14
|
-
function ListPageTemplate({ children, title, description, breadcrumb, actions, className, searchPlaceholder, searchValue, onSearchChange, onSearchSubmit, isLoading, data, renderItem, emptyProps }) {
|
|
15
|
-
const mdHref = React.useMemo(() => {
|
|
16
|
-
if (typeof window === "undefined") return void 0;
|
|
17
|
-
const url = new URL(window.location.href);
|
|
18
|
-
url.pathname = url.pathname.replace(/\/$/, "") + ".md";
|
|
19
|
-
return url.toString();
|
|
20
|
-
}, []);
|
|
21
|
-
const renderEmpty = () => {
|
|
22
|
-
return /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx(EmptyDataList, { ...emptyProps }) }) });
|
|
23
|
-
};
|
|
24
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
25
|
-
className: cn(containerVariants(), className),
|
|
26
|
-
children: [
|
|
27
|
-
/* @__PURE__ */ jsx(PageHeaderResponsive, {
|
|
28
|
-
title,
|
|
29
|
-
subtitle: description,
|
|
30
|
-
breadcrumb,
|
|
31
|
-
actions: /* @__PURE__ */ jsxs(Fragment, { children: [actions, mdHref && /* @__PURE__ */ jsx(AiLinkButton, { href: mdHref })] })
|
|
32
|
-
}),
|
|
33
|
-
/* @__PURE__ */ jsx(FiltersToolbar, {
|
|
34
|
-
searchPlaceholder,
|
|
35
|
-
searchValue,
|
|
36
|
-
onSearchChange,
|
|
37
|
-
onSearchSubmit
|
|
38
|
-
}),
|
|
39
|
-
/* @__PURE__ */ jsxs("div", {
|
|
40
|
-
className: "space-y-2",
|
|
41
|
-
children: [data?.map((item, index) => /* @__PURE__ */ jsx("div", { children: renderItem({
|
|
42
|
-
item,
|
|
43
|
-
index
|
|
44
|
-
}) }, index)), !data?.length && (isLoading ? Array.from({ length: 10 }).map((_, index) => /* @__PURE__ */ jsx(Skeleton, { className: "h-20 w-full rounded-md" }, index)) : renderEmpty())]
|
|
45
|
-
}),
|
|
46
|
-
children
|
|
47
|
-
]
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
//#endregion
|
|
52
|
-
export { ListPageTemplate };
|
|
53
|
-
//# sourceMappingURL=index.web.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.web.js","names":[],"sources":["../../../../../src/components/templates/lists/ListPageTemplate/index.web.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '@contractspec/lib.ui-kit-web/ui/utils';\nimport { PageHeaderResponsive } from '../../../organisms/PageHeaderResponsive';\nimport { FiltersToolbar } from '../../../molecules/FiltersToolbar';\nimport { AiLinkButton } from '../../../molecules/AiLinkButton';\nimport type { ListPageTemplateProps } from './types';\nimport { Skeleton } from '@contractspec/lib.ui-kit-web/ui/skeleton';\nimport { Card, CardContent } from '@contractspec/lib.ui-kit-web/ui/card';\nimport { EmptyDataList } from '../../../organisms/EmptyDataList';\n\nconst containerVariants = cva('space-y-4 md:space-y-6');\n\nexport * from './types';\n\nexport function ListPageTemplate<T = unknown>({\n children,\n title,\n description,\n breadcrumb,\n actions,\n className,\n searchPlaceholder,\n searchValue,\n onSearchChange,\n onSearchSubmit,\n isLoading,\n data,\n renderItem,\n emptyProps,\n}: ListPageTemplateProps<T>) {\n const mdHref = React.useMemo(() => {\n if (typeof window === 'undefined') return undefined;\n const url = new URL(window.location.href);\n url.pathname = url.pathname.replace(/\\/$/, '') + '.md';\n return url.toString();\n }, []);\n\n const renderEmpty = () => {\n return (\n <Card>\n <CardContent>\n <EmptyDataList {...emptyProps} />\n </CardContent>\n </Card>\n );\n };\n\n return (\n <div className={cn(containerVariants(), className)}>\n <PageHeaderResponsive\n title={title}\n subtitle={description}\n breadcrumb={breadcrumb}\n actions={\n <>\n {actions}\n {mdHref && <AiLinkButton href={mdHref} />}\n </>\n }\n />\n <FiltersToolbar\n searchPlaceholder={searchPlaceholder}\n searchValue={searchValue}\n onSearchChange={onSearchChange}\n onSearchSubmit={onSearchSubmit}\n />\n <div className=\"space-y-2\">\n {data?.map((item, index) => (\n <div key={index}>{renderItem({ item, index })}</div>\n ))}\n {!data?.length &&\n (isLoading\n ? Array.from({ length: 10 }).map((_, index) => (\n <Skeleton key={index} className=\"h-20 w-full rounded-md\" />\n ))\n : renderEmpty())}\n </div>\n\n {children}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAWA,MAAM,oBAAoB,IAAI,yBAAyB;AAIvD,SAAgB,iBAA8B,EAC5C,UACA,OACA,aACA,YACA,SACA,WACA,mBACA,aACA,gBACA,gBACA,WACA,MACA,YACA,cAC2B;CAC3B,MAAM,SAAS,MAAM,cAAc;AACjC,MAAI,OAAO,WAAW,YAAa,QAAO;EAC1C,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,KAAK;AACzC,MAAI,WAAW,IAAI,SAAS,QAAQ,OAAO,GAAG,GAAG;AACjD,SAAO,IAAI,UAAU;IACpB,EAAE,CAAC;CAEN,MAAM,oBAAoB;AACxB,SACE,oBAAC,kBACC,oBAAC,yBACC,oBAAC,iBAAc,GAAI,aAAc,GACrB,GACT;;AAIX,QACE,qBAAC;EAAI,WAAW,GAAG,mBAAmB,EAAE,UAAU;;GAChD,oBAAC;IACQ;IACP,UAAU;IACE;IACZ,SACE,4CACG,SACA,UAAU,oBAAC,gBAAa,MAAM,SAAU,IACxC;KAEL;GACF,oBAAC;IACoB;IACN;IACG;IACA;KAChB;GACF,qBAAC;IAAI,WAAU;eACZ,MAAM,KAAK,MAAM,UAChB,oBAAC,mBAAiB,WAAW;KAAE;KAAM;KAAO,CAAC,IAAnC,MAA0C,CACpD,EACD,CAAC,MAAM,WACL,YACG,MAAM,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC,KAAK,GAAG,UACjC,oBAAC,YAAqB,WAAU,4BAAjB,MAA4C,CAC3D,GACF,aAAa;KACf;GAEL;;GACG"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import "./hooks/useEvolution.js";
|
|
4
|
-
import { useCallback, useMemo } from "react";
|
|
5
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
-
import { Card } from "@contractspec/lib.ui-kit-web/ui/card";
|
|
7
|
-
import { Badge } from "@contractspec/lib.ui-kit-web/ui/badge";
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import "./hooks/useEvolution.js";
|
|
4
|
-
import { useCallback, useMemo } from "react";
|
|
5
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
-
import { Card } from "@contractspec/lib.ui-kit-web/ui/card";
|
|
7
|
-
import { Badge } from "@contractspec/lib.ui-kit-web/ui/badge";
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import "./lib/runtime-context.js";
|
|
4
|
-
import { useCallback, useEffect, useState } from "react";
|
|
5
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
-
import { Card } from "@contractspec/lib.ui-kit-web/ui/card";
|
|
7
|
-
import { Badge } from "@contractspec/lib.ui-kit-web/ui/badge";
|
|
8
|
-
|
|
9
|
-
//#region ../example-shared-ui/src/MarkdownView.tsx
|
|
10
|
-
/**
|
|
11
|
-
* Simple markdown renderer using pre-formatted display
|
|
12
|
-
* For production, consider using react-markdown or similar
|
|
13
|
-
*/
|
|
14
|
-
function MarkdownRenderer({ content }) {
|
|
15
|
-
const lines = content.split("\n");
|
|
16
|
-
const rendered = [];
|
|
17
|
-
let i = 0;
|
|
18
|
-
while (i < lines.length) {
|
|
19
|
-
const line = lines[i] ?? "";
|
|
20
|
-
if (line.startsWith("|") && lines[i + 1]?.match(/^\|[\s-|]+\|$/)) {
|
|
21
|
-
const tableLines = [line];
|
|
22
|
-
i++;
|
|
23
|
-
while (i < lines.length && (lines[i]?.startsWith("|") ?? false)) {
|
|
24
|
-
tableLines.push(lines[i] ?? "");
|
|
25
|
-
i++;
|
|
26
|
-
}
|
|
27
|
-
rendered.push(renderTable(tableLines, rendered.length));
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
if (line.startsWith("# ")) rendered.push(/* @__PURE__ */ jsx("h1", {
|
|
31
|
-
className: "mb-4 text-2xl font-bold",
|
|
32
|
-
children: line.slice(2)
|
|
33
|
-
}, i));
|
|
34
|
-
else if (line.startsWith("## ")) rendered.push(/* @__PURE__ */ jsx("h2", {
|
|
35
|
-
className: "mt-6 mb-3 text-xl font-semibold",
|
|
36
|
-
children: line.slice(3)
|
|
37
|
-
}, i));
|
|
38
|
-
else if (line.startsWith("### ")) rendered.push(/* @__PURE__ */ jsx("h3", {
|
|
39
|
-
className: "mt-4 mb-2 text-lg font-medium",
|
|
40
|
-
children: line.slice(4)
|
|
41
|
-
}, i));
|
|
42
|
-
else if (line.startsWith("> ")) rendered.push(/* @__PURE__ */ jsx("blockquote", {
|
|
43
|
-
className: "text-muted-foreground my-2 border-l-4 border-violet-500/50 pl-4 italic",
|
|
44
|
-
children: line.slice(2)
|
|
45
|
-
}, i));
|
|
46
|
-
else if (line.startsWith("- ")) rendered.push(/* @__PURE__ */ jsx("li", {
|
|
47
|
-
className: "ml-4 list-disc",
|
|
48
|
-
children: formatInlineMarkdown(line.slice(2))
|
|
49
|
-
}, i));
|
|
50
|
-
else if (line.startsWith("**") && line.includes(":**")) {
|
|
51
|
-
const [label, ...rest] = line.split(":**");
|
|
52
|
-
rendered.push(/* @__PURE__ */ jsxs("p", {
|
|
53
|
-
className: "my-1",
|
|
54
|
-
children: [/* @__PURE__ */ jsxs("strong", { children: [label?.slice(2), ":"] }), rest.join(":**")]
|
|
55
|
-
}, i));
|
|
56
|
-
} else if (line.startsWith("_") && line.endsWith("_")) rendered.push(/* @__PURE__ */ jsx("p", {
|
|
57
|
-
className: "text-muted-foreground my-1 italic",
|
|
58
|
-
children: line.slice(1, -1)
|
|
59
|
-
}, i));
|
|
60
|
-
else if (!line.trim()) rendered.push(/* @__PURE__ */ jsx("div", { className: "h-2" }, i));
|
|
61
|
-
else rendered.push(/* @__PURE__ */ jsx("p", {
|
|
62
|
-
className: "my-1",
|
|
63
|
-
children: formatInlineMarkdown(line)
|
|
64
|
-
}, i));
|
|
65
|
-
i++;
|
|
66
|
-
}
|
|
67
|
-
return /* @__PURE__ */ jsx("div", {
|
|
68
|
-
className: "prose prose-sm dark:prose-invert max-w-none",
|
|
69
|
-
children: rendered
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Render a markdown table
|
|
74
|
-
*/
|
|
75
|
-
function renderTable(lines, keyPrefix) {
|
|
76
|
-
if (lines.length < 2) return null;
|
|
77
|
-
const parseRow = (row) => row.split("|").slice(1, -1).map((cell) => cell.trim());
|
|
78
|
-
const headers = parseRow(lines[0] ?? "");
|
|
79
|
-
const dataRows = lines.slice(2).map(parseRow);
|
|
80
|
-
return /* @__PURE__ */ jsx("div", {
|
|
81
|
-
className: "my-4 overflow-x-auto",
|
|
82
|
-
children: /* @__PURE__ */ jsxs("table", {
|
|
83
|
-
className: "border-border min-w-full border-collapse border text-sm",
|
|
84
|
-
children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsx("tr", {
|
|
85
|
-
className: "bg-muted/50",
|
|
86
|
-
children: headers.map((header, idx) => /* @__PURE__ */ jsx("th", {
|
|
87
|
-
className: "border-border border px-3 py-2 text-left font-semibold",
|
|
88
|
-
children: header
|
|
89
|
-
}, idx))
|
|
90
|
-
}) }), /* @__PURE__ */ jsx("tbody", { children: dataRows.map((row, rowIdx) => /* @__PURE__ */ jsx("tr", {
|
|
91
|
-
className: "hover:bg-muted/30",
|
|
92
|
-
children: row.map((cell, cellIdx) => /* @__PURE__ */ jsx("td", {
|
|
93
|
-
className: "border-border border px-3 py-2",
|
|
94
|
-
children: formatInlineMarkdown(cell)
|
|
95
|
-
}, cellIdx))
|
|
96
|
-
}, rowIdx)) })]
|
|
97
|
-
})
|
|
98
|
-
}, `table-${keyPrefix}`);
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Format inline markdown (bold, code)
|
|
102
|
-
*/
|
|
103
|
-
function formatInlineMarkdown(text) {
|
|
104
|
-
return text.split(/(\*\*[^*]+\*\*)/g).map((part, i) => {
|
|
105
|
-
if (part.startsWith("**") && part.endsWith("**")) return /* @__PURE__ */ jsx("strong", { children: part.slice(2, -2) }, i);
|
|
106
|
-
if (part.includes("`")) return part.split(/(`[^`]+`)/g).map((cp, j) => {
|
|
107
|
-
if (cp.startsWith("`") && cp.endsWith("`")) return /* @__PURE__ */ jsx("code", {
|
|
108
|
-
className: "rounded bg-violet-500/10 px-1.5 py-0.5 font-mono text-sm",
|
|
109
|
-
children: cp.slice(1, -1)
|
|
110
|
-
}, `${i}-${j}`);
|
|
111
|
-
return cp;
|
|
112
|
-
});
|
|
113
|
-
return part;
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
//#endregion
|
|
118
|
-
export { MarkdownRenderer };
|
|
119
|
-
//# sourceMappingURL=MarkdownView.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownView.js","names":[],"sources":["../../../../example-shared-ui/src/MarkdownView.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useState } from 'react';\nimport {\n Button,\n ErrorState,\n LoaderBlock,\n} from '@contractspec/lib.design-system';\nimport { Card } from '@contractspec/lib.ui-kit-web/ui/card';\nimport { Badge } from '@contractspec/lib.ui-kit-web/ui/badge';\nimport type {\n PresentationTarget,\n TransformEngine,\n} from '@contractspec/lib.contracts';\nimport type { TemplateId } from './lib/types';\n\nimport { useTemplateRuntime } from './lib/runtime-context';\n\nexport interface MarkdownViewProps {\n /** Optional override, otherwise comes from context */\n templateId?: TemplateId;\n presentationId?: string;\n className?: string;\n}\n\ninterface MarkdownOutput {\n mimeType: string;\n body: string;\n}\n\n/**\n * MarkdownView renders template presentations as markdown using TransformEngine.\n * It allows switching between available presentations for the template.\n */\nexport function MarkdownView({\n templateId: propTemplateId,\n presentationId,\n className,\n}: MarkdownViewProps) {\n const {\n engine,\n template,\n templateId: contextTemplateId,\n resolvePresentation,\n fetchData,\n } = useTemplateRuntime();\n\n // Prefer prop if given, else context\n const templateId = propTemplateId ?? contextTemplateId;\n const presentations = (template?.presentations as string[]) ?? [];\n\n const [selectedPresentation, setSelectedPresentation] = useState<string>('');\n const [markdownContent, setMarkdownContent] = useState<string>('');\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n // Initialize selected presentation\n useEffect(() => {\n if (presentationId && presentations.includes(presentationId)) {\n setSelectedPresentation(presentationId);\n } else if (presentations.length > 0 && !selectedPresentation) {\n setSelectedPresentation(presentations[0] ?? '');\n }\n }, [presentationId, presentations, selectedPresentation]);\n\n // Render markdown when presentation changes\n const renderMarkdown = useCallback(async () => {\n if (!selectedPresentation || !engine) return;\n\n setLoading(true);\n setError(null);\n\n try {\n if (!resolvePresentation) {\n throw new Error('resolvePresentation not available in runtime context');\n }\n\n const descriptor = resolvePresentation(selectedPresentation);\n\n if (!descriptor) {\n throw new Error(\n `Presentation descriptor not found: ${selectedPresentation}`\n );\n }\n\n // Fetch data for this presentation using the data fetcher from context\n const dataResult = await fetchData(selectedPresentation);\n\n // Render to markdown using the engine with data context\n const result = await engine.render<MarkdownOutput>(\n 'markdown' as PresentationTarget,\n descriptor as Parameters<TransformEngine['render']>[1],\n { data: dataResult.data } // Pass data in context for schema-driven rendering\n );\n\n setMarkdownContent(result.body);\n } catch (err) {\n setError(\n err instanceof Error ? err : new Error('Failed to render markdown')\n );\n } finally {\n setLoading(false);\n }\n }, [\n selectedPresentation,\n templateId,\n engine,\n resolvePresentation,\n fetchData,\n ]);\n\n useEffect(() => {\n renderMarkdown();\n }, [renderMarkdown]);\n\n if (!presentations.length) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center\">\n <p className=\"text-muted-foreground\">\n No presentations available for this template.\n </p>\n </div>\n </Card>\n );\n }\n\n // Copy markdown to clipboard\n const handleCopy = useCallback(() => {\n if (markdownContent) {\n navigator.clipboard.writeText(markdownContent);\n }\n }, [markdownContent]);\n\n return (\n <div className={className}>\n {/* Presentation Selector */}\n <div className=\"mb-4 flex flex-wrap items-center gap-2\">\n <span className=\"text-muted-foreground text-sm font-medium\">\n Presentation:\n </span>\n {presentations.map((name) => (\n <Button\n key={name}\n variant={selectedPresentation === name ? 'default' : 'outline'}\n size=\"sm\"\n onPress={() => setSelectedPresentation(name)}\n >\n {formatPresentationName(name)}\n </Button>\n ))}\n <div className=\"ml-auto flex items-center gap-2\">\n <Badge variant=\"secondary\">LLM-friendly</Badge>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onPress={handleCopy}\n disabled={!markdownContent || loading}\n >\n Copy\n </Button>\n </div>\n </div>\n\n {/* Content Area */}\n <Card className=\"overflow-hidden\">\n {loading && <LoaderBlock label=\"Rendering markdown...\" />}\n\n {error && (\n <ErrorState\n title=\"Render failed\"\n description={error.message}\n onRetry={renderMarkdown}\n retryLabel=\"Retry\"\n />\n )}\n\n {!loading && !error && markdownContent && (\n <div className=\"p-6\">\n <MarkdownRenderer content={markdownContent} />\n </div>\n )}\n\n {!loading && !error && !markdownContent && (\n <div className=\"p-6 text-center\">\n <p className=\"text-muted-foreground\">\n Select a presentation to view its markdown output.\n </p>\n </div>\n )}\n </Card>\n </div>\n );\n}\n\n/**\n * Simple markdown renderer using pre-formatted display\n * For production, consider using react-markdown or similar\n */\nexport function MarkdownRenderer({ content }: { content: string }) {\n const lines = content.split('\\n');\n const rendered: React.ReactNode[] = [];\n let i = 0;\n\n while (i < lines.length) {\n const line = lines[i] ?? '';\n\n // Check for table (starts with | and next line is separator)\n if (line.startsWith('|') && lines[i + 1]?.match(/^\\|[\\s-|]+\\|$/)) {\n const tableLines: string[] = [line];\n i++;\n // Collect all table lines\n while (i < lines.length && (lines[i]?.startsWith('|') ?? false)) {\n tableLines.push(lines[i] ?? '');\n i++;\n }\n rendered.push(renderTable(tableLines, rendered.length));\n continue;\n }\n\n // Headers\n if (line.startsWith('# ')) {\n rendered.push(\n <h1 key={i} className=\"mb-4 text-2xl font-bold\">\n {line.slice(2)}\n </h1>\n );\n } else if (line.startsWith('## ')) {\n rendered.push(\n <h2 key={i} className=\"mt-6 mb-3 text-xl font-semibold\">\n {line.slice(3)}\n </h2>\n );\n } else if (line.startsWith('### ')) {\n rendered.push(\n <h3 key={i} className=\"mt-4 mb-2 text-lg font-medium\">\n {line.slice(4)}\n </h3>\n );\n }\n // Blockquotes\n else if (line.startsWith('> ')) {\n rendered.push(\n <blockquote\n key={i}\n className=\"text-muted-foreground my-2 border-l-4 border-violet-500/50 pl-4 italic\"\n >\n {line.slice(2)}\n </blockquote>\n );\n }\n // List items\n else if (line.startsWith('- ')) {\n rendered.push(\n <li key={i} className=\"ml-4 list-disc\">\n {formatInlineMarkdown(line.slice(2))}\n </li>\n );\n }\n // Bold text (lines starting with **)\n else if (line.startsWith('**') && line.includes(':**')) {\n const [label, ...rest] = line.split(':**');\n rendered.push(\n <p key={i} className=\"my-1\">\n <strong>{label?.slice(2)}:</strong>\n {rest.join(':**')}\n </p>\n );\n }\n // Italic text (lines starting with _)\n else if (line.startsWith('_') && line.endsWith('_')) {\n rendered.push(\n <p key={i} className=\"text-muted-foreground my-1 italic\">\n {line.slice(1, -1)}\n </p>\n );\n }\n // Empty lines\n else if (!line.trim()) {\n rendered.push(<div key={i} className=\"h-2\" />);\n }\n // Regular text\n else {\n rendered.push(\n <p key={i} className=\"my-1\">\n {formatInlineMarkdown(line)}\n </p>\n );\n }\n\n i++;\n }\n\n return (\n <div className=\"prose prose-sm dark:prose-invert max-w-none\">\n {rendered}\n </div>\n );\n}\n\n/**\n * Render a markdown table\n */\nfunction renderTable(lines: string[], keyPrefix: number): React.ReactNode {\n if (lines.length < 2) return null;\n\n const parseRow = (row: string) =>\n row\n .split('|')\n .slice(1, -1)\n .map((cell) => cell.trim());\n\n const headers = parseRow(lines[0] ?? '');\n // Skip separator line (index 1)\n const dataRows = lines.slice(2).map(parseRow);\n\n return (\n <div key={`table-${keyPrefix}`} className=\"my-4 overflow-x-auto\">\n <table className=\"border-border min-w-full border-collapse border text-sm\">\n <thead>\n <tr className=\"bg-muted/50\">\n {headers.map((header, idx) => (\n <th\n key={idx}\n className=\"border-border border px-3 py-2 text-left font-semibold\"\n >\n {header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {dataRows.map((row, rowIdx) => (\n <tr key={rowIdx} className=\"hover:bg-muted/30\">\n {row.map((cell, cellIdx) => (\n <td key={cellIdx} className=\"border-border border px-3 py-2\">\n {formatInlineMarkdown(cell)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\n/**\n * Format inline markdown (bold, code)\n */\nfunction formatInlineMarkdown(text: string): React.ReactNode {\n // Handle **bold** text\n const parts = text.split(/(\\*\\*[^*]+\\*\\*)/g);\n return parts.map((part, i) => {\n if (part.startsWith('**') && part.endsWith('**')) {\n return <strong key={i}>{part.slice(2, -2)}</strong>;\n }\n // Handle `code` text\n if (part.includes('`')) {\n const codeParts = part.split(/(`[^`]+`)/g);\n return codeParts.map((cp, j) => {\n if (cp.startsWith('`') && cp.endsWith('`')) {\n return (\n <code\n key={`${i}-${j}`}\n className=\"rounded bg-violet-500/10 px-1.5 py-0.5 font-mono text-sm\"\n >\n {cp.slice(1, -1)}\n </code>\n );\n }\n return cp;\n });\n }\n return part;\n });\n}\n\n/**\n * Format presentation name for display\n */\nfunction formatPresentationName(name: string): string {\n // Extract the last part after the last dot\n const parts = name.split('.');\n const lastPart = parts[parts.length - 1] ?? name;\n // Convert kebab-case to Title Case\n return lastPart\n .split('-')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n"],"mappings":";;;;;;;;;;;;;AAuMA,SAAgB,iBAAiB,EAAE,WAAgC;CACjE,MAAM,QAAQ,QAAQ,MAAM,KAAK;CACjC,MAAM,WAA8B,EAAE;CACtC,IAAI,IAAI;AAER,QAAO,IAAI,MAAM,QAAQ;EACvB,MAAM,OAAO,MAAM,MAAM;AAGzB,MAAI,KAAK,WAAW,IAAI,IAAI,MAAM,IAAI,IAAI,MAAM,gBAAgB,EAAE;GAChE,MAAM,aAAuB,CAAC,KAAK;AACnC;AAEA,UAAO,IAAI,MAAM,WAAW,MAAM,IAAI,WAAW,IAAI,IAAI,QAAQ;AAC/D,eAAW,KAAK,MAAM,MAAM,GAAG;AAC/B;;AAEF,YAAS,KAAK,YAAY,YAAY,SAAS,OAAO,CAAC;AACvD;;AAIF,MAAI,KAAK,WAAW,KAAK,CACvB,UAAS,KACP,oBAAC;GAAW,WAAU;aACnB,KAAK,MAAM,EAAE;KADP,EAEJ,CACN;WACQ,KAAK,WAAW,MAAM,CAC/B,UAAS,KACP,oBAAC;GAAW,WAAU;aACnB,KAAK,MAAM,EAAE;KADP,EAEJ,CACN;WACQ,KAAK,WAAW,OAAO,CAChC,UAAS,KACP,oBAAC;GAAW,WAAU;aACnB,KAAK,MAAM,EAAE;KADP,EAEJ,CACN;WAGM,KAAK,WAAW,KAAK,CAC5B,UAAS,KACP,oBAAC;GAEC,WAAU;aAET,KAAK,MAAM,EAAE;KAHT,EAIM,CACd;WAGM,KAAK,WAAW,KAAK,CAC5B,UAAS,KACP,oBAAC;GAAW,WAAU;aACnB,qBAAqB,KAAK,MAAM,EAAE,CAAC;KAD7B,EAEJ,CACN;WAGM,KAAK,WAAW,KAAK,IAAI,KAAK,SAAS,MAAM,EAAE;GACtD,MAAM,CAAC,OAAO,GAAG,QAAQ,KAAK,MAAM,MAAM;AAC1C,YAAS,KACP,qBAAC;IAAU,WAAU;eACnB,qBAAC,uBAAQ,OAAO,MAAM,EAAE,EAAC,OAAU,EAClC,KAAK,KAAK,MAAM;MAFX,EAGJ,CACL;aAGM,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,IAAI,CACjD,UAAS,KACP,oBAAC;GAAU,WAAU;aAClB,KAAK,MAAM,GAAG,GAAG;KADZ,EAEJ,CACL;WAGM,CAAC,KAAK,MAAM,CACnB,UAAS,KAAK,oBAAC,SAAY,WAAU,SAAb,EAAqB,CAAC;MAI9C,UAAS,KACP,oBAAC;GAAU,WAAU;aAClB,qBAAqB,KAAK;KADrB,EAEJ,CACL;AAGH;;AAGF,QACE,oBAAC;EAAI,WAAU;YACZ;GACG;;;;;AAOV,SAAS,YAAY,OAAiB,WAAoC;AACxE,KAAI,MAAM,SAAS,EAAG,QAAO;CAE7B,MAAM,YAAY,QAChB,IACG,MAAM,IAAI,CACV,MAAM,GAAG,GAAG,CACZ,KAAK,SAAS,KAAK,MAAM,CAAC;CAE/B,MAAM,UAAU,SAAS,MAAM,MAAM,GAAG;CAExC,MAAM,WAAW,MAAM,MAAM,EAAE,CAAC,IAAI,SAAS;AAE7C,QACE,oBAAC;EAA+B,WAAU;YACxC,qBAAC;GAAM,WAAU;cACf,oBAAC,qBACC,oBAAC;IAAG,WAAU;cACX,QAAQ,KAAK,QAAQ,QACpB,oBAAC;KAEC,WAAU;eAET;OAHI,IAIF,CACL;KACC,GACC,EACR,oBAAC,qBACE,SAAS,KAAK,KAAK,WAClB,oBAAC;IAAgB,WAAU;cACxB,IAAI,KAAK,MAAM,YACd,oBAAC;KAAiB,WAAU;eACzB,qBAAqB,KAAK;OADpB,QAEJ,CACL;MALK,OAMJ,CACL,GACI;IACF;IAzBA,SAAS,YA0Bb;;;;;AAOV,SAAS,qBAAqB,MAA+B;AAG3D,QADc,KAAK,MAAM,mBAAmB,CAC/B,KAAK,MAAM,MAAM;AAC5B,MAAI,KAAK,WAAW,KAAK,IAAI,KAAK,SAAS,KAAK,CAC9C,QAAO,oBAAC,sBAAgB,KAAK,MAAM,GAAG,GAAG,IAArB,EAA+B;AAGrD,MAAI,KAAK,SAAS,IAAI,CAEpB,QADkB,KAAK,MAAM,aAAa,CACzB,KAAK,IAAI,MAAM;AAC9B,OAAI,GAAG,WAAW,IAAI,IAAI,GAAG,SAAS,IAAI,CACxC,QACE,oBAAC;IAEC,WAAU;cAET,GAAG,MAAM,GAAG,GAAG;MAHX,GAAG,EAAE,GAAG,IAIR;AAGX,UAAO;IACP;AAEJ,SAAO;GACP"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
import { useContext, useMemo } from "react";
|
|
5
|
-
import { jsx } from "react/jsx-runtime";
|
|
6
|
-
|
|
7
|
-
//#region ../example-shared-ui/src/OverlayContextProvider.tsx
|
|
8
|
-
const OverlayContext = React.createContext(null);
|
|
9
|
-
|
|
10
|
-
//#endregion
|
|
11
|
-
//# sourceMappingURL=OverlayContextProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayContextProvider.js","names":[],"sources":["../../../../example-shared-ui/src/OverlayContextProvider.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport type { TemplateId } from './lib/types';\n\n/**\n * Overlay modification operation types (for OverlayContextProvider)\n */\nexport type OverlayModificationOp =\n | { op: 'hide' }\n | { op: 'relabel'; label: string }\n | { op: 'reorder'; position: number }\n | { op: 'restyle'; className?: string; variant?: string }\n | { op: 'set-default'; value: unknown };\n\n/**\n * Overlay spec for a field or component\n */\nexport interface OverlaySpec {\n id: string;\n target: string; // path to the field/component\n modifications: OverlayModificationOp[];\n conditions?: {\n role?: string[];\n device?: 'mobile' | 'desktop' | 'any';\n featureFlags?: string[];\n };\n}\n\n/**\n * Context value for overlay engine\n */\nexport interface OverlayContextValue {\n /** Current overlays */\n overlays: OverlaySpec[];\n /** Apply overlays to a component */\n applyOverlay: <T extends Record<string, unknown>>(\n path: string,\n target: T\n ) => T;\n /** Check if a field should be hidden */\n isHidden: (path: string) => boolean;\n /** Get relabeled text */\n getLabel: (path: string, defaultLabel: string) => string;\n /** Get position for reordering */\n getPosition: (path: string, defaultPosition: number) => number;\n /** Get style modifications */\n getStyle: (path: string) => { className?: string; variant?: string };\n /** Get default value */\n getDefault: <T>(path: string, defaultValue: T) => T;\n /** Current user role */\n role: string;\n /** Current device type */\n device: 'mobile' | 'desktop';\n}\n\nconst OverlayContext = React.createContext<OverlayContextValue | null>(null);\n\nexport interface OverlayContextProviderProps extends React.PropsWithChildren {\n templateId: TemplateId;\n role?: string;\n device?: 'mobile' | 'desktop';\n}\n\n/**\n * Provider for overlay engine context.\n * Loads template-specific overlays and provides helper functions.\n */\nexport function OverlayContextProvider({\n templateId,\n role = 'user',\n device = 'desktop',\n children,\n}: OverlayContextProviderProps) {\n // Load template-specific overlays\n const overlays = useMemo(\n () => getTemplateOverlays(templateId, role),\n [templateId, role]\n );\n\n // Filter overlays based on current context\n const activeOverlays = useMemo(() => {\n return overlays.filter((overlay) => {\n const conditions = overlay.conditions;\n if (!conditions) return true;\n\n if (conditions.role && !conditions.role.includes(role)) {\n return false;\n }\n\n if (\n conditions.device &&\n conditions.device !== 'any' &&\n conditions.device !== device\n ) {\n return false;\n }\n\n return true;\n });\n }, [overlays, role, device]);\n\n // Create overlay map for quick lookups\n const overlayMap = useMemo(() => {\n const map = new Map<string, OverlaySpec>();\n for (const overlay of activeOverlays) {\n map.set(overlay.target, overlay);\n }\n return map;\n }, [activeOverlays]);\n\n // Apply overlay to a target object\n const applyOverlay = useMemo(\n () =>\n <T extends Record<string, unknown>>(path: string, target: T): T => {\n const overlay = overlayMap.get(path);\n if (!overlay) return target;\n\n let result = { ...target };\n for (const mod of overlay.modifications) {\n switch (mod.op) {\n case 'hide':\n result = { ...result, hidden: true };\n break;\n case 'relabel':\n result = { ...result, label: mod.label };\n break;\n case 'reorder':\n result = { ...result, position: mod.position };\n break;\n case 'restyle':\n result = {\n ...result,\n className: mod.className,\n variant: mod.variant,\n };\n break;\n case 'set-default':\n result = { ...result, defaultValue: mod.value };\n break;\n }\n }\n return result;\n },\n [overlayMap]\n );\n\n // Check if field is hidden\n const isHidden = useMemo(\n () =>\n (path: string): boolean => {\n const overlay = overlayMap.get(path);\n return overlay?.modifications.some((m) => m.op === 'hide') ?? false;\n },\n [overlayMap]\n );\n\n // Get relabeled text\n const getLabel = useMemo(\n () =>\n (path: string, defaultLabel: string): string => {\n const overlay = overlayMap.get(path);\n const relabel = overlay?.modifications.find((m) => m.op === 'relabel');\n return relabel && relabel.op === 'relabel'\n ? relabel.label\n : defaultLabel;\n },\n [overlayMap]\n );\n\n // Get position for reordering\n const getPosition = useMemo(\n () =>\n (path: string, defaultPosition: number): number => {\n const overlay = overlayMap.get(path);\n const reorder = overlay?.modifications.find((m) => m.op === 'reorder');\n return reorder && reorder.op === 'reorder'\n ? reorder.position\n : defaultPosition;\n },\n [overlayMap]\n );\n\n // Get style modifications\n const getStyle = useMemo(\n () =>\n (path: string): { className?: string; variant?: string } => {\n const overlay = overlayMap.get(path);\n const restyle = overlay?.modifications.find((m) => m.op === 'restyle');\n if (restyle && restyle.op === 'restyle') {\n return {\n className: restyle.className,\n variant: restyle.variant,\n };\n }\n return {};\n },\n [overlayMap]\n );\n\n // Get default value\n const getDefault = useMemo(\n () =>\n <T,>(path: string, defaultValue: T): T => {\n const overlay = overlayMap.get(path);\n const setDefault = overlay?.modifications.find(\n (m) => m.op === 'set-default'\n );\n return setDefault && setDefault.op === 'set-default'\n ? (setDefault.value as T)\n : defaultValue;\n },\n [overlayMap]\n );\n\n const value = useMemo<OverlayContextValue>(\n () => ({\n overlays: activeOverlays,\n applyOverlay,\n isHidden,\n getLabel,\n getPosition,\n getStyle,\n getDefault,\n role,\n device,\n }),\n [\n activeOverlays,\n applyOverlay,\n isHidden,\n getLabel,\n getPosition,\n getStyle,\n getDefault,\n role,\n device,\n ]\n );\n\n return (\n <OverlayContext.Provider value={value}>{children}</OverlayContext.Provider>\n );\n}\n\n/**\n * Hook to access overlay context\n */\nexport function useOverlayContext(): OverlayContextValue {\n const context = useContext(OverlayContext);\n if (!context) {\n throw new Error(\n 'useOverlayContext must be used within an OverlayContextProvider'\n );\n }\n return context;\n}\n\n/**\n * Hook to check if within overlay context\n */\nexport function useIsInOverlayContext(): boolean {\n return useContext(OverlayContext) !== null;\n}\n\n/**\n * Get template-specific overlays\n */\nfunction getTemplateOverlays(\n templateId: TemplateId,\n _role: string\n): OverlaySpec[] {\n // Demo overlays for each template\n const templateOverlays: Record<string, OverlaySpec[]> = {\n 'crm-pipeline': [\n {\n id: 'crm-hide-internal-fields',\n target: 'deal.internalNotes',\n modifications: [{ op: 'hide' }],\n conditions: { role: ['viewer', 'user'] },\n },\n {\n id: 'crm-relabel-value',\n target: 'deal.value',\n modifications: [{ op: 'relabel', label: 'Deal Amount' }],\n },\n ],\n 'saas-boilerplate': [\n {\n id: 'saas-hide-billing',\n target: 'settings.billing',\n modifications: [{ op: 'hide' }],\n conditions: { role: ['viewer'] },\n },\n {\n id: 'saas-restyle-plan',\n target: 'settings.plan',\n modifications: [{ op: 'restyle', variant: 'premium' }],\n conditions: { role: ['admin'] },\n },\n ],\n 'agent-console': [\n {\n id: 'agent-hide-cost',\n target: 'run.cost',\n modifications: [{ op: 'hide' }],\n conditions: { role: ['viewer'] },\n },\n {\n id: 'agent-relabel-tokens',\n target: 'run.tokens',\n modifications: [{ op: 'relabel', label: 'Token Usage' }],\n },\n ],\n 'todos-app': [\n {\n id: 'todos-hide-assignee',\n target: 'task.assignee',\n modifications: [{ op: 'hide' }],\n conditions: { device: 'mobile' },\n },\n ],\n 'messaging-app': [\n {\n id: 'messaging-reorder-timestamp',\n target: 'message.timestamp',\n modifications: [{ op: 'reorder', position: 0 }],\n },\n ],\n 'recipe-app-i18n': [\n {\n id: 'recipe-relabel-servings',\n target: 'recipe.servings',\n modifications: [{ op: 'relabel', label: 'Portions' }],\n },\n ],\n };\n\n return templateOverlays[templateId] ?? [];\n}\n"],"mappings":";;;;;;;AAyDA,MAAM,iBAAiB,MAAM,cAA0C,KAAK"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import "./hooks/useBehaviorTracking.js";
|
|
4
|
-
import { useCallback, useMemo, useState } from "react";
|
|
5
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
-
import { Card } from "@contractspec/lib.ui-kit-web/ui/card";
|
|
7
|
-
import { Badge } from "@contractspec/lib.ui-kit-web/ui/badge";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import "@tanstack/react-query";
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import "./lib/runtime-context.js";
|
|
2
|
-
import "./LocalDataIndicator.js";
|
|
3
|
-
import "./SaveToStudioButton.js";
|
|
4
|
-
import "./TemplateShell.js";
|
|
5
|
-
import { MarkdownRenderer } from "./MarkdownView.js";
|
|
6
|
-
import "./SpecEditorPanel.js";
|
|
7
|
-
import "./EvolutionDashboard.js";
|
|
8
|
-
import "./EvolutionSidebar.js";
|
|
9
|
-
import "./OverlayContextProvider.js";
|
|
10
|
-
import "./PersonalizationInsights.js";
|
|
11
|
-
import "./hooks/index.js";
|
|
12
|
-
import { TemplateComponentRegistry } from "./lib/component-registry.js";
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { useEffect, useState } from "react";
|
|
4
|
-
|
|
5
|
-
//#region ../example-shared-ui/src/lib/component-registry.tsx
|
|
6
|
-
var TemplateComponentRegistry = class {
|
|
7
|
-
components = /* @__PURE__ */ new Map();
|
|
8
|
-
listeners = /* @__PURE__ */ new Set();
|
|
9
|
-
register(templateId, registration) {
|
|
10
|
-
this.components.set(templateId, registration);
|
|
11
|
-
this.listeners.forEach((l) => l(templateId));
|
|
12
|
-
}
|
|
13
|
-
get(templateId) {
|
|
14
|
-
return this.components.get(templateId);
|
|
15
|
-
}
|
|
16
|
-
subscribe(listener) {
|
|
17
|
-
this.listeners.add(listener);
|
|
18
|
-
return () => {
|
|
19
|
-
this.listeners.delete(listener);
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
const templateComponentRegistry = new TemplateComponentRegistry();
|
|
24
|
-
|
|
25
|
-
//#endregion
|
|
26
|
-
export { TemplateComponentRegistry };
|
|
27
|
-
//# sourceMappingURL=component-registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"component-registry.js","names":[],"sources":["../../../../../example-shared-ui/src/lib/component-registry.tsx"],"sourcesContent":["'use client';\n\nimport React, { useState, useEffect } from 'react';\nimport type { TemplateId } from './types';\n\nexport interface TemplateComponentRegistration {\n list: React.ComponentType<any>; // eslint-disable-line @typescript-eslint/no-explicit-any\n detail: React.ComponentType<any>; // eslint-disable-line @typescript-eslint/no-explicit-any\n form?: React.ComponentType<any>; // eslint-disable-line @typescript-eslint/no-explicit-any\n}\n\nexport class TemplateComponentRegistry {\n private readonly components = new Map<\n TemplateId,\n TemplateComponentRegistration\n >();\n private readonly listeners = new Set<(templateId: TemplateId) => void>();\n\n register(\n templateId: TemplateId,\n registration: TemplateComponentRegistration\n ) {\n this.components.set(templateId, registration);\n this.listeners.forEach((l) => l(templateId));\n }\n\n get(templateId: TemplateId) {\n return this.components.get(templateId);\n }\n\n subscribe(listener: (templateId: TemplateId) => void) {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n}\n\nexport const templateComponentRegistry = new TemplateComponentRegistry();\n\nexport function registerTemplateComponents(\n templateId: TemplateId,\n components: TemplateComponentRegistration\n) {\n templateComponentRegistry.register(templateId, components);\n}\n\nexport function useTemplateComponents(\n templateId: TemplateId\n): TemplateComponentRegistration | undefined {\n const [components, setComponents] = useState(() =>\n templateComponentRegistry.get(templateId)\n );\n\n useEffect(() => {\n return templateComponentRegistry.subscribe((updatedId) => {\n if (updatedId === templateId) {\n setComponents(templateComponentRegistry.get(templateId));\n }\n });\n }, [templateId]);\n\n return components;\n}\n"],"mappings":";;;;;AAWA,IAAa,4BAAb,MAAuC;CACrC,AAAiB,6BAAa,IAAI,KAG/B;CACH,AAAiB,4BAAY,IAAI,KAAuC;CAExE,SACE,YACA,cACA;AACA,OAAK,WAAW,IAAI,YAAY,aAAa;AAC7C,OAAK,UAAU,SAAS,MAAM,EAAE,WAAW,CAAC;;CAG9C,IAAI,YAAwB;AAC1B,SAAO,KAAK,WAAW,IAAI,WAAW;;CAGxC,UAAU,UAA4C;AACpD,OAAK,UAAU,IAAI,SAAS;AAC5B,eAAa;AACX,QAAK,UAAU,OAAO,SAAS;;;;AAKrC,MAAa,4BAA4B,IAAI,2BAA2B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-context.js","names":[],"sources":["../../../../../example-shared-ui/src/lib/runtime-context.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, useContext } from 'react';\nimport type { ApolloClient } from '@apollo/client';\nimport type { TransformEngine } from '@contractspec/lib.contracts';\nimport type {\n TemplateDefinition,\n TemplateId,\n TemplateInstaller,\n} from './types';\n\n// Generic interface for handlers to avoid circular dependencies\n// Real types are defined in @contractspec/module.examples or specific example packages\nexport type GenericTemplateHandlers = unknown;\n\nexport interface TemplateRuntimeContextValue<\n THandlers = GenericTemplateHandlers,\n> {\n template: TemplateDefinition;\n runtime: unknown; // LocalRuntimeServices\n installer: TemplateInstaller;\n client: ApolloClient;\n components?: unknown; // TemplateComponentRegistration\n /** @deprecated use template.id */\n templateId: TemplateId;\n projectId: string;\n engine: TransformEngine;\n fetchData: (\n presentationName: string\n ) => Promise<{ data: unknown; metadata?: unknown }>;\n handlers: THandlers;\n resolvePresentation?: (presentationName: string) => unknown;\n}\n\nexport const TemplateRuntimeContext =\n createContext<TemplateRuntimeContextValue | null>(null);\n\nexport function useTemplateRuntime<\n THandlers = GenericTemplateHandlers,\n>(): TemplateRuntimeContextValue<THandlers> {\n const context = useContext(TemplateRuntimeContext);\n if (!context) {\n throw new Error(\n 'useTemplateRuntime must be used within a TemplateRuntimeProvider'\n );\n }\n return context as TemplateRuntimeContextValue<THandlers>;\n}\n\nexport interface TemplateRuntimeProviderProps {\n templateId: TemplateId;\n projectId?: string;\n lazy?: boolean;\n}\n"],"mappings":";;;;;AAkCA,MAAa,yBACX,cAAkD,KAAK"}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
|
|
3
|
-
//#region src/hooks/useListUrlState.ts
|
|
4
|
-
function useListUrlState({ defaults, paramKeys = {
|
|
5
|
-
q: "q",
|
|
6
|
-
page: "page",
|
|
7
|
-
limit: "limit",
|
|
8
|
-
sort: "sort",
|
|
9
|
-
filters: "f"
|
|
10
|
-
}, replaceState = true }) {
|
|
11
|
-
const read = React.useCallback(() => {
|
|
12
|
-
if (typeof window === "undefined") return defaults;
|
|
13
|
-
const qs = new URL(window.location.href).searchParams;
|
|
14
|
-
const parseNum = (v, d) => {
|
|
15
|
-
const n = v ? Number(v) : NaN;
|
|
16
|
-
return Number.isFinite(n) && n > 0 ? n : d;
|
|
17
|
-
};
|
|
18
|
-
const filtersRaw = qs.get(paramKeys.filters);
|
|
19
|
-
let filters = defaults.filters;
|
|
20
|
-
if (filtersRaw) try {
|
|
21
|
-
filters = JSON.parse(filtersRaw);
|
|
22
|
-
} catch {
|
|
23
|
-
filters = defaults.filters;
|
|
24
|
-
}
|
|
25
|
-
return {
|
|
26
|
-
q: qs.get(paramKeys.q) ?? defaults.q,
|
|
27
|
-
page: parseNum(qs.get(paramKeys.page), defaults.page),
|
|
28
|
-
limit: parseNum(qs.get(paramKeys.limit), defaults.limit),
|
|
29
|
-
sort: qs.get(paramKeys.sort),
|
|
30
|
-
filters
|
|
31
|
-
};
|
|
32
|
-
}, [defaults, paramKeys]);
|
|
33
|
-
const [state, setState] = React.useState(read);
|
|
34
|
-
const write = React.useCallback((next) => {
|
|
35
|
-
if (typeof window === "undefined") return;
|
|
36
|
-
const url = new URL(window.location.href);
|
|
37
|
-
const qs = url.searchParams;
|
|
38
|
-
const merged = {
|
|
39
|
-
...state,
|
|
40
|
-
...next
|
|
41
|
-
};
|
|
42
|
-
const setOrDel = (key, value) => {
|
|
43
|
-
if (value == null || value === "" || value === "null") qs.delete(key);
|
|
44
|
-
else qs.set(key, value);
|
|
45
|
-
};
|
|
46
|
-
setOrDel(paramKeys.q, merged.q || null);
|
|
47
|
-
setOrDel(paramKeys.page, String(merged.page));
|
|
48
|
-
setOrDel(paramKeys.limit, String(merged.limit));
|
|
49
|
-
setOrDel(paramKeys.sort, merged.sort ?? null);
|
|
50
|
-
try {
|
|
51
|
-
const json = JSON.stringify(merged.filters ?? {});
|
|
52
|
-
setOrDel(paramKeys.filters, json === "{}" ? null : json);
|
|
53
|
-
} catch {}
|
|
54
|
-
const newUrl = `${url.pathname}?${qs.toString()}${url.hash}`;
|
|
55
|
-
if (replaceState) window.history.replaceState({}, "", newUrl);
|
|
56
|
-
else window.history.pushState({}, "", newUrl);
|
|
57
|
-
setState(merged);
|
|
58
|
-
}, [
|
|
59
|
-
state,
|
|
60
|
-
paramKeys,
|
|
61
|
-
replaceState
|
|
62
|
-
]);
|
|
63
|
-
const setFilter = React.useCallback((key, value) => {
|
|
64
|
-
write({ filters: {
|
|
65
|
-
...state.filters,
|
|
66
|
-
[key]: value
|
|
67
|
-
} });
|
|
68
|
-
}, [state.filters, write]);
|
|
69
|
-
const clearFilters = React.useCallback(() => {
|
|
70
|
-
write({
|
|
71
|
-
filters: {},
|
|
72
|
-
page: 1
|
|
73
|
-
});
|
|
74
|
-
}, [write]);
|
|
75
|
-
React.useEffect(() => {
|
|
76
|
-
const onPop = () => setState(read());
|
|
77
|
-
window.addEventListener("popstate", onPop);
|
|
78
|
-
return () => window.removeEventListener("popstate", onPop);
|
|
79
|
-
}, [read]);
|
|
80
|
-
return {
|
|
81
|
-
state,
|
|
82
|
-
setState: write,
|
|
83
|
-
setFilter,
|
|
84
|
-
clearFilters
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
//#endregion
|
|
89
|
-
export { useListUrlState };
|
|
90
|
-
//# sourceMappingURL=useListUrlState.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useListUrlState.js","names":[],"sources":["../../src/hooks/useListUrlState.ts"],"sourcesContent":["import * as React from 'react';\n\nexport interface ListUrlState<\n TFilters extends Record<string, unknown> = Record<string, unknown>,\n> {\n q: string;\n page: number;\n limit: number;\n sort?: string | null;\n filters: TFilters;\n}\n\nexport function useListUrlState<\n TFilters extends Record<string, unknown> = Record<string, unknown>,\n>({\n defaults,\n paramKeys = {\n q: 'q',\n page: 'page',\n limit: 'limit',\n sort: 'sort',\n filters: 'f',\n },\n replaceState = true,\n}: {\n defaults: ListUrlState<TFilters>;\n paramKeys?: {\n q: string;\n page: string;\n limit: string;\n sort: string;\n filters: string;\n };\n replaceState?: boolean;\n}) {\n const read = React.useCallback((): ListUrlState<TFilters> => {\n if (typeof window === 'undefined') return defaults;\n const url = new URL(window.location.href);\n const qs = url.searchParams;\n const parseNum = (v: string | null, d: number) => {\n const n = v ? Number(v) : NaN;\n return Number.isFinite(n) && n > 0 ? n : d;\n };\n const filtersRaw = qs.get(paramKeys.filters);\n let filters: TFilters = defaults.filters;\n if (filtersRaw) {\n try {\n filters = JSON.parse(filtersRaw) as TFilters;\n } catch {\n filters = defaults.filters;\n }\n }\n return {\n q: qs.get(paramKeys.q) ?? defaults.q,\n page: parseNum(qs.get(paramKeys.page), defaults.page),\n limit: parseNum(qs.get(paramKeys.limit), defaults.limit),\n sort: qs.get(paramKeys.sort),\n filters,\n };\n }, [defaults, paramKeys]);\n\n const [state, setState] = React.useState<ListUrlState<TFilters>>(read);\n\n const write = React.useCallback(\n (next: Partial<ListUrlState<TFilters>>) => {\n if (typeof window === 'undefined') return;\n const url = new URL(window.location.href);\n const qs = url.searchParams;\n const merged: ListUrlState<TFilters> = {\n ...state,\n ...next,\n } as ListUrlState<TFilters>;\n\n const setOrDel = (key: string, value: string | null | undefined) => {\n if (value == null || value === '' || value === 'null') qs.delete(key);\n else qs.set(key, value);\n };\n\n setOrDel(paramKeys.q, merged.q || null);\n setOrDel(paramKeys.page, String(merged.page));\n setOrDel(paramKeys.limit, String(merged.limit));\n setOrDel(paramKeys.sort, merged.sort ?? null);\n try {\n const json = JSON.stringify(merged.filters ?? {});\n setOrDel(paramKeys.filters, json === '{}' ? null : json);\n } catch {\n // ignore\n }\n\n const newUrl = `${url.pathname}?${qs.toString()}${url.hash}`;\n if (replaceState) window.history.replaceState({}, '', newUrl);\n else window.history.pushState({}, '', newUrl);\n setState(merged);\n },\n [state, paramKeys, replaceState]\n );\n\n const setFilter = React.useCallback(\n (\n key: keyof TFilters,\n value: TFilters[keyof TFilters] | undefined | null\n ) => {\n write({\n filters: { ...state.filters, [key]: value } as TFilters,\n });\n },\n [state.filters, write]\n );\n\n const clearFilters = React.useCallback(() => {\n write({ filters: {} as TFilters, page: 1 });\n }, [write]);\n\n React.useEffect(() => {\n const onPop = () => setState(read());\n window.addEventListener('popstate', onPop);\n return () => window.removeEventListener('popstate', onPop);\n }, [read]);\n\n return { state, setState: write, setFilter, clearFilters } as const;\n}\n"],"mappings":";;;AAYA,SAAgB,gBAEd,EACA,UACA,YAAY;CACV,GAAG;CACH,MAAM;CACN,OAAO;CACP,MAAM;CACN,SAAS;CACV,EACD,eAAe,QAWd;CACD,MAAM,OAAO,MAAM,kBAA0C;AAC3D,MAAI,OAAO,WAAW,YAAa,QAAO;EAE1C,MAAM,KADM,IAAI,IAAI,OAAO,SAAS,KAAK,CAC1B;EACf,MAAM,YAAY,GAAkB,MAAc;GAChD,MAAM,IAAI,IAAI,OAAO,EAAE,GAAG;AAC1B,UAAO,OAAO,SAAS,EAAE,IAAI,IAAI,IAAI,IAAI;;EAE3C,MAAM,aAAa,GAAG,IAAI,UAAU,QAAQ;EAC5C,IAAI,UAAoB,SAAS;AACjC,MAAI,WACF,KAAI;AACF,aAAU,KAAK,MAAM,WAAW;UAC1B;AACN,aAAU,SAAS;;AAGvB,SAAO;GACL,GAAG,GAAG,IAAI,UAAU,EAAE,IAAI,SAAS;GACnC,MAAM,SAAS,GAAG,IAAI,UAAU,KAAK,EAAE,SAAS,KAAK;GACrD,OAAO,SAAS,GAAG,IAAI,UAAU,MAAM,EAAE,SAAS,MAAM;GACxD,MAAM,GAAG,IAAI,UAAU,KAAK;GAC5B;GACD;IACA,CAAC,UAAU,UAAU,CAAC;CAEzB,MAAM,CAAC,OAAO,YAAY,MAAM,SAAiC,KAAK;CAEtE,MAAM,QAAQ,MAAM,aACjB,SAA0C;AACzC,MAAI,OAAO,WAAW,YAAa;EACnC,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,KAAK;EACzC,MAAM,KAAK,IAAI;EACf,MAAM,SAAiC;GACrC,GAAG;GACH,GAAG;GACJ;EAED,MAAM,YAAY,KAAa,UAAqC;AAClE,OAAI,SAAS,QAAQ,UAAU,MAAM,UAAU,OAAQ,IAAG,OAAO,IAAI;OAChE,IAAG,IAAI,KAAK,MAAM;;AAGzB,WAAS,UAAU,GAAG,OAAO,KAAK,KAAK;AACvC,WAAS,UAAU,MAAM,OAAO,OAAO,KAAK,CAAC;AAC7C,WAAS,UAAU,OAAO,OAAO,OAAO,MAAM,CAAC;AAC/C,WAAS,UAAU,MAAM,OAAO,QAAQ,KAAK;AAC7C,MAAI;GACF,MAAM,OAAO,KAAK,UAAU,OAAO,WAAW,EAAE,CAAC;AACjD,YAAS,UAAU,SAAS,SAAS,OAAO,OAAO,KAAK;UAClD;EAIR,MAAM,SAAS,GAAG,IAAI,SAAS,GAAG,GAAG,UAAU,GAAG,IAAI;AACtD,MAAI,aAAc,QAAO,QAAQ,aAAa,EAAE,EAAE,IAAI,OAAO;MACxD,QAAO,QAAQ,UAAU,EAAE,EAAE,IAAI,OAAO;AAC7C,WAAS,OAAO;IAElB;EAAC;EAAO;EAAW;EAAa,CACjC;CAED,MAAM,YAAY,MAAM,aAEpB,KACA,UACG;AACH,QAAM,EACJ,SAAS;GAAE,GAAG,MAAM;IAAU,MAAM;GAAO,EAC5C,CAAC;IAEJ,CAAC,MAAM,SAAS,MAAM,CACvB;CAED,MAAM,eAAe,MAAM,kBAAkB;AAC3C,QAAM;GAAE,SAAS,EAAE;GAAc,MAAM;GAAG,CAAC;IAC1C,CAAC,MAAM,CAAC;AAEX,OAAM,gBAAgB;EACpB,MAAM,cAAc,SAAS,MAAM,CAAC;AACpC,SAAO,iBAAiB,YAAY,MAAM;AAC1C,eAAa,OAAO,oBAAoB,YAAY,MAAM;IACzD,CAAC,KAAK,CAAC;AAEV,QAAO;EAAE;EAAO,UAAU;EAAO;EAAW;EAAc"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["export * from './types/navigation';\n\n// Atoms\nexport * from './renderers';\nexport { Cta } from './components/atoms/Cta';\nexport { Button } from './components/atoms/Button';\nexport { ButtonLink } from './components/atoms/ButtonLink';\nexport { Link } from './components/atoms/Link';\nexport { Input } from './components/atoms/Input';\nexport { Textarea } from './components/atoms/Textarea';\nexport { EmptyState } from './components/atoms/EmptyState';\n// export { ErrorState } from './components/atoms/ErrorState';\nexport { Stepper } from './components/atoms/Stepper';\nexport {\n EditButton,\n DeleteButton,\n ViewButton,\n ToggleButton,\n ToggleLeftButton,\n ToggleRightButton,\n} from './components/atoms/ActionButtons';\nexport {\n DateChip,\n TimeChip,\n PlaceChip,\n DurationChip,\n} from './components/atoms/DataChips';\n\n// Molecules\nexport { NavMain } from './components/molecules/NavMain';\nexport { NavUser } from './components/molecules/NavUser';\nexport { ApprovalQueue } from './components/agent/ApprovalQueue';\nexport { AgentMonitor } from './components/agent/AgentMonitor';\n\n// Code display components\nexport {\n CodeBlock,\n type CodeBlockProps,\n type CodeLanguage,\n} from './components/molecules/CodeBlock';\nexport {\n CopyButton,\n type CopyButtonProps,\n} from './components/molecules/CopyButton';\nexport {\n CommandTabs,\n type CommandTabsProps,\n type PackageManager,\n type PackageManagerContextValue,\n} from './components/molecules/CommandTabs';\nexport {\n InstallCommand,\n type InstallCommandProps,\n type InstallCommandType,\n} from './components/molecules/InstallCommand';\nexport {\n PackageManagerProvider,\n usePackageManager,\n type PackageManagerProviderProps,\n} from './components/providers/PackageManagerProvider';\n\n// Organisms\nexport { AppSidebar } from './components/organisms/AppSidebar';\nexport {\n Header,\n DesktopHeader,\n MobileHeader,\n} from './components/organisms/Header';\nexport { Footer } from './components/organisms/Footer';\nexport { FeatureCarousel } from './components/organisms/FeatureCarousel';\nexport { MarketingHeader } from './components/organisms/MarketingHeader';\nexport { MarketingHeaderDesktop } from './components/organisms/MarketingHeaderDesktop';\nexport { MarketingHeaderMobile } from './components/organisms/MarketingHeaderMobile';\nexport { MarketingLayout } from './components/organisms/MarketingLayout';\nexport {\n MarketingSection,\n type MarketingSectionTone,\n type MarketingSectionPadding,\n} from './components/marketing/MarketingSection';\nexport { MarketingCardsSection } from './components/marketing/MarketingCardsSection';\nexport {\n MarketingCard,\n MarketingCardContent,\n MarketingCardDescription,\n MarketingCardHeader,\n MarketingCardTitle,\n type MarketingCardTone,\n} from './components/marketing/MarketingCard';\nexport { MarketingIconCard } from './components/marketing/MarketingIconCard';\nexport { MarketingStepCard } from './components/marketing/MarketingStepCard';\nexport { MarketingComparisonSection } from './components/marketing/MarketingComparisonSection';\nexport { AppLayout } from './components/organisms/AppLayout';\nexport { AcademyLayout } from './components/organisms/AcademyLayout';\nexport { AppHeader } from './components/organisms/AppHeader';\n// export { AppHeader as AppHeaderMobile } from './components/organisms/AppHeader.mobile';\n// export { BottomTabs } from './components/native/BottomTabs.mobile';\n// export { SheetMenu } from './components/native/SheetMenu.mobile';\nexport { CommandPalette } from './components/molecules/CommandPalette';\nexport { LangSwitch } from './components/molecules/LangSwitch';\nexport { NavBrand } from './components/atoms/NavBrand';\nexport { Breadcrumbs } from './components/molecules/Breadcrumbs';\nexport { CommandSearchTrigger } from './components/molecules/CommandSearchTrigger';\nexport { StatusChip } from './components/molecules/StatusChip';\nexport {\n EntityCard,\n type EntityCardProps,\n type EntityCardIconTone,\n} from './components/molecules/EntityCard';\nexport { StatCard, StatCardGroup } from './components/molecules/StatCard';\nexport { OverviewCard } from './components/molecules/OverviewCard';\nexport { HoverPreview } from './components/molecules/HoverPreview';\nexport { HoverPreviewSimple } from './components/molecules/hover-previews/Simple';\nexport { HoverPreviewMedia } from './components/molecules/hover-previews/Media';\nexport { HoverPreviewDoc } from './components/molecules/hover-previews/Doc';\nexport { HoverPreviewUser } from './components/molecules/hover-previews/User';\nexport { HoverPreviewStats } from './components/molecules/hover-previews/Stats';\nexport { PricingCarousel } from './components/organisms/PricingCarousel';\nexport { TestimonialCarousel } from './components/organisms/TestimonialCarousel';\nexport { HeroSection } from './components/organisms/HeroSection';\nexport { HeroResponsive } from './components/organisms/HeroResponsive';\nexport { FeaturesSection } from './components/organisms/FeaturesSection';\nexport { PageHeaderResponsive } from './components/organisms/PageHeaderResponsive';\nexport { PricingSection } from './components/organisms/PricingSection';\nexport { FAQSection } from './components/organisms/FAQSection';\nexport { ListPageResponsive } from './components/organisms/ListPageResponsive';\nexport { ListGridPage } from './components/organisms/ListGridPage';\nexport { ListCardPage } from './components/organisms/ListCardPage';\nexport { ListTablePage } from './components/organisms/ListTablePage';\nexport { FiltersToolbar } from './components/molecules/FiltersToolbar';\nexport { ListPageTemplate } from './components/templates/lists/ListPageTemplate';\nexport { AiLinkButton } from './components/molecules/AiLinkButton';\nexport { EmptyDataList } from './components/organisms/EmptyDataList';\nexport { EmptySearchResult } from './components/organisms/EmptySearchResult';\n// Loaders & Skeletons\nexport { LoaderCircular } from './components/atoms/LoaderCircular';\nexport { LoaderBlock } from './components/molecules/LoaderBlock';\nexport { SkeletonBlock } from './components/molecules/SkeletonBlock';\nexport { SkeletonCircle } from './components/molecules/SkeletonCircle';\nexport { SkeletonList } from './components/molecules/SkeletonList';\nexport { ErrorState } from './components/atoms/ErrorState';\n// export {\n// DropdownMenu,\n// DropdownMenuPortal,\n// DropdownMenuTrigger,\n// DropdownMenuContent,\n// DropdownMenuGroup,\n// DropdownMenuLabel,\n// DropdownMenuItem,\n// DropdownMenuCheckboxItem,\n// DropdownMenuRadioGroup,\n// DropdownMenuRadioItem,\n// DropdownMenuSeparator,\n// DropdownMenuShortcut,\n// DropdownMenuSub,\n// DropdownMenuSubTrigger,\n// DropdownMenuSubContent,\n// } from './components/molecules/DropdownMenu';\nexport { useListUrlState } from './hooks/useListUrlState';\n\n// Legal components\nexport { LegalHeading } from './components/legal/atoms/LegalHeading';\nexport { LegalText } from './components/legal/atoms/LegalText';\nexport { LegalSection } from './components/legal/atoms/LegalSection';\nexport { DefinitionList } from './components/legal/atoms/DefinitionList';\nexport { KeyValueList } from './components/legal/atoms/KeyValueList';\nexport { LegalList } from './components/legal/atoms/LegalList';\nexport { LegalCallout } from './components/legal/atoms/LegalCallout';\nexport { LegalTOC } from './components/legal/molecules/LegalTOC';\nexport { LegalMeta } from './components/legal/molecules/LegalMeta';\nexport { ConsentItem, ConsentList } from './components/legal/molecules/Consent';\nexport { ContactFields } from './components/legal/molecules/ContactFields';\nexport * from './components/legal/organisms/LegalPageLayout';\nexport * from './components/legal/organisms/GDPRRights';\nexport * from './components/legal/organisms/ContactForm';\nexport * from './components/legal/organisms/GDPRDataRequest';\nexport { TermsTemplate } from './components/legal/templates/TermsTemplate';\nexport { SalesTermsTemplate } from './components/legal/templates/SalesTermsTemplate';\nexport { PrivacyTemplate } from './components/legal/templates/PrivacyTemplate';\nexport { CookiesTemplate } from './components/legal/templates/CookiesTemplate';\nexport { ContactTemplate } from './components/legal/templates/ContactTemplate';\n// Platform adapter\nexport * from './platform/withPlatformUI';\nexport { useResponsive } from './platform/useResponsive';\nexport { useReducedMotion } from './platform/useReducedMotion';\nexport { useColorScheme } from './platform/useColorScheme';\nexport * from './theme/variants';\nexport * from './theme/tokens';\nexport { mapTokensForPlatform } from './theme/tokenBridge';\n\n// Forms\nexport { FormDialog } from './components/forms/FormDialog';\nexport { ZodForm } from './components/forms/ZodForm';\nexport { FormSection, FormRow, FormGrid } from './components/forms/FormLayout';\nexport { FormCardLayout } from './components/forms/FormCardLayout';\nexport { FormStepsLayout } from './components/forms/FormStepsLayout';\nexport { FormOneByOneLayout } from './components/forms/FormOneByOneLayout';\nexport { ActionForm } from './components/forms/ActionForm';\n\n// Data views\nexport { DataViewList } from './components/data-view/DataViewList';\nexport { DataViewTable } from './components/data-view/DataViewTable';\nexport { DataViewDetail } from './components/data-view/DataViewDetail';\nexport { DataViewRenderer } from './components/data-view/DataViewRenderer';\n\n// Overlays re-exports (web default; native via Metro alias)\n// Overlays are used directly from ui-kit(s) in apps for now to avoid DTS bundling issues\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA8GmE"}
|