@vibes.diy/base 14.3.106 → 14.3.109

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 (66) hide show
  1. package/components/HomeBuildChips.d.ts +29 -0
  2. package/components/HomeBuildChips.js +152 -0
  3. package/components/HomeBuildChips.js.map +1 -0
  4. package/components/index.d.ts +1 -0
  5. package/components/index.js +1 -0
  6. package/components/index.js.map +1 -1
  7. package/components/vibe-menu/VibeMenu.js +5 -3
  8. package/components/vibe-menu/VibeMenu.js.map +1 -1
  9. package/components/vibe-menu/cards/AccountCard.d.ts +4 -0
  10. package/components/vibe-menu/cards/AccountCard.js +64 -1
  11. package/components/vibe-menu/cards/AccountCard.js.map +1 -1
  12. package/components/vibe-menu/cards/CodeCard.d.ts +2 -1
  13. package/components/vibe-menu/cards/CodeCard.js +12 -3
  14. package/components/vibe-menu/cards/CodeCard.js.map +1 -1
  15. package/components/vibe-menu/cards/CodeTabRow.d.ts +1 -1
  16. package/components/vibe-menu/cards/CodeTabRow.js +6 -0
  17. package/components/vibe-menu/cards/CodeTabRow.js.map +1 -1
  18. package/components/vibe-menu/cards/HomeCard.d.ts +8 -0
  19. package/components/vibe-menu/cards/HomeCard.js +67 -5
  20. package/components/vibe-menu/cards/HomeCard.js.map +1 -1
  21. package/components/vibe-menu/cards/ShareCard.d.ts +3 -0
  22. package/components/vibe-menu/cards/ShareCard.js +109 -16
  23. package/components/vibe-menu/cards/ShareCard.js.map +1 -1
  24. package/components/vibe-menu/index.d.ts +3 -0
  25. package/components/vibe-menu/index.js +3 -0
  26. package/components/vibe-menu/index.js.map +1 -1
  27. package/components/vibe-menu/moments.d.ts +9 -0
  28. package/components/vibe-menu/moments.js +6 -0
  29. package/components/vibe-menu/moments.js.map +1 -1
  30. package/components/vibe-menu/parts/AccessToggle.js +2 -1
  31. package/components/vibe-menu/parts/AccessToggle.js.map +1 -1
  32. package/components/vibe-menu/parts/CardTabRow.d.ts +27 -0
  33. package/components/vibe-menu/{sketches → parts}/CardTabRow.js +2 -7
  34. package/components/vibe-menu/parts/CardTabRow.js.map +1 -0
  35. package/components/vibe-menu/parts/Composer.js +2 -1
  36. package/components/vibe-menu/parts/Composer.js.map +1 -1
  37. package/components/vibe-menu/parts/MomentLine.js +10 -5
  38. package/components/vibe-menu/parts/MomentLine.js.map +1 -1
  39. package/components/vibe-menu/parts/SurveyStrip.d.ts +13 -3
  40. package/components/vibe-menu/parts/SurveyStrip.js +97 -54
  41. package/components/vibe-menu/parts/SurveyStrip.js.map +1 -1
  42. package/components/vibe-menu/parts/ThinkingLine.d.ts +24 -0
  43. package/components/vibe-menu/parts/ThinkingLine.js +77 -0
  44. package/components/vibe-menu/parts/ThinkingLine.js.map +1 -0
  45. package/components/vibe-menu/parts/brief-faces-art.d.ts +12 -0
  46. package/components/vibe-menu/parts/brief-faces-art.js +540 -0
  47. package/components/vibe-menu/parts/brief-faces-art.js.map +1 -0
  48. package/components/vibe-menu/sketches/CodeTierAudition.js +1 -1
  49. package/components/vibe-menu/sketches/CodeTierAudition.js.map +1 -1
  50. package/components/vibe-menu/slices.d.ts +5 -0
  51. package/components/vibe-menu/slices.js.map +1 -1
  52. package/components/vibe-menu/vibe-menu.styles.d.ts +1 -1
  53. package/components/vibe-menu/vibe-menu.styles.js +0 -25
  54. package/components/vibe-menu/vibe-menu.styles.js.map +1 -1
  55. package/package.json +5 -5
  56. package/components/vibe-menu/sketches/AccountTabAudition.d.ts +0 -11
  57. package/components/vibe-menu/sketches/AccountTabAudition.js +0 -90
  58. package/components/vibe-menu/sketches/AccountTabAudition.js.map +0 -1
  59. package/components/vibe-menu/sketches/CardTabRow.d.ts +0 -27
  60. package/components/vibe-menu/sketches/CardTabRow.js.map +0 -1
  61. package/components/vibe-menu/sketches/HomeTabAudition.d.ts +0 -26
  62. package/components/vibe-menu/sketches/HomeTabAudition.js +0 -87
  63. package/components/vibe-menu/sketches/HomeTabAudition.js.map +0 -1
  64. package/components/vibe-menu/sketches/ShareTabAudition.d.ts +0 -14
  65. package/components/vibe-menu/sketches/ShareTabAudition.js +0 -155
  66. package/components/vibe-menu/sketches/ShareTabAudition.js.map +0 -1
