@invisibleloop/pulse 0.20.5 → 0.20.7
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/.claude/pulse-checklist.md +1 -2
- package/CLAUDE.md +1 -2
- package/docs/.claude/pulse-checklist.md +1 -2
- package/docs/public/coutumes.css +21 -44
- package/docs/public/docs.css +73 -6
- package/docs/public/home-brut.css +175 -191
- package/docs/public/pulse-ui.css +8 -1037
- package/docs/public/retrowheels.css +23 -0
- package/docs/public/shop.css +35 -1
- package/docs/public/sparkys.css +56 -23
- package/docs/public/theme.css +51 -7
- package/docs/server.js +0 -11
- package/docs/src/lib/component-page.js +2 -1
- package/docs/src/lib/nav.js +0 -11
- package/docs/src/pages/accessibility.js +2 -1
- package/docs/src/pages/actions.js +2 -1
- package/docs/src/pages/auth.js +2 -1
- package/docs/src/pages/caching.js +2 -1
- package/docs/src/pages/components/accordion.js +2 -1
- package/docs/src/pages/components/alert.js +2 -1
- package/docs/src/pages/components/app-badge.js +2 -1
- package/docs/src/pages/components/avatar.js +2 -1
- package/docs/src/pages/components/badge.js +2 -1
- package/docs/src/pages/components/breadcrumbs.js +2 -1
- package/docs/src/pages/components/button.js +2 -1
- package/docs/src/pages/components/card.js +2 -1
- package/docs/src/pages/components/charts.js +4 -2
- package/docs/src/pages/components/checkbox.js +2 -1
- package/docs/src/pages/components/cluster.js +2 -1
- package/docs/src/pages/components/container.js +2 -1
- package/docs/src/pages/components/cta.js +2 -1
- package/docs/src/pages/components/divider.js +2 -1
- package/docs/src/pages/components/empty.js +2 -1
- package/docs/src/pages/components/feature.js +2 -1
- package/docs/src/pages/components/fieldset.js +2 -1
- package/docs/src/pages/components/fileupload.js +2 -1
- package/docs/src/pages/components/footer.js +2 -1
- package/docs/src/pages/components/grid.js +11 -6
- package/docs/src/pages/components/heading.js +2 -1
- package/docs/src/pages/components/hero.js +2 -1
- package/docs/src/pages/components/icons.js +2 -1
- package/docs/src/pages/components/image.js +2 -1
- package/docs/src/pages/components/input.js +2 -1
- package/docs/src/pages/components/media.js +2 -1
- package/docs/src/pages/components/modal.js +2 -1
- package/docs/src/pages/components/nav.js +2 -1
- package/docs/src/pages/components/phone-frame.js +2 -1
- package/docs/src/pages/components/progress.js +2 -1
- package/docs/src/pages/components/prose.js +2 -1
- package/docs/src/pages/components/pullquote.js +2 -1
- package/docs/src/pages/components/radio.js +2 -1
- package/docs/src/pages/components/rating.js +2 -1
- package/docs/src/pages/components/search.js +2 -1
- package/docs/src/pages/components/section.js +2 -1
- package/docs/src/pages/components/segmented.js +2 -1
- package/docs/src/pages/components/select.js +2 -1
- package/docs/src/pages/components/slider.js +2 -1
- package/docs/src/pages/components/spinner.js +2 -1
- package/docs/src/pages/components/stack.js +2 -1
- package/docs/src/pages/components/stat.js +2 -1
- package/docs/src/pages/components/stepper.js +2 -1
- package/docs/src/pages/components/table.js +2 -1
- package/docs/src/pages/components/textarea.js +2 -1
- package/docs/src/pages/components/toggle.js +2 -1
- package/docs/src/pages/components/tooltip.js +2 -1
- package/docs/src/pages/components.js +2 -5
- package/docs/src/pages/config.js +2 -1
- package/docs/src/pages/constraints.js +2 -1
- package/docs/src/pages/deploy.js +2 -1
- package/docs/src/pages/error-pages.js +2 -1
- package/docs/src/pages/extending.js +2 -1
- package/docs/src/pages/faq.js +2 -1
- package/docs/src/pages/forms.js +2 -1
- package/docs/src/pages/getting-started.js +2 -1
- package/docs/src/pages/guard.js +2 -1
- package/docs/src/pages/home.js +24 -15
- package/docs/src/pages/how-it-works.js +22 -15
- package/docs/src/pages/hydration.js +2 -1
- package/docs/src/pages/images.js +2 -1
- package/docs/src/pages/markdown.js +2 -1
- package/docs/src/pages/meta.js +2 -1
- package/docs/src/pages/mutations.js +2 -1
- package/docs/src/pages/navigation.js +2 -1
- package/docs/src/pages/performance.js +2 -1
- package/docs/src/pages/persist.js +2 -1
- package/docs/src/pages/project-structure.js +2 -1
- package/docs/src/pages/prompt-examples.js +2 -1
- package/docs/src/pages/raw-responses.js +2 -1
- package/docs/src/pages/routing.js +2 -1
- package/docs/src/pages/server-api.js +2 -1
- package/docs/src/pages/server-data.js +2 -1
- package/docs/src/pages/slash-commands.js +2 -1
- package/docs/src/pages/spec.js +2 -1
- package/docs/src/pages/state.js +2 -1
- package/docs/src/pages/store.js +2 -1
- package/docs/src/pages/streaming.js +2 -1
- package/docs/src/pages/stripe.js +2 -1
- package/docs/src/pages/supabase.js +2 -1
- package/docs/src/pages/templates/coutumes.js +83 -72
- package/docs/src/pages/templates/mobile-app.js +36 -9
- package/docs/src/pages/templates/retrowheels.js +17 -4
- package/docs/src/pages/templates/shop.js +21 -10
- package/docs/src/pages/templates/sparkys.js +35 -20
- package/docs/src/pages/templates.js +2 -2
- package/docs/src/pages/testing.js +2 -1
- package/docs/src/pages/validation.js +2 -1
- package/examples/.claude/pulse-checklist.md +1 -2
- package/examples/examples.test.js +4 -4
- package/examples/pricing.js +21 -3
- package/examples/public/pulse-ui.css +8 -1037
- package/examples/retrowheels.css +23 -0
- package/examples/retrowheels.js +17 -4
- package/package.json +5 -1
- package/public/.pulse-ui-version +1 -1
- package/public/pulse-ui.css +8 -1037
- package/src/agent/checklist.md +1 -2
- package/src/agent/guide-components.md +43 -67
- package/src/agent/guide-design-gallery.md +14 -14
- package/src/agent/guide-design-references.md +21 -21
- package/src/agent/guide-styles.md +2 -2
- package/src/agent/guide-templates.md +6 -6
- package/src/agent/identity.md +1 -1
- package/src/agent/workflow.md +1 -2
- package/src/mcp/server.js +31 -24
- package/src/ui/index.js +0 -27
- package/src/ui/ui.test.js +0 -137
- package/types/charts.d.ts +61 -0
- package/types/ui.d.ts +1 -129
- package/docs/src/pages/components/banner.js +0 -44
- package/docs/src/pages/components/carousel.js +0 -71
- package/docs/src/pages/components/code-window.js +0 -56
- package/docs/src/pages/components/decorate.js +0 -74
- package/docs/src/pages/components/gallery.js +0 -102
- package/docs/src/pages/components/list.js +0 -111
- package/docs/src/pages/components/marquee.js +0 -76
- package/docs/src/pages/components/photo-card.js +0 -74
- package/docs/src/pages/components/pricing.js +0 -67
- package/docs/src/pages/components/testimonial.js +0 -48
- package/docs/src/pages/components/timeline.js +0 -226
- package/src/ui/banner.js +0 -41
- package/src/ui/brand-statement.js +0 -58
- package/src/ui/carousel.js +0 -59
- package/src/ui/code-window.js +0 -39
- package/src/ui/colophon.js +0 -29
- package/src/ui/contact-row.js +0 -41
- package/src/ui/decorate.js +0 -55
- package/src/ui/display-heading.js +0 -44
- package/src/ui/drop-cap.js +0 -29
- package/src/ui/editorial-hero.js +0 -63
- package/src/ui/entry-list.js +0 -36
- package/src/ui/gallery.js +0 -60
- package/src/ui/image-pair.js +0 -72
- package/src/ui/list.js +0 -36
- package/src/ui/marquee.js +0 -48
- package/src/ui/photo-card.js +0 -44
- package/src/ui/pricing.js +0 -56
- package/src/ui/product-card.js +0 -65
- package/src/ui/section-label.js +0 -38
- package/src/ui/service-card.js +0 -47
- package/src/ui/stat-grid.js +0 -40
- package/src/ui/testimonial.js +0 -59
- package/src/ui/timeline.js +0 -72
- package/src/ui/top-strip.js +0 -47
- package/src/ui/trust-list.js +0 -46
|
@@ -9,9 +9,10 @@ const { prev, next } = prevNext('/components/feature')
|
|
|
9
9
|
export default {
|
|
10
10
|
route: '/components/feature',
|
|
11
11
|
meta: {
|
|
12
|
+
theme: 'light',
|
|
12
13
|
title: 'Feature — Pulse Docs',
|
|
13
14
|
description: 'Feature component for Pulse UI.',
|
|
14
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
15
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
15
16
|
},
|
|
16
17
|
view: () => renderComponentPage({
|
|
17
18
|
currentHref: '/components/feature',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/fieldset')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/fieldset',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Fieldset — Pulse Docs',
|
|
12
13
|
description: 'Semantic grouping of related form fields with an accessible legend.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/fieldset',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/file-upload')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/file-upload',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'File Upload — Pulse Docs',
|
|
12
13
|
description: 'Drag-and-drop file upload zone component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
state: { fileName: '', fileSize: '' },
|
|
16
17
|
mutations: {
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/footer')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/footer',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Footer — Pulse Docs',
|
|
12
13
|
description: 'Accessible site footer with logo slot, navigation links, and legal text.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/footer',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { renderComponentPage, demo } from '../../lib/component-page.js'
|
|
2
2
|
import { prevNext } from '../../lib/nav.js'
|
|
3
3
|
import { table } from '../../lib/layout.js'
|
|
4
|
-
import { grid, card, stat, feature
|
|
4
|
+
import { grid, card, stat, feature } from '../../../../src/ui/index.js'
|
|
5
5
|
|
|
6
6
|
const { prev, next } = prevNext('/components/grid')
|
|
7
7
|
|
|
@@ -12,9 +12,10 @@ const item = (label) =>
|
|
|
12
12
|
export default {
|
|
13
13
|
route: '/components/grid',
|
|
14
14
|
meta: {
|
|
15
|
+
theme: 'light',
|
|
15
16
|
title: 'Grid — Pulse Docs',
|
|
16
17
|
description: 'Grid component for Pulse UI.',
|
|
17
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
18
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
18
19
|
},
|
|
19
20
|
view: () => renderComponentPage({
|
|
20
21
|
currentHref: '/components/grid',
|
|
@@ -96,18 +97,22 @@ export default {
|
|
|
96
97
|
)}
|
|
97
98
|
|
|
98
99
|
<h3 class="doc-h3">Testimonial grid</h3>
|
|
100
|
+
<p>There is no dedicated <code>testimonial</code> component — build one with <code>card()</code>: the quote in <code>content</code>, the name and role in <code>footer</code>.</p>
|
|
99
101
|
${demo(
|
|
100
102
|
grid({
|
|
101
103
|
cols: 3,
|
|
102
104
|
content: [
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
105
|
+
card({ content: `<p style="color:var(--muted);margin:0">“Shipped our redesign in a weekend. No boilerplate, no config hell.”</p>`, footer: `<strong>Alex Morgan</strong><br><span style="color:var(--muted)">CTO at Launchpad</span>` }),
|
|
106
|
+
card({ content: `<p style="color:var(--muted);margin:0">“The streaming SSR makes our pages feel instant. Lighthouse is happy.”</p>`, footer: `<strong>Sara Kim</strong><br><span style="color:var(--muted)">Lead Engineer, Orbit</span>` }),
|
|
107
|
+
card({ content: `<p style="color:var(--muted);margin:0">“Finally a UI kit that doesn\'t fight the platform. Just HTML.”</p>`, footer: `<strong>Dan Okafor</strong><br><span style="color:var(--muted)">Founder, Stackly</span>` }),
|
|
106
108
|
].join(''),
|
|
107
109
|
}),
|
|
108
110
|
`grid({
|
|
109
111
|
cols: 3,
|
|
110
|
-
content: testimonials.map(t =>
|
|
112
|
+
content: testimonials.map(t => card({
|
|
113
|
+
content: \`<p>\${t.quote}</p>\`,
|
|
114
|
+
footer: \`<strong>\${t.name}</strong><br>\${t.role}\`,
|
|
115
|
+
})).join(''),
|
|
111
116
|
})`
|
|
112
117
|
)}
|
|
113
118
|
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/heading')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/heading',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Heading — Pulse Docs',
|
|
12
13
|
description: 'Styled semantic heading component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/heading',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/hero')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/hero',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Hero — Pulse Docs',
|
|
12
13
|
description: 'Hero component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
state: {},
|
|
16
17
|
view: () => {
|
|
@@ -382,9 +382,10 @@ feature({ icon: iconCode({ size: 22, bg: 'square', bgColor: 'muted' }), titl
|
|
|
382
382
|
export default {
|
|
383
383
|
route: '/components/icons',
|
|
384
384
|
meta: {
|
|
385
|
+
theme: 'light',
|
|
385
386
|
title: 'Icons — Pulse Docs',
|
|
386
387
|
description: 'Built-in icon set for Pulse UI.',
|
|
387
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
388
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
388
389
|
},
|
|
389
390
|
|
|
390
391
|
// Shell: all visible content (nav, examples, icon grid) — sends immediately.
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/image')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/image',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Image — Pulse Docs',
|
|
12
13
|
description: 'Responsive image component with optional aspect-ratio crop and caption for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/image',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/input')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/input',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Input — Pulse Docs',
|
|
12
13
|
description: 'Input component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/input',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/media')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/media',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Media — Pulse Docs',
|
|
12
13
|
description: 'Media component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/media',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/modal')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/modal',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Modal — Pulse Docs',
|
|
12
13
|
description: 'Modal dialog component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/modal',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/nav')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/nav',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Nav — Pulse Docs',
|
|
12
13
|
description: 'Nav component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/nav',
|
|
@@ -28,9 +28,10 @@ const sampleScreen = `
|
|
|
28
28
|
export default {
|
|
29
29
|
route: '/components/phone-frame',
|
|
30
30
|
meta: {
|
|
31
|
+
theme: 'light',
|
|
31
32
|
title: 'Phone Frame — Pulse Docs',
|
|
32
33
|
description: 'Phone Frame component for Pulse UI.',
|
|
33
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
34
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
34
35
|
},
|
|
35
36
|
state: {},
|
|
36
37
|
view: () => renderComponentPage({
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/progress')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/progress',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Progress — Pulse Docs',
|
|
12
13
|
description: 'Progress bar component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/progress',
|
|
@@ -21,9 +21,10 @@ const SAMPLE_HTML = `<h2>Why great coffee starts with water</h2>
|
|
|
21
21
|
export default {
|
|
22
22
|
route: '/components/prose',
|
|
23
23
|
meta: {
|
|
24
|
+
theme: 'light',
|
|
24
25
|
title: 'Prose — Pulse Docs',
|
|
25
26
|
description: 'Typography wrapper for CMS output and rich text content in Pulse UI.',
|
|
26
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
27
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
27
28
|
},
|
|
28
29
|
view: () => renderComponentPage({
|
|
29
30
|
currentHref: '/components/prose',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/pullquote')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/pullquote',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Pullquote — Pulse Docs',
|
|
12
13
|
description: 'Styled blockquote component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/pullquote',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/radio')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/radio',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Radio — Pulse Docs',
|
|
12
13
|
description: 'Radio button and radio group components for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/radio',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/rating')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/rating',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Rating — Pulse Docs',
|
|
12
13
|
description: 'Star rating display and interactive input component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/rating',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/search')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/search',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Search — Pulse Docs',
|
|
12
13
|
description: 'Search input component with icon, debounce binding, and clear button.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/search',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/section')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/section',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Section — Pulse Docs',
|
|
12
13
|
description: 'Vertical padding wrapper with optional background. Compose with container() for full-width background with constrained content.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/section',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/segmented')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/segmented',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Segmented — Pulse Docs',
|
|
12
13
|
description: 'iOS-style segmented control component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/segmented',
|
|
@@ -7,9 +7,10 @@ const { prev, next } = prevNext('/components/select')
|
|
|
7
7
|
export default {
|
|
8
8
|
route: '/components/select',
|
|
9
9
|
meta: {
|
|
10
|
+
theme: 'light',
|
|
10
11
|
title: 'Select — Pulse Docs',
|
|
11
12
|
description: 'Select component for Pulse UI.',
|
|
12
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
13
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
13
14
|
},
|
|
14
15
|
view: () => renderComponentPage({
|
|
15
16
|
currentHref: '/components/select',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/slider')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/slider',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Slider — Pulse Docs',
|
|
12
13
|
description: 'Styled range input slider component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
state: { brightness: 100 },
|
|
16
17
|
mutations: {
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/spinner')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/spinner',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Spinner — Pulse Docs',
|
|
12
13
|
description: 'Loading spinner component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/spinner',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/stack')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/stack',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Stack — Pulse Docs',
|
|
12
13
|
description: 'Stack component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/stack',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/stat')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/stat',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Stat — Pulse Docs',
|
|
12
13
|
description: 'Stat component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/stat',
|
|
@@ -10,9 +10,10 @@ const STEPS = ['Account', 'Details', 'Payment', 'Review']
|
|
|
10
10
|
export default {
|
|
11
11
|
route: '/components/stepper',
|
|
12
12
|
meta: {
|
|
13
|
+
theme: 'light',
|
|
13
14
|
title: 'Stepper — Pulse Docs',
|
|
14
15
|
description: 'Horizontal step progress indicator component for Pulse UI.',
|
|
15
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
16
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
16
17
|
},
|
|
17
18
|
view: () => renderComponentPage({
|
|
18
19
|
currentHref: '/components/stepper',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/table')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/table',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Table — Pulse Docs',
|
|
12
13
|
description: 'Table component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/table',
|
|
@@ -7,9 +7,10 @@ const { prev, next } = prevNext('/components/textarea')
|
|
|
7
7
|
export default {
|
|
8
8
|
route: '/components/textarea',
|
|
9
9
|
meta: {
|
|
10
|
+
theme: 'light',
|
|
10
11
|
title: 'Textarea — Pulse Docs',
|
|
11
12
|
description: 'Textarea component for Pulse UI.',
|
|
12
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
13
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
13
14
|
},
|
|
14
15
|
view: () => renderComponentPage({
|
|
15
16
|
currentHref: '/components/textarea',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/toggle')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/toggle',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Toggle — Pulse Docs',
|
|
12
13
|
description: 'iOS-style switch toggle component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/toggle',
|
|
@@ -8,9 +8,10 @@ const { prev, next } = prevNext('/components/tooltip')
|
|
|
8
8
|
export default {
|
|
9
9
|
route: '/components/tooltip',
|
|
10
10
|
meta: {
|
|
11
|
+
theme: 'light',
|
|
11
12
|
title: 'Tooltip — Pulse Docs',
|
|
12
13
|
description: 'Tooltip component for Pulse UI.',
|
|
13
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
14
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
14
15
|
},
|
|
15
16
|
view: () => renderComponentPage({
|
|
16
17
|
currentHref: '/components/tooltip',
|
|
@@ -7,9 +7,10 @@ const { prev, next } = prevNext('/components')
|
|
|
7
7
|
export default {
|
|
8
8
|
route: '/components',
|
|
9
9
|
meta: {
|
|
10
|
+
theme: 'light',
|
|
10
11
|
title: 'Component Library — Pulse Docs',
|
|
11
12
|
description: 'Server-rendered UI components for Pulse — button, card, input, alert, stat, avatar, table and more. Fully accessible, mobile-ready, zero client JS.',
|
|
12
|
-
styles: ['/pulse-ui.css', '/docs.css'],
|
|
13
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
13
14
|
},
|
|
14
15
|
view: () => renderLayout({
|
|
15
16
|
currentHref: '/components',
|
|
@@ -94,8 +95,6 @@ export default {
|
|
|
94
95
|
['<a href="/components/hero">hero</a>', 'Full-width hero section with eyebrow, title, and actions.'],
|
|
95
96
|
['<a href="/components/app-badge">appBadge</a>', 'App Store / Google Play download badge.'],
|
|
96
97
|
['<a href="/components/feature">feature</a>', 'Icon + title + description block for feature grids.'],
|
|
97
|
-
['<a href="/components/testimonial">testimonial</a>', 'Customer quote with avatar and star rating.'],
|
|
98
|
-
['<a href="/components/pricing">pricing</a>', 'Plan card with feature list and CTA. Supports highlighted state.'],
|
|
99
98
|
['<a href="/components/accordion">accordion</a>', 'Collapsible FAQ items — no JS, native <code><details></code>.'],
|
|
100
99
|
['<a href="/components/cta">cta</a>', 'Call-to-action block with eyebrow, heading, body, and actions slot.'],
|
|
101
100
|
]
|
|
@@ -111,9 +110,7 @@ export default {
|
|
|
111
110
|
['<a href="/components/stack">stack</a>', 'Flex column with consistent vertical gap.'],
|
|
112
111
|
['<a href="/components/cluster">cluster</a>', 'Flex row with wrapping — for badges, buttons, etc.'],
|
|
113
112
|
['<a href="/components/divider">divider</a>', 'Horizontal rule, optionally with centred label.'],
|
|
114
|
-
['<a href="/components/banner">banner</a>', 'Full-width announcement bar above the nav.'],
|
|
115
113
|
['<a href="/components/media">media</a>', 'Two-column image + text layout, stacks on mobile.'],
|
|
116
|
-
['<a href="/components/code-window">codeWindow</a>', 'macOS window chrome around a code block. Accepts pre-highlighted HTML.'],
|
|
117
114
|
['<a href="/components/footer">footer</a>', 'Site footer with logo, nav links, and legal text. Stacks on mobile.'],
|
|
118
115
|
]
|
|
119
116
|
)}
|
package/docs/src/pages/config.js
CHANGED
|
@@ -7,9 +7,10 @@ const { prev, next } = prevNext('/config')
|
|
|
7
7
|
export default {
|
|
8
8
|
route: '/config',
|
|
9
9
|
meta: {
|
|
10
|
+
theme: 'light',
|
|
10
11
|
title: 'Configuration — Pulse Docs',
|
|
11
12
|
description: 'Full reference for pulse.config.js — port, Lighthouse thresholds, load test config, environments, and per-route overrides.',
|
|
12
|
-
styles: ['/docs.css'],
|
|
13
|
+
styles: ['/theme.css', '/docs.css'],
|
|
13
14
|
},
|
|
14
15
|
view: () => renderLayout({
|
|
15
16
|
currentHref: '/config',
|
|
@@ -7,9 +7,10 @@ const { prev, next } = prevNext('/constraints')
|
|
|
7
7
|
export default {
|
|
8
8
|
route: '/constraints',
|
|
9
9
|
meta: {
|
|
10
|
+
theme: 'light',
|
|
10
11
|
title: 'Constraints — Pulse Docs',
|
|
11
12
|
description: 'Automatic min/max bounds on state values, enforced after every mutation.',
|
|
12
|
-
styles: ['/docs.css'],
|
|
13
|
+
styles: ['/theme.css', '/docs.css'],
|
|
13
14
|
},
|
|
14
15
|
state: {},
|
|
15
16
|
view: () => renderLayout({
|
package/docs/src/pages/deploy.js
CHANGED
|
@@ -7,9 +7,10 @@ const { prev, next } = prevNext('/deploy')
|
|
|
7
7
|
export default {
|
|
8
8
|
route: '/deploy',
|
|
9
9
|
meta: {
|
|
10
|
+
theme: 'light',
|
|
10
11
|
title: 'Deployment — Pulse Docs',
|
|
11
12
|
description: 'Deploy a Pulse app to a VPS, Docker, Fly.io, Railway, or Render.',
|
|
12
|
-
styles: ['/docs.css'],
|
|
13
|
+
styles: ['/theme.css', '/docs.css'],
|
|
13
14
|
},
|
|
14
15
|
view: () => renderLayout({
|
|
15
16
|
currentHref: '/deploy',
|
|
@@ -7,9 +7,10 @@ const { prev, next } = prevNext('/error-pages')
|
|
|
7
7
|
export default {
|
|
8
8
|
route: '/error-pages',
|
|
9
9
|
meta: {
|
|
10
|
+
theme: 'light',
|
|
10
11
|
title: 'Error Pages — Pulse Docs',
|
|
11
12
|
description: 'Custom 404 pages in Pulse. A spec with route "*" renders through the normal pipeline with status 404 whenever no route matches.',
|
|
12
|
-
styles: ['/docs.css'],
|
|
13
|
+
styles: ['/theme.css', '/docs.css'],
|
|
13
14
|
},
|
|
14
15
|
view: () => renderLayout({
|
|
15
16
|
currentHref: '/error-pages',
|
|
@@ -7,9 +7,10 @@ const { prev, next } = prevNext('/extending')
|
|
|
7
7
|
export default {
|
|
8
8
|
route: '/extending',
|
|
9
9
|
meta: {
|
|
10
|
+
theme: 'light',
|
|
10
11
|
title: 'Extending Pulse — Pulse Docs',
|
|
11
12
|
description: 'Escape hatches for features outside the Pulse spec — onRequest middleware, raw server access, WebSockets, SSE, and custom error handling.',
|
|
12
|
-
styles: ['/docs.css'],
|
|
13
|
+
styles: ['/theme.css', '/docs.css'],
|
|
13
14
|
},
|
|
14
15
|
view: () => renderLayout({
|
|
15
16
|
currentHref: '/extending',
|
package/docs/src/pages/faq.js
CHANGED
|
@@ -17,9 +17,10 @@ function q(question, answer) {
|
|
|
17
17
|
export default {
|
|
18
18
|
route: '/faq',
|
|
19
19
|
meta: {
|
|
20
|
+
theme: 'light',
|
|
20
21
|
title: 'FAQ — Pulse Docs',
|
|
21
22
|
description: 'Frequently asked questions about the Pulse framework.',
|
|
22
|
-
styles:
|
|
23
|
+
styles: ['/pulse-ui.css', '/theme.css', '/docs.css'],
|
|
23
24
|
},
|
|
24
25
|
view: () => renderLayout({
|
|
25
26
|
currentHref: '/faq',
|
package/docs/src/pages/forms.js
CHANGED
|
@@ -7,9 +7,10 @@ const { prev, next } = prevNext('/forms')
|
|
|
7
7
|
export default {
|
|
8
8
|
route: '/forms',
|
|
9
9
|
meta: {
|
|
10
|
+
theme: 'light',
|
|
10
11
|
title: 'Forms — Pulse Docs',
|
|
11
12
|
description: 'Server-side form handling in Pulse. spec.submit processes POST requests without client JavaScript, with automatic CSRF protection and POST-redirect-GET.',
|
|
12
|
-
styles: ['/docs.css'],
|
|
13
|
+
styles: ['/theme.css', '/docs.css'],
|
|
13
14
|
},
|
|
14
15
|
view: () => renderLayout({
|
|
15
16
|
currentHref: '/forms',
|
|
@@ -7,9 +7,10 @@ const { prev, next } = prevNext('/getting-started')
|
|
|
7
7
|
export default {
|
|
8
8
|
route: '/getting-started',
|
|
9
9
|
meta: {
|
|
10
|
+
theme: 'light',
|
|
10
11
|
title: 'Getting Started — Pulse Docs',
|
|
11
12
|
description: 'Install Pulse and build your first page with an AI agent in minutes.',
|
|
12
|
-
styles: ['/docs.css'],
|
|
13
|
+
styles: ['/theme.css', '/docs.css'],
|
|
13
14
|
},
|
|
14
15
|
view: () => renderLayout({
|
|
15
16
|
currentHref: '/getting-started',
|
package/docs/src/pages/guard.js
CHANGED
|
@@ -7,9 +7,10 @@ const { prev, next } = prevNext('/guard')
|
|
|
7
7
|
export default {
|
|
8
8
|
route: '/guard',
|
|
9
9
|
meta: {
|
|
10
|
+
theme: 'light',
|
|
10
11
|
title: 'Guard — Pulse Docs',
|
|
11
12
|
description: 'Per-route authorization in Pulse. Guard functions run before server data fetchers and redirect unauthorized requests.',
|
|
12
|
-
styles: ['/docs.css'],
|
|
13
|
+
styles: ['/theme.css', '/docs.css'],
|
|
13
14
|
},
|
|
14
15
|
view: () => renderLayout({
|
|
15
16
|
currentHref: '/guard',
|