@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
@@ -5,22 +5,25 @@ import {
5
5
  ARC_DID_LAYER_KEY,
6
6
  ARC_DID_ROOT_KEY,
7
7
  ARC_DID_SECTOR_KEY,
8
- } from '../../../utils/defenseInDepth/arcDid/context';
8
+ } from '../../../utils/defense-in-depth/arc-defense-in-depth/context';
9
9
  import {
10
10
  calculatePartAngles,
11
11
  polarToCartesian,
12
- } from '../../../utils/defenseInDepth/arcDid/createArcDiDGeometry';
12
+ } from '../../../utils/defense-in-depth/arc-defense-in-depth/createArcDefenseInDepthGeometry';
13
13
  import type {
14
- IArcDiDPartItem,
15
- TArcDiDPartPosition,
16
- } from '../../../utils/defenseInDepth/arcDid/types';
17
- import { DEFAULT_DID_DOT_COLOR } from '../../../utils/defenseInDepth/shared/constants';
14
+ IArcDefenseInDepthPartItem,
15
+ TArcDefenseInDepthOrientation,
16
+ TArcDefenseInDepthPartPosition,
17
+ } from '../../../utils/defense-in-depth/arc-defense-in-depth/types';
18
+ import { DEFAULT_DID_DOT_COLOR } from '../../../utils/defense-in-depth/shared/constants';
19
+ import { useMergedUnoAttrs } from '../../../utils/useMergedUnoAttrs';
18
20
 
19
21
  defineOptions({
20
- name: 'ArcDiDLayerPart',
22
+ inheritAttrs: false,
23
+ name: 'ArcDefenseInDepthLayerPart',
21
24
  });
22
25
 
