@alphacifer/slidev-addon-theme 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +133 -75
- package/components/card/chevron-card/ChevronCard.vue +44 -32
- package/components/card/chevron-card/ChevronCardBadge.vue +14 -8
- package/components/card/chevron-card/ChevronCardContent.vue +15 -13
- package/components/card/chevron-card/style.css +12 -0
- package/components/card/{horiz-card/HorizCard.vue → horizontal-card/HorizontalCard.vue} +78 -85
- package/components/card/{horiz-card/HorizCardBadge.vue → horizontal-card/HorizontalCardBadge.vue} +15 -10
- package/components/card/{horiz-card/HorizCardContent.vue → horizontal-card/HorizontalCardContent.vue} +11 -11
- package/components/card/{horiz-card/HorizCardIcon.vue → horizontal-card/HorizontalCardIcon.vue} +24 -38
- package/components/card/horizontal-card/style.css +17 -0
- package/components/card/{vert-card/VertCard.vue → vertical-card/VerticalCard.vue} +80 -103
- package/components/card/{vert-card/VertCardBadge.vue → vertical-card/VerticalCardBadge.vue} +15 -10
- package/components/card/{vert-card/VertCardContent.vue → vertical-card/VerticalCardContent.vue} +13 -12
- package/components/card/{vert-card/VertCardIcon.vue → vertical-card/VerticalCardIcon.vue} +15 -33
- package/components/card/vertical-card/style.css +19 -0
- package/components/comparisons/arc-comparison/ArcComparison.vue +376 -80
- package/components/comparisons/arc-comparison/ArcComparisonBadge.vue +9 -4
- package/components/comparisons/arc-comparison/ArcComparisonContent.vue +9 -4
- package/components/comparisons/arc-comparison/ArcComparisonHeading.vue +9 -4
- package/components/comparisons/arc-comparison/ArcComparisonLeft.vue +39 -63
- package/components/comparisons/arc-comparison/ArcComparisonOrbit.vue +9 -8
- package/components/comparisons/arc-comparison/ArcComparisonRight.vue +39 -63
- package/components/comparisons/arc-comparison/style.css +27 -0
- package/components/comparisons/table-comparison/TableComparison.vue +17 -97
- package/components/comparisons/table-comparison/TableComparisonCell.vue +22 -20
- package/components/comparisons/table-comparison/{TableComparisonCol.vue → TableComparisonColumn.vue} +16 -14
- package/components/comparisons/table-comparison/{TableComparisonCols.vue → TableComparisonColumns.vue} +5 -8
- package/components/comparisons/table-comparison/TableComparisonRow.vue +10 -14
- package/components/comparisons/table-comparison/TableComparisonRows.vue +1 -4
- package/components/comparisons/table-comparison/style.css +15 -0
- package/components/core/Date.vue +2 -5
- package/components/core/QnA.vue +1 -1
- package/components/core/Quote.vue +3 -6
- package/components/core/ReflectedTitle.vue +2 -6
- package/components/core/Speaker.vue +5 -10
- package/components/core/TransitionHeading.vue +2 -5
- package/components/core/arc-orbit/ArcOrbit.vue +65 -84
- package/components/core/arc-orbit/ArcOrbitBadge.vue +9 -11
- package/components/core/arc-orbit/ArcOrbitCallout.vue +30 -32
- package/components/core/arc-orbit/ArcOrbitContent.vue +6 -12
- package/components/core/arc-orbit/ArcOrbitHeading.vue +13 -11
- package/components/core/arc-orbit/style.css +20 -0
- package/components/core/style.css +9 -0
- package/components/core/thanks/{ThanksContent.vue → SquareThanks.vue} +36 -31
- package/components/core/thanks/SquareThanksContent.vue +89 -0
- package/components/core/thanks/ThanksOutlineSquare.vue +2 -5
- package/components/core/thanks/ThanksSquare.vue +2 -5
- package/components/core/thanks/style.css +30 -0
- package/components/defense-in-depth/{arc-did/ArcDiD.vue → arc-defense-in-depth/ArcDefenseInDepth.vue} +167 -97
- package/components/defense-in-depth/arc-defense-in-depth/ArcDefenseInDepthLayer.vue +240 -0
- package/components/defense-in-depth/{arc-did/ArcDiDLayerTitle.vue → arc-defense-in-depth/ArcDefenseInDepthLayerHeading.vue} +27 -29
- package/components/defense-in-depth/{arc-did/ArcDiDLayerPart.vue → arc-defense-in-depth/ArcDefenseInDepthLayerPart.vue} +91 -39
- package/components/defense-in-depth/{arc-did/ArcDiDLayerSector.vue → arc-defense-in-depth/ArcDefenseInDepthLayerSector.vue} +37 -23
- package/components/defense-in-depth/arc-defense-in-depth/style.css +38 -0
- package/components/facets/tetrad/{rect-orbit-tetrad/RectOrbitTetrad.vue → rectangle-orbit-tetrad/RectangleOrbitTetrad.vue} +66 -63
- package/components/facets/tetrad/{rect-orbit-tetrad/RectOrbitTetradCallout.vue → rectangle-orbit-tetrad/RectangleOrbitTetradCallout.vue} +62 -48
- package/components/facets/tetrad/rectangle-orbit-tetrad/RectangleOrbitTetradCenter.vue +54 -0
- package/components/facets/tetrad/rectangle-orbit-tetrad/RectangleOrbitTetradContent.vue +44 -0
- package/components/facets/tetrad/rectangle-orbit-tetrad/RectangleOrbitTetradHeading.vue +27 -0
- package/components/facets/tetrad/{rect-orbit-tetrad/RectOrbitTetradIcon.vue → rectangle-orbit-tetrad/RectangleOrbitTetradIcon.vue} +23 -13
- package/components/facets/tetrad/rectangle-orbit-tetrad/style.css +22 -0
- package/components/facets/triad/arrow-triad/ArrowTriad.vue +99 -109
- package/components/facets/triad/arrow-triad/ArrowTriadCallout.vue +31 -59
- package/components/facets/triad/arrow-triad/ArrowTriadContent.vue +18 -13
- package/components/facets/triad/arrow-triad/ArrowTriadHeading.vue +20 -13
- package/components/facets/triad/arrow-triad/ArrowTriadIcon.vue +14 -9
- package/components/facets/triad/arrow-triad/style.css +15 -0
- package/components/facets/triad/gear-triad/GearTriad.vue +73 -64
- package/components/facets/triad/gear-triad/GearTriadCallout.vue +58 -53
- package/components/facets/triad/gear-triad/GearTriadCenter.vue +9 -4
- package/components/facets/triad/gear-triad/GearTriadContent.vue +21 -36
- package/components/facets/triad/gear-triad/GearTriadDetail.vue +92 -0
- package/components/facets/triad/gear-triad/GearTriadDetails.vue +169 -0
- package/components/facets/triad/gear-triad/GearTriadDetailsContent.vue +18 -0
- package/components/facets/triad/gear-triad/GearTriadDetailsHeading.vue +60 -0
- package/components/facets/triad/gear-triad/GearTriadHeading.vue +19 -13
- package/components/facets/triad/gear-triad/GearTriadIcon.vue +22 -9
- package/components/facets/triad/gear-triad/style.css +26 -0
- package/components/facets/triad/{hex-triad/HexTriad.vue → hexagon-triad/HexagonTriad.vue} +81 -63
- package/components/facets/triad/{hex-triad/HexTriadBadge.vue → hexagon-triad/HexagonTriadBadge.vue} +38 -12
- package/components/facets/triad/{hex-triad/HexTriadCallout.vue → hexagon-triad/HexagonTriadCallout.vue} +35 -31
- package/components/facets/triad/hexagon-triad/HexagonTriadCenterBadge.vue +74 -0
- package/components/facets/triad/hexagon-triad/HexagonTriadContent.vue +34 -0
- package/components/facets/triad/hexagon-triad/HexagonTriadHeading.vue +44 -0
- package/components/facets/triad/{hex-triad/HexTriadLayer.vue → hexagon-triad/HexagonTriadLayer.vue} +12 -4
- package/components/facets/triad/hexagon-triad/style.css +22 -0
- package/components/process/arc-arrow-process/ArcArrowProcess.vue +13 -35
- package/components/process/arc-arrow-process/ArcArrowProcessArrow.vue +20 -21
- package/components/process/arc-arrow-process/ArcArrowProcessCallout.vue +30 -71
- package/components/process/arc-arrow-process/ArcArrowProcessContent.vue +18 -13
- package/components/process/arc-arrow-process/ArcArrowProcessHeading.vue +18 -18
- package/components/process/arc-arrow-process/ArcArrowProcessIcon.vue +23 -11
- package/components/process/arc-arrow-process/style.css +20 -0
- package/components/pyramid/circular-pyramid/CircularPyramid.vue +269 -170
- package/components/pyramid/circular-pyramid/CircularPyramidStack.vue +70 -52
- package/components/pyramid/circular-pyramid/CircularPyramidStackContent.vue +47 -37
- package/components/pyramid/circular-pyramid/{CircularPyramidStackTitle.vue → CircularPyramidStackHeading.vue} +49 -45
- package/components/pyramid/circular-pyramid/style.css +26 -0
- package/components/pyramid/square-pyramid/SquarePyramid.vue +191 -62
- package/components/pyramid/square-pyramid/SquarePyramidStack.vue +74 -49
- package/components/pyramid/square-pyramid/SquarePyramidStackContent.vue +47 -33
- package/components/pyramid/square-pyramid/{SquarePyramidStackTitle.vue → SquarePyramidStackHeading.vue} +49 -41
- package/components/pyramid/square-pyramid/style.css +48 -0
- package/components/style.css +35 -0
- package/layouts/core/arc-toc.vue +40 -45
- package/layouts/core/bg-center.vue +7 -6
- package/layouts/core/style.css +17 -0
- package/layouts/shifting-heading/shifting-intro.vue +4 -13
- package/layouts/thanks/thanks.vue +5 -5
- package/package.json +8 -6
- package/style.css +17 -0
- package/uno.config.ts +1 -0
- package/utils/activateOnKeyboard.ts +14 -0
- package/utils/{chevronCard → card/chevron-card}/context.ts +1 -1
- package/utils/card/chevron-card/index.ts +1 -0
- package/utils/card/horizontal-card/context.ts +12 -0
- package/utils/{horizCard/createHorizCardGeometry.ts → card/horizontal-card/createHorizontalCardGeometry.ts} +10 -45
- package/utils/card/horizontal-card/index.ts +2 -0
- package/utils/card/vertical-card/context.ts +19 -0
- package/utils/{vertCard/createVertCardGeometry.ts → card/vertical-card/createVerticalCardGeometry.ts} +9 -130
- package/utils/card/vertical-card/index.ts +2 -0
- package/utils/colors.ts +93 -0
- package/utils/{arcComparison → comparisons/arc-comparison}/context.ts +0 -11
- package/utils/{arcComparison → comparisons/arc-comparison}/createArcComparisonGeometry.ts +1 -1
- package/utils/comparisons/arc-comparison/resolveArcComparisonItems.ts +33 -0
- package/utils/comparisons/table-comparison/constants.ts +47 -0
- package/utils/{tableComparison → comparisons/table-comparison}/context.ts +2 -2
- package/utils/{arcOrbit → core/arc-orbit}/resolveArcOrbitItems.ts +11 -15
- package/utils/{defenseInDepth/arcDid → defense-in-depth/arc-defense-in-depth}/context.ts +34 -31
- package/utils/{defenseInDepth/arcDid/createArcDiDGeometry.ts → defense-in-depth/arc-defense-in-depth/createArcDefenseInDepthGeometry.ts} +69 -39
- package/utils/{defenseInDepth/arcDid → defense-in-depth/arc-defense-in-depth}/types.ts +39 -35
- package/utils/defense-in-depth/shared/colors.ts +51 -0
- package/utils/defense-in-depth/shared/constants.ts +22 -0
- package/utils/{defenseInDepth → defense-in-depth}/shared/types.ts +0 -5
- package/utils/facets/tetrad/rectangle-orbit-tetrad/context.ts +31 -0
- package/utils/{rectOrbitTetrad/createRectOrbitTetradGeometry.ts → facets/tetrad/rectangle-orbit-tetrad/createRectangleOrbitTetradGeometry.ts} +5 -104
- package/utils/facets/tetrad/rectangle-orbit-tetrad/index.ts +3 -0
- package/utils/{rectOrbitTetrad/resolveRectOrbitTetradItems.ts → facets/tetrad/rectangle-orbit-tetrad/resolveRectangleOrbitTetradItems.ts} +41 -49
- package/utils/{arrowTriad → facets/triad/arrow-triad}/resolveArrowTriadItems.ts +27 -28
- package/utils/{gearTriad → facets/triad/gear-triad}/context.ts +5 -5
- package/utils/{gearTriad → facets/triad/gear-triad}/createGearTriadGeometry.ts +2 -0
- package/utils/{gearTriad → facets/triad/gear-triad}/resolveGearTriadItems.ts +23 -24
- package/utils/facets/triad/hexagon-triad/context.ts +25 -0
- package/utils/{hexTriad/createHexTriadGeometry.ts → facets/triad/hexagon-triad/createHexagonTriadGeometry.ts} +11 -27
- package/utils/facets/triad/hexagon-triad/index.ts +3 -0
- package/utils/facets/triad/hexagon-triad/resolveHexagonTriadItems.ts +60 -0
- package/utils/{shiftingHeading → layouts/shifting-heading}/collectShiftingIntroNodes.ts +1 -0
- package/utils/layouts/table-of-contents/calculateTocCenterAlignmentOffset.ts +17 -0
- package/utils/{tableOfContents → layouts/table-of-contents}/calculateTocMarkerPositions.ts +0 -12
- package/utils/{tableOfContents → layouts/table-of-contents}/createTocConnectorPath.ts +11 -5
- package/utils/{mergeUno → merge-uno}/classifyVisual.ts +1 -1
- package/utils/{mergeUno → merge-uno}/collectClassNames.ts +9 -3
- package/utils/process/arc-arrow-process/resolveArcArrowProcessItems.ts +180 -0
- package/utils/pyramid/circular-pyramid/context.ts +1 -4
- package/utils/pyramid/circular-pyramid/createCircularPyramidGeometry.ts +6 -10
- package/utils/pyramid/shared/colors.ts +33 -83
- package/utils/pyramid/shared/constants.ts +2 -2
- package/utils/pyramid/shared/types.ts +0 -5
- package/utils/pyramid/square-pyramid/context.ts +1 -4
- package/utils/pyramid/square-pyramid/createSquarePyramidGeometry.ts +6 -10
- package/utils/useDiagramAutoScale.ts +8 -6
- package/utils/useMergedUnoAttrs.ts +9 -5
- package/components/card/chevron-card/ChevronCardHeading.vue +0 -39
- package/components/card/horiz-card/HorizCardHeading.vue +0 -47
- package/components/card/vert-card/VertCardHeading.vue +0 -68
- package/components/card/vert-card/VertCardTitle.vue +0 -76
- package/components/comparisons/arc-comparison/ArcComparisonContents.vue +0 -17
- package/components/comparisons/arc-comparison/ArcComparisonTitle.vue +0 -29
- package/components/core/arc-orbit/ArcOrbitContents.vue +0 -18
- package/components/core/arc-orbit/ArcOrbitTitle.vue +0 -50
- package/components/defense-in-depth/arc-did/ArcDiDLayer.vue +0 -321
- package/components/defense-in-depth/arc-did/ArcDiDLayerParts.vue +0 -11
- package/components/facets/tetrad/rect-orbit-tetrad/RectOrbitTetradCenter.vue +0 -53
- package/components/facets/tetrad/rect-orbit-tetrad/RectOrbitTetradContent.vue +0 -39
- package/components/facets/tetrad/rect-orbit-tetrad/RectOrbitTetradHeading.vue +0 -44
- package/components/facets/triad/gear-triad/GearTriadContents.vue +0 -111
- package/components/facets/triad/gear-triad/GearTriadDescription.vue +0 -38
- package/components/facets/triad/hex-triad/HexTriadCenterBadge.vue +0 -51
- package/components/facets/triad/hex-triad/HexTriadContent.vue +0 -20
- package/components/facets/triad/hex-triad/HexTriadHeading.vue +0 -28
- package/layouts/core/table-of-contents.vue +0 -30
- package/utils/arcArrowProcess/resolveArcArrowProcessItems.ts +0 -189
- package/utils/arcComparison/resolveArcComparisonItems.ts +0 -102
- package/utils/chevronCard/createChevronCardGeometry.ts +0 -48
- package/utils/chevronCard/index.ts +0 -2
- package/utils/defenseInDepth/arcDid/index.ts +0 -3
- package/utils/defenseInDepth/index.ts +0 -2
- package/utils/defenseInDepth/shared/colors.ts +0 -121
- package/utils/defenseInDepth/shared/constants.ts +0 -14
- package/utils/defenseInDepth/shared/index.ts +0 -3
- package/utils/hexTriad/context.ts +0 -25
- package/utils/hexTriad/index.ts +0 -3
- package/utils/hexTriad/resolveHexTriadItems.ts +0 -63
- package/utils/horizCard/context.ts +0 -13
- package/utils/horizCard/index.ts +0 -2
- package/utils/pyramid/index.ts +0 -3
- package/utils/rectOrbitTetrad/context.ts +0 -31
- package/utils/rectOrbitTetrad/index.ts +0 -3
- package/utils/tableComparison/constants.ts +0 -72
- package/utils/tableOfContents/calculateTocCenterAlignmentOffset.ts +0 -11
- package/utils/vertCard/context.ts +0 -18
- package/utils/vertCard/index.ts +0 -2
- package/utils/{arcComparison → comparisons/arc-comparison}/index.ts +0 -0
- package/utils/{tableComparison → comparisons/table-comparison}/index.ts +0 -0
- package/utils/{arcOrbit → core/arc-orbit}/context.ts +0 -0
- package/utils/{arcOrbit → core/arc-orbit}/createArcOrbitGeometry.ts +0 -0
- package/utils/{arcOrbit → core/arc-orbit}/index.ts +0 -0
- package/utils/{arrowTriad → facets/triad/arrow-triad}/context.ts +0 -0
- package/utils/{arrowTriad → facets/triad/arrow-triad}/createArrowTriadGeometry.ts +0 -0
- package/utils/{arrowTriad → facets/triad/arrow-triad}/index.ts +0 -0
- package/utils/{gearTriad → facets/triad/gear-triad}/index.ts +0 -0
- package/utils/{tableOfContents → layouts/table-of-contents}/calculateUniformTocArticleWidth.ts +0 -0
- package/utils/{tableOfContents → layouts/table-of-contents}/createTocArcPath.ts +0 -0
- package/utils/{tableOfContents → layouts/table-of-contents}/index.ts +0 -0
- package/utils/{mergeUno → merge-uno}/classifyLayout.ts +0 -0
- package/utils/{mergeUno → merge-uno}/classifySimple.ts +0 -0
- package/utils/{mergeUno → merge-uno}/classifyTypography.ts +0 -0
- package/utils/{mergeUno → merge-uno}/classifyUtility.ts +0 -0
- package/utils/{mergeUno → merge-uno}/index.ts +0 -0
- package/utils/{mergeUno → merge-uno}/mergeClassValues.ts +0 -0
- package/utils/{mergeUno → merge-uno}/splitVariantScope.ts +1 -1
- package/utils/{mergeUno → merge-uno}/types.ts +0 -0
- package/utils/{arcArrowProcess → process/arc-arrow-process}/context.ts +1 -1
- /package/utils/{arcArrowProcess → process/arc-arrow-process}/createArcArrowProcessGeometry.ts +0 -0
- /package/utils/{arcArrowProcess → process/arc-arrow-process}/index.ts +0 -0
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ For the pre-refactor inventory of all components, props, slots, layouts, and
|
|
|
6
6
|
migration-sensitive behavior, see [Component baseline](./COMPONENTS_BASELINE.md).
|
|
7
7
|
|
|
8
8
|
For Alpha's light-only academic styling, combine this addon with
|
|
9
|
-
`@alphacifer/slidev-theme
|
|
9
|
+
`@alphacifer/slidev-academic-theme`.
|
|
10
10
|
|
|
11
11
|
## Installation
|
|
12
12
|
|
|
@@ -21,10 +21,71 @@ addons:
|
|
|
21
21
|
---
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
+
## Shared color tokens
|
|
25
|
+
|
|
26
|
+
The addon installs `@alphacifer/slidev-core-theme` automatically for shared
|
|
27
|
+
CSS custom properties, typography defaults, and semantic UnoCSS utilities. The
|
|
28
|
+
tokens live in a low-priority cascade layer, so theme and deck values override
|
|
29
|
+
them. Set a palette in your deck's `style.css`:
|
|
30
|
+
|
|
31
|
+
```css
|
|
32
|
+
:root {
|
|
33
|
+
--alpha-primary: #f8fafc;
|
|
34
|
+
--alpha-foreground-primary: #0f172a;
|
|
35
|
+
--alpha-foreground-accent: #0284c7;
|
|
36
|
+
--alpha-stroke-primary: #cbd5e1;
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Use `bg-primary`, `text-foreground-primary`, `text-foreground-accent`,
|
|
41
|
+
`border-stroke-primary`, `fill-primary`, and `stroke-stroke-primary` in slide
|
|
42
|
+
markup. The utilities have light palette fallbacks if a theme does not define
|
|
43
|
+
the variables. The Academic Theme sets its own values for the same tokens.
|
|
44
|
+
|
|
45
|
+
Components expose short, namespaced variables such as `--alpha-arc-arrow-process-heading`
|
|
46
|
+
and `--alpha-horizontal-card-accent`. Each compound component has one `style.css` beside
|
|
47
|
+
its Vue files. For example, `components/process/arc-arrow-process/style.css`
|
|
48
|
+
defines the colors for the process, arrow, icon, and heading parts together.
|
|
49
|
+
Standalone components use a file such as `QnA.style.css`.
|
|
50
|
+
|
|
51
|
+
The package's `style.css` imports all component palettes. Import it when using
|
|
52
|
+
components outside Slidev:
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
import '@alphacifer/slidev-addon-theme/style.css';
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Shared colors are aliased inside the component palette, and component variables
|
|
59
|
+
can be overridden globally or on a specific instance:
|
|
60
|
+
|
|
61
|
+
```css
|
|
62
|
+
:root {
|
|
63
|
+
--alpha-arc-orbit-guide-stroke: var(--alpha-stroke-primary);
|
|
64
|
+
--alpha-arc-comparison-guide-stroke: #94a3b8;
|
|
65
|
+
--alpha-horizontal-card-accent: #ea583a;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.custom-card {
|
|
69
|
+
--alpha-horizontal-card-accent: #2563eb;
|
|
70
|
+
--alpha-horizontal-card-icon-bg: #dbeafe;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.custom-pyramid {
|
|
74
|
+
--alpha-square-pyramid-accent: #7c3aed;
|
|
75
|
+
--alpha-square-pyramid-stack-1-color: #a78bfa;
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Component color props still take precedence over CSS variable defaults.
|
|
80
|
+
Variables with an `initial` default use the component's runtime fallback—for
|
|
81
|
+
example, an icon background derived from its color prop. Indexed palette
|
|
82
|
+
overrides such as `--alpha-square-pyramid-stack-1-color` and
|
|
83
|
+
`--alpha-table-comparison-col-1-background` also keep their item-specific fallbacks.
|
|
84
|
+
|
|
24
85
|
## Core
|
|
25
86
|
|
|
26
87
|
- Components: `Date`, `QnA`, `Quote`, `ReflectedTitle`, `Speaker`
|
|
27
|
-
- Layouts: `arc-toc`, `bg-center
|
|
88
|
+
- Layouts: `arc-toc`, `bg-center`
|
|
28
89
|
|
|
29
90
|
## Shifting heading
|
|
30
91
|
|
|
@@ -34,97 +95,95 @@ addons:
|
|
|
34
95
|
|
|
35
96
|
## Thanks
|
|
36
97
|
|
|
37
|
-
- Components: `
|
|
98
|
+
- Components: `SquareThanks`, `ThanksOutlineSquare`, `ThanksSquare`
|
|
38
99
|
- Layout: `thanks`
|
|
39
100
|
|
|
40
|
-
##
|
|
101
|
+
## Hexagon triad
|
|
41
102
|
|
|
42
|
-
- Components: `
|
|
103
|
+
- Components: `HexagonTriad`, `HexagonTriadCallout`, `HexagonTriadBadge`, `HexagonTriadHeading`, `HexagonTriadContent`
|
|
43
104
|
|
|
44
105
|
```vue
|
|
45
|
-
<
|
|
46
|
-
<
|
|
47
|
-
<
|
|
48
|
-
<
|
|
49
|
-
<
|
|
50
|
-
</
|
|
51
|
-
<
|
|
52
|
-
<
|
|
53
|
-
<
|
|
54
|
-
<
|
|
55
|
-
</
|
|
56
|
-
<
|
|
57
|
-
<
|
|
58
|
-
<
|
|
59
|
-
<
|
|
60
|
-
</
|
|
61
|
-
</
|
|
106
|
+
<HexagonTriad>
|
|
107
|
+
<HexagonTriadCallout>
|
|
108
|
+
<HexagonTriadBadge>01</HexagonTriadBadge>
|
|
109
|
+
<HexagonTriadHeading>Performance</HexagonTriadHeading>
|
|
110
|
+
<HexagonTriadContent>Fast builds, instant feedback, and zero-overhead runtime.</HexagonTriadContent>
|
|
111
|
+
</HexagonTriadCallout>
|
|
112
|
+
<HexagonTriadCallout>
|
|
113
|
+
<HexagonTriadBadge>02</HexagonTriadBadge>
|
|
114
|
+
<HexagonTriadHeading>Reliability</HexagonTriadHeading>
|
|
115
|
+
<HexagonTriadContent>Strict type safety paired with deterministic test suites.</HexagonTriadContent>
|
|
116
|
+
</HexagonTriadCallout>
|
|
117
|
+
<HexagonTriadCallout>
|
|
118
|
+
<HexagonTriadBadge>03</HexagonTriadBadge>
|
|
119
|
+
<HexagonTriadHeading>Scalability</HexagonTriadHeading>
|
|
120
|
+
<HexagonTriadContent>Seamless growth across packages, tools, and workflows.</HexagonTriadContent>
|
|
121
|
+
</HexagonTriadCallout>
|
|
122
|
+
</HexagonTriad>
|
|
62
123
|
```
|
|
63
124
|
|
|
64
125
|
## Gear triad
|
|
65
126
|
|
|
66
|
-
- Components: `GearTriad`, `GearTriadCallout`, `GearTriadHeading`, `
|
|
127
|
+
- Components: `GearTriad`, `GearTriadCallout`, `GearTriadHeading`, `GearTriadContent`, `GearTriadDetails`, `GearTriadDetailsHeading`, `GearTriadDetailsContent`, `GearTriadDetail`, `GearTriadIcon`, `GearTriadCenter`
|
|
67
128
|
|
|
68
129
|
```vue
|
|
69
130
|
<GearTriad>
|
|
70
131
|
<GearTriadCallout>
|
|
71
132
|
<GearTriadHeading>Option 1</GearTriadHeading>
|
|
72
|
-
<
|
|
73
|
-
|
|
74
|
-
</
|
|
133
|
+
<GearTriadContent>
|
|
134
|
+
Formulate testable research questions and theoretical models.
|
|
135
|
+
</GearTriadContent>
|
|
75
136
|
</GearTriadCallout>
|
|
76
137
|
<GearTriadCallout>
|
|
77
138
|
<GearTriadHeading>Option 2</GearTriadHeading>
|
|
78
|
-
<
|
|
79
|
-
|
|
80
|
-
</
|
|
139
|
+
<GearTriadContent>
|
|
140
|
+
Execute controlled investigations with automated measurement pipelines.
|
|
141
|
+
</GearTriadContent>
|
|
81
142
|
</GearTriadCallout>
|
|
82
143
|
<GearTriadCallout>
|
|
83
144
|
<GearTriadHeading>Option 3</GearTriadHeading>
|
|
84
|
-
<
|
|
85
|
-
|
|
86
|
-
</
|
|
145
|
+
<GearTriadContent>
|
|
146
|
+
Subject findings to reproducible peer review and empirical analysis.
|
|
147
|
+
</GearTriadContent>
|
|
87
148
|
</GearTriadCallout>
|
|
88
149
|
</GearTriad>
|
|
89
150
|
```
|
|
90
151
|
|
|
91
|
-
##
|
|
152
|
+
## Horizontal card
|
|
92
153
|
|
|
93
|
-
- Components: `
|
|
154
|
+
- Components: `HorizontalCard`, `HorizontalCardBadge`, `HorizontalCardContent`, `HorizontalCardIcon`
|
|
94
155
|
|
|
95
156
|
```vue
|
|
96
|
-
|
|
97
|
-
<HorizCard
|
|
157
|
+
<HorizontalCard
|
|
98
158
|
step="01"
|
|
99
|
-
title="
|
|
100
|
-
|
|
101
|
-
|
|
159
|
+
title="Discovery"
|
|
160
|
+
>
|
|
161
|
+
<HorizontalCardContent>Explore ideas and define requirements.</HorizontalCardContent>
|
|
162
|
+
</HorizontalCard>
|
|
102
163
|
|
|
103
164
|
<!-- With custom icon and color -->
|
|
104
|
-
<
|
|
165
|
+
<HorizontalCard
|
|
105
166
|
step="02"
|
|
106
167
|
title="Discovery"
|
|
107
|
-
description="Explore ideas and prototype user experiences."
|
|
108
168
|
color="#2563eb"
|
|
109
169
|
>
|
|
110
170
|
<template #icon>
|
|
111
171
|
<div class="i-carbon-search text-4xl" />
|
|
112
172
|
</template>
|
|
113
|
-
|
|
173
|
+
<HorizontalCardContent>Explore ideas and prototype user experiences.</HorizontalCardContent>
|
|
174
|
+
</HorizontalCard>
|
|
114
175
|
```
|
|
115
176
|
|
|
116
177
|
## Arc comparison
|
|
117
178
|
|
|
118
|
-
- Components: `ArcComparison`, `ArcComparisonLeft`, `ArcComparisonRight`, `
|
|
179
|
+
- Components: `ArcComparison`, `ArcComparisonLeft`, `ArcComparisonRight`, `ArcComparisonOrbit`, `ArcComparisonBadge`, `ArcComparisonHeading`, `ArcComparisonContent`
|
|
119
180
|
|
|
120
181
|
```vue
|
|
121
|
-
<!-- Self-contained mockup default (3 points) -->
|
|
122
|
-
|
|
123
182
|
<!-- 4 points mode -->
|
|
124
183
|
<ArcComparison>
|
|
125
184
|
<ArcComparisonLeft color="#ea580c">
|
|
126
|
-
<
|
|
127
|
-
|
|
185
|
+
<template #title>Traditional<br />Monolith</template>
|
|
186
|
+
|
|
128
187
|
<ArcComparisonOrbit>
|
|
129
188
|
<ArcComparisonBadge>01</ArcComparisonBadge>
|
|
130
189
|
<ArcComparisonHeading>Coupled State</ArcComparisonHeading>
|
|
@@ -146,12 +205,12 @@ addons:
|
|
|
146
205
|
Unchecked memory leaks or crashes can bring down the entire system.
|
|
147
206
|
</ArcComparisonContent>
|
|
148
207
|
</ArcComparisonOrbit>
|
|
149
|
-
|
|
208
|
+
|
|
150
209
|
</ArcComparisonLeft>
|
|
151
210
|
|
|
152
211
|
<ArcComparisonRight color="#0284c7">
|
|
153
|
-
<
|
|
154
|
-
|
|
212
|
+
<template #title>Distributed<br />Microservices</template>
|
|
213
|
+
|
|
155
214
|
<ArcComparisonOrbit>
|
|
156
215
|
<ArcComparisonBadge>01</ArcComparisonBadge>
|
|
157
216
|
<ArcComparisonHeading>Bounded Context</ArcComparisonHeading>
|
|
@@ -173,39 +232,38 @@ addons:
|
|
|
173
232
|
Failures remain localized without cascading across service domains.
|
|
174
233
|
</ArcComparisonContent>
|
|
175
234
|
</ArcComparisonOrbit>
|
|
176
|
-
|
|
235
|
+
|
|
177
236
|
</ArcComparisonRight>
|
|
178
237
|
</ArcComparison>
|
|
179
238
|
```
|
|
180
239
|
|
|
181
240
|
## Table comparison
|
|
182
241
|
|
|
183
|
-
- Components: `TableComparison`, `
|
|
242
|
+
- Components: `TableComparison`, `TableComparisonColumns`, `TableComparisonColumn`, `TableComparisonRows`, `TableComparisonRow`, `TableComparisonCell`
|
|
184
243
|
|
|
185
244
|
```vue
|
|
186
|
-
<!-- Self-contained mockup default (5 columns x 6 rows) -->
|
|
187
|
-
<TableComparison />
|
|
188
|
-
|
|
189
245
|
<!-- Custom compound comparison structure -->
|
|
190
246
|
<TableComparison>
|
|
191
|
-
<
|
|
192
|
-
<
|
|
247
|
+
<TableComparisonColumns>
|
|
248
|
+
<TableComparisonColumn color="#ff0000">
|
|
193
249
|
Column 1
|
|
194
|
-
</
|
|
195
|
-
<
|
|
250
|
+
</TableComparisonColumn>
|
|
251
|
+
<TableComparisonColumn color="#00ff00">
|
|
196
252
|
Column 2
|
|
197
|
-
</
|
|
198
|
-
<
|
|
253
|
+
</TableComparisonColumn>
|
|
254
|
+
<TableComparisonColumn color="#0000ff">
|
|
199
255
|
Column 3
|
|
200
|
-
</
|
|
201
|
-
</
|
|
256
|
+
</TableComparisonColumn>
|
|
257
|
+
</TableComparisonColumns>
|
|
202
258
|
<TableComparisonRows>
|
|
203
|
-
<TableComparisonRow
|
|
259
|
+
<TableComparisonRow>
|
|
260
|
+
<template #heading>Row 1</template>
|
|
204
261
|
<TableComparisonCell>Row 1, Cell 1</TableComparisonCell>
|
|
205
262
|
<TableComparisonCell>Row 1, Cell 2</TableComparisonCell>
|
|
206
263
|
<TableComparisonCell>Row 1, Cell 3</TableComparisonCell>
|
|
207
264
|
</TableComparisonRow>
|
|
208
|
-
<TableComparisonRow
|
|
265
|
+
<TableComparisonRow>
|
|
266
|
+
<template #heading>Row 2</template>
|
|
209
267
|
<TableComparisonCell>Row 2, Cell 1</TableComparisonCell>
|
|
210
268
|
<TableComparisonCell>Row 2, Cell 2</TableComparisonCell>
|
|
211
269
|
<TableComparisonCell>Row 2, Cell 3</TableComparisonCell>
|
|
@@ -216,30 +274,30 @@ addons:
|
|
|
216
274
|
|
|
217
275
|
## Circular pyramid
|
|
218
276
|
|
|
219
|
-
- Components: `CircularPyramid`, `CircularPyramidStack`, `
|
|
277
|
+
- Components: `CircularPyramid`, `CircularPyramidStack`, `CircularPyramidStackHeading`, `CircularPyramidStackContent`
|
|
220
278
|
|
|
221
279
|
```vue
|
|
222
280
|
<CircularPyramid>
|
|
223
281
|
<CircularPyramidStack>
|
|
224
|
-
<
|
|
282
|
+
<CircularPyramidStackHeading>01 Strategy</CircularPyramidStackHeading>
|
|
225
283
|
<CircularPyramidStackContent>
|
|
226
284
|
Define clear technical north stars, design systems, and cross-team alignment.
|
|
227
285
|
</CircularPyramidStackContent>
|
|
228
286
|
</CircularPyramidStack>
|
|
229
287
|
<CircularPyramidStack>
|
|
230
|
-
<
|
|
288
|
+
<CircularPyramidStackHeading>02 Architecture</CircularPyramidStackHeading>
|
|
231
289
|
<CircularPyramidStackContent>
|
|
232
290
|
Establish domain boundaries, type safety contracts, and scalable infrastructure.
|
|
233
291
|
</CircularPyramidStackContent>
|
|
234
292
|
</CircularPyramidStack>
|
|
235
293
|
<CircularPyramidStack>
|
|
236
|
-
<
|
|
294
|
+
<CircularPyramidStackHeading>03 Implementation</CircularPyramidStackHeading>
|
|
237
295
|
<CircularPyramidStackContent>
|
|
238
296
|
Build high-performance components with smooth motion and responsive layout.
|
|
239
297
|
</CircularPyramidStackContent>
|
|
240
298
|
</CircularPyramidStack>
|
|
241
299
|
<CircularPyramidStack>
|
|
242
|
-
<
|
|
300
|
+
<CircularPyramidStackHeading>04 Verification</CircularPyramidStackHeading>
|
|
243
301
|
<CircularPyramidStackContent>
|
|
244
302
|
Validate behavior with rigorous unit suites, formatting, and live slide builds.
|
|
245
303
|
</CircularPyramidStackContent>
|
|
@@ -256,30 +314,30 @@ addons:
|
|
|
256
314
|
|
|
257
315
|
## Square pyramid
|
|
258
316
|
|
|
259
|
-
- Components: `SquarePyramid`, `SquarePyramidStack`, `
|
|
317
|
+
- Components: `SquarePyramid`, `SquarePyramidStack`, `SquarePyramidStackHeading`, `SquarePyramidStackContent`
|
|
260
318
|
|
|
261
319
|
```vue
|
|
262
320
|
<SquarePyramid>
|
|
263
321
|
<SquarePyramidStack>
|
|
264
|
-
<
|
|
322
|
+
<SquarePyramidStackHeading>01 Strategy</SquarePyramidStackHeading>
|
|
265
323
|
<SquarePyramidStackContent>
|
|
266
324
|
Define clear technical north stars, design systems, and cross-team alignment.
|
|
267
325
|
</SquarePyramidStackContent>
|
|
268
326
|
</SquarePyramidStack>
|
|
269
327
|
<SquarePyramidStack>
|
|
270
|
-
<
|
|
328
|
+
<SquarePyramidStackHeading>02 Architecture</SquarePyramidStackHeading>
|
|
271
329
|
<SquarePyramidStackContent>
|
|
272
330
|
Establish domain boundaries, type safety contracts, and scalable infrastructure.
|
|
273
331
|
</SquarePyramidStackContent>
|
|
274
332
|
</SquarePyramidStack>
|
|
275
333
|
<SquarePyramidStack>
|
|
276
|
-
<
|
|
334
|
+
<SquarePyramidStackHeading>03 Implementation</SquarePyramidStackHeading>
|
|
277
335
|
<SquarePyramidStackContent>
|
|
278
336
|
Build high-performance components with smooth motion and responsive layout.
|
|
279
337
|
</SquarePyramidStackContent>
|
|
280
338
|
</SquarePyramidStack>
|
|
281
339
|
<SquarePyramidStack>
|
|
282
|
-
<
|
|
340
|
+
<SquarePyramidStackHeading>04 Verification</SquarePyramidStackHeading>
|
|
283
341
|
<SquarePyramidStackContent>
|
|
284
342
|
Validate behavior with rigorous unit suites, formatting, and live slide builds.
|
|
285
343
|
</SquarePyramidStackContent>
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import {
|
|
3
|
+
computed,
|
|
4
|
+
Fragment,
|
|
5
|
+
isVNode,
|
|
6
|
+
provide,
|
|
7
|
+
useSlots,
|
|
8
|
+
type VNode,
|
|
9
|
+
} from 'vue';
|
|
10
|
+
|
|
11
|
+
import { CHEVRON_CARD_KEY } from '../../../utils/card/chevron-card';
|
|
5
12
|
import { useMergedUnoAttrs } from '../../../utils/useMergedUnoAttrs';
|
|
6
13
|
import ChevronCardBadge from './ChevronCardBadge.vue';
|
|
7
14
|
import ChevronCardContent from './ChevronCardContent.vue';
|
|
8
|
-
import ChevronCardHeading from './ChevronCardHeading.vue';
|
|
9
15
|
|
|
10
16
|
defineOptions({
|
|
11
17
|
name: 'ChevronCard',
|
|
@@ -13,6 +19,7 @@ defineOptions({
|
|
|
13
19
|
});
|
|
14
20
|
|
|
15
21
|
export interface IChevronCardProps {
|
|
22
|
+
readonly title?: string | VNode;
|
|
16
23
|
readonly step?: string | number;
|
|
17
24
|
readonly icon?: string | object;
|
|
18
25
|
readonly color?: string;
|
|
@@ -28,11 +35,12 @@ export interface IChevronCardProps {
|
|
|
28
35
|
}
|
|
29
36
|
|
|
30
37
|
const props = withDefaults(defineProps<IChevronCardProps>(), {
|
|
38
|
+
title: undefined,
|
|
31
39
|
step: '01',
|
|
32
40
|
icon: undefined,
|
|
33
|
-
color: '
|
|
41
|
+
color: 'var(--alpha-chevron-card-accent)',
|
|
34
42
|
width: undefined,
|
|
35
|
-
cardBg: '
|
|
43
|
+
cardBg: 'var(--alpha-chevron-card-bg)',
|
|
36
44
|
height: undefined,
|
|
37
45
|
textColor: undefined,
|
|
38
46
|
animation: true,
|
|
@@ -77,13 +85,6 @@ function isBadgeNode(node: VNode): boolean {
|
|
|
77
85
|
);
|
|
78
86
|
}
|
|
79
87
|
|
|
80
|
-
function isHeadingNode(node: VNode): boolean {
|
|
81
|
-
return (
|
|
82
|
-
hasComponentName(node.type, 'ChevronCardHeading') ||
|
|
83
|
-
node.type === ChevronCardHeading
|
|
84
|
-
);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
88
|
function isContentNode(node: VNode): boolean {
|
|
88
89
|
return (
|
|
89
90
|
hasComponentName(node.type, 'ChevronCardContent') ||
|
|
@@ -103,17 +104,13 @@ const slottedBadge = computed(() => {
|
|
|
103
104
|
return defaultNodes.value.find(isBadgeNode);
|
|
104
105
|
});
|
|
105
106
|
|
|
106
|
-
const slottedHeading = computed(() => {
|
|
107
|
-
return defaultNodes.value.find(isHeadingNode);
|
|
108
|
-
});
|
|
109
|
-
|
|
110
107
|
const slottedContent = computed(() => {
|
|
111
108
|
return defaultNodes.value.find(isContentNode);
|
|
112
109
|
});
|
|
113
110
|
|
|
114
111
|
const otherSlottedNodes = computed(() => {
|
|
115
112
|
return defaultNodes.value.filter((node) => {
|
|
116
|
-
return !isBadgeNode(node) && !
|
|
113
|
+
return !isBadgeNode(node) && !isContentNode(node);
|
|
117
114
|
});
|
|
118
115
|
});
|
|
119
116
|
|
|
@@ -121,8 +118,10 @@ const resolvedStep = computed(() => {
|
|
|
121
118
|
return props.step;
|
|
122
119
|
});
|
|
123
120
|
|
|
124
|
-
const
|
|
125
|
-
return props.color
|
|
121
|
+
const customColor = computed(() => {
|
|
122
|
+
return props.color !== 'var(--alpha-chevron-card-accent)'
|
|
123
|
+
? props.color
|
|
124
|
+
: undefined;
|
|
126
125
|
});
|
|
127
126
|
|
|
128
127
|
const resolvedCardBg = computed(() => {
|
|
@@ -134,12 +133,12 @@ const resolvedTextColor = computed(() => {
|
|
|
134
133
|
});
|
|
135
134
|
|
|
136
135
|
const resolvedTitleColor = computed(() => {
|
|
137
|
-
return props.titleColor;
|
|
136
|
+
return props.titleColor ?? 'var(--alpha-chevron-card-title)';
|
|
138
137
|
});
|
|
139
138
|
|
|
140
139
|
provide(CHEVRON_CARD_KEY, {
|
|
141
140
|
step: resolvedStep,
|
|
142
|
-
color:
|
|
141
|
+
color: customColor,
|
|
143
142
|
cardBg: resolvedCardBg,
|
|
144
143
|
textColor: resolvedTextColor,
|
|
145
144
|
titleColor: resolvedTitleColor,
|
|
@@ -176,19 +175,17 @@ const { className, forwardedAttrs } = useMergedUnoAttrs(
|
|
|
176
175
|
:style="{
|
|
177
176
|
width: resolvedWidth,
|
|
178
177
|
minHeight: resolvedHeight ?? '112px',
|
|
179
|
-
fontFamily:
|
|
180
|
-
'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, sans-serif',
|
|
181
178
|
}"
|
|
182
179
|
>
|
|
183
180
|
<!-- Chevron Step Badge Layer -->
|
|
184
|
-
<div class="
|
|
181
|
+
<div class="shrink-0 z-10 flex">
|
|
185
182
|
<slot name="badge">
|
|
186
183
|
<component :is="slottedBadge" v-if="slottedBadge" />
|
|
187
184
|
<ChevronCardBadge
|
|
188
185
|
v-else
|
|
189
186
|
:step="resolvedStep"
|
|
190
187
|
:icon="props.icon"
|
|
191
|
-
:color="
|
|
188
|
+
:color="customColor"
|
|
192
189
|
:width="props.chevronWidth"
|
|
193
190
|
:notch-depth="props.notchDepth"
|
|
194
191
|
/>
|
|
@@ -196,18 +193,33 @@ const { className, forwardedAttrs } = useMergedUnoAttrs(
|
|
|
196
193
|
</div>
|
|
197
194
|
<!-- Content Body Layer -->
|
|
198
195
|
<div
|
|
199
|
-
class="flex-1 min-w-0 flex flex-col justify-center py-4 pr-6"
|
|
196
|
+
class="flex-1 min-w-0 flex flex-col justify-center py-4 pr-6 bg-(--alpha-chevron-card-bg)"
|
|
200
197
|
:style="{
|
|
201
|
-
|
|
198
|
+
'--alpha-chevron-card-bg':
|
|
199
|
+
props.cardBg !== 'var(--alpha-chevron-card-bg)'
|
|
200
|
+
? resolvedCardBg
|
|
201
|
+
: undefined,
|
|
202
202
|
borderRadius: `0 ${props.borderRadius}px ${props.borderRadius}px 0`,
|
|
203
203
|
marginLeft: `-${props.notchDepth}px`,
|
|
204
204
|
paddingLeft: `${props.notchDepth + 20}px`,
|
|
205
205
|
}"
|
|
206
206
|
>
|
|
207
|
-
<
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
207
|
+
<h4
|
|
208
|
+
v-if="$slots.title || props.title != null"
|
|
209
|
+
class="alpha-chevron-card-title font-bold uppercase tracking-wider leading-tight mb-1 select-none font-sans text-(--alpha-chevron-card-title)"
|
|
210
|
+
:style="
|
|
211
|
+
props.titleColor
|
|
212
|
+
? { '--alpha-chevron-card-title': props.titleColor }
|
|
213
|
+
: undefined
|
|
214
|
+
"
|
|
215
|
+
>
|
|
216
|
+
<slot v-if="$slots.title" name="title" />
|
|
217
|
+
<component :is="props.title" v-else-if="isVNode(props.title)" />
|
|
218
|
+
<span v-else-if="typeof props.title === 'string'">{{
|
|
219
|
+
props.title
|
|
220
|
+
}}</span>
|
|
221
|
+
</h4>
|
|
222
|
+
<slot name="content">
|
|
211
223
|
<component :is="slottedContent" v-if="slottedContent" />
|
|
212
224
|
</slot>
|
|
213
225
|
<component
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { computed, inject } from 'vue';
|
|
3
3
|
|
|
4
|
-
import { CHEVRON_CARD_KEY } from '../../../utils/
|
|
4
|
+
import { CHEVRON_CARD_KEY } from '../../../utils/card/chevron-card';
|
|
5
|
+
import { useMergedUnoAttrs } from '../../../utils/useMergedUnoAttrs';
|
|
5
6
|
|
|
6
7
|
defineOptions({
|
|
7
8
|
name: 'ChevronCardBadge',
|
|
9
|
+
inheritAttrs: false,
|
|
8
10
|
});
|
|
9
11
|
|
|
10
12
|
export interface IChevronCardBadgeProps {
|
|
@@ -27,18 +29,23 @@ const props = withDefaults(defineProps<IChevronCardBadgeProps>(), {
|
|
|
27
29
|
|
|
28
30
|
const cardContext = inject(CHEVRON_CARD_KEY, undefined);
|
|
29
31
|
|
|
30
|
-
const
|
|
31
|
-
return props.color ?? cardContext?.color.value
|
|
32
|
+
const customColor = computed(() => {
|
|
33
|
+
return props.color ?? cardContext?.color.value;
|
|
32
34
|
});
|
|
33
35
|
|
|
34
36
|
const resolvedStep = computed(() => {
|
|
35
37
|
return props.step ?? cardContext?.step.value ?? '01';
|
|
36
38
|
});
|
|
39
|
+
|
|
40
|
+
const { className, forwardedAttrs } = useMergedUnoAttrs(
|
|
41
|
+
'alpha-chevron-card-badge relative select-none shrink-0 flex items-center justify-center bg-(--alpha-chevron-card-badge-bg) text-(--alpha-chevron-card-badge-foreground)',
|
|
42
|
+
);
|
|
37
43
|
</script>
|
|
38
44
|
|
|
39
45
|
<template>
|
|
40
46
|
<div
|
|
41
|
-
|
|
47
|
+
v-bind="forwardedAttrs()"
|
|
48
|
+
:class="className()"
|
|
42
49
|
:style="{
|
|
43
50
|
width: `${props.width}px`,
|
|
44
51
|
height: props.height
|
|
@@ -46,7 +53,7 @@ const resolvedStep = computed(() => {
|
|
|
46
53
|
? `${props.height}px`
|
|
47
54
|
: props.height
|
|
48
55
|
: '100%',
|
|
49
|
-
|
|
56
|
+
'--alpha-chevron-card-badge-bg': customColor,
|
|
50
57
|
clipPath: `polygon(0% 0%, calc(100% - ${props.notchDepth}px) 0%, 100% 50%, calc(100% - ${props.notchDepth}px) 100%, 0% 100%, ${props.notchDepth}px 50%)`,
|
|
51
58
|
}"
|
|
52
59
|
>
|
|
@@ -55,16 +62,15 @@ const resolvedStep = computed(() => {
|
|
|
55
62
|
<component
|
|
56
63
|
:is="props.icon"
|
|
57
64
|
v-if="typeof props.icon === 'object'"
|
|
58
|
-
class="w-8 h-8
|
|
65
|
+
class="w-8 h-8"
|
|
59
66
|
/>
|
|
60
67
|
<span
|
|
61
68
|
v-else-if="typeof props.icon === 'string'"
|
|
62
|
-
:class="[props.icon, 'text-3xl
|
|
69
|
+
:class="[props.icon, 'text-3xl inline-block']"
|
|
63
70
|
/>
|
|
64
71
|
<span
|
|
65
72
|
v-else
|
|
66
73
|
class="font-extrabold text-[32px] tracking-tight font-sans select-none"
|
|
67
|
-
style="font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;"
|
|
68
74
|
>
|
|
69
75
|
{{ resolvedStep }}
|
|
70
76
|
</span>
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { computed, inject } from 'vue';
|
|
3
3
|
|
|
4
|
-
import { CHEVRON_CARD_KEY } from '../../../utils/
|
|
4
|
+
import { CHEVRON_CARD_KEY } from '../../../utils/card/chevron-card';
|
|
5
|
+
import { useMergedUnoAttrs } from '../../../utils/useMergedUnoAttrs';
|
|
5
6
|
|
|
6
7
|
defineOptions({
|
|
7
8
|
name: 'ChevronCardContent',
|
|
9
|
+
inheritAttrs: false,
|
|
8
10
|
});
|
|
9
11
|
|
|
10
12
|
export interface IChevronCardContentProps {
|
|
@@ -18,22 +20,22 @@ const props = withDefaults(defineProps<IChevronCardContentProps>(), {
|
|
|
18
20
|
const cardContext = inject(CHEVRON_CARD_KEY, undefined);
|
|
19
21
|
|
|
20
22
|
const contentColor = computed(() => {
|
|
21
|
-
return props.color ?? cardContext?.textColor.value ??
|
|
23
|
+
return props.color ?? cardContext?.textColor.value ?? undefined;
|
|
22
24
|
});
|
|
25
|
+
|
|
26
|
+
const { className, forwardedAttrs } = useMergedUnoAttrs(
|
|
27
|
+
'alpha-chevron-card-content leading-[1.45] font-normal tracking-tight select-none font-sans text-(--alpha-chevron-card-content)',
|
|
28
|
+
);
|
|
23
29
|
</script>
|
|
24
30
|
|
|
25
31
|
<template>
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
fontSize: '1rem',
|
|
33
|
-
fontFamily:
|
|
34
|
-
'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, sans-serif',
|
|
35
|
-
}"
|
|
32
|
+
<p
|
|
33
|
+
v-bind="forwardedAttrs()"
|
|
34
|
+
:class="className()"
|
|
35
|
+
:style="
|
|
36
|
+
contentColor ? { '--alpha-chevron-card-content': contentColor } : undefined
|
|
37
|
+
"
|
|
36
38
|
>
|
|
37
39
|
<slot />
|
|
38
|
-
</
|
|
40
|
+
</p>
|
|
39
41
|
</template>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* Color defaults shared by this component family. */
|
|
2
|
+
@layer alpha-theme-tokens {
|
|
3
|
+
:root {
|
|
4
|
+
--alpha-chevron-card-accent: #f59e0b;
|
|
5
|
+
/* Resolved from the component accent or props unless overridden. */
|
|
6
|
+
--alpha-chevron-card-badge-bg: var(--alpha-chevron-card-accent);
|
|
7
|
+
--alpha-chevron-card-badge-foreground: #ffffff;
|
|
8
|
+
--alpha-chevron-card-bg: #f5f5f7;
|
|
9
|
+
--alpha-chevron-card-content: var(--alpha-foreground-primary, #6b7280);
|
|
10
|
+
--alpha-chevron-card-title: var(--alpha-foreground-primary, #4b5563);
|
|
11
|
+
}
|
|
12
|
+
}
|