@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.
Files changed (225) hide show
  1. package/README.md +133 -75
  2. package/components/card/chevron-card/ChevronCard.vue +44 -32
  3. package/components/card/chevron-card/ChevronCardBadge.vue +14 -8
  4. package/components/card/chevron-card/ChevronCardContent.vue +15 -13
  5. package/components/card/chevron-card/style.css +12 -0
  6. package/components/card/{horiz-card/HorizCard.vue → horizontal-card/HorizontalCard.vue} +78 -85
  7. package/components/card/{horiz-card/HorizCardBadge.vue → horizontal-card/HorizontalCardBadge.vue} +15 -10
  8. package/components/card/{horiz-card/HorizCardContent.vue → horizontal-card/HorizontalCardContent.vue} +11 -11
  9. package/components/card/{horiz-card/HorizCardIcon.vue → horizontal-card/HorizontalCardIcon.vue} +24 -38
  10. package/components/card/horizontal-card/style.css +17 -0
  11. package/components/card/{vert-card/VertCard.vue → vertical-card/VerticalCard.vue} +80 -103
  12. package/components/card/{vert-card/VertCardBadge.vue → vertical-card/VerticalCardBadge.vue} +15 -10
  13. package/components/card/{vert-card/VertCardContent.vue → vertical-card/VerticalCardContent.vue} +13 -12
  14. package/components/card/{vert-card/VertCardIcon.vue → vertical-card/VerticalCardIcon.vue} +15 -33
  15. package/components/card/vertical-card/style.css +19 -0
  16. package/components/comparisons/arc-comparison/ArcComparison.vue +376 -80
  17. package/components/comparisons/arc-comparison/ArcComparisonBadge.vue +9 -4
  18. package/components/comparisons/arc-comparison/ArcComparisonContent.vue +9 -4
  19. package/components/comparisons/arc-comparison/ArcComparisonHeading.vue +9 -4
  20. package/components/comparisons/arc-comparison/ArcComparisonLeft.vue +39 -63
  21. package/components/comparisons/arc-comparison/ArcComparisonOrbit.vue +9 -8
  22. package/components/comparisons/arc-comparison/ArcComparisonRight.vue +39 -63
  23. package/components/comparisons/arc-comparison/style.css +27 -0
  24. package/components/comparisons/table-comparison/TableComparison.vue +17 -97
  25. package/components/comparisons/table-comparison/TableComparisonCell.vue +22 -20
  26. package/components/comparisons/table-comparison/{TableComparisonCol.vue → TableComparisonColumn.vue} +16 -14
  27. package/components/comparisons/table-comparison/{TableComparisonCols.vue → TableComparisonColumns.vue} +5 -8
  28. package/components/comparisons/table-comparison/TableComparisonRow.vue +10 -14
  29. package/components/comparisons/table-comparison/TableComparisonRows.vue +1 -4
  30. package/components/comparisons/table-comparison/style.css +15 -0
  31. package/components/core/Date.vue +2 -5
  32. package/components/core/QnA.vue +1 -1
  33. package/components/core/Quote.vue +3 -6
  34. package/components/core/ReflectedTitle.vue +2 -6
  35. package/components/core/Speaker.vue +5 -10
  36. package/components/core/TransitionHeading.vue +2 -5
  37. package/components/core/arc-orbit/ArcOrbit.vue +65 -84
  38. package/components/core/arc-orbit/ArcOrbitBadge.vue +9 -11
  39. package/components/core/arc-orbit/ArcOrbitCallout.vue +30 -32
  40. package/components/core/arc-orbit/ArcOrbitContent.vue +6 -12
  41. package/components/core/arc-orbit/ArcOrbitHeading.vue +13 -11
  42. package/components/core/arc-orbit/style.css +20 -0
  43. package/components/core/style.css +9 -0
  44. package/components/core/thanks/{ThanksContent.vue → SquareThanks.vue} +36 -31
  45. package/components/core/thanks/SquareThanksContent.vue +89 -0
  46. package/components/core/thanks/ThanksOutlineSquare.vue +2 -5
  47. package/components/core/thanks/ThanksSquare.vue +2 -5
  48. package/components/core/thanks/style.css +30 -0
  49. package/components/defense-in-depth/{arc-did/ArcDiD.vue → arc-defense-in-depth/ArcDefenseInDepth.vue} +167 -97
  50. package/components/defense-in-depth/arc-defense-in-depth/ArcDefenseInDepthLayer.vue +240 -0
  51. package/components/defense-in-depth/{arc-did/ArcDiDLayerTitle.vue → arc-defense-in-depth/ArcDefenseInDepthLayerHeading.vue} +27 -29
  52. package/components/defense-in-depth/{arc-did/ArcDiDLayerPart.vue → arc-defense-in-depth/ArcDefenseInDepthLayerPart.vue} +91 -39
  53. package/components/defense-in-depth/{arc-did/ArcDiDLayerSector.vue → arc-defense-in-depth/ArcDefenseInDepthLayerSector.vue} +37 -23
  54. package/components/defense-in-depth/arc-defense-in-depth/style.css +38 -0
  55. package/components/facets/tetrad/{rect-orbit-tetrad/RectOrbitTetrad.vue → rectangle-orbit-tetrad/RectangleOrbitTetrad.vue} +66 -63
  56. package/components/facets/tetrad/{rect-orbit-tetrad/RectOrbitTetradCallout.vue → rectangle-orbit-tetrad/RectangleOrbitTetradCallout.vue} +62 -48
  57. package/components/facets/tetrad/rectangle-orbit-tetrad/RectangleOrbitTetradCenter.vue +54 -0
  58. package/components/facets/tetrad/rectangle-orbit-tetrad/RectangleOrbitTetradContent.vue +44 -0
  59. package/components/facets/tetrad/rectangle-orbit-tetrad/RectangleOrbitTetradHeading.vue +27 -0
  60. package/components/facets/tetrad/{rect-orbit-tetrad/RectOrbitTetradIcon.vue → rectangle-orbit-tetrad/RectangleOrbitTetradIcon.vue} +23 -13
  61. package/components/facets/tetrad/rectangle-orbit-tetrad/style.css +22 -0
  62. package/components/facets/triad/arrow-triad/ArrowTriad.vue +99 -109
  63. package/components/facets/triad/arrow-triad/ArrowTriadCallout.vue +31 -59
  64. package/components/facets/triad/arrow-triad/ArrowTriadContent.vue +18 -13
  65. package/components/facets/triad/arrow-triad/ArrowTriadHeading.vue +20 -13
  66. package/components/facets/triad/arrow-triad/ArrowTriadIcon.vue +14 -9
  67. package/components/facets/triad/arrow-triad/style.css +15 -0
  68. package/components/facets/triad/gear-triad/GearTriad.vue +73 -64
  69. package/components/facets/triad/gear-triad/GearTriadCallout.vue +58 -53
  70. package/components/facets/triad/gear-triad/GearTriadCenter.vue +9 -4
  71. package/components/facets/triad/gear-triad/GearTriadContent.vue +21 -36
  72. package/components/facets/triad/gear-triad/GearTriadDetail.vue +92 -0
  73. package/components/facets/triad/gear-triad/GearTriadDetails.vue +169 -0
  74. package/components/facets/triad/gear-triad/GearTriadDetailsContent.vue +18 -0
  75. package/components/facets/triad/gear-triad/GearTriadDetailsHeading.vue +60 -0
  76. package/components/facets/triad/gear-triad/GearTriadHeading.vue +19 -13
  77. package/components/facets/triad/gear-triad/GearTriadIcon.vue +22 -9
  78. package/components/facets/triad/gear-triad/style.css +26 -0
  79. package/components/facets/triad/{hex-triad/HexTriad.vue → hexagon-triad/HexagonTriad.vue} +81 -63
  80. package/components/facets/triad/{hex-triad/HexTriadBadge.vue → hexagon-triad/HexagonTriadBadge.vue} +38 -12
  81. package/components/facets/triad/{hex-triad/HexTriadCallout.vue → hexagon-triad/HexagonTriadCallout.vue} +35 -31
  82. package/components/facets/triad/hexagon-triad/HexagonTriadCenterBadge.vue +74 -0
  83. package/components/facets/triad/hexagon-triad/HexagonTriadContent.vue +34 -0
  84. package/components/facets/triad/hexagon-triad/HexagonTriadHeading.vue +44 -0
  85. package/components/facets/triad/{hex-triad/HexTriadLayer.vue → hexagon-triad/HexagonTriadLayer.vue} +12 -4
  86. package/components/facets/triad/hexagon-triad/style.css +22 -0
  87. package/components/process/arc-arrow-process/ArcArrowProcess.vue +13 -35
  88. package/components/process/arc-arrow-process/ArcArrowProcessArrow.vue +20 -21
  89. package/components/process/arc-arrow-process/ArcArrowProcessCallout.vue +30 -71
  90. package/components/process/arc-arrow-process/ArcArrowProcessContent.vue +18 -13
  91. package/components/process/arc-arrow-process/ArcArrowProcessHeading.vue +18 -18
  92. package/components/process/arc-arrow-process/ArcArrowProcessIcon.vue +23 -11
  93. package/components/process/arc-arrow-process/style.css +20 -0
  94. package/components/pyramid/circular-pyramid/CircularPyramid.vue +269 -170
  95. package/components/pyramid/circular-pyramid/CircularPyramidStack.vue +70 -52
  96. package/components/pyramid/circular-pyramid/CircularPyramidStackContent.vue +47 -37
  97. package/components/pyramid/circular-pyramid/{CircularPyramidStackTitle.vue → CircularPyramidStackHeading.vue} +49 -45
  98. package/components/pyramid/circular-pyramid/style.css +26 -0
  99. package/components/pyramid/square-pyramid/SquarePyramid.vue +191 -62
  100. package/components/pyramid/square-pyramid/SquarePyramidStack.vue +74 -49
  101. package/components/pyramid/square-pyramid/SquarePyramidStackContent.vue +47 -33
  102. package/components/pyramid/square-pyramid/{SquarePyramidStackTitle.vue → SquarePyramidStackHeading.vue} +49 -41
  103. package/components/pyramid/square-pyramid/style.css +48 -0
  104. package/components/style.css +35 -0
  105. package/layouts/core/arc-toc.vue +40 -45
  106. package/layouts/core/bg-center.vue +7 -6
  107. package/layouts/core/style.css +17 -0
  108. package/layouts/shifting-heading/shifting-intro.vue +4 -13
  109. package/layouts/thanks/thanks.vue +5 -5
  110. package/package.json +8 -6
  111. package/style.css +17 -0
  112. package/uno.config.ts +1 -0
  113. package/utils/activateOnKeyboard.ts +14 -0
  114. package/utils/{chevronCard → card/chevron-card}/context.ts +1 -1
  115. package/utils/card/chevron-card/index.ts +1 -0
  116. package/utils/card/horizontal-card/context.ts +12 -0
  117. package/utils/{horizCard/createHorizCardGeometry.ts → card/horizontal-card/createHorizontalCardGeometry.ts} +10 -45
  118. package/utils/card/horizontal-card/index.ts +2 -0
  119. package/utils/card/vertical-card/context.ts +19 -0
  120. package/utils/{vertCard/createVertCardGeometry.ts → card/vertical-card/createVerticalCardGeometry.ts} +9 -130
  121. package/utils/card/vertical-card/index.ts +2 -0
  122. package/utils/colors.ts +93 -0
  123. package/utils/{arcComparison → comparisons/arc-comparison}/context.ts +0 -11
  124. package/utils/{arcComparison → comparisons/arc-comparison}/createArcComparisonGeometry.ts +1 -1
  125. package/utils/comparisons/arc-comparison/resolveArcComparisonItems.ts +33 -0
  126. package/utils/comparisons/table-comparison/constants.ts +47 -0
  127. package/utils/{tableComparison → comparisons/table-comparison}/context.ts +2 -2
  128. package/utils/{arcOrbit → core/arc-orbit}/resolveArcOrbitItems.ts +11 -15
  129. package/utils/{defenseInDepth/arcDid → defense-in-depth/arc-defense-in-depth}/context.ts +34 -31
  130. package/utils/{defenseInDepth/arcDid/createArcDiDGeometry.ts → defense-in-depth/arc-defense-in-depth/createArcDefenseInDepthGeometry.ts} +69 -39
  131. package/utils/{defenseInDepth/arcDid → defense-in-depth/arc-defense-in-depth}/types.ts +39 -35
  132. package/utils/defense-in-depth/shared/colors.ts +51 -0
  133. package/utils/defense-in-depth/shared/constants.ts +22 -0
  134. package/utils/{defenseInDepth → defense-in-depth}/shared/types.ts +0 -5
  135. package/utils/facets/tetrad/rectangle-orbit-tetrad/context.ts +31 -0
  136. package/utils/{rectOrbitTetrad/createRectOrbitTetradGeometry.ts → facets/tetrad/rectangle-orbit-tetrad/createRectangleOrbitTetradGeometry.ts} +5 -104
  137. package/utils/facets/tetrad/rectangle-orbit-tetrad/index.ts +3 -0
  138. package/utils/{rectOrbitTetrad/resolveRectOrbitTetradItems.ts → facets/tetrad/rectangle-orbit-tetrad/resolveRectangleOrbitTetradItems.ts} +41 -49
  139. package/utils/{arrowTriad → facets/triad/arrow-triad}/resolveArrowTriadItems.ts +27 -28
  140. package/utils/{gearTriad → facets/triad/gear-triad}/context.ts +5 -5
  141. package/utils/{gearTriad → facets/triad/gear-triad}/createGearTriadGeometry.ts +2 -0
  142. package/utils/{gearTriad → facets/triad/gear-triad}/resolveGearTriadItems.ts +23 -24
  143. package/utils/facets/triad/hexagon-triad/context.ts +25 -0
  144. package/utils/{hexTriad/createHexTriadGeometry.ts → facets/triad/hexagon-triad/createHexagonTriadGeometry.ts} +11 -27
  145. package/utils/facets/triad/hexagon-triad/index.ts +3 -0
  146. package/utils/facets/triad/hexagon-triad/resolveHexagonTriadItems.ts +60 -0
  147. package/utils/{shiftingHeading → layouts/shifting-heading}/collectShiftingIntroNodes.ts +1 -0
  148. package/utils/layouts/table-of-contents/calculateTocCenterAlignmentOffset.ts +17 -0
  149. package/utils/{tableOfContents → layouts/table-of-contents}/calculateTocMarkerPositions.ts +0 -12
  150. package/utils/{tableOfContents → layouts/table-of-contents}/createTocConnectorPath.ts +11 -5
  151. package/utils/{mergeUno → merge-uno}/classifyVisual.ts +1 -1
  152. package/utils/{mergeUno → merge-uno}/collectClassNames.ts +9 -3
  153. package/utils/process/arc-arrow-process/resolveArcArrowProcessItems.ts +180 -0
  154. package/utils/pyramid/circular-pyramid/context.ts +1 -4
  155. package/utils/pyramid/circular-pyramid/createCircularPyramidGeometry.ts +6 -10
  156. package/utils/pyramid/shared/colors.ts +33 -83
  157. package/utils/pyramid/shared/constants.ts +2 -2
  158. package/utils/pyramid/shared/types.ts +0 -5
  159. package/utils/pyramid/square-pyramid/context.ts +1 -4
  160. package/utils/pyramid/square-pyramid/createSquarePyramidGeometry.ts +6 -10
  161. package/utils/useDiagramAutoScale.ts +8 -6
  162. package/utils/useMergedUnoAttrs.ts +9 -5
  163. package/components/card/chevron-card/ChevronCardHeading.vue +0 -39
  164. package/components/card/horiz-card/HorizCardHeading.vue +0 -47
  165. package/components/card/vert-card/VertCardHeading.vue +0 -68
  166. package/components/card/vert-card/VertCardTitle.vue +0 -76
  167. package/components/comparisons/arc-comparison/ArcComparisonContents.vue +0 -17
  168. package/components/comparisons/arc-comparison/ArcComparisonTitle.vue +0 -29
  169. package/components/core/arc-orbit/ArcOrbitContents.vue +0 -18
  170. package/components/core/arc-orbit/ArcOrbitTitle.vue +0 -50
  171. package/components/defense-in-depth/arc-did/ArcDiDLayer.vue +0 -321
  172. package/components/defense-in-depth/arc-did/ArcDiDLayerParts.vue +0 -11
  173. package/components/facets/tetrad/rect-orbit-tetrad/RectOrbitTetradCenter.vue +0 -53
  174. package/components/facets/tetrad/rect-orbit-tetrad/RectOrbitTetradContent.vue +0 -39
  175. package/components/facets/tetrad/rect-orbit-tetrad/RectOrbitTetradHeading.vue +0 -44
  176. package/components/facets/triad/gear-triad/GearTriadContents.vue +0 -111
  177. package/components/facets/triad/gear-triad/GearTriadDescription.vue +0 -38
  178. package/components/facets/triad/hex-triad/HexTriadCenterBadge.vue +0 -51
  179. package/components/facets/triad/hex-triad/HexTriadContent.vue +0 -20
  180. package/components/facets/triad/hex-triad/HexTriadHeading.vue +0 -28
  181. package/layouts/core/table-of-contents.vue +0 -30
  182. package/utils/arcArrowProcess/resolveArcArrowProcessItems.ts +0 -189
  183. package/utils/arcComparison/resolveArcComparisonItems.ts +0 -102
  184. package/utils/chevronCard/createChevronCardGeometry.ts +0 -48
  185. package/utils/chevronCard/index.ts +0 -2
  186. package/utils/defenseInDepth/arcDid/index.ts +0 -3
  187. package/utils/defenseInDepth/index.ts +0 -2
  188. package/utils/defenseInDepth/shared/colors.ts +0 -121
  189. package/utils/defenseInDepth/shared/constants.ts +0 -14
  190. package/utils/defenseInDepth/shared/index.ts +0 -3
  191. package/utils/hexTriad/context.ts +0 -25
  192. package/utils/hexTriad/index.ts +0 -3
  193. package/utils/hexTriad/resolveHexTriadItems.ts +0 -63
  194. package/utils/horizCard/context.ts +0 -13
  195. package/utils/horizCard/index.ts +0 -2
  196. package/utils/pyramid/index.ts +0 -3
  197. package/utils/rectOrbitTetrad/context.ts +0 -31
  198. package/utils/rectOrbitTetrad/index.ts +0 -3
  199. package/utils/tableComparison/constants.ts +0 -72
  200. package/utils/tableOfContents/calculateTocCenterAlignmentOffset.ts +0 -11
  201. package/utils/vertCard/context.ts +0 -18
  202. package/utils/vertCard/index.ts +0 -2
  203. package/utils/{arcComparison → comparisons/arc-comparison}/index.ts +0 -0
  204. package/utils/{tableComparison → comparisons/table-comparison}/index.ts +0 -0
  205. package/utils/{arcOrbit → core/arc-orbit}/context.ts +0 -0
  206. package/utils/{arcOrbit → core/arc-orbit}/createArcOrbitGeometry.ts +0 -0
  207. package/utils/{arcOrbit → core/arc-orbit}/index.ts +0 -0
  208. package/utils/{arrowTriad → facets/triad/arrow-triad}/context.ts +0 -0
  209. package/utils/{arrowTriad → facets/triad/arrow-triad}/createArrowTriadGeometry.ts +0 -0
  210. package/utils/{arrowTriad → facets/triad/arrow-triad}/index.ts +0 -0
  211. package/utils/{gearTriad → facets/triad/gear-triad}/index.ts +0 -0
  212. package/utils/{tableOfContents → layouts/table-of-contents}/calculateUniformTocArticleWidth.ts +0 -0
  213. package/utils/{tableOfContents → layouts/table-of-contents}/createTocArcPath.ts +0 -0
  214. package/utils/{tableOfContents → layouts/table-of-contents}/index.ts +0 -0
  215. package/utils/{mergeUno → merge-uno}/classifyLayout.ts +0 -0
  216. package/utils/{mergeUno → merge-uno}/classifySimple.ts +0 -0
  217. package/utils/{mergeUno → merge-uno}/classifyTypography.ts +0 -0
  218. package/utils/{mergeUno → merge-uno}/classifyUtility.ts +0 -0
  219. package/utils/{mergeUno → merge-uno}/index.ts +0 -0
  220. package/utils/{mergeUno → merge-uno}/mergeClassValues.ts +0 -0
  221. package/utils/{mergeUno → merge-uno}/splitVariantScope.ts +1 -1
  222. package/utils/{mergeUno → merge-uno}/types.ts +0 -0
  223. package/utils/{arcArrowProcess → process/arc-arrow-process}/context.ts +1 -1
  224. /package/utils/{arcArrowProcess → process/arc-arrow-process}/createArcArrowProcessGeometry.ts +0 -0
  225. /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-academic`.
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`, `table-of-contents`
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: `ThanksContent`, `ThanksOutlineSquare`, `ThanksSquare`
98
+ - Components: `SquareThanks`, `ThanksOutlineSquare`, `ThanksSquare`
38
99
  - Layout: `thanks`