23
- export interface IArcDiDLayerPartProps {
26
+ export interface IArcDefenseInDepthLayerPartProps {
24
27
  readonly label?: string;
25
28
  readonly index?: number;
26
29
  readonly angle?: number;
@@ -30,14 +33,14 @@ export interface IArcDiDLayerPartProps {
30
33
  readonly icon?: string;
31
34
  readonly showDot?: boolean;
32
35
  readonly span?: number;
33
- readonly position?: TArcDiDPartPosition;
36
+ readonly position?: TArcDefenseInDepthPartPosition;
34
37
  readonly maxWidth?: number | string;
35
- readonly rotate?: boolean | number | 'tangent' | 'auto';
36
- readonly skew?: boolean | number | string;
38
+ readonly rotate?: TArcDefenseInDepthOrientation;
39
+ readonly skew?: TArcDefenseInDepthOrientation;
37
40
  readonly active?: boolean;
38
41
  }
39
42
 
40
- const props = withDefaults(defineProps<IArcDiDLayerPartProps>(), {
43
+ const props = withDefaults(defineProps<IArcDefenseInDepthLayerPartProps>(), {
41
44
  label: undefined,
42
45
  index: undefined,
43
46
  angle: undefined,
@@ -70,6 +73,7 @@ function extractTextFromVNodes(nodes: VNode[]): string {
70
73
  text += extractTextFromVNodes(node.children as VNode[]);
71
74
  }
72
75
  }
76
+
73
77
  return text.trim();
74
78
  }
75
79
 
@@ -77,19 +81,22 @@ const slottedLabel = computed<string>(() => {
77
81
  if (props.label) {
78
82
  return props.label;
79
83
  }
84
+
80
85
  if (slots.default) {
81
86
  const vnodes = slots.default();
82
87
  const textNode = vnodes[0]?.children;
83
88
  if (typeof textNode === 'string') {
84
89
  return textNode.trim();
85
90
  }
91
+
86
92
  return extractTextFromVNodes(slots.default());
87
93
  }
94
+
88
95
  return '';
89
96
  });
90
97
 
91
98
  const partToken = Symbol();
92
- const registrationData = computed<IArcDiDPartItem>(() => ({
99
+ const registrationData = computed<IArcDefenseInDepthPartItem>(() => ({
93
100
  label: slottedLabel.value,
94
101
  angle: props.angle,
95
102
  radius: props.radius,
@@ -116,6 +123,7 @@ const resolvedIndex = computed<number>(() => {
116
123
  if (props.index !== undefined) {
117
124
  return Number(props.index);
118
125
  }
126
+
119
127
  return registration?.index.value ?? 0;
120
128
  });
121
129
 
@@ -182,6 +190,7 @@ const maxContentWidth = computed(() => {
182
190
  ? `${props.maxWidth}px`
183
191
  : props.maxWidth;
184
192
  }
193
+
185
194
  if (sectorContext) {
186
195
  const partGeo = sectorContext.sectorGeo.value?.parts[resolvedIndex.value];
187
196
  if (partGeo?.maxContentWidth) {
@@ -194,12 +203,17 @@ const maxContentWidth = computed(() => {
194
203
  return `${standalonePartGeo.maxContentWidth}px`;
195
204
  }
196
205
  }
206
+
197
207
  const geo = layerContext?.layerGeo.value;
198
- if (!geo) return '110px';
208
+ if (!geo) {
209
+ return '110px';
210
+ }
211
+
199
212
  const partGeo = geo.parts[resolvedIndex.value];
200
213
  if (partGeo?.maxContentWidth) {
201
214
  return `${partGeo.maxContentWidth}px`;
202
215
  }
216
+
203
217
  const span =
204
218
  partGeo?.startAngle !== undefined && partGeo?.endAngle !== undefined
205
219
  ? Math.abs(partGeo.startAngle - partGeo.endAngle)
@@ -216,12 +230,15 @@ const isSplitSector = computed(() => {
216
230
  ) {
217
231
  return true;
218
232
  }
233
+
219
234
  if (sectorContext?.sectorGeo.value?.split) {
220
235
  return true;
221
236
  }
237
+
222
238
  if ((sectorContext?.sectorGeo.value?.parts.length ?? 0) > 1) {
223
239
  return true;
224
240
  }
241
+
225
242
  return false;
226
243
  });
227
244
 
@@ -229,20 +246,24 @@ const resolvedAngle = computed<number>(() => {
229
246
  if (props.angle !== undefined) {
230
247
  return props.angle;
231
248
  }
249
+
232
250
  if (sectorContext) {
233
251
  const partGeo = sectorContext.sectorGeo.value?.parts[resolvedIndex.value];
234
252
  if (partGeo?.angle !== undefined) {
235
253
  return partGeo.angle;
236
254
  }
255
+
237
256
  if (sectorContext.sectorGeo.value?.midAngle !== undefined) {
238
257
  return sectorContext.sectorGeo.value.midAngle;
239
258
  }
240
259
  }
260
+
241
261
  const geo = layerContext?.layerGeo.value;
242
262
  const partGeo = geo?.parts[resolvedIndex.value];
243
263
  if (partGeo?.angle !== undefined) {
244
264
  return partGeo.angle;
245
265
  }
266
+
246
267
  return 90;
247
268
  });
248
269
 
@@ -264,13 +285,16 @@ const resolvedRotation = computed<string | undefined>(() => {
264
285
  }
265
286
  return undefined;
266
287
  }
288
+
267
289
  if (typeof rot === 'number') {
268
290
  return `rotate(${rot}deg)`;
269
291
  }
292
+
270
293
  if (rot === true || rot === 'tangent' || rot === 'auto') {
271
294
  const tangent = Math.round(90 - resolvedAngle.value);
272
295
  return `rotate(${tangent}deg)`;
273
296
  }
297
+
274
298
  if (typeof rot === 'string') {
275
299
  return rot.includes('rotate')
276
300
  ? rot
@@ -278,6 +302,7 @@ const resolvedRotation = computed<string | undefined>(() => {
278
302
  ? `rotate(${rot})`
279
303
  : `rotate(${rot}deg)`;
280
304
  }
305
+
281
306
  return undefined;
282
307
  });
283
308
 
@@ -286,12 +311,15 @@ const resolvedSkew = computed<string | undefined>(() => {
286
311
  if (sk === undefined || sk === false) {
287
312
  return undefined;
288
313
  }
314
+
289
315
  if (sk === true || sk === 'tangent' || sk === 'auto') {
290
316
  return undefined;
291
317
  }
318
+
292
319
  if (typeof sk === 'number') {
293
320
  return `skewX(${sk}deg)`;
294
321
  }
322
+
295
323
  if (typeof sk === 'string') {
296
324
  return sk.includes('skew') || sk.includes('rotate')
297
325
  ? sk
@@ -299,6 +327,7 @@ const resolvedSkew = computed<string | undefined>(() => {
299
327
  ? `skewX(${sk})`
300
328
  : `skewX(${sk}deg)`;
301
329
  }
330
+
302
331
  return undefined;
303
332
  });
304
333
 
@@ -307,9 +336,11 @@ const partLabelTransform = computed<string | undefined>(() => {
307
336
  if (resolvedRotation.value) {
308
337
  transforms.push(resolvedRotation.value);
309
338
  }
339
+
310
340
  if (resolvedSkew.value) {
311
341
  transforms.push(resolvedSkew.value);
312
342
  }
343
+
313
344
  return transforms.length > 0 ? transforms.join(' ') : undefined;
314
345
  });
315
346
 
@@ -317,6 +348,7 @@ const isSelfActive = computed<boolean>(() => {
317
348
  if (props.active !== undefined) {
318
349
  return props.active;
319
350
  }
351
+
320
352
  if (rootContext?.isPartActive) {
321
353
  return rootContext.isPartActive(
322
354
  slottedLabel.value,
@@ -324,10 +356,12 @@ const isSelfActive = computed<boolean>(() => {
324
356
  props.active,
325
357
  );
326
358
  }
359
+
327
360
  if (rootContext?.activePart?.value !== undefined) {
328
361
  const ap = rootContext.activePart.value;
329
362
  return ap === slottedLabel.value || ap === resolvedIndex.value;
330
363
  }
364
+
331
365
  return false;
332
366
  });
333
367
 
@@ -345,16 +379,33 @@ function handlePartAreaClick(event: MouseEvent): void {
345
379
  }
346
380
  }
347
381
  }
382
+
383
+ const { className, forwardedAttrs } = useMergedUnoAttrs(() => {
384
+ const colorClass = isSelfActive.value
385
+ ? 'text-(--alpha-arc-defense-in-depth-part-active)'
386
+ : 'text-(--alpha-arc-defense-in-depth-part)';
387
+ const opacityClass =
388
+ hasAnyActivePart.value && !isSelfActive.value
389
+ ? 'opacity-30'
390
+ : 'opacity-100';
391
+ const interactionClass = rootContext?.interactive?.value
392
+ ? 'cursor-pointer pointer-events-auto'
393
+ : 'pointer-events-none';
394
+
395
+ return `alpha-arc-defense-in-depth__part alpha-arc-defense-in-depth__part-area absolute flex flex-col items-center justify-center select-none text-center transition-all duration-300 ease-out bg-transparent border-0 p-0 m-0 appearance-none ${colorClass} ${opacityClass} ${interactionClass}`;
396
+ });
348
397
  </script>
349
398
 
350
399
  <template>
351
- <div
352
- class="alpha-arc-did__part alpha-arc-did__part-area absolute flex flex-col items-center justify-center select-none text-center transition-all duration-300 ease-out"
400
+ <button
401
+ type="button"
402
+ v-bind="forwardedAttrs()"
403
+ :disabled="!rootContext?.interactive?.value"
404
+ :aria-label="`Select ${slottedLabel}`"
353
405
  :class="[
354
- { 'alpha-arc-did__part--animated': isAnimated },
355
- { 'alpha-arc-did__part--active': isSelfActive },
356
- hasAnyActivePart && !isSelfActive ? 'opacity-30' : 'opacity-100',
357
- rootContext?.interactive?.value ? 'cursor-pointer pointer-events-auto' : 'pointer-events-none',
406
+ className(),
407
+ { 'alpha-arc-defense-in-depth__part--animated': isAnimated },
408
+ { 'alpha-arc-defense-in-depth__part--active': isSelfActive },
358
409
  ]"
359
410
  :data-active="isSelfActive"
360
411
  :style="{
@@ -363,6 +414,9 @@ function handlePartAreaClick(event: MouseEvent): void {
363
414
  transform: 'translate(-50%, -50%)',
364
415
  zIndex: isSelfActive ? 30 : 10,
365
416
  '--part-delay': `${animationDelay}ms`,
417
+ ...(props.color
418
+ ? { '--alpha-arc-defense-in-depth-part': props.color }
419
+ : {}),
366
420
  }"
367
421
  @click="handlePartAreaClick"
368
422
  >
@@ -373,70 +427,68 @@ function handlePartAreaClick(event: MouseEvent): void {
373
427
  >
374
428
  <span
375
429
  v-if="props.icon"
376
- class="text-xs text-white"
430
+ class="text-xs text-current"
377
431
  :class="props.icon"
378
432
  />
379
433
  <div
380
434
  v-else-if="props.showDot"
381
435
  class="w-4 h-4 rounded-full transition-all duration-200 flex items-center justify-center"
382
436
  :class="[
383
- isSelfActive ? 'scale-125 ring-2 ring-white shadow-[0_0_12px_#38bdf8]' : 'group-hover:scale-125',
437
+ isSelfActive ? 'scale-125 ring-2 ring-(--alpha-arc-defense-in-depth-part-ring) shadow-[0_0_12px_var(--alpha-arc-defense-in-depth-part-glow)]' : 'group-hover:scale-125',
384
438
  ]"
385
439
  :style="{
386
440
  background: isSelfActive
387
- ? 'radial-gradient(circle at 35% 32%, #ffffff 25%, #38bdf8 70%, #0369a1 100%)'
441
+ ? 'radial-gradient(circle at 35% 32%, var(--alpha-arc-defense-in-depth-part-dot-highlight) 25%, var(--alpha-arc-defense-in-depth-part-dot-active) 70%, var(--alpha-arc-defense-in-depth-part-dot-active-edge) 100%)'
388
442
  : props.color
389
- ? `radial-gradient(circle at 35% 32%, #ffffff 15%, ${effectiveDotColor} 65%, #0f172a 100%)`
390
- : 'radial-gradient(circle at 35% 32%, #ffffff 15%, #cbd5e1 55%, #94a3b8 100%)',
443
+ ? `radial-gradient(circle at 35% 32%, var(--alpha-arc-defense-in-depth-part-dot-highlight) 15%, ${effectiveDotColor} 65%, var(--alpha-arc-defense-in-depth-part-dot-edge) 100%)`
444
+ : 'radial-gradient(circle at 35% 32%, var(--alpha-arc-defense-in-depth-part-dot-highlight) 15%, var(--alpha-arc-defense-in-depth-part-dot-idle) 55%, var(--alpha-arc-defense-in-depth-part-dot-idle-edge) 100%)',
391
445
  boxShadow: isSelfActive
392
- ? '0 0 12px rgba(56, 189, 248, 0.9), inset 0 1px 1px rgba(255, 255, 255, 0.9)'
393
- : '0 2px 5px rgba(0, 0, 0, 0.28), inset 0 1px 1px rgba(255, 255, 255, 0.8)',
446
+ ? 'var(--alpha-arc-defense-in-depth-part-active-shadow)'
447
+ : 'var(--alpha-arc-defense-in-depth-part-shadow)',
394
448
  }"
395
449
  />
396
450
  </div>
397
451
 
398
452
  <!-- Part Area Content -->
399
453
  <div
400
- class="alpha-arc-did__part-label-wrapper"
454
+ class="alpha-arc-defense-in-depth__part-label-wrapper"
401
455
  :style="{
402
456
  transform: partLabelTransform,
403
457
  }"
404
458
  >
405
459
  <div
406
- class="alpha-arc-did__part-label alpha-arc-did__part-content text-center font-medium leading-tight text-white drop-shadow-sm whitespace-pre-line transition-all duration-200"
460
+ class="alpha-arc-defense-in-depth__part-label alpha-arc-defense-in-depth__part-content text-center font-medium leading-tight text-current drop-shadow-sm whitespace-pre-line transition-all duration-200"
407
461
  :class="[
408
462
  isSplitSector ? 'text-[11px] md:text-xs' : 'text-xs md:text-sm',
409
- isSelfActive
410
- ? 'font-bold !text-white scale-110'
411
- : 'hover:scale-105',
463
+ isSelfActive ? 'font-bold scale-110' : 'hover:scale-105',
412
464
  ]"
413
465
  :style="{
414
466
  maxWidth: maxContentWidth,
415
- color: isSelfActive ? '#ffffff' : props.color,
416
467
  textShadow: isSelfActive
417
- ? '0 0 12px rgba(255, 255, 255, 0.95), 0 2px 6px rgba(0, 0, 0, 0.9)'
468
+ ? 'var(--alpha-arc-defense-in-depth-part-active-text-shadow)'
418
469
  : undefined,
419
470
  }"
420
471
  >
421
472
  <slot>{{ slottedLabel }}</slot>
422
473
  </div>
423
474
  </div>
424
- </div>
475
+ </button>
425
476
  </template>
426
477
 
427
478
  <style scoped>
428
- .alpha-arc-did__part-label {
479
+ .alpha-arc-defense-in-depth__part-label {
429
480
  word-break: normal;
430
481
  overflow-wrap: normal;
431
482
  hyphens: none;
432
483
  white-space: pre-line;
433
484
  }
434
485
 
435
- .alpha-arc-did__part--animated {
436
- animation: arc-did-part-pop 450ms cubic-bezier(0.16, 1, 0.3, 1) var(--part-delay, 0ms) both;
486
+ .alpha-arc-defense-in-depth__part--animated {
487
+ animation: arc-defense-in-depth-part-pop 450ms cubic-bezier(0.16, 1, 0.3, 1)
488
+ var(--part-delay, 0ms) both;
437
489
  }
438
490
 
439
- @keyframes arc-did-part-pop {
491
+ @keyframes arc-defense-in-depth-part-pop {
440
492
  0% {
441
493
  opacity: 0;
442
494
  transform: translate(-50%, -50%) scale(0.6);
@@ -12,16 +12,19 @@ import {
12
12
  import {
13
13
  ARC_DID_LAYER_KEY,
14
14
  ARC_DID_SECTOR_KEY,
15
- type IArcDiDRegisteredSectorData,
16
- type IArcDiDSectorContext,
17
- } from '../../../utils/defenseInDepth/arcDid/context';
18
- import type { IArcDiDPartItem } from '../../../utils/defenseInDepth/arcDid/types';
15
+ type IArcDefenseInDepthRegisteredSectorData,
16
+ type IArcDefenseInDepthSectorContext,
17
+ } from '../../../utils/defense-in-depth/arc-defense-in-depth/context';
18
+ import type { IArcDefenseInDepthPartItem } from '../../../utils/defense-in-depth/arc-defense-in-depth/types';
19
+
20
+ import { useMergedUnoAttrs } from '../../../utils/useMergedUnoAttrs';
19
21
 
20
22
  defineOptions({
21
- name: 'ArcDiDLayerSector',
23
+ inheritAttrs: false,
24
+ name: 'ArcDefenseInDepthLayerSector',
22
25
  });
23
26
 
24
- export interface IArcDiDLayerSectorProps {
27
+ export interface IArcDefenseInDepthLayerSectorProps {
25
28
  readonly split?: boolean;
26
29
  readonly angle?: number;
27
30
  readonly span?: number;
@@ -31,7 +34,7 @@ export interface IArcDiDLayerSectorProps {
31
34
  readonly skew?: boolean | number | string;
32
35
  }
33
36
 
34
- const props = withDefaults(defineProps<IArcDiDLayerSectorProps>(), {
37
+ const props = withDefaults(defineProps<IArcDefenseInDepthLayerSectorProps>(), {
35
38
  split: true,
36
39
  angle: undefined,
37
40
  span: undefined,
@@ -44,11 +47,13 @@ const props = withDefaults(defineProps<IArcDiDLayerSectorProps>(), {
44
47
  const layerContext = inject(ARC_DID_LAYER_KEY, undefined);
45
48
 
46
49
  const registeredPartTokens = ref<symbol[]>([]);
47
- const registeredPartData = ref<Map<symbol, IArcDiDPartItem>>(new Map());
50
+ const registeredPartData = ref<Map<symbol, IArcDefenseInDepthPartItem>>(
51
+ new Map(),
52
+ );
48
53
 
49
54
  function registerPart(
50
55
  token?: symbol,
51
- partDataRef?: ComputedRef<IArcDiDPartItem | undefined>,
56
+ partDataRef?: ComputedRef<IArcDefenseInDepthPartItem | undefined>,
52
57
  ) {
53
58
  const pToken = token ?? Symbol();
54
59
  if (!registeredPartTokens.value.includes(pToken)) {
@@ -66,6 +71,7 @@ function registerPart(
66
71
  } else {
67
72
  nextMap.delete(pToken);
68
73
  }
74
+
69
75
  registeredPartData.value = nextMap;
70
76
  },
71
77
  { immediate: true },
@@ -88,23 +94,25 @@ function registerPart(
88
94
  };
89
95
  }
90
96
 
91
- const registeredPartsList = computed<IArcDiDPartItem[]>(() => {
97
+ const registeredPartsList = computed<IArcDefenseInDepthPartItem[]>(() => {
92
98
  return registeredPartTokens.value
93
99
  .map((token) => registeredPartData.value.get(token))
94
- .filter((item): item is IArcDiDPartItem => item !== undefined);
100
+ .filter((item): item is IArcDefenseInDepthPartItem => item !== undefined);
95
101
  });
96
102
 
97
103
  const sectorToken = Symbol();
98
- const sectorRegistrationData = computed<IArcDiDRegisteredSectorData>(() => ({
99
- parts: registeredPartsList.value,
100
- split: props.split,
101
- angle: props.angle,
102
- span: props.span,
103
- color: props.color,
104
- index: props.index !== undefined ? Number(props.index) : undefined,
105
- rotate: props.rotate,
106
- skew: props.skew,
107
- }));
104
+ const sectorRegistrationData = computed<IArcDefenseInDepthRegisteredSectorData>(
105
+ () => ({
106
+ parts: registeredPartsList.value,
107
+ split: props.split,
108
+ angle: props.angle,
109
+ span: props.span,
110
+ color: props.color,
111
+ index: props.index !== undefined ? Number(props.index) : undefined,
112
+ rotate: props.rotate,
113
+ skew: props.skew,
114
+ }),
115
+ );
108
116
 
109
117
  const registration = layerContext?.registerSector(
110
118
  sectorToken,
@@ -119,6 +127,7 @@ const resolvedIndex = computed<number>(() => {
119
127
  if (props.index !== undefined) {
120
128
  return Number(props.index);
121
129
  }
130
+
122
131
  return registration?.index.value ?? 0;
123
132
  });
124
133
 
@@ -126,7 +135,7 @@ const sectorGeo = computed(() => {
126
135
  return layerContext?.layerGeo.value?.sectors[resolvedIndex.value];
127
136
  });
128
137
 
129
- const sectorContext: IArcDiDSectorContext = {
138
+ const sectorContext: IArcDefenseInDepthSectorContext = {
130
139
  sectorIndex: resolvedIndex,
131
140
  sectorGeo,
132
141
  rotate: computed(() => props.rotate),
@@ -135,11 +144,16 @@ const sectorContext: IArcDiDSectorContext = {
135
144
  };
136
145
 
137
146
  provide(ARC_DID_SECTOR_KEY, sectorContext);
147
+
148
+ const { className, forwardedAttrs } = useMergedUnoAttrs(
149
+ 'alpha-arc-defense-in-depth__layer-sector contents pointer-events-none',
150
+ );
138
151
  </script>
139
152
 
140
153
  <template>
141
154
  <div
142
- class="alpha-arc-did__layer-sector contents pointer-events-none"
155
+ v-bind="forwardedAttrs()"
156
+ :class="className()"
143
157
  :data-sector-index="resolvedIndex"
144
158
  :data-split="props.split"
145
159
  >
@@ -0,0 +1,38 @@
1
+ /* Color defaults shared by this component family. */
2
+ @layer alpha-theme-tokens {
3
+ :root {
4
+ --alpha-arc-defense-in-depth-active-glow: drop-shadow(
5
+ 0 0 14px rgba(255, 255, 255, 0.85)
6
+ )
7
+ drop-shadow(0 0 6px rgba(56, 189, 248, 0.8)) brightness(1.2);
8
+ --alpha-arc-defense-in-depth-active-stroke: #ffffff;
9
+ --alpha-arc-defense-in-depth-center-fill: #ffffff;
10
+ --alpha-arc-defense-in-depth-layer-1-color: #38bdf8;
11
+ --alpha-arc-defense-in-depth-layer-2-color: #0ea5e9;
12
+ --alpha-arc-defense-in-depth-layer-3-color: #0284c7;
13
+ --alpha-arc-defense-in-depth-layer-accent: #0ea5e9;
14
+ --alpha-arc-defense-in-depth-layer-glow: drop-shadow(
15
+ 0 0 12px rgba(14, 165, 233, 0.45)
16
+ );
17
+ --alpha-arc-defense-in-depth-layer-heading: #ffffff;
18
+ --alpha-arc-defense-in-depth-part: #ffffff;
19
+ --alpha-arc-defense-in-depth-part-active: #ffffff;
20
+ --alpha-arc-defense-in-depth-part-active-shadow:
21
+ 0 0 12px rgba(56, 189, 248, 0.9), inset 0 1px 1px rgba(255, 255, 255, 0.9);
22
+ --alpha-arc-defense-in-depth-part-active-text-shadow:
23
+ 0 0 12px rgba(255, 255, 255, 0.95), 0 2px 6px rgba(0, 0, 0, 0.9);
24
+ --alpha-arc-defense-in-depth-part-dot: #0284c7;
25
+ --alpha-arc-defense-in-depth-part-dot-active: #38bdf8;
26
+ --alpha-arc-defense-in-depth-part-dot-active-edge: #0369a1;
27
+ --alpha-arc-defense-in-depth-part-dot-edge: #0f172a;
28
+ --alpha-arc-defense-in-depth-part-dot-glow: rgba(56, 189, 248, 0.35);
29
+ --alpha-arc-defense-in-depth-part-dot-highlight: #ffffff;
30
+ --alpha-arc-defense-in-depth-part-dot-idle: #cbd5e1;
31
+ --alpha-arc-defense-in-depth-part-dot-idle-edge: #94a3b8;
32
+ --alpha-arc-defense-in-depth-part-glow: #38bdf8;
33
+ --alpha-arc-defense-in-depth-part-ring: #ffffff;
34
+ --alpha-arc-defense-in-depth-part-shadow:
35
+ 0 2px 5px rgba(0, 0, 0, 0.28), inset 0 1px 1px rgba(255, 255, 255, 0.8);
36
+ --alpha-arc-defense-in-depth-stroke: #ffffff;
37
+ }
38
+ }