@ternent/core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.changeset/README.md +8 -0
- package/.changeset/config.json +17 -0
- package/.github/workflows/deploy-armour.yml +42 -0
- package/.github/workflows/deploy-identity.yml +42 -0
- package/.github/workflows/deploy-seal.yml +42 -0
- package/.github/workflows/deploy-ui.yml +42 -0
- package/.github/workflows/deploy-utils.yml +42 -0
- package/.github/workflows/release-create.yml +59 -0
- package/.github/workflows/release-publish.yml +54 -0
- package/.nvmrc +1 -0
- package/.ops/publish.mjs +31 -0
- package/package.json +16 -0
- package/packages/README.md +0 -0
- package/packages/armour/CHANGELOG.md +66 -0
- package/packages/armour/CLAUDE.md +8 -0
- package/packages/armour/README.md +103 -0
- package/packages/armour/SPEC.md +92 -0
- package/packages/armour/package.json +45 -0
- package/packages/armour/src/constants.ts +5 -0
- package/packages/armour/src/deps.d.ts +56 -0
- package/packages/armour/src/errors.ts +172 -0
- package/packages/armour/src/files.ts +73 -0
- package/packages/armour/src/identity.ts +72 -0
- package/packages/armour/src/index.ts +56 -0
- package/packages/armour/src/init.ts +10 -0
- package/packages/armour/src/passphrase.ts +33 -0
- package/packages/armour/src/recipients.ts +73 -0
- package/packages/armour/src/text.ts +68 -0
- package/packages/armour/src/types.ts +93 -0
- package/packages/armour/test/armour.test.ts +270 -0
- package/packages/armour/tsconfig.build.json +12 -0
- package/packages/armour/tsconfig.json +12 -0
- package/packages/armour/vite.config.ts +29 -0
- package/packages/concord/CHANGELOG.md +83 -0
- package/packages/concord/CLAUDE.md +9 -0
- package/packages/concord/README.md +146 -0
- package/packages/concord/SPEC.md +287 -0
- package/packages/concord/package.json +51 -0
- package/packages/concord/src/app.ts +717 -0
- package/packages/concord/src/errors.ts +9 -0
- package/packages/concord/src/index.ts +20 -0
- package/packages/concord/src/types.ts +127 -0
- package/packages/concord/test/concord.test.ts +978 -0
- package/packages/concord/tsconfig.json +12 -0
- package/packages/concord/vite.browser.config.ts +27 -0
- package/packages/concord/vite.config.ts +35 -0
- package/packages/concord/vite.config.ts.timestamp-1774262297922-ffd76e35ea668.mjs +83 -0
- package/packages/identity/CHANGELOG.md +47 -0
- package/packages/identity/README.md +236 -0
- package/packages/identity/package.json +41 -0
- package/packages/identity/src/index.ts +538 -0
- package/packages/identity/test/identity.test.ts +172 -0
- package/packages/identity/tsconfig.build.json +12 -0
- package/packages/identity/vite.config.ts +17 -0
- package/packages/ledger/CHANGELOG.md +69 -0
- package/packages/ledger/CLAUDE.md +9 -0
- package/packages/ledger/SPEC.md +304 -0
- package/packages/ledger/package.json +48 -0
- package/packages/ledger/src/index.ts +2 -0
- package/packages/ledger/src/ledger.ts +1286 -0
- package/packages/ledger/src/seal-cli.d.ts +25 -0
- package/packages/ledger/src/types.ts +294 -0
- package/packages/ledger/test/ledger.test.ts +838 -0
- package/packages/ledger/tsconfig.json +12 -0
- package/packages/ledger/vite.browser.config.ts +27 -0
- package/packages/ledger/vite.config.ts +39 -0
- package/packages/seal/CHANGELOG.md +137 -0
- package/packages/seal/CLAUDE.md +8 -0
- package/packages/seal/README.md +258 -0
- package/packages/seal/bin/seal +6 -0
- package/packages/seal/package.json +59 -0
- package/packages/seal/src/artifact.ts +380 -0
- package/packages/seal/src/cli.ts +372 -0
- package/packages/seal/src/commands/identity.ts +52 -0
- package/packages/seal/src/commands/manifest.ts +71 -0
- package/packages/seal/src/commands/publicKey.ts +7 -0
- package/packages/seal/src/commands/sign.ts +56 -0
- package/packages/seal/src/commands/verify.ts +54 -0
- package/packages/seal/src/crypto.ts +85 -0
- package/packages/seal/src/errors.ts +88 -0
- package/packages/seal/src/index.ts +5 -0
- package/packages/seal/src/manifest.ts +114 -0
- package/packages/seal/src/node.ts +18 -0
- package/packages/seal/src/proof.ts +344 -0
- package/packages/seal/test/artifact.test.ts +86 -0
- package/packages/seal/test/cli.test.ts +208 -0
- package/packages/seal/test/crypto.test.ts +21 -0
- package/packages/seal/test/manifest.test.ts +32 -0
- package/packages/seal/test/proof.test.ts +60 -0
- package/packages/seal/tsconfig.json +12 -0
- package/packages/seal/vite.config.ts +54 -0
- package/packages/ui/CHANGELOG.md +393 -0
- package/packages/ui/README.md +57 -0
- package/packages/ui/jsconfig.json +19 -0
- package/packages/ui/package.json +64 -0
- package/packages/ui/scripts/check-tokens.js +56 -0
- package/packages/ui/scripts/generate-theme-css.mjs +85 -0
- package/packages/ui/src/design-system/base.css +8 -0
- package/packages/ui/src/design-system/docs/ACCESSIBILITY_RULES.md +186 -0
- package/packages/ui/src/design-system/docs/AI_SYSTEM.md +281 -0
- package/packages/ui/src/design-system/docs/PATTERN_RULES.md +83 -0
- package/packages/ui/src/design-system/docs/PRIMITIVE_RULES.md +258 -0
- package/packages/ui/src/design-system/docs/TOKEN_RULES.md +235 -0
- package/packages/ui/src/design-system/docs/VISUAL_DIRECTION.md +68 -0
- package/packages/ui/src/design-system/foundation.js +420 -0
- package/packages/ui/src/design-system/tokens.css +140 -0
- package/packages/ui/src/design-system/tokens.js +327 -0
- package/packages/ui/src/design-system/utils.js +246 -0
- package/packages/ui/src/main.js +4 -0
- package/packages/ui/src/patterns/FeatureCard/FeatureCard.spec.md +24 -0
- package/packages/ui/src/patterns/FeatureCard/FeatureCard.types.ts +8 -0
- package/packages/ui/src/patterns/FeatureCard/FeatureCard.vue +175 -0
- package/packages/ui/src/patterns/FormField/FormField.spec.md +65 -0
- package/packages/ui/src/patterns/FormField/FormField.types.ts +11 -0
- package/packages/ui/src/patterns/FormField/FormField.vue +87 -0
- package/packages/ui/src/patterns/IdentityGlyph/IdentityGlyph.vue +61 -0
- package/packages/ui/src/patterns/IdentityGlyph/IdentityHandle.vue +58 -0
- package/packages/ui/src/patterns/IdentityGlyph/identityGlyph.types.ts +36 -0
- package/packages/ui/src/patterns/IdentityGlyph/identityGlyph.utils.ts +585 -0
- package/packages/ui/src/patterns/IdentityGlyph/index.ts +5 -0
- package/packages/ui/src/patterns/KeyValueList/KeyValueList.spec.md +28 -0
- package/packages/ui/src/patterns/KeyValueList/KeyValueList.types.ts +16 -0
- package/packages/ui/src/patterns/KeyValueList/KeyValueList.vue +50 -0
- package/packages/ui/src/patterns/LandingPage/LandingIcon.vue +90 -0
- package/packages/ui/src/patterns/LandingPage/LandingPage.spec.md +24 -0
- package/packages/ui/src/patterns/LandingPage/LandingPage.types.ts +212 -0
- package/packages/ui/src/patterns/LandingPage/LandingPage.vue +599 -0
- package/packages/ui/src/patterns/ListWorkspaceLayout/ListWorkspaceLayout.test.ts +33 -0
- package/packages/ui/src/patterns/ListWorkspaceLayout/ListWorkspaceLayout.vue +44 -0
- package/packages/ui/src/patterns/Logo/Logo.spec.md +22 -0
- package/packages/ui/src/patterns/Logo/Logo.vue +160 -0
- package/packages/ui/src/patterns/PageSurface/PageSurface.spec.md +15 -0
- package/packages/ui/src/patterns/PageSurface/PageSurface.vue +85 -0
- package/packages/ui/src/patterns/PanelChrome/PanelChrome.spec.md +39 -0
- package/packages/ui/src/patterns/PanelChrome/PanelChrome.types.ts +1 -0
- package/packages/ui/src/patterns/PanelChrome/PanelChrome.vue +187 -0
- package/packages/ui/src/patterns/PreviewPanel/PreviewPanel.spec.md +31 -0
- package/packages/ui/src/patterns/PreviewPanel/PreviewPanel.types.ts +23 -0
- package/packages/ui/src/patterns/PreviewPanel/PreviewPanel.vue +354 -0
- package/packages/ui/src/patterns/RecordList/RecordList.spec.md +35 -0
- package/packages/ui/src/patterns/RecordList/RecordList.test.ts +42 -0
- package/packages/ui/src/patterns/RecordList/RecordList.types.ts +9 -0
- package/packages/ui/src/patterns/RecordList/RecordList.utils.ts +5 -0
- package/packages/ui/src/patterns/RecordList/RecordList.vue +134 -0
- package/packages/ui/src/patterns/SectionClarifier/SectionClarifier.vue +85 -0
- package/packages/ui/src/patterns/SectionIntro/SectionIntro.spec.md +25 -0
- package/packages/ui/src/patterns/SectionIntro/SectionIntro.types.ts +7 -0
- package/packages/ui/src/patterns/SectionIntro/SectionIntro.vue +141 -0
- package/packages/ui/src/patterns/SidebarNav/SidebarNav.spec.md +34 -0
- package/packages/ui/src/patterns/SidebarNav/SidebarNav.types.ts +17 -0
- package/packages/ui/src/patterns/SidebarNav/SidebarNav.vue +110 -0
- package/packages/ui/src/patterns/SplitView/SplitView.spec.md +28 -0
- package/packages/ui/src/patterns/SplitView/SplitView.test.ts +22 -0
- package/packages/ui/src/patterns/SplitView/SplitView.types.ts +3 -0
- package/packages/ui/src/patterns/SplitView/SplitView.utils.ts +13 -0
- package/packages/ui/src/patterns/SplitView/SplitView.vue +39 -0
- package/packages/ui/src/patterns/StepList/StepList.spec.md +15 -0
- package/packages/ui/src/patterns/StepList/StepList.types.ts +4 -0
- package/packages/ui/src/patterns/StepList/StepList.vue +91 -0
- package/packages/ui/src/patterns/Verification/VerificationBadge.vue +97 -0
- package/packages/ui/src/patterns/Verification/VerificationComponents.test.ts +153 -0
- package/packages/ui/src/patterns/Verification/VerificationDetailsPanel.vue +270 -0
- package/packages/ui/src/patterns/Verification/VerificationSummary.vue +171 -0
- package/packages/ui/src/patterns/Verification/index.ts +6 -0
- package/packages/ui/src/patterns/Verification/verification.types.ts +8 -0
- package/packages/ui/src/patterns/Verification/verification.utils.test.ts +37 -0
- package/packages/ui/src/patterns/Verification/verification.utils.ts +75 -0
- package/packages/ui/src/patterns/index.ts +25 -0
- package/packages/ui/src/primitives/Accordian/Accordian.vue +11 -0
- package/packages/ui/src/primitives/Accordian/AccordianItem.vue +14 -0
- package/packages/ui/src/primitives/Accordion/Accordion.props.ts +21 -0
- package/packages/ui/src/primitives/Accordion/Accordion.spec.md +50 -0
- package/packages/ui/src/primitives/Accordion/Accordion.types.ts +4 -0
- package/packages/ui/src/primitives/Accordion/Accordion.variants.ts +12 -0
- package/packages/ui/src/primitives/Accordion/Accordion.vue +71 -0
- package/packages/ui/src/primitives/Accordion/AccordionItem.props.ts +14 -0
- package/packages/ui/src/primitives/Accordion/AccordionItem.vue +40 -0
- package/packages/ui/src/primitives/Badge/Badge.props.ts +17 -0
- package/packages/ui/src/primitives/Badge/Badge.spec.md +17 -0
- package/packages/ui/src/primitives/Badge/Badge.types.ts +15 -0
- package/packages/ui/src/primitives/Badge/Badge.variants.ts +48 -0
- package/packages/ui/src/primitives/Badge/Badge.vue +31 -0
- package/packages/ui/src/primitives/Button/Button.props.ts +29 -0
- package/packages/ui/src/primitives/Button/Button.spec.md +139 -0
- package/packages/ui/src/primitives/Button/Button.types.ts +19 -0
- package/packages/ui/src/primitives/Button/Button.variants.ts +72 -0
- package/packages/ui/src/primitives/Button/Button.vue +90 -0
- package/packages/ui/src/primitives/Card/Card.props.ts +17 -0
- package/packages/ui/src/primitives/Card/Card.spec.md +29 -0
- package/packages/ui/src/primitives/Card/Card.types.ts +12 -0
- package/packages/ui/src/primitives/Card/Card.variants.ts +27 -0
- package/packages/ui/src/primitives/Card/Card.vue +37 -0
- package/packages/ui/src/primitives/Checkbox/Checkbox.props.ts +21 -0
- package/packages/ui/src/primitives/Checkbox/Checkbox.spec.md +51 -0
- package/packages/ui/src/primitives/Checkbox/Checkbox.types.ts +4 -0
- package/packages/ui/src/primitives/Checkbox/Checkbox.variants.ts +34 -0
- package/packages/ui/src/primitives/Checkbox/Checkbox.vue +92 -0
- package/packages/ui/src/primitives/Dialog/Dialog.props.ts +29 -0
- package/packages/ui/src/primitives/Dialog/Dialog.spec.md +52 -0
- package/packages/ui/src/primitives/Dialog/Dialog.types.ts +3 -0
- package/packages/ui/src/primitives/Dialog/Dialog.variants.ts +27 -0
- package/packages/ui/src/primitives/Dialog/Dialog.vue +78 -0
- package/packages/ui/src/primitives/Drawer/Drawer.props.ts +33 -0
- package/packages/ui/src/primitives/Drawer/Drawer.spec.md +50 -0
- package/packages/ui/src/primitives/Drawer/Drawer.types.ts +5 -0
- package/packages/ui/src/primitives/Drawer/Drawer.variants.ts +35 -0
- package/packages/ui/src/primitives/Drawer/Drawer.vue +88 -0
- package/packages/ui/src/primitives/FieldMessage/FieldMessage.props.ts +17 -0
- package/packages/ui/src/primitives/FieldMessage/FieldMessage.spec.md +35 -0
- package/packages/ui/src/primitives/FieldMessage/FieldMessage.types.ts +5 -0
- package/packages/ui/src/primitives/FieldMessage/FieldMessage.variants.ts +14 -0
- package/packages/ui/src/primitives/FieldMessage/FieldMessage.vue +40 -0
- package/packages/ui/src/primitives/FileInput/FileInput.props.ts +41 -0
- package/packages/ui/src/primitives/FileInput/FileInput.types.ts +6 -0
- package/packages/ui/src/primitives/FileInput/FileInput.variants.ts +46 -0
- package/packages/ui/src/primitives/FileInput/FileInput.vue +163 -0
- package/packages/ui/src/primitives/Input/Input.props.ts +29 -0
- package/packages/ui/src/primitives/Input/Input.spec.md +79 -0
- package/packages/ui/src/primitives/Input/Input.types.ts +13 -0
- package/packages/ui/src/primitives/Input/Input.variants.ts +54 -0
- package/packages/ui/src/primitives/Input/Input.vue +99 -0
- package/packages/ui/src/primitives/Label/Label.props.ts +25 -0
- package/packages/ui/src/primitives/Label/Label.spec.md +31 -0
- package/packages/ui/src/primitives/Label/Label.types.ts +3 -0
- package/packages/ui/src/primitives/Label/Label.variants.ts +17 -0
- package/packages/ui/src/primitives/Label/Label.vue +38 -0
- package/packages/ui/src/primitives/Menu/Menu.props.ts +17 -0
- package/packages/ui/src/primitives/Menu/Menu.spec.md +38 -0
- package/packages/ui/src/primitives/Menu/Menu.types.ts +10 -0
- package/packages/ui/src/primitives/Menu/Menu.variants.ts +10 -0
- package/packages/ui/src/primitives/Menu/Menu.vue +57 -0
- package/packages/ui/src/primitives/Popover/Popover.props.ts +25 -0
- package/packages/ui/src/primitives/Popover/Popover.spec.md +49 -0
- package/packages/ui/src/primitives/Popover/Popover.types.ts +3 -0
- package/packages/ui/src/primitives/Popover/Popover.variants.ts +18 -0
- package/packages/ui/src/primitives/Popover/Popover.vue +74 -0
- package/packages/ui/src/primitives/RadioGroup/RadioGroup.props.ts +29 -0
- package/packages/ui/src/primitives/RadioGroup/RadioGroup.spec.md +50 -0
- package/packages/ui/src/primitives/RadioGroup/RadioGroup.types.ts +12 -0
- package/packages/ui/src/primitives/RadioGroup/RadioGroup.variants.ts +48 -0
- package/packages/ui/src/primitives/RadioGroup/RadioGroup.vue +87 -0
- package/packages/ui/src/primitives/Separator/Separator.props.ts +9 -0
- package/packages/ui/src/primitives/Separator/Separator.spec.md +15 -0
- package/packages/ui/src/primitives/Separator/Separator.types.ts +3 -0
- package/packages/ui/src/primitives/Separator/Separator.variants.ts +8 -0
- package/packages/ui/src/primitives/Separator/Separator.vue +23 -0
- package/packages/ui/src/primitives/Skeleton/Skeleton.props.ts +21 -0
- package/packages/ui/src/primitives/Skeleton/Skeleton.spec.md +18 -0
- package/packages/ui/src/primitives/Skeleton/Skeleton.types.ts +5 -0
- package/packages/ui/src/primitives/Skeleton/Skeleton.variants.ts +18 -0
- package/packages/ui/src/primitives/Skeleton/Skeleton.vue +37 -0
- package/packages/ui/src/primitives/Spinner/Spinner.props.ts +13 -0
- package/packages/ui/src/primitives/Spinner/Spinner.spec.md +16 -0
- package/packages/ui/src/primitives/Spinner/Spinner.types.ts +5 -0
- package/packages/ui/src/primitives/Spinner/Spinner.variants.ts +15 -0
- package/packages/ui/src/primitives/Spinner/Spinner.vue +33 -0
- package/packages/ui/src/primitives/SplitButton/SplitButton.vue +108 -0
- package/packages/ui/src/primitives/Switch/Switch.props.ts +21 -0
- package/packages/ui/src/primitives/Switch/Switch.spec.md +49 -0
- package/packages/ui/src/primitives/Switch/Switch.types.ts +3 -0
- package/packages/ui/src/primitives/Switch/Switch.variants.ts +34 -0
- package/packages/ui/src/primitives/Switch/Switch.vue +71 -0
- package/packages/ui/src/primitives/Tabs/Tabs.props.ts +25 -0
- package/packages/ui/src/primitives/Tabs/Tabs.spec.md +48 -0
- package/packages/ui/src/primitives/Tabs/Tabs.types.ts +11 -0
- package/packages/ui/src/primitives/Tabs/Tabs.variants.ts +28 -0
- package/packages/ui/src/primitives/Tabs/Tabs.vue +59 -0
- package/packages/ui/src/primitives/Textarea/Textarea.props.ts +33 -0
- package/packages/ui/src/primitives/Textarea/Textarea.spec.md +59 -0
- package/packages/ui/src/primitives/Textarea/Textarea.types.ts +5 -0
- package/packages/ui/src/primitives/Textarea/Textarea.variants.ts +27 -0
- package/packages/ui/src/primitives/Textarea/Textarea.vue +74 -0
- package/packages/ui/src/primitives/Tooltip/Tooltip.props.ts +21 -0
- package/packages/ui/src/primitives/Tooltip/Tooltip.spec.md +45 -0
- package/packages/ui/src/primitives/Tooltip/Tooltip.types.ts +3 -0
- package/packages/ui/src/primitives/Tooltip/Tooltip.variants.ts +4 -0
- package/packages/ui/src/primitives/Tooltip/Tooltip.vue +31 -0
- package/packages/ui/src/primitives/TreeView/TreeView.types.ts +10 -0
- package/packages/ui/src/primitives/TreeView/TreeView.vue +113 -0
- package/packages/ui/src/primitives/TreeView/TreeViewNode.vue +190 -0
- package/packages/ui/src/primitives/index.ts +29 -0
- package/packages/ui/src/style.css +7 -0
- package/packages/ui/src/style.js +1 -0
- package/packages/ui/src/themes/armour.css +147 -0
- package/packages/ui/src/themes/aurora.css +147 -0
- package/packages/ui/src/themes/citrine-ash.css +147 -0
- package/packages/ui/src/themes/concord.css +147 -0
- package/packages/ui/src/themes/garnet-honey.css +147 -0
- package/packages/ui/src/themes/harbor-rose.css +147 -0
- package/packages/ui/src/themes/ledger.css +147 -0
- package/packages/ui/src/themes/neon-noir.css +74 -0
- package/packages/ui/src/themes/obsidian-iris.css +147 -0
- package/packages/ui/src/themes/pixpax.css +147 -0
- package/packages/ui/src/themes/print.css +147 -0
- package/packages/ui/src/themes/prism.css +147 -0
- package/packages/ui/src/themes/proof.css +145 -0
- package/packages/ui/src/themes/semanticThemeContract.js +2256 -0
- package/packages/ui/src/themes/spruce-ink.css +147 -0
- package/packages/ui/src/themes/sunset.css +147 -0
- package/packages/ui/tailwind.config.js +64 -0
- package/packages/ui/vite.config.js +35 -0
- package/packages/ui/vite.config.js.timestamp-1780697224943-89fbc929987bc.mjs +38 -0
- package/packages/utils/CHANGELOG.md +111 -0
- package/packages/utils/README.md +3 -0
- package/packages/utils/package.json +46 -0
- package/packages/utils/src/index.test.js +39 -0
- package/packages/utils/src/index.ts +289 -0
- package/packages/utils/tsconfig.build.json +12 -0
- package/packages/utils/vite.config.js +28 -0
- package/pnpm-workspace.yaml +8 -0
- package/scripts/vite/package-lib-config.ts +59 -0
- package/tsconfig.json +24 -0
- package/tsconfig.node.json +9 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed } from "vue";
|
|
3
|
+
import type { LandingPageIcon } from "./LandingPage.types";
|
|
4
|
+
|
|
5
|
+
const props = withDefaults(
|
|
6
|
+
defineProps<{
|
|
7
|
+
name?: LandingPageIcon;
|
|
8
|
+
}>(),
|
|
9
|
+
{
|
|
10
|
+
name: "spark",
|
|
11
|
+
},
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
const pathData = computed(() => {
|
|
15
|
+
switch (props.name) {
|
|
16
|
+
case "globe":
|
|
17
|
+
return [
|
|
18
|
+
"circle 12 12 9",
|
|
19
|
+
"path M3 12h18",
|
|
20
|
+
"path M12 3a14 14 0 0 1 0 18",
|
|
21
|
+
"path M12 3a14 14 0 0 0 0 18",
|
|
22
|
+
];
|
|
23
|
+
case "pin":
|
|
24
|
+
return [
|
|
25
|
+
"path M12 3a7 7 0 0 0-7 7c0 5 7 11 7 11s7-6 7-11a7 7 0 0 0-7-7Z",
|
|
26
|
+
"path M12 8v5",
|
|
27
|
+
"path M9.5 10.5h5",
|
|
28
|
+
];
|
|
29
|
+
case "shield":
|
|
30
|
+
return ["path m12 3 8 4.5v9L12 21 4 16.5v-9L12 3Z", "path m9 12 2 2 4-4"];
|
|
31
|
+
case "check":
|
|
32
|
+
return ["rect 4 4 16 16 2", "path m8 12 2.5 2.5L16 9"];
|
|
33
|
+
case "stack":
|
|
34
|
+
return ["path M12 3 4 7l8 4 8-4-8-4Z", "path M4 12l8 4 8-4", "path M4 17l8 4 8-4"];
|
|
35
|
+
case "document":
|
|
36
|
+
return ["rect 5 3 14 18 2", "path M9 8h6", "path M9 12h6", "path M9 16h4"];
|
|
37
|
+
case "terminal":
|
|
38
|
+
return ["rect 3 4 18 16 2", "path M8 9 11 12 8 15", "path M13 15h3"];
|
|
39
|
+
case "dataset":
|
|
40
|
+
return [
|
|
41
|
+
"ellipse 12 5 7 3",
|
|
42
|
+
"path M5 5v6c0 1.7 3.1 3 7 3s7-1.3 7-3V5",
|
|
43
|
+
"path M5 11v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6",
|
|
44
|
+
];
|
|
45
|
+
case "grid":
|
|
46
|
+
return ["rect 4 4 7 7 1.5", "rect 13 4 7 7 1.5", "rect 4 13 7 7 1.5", "rect 13 13 7 7 1.5"];
|
|
47
|
+
default:
|
|
48
|
+
return ["path M12 3 14.8 8.2 20 11l-5.2 2.8L12 19l-2.8-5.2L4 11l5.2-2.8L12 3Z"];
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<template>
|
|
54
|
+
<svg
|
|
55
|
+
aria-hidden="true"
|
|
56
|
+
viewBox="0 0 24 24"
|
|
57
|
+
width="20"
|
|
58
|
+
height="20"
|
|
59
|
+
fill="none"
|
|
60
|
+
stroke="currentColor"
|
|
61
|
+
stroke-width="1.8"
|
|
62
|
+
stroke-linecap="round"
|
|
63
|
+
stroke-linejoin="round"
|
|
64
|
+
>
|
|
65
|
+
<template v-for="segment in pathData" :key="segment">
|
|
66
|
+
<circle
|
|
67
|
+
v-if="segment.startsWith('circle ')"
|
|
68
|
+
:cx="segment.split(' ')[1]"
|
|
69
|
+
:cy="segment.split(' ')[2]"
|
|
70
|
+
:r="segment.split(' ')[3]"
|
|
71
|
+
/>
|
|
72
|
+
<ellipse
|
|
73
|
+
v-else-if="segment.startsWith('ellipse ')"
|
|
74
|
+
:cx="segment.split(' ')[1]"
|
|
75
|
+
:cy="segment.split(' ')[2]"
|
|
76
|
+
:rx="segment.split(' ')[3]"
|
|
77
|
+
:ry="segment.split(' ')[4]"
|
|
78
|
+
/>
|
|
79
|
+
<rect
|
|
80
|
+
v-else-if="segment.startsWith('rect ')"
|
|
81
|
+
:x="segment.split(' ')[1]"
|
|
82
|
+
:y="segment.split(' ')[2]"
|
|
83
|
+
:width="segment.split(' ')[3]"
|
|
84
|
+
:height="segment.split(' ')[4]"
|
|
85
|
+
:rx="segment.split(' ')[5]"
|
|
86
|
+
/>
|
|
87
|
+
<path v-else :d="segment.replace(/^path /, '')" />
|
|
88
|
+
</template>
|
|
89
|
+
</svg>
|
|
90
|
+
</template>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# LandingPage
|
|
2
|
+
|
|
3
|
+
Config-driven marketing landing page built from ternent-ui primitives and patterns.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
- keep scaffolded apps on-brand with a full landing-page skeleton
|
|
8
|
+
- render declarative copy, previews, and calls to action from generated config
|
|
9
|
+
- avoid app-specific logic in the shared renderer
|
|
10
|
+
|
|
11
|
+
## Inputs
|
|
12
|
+
|
|
13
|
+
- navigation links
|
|
14
|
+
- hero copy and preview panel
|
|
15
|
+
- feature, how-it-works, and use-case content
|
|
16
|
+
- developer tabs with snippets
|
|
17
|
+
- clarifier lists
|
|
18
|
+
- CTA and footer links
|
|
19
|
+
|
|
20
|
+
## Non-goals
|
|
21
|
+
|
|
22
|
+
- custom business components
|
|
23
|
+
- runtime YAML parsing
|
|
24
|
+
- bespoke preview hooks per app
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
export const landingPageToneValues = ["primary", "secondary", "accent", "success", "info"] as const;
|
|
2
|
+
|
|
3
|
+
export const landingPageValueToneValues = [
|
|
4
|
+
"neutral",
|
|
5
|
+
"primary",
|
|
6
|
+
"secondary",
|
|
7
|
+
"accent",
|
|
8
|
+
"success",
|
|
9
|
+
"warning",
|
|
10
|
+
"info",
|
|
11
|
+
"critical",
|
|
12
|
+
] as const;
|
|
13
|
+
|
|
14
|
+
export const landingPageActionVariantValues = ["primary", "secondary"] as const;
|
|
15
|
+
|
|
16
|
+
export const landingPageIconValues = [
|
|
17
|
+
"globe",
|
|
18
|
+
"pin",
|
|
19
|
+
"shield",
|
|
20
|
+
"check",
|
|
21
|
+
"stack",
|
|
22
|
+
"document",
|
|
23
|
+
"terminal",
|
|
24
|
+
"spark",
|
|
25
|
+
"dataset",
|
|
26
|
+
"grid",
|
|
27
|
+
] as const;
|
|
28
|
+
|
|
29
|
+
export type LandingPageTone = (typeof landingPageToneValues)[number];
|
|
30
|
+
export type LandingPageValueTone = (typeof landingPageValueToneValues)[number];
|
|
31
|
+
export type LandingPageActionVariant = (typeof landingPageActionVariantValues)[number];
|
|
32
|
+
export type LandingPageIcon = (typeof landingPageIconValues)[number];
|
|
33
|
+
|
|
34
|
+
export type LandingPageLink = {
|
|
35
|
+
href: string;
|
|
36
|
+
label: string;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export type LandingPageAction = LandingPageLink & {
|
|
40
|
+
variant?: LandingPageActionVariant;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export type LandingPageTertiaryAction = LandingPageLink;
|
|
44
|
+
|
|
45
|
+
export type LandingPagePreviewTab = {
|
|
46
|
+
label: string;
|
|
47
|
+
active?: boolean;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export type LandingPagePreviewRow = {
|
|
51
|
+
label: string;
|
|
52
|
+
value: string;
|
|
53
|
+
valueTone?: LandingPageValueTone;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export type LandingPagePreview = {
|
|
57
|
+
title?: string;
|
|
58
|
+
meta?: string;
|
|
59
|
+
statusLabel?: string;
|
|
60
|
+
statusTone?: LandingPageValueTone;
|
|
61
|
+
rows?: readonly LandingPagePreviewRow[];
|
|
62
|
+
code?: string;
|
|
63
|
+
tabs?: readonly LandingPagePreviewTab[];
|
|
64
|
+
footerText?: string;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export type LandingPageFeature = {
|
|
68
|
+
title: string;
|
|
69
|
+
description: string;
|
|
70
|
+
tone?: LandingPageTone;
|
|
71
|
+
icon?: LandingPageIcon;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export type LandingPageStep = {
|
|
75
|
+
title: string;
|
|
76
|
+
description: string;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export type LandingPageNarrativeItem = {
|
|
80
|
+
title: string;
|
|
81
|
+
description: string;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export type LandingPageDeveloperTab = {
|
|
85
|
+
value: string;
|
|
86
|
+
label: string;
|
|
87
|
+
title: string;
|
|
88
|
+
meta: string;
|
|
89
|
+
code: string;
|
|
90
|
+
supportingCopy: string;
|
|
91
|
+
link: LandingPageLink;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
export type LandingPageClarifierColumn = {
|
|
95
|
+
title: string;
|
|
96
|
+
items: readonly string[];
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
export type LandingPageProofModelSection = {
|
|
100
|
+
eyebrow: string;
|
|
101
|
+
title: string;
|
|
102
|
+
description: string;
|
|
103
|
+
items: readonly LandingPageNarrativeItem[];
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export type LandingPageProofJsonSection = {
|
|
107
|
+
eyebrow: string;
|
|
108
|
+
title: string;
|
|
109
|
+
description: string;
|
|
110
|
+
code: string;
|
|
111
|
+
supportingText?: string;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
export type LandingPageSurfacesSection = {
|
|
115
|
+
eyebrow: string;
|
|
116
|
+
title: string;
|
|
117
|
+
description: string;
|
|
118
|
+
items: readonly LandingPageFeature[];
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
export type LandingPageStaticBuildSection = {
|
|
122
|
+
eyebrow: string;
|
|
123
|
+
title: string;
|
|
124
|
+
description: string;
|
|
125
|
+
steps: readonly LandingPageStep[];
|
|
126
|
+
closingLine?: string;
|
|
127
|
+
primaryAction?: LandingPageAction;
|
|
128
|
+
secondaryAction?: LandingPageAction;
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
export type LandingPageSuiteSection = {
|
|
132
|
+
eyebrow: string;
|
|
133
|
+
title: string;
|
|
134
|
+
description: string;
|
|
135
|
+
supportingText?: string;
|
|
136
|
+
items: readonly {
|
|
137
|
+
title: string;
|
|
138
|
+
description: string;
|
|
139
|
+
themeColor: string;
|
|
140
|
+
link: LandingPageLink;
|
|
141
|
+
}[];
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
export type LandingPageNonGoalsSection = {
|
|
145
|
+
eyebrow?: string;
|
|
146
|
+
title: string;
|
|
147
|
+
items: readonly string[];
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
export type LandingPageConfig = {
|
|
151
|
+
navigationLinks: readonly LandingPageLink[];
|
|
152
|
+
hero: {
|
|
153
|
+
eyebrow: string;
|
|
154
|
+
title: string;
|
|
155
|
+
description: string;
|
|
156
|
+
supportingLine?: string;
|
|
157
|
+
note?: string;
|
|
158
|
+
primaryAction: LandingPageAction;
|
|
159
|
+
secondaryAction?: LandingPageAction;
|
|
160
|
+
tertiaryAction?: LandingPageTertiaryAction;
|
|
161
|
+
preview: LandingPagePreview;
|
|
162
|
+
};
|
|
163
|
+
proofModelSection?: LandingPageProofModelSection;
|
|
164
|
+
proofJsonSection?: LandingPageProofJsonSection;
|
|
165
|
+
surfacesSection?: LandingPageSurfacesSection;
|
|
166
|
+
staticBuildSection?: LandingPageStaticBuildSection;
|
|
167
|
+
featureSection?: {
|
|
168
|
+
eyebrow: string;
|
|
169
|
+
title: string;
|
|
170
|
+
description?: string;
|
|
171
|
+
items: readonly LandingPageFeature[];
|
|
172
|
+
};
|
|
173
|
+
howItWorksSection?: {
|
|
174
|
+
eyebrow: string;
|
|
175
|
+
title: string;
|
|
176
|
+
preview: LandingPagePreview;
|
|
177
|
+
steps: readonly LandingPageStep[];
|
|
178
|
+
};
|
|
179
|
+
useCasesSection?: {
|
|
180
|
+
eyebrow: string;
|
|
181
|
+
title: string;
|
|
182
|
+
items: readonly LandingPageFeature[];
|
|
183
|
+
};
|
|
184
|
+
developerSection: {
|
|
185
|
+
eyebrow: string;
|
|
186
|
+
title: string;
|
|
187
|
+
description: string;
|
|
188
|
+
surfaces: readonly string[];
|
|
189
|
+
tabs: readonly LandingPageDeveloperTab[];
|
|
190
|
+
};
|
|
191
|
+
clarifierSection?: {
|
|
192
|
+
eyebrow: string;
|
|
193
|
+
title: string;
|
|
194
|
+
columns: readonly LandingPageClarifierColumn[];
|
|
195
|
+
};
|
|
196
|
+
suiteSection?: LandingPageSuiteSection;
|
|
197
|
+
nonGoalsSection?: LandingPageNonGoalsSection;
|
|
198
|
+
ctaSection: {
|
|
199
|
+
eyebrow: string;
|
|
200
|
+
title: string;
|
|
201
|
+
description: string;
|
|
202
|
+
primaryAction: LandingPageAction;
|
|
203
|
+
secondaryAction?: LandingPageAction;
|
|
204
|
+
tertiaryAction?: LandingPageTertiaryAction;
|
|
205
|
+
};
|
|
206
|
+
footer?: {
|
|
207
|
+
brandLabel: string;
|
|
208
|
+
brandHref?: string;
|
|
209
|
+
copyright: string;
|
|
210
|
+
links: readonly LandingPageLink[];
|
|
211
|
+
};
|
|
212
|
+
};
|