39
100
 
40
- ## Hex triad
101
+ ## Hexagon triad
41
102
 
42
- - Components: `HexTriad`, `HexTriadCallout`, `HexTriadBadge`, `HexTriadHeading`, `HexTriadContent`
103
+ - Components: `HexagonTriad`, `HexagonTriadCallout`, `HexagonTriadBadge`, `HexagonTriadHeading`, `HexagonTriadContent`
43
104
 
44
105
  ```vue
45
- <HexTriad>
46
- <HexTriadCallout>
47
- <HexTriadBadge>01</HexTriadBadge>
48
- <HexTriadHeading>Performance</HexTriadHeading>
49
- <HexTriadContent>Fast builds, instant feedback, and zero-overhead runtime.</HexTriadContent>
50
- </HexTriadCallout>
51
- <HexTriadCallout>
52
- <HexTriadBadge>02</HexTriadBadge>
53
- <HexTriadHeading>Reliability</HexTriadHeading>
54
- <HexTriadContent>Strict type safety paired with deterministic test suites.</HexTriadContent>
55
- </HexTriadCallout>
56
- <HexTriadCallout>
57
- <HexTriadBadge>03</HexTriadBadge>
58
- <HexTriadHeading>Scalability</HexTriadHeading>
59
- <HexTriadContent>Seamless growth across packages, tools, and workflows.</HexTriadContent>
60
- </HexTriadCallout>
61
- </HexTriad>
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`, `GearTriadDescription`, `GearTriadContents`, `GearTriadContent`, `GearTriadIcon`, `GearTriadCenter`
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
- <GearTriadDescription>
73
- There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration.
74
- </GearTriadDescription>
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
- <GearTriadDescription>
79
- There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration.
80
- </GearTriadDescription>
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
- <GearTriadDescription>
85
- There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration.
86
- </GearTriadDescription>
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
- ## Horiz card
152
+ ## Horizontal card
92
153
 
