@alphacifer/slidev-addon-theme 0.0.10 → 0.0.12
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.
- package/README.md +134 -76
- package/components/card/chevron-card/ChevronCard.vue +44 -32
- package/components/card/chevron-card/ChevronCardBadge.vue +14 -8
- package/components/card/chevron-card/ChevronCardContent.vue +15 -13
- package/components/card/chevron-card/style.css +12 -0
- package/components/card/{horiz-card/HorizCard.vue → horizontal-card/HorizontalCard.vue} +78 -85
- package/components/card/{horiz-card/HorizCardBadge.vue → horizontal-card/HorizontalCardBadge.vue} +15 -10
- package/components/card/{horiz-card/HorizCardContent.vue → horizontal-card/HorizontalCardContent.vue} +11 -11
- package/components/card/{horiz-card/HorizCardIcon.vue → horizontal-card/HorizontalCardIcon.vue} +24 -38
- package/components/card/horizontal-card/style.css +17 -0
- package/components/card/{vert-card/VertCard.vue → vertical-card/VerticalCard.vue} +80 -103
- package/components/card/{vert-card/VertCardBadge.vue → vertical-card/VerticalCardBadge.vue} +15 -10
- package/components/card/{vert-card/VertCardContent.vue → vertical-card/VerticalCardContent.vue} +13 -12
- package/components/card/{vert-card/VertCardIcon.vue → vertical-card/VerticalCardIcon.vue} +15 -33
- package/components/card/vertical-card/style.css +19 -0
- package/components/comparisons/arc-comparison/ArcComparison.vue +376 -80
- package/components/comparisons/arc-comparison/ArcComparisonBadge.vue +9 -4
- package/components/comparisons/arc-comparison/ArcComparisonContent.vue +9 -4
- package/components/comparisons/arc-comparison/ArcComparisonHeading.vue +9 -4
- package/components/comparisons/arc-comparison/ArcComparisonLeft.vue +39 -63
- package/components/comparisons/arc-comparison/ArcComparisonOrbit.vue +9 -8
- package/components/comparisons/arc-comparison/ArcComparisonRight.vue +39 -63
- package/components/comparisons/arc-comparison/style.css +27 -0
- package/components/comparisons/table-comparison/TableComparison.vue +8 -90
- package/components/comparisons/table-comparison/TableComparisonCell.vue +22 -20
- package/components/comparisons/table-comparison/{TableComparisonCol.vue → TableComparisonColumn.vue} +16 -14
- package/components/comparisons/table-comparison/{TableComparisonCols.vue → TableComparisonColumns.vue} +5 -8
- package/components/comparisons/table-comparison/TableComparisonRow.vue +10 -14
- package/components/comparisons/table-comparison/TableComparisonRows.vue +1 -4
- package/components/comparisons/table-comparison/style.css +15 -0
- package/components/core/Date.vue +2 -5
- package/components/core/MetaList.vue +50 -0
- package/components/core/QnA.vue +1 -1
- package/components/core/Quote.vue +3 -6
- package/components/core/ReflectedTitle.vue +2 -6
- package/components/core/Speaker.vue +6 -11
- package/components/core/TransitionHeading.vue +2 -5
- package/components/core/arc-orbit/ArcOrbit.vue +65 -84
- package/components/core/arc-orbit/ArcOrbitBadge.vue +9 -11
- package/components/core/arc-orbit/ArcOrbitCallout.vue +19 -23
- package/components/core/arc-orbit/ArcOrbitContent.vue +6 -12
- package/components/core/arc-orbit/ArcOrbitHeading.vue +13 -11
- package/components/core/arc-orbit/style.css +20 -0
- package/components/core/style.css +9 -0
- package/components/core/thanks/{ThanksContent.vue → SquareThanks.vue} +36 -31
- package/components/core/thanks/SquareThanksContent.vue +87 -0
- package/components/core/thanks/ThanksOutlineSquare.vue +2 -5
- package/components/core/thanks/ThanksSquare.vue +2 -5
- package/components/core/thanks/style.css +30 -0
- package/components/defense-in-depth/{arc-did/ArcDiD.vue → arc-defense-in-depth/ArcDefenseInDepth.vue} +167 -97
- package/components/defense-in-depth/arc-defense-in-depth/ArcDefenseInDepthLayer.vue +240 -0
- package/components/defense-in-depth/{arc-did/ArcDiDLayerTitle.vue → arc-defense-in-depth/ArcDefenseInDepthLayerHeading.vue} +27 -29
- package/components/defense-in-depth/{arc-did/ArcDiDLayerPart.vue → arc-defense-in-depth/ArcDefenseInDepthLayerPart.vue} +91 -39
- package/components/defense-in-depth/{arc-did/ArcDiDLayerSector.vue → arc-defense-in-depth/ArcDefenseInDepthLayerSector.vue} +37 -23
- package/components/defense-in-depth/arc-defense-in-depth/style.css +38 -0
- package/components/facets/tetrad/{rect-orbit-tetrad/RectOrbitTetrad.vue → rectangle-orbit-tetrad/RectangleOrbitTetrad.vue} +66 -63
- package/components/facets/tetrad/{rect-orbit-tetrad/RectOrbitTetradCallout.vue → rectangle-orbit-tetrad/RectangleOrbitTetradCallout.vue} +58 -46
- package/components/facets/tetrad/rectangle-orbit-tetrad/RectangleOrbitTetradCenter.vue +54 -0
- package/components/facets/tetrad/rectangle-orbit-tetrad/RectangleOrbitTetradContent.vue +44 -0
- package/components/facets/tetrad/rectangle-orbit-tetrad/RectangleOrbitTetradHeading.vue +27 -0
- package/components/facets/tetrad/{rect-orbit-tetrad/RectOrbitTetradIcon.vue → rectangle-orbit-tetrad/RectangleOrbitTetradIcon.vue} +23 -13
- package/components/facets/tetrad/rectangle-orbit-tetrad/style.css +22 -0
- package/components/facets/triad/arrow-triad/ArrowTriad.vue +99 -109
- package/components/facets/triad/arrow-triad/ArrowTriadCallout.vue +31 -59
- package/components/facets/triad/arrow-triad/ArrowTriadContent.vue +18 -13
- package/components/facets/triad/arrow-triad/ArrowTriadHeading.vue +20 -13
- package/components/facets/triad/arrow-triad/ArrowTriadIcon.vue +14 -9
- package/components/facets/triad/arrow-triad/style.css +15 -0
- package/components/facets/triad/gear-triad/GearTriad.vue +73 -64
- package/components/facets/triad/gear-triad/GearTriadCallout.vue +58 -53
- package/components/facets/triad/gear-triad/GearTriadCenter.vue +9 -4
- package/components/facets/triad/gear-triad/GearTriadContent.vue +21 -36
- package/components/facets/triad/gear-triad/GearTriadDetail.vue +92 -0
- package/components/facets/triad/gear-triad/GearTriadDetails.vue +169 -0
- package/components/facets/triad/gear-triad/GearTriadDetailsContent.vue +18 -0
- package/components/facets/triad/gear-triad/GearTriadDetailsHeading.vue +60 -0
- package/components/facets/triad/gear-triad/GearTriadHeading.vue +19 -13
- package/components/facets/triad/gear-triad/GearTriadIcon.vue +22 -9
- package/components/facets/triad/gear-triad/style.css +26 -0
- package/components/facets/triad/{hex-triad/HexTriad.vue → hexagon-triad/HexagonTriad.vue} +81 -63
- package/components/facets/triad/{hex-triad/HexTriadBadge.vue → hexagon-triad/HexagonTriadBadge.vue} +38 -12
- package/components/facets/triad/{hex-triad/HexTriadCallout.vue → hexagon-triad/HexagonTriadCallout.vue} +35 -31
- package/components/facets/triad/hexagon-triad/HexagonTriadCenterBadge.vue +74 -0
- package/components/facets/triad/hexagon-triad/HexagonTriadContent.vue +34 -0
- package/components/facets/triad/hexagon-triad/HexagonTriadHeading.vue +44 -0
- package/components/facets/triad/{hex-triad/HexTriadLayer.vue → hexagon-triad/HexagonTriadLayer.vue} +12 -4
- package/components/facets/triad/hexagon-triad/style.css +22 -0
- package/components/process/arc-arrow-process/ArcArrowProcess.vue +13 -35
- package/components/process/arc-arrow-process/ArcArrowProcessArrow.vue +20 -21
- package/components/process/arc-arrow-process/ArcArrowProcessCallout.vue +30 -71
- package/components/process/arc-arrow-process/ArcArrowProcessContent.vue +18 -13
- package/components/process/arc-arrow-process/ArcArrowProcessHeading.vue +18 -18
- package/components/process/arc-arrow-process/ArcArrowProcessIcon.vue +23 -11
- package/components/process/arc-arrow-process/style.css +20 -0
- package/components/pyramid/circular-pyramid/CircularPyramid.vue +269 -170
- package/components/pyramid/circular-pyramid/CircularPyramidStack.vue +70 -52
- package/components/pyramid/circular-pyramid/CircularPyramidStackContent.vue +47 -37
- package/components/pyramid/circular-pyramid/{CircularPyramidStackTitle.vue → CircularPyramidStackHeading.vue} +49 -45
- package/components/pyramid/circular-pyramid/style.css +26 -0
- package/components/pyramid/square-pyramid/SquarePyramid.vue +191 -62
- package/components/pyramid/square-pyramid/SquarePyramidStack.vue +74 -49
- package/components/pyramid/square-pyramid/SquarePyramidStackContent.vue +47 -33
- package/components/pyramid/square-pyramid/{SquarePyramidStackTitle.vue → SquarePyramidStackHeading.vue} +49 -41
- package/components/pyramid/square-pyramid/style.css +48 -0
- package/components/style.css +35 -0
- package/layouts/core/arc-toc.vue +40 -45
- package/layouts/core/bg-center.vue +7 -6
- package/layouts/core/references.vue +84 -0
- package/layouts/core/style.css +47 -0
- package/layouts/shifting-heading/shifting-intro.vue +4 -13
- package/layouts/thanks/thanks.vue +5 -5
- package/package.json +7 -5
- package/style.css +17 -0
- package/uno.config.ts +1 -0
- package/utils/activateOnKeyboard.ts +14 -0
- package/utils/{chevronCard → card/chevron-card}/context.ts +1 -1
- package/utils/card/chevron-card/index.ts +1 -0
- package/utils/card/horizontal-card/context.ts +12 -0
- package/utils/{horizCard/createHorizCardGeometry.ts → card/horizontal-card/createHorizontalCardGeometry.ts} +10 -45
- package/utils/card/horizontal-card/index.ts +2 -0
- package/utils/card/vertical-card/context.ts +19 -0
- package/utils/{vertCard/createVertCardGeometry.ts → card/vertical-card/createVerticalCardGeometry.ts} +9 -130
- package/utils/card/vertical-card/index.ts +2 -0
- package/utils/colors.ts +93 -0
- package/utils/{arcComparison → comparisons/arc-comparison}/context.ts +0 -11
- package/utils/{arcComparison → comparisons/arc-comparison}/createArcComparisonGeometry.ts +1 -1
- package/utils/comparisons/arc-comparison/resolveArcComparisonItems.ts +33 -0
- package/utils/comparisons/table-comparison/constants.ts +47 -0
- package/utils/{tableComparison → comparisons/table-comparison}/context.ts +2 -2
- package/utils/{arcOrbit → core/arc-orbit}/resolveArcOrbitItems.ts +11 -15
- package/utils/{defenseInDepth/arcDid → defense-in-depth/arc-defense-in-depth}/context.ts +34 -31
- package/utils/{defenseInDepth/arcDid/createArcDiDGeometry.ts → defense-in-depth/arc-defense-in-depth/createArcDefenseInDepthGeometry.ts} +69 -39
- package/utils/{defenseInDepth/arcDid → defense-in-depth/arc-defense-in-depth}/types.ts +39 -35
- package/utils/defense-in-depth/shared/colors.ts +51 -0
- package/utils/defense-in-depth/shared/constants.ts +22 -0
- package/utils/{defenseInDepth → defense-in-depth}/shared/types.ts +0 -5
- package/utils/facets/tetrad/rectangle-orbit-tetrad/context.ts +31 -0
- package/utils/{rectOrbitTetrad/createRectOrbitTetradGeometry.ts → facets/tetrad/rectangle-orbit-tetrad/createRectangleOrbitTetradGeometry.ts} +5 -104
- package/utils/facets/tetrad/rectangle-orbit-tetrad/index.ts +3 -0
- package/utils/{rectOrbitTetrad/resolveRectOrbitTetradItems.ts → facets/tetrad/rectangle-orbit-tetrad/resolveRectangleOrbitTetradItems.ts} +41 -49
- package/utils/{arrowTriad → facets/triad/arrow-triad}/resolveArrowTriadItems.ts +27 -28
- package/utils/{gearTriad → facets/triad/gear-triad}/context.ts +5 -5
- package/utils/{gearTriad → facets/triad/gear-triad}/createGearTriadGeometry.ts +2 -0
- package/utils/{gearTriad → facets/triad/gear-triad}/resolveGearTriadItems.ts +23 -24
- package/utils/facets/triad/hexagon-triad/context.ts +25 -0
- package/utils/{hexTriad/createHexTriadGeometry.ts → facets/triad/hexagon-triad/createHexagonTriadGeometry.ts} +11 -27
- package/utils/facets/triad/hexagon-triad/index.ts +3 -0
- package/utils/facets/triad/hexagon-triad/resolveHexagonTriadItems.ts +60 -0
- package/utils/{shiftingHeading → layouts/shifting-heading}/collectShiftingIntroNodes.ts +1 -0
- package/utils/layouts/table-of-contents/calculateTocCenterAlignmentOffset.ts +17 -0
- package/utils/{tableOfContents → layouts/table-of-contents}/calculateTocMarkerPositions.ts +0 -12
- package/utils/{tableOfContents → layouts/table-of-contents}/createTocConnectorPath.ts +11 -5
- package/utils/{mergeUno → merge-uno}/classifyVisual.ts +1 -1
- package/utils/{mergeUno → merge-uno}/collectClassNames.ts +9 -3
- package/utils/process/arc-arrow-process/resolveArcArrowProcessItems.ts +180 -0
- package/utils/pyramid/circular-pyramid/context.ts +1 -4
- package/utils/pyramid/circular-pyramid/createCircularPyramidGeometry.ts +6 -10
- package/utils/pyramid/shared/colors.ts +33 -83
- package/utils/pyramid/shared/constants.ts +2 -2
- package/utils/pyramid/shared/types.ts +0 -5
- package/utils/pyramid/square-pyramid/context.ts +1 -4
- package/utils/pyramid/square-pyramid/createSquarePyramidGeometry.ts +6 -10
- package/utils/useDiagramAutoScale.ts +8 -6
- package/utils/useMergedUnoAttrs.ts +9 -5
- package/components/card/chevron-card/ChevronCardHeading.vue +0 -39
- package/components/card/horiz-card/HorizCardHeading.vue +0 -47
- package/components/card/vert-card/VertCardHeading.vue +0 -68
- package/components/card/vert-card/VertCardTitle.vue +0 -76
- package/components/comparisons/arc-comparison/ArcComparisonContents.vue +0 -17
- package/components/comparisons/arc-comparison/ArcComparisonTitle.vue +0 -29
- package/components/core/arc-orbit/ArcOrbitContents.vue +0 -18
- package/components/core/arc-orbit/ArcOrbitTitle.vue +0 -50
- package/components/defense-in-depth/arc-did/ArcDiDLayer.vue +0 -321
- package/components/defense-in-depth/arc-did/ArcDiDLayerParts.vue +0 -11
- package/components/facets/tetrad/rect-orbit-tetrad/RectOrbitTetradCenter.vue +0 -53
- package/components/facets/tetrad/rect-orbit-tetrad/RectOrbitTetradContent.vue +0 -39
- package/components/facets/tetrad/rect-orbit-tetrad/RectOrbitTetradHeading.vue +0 -44
- package/components/facets/triad/gear-triad/GearTriadContents.vue +0 -111
- package/components/facets/triad/gear-triad/GearTriadDescription.vue +0 -38
- package/components/facets/triad/hex-triad/HexTriadCenterBadge.vue +0 -51
- package/components/facets/triad/hex-triad/HexTriadContent.vue +0 -20
- package/components/facets/triad/hex-triad/HexTriadHeading.vue +0 -28
- package/layouts/core/table-of-contents.vue +0 -30
- package/utils/arcArrowProcess/resolveArcArrowProcessItems.ts +0 -189
- package/utils/arcComparison/resolveArcComparisonItems.ts +0 -102
- package/utils/chevronCard/createChevronCardGeometry.ts +0 -48
- package/utils/chevronCard/index.ts +0 -2
- package/utils/defenseInDepth/arcDid/index.ts +0 -3
- package/utils/defenseInDepth/index.ts +0 -2
- package/utils/defenseInDepth/shared/colors.ts +0 -121
- package/utils/defenseInDepth/shared/constants.ts +0 -14
- package/utils/defenseInDepth/shared/index.ts +0 -3
- package/utils/hexTriad/context.ts +0 -25
- package/utils/hexTriad/index.ts +0 -3
- package/utils/hexTriad/resolveHexTriadItems.ts +0 -63
- package/utils/horizCard/context.ts +0 -13
- package/utils/horizCard/index.ts +0 -2
- package/utils/pyramid/index.ts +0 -3
- package/utils/rectOrbitTetrad/context.ts +0 -31
- package/utils/rectOrbitTetrad/index.ts +0 -3
- package/utils/tableComparison/constants.ts +0 -72
- package/utils/tableOfContents/calculateTocCenterAlignmentOffset.ts +0 -11
- package/utils/vertCard/context.ts +0 -18
- package/utils/vertCard/index.ts +0 -2
- package/utils/{arcComparison → comparisons/arc-comparison}/index.ts +0 -0
- package/utils/{tableComparison → comparisons/table-comparison}/index.ts +0 -0
- package/utils/{arcOrbit → core/arc-orbit}/context.ts +0 -0
- package/utils/{arcOrbit → core/arc-orbit}/createArcOrbitGeometry.ts +0 -0
- package/utils/{arcOrbit → core/arc-orbit}/index.ts +0 -0
- package/utils/{arrowTriad → facets/triad/arrow-triad}/context.ts +0 -0
- package/utils/{arrowTriad → facets/triad/arrow-triad}/createArrowTriadGeometry.ts +0 -0
- package/utils/{arrowTriad → facets/triad/arrow-triad}/index.ts +0 -0
- package/utils/{gearTriad → facets/triad/gear-triad}/index.ts +0 -0
- package/utils/{tableOfContents → layouts/table-of-contents}/calculateUniformTocArticleWidth.ts +0 -0
- package/utils/{tableOfContents → layouts/table-of-contents}/createTocArcPath.ts +0 -0
- package/utils/{tableOfContents → layouts/table-of-contents}/index.ts +0 -0
- package/utils/{mergeUno → merge-uno}/classifyLayout.ts +0 -0
- package/utils/{mergeUno → merge-uno}/classifySimple.ts +0 -0
- package/utils/{mergeUno → merge-uno}/classifyTypography.ts +0 -0
- package/utils/{mergeUno → merge-uno}/classifyUtility.ts +0 -0
- package/utils/{mergeUno → merge-uno}/index.ts +0 -0
- package/utils/{mergeUno → merge-uno}/mergeClassValues.ts +0 -0
- package/utils/{mergeUno → merge-uno}/splitVariantScope.ts +1 -1
- package/utils/{mergeUno → merge-uno}/types.ts +0 -0
- package/utils/{arcArrowProcess → process/arc-arrow-process}/context.ts +1 -1
- /package/utils/{arcArrowProcess → process/arc-arrow-process}/createArcArrowProcessGeometry.ts +0 -0
- /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
|
-
|
|
19
|
+
calculateRectangleOrbitTetradCoordinates,
|
|
20
20
|
DEFAULT_RECT_ORBIT_TETRAD_ITEMS,
|
|
21
21
|
type IRectOrbitBox,
|
|
22
22
|
type IRectOrbitPoint,
|
|
23
|
-
type
|
|
24
|
-
type
|
|
25
|
-
type
|
|
23
|
+
type IRectangleOrbitTetradItem,
|
|
24
|
+
type IRectangleOrbitTetradRegistration,
|
|
25
|
+
type IResolvedRectangleOrbitTetradItem,
|
|
26
26
|
RECT_ORBIT_TETRAD_ROOT_KEY,
|
|
27
|
-
|
|
28
|
-
} from '../../../../utils/
|
|
27
|
+
resolveRectangleOrbitTetradItems,
|
|
28
|
+
} from '../../../../utils/facets/tetrad/rectangle-orbit-tetrad';
|
|
29
29
|
import { useMergedUnoAttrs } from '../../../../utils/useMergedUnoAttrs';
|
|
30
|
-
import
|
|
31
|
-
import
|
|
32
|
-
import
|
|
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: '
|
|
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:
|
|
44
|
+
readonly item: IResolvedRectangleOrbitTetradItem;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
export interface
|
|
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<
|
|
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<
|
|
154
|
-
|
|
155
|
-
);
|
|
147
|
+
const registeredCallouts = shallowReactive<
|
|
148
|
+
Map<number, IRectangleOrbitTetradItem>
|
|
149
|
+
>(new Map());
|
|
156
150
|
|
|
157
151
|
const resolvedItems = computed(
|
|
158
152
|
(): readonly [
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
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, '
|
|
169
|
-
node.type ===
|
|
162
|
+
hasComponentName(node.type, 'RectangleOrbitTetradCallout') ||
|
|
163
|
+
node.type === RectangleOrbitTetradCallout
|
|
170
164
|
);
|
|
171
165
|
});
|
|
172
166
|
|
|
173
|
-
const mergedItems:
|
|
167
|
+
const mergedItems: IRectangleOrbitTetradItem[] = [];
|
|
174
168
|
|
|
175
169
|
for (let i = 0; i < 4; i++) {
|
|
176
170
|
const slotProps =
|
|
177
|
-
(calloutNodes[i]?.props as
|
|
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
|
|
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?:
|
|
202
|
-
):
|
|
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(():
|
|
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 =
|
|
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-
|
|
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-
|
|
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:
|
|
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-
|
|
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
|
-
|
|
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
|
|
508
|
-
|
|
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="
|
|
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
|
|
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-
|
|
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
|
-
<
|
|
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="
|
|
599
|
+
color="var(--alpha-rectangle-orbit-tetrad-connector)"
|
|
597
600
|
/>
|
|
598
601
|
</div>
|
|
599
602
|
</div>
|
|
600
603
|
<!-- Central Circular Hub -->
|
|
601
|
-
<slot name="
|
|
602
|
-
<
|
|
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)
|
|
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)
|
|
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)
|
|
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)
|
|
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
|
|
6
|
+
type IResolvedRectangleOrbitTetradItem,
|
|
7
7
|
RECT_ORBIT_TETRAD_CALLOUT_KEY,
|
|
8
8
|
RECT_ORBIT_TETRAD_ROOT_KEY,
|
|
9
9
|
resolveSingleItem,
|
|
10
|
-
type
|
|
11
|
-
} from '../../../../utils/
|
|
12
|
-
import
|
|
13
|
-
import
|
|
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
|
-
|
|
17
|
+
inheritAttrs: false,
|
|
18
|
+
name: 'RectangleOrbitTetradCallout',
|
|
17
19
|
});
|
|
18
20
|
|
|
19
|
-
export interface
|
|
21
|
+
export interface IRectangleOrbitTetradCalloutProps {
|
|
20
22
|
readonly id?: string | number;
|
|
21
|
-
readonly icon?:
|
|
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<
|
|
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
|
-
'[
|
|
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<
|
|
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<
|
|
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, '
|
|
102
|
-
node.type ===
|
|
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, '
|
|
109
|
-
node.type ===
|
|
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
|
-
|
|
172
|
-
|
|
173
|
-
|
|
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
|
-
|
|
180
|
-
|
|
181
|
-
|
|
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-
|
|
197
|
-
:style="{ backgroundColor: item.
|
|
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-
|
|
209
|
-
:style="{ backgroundColor: item.
|
|
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,35 @@ const animation = computed(() => {
|
|
|
218
226
|
</template>
|
|
219
227
|
|
|
220
228
|
<style scoped>
|
|
221
|
-
.alpha-
|
|
222
|
-
.alpha-
|
|
223
|
-
.alpha-
|
|
224
|
-
.alpha-
|
|
225
|
-
.alpha-
|
|
226
|
-
.alpha-
|
|
227
|
-
.alpha-
|
|
229
|
+
.alpha-rectangle-orbit-tetrad-callout :deep(p),
|
|
230
|
+
.alpha-rectangle-orbit-tetrad-callout :deep(h1),
|
|
231
|
+
.alpha-rectangle-orbit-tetrad-callout :deep(h2),
|
|
232
|
+
.alpha-rectangle-orbit-tetrad-callout :deep(h3),
|
|
233
|
+
.alpha-rectangle-orbit-tetrad-callout :deep(h4),
|
|
234
|
+
.alpha-rectangle-orbit-tetrad-callout :deep(h5),
|
|
235
|
+
.alpha-rectangle-orbit-tetrad-callout :deep(h6) {
|
|
228
236
|
margin: 0;
|
|
229
237
|
padding: 0;
|
|
230
238
|
}
|
|
231
239
|
|
|
232
|
-
.alpha-
|
|
233
|
-
animation: rect-orbit-callout-left 450ms cubic-bezier(0.16, 1, 0.3, 1)
|
|
240
|
+
.alpha-rectangle-orbit-tetrad-callout--animated.alpha-rectangle-orbit-tetrad-callout--0 {
|
|
241
|
+
animation: rect-orbit-callout-left 450ms cubic-bezier(0.16, 1, 0.3, 1)
|
|
242
|
+
calc(var(--rect-orbit-start-delay, 0ms) + 150ms) both;
|
|
234
243
|
}
|
|
235
244
|
|
|
236
|
-
.alpha-
|
|
237
|
-
animation: rect-orbit-callout-right 450ms cubic-bezier(0.16, 1, 0.3, 1)
|
|
245
|
+
.alpha-rectangle-orbit-tetrad-callout--animated.alpha-rectangle-orbit-tetrad-callout--1 {
|
|
246
|
+
animation: rect-orbit-callout-right 450ms cubic-bezier(0.16, 1, 0.3, 1)
|
|
247
|
+
calc(var(--rect-orbit-start-delay, 0ms) + 300ms) both;
|
|
238
248
|
}
|
|
239
249
|
|
|
240
|
-
.alpha-
|
|
241
|
-
animation: rect-orbit-callout-right 450ms cubic-bezier(0.16, 1, 0.3, 1)
|
|
250
|
+
.alpha-rectangle-orbit-tetrad-callout--animated.alpha-rectangle-orbit-tetrad-callout--2 {
|
|
251
|
+
animation: rect-orbit-callout-right 450ms cubic-bezier(0.16, 1, 0.3, 1)
|
|
252
|
+
calc(var(--rect-orbit-start-delay, 0ms) + 450ms) both;
|
|
242
253
|
}
|
|
243
254
|
|
|
244
|
-
.alpha-
|
|
245
|
-
animation: rect-orbit-callout-left 450ms cubic-bezier(0.16, 1, 0.3, 1)
|
|
255
|
+
.alpha-rectangle-orbit-tetrad-callout--animated.alpha-rectangle-orbit-tetrad-callout--3 {
|
|
256
|
+
animation: rect-orbit-callout-left 450ms cubic-bezier(0.16, 1, 0.3, 1)
|
|
257
|
+
calc(var(--rect-orbit-start-delay, 0ms) + 600ms) both;
|
|
246
258
|
}
|
|
247
259
|
|
|
248
260
|
@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>
|