@adea-ai/ui 0.12.0 → 0.13.0
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 +201 -0
- package/dist/components/account-drawer.d.ts +1 -1
- package/dist/components/account-drawer.js +12 -12
- package/dist/components/on-screen-controls.js +12 -12
- package/dist/components/scene-settings.d.ts +3 -3
- package/dist/components/scene-settings.js +11 -11
- package/dist/components/theme-provider.d.ts +1 -1
- package/dist/components/theme-provider.js +2 -2
- package/dist/components/theme-toggle.js +8 -8
- package/dist/components/ui/badge.d.ts +3 -3
- package/dist/components/ui/badge.js +15 -15
- package/dist/components/ui/button.d.ts +2 -2
- package/dist/components/ui/button.js +19 -19
- package/dist/components/ui/card.d.ts +1 -1
- package/dist/components/ui/card.js +3 -3
- package/dist/components/ui/dialog.d.ts +4 -4
- package/dist/components/ui/dialog.js +10 -10
- package/dist/components/ui/drawer.d.ts +5 -5
- package/dist/components/ui/drawer.js +26 -26
- package/dist/components/ui/dropdown-menu.d.ts +5 -5
- package/dist/components/ui/dropdown-menu.js +12 -12
- package/dist/components/ui/empty.d.ts +7 -7
- package/dist/components/ui/empty.js +11 -11
- package/dist/components/ui/field.d.ts +12 -12
- package/dist/components/ui/field.js +22 -22
- package/dist/components/ui/input.d.ts +2 -2
- package/dist/components/ui/input.js +3 -3
- package/dist/components/ui/label.d.ts +2 -2
- package/dist/components/ui/label.js +3 -3
- package/dist/components/ui/radio-group.d.ts +2 -2
- package/dist/components/ui/radio-group.js +6 -6
- package/dist/components/ui/separator.d.ts +1 -1
- package/dist/components/ui/separator.js +5 -5
- package/dist/components/ui/skeleton.d.ts +1 -1
- package/dist/components/ui/skeleton.js +2 -2
- package/dist/components/ui/spinner.d.ts +2 -2
- package/dist/components/ui/spinner.js +3 -3
- package/dist/components/ui/switch.d.ts +2 -2
- package/dist/components/ui/switch.js +5 -5
- package/dist/components/ui/tabs.d.ts +2 -2
- package/dist/components/ui/tabs.js +13 -13
- package/dist/components/ui/toggle-group.d.ts +6 -6
- package/dist/components/ui/toggle-group.js +13 -13
- package/dist/components/ui/toggle.d.ts +2 -2
- package/dist/components/ui/toggle.js +11 -11
- package/dist/components/ui/tooltip.d.ts +3 -3
- package/dist/components/ui/tooltip.js +5 -5
- package/dist/components/version-dialog.d.ts +1 -1
- package/dist/components/version-dialog.js +33 -33
- package/dist/components/workspace-brand.js +1 -1
- package/dist/components/workspace-logo.d.ts +1 -1
- package/dist/index.d.ts +19 -19
- package/dist/index.js +19 -19
- package/dist/lib/utils.d.ts +1 -1
- package/dist/lib/utils.js +2 -2
- package/dist/lib/version-notes.js +18 -18
- package/package.json +24 -9
- package/src/components/account-drawer.tsx +27 -27
- package/src/components/on-screen-controls.tsx +45 -45
- package/src/components/scene-settings.tsx +55 -55
- package/src/components/theme-provider.tsx +7 -7
- package/src/components/theme-toggle.tsx +20 -20
- package/src/components/ui/badge.tsx +20 -20
- package/src/components/ui/button.tsx +24 -24
- package/src/components/ui/card.tsx +6 -6
- package/src/components/ui/dialog.tsx +24 -24
- package/src/components/ui/drawer.tsx +55 -55
- package/src/components/ui/dropdown-menu.tsx +39 -39
- package/src/components/ui/empty.tsx +25 -25
- package/src/components/ui/field.tsx +55 -55
- package/src/components/ui/input.tsx +7 -7
- package/src/components/ui/label.tsx +7 -7
- package/src/components/ui/radio-group.tsx +9 -9
- package/src/components/ui/separator.tsx +7 -7
- package/src/components/ui/skeleton.tsx +5 -5
- package/src/components/ui/spinner.tsx +6 -6
- package/src/components/ui/switch.tsx +8 -8
- package/src/components/ui/tabs.tsx +21 -21
- package/src/components/ui/toggle-group.tsx +25 -25
- package/src/components/ui/toggle.tsx +15 -15
- package/src/components/ui/tooltip.tsx +13 -13
- package/src/components/version-dialog.tsx +113 -113
- package/src/components/workspace-brand.tsx +4 -4
- package/src/components/workspace-logo.tsx +2 -2
- package/src/index.tsx +19 -19
- package/src/lib/utils.ts +3 -3
- package/src/lib/version-notes.ts +23 -23
- package/src/styles/conventional-workspace.css +26 -26
- package/src/styles/globals.css +2 -2
- package/src/styles/theme.css +1 -1
- package/src/styles/workspace-shell.css +2 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare function Skeleton({ className, ...props }: React.ComponentProps<
|
|
1
|
+
declare function Skeleton({ className, ...props }: React.ComponentProps<'div'>): import("react").JSX.Element;
|
|
2
2
|
export { Skeleton };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { cn } from
|
|
2
|
+
import { cn } from '#lib/utils';
|
|
3
3
|
function Skeleton({ className, ...props }) {
|
|
4
|
-
return (_jsx("div", { "data-slot": "skeleton", className: cn(
|
|
4
|
+
return (_jsx("div", { "data-slot": "skeleton", className: cn('animate-pulse rounded-md bg-muted', className), ...props }));
|
|
5
5
|
}
|
|
6
6
|
export { Skeleton };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LoaderCircle } from
|
|
2
|
-
import type { ComponentProps } from
|
|
1
|
+
import { LoaderCircle } from 'lucide-react';
|
|
2
|
+
import type { ComponentProps } from 'react';
|
|
3
3
|
declare function Spinner({ className, ...props }: ComponentProps<typeof LoaderCircle>): import("react").JSX.Element;
|
|
4
4
|
export { Spinner };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { LoaderCircle } from
|
|
3
|
-
import { cn } from
|
|
2
|
+
import { LoaderCircle } from 'lucide-react';
|
|
3
|
+
import { cn } from '#lib/utils';
|
|
4
4
|
function Spinner({ className, ...props }) {
|
|
5
|
-
return (_jsx(LoaderCircle, { role: "status", "aria-label": "Loading", className: cn(
|
|
5
|
+
return (_jsx(LoaderCircle, { role: "status", "aria-label": "Loading", className: cn('animate-spin', className), ...props }));
|
|
6
6
|
}
|
|
7
7
|
export { Spinner };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Switch as SwitchPrimitive } from
|
|
1
|
+
import { Switch as SwitchPrimitive } from '@base-ui/react/switch';
|
|
2
2
|
declare function Switch({ className, size, ...props }: SwitchPrimitive.Root.Props & {
|
|
3
|
-
size?:
|
|
3
|
+
size?: 'sm' | 'default';
|
|
4
4
|
}): import("react").JSX.Element;
|
|
5
5
|
export { Switch };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { Switch as SwitchPrimitive } from
|
|
4
|
-
import { cn } from
|
|
5
|
-
function Switch({ className, size =
|
|
6
|
-
return (_jsx(SwitchPrimitive.Root, { "data-slot": "switch", "data-size": size, className: cn(
|
|
3
|
+
import { Switch as SwitchPrimitive } from '@base-ui/react/switch';
|
|
4
|
+
import { cn } from '#lib/utils';
|
|
5
|
+
function Switch({ className, size = 'default', ...props }) {
|
|
6
|
+
return (_jsx(SwitchPrimitive.Root, { "data-slot": "switch", "data-size": size, className: cn('peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50', className), ...props, children: _jsx(SwitchPrimitive.Thumb, { "data-slot": "switch-thumb", className: "pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground" }) }));
|
|
7
7
|
}
|
|
8
8
|
export { Switch };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Tabs as TabsPrimitive } from
|
|
2
|
-
import { type VariantProps } from
|
|
1
|
+
import { Tabs as TabsPrimitive } from '@base-ui/react/tabs';
|
|
2
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
3
3
|
declare function Tabs({ className, orientation, ...props }: TabsPrimitive.Root.Props): import("react").JSX.Element;
|
|
4
4
|
declare const tabsListVariants: (props?: ({
|
|
5
5
|
variant?: "default" | "line" | null | undefined;
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { Tabs as TabsPrimitive } from
|
|
4
|
-
import { cva } from
|
|
5
|
-
import { cn } from
|
|
6
|
-
function Tabs({ className, orientation =
|
|
7
|
-
return (_jsx(TabsPrimitive.Root, { "data-slot": "tabs", "data-orientation": orientation, className: cn(
|
|
3
|
+
import { Tabs as TabsPrimitive } from '@base-ui/react/tabs';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { cn } from '#lib/utils';
|
|
6
|
+
function Tabs({ className, orientation = 'horizontal', ...props }) {
|
|
7
|
+
return (_jsx(TabsPrimitive.Root, { "data-slot": "tabs", "data-orientation": orientation, className: cn('group/tabs flex gap-2 data-horizontal:flex-col', className), ...props }));
|
|
8
8
|
}
|
|
9
|
-
const tabsListVariants = cva(
|
|
9
|
+
const tabsListVariants = cva('group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none', {
|
|
10
10
|
variants: {
|
|
11
11
|
variant: {
|
|
12
|
-
default:
|
|
13
|
-
line:
|
|
12
|
+
default: 'bg-muted',
|
|
13
|
+
line: 'gap-1 bg-transparent',
|
|
14
14
|
},
|
|
15
15
|
},
|
|
16
16
|
defaultVariants: {
|
|
17
|
-
variant:
|
|
17
|
+
variant: 'default',
|
|
18
18
|
},
|
|
19
19
|
});
|
|
20
|
-
function TabsList({ className, variant =
|
|
20
|
+
function TabsList({ className, variant = 'default', ...props }) {
|
|
21
21
|
return (_jsx(TabsPrimitive.List, { "data-slot": "tabs-list", "data-variant": variant, className: cn(tabsListVariants({ variant }), className), ...props }));
|
|
22
22
|
}
|
|
23
23
|
function TabsTrigger({ className, ...props }) {
|
|
24
|
-
return (_jsx(TabsPrimitive.Tab, { "data-slot": "tabs-trigger", className: cn("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
24
|
+
return (_jsx(TabsPrimitive.Tab, { "data-slot": "tabs-trigger", className: cn("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", 'group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent', 'data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground', 'after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100', className), ...props }));
|
|
25
25
|
}
|
|
26
26
|
function TabsContent({ className, ...props }) {
|
|
27
|
-
return (_jsx(TabsPrimitive.Panel, { "data-slot": "tabs-content", className: cn(
|
|
27
|
+
return (_jsx(TabsPrimitive.Panel, { "data-slot": "tabs-content", className: cn('flex-1 text-sm outline-none', className), ...props }));
|
|
28
28
|
}
|
|
29
29
|
export { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import { Toggle as TogglePrimitive } from
|
|
3
|
-
import { ToggleGroup as ToggleGroupPrimitive } from
|
|
4
|
-
import { type VariantProps } from
|
|
5
|
-
import { toggleVariants } from
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Toggle as TogglePrimitive } from '@base-ui/react/toggle';
|
|
3
|
+
import { ToggleGroup as ToggleGroupPrimitive } from '@base-ui/react/toggle-group';
|
|
4
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
5
|
+
import { toggleVariants } from '#components/ui/toggle';
|
|
6
6
|
declare function ToggleGroup({ className, variant, size, spacing, orientation, children, ...props }: ToggleGroupPrimitive.Props & VariantProps<typeof toggleVariants> & {
|
|
7
7
|
spacing?: number;
|
|
8
|
-
orientation?:
|
|
8
|
+
orientation?: 'horizontal' | 'vertical';
|
|
9
9
|
}): React.JSX.Element;
|
|
10
10
|
declare function ToggleGroupItem({ className, children, variant, size, ...props }: TogglePrimitive.Props & VariantProps<typeof toggleVariants>): React.JSX.Element;
|
|
11
11
|
export { ToggleGroup, ToggleGroupItem };
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import * as React from
|
|
4
|
-
import { Toggle as TogglePrimitive } from
|
|
5
|
-
import { ToggleGroup as ToggleGroupPrimitive } from
|
|
6
|
-
import { cn } from
|
|
7
|
-
import { toggleVariants } from
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Toggle as TogglePrimitive } from '@base-ui/react/toggle';
|
|
5
|
+
import { ToggleGroup as ToggleGroupPrimitive } from '@base-ui/react/toggle-group';
|
|
6
|
+
import { cn } from '#lib/utils';
|
|
7
|
+
import { toggleVariants } from '#components/ui/toggle';
|
|
8
8
|
const ToggleGroupContext = React.createContext({
|
|
9
|
-
size:
|
|
10
|
-
variant:
|
|
9
|
+
size: 'default',
|
|
10
|
+
variant: 'default',
|
|
11
11
|
spacing: 2,
|
|
12
|
-
orientation:
|
|
12
|
+
orientation: 'horizontal',
|
|
13
13
|
});
|
|
14
|
-
function ToggleGroup({ className, variant, size, spacing = 2, orientation =
|
|
15
|
-
return (_jsx(ToggleGroupPrimitive, { "data-slot": "toggle-group", "data-variant": variant, "data-size": size, "data-spacing": spacing, "data-orientation": orientation, style: {
|
|
14
|
+
function ToggleGroup({ className, variant, size, spacing = 2, orientation = 'horizontal', children, ...props }) {
|
|
15
|
+
return (_jsx(ToggleGroupPrimitive, { "data-slot": "toggle-group", "data-variant": variant, "data-size": size, "data-spacing": spacing, "data-orientation": orientation, style: { '--gap': spacing }, className: cn('group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch', className), ...props, children: _jsx(ToggleGroupContext.Provider, { value: { variant, size, spacing, orientation }, children: children }) }));
|
|
16
16
|
}
|
|
17
|
-
function ToggleGroupItem({ className, children, variant =
|
|
17
|
+
function ToggleGroupItem({ className, children, variant = 'default', size = 'default', ...props }) {
|
|
18
18
|
const context = React.useContext(ToggleGroupContext);
|
|
19
|
-
return (_jsx(TogglePrimitive, { "data-slot": "toggle-group-item", "data-variant": context.variant || variant, "data-size": context.size || size, "data-spacing": context.spacing, className: cn(
|
|
19
|
+
return (_jsx(TogglePrimitive, { "data-slot": "toggle-group-item", "data-variant": context.variant || variant, "data-size": context.size || size, "data-spacing": context.spacing, className: cn('shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t', toggleVariants({
|
|
20
20
|
variant: context.variant || variant,
|
|
21
21
|
size: context.size || size,
|
|
22
22
|
}), className), ...props, children: children }));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Toggle as TogglePrimitive } from
|
|
2
|
-
import { type VariantProps } from
|
|
1
|
+
import { Toggle as TogglePrimitive } from '@base-ui/react/toggle';
|
|
2
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
3
3
|
declare const toggleVariants: (props?: ({
|
|
4
4
|
variant?: "default" | "outline" | null | undefined;
|
|
5
5
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { Toggle as TogglePrimitive } from
|
|
4
|
-
import { cva } from
|
|
5
|
-
import { cn } from
|
|
3
|
+
import { Toggle as TogglePrimitive } from '@base-ui/react/toggle';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { cn } from '#lib/utils';
|
|
6
6
|
const toggleVariants = cva("group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
|
|
7
7
|
variants: {
|
|
8
8
|
variant: {
|
|
9
|
-
default:
|
|
10
|
-
outline:
|
|
9
|
+
default: 'bg-transparent',
|
|
10
|
+
outline: 'border border-input bg-transparent hover:bg-muted',
|
|
11
11
|
},
|
|
12
12
|
size: {
|
|
13
|
-
default:
|
|
13
|
+
default: 'h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2',
|
|
14
14
|
sm: "h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
|
|
15
|
-
lg:
|
|
15
|
+
lg: 'h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2',
|
|
16
16
|
},
|
|
17
17
|
},
|
|
18
18
|
defaultVariants: {
|
|
19
|
-
variant:
|
|
20
|
-
size:
|
|
19
|
+
variant: 'default',
|
|
20
|
+
size: 'default',
|
|
21
21
|
},
|
|
22
22
|
});
|
|
23
|
-
function Toggle({ className, variant =
|
|
23
|
+
function Toggle({ className, variant = 'default', size = 'default', ...props }) {
|
|
24
24
|
return (_jsx(TogglePrimitive, { "data-slot": "toggle", className: cn(toggleVariants({ variant, size, className })), ...props }));
|
|
25
25
|
}
|
|
26
26
|
export { Toggle, toggleVariants };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import { Tooltip as TooltipPrimitive } from
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip';
|
|
3
3
|
declare const TOOLTIP_DELAY = 200;
|
|
4
4
|
declare function TooltipProvider({ delay, ...props }: TooltipPrimitive.Provider.Props): React.JSX.Element;
|
|
5
5
|
declare function Tooltip({ ...props }: TooltipPrimitive.Root.Props): React.JSX.Element;
|
|
6
6
|
declare function TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props): React.JSX.Element;
|
|
7
|
-
declare function TooltipContent({ className, side, sideOffset, align, alignOffset, children, ...props }: TooltipPrimitive.Popup.Props & Pick<TooltipPrimitive.Positioner.Props,
|
|
7
|
+
declare function TooltipContent({ className, side, sideOffset, align, alignOffset, children, ...props }: TooltipPrimitive.Popup.Props & Pick<TooltipPrimitive.Positioner.Props, 'align' | 'alignOffset' | 'side' | 'sideOffset'>): React.JSX.Element;
|
|
8
8
|
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, TOOLTIP_DELAY };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { Tooltip as TooltipPrimitive } from
|
|
4
|
-
import { cn } from
|
|
3
|
+
import { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip';
|
|
4
|
+
import { cn } from '#lib/utils';
|
|
5
5
|
const TOOLTIP_DELAY = 200;
|
|
6
6
|
function TooltipProvider({ delay = TOOLTIP_DELAY, ...props }) {
|
|
7
7
|
return _jsx(TooltipPrimitive.Provider, { "data-slot": "tooltip-provider", delay: delay, ...props });
|
|
@@ -12,7 +12,7 @@ function Tooltip({ ...props }) {
|
|
|
12
12
|
function TooltipTrigger({ ...props }) {
|
|
13
13
|
return _jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
14
14
|
}
|
|
15
|
-
function TooltipContent({ className, side =
|
|
16
|
-
return (_jsx(TooltipPrimitive.Portal, { children: _jsx(TooltipPrimitive.Positioner, { className: "isolate z-[160] outline-none", align: align, alignOffset: alignOffset, side: side, sideOffset: sideOffset, children: _jsx(TooltipPrimitive.Popup, { "data-slot": "tooltip-content", className: cn(
|
|
15
|
+
function TooltipContent({ className, side = 'top', sideOffset = 4, align, alignOffset, children, ...props }) {
|
|
16
|
+
return (_jsx(TooltipPrimitive.Portal, { children: _jsx(TooltipPrimitive.Positioner, { className: "isolate z-[160] outline-none", align: align, alignOffset: alignOffset, side: side, sideOffset: sideOffset, children: _jsx(TooltipPrimitive.Popup, { "data-slot": "tooltip-content", className: cn('max-w-72 rounded-md bg-popover px-2.5 py-1.5 text-sm leading-5 text-popover-foreground shadow-md ring-1 ring-foreground/10', className), ...props, children: children }) }) }));
|
|
17
17
|
}
|
|
18
18
|
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, TOOLTIP_DELAY };
|
|
@@ -5,7 +5,7 @@ export type SharedDesktopUpdate = Readonly<{
|
|
|
5
5
|
downloaded_bytes: number;
|
|
6
6
|
error: string | null;
|
|
7
7
|
github_url: string;
|
|
8
|
-
phase:
|
|
8
|
+
phase: 'idle' | 'checking' | 'current' | 'available' | 'downloading' | 'installing' | 'installed' | 'failed';
|
|
9
9
|
release_date: string | null;
|
|
10
10
|
release_notes: string | null;
|
|
11
11
|
restart_required: boolean;
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useCallback, useEffect, useMemo, useState } from
|
|
4
|
-
import { Check, Download, ExternalLink, FileText, LoaderCircle, RefreshCw, Sparkles, } from
|
|
5
|
-
import { formatReleaseDate, plainTextFromMarkdown } from
|
|
6
|
-
import { Button } from
|
|
7
|
-
import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from
|
|
3
|
+
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
4
|
+
import { Check, Download, ExternalLink, FileText, LoaderCircle, RefreshCw, Sparkles, } from 'lucide-react';
|
|
5
|
+
import { formatReleaseDate, plainTextFromMarkdown } from '#lib/version-notes';
|
|
6
|
+
import { Button } from '#components/ui/button';
|
|
7
|
+
import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '#components/ui/dialog';
|
|
8
8
|
function errorMessage(caught, fallback) {
|
|
9
9
|
if (caught instanceof Error && caught.message)
|
|
10
10
|
return caught.message;
|
|
11
|
-
if (typeof caught ===
|
|
11
|
+
if (typeof caught === 'string' && caught)
|
|
12
12
|
return caught;
|
|
13
13
|
return fallback;
|
|
14
14
|
}
|
|
15
15
|
function phaseLabel(update, fallbackVersion) {
|
|
16
16
|
if (!update)
|
|
17
17
|
return `Adea v${fallbackVersion}`;
|
|
18
|
-
if (update.phase ===
|
|
19
|
-
return
|
|
20
|
-
if (update.phase ===
|
|
18
|
+
if (update.phase === 'checking')
|
|
19
|
+
return 'Checking for updates…';
|
|
20
|
+
if (update.phase === 'available' && update.available_version) {
|
|
21
21
|
return `Update v${update.available_version} available`;
|
|
22
22
|
}
|
|
23
|
-
if (update.phase ===
|
|
24
|
-
return
|
|
23
|
+
if (update.phase === 'downloading' || update.phase === 'installing') {
|
|
24
|
+
return 'Installing update…';
|
|
25
25
|
}
|
|
26
|
-
if (update.phase ===
|
|
26
|
+
if (update.phase === 'failed')
|
|
27
27
|
return `Version ${update.current_version} · Retry`;
|
|
28
28
|
return `Adea v${update.current_version || fallbackVersion}`;
|
|
29
29
|
}
|
|
30
30
|
function isUpdateBusy(update) {
|
|
31
|
-
return (update?.phase ===
|
|
32
|
-
update?.phase ===
|
|
33
|
-
update?.phase ===
|
|
31
|
+
return (update?.phase === 'checking' ||
|
|
32
|
+
update?.phase === 'downloading' ||
|
|
33
|
+
update?.phase === 'installing');
|
|
34
34
|
}
|
|
35
|
-
export function VersionDialog({ adapter, fallbackVersion =
|
|
35
|
+
export function VersionDialog({ adapter, fallbackVersion = '0.1.0', onOpenChange, open: controlledOpen, }) {
|
|
36
36
|
const [uncontrolledOpen, setUncontrolledOpen] = useState(false);
|
|
37
37
|
const open = controlledOpen ?? uncontrolledOpen;
|
|
38
38
|
const setOpen = useCallback((nextOpen) => {
|
|
@@ -43,7 +43,7 @@ export function VersionDialog({ adapter, fallbackVersion = "0.1.0", onOpenChange
|
|
|
43
43
|
const [desktopRuntime, setDesktopRuntime] = useState(false);
|
|
44
44
|
const [update, setUpdate] = useState(null);
|
|
45
45
|
const [busy, setBusy] = useState(false);
|
|
46
|
-
const [error, setError] = useState(
|
|
46
|
+
const [error, setError] = useState('');
|
|
47
47
|
useEffect(() => setDesktopRuntime(adapter.isDesktopRuntime()), [adapter]);
|
|
48
48
|
const loadCurrentStatus = useCallback(async () => {
|
|
49
49
|
if (!desktopRuntime)
|
|
@@ -52,7 +52,7 @@ export function VersionDialog({ adapter, fallbackVersion = "0.1.0", onOpenChange
|
|
|
52
52
|
setUpdate(await adapter.getStatus());
|
|
53
53
|
}
|
|
54
54
|
catch (caught) {
|
|
55
|
-
setError(errorMessage(caught,
|
|
55
|
+
setError(errorMessage(caught, 'Version status is unavailable'));
|
|
56
56
|
}
|
|
57
57
|
}, [adapter, desktopRuntime]);
|
|
58
58
|
useEffect(() => {
|
|
@@ -61,16 +61,16 @@ export function VersionDialog({ adapter, fallbackVersion = "0.1.0", onOpenChange
|
|
|
61
61
|
}, [desktopRuntime, loadCurrentStatus]);
|
|
62
62
|
const checkForUpdates = useCallback(async () => {
|
|
63
63
|
if (!desktopRuntime) {
|
|
64
|
-
setError(
|
|
64
|
+
setError('Update checks are available from the desktop app.');
|
|
65
65
|
return;
|
|
66
66
|
}
|
|
67
67
|
setBusy(true);
|
|
68
|
-
setError(
|
|
68
|
+
setError('');
|
|
69
69
|
try {
|
|
70
70
|
setUpdate(await adapter.check());
|
|
71
71
|
}
|
|
72
72
|
catch (caught) {
|
|
73
|
-
setError(errorMessage(caught,
|
|
73
|
+
setError(errorMessage(caught, 'Could not check for updates'));
|
|
74
74
|
await loadCurrentStatus();
|
|
75
75
|
}
|
|
76
76
|
finally {
|
|
@@ -81,7 +81,7 @@ export function VersionDialog({ adapter, fallbackVersion = "0.1.0", onOpenChange
|
|
|
81
81
|
if (!open || !desktopRuntime)
|
|
82
82
|
return;
|
|
83
83
|
let active = true;
|
|
84
|
-
setError(
|
|
84
|
+
setError('');
|
|
85
85
|
setBusy(true);
|
|
86
86
|
void (async () => {
|
|
87
87
|
try {
|
|
@@ -95,7 +95,7 @@ export function VersionDialog({ adapter, fallbackVersion = "0.1.0", onOpenChange
|
|
|
95
95
|
}
|
|
96
96
|
catch (caught) {
|
|
97
97
|
if (active)
|
|
98
|
-
setError(errorMessage(caught,
|
|
98
|
+
setError(errorMessage(caught, 'Could not check for updates'));
|
|
99
99
|
}
|
|
100
100
|
finally {
|
|
101
101
|
if (active)
|
|
@@ -111,26 +111,26 @@ export function VersionDialog({ adapter, fallbackVersion = "0.1.0", onOpenChange
|
|
|
111
111
|
if (!version)
|
|
112
112
|
return;
|
|
113
113
|
setBusy(true);
|
|
114
|
-
setError(
|
|
114
|
+
setError('');
|
|
115
115
|
try {
|
|
116
116
|
setUpdate(await adapter.install(version));
|
|
117
117
|
}
|
|
118
118
|
catch (caught) {
|
|
119
|
-
setError(errorMessage(caught,
|
|
119
|
+
setError(errorMessage(caught, 'Update installation failed'));
|
|
120
120
|
await loadCurrentStatus();
|
|
121
121
|
}
|
|
122
122
|
finally {
|
|
123
123
|
setBusy(false);
|
|
124
124
|
}
|
|
125
125
|
};
|
|
126
|
-
const currentChangelog = useMemo(() => plainTextFromMarkdown(update?.changelog ||
|
|
127
|
-
const releaseNotes = update?.release_notes ? plainTextFromMarkdown(update.release_notes) :
|
|
126
|
+
const currentChangelog = useMemo(() => plainTextFromMarkdown(update?.changelog || 'Changelog is loading…'), [update?.changelog]);
|
|
127
|
+
const releaseNotes = update?.release_notes ? plainTextFromMarkdown(update.release_notes) : '';
|
|
128
128
|
const busyFromSnapshot = isUpdateBusy(update);
|
|
129
|
-
return (_jsxs(Dialog, { open: open, onOpenChange: setOpen, children: [controlledOpen === undefined ? (_jsxs(DialogTrigger, { render: _jsx(Button, { type: "button", variant: "ghost", size: "sm", "aria-label": "Open version and updates dialog", "aria-haspopup": "dialog", onClick: () => setOpen(true) }), children: [update?.phase ===
|
|
130
|
-
?
|
|
131
|
-
: update?.phase ===
|
|
129
|
+
return (_jsxs(Dialog, { open: open, onOpenChange: setOpen, children: [controlledOpen === undefined ? (_jsxs(DialogTrigger, { render: _jsx(Button, { type: "button", variant: "ghost", size: "sm", "aria-label": "Open version and updates dialog", "aria-haspopup": "dialog", onClick: () => setOpen(true) }), children: [update?.phase === 'available' ? (_jsx(Sparkles, { "aria-hidden": "true" })) : (_jsx(FileText, { "aria-hidden": "true" })), phaseLabel(update, fallbackVersion)] })) : null, _jsxs(DialogContent, { className: "max-w-3xl", children: [_jsx(DialogHeader, { children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "flex size-10 items-center justify-center rounded-xl bg-primary text-primary-foreground", children: _jsx(Sparkles, { className: "size-5", "aria-hidden": "true" }) }), _jsxs("div", { children: [_jsx(DialogTitle, { children: "Version & updates" }), _jsx(DialogDescription, { children: "Keep Adea current and review what changed in each release." })] })] }) }), _jsxs("div", { className: "min-h-0 space-y-5 overflow-y-auto p-6", children: [_jsx("section", { className: "rounded-xl border bg-background/45 p-4", "aria-label": "Version status", children: _jsxs("div", { className: "flex flex-wrap items-start justify-between gap-4", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground", children: "Installed version" }), _jsxs("p", { className: "text-xl font-semibold tracking-tight", children: ["v", update?.current_version || fallbackVersion] }), _jsx("p", { className: "text-sm text-muted-foreground", children: update?.phase === 'current'
|
|
130
|
+
? 'You are running the latest desktop release.'
|
|
131
|
+
: update?.phase === 'available' && update.available_version
|
|
132
132
|
? `A newer desktop release, v${update.available_version}, is ready.`
|
|
133
133
|
: desktopRuntime
|
|
134
|
-
?
|
|
135
|
-
:
|
|
134
|
+
? 'Check the release channel for the latest signed build.'
|
|
135
|
+
: 'Open this dialog inside the desktop app to check for updates.' })] }), _jsxs(Button, { type: "button", variant: "outline", size: "sm", disabled: !desktopRuntime || busy || busyFromSnapshot, onClick: () => void checkForUpdates(), children: [busy || busyFromSnapshot ? (_jsx(LoaderCircle, { className: "animate-spin", "aria-hidden": "true" })) : (_jsx(RefreshCw, { "aria-hidden": "true" })), "Check latest version"] })] }) }), update?.phase === 'available' && update.available_version ? (_jsx("section", { className: "rounded-xl border border-primary/35 bg-primary/8 p-4", "aria-label": "Available update", children: _jsxs("div", { className: "flex flex-wrap items-start justify-between gap-4", children: [_jsxs("div", { className: "space-y-1", children: [_jsxs("p", { className: "flex items-center gap-2 text-sm font-semibold", children: [_jsx(Sparkles, { className: "size-4 text-primary", "aria-hidden": "true" }), "Version ", update.available_version, " is ready"] }), _jsx("p", { className: "text-sm text-muted-foreground", children: "The signed installer will be verified before Adea restarts." }), formatReleaseDate(update.release_date) ? (_jsxs("p", { className: "text-xs text-muted-foreground", children: ["Released ", formatReleaseDate(update.release_date)] })) : null] }), _jsxs(Button, { type: "button", size: "sm", disabled: busy || busyFromSnapshot, onClick: () => void install(), children: [busy || busyFromSnapshot ? (_jsx(LoaderCircle, { className: "animate-spin", "aria-hidden": "true" })) : (_jsx(Download, { "aria-hidden": "true" })), "Install and restart"] })] }) })) : null, update?.phase === 'current' ? (_jsxs("p", { className: "flex items-center gap-2 text-sm text-emerald-700 dark:text-emerald-300", role: "status", children: [_jsx(Check, { className: "size-4", "aria-hidden": "true" }), "Adea is up to date."] })) : null, error ? (_jsx("p", { className: "rounded-lg border border-destructive/35 bg-destructive/8 px-3 py-2 text-sm text-destructive", role: "alert", children: error })) : null, releaseNotes ? (_jsxs("section", { className: "space-y-2", "aria-labelledby": "adea-release-notes", children: [_jsxs("div", { children: [_jsx("h2", { id: "adea-release-notes", className: "text-sm font-semibold", children: "What changed in this release" }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Release notes are shown as readable text." })] }), _jsx("div", { className: "max-h-52 overflow-y-auto whitespace-pre-wrap rounded-xl border bg-background/45 p-4 font-mono text-xs leading-5 text-muted-foreground", children: releaseNotes })] })) : null, _jsxs("section", { className: "space-y-2", "aria-labelledby": "agent-hq-changelog", children: [_jsxs("div", { children: [_jsx("h2", { id: "agent-hq-changelog", className: "text-sm font-semibold", children: "Installed changelog" }), _jsx("p", { className: "text-xs text-muted-foreground", children: "A plain-text history of the installed channel." })] }), _jsx("div", { className: "max-h-72 overflow-y-auto whitespace-pre-wrap rounded-xl border bg-background/45 p-4 font-mono text-xs leading-5 text-muted-foreground", children: currentChangelog })] })] }), _jsxs(DialogFooter, { children: [update?.github_url ? (_jsxs(Button, { type: "button", variant: "ghost", size: "sm", onClick: () => window.open(update.github_url, '_blank', 'noopener,noreferrer'), children: [_jsx(ExternalLink, { "aria-hidden": "true" }), "View releases"] })) : null, _jsx(DialogClose, { render: _jsx(Button, { type: "button", variant: "outline", size: "sm" }), children: "Close" })] })] })] }));
|
|
136
136
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
export function WorkspaceBrand({ title, eyebrow =
|
|
2
|
+
export function WorkspaceBrand({ title, eyebrow = 'AGENT OPERATIONS' }) {
|
|
3
3
|
return (_jsxs("div", { className: "workspace-brand", children: [_jsx("div", { className: "workspace-brand__mark", "aria-hidden": "true", children: _jsx("span", { children: "HQ" }) }), _jsxs("div", { children: [_jsx("p", { className: "workspace-eyebrow", children: eyebrow }), _jsx("h1", { children: title })] })] }));
|
|
4
4
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
export { Button, buttonVariants } from
|
|
2
|
-
export { Switch } from
|
|
3
|
-
export { Toggle } from
|
|
4
|
-
export { ToggleGroup, ToggleGroupItem } from
|
|
5
|
-
export { RadioGroup, RadioGroupItem } from
|
|
6
|
-
export { ThemeToggle } from
|
|
7
|
-
export { ThemeProvider } from
|
|
8
|
-
export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerSwipeHandle, DrawerTitle, DrawerTrigger, } from
|
|
9
|
-
export { AccountDrawer, type AccountDrawerProps } from
|
|
10
|
-
export { WorkspaceBrand, type WorkspaceBrandProps } from
|
|
11
|
-
export { WorkspaceLogo } from
|
|
12
|
-
export { OnScreenControls } from
|
|
13
|
-
export { SceneSettings, type SceneSettingsProps } from
|
|
14
|
-
export { VersionDialog, type SharedDesktopUpdate, type VersionDialogAdapter, } from
|
|
15
|
-
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from
|
|
16
|
-
export { Card, CardContent } from
|
|
17
|
-
export { Spinner } from
|
|
18
|
-
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, } from
|
|
19
|
-
export { cn } from
|
|
1
|
+
export { Button, buttonVariants } from './components/ui/button';
|
|
2
|
+
export { Switch } from './components/ui/switch';
|
|
3
|
+
export { Toggle } from './components/ui/toggle';
|
|
4
|
+
export { ToggleGroup, ToggleGroupItem } from './components/ui/toggle-group';
|
|
5
|
+
export { RadioGroup, RadioGroupItem } from './components/ui/radio-group';
|
|
6
|
+
export { ThemeToggle } from './components/theme-toggle';
|
|
7
|
+
export { ThemeProvider } from './components/theme-provider';
|
|
8
|
+
export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerSwipeHandle, DrawerTitle, DrawerTrigger, } from './components/ui/drawer';
|
|
9
|
+
export { AccountDrawer, type AccountDrawerProps } from './components/account-drawer';
|
|
10
|
+
export { WorkspaceBrand, type WorkspaceBrandProps } from './components/workspace-brand';
|
|
11
|
+
export { WorkspaceLogo } from './components/workspace-logo';
|
|
12
|
+
export { OnScreenControls } from './components/on-screen-controls';
|
|
13
|
+
export { SceneSettings, type SceneSettingsProps } from './components/scene-settings';
|
|
14
|
+
export { VersionDialog, type SharedDesktopUpdate, type VersionDialogAdapter, } from './components/version-dialog';
|
|
15
|
+
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './components/ui/tooltip';
|
|
16
|
+
export { Card, CardContent } from './components/ui/card';
|
|
17
|
+
export { Spinner } from './components/ui/spinner';
|
|
18
|
+
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, } from './components/ui/dialog';
|
|
19
|
+
export { cn } from './lib/utils';
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
export { Button, buttonVariants } from
|
|
2
|
-
export { Switch } from
|
|
3
|
-
export { Toggle } from
|
|
4
|
-
export { ToggleGroup, ToggleGroupItem } from
|
|
5
|
-
export { RadioGroup, RadioGroupItem } from
|
|
6
|
-
export { ThemeToggle } from
|
|
7
|
-
export { ThemeProvider } from
|
|
8
|
-
export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerSwipeHandle, DrawerTitle, DrawerTrigger, } from
|
|
9
|
-
export { AccountDrawer } from
|
|
10
|
-
export { WorkspaceBrand } from
|
|
11
|
-
export { WorkspaceLogo } from
|
|
12
|
-
export { OnScreenControls } from
|
|
13
|
-
export { SceneSettings } from
|
|
14
|
-
export { VersionDialog, } from
|
|
15
|
-
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from
|
|
16
|
-
export { Card, CardContent } from
|
|
17
|
-
export { Spinner } from
|
|
18
|
-
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, } from
|
|
19
|
-
export { cn } from
|
|
1
|
+
export { Button, buttonVariants } from './components/ui/button';
|
|
2
|
+
export { Switch } from './components/ui/switch';
|
|
3
|
+
export { Toggle } from './components/ui/toggle';
|
|
4
|
+
export { ToggleGroup, ToggleGroupItem } from './components/ui/toggle-group';
|
|
5
|
+
export { RadioGroup, RadioGroupItem } from './components/ui/radio-group';
|
|
6
|
+
export { ThemeToggle } from './components/theme-toggle';
|
|
7
|
+
export { ThemeProvider } from './components/theme-provider';
|
|
8
|
+
export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerSwipeHandle, DrawerTitle, DrawerTrigger, } from './components/ui/drawer';
|
|
9
|
+
export { AccountDrawer } from './components/account-drawer';
|
|
10
|
+
export { WorkspaceBrand } from './components/workspace-brand';
|
|
11
|
+
export { WorkspaceLogo } from './components/workspace-logo';
|
|
12
|
+
export { OnScreenControls } from './components/on-screen-controls';
|
|
13
|
+
export { SceneSettings } from './components/scene-settings';
|
|
14
|
+
export { VersionDialog, } from './components/version-dialog';
|
|
15
|
+
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './components/ui/tooltip';
|
|
16
|
+
export { Card, CardContent } from './components/ui/card';
|
|
17
|
+
export { Spinner } from './components/ui/spinner';
|
|
18
|
+
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, } from './components/ui/dialog';
|
|
19
|
+
export { cn } from './lib/utils';
|
package/dist/lib/utils.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { type ClassValue } from
|
|
1
|
+
import { type ClassValue } from 'clsx';
|
|
2
2
|
export declare function cn(...inputs: ClassValue[]): string;
|
package/dist/lib/utils.js
CHANGED