@@ -0,0 +1,77 @@
1
+ import * as React from "react";
2
+ import { useEffect, useState } from "react";
3
+ import { BRIEF_FACES } from "./brief-faces-art.js";
4
+ export function formatBuildElapsed(elapsedMs) {
5
+ const clamped = Number.isFinite(elapsedMs) ? Math.max(0, Math.floor(elapsedMs / 1000)) : 0;
6
+ const seconds = clamped % 60;
7
+ const minutes = Math.floor(clamped / 60) % 60;
8
+ const hours = Math.floor(clamped / 3600);
9
+ const two = (n) => (n < 10 ? `0${n}` : `${n}`);
10
+ if (hours > 0)
11
+ return `${hours}:${two(minutes)}:${two(seconds)}`;
12
+ return `${two(minutes)}:${two(seconds)}`;
13
+ }
14
+ const FACES_CSS = `
15
+ .thinking-line-face {
16
+ grid-area: 1 / 1; width: 100%; height: 100%; opacity: 0;
17
+ animation: thinking-line-faces ${(BRIEF_FACES.length * 0.35).toFixed(2)}s steps(1) infinite;
18
+ }
19
+ .thinking-line-face path { fill: var(--faces-ink, light-dark(#000, #fff)); }
20
+ @keyframes thinking-line-faces {
21
+ 0% { opacity: 1; }
22
+ ${(100 / BRIEF_FACES.length).toFixed(3)}% { opacity: 0; }
23
+ 100% { opacity: 0; }
24
+ }
25
+ @media (prefers-reduced-motion: reduce) {
26
+ .thinking-line-face { animation: none; }
27
+ .thinking-line-face:first-child { opacity: 1; }
28
+ }
29
+ `;
30
+ export function FacesGlyph({ size = 18, ink = "contrast", style }) {
31
+ const inkVar = ink === "current" ? { "--faces-ink": "currentColor" } : null;
32
+ return (React.createElement(React.Fragment, null,
33
+ React.createElement("style", null, FACES_CSS),
34
+ React.createElement("span", { "aria-hidden": true, className: "vm-faces", "data-testid": "thinking-line-glyph", style: { display: "grid", width: size, height: size, flexShrink: 0, ...inkVar, ...style } }, BRIEF_FACES.map((face, index) => (React.createElement("svg", { key: face.viewBox, className: "thinking-line-face", style: { animationDelay: `${(index * 0.35).toFixed(2)}s` }, viewBox: face.viewBox, fill: "none", preserveAspectRatio: "xMidYMid meet" }, face.paths.map((path, pathIndex) => (React.createElement("path", { key: pathIndex, ...path })))))))));
35
+ }
36
+ export function useElapsedText(startedAtMs, stoppedAtMs) {
37
+ const [now, setNow] = useState(undefined);
38
+ const stopped = stoppedAtMs !== undefined;
39
+ useEffect(() => {
40
+ if (startedAtMs === undefined || stopped)
41
+ return;
42
+ setNow(Date.now());
43
+ const id = setInterval(() => {
44
+ setNow(Date.now());
45
+ }, 1000);
46
+ const onVisible = () => {
47
+ setNow(Date.now());
48
+ };
49
+ document.addEventListener("visibilitychange", onVisible);
50
+ return () => {
51
+ clearInterval(id);
52
+ document.removeEventListener("visibilitychange", onVisible);
53
+ };
54
+ }, [startedAtMs, stopped]);
55
+ if (startedAtMs === undefined)
56
+ return undefined;
57
+ if (stoppedAtMs !== undefined)
58
+ return formatBuildElapsed(Math.max(0, stoppedAtMs - startedAtMs));
59
+ if (now === undefined)
60
+ return undefined;
61
+ return formatBuildElapsed(now - startedAtMs);
62
+ }
63
+ export function LiveThinkingLine({ verb, startedAtMs, stoppedAtMs, ink, }) {
64
+ return (React.createElement(ThinkingLine, { verb: verb, wrapping: stoppedAtMs !== undefined, elapsed: useElapsedText(startedAtMs, stoppedAtMs), ink: ink }));
65
+ }
66
+ export function ThinkingLine({ verb, elapsed, complete = false, wrapping = false, ink }) {
67
+ const word = complete ? "Vibe is ready, enjoy." : (verb ?? "Waiting for a response");
68
+ return (React.createElement(React.Fragment, null,
69
+ React.createElement("span", { className: "flex w-full min-w-0 items-baseline gap-2", "data-testid": "thinking-line" },
70
+ complete === false && wrapping === false && (React.createElement(FacesGlyph, { size: 18, ink: ink, style: { alignSelf: "flex-start", marginTop: "calc(0.75em - 9px)" } })),
71
+ complete === false && elapsed !== undefined && (React.createElement("span", { "aria-hidden": true, className: "min-w-0 shrink-0", "data-testid": "thinking-line-elapsed", style: { fontVariantNumeric: "tabular-nums" } }, elapsed)),
72
+ complete === false && elapsed !== undefined && (React.createElement("span", { "aria-hidden": true, className: "shrink-0" }, "\u00B7")),
73
+ React.createElement("span", { role: "status", "aria-live": "polite", className: "min-w-0 truncate", "data-testid": "thinking-line-verb", title: word },
74
+ word,
75
+ complete === false && wrapping === false ? "…" : ""))));
76
+ }
77
+ //# sourceMappingURL=ThinkingLine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThinkingLine.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/ThinkingLine.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface BriefMotifPath {
2
+ readonly d: string;
3
+ readonly fill: string;
4
+ readonly stroke?: string;
5
+ readonly strokeWidth?: number;
6
+ readonly transform?: string;
7
+ }
8
+ export interface BriefMotif {
9
+ readonly viewBox: string;
10
+ readonly paths: readonly BriefMotifPath[];
11
+ }
12
+ export declare const BRIEF_FACES: readonly BriefMotif[];