@alphacifer/slidev-addon-theme 0.0.9 → 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 (220) 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-defense-in-depth/ArcDefenseInDepth.vue +802 -0
  50. package/components/defense-in-depth/arc-defense-in-depth/ArcDefenseInDepthLayer.vue +240 -0
  51. package/components/defense-in-depth/arc-defense-in-depth/ArcDefenseInDepthLayerHeading.vue +96 -0
  52. package/components/defense-in-depth/arc-defense-in-depth/ArcDefenseInDepthLayerPart.vue +501 -0
  53. package/components/defense-in-depth/arc-defense-in-depth/ArcDefenseInDepthLayerSector.vue +162 -0
  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 +276 -190
  95. package/components/pyramid/circular-pyramid/CircularPyramidStack.vue +83 -98
  96. package/components/pyramid/circular-pyramid/CircularPyramidStackContent.vue +136 -29
  97. package/components/pyramid/circular-pyramid/CircularPyramidStackHeading.vue +212 -0
  98. package/components/pyramid/circular-pyramid/style.css +26 -0
  99. package/components/pyramid/square-pyramid/SquarePyramid.vue +199 -83
  100. package/components/pyramid/square-pyramid/SquarePyramidStack.vue +87 -95
  101. package/components/pyramid/square-pyramid/SquarePyramidStackContent.vue +138 -27
  102. package/components/pyramid/square-pyramid/SquarePyramidStackHeading.vue +212 -0
  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/defense-in-depth/arc-defense-in-depth/context.ts +113 -0
  130. package/utils/defense-in-depth/arc-defense-in-depth/createArcDefenseInDepthGeometry.ts +600 -0
  131. package/utils/defense-in-depth/arc-defense-in-depth/types.ts +144 -0
  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/defense-in-depth/shared/types.ts +7 -0
  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 +3 -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 +64 -16
  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/facets/tetrad/rect-orbit-tetrad/RectOrbitTetradCenter.vue +0 -53
  172. package/components/facets/tetrad/rect-orbit-tetrad/RectOrbitTetradContent.vue +0 -39
  173. package/components/facets/tetrad/rect-orbit-tetrad/RectOrbitTetradHeading.vue +0 -44
  174. package/components/facets/triad/gear-triad/GearTriadContents.vue +0 -111
  175. package/components/facets/triad/gear-triad/GearTriadDescription.vue +0 -38
  176. package/components/facets/triad/hex-triad/HexTriadCenterBadge.vue +0 -51
  177. package/components/facets/triad/hex-triad/HexTriadContent.vue +0 -20
  178. package/components/facets/triad/hex-triad/HexTriadHeading.vue +0 -28
  179. package/components/pyramid/circular-pyramid/CircularPyramidStackTitle.vue +0 -138
  180. package/components/pyramid/square-pyramid/SquarePyramidStackTitle.vue +0 -134
  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/hexTriad/context.ts +0 -25
  187. package/utils/hexTriad/index.ts +0 -3
  188. package/utils/hexTriad/resolveHexTriadItems.ts +0 -63
  189. package/utils/horizCard/context.ts +0 -13
  190. package/utils/horizCard/index.ts +0 -2
  191. package/utils/pyramid/index.ts +0 -3
  192. package/utils/rectOrbitTetrad/context.ts +0 -31
  193. package/utils/rectOrbitTetrad/index.ts +0 -3
  194. package/utils/tableComparison/constants.ts +0 -72
  195. package/utils/tableOfContents/calculateTocCenterAlignmentOffset.ts +0 -11
  196. package/utils/vertCard/context.ts +0 -18
  197. package/utils/vertCard/index.ts +0 -2
  198. package/utils/{arcComparison → comparisons/arc-comparison}/index.ts +0 -0
  199. package/utils/{tableComparison → comparisons/table-comparison}/index.ts +0 -0
  200. package/utils/{arcOrbit → core/arc-orbit}/context.ts +0 -0
  201. package/utils/{arcOrbit → core/arc-orbit}/createArcOrbitGeometry.ts +0 -0
  202. package/utils/{arcOrbit → core/arc-orbit}/index.ts +0 -0
  203. package/utils/{arrowTriad → facets/triad/arrow-triad}/context.ts +0 -0
  204. package/utils/{arrowTriad → facets/triad/arrow-triad}/createArrowTriadGeometry.ts +0 -0
  205. package/utils/{arrowTriad → facets/triad/arrow-triad}/index.ts +0 -0
  206. package/utils/{gearTriad → facets/triad/gear-triad}/index.ts +0 -0
  207. package/utils/{tableOfContents → layouts/table-of-contents}/calculateUniformTocArticleWidth.ts +0 -0
  208. package/utils/{tableOfContents → layouts/table-of-contents}/createTocArcPath.ts +0 -0
  209. package/utils/{tableOfContents → layouts/table-of-contents}/index.ts +0 -0
  210. package/utils/{mergeUno → merge-uno}/classifyLayout.ts +0 -0
  211. package/utils/{mergeUno → merge-uno}/classifySimple.ts +0 -0
  212. package/utils/{mergeUno → merge-uno}/classifyTypography.ts +0 -0
  213. package/utils/{mergeUno → merge-uno}/classifyUtility.ts +0 -0
  214. package/utils/{mergeUno → merge-uno}/index.ts +0 -0
  215. package/utils/{mergeUno → merge-uno}/mergeClassValues.ts +0 -0
  216. package/utils/{mergeUno → merge-uno}/splitVariantScope.ts +1 -1
  217. package/utils/{mergeUno → merge-uno}/types.ts +0 -0
  218. package/utils/{arcArrowProcess → process/arc-arrow-process}/context.ts +1 -1
  219. /package/utils/{arcArrowProcess → process/arc-arrow-process}/createArcArrowProcessGeometry.ts +0 -0
  220. /package/utils/{arcArrowProcess → process/arc-arrow-process}/index.ts +0 -0
