@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
@@ -16,23 +16,23 @@ import {
16
16
  } from 'vue';
17
17
 
18
18
  import {
19
- calculateRectOrbitTetradCoordinates,
19
+ calculateRectangleOrbitTetradCoordinates,
20
20
  DEFAULT_RECT_ORBIT_TETRAD_ITEMS,
21
21
  type IRectOrbitBox,
22
22
  type IRectOrbitPoint,
23
- type IRectOrbitTetradItem,
24
- type IRectOrbitTetradRegistration,
25
- type IResolvedRectOrbitTetradItem,
23
+ type IRectangleOrbitTetradItem,
24
+ type IRectangleOrbitTetradRegistration,
25
+ type IResolvedRectangleOrbitTetradItem,
26
26
  RECT_ORBIT_TETRAD_ROOT_KEY,
27
- resolveRectOrbitTetradItems,
28
- } from '../../../../utils/rectOrbitTetrad';
27
+ resolveRectangleOrbitTetradItems,
28
+ } from '../../../../utils/facets/tetrad/rectangle-orbit-tetrad';
29
29
  import { useMergedUnoAttrs } from '../../../../utils/useMergedUnoAttrs';
30
- import RectOrbitTetradCallout from './RectOrbitTetradCallout.vue';
31
- import RectOrbitTetradCenter from './RectOrbitTetradCenter.vue';
32
- import RectOrbitTetradIcon from './RectOrbitTetradIcon.vue';
30
+ import RectangleOrbitTetradCallout from './RectangleOrbitTetradCallout.vue';
31
+ import RectangleOrbitTetradCenter from './RectangleOrbitTetradCenter.vue';
32
+ import RectangleOrbitTetradIcon from './RectangleOrbitTetradIcon.vue';
33
33
 
34
34
  defineOptions({
35
- name: 'RectOrbitTetrad',
35
+ name: 'RectangleOrbitTetrad',
36
36
  inheritAttrs: false,
37
37
  });
38
38
 
@@ -41,16 +41,13 @@ export interface IRectOrbitBlockData {
41
41
  readonly arcPath: string;
42
42
  readonly iconPos: IRectOrbitPoint;
43
43
  readonly numberPos: IRectOrbitPoint;
44
- readonly item: IResolvedRectOrbitTetradItem;
44
+ readonly item: IResolvedRectangleOrbitTetradItem;
45
45
  }
46
46
 
