@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
@@ -1,9 +1,11 @@
1
1
  <script setup lang="ts">
2
2
  import { computed, inject } from 'vue';
3
3
 
4
- import { GEAR_TRIAD_CALLOUT_KEY } from '../../../../utils/gearTriad';
4
+ import { GEAR_TRIAD_CALLOUT_KEY } from '../../../../utils/facets/triad/gear-triad';
5
+ import { useMergedUnoAttrs } from '../../../../utils/useMergedUnoAttrs';
5
6
 
6
7
  defineOptions({
8
+ inheritAttrs: false,
7
9
  name: 'GearTriadHeading',
8
10
  });
9
11
 
@@ -18,21 +20,25 @@ const props = withDefaults(defineProps<IGearTriadHeadingProps>(), {
18
20
  const calloutContext = inject(GEAR_TRIAD_CALLOUT_KEY, undefined);
19
21
 
20
22
  const headingColor = computed(() => {
21
- return props.color ?? calloutContext?.item.value.titleColor ?? '#0f172a';
23
+ return (
24
+ props.color ??
25
+ calloutContext?.item.value.color ??
26
+ 'var(--alpha-gear-triad-heading)'
27
+ );
22
28
  });
29
+
30
+ const { className, forwardedAttrs } = useMergedUnoAttrs(
31
+ 'alpha-gear-triad-heading mb-1.5 font-sans font-bold leading-snug tracking-tight select-none',
32
+ );
23
33
  </script>
24
34
 
25
35
  <template>
26
- <div
27
- class="alpha-gear-triad-heading font-bold text-[1.15rem] tracking-tight leading-snug mb-1.5 select-none"
28
- :style="{
29
- color: headingColor,
30
- fontFamily:
31
- 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, sans-serif',
32
- }"
36
+ <h4
37
+ v-if="$slots.default"
38
+ v-bind="forwardedAttrs()"
39
+ :class="className()"
40
+ :style="{ color: headingColor }"
33
41
  >
34
- <slot>
35
- {{ calloutContext?.item.value.title }}
36
- </slot>
37
- </div>
42
+ <slot>{{ '' }}</slot>
43
+ </h4>
38
44
  </template>
@@ -1,9 +1,11 @@
1
1
  <script setup lang="ts">
2
2
  import { computed, useSlots } from 'vue';
3
3
 
4
- import type { TGearTriadIcon } from '../../../../utils/gearTriad';
4
+ import type { TGearTriadIcon } from '../../../../utils/facets/triad/gear-triad';
5
+ import { useMergedUnoAttrs } from '../../../../utils/useMergedUnoAttrs';
5
6
 
6
7
  defineOptions({
8
+ inheritAttrs: false,
7
9
  name: 'GearTriadIcon',
8
10
  });
9
11
 
@@ -16,7 +18,7 @@ export interface IGearTriadIconProps {
16
18
 
17
19
  const props = withDefaults(defineProps<IGearTriadIconProps>(), {
18
20
  size: 32,
19
- color: '#0f172a',
21
+ color: undefined,
20
22
  strokeWidth: 2,
21
23
  icon: undefined,
22
24
  });
@@ -27,6 +29,7 @@ const shouldRender = computed((): boolean => {
27
29
  if (props.icon === false) {
28
30
  return false;
29
31
  }
32
+
30
33
  return Boolean(props.icon || slots.default);
31
34
  });
32
35
 
@@ -37,16 +40,21 @@ const isStringIcon = computed((): boolean => {
37
40
  const isComponentIcon = computed((): boolean => {
38
41
  return typeof props.icon === 'object' && props.icon !== null;
39
42
  });
43
+
44
+ const { className, forwardedAttrs } = useMergedUnoAttrs(
45
+ 'alpha-gear-triad-icon flex items-center justify-center text-(--alpha-gear-triad-icon) pointer-events-none select-none',
46
+ );
40
47
  </script>
41
48
 
42
49
  <template>
43
50
  <div
44
51
  v-if="shouldRender"
45
- class="alpha-gear-triad-icon flex items-center justify-center pointer-events-none select-none"
52
+ v-bind="forwardedAttrs()"
53
+ :class="className()"
46
54
  :style="{
47
- color: props.color,
48
55
  width: `${props.size}px`,
49
56
  height: `${props.size}px`,
57
+ ...(props.color ? { '--alpha-gear-triad-icon': props.color } : {}),
50
58
  }"
51
59
  >
52
60
  <slot>
@@ -54,17 +62,15 @@ const isComponentIcon = computed((): boolean => {
54
62
  <component
55
63
  :is="props.icon"
56
64
  v-if="isComponentIcon"
57
- class="w-full h-full"
58
- :style="{ color: props.color }"
65
+ class="w-full h-full text-current"
59
66
  />
60
67
 
61
68
  <!-- UnoCSS / Iconify class name (e.g. i-lucide-file-text) -->
62
69
  <span
63
70
  v-else-if="isStringIcon && (props.icon as string).includes('-')"
64
71
  :class="props.icon"
65
- class="inline-block"
72
+ class="inline-block text-current"
66
73
  :style="{
67
- color: props.color,
68
74
  width: `${props.size}px`,
69
75
  height: `${props.size}px`,
70
76
  fontSize: `${props.size}px`,
@@ -73,6 +79,7 @@ const isComponentIcon = computed((): boolean => {
73
79
 
74
80
  <!-- 01 Document with folded corner and lines (Option 1) -->
75
81
  <svg
82
+ aria-hidden="true"
76
83
  v-else-if="
77
84
  props.icon === 'document' ||
78
85
  props.icon === 'file' ||
@@ -95,6 +102,7 @@ const isComponentIcon = computed((): boolean => {
95
102
 
96
103
  <!-- 02 Shield with star (Option 2) -->
97
104
  <svg
105
+ aria-hidden="true"
98
106
  v-else-if="props.icon === 'shield' || props.icon === 'shield-star'"
99
107
  viewBox="0 0 24 24"
100
108
  fill="none"
@@ -113,6 +121,7 @@ const isComponentIcon = computed((): boolean => {
113
121
 
114
122
  <!-- 03 Archive box with files poking out (Option 3) -->
115
123
  <svg
124
+ aria-hidden="true"
116
125
  v-else-if="
117
126
  props.icon === 'archive' ||
118
127
  props.icon === 'box' ||
@@ -133,11 +142,15 @@ const isComponentIcon = computed((): boolean => {
133
142
  <!-- Center handle slot -->
134
143
  <line x1="10" y1="15" x2="14" y2="15" />
135
144
  <!-- Folders / papers peeking out top -->
136
- <path d="M7 7V4a1 1 0 0 1 1-1h4l2 2h3a1 1 0 0 1 1 1v1" stroke-width="1.5" />
145
+ <path
146
+ d="M7 7V4a1 1 0 0 1 1-1h4l2 2h3a1 1 0 0 1 1 1v1"
147
+ stroke-width="1.5"
148
+ />
137
149
  </svg>
138
150
 
139
151
  <!-- 04 Center Gear with 6 teeth and 3-spoke inner steering (Center Hub) -->
140
152
  <svg
153
+ aria-hidden="true"
141
154
  v-else-if="props.icon === 'gear' || props.icon === 'settings' || props.icon === 'cog'"
142
155
  viewBox="0 0 24 24"
143
156
  fill="none"
@@ -0,0 +1,26 @@
1
+ /* Color defaults shared by this component family. */
2
+ @layer alpha-theme-tokens {
3
+ :root {
4
+ --alpha-gear-triad-content: var(--alpha-foreground-primary, #64748b);
5
+ --alpha-gear-triad-center-bg-end: #f1f5f9;
6
+ --alpha-gear-triad-center-bg-start: #ffffff;
7
+ --alpha-gear-triad-center-icon: #0f172a;
8
+ --alpha-gear-triad-center-shadow: 0 6px 20px -2px rgba(0, 0, 0, 0.22), 0 2px 6px -1px rgba(0, 0, 0, 0.12);
9
+ --alpha-gear-triad-detail: var(--alpha-foreground-primary, #475569);
10
+ --alpha-gear-triad-detail-number: #334155;
11
+ --alpha-gear-triad-details-content: var(--alpha-foreground-primary, #64748b);
12
+ --alpha-gear-triad-details-heading: var(--alpha-foreground-primary, #0f172a);
13
+ --alpha-gear-triad-heading: var(--alpha-foreground-primary, #0f172a);
14
+ --alpha-gear-triad-icon: #0f172a;
15
+ --alpha-gear-triad-item-1-color: #1fb5b5;
16
+ --alpha-gear-triad-item-1-depth: #126e7a;
17
+ --alpha-gear-triad-item-2-color: #f38942;
18
+ --alpha-gear-triad-item-2-depth: #aa521d;
19
+ --alpha-gear-triad-item-3-color: #f05367;
20
+ --alpha-gear-triad-item-3-depth: #a82c3c;
21
+ --alpha-gear-triad-muted-icon: #ffffff;
22
+ --alpha-gear-triad-muted-sector: #d5d8dc;
23
+ --alpha-gear-triad-shadow: #0f172a;
24
+ --alpha-gear-triad-valley: #11455c;
25
+ }
26
+ }
@@ -9,23 +9,19 @@ import {
9
9
  } from 'vue';
10
10
 
11
11
  import {
12
- calculateHexTriadCoordinates,
12
+ calculateHexagonTriadCoordinates,
13
13
  createRoundedHexagonPath,
14
14
  HEX_TRIAD_ROOT_KEY,
15
- type IHexTriadItem,
16
- resolveHexTriadItems,
17
- } from '../../../../utils/hexTriad';
15
+ resolveHexagonTriadItems,
16
+ } from '../../../../utils/facets/triad/hexagon-triad';
18
17
  import { useMergedUnoAttrs } from '../../../../utils/useMergedUnoAttrs';
19
18
 
20
19
  defineOptions({
21
20
  inheritAttrs: false,
22
21
  });
23
22
 
24
- export interface IHexTriadProps {
25
- readonly title?: string;
26
- readonly subtitle?: string;
23
+ export interface IHexagonTriadProps {
27
24
  readonly animation?: boolean;
28
- readonly items?: readonly IHexTriadItem[];
29
25
  /**
30
26
  * Additional delay (ms) before animation starts.
31
27
  * Defaults to 600ms inside `shifting-intro` layout, 0ms otherwise.
@@ -38,12 +34,9 @@ export interface IHexTriadProps {
38
34
  readonly active?: boolean;
39
35
  }
40
36
 
41
- const props = withDefaults(defineProps<IHexTriadProps>(), {
37
+ const props = withDefaults(defineProps<IHexagonTriadProps>(), {
42
38
  animation: true,
43
- title: undefined,
44
- items: undefined,
45
39
  active: undefined,
46
- subtitle: undefined,
47
40
  startDelay: undefined,
48
41
  });
49
42
 
@@ -85,7 +78,7 @@ const resolvedStartDelay = computed(() => {
85
78
  return 0;
86
79
  });
87
80
 
88
- const resolvedItems = computed(() => resolveHexTriadItems(props.items));
81
+ const resolvedItems = computed(() => resolveHexagonTriadItems());
89
82
 
90
83
  let calloutCounter = 0;
91
84
  const customBadgeTexts = ref<(string | number)[]>([]);
@@ -122,7 +115,7 @@ const item3 = computed(() => {
122
115
  });
123
116
 
124
117
  // Central diagram coordinates
125
- const coords = calculateHexTriadCoordinates();
118
+ const coords = calculateHexagonTriadCoordinates();
126
119
  const {
127
120
  hex1,
128
121
  hex2,
@@ -226,7 +219,7 @@ const hex3TopPath = createRoundedHexagonPath(
226
219
  );
227
220
 
228
221
  const { className, forwardedAttrs } = useMergedUnoAttrs(
229
- 'alpha-hex-triad w-full flex flex-col items-center justify-center select-none font-sans',
222
+ 'alpha-hexagon-triad w-full flex flex-col items-center justify-center select-none font-sans',
230
223
  );
231
224
  </script>
232
225
 
@@ -236,46 +229,75 @@ const { className, forwardedAttrs } = useMergedUnoAttrs(
236
229
  :class="className()"
237
230
  :style="{ '--hex-start-delay': `${resolvedStartDelay}ms` }"
238
231
  >
239
- <header v-if="title || $slots.title" class="alpha-hex-triad__header mb-4 text-center">
240
- <slot name="title">
241
- <h2 class="alpha-hex-triad__title text-2xl font-bold font-sans tracking-tight">
242
- {{ title }}
243
- </h2>
244
- </slot>
245
- <p v-if="subtitle || $slots.subtitle" class="alpha-hex-triad__subtitle text-sm font-sans">
246
- <slot name="subtitle">{{ subtitle }}</slot>
247
- </p>
248
- </header>
249
- <div class="alpha-hex-triad__stage relative w-full max-w-5xl h-[440px] flex items-center justify-center">
232
+ <div
233
+ class="alpha-hexagon-triad__stage relative w-full max-w-5xl h-110 flex items-center justify-center"
234
+ >
250
235
  <!-- Center Column: Overlapping 3D Rounded Hexagon SVG -->
251
- <div class="alpha-hex-triad__center relative flex items-center justify-center">
236
+ <div
237
+ class="alpha-hexagon-triad__center relative flex items-center justify-center"
238
+ >
252
239
  <svg
253
- class="alpha-hex-triad__svg w-[450px] h-[420px] overflow-visible"
240
+ aria-hidden="true"
241
+ class="alpha-hexagon-triad__svg w-112.5 h-105 overflow-visible"
254
242
  viewBox="0 0 540 440"
255
243
  >
256
244
  <defs>
257
245
  <!-- Drop shadow for badges -->
258
- <filter id="hex-badge-shadow" x="-30%" y="-30%" width="160%" height="160%">
259
- <feDropShadow dx="0" dy="3" stdDeviation="4" flood-opacity="0.35" />
246
+ <filter
247
+ id="hex-badge-shadow"
248
+ x="-30%"
249
+ y="-30%"
250
+ width="160%"
251
+ height="160%"
252
+ >
253
+ <feDropShadow
254
+ dx="0"
255
+ dy="3"
256
+ stdDeviation="4"
257
+ flood-opacity="0.35"
258
+ />
260
259
  </filter>
261
260
  <!-- 3D extrusion shadow for base layer -->
262
- <filter id="hex-triad-depth" x="-20%" y="-20%" width="140%" height="140%">
263
- <feDropShadow dx="0" dy="6" stdDeviation="6" flood-opacity="0.3" />
261
+ <filter
262
+ id="hexagon-triad-depth"
263
+ x="-20%"
264
+ y="-20%"
265
+ width="140%"
266
+ height="140%"
267
+ >
268
+ <feDropShadow
269
+ dx="0"
270
+ dy="6"
271
+ stdDeviation="6"
272
+ flood-opacity="0.3"
273
+ />
264
274
  </filter>
265
275
  <!-- Gradients for Hex 01 -->
266
276
  <linearGradient id="grad-hex-1" x1="0%" y1="0%" x2="0%" y2="100%">
267
277
  <stop offset="0%" :stop-color="item1.color" stop-opacity="0.95" />
268
- <stop offset="100%" :stop-color="item1.depthColor" stop-opacity="0.9" />
278
+ <stop
279
+ offset="100%"
280
+ :stop-color="item1.depthColor"
281
+ stop-opacity="0.9"
282
+ />
269
283
  </linearGradient>
270
284
  <!-- Gradients for Hex 02 -->
271
285
  <linearGradient id="grad-hex-2" x1="0%" y1="0%" x2="100%" y2="100%">
272
286
  <stop offset="0%" :stop-color="item2.color" stop-opacity="0.95" />
273
- <stop offset="100%" :stop-color="item2.depthColor" stop-opacity="0.9" />
287
+ <stop
288
+ offset="100%"
289
+ :stop-color="item2.depthColor"
290
+ stop-opacity="0.9"
291
+ />
274
292
  </linearGradient>
275
293
  <!-- Gradients for Hex 03 -->
276
294
  <linearGradient id="grad-hex-3" x1="0%" y1="0%" x2="100%" y2="100%">
277
295
  <stop offset="0%" :stop-color="item3.color" stop-opacity="0.95" />
278
- <stop offset="100%" :stop-color="item3.depthColor" stop-opacity="0.9" />
296
+ <stop
297
+ offset="100%"
298
+ :stop-color="item3.depthColor"
299
+ stop-opacity="0.9"
300
+ />
279
301
  </linearGradient>
280
302
  </defs>
281
303
  <!-- LAYER 1: Background Pastel Offset Hexagons (Animated: slides out from behind solid hexagon to offset position) -->
@@ -283,7 +305,7 @@ const { className, forwardedAttrs } = useMergedUnoAttrs(
283
305
  class="alpha-hex-layer1 alpha-hex-layer1--3"
284
306
  :class="{ 'alpha-hex-layer1--animated': isAnimated }"
285
307
  >
286
- <HexTriadLayer
308
+ <HexagonTriadLayer
287
309
  :d="hex3BgPath"
288
310
  :fill="item3.lightColor ?? item3.color"
289
311
  :opacity="0.38"
@@ -293,7 +315,7 @@ const { className, forwardedAttrs } = useMergedUnoAttrs(
293
315
  class="alpha-hex-layer1 alpha-hex-layer1--2"
294
316
  :class="{ 'alpha-hex-layer1--animated': isAnimated }"
295
317
  >
296
- <HexTriadLayer
318
+ <HexagonTriadLayer
297
319
  :d="hex2BgPath"
298
320
  :fill="item2.lightColor ?? item2.color"
299
321
  :opacity="0.38"
@@ -303,62 +325,62 @@ const { className, forwardedAttrs } = useMergedUnoAttrs(
303
325
  class="alpha-hex-layer1 alpha-hex-layer1--1"
304
326
  :class="{ 'alpha-hex-layer1--animated': isAnimated }"
305
327
  >
306
- <HexTriadLayer
328
+ <HexagonTriadLayer
307
329
  :d="hex1BgPath"
308
330
  :fill="item1.lightColor ?? item1.color"
309
331
  :opacity="0.38"
310
332
  />
311
333
  </g>
312
334
  <!-- LAYER 2: Middle 3D Depth Base Hexagons (3 hexa blocks) -->
313
- <HexTriadLayer
335
+ <HexagonTriadLayer
314
336
  :d="hex3BasePath"
315
337
  :fill="item3.depthColor"
316
- filter="url(#hex-triad-depth)"
338
+ filter="url(#hexagon-triad-depth)"
317
339
  :opacity="0.85"
318
340
  />
319
- <HexTriadLayer
341
+ <HexagonTriadLayer
320
342
  :d="hex2BasePath"
321
343
  :fill="item2.depthColor"
322
- filter="url(#hex-triad-depth)"
344
+ filter="url(#hexagon-triad-depth)"
323
345
  :opacity="0.85"
324
346
  />
325
- <HexTriadLayer
347
+ <HexagonTriadLayer
326
348
  :d="hex1BasePath"
327
349
  :fill="item1.depthColor"
328
- filter="url(#hex-triad-depth)"
350
+ filter="url(#hexagon-triad-depth)"
329
351
  :opacity="0.85"
330
352
  />
331
353
  <!-- LAYER 3: Foreground Hexagons with Gradients (3 hexa blocks) -->
332
- <HexTriadLayer
354
+ <HexagonTriadLayer
333
355
  :d="hex3TopPath"
334
356
  fill="url(#grad-hex-3)"
335
357
  :opacity="0.9"
336
358
  />
337
- <HexTriadLayer
359
+ <HexagonTriadLayer
338
360
  :d="hex2TopPath"
339
361
  fill="url(#grad-hex-2)"
340
362
  :opacity="0.9"
341
363
  />
342
- <HexTriadLayer
364
+ <HexagonTriadLayer
343
365
  :d="hex1TopPath"
344
366
  fill="url(#grad-hex-1)"
345
367
  :opacity="0.9"
346
368
  />
347
369
  <!-- LAYER 4: White Interconnecting Ring (Circumcircle) -->
348
370
  <circle
349
- class="alpha-hex-triad__circumcircle"
371
+ class="alpha-hexagon-triad__circumcircle"
350
372
  :cx="centerX"
351
373
  :cy="centerY"
352
374
  :r="triadRadius"
353
375
  fill="none"
354
- stroke="#ffffff"
376
+ stroke="var(--alpha-hexagon-triad-connector-stroke)"
355
377
  stroke-width="2.5"
356
378
  stroke-linecap="round"
357
379
  :style="{ opacity: 0.95 }"
358
380
  />
359
381
  <!-- LAYER 5: Center Circular Badges (Centered Directly on the White Circle) -->
360
382
  <!-- Badge 03 (Bottom-Left) -->
361
- <HexTriadCenterBadge
383
+ <HexagonTriadCenterBadge
362
384
  :x="badge3X"
363
385
  :y="badge3Y"
364
386
  :radius="badgeRadius"
@@ -366,7 +388,7 @@ const { className, forwardedAttrs } = useMergedUnoAttrs(
366
388
  :text="customBadgeTexts[2] || item3.id"
367
389
  />
368
390
  <!-- Badge 02 (Bottom-Right) -->
369
- <HexTriadCenterBadge
391
+ <HexagonTriadCenterBadge
370
392
  :x="badge2X"
371
393
  :y="badge2Y"
372
394
  :radius="badgeRadius"
@@ -374,7 +396,7 @@ const { className, forwardedAttrs } = useMergedUnoAttrs(
374
396
  :text="customBadgeTexts[1] || item2.id"
375
397
  />
376
398
  <!-- Badge 01 (Top) -->
377
- <HexTriadCenterBadge
399
+ <HexagonTriadCenterBadge
378
400
  :x="badge1X"
379
401
  :y="badge1Y"
380
402
  :radius="badgeRadius"
@@ -383,14 +405,7 @@ const { className, forwardedAttrs } = useMergedUnoAttrs(
383
405
  />
384
406
  </svg>
385
407
  </div>
386
- <!-- If default slot provided, render user's <HexTriadCallout> components -->
387
- <slot v-if="$slots.default" />
388
- <!-- Fallback: render 3 default callouts if no slots provided -->
389
- <template v-else>
390
- <HexTriadCallout />
391
- <HexTriadCallout />
392
- <HexTriadCallout />
393
- </template>
408
+ <slot />
394
409
  </div>
395
410
  </div>
396
411
  </template>
@@ -398,15 +413,18 @@ const { className, forwardedAttrs } = useMergedUnoAttrs(
398
413
  <style scoped>
399
414
  /* Layer 1 (Pastel Hexagons) slides out with overlapping cascading stagger */
400
415
  .alpha-hex-layer1--1.alpha-hex-layer1--animated {
401
- animation: hex-layer1-slide-1 500ms cubic-bezier(0.25, 1, 0.5, 1) calc(var(--hex-start-delay, 0ms) + 100ms) both;
416
+ animation: hex-layer1-slide-1 500ms cubic-bezier(0.25, 1, 0.5, 1)
417
+ calc(var(--hex-start-delay, 0ms) + 100ms) both;
402
418
  }
403
419
 
404
420
  .alpha-hex-layer1--2.alpha-hex-layer1--animated {
405
- animation: hex-layer1-slide-2 500ms cubic-bezier(0.25, 1, 0.5, 1) calc(var(--hex-start-delay, 0ms) + 300ms) both;
421
+ animation: hex-layer1-slide-2 500ms cubic-bezier(0.25, 1, 0.5, 1)
422
+ calc(var(--hex-start-delay, 0ms) + 300ms) both;
406
423
  }
407
424
 
408
425
  .alpha-hex-layer1--3.alpha-hex-layer1--animated {
409
- animation: hex-layer1-slide-3 500ms cubic-bezier(0.25, 1, 0.5, 1) calc(var(--hex-start-delay, 0ms) + 500ms) both;
426
+ animation: hex-layer1-slide-3 500ms cubic-bezier(0.25, 1, 0.5, 1)
427
+ calc(var(--hex-start-delay, 0ms) + 500ms) both;
410
428
  }
411
429
 
412
430
  @keyframes hex-layer1-slide-1 {
@@ -4,19 +4,21 @@ import { computed, inject, useSlots, watchEffect } from 'vue';
4
4
  import {
5
5
  createRoundedHexagonPath,
6
6
  HEX_TRIAD_CALLOUT_KEY,
7
- } from '../../../../utils/hexTriad';
7
+ } from '../../../../utils/facets/triad/hexagon-triad';
8
+ import { useMergedUnoAttrs } from '../../../../utils/useMergedUnoAttrs';
8
9
 
9
10
  defineOptions({
10
- name: 'HexTriadBadge',
11
+ inheritAttrs: false,
12
+ name: 'HexagonTriadBadge',
11
13
  });
12
14
 
13
- export interface IHexTriadBadgeProps {
15
+ export interface IHexagonTriadBadgeProps {
14
16
  readonly id?: string | number;
15
17
  readonly color?: string;
16
18
  readonly lightColor?: string;
17
19
  }
18
20
 
19
- const props = withDefaults(defineProps<IHexTriadBadgeProps>(), {
21
+ const props = withDefaults(defineProps<IHexagonTriadBadgeProps>(), {
20
22
  id: undefined,
21
23
  color: undefined,
22
24
  lightColor: undefined,
@@ -32,7 +34,11 @@ const slots = useSlots();
32
34
  const miniHexPath = createRoundedHexagonPath(18, 18, 17, 4.5);
33
35
 
34
36
  const badgeColor = computed(() => {
35
- return props.color ?? calloutContext?.item.value.color ?? '#e11d48';
37
+ return (
38
+ props.color ??
39
+ calloutContext?.item.value.color ??
40
+ 'var(--alpha-hexagon-triad-badge-bg)'
41
+ );
36
42
  });
37
43
 
38
44
  const badgeLightColor = computed(() => {
@@ -40,7 +46,7 @@ const badgeLightColor = computed(() => {
40
46
  props.lightColor ??
41
47
  calloutContext?.item.value.lightColor ??
42
48
  calloutContext?.item.value.color ??
43
- '#fb7185'
49
+ 'var(--alpha-hexagon-triad-badge-light)'
44
50
  );
45
51
  });
46
52
 
@@ -81,26 +87,46 @@ watchEffect(() => {
81
87
  calloutContext.setBadgeText(badgeText.value);
82
88
  }
83
89
  });
90
+
91
+ const { className, forwardedAttrs } = useMergedUnoAttrs(
92
+ 'alpha-hexagon-triad-badge w-10 h-10 drop-shadow shrink-0',
93
+ );
84
94
  </script>
85
95
 
86
96
  <template>
87
- <svg class="alpha-hex-triad-badge w-10 h-10 drop-shadow flex-shrink-0" viewBox="0 0 36 36">
88
- <path class="alpha-hex-triad-badge__bg" :d="miniHexPath" :fill="badgeLightColor" :style="{ opacity: 0.45 }" />
97
+ <svg
98
+ aria-hidden="true"
99
+ v-bind="forwardedAttrs()"
100
+ :class="className()"
101
+ viewBox="0 0 36 36"
102
+ >
89
103
  <path
90
- class="alpha-hex-triad-badge__border"
104
+ class="alpha-hexagon-triad-badge__bg"
105
+ :d="miniHexPath"
106
+ :fill="badgeLightColor"
107
+ :style="{ opacity: 0.45 }"
108
+ />
109
+ <path
110
+ class="alpha-hexagon-triad-badge__border"
91
111
  :d="miniHexPath"
92
112
  fill="none"
93
113
  :stroke="badgeLightColor"
94
114
  stroke-width="1"
95
115
  :style="{ opacity: 0.8 }"
96
116
  />
97
- <circle class="alpha-hex-triad-badge__circle" cx="18" cy="18" r="11" :fill="badgeColor" />
117
+ <circle
118
+ class="alpha-hexagon-triad-badge__circle"
119
+ cx="18"
120
+ cy="18"
121
+ r="11"
122
+ :fill="badgeColor"
123
+ />
98
124
  <text
99
- class="alpha-hex-triad-badge__text font-black text-[10px] font-sans select-none"
125
+ class="alpha-hexagon-triad-badge__text font-black text-[10px] font-sans select-none"
100
126
  x="18"
101
127
  y="21.5"
102
128
  text-anchor="middle"
103
- fill="#ffffff"
129
+ fill="var(--alpha-hexagon-triad-badge)"
104
130
  >
105
131
  <tspan>
106
132
  <slot>{{ fallbackId }}</slot>