@@ -0,0 +1,180 @@
1
+ export interface IArcArrowProcessItem {
2
+ readonly id?: string | number;
3
+ readonly color?: string;
4
+ readonly gradientEnd?: string;
5
+ readonly title?: string;
6
+ readonly description?: string;
7
+ readonly icon?: string | object | false;
8
+ readonly titleColor?: string;
9
+ readonly textColor?: string;
10
+ }
11
+
12
+ export interface IResolvedArcArrowProcessItem {
13
+ readonly id: string | number;
14
+ readonly color: string;
15
+ readonly gradientEnd: string;
16
+ readonly title: string;
17
+ readonly description: string;
18
+ readonly icon?: string | object | false;
19
+ readonly titleColor: string;
20
+ readonly textColor: string;
21
+ }
22
+
23
+ const DEFAULT_ARC_ARROW_PROCESS_ITEMS_4: readonly [
24
+ IResolvedArcArrowProcessItem,
25
+ IResolvedArcArrowProcessItem,
26
+ IResolvedArcArrowProcessItem,
27
+ IResolvedArcArrowProcessItem,
28
+ ] = [
29
+ {
30
+ id: '01',
31
+ color: 'var(--alpha-arc-arrow-process-item-1-color)',
32
+ gradientEnd: 'var(--alpha-arc-arrow-process-item-1-gradient-end)',
33
+ title: '',
34
+ description: '',
35
+ titleColor: 'var(--alpha-arc-arrow-process-heading)',
36
+ textColor: 'var(--alpha-arc-arrow-process-content)',
37
+ },
38
+ {
39
+ id: '02',
40
+ color: 'var(--alpha-arc-arrow-process-item-2-color)',
41
+ gradientEnd: 'var(--alpha-arc-arrow-process-item-2-gradient-end)',
42
+ title: '',
43
+ description: '',
44
+ titleColor: 'var(--alpha-arc-arrow-process-heading)',
45
+ textColor: 'var(--alpha-arc-arrow-process-content)',
46
+ },
47
+ {
48
+ id: '03',
49
+ color: 'var(--alpha-arc-arrow-process-item-3-color)',
50
+ gradientEnd: 'var(--alpha-arc-arrow-process-item-3-gradient-end)',
51
+ title: '',
52
+ description: '',
53
+ titleColor: 'var(--alpha-arc-arrow-process-heading)',
54
+ textColor: 'var(--alpha-arc-arrow-process-content)',
55
+ },
56
+ {
57
+ id: '04',
58
+ color: 'var(--alpha-arc-arrow-process-item-4-color)',
59
+ gradientEnd: 'var(--alpha-arc-arrow-process-item-4-gradient-end)',
60
+ title: '',
61
+ description: '',
62
+ titleColor: 'var(--alpha-arc-arrow-process-heading)',
63
+ textColor: 'var(--alpha-arc-arrow-process-content)',
64
+ },
65
+ ];
66
+
67
+ const DEFAULT_ARC_ARROW_PROCESS_ITEMS_3: readonly [
68
+ IResolvedArcArrowProcessItem,
69
+ IResolvedArcArrowProcessItem,
70
+ IResolvedArcArrowProcessItem,
71
+ ] = [
72
+ {
73
+ id: '01',
74
+ color: 'var(--alpha-arc-arrow-process-item-1-color)',
75
+ gradientEnd: 'var(--alpha-arc-arrow-process-item-1-gradient-end)',
76
+ title: '',
77
+ description: '',
78
+ titleColor: 'var(--alpha-arc-arrow-process-heading)',
79
+ textColor: 'var(--alpha-arc-arrow-process-content)',
80
+ },
81
+ {
82
+ id: '02',
83
+ color: 'var(--alpha-arc-arrow-process-item-2-color)',
84
+ gradientEnd: 'var(--alpha-arc-arrow-process-item-2-gradient-end)',
85
+ title: '',
86
+ description: '',
87
+ titleColor: 'var(--alpha-arc-arrow-process-heading)',
88
+ textColor: 'var(--alpha-arc-arrow-process-content)',
89
+ },
90
+ {
91
+ id: '03',
92
+ color: 'var(--alpha-arc-arrow-process-item-4-color)',
93
+ gradientEnd: 'var(--alpha-arc-arrow-process-item-4-gradient-end)',
94
+ title: '',
95
+ description: '',
96
+ titleColor: 'var(--alpha-arc-arrow-process-heading)',
97
+ textColor: 'var(--alpha-arc-arrow-process-content)',
98
+ },
99
+ ];
100
+
101
+ const DEFAULT_ARC_ARROW_PROCESS_ITEMS_2: readonly [
102
+ IResolvedArcArrowProcessItem,
103
+ IResolvedArcArrowProcessItem,
104
+ ] = [
105
+ {
106
+ id: '01',
107
+ color: 'var(--alpha-arc-arrow-process-item-2-color)',
108
+ gradientEnd: 'var(--alpha-arc-arrow-process-item-2-gradient-end)',
109
+ title: '',
110
+ description: '',
111
+ titleColor: 'var(--alpha-arc-arrow-process-heading)',
112
+ textColor: 'var(--alpha-arc-arrow-process-content)',
113
+ },
114
+ {
115
+ id: '02',
116
+ color: 'var(--alpha-arc-arrow-process-item-3-color)',
117
+ gradientEnd: 'var(--alpha-arc-arrow-process-item-3-gradient-end)',
118
+ title: '',
119
+ description: '',
120
+ titleColor: 'var(--alpha-arc-arrow-process-heading)',
121
+ textColor: 'var(--alpha-arc-arrow-process-content)',
122
+ },
123
+ ];
124
+
125
+ export function getDefaultArcArrowProcessItem(
126
+ index: number,
127
+ count: number = 4,
128
+ ): IResolvedArcArrowProcessItem {
129
+ const list =
130
+ count === 2
131
+ ? DEFAULT_ARC_ARROW_PROCESS_ITEMS_2
132
+ : count === 3
133
+ ? DEFAULT_ARC_ARROW_PROCESS_ITEMS_3
134
+ : DEFAULT_ARC_ARROW_PROCESS_ITEMS_4;
135
+ const safe = Math.abs(index) % list.length;
136
+ const item = list[safe];
137
+
138
+ if (item) {
139
+ return item;
140
+ }
141
+
142
+ return DEFAULT_ARC_ARROW_PROCESS_ITEMS_4[0];
143
+ }
144
+
145
+ export function resolveSingleArcArrowProcessItem(
146
+ item: IArcArrowProcessItem | undefined,
147
+ fallbackIndex = 0,
148
+ count: number = 4,
149
+ ): IResolvedArcArrowProcessItem {
150
+ const fallback = getDefaultArcArrowProcessItem(fallbackIndex, count);
151
+
152
+ if (!item) {
153
+ return fallback;
154
+ }
155
+
156
+ return {
157
+ id: item.id ?? fallback.id,
158
+ color: item.color ?? fallback.color,
159
+ gradientEnd: item.gradientEnd ?? fallback.gradientEnd,
160
+ title: item.title ?? fallback.title,
161
+ description: item.description ?? fallback.description,
162
+ icon: item.icon !== undefined ? item.icon : fallback.icon,
163
+ titleColor: item.titleColor ?? fallback.titleColor,
164
+ textColor: item.textColor ?? fallback.textColor,
165
+ };
166
+ }
167
+
168
+ export function resolveArcArrowProcessItems(
169
+ items: readonly IArcArrowProcessItem[] | undefined,
170
+ count: number = 4,
171
+ ): readonly IResolvedArcArrowProcessItem[] {
172
+ const targetCount = count >= 2 ? count : 4;
173
+ const result: IResolvedArcArrowProcessItem[] = [];
174
+
175
+ for (let i = 0; i < targetCount; i++) {
176
+ result.push(resolveSingleArcArrowProcessItem(items?.[i], i, targetCount));
177
+ }
178
+
179
+ return result;
180
+ }
@@ -1,10 +1,8 @@
1
1
  import type { ComputedRef, InjectionKey, Ref } from 'vue';
