@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,212 @@
1
+ <script setup lang="ts">
2
+ import { computed, inject } from 'vue';
3
+
4
+ import {
5
+ CIRCULAR_PYRAMID_ROOT_KEY,
6
+ CIRCULAR_PYRAMID_STACK_KEY,
7
+ } from '../../../utils/pyramid/circular-pyramid';
8
+ import { useMergedUnoAttrs } from '../../../utils/useMergedUnoAttrs';
9
+
10
+ defineOptions({
11
+ name: 'CircularPyramidStackHeading',
12
+ inheritAttrs: false,
13
+ });
14
+
15
+ export interface ICircularPyramidStackHeadingProps {
16
+ readonly step?: string | number;
17
+ readonly color?: string;
18
+ readonly minWidth?: number;
19
+ }
20
+
21
+ const props = withDefaults(defineProps<ICircularPyramidStackHeadingProps>(), {
22
+ step: undefined,
23
+ color: undefined,
24
+ minWidth: 150,
25
+ });
26
+
27
+ const rootContext = inject(CIRCULAR_PYRAMID_ROOT_KEY, undefined);
28
+ const stackContext = inject(CIRCULAR_PYRAMID_STACK_KEY, undefined);
29
+
30
+ const isActive = computed(() => {
31
+ return stackContext?.isActive.value ?? false;
32
+ });
33
+
34
+ const isAnimated = computed(() => {
35
+ return rootContext?.animation.value ?? false;
36
+ });
37
+
38
+ const stepIndex = computed(() => {
39
+ return stackContext?.index.value ?? 0;
40
+ });
41
+
42
+ const resolvedStep = computed(() => {
43
+ if (props.step !== undefined) {
44
+ return props.step;
45
+ }
46
+
47
+ if (stackContext?.step.value !== undefined) {
48
+ return stackContext.step.value;
49
+ }
50
+
51
+ return '01';
52
+ });
53
+
54
+ const minPillWidth = computed(() => props.minWidth ?? 150);
55
+
56
+ const stackColor = computed(() => {
57
+ return (
58
+ props.color ??
59
+ stackContext?.color?.value ??
60
+ rootContext?.color.value ??
61
+ 'var(--alpha-circular-pyramid-stack-heading-accent)'
62
+ );
63
+ });
64
+
65
+ const { className, forwardedAttrs } = useMergedUnoAttrs(() => [
66
+ 'alpha-circular-pyramid-stack-heading__pill flex items-center gap-2 px-2.5 py-1 rounded-full text-xs font-semibold tracking-tight leading-tight transition-all duration-300 border shrink-0',
67
+ isActive.value
68
+ ? 'bg-(--alpha-circular-pyramid-stack-heading-border-active) text-(--alpha-circular-pyramid-stack-heading-active)'
69
+ : 'bg-(--alpha-circular-pyramid-stack-heading-border) text-(--alpha-circular-pyramid-stack-heading)',
70
+ ]);
71
+ </script>
72
+
73
+ <template>
74
+ <div
75
+ class="alpha-circular-pyramid-stack-heading relative w-full flex items-center select-none"
76
+ :class="[
77
+ isActive
78
+ ? 'alpha-circular-pyramid-stack-heading--active'
79
+ : 'alpha-circular-pyramid-stack-heading--default',
80
+ ]"
81
+ :style="{
82
+ '--title-delay': `calc(var(--alpha-circular-pyramid-start-delay, 0ms) + ${460 + stepIndex * 320}ms)`,
83
+ }"
84
+ >
85
+ <!-- Pill Badge Container (min-width: 150px, max-width: whole spacing left leaving at least 30px before dot) -->
86
+ <div
87
+ v-bind="forwardedAttrs()"
88
+ :class="
89
+ className({
90
+ 'alpha-circular-pyramid-stack-heading__pill--animated': isAnimated,
91
+ })
92
+ "
93
+ :style="{
94
+ minWidth: `${minPillWidth}px`,
95
+ maxWidth: 'calc(100% - 30px)',
96
+ width: 'fit-content',
97
+ boxSizing: 'border-box',
98
+ borderColor: stackColor,
99
+ boxShadow: isActive
100
+ ? `0 4px 14px color-mix(in srgb, ${stackColor} 15%, transparent)`
101
+ : 'none',
102
+ }"
103
+ >
104
+ <!-- Circular Step Indicator (Badge using stack color) -->
105
+ <div
106
+ class="w-5.5 h-5.5 rounded-full flex items-center justify-center text-[10px] font-bold tracking-tight text-(--alpha-circular-pyramid-stack-heading-number) transition-all duration-300 shrink-0"
107
+ :style="{
108
+ backgroundColor: stackColor,
109
+ }"
110
+ >
111
+ <slot name="step">{{ resolvedStep }}</slot>
112
+ </div>
113
+ <!-- Title Text -->
114
+ <h4
115
+ class="text-xs font-semibold tracking-tight leading-tight transition-colors duration-300 pr-1 truncate flex-1"
116
+ >
117
+ <slot>{{ '' }}</slot>
118
+ </h4>
119
+ </div>
120
+ <!-- Scalable Line between Title and Dot (always at least 30px) -->
121
+ <div
122
+ class="alpha-circular-pyramid-stack-heading__connector flex-1 flex items-center min-w-7.5 pointer-events-none"
123
+ >
124
+ <div
125
+ class="alpha-circular-pyramid-stack-heading__line flex-1 h-px transition-colors duration-300"
126
+ :class="{
127
+ 'alpha-circular-pyramid-stack-heading__line--animated': isAnimated,
128
+ }"
129
+ :style="{
130
+ backgroundColor: stackColor,
131
+ opacity: isActive ? 1 : 0.65,
132
+ }"
133
+ />
134
+ <div
135
+ class="alpha-circular-pyramid-stack-heading__dot w-1.5 h-1.5 rounded-full shrink-0 -ml-1 transition-all duration-300"
136
+ :class="{
137
+ 'alpha-circular-pyramid-stack-heading__dot--animated': isAnimated,
138
+ }"
139
+ :style="{
140
+ backgroundColor: stackColor,
141
+ boxShadow: isActive
142
+ ? `0 0 6px ${stackColor}`
143
+ : `0 0 2px color-mix(in srgb, ${stackColor} 50%, transparent)`,
144
+ }"
145
+ />
146
+ </div>
147
+ </div>
148
+ </template>
149
+
150
+ <style scoped>
151
+ .alpha-circular-pyramid-stack-heading {
152
+ box-sizing: border-box;
153
+ }
154
+
155
+ .alpha-circular-pyramid-stack-heading--active
156
+ .alpha-circular-pyramid-stack-heading__pill {
157
+ backdrop-filter: blur(8px);
158
+ }
159
+
160
+ .alpha-circular-pyramid-stack-heading__dot--animated {
161
+ animation: alpha-pyramid-title-dot-pop 120ms cubic-bezier(0.16, 1, 0.3, 1)
162
+ var(--title-delay) both;
163
+ }
164
+
165
+ @keyframes alpha-pyramid-title-dot-pop {
166
+ 0% {
167
+ opacity: 0;
168
+ transform: scale(0);
169
+ }
170
+ 100% {
171
+ opacity: 1;
172
+ transform: scale(1);
173
+ }
174
+ }
175
+
176
+ .alpha-circular-pyramid-stack-heading__line--animated {
177
+ transform-origin: right center;
178
+ animation: alpha-pyramid-title-line-draw 500ms cubic-bezier(0.4, 0, 0.2, 1)
179
+ calc(var(--title-delay) + 120ms) both;
180
+ }
181
+
182
+ @keyframes alpha-pyramid-title-line-draw {
183
+ 0% {
184
+ opacity: 0;
185
+ transform: scaleX(0);
186
+ }
187
+ 2% {
188
+ opacity: 1;
189
+ transform: scaleX(0);
190
+ }
191
+ 100% {
192
+ opacity: 1;
193
+ transform: scaleX(1);
194
+ }
195
+ }
196
+
197
+ .alpha-circular-pyramid-stack-heading__pill--animated {
198
+ animation: alpha-pyramid-title-pill-in 240ms cubic-bezier(0.16, 1, 0.3, 1)
199
+ calc(var(--title-delay) + 380ms) both;
200
+ }
201
+
202
+ @keyframes alpha-pyramid-title-pill-in {
203
+ 0% {
204
+ opacity: 0;
205
+ transform: translateX(-10px);
206
+ }
207
+ 100% {
208
+ opacity: 1;
209
+ transform: translateX(0);
210
+ }
211
+ }
212
+ </style>
@@ -0,0 +1,26 @@
1
+ /* Color defaults shared by this component family. */
2
+ @layer alpha-theme-tokens {
3
+ :root {
4
+ --alpha-circular-pyramid-accent: #3b82f6;
5
+ --alpha-circular-pyramid-center: #0f172a;
6
+ --alpha-circular-pyramid-connector-highlight: rgba(255, 255, 255, 0.5);
7
+ --alpha-circular-pyramid-stack-1-color: #3b82f6;
8
+ --alpha-circular-pyramid-stack-2-color: #6366f1;
9
+ --alpha-circular-pyramid-stack-3-color: #10b981;
10
+ --alpha-circular-pyramid-stack-4-color: #f59e0b;
11
+ --alpha-circular-pyramid-stack-5-color: #ec4899;
12
+ --alpha-circular-pyramid-stack-6-color: #06b6d4;
13
+ --alpha-circular-pyramid-stack-content: var(--alpha-foreground-primary, #475569);
14
+ --alpha-circular-pyramid-stack-content-accent: #3b82f6;
15
+ --alpha-circular-pyramid-stack-content-active: #0f172a;
16
+ --alpha-circular-pyramid-stack-content-border: rgba(255, 255, 255, 0.85);
17
+ --alpha-circular-pyramid-stack-content-border-active: rgba(255, 255, 255, 0.95);
18
+ --alpha-circular-pyramid-highlight: #fff;
19
+ --alpha-circular-pyramid-stack-heading: var(--alpha-foreground-primary, #334155);
20
+ --alpha-circular-pyramid-stack-heading-accent: #3b82f6;
21
+ --alpha-circular-pyramid-stack-heading-active: #0f172a;
22
+ --alpha-circular-pyramid-stack-heading-border: rgba(255, 255, 255, 0.85);
23
+ --alpha-circular-pyramid-stack-heading-border-active: rgba(255, 255, 255, 0.95);
24
+ --alpha-circular-pyramid-stack-heading-number: #fff;
25
+ }
26
+ }