93
- - Components: `HorizCard`, `HorizCardBadge`, `HorizCardHeading`, `HorizCardContent`, `HorizCardIcon`
154
+ - Components: `HorizontalCard`, `HorizontalCardBadge`, `HorizontalCardContent`, `HorizontalCardIcon`
94
155
 
95
156
  ```vue
96
- <!-- Self-contained props usage with optional icon -->
97
- <HorizCard
157
+ <HorizontalCard
98
158
  step="01"
99
- title="Lorem Ipsum"
100
- description="Lorem ipsum dolor sit amet, nibh est. A magna maecenas, quam magna nec quis."
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
- <HorizCard
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
- </HorizCard>
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`, `ArcComparisonTitle`, `ArcComparisonContents`, `ArcComparisonOrbit`, `ArcComparisonBadge`, `ArcComparisonHeading`, `ArcComparisonContent`
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
- <ArcComparisonTitle>Traditional<br />Monolith</ArcComparisonTitle>
127
- <ArcComparisonContents>
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
- </ArcComparisonContents>
208
+
150
209
  </ArcComparisonLeft>
151
210
 
152
211
  <ArcComparisonRight color="#0284c7">
153
- <ArcComparisonTitle>Distributed<br />Microservices</ArcComparisonTitle>
154
- <ArcComparisonContents>
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
- </ArcComparisonContents>
235
+
177
236
  </ArcComparisonRight>
