@invisibleloop/pulse 0.20.5 → 0.20.6

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.
Files changed (79) hide show
  1. package/.claude/pulse-checklist.md +1 -2
  2. package/CLAUDE.md +1 -2
  3. package/docs/.claude/pulse-checklist.md +1 -2
  4. package/docs/public/coutumes.css +21 -44
  5. package/docs/public/docs.css +67 -0
  6. package/docs/public/pulse-ui.css +8 -1037
  7. package/docs/public/retrowheels.css +23 -0
  8. package/docs/public/shop.css +35 -1
  9. package/docs/public/sparkys.css +56 -23
  10. package/docs/server.js +0 -11
  11. package/docs/src/lib/nav.js +0 -11
  12. package/docs/src/pages/components/charts.js +2 -1
  13. package/docs/src/pages/components/grid.js +9 -5
  14. package/docs/src/pages/components.js +0 -4
  15. package/docs/src/pages/home.js +16 -1
  16. package/docs/src/pages/how-it-works.js +20 -14
  17. package/docs/src/pages/templates/coutumes.js +83 -72
  18. package/docs/src/pages/templates/mobile-app.js +36 -9
  19. package/docs/src/pages/templates/retrowheels.js +17 -4
  20. package/docs/src/pages/templates/shop.js +21 -10
  21. package/docs/src/pages/templates/sparkys.js +35 -20
  22. package/examples/.claude/pulse-checklist.md +1 -2
  23. package/examples/examples.test.js +4 -4
  24. package/examples/pricing.js +21 -3
  25. package/examples/public/pulse-ui.css +8 -1037
  26. package/examples/retrowheels.css +23 -0
  27. package/examples/retrowheels.js +17 -4
  28. package/package.json +5 -1
  29. package/public/.pulse-ui-version +1 -1
  30. package/public/pulse-ui.css +8 -1037
  31. package/src/agent/checklist.md +1 -2
  32. package/src/agent/guide-components.md +43 -67
  33. package/src/agent/guide-design-gallery.md +14 -14
  34. package/src/agent/guide-design-references.md +21 -21
  35. package/src/agent/guide-styles.md +2 -2
  36. package/src/agent/guide-templates.md +6 -6
  37. package/src/agent/identity.md +1 -1
  38. package/src/agent/workflow.md +1 -2
  39. package/src/mcp/server.js +31 -24
  40. package/src/ui/index.js +0 -27
  41. package/src/ui/ui.test.js +0 -137
  42. package/types/charts.d.ts +61 -0
  43. package/types/ui.d.ts +1 -129
  44. package/docs/src/pages/components/banner.js +0 -44
  45. package/docs/src/pages/components/carousel.js +0 -71
  46. package/docs/src/pages/components/code-window.js +0 -56
  47. package/docs/src/pages/components/decorate.js +0 -74
  48. package/docs/src/pages/components/gallery.js +0 -102
  49. package/docs/src/pages/components/list.js +0 -111
  50. package/docs/src/pages/components/marquee.js +0 -76
  51. package/docs/src/pages/components/photo-card.js +0 -74
  52. package/docs/src/pages/components/pricing.js +0 -67
  53. package/docs/src/pages/components/testimonial.js +0 -48
  54. package/docs/src/pages/components/timeline.js +0 -226
  55. package/src/ui/banner.js +0 -41
  56. package/src/ui/brand-statement.js +0 -58
  57. package/src/ui/carousel.js +0 -59
  58. package/src/ui/code-window.js +0 -39
  59. package/src/ui/colophon.js +0 -29
  60. package/src/ui/contact-row.js +0 -41
  61. package/src/ui/decorate.js +0 -55
  62. package/src/ui/display-heading.js +0 -44
  63. package/src/ui/drop-cap.js +0 -29
  64. package/src/ui/editorial-hero.js +0 -63
  65. package/src/ui/entry-list.js +0 -36
  66. package/src/ui/gallery.js +0 -60
  67. package/src/ui/image-pair.js +0 -72
  68. package/src/ui/list.js +0 -36
  69. package/src/ui/marquee.js +0 -48
  70. package/src/ui/photo-card.js +0 -44
  71. package/src/ui/pricing.js +0 -56
  72. package/src/ui/product-card.js +0 -65
  73. package/src/ui/section-label.js +0 -38
  74. package/src/ui/service-card.js +0 -47
  75. package/src/ui/stat-grid.js +0 -40
  76. package/src/ui/testimonial.js +0 -59
  77. package/src/ui/timeline.js +0 -72
  78. package/src/ui/top-strip.js +0 -47
  79. 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 → `testimonial({ quote, name, role, src })`
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 → `testimonial({ quote, name, role, src })`
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 → `testimonial({ quote, name, role, src })`
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, ... })`
@@ -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
- height: 100%;
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 .ui-editorial-hero-overlay {
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 .ui-editorial-hero-overlay span {
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 .ui-editorial-hero-overlay span:nth-child(3) {
472
+ .coutumes-hero-text span:nth-child(3) {
505
473
  margin-top: 1.7em;
506
474
  }
507
- /* Lock hero images to viewport height (prevents 3/4 aspect-ratio making hero ~1700px tall) */
508
- .coutumes-hero .ui-editorial-hero-images {
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
- .ui-image-pair {
487
+ .coutumes-split-images {
520
488
  background: var(--coutumes-white);
521
489
  }
522
490
 
523
- .ui-image-pair-link {
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-grid .ui-product-card-caption {
505
+ .coutumes-product-caption {
532
506
  background: var(--coutumes-white);
533
507
  padding-bottom: 10rem;
508
+ padding-top: 1rem;
534
509
  }
535
- .coutumes-product-grid .ui-product-card-name {
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-grid .ui-product-card-price {
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 */
@@ -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
+ }