aeon-ui-engine 1.0.0 → 1.0.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/COMPONENTS.md +7 -2
- package/INTEGRATION.md +14 -0
- package/README.md +8 -4
- package/apps/demo/og.config.mjs +8 -3
- package/apps/demo/public/og-aeon-ui-engine.png +0 -0
- package/apps/demo/public/og.svg +2 -2
- package/apps/demo/scripts/generate-og-png.mjs +4 -2
- package/apps/demo/src/App.tsx +2 -2
- package/apps/demo/src/aeonDiagrams.ts +17 -75
- package/apps/demo/src/components/DiagramsSection.tsx +8 -9
- package/apps/demo/src/components/HeroInstall.tsx +7 -4
- package/apps/demo/src/components/LandingFaq.tsx +1 -1
- package/apps/demo/src/components/LandingFooter.tsx +8 -0
- package/apps/demo/src/components/LandingHeader.tsx +4 -2
- package/apps/demo/src/components/LayersSection.tsx +6 -10
- package/apps/demo/src/components/MermaidDiagram.tsx +5 -3
- package/apps/demo/src/components/PhilosophySection.tsx +0 -2
- package/apps/demo/src/components/PlaygroundBlock.tsx +3 -8
- package/apps/demo/src/components/PlaygroundControlsDemo.tsx +63 -0
- package/apps/demo/src/components/PlaygroundSection.tsx +7 -91
- package/apps/demo/src/components/ThemeSwitcher.tsx +12 -9
- package/apps/demo/src/demo-layout.css +29 -0
- package/apps/demo/src/landing.css +136 -79
- package/apps/demo/src/nav.ts +3 -3
- package/apps/demo/src/site.ts +99 -228
- package/docs/MACHINES.md +6 -1
- package/package.json +1 -1
- package/packages/core/src/anatomy.ts +23 -0
- package/packages/panda/panda.config.ts +19 -1
- package/packages/panda/src/recipes/index.ts +5 -0
- package/packages/panda/src/recipes/pin-input.ts +29 -0
- package/packages/panda/src/recipes/progress.ts +44 -0
- package/packages/panda/src/recipes/radio-group.ts +51 -0
- package/packages/panda/src/recipes/select.ts +2 -0
- package/packages/panda/src/recipes/separator.ts +35 -0
- package/packages/panda/src/recipes/slider.ts +57 -0
- package/packages/panda/styled-system/recipes/aeon-pin-input.d.ts +28 -0
- package/packages/panda/styled-system/recipes/aeon-pin-input.mjs +36 -0
- package/packages/panda/styled-system/recipes/aeon-progress.d.ts +28 -0
- package/packages/panda/styled-system/recipes/aeon-progress.mjs +44 -0
- package/packages/panda/styled-system/recipes/aeon-radio-group.d.ts +28 -0
- package/packages/panda/styled-system/recipes/aeon-radio-group.mjs +48 -0
- package/packages/panda/styled-system/recipes/aeon-separator.d.ts +31 -0
- package/packages/panda/styled-system/recipes/aeon-separator.mjs +41 -0
- package/packages/panda/styled-system/recipes/aeon-slider.d.ts +28 -0
- package/packages/panda/styled-system/recipes/aeon-slider.mjs +48 -0
- package/packages/panda/styled-system/recipes/index.d.ts +5 -0
- package/packages/panda/styled-system/recipes/index.mjs +5 -0
- package/packages/panda/styled-system/styles.css +223 -46
- package/packages/panda/styled-system/types/conditions.d.ts +1 -1
- package/packages/primitives/src/index.ts +1 -0
- package/packages/primitives/src/machines/slider.ts +93 -0
- package/packages/react/src/checkbox/index.tsx +14 -0
- package/packages/react/src/floating/FloatingPositioner.tsx +59 -0
- package/packages/react/src/hooks/use-anchor-position.ts +33 -5
- package/packages/react/src/hooks/use-prefers-hover.ts +16 -0
- package/packages/react/src/index.ts +5 -0
- package/packages/react/src/menu/index.tsx +38 -11
- package/packages/react/src/pin-input/index.tsx +223 -0
- package/packages/react/src/popover/index.tsx +38 -11
- package/packages/react/src/progress/index.tsx +110 -0
- package/packages/react/src/radio-group/index.tsx +199 -0
- package/packages/react/src/select/index.tsx +51 -28
- package/packages/react/src/select/select.test.tsx +21 -0
- package/packages/react/src/separator/index.tsx +23 -0
- package/packages/react/src/slider/index.tsx +264 -0
- package/packages/react/src/toast/primitives.tsx +8 -1
- package/packages/react/src/toast/toast.test.tsx +40 -0
- package/packages/react/src/tooltip/index.tsx +124 -20
- package/packages/react/src/tooltip/tooltip.test.tsx +114 -0
- package/packages/site/README.md +1 -1
- package/packages/ui/src/index.ts +5 -0
- package/packages/ui/src/pin-input.tsx +16 -0
- package/packages/ui/src/progress.tsx +21 -0
- package/packages/ui/src/radio-group.tsx +24 -0
- package/packages/ui/src/separator.tsx +15 -0
- package/packages/ui/src/slider.tsx +24 -0
- package/apps/demo/public/og.png +0 -0
- package/apps/demo/src/components/SceneSection.tsx +0 -157
|
@@ -1,29 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Accordion,
|
|
3
2
|
Button,
|
|
4
|
-
Checkbox,
|
|
5
3
|
Dialog,
|
|
6
4
|
Menu,
|
|
7
5
|
Popover,
|
|
8
|
-
Switch,
|
|
9
|
-
Tabs,
|
|
10
6
|
Tooltip,
|
|
11
7
|
useToast,
|
|
12
8
|
} from '@aeon-ui/ui'
|
|
13
|
-
import {
|
|
14
|
-
import { useState } from 'react'
|
|
15
|
-
import {
|
|
16
|
-
accordionExamples,
|
|
17
|
-
playgroundBlocks,
|
|
18
|
-
site,
|
|
19
|
-
tabsExamples,
|
|
20
|
-
} from '../site.js'
|
|
9
|
+
import { playgroundBlocks, site } from '../site.js'
|
|
21
10
|
import { AsyncMachineDemo } from './AsyncMachineDemo.js'
|
|
22
11
|
import { ButtonLifecycleDemo } from './ButtonLifecycleDemo.js'
|
|
23
|
-
import { CodeExample } from './CodeExample.js'
|
|
24
12
|
import { FieldStateDemo } from './FieldStateDemo.js'
|
|
25
|
-
import { ScrollRegionDemo } from './ScrollRegionDemo.js'
|
|
26
13
|
import { PlaygroundBlock } from './PlaygroundBlock.js'
|
|
14
|
+
import { PlaygroundControlsDemo } from './PlaygroundControlsDemo.js'
|
|
27
15
|
|
|
28
16
|
function ToastDemo() {
|
|
29
17
|
const { publish } = useToast()
|
|
@@ -45,7 +33,6 @@ function ToastDemo() {
|
|
|
45
33
|
}
|
|
46
34
|
|
|
47
35
|
export function PlaygroundSection() {
|
|
48
|
-
const [notifications, setNotifications] = useState(true)
|
|
49
36
|
const b = playgroundBlocks
|
|
50
37
|
|
|
51
38
|
return (
|
|
@@ -70,37 +57,8 @@ export function PlaygroundSection() {
|
|
|
70
57
|
<FieldStateDemo />
|
|
71
58
|
</PlaygroundBlock>
|
|
72
59
|
|
|
73
|
-
<PlaygroundBlock {...b.
|
|
74
|
-
<
|
|
75
|
-
</PlaygroundBlock>
|
|
76
|
-
|
|
77
|
-
<PlaygroundBlock {...b.buttons}>
|
|
78
|
-
<Button.Group className="playground-button-row">
|
|
79
|
-
<Button.Root>Primary</Button.Root>
|
|
80
|
-
<Button.Root variant="outline">Outline</Button.Root>
|
|
81
|
-
<Button.Root variant="ghost">Ghost</Button.Root>
|
|
82
|
-
</Button.Group>
|
|
83
|
-
</PlaygroundBlock>
|
|
84
|
-
|
|
85
|
-
<PlaygroundBlock {...b.toggle}>
|
|
86
|
-
<div className="demo-stack">
|
|
87
|
-
<Switch.Root checked={notifications} onCheckedChange={setNotifications}>
|
|
88
|
-
<Switch.Control>
|
|
89
|
-
<Switch.Thumb />
|
|
90
|
-
</Switch.Control>
|
|
91
|
-
<Switch.Label>Enable notifications</Switch.Label>
|
|
92
|
-
</Switch.Root>
|
|
93
|
-
<Checkbox.Root checked={notifications} onCheckedChange={setNotifications}>
|
|
94
|
-
<Checkbox.Control>
|
|
95
|
-
<Checkbox.Indicator />
|
|
96
|
-
</Checkbox.Control>
|
|
97
|
-
<Checkbox.Label>Email digest</Checkbox.Label>
|
|
98
|
-
</Checkbox.Root>
|
|
99
|
-
</div>
|
|
100
|
-
</PlaygroundBlock>
|
|
101
|
-
|
|
102
|
-
<PlaygroundBlock {...b.combobox}>
|
|
103
|
-
<ComboboxDemo />
|
|
60
|
+
<PlaygroundBlock {...b.controls}>
|
|
61
|
+
<PlaygroundControlsDemo />
|
|
104
62
|
</PlaygroundBlock>
|
|
105
63
|
|
|
106
64
|
<PlaygroundBlock {...b.dialog}>
|
|
@@ -111,7 +69,7 @@ export function PlaygroundSection() {
|
|
|
111
69
|
<Dialog.Content>
|
|
112
70
|
<Dialog.Title>Example modal</Dialog.Title>
|
|
113
71
|
<Dialog.Description>
|
|
114
|
-
|
|
72
|
+
Escape and backdrop clicks close via defined transitions.
|
|
115
73
|
</Dialog.Description>
|
|
116
74
|
<Dialog.CloseTrigger>Close</Dialog.CloseTrigger>
|
|
117
75
|
</Dialog.Content>
|
|
@@ -119,7 +77,7 @@ export function PlaygroundSection() {
|
|
|
119
77
|
</Dialog.Root>
|
|
120
78
|
</PlaygroundBlock>
|
|
121
79
|
|
|
122
|
-
<PlaygroundBlock {...b.overlay}>
|
|
80
|
+
<PlaygroundBlock {...b.overlay} last>
|
|
123
81
|
<div className="demo-stack demo-overlay-row">
|
|
124
82
|
<Menu.Root>
|
|
125
83
|
<Menu.Trigger>Menu</Menu.Trigger>
|
|
@@ -137,7 +95,7 @@ export function PlaygroundSection() {
|
|
|
137
95
|
<Popover.Trigger>Popover</Popover.Trigger>
|
|
138
96
|
<Popover.Positioner>
|
|
139
97
|
<Popover.Content>
|
|
140
|
-
<p style={{ margin: 0 }}>Anchored panel
|
|
98
|
+
<p style={{ margin: 0 }}>Anchored panel with explicit open/closed states.</p>
|
|
141
99
|
<Popover.CloseTrigger>Close</Popover.CloseTrigger>
|
|
142
100
|
</Popover.Content>
|
|
143
101
|
</Popover.Positioner>
|
|
@@ -155,48 +113,6 @@ export function PlaygroundSection() {
|
|
|
155
113
|
<ToastDemo />
|
|
156
114
|
</div>
|
|
157
115
|
</PlaygroundBlock>
|
|
158
|
-
|
|
159
|
-
<PlaygroundBlock {...b.tabsAccordion} last>
|
|
160
|
-
<Tabs.Root defaultValue="philosophy" className="demo-spaced-bottom">
|
|
161
|
-
<Tabs.List>
|
|
162
|
-
<Tabs.Trigger value="philosophy">{tabsExamples.philosophy.label}</Tabs.Trigger>
|
|
163
|
-
<Tabs.Trigger value="machines">{tabsExamples.machines.label}</Tabs.Trigger>
|
|
164
|
-
<Tabs.Trigger value="anatomy">{tabsExamples.anatomy.label}</Tabs.Trigger>
|
|
165
|
-
</Tabs.List>
|
|
166
|
-
<Tabs.Content value="philosophy">
|
|
167
|
-
<p>{tabsExamples.philosophy.content}</p>
|
|
168
|
-
<CodeExample code={tabsExamples.philosophy.example} />
|
|
169
|
-
</Tabs.Content>
|
|
170
|
-
<Tabs.Content value="machines">
|
|
171
|
-
<p>{tabsExamples.machines.content}</p>
|
|
172
|
-
<CodeExample code={tabsExamples.machines.example} />
|
|
173
|
-
</Tabs.Content>
|
|
174
|
-
<Tabs.Content value="anatomy">
|
|
175
|
-
<p>{tabsExamples.anatomy.content}</p>
|
|
176
|
-
<CodeExample code={tabsExamples.anatomy.example} />
|
|
177
|
-
</Tabs.Content>
|
|
178
|
-
</Tabs.Root>
|
|
179
|
-
<Accordion.Root defaultValue={['what']}>
|
|
180
|
-
<Accordion.Item value="what">
|
|
181
|
-
<Accordion.ItemTrigger value="what">
|
|
182
|
-
{accordionExamples.what.trigger}
|
|
183
|
-
</Accordion.ItemTrigger>
|
|
184
|
-
<Accordion.ItemContent value="what">
|
|
185
|
-
<p>{accordionExamples.what.content}</p>
|
|
186
|
-
<CodeExample code={accordionExamples.what.example} />
|
|
187
|
-
</Accordion.ItemContent>
|
|
188
|
-
</Accordion.Item>
|
|
189
|
-
<Accordion.Item value="why">
|
|
190
|
-
<Accordion.ItemTrigger value="why">
|
|
191
|
-
{accordionExamples.why.trigger}
|
|
192
|
-
</Accordion.ItemTrigger>
|
|
193
|
-
<Accordion.ItemContent value="why">
|
|
194
|
-
<p>{accordionExamples.why.content}</p>
|
|
195
|
-
<CodeExample code={accordionExamples.why.example} />
|
|
196
|
-
</Accordion.ItemContent>
|
|
197
|
-
</Accordion.Item>
|
|
198
|
-
</Accordion.Root>
|
|
199
|
-
</PlaygroundBlock>
|
|
200
116
|
</div>
|
|
201
117
|
</div>
|
|
202
118
|
</section>
|
|
@@ -60,16 +60,19 @@ export function ThemeSwitcher() {
|
|
|
60
60
|
if (isAeonThemeId(v)) setTheme(v)
|
|
61
61
|
}}
|
|
62
62
|
>
|
|
63
|
-
<Select.Trigger aria-label=
|
|
64
|
-
|
|
63
|
+
<Select.Trigger aria-label={`Theme preset: ${AEON_THEME_MAP[themeId].label}`}>
|
|
64
|
+
<span className="theme-switcher__trigger-prefix">Theme</span>
|
|
65
|
+
<span className="theme-switcher__trigger-value">{AEON_THEME_MAP[themeId].label}</span>
|
|
65
66
|
</Select.Trigger>
|
|
66
|
-
<Select.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
{t.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
<Select.Positioner>
|
|
68
|
+
<Select.Content>
|
|
69
|
+
{AEON_THEMES.map((t) => (
|
|
70
|
+
<Select.Item key={t.id} value={t.id}>
|
|
71
|
+
{t.label}
|
|
72
|
+
</Select.Item>
|
|
73
|
+
))}
|
|
74
|
+
</Select.Content>
|
|
75
|
+
</Select.Positioner>
|
|
73
76
|
</Select.Root>
|
|
74
77
|
</div>
|
|
75
78
|
)
|
|
@@ -157,6 +157,35 @@
|
|
|
157
157
|
max-width: 24rem;
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
+
.playground-controls {
|
|
161
|
+
display: flex;
|
|
162
|
+
flex-direction: column;
|
|
163
|
+
align-items: flex-start;
|
|
164
|
+
gap: var(--aeon-gap-lg);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.playground-controls__toggles {
|
|
168
|
+
display: flex;
|
|
169
|
+
flex-direction: column;
|
|
170
|
+
align-items: flex-start;
|
|
171
|
+
gap: var(--aeon-gap);
|
|
172
|
+
width: 100%;
|
|
173
|
+
max-width: 20rem;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.playground-controls__radio {
|
|
177
|
+
display: flex;
|
|
178
|
+
flex-direction: column;
|
|
179
|
+
gap: var(--aeon-gap-sm);
|
|
180
|
+
width: 100%;
|
|
181
|
+
max-width: 20rem;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.playground-controls__slider {
|
|
185
|
+
width: 100%;
|
|
186
|
+
max-width: 20rem;
|
|
187
|
+
}
|
|
188
|
+
|
|
160
189
|
/* State track — equal columns; scales type to container (no clipped labels) */
|
|
161
190
|
.state-track {
|
|
162
191
|
--aeon-state-track-count: 5;
|
|
@@ -58,11 +58,11 @@
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
.section-lead {
|
|
61
|
-
font-size:
|
|
61
|
+
font-size: 1rem;
|
|
62
62
|
color: var(--text-muted);
|
|
63
|
-
max-width:
|
|
63
|
+
max-width: 42ch;
|
|
64
64
|
margin: 0;
|
|
65
|
-
line-height: 1.
|
|
65
|
+
line-height: 1.6;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
.text-accent {
|
|
@@ -213,10 +213,19 @@
|
|
|
213
213
|
display: inline-flex;
|
|
214
214
|
align-items: center;
|
|
215
215
|
flex-shrink: 0;
|
|
216
|
-
align-self: center;
|
|
217
216
|
text-decoration: none;
|
|
218
217
|
}
|
|
219
218
|
|
|
219
|
+
.landing-header__cta [data-aeon-scope='button'][data-aeon-part='root'] {
|
|
220
|
+
min-height: var(--header-control-h);
|
|
221
|
+
letter-spacing: 0.04em;
|
|
222
|
+
white-space: nowrap;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.landing-header__cta-label--short {
|
|
226
|
+
display: none;
|
|
227
|
+
}
|
|
228
|
+
|
|
220
229
|
/* Theme switcher — segmented light/dark + preset select */
|
|
221
230
|
.theme-switcher {
|
|
222
231
|
display: flex;
|
|
@@ -254,17 +263,56 @@
|
|
|
254
263
|
height: var(--header-control-h);
|
|
255
264
|
}
|
|
256
265
|
|
|
266
|
+
.theme-switcher__trigger-prefix {
|
|
267
|
+
display: none;
|
|
268
|
+
flex-shrink: 0;
|
|
269
|
+
font-weight: 600;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.theme-switcher__trigger-value {
|
|
273
|
+
min-width: 0;
|
|
274
|
+
overflow: hidden;
|
|
275
|
+
text-overflow: ellipsis;
|
|
276
|
+
white-space: nowrap;
|
|
277
|
+
}
|
|
278
|
+
|
|
257
279
|
.theme-switcher__theme-select [data-aeon-part='trigger'] {
|
|
258
280
|
min-height: var(--header-control-h);
|
|
259
281
|
height: 100%;
|
|
260
282
|
max-width: 100%;
|
|
261
283
|
overflow: hidden;
|
|
262
|
-
text-overflow: ellipsis;
|
|
263
|
-
white-space: nowrap;
|
|
264
284
|
padding-inline: 0.5rem 1.75rem;
|
|
265
285
|
font-size: 0.7rem;
|
|
266
286
|
}
|
|
267
287
|
|
|
288
|
+
@media (max-width: 719px) {
|
|
289
|
+
.theme-switcher__trigger-prefix {
|
|
290
|
+
display: inline;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
@media (max-width: 640px) {
|
|
295
|
+
.landing-header__cta [data-aeon-scope='button'][data-aeon-part='root'] {
|
|
296
|
+
min-height: var(--header-control-h);
|
|
297
|
+
padding-inline: 0.55rem !important;
|
|
298
|
+
font-size: 0.6875rem;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.landing-header__cta-label--long {
|
|
302
|
+
display: none;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.landing-header__cta-label--short {
|
|
306
|
+
display: inline;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
@media (max-width: 420px) {
|
|
311
|
+
.theme-switcher__trigger-value {
|
|
312
|
+
display: none;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
268
316
|
@media (max-width: 420px) {
|
|
269
317
|
:root {
|
|
270
318
|
--header-control-h: 2rem;
|
|
@@ -294,28 +342,14 @@
|
|
|
294
342
|
}
|
|
295
343
|
|
|
296
344
|
.theme-switcher__theme-select {
|
|
297
|
-
width:
|
|
298
|
-
|
|
345
|
+
width: auto;
|
|
346
|
+
min-width: 4.35rem;
|
|
347
|
+
max-width: none;
|
|
299
348
|
}
|
|
300
349
|
|
|
301
350
|
.theme-switcher__theme-select [data-aeon-part='trigger'] {
|
|
302
|
-
padding-inline: 0.
|
|
303
|
-
font-size: 0.625rem;
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
.landing-header__cta [data-aeon-scope='button'][data-aeon-part='root'] {
|
|
307
|
-
min-height: var(--header-control-h);
|
|
308
|
-
padding-inline: 0.45rem !important;
|
|
351
|
+
padding-inline: 0.45rem 1.5rem;
|
|
309
352
|
font-size: 0.625rem;
|
|
310
|
-
letter-spacing: 0.04em;
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
.landing-header__cta-label--long {
|
|
314
|
-
display: none;
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
.landing-header__cta-label--short {
|
|
318
|
-
display: inline;
|
|
319
353
|
}
|
|
320
354
|
}
|
|
321
355
|
|
|
@@ -331,26 +365,14 @@
|
|
|
331
365
|
border: 0;
|
|
332
366
|
}
|
|
333
367
|
|
|
334
|
-
/* Header CTA — same vertical rhythm as mode toggles + select */
|
|
335
|
-
.landing-header__cta [data-aeon-scope='button'][data-aeon-part='root'] {
|
|
336
|
-
min-height: var(--header-control-h);
|
|
337
|
-
letter-spacing: 0.06em;
|
|
338
|
-
text-transform: uppercase;
|
|
339
|
-
font-size: 0.75rem;
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
.landing-header__cta-label--short {
|
|
343
|
-
display: none;
|
|
344
|
-
}
|
|
345
|
-
|
|
346
368
|
/* Hero */
|
|
347
369
|
.hero {
|
|
348
370
|
padding-top: clamp(2.5rem, 6vw, 4rem);
|
|
349
371
|
padding-bottom: clamp(1.25rem, 3vw, 2rem);
|
|
350
372
|
}
|
|
351
373
|
|
|
352
|
-
/*
|
|
353
|
-
.hero__copy .hero-
|
|
374
|
+
/* Install line — above hero CTAs */
|
|
375
|
+
.hero__copy .hero-install {
|
|
354
376
|
margin: 0 0 1rem;
|
|
355
377
|
}
|
|
356
378
|
|
|
@@ -369,6 +391,14 @@
|
|
|
369
391
|
scrollbar-width: thin;
|
|
370
392
|
}
|
|
371
393
|
|
|
394
|
+
.hero-install__hint {
|
|
395
|
+
margin: 0.4rem 0 0;
|
|
396
|
+
font-size: 0.75rem;
|
|
397
|
+
line-height: 1.45;
|
|
398
|
+
color: var(--text-muted);
|
|
399
|
+
max-width: 36ch;
|
|
400
|
+
}
|
|
401
|
+
|
|
372
402
|
.hero-install__label {
|
|
373
403
|
flex-shrink: 0;
|
|
374
404
|
font-size: 0.65rem;
|
|
@@ -378,18 +408,19 @@
|
|
|
378
408
|
color: var(--aeon-accent);
|
|
379
409
|
}
|
|
380
410
|
|
|
381
|
-
.hero-
|
|
411
|
+
.hero-install__command {
|
|
382
412
|
flex: 1 1 auto;
|
|
383
413
|
min-width: 0;
|
|
384
414
|
margin: 0;
|
|
385
415
|
padding: 0;
|
|
386
|
-
font-family: var(--font-
|
|
387
|
-
font-size: clamp(0.
|
|
388
|
-
font-weight:
|
|
389
|
-
letter-spacing: 0.
|
|
416
|
+
font-family: var(--font-mono, 'IBM Plex Mono', ui-monospace, monospace);
|
|
417
|
+
font-size: clamp(0.78rem, 2.8vw, 0.92rem);
|
|
418
|
+
font-weight: 500;
|
|
419
|
+
letter-spacing: 0.02em;
|
|
390
420
|
line-height: 1.3;
|
|
391
421
|
white-space: nowrap;
|
|
392
422
|
color: var(--aeon-text);
|
|
423
|
+
background: transparent;
|
|
393
424
|
}
|
|
394
425
|
|
|
395
426
|
.hero__eyebrow {
|
|
@@ -412,7 +443,7 @@
|
|
|
412
443
|
}
|
|
413
444
|
|
|
414
445
|
.hero__lead {
|
|
415
|
-
margin: 0 0 0.
|
|
446
|
+
margin: 0 0 0.75rem;
|
|
416
447
|
font-size: 1.0625rem;
|
|
417
448
|
font-weight: 500;
|
|
418
449
|
color: var(--text-muted);
|
|
@@ -421,14 +452,16 @@
|
|
|
421
452
|
}
|
|
422
453
|
|
|
423
454
|
.hero__sub {
|
|
424
|
-
margin: 0 0 1.
|
|
425
|
-
font-size: 0.
|
|
426
|
-
|
|
427
|
-
|
|
455
|
+
margin: 0 0 1.25rem;
|
|
456
|
+
font-size: 0.9375rem;
|
|
457
|
+
line-height: 1.55;
|
|
458
|
+
color: var(--text-muted);
|
|
459
|
+
max-width: 46ch;
|
|
460
|
+
opacity: 0.92;
|
|
428
461
|
}
|
|
429
462
|
|
|
430
463
|
.hero__actions {
|
|
431
|
-
margin-bottom:
|
|
464
|
+
margin-bottom: 1.5rem;
|
|
432
465
|
}
|
|
433
466
|
|
|
434
467
|
.hero__actions a {
|
|
@@ -493,6 +526,39 @@
|
|
|
493
526
|
}
|
|
494
527
|
}
|
|
495
528
|
|
|
529
|
+
.hero__pillars {
|
|
530
|
+
list-style: none;
|
|
531
|
+
margin: 0;
|
|
532
|
+
padding: 0;
|
|
533
|
+
display: flex;
|
|
534
|
+
flex-direction: column;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
.hero__pillar {
|
|
538
|
+
display: flex;
|
|
539
|
+
flex-direction: column;
|
|
540
|
+
gap: 0.2rem;
|
|
541
|
+
padding: 0.85rem 1rem;
|
|
542
|
+
border-bottom: 1px solid var(--border);
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
.hero__pillar:last-child {
|
|
546
|
+
border-bottom: none;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
.hero__pillar strong {
|
|
550
|
+
font-family: var(--font-display);
|
|
551
|
+
font-size: 0.8125rem;
|
|
552
|
+
font-weight: 600;
|
|
553
|
+
color: var(--aeon-text);
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
.hero__pillar span {
|
|
557
|
+
font-size: 0.8125rem;
|
|
558
|
+
line-height: 1.45;
|
|
559
|
+
color: var(--text-muted);
|
|
560
|
+
}
|
|
561
|
+
|
|
496
562
|
.hero__visual {
|
|
497
563
|
margin-top: 2.5rem;
|
|
498
564
|
}
|
|
@@ -665,11 +731,15 @@
|
|
|
665
731
|
}
|
|
666
732
|
|
|
667
733
|
.playground__block-sub {
|
|
668
|
-
margin: 0 0 0.
|
|
734
|
+
margin: 0 0 0.85rem;
|
|
669
735
|
font-size: 0.875rem;
|
|
670
736
|
line-height: 1.55;
|
|
671
737
|
color: var(--text-muted);
|
|
672
|
-
max-width:
|
|
738
|
+
max-width: 48ch;
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
.playground__block-demo {
|
|
742
|
+
margin: 0;
|
|
673
743
|
}
|
|
674
744
|
|
|
675
745
|
.code-example {
|
|
@@ -1013,55 +1083,42 @@
|
|
|
1013
1083
|
.diagrams__grid {
|
|
1014
1084
|
display: grid;
|
|
1015
1085
|
gap: clamp(1.25rem, 3vw, 1.75rem);
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
@media (min-width: 52rem) {
|
|
1019
|
-
.diagrams__grid {
|
|
1020
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1021
|
-
}
|
|
1022
|
-
|
|
1023
|
-
.diagram-card:first-child {
|
|
1024
|
-
grid-column: 1 / -1;
|
|
1025
|
-
}
|
|
1086
|
+
max-width: 40rem;
|
|
1026
1087
|
}
|
|
1027
1088
|
|
|
1028
1089
|
.diagram-card__head {
|
|
1029
|
-
padding: 1.
|
|
1090
|
+
padding: 1.15rem 1.15rem 0;
|
|
1030
1091
|
}
|
|
1031
1092
|
|
|
1032
1093
|
.diagram-card__head h3 {
|
|
1033
|
-
margin: 0 0 0.
|
|
1094
|
+
margin: 0 0 0.35rem;
|
|
1034
1095
|
font-family: var(--font-display);
|
|
1035
|
-
font-size: 1.
|
|
1096
|
+
font-size: 1.05rem;
|
|
1036
1097
|
font-weight: 600;
|
|
1037
1098
|
}
|
|
1038
1099
|
|
|
1039
1100
|
.diagram-card__head p {
|
|
1040
|
-
margin: 0
|
|
1041
|
-
font-size: 0.
|
|
1101
|
+
margin: 0;
|
|
1102
|
+
font-size: 0.875rem;
|
|
1042
1103
|
color: var(--text-muted);
|
|
1043
|
-
line-height: 1.
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
.diagram-card__ref {
|
|
1047
|
-
display: inline-block;
|
|
1048
|
-
font-size: 0.72rem;
|
|
1049
|
-
padding: 0.2rem 0.5rem;
|
|
1050
|
-
border-radius: 4px;
|
|
1051
|
-
background: var(--bg-elevated);
|
|
1052
|
-
border: 1px solid var(--border);
|
|
1053
|
-
color: var(--aeon-accent);
|
|
1104
|
+
line-height: 1.5;
|
|
1105
|
+
max-width: 40ch;
|
|
1054
1106
|
}
|
|
1055
1107
|
|
|
1056
1108
|
.diagram-card__figure {
|
|
1057
1109
|
margin: 0;
|
|
1058
|
-
padding:
|
|
1110
|
+
padding: 1rem 1.15rem 1.15rem;
|
|
1059
1111
|
overflow-x: auto;
|
|
1060
1112
|
}
|
|
1061
1113
|
|
|
1114
|
+
.diagram-card__mermaid {
|
|
1115
|
+
min-height: 5rem;
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1062
1118
|
.diagram-card__mermaid svg {
|
|
1063
1119
|
display: block;
|
|
1064
|
-
|
|
1120
|
+
width: 100%;
|
|
1121
|
+
max-width: 36rem;
|
|
1065
1122
|
height: auto;
|
|
1066
1123
|
margin-inline: auto;
|
|
1067
1124
|
}
|
package/apps/demo/src/nav.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export const navLinks = [
|
|
2
|
-
{ href: '#layers', label: 'Architecture', sectionId: 'layers' },
|
|
3
|
-
{ href: '#diagrams', label: 'Diagrams', sectionId: 'diagrams' },
|
|
4
|
-
{ href: '#playground', label: 'Components', sectionId: 'playground' },
|
|
5
2
|
{ href: '#philosophy', label: 'Foundation', sectionId: 'philosophy' },
|
|
3
|
+
{ href: '#playground', label: 'Components', sectionId: 'playground' },
|
|
4
|
+
{ href: '#layers', label: 'Shape', sectionId: 'layers' },
|
|
5
|
+
{ href: '#diagrams', label: 'Statecharts', sectionId: 'diagrams' },
|
|
6
6
|
{ href: '#faq', label: 'FAQ', sectionId: 'faq' },
|
|
7
7
|
] as const
|
|
8
8
|
|