178
237
  </ArcComparison>
179
238
  ```
180
239
 
181
240
  ## Table comparison
182
241
 
183
- - Components: `TableComparison`, `TableComparisonCols`, `TableComparisonCol`, `TableComparisonRows`, `TableComparisonRow`, `TableComparisonCell`
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
- <TableComparisonCols>
192
- <TableComparisonCol color="#ff0000">
247
+ <TableComparisonColumns>
248
+ <TableComparisonColumn color="#ff0000">
193
249
  Column 1
194
- </TableComparisonCol>
195
- <TableComparisonCol color="#00ff00">
250
+ </TableComparisonColumn>
251
+ <TableComparisonColumn color="#00ff00">
196
252
  Column 2
197
- </TableComparisonCol>
198
- <TableComparisonCol color="#0000ff">
253
+ </TableComparisonColumn>
254
+ <TableComparisonColumn color="#0000ff">
199
255
  Column 3
200
- </TableComparisonCol>
201
- </TableComparisonCols>
256
+ </TableComparisonColumn>
257
+ </TableComparisonColumns>
202
258
  <TableComparisonRows>
203
- <TableComparisonRow title="Row 1">
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 title="Row 2">
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`, `CircularPyramidStackTitle`, `CircularPyramidStackContent`
277
+ - Components: `CircularPyramid`, `CircularPyramidStack`, `CircularPyramidStackHeading`, `CircularPyramidStackContent`
220
278
 
