@vibes.diy/base 14.3.20 → 14.3.22
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,62 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Glyph } from "./Glyph.js";
|
|
3
|
+
function chipClassName(props) {
|
|
4
|
+
const names = ["vm-chip"];
|
|
5
|
+
if (props.copy === true)
|
|
6
|
+
names.push("vm-copy");
|
|
7
|
+
if (props.name === true)
|
|
8
|
+
names.push("is-name");
|
|
9
|
+
if (props.ghost === true)
|
|
10
|
+
names.push("is-ghost");
|
|
11
|
+
return names.join(" ");
|
|
12
|
+
}
|
|
13
|
+
export function Chip(props) {
|
|
14
|
+
return (React.createElement("button", { ref: props.chipRef, className: chipClassName(props), type: "button", "aria-label": props.ariaLabel, "aria-disabled": props.disabled === true ? "true" : undefined, style: props.style, onClick: () => {
|
|
15
|
+
if (props.disabled === true)
|
|
16
|
+
return;
|
|
17
|
+
props.onClick();
|
|
18
|
+
} }, props.label));
|
|
19
|
+
}
|
|
20
|
+
export function ChipRow(props) {
|
|
21
|
+
return React.createElement("div", { className: "vm-picks" }, props.children);
|
|
22
|
+
}
|
|
23
|
+
function toggleable(state) {
|
|
24
|
+
return state.canBless === true || state.canUnbless === true;
|
|
25
|
+
}
|
|
26
|
+
function suggestionMark(text, state, onToggle) {
|
|
27
|
+
if (state.jump === true) {
|
|
28
|
+
return (React.createElement("span", { className: "vm-suggest-badge is-jump", role: "img", "aria-label": "Opens another app" },
|
|
29
|
+
React.createElement(Glyph, { name: "arrow-right" })));
|
|
30
|
+
}
|
|
31
|
+
if (typeof onToggle === "function" && toggleable(state)) {
|
|
32
|
+
return (React.createElement("button", { className: "vm-suggest-shield", type: "button", "aria-pressed": state.shielded === true ? "true" : "false", "aria-label": `Fast path: ${text}`, onClick: () => onToggle(text) },
|
|
33
|
+
React.createElement(Glyph, { name: "shield" })));
|
|
34
|
+
}
|
|
35
|
+
if (state.shielded === true) {
|
|
36
|
+
return (React.createElement("span", { className: "vm-suggest-badge is-shield", role: "img", "aria-label": "Stays in this app" },
|
|
37
|
+
React.createElement(Glyph, { name: "shield" })));
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
export function Suggestions(props) {
|
|
42
|
+
if (props.items.length === 0)
|
|
43
|
+
return null;
|
|
44
|
+
const onToggle = props.onToggleFastPath;
|
|
45
|
+
return (React.createElement("div", { className: "vm-suggestions" }, props.items.slice(0, 3).map((text) => {
|
|
46
|
+
const pick = (React.createElement("button", { key: text, className: "vm-suggest", type: "button", onClick: () => props.onPick(text) }, text));
|
|
47
|
+
const state = props.fastPaths?.find((path) => path.text === text)?.state;
|
|
48
|
+
if (state === undefined)
|
|
49
|
+
return pick;
|
|
50
|
+
const mark = suggestionMark(text, state, onToggle);
|
|
51
|
+
if (mark === null)
|
|
52
|
+
return pick;
|
|
53
|
+
return (React.createElement("span", { key: text, className: "vm-suggest-item" },
|
|
54
|
+
pick,
|
|
55
|
+
mark));
|
|
56
|
+
})));
|
|
57
|
+
}
|
|
58
|
+
export function RefreshButton(props) {
|
|
59
|
+
return (React.createElement("button", { className: "vm-refresh", type: "button", "aria-label": "More ideas", onClick: props.onRefresh },
|
|
60
|
+
React.createElement(Glyph, { name: "refresh" })));
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=Chip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Chip.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/Chip.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { UseAttachments } from "../../../attachments/use-attachments.js";
|
|
3
|
+
import { type PromptAttachment } from "../../../attachments/attachment-types.js";
|
|
4
|
+
export type ComposerCap = "Send" | "Stop" | "Remix this";
|
|
5
|
+
export interface ComposerEdge {
|
|
6
|
+
readonly text: string;
|
|
7
|
+
readonly seq: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ComposerRestore extends ComposerEdge {
|
|
10
|
+
readonly attachments?: readonly PromptAttachment[];
|
|
11
|
+
}
|
|
12
|
+
export type ComposerSubmitAnswer = boolean | undefined | Promise<boolean | undefined>;
|
|
13
|
+
export interface ComposerSlice {
|
|
14
|
+
readonly placeholder: string;
|
|
15
|
+
readonly cap: ComposerCap;
|
|
16
|
+
readonly queuedNote: boolean;
|
|
17
|
+
readonly disabled: boolean;
|
|
18
|
+
readonly sendsNow: boolean;
|
|
19
|
+
readonly onSubmit: (text: string, attachments: readonly PromptAttachment[]) => ComposerSubmitAnswer;
|
|
20
|
+
readonly onStop: () => void;
|
|
21
|
+
readonly stopDisabled?: boolean;
|
|
22
|
+
readonly seed: ComposerEdge | null;
|
|
23
|
+
readonly restore: ComposerRestore | null;
|
|
24
|
+
}
|
|
25
|
+
export interface ComposerDraft {
|
|
26
|
+
readonly text: string;
|
|
27
|
+
setText(text: string): void;
|
|
28
|
+
readonly attachments: UseAttachments;
|
|
29
|
+
readonly queued: readonly string[];
|
|
30
|
+
submit(): void;
|
|
31
|
+
stop(): void;
|
|
32
|
+
}
|
|
33
|
+
export interface ComposerProps {
|
|
34
|
+
readonly composer: ComposerSlice;
|
|
35
|
+
readonly draft: ComposerDraft;
|
|
36
|
+
readonly placeholder?: string;
|
|
37
|
+
readonly fieldRef?: React.Ref<HTMLTextAreaElement>;
|
|
38
|
+
}
|
|
39
|
+
export declare function Composer(props: ComposerProps): React.ReactElement;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { ATTACHMENT_ACCEPT } from "../../../attachments/attachment-types.js";
|
|
3
|
+
import { composerFileDrop } from "../../../attachments/composer-file-drop.js";
|
|
4
|
+
import { Glyph } from "./Glyph.js";
|
|
5
|
+
function StagedAttachments(props) {
|
|
6
|
+
if (props.chips.length === 0)
|
|
7
|
+
return null;
|
|
8
|
+
return (React.createElement("div", { className: "vm-picks vm-attachments", "aria-live": "polite" }, props.chips.map((chip) => (React.createElement("button", { key: chip.id, className: "vm-chip is-name is-ghost", type: "button", "data-status": chip.status, title: chip.error, "aria-label": `Remove ${chip.name}`, onClick: () => props.onRemove(chip.id) },
|
|
9
|
+
chip.status === "processing" ? React.createElement("span", { className: "vm-busy", "aria-hidden": "true" }) : null,
|
|
10
|
+
React.createElement("span", null, chip.name))))));
|
|
11
|
+
}
|
|
12
|
+
export function Composer(props) {
|
|
13
|
+
const { composer, draft } = props;
|
|
14
|
+
const attachments = draft.attachments;
|
|
15
|
+
const fileInput = React.useRef(null);
|
|
16
|
+
const building = composer.cap === "Stop";
|
|
17
|
+
function submit() {
|
|
18
|
+
if (composer.disabled === true)
|
|
19
|
+
return;
|
|
20
|
+
draft.submit();
|
|
21
|
+
}
|
|
22
|
+
function onKeyDown(event) {
|
|
23
|
+
if (event.key !== "Enter" || event.shiftKey === true)
|
|
24
|
+
return;
|
|
25
|
+
if (event.nativeEvent.isComposing === true || event.nativeEvent.keyCode === 229)
|
|
26
|
+
return;
|
|
27
|
+
event.preventDefault();
|
|
28
|
+
submit();
|
|
29
|
+
}
|
|
30
|
+
const drop = composerFileDrop({ onFiles: attachments.add });
|
|
31
|
+
const sendCap = (React.createElement("button", { className: "vm-cap", type: "button", "data-send": "", disabled: composer.disabled, onClick: submit }, composer.cap === "Remix this" ? "Remix this" : "Send"));
|
|
32
|
+
return (React.createElement(React.Fragment, null,
|
|
33
|
+
React.createElement("input", { ref: fileInput, type: "file", multiple: true, hidden: true, accept: ATTACHMENT_ACCEPT, onChange: (event) => {
|
|
34
|
+
attachments.add(Array.from(event.currentTarget.files ?? []));
|
|
35
|
+
event.currentTarget.value = "";
|
|
36
|
+
} }),
|
|
37
|
+
React.createElement(StagedAttachments, { chips: attachments.attachments, onRemove: attachments.remove }),
|
|
38
|
+
React.createElement("label", { className: building ? "vm-composer is-building" : "vm-composer", onDragOver: drop.onDragOver, onDrop: drop.onDrop },
|
|
39
|
+
React.createElement("textarea", { ref: props.fieldRef, rows: 1, value: draft.text, placeholder: props.placeholder ?? composer.placeholder, "aria-label": composer.cap === "Remix this" ? "Describe your remix" : "Describe a change", disabled: composer.disabled, onChange: (event) => draft.setText(event.target.value), onKeyDown: onKeyDown }),
|
|
40
|
+
React.createElement("button", { className: "vm-attach", type: "button", "aria-label": "Attach a picture or file", disabled: composer.disabled, onClick: () => fileInput.current?.click() },
|
|
41
|
+
React.createElement(Glyph, { name: "paperclip" })),
|
|
42
|
+
building ? (React.createElement(React.Fragment, null,
|
|
43
|
+
React.createElement("button", { className: "vm-cap", type: "button", "data-stop": "", disabled: composer.stopDisabled === true, onClick: () => draft.stop() }, "Stop"),
|
|
44
|
+
sendCap)) : (sendCap)),
|
|
45
|
+
composer.queuedNote ? React.createElement("p", { className: "vm-queue-note" }, "Sends when this finishes.") : null));
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=Composer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/Composer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DoneButton.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/DoneButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,OAAO,CACL,gCAAQ,SAAS,EAAC,SAAS,EAAC,IAAI,EAAC,QAAQ,eAAW,EAAE,EAAC,OAAO,EAAE,KAAK,CAAC,MAAM,WAEnE,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type GlyphName = "home" | "settings" | "code" | "users" | "at-sign" | "plus" | "star" | "sliders" | "log-out" | "user-plus" | "arrow-right" | "arrow-left" | "check" | "chevron-right" | "layout-grid" | "key" | "palette" | "file" | "help-circle" | "braces" | "qr-code" | "paperclip" | "lock" | "globe" | "copy" | "refresh" | "database" | "line-chart" | "lines" | "bell" | "pin" | "user-minus" | "shield";
|
|
3
|
+
export declare const PORT_ADDED_GLYPHS: readonly GlyphName[];
|
|
4
|
+
export declare const GLYPH_NAMES: readonly GlyphName[];
|
|
5
|
+
export interface GlyphProps {
|
|
6
|
+
readonly name: GlyphName;
|
|
7
|
+
readonly className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function Glyph(props: GlyphProps): React.ReactElement;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export const PORT_ADDED_GLYPHS = ["bell", "pin", "user-minus", "shield"];
|
|
3
|
+
const GLYPH_SHAPES = {
|
|
4
|
+
home: React.createElement("path", { d: "M3 11l9-8 9 8v10a1 1 0 0 1-1 1h-5v-7H9v7H4a1 1 0 0 1-1-1z" }),
|
|
5
|
+
settings: (React.createElement(React.Fragment, null,
|
|
6
|
+
React.createElement("path", { d: "M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z" }),
|
|
7
|
+
React.createElement("circle", { cx: "12", cy: "12", r: "3" }))),
|
|
8
|
+
code: (React.createElement(React.Fragment, null,
|
|
9
|
+
React.createElement("polyline", { points: "16 18 22 12 16 6" }),
|
|
10
|
+
React.createElement("polyline", { points: "8 6 2 12 8 18" }))),
|
|
11
|
+
users: (React.createElement(React.Fragment, null,
|
|
12
|
+
React.createElement("circle", { cx: "9", cy: "7", r: "4" }),
|
|
13
|
+
React.createElement("path", { d: "M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2M23 21v-2a4 4 0 0 0-3-3.9M16 3.1a4 4 0 0 1 0 7.8" }))),
|
|
14
|
+
"at-sign": (React.createElement(React.Fragment, null,
|
|
15
|
+
React.createElement("circle", { cx: "12", cy: "12", r: "4" }),
|
|
16
|
+
React.createElement("path", { d: "M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8" }))),
|
|
17
|
+
plus: React.createElement("path", { d: "M12 5v14M5 12h14" }),
|
|
18
|
+
star: React.createElement("path", { d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01z" }),
|
|
19
|
+
sliders: React.createElement("path", { d: "M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6" }),
|
|
20
|
+
"log-out": React.createElement("path", { d: "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9" }),
|
|
21
|
+
"user-plus": (React.createElement(React.Fragment, null,
|
|
22
|
+
React.createElement("path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" }),
|
|
23
|
+
React.createElement("circle", { cx: "9", cy: "7", r: "4" }),
|
|
24
|
+
React.createElement("path", { d: "M19 8v6M22 11h-6" }))),
|
|
25
|
+
"arrow-right": React.createElement("path", { d: "M5 12h14M12 5l7 7-7 7" }),
|
|
26
|
+
"arrow-left": React.createElement("path", { d: "M19 12H5M12 19l-7-7 7-7" }),
|
|
27
|
+
check: React.createElement("path", { d: "M20 6L9 17l-5-5" }),
|
|
28
|
+
"chevron-right": React.createElement("path", { d: "M9 6l6 6-6 6" }),
|
|
29
|
+
"layout-grid": (React.createElement(React.Fragment, null,
|
|
30
|
+
React.createElement("rect", { x: "3", y: "3", width: "7", height: "7", rx: "1" }),
|
|
31
|
+
React.createElement("rect", { x: "14", y: "3", width: "7", height: "7", rx: "1" }),
|
|
32
|
+
React.createElement("rect", { x: "3", y: "14", width: "7", height: "7", rx: "1" }),
|
|
33
|
+
React.createElement("rect", { x: "14", y: "14", width: "7", height: "7", rx: "1" }))),
|
|
34
|
+
key: (React.createElement(React.Fragment, null,
|
|
35
|
+
React.createElement("circle", { cx: "7.5", cy: "15.5", r: "5.5" }),
|
|
36
|
+
React.createElement("path", { d: "M21 2l-9.6 9.6M15.5 7.5l3 3L22 7l-3-3" }))),
|
|
37
|
+
palette: (React.createElement(React.Fragment, null,
|
|
38
|
+
React.createElement("circle", { cx: "13.5", cy: "6.5", r: "1" }),
|
|
39
|
+
React.createElement("circle", { cx: "17.5", cy: "10.5", r: "1" }),
|
|
40
|
+
React.createElement("circle", { cx: "8.5", cy: "7.5", r: "1" }),
|
|
41
|
+
React.createElement("circle", { cx: "6.5", cy: "12.5", r: "1" }),
|
|
42
|
+
React.createElement("path", { d: "M12 2a10 10 0 0 0 0 20c.93 0 1.5-.75 1.5-1.5 0-.39-.15-.74-.39-1.01-.24-.27-.38-.62-.38-.99 0-.83.67-1.5 1.5-1.5H16a6 6 0 0 0 6-6c0-4.97-4.48-9-10-9z" }))),
|
|
43
|
+
file: (React.createElement(React.Fragment, null,
|
|
44
|
+
React.createElement("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }),
|
|
45
|
+
React.createElement("path", { d: "M14 2v6h6" }))),
|
|
46
|
+
"help-circle": (React.createElement(React.Fragment, null,
|
|
47
|
+
React.createElement("circle", { cx: "12", cy: "12", r: "10" }),
|
|
48
|
+
React.createElement("path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3M12 17h.01" }))),
|
|
49
|
+
braces: (React.createElement("path", { d: "M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5a2 2 0 0 0 2 2h1M16 21h1a2 2 0 0 0 2-2v-5a2 2 0 0 1 2-2 2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1" })),
|
|
50
|
+
"qr-code": (React.createElement(React.Fragment, null,
|
|
51
|
+
React.createElement("rect", { x: "3", y: "3", width: "7", height: "7" }),
|
|
52
|
+
React.createElement("rect", { x: "14", y: "3", width: "7", height: "7" }),
|
|
53
|
+
React.createElement("rect", { x: "3", y: "14", width: "7", height: "7" }),
|
|
54
|
+
React.createElement("path", { d: "M14 14h3v3h-3zM20 14v.01M14 20h.01M17 17h4v4h-4" }))),
|
|
55
|
+
paperclip: (React.createElement("path", { d: "M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48" })),
|
|
56
|
+
lock: (React.createElement(React.Fragment, null,
|
|
57
|
+
React.createElement("rect", { x: "4", y: "11", width: "16", height: "10", rx: "2" }),
|
|
58
|
+
React.createElement("path", { d: "M8 11V7a4 4 0 0 1 8 0v4" }))),
|
|
59
|
+
globe: (React.createElement(React.Fragment, null,
|
|
60
|
+
React.createElement("circle", { cx: "12", cy: "12", r: "10" }),
|
|
61
|
+
React.createElement("path", { d: "M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" }))),
|
|
62
|
+
copy: (React.createElement(React.Fragment, null,
|
|
63
|
+
React.createElement("rect", { x: "9", y: "9", width: "12", height: "12", rx: "2" }),
|
|
64
|
+
React.createElement("path", { d: "M5 15H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v1" }))),
|
|
65
|
+
refresh: React.createElement("path", { d: "M21 12a9 9 0 1 1-2.64-6.36L21 8M21 3v5h-5" }),
|
|
66
|
+
database: (React.createElement(React.Fragment, null,
|
|
67
|
+
React.createElement("ellipse", { cx: "12", cy: "5", rx: "9", ry: "3" }),
|
|
68
|
+
React.createElement("path", { d: "M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5M3 12c0 1.66 4 3 9 3s9-1.34 9-3" }))),
|
|
69
|
+
"line-chart": (React.createElement(React.Fragment, null,
|
|
70
|
+
React.createElement("path", { d: "M3 3v18h18" }),
|
|
71
|
+
React.createElement("path", { d: "M7 15l4-4 3 3 5-6" }))),
|
|
72
|
+
lines: React.createElement("path", { d: "M4 7h16M4 12h16M4 17h10" }),
|
|
73
|
+
bell: (React.createElement(React.Fragment, null,
|
|
74
|
+
React.createElement("path", { d: "M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9" }),
|
|
75
|
+
React.createElement("path", { d: "M10.3 21a1.94 1.94 0 0 0 3.4 0" }))),
|
|
76
|
+
pin: (React.createElement(React.Fragment, null,
|
|
77
|
+
React.createElement("path", { d: "M12 17v5" }),
|
|
78
|
+
React.createElement("path", { d: "M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z" }))),
|
|
79
|
+
"user-minus": (React.createElement(React.Fragment, null,
|
|
80
|
+
React.createElement("path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" }),
|
|
81
|
+
React.createElement("circle", { cx: "9", cy: "7", r: "4" }),
|
|
82
|
+
React.createElement("path", { d: "M22 11h-6" }))),
|
|
83
|
+
shield: (React.createElement("path", { d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z" })),
|
|
84
|
+
};
|
|
85
|
+
export const GLYPH_NAMES = [
|
|
86
|
+
"home",
|
|
87
|
+
"settings",
|
|
88
|
+
"code",
|
|
89
|
+
"users",
|
|
90
|
+
"at-sign",
|
|
91
|
+
"plus",
|
|
92
|
+
"star",
|
|
93
|
+
"sliders",
|
|
94
|
+
"log-out",
|
|
95
|
+
"user-plus",
|
|
96
|
+
"arrow-right",
|
|
97
|
+
"arrow-left",
|
|
98
|
+
"check",
|
|
99
|
+
"chevron-right",
|
|
100
|
+
"layout-grid",
|
|
101
|
+
"key",
|
|
102
|
+
"palette",
|
|
103
|
+
"file",
|
|
104
|
+
"help-circle",
|
|
105
|
+
"braces",
|
|
106
|
+
"qr-code",
|
|
107
|
+
"paperclip",
|
|
108
|
+
"lock",
|
|
109
|
+
"globe",
|
|
110
|
+
"copy",
|
|
111
|
+
"refresh",
|
|
112
|
+
"database",
|
|
113
|
+
"line-chart",
|
|
114
|
+
"lines",
|
|
115
|
+
"bell",
|
|
116
|
+
"pin",
|
|
117
|
+
"user-minus",
|
|
118
|
+
"shield",
|
|
119
|
+
];
|
|
120
|
+
export function Glyph(props) {
|
|
121
|
+
return (React.createElement("svg", { className: props.className ?? "vm-glyph", viewBox: "0 0 24 24", "aria-hidden": "true", focusable: "false", "data-glyph": props.name }, GLYPH_SHAPES[props.name]));
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=Glyph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Glyph.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/Glyph.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type GrantData = "read" | "write" | "submit";
|
|
3
|
+
export interface GrantControlsProps {
|
|
4
|
+
readonly who: string;
|
|
5
|
+
readonly label: string;
|
|
6
|
+
readonly data: GrantData | null;
|
|
7
|
+
readonly code: boolean | null;
|
|
8
|
+
readonly readOnly: boolean;
|
|
9
|
+
readonly disabled?: boolean;
|
|
10
|
+
readonly onData?: (data: "read" | "write") => void;
|
|
11
|
+
readonly onCode?: (code: boolean) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare function GrantControls(props: GrantControlsProps): React.ReactElement;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { nextRadioIndex } from "./radio-keys.js";
|
|
3
|
+
const DATA_OPTIONS = [
|
|
4
|
+
{ value: "read", label: "Read" },
|
|
5
|
+
{ value: "write", label: "Write" },
|
|
6
|
+
];
|
|
7
|
+
const CODE_OPTIONS = [
|
|
8
|
+
{ value: "yes", label: "Yes" },
|
|
9
|
+
{ value: "no", label: "No" },
|
|
10
|
+
];
|
|
11
|
+
function MiniSegment(props) {
|
|
12
|
+
const buttons = React.useRef([]);
|
|
13
|
+
const focusIndex = Math.max(0, props.options.findIndex((option) => option.value === props.value));
|
|
14
|
+
function choose(index) {
|
|
15
|
+
const option = props.options[index];
|
|
16
|
+
if (option === undefined)
|
|
17
|
+
return;
|
|
18
|
+
buttons.current[index]?.focus();
|
|
19
|
+
if (option.value === props.value || props.disabled === true)
|
|
20
|
+
return;
|
|
21
|
+
props.onChange?.(option.value);
|
|
22
|
+
}
|
|
23
|
+
return (React.createElement("span", { className: "vm-grant-ctl" },
|
|
24
|
+
React.createElement("span", { className: "vm-grant-name" }, props.name),
|
|
25
|
+
React.createElement("span", { className: "vm-seg is-mini", role: "radiogroup", "aria-label": props.name }, props.options.map((option, index) => (React.createElement("button", { key: option.value, ref: (el) => {
|
|
26
|
+
buttons.current[index] = el;
|
|
27
|
+
}, className: option.value === props.value ? "is-active" : "", type: "button", role: "radio", "aria-checked": option.value === props.value, "aria-disabled": props.disabled === true ? "true" : undefined, tabIndex: index === focusIndex ? 0 : -1, "data-grant": `${props.who}:${props.kind}:${option.value}`, onClick: () => choose(index), onKeyDown: (event) => {
|
|
28
|
+
const next = nextRadioIndex({ key: event.key, index, count: props.options.length });
|
|
29
|
+
if (next === undefined)
|
|
30
|
+
return;
|
|
31
|
+
event.preventDefault();
|
|
32
|
+
choose(next);
|
|
33
|
+
} }, option.label))))));
|
|
34
|
+
}
|
|
35
|
+
function FixedGrant(props) {
|
|
36
|
+
return (React.createElement("span", { className: "vm-grant-ctl" },
|
|
37
|
+
React.createElement("span", { className: "vm-grant-name" }, props.name),
|
|
38
|
+
React.createElement("span", { className: "vm-grant-fixed" }, props.value)));
|
|
39
|
+
}
|
|
40
|
+
function DataGrantControl(props) {
|
|
41
|
+
const data = props.data;
|
|
42
|
+
if (data === "submit")
|
|
43
|
+
return React.createElement(FixedGrant, { name: "Data", value: "Submit" });
|
|
44
|
+
if (props.readOnly)
|
|
45
|
+
return data === null ? null : React.createElement(FixedGrant, { name: "Data", value: data === "read" ? "Read" : "Write" });
|
|
46
|
+
return (React.createElement(MiniSegment, { name: "Data", who: props.who, kind: "data", options: DATA_OPTIONS, value: data, disabled: props.disabled === true, onChange: props.onData }));
|
|
47
|
+
}
|
|
48
|
+
function CodeGrantControl(props) {
|
|
49
|
+
if (props.code === null)
|
|
50
|
+
return null;
|
|
51
|
+
if (props.readOnly)
|
|
52
|
+
return React.createElement(FixedGrant, { name: "Code", value: props.code ? "Yes" : "No" });
|
|
53
|
+
const onCode = props.onCode;
|
|
54
|
+
return (React.createElement(MiniSegment, { name: "Code", who: props.who, kind: "code", options: CODE_OPTIONS, value: props.code ? "yes" : "no", disabled: props.disabled === true, onChange: onCode === undefined ? undefined : (value) => onCode(value === "yes") }));
|
|
55
|
+
}
|
|
56
|
+
export function GrantControls(props) {
|
|
57
|
+
return (React.createElement("span", { className: "vm-grants", role: "group", "aria-label": `${props.label} access` },
|
|
58
|
+
React.createElement(DataGrantControl, { ...props }),
|
|
59
|
+
React.createElement(CodeGrantControl, { ...props })));
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=GrantControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrantControls.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/GrantControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAUjD,MAAM,YAAY,GAA+C;IAC/D,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAChC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;CACnC,CAAC;AAEF,MAAM,YAAY,GAA2C;IAC3D,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;IAC9B,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;CAC7B,CAAC;AAEF,SAAS,WAAW,CAAmB,KAQtC;IACC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAA+B,EAAE,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,CAAC,EACD,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAClE,CAAC;IAEF,SAAS,MAAM,CAAC,KAAa;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO;QACpE,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,CACL,8BAAM,SAAS,EAAC,cAAc;QAC5B,8BAAM,SAAS,EAAC,eAAe,IAAE,KAAK,CAAC,IAAI,CAAQ;QACnD,8BAAM,SAAS,EAAC,gBAAgB,EAAC,IAAI,EAAC,YAAY,gBAAa,KAAK,CAAC,IAAI,IACtE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACpC,gCACE,GAAG,EAAE,MAAM,CAAC,KAAK,EACjB,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;gBACV,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAC9B,CAAC,EACD,SAAS,EAAE,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAC1D,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,OAAO,kBACE,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,mBAC3B,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC3D,QAAQ,EAAE,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAC3B,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,EACxD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5B,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnB,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBACpF,IAAI,IAAI,KAAK,SAAS;oBAAE,OAAO;gBAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,CAAC;YACf,CAAC,IAEA,MAAM,CAAC,KAAK,CACN,CACV,CAAC,CACG,CACF,CACR,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAwD;IAC1E,OAAO,CACL,8BAAM,SAAS,EAAC,cAAc;QAC5B,8BAAM,SAAS,EAAC,eAAe,IAAE,KAAK,CAAC,IAAI,CAAQ;QACnD,8BAAM,SAAS,EAAC,gBAAgB,IAAE,KAAK,CAAC,KAAK,CAAQ,CAChD,CACR,CAAC;AACJ,CAAC;AAmBD,SAAS,gBAAgB,CAAC,KAAyB;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,oBAAC,UAAU,IAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,QAAQ,GAAG,CAAC;IACxE,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAC,UAAU,IAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAI,CAAC;IACxH,OAAO,CACL,oBAAC,WAAW,IACV,IAAI,EAAC,MAAM,EACX,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI,EACjC,QAAQ,EAAE,KAAK,CAAC,MAAM,GACtB,CACH,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAyB;IACjD,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO,oBAAC,UAAU,IAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAI,CAAC;IACxF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,OAAO,CACL,oBAAC,WAAW,IACV,IAAI,EAAC,MAAM,EACX,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI,EACjC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,GAC/E,CACH,CAAC;AACJ,CAAC;AAGD,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,OAAO,CACL,8BAAM,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,OAAO,gBAAa,GAAG,KAAK,CAAC,KAAK,SAAS;QAC1E,oBAAC,gBAAgB,OAAK,KAAK,GAAI;QAC/B,oBAAC,gBAAgB,OAAK,KAAK,GAAI,CAC1B,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { Result } from "@adviser/cement";
|
|
3
|
+
import { type GrantData } from "./GrantControls.js";
|
|
4
|
+
export interface MemberRowMember {
|
|
5
|
+
readonly key: string;
|
|
6
|
+
readonly handle: string | null;
|
|
7
|
+
readonly email: string | null;
|
|
8
|
+
readonly data: GrantData | null;
|
|
9
|
+
readonly code: boolean;
|
|
10
|
+
readonly pendingEmail: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function memberDisplayName(member: MemberRowMember): string;
|
|
13
|
+
export interface MemberRowProps {
|
|
14
|
+
readonly member: MemberRowMember;
|
|
15
|
+
readonly readOnly: boolean;
|
|
16
|
+
readonly busy?: boolean;
|
|
17
|
+
readonly onData?: (data: "read" | "write") => void;
|
|
18
|
+
readonly onCode?: (code: boolean) => void;
|
|
19
|
+
readonly onOpen?: () => void;
|
|
20
|
+
readonly onRemoveInvite?: () => void;
|
|
21
|
+
}
|
|
22
|
+
export declare function MemberRow(props: MemberRowProps): React.ReactElement;
|
|
23
|
+
export interface MemberRequestProps {
|
|
24
|
+
readonly who: string;
|
|
25
|
+
readonly handle: string;
|
|
26
|
+
readonly pending: boolean;
|
|
27
|
+
readonly onApprove: (grants: {
|
|
28
|
+
readonly data: "read" | "write";
|
|
29
|
+
readonly code: boolean;
|
|
30
|
+
}) => void;
|
|
31
|
+
readonly onDecline: () => void;
|
|
32
|
+
}
|
|
33
|
+
export declare function MemberRequest(props: MemberRequestProps): React.ReactElement;
|
|
34
|
+
export interface InviteFieldProps {
|
|
35
|
+
readonly onInvite: (handleOrEmail: string) => Promise<Result<void>>;
|
|
36
|
+
}
|
|
37
|
+
export declare function InviteField(props: InviteFieldProps): React.ReactElement;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Chip } from "./Chip.js";
|
|
3
|
+
import { GrantControls } from "./GrantControls.js";
|
|
4
|
+
export function memberDisplayName(member) {
|
|
5
|
+
if (member.handle !== null)
|
|
6
|
+
return `@${member.handle}`;
|
|
7
|
+
if (member.email !== null)
|
|
8
|
+
return member.email;
|
|
9
|
+
return member.key;
|
|
10
|
+
}
|
|
11
|
+
function memberInitial(member) {
|
|
12
|
+
return (member.handle ?? member.email ?? member.key).slice(0, 1).toUpperCase();
|
|
13
|
+
}
|
|
14
|
+
export function MemberRow(props) {
|
|
15
|
+
const member = props.member;
|
|
16
|
+
const name = memberDisplayName(member);
|
|
17
|
+
const nameNode = props.onOpen === undefined ? (React.createElement("span", { className: "vm-label is-plain" }, name)) : (React.createElement("button", { className: "vm-label is-plain", type: "button", onClick: props.onOpen }, name));
|
|
18
|
+
return (React.createElement("div", { className: "vm-person", "data-member": member.key },
|
|
19
|
+
React.createElement("span", { className: "vm-dot vm-initial", "aria-hidden": "true" }, memberInitial(member)),
|
|
20
|
+
nameNode,
|
|
21
|
+
member.pendingEmail ? (React.createElement(React.Fragment, null,
|
|
22
|
+
React.createElement("span", { className: "vm-grants" },
|
|
23
|
+
React.createElement("span", { className: "vm-grant-ctl" },
|
|
24
|
+
React.createElement("span", { className: "vm-grant-fixed" }, "Invited"))),
|
|
25
|
+
props.onRemoveInvite === undefined ? null : (React.createElement(Chip, { label: "Remove", ghost: true, ariaLabel: `Remove invite for ${name}`, disabled: props.busy === true, onClick: props.onRemoveInvite })))) : (React.createElement(GrantControls, { who: member.key, label: name, data: member.data, code: member.code, readOnly: props.readOnly, disabled: props.busy === true, onData: props.onData, onCode: props.onCode }))));
|
|
26
|
+
}
|
|
27
|
+
export function MemberRequest(props) {
|
|
28
|
+
const [data, setData] = React.useState("read");
|
|
29
|
+
const [code, setCode] = React.useState(false);
|
|
30
|
+
return (React.createElement("div", { className: "vm-request", "data-request": props.who },
|
|
31
|
+
React.createElement("div", { className: "vm-request-top" },
|
|
32
|
+
React.createElement("span", null,
|
|
33
|
+
React.createElement("b", null,
|
|
34
|
+
"@",
|
|
35
|
+
props.handle),
|
|
36
|
+
" wants access")),
|
|
37
|
+
React.createElement(GrantControls, { who: props.who, label: `@${props.handle}`, data: data, code: code, readOnly: false, onData: setData, onCode: setCode }),
|
|
38
|
+
React.createElement("div", { className: "vm-request-actions" },
|
|
39
|
+
React.createElement(Chip, { label: "Approve", disabled: props.pending, onClick: () => props.onApprove({ data, code }) }),
|
|
40
|
+
React.createElement(Chip, { label: "Not now", ghost: true, disabled: props.pending, onClick: () => props.onDecline() }))));
|
|
41
|
+
}
|
|
42
|
+
export function InviteField(props) {
|
|
43
|
+
const [value, setValue] = React.useState("");
|
|
44
|
+
const [failed, setFailed] = React.useState(false);
|
|
45
|
+
const [busy, setBusy] = React.useState(false);
|
|
46
|
+
async function send() {
|
|
47
|
+
const text = value.trim();
|
|
48
|
+
if (text === "" || busy === true)
|
|
49
|
+
return;
|
|
50
|
+
setBusy(true);
|
|
51
|
+
const result = await props.onInvite(text);
|
|
52
|
+
setBusy(false);
|
|
53
|
+
if (result.isErr()) {
|
|
54
|
+
setFailed(true);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
setFailed(false);
|
|
58
|
+
setValue((current) => (current.trim() === text ? "" : current));
|
|
59
|
+
}
|
|
60
|
+
return (React.createElement("input", { className: "vm-input", placeholder: "Invite by handle or email", "aria-label": "Invite by handle or email", autoCapitalize: "off", spellCheck: false, value: value, "aria-invalid": failed ? true : undefined, "aria-busy": busy ? true : undefined, onChange: (event) => {
|
|
61
|
+
setValue(event.target.value);
|
|
62
|
+
setFailed(false);
|
|
63
|
+
}, onKeyDown: (event) => {
|
|
64
|
+
if (event.key !== "Enter")
|
|
65
|
+
return;
|
|
66
|
+
event.preventDefault();
|
|
67
|
+
void send();
|
|
68
|
+
} }));
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=MemberRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemberRow.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/MemberRow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { ReactNode, Ref } from "react";
|
|
3
|
+
import type { Section } from "../menu-state.js";
|
|
4
|
+
export interface MenuCardProps {
|
|
5
|
+
readonly section: Section | null;
|
|
6
|
+
readonly cardRef?: Ref<HTMLElement>;
|
|
7
|
+
readonly bodyRef?: Ref<HTMLDivElement>;
|
|
8
|
+
readonly children?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export declare function MenuCard(props: MenuCardProps): React.ReactElement;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { SECTION_TITLES } from "../menu-state.js";
|
|
3
|
+
export function MenuCard(props) {
|
|
4
|
+
return (React.createElement("section", { ref: props.cardRef, className: "vm-card", "data-section": props.section ?? undefined, "aria-label": props.section === null ? "Vibe menu card" : SECTION_TITLES[props.section] },
|
|
5
|
+
React.createElement("div", { ref: props.bodyRef, className: "vm-card-body" }, props.children)));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=MenuCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuCard.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/MenuCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAYlD,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,OAAO,CACL,iCACE,GAAG,EAAE,KAAK,CAAC,OAAO,EAClB,SAAS,EAAC,SAAS,kBACL,KAAK,CAAC,OAAO,IAAI,SAAS,gBAC5B,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC;QAErF,6BAAK,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAC,cAAc,IAC9C,KAAK,CAAC,QAAQ,CACX,CACE,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { CurrentMoment, MomentItem } from "../moments.js";
|
|
3
|
+
export type AgentLogWho = "you" | "built" | "agent";
|
|
4
|
+
export interface AgentLogLine {
|
|
5
|
+
readonly who: AgentLogWho;
|
|
6
|
+
readonly text: string;
|
|
7
|
+
}
|
|
8
|
+
export interface MomentLogControl {
|
|
9
|
+
readonly open: boolean;
|
|
10
|
+
readonly lines: readonly AgentLogLine[];
|
|
11
|
+
readonly onToggle: () => void;
|
|
12
|
+
}
|
|
13
|
+
export interface MomentLineProps {
|
|
14
|
+
readonly moment: CurrentMoment;
|
|
15
|
+
readonly log: MomentLogControl | null;
|
|
16
|
+
readonly onAction: (item: MomentItem, action: string) => void;
|
|
17
|
+
}
|
|
18
|
+
export interface AgentLogProps {
|
|
19
|
+
readonly id?: string;
|
|
20
|
+
readonly lines: readonly AgentLogLine[];
|
|
21
|
+
}
|
|
22
|
+
export declare function AgentLog(props: AgentLogProps): React.ReactElement;
|
|
23
|
+
export declare function MomentLine(props: MomentLineProps): React.ReactElement | null;
|