@hyperpackai/hyperui 0.1.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 +21 -0
- package/README.md +82 -0
- package/dist/components/Accordion/index.d.ts +17 -0
- package/dist/components/Accordion/index.d.ts.map +1 -0
- package/dist/components/Accordion/index.js +46 -0
- package/dist/components/Alert/index.d.ts +13 -0
- package/dist/components/Alert/index.d.ts.map +1 -0
- package/dist/components/Alert/index.js +46 -0
- package/dist/components/AppBar/index.d.ts +19 -0
- package/dist/components/AppBar/index.d.ts.map +1 -0
- package/dist/components/AppBar/index.js +48 -0
- package/dist/components/AspectRatio/index.d.ts +8 -0
- package/dist/components/AspectRatio/index.d.ts.map +1 -0
- package/dist/components/AspectRatio/index.js +32 -0
- package/dist/components/Autocomplete/index.d.ts +21 -0
- package/dist/components/Autocomplete/index.d.ts.map +1 -0
- package/dist/components/Autocomplete/index.js +94 -0
- package/dist/components/Avatar/index.d.ts +12 -0
- package/dist/components/Avatar/index.d.ts.map +1 -0
- package/dist/components/Avatar/index.js +32 -0
- package/dist/components/AvatarGroup/index.d.ts +9 -0
- package/dist/components/AvatarGroup/index.d.ts.map +1 -0
- package/dist/components/AvatarGroup/index.js +24 -0
- package/dist/components/Backdrop/index.d.ts +10 -0
- package/dist/components/Backdrop/index.d.ts.map +1 -0
- package/dist/components/Backdrop/index.js +25 -0
- package/dist/components/Badge/index.d.ts +10 -0
- package/dist/components/Badge/index.d.ts.map +1 -0
- package/dist/components/Badge/index.js +30 -0
- package/dist/components/BottomNavigation/index.d.ts +16 -0
- package/dist/components/BottomNavigation/index.d.ts.map +1 -0
- package/dist/components/BottomNavigation/index.js +43 -0
- package/dist/components/Box/index.d.ts +21 -0
- package/dist/components/Box/index.d.ts.map +1 -0
- package/dist/components/Box/index.js +30 -0
- package/dist/components/Breadcrumb/index.d.ts +13 -0
- package/dist/components/Breadcrumb/index.d.ts.map +1 -0
- package/dist/components/Breadcrumb/index.js +19 -0
- package/dist/components/Button/index.d.ts +22 -0
- package/dist/components/Button/index.d.ts.map +1 -0
- package/dist/components/Button/index.js +93 -0
- package/dist/components/ButtonGroup/index.d.ts +9 -0
- package/dist/components/ButtonGroup/index.d.ts.map +1 -0
- package/dist/components/ButtonGroup/index.js +27 -0
- package/dist/components/Card/index.d.ts +14 -0
- package/dist/components/Card/index.d.ts.map +1 -0
- package/dist/components/Card/index.js +33 -0
- package/dist/components/Checkbox/index.d.ts +17 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -0
- package/dist/components/Checkbox/index.js +42 -0
- package/dist/components/Chip/index.d.ts +18 -0
- package/dist/components/Chip/index.d.ts.map +1 -0
- package/dist/components/Chip/index.js +60 -0
- package/dist/components/CircularProgress/index.d.ts +14 -0
- package/dist/components/CircularProgress/index.d.ts.map +1 -0
- package/dist/components/CircularProgress/index.js +58 -0
- package/dist/components/ClickAwayListener/index.d.ts +11 -0
- package/dist/components/ClickAwayListener/index.d.ts.map +1 -0
- package/dist/components/ClickAwayListener/index.js +31 -0
- package/dist/components/Code/index.d.ts +9 -0
- package/dist/components/Code/index.d.ts.map +1 -0
- package/dist/components/Code/index.js +50 -0
- package/dist/components/Collapse/index.d.ts +11 -0
- package/dist/components/Collapse/index.d.ts.map +1 -0
- package/dist/components/Collapse/index.js +30 -0
- package/dist/components/CommandPalette/index.d.ts +26 -0
- package/dist/components/CommandPalette/index.d.ts.map +1 -0
- package/dist/components/CommandPalette/index.js +141 -0
- package/dist/components/Container/index.d.ts +11 -0
- package/dist/components/Container/index.d.ts.map +1 -0
- package/dist/components/Container/index.js +18 -0
- package/dist/components/DashboardLayout/index.d.ts +15 -0
- package/dist/components/DashboardLayout/index.d.ts.map +1 -0
- package/dist/components/DashboardLayout/index.js +67 -0
- package/dist/components/DataTable/index.d.ts +27 -0
- package/dist/components/DataTable/index.d.ts.map +1 -0
- package/dist/components/DataTable/index.js +59 -0
- package/dist/components/Dialog/index.d.ts +19 -0
- package/dist/components/Dialog/index.d.ts.map +1 -0
- package/dist/components/Dialog/index.js +96 -0
- package/dist/components/Divider/index.d.ts +13 -0
- package/dist/components/Divider/index.d.ts.map +1 -0
- package/dist/components/Divider/index.js +40 -0
- package/dist/components/Drawer/index.d.ts +17 -0
- package/dist/components/Drawer/index.d.ts.map +1 -0
- package/dist/components/Drawer/index.js +77 -0
- package/dist/components/DropdownMenu/index.d.ts +25 -0
- package/dist/components/DropdownMenu/index.d.ts.map +1 -0
- package/dist/components/DropdownMenu/index.js +67 -0
- package/dist/components/EmptyState/index.d.ts +11 -0
- package/dist/components/EmptyState/index.d.ts.map +1 -0
- package/dist/components/EmptyState/index.js +53 -0
- package/dist/components/ErrorState/index.d.ts +12 -0
- package/dist/components/ErrorState/index.d.ts.map +1 -0
- package/dist/components/ErrorState/index.js +54 -0
- package/dist/components/Fab/index.d.ts +16 -0
- package/dist/components/Fab/index.d.ts.map +1 -0
- package/dist/components/Fab/index.js +39 -0
- package/dist/components/Fade/index.d.ts +10 -0
- package/dist/components/Fade/index.d.ts.map +1 -0
- package/dist/components/Fade/index.js +13 -0
- package/dist/components/FocusTrap/index.d.ts +11 -0
- package/dist/components/FocusTrap/index.d.ts.map +1 -0
- package/dist/components/FocusTrap/index.js +69 -0
- package/dist/components/FormControl/index.d.ts +34 -0
- package/dist/components/FormControl/index.d.ts.map +1 -0
- package/dist/components/FormControl/index.js +52 -0
- package/dist/components/GlobalSearch/index.d.ts +23 -0
- package/dist/components/GlobalSearch/index.d.ts.map +1 -0
- package/dist/components/GlobalSearch/index.js +91 -0
- package/dist/components/Grid/index.d.ts +19 -0
- package/dist/components/Grid/index.d.ts.map +1 -0
- package/dist/components/Grid/index.js +30 -0
- package/dist/components/Grow/index.d.ts +10 -0
- package/dist/components/Grow/index.d.ts.map +1 -0
- package/dist/components/Grow/index.js +13 -0
- package/dist/components/IconButton/index.d.ts +16 -0
- package/dist/components/IconButton/index.d.ts.map +1 -0
- package/dist/components/IconButton/index.js +43 -0
- package/dist/components/ImageList/index.d.ts +21 -0
- package/dist/components/ImageList/index.d.ts.map +1 -0
- package/dist/components/ImageList/index.js +39 -0
- package/dist/components/Input/index.d.ts +33 -0
- package/dist/components/Input/index.d.ts.map +1 -0
- package/dist/components/Input/index.js +45 -0
- package/dist/components/Kbd/index.d.ts +8 -0
- package/dist/components/Kbd/index.d.ts.map +1 -0
- package/dist/components/Kbd/index.js +41 -0
- package/dist/components/KeyboardShortcut/index.d.ts +20 -0
- package/dist/components/KeyboardShortcut/index.d.ts.map +1 -0
- package/dist/components/KeyboardShortcut/index.js +63 -0
- package/dist/components/Label/index.d.ts +10 -0
- package/dist/components/Label/index.d.ts.map +1 -0
- package/dist/components/Label/index.js +17 -0
- package/dist/components/LinearProgress/index.d.ts +13 -0
- package/dist/components/LinearProgress/index.d.ts.map +1 -0
- package/dist/components/LinearProgress/index.js +69 -0
- package/dist/components/Link/index.d.ts +16 -0
- package/dist/components/Link/index.d.ts.map +1 -0
- package/dist/components/Link/index.js +25 -0
- package/dist/components/List/index.d.ts +40 -0
- package/dist/components/List/index.d.ts.map +1 -0
- package/dist/components/List/index.js +70 -0
- package/dist/components/LoadingState/index.d.ts +11 -0
- package/dist/components/LoadingState/index.d.ts.map +1 -0
- package/dist/components/LoadingState/index.js +66 -0
- package/dist/components/Menu/index.d.ts +40 -0
- package/dist/components/Menu/index.d.ts.map +1 -0
- package/dist/components/Menu/index.js +103 -0
- package/dist/components/MobileStepper/index.d.ts +16 -0
- package/dist/components/MobileStepper/index.d.ts.map +1 -0
- package/dist/components/MobileStepper/index.js +67 -0
- package/dist/components/Modal/index.d.ts +14 -0
- package/dist/components/Modal/index.d.ts.map +1 -0
- package/dist/components/Modal/index.js +51 -0
- package/dist/components/Navbar/index.d.ts +14 -0
- package/dist/components/Navbar/index.d.ts.map +1 -0
- package/dist/components/Navbar/index.js +27 -0
- package/dist/components/NoSSR/index.d.ts +7 -0
- package/dist/components/NoSSR/index.d.ts.map +1 -0
- package/dist/components/NoSSR/index.js +9 -0
- package/dist/components/PageLayout/index.d.ts +13 -0
- package/dist/components/PageLayout/index.d.ts.map +1 -0
- package/dist/components/PageLayout/index.js +41 -0
- package/dist/components/Pagination/index.d.ts +11 -0
- package/dist/components/Pagination/index.d.ts.map +1 -0
- package/dist/components/Pagination/index.js +56 -0
- package/dist/components/Paper/index.d.ts +12 -0
- package/dist/components/Paper/index.d.ts.map +1 -0
- package/dist/components/Paper/index.js +24 -0
- package/dist/components/Popover/index.d.ts +13 -0
- package/dist/components/Popover/index.d.ts.map +1 -0
- package/dist/components/Popover/index.js +34 -0
- package/dist/components/Progress/index.d.ts +13 -0
- package/dist/components/Progress/index.d.ts.map +1 -0
- package/dist/components/Progress/index.js +40 -0
- package/dist/components/Radio/index.d.ts +7 -0
- package/dist/components/Radio/index.d.ts.map +1 -0
- package/dist/components/Radio/index.js +28 -0
- package/dist/components/Rating/index.d.ts +15 -0
- package/dist/components/Rating/index.d.ts.map +1 -0
- package/dist/components/Rating/index.js +41 -0
- package/dist/components/ResizablePanel/index.d.ts +16 -0
- package/dist/components/ResizablePanel/index.d.ts.map +1 -0
- package/dist/components/ResizablePanel/index.js +41 -0
- package/dist/components/ScrollArea/index.d.ts +12 -0
- package/dist/components/ScrollArea/index.d.ts.map +1 -0
- package/dist/components/ScrollArea/index.js +50 -0
- package/dist/components/Select/index.d.ts +23 -0
- package/dist/components/Select/index.d.ts.map +1 -0
- package/dist/components/Select/index.js +52 -0
- package/dist/components/Sheet/index.d.ts +15 -0
- package/dist/components/Sheet/index.d.ts.map +1 -0
- package/dist/components/Sheet/index.js +61 -0
- package/dist/components/Sidebar/index.d.ts +23 -0
- package/dist/components/Sidebar/index.d.ts.map +1 -0
- package/dist/components/Sidebar/index.js +37 -0
- package/dist/components/Skeleton/index.d.ts +9 -0
- package/dist/components/Skeleton/index.d.ts.map +1 -0
- package/dist/components/Skeleton/index.js +22 -0
- package/dist/components/Slide/index.d.ts +12 -0
- package/dist/components/Slide/index.d.ts.map +1 -0
- package/dist/components/Slide/index.js +21 -0
- package/dist/components/Slider/index.d.ts +19 -0
- package/dist/components/Slider/index.d.ts.map +1 -0
- package/dist/components/Slider/index.js +49 -0
- package/dist/components/Snackbar/index.d.ts +28 -0
- package/dist/components/Snackbar/index.d.ts.map +1 -0
- package/dist/components/Snackbar/index.js +71 -0
- package/dist/components/SpeedDial/index.d.ts +18 -0
- package/dist/components/SpeedDial/index.d.ts.map +1 -0
- package/dist/components/SpeedDial/index.js +71 -0
- package/dist/components/Spinner/index.d.ts +10 -0
- package/dist/components/Spinner/index.d.ts.map +1 -0
- package/dist/components/Spinner/index.js +67 -0
- package/dist/components/SplitPane/index.d.ts +11 -0
- package/dist/components/SplitPane/index.d.ts.map +1 -0
- package/dist/components/SplitPane/index.js +46 -0
- package/dist/components/Stack/index.d.ts +17 -0
- package/dist/components/Stack/index.d.ts.map +1 -0
- package/dist/components/Stack/index.js +30 -0
- package/dist/components/Stepper/index.d.ts +20 -0
- package/dist/components/Stepper/index.d.ts.map +1 -0
- package/dist/components/Stepper/index.js +66 -0
- package/dist/components/Switch/index.d.ts +13 -0
- package/dist/components/Switch/index.d.ts.map +1 -0
- package/dist/components/Switch/index.js +38 -0
- package/dist/components/Tabs/index.d.ts +20 -0
- package/dist/components/Tabs/index.d.ts.map +1 -0
- package/dist/components/Tabs/index.js +62 -0
- package/dist/components/TextField/index.d.ts +35 -0
- package/dist/components/TextField/index.d.ts.map +1 -0
- package/dist/components/TextField/index.js +69 -0
- package/dist/components/Textarea/index.d.ts +22 -0
- package/dist/components/Textarea/index.d.ts.map +1 -0
- package/dist/components/Textarea/index.js +27 -0
- package/dist/components/Timeline/index.d.ts +16 -0
- package/dist/components/Timeline/index.d.ts.map +1 -0
- package/dist/components/Timeline/index.js +30 -0
- package/dist/components/Toast/index.d.ts +34 -0
- package/dist/components/Toast/index.d.ts.map +1 -0
- package/dist/components/Toast/index.js +106 -0
- package/dist/components/ToggleButton/index.d.ts +21 -0
- package/dist/components/ToggleButton/index.d.ts.map +1 -0
- package/dist/components/ToggleButton/index.js +81 -0
- package/dist/components/Tooltip/index.d.ts +14 -0
- package/dist/components/Tooltip/index.d.ts.map +1 -0
- package/dist/components/Tooltip/index.js +47 -0
- package/dist/components/TreeView/index.d.ts +19 -0
- package/dist/components/TreeView/index.d.ts.map +1 -0
- package/dist/components/TreeView/index.js +50 -0
- package/dist/components/Typography/index.d.ts +17 -0
- package/dist/components/Typography/index.d.ts.map +1 -0
- package/dist/components/Typography/index.js +44 -0
- package/dist/components/VisuallyHidden/index.d.ts +7 -0
- package/dist/components/VisuallyHidden/index.d.ts.map +1 -0
- package/dist/components/VisuallyHidden/index.js +18 -0
- package/dist/components/Zoom/index.d.ts +10 -0
- package/dist/components/Zoom/index.d.ts.map +1 -0
- package/dist/components/Zoom/index.js +13 -0
- package/dist/components/ai.d.ts +133 -0
- package/dist/components/ai.d.ts.map +1 -0
- package/dist/components/ai.js +184 -0
- package/dist/components/charts.d.ts +143 -0
- package/dist/components/charts.d.ts.map +1 -0
- package/dist/components/charts.js +435 -0
- package/dist/components/data.d.ts +192 -0
- package/dist/components/data.d.ts.map +1 -0
- package/dist/components/data.js +581 -0
- package/dist/components/date.d.ts +73 -0
- package/dist/components/date.d.ts.map +1 -0
- package/dist/components/date.js +199 -0
- package/dist/components/enterprise.d.ts +246 -0
- package/dist/components/enterprise.d.ts.map +1 -0
- package/dist/components/enterprise.js +428 -0
- package/dist/components/form.d.ts +132 -0
- package/dist/components/form.d.ts.map +1 -0
- package/dist/components/form.js +380 -0
- package/dist/components/index.d.ts +173 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +107 -0
- package/dist/components/inputs.d.ts +169 -0
- package/dist/components/inputs.d.ts.map +1 -0
- package/dist/components/inputs.js +437 -0
- package/dist/components/layout.d.ts +224 -0
- package/dist/components/layout.d.ts.map +1 -0
- package/dist/components/layout.js +644 -0
- package/dist/components/overlay.d.ts +102 -0
- package/dist/components/overlay.d.ts.map +1 -0
- package/dist/components/overlay.js +318 -0
- package/dist/components/surfaces.d.ts +180 -0
- package/dist/components/surfaces.d.ts.map +1 -0
- package/dist/components/surfaces.js +423 -0
- package/dist/components/typography.d.ts +69 -0
- package/dist/components/typography.d.ts.map +1 -0
- package/dist/components/typography.js +206 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/portal.d.ts +3 -0
- package/dist/portal.d.ts.map +1 -0
- package/dist/portal.js +17 -0
- package/dist/theme/index.d.ts +31 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +258 -0
- package/dist/tokens/component.d.ts +124 -0
- package/dist/tokens/component.d.ts.map +1 -0
- package/dist/tokens/component.js +113 -0
- package/dist/tokens/index.d.ts +494 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/tokens/index.js +345 -0
- package/dist/tokens/primitives.d.ts +675 -0
- package/dist/tokens/primitives.d.ts.map +1 -0
- package/dist/tokens/primitives.js +356 -0
- package/dist/tokens/semantic.d.ts +252 -0
- package/dist/tokens/semantic.d.ts.map +1 -0
- package/dist/tokens/semantic.js +242 -0
- package/dist/tokens/themes.d.ts +18 -0
- package/dist/tokens/themes.d.ts.map +1 -0
- package/dist/tokens/themes.js +316 -0
- package/package.json +69 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HyperUI Overlay Components
|
|
3
|
+
* Dialog · AlertDialog · Sheet · Toast / useToast · Tooltip · Popover · DropdownMenu
|
|
4
|
+
*/
|
|
5
|
+
import { type Signal } from "@hyperpackai/hyperion";
|
|
6
|
+
import { type VNode } from "../theme/index.js";
|
|
7
|
+
export interface DialogProps {
|
|
8
|
+
open: boolean | Signal<boolean>;
|
|
9
|
+
onClose?: () => void;
|
|
10
|
+
title?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
size?: "sm" | "md" | "lg" | "xl" | "full";
|
|
13
|
+
closeOnBackdrop?: boolean;
|
|
14
|
+
closeOnEscape?: boolean;
|
|
15
|
+
showClose?: boolean;
|
|
16
|
+
footer?: unknown;
|
|
17
|
+
footerAlign?: "start" | "end" | "between";
|
|
18
|
+
class?: string;
|
|
19
|
+
children?: unknown;
|
|
20
|
+
}
|
|
21
|
+
export declare function Dialog(props: DialogProps): VNode;
|
|
22
|
+
export interface SheetProps {
|
|
23
|
+
open: boolean | Signal<boolean>;
|
|
24
|
+
side?: "right" | "left" | "top" | "bottom";
|
|
25
|
+
title?: string;
|
|
26
|
+
footer?: unknown;
|
|
27
|
+
onClose?: () => void;
|
|
28
|
+
closeOnBackdrop?: boolean;
|
|
29
|
+
children?: unknown;
|
|
30
|
+
class?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function Sheet(props: SheetProps): VNode;
|
|
33
|
+
export type ToastType = "default" | "success" | "error" | "warning" | "info";
|
|
34
|
+
export type ToastPosition = "top-right" | "top-left" | "top-center" | "bottom-right" | "bottom-left" | "bottom-center";
|
|
35
|
+
export interface ToastData {
|
|
36
|
+
id: string;
|
|
37
|
+
title: string;
|
|
38
|
+
description?: string;
|
|
39
|
+
type?: ToastType;
|
|
40
|
+
duration?: number;
|
|
41
|
+
action?: {
|
|
42
|
+
label: string;
|
|
43
|
+
onClick: () => void;
|
|
44
|
+
};
|
|
45
|
+
onClose?: () => void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Programmatic toast notifications. Call anywhere — no component needed.
|
|
49
|
+
*
|
|
50
|
+
* const toast = useToast();
|
|
51
|
+
* toast.success("Saved!", { description: "Changes saved to server." });
|
|
52
|
+
*/
|
|
53
|
+
export declare function useToast(): {
|
|
54
|
+
show: (data: Omit<ToastData, "id">) => string;
|
|
55
|
+
success: (title: string, opts?: Partial<ToastData>) => string;
|
|
56
|
+
error: (title: string, opts?: Partial<ToastData>) => string;
|
|
57
|
+
warning: (title: string, opts?: Partial<ToastData>) => string;
|
|
58
|
+
info: (title: string, opts?: Partial<ToastData>) => string;
|
|
59
|
+
dismiss: (id: string) => void;
|
|
60
|
+
dismissAll: () => void;
|
|
61
|
+
setPosition: (pos: ToastPosition) => void;
|
|
62
|
+
};
|
|
63
|
+
/** Place once near your app root to render toasts. */
|
|
64
|
+
export declare function ToastRegion(): VNode;
|
|
65
|
+
export interface TooltipProps {
|
|
66
|
+
content: string | unknown;
|
|
67
|
+
side?: "top" | "bottom" | "left" | "right";
|
|
68
|
+
open?: boolean | Signal<boolean>;
|
|
69
|
+
children?: unknown;
|
|
70
|
+
class?: string;
|
|
71
|
+
}
|
|
72
|
+
export declare function Tooltip(props: TooltipProps): VNode;
|
|
73
|
+
export interface PopoverProps {
|
|
74
|
+
open: boolean | Signal<boolean>;
|
|
75
|
+
side?: "top" | "bottom" | "left" | "right";
|
|
76
|
+
trigger?: unknown;
|
|
77
|
+
children?: unknown;
|
|
78
|
+
class?: string;
|
|
79
|
+
}
|
|
80
|
+
export declare function Popover(props: PopoverProps): VNode;
|
|
81
|
+
export interface MenuItem {
|
|
82
|
+
type?: "item" | "separator" | "label";
|
|
83
|
+
id?: string;
|
|
84
|
+
label?: string;
|
|
85
|
+
icon?: unknown;
|
|
86
|
+
shortcut?: string;
|
|
87
|
+
destructive?: boolean;
|
|
88
|
+
disabled?: boolean;
|
|
89
|
+
onClick?: () => void;
|
|
90
|
+
children?: MenuItem[];
|
|
91
|
+
}
|
|
92
|
+
export interface DropdownMenuProps {
|
|
93
|
+
open: boolean | Signal<boolean>;
|
|
94
|
+
items: MenuItem[];
|
|
95
|
+
align?: "left" | "right";
|
|
96
|
+
side?: "top" | "bottom";
|
|
97
|
+
trigger?: unknown;
|
|
98
|
+
onClose?: () => void;
|
|
99
|
+
class?: string;
|
|
100
|
+
}
|
|
101
|
+
export declare function DropdownMenu(props: DropdownMenuProps): VNode;
|
|
102
|
+
//# sourceMappingURL=overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/components/overlay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HyperUI Overlay Components
|
|
3
|
+
* Dialog · AlertDialog · Sheet · Toast / useToast · Tooltip · Popover · DropdownMenu
|
|
4
|
+
*/
|
|
5
|
+
import { signal } from "@hyperpackai/hyperion";
|
|
6
|
+
import { injectCSS, cn, h } from "../theme/index.js";
|
|
7
|
+
// ============================================================
|
|
8
|
+
// DIALOG
|
|
9
|
+
// ============================================================
|
|
10
|
+
const DIALOG_CSS = `
|
|
11
|
+
.hu-dialog-backdrop {
|
|
12
|
+
position: fixed; inset: 0; background: var(--hu-overlay);
|
|
13
|
+
z-index: var(--hu-z-backdrop); display: grid; place-items: center; padding: var(--hu-space-4);
|
|
14
|
+
animation: hu-fade-in var(--hu-duration-fast) var(--hu-ease);
|
|
15
|
+
}
|
|
16
|
+
.hu-dialog-backdrop--closing { animation: hu-fade-out var(--hu-duration-fast) var(--hu-ease) forwards; }
|
|
17
|
+
|
|
18
|
+
.hu-dialog {
|
|
19
|
+
background: var(--hu-bg); border-radius: var(--hu-radius-lg);
|
|
20
|
+
box-shadow: var(--hu-shadow-xl); width: 100%; max-width: 480px;
|
|
21
|
+
max-height: 90vh; overflow: auto; position: relative;
|
|
22
|
+
animation: hu-scale-in var(--hu-duration) var(--hu-ease-spring);
|
|
23
|
+
}
|
|
24
|
+
.hu-dialog--sm { max-width: 360px; }
|
|
25
|
+
.hu-dialog--md { max-width: 480px; }
|
|
26
|
+
.hu-dialog--lg { max-width: 640px; }
|
|
27
|
+
.hu-dialog--xl { max-width: 800px; }
|
|
28
|
+
.hu-dialog--full { max-width: 95vw; max-height: 95vh; }
|
|
29
|
+
|
|
30
|
+
.hu-dialog-header {
|
|
31
|
+
padding: var(--hu-space-6) var(--hu-space-6) 0;
|
|
32
|
+
display: flex; align-items: flex-start; justify-content: space-between; gap: var(--hu-space-4);
|
|
33
|
+
}
|
|
34
|
+
.hu-dialog-title { font-size: var(--hu-font-size-lg); font-weight: var(--hu-font-weight-semibold); color: var(--hu-text); line-height: 1.3; }
|
|
35
|
+
.hu-dialog-desc { font-size: var(--hu-font-size-sm); color: var(--hu-text-2); margin-top: var(--hu-space-1); }
|
|
36
|
+
.hu-dialog-close {
|
|
37
|
+
display: flex; align-items: center; justify-content: center;
|
|
38
|
+
width: 28px; height: 28px; border-radius: var(--hu-radius);
|
|
39
|
+
background: transparent; border: none; cursor: pointer; color: var(--hu-text-3);
|
|
40
|
+
transition: all var(--hu-duration) var(--hu-ease); flex-shrink: 0; padding: 0;
|
|
41
|
+
}
|
|
42
|
+
.hu-dialog-close:hover { background: var(--hu-bg-3); color: var(--hu-text); }
|
|
43
|
+
.hu-dialog-body { padding: var(--hu-space-4) var(--hu-space-6); }
|
|
44
|
+
.hu-dialog-footer {
|
|
45
|
+
padding: var(--hu-space-4) var(--hu-space-6) var(--hu-space-6);
|
|
46
|
+
display: flex; align-items: center; justify-content: flex-end; gap: var(--hu-space-2);
|
|
47
|
+
border-top: 1px solid var(--hu-border); margin-top: var(--hu-space-2);
|
|
48
|
+
}
|
|
49
|
+
.hu-dialog-footer--start { justify-content: flex-start; }
|
|
50
|
+
.hu-dialog-footer--between { justify-content: space-between; }
|
|
51
|
+
`;
|
|
52
|
+
export function Dialog(props) {
|
|
53
|
+
injectCSS("hu-dialog", DIALOG_CSS);
|
|
54
|
+
const { title, description, size = "md", closeOnBackdrop = true, closeOnEscape = true, showClose = true, footer, footerAlign = "end", onClose, children } = props;
|
|
55
|
+
const isOpen = typeof props.open === "object" && "peek" in props.open
|
|
56
|
+
? props.open.value
|
|
57
|
+
: props.open;
|
|
58
|
+
if (!isOpen)
|
|
59
|
+
return h("span", { "aria-hidden": "true" });
|
|
60
|
+
const handleKeyDown = (e) => {
|
|
61
|
+
if (closeOnEscape && e.key === "Escape")
|
|
62
|
+
onClose?.();
|
|
63
|
+
};
|
|
64
|
+
const closeSVG = `<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 2l12 12M14 2L2 14"/></svg>`;
|
|
65
|
+
return h("div", {
|
|
66
|
+
class: "hu-dialog-backdrop", role: "presentation",
|
|
67
|
+
onClick: closeOnBackdrop ? (e) => { if (e.target.classList.contains("hu-dialog-backdrop"))
|
|
68
|
+
onClose?.(); } : undefined,
|
|
69
|
+
onKeyDown: handleKeyDown
|
|
70
|
+
}, h("div", {
|
|
71
|
+
class: cn("hu-dialog", `hu-dialog--${size}`, props.class),
|
|
72
|
+
role: "dialog", "aria-modal": "true",
|
|
73
|
+
"aria-labelledby": title ? "hu-dialog-title" : undefined,
|
|
74
|
+
"aria-describedby": description ? "hu-dialog-description" : undefined
|
|
75
|
+
}, (title || showClose) && h("div", { class: "hu-dialog-header" }, title && h("div", {}, h("h2", { id: "hu-dialog-title", class: "hu-dialog-title" }, title), description && h("p", { id: "hu-dialog-description", class: "hu-dialog-desc" }, description)), showClose && h("button", {
|
|
76
|
+
class: "hu-dialog-close", onClick: onClose,
|
|
77
|
+
"aria-label": "Close dialog", innerHTML: closeSVG
|
|
78
|
+
})), h("div", { class: "hu-dialog-body" }, children), footer && h("div", { class: cn("hu-dialog-footer", `hu-dialog-footer--${footerAlign}`) }, footer)));
|
|
79
|
+
}
|
|
80
|
+
// ============================================================
|
|
81
|
+
// SHEET (Slide-in drawer)
|
|
82
|
+
// ============================================================
|
|
83
|
+
const SHEET_CSS = `
|
|
84
|
+
.hu-sheet-backdrop {
|
|
85
|
+
position: fixed; inset: 0; background: var(--hu-overlay);
|
|
86
|
+
z-index: var(--hu-z-backdrop);
|
|
87
|
+
animation: hu-fade-in var(--hu-duration-fast) var(--hu-ease);
|
|
88
|
+
}
|
|
89
|
+
.hu-sheet {
|
|
90
|
+
position: fixed; background: var(--hu-bg); box-shadow: var(--hu-shadow-xl);
|
|
91
|
+
z-index: var(--hu-z-modal); overflow: auto; display: flex; flex-direction: column;
|
|
92
|
+
}
|
|
93
|
+
.hu-sheet--right { top: 0; right: 0; bottom: 0; width: 400px; max-width: 90vw; border-radius: var(--hu-radius-lg) 0 0 var(--hu-radius-lg); animation: hu-slide-in-right var(--hu-duration) var(--hu-ease-out); }
|
|
94
|
+
.hu-sheet--left { top: 0; left: 0; bottom: 0; width: 400px; max-width: 90vw; border-radius: 0 var(--hu-radius-lg) var(--hu-radius-lg) 0; animation: hu-slide-in-left var(--hu-duration) var(--hu-ease-out); }
|
|
95
|
+
.hu-sheet--bottom { bottom: 0; left: 0; right: 0; max-height: 90vh; border-radius: var(--hu-radius-lg) var(--hu-radius-lg) 0 0; animation: hu-slide-down var(--hu-duration) var(--hu-ease-out); }
|
|
96
|
+
.hu-sheet--top { top: 0; left: 0; right: 0; max-height: 90vh; border-radius: 0 0 var(--hu-radius-lg) var(--hu-radius-lg); animation: hu-slide-up var(--hu-duration) var(--hu-ease-out); }
|
|
97
|
+
.hu-sheet-header { padding: var(--hu-space-5) var(--hu-space-6); border-bottom: 1px solid var(--hu-border); display: flex; align-items: center; justify-content: space-between; }
|
|
98
|
+
.hu-sheet-title { font-size: var(--hu-font-size-md); font-weight: var(--hu-font-weight-semibold); }
|
|
99
|
+
.hu-sheet-body { padding: var(--hu-space-6); flex: 1; overflow: auto; }
|
|
100
|
+
.hu-sheet-footer { padding: var(--hu-space-4) var(--hu-space-6); border-top: 1px solid var(--hu-border); }
|
|
101
|
+
.hu-sheet-close { display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--hu-radius);background:transparent;border:none;cursor:pointer;color:var(--hu-text-3);transition:all var(--hu-duration) var(--hu-ease); }
|
|
102
|
+
.hu-sheet-close:hover { background:var(--hu-bg-3);color:var(--hu-text); }
|
|
103
|
+
`;
|
|
104
|
+
export function Sheet(props) {
|
|
105
|
+
injectCSS("hu-sheet", SHEET_CSS);
|
|
106
|
+
const { side = "right", title, footer, onClose, closeOnBackdrop = true, children } = props;
|
|
107
|
+
const isOpen = typeof props.open === "object" && "peek" in props.open
|
|
108
|
+
? props.open.value
|
|
109
|
+
: props.open;
|
|
110
|
+
if (!isOpen)
|
|
111
|
+
return h("span", { "aria-hidden": "true" });
|
|
112
|
+
const closeSVG = `<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 2l12 12M14 2L2 14"/></svg>`;
|
|
113
|
+
return h("div", {}, h("div", {
|
|
114
|
+
class: "hu-sheet-backdrop",
|
|
115
|
+
onClick: closeOnBackdrop ? onClose : undefined
|
|
116
|
+
}), h("div", { class: cn("hu-sheet", `hu-sheet--${side}`, props.class), role: "dialog", "aria-modal": "true" }, title && h("div", { class: "hu-sheet-header" }, h("h2", { class: "hu-sheet-title" }, title), h("button", { class: "hu-sheet-close", onClick: onClose, "aria-label": "Close", innerHTML: closeSVG })), h("div", { class: "hu-sheet-body" }, children), footer && h("div", { class: "hu-sheet-footer" }, footer)));
|
|
117
|
+
}
|
|
118
|
+
// ============================================================
|
|
119
|
+
// TOAST
|
|
120
|
+
// ============================================================
|
|
121
|
+
const TOAST_CSS = `
|
|
122
|
+
.hu-toast-region {
|
|
123
|
+
position: fixed; z-index: var(--hu-z-toast); display: flex; flex-direction: column; gap: var(--hu-space-2);
|
|
124
|
+
pointer-events: none; padding: var(--hu-space-4);
|
|
125
|
+
max-width: min(420px, calc(100vw - 32px));
|
|
126
|
+
}
|
|
127
|
+
.hu-toast-region--top-right { top: 0; right: 0; }
|
|
128
|
+
.hu-toast-region--top-left { top: 0; left: 0; }
|
|
129
|
+
.hu-toast-region--top-center { top: 0; left: 50%; transform: translateX(-50%); }
|
|
130
|
+
.hu-toast-region--bottom-right { bottom: 0; right: 0; flex-direction: column-reverse; }
|
|
131
|
+
.hu-toast-region--bottom-left { bottom: 0; left: 0; flex-direction: column-reverse; }
|
|
132
|
+
.hu-toast-region--bottom-center{ bottom: 0; left: 50%; transform: translateX(-50%); flex-direction: column-reverse; }
|
|
133
|
+
|
|
134
|
+
.hu-toast {
|
|
135
|
+
pointer-events: all; display: flex; align-items: flex-start; gap: var(--hu-space-3);
|
|
136
|
+
padding: var(--hu-space-4); border-radius: var(--hu-radius-md);
|
|
137
|
+
background: var(--hu-bg); border: 1px solid var(--hu-border);
|
|
138
|
+
box-shadow: var(--hu-shadow-lg);
|
|
139
|
+
animation: hu-slide-up var(--hu-duration) var(--hu-ease-spring);
|
|
140
|
+
min-width: 280px;
|
|
141
|
+
}
|
|
142
|
+
.hu-toast--success { border-left: 4px solid var(--hu-success); }
|
|
143
|
+
.hu-toast--error { border-left: 4px solid var(--hu-error); }
|
|
144
|
+
.hu-toast--warning { border-left: 4px solid var(--hu-warning); }
|
|
145
|
+
.hu-toast--info { border-left: 4px solid var(--hu-info); }
|
|
146
|
+
|
|
147
|
+
.hu-toast-icon { flex-shrink: 0; width: 20px; height: 20px; margin-top: 1px; }
|
|
148
|
+
.hu-toast-icon--success { color: var(--hu-success); }
|
|
149
|
+
.hu-toast-icon--error { color: var(--hu-error); }
|
|
150
|
+
.hu-toast-icon--warning { color: var(--hu-warning); }
|
|
151
|
+
.hu-toast-icon--info { color: var(--hu-info); }
|
|
152
|
+
|
|
153
|
+
.hu-toast-content { flex: 1; min-width: 0; }
|
|
154
|
+
.hu-toast-title { font-size: var(--hu-font-size-sm); font-weight: var(--hu-font-weight-semibold); color: var(--hu-text); }
|
|
155
|
+
.hu-toast-desc { font-size: var(--hu-font-size-xs); color: var(--hu-text-2); margin-top: 2px; }
|
|
156
|
+
.hu-toast-action { margin-top: var(--hu-space-2); }
|
|
157
|
+
.hu-toast-close {
|
|
158
|
+
flex-shrink: 0; width: 20px; height: 20px; display:flex;align-items:center;justify-content:center;
|
|
159
|
+
border-radius: var(--hu-radius-xs); background:transparent; border:none; cursor:pointer; color:var(--hu-text-3);
|
|
160
|
+
transition: all var(--hu-duration) var(--hu-ease); padding:0;
|
|
161
|
+
}
|
|
162
|
+
.hu-toast-close:hover { background: var(--hu-bg-3); color: var(--hu-text); }
|
|
163
|
+
`;
|
|
164
|
+
const _toasts = signal([]);
|
|
165
|
+
const _toastPosition = signal("top-right");
|
|
166
|
+
let _toastIdCounter = 0;
|
|
167
|
+
const TOAST_ICONS = {
|
|
168
|
+
default: "",
|
|
169
|
+
success: `<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z"/></svg>`,
|
|
170
|
+
error: `<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z"/></svg>`,
|
|
171
|
+
warning: `<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z"/></svg>`,
|
|
172
|
+
info: `<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z"/></svg>`
|
|
173
|
+
};
|
|
174
|
+
/**
|
|
175
|
+
* Programmatic toast notifications. Call anywhere — no component needed.
|
|
176
|
+
*
|
|
177
|
+
* const toast = useToast();
|
|
178
|
+
* toast.success("Saved!", { description: "Changes saved to server." });
|
|
179
|
+
*/
|
|
180
|
+
export function useToast() {
|
|
181
|
+
injectCSS("hu-toast", TOAST_CSS);
|
|
182
|
+
const show = (data) => {
|
|
183
|
+
const id = `toast-${++_toastIdCounter}`;
|
|
184
|
+
const toast = { id, duration: 5000, ...data };
|
|
185
|
+
_toasts.value = [..._toasts.value, toast];
|
|
186
|
+
if (toast.duration && toast.duration > 0) {
|
|
187
|
+
setTimeout(() => dismiss(id), toast.duration);
|
|
188
|
+
}
|
|
189
|
+
return id;
|
|
190
|
+
};
|
|
191
|
+
const dismiss = (id) => {
|
|
192
|
+
_toasts.value = _toasts.value.filter((t) => t.id !== id);
|
|
193
|
+
};
|
|
194
|
+
const shorthand = (type) => (title, opts) => show({ title, type, ...opts });
|
|
195
|
+
return {
|
|
196
|
+
show, dismiss,
|
|
197
|
+
success: shorthand("success"),
|
|
198
|
+
error: shorthand("error"),
|
|
199
|
+
warning: shorthand("warning"),
|
|
200
|
+
info: shorthand("info"),
|
|
201
|
+
dismissAll: () => { _toasts.value = []; },
|
|
202
|
+
setPosition: (pos) => { _toastPosition.value = pos; }
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
/** Place once near your app root to render toasts. */
|
|
206
|
+
export function ToastRegion() {
|
|
207
|
+
injectCSS("hu-toast", TOAST_CSS);
|
|
208
|
+
const toasts = _toasts.value;
|
|
209
|
+
const position = _toastPosition.value;
|
|
210
|
+
const dismiss = (id) => {
|
|
211
|
+
_toasts.value = _toasts.value.filter((t) => t.id !== id);
|
|
212
|
+
};
|
|
213
|
+
const closeSVG = `<svg viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M1 1l10 10M11 1L1 11"/></svg>`;
|
|
214
|
+
return h("div", { class: cn("hu-toast-region", `hu-toast-region--${position}`), role: "region", "aria-label": "Notifications" }, ...toasts.map((t) => h("div", { key: t.id, class: cn("hu-toast", t.type !== "default" && `hu-toast--${t.type}`), role: "alert" }, t.type && t.type !== "default" && h("span", { class: cn("hu-toast-icon", `hu-toast-icon--${t.type}`), innerHTML: TOAST_ICONS[t.type], "aria-hidden": "true" }), h("div", { class: "hu-toast-content" }, h("div", { class: "hu-toast-title" }, t.title), t.description && h("div", { class: "hu-toast-desc" }, t.description), t.action && h("div", { class: "hu-toast-action" }, h("button", { onClick: () => { t.action.onClick(); dismiss(t.id); }, style: "font-size:12px;color:var(--hu-primary);background:none;border:none;cursor:pointer;padding:0;font-weight:500;" }, t.action.label))), h("button", { class: "hu-toast-close", onClick: () => { dismiss(t.id); t.onClose?.(); }, "aria-label": "Dismiss", innerHTML: closeSVG }))));
|
|
215
|
+
}
|
|
216
|
+
// ============================================================
|
|
217
|
+
// TOOLTIP
|
|
218
|
+
// ============================================================
|
|
219
|
+
const TOOLTIP_CSS = `
|
|
220
|
+
.hu-tooltip-wrap { position: relative; display: inline-flex; }
|
|
221
|
+
.hu-tooltip-content {
|
|
222
|
+
position: absolute; z-index: var(--hu-z-tooltip); white-space: nowrap;
|
|
223
|
+
background: var(--hu-text); color: var(--hu-bg); font-size: var(--hu-font-size-xs);
|
|
224
|
+
font-weight: var(--hu-font-weight-medium); padding: 4px 8px; border-radius: var(--hu-radius-sm);
|
|
225
|
+
pointer-events: none; box-shadow: var(--hu-shadow-md);
|
|
226
|
+
animation: hu-scale-in var(--hu-duration-fast) var(--hu-ease);
|
|
227
|
+
}
|
|
228
|
+
.hu-tooltip-content--top { bottom: calc(100% + 6px); left: 50%; transform: translateX(-50%); }
|
|
229
|
+
.hu-tooltip-content--bottom { top: calc(100% + 6px); left: 50%; transform: translateX(-50%); }
|
|
230
|
+
.hu-tooltip-content--left { right: calc(100% + 6px); top: 50%; transform: translateY(-50%); }
|
|
231
|
+
.hu-tooltip-content--right { left: calc(100% + 6px); top: 50%; transform: translateY(-50%); }
|
|
232
|
+
`;
|
|
233
|
+
export function Tooltip(props) {
|
|
234
|
+
injectCSS("hu-tooltip", TOOLTIP_CSS);
|
|
235
|
+
const { content, side = "top", children } = props;
|
|
236
|
+
const isOpen = typeof props.open === "object" && "peek" in props.open
|
|
237
|
+
? props.open.value
|
|
238
|
+
: (props.open ?? false);
|
|
239
|
+
return h("div", { class: cn("hu-tooltip-wrap", props.class) }, children, isOpen && h("div", { class: cn("hu-tooltip-content", `hu-tooltip-content--${side}`), role: "tooltip" }, content));
|
|
240
|
+
}
|
|
241
|
+
// ============================================================
|
|
242
|
+
// POPOVER
|
|
243
|
+
// ============================================================
|
|
244
|
+
const POPOVER_CSS = `
|
|
245
|
+
.hu-popover-wrap { position: relative; display: inline-flex; }
|
|
246
|
+
.hu-popover-content {
|
|
247
|
+
position: absolute; z-index: var(--hu-z-popover); min-width: 200px;
|
|
248
|
+
background: var(--hu-bg); border: 1px solid var(--hu-border);
|
|
249
|
+
border-radius: var(--hu-radius-md); box-shadow: var(--hu-shadow-lg); padding: var(--hu-space-4);
|
|
250
|
+
animation: hu-scale-in var(--hu-duration-fast) var(--hu-ease);
|
|
251
|
+
}
|
|
252
|
+
.hu-popover-content--top { bottom: calc(100% + 6px); left: 0; }
|
|
253
|
+
.hu-popover-content--bottom { top: calc(100% + 6px); left: 0; }
|
|
254
|
+
.hu-popover-content--left { right: calc(100% + 6px); top: 0; }
|
|
255
|
+
.hu-popover-content--right { left: calc(100% + 6px); top: 0; }
|
|
256
|
+
`;
|
|
257
|
+
export function Popover(props) {
|
|
258
|
+
injectCSS("hu-popover", POPOVER_CSS);
|
|
259
|
+
const { side = "bottom", trigger, children } = props;
|
|
260
|
+
const isOpen = typeof props.open === "object" && "peek" in props.open
|
|
261
|
+
? props.open.value
|
|
262
|
+
: props.open;
|
|
263
|
+
return h("div", { class: cn("hu-popover-wrap", props.class) }, trigger, isOpen && h("div", { class: cn("hu-popover-content", `hu-popover-content--${side}`) }, children));
|
|
264
|
+
}
|
|
265
|
+
// ============================================================
|
|
266
|
+
// DROPDOWN MENU
|
|
267
|
+
// ============================================================
|
|
268
|
+
const DROPDOWN_CSS = `
|
|
269
|
+
.hu-dropdown { position: relative; display: inline-block; }
|
|
270
|
+
.hu-dropdown-menu {
|
|
271
|
+
position: absolute; z-index: var(--hu-z-dropdown); min-width: 180px;
|
|
272
|
+
background: var(--hu-bg); border: 1px solid var(--hu-border);
|
|
273
|
+
border-radius: var(--hu-radius-md); box-shadow: var(--hu-shadow-lg);
|
|
274
|
+
padding: var(--hu-space-1); outline: none;
|
|
275
|
+
animation: hu-scale-in var(--hu-duration-fast) var(--hu-ease);
|
|
276
|
+
}
|
|
277
|
+
.hu-dropdown-menu--top-left { bottom: calc(100% + 4px); left: 0; transform-origin: bottom left; }
|
|
278
|
+
.hu-dropdown-menu--top-right { bottom: calc(100% + 4px); right: 0; transform-origin: bottom right; }
|
|
279
|
+
.hu-dropdown-menu--bottom-left { top: calc(100% + 4px); left: 0; transform-origin: top left; }
|
|
280
|
+
.hu-dropdown-menu--bottom-right { top: calc(100% + 4px); right: 0; transform-origin: top right; }
|
|
281
|
+
|
|
282
|
+
.hu-dropdown-item {
|
|
283
|
+
display: flex; align-items: center; gap: var(--hu-space-2); width: 100%;
|
|
284
|
+
padding: 7px var(--hu-space-3); border-radius: var(--hu-radius-sm);
|
|
285
|
+
font-size: var(--hu-font-size-sm); color: var(--hu-text);
|
|
286
|
+
cursor: pointer; border: none; background: transparent; text-align: left;
|
|
287
|
+
transition: background var(--hu-duration-fast) var(--hu-ease);
|
|
288
|
+
}
|
|
289
|
+
.hu-dropdown-item:hover { background: var(--hu-bg-3); }
|
|
290
|
+
.hu-dropdown-item:focus-visible { outline: none; background: var(--hu-bg-3); }
|
|
291
|
+
.hu-dropdown-item--destructive { color: var(--hu-error); }
|
|
292
|
+
.hu-dropdown-item--destructive:hover { background: var(--hu-error-bg); }
|
|
293
|
+
.hu-dropdown-item--disabled { opacity: .5; pointer-events: none; }
|
|
294
|
+
.hu-dropdown-item-icon { width: 16px; height: 16px; flex-shrink: 0; opacity: .7; }
|
|
295
|
+
.hu-dropdown-item-shortcut { margin-left: auto; font-size: var(--hu-font-size-xs); color: var(--hu-text-3); font-family: var(--hu-font-mono); }
|
|
296
|
+
|
|
297
|
+
.hu-dropdown-separator { height: 1px; background: var(--hu-border); margin: var(--hu-space-1) 0; }
|
|
298
|
+
.hu-dropdown-label { padding: 6px var(--hu-space-3) 4px; font-size: var(--hu-font-size-xs); font-weight: var(--hu-font-weight-semibold); color: var(--hu-text-3); text-transform: uppercase; letter-spacing: .05em; }
|
|
299
|
+
`;
|
|
300
|
+
export function DropdownMenu(props) {
|
|
301
|
+
injectCSS("hu-dropdown", DROPDOWN_CSS);
|
|
302
|
+
const { items, align = "left", side = "bottom", trigger, onClose } = props;
|
|
303
|
+
const isOpen = typeof props.open === "object" && "peek" in props.open
|
|
304
|
+
? props.open.value
|
|
305
|
+
: props.open;
|
|
306
|
+
const menuClass = `hu-dropdown-menu--${side}-${align}`;
|
|
307
|
+
return h("div", { class: cn("hu-dropdown", props.class) }, trigger, isOpen && h("ul", { class: cn("hu-dropdown-menu", menuClass), role: "menu" }, ...items.map((item, i) => {
|
|
308
|
+
if (item.type === "separator")
|
|
309
|
+
return h("li", { key: `sep-${i}`, class: "hu-dropdown-separator", role: "separator" });
|
|
310
|
+
if (item.type === "label")
|
|
311
|
+
return h("li", { key: item.label, class: "hu-dropdown-label", role: "presentation" }, item.label);
|
|
312
|
+
return h("li", { key: item.id ?? item.label, role: "none" }, h("button", {
|
|
313
|
+
class: cn("hu-dropdown-item", item.destructive && "hu-dropdown-item--destructive", item.disabled && "hu-dropdown-item--disabled"),
|
|
314
|
+
role: "menuitem", disabled: item.disabled,
|
|
315
|
+
onClick: () => { item.onClick?.(); onClose?.(); }
|
|
316
|
+
}, item.icon && h("span", { class: "hu-dropdown-item-icon", "aria-hidden": "true" }, item.icon), item.label, item.shortcut && h("span", { class: "hu-dropdown-item-shortcut" }, item.shortcut)));
|
|
317
|
+
})));
|
|
318
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HyperUI Surface & Layout Components
|
|
3
|
+
* Paper · Box · Container · Stack · Grid · ImageList · List
|
|
4
|
+
*/
|
|
5
|
+
import { type VNode } from "../theme/index.js";
|
|
6
|
+
export type PaperElevation = 0 | 1 | 2 | 3 | 4 | 5;
|
|
7
|
+
export interface PaperProps {
|
|
8
|
+
elevation?: PaperElevation;
|
|
9
|
+
variant?: "elevation" | "outlined";
|
|
10
|
+
square?: boolean;
|
|
11
|
+
component?: string;
|
|
12
|
+
class?: string;
|
|
13
|
+
children?: unknown;
|
|
14
|
+
}
|
|
15
|
+
export declare function Paper(props: PaperProps): VNode;
|
|
16
|
+
export interface BoxProps {
|
|
17
|
+
component?: string;
|
|
18
|
+
display?: string;
|
|
19
|
+
flexDirection?: string;
|
|
20
|
+
alignItems?: string;
|
|
21
|
+
justifyContent?: string;
|
|
22
|
+
gap?: string | number;
|
|
23
|
+
padding?: string | number;
|
|
24
|
+
margin?: string | number;
|
|
25
|
+
width?: string | number;
|
|
26
|
+
height?: string | number;
|
|
27
|
+
overflow?: string;
|
|
28
|
+
position?: string;
|
|
29
|
+
style?: string;
|
|
30
|
+
class?: string;
|
|
31
|
+
onClick?: (e: MouseEvent) => void;
|
|
32
|
+
children?: unknown;
|
|
33
|
+
}
|
|
34
|
+
export declare function Box(props: BoxProps): VNode;
|
|
35
|
+
export type ContainerMaxWidth = "xs" | "sm" | "md" | "lg" | "xl" | "fluid";
|
|
36
|
+
export interface ContainerProps {
|
|
37
|
+
maxWidth?: ContainerMaxWidth;
|
|
38
|
+
disableGutters?: boolean;
|
|
39
|
+
fixed?: boolean;
|
|
40
|
+
class?: string;
|
|
41
|
+
children?: unknown;
|
|
42
|
+
}
|
|
43
|
+
export declare function Container(props: ContainerProps): VNode;
|
|
44
|
+
export type StackDirection = "row" | "column";
|
|
45
|
+
export type StackAlign = "start" | "center" | "end" | "stretch";
|
|
46
|
+
export type StackJustify = "start" | "center" | "end" | "between" | "around" | "evenly";
|
|
47
|
+
export interface StackProps {
|
|
48
|
+
direction?: StackDirection;
|
|
49
|
+
spacing?: string | number;
|
|
50
|
+
alignItems?: StackAlign;
|
|
51
|
+
justifyContent?: StackJustify;
|
|
52
|
+
flexWrap?: boolean;
|
|
53
|
+
divider?: boolean;
|
|
54
|
+
useFlexGap?: boolean;
|
|
55
|
+
class?: string;
|
|
56
|
+
children?: unknown;
|
|
57
|
+
}
|
|
58
|
+
export declare function Stack(props: StackProps): VNode;
|
|
59
|
+
export interface GridProps {
|
|
60
|
+
container?: boolean;
|
|
61
|
+
item?: boolean;
|
|
62
|
+
columns?: number;
|
|
63
|
+
spacing?: number;
|
|
64
|
+
columnSpacing?: number;
|
|
65
|
+
rowSpacing?: number;
|
|
66
|
+
xs?: number | "auto" | true;
|
|
67
|
+
sm?: number | "auto" | true;
|
|
68
|
+
md?: number | "auto" | true;
|
|
69
|
+
lg?: number | "auto" | true;
|
|
70
|
+
xl?: number | "auto" | true;
|
|
71
|
+
zeroMinWidth?: boolean;
|
|
72
|
+
class?: string;
|
|
73
|
+
children?: unknown;
|
|
74
|
+
}
|
|
75
|
+
export declare function Grid(props: GridProps): VNode;
|
|
76
|
+
export interface ImageListItemProps {
|
|
77
|
+
src: string;
|
|
78
|
+
alt?: string;
|
|
79
|
+
title?: string;
|
|
80
|
+
subtitle?: string;
|
|
81
|
+
titleBarPosition?: "top" | "bottom";
|
|
82
|
+
cols?: number;
|
|
83
|
+
rows?: number;
|
|
84
|
+
onClick?: (e: MouseEvent) => void;
|
|
85
|
+
}
|
|
86
|
+
export interface ImageListProps {
|
|
87
|
+
cols?: number;
|
|
88
|
+
rowHeight?: number | "auto";
|
|
89
|
+
gap?: number;
|
|
90
|
+
variant?: "standard" | "masonry" | "quilted";
|
|
91
|
+
items: ImageListItemProps[];
|
|
92
|
+
class?: string;
|
|
93
|
+
}
|
|
94
|
+
export declare function ImageList(props: ImageListProps): VNode;
|
|
95
|
+
export interface ListSubheaderProps {
|
|
96
|
+
sticky?: boolean;
|
|
97
|
+
class?: string;
|
|
98
|
+
children?: unknown;
|
|
99
|
+
}
|
|
100
|
+
export declare function ListSubheader(props: ListSubheaderProps): VNode;
|
|
101
|
+
export interface ListProps {
|
|
102
|
+
dense?: boolean;
|
|
103
|
+
bordered?: boolean;
|
|
104
|
+
disablePadding?: boolean;
|
|
105
|
+
subheader?: unknown;
|
|
106
|
+
class?: string;
|
|
107
|
+
children?: unknown;
|
|
108
|
+
}
|
|
109
|
+
export declare function List(props: ListProps): VNode;
|
|
110
|
+
export interface ListItemProps {
|
|
111
|
+
button?: boolean;
|
|
112
|
+
selected?: boolean;
|
|
113
|
+
disabled?: boolean;
|
|
114
|
+
divider?: boolean;
|
|
115
|
+
alignItems?: "flex-start" | "center";
|
|
116
|
+
secondaryAction?: unknown;
|
|
117
|
+
onClick?: (e: MouseEvent) => void;
|
|
118
|
+
class?: string;
|
|
119
|
+
children?: unknown;
|
|
120
|
+
}
|
|
121
|
+
export declare function ListItem(props: ListItemProps): VNode;
|
|
122
|
+
export interface ListItemIconProps {
|
|
123
|
+
class?: string;
|
|
124
|
+
children?: unknown;
|
|
125
|
+
}
|
|
126
|
+
export declare function ListItemIcon(props: ListItemIconProps): VNode;
|
|
127
|
+
export interface ListItemTextProps {
|
|
128
|
+
primary?: unknown;
|
|
129
|
+
secondary?: unknown;
|
|
130
|
+
class?: string;
|
|
131
|
+
}
|
|
132
|
+
export declare function ListItemText(props: ListItemTextProps): VNode;
|
|
133
|
+
export interface PageLayoutProps {
|
|
134
|
+
header?: unknown;
|
|
135
|
+
footer?: unknown;
|
|
136
|
+
contained?: boolean;
|
|
137
|
+
stickyHeader?: boolean;
|
|
138
|
+
maxWidth?: string | number;
|
|
139
|
+
padding?: string | number;
|
|
140
|
+
class?: string;
|
|
141
|
+
children?: unknown;
|
|
142
|
+
}
|
|
143
|
+
export declare function PageLayout(props: PageLayoutProps): VNode;
|
|
144
|
+
export interface DashboardLayoutProps {
|
|
145
|
+
header?: unknown;
|
|
146
|
+
sidebar?: unknown;
|
|
147
|
+
aside?: unknown;
|
|
148
|
+
sidebarWidth?: string | number;
|
|
149
|
+
collapsedSidebarWidth?: string | number;
|
|
150
|
+
asideWidth?: string | number;
|
|
151
|
+
collapsed?: boolean;
|
|
152
|
+
padding?: string | number;
|
|
153
|
+
class?: string;
|
|
154
|
+
children?: unknown;
|
|
155
|
+
}
|
|
156
|
+
export declare function DashboardLayout(props: DashboardLayoutProps): VNode;
|
|
157
|
+
export interface SplitPaneProps {
|
|
158
|
+
orientation?: "horizontal" | "vertical";
|
|
159
|
+
primarySize?: string | number;
|
|
160
|
+
separatorLabel?: string;
|
|
161
|
+
class?: string;
|
|
162
|
+
start: unknown;
|
|
163
|
+
end: unknown;
|
|
164
|
+
}
|
|
165
|
+
export declare function SplitPane(props: SplitPaneProps): VNode;
|
|
166
|
+
export interface ResizablePanelProps {
|
|
167
|
+
title?: unknown;
|
|
168
|
+
actions?: unknown;
|
|
169
|
+
width?: string | number;
|
|
170
|
+
height?: string | number;
|
|
171
|
+
minWidth?: string | number;
|
|
172
|
+
maxWidth?: string | number;
|
|
173
|
+
minHeight?: string | number;
|
|
174
|
+
maxHeight?: string | number;
|
|
175
|
+
resize?: "none" | "both" | "horizontal" | "vertical";
|
|
176
|
+
class?: string;
|
|
177
|
+
children?: unknown;
|
|
178
|
+
}
|
|
179
|
+
export declare function ResizablePanel(props: ResizablePanelProps): VNode;
|
|
180
|
+
//# sourceMappingURL=surfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surfaces.d.ts","sourceRoot":"","sources":["../../src/components/surfaces.ts"],"names":[],"mappings":"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"}
|