@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,144 @@
1
+ export type TArcDefenseInDepthOrder = 'outer-to-inner' | 'inner-to-outer';
2
+ export type TArcDefenseInDepthPartPosition =
3
+ | 'top'
4
+ | 'middle'
5
+ | 'bottom'
6
+ | 'center';
7
+ export type TArcDefenseInDepthOrientation =
8
+ | boolean
9
+ | number
10
+ | 'tangent'
11
+ | 'auto'
12
+ | (string & {});
13
+
14
+ export interface IArcDefenseInDepthPoint {
15
+ readonly x: number;
16
+ readonly y: number;
17
+ }
18
+
19
+ export interface IArcDefenseInDepthPartItem {
20
+ readonly label: string;
21
+ readonly angle?: number;
22
+ readonly radius?: number;
23
+ readonly radialOffset?: number;
24
+ readonly color?: string;
25
+ readonly icon?: string;
26
+ readonly span?: number;
27
+ readonly position?: TArcDefenseInDepthPartPosition;
28
+ readonly maxWidth?: number | string;
29
+ readonly rotate?: TArcDefenseInDepthOrientation;
30
+ readonly skew?: TArcDefenseInDepthOrientation;
31
+ readonly active?: boolean;
32
+ }
33
+
34
+ export interface IArcDefenseInDepthSectorItem {
35
+ readonly parts: readonly (string | IArcDefenseInDepthPartItem)[];
36
+ readonly split?: boolean;
37
+ readonly angle?: number;
38
+ readonly span?: number;
39
+ readonly color?: string;
40
+ readonly rotate?: TArcDefenseInDepthOrientation;
41
+ readonly skew?: TArcDefenseInDepthOrientation;
42
+ }
43
+
44
+ export interface IArcDefenseInDepthLayerItem {
45
+ readonly title?: string;
46
+ readonly parts?: readonly (string | IArcDefenseInDepthPartItem)[];
47
+ readonly sectors?: readonly (
48
+ | IArcDefenseInDepthSectorItem
49
+ | readonly (string | IArcDefenseInDepthPartItem)[]
50
+ )[];
51
+ readonly color?: string;
52
+ readonly textColor?: string;
53
+ readonly titleAngleSpan?: number;
54
+ readonly titleWidth?: number;
55
+ }
56
+
57
+ export interface IArcDefenseInDepthPartGeometry {
58
+ readonly index: number;
59
+ readonly sectorIndex?: number;
60
+ readonly trackIndex?: number;
61
+ readonly position?: TArcDefenseInDepthPartPosition;
62
+ readonly label: string;
63
+ readonly angle: number;
64
+ readonly radius: number;
65
+ readonly x: number;
66
+ readonly y: number;
67
+ readonly color?: string;
68
+ readonly icon?: string;
69
+ readonly startAngle?: number;
70
+ readonly endAngle?: number;
71
+ readonly midAngle?: number;
72
+ readonly path?: string;
73
+ readonly innerRadius?: number;
74
+ readonly outerRadius?: number;
75
+ readonly maxContentWidth?: number;
76
+ readonly rotate?: TArcDefenseInDepthOrientation;
77
+ readonly skew?: TArcDefenseInDepthOrientation;
78
+ readonly rotationAngle?: number;
79
+ readonly active?: boolean;
80
+ }
81
+
82
+ export interface IArcDefenseInDepthSectorGeometry {
83
+ readonly index: number;
84
+ readonly startAngle: number;
85
+ readonly endAngle: number;
86
+ readonly midAngle: number;
87
+ readonly span: number;
88
+ readonly path: string;
89
+ readonly split: boolean;
90
+ readonly dividerPaths: readonly string[];
91
+ readonly color?: string;
92
+ readonly rotate?: TArcDefenseInDepthOrientation;
93
+ readonly skew?: TArcDefenseInDepthOrientation;
94
+ readonly parts: readonly IArcDefenseInDepthPartGeometry[];
95
+ }
96
+
97
+ export interface IArcDefenseInDepthLayerGeometry {
98
+ readonly index: number;
99
+ readonly innerRadius: number;
100
+ readonly outerRadius: number;
101
+ readonly midRadius: number;
102
+ readonly thickness: number;
103
+ readonly path: string;
104
+ readonly titlePosition: IArcDefenseInDepthPoint;
105
+ readonly titlePath?: string;
106
+ readonly titleLeft?: number;
107
+ readonly titleRight?: number;
108
+ readonly sectors: readonly IArcDefenseInDepthSectorGeometry[];
109
+ readonly parts: readonly IArcDefenseInDepthPartGeometry[];
110
+ }
111
+
112
+ export interface IArcDefenseInDepthDecorativeArc {
113
+ readonly path: string;
114
+ readonly strokeWidth: number;
115
+ readonly opacity: number;
116
+ }
117
+
118
+ export interface IArcDefenseInDepthGeometry {
119
+ readonly viewBoxWidth: number;
120
+ readonly viewBoxHeight: number;
121
+ readonly cx: number;
122
+ readonly cy: number;
123
+ readonly innerRadius: number;
124
+ readonly outerRadius: number;
125
+ readonly count: number;
126
+ readonly layers: readonly IArcDefenseInDepthLayerGeometry[];
127
+ readonly decorativeArcs: readonly IArcDefenseInDepthDecorativeArc[];
128
+ readonly innerCutoutPath?: string;
129
+ }
130
+
131
+ export interface ICreateArcDefenseInDepthOptions {
132
+ readonly viewBoxWidth?: number;
133
+ readonly viewBoxHeight?: number;
134
+ readonly cx?: number;
135
+ readonly cy?: number;
136
+ readonly innerRadius?: number;
137
+ readonly outerRadius?: number;
138
+ readonly count?: number;
139
+ readonly gap?: number;
140
+ readonly order?: TArcDefenseInDepthOrder;
141
+ readonly titleAngleSpan?: number;
142
+ readonly titleWidth?: number;
143
+ readonly layers?: readonly IArcDefenseInDepthLayerItem[];
144
+ }
@@ -0,0 +1,51 @@
1
+ import { darkenColor, lightenColor } from '../../colors';
2
+ import {
3
+ DEFAULT_DID_COLOR,
4
+ DEFAULT_DID_DOT_COLOR,
5
+ DEFAULT_DID_DOT_GLOW_COLOR,
6
+ DEFAULT_DID_LAYER_COLORS,
7
+ DEFAULT_DID_STROKE_COLOR,
8
+ } from './constants';
9
+ import type { IDefenseInDepthPalette } from './types';
10
+
11
+ export function resolveArcDefenseInDepthPalette(
12
+ baseColor: string = DEFAULT_DID_COLOR,
13
+ count = 3,
14
+ ): IDefenseInDepthPalette {
15
+ if (baseColor === DEFAULT_DID_COLOR && count === 3) {
16
+ return {
17
+ layerColors: DEFAULT_DID_LAYER_COLORS,
18
+ dotColor: DEFAULT_DID_DOT_COLOR,
19
+ dotGlowColor: DEFAULT_DID_DOT_GLOW_COLOR,
20
+ strokeColor: DEFAULT_DID_STROKE_COLOR,
21
+ decorativeStrokeColor: lightenColor({ hex: baseColor, ratio: 0.65 }),
22
+ };
23
+ }
24
+
25
+ const layerColors: string[] = [];
26
+ const safeCount = Math.max(1, count);
27
+
28
+ for (let i = 0; i < safeCount; i++) {
29
+ // 0 = outermost (lightest, ratio ~0.35), count - 1 = innermost (deepest, ratio ~0.25 darken)
30
+ if (safeCount === 1) {
31
+ layerColors.push(baseColor);
32
+ } else {
33
+ const t = i / (safeCount - 1);
34
+ if (t < 0.5) {
35
+ const lightenRatio = 0.35 * (1 - t * 2);
36
+ layerColors.push(lightenColor({ hex: baseColor, ratio: lightenRatio }));
37
+ } else {
38
+ const darkenRatio = 0.25 * ((t - 0.5) * 2);
39
+ layerColors.push(darkenColor({ hex: baseColor, ratio: darkenRatio }));
40
+ }
41
+ }
42
+ }
43
+
44
+ return {
45
+ layerColors,
46
+ dotColor: darkenColor({ hex: baseColor, ratio: 0.2 }),
47
+ dotGlowColor: lightenColor({ hex: baseColor, ratio: 0.7 }),
48
+ strokeColor: DEFAULT_DID_STROKE_COLOR,
49
+ decorativeStrokeColor: lightenColor({ hex: baseColor, ratio: 0.65 }),
50
+ };
51
+ }
@@ -0,0 +1,22 @@
1
+ export const DEFAULT_DID_COLOR =
2
+ 'var(--alpha-arc-defense-in-depth-layer-accent)';
3
+
4
+ const DEFAULT_DID_OUTER_COLOR =
5
+ 'var(--alpha-arc-defense-in-depth-layer-1-color)';
6
+ const DEFAULT_DID_MIDDLE_COLOR =
7
+ 'var(--alpha-arc-defense-in-depth-layer-2-color)';
8
+ const DEFAULT_DID_INNER_COLOR =
9
+ 'var(--alpha-arc-defense-in-depth-layer-3-color)';
10
+
11
+ export const DEFAULT_DID_LAYER_COLORS: readonly string[] = [
12
+ DEFAULT_DID_OUTER_COLOR,
13
+ DEFAULT_DID_MIDDLE_COLOR,
14
+ DEFAULT_DID_INNER_COLOR,
15
+ ];
16
+
17
+ export const DEFAULT_DID_DOT_COLOR =
18
+ 'var(--alpha-arc-defense-in-depth-part-dot)';
19
+ export const DEFAULT_DID_DOT_GLOW_COLOR =
20
+ 'var(--alpha-arc-defense-in-depth-part-dot-glow)';
21
+ export const DEFAULT_DID_STROKE_COLOR =
22
+ 'var(--alpha-arc-defense-in-depth-stroke)';
@@ -0,0 +1,7 @@
1
+ export interface IDefenseInDepthPalette {
2
+ readonly layerColors: readonly string[];
3
+ readonly dotColor: string;
4
+ readonly dotGlowColor: string;
5
+ readonly strokeColor: string;
6
+ readonly decorativeStrokeColor: string;
7
+ }
@@ -0,0 +1,31 @@
1
+ import type { ComputedRef, InjectionKey } from 'vue';
2
+
3
+ import type {
4
+ IRectangleOrbitTetradItem,
5
+ IResolvedRectangleOrbitTetradItem,
6
+ } from './resolveRectangleOrbitTetradItems';
7
+
8
+ export interface IRectangleOrbitTetradRegistration {
9
+ readonly index: number;
10
+ readonly item: ComputedRef<IResolvedRectangleOrbitTetradItem>;
11
+ readonly setCustomBadge?: (text: string | number) => void;
12
+ }
13
+
14
+ export interface IRectangleOrbitTetradRootContext {
15
+ readonly animation?: ComputedRef<boolean>;
16
+ readonly registerCallout: (
17
+ props?: IRectangleOrbitTetradItem,
18
+ ) => IRectangleOrbitTetradRegistration;
19
+ readonly items: ComputedRef<readonly IResolvedRectangleOrbitTetradItem[]>;
20
+ }
21
+
22
+ export interface IRectangleOrbitTetradCalloutContext {
23
+ readonly index: number;
24
+ readonly item: ComputedRef<IResolvedRectangleOrbitTetradItem>;
25
+ }
26
+
27
+ export const RECT_ORBIT_TETRAD_ROOT_KEY: InjectionKey<IRectangleOrbitTetradRootContext> =
28
+ Symbol('RECT_ORBIT_TETRAD_ROOT_KEY');
29
+
30
+ export const RECT_ORBIT_TETRAD_CALLOUT_KEY: InjectionKey<IRectangleOrbitTetradCalloutContext> =
31
+ Symbol('RECT_ORBIT_TETRAD_CALLOUT_KEY');
@@ -11,7 +11,7 @@ export interface IRectOrbitBox {
11
11
  readonly height: number;
12
12
  }
