@vibes.diy/base 14.3.112 → 14.3.113

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.
@@ -1,5 +1,6 @@
1
1
  import * as React from "react";
2
2
  import type { BuildPhase } from "@vibes.diy/api-types";
3
+ import { type HomeBuildDockHeader } from "./homeBuildDockCopy.js";
3
4
  export type HomeBuildChipStatus = "starting" | "planning" | "building" | "queued" | "needs-you" | "ready" | "continue" | "failed" | "add-credits" | "sign-in" | "saved";
4
5
  export interface HomeBuildChip {
5
6
  readonly id: string;
@@ -15,6 +16,9 @@ export interface HomeBuildChipArrival {
15
16
  };
16
17
  }
17
18
  export declare const HOME_BUILD_CHIP_LABELS: Readonly<Record<HomeBuildChipStatus, string>>;
19
+ export declare function homeBuildDockHeader(items: readonly Pick<HomeBuildChip, "status">[], opts?: {
20
+ readonly returning?: boolean;
21
+ }): HomeBuildDockHeader;
18
22
  export declare function homeBuildChipStatus(phase: BuildPhase, opts?: {
19
23
  readonly guest?: boolean;
20
24
  }): HomeBuildChipStatus;
@@ -1,5 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { HOME_BRAND_FONT } from "./homeBrandFont.js";
3
+ import { HOME_BUILD_DOCK_COPY, homeBuildDockHeaderText } from "./homeBuildDockCopy.js";
3
4
  const paint = [
4
5
  { color: "#ef77a9", face: "game", ink: "#151515" },
5
6
  { color: "#445796", face: "education", ink: "#FEFFF1" },
@@ -19,6 +20,21 @@ export const HOME_BUILD_CHIP_LABELS = {
19
20
  "sign-in": "Sign in",
20
21
  saved: "Open app",
21
22
  };
23
+ const OPENABLE_STATUSES = ["ready", "saved", "continue"];
24
+ const RUNNING_STATUSES = ["starting", "planning", "building", "queued"];
25
+ export function homeBuildDockHeader(items, opts = {}) {
26
+ if (opts.returning === true)
27
+ return "returning";
28
+ const ready = items.filter((item) => OPENABLE_STATUSES.includes(item.status)).length;
29
+ const running = items.filter((item) => RUNNING_STATUSES.includes(item.status)).length;
30
+ if (ready > 0 && ready === items.length)
31
+ return ready === 1 ? "ready-one" : "ready-many";
32
+ if (ready > 0)
33
+ return "mixed";
34
+ if (running > 0)
35
+ return running === 1 ? "building-one" : "building-many";
36
+ return "attention";
37
+ }
22
38
  const LIVE_STATUSES = ["starting", "planning", "building"];
23
39
  export function homeBuildChipStatus(phase, opts = {}) {
24
40
  switch (phase) {
@@ -68,6 +84,8 @@ const css = `
68
84
  .home-build-chip-slot:last-child .home-build-chip:hover .home-build-chip-title,.home-build-chip-slot:last-child .home-build-chip:focus .home-build-chip-title{transform:translateY(0)}
69
85
  .home-build-chip-slot:last-child .home-build-chip-title::after{left:auto;right:24px}
70
86
  .home-build-chip-status{position:absolute;left:50%;bottom:-12px;transform:translateX(-50%);display:flex;gap:5px;align-items:center;justify-content:center;white-space:nowrap;background:var(--hbc-color);color:var(--hbc-flag-ink);border-radius:5px;padding:5px 8px;font-size:12px;line-height:1.3;font-weight:700}
87
+ .home-build-chip[data-status=ready]{animation:hbc-ready-in .5s cubic-bezier(.2,.8,.2,1) 1}
88
+ .home-build-chip[data-status=ready] .home-build-chip-status{box-shadow:0 0 0 2px var(--hbc-ink)}
71
89
  .home-build-chip-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}
72
90
  .home-build-chip[data-live=true] .home-build-chip-dot{animation:hbc-breathe 1.4s ease-in-out infinite}
73
91
  .home-build-chip-dismiss{position:absolute;top:-10px;right:-10px;z-index:2;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;border:2px solid var(--hbc-ink);background:var(--hbc-paper);color:var(--hbc-ink);font:inherit;font-size:14px;line-height:1;font-weight:700;cursor:pointer;opacity:0;transition:opacity .15s}
@@ -75,9 +93,10 @@ const css = `
75
93
  .home-build-chip-new{display:flex;flex-direction:column;gap:6px;justify-content:center;box-shadow:none;background:var(--hbc-field);border:2px dashed var(--vibes-home-title-ink,#55564e);color:var(--vibes-home-title-ink,#414139);font-size:12px;line-height:1.2;font-weight:700}
76
94
  .home-build-chip-new:hover{box-shadow:none}.home-build-chip-new span{font-size:26px}
77
95
  @keyframes hbc-breathe{50%{opacity:.25}}
96
+ @keyframes hbc-ready-in{40%{transform:translateY(-4px)}}
78
97
  @media(hover:none){.home-build-chip-dismiss{opacity:1}}
79
98
  @media(max-width:600px){.home-build-chips{width:calc(100% - 32px)}.home-build-chips p{font-size:14px}.home-build-chip-row{gap:14px}.home-build-chip-slot{flex-basis:clamp(58px,18vw,72px);width:clamp(58px,18vw,72px)}.home-build-chip{width:100%;height:76px;border-radius:15px;padding:8px}.home-build-chip img{width:44px;height:44px}.home-build-chip-title{max-width:170px}.home-build-chip-title-text{font-size:12px}.home-build-chip-status{font-size:11px;padding:5px 6px;gap:3px}.home-build-chip-new{font-size:11px}}
80
- @media(prefers-reduced-motion:reduce){.home-build-chip,.home-build-chip-title{transition:none;animation:none}.home-build-chip-dot{animation:none!important}}
99
+ @media(prefers-reduced-motion:reduce){.home-build-chip,.home-build-chip-title{transition:none;animation:none}.home-build-chip-dot{animation:none!important}.home-build-chip[data-status=ready]{animation:none}}
81
100
  `;
82
101
  export function HomeBuildChips(props) {
83
102
  const buttons = React.useRef(new Map());
@@ -121,7 +140,7 @@ export function HomeBuildChips(props) {
121
140
  const visible = props.items.slice(-4);
122
141
  return (React.createElement("section", { className: "home-build-chips", "aria-label": "Your builds" },
123
142
  React.createElement("style", null, css),
124
- React.createElement("p", { className: "home-build-intro" }, props.returning === true ? "What would you make today?" : "Got another idea? Start it — these keep building."),
143
+ React.createElement("p", { className: "home-build-intro", "data-testid": "home-build-header" }, homeBuildDockHeaderText(homeBuildDockHeader(props.items, { returning: props.returning }))),
125
144
  React.createElement("div", { className: "home-build-chip-row" },
126
145
  visible.map((item, index) => {
127
146
  const identity = paint[index % paint.length];
@@ -133,20 +152,20 @@ export function HomeBuildChips(props) {
133
152
  buttons.current.delete(item.id);
134
153
  else
135
154
  buttons.current.set(item.id, button);
136
- }, type: "button", className: "home-build-chip", "data-status": item.status, "data-live": LIVE_STATUSES.includes(item.status), style: chipStyle, "aria-label": `${item.title}: ${label}`, onClick: () => props.onOpen(item.id) },
155
+ }, type: "button", className: "home-build-chip", "data-status": item.status, "data-live": LIVE_STATUSES.includes(item.status), style: chipStyle, "aria-label": item.status === "ready" ? HOME_BUILD_DOCK_COPY.readyChipName(item.title) : `${item.title}: ${label}`, onClick: () => props.onOpen(item.id) },
137
156
  React.createElement("img", { src: `/lane-faces/vibes-face-${identity.face}.svg`, alt: "" }),
138
157
  React.createElement("span", { className: "home-build-chip-copy" },
139
158
  React.createElement("span", { className: "home-build-chip-title" },
140
159
  React.createElement("span", { className: "home-build-chip-title-text" }, item.title)),
141
160
  React.createElement("span", { className: "home-build-chip-status" },
142
161
  React.createElement("span", { className: "home-build-chip-dot", "aria-hidden": "true" }),
143
- label))),
162
+ item.status === "ready" ? (React.createElement("span", { className: "home-build-chip-cue", "data-testid": "home-build-chip-cue" }, HOME_BUILD_DOCK_COPY.readyCue)) : (label)))),
144
163
  props.onDismiss !== undefined && item.dismissible !== false && (React.createElement("button", { type: "button", className: "home-build-chip-dismiss", "aria-label": `Hide ${item.title}`, onClick: () => props.onDismiss?.(item.id) }, "\u00D7"))));
145
164
  }),
146
165
  props.items.length < 4 && (React.createElement("div", { className: "home-build-chip-slot" },
147
166
  React.createElement("button", { type: "button", className: "home-build-chip home-build-chip-new", onClick: props.onAnotherIdea },
148
167
  React.createElement("span", { "aria-hidden": "true" }, "\uFF0B"),
149
168
  " Another idea")))),
150
- props.items.length > 4 && React.createElement("p", { className: "home-build-overflow" }, "Find earlier builds in the sidebar.")));
169
+ props.items.length > 4 && React.createElement("p", { className: "home-build-overflow" }, HOME_BUILD_DOCK_COPY.overflow)));
151
170
  }
152
171
  //# sourceMappingURL=HomeBuildChips.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HomeBuildChips.js","sourceRoot":"","sources":["../../jsr/components/HomeBuildChips.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HomeBuildChips.js","sourceRoot":"","sources":["../../jsr/components/HomeBuildChips.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ export declare const HOME_BUILD_TOAST_MS = 6000;
3
+ export interface HomeBuildSendToastState {
4
+ readonly id: string;
5
+ readonly text: string;
6
+ }
7
+ export declare function playComposerReset(box: HTMLElement | null | undefined): void;
8
+ export declare function HomeBuildComposerNote(props: {
9
+ readonly toast?: HomeBuildSendToastState;
10
+ readonly onSeeIt: () => void;
11
+ readonly onDismissToast: () => void;
12
+ }): React.ReactElement;
13
+ export type HomeBuildSignInNoteState = "ask" | "later";
14
+ export declare function HomeBuildSignInNote(props: {
15
+ readonly state: HomeBuildSignInNoteState;
16
+ readonly onSignIn: () => void;
17
+ }): React.ReactElement;
@@ -0,0 +1,71 @@
1
+ import * as React from "react";
2
+ import { HOME_BRAND_FONT } from "./homeBrandFont.js";
3
+ import { HOME_BUILD_DOCK_COPY } from "./homeBuildDockCopy.js";
4
+ export const HOME_BUILD_TOAST_MS = 6000;
5
+ const css = `
6
+ .home-build-note-slot{position:relative;display:grid;font-family:${HOME_BRAND_FONT};color:var(--vibes-home-title-ink,#151515);margin:10px 0 0;min-height:20px}
7
+ .home-build-expectation{grid-area:1/1;align-self:start;margin:0;text-align:right;font-size:13px;line-height:1.45;font-weight:700;opacity:.82}
8
+ .home-build-toast{grid-area:1/1;justify-self:end;align-self:start;position:relative;z-index:5;display:flex;align-items:center;gap:10px;max-width:min(460px,100%);box-sizing:border-box;padding:9px 10px 9px 14px;border:2px solid #151515;border-radius:14px;background:#151515;color:#FEFFF1;box-shadow:-3px 4px 0 #FFE100;font-size:14px;line-height:1.35;font-weight:700;animation:hbt-in .22s cubic-bezier(.2,.8,.2,1)}
9
+ .home-build-toast-text{flex:1 1 auto;min-width:0}
10
+ .home-build-toast-action{flex:0 0 auto;border:0;border-radius:9px;background:#FFE100;color:#151515;font:inherit;font-size:13px;padding:6px 10px;cursor:pointer}
11
+ .home-build-toast-action:focus-visible,.home-build-toast-close:focus-visible{outline:2px solid #FFE100;outline-offset:2px}
12
+ .home-build-toast-close{flex:0 0 auto;border:0;background:transparent;color:inherit;font:inherit;font-size:18px;line-height:1;padding:2px 4px;cursor:pointer;opacity:.75}
13
+ .home-build-signin-note{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 12px;margin:0 0 12px;font-family:${HOME_BRAND_FONT};color:var(--vibes-home-title-ink,#151515);font-size:14px;line-height:1.4;font-weight:700;text-align:center}
14
+ .home-build-signin-note button{border:2px solid #151515;border-radius:10px;background:#FFE100;color:#151515;font:inherit;font-size:13px;padding:5px 12px;cursor:pointer}
15
+ .home-build-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
16
+ @keyframes hbt-in{from{opacity:0;transform:translateY(-6px)}}
17
+ @media(max-width:600px){.home-build-expectation{text-align:center}.home-build-toast{justify-self:stretch;max-width:none;font-size:13px}}
18
+ @media(prefers-reduced-motion:reduce){.home-build-toast{animation:none}}
19
+ `;
20
+ export function playComposerReset(box) {
21
+ if (box === null || box === undefined || typeof box.animate !== "function")
22
+ return;
23
+ if (typeof window !== "undefined" && window.matchMedia?.("(prefers-reduced-motion: reduce)").matches === true)
24
+ return;
25
+ box.animate([
26
+ { transform: "scale(0.985)", filter: "brightness(1.04)" },
27
+ { transform: "scale(1.004)", offset: 0.6 },
28
+ { transform: "none", filter: "none" },
29
+ ], { duration: 240, easing: "cubic-bezier(.2,.8,.2,1)" });
30
+ }
31
+ export function HomeBuildComposerNote(props) {
32
+ const { toast, onDismissToast } = props;
33
+ const toastRef = React.useRef(null);
34
+ const [held, setHeld] = React.useState(false);
35
+ React.useEffect(() => {
36
+ if (toast === undefined || held)
37
+ return;
38
+ const timer = setTimeout(onDismissToast, HOME_BUILD_TOAST_MS);
39
+ return () => clearTimeout(timer);
40
+ }, [toast, held, onDismissToast]);
41
+ React.useEffect(() => {
42
+ if (toast === undefined)
43
+ setHeld(false);
44
+ }, [toast]);
45
+ React.useLayoutEffect(() => {
46
+ const el = toastRef.current;
47
+ if (toast === undefined || el === null)
48
+ return;
49
+ const rect = el.getBoundingClientRect();
50
+ if (rect.bottom > window.innerHeight && typeof el.scrollIntoView === "function")
51
+ el.scrollIntoView({ block: "nearest" });
52
+ }, [toast]);
53
+ return (React.createElement("div", { className: "home-build-note-slot", "data-testid": "home-build-note" },
54
+ React.createElement("style", null, css),
55
+ React.createElement("p", { className: "home-build-expectation", "aria-hidden": toast !== undefined }, HOME_BUILD_DOCK_COPY.expectation),
56
+ toast !== undefined && (React.createElement("div", { key: toast.id, ref: toastRef, className: "home-build-toast", "data-testid": "home-build-toast", onPointerEnter: () => setHeld(true), onPointerLeave: () => setHeld(false), onFocus: () => setHeld(true), onBlur: (event) => {
57
+ if (event.currentTarget.contains(event.relatedTarget) === false)
58
+ setHeld(false);
59
+ } },
60
+ React.createElement("span", { className: "home-build-toast-text", "aria-hidden": "true" }, toast.text),
61
+ React.createElement("button", { type: "button", className: "home-build-toast-action", onClick: props.onSeeIt }, HOME_BUILD_DOCK_COPY.sendToastAction),
62
+ React.createElement("button", { type: "button", className: "home-build-toast-close", "aria-label": HOME_BUILD_DOCK_COPY.sendToastDismiss, onClick: onDismissToast }, "\u00D7"))),
63
+ React.createElement("p", { className: "home-build-sr", "aria-live": "polite", "data-testid": "home-build-announcer" }, toast?.text ?? "")));
64
+ }
65
+ export function HomeBuildSignInNote(props) {
66
+ return (React.createElement("p", { className: "home-build-signin-note", role: "status", "data-testid": "home-build-signin-note" },
67
+ React.createElement("style", null, css),
68
+ React.createElement("span", null, props.state === "ask" ? HOME_BUILD_DOCK_COPY.signInAsk : HOME_BUILD_DOCK_COPY.signInLater),
69
+ props.state === "later" && (React.createElement("button", { type: "button", onClick: props.onSignIn }, HOME_BUILD_DOCK_COPY.signInAction))));
70
+ }
71
+ //# sourceMappingURL=HomeBuildComposerNotes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HomeBuildComposerNotes.js","sourceRoot":"","sources":["../../jsr/components/HomeBuildComposerNotes.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export declare const HOME_BUILD_TOAST_IDEA_MAX = 48;
2
+ export declare const HOME_BUILD_DOCK_COPY: Readonly<{
3
+ expectation: "Send an idea, then start the next — they build side by side.";
4
+ sendToast: (idea: string) => string;
5
+ sendToastAction: "See it";
6
+ sendToastDismiss: "Hide this note";
7
+ headerBuildingOne: "Got another idea? Start it while your app builds.";
8
+ headerBuildingMany: "Got another idea? Start it while your apps build.";
9
+ headerMixed: "Open a ready app, or start another.";
10
+ headerReadyOne: "Your app is ready. Open it, or start another.";
11
+ headerReadyMany: "Your apps are ready. Open one, or start another.";
12
+ headerAttention: "Pick up where your apps left off, or start another.";
13
+ headerReturning: "What would you make today?";
14
+ readyCue: "Open →";
15
+ readyChipName: (title: string) => string;
16
+ overflow: "Find earlier apps in MENU → My Apps.";
17
+ signInAsk: "Two apps are building. Sign in to run more at once — your idea is waiting right here in the box.";
18
+ signInLater: "Your idea is here whenever you're ready. Sign in to start it.";
19
+ signInAction: "Sign in";
20
+ readyAnnouncement: (count: number) => string;
21
+ }>;
22
+ export type HomeBuildDockHeader = "building-one" | "building-many" | "mixed" | "ready-one" | "ready-many" | "attention" | "returning";
23
+ export declare function homeBuildDockHeaderText(header: HomeBuildDockHeader): string;
@@ -0,0 +1,46 @@
1
+ export const HOME_BUILD_TOAST_IDEA_MAX = 48;
2
+ function quoteIdea(idea) {
3
+ const flat = idea.trim().replace(/\s+/g, " ");
4
+ if (flat.length <= HOME_BUILD_TOAST_IDEA_MAX)
5
+ return flat;
6
+ return `${flat.slice(0, HOME_BUILD_TOAST_IDEA_MAX - 1).trimEnd()}…`;
7
+ }
8
+ export const HOME_BUILD_DOCK_COPY = Object.freeze({
9
+ expectation: "Send an idea, then start the next — they build side by side.",
10
+ sendToast: (idea) => `Building “${quoteIdea(idea)}” — start your next idea.`,
11
+ sendToastAction: "See it",
12
+ sendToastDismiss: "Hide this note",
13
+ headerBuildingOne: "Got another idea? Start it while your app builds.",
14
+ headerBuildingMany: "Got another idea? Start it while your apps build.",
15
+ headerMixed: "Open a ready app, or start another.",
16
+ headerReadyOne: "Your app is ready. Open it, or start another.",
17
+ headerReadyMany: "Your apps are ready. Open one, or start another.",
18
+ headerAttention: "Pick up where your apps left off, or start another.",
19
+ headerReturning: "What would you make today?",
20
+ readyCue: "Open →",
21
+ readyChipName: (title) => `${title}: Ready · Open`,
22
+ overflow: "Find earlier apps in MENU → My Apps.",
23
+ signInAsk: "Two apps are building. Sign in to run more at once — your idea is waiting right here in the box.",
24
+ signInLater: "Your idea is here whenever you're ready. Sign in to start it.",
25
+ signInAction: "Sign in",
26
+ readyAnnouncement: (count) => (count === 1 ? "1 app is ready to open" : `${count} apps are ready to open`),
27
+ });
28
+ export function homeBuildDockHeaderText(header) {
29
+ switch (header) {
30
+ case "building-one":
31
+ return HOME_BUILD_DOCK_COPY.headerBuildingOne;
32
+ case "building-many":
33
+ return HOME_BUILD_DOCK_COPY.headerBuildingMany;
34
+ case "mixed":
35
+ return HOME_BUILD_DOCK_COPY.headerMixed;
36
+ case "ready-one":
37
+ return HOME_BUILD_DOCK_COPY.headerReadyOne;
38
+ case "ready-many":
39
+ return HOME_BUILD_DOCK_COPY.headerReadyMany;
40
+ case "attention":
41
+ return HOME_BUILD_DOCK_COPY.headerAttention;
42
+ case "returning":
43
+ return HOME_BUILD_DOCK_COPY.headerReturning;
44
+ }
45
+ }
46
+ //# sourceMappingURL=homeBuildDockCopy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"homeBuildDockCopy.js","sourceRoot":"","sources":["../../jsr/components/homeBuildDockCopy.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAE5C,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9C,IAAI,IAAI,CAAC,MAAM,IAAI,yBAAyB;QAAE,OAAO,IAAI,CAAC;IAC1D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,yBAAyB,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;IAEhD,WAAW,EAAE,8DAA8D;IAE3E,SAAS,EAAE,CAAC,IAAY,EAAU,EAAE,CAAC,aAAa,SAAS,CAAC,IAAI,CAAC,2BAA2B;IAE5F,eAAe,EAAE,QAAQ;IAEzB,gBAAgB,EAAE,gBAAgB;IAGlC,iBAAiB,EAAE,mDAAmD;IACtE,kBAAkB,EAAE,mDAAmD;IAEvE,WAAW,EAAE,qCAAqC;IAElD,cAAc,EAAE,+CAA+C;IAC/D,eAAe,EAAE,kDAAkD;IAEnE,eAAe,EAAE,qDAAqD;IAEtE,eAAe,EAAE,4BAA4B;IAM7C,QAAQ,EAAE,QAAQ;IAElB,aAAa,EAAE,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,KAAK,gBAAgB;IAGlE,QAAQ,EAAE,sCAAsC;IAGhD,SAAS,EAAE,kGAAkG;IAE7G,WAAW,EAAE,+DAA+D;IAE5E,YAAY,EAAE,SAAS;IAGvB,iBAAiB,EAAE,CAAC,KAAa,EAAU,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,KAAK,yBAAyB,CAAC;CAC3H,CAAC,CAAC;AAMH,MAAM,UAAU,uBAAuB,CAAC,MAA2B;IACjE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,cAAc;YACjB,OAAO,oBAAoB,CAAC,iBAAiB,CAAC;QAChD,KAAK,eAAe;YAClB,OAAO,oBAAoB,CAAC,kBAAkB,CAAC;QACjD,KAAK,OAAO;YACV,OAAO,oBAAoB,CAAC,WAAW,CAAC;QAC1C,KAAK,WAAW;YACd,OAAO,oBAAoB,CAAC,cAAc,CAAC;QAC7C,KAAK,YAAY;YACf,OAAO,oBAAoB,CAAC,eAAe,CAAC;QAC9C,KAAK,WAAW;YACd,OAAO,oBAAoB,CAAC,eAAe,CAAC;QAC9C,KAAK,WAAW;YACd,OAAO,oBAAoB,CAAC,eAAe,CAAC;IAChD,CAAC;AACH,CAAC"}
@@ -38,3 +38,5 @@ export * from "./VibesWindowFrame.styles.js";
38
38
  export * from "./VibesWindowHeader.js";
39
39
  export * from "./VibesWindowFrame.js";
40
40
  export * from "./HomeBuildChips.js";
41
+ export * from "./HomeBuildComposerNotes.js";
42
+ export * from "./homeBuildDockCopy.js";
@@ -38,4 +38,6 @@ export * from "./VibesWindowFrame.styles.js";
38
38
  export * from "./VibesWindowHeader.js";
39
39
  export * from "./VibesWindowFrame.js";
40
40
  export * from "./HomeBuildChips.js";
41
+ export * from "./HomeBuildComposerNotes.js";
42
+ export * from "./homeBuildDockCopy.js";
41
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../jsr/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../jsr/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibes.diy/base",
3
- "version": "14.3.112",
3
+ "version": "14.3.113",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -10,10 +10,10 @@
10
10
  "dependencies": {
11
11
  "@adviser/cement": "~0.5.34",
12
12
  "@emotion/css": "~11.13.5",
13
- "@vibes.diy/api-types": "14.3.112",
14
- "@vibes.diy/use-vibes-types": "14.3.112",
15
- "@vibes.diy/vibe-runtime": "14.3.112",
16
- "@vibes.diy/vibe-types": "14.3.112",
13
+ "@vibes.diy/api-types": "14.3.113",
14
+ "@vibes.diy/use-vibes-types": "14.3.113",
15
+ "@vibes.diy/vibe-runtime": "14.3.113",
16
+ "@vibes.diy/vibe-types": "14.3.113",
17
17
  "arktype": "~2.2.6",
18
18
  "officeparser": "~8.0.0",
19
19
  "qrcode-generator": "~2.0.4",