@smoove/studio 0.1.1
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/LICENSE +21 -0
- package/README.md +60 -0
- package/dist/components/brand/brand.d.ts +9 -0
- package/dist/components/brand/brand.d.ts.map +1 -0
- package/dist/components/brand/brand.js +11 -0
- package/dist/components/brand/brand.js.map +1 -0
- package/dist/components/button/button.d.ts +21 -0
- package/dist/components/button/button.d.ts.map +1 -0
- package/dist/components/button/button.js +20 -0
- package/dist/components/button/button.js.map +1 -0
- package/dist/components/button/icon-button.d.ts +27 -0
- package/dist/components/button/icon-button.d.ts.map +1 -0
- package/dist/components/button/icon-button.js +19 -0
- package/dist/components/button/icon-button.js.map +1 -0
- package/dist/components/header/header-title.d.ts +8 -0
- package/dist/components/header/header-title.d.ts.map +1 -0
- package/dist/components/header/header-title.js +7 -0
- package/dist/components/header/header-title.js.map +1 -0
- package/dist/components/header/header.d.ts +7 -0
- package/dist/components/header/header.d.ts.map +1 -0
- package/dist/components/header/header.js +7 -0
- package/dist/components/header/header.js.map +1 -0
- package/dist/components/header/zoom.d.ts +3 -0
- package/dist/components/header/zoom.d.ts.map +1 -0
- package/dist/components/header/zoom.js +16 -0
- package/dist/components/header/zoom.js.map +1 -0
- package/dist/components/icon/icon.d.ts +11 -0
- package/dist/components/icon/icon.d.ts.map +1 -0
- package/dist/components/icon/icon.js +7 -0
- package/dist/components/icon/icon.js.map +1 -0
- package/dist/components/icon/paths.d.ts +47 -0
- package/dist/components/icon/paths.d.ts.map +1 -0
- package/dist/components/icon/paths.js +54 -0
- package/dist/components/icon/paths.js.map +1 -0
- package/dist/components/left-panel/library.d.ts +8 -0
- package/dist/components/left-panel/library.d.ts.map +1 -0
- package/dist/components/left-panel/library.js +49 -0
- package/dist/components/left-panel/library.js.map +1 -0
- package/dist/components/left-panel/sidebar-group.d.ts +12 -0
- package/dist/components/left-panel/sidebar-group.d.ts.map +1 -0
- package/dist/components/left-panel/sidebar-group.js +11 -0
- package/dist/components/left-panel/sidebar-group.js.map +1 -0
- package/dist/components/left-panel/sidebar-item.d.ts +17 -0
- package/dist/components/left-panel/sidebar-item.d.ts.map +1 -0
- package/dist/components/left-panel/sidebar-item.js +12 -0
- package/dist/components/left-panel/sidebar-item.js.map +1 -0
- package/dist/components/left-panel/sidebar.d.ts +8 -0
- package/dist/components/left-panel/sidebar.d.ts.map +1 -0
- package/dist/components/left-panel/sidebar.js +8 -0
- package/dist/components/left-panel/sidebar.js.map +1 -0
- package/dist/components/primitives/dialog.d.ts +33 -0
- package/dist/components/primitives/dialog.d.ts.map +1 -0
- package/dist/components/primitives/dialog.js +30 -0
- package/dist/components/primitives/dialog.js.map +1 -0
- package/dist/components/primitives/menu.d.ts +25 -0
- package/dist/components/primitives/menu.d.ts.map +1 -0
- package/dist/components/primitives/menu.js +31 -0
- package/dist/components/primitives/menu.js.map +1 -0
- package/dist/components/primitives/number-field.d.ts +12 -0
- package/dist/components/primitives/number-field.d.ts.map +1 -0
- package/dist/components/primitives/number-field.js +7 -0
- package/dist/components/primitives/number-field.js.map +1 -0
- package/dist/components/primitives/portal-context.d.ts +9 -0
- package/dist/components/primitives/portal-context.d.ts.map +1 -0
- package/dist/components/primitives/portal-context.js +10 -0
- package/dist/components/primitives/portal-context.js.map +1 -0
- package/dist/components/primitives/select.d.ts +14 -0
- package/dist/components/primitives/select.d.ts.map +1 -0
- package/dist/components/primitives/select.js +11 -0
- package/dist/components/primitives/select.js.map +1 -0
- package/dist/components/primitives/slider.d.ts +10 -0
- package/dist/components/primitives/slider.d.ts.map +1 -0
- package/dist/components/primitives/slider.js +7 -0
- package/dist/components/primitives/slider.js.map +1 -0
- package/dist/components/primitives/switch.d.ts +5 -0
- package/dist/components/primitives/switch.d.ts.map +1 -0
- package/dist/components/primitives/switch.js +6 -0
- package/dist/components/primitives/switch.js.map +1 -0
- package/dist/components/primitives/tabs.d.ts +23 -0
- package/dist/components/primitives/tabs.d.ts.map +1 -0
- package/dist/components/primitives/tabs.js +17 -0
- package/dist/components/primitives/tabs.js.map +1 -0
- package/dist/components/primitives/tooltip.d.ts +9 -0
- package/dist/components/primitives/tooltip.d.ts.map +1 -0
- package/dist/components/primitives/tooltip.js +11 -0
- package/dist/components/primitives/tooltip.js.map +1 -0
- package/dist/components/render/export-frame-dialog.d.ts +8 -0
- package/dist/components/render/export-frame-dialog.d.ts.map +1 -0
- package/dist/components/render/export-frame-dialog.js +60 -0
- package/dist/components/render/export-frame-dialog.js.map +1 -0
- package/dist/components/render/render-dialog.d.ts +8 -0
- package/dist/components/render/render-dialog.d.ts.map +1 -0
- package/dist/components/render/render-dialog.js +95 -0
- package/dist/components/render/render-dialog.js.map +1 -0
- package/dist/components/render/render-queue.d.ts +5 -0
- package/dist/components/render/render-queue.d.ts.map +1 -0
- package/dist/components/render/render-queue.js +40 -0
- package/dist/components/render/render-queue.js.map +1 -0
- package/dist/components/right-panel/panel-handle.d.ts +3 -0
- package/dist/components/right-panel/panel-handle.d.ts.map +1 -0
- package/dist/components/right-panel/panel-handle.js +9 -0
- package/dist/components/right-panel/panel-handle.js.map +1 -0
- package/dist/components/right-panel/panel-tabs.d.ts +3 -0
- package/dist/components/right-panel/panel-tabs.d.ts.map +1 -0
- package/dist/components/right-panel/panel-tabs.js +26 -0
- package/dist/components/right-panel/panel-tabs.js.map +1 -0
- package/dist/components/right-panel/panel.d.ts +8 -0
- package/dist/components/right-panel/panel.d.ts.map +1 -0
- package/dist/components/right-panel/panel.js +16 -0
- package/dist/components/right-panel/panel.js.map +1 -0
- package/dist/components/schema-form/field.d.ts +9 -0
- package/dist/components/schema-form/field.d.ts.map +1 -0
- package/dist/components/schema-form/field.js +102 -0
- package/dist/components/schema-form/field.js.map +1 -0
- package/dist/components/schema-form/schema-form.d.ts +3 -0
- package/dist/components/schema-form/schema-form.d.ts.map +1 -0
- package/dist/components/schema-form/schema-form.js +18 -0
- package/dist/components/schema-form/schema-form.js.map +1 -0
- package/dist/components/stage/stage.d.ts +12 -0
- package/dist/components/stage/stage.d.ts.map +1 -0
- package/dist/components/stage/stage.js +103 -0
- package/dist/components/stage/stage.js.map +1 -0
- package/dist/components/studio/features.d.ts +4 -0
- package/dist/components/studio/features.d.ts.map +1 -0
- package/dist/components/studio/features.js +18 -0
- package/dist/components/studio/features.js.map +1 -0
- package/dist/components/studio/layout.d.ts +19 -0
- package/dist/components/studio/layout.d.ts.map +1 -0
- package/dist/components/studio/layout.js +17 -0
- package/dist/components/studio/layout.js.map +1 -0
- package/dist/components/studio/studio-context.d.ts +53 -0
- package/dist/components/studio/studio-context.d.ts.map +1 -0
- package/dist/components/studio/studio-context.js +3 -0
- package/dist/components/studio/studio-context.js.map +1 -0
- package/dist/components/studio/studio.d.ts +21 -0
- package/dist/components/studio/studio.d.ts.map +1 -0
- package/dist/components/studio/studio.js +38 -0
- package/dist/components/studio/studio.js.map +1 -0
- package/dist/components/timeline/layered-body.d.ts +8 -0
- package/dist/components/timeline/layered-body.d.ts.map +1 -0
- package/dist/components/timeline/layered-body.js +75 -0
- package/dist/components/timeline/layered-body.js.map +1 -0
- package/dist/components/timeline/region-handles.d.ts +8 -0
- package/dist/components/timeline/region-handles.d.ts.map +1 -0
- package/dist/components/timeline/region-handles.js +13 -0
- package/dist/components/timeline/region-handles.js.map +1 -0
- package/dist/components/timeline/ruler.d.ts +7 -0
- package/dist/components/timeline/ruler.d.ts.map +1 -0
- package/dist/components/timeline/ruler.js +19 -0
- package/dist/components/timeline/ruler.js.map +1 -0
- package/dist/components/timeline/scrubber.d.ts +6 -0
- package/dist/components/timeline/scrubber.d.ts.map +1 -0
- package/dist/components/timeline/scrubber.js +25 -0
- package/dist/components/timeline/scrubber.js.map +1 -0
- package/dist/components/timeline/timeline-header.d.ts +3 -0
- package/dist/components/timeline/timeline-header.d.ts.map +1 -0
- package/dist/components/timeline/timeline-header.js +36 -0
- package/dist/components/timeline/timeline-header.js.map +1 -0
- package/dist/components/timeline/timeline.d.ts +5 -0
- package/dist/components/timeline/timeline.d.ts.map +1 -0
- package/dist/components/timeline/timeline.js +16 -0
- package/dist/components/timeline/timeline.js.map +1 -0
- package/dist/components/timeline/transport.d.ts +5 -0
- package/dist/components/timeline/transport.d.ts.map +1 -0
- package/dist/components/timeline/transport.js +21 -0
- package/dist/components/timeline/transport.js.map +1 -0
- package/dist/components/timeline/use-scrub-surface.d.ts +20 -0
- package/dist/components/timeline/use-scrub-surface.d.ts.map +1 -0
- package/dist/components/timeline/use-scrub-surface.js +56 -0
- package/dist/components/timeline/use-scrub-surface.js.map +1 -0
- package/dist/components/toasts/toasts.d.ts +4 -0
- package/dist/components/toasts/toasts.d.ts.map +1 -0
- package/dist/components/toasts/toasts.js +22 -0
- package/dist/components/toasts/toasts.js.map +1 -0
- package/dist/hooks/use-composition.d.ts +10 -0
- package/dist/hooks/use-composition.d.ts.map +1 -0
- package/dist/hooks/use-composition.js +13 -0
- package/dist/hooks/use-composition.js.map +1 -0
- package/dist/hooks/use-layers.d.ts +9 -0
- package/dist/hooks/use-layers.d.ts.map +1 -0
- package/dist/hooks/use-layers.js +34 -0
- package/dist/hooks/use-layers.js.map +1 -0
- package/dist/hooks/use-playback.d.ts +15 -0
- package/dist/hooks/use-playback.d.ts.map +1 -0
- package/dist/hooks/use-playback.js +38 -0
- package/dist/hooks/use-playback.js.map +1 -0
- package/dist/hooks/use-props-form.d.ts +15 -0
- package/dist/hooks/use-props-form.d.ts.map +1 -0
- package/dist/hooks/use-props-form.js +22 -0
- package/dist/hooks/use-props-form.js.map +1 -0
- package/dist/hooks/use-real-fps.d.ts +3 -0
- package/dist/hooks/use-real-fps.d.ts.map +1 -0
- package/dist/hooks/use-real-fps.js +27 -0
- package/dist/hooks/use-real-fps.js.map +1 -0
- package/dist/hooks/use-shortcuts.d.ts +7 -0
- package/dist/hooks/use-shortcuts.d.ts.map +1 -0
- package/dist/hooks/use-shortcuts.js +53 -0
- package/dist/hooks/use-shortcuts.js.map +1 -0
- package/dist/hooks/use-studio.d.ts +4 -0
- package/dist/hooks/use-studio.d.ts.map +1 -0
- package/dist/hooks/use-studio.js +10 -0
- package/dist/hooks/use-studio.js.map +1 -0
- package/dist/index.d.ts +145 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +117 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cn.d.ts +3 -0
- package/dist/lib/cn.d.ts.map +1 -0
- package/dist/lib/cn.js +8 -0
- package/dist/lib/cn.js.map +1 -0
- package/dist/lib/constants.d.ts +28 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +38 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/cva.d.ts +25 -0
- package/dist/lib/cva.d.ts.map +1 -0
- package/dist/lib/cva.js +23 -0
- package/dist/lib/cva.js.map +1 -0
- package/dist/lib/format.d.ts +13 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/format.js +25 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/ids.d.ts +3 -0
- package/dist/lib/ids.d.ts.map +1 -0
- package/dist/lib/ids.js +6 -0
- package/dist/lib/ids.js.map +1 -0
- package/dist/registry/define-registry.d.ts +8 -0
- package/dist/registry/define-registry.d.ts.map +1 -0
- package/dist/registry/define-registry.js +71 -0
- package/dist/registry/define-registry.js.map +1 -0
- package/dist/registry/props-signal.d.ts +9 -0
- package/dist/registry/props-signal.d.ts.map +1 -0
- package/dist/registry/props-signal.js +25 -0
- package/dist/registry/props-signal.js.map +1 -0
- package/dist/schema/kf.d.ts +28 -0
- package/dist/schema/kf.d.ts.map +1 -0
- package/dist/schema/kf.js +82 -0
- package/dist/schema/kf.js.map +1 -0
- package/dist/schema/types.d.ts +69 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +4 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/server/index.d.ts +6 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +7 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/map.d.ts +19 -0
- package/dist/server/map.d.ts.map +1 -0
- package/dist/server/map.js +63 -0
- package/dist/server/map.js.map +1 -0
- package/dist/server/render-queue.d.ts +46 -0
- package/dist/server/render-queue.d.ts.map +1 -0
- package/dist/server/render-queue.js +147 -0
- package/dist/server/render-queue.js.map +1 -0
- package/dist/server/temp-storage.d.ts +13 -0
- package/dist/server/temp-storage.d.ts.map +1 -0
- package/dist/server/temp-storage.js +55 -0
- package/dist/server/temp-storage.js.map +1 -0
- package/dist/server/types.d.ts +57 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +2 -0
- package/dist/server/types.js.map +1 -0
- package/dist/signals/signal-bridge.d.ts +18 -0
- package/dist/signals/signal-bridge.d.ts.map +1 -0
- package/dist/signals/signal-bridge.js +39 -0
- package/dist/signals/signal-bridge.js.map +1 -0
- package/dist/store/store.d.ts +74 -0
- package/dist/store/store.d.ts.map +1 -0
- package/dist/store/store.js +276 -0
- package/dist/store/store.js.map +1 -0
- package/dist/styles/studio.css +2 -0
- package/dist/types.d.ts +112 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { IconName } from "../icon/paths.js";
|
|
2
|
+
export type SidebarItemProps = {
|
|
3
|
+
active?: boolean;
|
|
4
|
+
icon?: IconName;
|
|
5
|
+
title: string;
|
|
6
|
+
sub?: string;
|
|
7
|
+
badge?: number;
|
|
8
|
+
dot?: boolean;
|
|
9
|
+
/** Show a spinner in the trailing slot (e.g. a composition resolving). */
|
|
10
|
+
loading?: boolean;
|
|
11
|
+
onClick?: () => void;
|
|
12
|
+
};
|
|
13
|
+
/** A sidebar row — used for compositions and for top-level nav items. */
|
|
14
|
+
export declare function SidebarItem({ active, icon, title, sub, badge, dot, loading, onClick, }: SidebarItemProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
/** A leaf nav row (alias of SidebarItem, for semantics). */
|
|
16
|
+
export declare const NavItem: typeof SidebarItem;
|
|
17
|
+
//# sourceMappingURL=sidebar-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-item.d.ts","sourceRoot":"","sources":["../../../src/components/left-panel/sidebar-item.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,0EAA0E;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,IAAI,EACJ,KAAK,EACL,GAAG,EACH,KAAK,EACL,GAAG,EACH,OAAO,EACP,OAAO,GACR,EAAE,gBAAgB,2CAuDlB;AAED,4DAA4D;AAC5D,eAAO,MAAM,OAAO,oBAAc,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../lib/cn.js";
|
|
3
|
+
import { Icon } from "../icon/icon.js";
|
|
4
|
+
/** A sidebar row — used for compositions and for top-level nav items. */
|
|
5
|
+
export function SidebarItem({ active, icon, title, sub, badge, dot, loading, onClick, }) {
|
|
6
|
+
return (_jsxs("button", { type: "button", onClick: onClick, className: cn("group relative flex w-full items-center gap-2.5 rounded-control px-2 py-1.5 text-left transition-colors", active ? "bg-accent-soft text-ink-1" : "text-ink-2 hover:bg-bg-2 hover:text-ink-1"), children: [_jsx("span", { className: cn("absolute left-0 top-1/2 h-4 w-[3px] -translate-y-1/2 rounded-r-full bg-accent transition-opacity", active ? "opacity-100" : "opacity-0") }), icon && (_jsx("span", { className: cn("grid size-7 flex-none place-items-center rounded-[7px] border transition-colors", active
|
|
7
|
+
? "border-accent-line bg-accent/15 text-accent-2"
|
|
8
|
+
: "border-line bg-bg-2 text-ink-2 group-hover:border-line-2 group-hover:text-ink-1"), children: _jsx(Icon, { name: icon, size: 15 }) })), _jsxs("span", { className: "min-w-0 flex-1", children: [_jsx("span", { className: "block truncate text-[13px] font-medium leading-tight", children: title }), sub && (_jsx("span", { className: cn("mt-0.5 block truncate text-[11px] leading-tight", active ? "text-ink-2" : "text-ink-3"), children: sub }))] }), loading ? (_jsx(Icon, { name: "loader", size: 14, className: "spin flex-none text-ink-3" })) : badge != null && badge > 0 ? (_jsx("span", { className: "grid h-[18px] min-w-[18px] flex-none place-items-center rounded-full bg-accent px-1.5 font-mono text-[10.5px] font-bold text-white shadow-[0_0_8px_var(--color-accent-soft)]", children: badge })) : (dot && (_jsx("span", { className: "size-1.5 flex-none rounded-full bg-accent shadow-[0_0_7px_var(--color-accent-soft)]" })))] }));
|
|
9
|
+
}
|
|
10
|
+
/** A leaf nav row (alias of SidebarItem, for semantics). */
|
|
11
|
+
export const NavItem = SidebarItem;
|
|
12
|
+
//# sourceMappingURL=sidebar-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-item.js","sourceRoot":"","sources":["../../../src/components/left-panel/sidebar-item.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAevC,yEAAyE;AACzE,MAAM,UAAU,WAAW,CAAC,EAC1B,MAAM,EACN,IAAI,EACJ,KAAK,EACL,GAAG,EACH,KAAK,EACL,GAAG,EACH,OAAO,EACP,OAAO,GACU;IACjB,OAAO,CACL,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,EAAE,CACX,yGAAyG,EACzG,MAAM,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,2CAA2C,CACnF,aAGD,eACE,SAAS,EAAE,EAAE,CACX,kGAAkG,EAClG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CACrC,GACD,EACD,IAAI,IAAI,CACP,eACE,SAAS,EAAE,EAAE,CACX,iFAAiF,EACjF,MAAM;oBACJ,CAAC,CAAC,+CAA+C;oBACjD,CAAC,CAAC,iFAAiF,CACtF,YAED,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAI,GACzB,CACR,EACD,gBAAM,SAAS,EAAC,gBAAgB,aAC9B,eAAM,SAAS,EAAC,sDAAsD,YAAE,KAAK,GAAQ,EACpF,GAAG,IAAI,CACN,eACE,SAAS,EAAE,EAAE,CACX,iDAAiD,EACjD,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CACrC,YAEA,GAAG,GACC,CACR,IACI,EACN,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,IAAI,IAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,2BAA2B,GAAG,CACvE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAC/B,eAAM,SAAS,EAAC,8KAA8K,YAC3L,KAAK,GACD,CACR,CAAC,CAAC,CAAC,CACF,GAAG,IAAI,CACL,eAAM,SAAS,EAAC,qFAAqF,GAAG,CACzG,CACF,IACM,CACV,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/** Left rail container. */
|
|
3
|
+
export declare function Sidebar({ children, className, width, }: {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
className?: string;
|
|
6
|
+
width?: string;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=sidebar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/left-panel/sidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,2BAA2B;AAC3B,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,SAAS,EACT,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,2CAUA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../lib/cn.js";
|
|
3
|
+
/** Left rail container. */
|
|
4
|
+
export function Sidebar({ children, className, width, }) {
|
|
5
|
+
const w = width ?? "var(--spacing-sidebar)";
|
|
6
|
+
return (_jsx("aside", { className: cn("flex flex-col min-h-0 bg-bg-1 border-r border-line", className), style: { width: w, flex: `0 0 ${w}` }, children: children }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../../src/components/left-panel/sidebar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,2BAA2B;AAC3B,MAAM,UAAU,OAAO,CAAC,EACtB,QAAQ,EACR,SAAS,EACT,KAAK,GAKN;IACC,MAAM,CAAC,GAAG,KAAK,IAAI,wBAAwB,CAAC;IAC5C,OAAO,CACL,gBACE,SAAS,EAAE,EAAE,CAAC,oDAAoD,EAAE,SAAS,CAAC,EAC9E,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,YAEpC,QAAQ,GACH,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Dialog } from "@base-ui/react/dialog";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
import type { IconName } from "../icon/paths.js";
|
|
4
|
+
declare function DialogRoot({ open, onOpenChange, children, }: {
|
|
5
|
+
open?: boolean;
|
|
6
|
+
onOpenChange?: (open: boolean) => void;
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
declare function DialogPopup({ width, children, className, }: {
|
|
10
|
+
width?: number;
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
className?: string;
|
|
13
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
declare function DialogHeader({ icon, title }: {
|
|
15
|
+
icon?: IconName;
|
|
16
|
+
title: ReactNode;
|
|
17
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare const StDialog: typeof DialogRoot & {
|
|
19
|
+
Popup: typeof DialogPopup;
|
|
20
|
+
Header: typeof DialogHeader;
|
|
21
|
+
Body: ({ children }: {
|
|
22
|
+
children: ReactNode;
|
|
23
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
Footer: ({ children }: {
|
|
25
|
+
children: ReactNode;
|
|
26
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
Title: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react").AlertDialogTitleProps, "ref"> & import("react").RefAttributes<HTMLHeadingElement>>;
|
|
28
|
+
Description: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react").AlertDialogDescriptionProps, "ref"> & import("react").RefAttributes<HTMLParagraphElement>>;
|
|
29
|
+
Close: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react").AlertDialogCloseProps, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
30
|
+
Trigger: Dialog.Trigger;
|
|
31
|
+
};
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AASjD,iBAAS,UAAU,CAAC,EAClB,IAAI,EACJ,YAAY,EACZ,QAAQ,GACT,EAAE;IACD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAMA;AAED,iBAAS,WAAW,CAAC,EACnB,KAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAUA;AAED,iBAAS,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,2CAY3E;AAUD,eAAO,MAAM,QAAQ;;;yBARa;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE;2BAIrB;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE;;;;;CAazD,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Dialog } from "@base-ui/react/dialog";
|
|
3
|
+
import { cn } from "../../lib/cn.js";
|
|
4
|
+
import { IconButton } from "../button/icon-button.js";
|
|
5
|
+
import { Icon } from "../icon/icon.js";
|
|
6
|
+
import { usePortalContainer } from "./portal-context.js";
|
|
7
|
+
const popupCls = cn("fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-50 flex flex-col max-h-[calc(100vh-48px)]", "bg-bg-1 border border-line-2 rounded-2xl shadow-[0_30px_80px_-20px_rgba(0,0,0,.8)] overflow-hidden outline-none", "transition-[transform,opacity] data-[starting-style]:opacity-0 data-[starting-style]:scale-[.97] data-[ending-style]:opacity-0 data-[ending-style]:scale-[.97]");
|
|
8
|
+
function DialogRoot({ open, onOpenChange, children, }) {
|
|
9
|
+
return (_jsx(Dialog.Root, { open: open, onOpenChange: onOpenChange, children: children }));
|
|
10
|
+
}
|
|
11
|
+
function DialogPopup({ width = 480, children, className, }) {
|
|
12
|
+
const container = usePortalContainer();
|
|
13
|
+
return (_jsxs(Dialog.Portal, { container: container, children: [_jsx(Dialog.Backdrop, { className: "fixed inset-0 z-40 bg-[rgba(6,6,9,.62)] backdrop-blur-[3px] transition-opacity data-[starting-style]:opacity-0 data-[ending-style]:opacity-0" }), _jsx(Dialog.Popup, { className: cn(popupCls, className), style: { width }, children: children })] }));
|
|
14
|
+
}
|
|
15
|
+
function DialogHeader({ icon, title }) {
|
|
16
|
+
return (_jsxs("div", { className: "flex items-center gap-3 px-4 pt-4 pb-3.5 border-b border-line", children: [icon && (_jsx("span", { className: "size-[30px] grid place-items-center rounded-ui bg-accent-soft text-accent-2 border border-accent-line", children: _jsx(Icon, { name: icon, size: 16 }) })), _jsx(Dialog.Title, { className: "text-[15px] font-bold tracking-tight flex-1", children: title }), _jsx(Dialog.Close, { render: _jsx(IconButton, { size: "sm", icon: "close", "aria-label": "Close" }) })] }));
|
|
17
|
+
}
|
|
18
|
+
const DialogBody = ({ children }) => (_jsx("div", { className: "p-4 overflow-y-auto scroll", children: children }));
|
|
19
|
+
const DialogFooter = ({ children }) => (_jsx("div", { className: "flex items-center gap-3 px-4 py-3 border-t border-line bg-bg-0", children: children }));
|
|
20
|
+
export const StDialog = Object.assign(DialogRoot, {
|
|
21
|
+
Popup: DialogPopup,
|
|
22
|
+
Header: DialogHeader,
|
|
23
|
+
Body: DialogBody,
|
|
24
|
+
Footer: DialogFooter,
|
|
25
|
+
Title: Dialog.Title,
|
|
26
|
+
Description: Dialog.Description,
|
|
27
|
+
Close: Dialog.Close,
|
|
28
|
+
Trigger: Dialog.Trigger,
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../src/components/primitives/dialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,QAAQ,GAAG,EAAE,CACjB,sGAAsG,EACtG,iHAAiH,EACjH,gKAAgK,CACjK,CAAC;AAEF,SAAS,UAAU,CAAC,EAClB,IAAI,EACJ,YAAY,EACZ,QAAQ,GAKT;IACC,OAAO,CACL,KAAC,MAAM,CAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,YAChD,QAAQ,GACG,CACf,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EACnB,KAAK,GAAG,GAAG,EACX,QAAQ,EACR,SAAS,GAKV;IACC,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,OAAO,CACL,MAAC,MAAM,CAAC,MAAM,IAAC,SAAS,EAAE,SAAS,aACjC,KAAC,MAAM,CAAC,QAAQ,IAAC,SAAS,EAAC,8IAA8I,GAAG,EAC5K,KAAC,MAAM,CAAC,KAAK,IAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,YAC/D,QAAQ,GACI,IACD,CACjB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAyC;IAC1E,OAAO,CACL,eAAK,SAAS,EAAC,+DAA+D,aAC3E,IAAI,IAAI,CACP,eAAM,SAAS,EAAC,uGAAuG,YACrH,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAI,GACzB,CACR,EACD,KAAC,MAAM,CAAC,KAAK,IAAC,SAAS,EAAC,6CAA6C,YAAE,KAAK,GAAgB,EAC5F,KAAC,MAAM,CAAC,KAAK,IAAC,MAAM,EAAE,KAAC,UAAU,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,gBAAY,OAAO,GAAG,GAAI,IAC9E,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAAE,QAAQ,EAA2B,EAAE,EAAE,CAAC,CAC5D,cAAK,SAAS,EAAC,4BAA4B,YAAE,QAAQ,GAAO,CAC7D,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,EAAE,QAAQ,EAA2B,EAAE,EAAE,CAAC,CAC9D,cAAK,SAAS,EAAC,gEAAgE,YAAE,QAAQ,GAAO,CACjG,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;IAChD,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,OAAO,EAAE,MAAM,CAAC,OAAO;CACxB,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ReactElement, ReactNode } from "react";
|
|
2
|
+
import type { IconName } from "../icon/paths.js";
|
|
3
|
+
export type StMenuProps = {
|
|
4
|
+
icon?: IconName;
|
|
5
|
+
label?: string;
|
|
6
|
+
tooltip?: ReactNode;
|
|
7
|
+
/** Provide your own trigger element (rendered via Base UI `render`). */
|
|
8
|
+
trigger?: ReactElement;
|
|
9
|
+
side?: "top" | "bottom" | "left" | "right";
|
|
10
|
+
align?: "start" | "center" | "end";
|
|
11
|
+
sideOffset?: number;
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
};
|
|
14
|
+
export declare function StMenu({ icon, label, tooltip, trigger, side, align, sideOffset, children, }: StMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export type MenuItemProps = {
|
|
16
|
+
icon?: IconName;
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
onClick?: () => void;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
selected?: boolean;
|
|
21
|
+
badge?: number;
|
|
22
|
+
};
|
|
23
|
+
export declare function MenuItem({ icon, children, onClick, disabled, selected, badge }: MenuItemProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export declare const MenuSeparator: () => import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
//# sourceMappingURL=menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/menu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AASjD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,wEAAwE;IACxE,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,KAAK,EACL,OAAO,EACP,OAAO,EACP,IAAe,EACf,KAAe,EACf,UAAc,EACd,QAAQ,GACT,EAAE,WAAW,2CAqCb;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,2CAqB7F;AAED,eAAO,MAAM,aAAa,+CAAiE,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Menu } from "@base-ui/react/menu";
|
|
3
|
+
import { cn } from "../../lib/cn.js";
|
|
4
|
+
import { buttonCls } from "../button/button.js";
|
|
5
|
+
import { iconBtnCls } from "../button/icon-button.js";
|
|
6
|
+
import { Icon } from "../icon/icon.js";
|
|
7
|
+
import { usePortalContainer } from "./portal-context.js";
|
|
8
|
+
import { StTooltip } from "./tooltip.js";
|
|
9
|
+
const popupCls = cn("min-w-52 bg-bg-1/97 backdrop-blur-xl border border-line-2 rounded-ui p-1.5 shadow-[0_18px_44px_-12px_rgba(0,0,0,.7)] outline-none", "origin-[var(--transform-origin)] transition-[transform,opacity] data-[starting-style]:opacity-0 data-[starting-style]:scale-95 data-[ending-style]:opacity-0");
|
|
10
|
+
export function StMenu({ icon, label, tooltip, trigger, side = "bottom", align = "start", sideOffset = 6, children, }) {
|
|
11
|
+
const container = usePortalContainer();
|
|
12
|
+
let triggerEl;
|
|
13
|
+
if (trigger) {
|
|
14
|
+
triggerEl = _jsx(Menu.Trigger, { render: trigger });
|
|
15
|
+
}
|
|
16
|
+
else if (label) {
|
|
17
|
+
triggerEl = (_jsxs(Menu.Trigger, { className: buttonCls({ tone: "default", className: "data-[popup-open]:bg-bg-3" }), children: [icon && _jsx(Icon, { name: icon, size: 15 }), " ", label, " ", _jsx(Icon, { name: "chevron", size: 13, className: "text-ink-3" })] }));
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
triggerEl = (_jsx(Menu.Trigger, { className: iconBtnCls({
|
|
21
|
+
tone: "bordered",
|
|
22
|
+
className: "data-[popup-open]:bg-bg-3 data-[popup-open]:text-ink-1",
|
|
23
|
+
}), children: _jsx(Icon, { name: icon ?? "dots", size: 18 }) }));
|
|
24
|
+
}
|
|
25
|
+
return (_jsxs(Menu.Root, { children: [tooltip ? _jsx(StTooltip, { content: tooltip, children: triggerEl }) : triggerEl, _jsx(Menu.Portal, { container: container, children: _jsx(Menu.Positioner, { side: side, align: align, sideOffset: sideOffset, children: _jsx(Menu.Popup, { className: popupCls, children: children }) }) })] }));
|
|
26
|
+
}
|
|
27
|
+
export function MenuItem({ icon, children, onClick, disabled, selected, badge }) {
|
|
28
|
+
return (_jsxs(Menu.Item, { disabled: disabled, onClick: onClick, className: cn("flex items-center gap-2.5 px-2.5 py-2 rounded-control text-[13px] font-medium cursor-default outline-none select-none", "text-ink-2 data-[highlighted]:bg-bg-3 data-[highlighted]:text-ink-1 data-[disabled]:opacity-40 data-[disabled]:pointer-events-none", selected && "text-ink-1"), children: [icon && _jsx(Icon, { name: icon, size: 15, className: "text-ink-3" }), _jsx("span", { className: "flex-1", children: children }), badge != null && badge > 0 && (_jsx("span", { className: "font-mono text-[10.5px] font-bold text-white bg-accent rounded-full min-w-[18px] h-[18px] px-1.5 grid place-items-center", children: badge })), selected && _jsx(Icon, { name: "check", size: 14, className: "text-accent-2" })] }));
|
|
29
|
+
}
|
|
30
|
+
export const MenuSeparator = () => _jsx(Menu.Separator, { className: "h-px bg-line my-1 -mx-0.5" });
|
|
31
|
+
//# sourceMappingURL=menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../../src/components/primitives/menu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type StNumberFieldProps = {
|
|
2
|
+
value: number;
|
|
3
|
+
onValueChange: (value: number) => void;
|
|
4
|
+
min?: number;
|
|
5
|
+
max?: number;
|
|
6
|
+
step?: number;
|
|
7
|
+
/** Short unit suffix shown inside the field (e.g. "W", "H", "fps"). */
|
|
8
|
+
suffix?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function StNumberField({ value, onValueChange, min, max, step, suffix, className, }: StNumberFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=number-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-field.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/number-field.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,aAAa,EACb,GAAG,EACH,GAAG,EACH,IAAQ,EACR,MAAM,EACN,SAAS,GACV,EAAE,kBAAkB,2CAgBpB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { NumberField } from "@base-ui/react/number-field";
|
|
3
|
+
import { cn } from "../../lib/cn.js";
|
|
4
|
+
export function StNumberField({ value, onValueChange, min, max, step = 1, suffix, className, }) {
|
|
5
|
+
return (_jsx(NumberField.Root, { value: value, min: min, max: max, step: step, onValueChange: (v) => onValueChange(v ?? min ?? 0), className: cn("flex-1", className), children: _jsxs(NumberField.Group, { className: "flex items-center bg-bg-2 border border-line rounded-control pr-2.5 focus-within:border-accent focus-within:shadow-[0_0_0_3px_var(--color-accent-soft)]", children: [_jsx(NumberField.Input, { className: "flex-1 min-w-0 w-full bg-transparent outline-none text-ink-1 font-mono text-[13px] px-2.5 py-2.5 [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none" }), suffix && _jsx("span", { className: "text-[10.5px] font-bold text-ink-3", children: suffix })] }) }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=number-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-field.js","sourceRoot":"","sources":["../../../src/components/primitives/number-field.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAarC,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,aAAa,EACb,GAAG,EACH,GAAG,EACH,IAAI,GAAG,CAAC,EACR,MAAM,EACN,SAAS,GACU;IACnB,OAAO,CACL,KAAC,WAAW,CAAC,IAAI,IACf,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,EAClD,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,YAElC,MAAC,WAAW,CAAC,KAAK,IAAC,SAAS,EAAC,yJAAyJ,aACpL,KAAC,WAAW,CAAC,KAAK,IAAC,SAAS,EAAC,uNAAuN,GAAG,EACtP,MAAM,IAAI,eAAM,SAAS,EAAC,oCAAoC,YAAE,MAAM,GAAQ,IAC7D,GACH,CACpB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base UI portals (menus/dialogs/tooltips/toasts) render to `document.body` by
|
|
3
|
+
* default. The Studio root provides a container that lives INSIDE the
|
|
4
|
+
* `.smoove-studio` subtree so scoped base styles + theme tokens still apply; every
|
|
5
|
+
* primitive routes its `*.Portal` through this container.
|
|
6
|
+
*/
|
|
7
|
+
export declare const PortalContainerContext: import("react").Context<HTMLElement | null>;
|
|
8
|
+
export declare const usePortalContainer: () => HTMLElement | null;
|
|
9
|
+
//# sourceMappingURL=portal-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal-context.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/portal-context.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,6CAA0C,CAAC;AAE9E,eAAO,MAAM,kBAAkB,QAAO,WAAW,GAAG,IAA0C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createContext, useContext } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Base UI portals (menus/dialogs/tooltips/toasts) render to `document.body` by
|
|
4
|
+
* default. The Studio root provides a container that lives INSIDE the
|
|
5
|
+
* `.smoove-studio` subtree so scoped base styles + theme tokens still apply; every
|
|
6
|
+
* primitive routes its `*.Portal` through this container.
|
|
7
|
+
*/
|
|
8
|
+
export const PortalContainerContext = createContext(null);
|
|
9
|
+
export const usePortalContainer = () => useContext(PortalContainerContext);
|
|
10
|
+
//# sourceMappingURL=portal-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal-context.js","sourceRoot":"","sources":["../../../src/components/primitives/portal-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAqB,IAAI,CAAC,CAAC;AAE9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAuB,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type SelectOption = {
|
|
2
|
+
value: string;
|
|
3
|
+
label: string;
|
|
4
|
+
desc?: string;
|
|
5
|
+
};
|
|
6
|
+
export type StSelectProps = {
|
|
7
|
+
value: string;
|
|
8
|
+
onValueChange: (value: string) => void;
|
|
9
|
+
options: SelectOption[];
|
|
10
|
+
placeholder?: string;
|
|
11
|
+
className?: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function StSelect({ value, onValueChange, options, placeholder, className, }: StSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/select.tsx"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,aAAa,EACb,OAAO,EACP,WAAuB,EACvB,SAAS,GACV,EAAE,aAAa,2CAuCf"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Select } from "@base-ui/react/select";
|
|
3
|
+
import { cn } from "../../lib/cn.js";
|
|
4
|
+
import { Icon } from "../icon/icon.js";
|
|
5
|
+
import { usePortalContainer } from "./portal-context.js";
|
|
6
|
+
export function StSelect({ value, onValueChange, options, placeholder = "Select…", className, }) {
|
|
7
|
+
const container = usePortalContainer();
|
|
8
|
+
const labelFor = (v) => options.find((o) => o.value === v)?.label ?? placeholder;
|
|
9
|
+
return (_jsxs(Select.Root, { value: value, onValueChange: (v) => onValueChange(String(v)), children: [_jsxs(Select.Trigger, { className: cn("flex items-center justify-between gap-2 w-full bg-bg-2 border border-line rounded-control text-[13px] text-ink-1 px-3 py-2 text-left hover:border-line-2 data-[popup-open]:border-accent data-[popup-open]:shadow-[0_0_0_3px_var(--color-accent-soft)] outline-none", className), children: [_jsx(Select.Value, { className: "truncate", children: (val) => labelFor(val) }), _jsx(Select.Icon, { className: "text-ink-3", children: _jsx(Icon, { name: "chevron", size: 13 }) })] }), _jsx(Select.Portal, { container: container, children: _jsx(Select.Positioner, { sideOffset: 5, className: "z-50", children: _jsx(Select.Popup, { className: "min-w-[var(--anchor-width)] max-h-72 overflow-y-auto scroll bg-bg-1/98 backdrop-blur-xl border border-line-2 rounded-ui p-1.5 shadow-[0_18px_44px_-12px_rgba(0,0,0,.7)] outline-none origin-[var(--transform-origin)] transition-[transform,opacity] data-[starting-style]:opacity-0 data-[starting-style]:scale-95 data-[ending-style]:opacity-0", children: options.map((o) => (_jsxs(Select.Item, { value: o.value, className: "flex items-start gap-2 px-2.5 py-2 rounded-control text-[13px] text-ink-2 data-[highlighted]:bg-bg-3 data-[highlighted]:text-ink-1 data-[selected]:text-ink-1 cursor-default outline-none", children: [_jsxs(Select.ItemText, { className: "flex-1", children: [_jsx("span", { className: "block", children: o.label }), o.desc && _jsx("span", { className: "block text-[11px] text-ink-3", children: o.desc })] }), _jsx(Select.ItemIndicator, { className: "text-accent-2 mt-0.5", children: _jsx(Icon, { name: "check", size: 14 }) })] }, o.value))) }) }) })] }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/components/primitives/select.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAYzD,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,aAAa,EACb,OAAO,EACP,WAAW,GAAG,SAAS,EACvB,SAAS,GACK;IACd,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,WAAW,CAAC;IACjG,OAAO,CACL,MAAC,MAAM,CAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aACvE,MAAC,MAAM,CAAC,OAAO,IACb,SAAS,EAAE,EAAE,CACX,qQAAqQ,EACrQ,SAAS,CACV,aAED,KAAC,MAAM,CAAC,KAAK,IAAC,SAAS,EAAC,UAAU,YAAE,CAAC,GAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAgB,EAClF,KAAC,MAAM,CAAC,IAAI,IAAC,SAAS,EAAC,YAAY,YACjC,KAAC,IAAI,IAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAE,EAAE,GAAI,GACrB,IACC,EACjB,KAAC,MAAM,CAAC,MAAM,IAAC,SAAS,EAAE,SAAS,YACjC,KAAC,MAAM,CAAC,UAAU,IAAC,UAAU,EAAE,CAAC,EAAE,SAAS,EAAC,MAAM,YAChD,KAAC,MAAM,CAAC,KAAK,IAAC,SAAS,EAAC,mVAAmV,YACxW,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAClB,MAAC,MAAM,CAAC,IAAI,IAEV,KAAK,EAAE,CAAC,CAAC,KAAK,EACd,SAAS,EAAC,2LAA2L,aAErM,MAAC,MAAM,CAAC,QAAQ,IAAC,SAAS,EAAC,QAAQ,aACjC,eAAM,SAAS,EAAC,OAAO,YAAE,CAAC,CAAC,KAAK,GAAQ,EACvC,CAAC,CAAC,IAAI,IAAI,eAAM,SAAS,EAAC,8BAA8B,YAAE,CAAC,CAAC,IAAI,GAAQ,IACzD,EAClB,KAAC,MAAM,CAAC,aAAa,IAAC,SAAS,EAAC,sBAAsB,YACpD,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,EAAE,GAAI,GACV,KAVlB,CAAC,CAAC,KAAK,CAWA,CACf,CAAC,GACW,GACG,GACN,IACJ,CACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type StSliderProps = {
|
|
2
|
+
value: number;
|
|
3
|
+
onValueChange: (value: number) => void;
|
|
4
|
+
min?: number;
|
|
5
|
+
max?: number;
|
|
6
|
+
step?: number;
|
|
7
|
+
className?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function StSlider({ value, onValueChange, min, max, step, className, }: StSliderProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=slider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/slider.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,aAAa,EACb,GAAO,EACP,GAAS,EACT,IAAQ,EACR,SAAS,GACV,EAAE,aAAa,2CAkBf"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Slider } from "@base-ui/react/slider";
|
|
3
|
+
import { cn } from "../../lib/cn.js";
|
|
4
|
+
export function StSlider({ value, onValueChange, min = 0, max = 100, step = 1, className, }) {
|
|
5
|
+
return (_jsx(Slider.Root, { value: value, onValueChange: (v) => onValueChange(Array.isArray(v) ? (v[0] ?? 0) : v), min: min, max: max, step: step, className: cn("flex-1", className), children: _jsx(Slider.Control, { className: "flex items-center h-4 w-full cursor-pointer", children: _jsxs(Slider.Track, { className: "h-1 w-full rounded-full bg-bg-3 relative", children: [_jsx(Slider.Indicator, { className: "rounded-full bg-accent" }), _jsx(Slider.Thumb, { className: "size-[15px] rounded-full bg-accent-2 outline-none shadow-[0_0_0_3px_var(--color-accent-soft)] focus-visible:shadow-[0_0_0_4px_var(--color-accent-soft)]" })] }) }) }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=slider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider.js","sourceRoot":"","sources":["../../../src/components/primitives/slider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAWrC,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,aAAa,EACb,GAAG,GAAG,CAAC,EACP,GAAG,GAAG,GAAG,EACT,IAAI,GAAG,CAAC,EACR,SAAS,GACK;IACd,OAAO,CACL,KAAC,MAAM,CAAC,IAAI,IACV,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvE,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,YAElC,KAAC,MAAM,CAAC,OAAO,IAAC,SAAS,EAAC,6CAA6C,YACrE,MAAC,MAAM,CAAC,KAAK,IAAC,SAAS,EAAC,0CAA0C,aAChE,KAAC,MAAM,CAAC,SAAS,IAAC,SAAS,EAAC,wBAAwB,GAAG,EACvD,KAAC,MAAM,CAAC,KAAK,IAAC,SAAS,EAAC,yJAAyJ,GAAG,IACvK,GACA,GACL,CACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/switch.tsx"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,eAAe,GAChB,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C,2CAUA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Switch } from "@base-ui/react/switch";
|
|
3
|
+
export function StSwitch({ checked, onCheckedChange, }) {
|
|
4
|
+
return (_jsx(Switch.Root, { checked: checked, onCheckedChange: onCheckedChange, className: "w-10 h-[23px] rounded-full bg-bg-3 data-[checked]:bg-accent relative transition-colors cursor-pointer flex-none outline-none focus-visible:ring-2 focus-visible:ring-accent/50", children: _jsx(Switch.Thumb, { className: "block size-[17px] rounded-full bg-white absolute top-[3px] left-[3px] transition-transform data-[checked]:translate-x-[17px]" }) }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=switch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../src/components/primitives/switch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,EACP,eAAe,GAIhB;IACC,OAAO,CACL,KAAC,MAAM,CAAC,IAAI,IACV,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAC,gLAAgL,YAE1L,KAAC,MAAM,CAAC,KAAK,IAAC,SAAS,EAAC,8HAA8H,GAAG,GAC7I,CACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { IconName } from "../icon/paths.js";
|
|
3
|
+
export declare function StTabs({ value, onValueChange, children, className, }: {
|
|
4
|
+
value: string;
|
|
5
|
+
onValueChange: (value: string) => void;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
className?: string;
|
|
8
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare function TabList({ children, className }: {
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
className?: string;
|
|
12
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare function Tab({ value, icon, children, }: {
|
|
14
|
+
value: string;
|
|
15
|
+
icon?: IconName;
|
|
16
|
+
children: ReactNode;
|
|
17
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare function TabPanel({ value, children, className, }: {
|
|
19
|
+
value: string;
|
|
20
|
+
children: ReactNode;
|
|
21
|
+
className?: string;
|
|
22
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
//# sourceMappingURL=tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/tabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,aAAa,EACb,QAAQ,EACR,SAAS,GACV,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAUA;AAED,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAY3F;AAED,wBAAgB,GAAG,CAAC,EAClB,KAAK,EACL,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CASA;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CASA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Tabs } from "@base-ui/react/tabs";
|
|
3
|
+
import { cn } from "../../lib/cn.js";
|
|
4
|
+
import { Icon } from "../icon/icon.js";
|
|
5
|
+
export function StTabs({ value, onValueChange, children, className, }) {
|
|
6
|
+
return (_jsx(Tabs.Root, { value: value, onValueChange: (v) => onValueChange(String(v)), className: cn("flex flex-col min-h-0 flex-1", className), children: children }));
|
|
7
|
+
}
|
|
8
|
+
export function TabList({ children, className }) {
|
|
9
|
+
return (_jsxs(Tabs.List, { className: cn("relative flex items-stretch h-14 flex-none border-b border-line px-1.5", className), children: [children, _jsx(Tabs.Indicator, { className: "absolute bottom-0 left-0 h-0.5 bg-accent rounded-full transition-all duration-200 w-[var(--active-tab-width)] translate-x-[var(--active-tab-left)]" })] }));
|
|
10
|
+
}
|
|
11
|
+
export function Tab({ value, icon, children, }) {
|
|
12
|
+
return (_jsxs(Tabs.Tab, { value: value, className: "relative flex items-center gap-1.5 px-3.5 text-[13px] font-semibold text-ink-3 hover:text-ink-2 data-[selected]:text-ink-1 cursor-default outline-none", children: [icon && _jsx(Icon, { name: icon, size: 15 }), " ", children] }));
|
|
13
|
+
}
|
|
14
|
+
export function TabPanel({ value, children, className, }) {
|
|
15
|
+
return (_jsx(Tabs.Panel, { value: value, className: cn("flex-1 min-h-0 overflow-y-auto scroll outline-none", className), children: children }));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../src/components/primitives/tabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGvC,MAAM,UAAU,MAAM,CAAC,EACrB,KAAK,EACL,aAAa,EACb,QAAQ,EACR,SAAS,GAMV;IACC,OAAO,CACL,KAAC,IAAI,CAAC,IAAI,IACR,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAC9C,SAAS,EAAE,EAAE,CAAC,8BAA8B,EAAE,SAAS,CAAC,YAEvD,QAAQ,GACC,CACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EAAE,QAAQ,EAAE,SAAS,EAA+C;IAC1F,OAAO,CACL,MAAC,IAAI,CAAC,IAAI,IACR,SAAS,EAAE,EAAE,CACX,wEAAwE,EACxE,SAAS,CACV,aAEA,QAAQ,EACT,KAAC,IAAI,CAAC,SAAS,IAAC,SAAS,EAAC,oJAAoJ,GAAG,IACvK,CACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAClB,KAAK,EACL,IAAI,EACJ,QAAQ,GAKT;IACC,OAAO,CACL,MAAC,IAAI,CAAC,GAAG,IACP,KAAK,EAAE,KAAK,EACZ,SAAS,EAAC,wJAAwJ,aAEjK,IAAI,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAI,OAAG,QAAQ,IACzC,CACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,SAAS,GAKV;IACC,OAAO,CACL,KAAC,IAAI,CAAC,KAAK,IACT,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CAAC,oDAAoD,EAAE,SAAS,CAAC,YAE7E,QAAQ,GACE,CACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ReactElement, ReactNode } from "react";
|
|
2
|
+
export type TooltipProps = {
|
|
3
|
+
content?: ReactNode;
|
|
4
|
+
side?: "top" | "bottom" | "left" | "right";
|
|
5
|
+
children: ReactElement;
|
|
6
|
+
};
|
|
7
|
+
/** Thin Base UI Tooltip wrapper. Renders the child as-is when no content. */
|
|
8
|
+
export declare function StTooltip({ content, side, children }: TooltipProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=tooltip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/tooltip.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGrD,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,QAAQ,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,IAAY,EAAE,QAAQ,EAAE,EAAE,YAAY,2CAe1E"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Tooltip } from "@base-ui/react/tooltip";
|
|
3
|
+
import { usePortalContainer } from "./portal-context.js";
|
|
4
|
+
/** Thin Base UI Tooltip wrapper. Renders the child as-is when no content. */
|
|
5
|
+
export function StTooltip({ content, side = "top", children }) {
|
|
6
|
+
const container = usePortalContainer();
|
|
7
|
+
if (!content)
|
|
8
|
+
return children;
|
|
9
|
+
return (_jsxs(Tooltip.Root, { children: [_jsx(Tooltip.Trigger, { render: children }), _jsx(Tooltip.Portal, { container: container, children: _jsx(Tooltip.Positioner, { side: side, sideOffset: 7, children: _jsx(Tooltip.Popup, { className: "bg-black/92 backdrop-blur-sm text-white text-xs font-medium px-2.5 py-1.5 rounded-control border border-line-2 shadow-xl data-[starting-style]:opacity-0 data-[ending-style]:opacity-0 transition-opacity", children: content }) }) })] }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=tooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../../src/components/primitives/tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAQzD,6EAA6E;AAC7E,MAAM,UAAU,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,KAAK,EAAE,QAAQ,EAAgB;IACzE,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,IAAI,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,CACL,MAAC,OAAO,CAAC,IAAI,eACX,KAAC,OAAO,CAAC,OAAO,IAAC,MAAM,EAAE,QAAQ,GAAI,EACrC,KAAC,OAAO,CAAC,MAAM,IAAC,SAAS,EAAE,SAAS,YAClC,KAAC,OAAO,CAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,YAC3C,KAAC,OAAO,CAAC,KAAK,IAAC,SAAS,EAAC,2MAA2M,YACjO,OAAO,GACM,GACG,GACN,IACJ,CAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Export the current frame as a still (mocked). */
|
|
2
|
+
export declare function ExportFrameDialog({ open, onOpenChange, onSubmitted, }: {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onOpenChange: (open: boolean) => void;
|
|
5
|
+
/** Fired after the still is enqueued. */
|
|
6
|
+
onSubmitted?: () => void;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=export-frame-dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-frame-dialog.d.ts","sourceRoot":"","sources":["../../../src/components/render/export-frame-dialog.tsx"],"names":[],"mappings":"AAwBA,oDAAoD;AACpD,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,YAAY,EACZ,WAAW,GACZ,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B,2CAwFA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { useComposition } from "../../hooks/use-composition.js";
|
|
4
|
+
import { usePlayback } from "../../hooks/use-playback.js";
|
|
5
|
+
import { useStudio } from "../../hooks/use-studio.js";
|
|
6
|
+
import { estMB } from "../../lib/constants.js";
|
|
7
|
+
import { fmtTime } from "../../lib/format.js";
|
|
8
|
+
import { Button } from "../button/button.js";
|
|
9
|
+
import { Icon } from "../icon/icon.js";
|
|
10
|
+
import { StDialog } from "../primitives/dialog.js";
|
|
11
|
+
import { StSelect } from "../primitives/select.js";
|
|
12
|
+
const Field = ({ label, children }) => (_jsxs("div", { className: "mb-4", children: [_jsx("span", { className: "block text-[11.5px] font-semibold text-ink-2 mb-1.5", children: label }), children] }));
|
|
13
|
+
const FMTS = [
|
|
14
|
+
{ value: "png", label: "PNG · lossless" },
|
|
15
|
+
{ value: "jpg", label: "JPEG · compact" },
|
|
16
|
+
{ value: "webp", label: "WebP" },
|
|
17
|
+
];
|
|
18
|
+
/** Export the current frame as a still (mocked). */
|
|
19
|
+
export function ExportFrameDialog({ open, onOpenChange, onSubmitted, }) {
|
|
20
|
+
const store = useStudio();
|
|
21
|
+
const { composition: comp, entry } = useComposition();
|
|
22
|
+
const { frame, fps } = usePlayback();
|
|
23
|
+
const [format, setFormat] = useState("png");
|
|
24
|
+
const [scale, setScale] = useState("1");
|
|
25
|
+
const baseW = comp?.width() ?? 1280;
|
|
26
|
+
const baseH = comp?.height() ?? 720;
|
|
27
|
+
const factor = Number(scale);
|
|
28
|
+
const w = Math.round(baseW * factor);
|
|
29
|
+
const h = Math.round(baseH * factor);
|
|
30
|
+
const timeSec = frame / (fps || 30);
|
|
31
|
+
const title = entry?.title ?? entry?.id ?? "Composition";
|
|
32
|
+
const SCALES = [
|
|
33
|
+
{ value: "1", label: `1× · ${baseW}×${baseH}` },
|
|
34
|
+
{ value: "2", label: `2× · ${baseW * 2}×${baseH * 2}` },
|
|
35
|
+
{ value: "3", label: `3× · ${baseW * 3}×${baseH * 3}` },
|
|
36
|
+
];
|
|
37
|
+
const submit = () => {
|
|
38
|
+
store.exportFrame({
|
|
39
|
+
id: store.selectedId.get(),
|
|
40
|
+
kind: "still",
|
|
41
|
+
comp: title,
|
|
42
|
+
// Capture the live props so the exported frame matches the preview.
|
|
43
|
+
props: comp?.props.get(),
|
|
44
|
+
format,
|
|
45
|
+
quality: "frame",
|
|
46
|
+
w,
|
|
47
|
+
h,
|
|
48
|
+
fps,
|
|
49
|
+
frames: 1,
|
|
50
|
+
frameNo: frame,
|
|
51
|
+
rangeLabel: `Frame ${frame}`,
|
|
52
|
+
sizeEst: estMB(w, h, 1, format === "png" ? 4 : 1.2, 1) * 2,
|
|
53
|
+
});
|
|
54
|
+
onOpenChange(false);
|
|
55
|
+
onSubmitted?.();
|
|
56
|
+
};
|
|
57
|
+
const D = StDialog;
|
|
58
|
+
return (_jsx(D, { open: open, onOpenChange: onOpenChange, children: _jsxs(D.Popup, { width: 440, children: [_jsx(D.Header, { icon: "camera", title: "Export frame" }), _jsxs(D.Body, { children: [_jsxs("div", { className: "flex gap-3.5 items-center mb-4.5", children: [_jsxs("div", { className: "relative flex-none", children: [_jsx("div", { className: "w-[140px] h-[79px] rounded-ui grid place-items-center shadow-[0_0_0_1px_var(--color-line-2)_inset]", style: { background: "linear-gradient(135deg,#23204a,rgba(255,86,64,.4))" }, children: _jsx(Icon, { name: "camera", size: 26, style: { color: "rgba(255,255,255,.55)" } }) }), _jsxs("div", { className: "absolute bottom-1.5 right-1.5 font-mono text-[9.5px] text-white bg-black/60 rounded px-1.5", children: [fmtTime(timeSec), " \u00B7 #", frame] })] }), _jsx("p", { className: "text-[12px] leading-relaxed text-ink-3 m-0 flex-1", children: "Captures the composition exactly at the current playhead position." })] }), _jsx(Field, { label: "Format", children: _jsx(StSelect, { value: format, onValueChange: setFormat, options: FMTS }) }), _jsx(Field, { label: "Scale", children: _jsx(StSelect, { value: scale, onValueChange: setScale, options: SCALES }) })] }), _jsxs(D.Footer, { children: [_jsxs("div", { className: "flex items-center gap-1.5 font-mono text-[11.5px] text-ink-2", children: [_jsx(Icon, { name: "camera", size: 13, className: "text-ink-3" }), _jsxs("span", { children: ["Frame ", frame, " \u00B7 ", fmtTime(timeSec)] })] }), _jsxs("div", { className: "flex items-center gap-2 ml-auto", children: [_jsx(D.Close, { render: _jsx(Button, { tone: "ghost", children: "Cancel" }) }), _jsx(Button, { tone: "primary", icon: "download", onClick: submit, children: "Export still" })] })] })] }) }));
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=export-frame-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-frame-dialog.js","sourceRoot":"","sources":["../../../src/components/render/export-frame-dialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Server-render dialog (mocked): format/quality/resolution/fps/range → enqueue. */
|
|
2
|
+
export declare function RenderDialog({ open, onOpenChange, onSubmitted, }: {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onOpenChange: (open: boolean) => void;
|
|
5
|
+
/** Fired after a job is enqueued (e.g. to navigate to the queue). */
|
|
6
|
+
onSubmitted?: () => void;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=render-dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-dialog.d.ts","sourceRoot":"","sources":["../../../src/components/render/render-dialog.tsx"],"names":[],"mappings":"AAoBA,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,YAAY,EACZ,WAAW,GACZ,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B,2CAuLA"}
|