@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
|
@@ -31,9 +31,8 @@ Before finishing any spec, verify every point below. Fix anything that fails.
|
|
|
31
31
|
- Hero sections → `hero({ title, subtitle, actions, image, ... })`
|
|
32
32
|
- Product/service cards → `card({ title, body, image, footer, ... })`
|
|
33
33
|
- Image + text two-column layouts → `media({ image, content, reverse })`
|
|
34
|
-
- Horizontal strips/banners → `banner({ content, variant })`
|
|
35
34
|
- Feature tiles → `feature({ icon, title, description })`
|
|
36
|
-
- Testimonials → `
|
|
35
|
+
- Testimonials → `card({ content, footer })` with quote + avatar/name in the content slot
|
|
37
36
|
- CTAs → `cta({ title, subtitle, actions })`
|
|
38
37
|
- Navigation → `nav({ logo, links, actions })`
|
|
39
38
|
- Footers → `footer({ logo, links, columns, legal, ... })`
|
package/CLAUDE.md
CHANGED
|
@@ -673,9 +673,8 @@ Before writing any UI HTML by hand, check `src/ui/index.js` — there are 50+ co
|
|
|
673
673
|
- Hero sections → `hero({ title, subtitle, actions, image, layout })`
|
|
674
674
|
- Product/service cards → `card({ title, body, image, footer })`
|
|
675
675
|
- Image + text layouts → `media({ image, content, reverse })`
|
|
676
|
-
- Horizontal strips → `banner({ content, variant })`
|
|
677
676
|
- Feature tiles → `feature({ icon, title, description })`
|
|
678
|
-
- Testimonials → `
|
|
677
|
+
- Testimonials → `card({ content, footer })` with quote + avatar/name in the content slot
|
|
679
678
|
- Call-to-action sections → `cta({ title, subtitle, actions })`
|
|
680
679
|
|
|
681
680
|
If you're about to write `class="hero"` or `class="product-card"`, stop — import the component instead. You can add custom CSS on top of components for brand-specific styling, but the structure and accessibility must come from the component.
|
|
@@ -31,9 +31,8 @@ Before finishing any spec, verify every point below. Fix anything that fails.
|
|
|
31
31
|
- Hero sections → `hero({ title, subtitle, actions, image, ... })`
|
|
32
32
|
- Product/service cards → `card({ title, body, image, footer, ... })`
|
|
33
33
|
- Image + text two-column layouts → `media({ image, content, reverse })`
|
|
34
|
-
- Horizontal strips/banners → `banner({ content, variant })`
|
|
35
34
|
- Feature tiles → `feature({ icon, title, description })`
|
|
36
|
-
- Testimonials → `
|
|
35
|
+
- Testimonials → `card({ content, footer })` with quote + avatar/name in the content slot
|
|
37
36
|
- CTAs → `cta({ title, subtitle, actions })`
|
|
38
37
|
- Navigation → `nav({ logo, links, actions })`
|
|
39
38
|
- Footers → `footer({ logo, links, columns, legal, ... })`
|
package/docs/public/coutumes.css
CHANGED
|
@@ -175,21 +175,6 @@
|
|
|
175
175
|
mix-blend-mode: multiply;
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
.coutumes-hero-cta {
|
|
179
|
-
position: absolute;
|
|
180
|
-
bottom: 32px;
|
|
181
|
-
left: 50%;
|
|
182
|
-
transform: translateX(-50%);
|
|
183
|
-
font-family: var(--coutumes-font-ui);
|
|
184
|
-
font-size: 0.6875rem;
|
|
185
|
-
letter-spacing: 0.12em;
|
|
186
|
-
text-transform: uppercase;
|
|
187
|
-
color: var(--coutumes-white);
|
|
188
|
-
text-decoration: none;
|
|
189
|
-
white-space: nowrap;
|
|
190
|
-
z-index: 20;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
178
|
/* ── Editorial quote ── */
|
|
194
179
|
.coutumes-editorial-quote {
|
|
195
180
|
padding: 80px 24px;
|
|
@@ -227,17 +212,16 @@
|
|
|
227
212
|
.coutumes-product-card {
|
|
228
213
|
position: relative;
|
|
229
214
|
display: block;
|
|
230
|
-
overflow: hidden;
|
|
231
215
|
text-decoration: none;
|
|
232
216
|
color: var(--coutumes-black);
|
|
233
|
-
aspect-ratio: 4/5;
|
|
234
217
|
}
|
|
235
218
|
|
|
236
219
|
.coutumes-product-card img {
|
|
237
220
|
width: 100%;
|
|
238
|
-
|
|
221
|
+
aspect-ratio: 4/5;
|
|
239
222
|
object-fit: cover;
|
|
240
223
|
display: block;
|
|
224
|
+
overflow: hidden;
|
|
241
225
|
transition: transform 0.5s ease;
|
|
242
226
|
}
|
|
243
227
|
|
|
@@ -258,16 +242,6 @@
|
|
|
258
242
|
z-index: 5;
|
|
259
243
|
}
|
|
260
244
|
|
|
261
|
-
.coutumes-product-name {
|
|
262
|
-
position: absolute;
|
|
263
|
-
bottom: 16px;
|
|
264
|
-
left: 16px;
|
|
265
|
-
font-family: var(--coutumes-font-body);
|
|
266
|
-
font-size: 0.9375rem;
|
|
267
|
-
color: var(--coutumes-white);
|
|
268
|
-
text-shadow: 0 1px 4px rgba(0,0,0,0.3);
|
|
269
|
-
}
|
|
270
|
-
|
|
271
245
|
/* ── 50/50 split images ── */
|
|
272
246
|
.coutumes-split-images {
|
|
273
247
|
display: grid;
|
|
@@ -482,30 +456,24 @@
|
|
|
482
456
|
.coutumes-footer-links { grid-template-columns: 1fr 1fr; }
|
|
483
457
|
}
|
|
484
458
|
|
|
485
|
-
/* Override Pulse accent purple → coutumes black for banner contrast (WCAG AA) */
|
|
486
|
-
.ui-banner--promo {
|
|
487
|
-
background: var(--coutumes-black);
|
|
488
|
-
color: var(--coutumes-white);
|
|
489
|
-
}
|
|
490
|
-
|
|
491
459
|
/* Hero overlay — sans-serif display font, top-aligned so text clips at top */
|
|
492
|
-
.coutumes-hero
|
|
460
|
+
.coutumes-hero-text {
|
|
493
461
|
justify-content: flex-start;
|
|
494
462
|
padding-top: 0;
|
|
495
463
|
bottom: -2em; /* extend past hero bottom → clips there */
|
|
496
464
|
mix-blend-mode: normal;
|
|
497
465
|
}
|
|
498
|
-
.coutumes-hero
|
|
466
|
+
.coutumes-hero-text span {
|
|
499
467
|
font-family: var(--coutumes-font-display);
|
|
500
468
|
font-weight: 400;
|
|
501
469
|
font-size: clamp(5rem, 14vw, 18rem);
|
|
502
470
|
}
|
|
503
471
|
/* Bigger gap between SILVER LANDS and CAPSULE */
|
|
504
|
-
.coutumes-hero
|
|
472
|
+
.coutumes-hero-text span:nth-child(3) {
|
|
505
473
|
margin-top: 1.7em;
|
|
506
474
|
}
|
|
507
|
-
/* Lock hero images to viewport height (prevents
|
|
508
|
-
.coutumes-hero
|
|
475
|
+
/* Lock hero images to viewport height (prevents overly tall hero) */
|
|
476
|
+
.coutumes-hero-images {
|
|
509
477
|
aspect-ratio: unset;
|
|
510
478
|
height: 100svh;
|
|
511
479
|
}
|
|
@@ -516,32 +484,41 @@
|
|
|
516
484
|
}
|
|
517
485
|
|
|
518
486
|
/* Image pair links */
|
|
519
|
-
.
|
|
487
|
+
.coutumes-split-images {
|
|
520
488
|
background: var(--coutumes-white);
|
|
521
489
|
}
|
|
522
490
|
|
|
523
|
-
.
|
|
491
|
+
.coutumes-split-col {
|
|
492
|
+
display: flex;
|
|
493
|
+
flex-direction: column;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
.coutumes-split-link {
|
|
524
497
|
font-family: var(--coutumes-font-body);
|
|
525
498
|
color: var(--coutumes-black);
|
|
526
499
|
padding: 0.75rem 0;
|
|
527
500
|
display: block;
|
|
501
|
+
text-decoration: none;
|
|
528
502
|
}
|
|
529
503
|
|
|
530
504
|
/* Product grid — name/price below image */
|
|
531
|
-
.coutumes-product-
|
|
505
|
+
.coutumes-product-caption {
|
|
532
506
|
background: var(--coutumes-white);
|
|
533
507
|
padding-bottom: 10rem;
|
|
508
|
+
padding-top: 1rem;
|
|
534
509
|
}
|
|
535
|
-
.coutumes-product-
|
|
510
|
+
.coutumes-product-name {
|
|
536
511
|
font-family: var(--coutumes-font-body);
|
|
537
512
|
font-size: 1.0625rem;
|
|
538
513
|
color: var(--coutumes-black);
|
|
514
|
+
margin: 0;
|
|
539
515
|
}
|
|
540
|
-
.coutumes-product-
|
|
516
|
+
.coutumes-product-price {
|
|
541
517
|
font-family: var(--coutumes-font-ui);
|
|
542
518
|
font-size: 0.875rem;
|
|
543
519
|
color: var(--coutumes-black);
|
|
544
520
|
opacity: 0.75;
|
|
521
|
+
margin: 0;
|
|
545
522
|
}
|
|
546
523
|
|
|
547
524
|
/* Editorial quote — non-italic, generous padding, narrow column */
|
package/docs/public/docs.css
CHANGED
|
@@ -1237,7 +1237,7 @@ a:hover {
|
|
|
1237
1237
|
text-align: center;
|
|
1238
1238
|
}
|
|
1239
1239
|
.demo-preview.is-light {
|
|
1240
|
-
background: #f0f0f8;
|
|
1240
|
+
background: var(--surface-2, #f0f0f8);
|
|
1241
1241
|
}
|
|
1242
1242
|
|
|
1243
1243
|
/* Theme toggle button */
|
|
@@ -1745,7 +1745,7 @@ a:hover {
|
|
|
1745
1745
|
padding: 0 2rem;
|
|
1746
1746
|
position: sticky;
|
|
1747
1747
|
top: 0;
|
|
1748
|
-
background: rgba(13, 13, 16, 0.9);
|
|
1748
|
+
background: var(--header-bg, rgba(13, 13, 16, 0.9));
|
|
1749
1749
|
backdrop-filter: blur(8px);
|
|
1750
1750
|
z-index: 10;
|
|
1751
1751
|
}
|
|
@@ -1884,7 +1884,7 @@ a:hover {
|
|
|
1884
1884
|
|
|
1885
1885
|
.docs-content strong:not([class*="ui-"]) {
|
|
1886
1886
|
font-weight: 600;
|
|
1887
|
-
color:
|
|
1887
|
+
color: var(--text);
|
|
1888
1888
|
}
|
|
1889
1889
|
|
|
1890
1890
|
.docs-content
|
|
@@ -2063,7 +2063,7 @@ tr:hover td {
|
|
|
2063
2063
|
}
|
|
2064
2064
|
|
|
2065
2065
|
.callout-note .callout-icon {
|
|
2066
|
-
color: #82aaff;
|
|
2066
|
+
color: var(--callout-note-icon, #82aaff);
|
|
2067
2067
|
}
|
|
2068
2068
|
.callout-warning .callout-icon {
|
|
2069
2069
|
color: var(--red);
|
|
@@ -2147,8 +2147,8 @@ tr:hover td {
|
|
|
2147
2147
|
}
|
|
2148
2148
|
|
|
2149
2149
|
.tag-required {
|
|
2150
|
-
background: rgba(255, 107, 107, 0.15);
|
|
2151
|
-
color: #ff8080;
|
|
2150
|
+
background: var(--tag-required-bg, rgba(255, 107, 107, 0.15));
|
|
2151
|
+
color: var(--tag-required-text, #ff8080);
|
|
2152
2152
|
}
|
|
2153
2153
|
.tag-optional {
|
|
2154
2154
|
background: var(--surface-2);
|
|
@@ -2319,3 +2319,70 @@ hr.doc-hr {
|
|
|
2319
2319
|
word-break: break-all;
|
|
2320
2320
|
line-height: 1.4;
|
|
2321
2321
|
}
|
|
2322
|
+
|
|
2323
|
+
/* ── How It Works — numbered vertical flow diagram ──────────────────────────
|
|
2324
|
+
Raw HTML (creative override), replacing the removed timeline()/
|
|
2325
|
+
timelineItem() components — see docs/src/pages/how-it-works.js. */
|
|
2326
|
+
.hiw-flow {
|
|
2327
|
+
list-style: none;
|
|
2328
|
+
padding: 0;
|
|
2329
|
+
margin: 0;
|
|
2330
|
+
}
|
|
2331
|
+
|
|
2332
|
+
.hiw-flow-item {
|
|
2333
|
+
display: flex;
|
|
2334
|
+
gap: 1rem;
|
|
2335
|
+
}
|
|
2336
|
+
|
|
2337
|
+
.hiw-flow-side {
|
|
2338
|
+
display: flex;
|
|
2339
|
+
flex-direction: column;
|
|
2340
|
+
align-items: center;
|
|
2341
|
+
flex-shrink: 0;
|
|
2342
|
+
}
|
|
2343
|
+
|
|
2344
|
+
.hiw-flow-dot {
|
|
2345
|
+
width: 2rem;
|
|
2346
|
+
height: 2rem;
|
|
2347
|
+
border-radius: 50%;
|
|
2348
|
+
flex-shrink: 0;
|
|
2349
|
+
display: flex;
|
|
2350
|
+
align-items: center;
|
|
2351
|
+
justify-content: center;
|
|
2352
|
+
position: relative;
|
|
2353
|
+
z-index: 1;
|
|
2354
|
+
font-size: 1rem;
|
|
2355
|
+
background: var(--accent-dim);
|
|
2356
|
+
color: var(--accent);
|
|
2357
|
+
}
|
|
2358
|
+
|
|
2359
|
+
.hiw-flow-connector {
|
|
2360
|
+
width: 2px;
|
|
2361
|
+
background: var(--border);
|
|
2362
|
+
flex: 1;
|
|
2363
|
+
min-height: 0.75rem;
|
|
2364
|
+
}
|
|
2365
|
+
|
|
2366
|
+
.hiw-flow-item:first-child .hiw-flow-connector--before,
|
|
2367
|
+
.hiw-flow-item:last-child .hiw-flow-connector--after {
|
|
2368
|
+
visibility: hidden;
|
|
2369
|
+
}
|
|
2370
|
+
|
|
2371
|
+
.hiw-flow-main {
|
|
2372
|
+
flex: 1;
|
|
2373
|
+
padding-bottom: 1.75rem;
|
|
2374
|
+
}
|
|
2375
|
+
|
|
2376
|
+
.hiw-flow-item:last-child .hiw-flow-main {
|
|
2377
|
+
padding-bottom: 0;
|
|
2378
|
+
}
|
|
2379
|
+
|
|
2380
|
+
.hiw-flow-label {
|
|
2381
|
+
display: block;
|
|
2382
|
+
font-size: 0.72rem;
|
|
2383
|
+
font-weight: 600;
|
|
2384
|
+
color: var(--muted);
|
|
2385
|
+
letter-spacing: 0.05em;
|
|
2386
|
+
text-transform: uppercase;
|
|
2387
|
+
margin-bottom: 0.35rem;
|
|
2388
|
+
}
|