13
13
 
14
- export interface IRectOrbitTetradCoordinates {
14
+ export interface IRectangleOrbitTetradCoordinates {
15
15
  readonly centerX: number;
16
16
  readonly centerY: number;
17
17
  readonly arcPaths: readonly [string, string, string, string];
@@ -59,7 +59,7 @@ function createArcPath(
59
59
  return `M ${x1} ${y1} A ${radius} ${radius} 0 ${largeArcFlag} 1 ${x2} ${y2}`;
60
60
  }
61
61
 
62
- export interface ICalculateRectOrbitTetradCoordinatesParams {
62
+ export interface ICalculateRectangleOrbitTetradCoordinatesParams {
63
63
  readonly gap?: number;
64
64
  readonly width?: number;
65
65
  readonly height?: number;
@@ -74,14 +74,14 @@ export interface ICalculateRectOrbitTetradCoordinatesParams {
74
74
  }
75
75
 
76
76
  /**
77
- * Calculates geometric coordinates for the RectOrbitTetrad layout.
77
+ * Calculates geometric coordinates for the RectangleOrbitTetrad layout.
78
78
  * Indices (Clockwise starting Top-Left):
79
79
  * 0: Top-Left (01)
80
80
  * 1: Top-Right (02)
81
81
  * 2: Bottom-Right (03)
82
82
  * 3: Bottom-Left (04)
83
83
  */
84
- export function calculateRectOrbitTetradCoordinates({
84
+ export function calculateRectangleOrbitTetradCoordinates({
85
85
  gap = 14,
86
86
  width = 136,
87
87
  height = 150,
@@ -93,7 +93,7 @@ export function calculateRectOrbitTetradCoordinates({
93
93
  iconPaddingX = 30,
94
94
  iconPaddingY = 32,
95
95
  arcBorderWidth = 5,
96
- }: ICalculateRectOrbitTetradCoordinatesParams = {}): IRectOrbitTetradCoordinates {
96
+ }: ICalculateRectangleOrbitTetradCoordinatesParams = {}): IRectangleOrbitTetradCoordinates {
97
97
  const centerX = viewBoxSize / 2;
98
98
  const centerY = viewBoxSize / 2;
99
99
  const halfGap = gap / 2;
@@ -235,102 +235,3 @@ export function calculateRectOrbitTetradCoordinates({
235
235
  numberPositions: [num0, num1, num2, num3],
236
236
  };
237
237
  }
238
-
239
- export interface ILightenColorParams {
240
- readonly hex: string;
241
- readonly ratio?: number;
242
- }
243
-
244
- /**
245
- * Automatically lightens a base hex color by mixing it with white.
246
- * ratio: 0 = original color, 1 = pure white.
247
- */
248
- export function lightenColor({
249
- hex,
250
- ratio = 0.5,
251
- }: ILightenColorParams): string {
252
- const raw = hex.trim().replace(/^#/, '');
253
- const sanitized =
254
- raw.length === 3
255
- ? raw
256
- .split('')
257
- .map((char) => {
258
- return char + char;
259
- })
260
- .join('')
261
- : raw;
262
-
263
- if (sanitized.length !== 6) {
264
- return hex;
265
- }
266
-
267
- const r = Number.parseInt(sanitized.slice(0, 2), 16);
268
- const g = Number.parseInt(sanitized.slice(2, 4), 16);
269
- const b = Number.parseInt(sanitized.slice(4, 6), 16);
270
-
271
- if (Number.isNaN(r) || Number.isNaN(g) || Number.isNaN(b)) {
272
- return hex;
273
- }
274
-
275
- const clamp = (val: number): number => {
276
- return Math.min(255, Math.max(0, Math.round(val)));
277
- };
278
-
279
- const lr = clamp(r + (255 - r) * ratio);
280
- const lg = clamp(g + (255 - g) * ratio);
281
- const lb = clamp(b + (255 - b) * ratio);
282
-
283
- const toHex = (n: number): string => {
284
- return n.toString(16).padStart(2, '0');
285
- };
286
-
287
- return `#${toHex(lr)}${toHex(lg)}${toHex(lb)}`;
288
- }
289
-
290
- export interface IDarkenColorParams {
291
- readonly hex: string;
292
- readonly ratio?: number;
293
- }
294
-
295
- /**
296
- * Automatically darkens a base hex color by mixing it with black.
297
- * ratio: 0 = original color, 1 = pure black.
298
- */
299
- export function darkenColor({ hex, ratio = 0.18 }: IDarkenColorParams): string {
300
- const raw = hex.trim().replace(/^#/, '');
301
- const sanitized =
302
- raw.length === 3
303
- ? raw
304
- .split('')
305
- .map((char) => {
306
- return char + char;
307
- })
308
- .join('')
309
- : raw;
310
-
311
- if (sanitized.length !== 6) {
312
- return hex;
313
- }
314
-
315
- const r = Number.parseInt(sanitized.slice(0, 2), 16);
316
- const g = Number.parseInt(sanitized.slice(2, 4), 16);
317
- const b = Number.parseInt(sanitized.slice(4, 6), 16);
318
-
319
- if (Number.isNaN(r) || Number.isNaN(g) || Number.isNaN(b)) {
320
- return hex;
321
- }
322
-
323
- const clamp = (val: number): number => {
324
- return Math.min(255, Math.max(0, Math.round(val)));
325
- };
326
-
327
- const dr = clamp(r * (1 - ratio));
328
- const dg = clamp(g * (1 - ratio));
329
- const db = clamp(b * (1 - ratio));
330
-
331
- const toHex = (n: number): string => {
332
- return n.toString(16).padStart(2, '0');
333
- };
334
-
335
- return `#${toHex(dr)}${toHex(dg)}${toHex(db)}`;
336
- }
@@ -0,0 +1,3 @@
1
+ export * from './context';
2
+ export * from './createRectangleOrbitTetradGeometry';
3
+ export * from './resolveRectangleOrbitTetradItems';
@@ -1,57 +1,55 @@
1
- import { lightenColor } from './createRectOrbitTetradGeometry';
1
+ import { lightenColor } from '../../../colors';
2
2
 
3
- export type TRectOrbitTetradIcon = string | object | boolean;
3
+ export type TRectangleOrbitTetradIcon = string | object | boolean;
4
4
 
5
- export interface IRectOrbitTetradItem {
5
+ export interface IRectangleOrbitTetradItem {
6
6
  readonly id?: string | number;
7
7
  /**
8
8
  * Optional icon: icon class (e.g. 'i-lucide-user'), component object,
9
9
  * built-in name ('user' | 'academic' | 'briefcase' | 'target'), or false to hide.
10
10
  */
11
- readonly icon?: TRectOrbitTetradIcon;
11
+ readonly icon?: TRectangleOrbitTetradIcon;
12
12
  readonly color?: string;
13
13
  readonly cardBg?: string;
14
14
  readonly arcColor?: string;
15
15
  readonly arcRatio?: number;
16
16
  readonly textColor?: string;
17
- readonly titleColor?: string;
18
17
  readonly arcBorderColor?: string;
19
18
  readonly arcBorderRatio?: number;
20
19
  }
21
20
 
22
- export interface IResolvedRectOrbitTetradItem extends IRectOrbitTetradItem {
21
+ export interface IResolvedRectangleOrbitTetradItem
22
+ extends IRectangleOrbitTetradItem {
23
23
  readonly id: string | number;
24
24
  readonly color: string;
25
25
  readonly cardBg: string;
26
26
  readonly arcColor: string;
27
27
  readonly textColor: string;
28
- readonly titleColor: string;
29
28
  readonly arcBorderColor: string;
30
29
  }
31
30
 
32
31
  export const DEFAULT_RECT_ORBIT_TETRAD_ITEMS: readonly [
33
- IResolvedRectOrbitTetradItem,
34
- IResolvedRectOrbitTetradItem,
35
- IResolvedRectOrbitTetradItem,
36
- IResolvedRectOrbitTetradItem,
32
+ IResolvedRectangleOrbitTetradItem,
33
+ IResolvedRectangleOrbitTetradItem,
34
+ IResolvedRectangleOrbitTetradItem,
35
+ IResolvedRectangleOrbitTetradItem,
37
36
  ] = [
38
37
  // 0: Top-Left (01) - Golden Orange
39
38
  {
40
39
  id: '01',
41
40
  icon: 'user',
42
- color: '#f29e4b',
41
+ color: 'var(--alpha-rectangle-orbit-tetrad-item-1-color)',
43
42
  cardBg: lightenColor({
44
- hex: '#f29e4b',
43
+ hex: 'var(--alpha-rectangle-orbit-tetrad-item-1-color)',
45
44
  ratio: 0.9,
46
45
  }),
47
46
  arcColor: lightenColor({
48
- hex: '#f29e4b',
47
+ hex: 'var(--alpha-rectangle-orbit-tetrad-item-1-color)',
49
48
  ratio: 0.55,
50
49
  }),
51
- textColor: '#555555',
52
- titleColor: '#e6882c',
50
+ textColor: 'var(--alpha-rectangle-orbit-tetrad-content)',
53
51
  arcBorderColor: lightenColor({
54
- hex: '#f29e4b',
52
+ hex: 'var(--alpha-rectangle-orbit-tetrad-item-1-color)',
55
53
  ratio: 0.8,
56
54
  }),
57
55
  },
@@ -59,19 +57,18 @@ export const DEFAULT_RECT_ORBIT_TETRAD_ITEMS: readonly [
59
57
  {
60
58
  id: '02',
61
59
  icon: 'academic',
62
- color: '#a4cb81',
60
+ color: 'var(--alpha-rectangle-orbit-tetrad-item-2-color)',
63
61
  cardBg: lightenColor({
64
- hex: '#a4cb81',
62
+ hex: 'var(--alpha-rectangle-orbit-tetrad-item-2-color)',
65
63
  ratio: 0.9,
66
64
  }),
67
65
  arcColor: lightenColor({
68
- hex: '#a4cb81',
66
+ hex: 'var(--alpha-rectangle-orbit-tetrad-item-2-color)',
69
67
  ratio: 0.55,
70
68
  }),
71
- textColor: '#555555',
72
- titleColor: '#8bb863',
69
+ textColor: 'var(--alpha-rectangle-orbit-tetrad-content)',
73
70
  arcBorderColor: lightenColor({
74
- hex: '#a4cb81',
71
+ hex: 'var(--alpha-rectangle-orbit-tetrad-item-2-color)',
75
72
  ratio: 0.8,
76
73
  }),
77
74
  },
@@ -79,19 +76,18 @@ export const DEFAULT_RECT_ORBIT_TETRAD_ITEMS: readonly [
79
76
  {
80
77
  id: '03',
81
78
  icon: 'briefcase',
82
- color: '#62b6a8',
79
+ color: 'var(--alpha-rectangle-orbit-tetrad-item-3-color)',
83
80
  cardBg: lightenColor({
84
- hex: '#62b6a8',
81
+ hex: 'var(--alpha-rectangle-orbit-tetrad-item-3-color)',
85
82
  ratio: 0.9,
86
83
  }),
87
84
  arcColor: lightenColor({
88
- hex: '#62b6a8',
85
+ hex: 'var(--alpha-rectangle-orbit-tetrad-item-3-color)',
89
86
  ratio: 0.55,
90
87
  }),
91
- textColor: '#555555',
92
- titleColor: '#4ea798',
88
+ textColor: 'var(--alpha-rectangle-orbit-tetrad-content)',
93
89
  arcBorderColor: lightenColor({
94
- hex: '#62b6a8',
90
+ hex: 'var(--alpha-rectangle-orbit-tetrad-item-3-color)',
95
91
  ratio: 0.8,
96
92
  }),
97
93
  },
@@ -99,30 +95,29 @@ export const DEFAULT_RECT_ORBIT_TETRAD_ITEMS: readonly [
99
95
  {
100
96
  id: '04',
101
97
  icon: 'target',
102
- color: '#e9717a',
98
+ color: 'var(--alpha-rectangle-orbit-tetrad-item-4-color)',
103
99
  cardBg: lightenColor({
104
- hex: '#e9717a',
100
+ hex: 'var(--alpha-rectangle-orbit-tetrad-item-4-color)',
105
101
  ratio: 0.9,
106
102
  }),
107
103
  arcColor: lightenColor({
108
- hex: '#e9717a',
104
+ hex: 'var(--alpha-rectangle-orbit-tetrad-item-4-color)',
109
105
  ratio: 0.55,
110
106
  }),
111
- textColor: '#555555',
112
- titleColor: '#e45b65',
107
+ textColor: 'var(--alpha-rectangle-orbit-tetrad-content)',
113
108
  arcBorderColor: lightenColor({
114
- hex: '#e9717a',
109
+ hex: 'var(--alpha-rectangle-orbit-tetrad-item-4-color)',
115
110
  ratio: 0.8,
116
111
  }),
117
112
  },
118
113
  ] as const;
119
114
 
120
115
  export function resolveSingleItem(
121
- defaultItem: IResolvedRectOrbitTetradItem,
122
- userItem?: IRectOrbitTetradItem,
116
+ defaultItem: IResolvedRectangleOrbitTetradItem,
117
+ userItem?: IRectangleOrbitTetradItem,
123
118
  defaultArcRatio = 0.55,
124
119
  defaultArcBorderRatio = 0.8,
125
- ): IResolvedRectOrbitTetradItem {
120
+ ): IResolvedRectangleOrbitTetradItem {
126
121
  const merged = {
127
122
  ...defaultItem,
128
123
  ...(userItem ?? {}),
@@ -155,9 +150,6 @@ export function resolveSingleItem(
155
150
  })
156
151
  : defaultItem.arcColor),
157
152
  textColor: merged.textColor ?? defaultItem.textColor,
158
- titleColor:
159
- merged.titleColor ??
160
- (isColorChanged ? baseColor : defaultItem.titleColor),
161
153
  arcBorderColor:
162
154
  userItem?.arcBorderColor ??
163
155
  (isColorChanged || userItem?.arcBorderRatio !== undefined
@@ -169,21 +161,21 @@ export function resolveSingleItem(
169
161
  };
170
162
  }
171
163
 
172
- export interface IResolveRectOrbitTetradItemsParams {
173
- readonly items?: readonly IRectOrbitTetradItem[];
164
+ export interface IResolveRectangleOrbitTetradItemsParams {
165
+ readonly items?: readonly IRectangleOrbitTetradItem[];
174
166
  readonly arcRatio?: number;
175
167
  readonly arcBorderRatio?: number;
176
168
  }
177
169
 
178
- export function resolveRectOrbitTetradItems({
170
+ export function resolveRectangleOrbitTetradItems({
179
171
  items = [],
180
172
  arcRatio = 0.55,
181
173
  arcBorderRatio = 0.8,
182
- }: IResolveRectOrbitTetradItemsParams = {}): readonly [
183
- IResolvedRectOrbitTetradItem,
184
- IResolvedRectOrbitTetradItem,
185
- IResolvedRectOrbitTetradItem,
186
- IResolvedRectOrbitTetradItem,
174
+ }: IResolveRectangleOrbitTetradItemsParams = {}): readonly [
175
+ IResolvedRectangleOrbitTetradItem,
176
+ IResolvedRectangleOrbitTetradItem,
177
+ IResolvedRectangleOrbitTetradItem,
178
+ IResolvedRectangleOrbitTetradItem,
187
179
  ] {
188
180
  return [
189
181
  resolveSingleItem(