@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.
- package/components/HomeBuildChips.d.ts +29 -0
- package/components/HomeBuildChips.js +152 -0
- package/components/HomeBuildChips.js.map +1 -0
- package/components/index.d.ts +1 -0
- package/components/index.js +1 -0
- package/components/index.js.map +1 -1
- package/components/vibe-menu/VibeMenu.js +5 -3
- package/components/vibe-menu/VibeMenu.js.map +1 -1
- package/components/vibe-menu/cards/AccountCard.d.ts +4 -0
- package/components/vibe-menu/cards/AccountCard.js +64 -1
- package/components/vibe-menu/cards/AccountCard.js.map +1 -1
- package/components/vibe-menu/cards/CodeCard.d.ts +2 -1
- package/components/vibe-menu/cards/CodeCard.js +12 -3
- package/components/vibe-menu/cards/CodeCard.js.map +1 -1
- package/components/vibe-menu/cards/CodeTabRow.d.ts +1 -1
- package/components/vibe-menu/cards/CodeTabRow.js +6 -0
- package/components/vibe-menu/cards/CodeTabRow.js.map +1 -1
- package/components/vibe-menu/cards/HomeCard.d.ts +8 -0
- package/components/vibe-menu/cards/HomeCard.js +67 -5
- package/components/vibe-menu/cards/HomeCard.js.map +1 -1
- package/components/vibe-menu/cards/ShareCard.d.ts +3 -0
- package/components/vibe-menu/cards/ShareCard.js +109 -16
- package/components/vibe-menu/cards/ShareCard.js.map +1 -1
- package/components/vibe-menu/index.d.ts +3 -0
- package/components/vibe-menu/index.js +3 -0
- package/components/vibe-menu/index.js.map +1 -1
- package/components/vibe-menu/moments.d.ts +9 -0
- package/components/vibe-menu/moments.js +6 -0
- package/components/vibe-menu/moments.js.map +1 -1
- package/components/vibe-menu/parts/AccessToggle.js +2 -1
- package/components/vibe-menu/parts/AccessToggle.js.map +1 -1
- package/components/vibe-menu/parts/CardTabRow.d.ts +27 -0
- package/components/vibe-menu/{sketches → parts}/CardTabRow.js +2 -7
- package/components/vibe-menu/parts/CardTabRow.js.map +1 -0
- package/components/vibe-menu/parts/Composer.js +2 -1
- package/components/vibe-menu/parts/Composer.js.map +1 -1
- package/components/vibe-menu/parts/MomentLine.js +10 -5
- package/components/vibe-menu/parts/MomentLine.js.map +1 -1
- package/components/vibe-menu/parts/SurveyStrip.d.ts +13 -3
- package/components/vibe-menu/parts/SurveyStrip.js +97 -54
- package/components/vibe-menu/parts/SurveyStrip.js.map +1 -1
- package/components/vibe-menu/parts/ThinkingLine.d.ts +24 -0
- package/components/vibe-menu/parts/ThinkingLine.js +77 -0
- package/components/vibe-menu/parts/ThinkingLine.js.map +1 -0
- package/components/vibe-menu/parts/brief-faces-art.d.ts +12 -0
- package/components/vibe-menu/parts/brief-faces-art.js +540 -0
- package/components/vibe-menu/parts/brief-faces-art.js.map +1 -0
- package/components/vibe-menu/sketches/CodeTierAudition.js +1 -1
- package/components/vibe-menu/sketches/CodeTierAudition.js.map +1 -1
- package/components/vibe-menu/slices.d.ts +5 -0
- package/components/vibe-menu/slices.js.map +1 -1
- package/components/vibe-menu/vibe-menu.styles.d.ts +1 -1
- package/components/vibe-menu/vibe-menu.styles.js +0 -25
- package/components/vibe-menu/vibe-menu.styles.js.map +1 -1
- package/package.json +5 -5
- package/components/vibe-menu/sketches/AccountTabAudition.d.ts +0 -11
- package/components/vibe-menu/sketches/AccountTabAudition.js +0 -90
- package/components/vibe-menu/sketches/AccountTabAudition.js.map +0 -1
- package/components/vibe-menu/sketches/CardTabRow.d.ts +0 -27
- package/components/vibe-menu/sketches/CardTabRow.js.map +0 -1
- package/components/vibe-menu/sketches/HomeTabAudition.d.ts +0 -26
- package/components/vibe-menu/sketches/HomeTabAudition.js +0 -87
- package/components/vibe-menu/sketches/HomeTabAudition.js.map +0 -1
- package/components/vibe-menu/sketches/ShareTabAudition.d.ts +0 -14
- package/components/vibe-menu/sketches/ShareTabAudition.js +0 -155
- 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[];
|