@vibes.diy/base 14.3.21 → 14.3.23
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/StyleControls.js +27 -3
- package/components/StyleControls.js.map +1 -1
- package/components/VibesSwitch.d.ts +1 -2
- package/components/VibesSwitch.js +4 -59
- package/components/VibesSwitch.js.map +1 -1
- package/components/chip-fast-path.d.ts +6 -0
- package/components/chip-fast-path.js +2 -0
- package/components/chip-fast-path.js.map +1 -0
- package/components/editor-tabs.d.ts +3 -0
- package/components/editor-tabs.js +1 -0
- package/components/editor-tabs.js.map +1 -1
- package/components/index.d.ts +2 -17
- package/components/index.js +2 -17
- package/components/index.js.map +1 -1
- package/components/vibe-menu/VibeMenu.d.ts +16 -0
- package/components/vibe-menu/VibeMenu.js +99 -0
- package/components/vibe-menu/VibeMenu.js.map +1 -0
- package/components/vibe-menu/cards/AccountCard.d.ts +40 -0
- package/components/vibe-menu/cards/AccountCard.js +234 -0
- package/components/vibe-menu/cards/AccountCard.js.map +1 -0
- package/components/vibe-menu/cards/CodeCard.d.ts +20 -0
- package/components/vibe-menu/cards/CodeCard.js +109 -0
- package/components/vibe-menu/cards/CodeCard.js.map +1 -0
- package/components/vibe-menu/cards/CodeModeWorkspace.d.ts +31 -0
- package/components/vibe-menu/cards/CodeModeWorkspace.js +107 -0
- package/components/vibe-menu/cards/CodeModeWorkspace.js.map +1 -0
- package/components/vibe-menu/cards/HomeCard.d.ts +22 -0
- package/components/vibe-menu/cards/HomeCard.js +64 -0
- package/components/vibe-menu/cards/HomeCard.js.map +1 -0
- package/components/vibe-menu/cards/ShareCard.d.ts +9 -0
- package/components/vibe-menu/cards/ShareCard.js +84 -0
- package/components/vibe-menu/cards/ShareCard.js.map +1 -0
- package/components/vibe-menu/cards/ShareDrills.d.ts +35 -0
- package/components/vibe-menu/cards/ShareDrills.js +146 -0
- package/components/vibe-menu/cards/ShareDrills.js.map +1 -0
- package/components/vibe-menu/cards/ShareLinkRows.d.ts +6 -0
- package/components/vibe-menu/cards/ShareLinkRows.js +27 -0
- package/components/vibe-menu/cards/ShareLinkRows.js.map +1 -0
- package/components/vibe-menu/cards/share-actions.d.ts +13 -0
- package/components/vibe-menu/cards/share-actions.js +37 -0
- package/components/vibe-menu/cards/share-actions.js.map +1 -0
- package/components/vibe-menu/cards/share-card.styles.d.ts +1 -0
- package/components/vibe-menu/cards/share-card.styles.js +90 -0
- package/components/vibe-menu/cards/share-card.styles.js.map +1 -0
- package/components/vibe-menu/cards/share-copy.d.ts +24 -0
- package/components/vibe-menu/cards/share-copy.js +64 -0
- package/components/vibe-menu/cards/share-copy.js.map +1 -0
- package/components/vibe-menu/cards/share-parts.d.ts +46 -0
- package/components/vibe-menu/cards/share-parts.js +87 -0
- package/components/vibe-menu/cards/share-parts.js.map +1 -0
- package/components/vibe-menu/code-tabs.d.ts +11 -0
- package/components/vibe-menu/code-tabs.js +32 -0
- package/components/vibe-menu/code-tabs.js.map +1 -0
- package/components/vibe-menu/copy.d.ts +7 -0
- package/components/vibe-menu/copy.js +13 -0
- package/components/vibe-menu/copy.js.map +1 -0
- package/components/vibe-menu/fixtures.d.ts +42 -0
- package/components/vibe-menu/fixtures.js +184 -0
- package/components/vibe-menu/fixtures.js.map +1 -0
- package/components/vibe-menu/geometry.d.ts +24 -0
- package/components/vibe-menu/geometry.js +28 -0
- package/components/vibe-menu/geometry.js.map +1 -0
- package/components/vibe-menu/index.d.ts +42 -0
- package/components/vibe-menu/index.js +43 -0
- package/components/vibe-menu/index.js.map +1 -0
- package/components/vibe-menu/menu-state.d.ts +42 -0
- package/components/vibe-menu/menu-state.js +82 -0
- package/components/vibe-menu/menu-state.js.map +1 -0
- package/components/vibe-menu/moments.d.ts +13 -0
- package/components/vibe-menu/moments.js +39 -0
- package/components/vibe-menu/moments.js.map +1 -0
- package/components/vibe-menu/motion.d.ts +10 -0
- package/components/vibe-menu/motion.js +10 -0
- package/components/vibe-menu/motion.js.map +1 -0
- package/components/vibe-menu/open-resolver.d.ts +46 -0
- package/components/vibe-menu/open-resolver.js +91 -0
- package/components/vibe-menu/open-resolver.js.map +1 -0
- package/components/vibe-menu/parts/AccessToggle.d.ts +13 -0
- package/components/vibe-menu/parts/AccessToggle.js +58 -0
- package/components/vibe-menu/parts/AccessToggle.js.map +1 -0
- package/components/vibe-menu/parts/ActionPill.d.ts +18 -0
- package/components/vibe-menu/parts/ActionPill.js +21 -0
- package/components/vibe-menu/parts/ActionPill.js.map +1 -0
- package/components/vibe-menu/parts/BackRow.d.ts +8 -0
- package/components/vibe-menu/parts/BackRow.js +10 -0
- package/components/vibe-menu/parts/BackRow.js.map +1 -0
- package/components/vibe-menu/parts/Chip.d.ts +37 -0
- package/components/vibe-menu/parts/Chip.js +62 -0
- package/components/vibe-menu/parts/Chip.js.map +1 -0
- package/components/vibe-menu/parts/Composer.d.ts +39 -0
- package/components/vibe-menu/parts/Composer.js +47 -0
- package/components/vibe-menu/parts/Composer.js.map +1 -0
- package/components/vibe-menu/parts/DoneButton.d.ts +5 -0
- package/components/vibe-menu/parts/DoneButton.js +5 -0
- package/components/vibe-menu/parts/DoneButton.js.map +1 -0
- package/components/vibe-menu/parts/Glyph.d.ts +9 -0
- package/components/vibe-menu/parts/Glyph.js +123 -0
- package/components/vibe-menu/parts/Glyph.js.map +1 -0
- package/components/vibe-menu/parts/GrantControls.d.ts +13 -0
- package/components/vibe-menu/parts/GrantControls.js +61 -0
- package/components/vibe-menu/parts/GrantControls.js.map +1 -0
- package/components/vibe-menu/parts/MemberRow.d.ts +37 -0
- package/components/vibe-menu/parts/MemberRow.js +70 -0
- package/components/vibe-menu/parts/MemberRow.js.map +1 -0
- package/components/vibe-menu/parts/MenuCard.d.ts +10 -0
- package/components/vibe-menu/parts/MenuCard.js +7 -0
- package/components/vibe-menu/parts/MenuCard.js.map +1 -0
- package/components/vibe-menu/parts/MomentLine.d.ts +23 -0
- package/components/vibe-menu/parts/MomentLine.js +58 -0
- package/components/vibe-menu/parts/MomentLine.js.map +1 -0
- package/components/vibe-menu/parts/Row.d.ts +41 -0
- package/components/vibe-menu/parts/Row.js +60 -0
- package/components/vibe-menu/parts/Row.js.map +1 -0
- package/components/vibe-menu/parts/SectionStrip.d.ts +14 -0
- package/components/vibe-menu/parts/SectionStrip.js +26 -0
- package/components/vibe-menu/parts/SectionStrip.js.map +1 -0
- package/components/vibe-menu/parts/VibesSwitchGlass.d.ts +24 -0
- package/components/vibe-menu/parts/VibesSwitchGlass.js +66 -0
- package/components/vibe-menu/parts/VibesSwitchGlass.js.map +1 -0
- package/components/vibe-menu/parts/radio-keys.d.ts +5 -0
- package/components/vibe-menu/parts/radio-keys.js +13 -0
- package/components/vibe-menu/parts/radio-keys.js.map +1 -0
- package/components/vibe-menu/parts/use-composer-draft.d.ts +9 -0
- package/components/vibe-menu/parts/use-composer-draft.js +94 -0
- package/components/vibe-menu/parts/use-composer-draft.js.map +1 -0
- package/components/vibe-menu/share-fixtures.d.ts +15 -0
- package/components/vibe-menu/share-fixtures.js +72 -0
- package/components/vibe-menu/share-fixtures.js.map +1 -0
- package/components/vibe-menu/shell/VibeMenuShell.d.ts +30 -0
- package/components/vibe-menu/shell/VibeMenuShell.js +124 -0
- package/components/vibe-menu/shell/VibeMenuShell.js.map +1 -0
- package/components/vibe-menu/shell/menu-sequence.d.ts +20 -0
- package/components/vibe-menu/shell/menu-sequence.js +35 -0
- package/components/vibe-menu/shell/menu-sequence.js.map +1 -0
- package/components/vibe-menu/shell/outline-geometry.d.ts +63 -0
- package/components/vibe-menu/shell/outline-geometry.js +83 -0
- package/components/vibe-menu/shell/outline-geometry.js.map +1 -0
- package/components/vibe-menu/shell/shell.styles.d.ts +1 -0
- package/components/vibe-menu/shell/shell.styles.js +386 -0
- package/components/vibe-menu/shell/shell.styles.js.map +1 -0
- package/components/vibe-menu/shell/useMenuSequencer.d.ts +33 -0
- package/components/vibe-menu/shell/useMenuSequencer.js +490 -0
- package/components/vibe-menu/shell/useMenuSequencer.js.map +1 -0
- package/components/vibe-menu/slices.d.ts +182 -0
- package/components/vibe-menu/slices.js +5 -0
- package/components/vibe-menu/slices.js.map +1 -0
- package/components/vibe-menu/use-remix-hint.d.ts +9 -0
- package/components/vibe-menu/use-remix-hint.js +21 -0
- package/components/vibe-menu/use-remix-hint.js.map +1 -0
- package/components/vibe-menu/vibe-menu.styles.d.ts +5 -0
- package/components/vibe-menu/vibe-menu.styles.js +1424 -0
- package/components/vibe-menu/vibe-menu.styles.js.map +1 -0
- package/package.json +4 -4
- package/components/AccountView.d.ts +0 -10
- package/components/AccountView.js +0 -31
- package/components/AccountView.js.map +0 -1
- package/components/AdminModeControl.d.ts +0 -7
- package/components/AdminModeControl.js +0 -9
- package/components/AdminModeControl.js.map +0 -1
- package/components/CodingIndicator.d.ts +0 -6
- package/components/CodingIndicator.js +0 -53
- package/components/CodingIndicator.js.map +0 -1
- package/components/CreditsDetailMenu.d.ts +0 -15
- package/components/CreditsDetailMenu.js +0 -97
- package/components/CreditsDetailMenu.js.map +0 -1
- package/components/CreditsRingView.d.ts +0 -15
- package/components/CreditsRingView.js +0 -77
- package/components/CreditsRingView.js.map +0 -1
- package/components/EditorTabStrip.d.ts +0 -10
- package/components/EditorTabStrip.js +0 -15
- package/components/EditorTabStrip.js.map +0 -1
- package/components/LinkLineControls.d.ts +0 -9
- package/components/LinkLineControls.js +0 -72
- package/components/LinkLineControls.js.map +0 -1
- package/components/MadeHereView.d.ts +0 -8
- package/components/MadeHereView.js +0 -37
- package/components/MadeHereView.js.map +0 -1
- package/components/RecentVibesList.d.ts +0 -19
- package/components/RecentVibesList.js +0 -106
- package/components/RecentVibesList.js.map +0 -1
- package/components/RecommendedView.d.ts +0 -22
- package/components/RecommendedView.js +0 -172
- package/components/RecommendedView.js.map +0 -1
- package/components/RemixInviteView.d.ts +0 -4
- package/components/RemixInviteView.js +0 -11
- package/components/RemixInviteView.js.map +0 -1
- package/components/SeedDataOffer.d.ts +0 -8
- package/components/SeedDataOffer.js +0 -15
- package/components/SeedDataOffer.js.map +0 -1
- package/components/SignedInDiscoveryView.d.ts +0 -17
- package/components/SignedInDiscoveryView.js +0 -30
- package/components/SignedInDiscoveryView.js.map +0 -1
- package/components/SignedOutDiscoveryView.d.ts +0 -7
- package/components/SignedOutDiscoveryView.js +0 -15
- package/components/SignedOutDiscoveryView.js.map +0 -1
- package/components/SignedOutSavePrompt.d.ts +0 -4
- package/components/SignedOutSavePrompt.js +0 -33
- package/components/SignedOutSavePrompt.js.map +0 -1
- package/components/UnifiedVibeCard.d.ts +0 -129
- package/components/UnifiedVibeCard.js +0 -1658
- package/components/UnifiedVibeCard.js.map +0 -1
- package/components/UnifiedVibeCardSettings.styles.d.ts +0 -3
- package/components/UnifiedVibeCardSettings.styles.js +0 -95
- package/components/UnifiedVibeCardSettings.styles.js.map +0 -1
- package/components/UnifiedVibeCardShare.styles.d.ts +0 -3
- package/components/UnifiedVibeCardShare.styles.js +0 -72
- package/components/UnifiedVibeCardShare.styles.js.map +0 -1
- package/components/ViewerAccessSummary.d.ts +0 -28
- package/components/ViewerAccessSummary.js +0 -105
- package/components/ViewerAccessSummary.js.map +0 -1
- package/components/ViewerStandingView.d.ts +0 -7
- package/components/ViewerStandingView.js +0 -10
- package/components/ViewerStandingView.js.map +0 -1
- package/hooks/useCardFloat.d.ts +0 -6
- package/hooks/useCardFloat.js +0 -191
- package/hooks/useCardFloat.js.map +0 -1
- package/hooks/useHomeMotionPress.d.ts +0 -17
- package/hooks/useHomeMotionPress.js +0 -93
- package/hooks/useHomeMotionPress.js.map +0 -1
- package/motion/card-motion-source.d.ts +0 -23
- package/motion/card-motion-source.js +0 -50
- package/motion/card-motion-source.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vibe-menu.styles.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/vibe-menu.styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA8B/B,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA0FJ,CAAC;AAEjC,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;2DAQwB,CAAC;AAE5D,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;6BAKA,oBAAoB;;;;+BAIlB,mBAAmB;;;;mCAIf,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyxCrD,CAAC;AAGF,MAAM,UAAU,cAAc;IAC5B,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,uBAAuB,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;AACtF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibes.diy/base",
|
|
3
|
-
"version": "14.3.
|
|
3
|
+
"version": "14.3.23",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./index.js",
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@adviser/cement": "~0.5.34",
|
|
12
12
|
"@emotion/css": "~11.13.5",
|
|
13
|
-
"@vibes.diy/use-vibes-types": "14.3.
|
|
14
|
-
"@vibes.diy/vibe-runtime": "14.3.
|
|
15
|
-
"@vibes.diy/vibe-types": "14.3.
|
|
13
|
+
"@vibes.diy/use-vibes-types": "14.3.23",
|
|
14
|
+
"@vibes.diy/vibe-runtime": "14.3.23",
|
|
15
|
+
"@vibes.diy/vibe-types": "14.3.23",
|
|
16
16
|
"officeparser": "~8.0.0",
|
|
17
17
|
"qrcode-generator": "~2.0.4",
|
|
18
18
|
"react": "~19.2.8"
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
export interface AccountViewProps {
|
|
3
|
-
readonly slug: string;
|
|
4
|
-
readonly displayName?: string;
|
|
5
|
-
readonly avatarUrl?: string;
|
|
6
|
-
readonly onPickFile?: (file: File) => void | Promise<void>;
|
|
7
|
-
readonly settingsHref?: string;
|
|
8
|
-
readonly onOpenSettings?: () => void;
|
|
9
|
-
}
|
|
10
|
-
export declare function AccountView({ slug, displayName, avatarUrl, onPickFile, settingsHref, onOpenSettings }: AccountViewProps): React.JSX.Element;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { ViewerTagView } from "./ViewerTagView.js";
|
|
3
|
-
export function AccountView({ slug, displayName, avatarUrl, onPickFile, settingsHref, onOpenSettings }) {
|
|
4
|
-
return (React.createElement("div", { "data-testid": "account-view", style: {
|
|
5
|
-
display: "flex",
|
|
6
|
-
flexDirection: "column",
|
|
7
|
-
alignItems: "center",
|
|
8
|
-
gap: 16,
|
|
9
|
-
padding: "24px 16px 28px",
|
|
10
|
-
} },
|
|
11
|
-
React.createElement("div", { style: { transform: "scale(1.3)", transformOrigin: "center", margin: "6px 0 10px" } },
|
|
12
|
-
React.createElement(ViewerTagView, { slug: slug, displayName: displayName, avatarUrl: avatarUrl, editable: Boolean(onPickFile), onPickFile: onPickFile })),
|
|
13
|
-
React.createElement("a", { "data-testid": "account-view-settings-link", href: settingsHref ?? "/settings", onClick: onOpenSettings
|
|
14
|
-
? (e) => {
|
|
15
|
-
if (e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey)
|
|
16
|
-
return;
|
|
17
|
-
e.preventDefault();
|
|
18
|
-
onOpenSettings();
|
|
19
|
-
}
|
|
20
|
-
: undefined, style: {
|
|
21
|
-
border: "1px solid var(--border, light-dark(rgba(0,0,0,0.18), rgba(255,255,255,0.15)))",
|
|
22
|
-
borderRadius: 999,
|
|
23
|
-
padding: "7px 18px",
|
|
24
|
-
fontSize: 14,
|
|
25
|
-
color: "inherit",
|
|
26
|
-
textDecoration: "none",
|
|
27
|
-
cursor: "pointer",
|
|
28
|
-
colorScheme: "light dark",
|
|
29
|
-
} }, "Account settings")));
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=AccountView.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AccountView.js","sourceRoot":"","sources":["../../jsr/components/AccountView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAyBnD,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAoB;IACtH,OAAO,CACL,4CACc,cAAc,EAC1B,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,EAAE;YACP,OAAO,EAAE,gBAAgB;SAC1B;QAOD,6BAAK,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE;YACtF,oBAAC,aAAa,IACZ,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,EAC7B,UAAU,EAAE,UAAU,GACtB,CACE;QACN,0CACc,4BAA4B,EACxC,IAAI,EAAE,YAAY,IAAI,WAAW,EACjC,OAAO,EACL,cAAc;gBACZ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;oBAIJ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM;wBAAE,OAAO;oBAC/E,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,cAAc,EAAE,CAAC;gBACnB,CAAC;gBACH,CAAC,CAAC,SAAS,EAEf,KAAK,EAAE;gBACL,MAAM,EAAE,+EAA+E;gBACvF,YAAY,EAAE,GAAG;gBACjB,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,SAAS;gBAChB,cAAc,EAAE,MAAM;gBACtB,MAAM,EAAE,SAAS;gBACjB,WAAW,EAAE,YAAY;aAC1B,uBAGC,CACA,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
export interface AdminModeControlProps {
|
|
3
|
-
readonly isOwner: boolean;
|
|
4
|
-
readonly adminMode: boolean;
|
|
5
|
-
readonly onToggle?: () => void;
|
|
6
|
-
}
|
|
7
|
-
export declare function AdminModeControl({ isOwner, adminMode, onToggle }: AdminModeControlProps): React.JSX.Element | null;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
export function AdminModeControl({ isOwner, adminMode, onToggle }) {
|
|
3
|
-
if (isOwner === false || onToggle === undefined)
|
|
4
|
-
return null;
|
|
5
|
-
return (React.createElement("label", { className: "flex items-center gap-2 text-sm text-neutral-700 dark:text-neutral-300" },
|
|
6
|
-
React.createElement("input", { type: "checkbox", checked: adminMode, onChange: () => void onToggle(), className: "rounded border-gray-300 dark:border-gray-600" }),
|
|
7
|
-
React.createElement("span", null, "Admin mode")));
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=AdminModeControl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AdminModeControl.js","sourceRoot":"","sources":["../../jsr/components/AdminModeControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,MAAM,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAyB;IACtF,IAAI,OAAO,KAAK,KAAK,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC7D,OAAO,CACL,+BAAO,SAAS,EAAC,wEAAwE;QACvF,+BACE,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,EAC/B,SAAS,EAAC,8CAA8C,GACxD;QACF,+CAAuB,CACjB,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
const SWEEP_CLASS = "vibes-coding-indicator-sweep";
|
|
3
|
-
const RING = "var(--uvc-purple-text, var(--accent, light-dark(#7c3aed, #c4b5fd)))";
|
|
4
|
-
const CSS = `
|
|
5
|
-
.${SWEEP_CLASS} {
|
|
6
|
-
position: absolute;
|
|
7
|
-
inset: 0;
|
|
8
|
-
border-radius: inherit;
|
|
9
|
-
pointer-events: none;
|
|
10
|
-
}
|
|
11
|
-
.${SWEEP_CLASS}-move {
|
|
12
|
-
position: absolute;
|
|
13
|
-
inset: 0;
|
|
14
|
-
background-image: linear-gradient(100deg, transparent 35%, rgba(255,255,255,0.85) 50%, transparent 65%);
|
|
15
|
-
background-size: 260% 100%;
|
|
16
|
-
animation: vibesCodingIndicatorSweep 1.5s linear infinite;
|
|
17
|
-
}
|
|
18
|
-
@keyframes vibesCodingIndicatorSweep {
|
|
19
|
-
0% { background-position: 180% 0; }
|
|
20
|
-
100% { background-position: -180% 0; }
|
|
21
|
-
}
|
|
22
|
-
@media (prefers-reduced-motion: reduce) {
|
|
23
|
-
/* No sweep at all — and the ring underneath is then the ONLY thing telling a
|
|
24
|
-
building header from an idle one, which is why it is not decoration. */
|
|
25
|
-
.${SWEEP_CLASS}-move { animation: none; background-position: 50% 0; opacity: 0.55; }
|
|
26
|
-
}
|
|
27
|
-
`;
|
|
28
|
-
export function CodingIndicator({ active, label = "coding" }) {
|
|
29
|
-
if (!active)
|
|
30
|
-
return null;
|
|
31
|
-
return (React.createElement("span", { "data-testid": "coding-indicator", className: SWEEP_CLASS, "aria-hidden": false },
|
|
32
|
-
React.createElement("style", null, CSS),
|
|
33
|
-
React.createElement("span", { "aria-hidden": true, style: {
|
|
34
|
-
position: "absolute",
|
|
35
|
-
inset: 0,
|
|
36
|
-
borderRadius: "inherit",
|
|
37
|
-
boxShadow: `inset 0 0 0 2px ${RING}`,
|
|
38
|
-
} }),
|
|
39
|
-
React.createElement("span", { "aria-hidden": true, className: `${SWEEP_CLASS}-move` }),
|
|
40
|
-
React.createElement("span", { role: "status", style: {
|
|
41
|
-
position: "absolute",
|
|
42
|
-
width: 1,
|
|
43
|
-
height: 1,
|
|
44
|
-
margin: -1,
|
|
45
|
-
padding: 0,
|
|
46
|
-
overflow: "hidden",
|
|
47
|
-
clip: "rect(0 0 0 0)",
|
|
48
|
-
clipPath: "inset(50%)",
|
|
49
|
-
whiteSpace: "nowrap",
|
|
50
|
-
border: 0,
|
|
51
|
-
} }, label)));
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=CodingIndicator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CodingIndicator.js","sourceRoot":"","sources":["../../jsr/components/CodingIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA4C/B,MAAM,WAAW,GAAG,8BAA8B,CAAC;AAOnD,MAAM,IAAI,GAAG,qEAAqE,CAAC;AAEnF,MAAM,GAAG,GAAG;GACT,WAAW;;;;;;GAMX,WAAW;;;;;;;;;;;;;;KAcT,WAAW;;CAEf,CAAC;AASF,MAAM,UAAU,eAAe,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAwB;IAKhF,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,CACL,6CAAkB,kBAAkB,EAAC,SAAS,EAAE,WAAW,iBAAe,KAAK;QAC7E,mCAAQ,GAAG,CAAS;QAGpB,mDAEE,KAAK,EAAE;gBACL,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE,SAAS;gBACvB,SAAS,EAAE,mBAAmB,IAAI,EAAE;aACrC,GACD;QACF,mDAAkB,SAAS,EAAE,GAAG,WAAW,OAAO,GAAI;QAItD,8BACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE;gBACL,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,CAAC,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,YAAY;gBACtB,UAAU,EAAE,QAAQ;gBACpB,MAAM,EAAE,CAAC;aACV,IAEA,KAAK,CACD,CACF,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export interface CreditsDetailMenuProps {
|
|
3
|
-
readonly plan?: "free" | "plus";
|
|
4
|
-
readonly remaining?: number;
|
|
5
|
-
readonly grantRemaining?: number;
|
|
6
|
-
readonly grantIncluded?: number;
|
|
7
|
-
readonly grantResetsAt?: number;
|
|
8
|
-
readonly purchasedRemaining?: number;
|
|
9
|
-
readonly loading?: boolean;
|
|
10
|
-
readonly onManage?: () => void;
|
|
11
|
-
readonly manageLabel?: string;
|
|
12
|
-
readonly placement?: "up" | "down";
|
|
13
|
-
readonly style?: React.CSSProperties;
|
|
14
|
-
}
|
|
15
|
-
export declare function CreditsDetailMenu({ plan, remaining, grantRemaining, grantIncluded, grantResetsAt, purchasedRemaining, loading, onManage, manageLabel, placement, style, }: CreditsDetailMenuProps): React.ReactElement;
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
const LEDGER_LABEL = {
|
|
3
|
-
fontSize: 11,
|
|
4
|
-
textTransform: "uppercase",
|
|
5
|
-
letterSpacing: "0.075em",
|
|
6
|
-
fontWeight: 600,
|
|
7
|
-
};
|
|
8
|
-
const FIGURE_WORD = {
|
|
9
|
-
fontSize: 10,
|
|
10
|
-
textTransform: "uppercase",
|
|
11
|
-
letterSpacing: "0.06em",
|
|
12
|
-
fontWeight: 600,
|
|
13
|
-
};
|
|
14
|
-
const HEADLINE_NUM = { fontSize: 22, fontWeight: 700 };
|
|
15
|
-
const PROSE = { fontSize: 12, lineHeight: 1.4, margin: "6px 0 0" };
|
|
16
|
-
function formatCredits(n) {
|
|
17
|
-
return n.toLocaleString("en-US");
|
|
18
|
-
}
|
|
19
|
-
function formatResetsDate(epochMs) {
|
|
20
|
-
return new Date(epochMs).toLocaleDateString("en-US", { month: "short", day: "numeric" });
|
|
21
|
-
}
|
|
22
|
-
function grantSentence({ plan, grantIncluded, grantResetsAt, }) {
|
|
23
|
-
const source = plan === "plus"
|
|
24
|
-
? `Your membership includes ${formatCredits(grantIncluded)} credits a month`
|
|
25
|
-
: `Every account includes ${formatCredits(grantIncluded)} credits a month`;
|
|
26
|
-
return grantResetsAt === undefined ? `${source}.` : `${source}, and they refill on ${formatResetsDate(grantResetsAt)}.`;
|
|
27
|
-
}
|
|
28
|
-
function usageSentence(used, grantRemaining) {
|
|
29
|
-
return `You’ve used ${formatCredits(used)} so far, leaving ${formatCredits(grantRemaining)}.`;
|
|
30
|
-
}
|
|
31
|
-
function purchasedSentence(purchasedRemaining) {
|
|
32
|
-
if (purchasedRemaining > 0) {
|
|
33
|
-
return `You also have ${formatCredits(purchasedRemaining)} purchased credits, which never expire.`;
|
|
34
|
-
}
|
|
35
|
-
return "Credits you buy on top of that never expire.";
|
|
36
|
-
}
|
|
37
|
-
export function CreditsDetailMenu({ plan, remaining, grantRemaining, grantIncluded, grantResetsAt, purchasedRemaining, loading, onManage, manageLabel, placement = "down", style, }) {
|
|
38
|
-
const pending = loading === true || remaining === undefined;
|
|
39
|
-
const vertical = placement === "up" ? { bottom: "calc(100% + 8px)" } : { top: "calc(100% + 8px)" };
|
|
40
|
-
const showGrant = grantRemaining !== undefined && grantIncluded !== undefined;
|
|
41
|
-
const used = showGrant ? Math.max(0, grantIncluded - grantRemaining) : undefined;
|
|
42
|
-
return (React.createElement("div", { role: "menu", "aria-label": "Credits", "data-testid": "credits-detail-menu", style: {
|
|
43
|
-
position: "absolute",
|
|
44
|
-
right: 0,
|
|
45
|
-
width: 230,
|
|
46
|
-
maxWidth: "calc(100vw - 48px)",
|
|
47
|
-
background: "var(--color-light-background-00, #fff)",
|
|
48
|
-
border: "1px solid var(--color-light-decorative-01, #ddd)",
|
|
49
|
-
borderRadius: 12,
|
|
50
|
-
boxShadow: "0 10px 36px rgba(0,0,0,0.28)",
|
|
51
|
-
padding: 6,
|
|
52
|
-
zIndex: 10,
|
|
53
|
-
...vertical,
|
|
54
|
-
...style,
|
|
55
|
-
}, className: "text-light-primary dark:text-dark-primary" },
|
|
56
|
-
React.createElement("div", { className: "text-light-secondary dark:text-dark-secondary", style: { fontSize: 11, padding: "4px 8px" } }, "Credits"),
|
|
57
|
-
pending ? (React.createElement("div", { className: "text-light-secondary dark:text-dark-secondary text-sm", style: { padding: "6px 8px" } }, "Checking your credits\u2026")) : (React.createElement("div", { style: { padding: "2px 8px 6px", fontVariantNumeric: "tabular-nums" } },
|
|
58
|
-
React.createElement("p", { style: { margin: 0 } },
|
|
59
|
-
React.createElement("span", { style: HEADLINE_NUM }, formatCredits(remaining)),
|
|
60
|
-
" ",
|
|
61
|
-
React.createElement("span", { style: FIGURE_WORD }, "credits left")),
|
|
62
|
-
showGrant && (React.createElement("p", { style: PROSE, "data-testid": "credits-grant-line" }, grantSentence({ plan, grantIncluded, grantResetsAt }))),
|
|
63
|
-
used !== undefined && used > 0 && grantRemaining !== undefined && (React.createElement("p", { style: PROSE, "data-testid": "credits-usage-line" }, usageSentence(used, grantRemaining))),
|
|
64
|
-
purchasedRemaining !== undefined && (plan === "plus" || purchasedRemaining > 0) && (React.createElement("p", { style: PROSE, "data-testid": "credits-purchased-line" }, purchasedSentence(purchasedRemaining))))),
|
|
65
|
-
React.createElement("div", { style: { display: "flex", alignItems: "center", padding: "2px 8px 4px" } },
|
|
66
|
-
React.createElement("span", { "aria-hidden": true, style: { width: 1, height: 14, background: "currentColor", opacity: 0.3, marginRight: 8 } }),
|
|
67
|
-
React.createElement("span", { style: LEDGER_LABEL }, plan === "plus" ? "Vibes Plus · $5/mo" : "Free plan")),
|
|
68
|
-
onManage && (React.createElement(React.Fragment, null,
|
|
69
|
-
React.createElement("div", { style: { height: 1, background: "var(--color-light-decorative-00, #eee)", margin: "6px 0" } }),
|
|
70
|
-
React.createElement(MenuRow, { label: manageLabel ?? "Manage credits", onClick: onManage })))));
|
|
71
|
-
}
|
|
72
|
-
function MenuRow({ label, onClick }) {
|
|
73
|
-
return (React.createElement("button", { type: "button", role: "menuitem", onClick: onClick, style: {
|
|
74
|
-
display: "flex",
|
|
75
|
-
alignItems: "center",
|
|
76
|
-
gap: 8,
|
|
77
|
-
width: "100%",
|
|
78
|
-
textAlign: "left",
|
|
79
|
-
padding: "7px 8px",
|
|
80
|
-
borderRadius: 8,
|
|
81
|
-
border: "none",
|
|
82
|
-
cursor: "pointer",
|
|
83
|
-
background: "transparent",
|
|
84
|
-
}, className: "text-light-primary dark:text-dark-primary" },
|
|
85
|
-
React.createElement("span", { "aria-hidden": true, style: {
|
|
86
|
-
width: 24,
|
|
87
|
-
height: 24,
|
|
88
|
-
borderRadius: "50%",
|
|
89
|
-
display: "flex",
|
|
90
|
-
alignItems: "center",
|
|
91
|
-
justifyContent: "center",
|
|
92
|
-
fontSize: 13,
|
|
93
|
-
flexShrink: 0,
|
|
94
|
-
} }, "\u25CE"),
|
|
95
|
-
React.createElement("span", { className: "text-sm", style: { flex: 1 } }, label)));
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=CreditsDetailMenu.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CreditsDetailMenu.js","sourceRoot":"","sources":["../../jsr/components/CreditsDetailMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export interface CreditsRingViewProps {
|
|
3
|
-
readonly remaining?: number;
|
|
4
|
-
readonly grantIncluded?: number;
|
|
5
|
-
readonly loading?: boolean;
|
|
6
|
-
readonly onClick?: () => void;
|
|
7
|
-
readonly expanded?: boolean;
|
|
8
|
-
readonly label?: string;
|
|
9
|
-
readonly size?: number;
|
|
10
|
-
readonly style?: React.CSSProperties;
|
|
11
|
-
}
|
|
12
|
-
export declare function creditsRingDenominator(remaining?: number, grantIncluded?: number): number;
|
|
13
|
-
export declare function formatRingNumeral(n: number): string;
|
|
14
|
-
export declare function creditsRingTone(remaining: number, denominator: number): "healthy" | "low" | "empty";
|
|
15
|
-
export declare function CreditsRingView({ remaining, grantIncluded, loading, onClick, expanded, label, size, style, }: CreditsRingViewProps): React.ReactElement;
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export function creditsRingDenominator(remaining, grantIncluded) {
|
|
3
|
-
return Math.max(1, grantIncluded ?? 0, remaining ?? 0);
|
|
4
|
-
}
|
|
5
|
-
export function formatRingNumeral(n) {
|
|
6
|
-
if (n >= 10000)
|
|
7
|
-
return `${Math.floor(n / 1000)}k`;
|
|
8
|
-
if (n >= 1000) {
|
|
9
|
-
const tenths = Math.floor(n / 100) / 10;
|
|
10
|
-
return `${tenths}k`;
|
|
11
|
-
}
|
|
12
|
-
return String(Math.max(0, Math.round(n)));
|
|
13
|
-
}
|
|
14
|
-
export function creditsRingTone(remaining, denominator) {
|
|
15
|
-
if (remaining <= 0)
|
|
16
|
-
return "empty";
|
|
17
|
-
return remaining / denominator <= 0.25 ? "low" : "healthy";
|
|
18
|
-
}
|
|
19
|
-
const TONE_COLOR = {
|
|
20
|
-
healthy: "var(--vibes-blue, #3b82f6)",
|
|
21
|
-
low: "#d97706",
|
|
22
|
-
empty: "#dc2626",
|
|
23
|
-
};
|
|
24
|
-
export function CreditsRingView({ remaining, grantIncluded, loading, onClick, expanded, label, size = 28, style, }) {
|
|
25
|
-
const pending = loading === true || remaining === undefined;
|
|
26
|
-
const denominator = creditsRingDenominator(remaining, grantIncluded);
|
|
27
|
-
const tone = pending ? "healthy" : creditsRingTone(remaining, denominator);
|
|
28
|
-
const fraction = pending ? 0 : Math.min(1, Math.max(0, remaining / denominator));
|
|
29
|
-
const stroke = Math.max(2, Math.round(size * 0.11));
|
|
30
|
-
const radius = (size - stroke) / 2;
|
|
31
|
-
const circumference = 2 * Math.PI * radius;
|
|
32
|
-
const dashOffset = circumference * (1 - fraction);
|
|
33
|
-
const accessibleLabel = label ?? (pending ? "Checking your credits" : `Credits: ${remaining.toLocaleString("en-US")} left`);
|
|
34
|
-
const interactive = onClick !== undefined;
|
|
35
|
-
const content = (React.createElement(React.Fragment, null,
|
|
36
|
-
React.createElement("svg", { "aria-hidden": "true", width: size, height: size, viewBox: `0 0 ${size} ${size}`, style: { display: "block", transform: "rotate(-90deg)" } },
|
|
37
|
-
React.createElement("circle", { cx: size / 2, cy: size / 2, r: radius, fill: "none", stroke: "currentColor", strokeOpacity: 0.18, strokeWidth: stroke }),
|
|
38
|
-
!pending && (React.createElement("circle", { "data-testid": "credits-ring-arc", cx: size / 2, cy: size / 2, r: radius, fill: "none", stroke: TONE_COLOR[tone], strokeWidth: stroke, strokeLinecap: "round", strokeDasharray: circumference, strokeDashoffset: dashOffset }))),
|
|
39
|
-
!pending && (React.createElement("span", { style: {
|
|
40
|
-
position: "absolute",
|
|
41
|
-
inset: 0,
|
|
42
|
-
display: "flex",
|
|
43
|
-
alignItems: "center",
|
|
44
|
-
justifyContent: "center",
|
|
45
|
-
fontSize: Math.max(8, Math.round(size * 0.32)),
|
|
46
|
-
fontWeight: 700,
|
|
47
|
-
lineHeight: 1,
|
|
48
|
-
fontVariantNumeric: "tabular-nums",
|
|
49
|
-
letterSpacing: "-0.02em",
|
|
50
|
-
...(tone === "healthy" ? {} : { color: TONE_COLOR[tone] }),
|
|
51
|
-
} }, formatRingNumeral(remaining)))));
|
|
52
|
-
const box = {
|
|
53
|
-
position: "relative",
|
|
54
|
-
display: "inline-flex",
|
|
55
|
-
alignItems: "center",
|
|
56
|
-
justifyContent: "center",
|
|
57
|
-
width: size,
|
|
58
|
-
height: size,
|
|
59
|
-
flexShrink: 0,
|
|
60
|
-
padding: 0,
|
|
61
|
-
border: "none",
|
|
62
|
-
background: "transparent",
|
|
63
|
-
color: "var(--color-light-primary, light-dark(#3a3a3a, #e0e0e0))",
|
|
64
|
-
colorScheme: "light dark",
|
|
65
|
-
opacity: pending ? 0.55 : 1,
|
|
66
|
-
cursor: interactive ? "pointer" : "default",
|
|
67
|
-
...style,
|
|
68
|
-
};
|
|
69
|
-
if (!interactive) {
|
|
70
|
-
return (React.createElement("span", { role: "img", "aria-label": accessibleLabel, "aria-busy": pending ? "true" : undefined, style: box }, content));
|
|
71
|
-
}
|
|
72
|
-
return (React.createElement("button", { type: "button", "aria-haspopup": "menu", "aria-expanded": expanded ?? false, "aria-label": accessibleLabel, "aria-busy": pending ? "true" : undefined, onClick: (e) => {
|
|
73
|
-
e.stopPropagation();
|
|
74
|
-
onClick();
|
|
75
|
-
}, style: box }, content));
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=CreditsRingView.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CreditsRingView.js","sourceRoot":"","sources":["../../jsr/components/CreditsRingView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { type EditorTabKey } from "./editor-tabs.js";
|
|
3
|
-
import { type ViewerStandingState } from "./ViewerStandingView.js";
|
|
4
|
-
export type { EditorTabKey } from "./editor-tabs.js";
|
|
5
|
-
export declare function EditorTabStrip({ tab, onTab, standing, disabledTabs, }: {
|
|
6
|
-
tab: EditorTabKey;
|
|
7
|
-
onTab: (t: EditorTabKey) => void;
|
|
8
|
-
standing?: ViewerStandingState;
|
|
9
|
-
disabledTabs?: readonly EditorTabKey[];
|
|
10
|
-
}): React.JSX.Element;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { EDITOR_TAB_DEFINITIONS, isEditorTabKey } from "./editor-tabs.js";
|
|
3
|
-
import { SubTabStrip } from "./SubTabStrip.js";
|
|
4
|
-
import { ViewerStandingGlyph, viewerStandingCopy } from "./ViewerStandingView.js";
|
|
5
|
-
export function EditorTabStrip({ tab, onTab, standing, disabledTabs = [], }) {
|
|
6
|
-
const copy = viewerStandingCopy(standing ?? {});
|
|
7
|
-
return (React.createElement(SubTabStrip, { ariaLabel: "Vibe editor", active: tab, compact: true, disabledKeys: disabledTabs, onSelect: (key) => {
|
|
8
|
-
if (isEditorTabKey(key))
|
|
9
|
-
onTab(key);
|
|
10
|
-
}, tabs: EDITOR_TAB_DEFINITIONS.map(({ key, label }) => key === "standing"
|
|
11
|
-
?
|
|
12
|
-
{ key, label: copy.label, icon: React.createElement(ViewerStandingGlyph, { tier: copy.tier }) }
|
|
13
|
-
: { key, label }) }));
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=EditorTabStrip.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EditorTabStrip.js","sourceRoot":"","sources":["../../jsr/components/EditorTabStrip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAqB,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAA4B,MAAM,yBAAyB,CAAC;AAW5G,MAAM,UAAU,cAAc,CAAC,EAC7B,GAAG,EACH,KAAK,EACL,QAAQ,EACR,YAAY,GAAG,EAAE,GASlB;IACC,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAChD,OAAO,CACL,oBAAC,WAAW,IACV,SAAS,EAAC,aAAa,EACvB,MAAM,EAAE,GAAG,EACX,OAAO,QACP,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,EACD,IAAI,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAClD,GAAG,KAAK,UAAU;YAChB,CAAC;gBAGC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,oBAAC,mBAAmB,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,EAAE;YAC5E,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CACnB,GACD,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
export declare function CopyLinkIconButton({ onCopy, color, }: {
|
|
3
|
-
readonly onCopy: () => void | Promise<void>;
|
|
4
|
-
readonly color?: string;
|
|
5
|
-
}): React.JSX.Element;
|
|
6
|
-
export declare function ShareLinkIconButton({ onShare, color }: {
|
|
7
|
-
readonly onShare: () => void;
|
|
8
|
-
readonly color?: string;
|
|
9
|
-
}): React.JSX.Element;
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { useEffect, useState } from "react";
|
|
3
|
-
const LINK = "var(--accent, light-dark(#1d4ed8, #60a5fa))";
|
|
4
|
-
export function CopyLinkIconButton({ onCopy, color = LINK, }) {
|
|
5
|
-
const [copied, setCopied] = useState(false);
|
|
6
|
-
useEffect(() => {
|
|
7
|
-
if (!copied)
|
|
8
|
-
return undefined;
|
|
9
|
-
const timer = setTimeout(() => setCopied(false), 2000);
|
|
10
|
-
return () => clearTimeout(timer);
|
|
11
|
-
}, [copied]);
|
|
12
|
-
return (React.createElement(React.Fragment, null,
|
|
13
|
-
React.createElement(LinkIconButton, { testId: "copy-link-icon", label: copied ? "Copied" : "Copy link", color: color, onClick: () => {
|
|
14
|
-
void (async () => {
|
|
15
|
-
try {
|
|
16
|
-
await onCopy();
|
|
17
|
-
setCopied(true);
|
|
18
|
-
}
|
|
19
|
-
catch {
|
|
20
|
-
setCopied(false);
|
|
21
|
-
}
|
|
22
|
-
})();
|
|
23
|
-
} }, copied ? React.createElement(CheckGlyph, null) : React.createElement(CopyGlyph, null)),
|
|
24
|
-
copied && (React.createElement("span", { "data-testid": "copy-link-copied", style: { fontSize: 10, opacity: 0.7, whiteSpace: "nowrap" } }, "Copied"))));
|
|
25
|
-
}
|
|
26
|
-
export function ShareLinkIconButton({ onShare, color = LINK }) {
|
|
27
|
-
return (React.createElement(LinkIconButton, { testId: "share-link-icon", label: "Share link", color: color, onClick: onShare },
|
|
28
|
-
React.createElement(ShareGlyph, null)));
|
|
29
|
-
}
|
|
30
|
-
function LinkIconButton({ testId, label, color, onClick, children, }) {
|
|
31
|
-
return (React.createElement("button", { type: "button", "data-testid": testId, "aria-label": label, title: label, onClick: onClick, style: {
|
|
32
|
-
flexShrink: 0,
|
|
33
|
-
display: "inline-flex",
|
|
34
|
-
alignItems: "center",
|
|
35
|
-
justifyContent: "center",
|
|
36
|
-
width: 24,
|
|
37
|
-
height: 24,
|
|
38
|
-
margin: "-6px 0",
|
|
39
|
-
borderRadius: 4,
|
|
40
|
-
border: "none",
|
|
41
|
-
background: "none",
|
|
42
|
-
padding: 0,
|
|
43
|
-
color,
|
|
44
|
-
cursor: "pointer",
|
|
45
|
-
} }, children));
|
|
46
|
-
}
|
|
47
|
-
const GLYPH = {
|
|
48
|
-
width: 12,
|
|
49
|
-
height: 12,
|
|
50
|
-
viewBox: "0 0 24 24",
|
|
51
|
-
fill: "none",
|
|
52
|
-
stroke: "currentColor",
|
|
53
|
-
strokeWidth: 2,
|
|
54
|
-
strokeLinecap: "round",
|
|
55
|
-
strokeLinejoin: "round",
|
|
56
|
-
};
|
|
57
|
-
function CopyGlyph() {
|
|
58
|
-
return (React.createElement("svg", { ...GLYPH, "aria-hidden": true },
|
|
59
|
-
React.createElement("rect", { x: "9", y: "9", width: "12", height: "12", rx: "2" }),
|
|
60
|
-
React.createElement("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })));
|
|
61
|
-
}
|
|
62
|
-
function CheckGlyph() {
|
|
63
|
-
return (React.createElement("svg", { ...GLYPH, "aria-hidden": true },
|
|
64
|
-
React.createElement("path", { d: "M20 6 9 17l-5-5" })));
|
|
65
|
-
}
|
|
66
|
-
function ShareGlyph() {
|
|
67
|
-
return (React.createElement("svg", { ...GLYPH, "aria-hidden": true },
|
|
68
|
-
React.createElement("path", { d: "M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8" }),
|
|
69
|
-
React.createElement("path", { d: "m16 6-4-4-4 4" }),
|
|
70
|
-
React.createElement("path", { d: "M12 2v13" })));
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=LinkLineControls.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LinkLineControls.js","sourceRoot":"","sources":["../../jsr/components/LinkLineControls.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export interface MadeHereViewProps {
|
|
3
|
-
readonly appTitle?: string;
|
|
4
|
-
readonly ownerHandle?: string;
|
|
5
|
-
readonly onMakeYours: () => void;
|
|
6
|
-
readonly onDismiss: () => void;
|
|
7
|
-
}
|
|
8
|
-
export declare function MadeHereView(props: MadeHereViewProps): React.JSX.Element;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export function MadeHereView(props) {
|
|
3
|
-
const title = props.appTitle?.trim();
|
|
4
|
-
const name = title === undefined || title === "" ? "This app" : title;
|
|
5
|
-
const dismissLabel = title === undefined || title === "" ? "Keep using this app" : `Keep using ${title}`;
|
|
6
|
-
return (React.createElement("div", { "data-testid": "made-here-view", style: { padding: "6px 2px 10px" } },
|
|
7
|
-
React.createElement("div", { className: "text-light-primary dark:text-dark-primary", style: { fontSize: 19, fontWeight: 600, lineHeight: 1.25, margin: "0 0 8px" } },
|
|
8
|
-
name,
|
|
9
|
-
" was made on Vibes DIY."),
|
|
10
|
-
React.createElement("p", { className: "text-light-secondary dark:text-dark-secondary", style: { fontSize: 14, lineHeight: 1.45, margin: "0 0 4px" } },
|
|
11
|
-
props.ownerHandle
|
|
12
|
-
? `@${props.ownerHandle} described it in plain words and got a real app. `
|
|
13
|
-
: "Someone described it in plain words and got a real app. ",
|
|
14
|
-
"You can make one too \u2014 say what you want and it gets built."),
|
|
15
|
-
React.createElement("div", { style: { display: "flex", flexDirection: "column", gap: 8, marginTop: 14 } },
|
|
16
|
-
React.createElement("button", { type: "button", "data-testid": "made-here-make-yours", onClick: props.onMakeYours, style: {
|
|
17
|
-
background: "var(--vibes-blue, #3b82f6)",
|
|
18
|
-
color: "#ffffff",
|
|
19
|
-
border: "1px solid var(--vibes-blue, #3b82f6)",
|
|
20
|
-
borderRadius: 10,
|
|
21
|
-
padding: "10px 14px",
|
|
22
|
-
font: "inherit",
|
|
23
|
-
fontSize: 15,
|
|
24
|
-
fontWeight: 600,
|
|
25
|
-
cursor: "pointer",
|
|
26
|
-
} }, "Make your own"),
|
|
27
|
-
React.createElement("button", { type: "button", "data-testid": "made-here-dismiss", onClick: props.onDismiss, className: "text-light-secondary dark:text-dark-secondary", style: {
|
|
28
|
-
background: "none",
|
|
29
|
-
border: "1px solid var(--color-light-decorative-00, #e5e5e5)",
|
|
30
|
-
borderRadius: 10,
|
|
31
|
-
padding: "10px 14px",
|
|
32
|
-
font: "inherit",
|
|
33
|
-
fontSize: 15,
|
|
34
|
-
cursor: "pointer",
|
|
35
|
-
} }, dismissLabel))));
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=MadeHereView.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MadeHereView.js","sourceRoot":"","sources":["../../jsr/components/MadeHereView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAqC1B,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,MAAM,YAAY,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,cAAc,KAAK,EAAE,CAAC;IACzG,OAAO,CACL,4CAAiB,gBAAgB,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;QAClE,6BACE,SAAS,EAAC,2CAA2C,EAGrD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;YAE5E,IAAI;sCACD;QACN,2BAAG,SAAS,EAAC,+CAA+C,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;YACtH,KAAK,CAAC,WAAW;gBAChB,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,mDAAmD;gBAC1E,CAAC,CAAC,0DAA0D;+EAE5D;QACJ,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;YAC7E,gCACE,IAAI,EAAC,QAAQ,iBACD,sBAAsB,EAClC,OAAO,EAAE,KAAK,CAAC,WAAW,EAC1B,KAAK,EAAE;oBACL,UAAU,EAAE,4BAA4B;oBACxC,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,sCAAsC;oBAC9C,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,WAAW;oBACpB,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE,GAAG;oBACf,MAAM,EAAE,SAAS;iBAClB,oBAGM;YACT,gCACE,IAAI,EAAC,QAAQ,iBACD,mBAAmB,EAC/B,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,SAAS,EAAC,+CAA+C,EACzD,KAAK,EAAE;oBACL,UAAU,EAAE,MAAM;oBAClB,MAAM,EAAE,qDAAqD;oBAC7D,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,WAAW;oBACpB,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,EAAE;oBACZ,MAAM,EAAE,SAAS;iBAClB,IAEA,YAAY,CACN,CACL,CACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
export type RecentVibeStatus = "draft" | "published" | "unpublished";
|
|
3
|
-
export interface RecentVibeListItem {
|
|
4
|
-
readonly id: string;
|
|
5
|
-
readonly appSlug: string;
|
|
6
|
-
readonly title?: string;
|
|
7
|
-
readonly status?: RecentVibeStatus;
|
|
8
|
-
readonly pinned?: boolean;
|
|
9
|
-
readonly screenshotUrl?: string;
|
|
10
|
-
readonly updatedLabel?: string;
|
|
11
|
-
}
|
|
12
|
-
export interface RecentVibesListProps {
|
|
13
|
-
readonly items: readonly RecentVibeListItem[];
|
|
14
|
-
readonly loading?: boolean;
|
|
15
|
-
readonly emptyText?: string;
|
|
16
|
-
readonly onOpenVibe?: (item: RecentVibeListItem) => void;
|
|
17
|
-
readonly onTogglePin?: (item: RecentVibeListItem) => void;
|
|
18
|
-
}
|
|
19
|
-
export declare function RecentVibesList(props: RecentVibesListProps): React.JSX.Element;
|