47
- export interface IRectOrbitTetradProps {
48
- readonly title?: string;
49
- readonly items?: readonly IRectOrbitTetradItem[];
47
+ export interface IRectangleOrbitTetradProps {
50
48
  readonly active?: boolean;
51
49
  readonly height?: number | string;
52
50
  readonly arcRatio?: number;
53
- readonly subtitle?: string;
54
51
  readonly animation?: boolean;
55
52
  readonly startDelay?: number;
56
53
  readonly arcBorderRatio?: number;
@@ -59,13 +56,10 @@ export interface IRectOrbitTetradProps {
59
56
  readonly maxScale?: number;
60
57
  }
61
58
 
62
- const props = withDefaults(defineProps<IRectOrbitTetradProps>(), {
63
- title: undefined,
64
- items: undefined,
59
+ const props = withDefaults(defineProps<IRectangleOrbitTetradProps>(), {
65
60
  active: undefined,
66
61
  height: undefined,
67
62
  arcRatio: 0.55,
68
- subtitle: undefined,
69
63
  animation: true,
70
64
  startDelay: undefined,
71
65
  arcBorderRatio: 0.8,
@@ -150,42 +144,39 @@ const resolvedStartDelay = computed((): number => {
150
144
  return 0;
151
145
  });
152
146
 
153
- const registeredCallouts = shallowReactive<Map<number, IRectOrbitTetradItem>>(
154
- new Map(),
155
- );
147
+ const registeredCallouts = shallowReactive<
148
+ Map<number, IRectangleOrbitTetradItem>
149
+ >(new Map());
156
150
 
157
151
  const resolvedItems = computed(
158
152
  (): readonly [
159
- IResolvedRectOrbitTetradItem,
160
- IResolvedRectOrbitTetradItem,
161
- IResolvedRectOrbitTetradItem,
162
- IResolvedRectOrbitTetradItem,
153
+ IResolvedRectangleOrbitTetradItem,
154
+ IResolvedRectangleOrbitTetradItem,
155
+ IResolvedRectangleOrbitTetradItem,
156
+ IResolvedRectangleOrbitTetradItem,
163
157
  ] => {
164
158
  const rawDefaultNodes = slots.default ? slots.default() : [];
165
159
  const flattenedNodes = flattenVNodes(rawDefaultNodes);
166
160
  const calloutNodes = flattenedNodes.filter((node) => {
167
161
  return (
168
- hasComponentName(node.type, 'RectOrbitTetradCallout') ||
169
- node.type === RectOrbitTetradCallout
162
+ hasComponentName(node.type, 'RectangleOrbitTetradCallout') ||
163
+ node.type === RectangleOrbitTetradCallout
170
164
  );
171
165
  });
172
166
 
173
- const mergedItems: IRectOrbitTetradItem[] = [];
167
+ const mergedItems: IRectangleOrbitTetradItem[] = [];
174
168
 
175
169
  for (let i = 0; i < 4; i++) {
176
170
  const slotProps =
177
- (calloutNodes[i]?.props as IRectOrbitTetradItem | undefined) ?? {};
171
+ (calloutNodes[i]?.props as IRectangleOrbitTetradItem | undefined) ?? {};
178
172
  const regProps = registeredCallouts.get(i) ?? {};
179
- const propItem = props.items?.[i] ?? {};
180
-
181
173
  mergedItems.push({
182
- ...propItem,
183
174
  ...slotProps,
184
175
  ...regProps,
185
176
  });
186
177
  }
187
178
 
188
- return resolveRectOrbitTetradItems({
179
+ return resolveRectangleOrbitTetradItems({
189
180
  items: mergedItems,
190
181
  arcRatio: props.arcRatio,
191
182
  arcBorderRatio: props.arcBorderRatio,
@@ -198,8 +189,8 @@ const [firstFallbackItem] = DEFAULT_RECT_ORBIT_TETRAD_ITEMS;
198
189
  let calloutCounter = 0;
199
190
 
200
191
  const registerCallout = (
201
- calloutProps?: IRectOrbitTetradItem,
202
- ): IRectOrbitTetradRegistration => {
192
+ calloutProps?: IRectangleOrbitTetradItem,
193
+ ): IRectangleOrbitTetradRegistration => {
203
194
  const idx = calloutCounter++;
204
195
 
205
196
  if (calloutProps) {
@@ -208,7 +199,7 @@ const registerCallout = (
208
199
 
209
200
  return {
210
201
  index: idx,
211
- item: computed((): IResolvedRectOrbitTetradItem => {
202
+ item: computed((): IResolvedRectangleOrbitTetradItem => {
212
203
  const current = resolvedItems.value[idx];
213
204
  return current ?? resolvedItems.value[0] ?? firstFallbackItem;
214
205
  }),
@@ -226,7 +217,7 @@ provide(RECT_ORBIT_TETRAD_ROOT_KEY, {
226
217
  });
227
218
 
228
219
  // Precision coordinates calculation for SVG elements
229
- const coords = calculateRectOrbitTetradCoordinates({
220
+ const coords = calculateRectangleOrbitTetradCoordinates({
230
221
  gap: 14,
231
222
  width: 136,
232
223
  height: 150,
@@ -295,7 +286,7 @@ const quadrantBlocks = computed(
295
286
  );
296
287
 
297
288
  const { className, forwardedAttrs } = useMergedUnoAttrs(
298
- 'alpha-rect-orbit-tetrad w-full flex-1 flex flex-col items-center justify-center select-none font-sans min-h-0',
289
+ 'alpha-rectangle-orbit-tetrad w-full flex-1 flex flex-col items-center justify-center select-none font-sans min-h-0',
299
290
  );
300
291
 
301
292
  const rootRef = ref<HTMLElement | null>(null);
@@ -482,30 +473,41 @@ const resolvedScale = computed((): number => {
482
473
  :class="className()"
483
474
  :style="{
484
475
  height: resolvedHeightStyle,
485
- fontFamily:
486
- 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, sans-serif',
487
476
  '--rect-orbit-start-delay': `${resolvedStartDelay}ms`,
488
477
  }"
489
478
  >
490
479
  <div
491
- class="alpha-rect-orbit-tetrad__stage relative w-full h-full min-h-[350px] max-w-[1020px] mx-auto flex items-center justify-center overflow-visible"
480
+ class="alpha-rectangle-orbit-tetrad__stage relative w-full h-full min-h-87.5 max-w-255 mx-auto flex items-center justify-center overflow-visible"
492
481
  :style="{
493
- transform: props.scale !== undefined ? `scale(${props.scale})` : undefined,
482
+ transform:
483
+ resolvedScale !== 1 ? `scale(${resolvedScale})` : undefined,
494
484
  transformOrigin: 'center center',
495
485
  }"
496
486
  >
497
487
  <!-- Center Diagram: 4 Colored Quadrants + Concentric Arcs -->
498
488
  <div
499
- class="alpha-rect-orbit-tetrad__center absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 flex items-center justify-center w-[390px] h-[390px] z-10 pointer-events-none"
489
+ class="alpha-rectangle-orbit-tetrad__center absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 flex items-center justify-center w-97.5 h-97.5 z-10 pointer-events-none"
500
490
  >
501
491
  <svg
502
- class="alpha-rect-orbit-tetrad__svg w-[390px] h-[390px] overflow-visible"
492
+ aria-hidden="true"
493
+ class="alpha-rectangle-orbit-tetrad__svg w-97.5 h-97.5 overflow-visible"
503
494
  :viewBox="`0 0 ${viewBoxSize} ${viewBoxSize}`"
504
495
  >
505
496
  <defs>
506
497
  <!-- Drop shadow for the quadrant blocks (unique per component instance) -->
507
- <filter :id="`rect-orbit-block-shadow-${uid}`" x="-20%" y="-20%" width="140%" height="140%">
508
- <feDropShadow dx="0" dy="4" stdDeviation="6" flood-opacity="0.10" />
498
+ <filter
499
+ :id="`rect-orbit-block-shadow-${uid}`"
500
+ x="-20%"
501
+ y="-20%"
502
+ width="140%"
503
+ height="140%"
504
+ >
505
+ <feDropShadow
506
+ dx="0"
507
+ dy="4"
508
+ stdDeviation="6"
509
+ flood-opacity="0.10"
510
+ />
509
511
  </filter>
510
512
  <!-- Quadrant Clip Paths for Rounded Corner Squares (unique per instance) -->
511
513
  <clipPath
@@ -565,16 +567,17 @@ const resolvedScale = computed((): number => {
565
567
  :x="block.numberPos.x"
566
568
  :y="block.numberPos.y + 6"
567
569
  text-anchor="middle"
568
- fill="#2c3e50"
570
+ fill="var(--alpha-rectangle-orbit-tetrad-center)"
569
571
  class="font-extrabold text-[18.5px] select-none font-sans"
570
- style="font-family: ui-sans-serif, system-ui, -apple-system, sans-serif;"
571
572
  >
572
573
  {{ block.item.id }}
573
574
  </text>
574
575
  </g>
575
576
  </svg>
576
577
  <!-- HTML Icon Overlay Layer (ensures UnoCSS mask icons render reliably) -->
577
- <div class="alpha-rect-orbit-tetrad__icons absolute top-0 left-0 w-[360px] h-[360px] pointer-events-none">
578
+ <div
579
+ class="alpha-rectangle-orbit-tetrad__icons absolute top-0 left-0 w-90 h-90 pointer-events-none"
580
+ >
578
581
  <div
579
582
  v-for="(block, idx) in quadrantBlocks"
580
583
  :key="idx"
@@ -583,27 +586,23 @@ const resolvedScale = computed((): number => {
583
586
  `alpha-rect-orbit-block--${idx}`,
584
587
  { 'alpha-rect-orbit-block--animated': isAnimated },
585
588
  ]"
586
- class="absolute flex items-center justify-center w-[34px] h-[34px]"
589
+ class="absolute flex items-center justify-center w-8.5 h-8.5"
587
590
  :style="{
588
591
  top: `${block.iconPos.y - 17}px`,
589
592
  left: `${block.iconPos.x - 17}px`,
590
593
  }"
591
594
  >
592
- <RectOrbitTetradIcon
595
+ <RectangleOrbitTetradIcon
593
596
  v-if="block.item.icon !== false && block.item.icon !== undefined"
594
597
  :icon="block.item.icon"
595
598
  :size="34"
596
- color="#ffffff"
599
+ color="var(--alpha-rectangle-orbit-tetrad-connector)"
597
600
  />
598
601
  </div>
599
602
  </div>
600
603
  <!-- Central Circular Hub -->
601
- <slot name="hub">
602
- <RectOrbitTetradCenter
603
- :title="props.title"
604
- :subtitle="props.subtitle"
605
- :radius="hubRadius"
606
- />
604
+ <slot name="center">
605
+ <RectangleOrbitTetradCenter :radius="hubRadius" />
607
606
  </slot>
608
607
  </div>
609
608
  <!-- Callout Cards -->
@@ -614,19 +613,23 @@ const resolvedScale = computed((): number => {
614
613
 
615
614
  <style scoped>
616
615
  .alpha-rect-orbit-block--animated.alpha-rect-orbit-block--0 {
617
- animation: rect-orbit-block-pop 400ms cubic-bezier(0.2, 0.9, 0.4, 1) calc(var(--rect-orbit-start-delay, 0ms) + 100ms) both;
616
+ animation: rect-orbit-block-pop 400ms cubic-bezier(0.2, 0.9, 0.4, 1)
617
+ calc(var(--rect-orbit-start-delay, 0ms) + 100ms) both;
618
618
  }
619
619
 
620
620
  .alpha-rect-orbit-block--animated.alpha-rect-orbit-block--1 {
621
- animation: rect-orbit-block-pop 400ms cubic-bezier(0.2, 0.9, 0.4, 1) calc(var(--rect-orbit-start-delay, 0ms) + 200ms) both;
621
+ animation: rect-orbit-block-pop 400ms cubic-bezier(0.2, 0.9, 0.4, 1)
622
+ calc(var(--rect-orbit-start-delay, 0ms) + 200ms) both;
622
623
  }
623
624
 
624
625
  .alpha-rect-orbit-block--animated.alpha-rect-orbit-block--2 {
625
- animation: rect-orbit-block-pop 400ms cubic-bezier(0.2, 0.9, 0.4, 1) calc(var(--rect-orbit-start-delay, 0ms) + 300ms) both;
626
+ animation: rect-orbit-block-pop 400ms cubic-bezier(0.2, 0.9, 0.4, 1)
627
+ calc(var(--rect-orbit-start-delay, 0ms) + 300ms) both;
626
628
  }
627
629
 
628
630
  .alpha-rect-orbit-block--animated.alpha-rect-orbit-block--3 {
629
- animation: rect-orbit-block-pop 400ms cubic-bezier(0.2, 0.9, 0.4, 1) calc(var(--rect-orbit-start-delay, 0ms) + 400ms) both;
631
+ animation: rect-orbit-block-pop 400ms cubic-bezier(0.2, 0.9, 0.4, 1)
632
+ calc(var(--rect-orbit-start-delay, 0ms) + 400ms) both;
630
633
  }
631
634
 
632
635
  @keyframes rect-orbit-block-pop {
@@ -3,38 +3,38 @@ import { computed, Fragment, inject, provide, useSlots, type VNode } from 'vue';
3
3
 
4
4
  import {
5
5
  DEFAULT_RECT_ORBIT_TETRAD_ITEMS,
6
- type IResolvedRectOrbitTetradItem,
6
+ type IResolvedRectangleOrbitTetradItem,
7
7
  RECT_ORBIT_TETRAD_CALLOUT_KEY,
8
8
  RECT_ORBIT_TETRAD_ROOT_KEY,
9
9
  resolveSingleItem,
10
- type TRectOrbitTetradIcon,
11
- } from '../../../../utils/rectOrbitTetrad';
12
- import RectOrbitTetradContent from './RectOrbitTetradContent.vue';
13
- import RectOrbitTetradHeading from './RectOrbitTetradHeading.vue';
10
+ type TRectangleOrbitTetradIcon,
11
+ } from '../../../../utils/facets/tetrad/rectangle-orbit-tetrad';
12
+ import { useMergedUnoAttrs } from '../../../../utils/useMergedUnoAttrs';
13
+ import RectangleOrbitTetradContent from './RectangleOrbitTetradContent.vue';
14
+ import RectangleOrbitTetradHeading from './RectangleOrbitTetradHeading.vue';
14
15
 
15
16
  defineOptions({
16
- name: 'RectOrbitTetradCallout',
17
+ inheritAttrs: false,
18
+ name: 'RectangleOrbitTetradCallout',
17
19
  });
18
20
 
19
- export interface IRectOrbitTetradCalloutProps {
21
+ export interface IRectangleOrbitTetradCalloutProps {
20
22
  readonly id?: string | number;
21
- readonly icon?: TRectOrbitTetradIcon;
23
+ readonly icon?: TRectangleOrbitTetradIcon;
22
24
  readonly color?: string;
23
25
  readonly cardBg?: string;
24
26
  readonly arcColor?: string;
25
27
  readonly textColor?: string;
26
- readonly titleColor?: string;
27
28
  readonly arcBorderColor?: string;
28
29
  }
29
30
 
30
- const props = withDefaults(defineProps<IRectOrbitTetradCalloutProps>(), {
31
+ const props = withDefaults(defineProps<IRectangleOrbitTetradCalloutProps>(), {
31
32
  id: undefined,
32
33
  icon: undefined,
33
34
  color: undefined,
34
35
  cardBg: undefined,
35
36
  arcColor: undefined,
36
37
  textColor: undefined,
37
- titleColor: undefined,
38
38
  arcBorderColor: undefined,
39
39
  });
40
40
 
@@ -56,7 +56,7 @@ const rootContext = inject(RECT_ORBIT_TETRAD_ROOT_KEY, undefined);
56
56
 
57
57
  if (!rootContext) {
58
58
  console.warn(
59
- '[RectOrbitTetradCallout] Must be used inside <RectOrbitTetrad>',
59
+ '[RectangleOrbitTetradCallout] Must be used inside <RectangleOrbitTetrad>',
60
60
  );
61
61
  }
62
62
 
@@ -65,13 +65,13 @@ const index = registration?.index ?? 0;
65
65
 
66
66
  const [firstDefaultItem] = DEFAULT_RECT_ORBIT_TETRAD_ITEMS;
67
67
 
68
- const fallbackItem = computed<IResolvedRectOrbitTetradItem>(() => {
68
+ const fallbackItem = computed<IResolvedRectangleOrbitTetradItem>(() => {
69
69
  const current = DEFAULT_RECT_ORBIT_TETRAD_ITEMS[index];
70
70
 
71
71
  return resolveSingleItem(current ?? firstDefaultItem, props);
72
72
  });
73
73
 
74
- const item = computed<IResolvedRectOrbitTetradItem>(() => {
74
+ const item = computed<IResolvedRectangleOrbitTetradItem>(() => {
75
75
  return registration?.item.value ?? fallbackItem.value;
76
76
  });
77
77
 
@@ -98,15 +98,15 @@ function flattenVNodes(nodes: VNode[]): VNode[] {
98
98
 
99
99
  function isHeadingNode(node: VNode): boolean {
100
100
  return (
101
- hasComponentName(node.type, 'RectOrbitTetradHeading') ||
102
- node.type === RectOrbitTetradHeading
101
+ hasComponentName(node.type, 'RectangleOrbitTetradHeading') ||
102
+ node.type === RectangleOrbitTetradHeading
103
103
  );
104
104
  }
105
105
 
106
106
  function isContentNode(node: VNode): boolean {
107
107
  return (
108
- hasComponentName(node.type, 'RectOrbitTetradContent') ||
109
- node.type === RectOrbitTetradContent
108
+ hasComponentName(node.type, 'RectangleOrbitTetradContent') ||
109
+ node.type === RectangleOrbitTetradContent
110
110
  );
111
111
  }
112
112
 
@@ -144,6 +144,7 @@ const positionStyle = computed(() => {
144
144
  case 0: {
145
145
  return 'left: 0; right: calc(50% + 95px); top: 10px; bottom: calc(50% + 14px);';
146
146
  }
147
+
147
148
  case 1: {
148
149
  return 'left: calc(50% + 95px); right: 0; top: 10px; bottom: calc(50% + 14px);';
149
150
  }
@@ -162,24 +163,31 @@ const positionStyle = computed(() => {
162
163
  const animation = computed(() => {
163
164
  return rootContext?.animation?.value ?? true;
164
165
  });
166
+
167
+ const { className, forwardedAttrs } = useMergedUnoAttrs(() => {
168
+ const alignPadding = isLeftCard.value
169
+ ? 'pl-5 pr-16 py-4 text-right'
170
+ : 'pl-16 pr-5 py-4 text-left';
171
+
172
+ return `alpha-rectangle-orbit-tetrad-callout absolute rounded-2xl flex flex-col justify-center z-0 bg-(--alpha-rectangle-orbit-tetrad-card-bg) font-sans transition-all duration-300 pointer-events-auto shadow-sm select-none box-border ${alignPadding}`;
173
+ });
165
174
  </script>
166
175
 
167
176
  <template>
168
177
  <div
169
178
  v-if="index < 4"
179
+ v-bind="forwardedAttrs()"
170
180
  :class="[
171
- 'alpha-rect-orbit-tetrad-callout absolute rounded-2xl flex flex-col justify-center z-0 transition-all duration-300 pointer-events-auto shadow-sm select-none box-border',
172
- isLeftCard ? 'pl-5 pr-16 py-4 text-right' : 'pl-16 pr-5 py-4 text-left',
173
- `alpha-rect-orbit-tetrad-callout--${index}`,
174
- { 'alpha-rect-orbit-tetrad-callout--animated': animation },
181
+ className(),
182
+ `alpha-rectangle-orbit-tetrad-callout--${index}`,
183
+ { 'alpha-rectangle-orbit-tetrad-callout--animated': animation },
175
184
  ]"
176
185
  :style="[
177
186
  positionStyle,
178
- {
179
- backgroundColor: item.cardBg,
180
- fontFamily:
181
- 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, sans-serif',
182
- },
187
+ item.cardBg &&
188
+ !item.cardBg.includes('--alpha-rectangle-orbit-tetrad-card-bg')
189
+ ? { '--alpha-rectangle-orbit-tetrad-card-bg': item.cardBg }
190
+ : undefined,
183
191
  ]"
184
192
  >
185
193
  <!-- Left-side callouts (TL & BL): Heading on top (right-aligned), then [description | accentBar] -->
@@ -193,8 +201,8 @@ const animation = computed(() => {
193
201
  <component :is="node" v-for="(node, i) in otherNodes" :key="i" />
194
202
  </div>
195
203
  <div
196
- class="w-[3px] self-stretch min-h-[30px] rounded-full flex-shrink-0 my-0.5"
197
- :style="{ backgroundColor: item.titleColor }"
204
+ class="w-0.75 self-stretch min-h-7.5 rounded-full shrink-0 my-0.5"
205
+ :style="{ backgroundColor: item.color }"
198
206
  />
199
207
  </div>
200
208
  </template>
@@ -205,8 +213,8 @@ const animation = computed(() => {
205
213
  </div>
206
214
  <div class="w-full flex items-stretch justify-start gap-2.5">
207
215
  <div
208
- class="w-[3px] self-stretch min-h-[30px] rounded-full flex-shrink-0 my-0.5"
209
- :style="{ backgroundColor: item.titleColor }"
216
+ class="w-0.75 self-stretch min-h-7.5 rounded-full shrink-0 my-0.5"
217
+ :style="{ backgroundColor: item.color }"
210
218
  />
211
219
  <div class="flex-1 flex flex-col items-start min-w-0">
212
220
  <component :is="contentNode" v-if="contentNode" />
@@ -218,31 +226,37 @@ const animation = computed(() => {
218
226
  </template>
219
227
 
220
228
  <style scoped>
221
- .alpha-rect-orbit-tetrad-callout :deep(p),
222
- .alpha-rect-orbit-tetrad-callout :deep(h1),
223
- .alpha-rect-orbit-tetrad-callout :deep(h2),
224
- .alpha-rect-orbit-tetrad-callout :deep(h3),
225
- .alpha-rect-orbit-tetrad-callout :deep(h4),
226
- .alpha-rect-orbit-tetrad-callout :deep(h5),
227
- .alpha-rect-orbit-tetrad-callout :deep(h6) {
228
- margin: 0;
229
- padding: 0;
229
+ @layer alpha-theme-tokens {
230
+ .alpha-rectangle-orbit-tetrad-callout :deep(p),
231
+ .alpha-rectangle-orbit-tetrad-callout :deep(h1),
232
+ .alpha-rectangle-orbit-tetrad-callout :deep(h2),
233
+ .alpha-rectangle-orbit-tetrad-callout :deep(h3),
234
+ .alpha-rectangle-orbit-tetrad-callout :deep(h4),
235
+ .alpha-rectangle-orbit-tetrad-callout :deep(h5),
236
+ .alpha-rectangle-orbit-tetrad-callout :deep(h6) {
237
+ margin: 0;
238
+ padding: 0;
239
+ }
230
240
  }
231
241
 
232
- .alpha-rect-orbit-tetrad-callout--animated.alpha-rect-orbit-tetrad-callout--0 {
233
- animation: rect-orbit-callout-left 450ms cubic-bezier(0.16, 1, 0.3, 1) calc(var(--rect-orbit-start-delay, 0ms) + 150ms) both;
242
+ .alpha-rectangle-orbit-tetrad-callout--animated.alpha-rectangle-orbit-tetrad-callout--0 {
243
+ animation: rect-orbit-callout-left 450ms cubic-bezier(0.16, 1, 0.3, 1)
244
+ calc(var(--rect-orbit-start-delay, 0ms) + 150ms) both;
234
245
  }
235
246
 
236
- .alpha-rect-orbit-tetrad-callout--animated.alpha-rect-orbit-tetrad-callout--1 {
237
- animation: rect-orbit-callout-right 450ms cubic-bezier(0.16, 1, 0.3, 1) calc(var(--rect-orbit-start-delay, 0ms) + 300ms) both;
247
+ .alpha-rectangle-orbit-tetrad-callout--animated.alpha-rectangle-orbit-tetrad-callout--1 {
248
+ animation: rect-orbit-callout-right 450ms cubic-bezier(0.16, 1, 0.3, 1)
249
+ calc(var(--rect-orbit-start-delay, 0ms) + 300ms) both;
238
250
  }
239
251
 
240
- .alpha-rect-orbit-tetrad-callout--animated.alpha-rect-orbit-tetrad-callout--2 {
241
- animation: rect-orbit-callout-right 450ms cubic-bezier(0.16, 1, 0.3, 1) calc(var(--rect-orbit-start-delay, 0ms) + 450ms) both;
252
+ .alpha-rectangle-orbit-tetrad-callout--animated.alpha-rectangle-orbit-tetrad-callout--2 {
253
+ animation: rect-orbit-callout-right 450ms cubic-bezier(0.16, 1, 0.3, 1)
254
+ calc(var(--rect-orbit-start-delay, 0ms) + 450ms) both;
242
255
  }
243
256
 
244
- .alpha-rect-orbit-tetrad-callout--animated.alpha-rect-orbit-tetrad-callout--3 {
245
- animation: rect-orbit-callout-left 450ms cubic-bezier(0.16, 1, 0.3, 1) calc(var(--rect-orbit-start-delay, 0ms) + 600ms) both;
257
+ .alpha-rectangle-orbit-tetrad-callout--animated.alpha-rectangle-orbit-tetrad-callout--3 {
258
+ animation: rect-orbit-callout-left 450ms cubic-bezier(0.16, 1, 0.3, 1)
259
+ calc(var(--rect-orbit-start-delay, 0ms) + 600ms) both;
246
260
  }
247
261
 
248
262
  @keyframes rect-orbit-callout-right {
@@ -0,0 +1,54 @@
1
+ <script setup lang="ts">
2
+ import { isVNode, type VNode } from 'vue';
3
+
4
+ import { useMergedUnoAttrs } from '../../../../utils/useMergedUnoAttrs';
5
+
6
+ defineOptions({
7
+ inheritAttrs: false,
8
+ name: 'RectangleOrbitTetradCenter',
9
+ });
10
+
11
+ export interface IRectangleOrbitTetradCenterProps {
12
+ readonly title?: string | VNode;
13
+ readonly radius?: number;
14
+ }
15
+
16
+ const props = withDefaults(defineProps<IRectangleOrbitTetradCenterProps>(), {
17
+ title: undefined,
18
+ radius: 58,
19
+ });
20
+
21
+ const { className, forwardedAttrs } = useMergedUnoAttrs(
22
+ 'alpha-rectangle-orbit-tetrad-center absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-20 rounded-full bg-(--alpha-rectangle-orbit-tetrad-center-bg) font-sans flex flex-col items-center justify-center text-center shadow-lg pointer-events-auto select-none',
23
+ );
24
+ </script>
25
+
26
+ <template>
27
+ <div
28
+ v-bind="forwardedAttrs()"
29
+ :class="className()"
30
+ :style="{
31
+ width: `${props.radius * 2}px`,
32
+ height: `${props.radius * 2}px`,
33
+ boxShadow: 'var(--alpha-rectangle-orbit-tetrad-center-shadow)',
34
+ }"
35
+ >
36
+ <h4
37
+ v-if="props.title != null || $slots.title"
38
+ class="mb-2 font-extrabold text-(--alpha-rectangle-orbit-tetrad-title) tracking-tight leading-none"
39
+ >
40
+ <slot v-if="$slots.title" name="title" />
41
+ <component :is="props.title" v-else-if="isVNode(props.title)" />
42
+ <template v-else-if="typeof props.title === 'string'">{{
43
+ props.title
44
+ }}</template>
45
+ </h4>
46
+ <p
47
+ v-if="$slots.content"
48
+ class="text-sm font-medium text-(--alpha-rectangle-orbit-tetrad-center-content) tracking-normal leading-normal"
49
+ >
50
+ <slot name="content" />
51
+ </p>
52
+ <slot />
53
+ </div>
54
+ </template>
@@ -0,0 +1,44 @@
1
+ <script setup lang="ts">
2
+ import { computed, inject } from 'vue';
3
+
4
+ import { RECT_ORBIT_TETRAD_CALLOUT_KEY } from '../../../../utils/facets/tetrad/rectangle-orbit-tetrad';
5
+ import { useMergedUnoAttrs } from '../../../../utils/useMergedUnoAttrs';
6
+
7
+ defineOptions({
8
+ inheritAttrs: false,
9
+ name: 'RectangleOrbitTetradContent',
10
+ });
11
+
12
+ export interface IRectangleOrbitTetradContentProps {
13
+ readonly color?: string;
14
+ }
15
+
16
+ const props = withDefaults(defineProps<IRectangleOrbitTetradContentProps>(), {
17
+ color: undefined,
18
+ });
19
+
20
+ const calloutContext = inject(RECT_ORBIT_TETRAD_CALLOUT_KEY, undefined);
21
+
22
+ const contentColor = computed(() => {
23
+ return props.color ?? calloutContext?.item.value.textColor ?? undefined;
24
+ });
25
+
26
+ const { className, forwardedAttrs } = useMergedUnoAttrs(
27
+ 'alpha-rectangle-orbit-tetrad-content font-sans leading-[1.38] font-normal tracking-tight text-(--alpha-rectangle-orbit-tetrad-content) select-none',
28
+ );
29
+ </script>
30
+
31
+ <template>
32
+ <p
33
+ v-bind="forwardedAttrs()"
34
+ :class="className()"
35
+ :style="
36
+ contentColor &&
37
+ !contentColor.includes('--alpha-rectangle-orbit-tetrad-content')
38
+ ? { '--alpha-rectangle-orbit-tetrad-content': contentColor }
39
+ : undefined
40
+ "
41
+ >
42
+ <slot />
43
+ </p>
44
+ </template>
@@ -0,0 +1,27 @@
1
+ <script setup lang="ts">
2
+ import { inject } from 'vue';
3
+
4
+ import { RECT_ORBIT_TETRAD_CALLOUT_KEY } from '../../../../utils/facets/tetrad/rectangle-orbit-tetrad';
5
+ import { useMergedUnoAttrs } from '../../../../utils/useMergedUnoAttrs';
6
+
7
+ defineOptions({
8
+ inheritAttrs: false,
9
+ name: 'RectangleOrbitTetradHeading',
10
+ });
11
+
12
+ const calloutContext = inject(RECT_ORBIT_TETRAD_CALLOUT_KEY, undefined);
13
+
14
+ const { className, forwardedAttrs } = useMergedUnoAttrs(
15
+ 'alpha-rectangle-orbit-tetrad-heading font-sans font-bold leading-tight tracking-tight select-none',
16
+ );
17
+ </script>
18
+
19
+ <template>
20
+ <h4
21
+ v-bind="forwardedAttrs()"
22
+ :class="className()"
23
+ :style="{ color: calloutContext?.item.value.color }"
24
+ >
25
+ <slot>{{ '' }}</slot>
26
+ </h4>
27
+ </template>