@zendir/ui 0.6.0 → 0.6.1
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/CHANGELOG.md +419 -406
- package/dist/react/3d/CesiumCaptureSource.js.map +1 -1
- package/dist/react/3d/ZenSpace3D.js.map +1 -1
- package/dist/react/3d/ZenSpace3DCesium.js.map +1 -1
- package/dist/react/3d/ZenSpace3DShaders.js.map +1 -1
- package/dist/react/3d/ZenSpace3DUtils.js.map +1 -1
- package/dist/react/3d/capturePngAnalysis.js.map +1 -1
- package/dist/react/3d/threeLoader.js.map +1 -1
- package/dist/react/astro/ClassificationBanner.js.map +1 -1
- package/dist/react/astro/GlobalStatusBar.js.map +1 -1
- package/dist/react/astro/MissionClock.js.map +1 -1
- package/dist/react/astro/MonitoringIcon.js.map +1 -1
- package/dist/react/astro/Notification.js.map +1 -1
- package/dist/react/astro/Progress.js.map +1 -1
- package/dist/react/astro/SimulationControls.js.map +1 -1
- package/dist/react/astro/StatusIndicator.js.map +1 -1
- package/dist/react/astro/UnifiedTimeline.js.map +1 -1
- package/dist/react/cards/AccessCard.js.map +1 -1
- package/dist/react/cards/OrbitCard.js.map +1 -1
- package/dist/react/cards/SpacecraftCard.js.map +1 -1
- package/dist/react/cards/TelemetryCard.js.map +1 -1
- package/dist/react/cards/TelemetryStreamCard.js.map +1 -1
- package/dist/react/charts/GroundTrackMap.js.map +1 -1
- package/dist/react/charts/GroundTrackMapLeaflet.js.map +1 -1
- package/dist/react/charts/groundTrackMapLeafletTiles.js.map +1 -1
- package/dist/react/charts/groundTrackMapLeafletUtils.js.map +1 -1
- package/dist/react/charts/unified/AstroChart.js.map +1 -1
- package/dist/react/charts/unified/PowerOverviewChart.js.map +1 -1
- package/dist/react/charts/unified/domain.js.map +1 -1
- package/dist/react/charts/unified/generators.js.map +1 -1
- package/dist/react/charts/unified/presets.js.map +1 -1
- package/dist/react/charts/unified/sync.js.map +1 -1
- package/dist/react/charts/unified/theme.js.map +1 -1
- package/dist/react/charts/unified/useChartStream.js.map +1 -1
- package/dist/react/chatgpt/index.js.map +1 -1
- package/dist/react/context/CategoryContext.js.map +1 -1
- package/dist/react/context/DisplaySettingsContext.js.map +1 -1
- package/dist/react/context/SpatialSelectionContext.js.map +1 -1
- package/dist/react/core/data/DataTable.js.map +1 -1
- package/dist/react/core/data/DataValue.js.map +1 -1
- package/dist/react/core/data/propertyConfig.js.map +1 -1
- package/dist/react/core/display/AstroIcon.js.map +1 -1
- package/dist/react/core/display/Badge.js.map +1 -1
- package/dist/react/core/display/CardHeader.js.map +1 -1
- package/dist/react/core/display/Container.js.map +1 -1
- package/dist/react/core/display/CopyButton.js.map +1 -1
- package/dist/react/core/display/GlassCard.js.map +1 -1
- package/dist/react/core/display/HeaderIconWithStatus.js.map +1 -1
- package/dist/react/core/display/Icon.js.map +1 -1
- package/dist/react/core/display/Typography.js.map +1 -1
- package/dist/react/core/feedback/ConfirmDialog.js.map +1 -1
- package/dist/react/core/feedback/Dialog.js.map +1 -1
- package/dist/react/core/feedback/Toast.js.map +1 -1
- package/dist/react/core/inputs/Button.js.map +1 -1
- package/dist/react/core/inputs/Checkbox.js.map +1 -1
- package/dist/react/core/inputs/Input.js.map +1 -1
- package/dist/react/core/inputs/LimitsBar.js.map +1 -1
- package/dist/react/core/inputs/NumberInput.js.map +1 -1
- package/dist/react/core/inputs/PinInput.js.map +1 -1
- package/dist/react/core/inputs/Select.js.map +1 -1
- package/dist/react/core/inputs/Toggle.js.map +1 -1
- package/dist/react/core/layout/Box.js.map +1 -1
- package/dist/react/core/layout/Center.js.map +1 -1
- package/dist/react/core/layout/Divider.js.map +1 -1
- package/dist/react/core/layout/Flex.js.map +1 -1
- package/dist/react/core/layout/Grid.js.map +1 -1
- package/dist/react/core/layout/Spacer.js.map +1 -1
- package/dist/react/core/layout/Stack.js.map +1 -1
- package/dist/react/core/layout/responsive.js.map +1 -1
- package/dist/react/core/layout/useBreakpoint.js.map +1 -1
- package/dist/react/core/navigation/AppBar.js.map +1 -1
- package/dist/react/core/navigation/Pagination.js.map +1 -1
- package/dist/react/core/navigation/SideNav.js.map +1 -1
- package/dist/react/core/navigation/Tabs.js.map +1 -1
- package/dist/react/core/overlays/Popover.js.map +1 -1
- package/dist/react/core/overlays/SidePanel.js.map +1 -1
- package/dist/react/core/overlays/Tooltip.js.map +1 -1
- package/dist/react/core/widgets/ActivityPlanner.js.map +1 -1
- package/dist/react/core/widgets/Capture.js.map +1 -1
- package/dist/react/core/widgets/ChatPanel.js.map +1 -1
- package/dist/react/core/widgets/ColorPickerPanel.js.map +1 -1
- package/dist/react/core/widgets/CommandBuilder.js.map +1 -1
- package/dist/react/core/widgets/ConnectionForm.js.map +1 -1
- package/dist/react/core/widgets/FileExplorer.js.map +1 -1
- package/dist/react/core/widgets/HexViewer.js.map +1 -1
- package/dist/react/core/widgets/ImageFrame.js.map +1 -1
- package/dist/react/core/widgets/ImageGallery.js.map +1 -1
- package/dist/react/core/widgets/ImagePanel.js.map +1 -1
- package/dist/react/core/widgets/LogViewer.js.map +1 -1
- package/dist/react/core/widgets/MessageStream.js.map +1 -1
- package/dist/react/core/widgets/MissionCalendar.js.map +1 -1
- package/dist/react/core/widgets/PacketViewer.js.map +1 -1
- package/dist/react/hooks/useCompactMode.js.map +1 -1
- package/dist/react/hooks/useSimulationScene.js.map +1 -1
- package/dist/react/panels/LayerControlPanel.js.map +1 -1
- package/dist/react/panels/ObjectInventoryPanel.js.map +1 -1
- package/dist/react/shared/ErrorBoundary.js.map +1 -1
- package/dist/react/shared/Skeleton.js.map +1 -1
- package/dist/react/theme/ThemeProvider.js +2 -1
- package/dist/react/theme/ThemeProvider.js.map +1 -1
- package/dist/react/theme/cardAccent.js.map +1 -1
- package/dist/react/theme/config.js.map +1 -1
- package/dist/react/theme/types.js.map +1 -1
- package/dist/react/types.js.map +1 -1
- package/dist/react/utils/categoryPalette.js.map +1 -1
- package/dist/react/utils/index.js.map +1 -1
- package/dist/style.css +216 -216
- package/dist/tokens/core.js.map +1 -1
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/palettes/astro.js.map +1 -1
- package/dist/tokens/palettes/index.js.map +1 -1
- package/dist/tokens/palettes/tailwind.js.map +1 -1
- package/dist/tokens/palettes/zendir.js.map +1 -1
- package/dist/tokens/themes.js.map +1 -1
- package/dist/tokens/tokens.css +533 -533
- package/package.json +1 -1
package/dist/style.css
CHANGED
|
@@ -1,217 +1,217 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Zendir UI — Leaflet theme (hybrid / purple-hue)
|
|
3
|
-
* Use with GroundTrackMap when mapProvider="leaflet".
|
|
4
|
-
* Keeps map controls on-brand and minimizes third-party branding on the frontend.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/* Container: match SDK background and radius. Inherit the active theme
|
|
8
|
-
* font (set by <ThemeProvider />) instead of hard-coding Roboto, so
|
|
9
|
-
* Leaflet text stays consistent with the rest of the app. */
|
|
10
|
-
.zendir-ground-track-map .leaflet-container {
|
|
11
|
-
background: #0f1520;
|
|
12
|
-
font-family: var(
|
|
13
|
-
--font-family-primary,
|
|
14
|
-
"Public Sans",
|
|
15
|
-
"Roboto",
|
|
16
|
-
-apple-system,
|
|
17
|
-
BlinkMacSystemFont,
|
|
18
|
-
"Segoe UI",
|
|
19
|
-
sans-serif
|
|
20
|
-
);
|
|
21
|
-
cursor: grab;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/* Zoom controls: visible and above overlays so scroll/zoom work */
|
|
25
|
-
.zendir-ground-track-map .leaflet-control-zoom {
|
|
26
|
-
z-index: 1000 !important;
|
|
27
|
-
border: 1px solid rgba(157, 112, 255, 0.35) !important;
|
|
28
|
-
border-radius: 8px;
|
|
29
|
-
overflow: hidden;
|
|
30
|
-
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.4);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.zendir-ground-track-map .leaflet-control-zoom a,
|
|
34
|
-
.zendir-ground-track-map .leaflet-control-zoom a:hover {
|
|
35
|
-
background: #181d2e !important;
|
|
36
|
-
color: #e4e0f0 !important;
|
|
37
|
-
width: 36px !important;
|
|
38
|
-
height: 36px !important;
|
|
39
|
-
line-height: 36px !important;
|
|
40
|
-
font-size: 20px !important;
|
|
41
|
-
font-weight: bold !important;
|
|
42
|
-
border: none !important;
|
|
43
|
-
cursor: pointer !important;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.zendir-ground-track-map .leaflet-control-zoom a:hover {
|
|
47
|
-
background: rgba(157, 112, 255, 0.15) !important;
|
|
48
|
-
color: #b794ff !important;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.zendir-ground-track-map .leaflet-control-zoom-in {
|
|
52
|
-
border-bottom: 1px solid rgba(157, 112, 255, 0.15) !important;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/* Attribution: minimal, no Leaflet branding on frontend */
|
|
56
|
-
.zendir-ground-track-map .leaflet-control-attribution {
|
|
57
|
-
background: rgba(15, 21, 32, 0.85) !important;
|
|
58
|
-
color: rgba(148, 163, 184, 0.7) !important;
|
|
59
|
-
font-size: 10px !important;
|
|
60
|
-
padding: 2px 6px !important;
|
|
61
|
-
border-radius: 4px 0 0 0;
|
|
62
|
-
border: none;
|
|
63
|
-
margin: 0 !important;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/* Hide "Leaflet" link in attribution so only tile provider is shown */
|
|
67
|
-
.zendir-ground-track-map .leaflet-control-attribution a[href*="leaflet"] {
|
|
68
|
-
display: none !important;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.zendir-ground-track-map .leaflet-control-attribution a {
|
|
72
|
-
color: rgba(157, 112, 255, 0.8) !important;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
.zendir-ground-track-map .leaflet-control-attribution a:hover {
|
|
76
|
-
color: #b794ff !important;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/* Popup / tooltip styling */
|
|
80
|
-
.zendir-ground-track-map .leaflet-popup-content-wrapper {
|
|
81
|
-
background: #181d2e;
|
|
82
|
-
border: 1px solid rgba(157, 112, 255, 0.2);
|
|
83
|
-
border-radius: 8px;
|
|
84
|
-
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.zendir-ground-track-map .leaflet-popup-tip {
|
|
88
|
-
background: #181d2e;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
.zendir-ground-track-map .leaflet-popup-content {
|
|
92
|
-
margin: 8px 12px;
|
|
93
|
-
color: #e4e0f0;
|
|
94
|
-
font-size: 12px;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/* Ensure map is interactive (scroll zoom, drag) */
|
|
98
|
-
.zendir-ground-track-map-leaflet .leaflet-container {
|
|
99
|
-
touch-action: none;
|
|
100
|
-
}
|
|
101
|
-
.zendir-ground-track-map .leaflet-pane,
|
|
102
|
-
.zendir-ground-track-map .leaflet-tile-pane {
|
|
103
|
-
pointer-events: auto;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/* Dragging cursor */
|
|
107
|
-
.zendir-ground-track-map .leaflet-grab {
|
|
108
|
-
cursor: grab;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.zendir-ground-track-map .leaflet-dragging .leaflet-grab {
|
|
112
|
-
cursor: grabbing;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/* ── Custom SVG div icons ──────────────────────────────────────────────────── */
|
|
116
|
-
.zendir-sat-icon,
|
|
117
|
-
.zendir-station-icon {
|
|
118
|
-
background: none !important;
|
|
119
|
-
border: none !important;
|
|
120
|
-
/* Let the inline SVG size itself naturally */
|
|
121
|
-
overflow: visible;
|
|
122
|
-
pointer-events: auto;
|
|
123
|
-
cursor: pointer;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
.zendir-sat-icon:hover svg,
|
|
127
|
-
.zendir-station-icon:hover svg {
|
|
128
|
-
filter: drop-shadow(0 0 6px currentColor);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/* Leaflet default icon reset (avoid blue pin override) */
|
|
132
|
-
.zendir-sat-icon img,
|
|
133
|
-
.zendir-station-icon img {
|
|
134
|
-
display: none !important;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/* Tooltip (rich HTML) */
|
|
138
|
-
.zendir-leaflet-tooltip {
|
|
139
|
-
background: rgba(13, 19, 35, 0.95) !important;
|
|
140
|
-
border: 1px solid rgba(157, 112, 255, 0.35) !important;
|
|
141
|
-
border-radius: 6px !important;
|
|
142
|
-
color: #e4e0f0 !important;
|
|
143
|
-
font-size: 11px !important;
|
|
144
|
-
font-family: var(
|
|
145
|
-
--font-family-primary,
|
|
146
|
-
"Public Sans",
|
|
147
|
-
"Roboto",
|
|
148
|
-
"Inter",
|
|
149
|
-
system-ui,
|
|
150
|
-
sans-serif
|
|
151
|
-
) !important;
|
|
152
|
-
padding: 5px 9px !important;
|
|
153
|
-
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.45) !important;
|
|
154
|
-
white-space: nowrap;
|
|
155
|
-
pointer-events: none;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
.zendir-leaflet-tooltip::before {
|
|
159
|
-
border-top-color: rgba(157, 112, 255, 0.35) !important;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/* ── Pin icons ──────────────────────────────────────────────────────────────── */
|
|
163
|
-
.zendir-pin-icon {
|
|
164
|
-
background: none !important;
|
|
165
|
-
border: none !important;
|
|
166
|
-
overflow: visible;
|
|
167
|
-
pointer-events: auto;
|
|
168
|
-
cursor: pointer;
|
|
169
|
-
transition: transform 200ms cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
.zendir-pin-icon:hover {
|
|
173
|
-
transform: scale(1.15) translateY(-2px);
|
|
174
|
-
z-index: 1000 !important;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
.zendir-pin-icon img {
|
|
178
|
-
display: none !important;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/* Pin tooltip */
|
|
182
|
-
.zendir-pin-tooltip {
|
|
183
|
-
background: rgba(13, 19, 35, 0.95) !important;
|
|
184
|
-
border: 1px solid rgba(157, 112, 255, 0.35) !important;
|
|
185
|
-
border-radius: 6px !important;
|
|
186
|
-
color: #e4e0f0 !important;
|
|
187
|
-
font-size: 11px !important;
|
|
188
|
-
font-family: var(
|
|
189
|
-
--font-family-primary,
|
|
190
|
-
"Public Sans",
|
|
191
|
-
"Roboto",
|
|
192
|
-
"Inter",
|
|
193
|
-
system-ui,
|
|
194
|
-
sans-serif
|
|
195
|
-
) !important;
|
|
196
|
-
padding: 5px 9px !important;
|
|
197
|
-
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.45) !important;
|
|
198
|
-
pointer-events: none;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
.zendir-pin-tooltip::before {
|
|
202
|
-
border-top-color: rgba(157, 112, 255, 0.35) !important;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/* Crosshair cursor when pins are editable (click-to-add mode) */
|
|
206
|
-
.zendir-pins-editable .leaflet-container {
|
|
207
|
-
cursor: crosshair;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
.zendir-pins-editable .leaflet-marker-icon {
|
|
211
|
-
cursor: grab;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
.zendir-pins-editable .leaflet-dragging .leaflet-marker-icon {
|
|
215
|
-
cursor: grabbing;
|
|
216
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Zendir UI — Leaflet theme (hybrid / purple-hue)
|
|
3
|
+
* Use with GroundTrackMap when mapProvider="leaflet".
|
|
4
|
+
* Keeps map controls on-brand and minimizes third-party branding on the frontend.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* Container: match SDK background and radius. Inherit the active theme
|
|
8
|
+
* font (set by <ThemeProvider />) instead of hard-coding Roboto, so
|
|
9
|
+
* Leaflet text stays consistent with the rest of the app. */
|
|
10
|
+
.zendir-ground-track-map .leaflet-container {
|
|
11
|
+
background: #0f1520;
|
|
12
|
+
font-family: var(
|
|
13
|
+
--font-family-primary,
|
|
14
|
+
"Public Sans",
|
|
15
|
+
"Roboto",
|
|
16
|
+
-apple-system,
|
|
17
|
+
BlinkMacSystemFont,
|
|
18
|
+
"Segoe UI",
|
|
19
|
+
sans-serif
|
|
20
|
+
);
|
|
21
|
+
cursor: grab;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* Zoom controls: visible and above overlays so scroll/zoom work */
|
|
25
|
+
.zendir-ground-track-map .leaflet-control-zoom {
|
|
26
|
+
z-index: 1000 !important;
|
|
27
|
+
border: 1px solid rgba(157, 112, 255, 0.35) !important;
|
|
28
|
+
border-radius: 8px;
|
|
29
|
+
overflow: hidden;
|
|
30
|
+
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.4);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.zendir-ground-track-map .leaflet-control-zoom a,
|
|
34
|
+
.zendir-ground-track-map .leaflet-control-zoom a:hover {
|
|
35
|
+
background: #181d2e !important;
|
|
36
|
+
color: #e4e0f0 !important;
|
|
37
|
+
width: 36px !important;
|
|
38
|
+
height: 36px !important;
|
|
39
|
+
line-height: 36px !important;
|
|
40
|
+
font-size: 20px !important;
|
|
41
|
+
font-weight: bold !important;
|
|
42
|
+
border: none !important;
|
|
43
|
+
cursor: pointer !important;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.zendir-ground-track-map .leaflet-control-zoom a:hover {
|
|
47
|
+
background: rgba(157, 112, 255, 0.15) !important;
|
|
48
|
+
color: #b794ff !important;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.zendir-ground-track-map .leaflet-control-zoom-in {
|
|
52
|
+
border-bottom: 1px solid rgba(157, 112, 255, 0.15) !important;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* Attribution: minimal, no Leaflet branding on frontend */
|
|
56
|
+
.zendir-ground-track-map .leaflet-control-attribution {
|
|
57
|
+
background: rgba(15, 21, 32, 0.85) !important;
|
|
58
|
+
color: rgba(148, 163, 184, 0.7) !important;
|
|
59
|
+
font-size: 10px !important;
|
|
60
|
+
padding: 2px 6px !important;
|
|
61
|
+
border-radius: 4px 0 0 0;
|
|
62
|
+
border: none;
|
|
63
|
+
margin: 0 !important;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* Hide "Leaflet" link in attribution so only tile provider is shown */
|
|
67
|
+
.zendir-ground-track-map .leaflet-control-attribution a[href*="leaflet"] {
|
|
68
|
+
display: none !important;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.zendir-ground-track-map .leaflet-control-attribution a {
|
|
72
|
+
color: rgba(157, 112, 255, 0.8) !important;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.zendir-ground-track-map .leaflet-control-attribution a:hover {
|
|
76
|
+
color: #b794ff !important;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* Popup / tooltip styling */
|
|
80
|
+
.zendir-ground-track-map .leaflet-popup-content-wrapper {
|
|
81
|
+
background: #181d2e;
|
|
82
|
+
border: 1px solid rgba(157, 112, 255, 0.2);
|
|
83
|
+
border-radius: 8px;
|
|
84
|
+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.zendir-ground-track-map .leaflet-popup-tip {
|
|
88
|
+
background: #181d2e;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.zendir-ground-track-map .leaflet-popup-content {
|
|
92
|
+
margin: 8px 12px;
|
|
93
|
+
color: #e4e0f0;
|
|
94
|
+
font-size: 12px;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/* Ensure map is interactive (scroll zoom, drag) */
|
|
98
|
+
.zendir-ground-track-map-leaflet .leaflet-container {
|
|
99
|
+
touch-action: none;
|
|
100
|
+
}
|
|
101
|
+
.zendir-ground-track-map .leaflet-pane,
|
|
102
|
+
.zendir-ground-track-map .leaflet-tile-pane {
|
|
103
|
+
pointer-events: auto;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* Dragging cursor */
|
|
107
|
+
.zendir-ground-track-map .leaflet-grab {
|
|
108
|
+
cursor: grab;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.zendir-ground-track-map .leaflet-dragging .leaflet-grab {
|
|
112
|
+
cursor: grabbing;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* ── Custom SVG div icons ──────────────────────────────────────────────────── */
|
|
116
|
+
.zendir-sat-icon,
|
|
117
|
+
.zendir-station-icon {
|
|
118
|
+
background: none !important;
|
|
119
|
+
border: none !important;
|
|
120
|
+
/* Let the inline SVG size itself naturally */
|
|
121
|
+
overflow: visible;
|
|
122
|
+
pointer-events: auto;
|
|
123
|
+
cursor: pointer;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.zendir-sat-icon:hover svg,
|
|
127
|
+
.zendir-station-icon:hover svg {
|
|
128
|
+
filter: drop-shadow(0 0 6px currentColor);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/* Leaflet default icon reset (avoid blue pin override) */
|
|
132
|
+
.zendir-sat-icon img,
|
|
133
|
+
.zendir-station-icon img {
|
|
134
|
+
display: none !important;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/* Tooltip (rich HTML) */
|
|
138
|
+
.zendir-leaflet-tooltip {
|
|
139
|
+
background: rgba(13, 19, 35, 0.95) !important;
|
|
140
|
+
border: 1px solid rgba(157, 112, 255, 0.35) !important;
|
|
141
|
+
border-radius: 6px !important;
|
|
142
|
+
color: #e4e0f0 !important;
|
|
143
|
+
font-size: 11px !important;
|
|
144
|
+
font-family: var(
|
|
145
|
+
--font-family-primary,
|
|
146
|
+
"Public Sans",
|
|
147
|
+
"Roboto",
|
|
148
|
+
"Inter",
|
|
149
|
+
system-ui,
|
|
150
|
+
sans-serif
|
|
151
|
+
) !important;
|
|
152
|
+
padding: 5px 9px !important;
|
|
153
|
+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.45) !important;
|
|
154
|
+
white-space: nowrap;
|
|
155
|
+
pointer-events: none;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.zendir-leaflet-tooltip::before {
|
|
159
|
+
border-top-color: rgba(157, 112, 255, 0.35) !important;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/* ── Pin icons ──────────────────────────────────────────────────────────────── */
|
|
163
|
+
.zendir-pin-icon {
|
|
164
|
+
background: none !important;
|
|
165
|
+
border: none !important;
|
|
166
|
+
overflow: visible;
|
|
167
|
+
pointer-events: auto;
|
|
168
|
+
cursor: pointer;
|
|
169
|
+
transition: transform 200ms cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.zendir-pin-icon:hover {
|
|
173
|
+
transform: scale(1.15) translateY(-2px);
|
|
174
|
+
z-index: 1000 !important;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.zendir-pin-icon img {
|
|
178
|
+
display: none !important;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/* Pin tooltip */
|
|
182
|
+
.zendir-pin-tooltip {
|
|
183
|
+
background: rgba(13, 19, 35, 0.95) !important;
|
|
184
|
+
border: 1px solid rgba(157, 112, 255, 0.35) !important;
|
|
185
|
+
border-radius: 6px !important;
|
|
186
|
+
color: #e4e0f0 !important;
|
|
187
|
+
font-size: 11px !important;
|
|
188
|
+
font-family: var(
|
|
189
|
+
--font-family-primary,
|
|
190
|
+
"Public Sans",
|
|
191
|
+
"Roboto",
|
|
192
|
+
"Inter",
|
|
193
|
+
system-ui,
|
|
194
|
+
sans-serif
|
|
195
|
+
) !important;
|
|
196
|
+
padding: 5px 9px !important;
|
|
197
|
+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.45) !important;
|
|
198
|
+
pointer-events: none;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.zendir-pin-tooltip::before {
|
|
202
|
+
border-top-color: rgba(157, 112, 255, 0.35) !important;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/* Crosshair cursor when pins are editable (click-to-add mode) */
|
|
206
|
+
.zendir-pins-editable .leaflet-container {
|
|
207
|
+
cursor: crosshair;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.zendir-pins-editable .leaflet-marker-icon {
|
|
211
|
+
cursor: grab;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.zendir-pins-editable .leaflet-dragging .leaflet-marker-icon {
|
|
215
|
+
cursor: grabbing;
|
|
216
|
+
}
|
|
217
217
|
/*$vite$:1*/
|
package/dist/tokens/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","names":[],"sources":["../../src/tokens/core.ts"],"sourcesContent":["/**\n * @zendir/ui - Design Tokens (core scalars)\n *\n * Exportable design tokens for use in CSS and JavaScript.\n * Based on Astro UX Design System.\n *\n * These are the shared scalar primitives (spacing, radius, typography,\n * shadows, animation) plus the base color reference table. Status colors\n * are sourced from the Astro UXDS ramps in tokens/palettes so there is a\n * single source of truth for severity values across the whole system.\n */\n\nimport {\n astroStatus,\n astroStatusLightFill,\n astroStatusLightBorder,\n} from \"./palettes/astro\";\n\nexport const colors = {\n // Status colors — sourced from the Astro UXDS ramps in tokens/palettes.\n status: { ...astroStatus },\n statusLightFill: { ...astroStatusLightFill },\n statusLightBorder: { ...astroStatusLightBorder },\n\n // Background Colors\n background: {\n dark: {\n base: \"#101923\",\n surface: \"#1b2d3e\",\n elevated: \"#243647\",\n overlay: \"rgba(0, 0, 0, 0.7)\",\n },\n light: {\n base: \"#f5f6f9\",\n surface: \"#ffffff\",\n elevated: \"#ffffff\",\n overlay: \"rgba(0, 0, 0, 0.5)\",\n },\n },\n\n // Text Colors\n text: {\n dark: {\n primary: \"#ffffff\",\n secondary: \"#9ea7ad\",\n tertiary: \"#6b7175\",\n muted: \"#52595f\",\n },\n light: {\n primary: \"#1b2d3e\",\n secondary: \"#4c5a67\",\n tertiary: \"#7a8891\",\n muted: \"#a4adb5\",\n },\n },\n\n // Accent Colors\n accent: {\n primary: \"#4dacff\",\n secondary: \"#3d8ddb\",\n tertiary: \"#2e6eb3\",\n },\n\n // Border Colors\n border: {\n dark: {\n default: \"#3c4b5a\",\n muted: \"#2b3d4e\",\n focus: \"#4dacff\",\n },\n light: {\n default: \"#c4c8cc\",\n muted: \"#e1e4e8\",\n focus: \"#4dacff\",\n },\n },\n} as const;\n\nexport const spacing = {\n xs: \"4px\",\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\",\n xxl: \"48px\",\n} as const;\n\nexport const borderRadius = {\n none: \"0\",\n sm: \"2px\",\n md: \"4px\",\n lg: \"8px\",\n xl: \"16px\",\n full: \"9999px\",\n} as const;\n\n/**\n * Typography tokens following AstroUXDS Design System\n * @see https://www.astrouxds.com/foundations/typography/\n *\n * Font weights per Astro spec: 300 (Light), 400 (Regular), 500 (Medium), 700 (Bold)\n * Note: Astro does NOT use 600 (semibold) - use 500 (medium) or 700 (bold) instead\n */\nexport const typography = {\n fontFamily: {\n /** Heading font: Sora (Zendir Brand Standard) */\n heading:\n '\"Sora\", \"Roboto\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Helvetica Neue\", Arial, sans-serif',\n /** Primary font: Public Sans (Zendir Brand Standard) */\n primary:\n '\"Public Sans\", \"Roboto\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Helvetica Neue\", Arial, sans-serif',\n /** Monospace font: Roboto Mono for data/code */\n mono: '\"Roboto Mono\", \"SF Mono\", \"Consolas\", \"Liberation Mono\", monospace',\n },\n fontSize: {\n // Compact sizes for dense UIs (cards, badges, data labels)\n micro: \"0.5625rem\", // 9px - very tight spaces\n xxs: \"0.625rem\", // 10px - compact labels\n // Standard sizes\n xs: \"0.75rem\", // 12px - small text, body3\n sm: \"0.875rem\", // 14px - body2\n base: \"1rem\", // 16px - body1\n md: \"1.125rem\", // 18px - h5/h6\n lg: \"1.25rem\", // 20px - h3/h4\n xl: \"1.5rem\", // 24px - h2\n xxl: \"2.125rem\", // 34px - h1\n xxxl: \"3rem\", // 48px - display2\n display: \"3.75rem\", // 60px - display1\n },\n /**\n * Font weights per AstroUXDS specification\n * Only 300, 400, 500, 700 are officially supported\n */\n fontWeight: {\n light: 300,\n normal: 400,\n regular: 400, // Alias for normal\n medium: 500,\n bold: 700,\n // DEPRECATED: semibold is not in Astro spec, use medium (500) instead\n /** @deprecated Use medium (500) instead - Astro spec only supports 300, 400, 500, 700 */\n semibold: 500,\n },\n lineHeight: {\n tight: 1.25,\n normal: 1.5,\n relaxed: 1.75,\n },\n} as const;\n\nexport const shadows = {\n none: \"none\",\n sm: \"0 1px 2px rgba(0, 0, 0, 0.3)\",\n md: \"0 2px 8px rgba(0, 0, 0, 0.3)\",\n lg: \"0 4px 16px rgba(0, 0, 0, 0.3)\",\n xl: \"0 8px 32px rgba(0, 0, 0, 0.4)\",\n glow: \"0 0 20px rgba(77, 172, 255, 0.4)\",\n} as const;\n\nexport const animation = {\n fast: \"150ms ease\",\n normal: \"250ms ease\",\n slow: \"400ms ease\",\n} as const;\n"],"mappings":";;;;;;;;;;;;;AAkBA,IAAa,SAAS;CAEpB,QAAQ,EAAE,GAAG,YAAY;CACzB,iBAAiB,EAAE,GAAG,qBAAqB;CAC3C,mBAAmB,EAAE,GAAG,uBAAuB;CAG/C,YAAY;EACV,MAAM;GACJ,MAAM;GACN,SAAS;GACT,UAAU;GACV,SAAS;EACX;EACA,OAAO;GACL,MAAM;GACN,SAAS;GACT,UAAU;GACV,SAAS;EACX;CACF;CAGA,MAAM;EACJ,MAAM;GACJ,SAAS;GACT,WAAW;GACX,UAAU;GACV,OAAO;EACT;EACA,OAAO;GACL,SAAS;GACT,WAAW;GACX,UAAU;GACV,OAAO;EACT;CACF;CAGA,QAAQ;EACN,SAAS;EACT,WAAW;EACX,UAAU;CACZ;CAGA,QAAQ;EACN,MAAM;GACJ,SAAS;GACT,OAAO;GACP,OAAO;EACT;EACA,OAAO;GACL,SAAS;GACT,OAAO;GACP,OAAO;EACT;CACF;AACF;AAEA,IAAa,UAAU;CACrB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,KAAK;AACP;AAEA,IAAa,eAAe;CAC1B,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;;;;;;;;AASA,IAAa,aAAa;CACxB,YAAY;;EAEV,SACE;;EAEF,SACE;;EAEF,MAAM;CACR;CACA,UAAU;EAER,OAAO;EACP,KAAK;EAEL,IAAI;EACJ,IAAI;EACJ,MAAM;EACN,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,KAAK;EACL,MAAM;EACN,SAAS;CACX;;;;;CAKA,YAAY;EACV,OAAO;EACP,QAAQ;EACR,SAAS;EACT,QAAQ;EACR,MAAM;;EAGN,UAAU;CACZ;CACA,YAAY;EACV,OAAO;EACP,QAAQ;EACR,SAAS;CACX;AACF;AAEA,IAAa,UAAU;CACrB,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,IAAa,YAAY;CACvB,MAAM;CACN,QAAQ;CACR,MAAM;AACR"}
|
|
1
|
+
{"version":3,"file":"core.js","names":[],"sources":["../../src/tokens/core.ts"],"sourcesContent":["/**\r\n * @zendir/ui - Design Tokens (core scalars)\r\n *\r\n * Exportable design tokens for use in CSS and JavaScript.\r\n * Based on Astro UX Design System.\r\n *\r\n * These are the shared scalar primitives (spacing, radius, typography,\r\n * shadows, animation) plus the base color reference table. Status colors\r\n * are sourced from the Astro UXDS ramps in tokens/palettes so there is a\r\n * single source of truth for severity values across the whole system.\r\n */\r\n\r\nimport {\r\n astroStatus,\r\n astroStatusLightFill,\r\n astroStatusLightBorder,\r\n} from \"./palettes/astro\";\r\n\r\nexport const colors = {\r\n // Status colors — sourced from the Astro UXDS ramps in tokens/palettes.\r\n status: { ...astroStatus },\r\n statusLightFill: { ...astroStatusLightFill },\r\n statusLightBorder: { ...astroStatusLightBorder },\r\n\r\n // Background Colors\r\n background: {\r\n dark: {\r\n base: \"#101923\",\r\n surface: \"#1b2d3e\",\r\n elevated: \"#243647\",\r\n overlay: \"rgba(0, 0, 0, 0.7)\",\r\n },\r\n light: {\r\n base: \"#f5f6f9\",\r\n surface: \"#ffffff\",\r\n elevated: \"#ffffff\",\r\n overlay: \"rgba(0, 0, 0, 0.5)\",\r\n },\r\n },\r\n\r\n // Text Colors\r\n text: {\r\n dark: {\r\n primary: \"#ffffff\",\r\n secondary: \"#9ea7ad\",\r\n tertiary: \"#6b7175\",\r\n muted: \"#52595f\",\r\n },\r\n light: {\r\n primary: \"#1b2d3e\",\r\n secondary: \"#4c5a67\",\r\n tertiary: \"#7a8891\",\r\n muted: \"#a4adb5\",\r\n },\r\n },\r\n\r\n // Accent Colors\r\n accent: {\r\n primary: \"#4dacff\",\r\n secondary: \"#3d8ddb\",\r\n tertiary: \"#2e6eb3\",\r\n },\r\n\r\n // Border Colors\r\n border: {\r\n dark: {\r\n default: \"#3c4b5a\",\r\n muted: \"#2b3d4e\",\r\n focus: \"#4dacff\",\r\n },\r\n light: {\r\n default: \"#c4c8cc\",\r\n muted: \"#e1e4e8\",\r\n focus: \"#4dacff\",\r\n },\r\n },\r\n} as const;\r\n\r\nexport const spacing = {\r\n xs: \"4px\",\r\n sm: \"8px\",\r\n md: \"16px\",\r\n lg: \"24px\",\r\n xl: \"32px\",\r\n xxl: \"48px\",\r\n} as const;\r\n\r\nexport const borderRadius = {\r\n none: \"0\",\r\n sm: \"2px\",\r\n md: \"4px\",\r\n lg: \"8px\",\r\n xl: \"16px\",\r\n full: \"9999px\",\r\n} as const;\r\n\r\n/**\r\n * Typography tokens following AstroUXDS Design System\r\n * @see https://www.astrouxds.com/foundations/typography/\r\n *\r\n * Font weights per Astro spec: 300 (Light), 400 (Regular), 500 (Medium), 700 (Bold)\r\n * Note: Astro does NOT use 600 (semibold) - use 500 (medium) or 700 (bold) instead\r\n */\r\nexport const typography = {\r\n fontFamily: {\r\n /** Heading font: Sora (Zendir Brand Standard) */\r\n heading:\r\n '\"Sora\", \"Roboto\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Helvetica Neue\", Arial, sans-serif',\r\n /** Primary font: Public Sans (Zendir Brand Standard) */\r\n primary:\r\n '\"Public Sans\", \"Roboto\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Helvetica Neue\", Arial, sans-serif',\r\n /** Monospace font: Roboto Mono for data/code */\r\n mono: '\"Roboto Mono\", \"SF Mono\", \"Consolas\", \"Liberation Mono\", monospace',\r\n },\r\n fontSize: {\r\n // Compact sizes for dense UIs (cards, badges, data labels)\r\n micro: \"0.5625rem\", // 9px - very tight spaces\r\n xxs: \"0.625rem\", // 10px - compact labels\r\n // Standard sizes\r\n xs: \"0.75rem\", // 12px - small text, body3\r\n sm: \"0.875rem\", // 14px - body2\r\n base: \"1rem\", // 16px - body1\r\n md: \"1.125rem\", // 18px - h5/h6\r\n lg: \"1.25rem\", // 20px - h3/h4\r\n xl: \"1.5rem\", // 24px - h2\r\n xxl: \"2.125rem\", // 34px - h1\r\n xxxl: \"3rem\", // 48px - display2\r\n display: \"3.75rem\", // 60px - display1\r\n },\r\n /**\r\n * Font weights per AstroUXDS specification\r\n * Only 300, 400, 500, 700 are officially supported\r\n */\r\n fontWeight: {\r\n light: 300,\r\n normal: 400,\r\n regular: 400, // Alias for normal\r\n medium: 500,\r\n bold: 700,\r\n // DEPRECATED: semibold is not in Astro spec, use medium (500) instead\r\n /** @deprecated Use medium (500) instead - Astro spec only supports 300, 400, 500, 700 */\r\n semibold: 500,\r\n },\r\n lineHeight: {\r\n tight: 1.25,\r\n normal: 1.5,\r\n relaxed: 1.75,\r\n },\r\n} as const;\r\n\r\nexport const shadows = {\r\n none: \"none\",\r\n sm: \"0 1px 2px rgba(0, 0, 0, 0.3)\",\r\n md: \"0 2px 8px rgba(0, 0, 0, 0.3)\",\r\n lg: \"0 4px 16px rgba(0, 0, 0, 0.3)\",\r\n xl: \"0 8px 32px rgba(0, 0, 0, 0.4)\",\r\n glow: \"0 0 20px rgba(77, 172, 255, 0.4)\",\r\n} as const;\r\n\r\nexport const animation = {\r\n fast: \"150ms ease\",\r\n normal: \"250ms ease\",\r\n slow: \"400ms ease\",\r\n} as const;\r\n"],"mappings":";;;;;;;;;;;;;AAkBA,IAAa,SAAS;CAEpB,QAAQ,EAAE,GAAG,YAAY;CACzB,iBAAiB,EAAE,GAAG,qBAAqB;CAC3C,mBAAmB,EAAE,GAAG,uBAAuB;CAG/C,YAAY;EACV,MAAM;GACJ,MAAM;GACN,SAAS;GACT,UAAU;GACV,SAAS;EACX;EACA,OAAO;GACL,MAAM;GACN,SAAS;GACT,UAAU;GACV,SAAS;EACX;CACF;CAGA,MAAM;EACJ,MAAM;GACJ,SAAS;GACT,WAAW;GACX,UAAU;GACV,OAAO;EACT;EACA,OAAO;GACL,SAAS;GACT,WAAW;GACX,UAAU;GACV,OAAO;EACT;CACF;CAGA,QAAQ;EACN,SAAS;EACT,WAAW;EACX,UAAU;CACZ;CAGA,QAAQ;EACN,MAAM;GACJ,SAAS;GACT,OAAO;GACP,OAAO;EACT;EACA,OAAO;GACL,SAAS;GACT,OAAO;GACP,OAAO;EACT;CACF;AACF;AAEA,IAAa,UAAU;CACrB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,KAAK;AACP;AAEA,IAAa,eAAe;CAC1B,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;;;;;;;;AASA,IAAa,aAAa;CACxB,YAAY;;EAEV,SACE;;EAEF,SACE;;EAEF,MAAM;CACR;CACA,UAAU;EAER,OAAO;EACP,KAAK;EAEL,IAAI;EACJ,IAAI;EACJ,MAAM;EACN,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,KAAK;EACL,MAAM;EACN,SAAS;CACX;;;;;CAKA,YAAY;EACV,OAAO;EACP,QAAQ;EACR,SAAS;EACT,QAAQ;EACR,MAAM;;EAGN,UAAU;CACZ;CACA,YAAY;EACV,OAAO;EACP,QAAQ;EACR,SAAS;CACX;AACF;AAEA,IAAa,UAAU;CACrB,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,IAAa,YAAY;CACvB,MAAM;CACN,QAAQ;CACR,MAAM;AACR"}
|
package/dist/tokens/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/tokens/index.ts"],"sourcesContent":["export * from \"./core\";\nexport * from \"./palettes\";\nimport {\n colors,\n spacing,\n borderRadius,\n typography,\n shadows,\n animation,\n} from \"./core\";\nimport * as zendirPalette from \"./palettes/zendir\";\nimport * as astroPalette from \"./palettes/astro\";\nimport { tailwindScales } from \"./palettes/tailwind\";\nimport type { ThemeTokensBase } from \"../react/theme/types\";\nimport {\n astroThemeDark,\n astroThemeLight,\n hybridTheme,\n purpleHueTheme,\n nebulaTheme,\n transparentTheme,\n transparentMinimalTheme,\n} from \"./themes\";\n\n// ============================================================================\n// CSS Custom Properties generator (reference / programmatic use)\n//\n// NOTE: src/tokens/tokens.css is hand-maintained (see its header) — the build\n// does NOT overwrite it from here. These generators remain available for\n// consumers that want to emit the same variable set programmatically (SSR\n// style injection, tooling) and as the canonical reference for what\n// tokens.css should contain.\n//\n// Two callable surfaces:\n// • generateCSSVariables(mode) — single :root block for one mode\n// (legacy, kept for backward-compat)\n// • generateCSSStylesheet() — full tokens.css equivalent with\n// mode-invariant block + per-theme\n// [data-theme=\"…\"] overrides. This is\n// what scripts/build-tokens.ts uses.\n// ============================================================================\n\n/**\n * Build a CSS rule body for the mode-invariant tokens (status, spacing,\n * radius, typography, shadows, animation). These don't change between\n * light/dark or across themes — they're shared.\n */\nfunction buildInvariantBlock(): string {\n return [\n \" /* ============================================================\",\n \" * STATUS COLORS (Astro UX Compliant)\",\n \" * ============================================================ */\",\n ` --zendir-status-critical: ${colors.status.critical};`,\n ` --zendir-status-serious: ${colors.status.serious};`,\n ` --zendir-status-caution: ${colors.status.caution};`,\n ` --zendir-status-normal: ${colors.status.normal};`,\n ` --zendir-status-standby: ${colors.status.standby};`,\n ` --zendir-status-off: ${colors.status.off};`,\n \"\",\n \" /* Light-theme status fill colors */\",\n ` --zendir-status-critical-light: ${colors.statusLightFill.critical};`,\n ` --zendir-status-serious-light: ${colors.statusLightFill.serious};`,\n ` --zendir-status-caution-light: ${colors.statusLightFill.caution};`,\n ` --zendir-status-normal-light: ${colors.statusLightFill.normal};`,\n ` --zendir-status-standby-light: ${colors.statusLightFill.standby};`,\n ` --zendir-status-off-light: ${colors.statusLightFill.off};`,\n \"\",\n \" /* Light-theme status border colors */\",\n ` --zendir-status-critical-border: ${colors.statusLightBorder.critical};`,\n ` --zendir-status-serious-border: ${colors.statusLightBorder.serious};`,\n ` --zendir-status-caution-border: ${colors.statusLightBorder.caution};`,\n ` --zendir-status-normal-border: ${colors.statusLightBorder.normal};`,\n ` --zendir-status-standby-border: ${colors.statusLightBorder.standby};`,\n ` --zendir-status-off-border: ${colors.statusLightBorder.off};`,\n \"\",\n \" /* ============================================================\",\n \" * SPACING\",\n \" * ============================================================ */\",\n ` --zendir-spacing-xs: ${spacing.xs};`,\n ` --zendir-spacing-sm: ${spacing.sm};`,\n ` --zendir-spacing-md: ${spacing.md};`,\n ` --zendir-spacing-lg: ${spacing.lg};`,\n ` --zendir-spacing-xl: ${spacing.xl};`,\n ` --zendir-spacing-xxl: ${spacing.xxl};`,\n \"\",\n \" /* ============================================================\",\n \" * BORDER RADIUS\",\n \" * ============================================================ */\",\n ` --zendir-radius-none: ${borderRadius.none};`,\n ` --zendir-radius-sm: ${borderRadius.sm};`,\n ` --zendir-radius-md: ${borderRadius.md};`,\n ` --zendir-radius-lg: ${borderRadius.lg};`,\n ` --zendir-radius-xl: ${borderRadius.xl};`,\n ` --zendir-radius-full: ${borderRadius.full};`,\n \"\",\n \" /* ============================================================\",\n \" * TYPOGRAPHY\",\n \" * Public Sans leads body, Sora leads headings, Roboto is the\",\n \" * AstroUXDS-compliant fallback. OS-native fonts complete the chain.\",\n \" * @see https://www.astrouxds.com/foundations/typography/\",\n \" * ============================================================ */\",\n ` --zendir-font-primary: ${typography.fontFamily.primary};`,\n ` --zendir-font-heading: ${typography.fontFamily.heading};`,\n ` --zendir-font-mono: ${typography.fontFamily.mono};`,\n \"\",\n \" /* Font sizes (rem-based, AstroUXDS scale) */\",\n ` --zendir-font-size-micro: ${typography.fontSize.micro};`,\n ` --zendir-font-size-xxs: ${typography.fontSize.xxs};`,\n ` --zendir-font-size-xs: ${typography.fontSize.xs};`,\n ` --zendir-font-size-sm: ${typography.fontSize.sm};`,\n ` --zendir-font-size-base: ${typography.fontSize.base};`,\n ` --zendir-font-size-md: ${typography.fontSize.md};`,\n ` --zendir-font-size-lg: ${typography.fontSize.lg};`,\n ` --zendir-font-size-xl: ${typography.fontSize.xl};`,\n ` --zendir-font-size-xxl: ${typography.fontSize.xxl};`,\n ` --zendir-font-size-xxxl: ${typography.fontSize.xxxl};`,\n ` --zendir-font-size-display: ${typography.fontSize.display};`,\n \"\",\n \" /* Font weights — AstroUXDS supports only 300/400/500/700 */\",\n ` --zendir-font-weight-light: ${typography.fontWeight.light};`,\n ` --zendir-font-weight-normal: ${typography.fontWeight.normal};`,\n ` --zendir-font-weight-medium: ${typography.fontWeight.medium};`,\n // Astro maps semibold onto medium (500); kept so consumers referencing\n // the semibold variable resolve rather than fall back to browser default.\n ` --zendir-font-weight-semibold: ${typography.fontWeight.semibold};`,\n ` --zendir-font-weight-bold: ${typography.fontWeight.bold};`,\n \"\",\n \" /* Line heights */\",\n ` --zendir-line-height-tight: ${typography.lineHeight.tight};`,\n ` --zendir-line-height-normal: ${typography.lineHeight.normal};`,\n ` --zendir-line-height-relaxed: ${typography.lineHeight.relaxed};`,\n \"\",\n \" /* ============================================================\",\n \" * SHADOWS\",\n \" * ============================================================ */\",\n ` --zendir-shadow-none: ${shadows.none};`,\n ` --zendir-shadow-sm: ${shadows.sm};`,\n ` --zendir-shadow-md: ${shadows.md};`,\n ` --zendir-shadow-lg: ${shadows.lg};`,\n ` --zendir-shadow-xl: ${shadows.xl};`,\n ` --zendir-shadow-glow: ${shadows.glow};`,\n \"\",\n \" /* ============================================================\",\n \" * ANIMATION\",\n \" * ============================================================ */\",\n ` --zendir-animation-fast: ${animation.fast};`,\n ` --zendir-animation-normal: ${animation.normal};`,\n ` --zendir-animation-slow: ${animation.slow};`,\n ].join(\"\\n\");\n}\n\n/** Build the mode-specific block (background + text + border + accent + semantic). */\nfunction buildModeBlock(theme: ThemeTokensBase): string {\n const bg = theme.colors.background;\n const txt = theme.colors.text;\n const bdr = theme.colors.border;\n const accent = theme.colors.accent;\n const semantic = theme.colors.semantic;\n return [\n ` --zendir-bg-base: ${bg.base};`,\n ` --zendir-bg-surface: ${bg.surface};`,\n ` --zendir-bg-elevated: ${bg.elevated};`,\n ` --zendir-bg-overlay: ${bg.overlay};`,\n \"\",\n ` --zendir-text-primary: ${txt.primary};`,\n ` --zendir-text-secondary: ${txt.secondary};`,\n ` --zendir-text-tertiary: ${txt.tertiary};`,\n ` --zendir-text-muted: ${txt.muted || txt.tertiary};`,\n \"\",\n ` --zendir-border-default: ${bdr.default};`,\n ` --zendir-border-muted: ${bdr.muted};`,\n ` --zendir-border-focus: ${bdr.focus};`,\n \"\",\n // Accent + semantic colors vary per theme (nebula is ultraviolet,\n // hybrid is purple, astro is blue) — they must live in the theme\n // block, not the invariant block, or every non-astro theme renders\n // the wrong accent.\n ` --zendir-accent-primary: ${accent.primary};`,\n ` --zendir-accent-secondary: ${accent.secondary};`,\n ` --zendir-accent-tertiary: ${accent.tertiary};`,\n \"\",\n ` --zendir-semantic-success: ${semantic.success};`,\n ` --zendir-semantic-warning: ${semantic.warning};`,\n ` --zendir-semantic-error: ${semantic.error};`,\n ` --zendir-semantic-info: ${semantic.info};`,\n ].join(\"\\n\");\n}\n\n/**\n * Emit every primitive palette stop as a CSS variable. Mode-invariant by\n * definition — primitives never change with theme. Naming:\n * Zendir scales --zendir-eb-500 / --zendir-pb-500 / --zendir-uv-500 /\n * --zendir-neutral-500\n * Astro ramps --zendir-astro-red-500 … --zendir-astro-cyan-900\n * Tailwind v4.2 --zendir-tw-red-500 … --zendir-tw-neutral-950\n */\nfunction buildPaletteBlock(): string {\n const lines: string[] = [];\n const emit = (prefix: string, scale: Record<string, string>) => {\n for (const [stop, hex] of Object.entries(scale)) {\n lines.push(` --zendir-${prefix}-${stop}: ${hex};`);\n }\n };\n\n lines.push(\" /* Zendir Colour System */\");\n emit(\"eb\", zendirPalette.electricBlue);\n emit(\"pb\", zendirPalette.prussianBlue);\n emit(\"uv\", zendirPalette.ultraviolet);\n emit(\"neutral\", zendirPalette.neutral);\n lines.push(\"\");\n lines.push(\" /* Astro UXDS status ramps */\");\n emit(\"astro-red\", astroPalette.red);\n emit(\"astro-amber\", astroPalette.amber);\n emit(\"astro-yellow\", astroPalette.yellow);\n emit(\"astro-green\", astroPalette.green);\n emit(\"astro-cyan\", astroPalette.cyan);\n lines.push(\"\");\n lines.push(\" /* Tailwind CSS v4.2 */\");\n for (const [name, scale] of Object.entries(tailwindScales)) {\n emit(`tw-${name.toLowerCase()}`, scale as Record<string, string>);\n }\n return lines.join(\"\\n\");\n}\n\n/**\n * Single-mode generator. Emits one `:root { … }` block with the\n * mode-invariant tokens AND the chosen mode's bg/text/border.\n *\n * Useful for runtime injection — `<style>` tags written by SSR helpers\n * that target a single mode. The full stylesheet generator below is what\n * ships to consumers.\n */\nexport function generateCSSVariables(mode: \"dark\" | \"light\" = \"dark\"): string {\n return [\n \":root {\",\n buildInvariantBlock(),\n \"\",\n ` /* ${mode === \"dark\" ? \"Dark\" : \"Light\"}-theme color overrides */`,\n buildModeBlock(mode === \"dark\" ? hybridTheme : astroThemeLight),\n \"}\",\n ].join(\"\\n\");\n}\n\n/**\n * Full stylesheet generator. Emits the complete tokens.css equivalent —\n * mode-invariant `:root` block, the primitive palette block, plus per-theme\n * `[data-theme=\"…\"]` overrides. This is what scripts/build-tokens.ts writes\n * to src/tokens/tokens.css.\n */\nexport function generateCSSStylesheet(): string {\n return [\n \"/**\",\n \" * @zendir/ui — CSS Design Tokens\",\n \" *\",\n \" * AUTO-GENERATED from src/tokens/index.ts. DO NOT EDIT BY HAND.\",\n \" * Regenerate with: npm run build:tokens\",\n \" *\",\n \" * Usage:\",\n \" * @import '@zendir/ui/tokens/css';\",\n \" * .my-component { background: var(--zendir-bg-surface); }\",\n \" */\",\n \"\",\n \":root {\",\n buildInvariantBlock(),\n \"}\",\n \"\",\n \"/* ============================================================\",\n \" * PRIMITIVE PALETTES (Layer 0 — src/tokens/palettes)\",\n \" * Raw scales; prefer the semantic tokens above for UI surfaces.\",\n \" * ============================================================ */\",\n \":root {\",\n buildPaletteBlock(),\n \"}\",\n \"\",\n \"/* ============================================================\",\n \" * ZEN (HYBRID) THEME (default)\",\n \" * ============================================================ */\",\n \":root,\",\n '[data-theme=\"hybrid\"],',\n '[data-theme=\"dark\"] {',\n buildModeBlock(hybridTheme),\n \"}\",\n \"\",\n \"/* ============================================================\",\n \" * ASTRO THEME\",\n \" * ============================================================ */\",\n '[data-theme=\"astro\"] {',\n buildModeBlock(astroThemeDark),\n \"}\",\n \"\",\n '[data-theme=\"astro\"][data-mode=\"light\"],',\n '[data-theme=\"hybrid\"][data-mode=\"light\"],',\n '[data-theme=\"nebula\"][data-mode=\"light\"],',\n '[data-theme=\"purple-hue\"][data-mode=\"light\"],',\n '[data-theme=\"light\"] {',\n buildModeBlock(astroThemeLight),\n \"}\",\n \"\",\n \"/* ============================================================\",\n \" * NEBULA THEME\",\n \" * ============================================================ */\",\n '[data-theme=\"nebula\"] {',\n buildModeBlock(nebulaTheme),\n \"}\",\n \"\",\n \"/* ============================================================\",\n \" * PURPLE HUE THEME\",\n \" * ============================================================ */\",\n '[data-theme=\"purple-hue\"] {',\n buildModeBlock(purpleHueTheme),\n \"}\",\n \"\",\n \"/* ============================================================\",\n \" * TRANSPARENT THEMES\",\n \" * ============================================================ */\",\n '[data-theme=\"transparent\"], [data-theme=\"transparent-bold\"] {',\n buildModeBlock(transparentTheme),\n \"}\",\n \"\",\n '[data-theme=\"transparent-minimal\"] {',\n buildModeBlock(transparentMinimalTheme),\n \"}\",\n \"\",\n ].join(\"\\n\");\n}\n\nexport default {\n colors,\n spacing,\n borderRadius,\n typography,\n shadows,\n animation,\n generateCSSVariables,\n generateCSSStylesheet,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/tokens/index.ts"],"sourcesContent":["export * from \"./core\";\r\nexport * from \"./palettes\";\r\nimport {\r\n colors,\r\n spacing,\r\n borderRadius,\r\n typography,\r\n shadows,\r\n animation,\r\n} from \"./core\";\r\nimport * as zendirPalette from \"./palettes/zendir\";\r\nimport * as astroPalette from \"./palettes/astro\";\r\nimport { tailwindScales } from \"./palettes/tailwind\";\r\nimport type { ThemeTokensBase } from \"../react/theme/types\";\r\nimport {\r\n astroThemeDark,\r\n astroThemeLight,\r\n hybridTheme,\r\n purpleHueTheme,\r\n nebulaTheme,\r\n transparentTheme,\r\n transparentMinimalTheme,\r\n} from \"./themes\";\r\n\r\n// ============================================================================\r\n// CSS Custom Properties generator (reference / programmatic use)\r\n//\r\n// NOTE: src/tokens/tokens.css is hand-maintained (see its header) — the build\r\n// does NOT overwrite it from here. These generators remain available for\r\n// consumers that want to emit the same variable set programmatically (SSR\r\n// style injection, tooling) and as the canonical reference for what\r\n// tokens.css should contain.\r\n//\r\n// Two callable surfaces:\r\n// • generateCSSVariables(mode) — single :root block for one mode\r\n// (legacy, kept for backward-compat)\r\n// • generateCSSStylesheet() — full tokens.css equivalent with\r\n// mode-invariant block + per-theme\r\n// [data-theme=\"…\"] overrides. This is\r\n// what scripts/build-tokens.ts uses.\r\n// ============================================================================\r\n\r\n/**\r\n * Build a CSS rule body for the mode-invariant tokens (status, spacing,\r\n * radius, typography, shadows, animation). These don't change between\r\n * light/dark or across themes — they're shared.\r\n */\r\nfunction buildInvariantBlock(): string {\r\n return [\r\n \" /* ============================================================\",\r\n \" * STATUS COLORS (Astro UX Compliant)\",\r\n \" * ============================================================ */\",\r\n ` --zendir-status-critical: ${colors.status.critical};`,\r\n ` --zendir-status-serious: ${colors.status.serious};`,\r\n ` --zendir-status-caution: ${colors.status.caution};`,\r\n ` --zendir-status-normal: ${colors.status.normal};`,\r\n ` --zendir-status-standby: ${colors.status.standby};`,\r\n ` --zendir-status-off: ${colors.status.off};`,\r\n \"\",\r\n \" /* Light-theme status fill colors */\",\r\n ` --zendir-status-critical-light: ${colors.statusLightFill.critical};`,\r\n ` --zendir-status-serious-light: ${colors.statusLightFill.serious};`,\r\n ` --zendir-status-caution-light: ${colors.statusLightFill.caution};`,\r\n ` --zendir-status-normal-light: ${colors.statusLightFill.normal};`,\r\n ` --zendir-status-standby-light: ${colors.statusLightFill.standby};`,\r\n ` --zendir-status-off-light: ${colors.statusLightFill.off};`,\r\n \"\",\r\n \" /* Light-theme status border colors */\",\r\n ` --zendir-status-critical-border: ${colors.statusLightBorder.critical};`,\r\n ` --zendir-status-serious-border: ${colors.statusLightBorder.serious};`,\r\n ` --zendir-status-caution-border: ${colors.statusLightBorder.caution};`,\r\n ` --zendir-status-normal-border: ${colors.statusLightBorder.normal};`,\r\n ` --zendir-status-standby-border: ${colors.statusLightBorder.standby};`,\r\n ` --zendir-status-off-border: ${colors.statusLightBorder.off};`,\r\n \"\",\r\n \" /* ============================================================\",\r\n \" * SPACING\",\r\n \" * ============================================================ */\",\r\n ` --zendir-spacing-xs: ${spacing.xs};`,\r\n ` --zendir-spacing-sm: ${spacing.sm};`,\r\n ` --zendir-spacing-md: ${spacing.md};`,\r\n ` --zendir-spacing-lg: ${spacing.lg};`,\r\n ` --zendir-spacing-xl: ${spacing.xl};`,\r\n ` --zendir-spacing-xxl: ${spacing.xxl};`,\r\n \"\",\r\n \" /* ============================================================\",\r\n \" * BORDER RADIUS\",\r\n \" * ============================================================ */\",\r\n ` --zendir-radius-none: ${borderRadius.none};`,\r\n ` --zendir-radius-sm: ${borderRadius.sm};`,\r\n ` --zendir-radius-md: ${borderRadius.md};`,\r\n ` --zendir-radius-lg: ${borderRadius.lg};`,\r\n ` --zendir-radius-xl: ${borderRadius.xl};`,\r\n ` --zendir-radius-full: ${borderRadius.full};`,\r\n \"\",\r\n \" /* ============================================================\",\r\n \" * TYPOGRAPHY\",\r\n \" * Public Sans leads body, Sora leads headings, Roboto is the\",\r\n \" * AstroUXDS-compliant fallback. OS-native fonts complete the chain.\",\r\n \" * @see https://www.astrouxds.com/foundations/typography/\",\r\n \" * ============================================================ */\",\r\n ` --zendir-font-primary: ${typography.fontFamily.primary};`,\r\n ` --zendir-font-heading: ${typography.fontFamily.heading};`,\r\n ` --zendir-font-mono: ${typography.fontFamily.mono};`,\r\n \"\",\r\n \" /* Font sizes (rem-based, AstroUXDS scale) */\",\r\n ` --zendir-font-size-micro: ${typography.fontSize.micro};`,\r\n ` --zendir-font-size-xxs: ${typography.fontSize.xxs};`,\r\n ` --zendir-font-size-xs: ${typography.fontSize.xs};`,\r\n ` --zendir-font-size-sm: ${typography.fontSize.sm};`,\r\n ` --zendir-font-size-base: ${typography.fontSize.base};`,\r\n ` --zendir-font-size-md: ${typography.fontSize.md};`,\r\n ` --zendir-font-size-lg: ${typography.fontSize.lg};`,\r\n ` --zendir-font-size-xl: ${typography.fontSize.xl};`,\r\n ` --zendir-font-size-xxl: ${typography.fontSize.xxl};`,\r\n ` --zendir-font-size-xxxl: ${typography.fontSize.xxxl};`,\r\n ` --zendir-font-size-display: ${typography.fontSize.display};`,\r\n \"\",\r\n \" /* Font weights — AstroUXDS supports only 300/400/500/700 */\",\r\n ` --zendir-font-weight-light: ${typography.fontWeight.light};`,\r\n ` --zendir-font-weight-normal: ${typography.fontWeight.normal};`,\r\n ` --zendir-font-weight-medium: ${typography.fontWeight.medium};`,\r\n // Astro maps semibold onto medium (500); kept so consumers referencing\r\n // the semibold variable resolve rather than fall back to browser default.\r\n ` --zendir-font-weight-semibold: ${typography.fontWeight.semibold};`,\r\n ` --zendir-font-weight-bold: ${typography.fontWeight.bold};`,\r\n \"\",\r\n \" /* Line heights */\",\r\n ` --zendir-line-height-tight: ${typography.lineHeight.tight};`,\r\n ` --zendir-line-height-normal: ${typography.lineHeight.normal};`,\r\n ` --zendir-line-height-relaxed: ${typography.lineHeight.relaxed};`,\r\n \"\",\r\n \" /* ============================================================\",\r\n \" * SHADOWS\",\r\n \" * ============================================================ */\",\r\n ` --zendir-shadow-none: ${shadows.none};`,\r\n ` --zendir-shadow-sm: ${shadows.sm};`,\r\n ` --zendir-shadow-md: ${shadows.md};`,\r\n ` --zendir-shadow-lg: ${shadows.lg};`,\r\n ` --zendir-shadow-xl: ${shadows.xl};`,\r\n ` --zendir-shadow-glow: ${shadows.glow};`,\r\n \"\",\r\n \" /* ============================================================\",\r\n \" * ANIMATION\",\r\n \" * ============================================================ */\",\r\n ` --zendir-animation-fast: ${animation.fast};`,\r\n ` --zendir-animation-normal: ${animation.normal};`,\r\n ` --zendir-animation-slow: ${animation.slow};`,\r\n ].join(\"\\n\");\r\n}\r\n\r\n/** Build the mode-specific block (background + text + border + accent + semantic). */\r\nfunction buildModeBlock(theme: ThemeTokensBase): string {\r\n const bg = theme.colors.background;\r\n const txt = theme.colors.text;\r\n const bdr = theme.colors.border;\r\n const accent = theme.colors.accent;\r\n const semantic = theme.colors.semantic;\r\n return [\r\n ` --zendir-bg-base: ${bg.base};`,\r\n ` --zendir-bg-surface: ${bg.surface};`,\r\n ` --zendir-bg-elevated: ${bg.elevated};`,\r\n ` --zendir-bg-overlay: ${bg.overlay};`,\r\n \"\",\r\n ` --zendir-text-primary: ${txt.primary};`,\r\n ` --zendir-text-secondary: ${txt.secondary};`,\r\n ` --zendir-text-tertiary: ${txt.tertiary};`,\r\n ` --zendir-text-muted: ${txt.muted || txt.tertiary};`,\r\n \"\",\r\n ` --zendir-border-default: ${bdr.default};`,\r\n ` --zendir-border-muted: ${bdr.muted};`,\r\n ` --zendir-border-focus: ${bdr.focus};`,\r\n \"\",\r\n // Accent + semantic colors vary per theme (nebula is ultraviolet,\r\n // hybrid is purple, astro is blue) — they must live in the theme\r\n // block, not the invariant block, or every non-astro theme renders\r\n // the wrong accent.\r\n ` --zendir-accent-primary: ${accent.primary};`,\r\n ` --zendir-accent-secondary: ${accent.secondary};`,\r\n ` --zendir-accent-tertiary: ${accent.tertiary};`,\r\n \"\",\r\n ` --zendir-semantic-success: ${semantic.success};`,\r\n ` --zendir-semantic-warning: ${semantic.warning};`,\r\n ` --zendir-semantic-error: ${semantic.error};`,\r\n ` --zendir-semantic-info: ${semantic.info};`,\r\n ].join(\"\\n\");\r\n}\r\n\r\n/**\r\n * Emit every primitive palette stop as a CSS variable. Mode-invariant by\r\n * definition — primitives never change with theme. Naming:\r\n * Zendir scales --zendir-eb-500 / --zendir-pb-500 / --zendir-uv-500 /\r\n * --zendir-neutral-500\r\n * Astro ramps --zendir-astro-red-500 … --zendir-astro-cyan-900\r\n * Tailwind v4.2 --zendir-tw-red-500 … --zendir-tw-neutral-950\r\n */\r\nfunction buildPaletteBlock(): string {\r\n const lines: string[] = [];\r\n const emit = (prefix: string, scale: Record<string, string>) => {\r\n for (const [stop, hex] of Object.entries(scale)) {\r\n lines.push(` --zendir-${prefix}-${stop}: ${hex};`);\r\n }\r\n };\r\n\r\n lines.push(\" /* Zendir Colour System */\");\r\n emit(\"eb\", zendirPalette.electricBlue);\r\n emit(\"pb\", zendirPalette.prussianBlue);\r\n emit(\"uv\", zendirPalette.ultraviolet);\r\n emit(\"neutral\", zendirPalette.neutral);\r\n lines.push(\"\");\r\n lines.push(\" /* Astro UXDS status ramps */\");\r\n emit(\"astro-red\", astroPalette.red);\r\n emit(\"astro-amber\", astroPalette.amber);\r\n emit(\"astro-yellow\", astroPalette.yellow);\r\n emit(\"astro-green\", astroPalette.green);\r\n emit(\"astro-cyan\", astroPalette.cyan);\r\n lines.push(\"\");\r\n lines.push(\" /* Tailwind CSS v4.2 */\");\r\n for (const [name, scale] of Object.entries(tailwindScales)) {\r\n emit(`tw-${name.toLowerCase()}`, scale as Record<string, string>);\r\n }\r\n return lines.join(\"\\n\");\r\n}\r\n\r\n/**\r\n * Single-mode generator. Emits one `:root { … }` block with the\r\n * mode-invariant tokens AND the chosen mode's bg/text/border.\r\n *\r\n * Useful for runtime injection — `<style>` tags written by SSR helpers\r\n * that target a single mode. The full stylesheet generator below is what\r\n * ships to consumers.\r\n */\r\nexport function generateCSSVariables(mode: \"dark\" | \"light\" = \"dark\"): string {\r\n return [\r\n \":root {\",\r\n buildInvariantBlock(),\r\n \"\",\r\n ` /* ${mode === \"dark\" ? \"Dark\" : \"Light\"}-theme color overrides */`,\r\n buildModeBlock(mode === \"dark\" ? hybridTheme : astroThemeLight),\r\n \"}\",\r\n ].join(\"\\n\");\r\n}\r\n\r\n/**\r\n * Full stylesheet generator. Emits the complete tokens.css equivalent —\r\n * mode-invariant `:root` block, the primitive palette block, plus per-theme\r\n * `[data-theme=\"…\"]` overrides. This is what scripts/build-tokens.ts writes\r\n * to src/tokens/tokens.css.\r\n */\r\nexport function generateCSSStylesheet(): string {\r\n return [\r\n \"/**\",\r\n \" * @zendir/ui — CSS Design Tokens\",\r\n \" *\",\r\n \" * AUTO-GENERATED from src/tokens/index.ts. DO NOT EDIT BY HAND.\",\r\n \" * Regenerate with: npm run build:tokens\",\r\n \" *\",\r\n \" * Usage:\",\r\n \" * @import '@zendir/ui/tokens/css';\",\r\n \" * .my-component { background: var(--zendir-bg-surface); }\",\r\n \" */\",\r\n \"\",\r\n \":root {\",\r\n buildInvariantBlock(),\r\n \"}\",\r\n \"\",\r\n \"/* ============================================================\",\r\n \" * PRIMITIVE PALETTES (Layer 0 — src/tokens/palettes)\",\r\n \" * Raw scales; prefer the semantic tokens above for UI surfaces.\",\r\n \" * ============================================================ */\",\r\n \":root {\",\r\n buildPaletteBlock(),\r\n \"}\",\r\n \"\",\r\n \"/* ============================================================\",\r\n \" * ZEN (HYBRID) THEME (default)\",\r\n \" * ============================================================ */\",\r\n \":root,\",\r\n '[data-theme=\"hybrid\"],',\r\n '[data-theme=\"dark\"] {',\r\n buildModeBlock(hybridTheme),\r\n \"}\",\r\n \"\",\r\n \"/* ============================================================\",\r\n \" * ASTRO THEME\",\r\n \" * ============================================================ */\",\r\n '[data-theme=\"astro\"] {',\r\n buildModeBlock(astroThemeDark),\r\n \"}\",\r\n \"\",\r\n '[data-theme=\"astro\"][data-mode=\"light\"],',\r\n '[data-theme=\"hybrid\"][data-mode=\"light\"],',\r\n '[data-theme=\"nebula\"][data-mode=\"light\"],',\r\n '[data-theme=\"purple-hue\"][data-mode=\"light\"],',\r\n '[data-theme=\"light\"] {',\r\n buildModeBlock(astroThemeLight),\r\n \"}\",\r\n \"\",\r\n \"/* ============================================================\",\r\n \" * NEBULA THEME\",\r\n \" * ============================================================ */\",\r\n '[data-theme=\"nebula\"] {',\r\n buildModeBlock(nebulaTheme),\r\n \"}\",\r\n \"\",\r\n \"/* ============================================================\",\r\n \" * PURPLE HUE THEME\",\r\n \" * ============================================================ */\",\r\n '[data-theme=\"purple-hue\"] {',\r\n buildModeBlock(purpleHueTheme),\r\n \"}\",\r\n \"\",\r\n \"/* ============================================================\",\r\n \" * TRANSPARENT THEMES\",\r\n \" * ============================================================ */\",\r\n '[data-theme=\"transparent\"], [data-theme=\"transparent-bold\"] {',\r\n buildModeBlock(transparentTheme),\r\n \"}\",\r\n \"\",\r\n '[data-theme=\"transparent-minimal\"] {',\r\n buildModeBlock(transparentMinimalTheme),\r\n \"}\",\r\n \"\",\r\n ].join(\"\\n\");\r\n}\r\n\r\nexport default {\r\n colors,\r\n spacing,\r\n borderRadius,\r\n typography,\r\n shadows,\r\n animation,\r\n generateCSSVariables,\r\n generateCSSStylesheet,\r\n};\r\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astro.js","names":[],"sources":["../../../src/tokens/palettes/astro.ts"],"sourcesContent":["/**\n * @zendir/ui — Astro UXDS status palette (primitive)\n *\n * Operator-grade severity ramps from the Astro UX Design System. Stops\n * 50–300 and 950 are omitted — genuinely undefined (TBD) in the source\n * Figma file for every status color, not values we failed to capture.\n *\n * The canonical single-value status tokens map onto these ramps:\n * dark status → 500 (standby → cyan 600)\n * light fill → 600 (standby → cyan 500)\n * light border → 900\n *\n * @see https://www.astrouxds.com/patterns/status-system/\n */\n\nexport const red = {\n 400: \"#FF5F60\",\n 500: \"#FF3838\",\n 600: \"#FF2A04\",\n 700: \"#C8102E\",\n 800: \"#8B1703\",\n 900: \"#661102\",\n} as const;\n\nexport const amber = {\n 400: \"#FFCC57\",\n 500: \"#FFB302\",\n 600: \"#FFAF3D\",\n 700: \"#FF8C00\",\n 800: \"#975F0E\",\n 900: \"#664618\",\n} as const;\n\nexport const yellow = {\n 400: \"#FDED61\",\n 500: \"#FCE83A\",\n 600: \"#FAD800\",\n 700: \"#C7AB00\",\n 800: \"#917D01\",\n 900: \"#645600\",\n} as const;\n\nexport const green = {\n 400: \"#99F666\",\n 500: \"#56F000\",\n 600: \"#00E200\",\n 700: \"#00AD23\",\n 800: \"#007A33\",\n 900: \"#005A00\",\n} as const;\n\nexport const cyan = {\n 400: \"#5CE2FF\",\n 500: \"#64D9FF\",\n 600: \"#2DCCFF\",\n 700: \"#20A9D5\",\n 800: \"#35798E\",\n 900: \"#285766\",\n} as const;\n\n/** \"Off\" has no ramp in Astro UXDS — single canonical value. */\nexport const off = \"#A4ABB6\" as const;\n\n/**\n * Canonical Astro status tokens. Every theme's `colors.status` block must\n * use these — severity colors are immutable across themes.\n */\nexport const astroStatus = {\n critical: red[500],\n serious: amber[500],\n caution: yellow[500],\n normal: green[500],\n standby: cyan[600],\n off,\n} as const;\n\n/** Light-mode status fills (Astro light theme guidance). */\nexport const astroStatusLightFill = {\n critical: red[600],\n serious: amber[600],\n caution: yellow[600],\n normal: green[600],\n standby: cyan[500],\n off: \"#7B8089\",\n} as const;\n\n/** Light-mode status borders (Astro light theme guidance). */\nexport const astroStatusLightBorder = {\n critical: red[900],\n serious: amber[900],\n caution: yellow[900],\n normal: green[900],\n standby: cyan[900],\n off: \"#3C3E42\",\n} as const;\n\n/** All Astro ramps keyed by display name (drives Foundation/Palette). */\nexport const astroScales = {\n \"Red — Critical\": red,\n \"Amber — Serious\": amber,\n \"Yellow — Caution\": yellow,\n \"Green — Normal\": green,\n \"Cyan — Standby\": cyan,\n} as const;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,IAAa,MAAM;CACjB,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;AACP;AAEA,IAAa,QAAQ;CACnB,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;AACP;AAEA,IAAa,SAAS;CACpB,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;AACP;AAEA,IAAa,QAAQ;CACnB,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;AACP;AAEA,IAAa,OAAO;CAClB,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;AACP;;AAGA,IAAa,MAAM;;;;;AAMnB,IAAa,cAAc;CACzB,UAAU,IAAI;CACd,SAAS,MAAM;CACf,SAAS,OAAO;CAChB,QAAQ,MAAM;CACd,SAAS,KAAK;CACd;AACF;;AAGA,IAAa,uBAAuB;CAClC,UAAU,IAAI;CACd,SAAS,MAAM;CACf,SAAS,OAAO;CAChB,QAAQ,MAAM;CACd,SAAS,KAAK;CACd,KAAK;AACP;;AAGA,IAAa,yBAAyB;CACpC,UAAU,IAAI;CACd,SAAS,MAAM;CACf,SAAS,OAAO;CAChB,QAAQ,MAAM;CACd,SAAS,KAAK;CACd,KAAK;AACP;;AAGA,IAAa,cAAc;CACzB,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,kBAAkB;CAClB,kBAAkB;AACpB"}
|
|
1
|
+
{"version":3,"file":"astro.js","names":[],"sources":["../../../src/tokens/palettes/astro.ts"],"sourcesContent":["/**\r\n * @zendir/ui — Astro UXDS status palette (primitive)\r\n *\r\n * Operator-grade severity ramps from the Astro UX Design System. Stops\r\n * 50–300 and 950 are omitted — genuinely undefined (TBD) in the source\r\n * Figma file for every status color, not values we failed to capture.\r\n *\r\n * The canonical single-value status tokens map onto these ramps:\r\n * dark status → 500 (standby → cyan 600)\r\n * light fill → 600 (standby → cyan 500)\r\n * light border → 900\r\n *\r\n * @see https://www.astrouxds.com/patterns/status-system/\r\n */\r\n\r\nexport const red = {\r\n 400: \"#FF5F60\",\r\n 500: \"#FF3838\",\r\n 600: \"#FF2A04\",\r\n 700: \"#C8102E\",\r\n 800: \"#8B1703\",\r\n 900: \"#661102\",\r\n} as const;\r\n\r\nexport const amber = {\r\n 400: \"#FFCC57\",\r\n 500: \"#FFB302\",\r\n 600: \"#FFAF3D\",\r\n 700: \"#FF8C00\",\r\n 800: \"#975F0E\",\r\n 900: \"#664618\",\r\n} as const;\r\n\r\nexport const yellow = {\r\n 400: \"#FDED61\",\r\n 500: \"#FCE83A\",\r\n 600: \"#FAD800\",\r\n 700: \"#C7AB00\",\r\n 800: \"#917D01\",\r\n 900: \"#645600\",\r\n} as const;\r\n\r\nexport const green = {\r\n 400: \"#99F666\",\r\n 500: \"#56F000\",\r\n 600: \"#00E200\",\r\n 700: \"#00AD23\",\r\n 800: \"#007A33\",\r\n 900: \"#005A00\",\r\n} as const;\r\n\r\nexport const cyan = {\r\n 400: \"#5CE2FF\",\r\n 500: \"#64D9FF\",\r\n 600: \"#2DCCFF\",\r\n 700: \"#20A9D5\",\r\n 800: \"#35798E\",\r\n 900: \"#285766\",\r\n} as const;\r\n\r\n/** \"Off\" has no ramp in Astro UXDS — single canonical value. */\r\nexport const off = \"#A4ABB6\" as const;\r\n\r\n/**\r\n * Canonical Astro status tokens. Every theme's `colors.status` block must\r\n * use these — severity colors are immutable across themes.\r\n */\r\nexport const astroStatus = {\r\n critical: red[500],\r\n serious: amber[500],\r\n caution: yellow[500],\r\n normal: green[500],\r\n standby: cyan[600],\r\n off,\r\n} as const;\r\n\r\n/** Light-mode status fills (Astro light theme guidance). */\r\nexport const astroStatusLightFill = {\r\n critical: red[600],\r\n serious: amber[600],\r\n caution: yellow[600],\r\n normal: green[600],\r\n standby: cyan[500],\r\n off: \"#7B8089\",\r\n} as const;\r\n\r\n/** Light-mode status borders (Astro light theme guidance). */\r\nexport const astroStatusLightBorder = {\r\n critical: red[900],\r\n serious: amber[900],\r\n caution: yellow[900],\r\n normal: green[900],\r\n standby: cyan[900],\r\n off: \"#3C3E42\",\r\n} as const;\r\n\r\n/** All Astro ramps keyed by display name (drives Foundation/Palette). */\r\nexport const astroScales = {\r\n \"Red — Critical\": red,\r\n \"Amber — Serious\": amber,\r\n \"Yellow — Caution\": yellow,\r\n \"Green — Normal\": green,\r\n \"Cyan — Standby\": cyan,\r\n} as const;\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,IAAa,MAAM;CACjB,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;AACP;AAEA,IAAa,QAAQ;CACnB,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;AACP;AAEA,IAAa,SAAS;CACpB,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;AACP;AAEA,IAAa,QAAQ;CACnB,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;AACP;AAEA,IAAa,OAAO;CAClB,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;AACP;;AAGA,IAAa,MAAM;;;;;AAMnB,IAAa,cAAc;CACzB,UAAU,IAAI;CACd,SAAS,MAAM;CACf,SAAS,OAAO;CAChB,QAAQ,MAAM;CACd,SAAS,KAAK;CACd;AACF;;AAGA,IAAa,uBAAuB;CAClC,UAAU,IAAI;CACd,SAAS,MAAM;CACf,SAAS,OAAO;CAChB,QAAQ,MAAM;CACd,SAAS,KAAK;CACd,KAAK;AACP;;AAGA,IAAa,yBAAyB;CACpC,UAAU,IAAI;CACd,SAAS,MAAM;CACf,SAAS,OAAO;CAChB,QAAQ,MAAM;CACd,SAAS,KAAK;CACd,KAAK;AACP;;AAGA,IAAa,cAAc;CACzB,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,kBAAkB;CAClB,kBAAkB;AACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/tokens/palettes/index.ts"],"sourcesContent":["/**\n * @zendir/ui — Primitive color palettes (Layer 0)\n *\n * The full color scales endorsed for product design use — Zendir's own\n * system, Astro UXDS status ramps, and Tailwind CSS v4.2. This is the\n * single source of truth that Foundation/Palette in Storybook renders and\n * that themes (src/tokens/themes.ts) and data-viz palettes reference.\n *\n * Layering:\n * Layer 0 (here) raw scales — no semantics, never mode-aware\n * Layer 1 (themes.ts) semantic theme tokens referencing these stops\n * Layer 2 (apps) components consume theme tokens / CSS variables\n *\n * Product code should not import these directly for UI surfaces — use the\n * semantic theme tokens. Direct use is appropriate only when defining new\n * palettes (data-viz series, domain color maps).\n */\n\nimport { zendirScales } from \"./zendir\";\nimport { astroScales } from \"./astro\";\nimport { tailwindScales } from \"./tailwind\";\n\nexport * as zendir from \"./zendir\";\nexport * as astroUxds from \"./astro\";\nexport * as tailwind from \"./tailwind\";\n\nexport {\n base as zendirBase,\n electricBlue,\n prussianBlue,\n ultraviolet,\n neutral as zendirNeutral,\n zendirScales,\n} from \"./zendir\";\n\nexport {\n astroStatus,\n astroStatusLightFill,\n astroStatusLightBorder,\n astroScales,\n} from \"./astro\";\n\nexport { tailwindScales } from \"./tailwind\";\n\n/**\n * Everything Foundation/Palette shows, grouped by system. If a scale is\n * here, it's endorsed from a product design POV, whether or not it's\n * already wired into a token in code.\n */\nexport const allPalettes = {\n zendir: zendirScales,\n astro: astroScales,\n tailwind: tailwindScales,\n} as const;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,IAAa,cAAc;CACzB,QAAQ;CACR,OAAO;CACP,UAAU;AACZ"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/tokens/palettes/index.ts"],"sourcesContent":["/**\r\n * @zendir/ui — Primitive color palettes (Layer 0)\r\n *\r\n * The full color scales endorsed for product design use — Zendir's own\r\n * system, Astro UXDS status ramps, and Tailwind CSS v4.2. This is the\r\n * single source of truth that Foundation/Palette in Storybook renders and\r\n * that themes (src/tokens/themes.ts) and data-viz palettes reference.\r\n *\r\n * Layering:\r\n * Layer 0 (here) raw scales — no semantics, never mode-aware\r\n * Layer 1 (themes.ts) semantic theme tokens referencing these stops\r\n * Layer 2 (apps) components consume theme tokens / CSS variables\r\n *\r\n * Product code should not import these directly for UI surfaces — use the\r\n * semantic theme tokens. Direct use is appropriate only when defining new\r\n * palettes (data-viz series, domain color maps).\r\n */\r\n\r\nimport { zendirScales } from \"./zendir\";\r\nimport { astroScales } from \"./astro\";\r\nimport { tailwindScales } from \"./tailwind\";\r\n\r\nexport * as zendir from \"./zendir\";\r\nexport * as astroUxds from \"./astro\";\r\nexport * as tailwind from \"./tailwind\";\r\n\r\nexport {\r\n base as zendirBase,\r\n electricBlue,\r\n prussianBlue,\r\n ultraviolet,\r\n neutral as zendirNeutral,\r\n zendirScales,\r\n} from \"./zendir\";\r\n\r\nexport {\r\n astroStatus,\r\n astroStatusLightFill,\r\n astroStatusLightBorder,\r\n astroScales,\r\n} from \"./astro\";\r\n\r\nexport { tailwindScales } from \"./tailwind\";\r\n\r\n/**\r\n * Everything Foundation/Palette shows, grouped by system. If a scale is\r\n * here, it's endorsed from a product design POV, whether or not it's\r\n * already wired into a token in code.\r\n */\r\nexport const allPalettes = {\r\n zendir: zendirScales,\r\n astro: astroScales,\r\n tailwind: tailwindScales,\r\n} as const;\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,IAAa,cAAc;CACzB,QAAQ;CACR,OAAO;CACP,UAAU;AACZ"}
|