@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,321 +0,0 @@
1
- <script setup lang="ts">
2
- import {
3
- type ComputedRef,
4
- computed,
5
- Fragment,
6
- inject,
7
- onUnmounted,
8
- provide,
9
- ref,
10
- useSlots,
11
- type VNode,
12
- watch,
13
- } from 'vue';
14
-
15
- import {
16
- ARC_DID_LAYER_KEY,
17
- ARC_DID_ROOT_KEY,
18
- type IArcDiDLayerContext,
19
- type IArcDiDRegisteredLayerData,
20
- type IArcDiDRegisteredSectorData,
21
- } from '../../../utils/defenseInDepth/arcDid/context';
22
- import type {
23
- IArcDiDPartGeometry,
24
- IArcDiDPartItem,
25
- IArcDiDSectorItem,
26
- } from '../../../utils/defenseInDepth/arcDid/types';
27
- import ArcDiDLayerPart from './ArcDiDLayerPart.vue';
28
- import ArcDiDLayerParts from './ArcDiDLayerParts.vue';
29
- import ArcDiDLayerSector from './ArcDiDLayerSector.vue';
30
- import ArcDiDLayerTitle from './ArcDiDLayerTitle.vue';
31
-
32
- defineOptions({
33
- name: 'ArcDiDLayer',
34
- });
35
-
36
- export interface IArcDiDLayerProps {
37
- readonly title?: string;
38
- readonly color?: string;
39
- readonly textColor?: string;
40
- readonly index?: number;
41
- readonly active?: boolean;
42
- }
43
-
44
- const props = withDefaults(defineProps<IArcDiDLayerProps>(), {
45
- title: undefined,
46
- color: undefined,
47
- textColor: undefined,
48
- index: undefined,
49
- active: undefined,
50
- });
51
-
52
- const slots = useSlots();
53
- const rootContext = inject(ARC_DID_ROOT_KEY, undefined);
54
-
55
- interface INamedComponent {
56
- readonly type?: {
57
- readonly name?: string;
58
- readonly displayName?: string;
59
- readonly __name?: string;
60
- };
61
- }
62
-
63
- function hasComponentName(type: unknown, targetName: string): boolean {
64
- if (typeof type === 'object' && type !== null) {
65
- const comp = type as INamedComponent['type'];
66
- return (
67
- comp?.name === targetName ||
68
- comp?.displayName === targetName ||
69
- comp?.__name === targetName
70
- );
71
- }
72
- return false;
73
- }
74
-
75
- function flattenVNodes(nodes: VNode[]): VNode[] {
76
- const result: VNode[] = [];
77
- for (const node of nodes) {
78
- if (node.type === Fragment && Array.isArray(node.children)) {
79
- result.push(...flattenVNodes(node.children as VNode[]));
80
- } else {
81
- result.push(node);
82
- }
83
- }
84
- return result;
85
- }
86
-
87
- const defaultNodes = computed(() => {
88
- if (!slots.default) {
89
- return [];
90
- }
91
- return flattenVNodes(slots.default());
92
- });
93
-
94
- const hasSlottedTitle = computed(() => {
95
- return defaultNodes.value.some((node) =>
96
- hasComponentName(node.type, 'ArcDiDLayerTitle'),
97
- );
98
- });
99
-
100
- const hasSlottedParts = computed(() => {
101
- if (registeredSectorTokens.value.length > 0) {
102
- return true;
103
- }
104
- return defaultNodes.value.some(
105
- (node) =>
106
- hasComponentName(node.type, 'ArcDiDLayerParts') ||
107
- hasComponentName(node.type, 'ArcDiDLayerPart') ||
108
- hasComponentName(node.type, 'ArcDiDLayerSector'),
109
- );
110
- });
111
-
112
- const currentTitle = ref<string | undefined>(props.title);
113
- watch(
114
- () => props.title,
115
- (val) => {
116
- if (val !== undefined) {
117
- currentTitle.value = val;
118
- }
119
- },
120
- );
121
-
122
- // Manage sector and part registrations within this layer
123
- const registeredSectorTokens = ref<symbol[]>([]);
124
- const registeredSectorData = ref<Map<symbol, IArcDiDRegisteredSectorData>>(
125
- new Map(),
126
- );
127
-
128
- function registerSector(
129
- token?: symbol,
130
- sectorDataRef?: ComputedRef<IArcDiDRegisteredSectorData | undefined>,
131
- ) {
132
- const sToken = token ?? Symbol();
133
- if (!registeredSectorTokens.value.includes(sToken)) {
134
- registeredSectorTokens.value = [...registeredSectorTokens.value, sToken];
135
- }
136
-
137
- let stopWatch: (() => void) | undefined;
138
- if (sectorDataRef) {
139
- stopWatch = watch(
140
- sectorDataRef,
141
- (val) => {
142
- const nextMap = new Map(registeredSectorData.value);
143
- if (val) {
144
- nextMap.set(sToken, val);
145
- } else {
146
- nextMap.delete(sToken);
147
- }
148
- registeredSectorData.value = nextMap;
149
- },
150
- { immediate: true },
151
- );
152
- }
153
-
154
- const index = computed(() => registeredSectorTokens.value.indexOf(sToken));
155
-
156
- return {
157
- index,
158
- unregister: () => {
159
- stopWatch?.();
160
- registeredSectorTokens.value = registeredSectorTokens.value.filter(
161
- (t) => t !== sToken,
162
- );
163
- const nextMap = new Map(registeredSectorData.value);
164
- nextMap.delete(sToken);
165
- registeredSectorData.value = nextMap;
166
- },
167
- };
168
- }
169
-
170
- function registerPart(
171
- token?: symbol,
172
- partDataRef?: ComputedRef<IArcDiDPartItem | undefined>,
173
- ) {
174
- const pToken = token ?? Symbol();
175
- const sectorDataRef = computed<IArcDiDRegisteredSectorData | undefined>(
176
- () => {
177
- const pData = partDataRef?.value;
178
- if (!pData) return undefined;
179
- return {
180
- parts: [pData],
181
- split: false,
182
- angle: pData.angle,
183
- span: pData.span,
184
- color: pData.color,
185
- };
186
- },
187
- );
188
- return registerSector(pToken, sectorDataRef);
189
- }
190
-
191
- const registeredSectorsList = computed<IArcDiDSectorItem[]>(() => {
192
- return registeredSectorTokens.value
193
- .map((token) => registeredSectorData.value.get(token))
194
- .filter((item): item is IArcDiDRegisteredSectorData => item !== undefined)
195
- .map((data) => ({
196
- parts: data.parts ?? [],
197
- split: data.split,
198
- angle: data.angle,
199
- span: data.span,
200
- color: data.color,
201
- }));
202
- });
203
-
204
- const registeredPartsList = computed<IArcDiDPartItem[]>(() => {
205
- return registeredSectorsList.value.flatMap(
206
- (s) => s.parts as IArcDiDPartItem[],
207
- );
208
- });
209
-
210
- const layerToken = Symbol();
211
- const layerRegistrationData = computed<IArcDiDRegisteredLayerData>(() => ({
212
- title: currentTitle.value,
213
- color: props.color,
214
- sectors: registeredSectorsList.value,
215
- parts: registeredPartsList.value,
216
- index: props.index !== undefined ? Number(props.index) : undefined,
217
- }));
218
-
219
- const registration = rootContext?.registerLayer(
220
- layerToken,
221
- layerRegistrationData,
222
- );
223
-
224
- onUnmounted(() => {
225
- registration?.unregister();
226
- });
227
-
228
- const resolvedIndex = computed<number>(() => {
229
- if (props.index !== undefined) {
230
- return Number(props.index);
231
- }
232
- return registration?.index.value ?? 0;
233
- });
234
-
235
- const layerGeo = computed(() => {
236
- if (!rootContext) {
237
- return undefined;
238
- }
239
- return rootContext.geo.value.layers[resolvedIndex.value];
240
- });
241
-
242
- const isActive = computed<boolean>(() => {
243
- if (props.active !== undefined) {
244
- return props.active;
245
- }
246
- if (!rootContext) {
247
- return false;
248
- }
249
- return (
250
- rootContext.activeIndex.value === -1 ||
251
- rootContext.activeIndex.value === resolvedIndex.value
252
- );
253
- });
254
-
255
- const effectiveColor = computed<string>(() => {
256
- if (props.color) {
257
- return props.color;
258
- }
259
- if (rootContext) {
260
- return rootContext.getLayerColor(resolvedIndex.value);
261
- }
262
- return '#0ea5e9';
263
- });
264
-
265
- const layerContext: IArcDiDLayerContext = {
266
- layerIndex: resolvedIndex,
267
- layerGeo,
268
- isActive,
269
- color: effectiveColor,
270
- textColor: computed(() => props.textColor),
271
- title: computed(() => currentTitle.value),
272
- setTitle: (title: string) => {
273
- currentTitle.value = title;
274
- },
275
- partsCount: computed(() => registeredPartsList.value.length),
276
- registerPart,
277
- registerSector,
278
- };
279
-
280
- provide(ARC_DID_LAYER_KEY, layerContext);
281
- </script>
282
-
283
- <template>
284
- <div
285
- class="alpha-arc-did__layer contents"
286
- :data-index="resolvedIndex"
287
- :data-active="isActive"
288
- >
289
- <!-- Auto-render title if prop title provided but no slotted ArcDiDLayerTitle -->
290
- <ArcDiDLayerTitle v-if="!hasSlottedTitle && currentTitle" :title="currentTitle" />
291
-
292
- <!-- Default children slots -->
293
- <slot />
294
-
295
- <!-- Fallback parts from geometry if layer has no slotted parts and default geo parts/sectors exist -->
296
- <ArcDiDLayerParts v-if="!hasSlottedParts && registeredSectorTokens.length === 0 && layerGeo && layerGeo.sectors.length > 0">
297
- <template v-for="sector in layerGeo.sectors" :key="sector.index">
298
- <ArcDiDLayerSector v-if="sector.parts.length > 1 || sector.split" :split="sector.split">
299
- <ArcDiDLayerPart
300
- v-for="part in sector.parts"
301
- :key="part.index"
302
- :label="part.label"
303
- :index="part.index"
304
- :position="part.position"
305
- :angle="part.angle"
306
- :radius="part.radius"
307
- />
308
- </ArcDiDLayerSector>
309
- <ArcDiDLayerPart
310
- v-else-if="sector.parts[0]"
311
- :key="sector.parts[0].index"
312
- :label="sector.parts[0].label"
313
- :index="sector.parts[0].index"
314
- :position="sector.parts[0].position"
315
- :angle="sector.parts[0].angle"
316
- :radius="sector.parts[0].radius"
317
- />
318
- </template>
319
- </ArcDiDLayerParts>
320
- </div>
321
- </template>
@@ -1,11 +0,0 @@
1
- <script setup lang="ts">
2
- defineOptions({
3
- name: 'ArcDiDLayerParts',
4
- });
5
- </script>
6
-
7
- <template>
8
- <div class="alpha-arc-did__layer-parts contents pointer-events-none">
9
- <slot />
10
- </div>
11
- </template>
@@ -1,53 +0,0 @@
1
- <script setup lang="ts">
2
- defineOptions({
3
- name: 'RectOrbitTetradCenter',
4
- });
5
-
6
- export interface IRectOrbitTetradCenterProps {
7
- readonly title?: string;
8
- readonly radius?: number;
9
- readonly subtitle?: string;
10
- }
11
-
12
- const props = withDefaults(defineProps<IRectOrbitTetradCenterProps>(), {
13
- title: undefined,
14
- subtitle: undefined,
15
- radius: 58,
16
- });
17
- </script>
18
-
19
- <template>
20
- <div
21
- class="alpha-rect-orbit-tetrad-center absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-20 rounded-full bg-white flex flex-col items-center justify-center text-center shadow-lg pointer-events-auto select-none"
22
- :style="{
23
- width: `${props.radius * 2}px`,
24
- height: `${props.radius * 2}px`,
25
- boxShadow: '0 4px 18px rgba(0, 0, 0, 0.12)',
26
- fontFamily: 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, sans-serif',
27
- }"
28
- >
29
- <slot>
30
- <slot name="title">
31
- <span
32
- v-if="props.title"
33
- :class="[
34
- 'text-[23px] font-extrabold text-slate-800 tracking-tight leading-none',
35
- { 'mb-2': props.subtitle },
36
- ]"
37
- style="font-family: inherit;"
38
- >
39
- {{ props.title }}
40
- </span>
41
- </slot>
42
- <slot name="subtitle">
43
- <span
44
- v-if="props.subtitle"
45
- class="text-[13px] font-medium text-slate-400 tracking-normal leading-none"
46
- style="font-family: inherit;"
47
- >
48
- {{ props.subtitle }}
49
- </span>
50
- </slot>
51
- </slot>
52
- </div>
53
- </template>
@@ -1,39 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed, inject } from 'vue';
3
-
4
- import { RECT_ORBIT_TETRAD_CALLOUT_KEY } from '../../../../utils/rectOrbitTetrad';
5
-
6
- defineOptions({
7
- name: 'RectOrbitTetradContent',
8
- });
9
-
10
- export interface IRectOrbitTetradContentProps {
11
- readonly color?: string;
12
- }
13
-
14
- const props = withDefaults(defineProps<IRectOrbitTetradContentProps>(), {
15
- color: undefined,
16
- });
17
-
18
- const calloutContext = inject(RECT_ORBIT_TETRAD_CALLOUT_KEY, undefined);
19
-
20
- const contentColor = computed(() => {
21
- return props.color ?? calloutContext?.item.value.textColor ?? '#555555';
22
- });
23
- </script>
24
-
25
- <template>
26
- <div
27
- class="alpha-rect-orbit-tetrad-content text-[1rem] leading-[1.38] font-normal tracking-tight m-0 p-0 select-none"
28
- :style="{
29
- color: contentColor,
30
- margin: 0,
31
- padding: 0,
32
- fontSize: '1rem',
33
- fontFamily:
34
- 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, Helvetica, Arial, sans-serif',
35
- }"
36
- >
37
- <slot />
38
- </div>
39
- </template>
@@ -1,44 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed, inject } from 'vue';
3
-
4
- import { RECT_ORBIT_TETRAD_CALLOUT_KEY } from '../../../../utils/rectOrbitTetrad';
5
-
6
- defineOptions({
7
- name: 'RectOrbitTetradHeading',
8
- });
9
-
10
- export interface IRectOrbitTetradHeadingProps {
11
- readonly color?: string;
12
- }
13
-
14
- const props = withDefaults(defineProps<IRectOrbitTetradHeadingProps>(), {
15
- color: undefined,
16
- });
17
-
18
- const calloutContext = inject(RECT_ORBIT_TETRAD_CALLOUT_KEY, undefined);
19
-
20
- const headingColor = computed(() => {
21
- return (
22
- props.color ??
23
- calloutContext?.item.value.titleColor ??
24
- calloutContext?.item.value.color ??
25
- '#f29e4b'
26
- );
27
- });
28
- </script>
29
-
30
- <template>
31
- <div
32
- class="alpha-rect-orbit-tetrad-heading font-bold text-[1.25rem] leading-tight tracking-tight m-0 p-0 select-none"
33
- :style="{
34
- color: headingColor,
35
- margin: 0,
36
- padding: 0,
37
- fontSize: '1.25rem',
38
- fontFamily:
39
- 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, Helvetica, Arial, sans-serif',
40
- }"
41
- >
42
- <slot />
43
- </div>
44
- </template>
@@ -1,111 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed, inject, onBeforeUpdate, provide, useSlots } from 'vue';
3
-
4
- import {
5
- GEAR_TRIAD_CONTENTS_KEY,
6
- GEAR_TRIAD_ROOT_KEY,
7
- getDefaultGearTriadItem,
8
- type IResolvedGearTriadItem,
9
- } from '../../../../utils/gearTriad';
10
-
11
- defineOptions({
12
- name: 'GearTriadContents',
13
- });
14
-
15
- export interface IGearTriadContentsProps {
16
- readonly title?: string;
17
- readonly description?: string;
18
- readonly option?: number;
19
- }
20
-
21
- const props = withDefaults(defineProps<IGearTriadContentsProps>(), {
22
- title: undefined,
23
- description: undefined,
24
- option: undefined,
25
- });
26
-
27
- const slots = useSlots();
28
- const rootContext = inject(GEAR_TRIAD_ROOT_KEY, undefined);
29
- rootContext?.registerContents();
30
-
31
- let contentCounter = 0;
32
- const optionCounters: Record<number, number> = {};
33
- onBeforeUpdate(() => {
34
- contentCounter = 0;
35
- for (const k in optionCounters) {
36
- optionCounters[k] = 0;
37
- }
38
- });
39
-
40
- const registerContent = (option?: number) => {
41
- if (option !== undefined) {
42
- optionCounters[option] = (optionCounters[option] ?? 0) + 1;
43
- return { index: optionCounters[option] - 1 };
44
- }
45
- const idx = contentCounter++;
46
- return { index: idx };
47
- };
48
-
49
- const resolvedOptionIndex = computed(() => {
50
- if (props.option !== undefined) {
51
- return Math.max(0, props.option - 1);
52
- }
53
- return rootContext?.activeOptionIndex.value ?? 0;
54
- });
55
-
56
- const activeItem = computed<IResolvedGearTriadItem>(() => {
57
- if (rootContext?.items.value) {
58
- const item = rootContext.items.value[resolvedOptionIndex.value];
59
- if (item) {
60
- return item;
61
- }
62
- }
63
- return getDefaultGearTriadItem(resolvedOptionIndex.value);
64
- });
65
-
66
- provide(GEAR_TRIAD_CONTENTS_KEY, {
67
- activeItem,
68
- activeOptionIndex: resolvedOptionIndex,
69
- registerContent,
70
- });
71
-
72
- const isVisible = computed(() => {
73
- if (!rootContext?.isShifted.value) {
74
- return false;
75
- }
76
- if (props.option !== undefined) {
77
- return props.option - 1 === rootContext.activeOptionIndex.value;
78
- }
79
- return true;
80
- });
81
- </script>
82
-
83
- <template>
84
- <div
85
- class="alpha-gear-triad-contents absolute right-2.5 top-1/2 -translate-y-1/2 w-[490px] flex flex-col select-none box-border pointer-events-auto transition-all duration-500 ease-out"
86
- :class="[
87
- isVisible
88
- ? 'opacity-100 translate-x-0 delay-200'
89
- : 'opacity-0 pointer-events-none translate-x-8',
90
- ]"
91
- >
92
- <!-- Header: Option Title -->
93
- <slot name="title">
94
- <h3 class="alpha-gear-triad-contents__title text-2xl font-bold font-sans tracking-tight text-slate-900 mb-2">
95
- {{ props.title ?? activeItem.title }}
96
- </h3>
97
- </slot>
98
- <!-- Header: Option Description -->
99
- <slot name="description">
100
- <p class="alpha-gear-triad-contents__desc text-sm font-sans text-slate-500 leading-relaxed mb-6">
101
- {{ props.description ?? activeItem.description }}
102
- </p>
103
- </slot>
104
- <!-- Body: List of GearTriadContent items -->
105
- <div class="alpha-gear-triad-contents__items flex flex-col gap-3.5">
106
- <slot v-if="$slots[String(resolvedOptionIndex + 1)]" :name="String(resolvedOptionIndex + 1)" />
107
- <slot v-else-if="$slots[`option-${resolvedOptionIndex + 1}`]" :name="`option-${resolvedOptionIndex + 1}`" />
108
- <slot v-else />
109
- </div>
110
- </div>
111
- </template>
@@ -1,38 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed, inject } from 'vue';
3
-
4
- import { GEAR_TRIAD_CALLOUT_KEY } from '../../../../utils/gearTriad';
5
-
6
- defineOptions({
7
- name: 'GearTriadDescription',
8
- });
9
-
10
- export interface IGearTriadDescriptionProps {
11
- readonly color?: string;
12
- }
13
-
14
- const props = withDefaults(defineProps<IGearTriadDescriptionProps>(), {
15
- color: undefined,
16
- });
17
-
18
- const calloutContext = inject(GEAR_TRIAD_CALLOUT_KEY, undefined);
19
-
20
- const descriptionColor = computed(() => {
21
- return props.color ?? calloutContext?.item.value.textColor ?? '#64748b';
22
- });
23
- </script>
24
-
25
- <template>
26
- <div
27
- class="alpha-gear-triad-description text-[0.92rem] leading-[1.45] font-normal select-none"
28
- :style="{
29
- color: descriptionColor,
30
- fontFamily:
31
- 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, sans-serif',
32
- }"
33
- >
34
- <slot>
35
- {{ calloutContext?.item.value.description }}
36
- </slot>
37
- </div>
38
- </template>
@@ -1,51 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed } from 'vue';
3
-
4
- defineOptions({
5
- name: 'HexTriadCenterBadge',
6
- });
7
-
8
- export interface IHexTriadCenterBadgeProps {
9
- readonly x: number;
10
- readonly y: number;
11
- readonly text: string | number;
12
- readonly color: string;
13
- readonly filter?: string;
14
- readonly radius: number;
15
- }
16
-
17
- const props = withDefaults(defineProps<IHexTriadCenterBadgeProps>(), {
18
- filter: 'url(#hex-badge-shadow)',
19
- });
20
-
21
- const transform = computed(() => {
22
- return `translate(${props.x}, ${props.y})`;
23
- });
24
- </script>
25
-
26
- <template>
27
- <g class="alpha-hex-triad-center-badge" :transform="transform" :filter="filter">
28
- <circle class="alpha-hex-triad-center-badge__outer" cx="0" cy="0" :r="radius + 4" fill="#ffffff" />
29
- <circle class="alpha-hex-triad-center-badge__circle" cx="0" cy="0" :r="radius" :fill="color" />
30
- <circle
31
- class="alpha-hex-triad-center-badge__ring"
32
- cx="0"
33
- cy="0"
34
- :r="radius - 4"
35
- fill="none"
36
- stroke="#ffffff"
37
- stroke-width="1.2"
38
- :style="{ opacity: 0.65 }"
39
- />
40
- <text
41
- class="alpha-hex-triad-center-badge__text font-black text-lg select-none"
42
- x="0"
43
- y="6.5"
44
- text-anchor="middle"
45
- fill="#ffffff"
46
- font-family="system-ui, -apple-system, sans-serif"
47
- >
48
- {{ text }}
49
- </text>
50
- </g>
51
- </template>
@@ -1,20 +0,0 @@
1
- <script setup lang="ts">
2
- defineOptions({
3
- name: 'HexTriadContent',
4
- });
5
- </script>
6
-
7
- <template>
8
- <p
9
- class="alpha-hex-triad-content mt-0 mb-0 text-[1rem] leading-relaxed max-w-[240px]"
10
- :style="{
11
- margin: 0,
12
- fontSize: '1rem',
13
- fontFamily: 'system-ui, -apple-system, BlinkMacSystemFont, sans-serif',
14
- }"
15
- >
16
- <slot>
17
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod sed diam nonummy nibh
18
- </slot>
19
- </p>
20
- </template>