2
2
 
3
- import type { IPyramidPalette, IPyramidRegistration } from '../shared';
3
+ import type { IPyramidPalette } from '../shared';
4
4
  import type { ICircularLayerGeometry, ICircularPyramidGeometry } from './types';
5
5
 
6
- export interface ICircularPyramidRegistration extends IPyramidRegistration {}
7
-
8
6
  export interface ICircularPyramidRootContext {
9
7
  readonly count: ComputedRef<number>;
10
8
  readonly activeIndex: Ref<number> | ComputedRef<number>;
@@ -15,7 +13,6 @@ export interface ICircularPyramidRootContext {
15
13
  readonly interactive: ComputedRef<boolean>;
16
14
  readonly titleWidthPx: ComputedRef<number>;
17
15
  readonly contentWidthPx: ComputedRef<number>;
18
- readonly contentRightOffsetPx: ComputedRef<number>;
19
16
  readonly registerStack: (
20
17
  id?: symbol,
21
18
  color?: ComputedRef<string | undefined>,
@@ -2,8 +2,6 @@ import {
2
2
  clampPyramidCount,
3
3
  computePyramidStacking,
4
4
  DEFAULT_PYRAMID_COLOR,
5
- darkenColor,
6
- lightenColor,
7
5
  MAX_PYRAMID_COUNT,
8
6
  MIN_PYRAMID_COUNT,
9
7
  resolvePyramidPalette,
@@ -17,19 +15,17 @@ import type {
17
15
 
18
16
  export const DEFAULT_CIRCULAR_PYRAMID_COLOR = DEFAULT_PYRAMID_COLOR;
19
17
  export const DEFAULT_CIRCULAR_PYRAMID_STACK_COLORS: readonly string[] = [
20
- '#3b82f6', // 0: Blue
21
- '#6366f1', // 1: Indigo
22
- '#10b981', // 2: Emerald
23
- '#f59e0b', // 3: Amber
24
- '#ec4899', // 4: Pink
25
- '#06b6d4', // 5: Cyan
18
+ 'var(--alpha-circular-pyramid-stack-1-color)',
19
+ 'var(--alpha-circular-pyramid-stack-2-color)',
20
+ 'var(--alpha-circular-pyramid-stack-3-color)',
21
+ 'var(--alpha-circular-pyramid-stack-4-color)',
22
+ 'var(--alpha-circular-pyramid-stack-5-color)',
23
+ 'var(--alpha-circular-pyramid-stack-6-color)',
26
24
  ] as const;
27
25
 
28
26
  export const MIN_CIRCULAR_COUNT = MIN_PYRAMID_COUNT;
29
27
  export const MAX_CIRCULAR_COUNT = MAX_PYRAMID_COUNT;
30
28
 
31
- export { darkenColor, lightenColor };
32
-
33
29
  export function clampCircularCount(count?: number): number {
34
30
  return clampPyramidCount(count);
35
31
  }
@@ -1,92 +1,42 @@
1
- import { DEFAULT_PYRAMID_COLOR } from './constants';
2
- import type { IColorModifierParams, IPyramidPalette } from './types';
3
-
4
- export function lightenColor({
5
- hex,
6
- ratio = 0.5,
7
- }: IColorModifierParams): string {
8
- const raw = hex.trim().replace(/^#/, '');
9
- const sanitized =
10
- raw.length === 3
11
- ? raw
12
- .split('')
13
- .map((char) => char + char)
14
- .join('')
15
- : raw;
16
-
17
- if (sanitized.length !== 6) {
18
- return hex;
19
- }
20
-
21
- const r = Number.parseInt(sanitized.slice(0, 2), 16);
22
- const g = Number.parseInt(sanitized.slice(2, 4), 16);
23
- const b = Number.parseInt(sanitized.slice(4, 6), 16);
24
-
25
- if (Number.isNaN(r) || Number.isNaN(g) || Number.isNaN(b)) {
26
- return hex;
27
- }
28
-
29
- const clamp = (val: number): number =>
30
- Math.min(255, Math.max(0, Math.round(val)));
31
- const lr = clamp(r + (255 - r) * ratio);
32
- const lg = clamp(g + (255 - g) * ratio);
33
- const lb = clamp(b + (255 - b) * ratio);
34
-
35
- const toHex = (n: number): string => n.toString(16).padStart(2, '0');
36
-
37
- return `#${toHex(lr)}${toHex(lg)}${toHex(lb)}`;
38
- }
39
-
40
- export function darkenColor({
41
- hex,
42
- ratio = 0.5,
43
- }: IColorModifierParams): string {
44
- const raw = hex.trim().replace(/^#/, '');
45
- const sanitized =
46
- raw.length === 3
47
- ? raw
48
- .split('')
49
- .map((char) => char + char)
50
- .join('')
51
- : raw;
52
-
53
- if (sanitized.length !== 6) {
54
- return hex;
55
- }
56
-
57
- const r = Number.parseInt(sanitized.slice(0, 2), 16);
58
- const g = Number.parseInt(sanitized.slice(2, 4), 16);
59
- const b = Number.parseInt(sanitized.slice(4, 6), 16);
60
-
61
- if (Number.isNaN(r) || Number.isNaN(g) || Number.isNaN(b)) {
62
- return hex;
63
- }
64
-
65
- const clamp = (val: number): number =>
66
- Math.min(255, Math.max(0, Math.round(val)));
67
- const dr = clamp(r * (1 - ratio));
68
- const dg = clamp(g * (1 - ratio));
69
- const db = clamp(b * (1 - ratio));
70
-
71
- const toHex = (n: number): string => n.toString(16).padStart(2, '0');
72
-
73
- return `#${toHex(dr)}${toHex(dg)}${toHex(db)}`;
74
- }
1
+ import { darkenColor, lightenColor } from '../../colors';
2
+ import { DEFAULT_PYRAMID_COLOR, DEFAULT_PYRAMID_HIGHLIGHT } from './constants';
3
+ import type { IPyramidPalette } from './types';
75
4
 
76
5
  export function resolvePyramidPalette(
77
6
  baseColor: string = DEFAULT_PYRAMID_COLOR,
78
7
  ): IPyramidPalette {
79
8
  return {
80
- activeTopStart: lightenColor({ hex: baseColor, ratio: 0.82 }),
9
+ activeTopStart: lightenColor({
10
+ hex: baseColor,
11
+ ratio: 0.82,
12
+ }),
81
13
  activeTopEnd: baseColor,
82
- activeSideStart: darkenColor({ hex: baseColor, ratio: 0.28 }),
83
- activeSideEnd: lightenColor({ hex: baseColor, ratio: 0.35 }),
84
- activeStroke: lightenColor({ hex: baseColor, ratio: 0.7 }),
85
- defaultTopStart: '#ffffff',
86
- defaultTopEnd: lightenColor({ hex: baseColor, ratio: 0.88 }),
87
- defaultSideStart: lightenColor({ hex: baseColor, ratio: 0.72 }),
88
- defaultSideEnd: lightenColor({ hex: baseColor, ratio: 0.88 }),
89
- defaultStroke: '#ffffff',
14
+ activeSideStart: darkenColor({
15
+ hex: baseColor,
16
+ ratio: 0.28,
17
+ }),
18
+ activeSideEnd: lightenColor({
19
+ hex: baseColor,
20
+ ratio: 0.35,
21
+ }),
22
+ activeStroke: lightenColor({
23
+ hex: baseColor,
24
+ ratio: 0.7,
25
+ }),
26
+ defaultTopStart: DEFAULT_PYRAMID_HIGHLIGHT,
27
+ defaultTopEnd: lightenColor({
28
+ hex: baseColor,
29
+ ratio: 0.88,
30
+ }),
31
+ defaultSideStart: lightenColor({
32
+ hex: baseColor,
33
+ ratio: 0.72,
34
+ }),
35
+ defaultSideEnd: lightenColor({
36
+ hex: baseColor,
37
+ ratio: 0.88,
38
+ }),
39
+ defaultStroke: DEFAULT_PYRAMID_HIGHLIGHT,
90
40
  glow: baseColor,
91
41
  };
92
42
  }
@@ -1,8 +1,9 @@
1
- export const DEFAULT_PYRAMID_COLOR = '#3b82f6';
1
+ export const DEFAULT_PYRAMID_COLOR = 'var(--alpha-pyramid-accent)';
2
+ export const DEFAULT_PYRAMID_HIGHLIGHT = 'var(--alpha-pyramid-highlight)';
2
3
  export const MIN_PYRAMID_COUNT = 1;
3
4
  export const MAX_PYRAMID_COUNT = 6;
4
5
 
5
6
  export const PYRAMID_TITLE_WIDTH_PX = 150;
6
7
  export const PYRAMID_CONTENT_WIDTH_PX = 240;
7
- export const PYRAMID_CONTENT_RIGHT_OFFSET_PX = 0;
8
8
  export const PYRAMID_DOT_POSITION_X = 210;
9
+ export const PYRAMID_DOT_GAP_PX = 10;
@@ -1,8 +1,3 @@
1
- export interface IColorModifierParams {
2
- readonly hex: string;
3
- readonly ratio?: number;
4
- }
5
-
6
1
  export interface IPyramidPalette {
7
2
  readonly activeTopStart: string;
8
3
  readonly activeTopEnd: string;
@@ -1,10 +1,8 @@
1
1
  import type { ComputedRef, InjectionKey, Ref } from 'vue';
2
2
 
3
- import type { IPyramidPalette, IPyramidRegistration } from '../shared';
3
+ import type { IPyramidPalette } from '../shared';
4
4
  import type { ISquareLayerGeometry, ISquarePyramidGeometry } from './types';
5
5
 
6
- export interface ISquarePyramidRegistration extends IPyramidRegistration {}
7
-
8
6
  export interface ISquarePyramidRootContext {
9
7
  readonly count: ComputedRef<number>;
10
8
  readonly activeIndex: Ref<number> | ComputedRef<number>;
@@ -15,7 +13,6 @@ export interface ISquarePyramidRootContext {
15
13
  readonly interactive: ComputedRef<boolean>;
16
14
  readonly titleWidthPx: ComputedRef<number>;
17
15
  readonly contentWidthPx: ComputedRef<number>;
18
- readonly contentRightOffsetPx: ComputedRef<number>;
19
16
  readonly registerStack: (
20
17
  id?: symbol,
21
18
  color?: ComputedRef<string | undefined>,
@@ -2,8 +2,6 @@ import {
2
2
  clampPyramidCount,
3
3
  computePyramidStacking,
4
4
  DEFAULT_PYRAMID_COLOR,
5
- darkenColor,
6
- lightenColor,
7
5
  MAX_PYRAMID_COUNT,
8
6
  MIN_PYRAMID_COUNT,
9
7
  resolvePyramidPalette,
@@ -17,19 +15,17 @@ import type {
17
15
 
18
16
  export const DEFAULT_SQUARE_PYRAMID_COLOR = DEFAULT_PYRAMID_COLOR;
19
17
  export const DEFAULT_SQUARE_PYRAMID_STACK_COLORS: readonly string[] = [
20
- '#ec4899', // 0: Pink (matches top slab)
21
- '#8b5cf6', // 1: Purple (matches 2nd slab)
22
- '#3b82f6', // 2: Blue (matches 3rd slab)
23
- '#06b6d4', // 3: Cyan (matches 4th slab)
24
- '#14b8a6', // 4: Teal (matches 5th slab)
25
- '#f59e0b', // 5: Amber (warm accent)
18
+ 'var(--alpha-square-pyramid-stack-1-color)',
19
+ 'var(--alpha-square-pyramid-stack-2-color)',
20
+ 'var(--alpha-square-pyramid-stack-3-color)',
21
+ 'var(--alpha-square-pyramid-stack-4-color)',
22
+ 'var(--alpha-square-pyramid-stack-5-color)',
23
+ 'var(--alpha-square-pyramid-stack-6-color)',
26
24
  ] as const;
27
25
 
28
26
  export const MIN_SQUARE_COUNT = MIN_PYRAMID_COUNT;
29
27
  export const MAX_SQUARE_COUNT = MAX_PYRAMID_COUNT;
30
28
 
31
- export { darkenColor, lightenColor };
32
-
33
29
  export function clampSquareCount(count?: number): number {
34
30
  return clampPyramidCount(count);
35
31
  }
@@ -14,6 +14,9 @@ export interface IUseDiagramAutoScaleOptions {
14
14
  readonly scale?: Ref<number | undefined> | (() => number | undefined);
15
15
  readonly autoScale?: Ref<boolean | undefined> | (() => boolean | undefined);
16
16
  readonly maxScale?: Ref<number | undefined> | (() => number | undefined);
17
+ readonly width?:
18
+ | Ref<number | string | undefined>
19
+ | (() => number | string | undefined);
17
20
  readonly height?:
18
21
  | Ref<number | string | undefined>
19
22
  | (() => number | string | undefined);
@@ -43,7 +46,7 @@ function resolveValue<T>(val: Ref<T> | (() => T) | undefined, fallback: T): T {
43
46
 
44
47
  /**
45
48
  * Automatically computes a scale factor (via CSS transform: scale)
46
- * so that diagram components (ArrowTriad, RectOrbitTetrad, ArcArrowProcess, etc.)
49
+ * so that diagram components (ArrowTriad, RectangleOrbitTetrad, ArcArrowProcess, etc.)
47
50
  * fit comfortably inside the available slide canvas without clipping or overlaying pagination.
48
51
  */
49
52
  export function useDiagramAutoScale(
@@ -94,6 +97,19 @@ export function useDiagramAutoScale(
94
97
  availW = el.clientWidth;
95
98
  }
96
99
 
100
+ const explicitWidth = resolveValue(options.width, undefined);
101
+ if (typeof explicitWidth === 'number' && explicitWidth > 0) {
102
+ availW = availW > 0 ? Math.min(availW, explicitWidth) : explicitWidth;
103
+ } else if (
104
+ typeof explicitWidth === 'string' &&
105
+ explicitWidth.endsWith('px')
106
+ ) {
107
+ const parsedW = Number.parseFloat(explicitWidth);
108
+ if (parsedW > 0) {
109
+ availW = availW > 0 ? Math.min(availW, parsedW) : parsedW;
110
+ }
111
+ }
112
+
97
113
  // Available height inside parent or slide layout
98
114
  let availH = 0;
99
115
  const explicitHeight = resolveValue(options.height, undefined);
@@ -140,6 +156,23 @@ export function useDiagramAutoScale(
140
156
  pagyEl && window.getComputedStyle(pagyEl).display !== 'none';
141
157
  const clearance = isPagyVisible ? pagyClearance : 16;
142
158
 
159
+ // Check for internal component header inside el (e.g. ArcDefenseInDepth, GearTriad, HexagonTriad)
160
+ let internalHeaderH = 0;
161
+ for (let i = 0; i < el.children.length; i++) {
162
+ const child = el.children[i];
163
+ if (
164
+ child instanceof HTMLElement &&
165
+ (child.tagName === 'HEADER' ||
166
+ child.classList.contains('alpha-arc-defense-in-depth__header'))
167
+ ) {
168
+ internalHeaderH += child.offsetHeight;
169
+ const cs = window.getComputedStyle(child);
170
+ internalHeaderH +=
171
+ (Number.parseFloat(cs.marginTop) || 0) +
172
+ (Number.parseFloat(cs.marginBottom) || 0);
173
+ }
174
+ }
175
+
143
176
  if (slideEl && slideEl.clientHeight > 0) {
144
177
  const slideStyle = window.getComputedStyle(slideEl);
145
178
  const sPadTop = Number.parseFloat(slideStyle.paddingTop) || 0;
@@ -148,21 +181,30 @@ export function useDiagramAutoScale(
148
181
  let slideSiblingsH = siblingsH;
149
182
 
150
183
  if (parent !== slideEl) {
151
- for (let i = 0; i < slideEl.children.length; i++) {
152
- const child = slideEl.children[i];
153
-
154
- if (
155
- child &&
156
- child !== parent &&
157
- !child.contains(parent) &&
158
- child instanceof HTMLElement
159
- ) {
160
- slideSiblingsH += child.offsetHeight;
161
- const cs = window.getComputedStyle(child);
162
- slideSiblingsH +=
163
- (Number.parseFloat(cs.marginTop) || 0) +
164
- (Number.parseFloat(cs.marginBottom) || 0);
184
+ let curr: HTMLElement | null = parent;
185
+ while (curr && curr !== slideEl && curr.parentElement) {
186
+ const p: HTMLElement = curr.parentElement;
187
+ for (let i = 0; i < p.children.length; i++) {
188
+ const child = p.children[i];
189
+ if (
190
+ child &&
191
+ child !== curr &&
192
+ !child.contains(curr) &&
193
+ child instanceof HTMLElement
194
+ ) {
195
+ slideSiblingsH += child.offsetHeight;
196
+ const cs = window.getComputedStyle(child);
197
+ slideSiblingsH +=
198
+ (Number.parseFloat(cs.marginTop) || 0) +
199
+ (Number.parseFloat(cs.marginBottom) || 0);
200
+ }
165
201
  }
202
+
203
+ if (p === slideEl) {
204
+ break;
205
+ }
206
+
207
+ curr = p;
166
208
  }
167
209
  }
168
210
 
@@ -172,12 +214,18 @@ export function useDiagramAutoScale(
172
214
  sPadTop -
173
215
  sPadBottom -
174
216
  slideSiblingsH -
217
+ internalHeaderH -
175
218
  clearance,
176
219
  );
177
220
  } else if (parent.clientHeight > 0) {
178
221
  availH = Math.max(
179
222
  0,
180
- parent.clientHeight - padTop - padBottom - siblingsH - clearance,
223
+ parent.clientHeight -
224
+ padTop -
225
+ padBottom -
226
+ siblingsH -
227
+ internalHeaderH -
228
+ clearance,
181
229
  );
182
230
  }
183
231
  }
@@ -1,12 +1,12 @@
1
1
  import { useAttrs } from 'vue';
2
2
 
3
- import { mergeUno } from './mergeUno';
4
- import type { TUnoClassValue } from './mergeUno/types';
3
+ import { mergeUno } from './merge-uno';
4
+ import type { TUnoClassValue } from './merge-uno/types';
5
5
 
6
6
  type TUnoClassSource = TUnoClassValue | (() => TUnoClassValue);
7
7
 
8
8
  interface IUseMergedUnoAttrsResult {
9
- readonly className: () => string;
9
+ readonly className: (...extraDefaults: TUnoClassValue[]) => string;
10
10
  readonly forwardedAttrs: () => Record<string, unknown>;
11
11
  }
12
12
 
@@ -20,11 +20,15 @@ export function useMergedUnoAttrs(
20
20
  ): IUseMergedUnoAttrsResult {
21
21
  const attrs = useAttrs();
22
22
 
23
- const className = (): string => {
23
+ const className = (...extraDefaults: TUnoClassValue[]): string => {
24
24
  const resolvedDefaults =
25
25
  typeof defaultClasses === 'function' ? defaultClasses() : defaultClasses;
26
26
 
27
- return mergeUno(resolvedDefaults, attrs.class as TUnoClassValue);
27
+ return mergeUno(
28
+ resolvedDefaults,
29
+ ...extraDefaults,
30
+ attrs.class as TUnoClassValue,
31
+ );
28
32
  };
29
33
 
30
34
  const forwardedAttrs = (): Record<string, unknown> => {
@@ -1,39 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed, inject } from 'vue';
3
-
4
- import { CHEVRON_CARD_KEY } from '../../../utils/chevronCard';
5
-
6
- defineOptions({
7
- name: 'ChevronCardHeading',
8
- });
9
-
10
- export interface IChevronCardHeadingProps {
11
- readonly color?: string;
12
- }
13
-
14
- const props = withDefaults(defineProps<IChevronCardHeadingProps>(), {
15
- color: undefined,
16
- });
17
-
18
- const cardContext = inject(CHEVRON_CARD_KEY, undefined);
19
-
20
- const headingColor = computed(() => {
21
- return props.color ?? cardContext?.titleColor.value ?? '#4b5563';
22
- });
23
- </script>
24
-
25
- <template>
26
- <div
27
- class="alpha-chevron-card-heading font-bold text-[1.25rem] uppercase tracking-wider leading-tight select-none font-sans"
28
- :style="{
29
- color: headingColor,
30
- padding: 0,
31
- fontSize: '1.25rem',
32
- fontFamily:
33
- 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, sans-serif',
34
- marginBottom: '0.25rem',
35
- }"
36
- >
37
- <slot />
38
- </div>
39
- </template>
@@ -1,47 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed, inject } from 'vue';
3
-
4
- import { HORIZ_CARD_KEY } from '../../../utils/horizCard';
5
- import { useMergedUnoAttrs } from '../../../utils/useMergedUnoAttrs';
6
-
7
- defineOptions({
8
- inheritAttrs: false,
9
- name: 'HorizCardHeading',
10
- });
11
-
12
- export interface IHorizCardHeadingProps {
13
- /**
14
- * Title text color. Overrides context titleColor.
15
- */
16
- readonly color?: string;
17
- }
18
-
19
- const props = withDefaults(defineProps<IHorizCardHeadingProps>(), {
20
- color: undefined,
21
- });
22
-
23
- const context = inject(HORIZ_CARD_KEY, undefined);
24
-
25
- const headingColor = computed(() => {
26
- return (
27
- props.color ??
28
- context?.titleColor.value ??
29
- context?.color.value ??
30
- '#ea583a'
31
- );
32
- });
33
-
34
- const { className, forwardedAttrs } = useMergedUnoAttrs(
35
- 'alpha-horiz-card-heading font-sans font-bold text-xl tracking-tight leading-tight',
36
- );
37
- </script>
38
-
39
- <template>
40
- <h3
41
- v-bind="forwardedAttrs()"
42
- :class="className()"
43
- :style="{ color: headingColor }"
44
- >
45
- <slot>Lorem Ipsum</slot>
46
- </h3>
47
- </template>