221
279
  ```vue
222
280
  <CircularPyramid>
223
281
  <CircularPyramidStack>
224
- <CircularPyramidStackTitle>01 Strategy</CircularPyramidStackTitle>
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
- <CircularPyramidStackTitle>02 Architecture</CircularPyramidStackTitle>
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
- <CircularPyramidStackTitle>03 Implementation</CircularPyramidStackTitle>
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
- <CircularPyramidStackTitle>04 Verification</CircularPyramidStackTitle>
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`, `SquarePyramidStackTitle`, `SquarePyramidStackContent`
317
+ - Components: `SquarePyramid`, `SquarePyramidStack`, `SquarePyramidStackHeading`, `SquarePyramidStackContent`
260
318
 
261
319
  ```vue
262
320
  <SquarePyramid>
263
321
  <SquarePyramidStack>
264
- <SquarePyramidStackTitle>01 Strategy</SquarePyramidStackTitle>
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
- <SquarePyramidStackTitle>02 Architecture</SquarePyramidStackTitle>
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
- <SquarePyramidStackTitle>03 Implementation</SquarePyramidStackTitle>
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
- <SquarePyramidStackTitle>04 Verification</SquarePyramidStackTitle>
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 { computed, Fragment, provide, useSlots, type VNode } from 'vue';
3
-
4
- import { CHEVRON_CARD_KEY } from '../../../utils/chevronCard';
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: '#f59e0b',
41
+ color: 'var(--alpha-chevron-card-accent)',
34
42
  width: undefined,
35
- cardBg: '#f5f5f7',
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) && !isHeadingNode(node) && !isContentNode(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 resolvedColor = computed(() => {
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: resolvedColor,
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="flex-shrink-0 z-10 flex">
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="resolvedColor"
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
- backgroundColor: resolvedCardBg,
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
- <slot name="title">
208
- <component :is="slottedHeading" v-if="slottedHeading" />
209
- </slot>
210
- <slot name="description">
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/chevronCard';
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 resolvedColor = computed(() => {
31
- return props.color ?? cardContext?.color.value ?? '#f59e0b';
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
- class="alpha-chevron-card-badge relative select-none flex-shrink-0 flex items-center justify-center text-white"
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
- backgroundColor: resolvedColor,
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 text-white"
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 text-white inline-block']"
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/chevronCard';
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 ?? '#6b7280';
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
- <div
27
- class="alpha-chevron-card-content text-[1rem] leading-[1.45] font-normal tracking-tight select-none font-sans"
28
- :style="{
29
- color: contentColor,
30
- margin: 0,
31
- padding: 0,
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
- </div>
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
+ }