@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.
Files changed (321) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +82 -0
  3. package/dist/components/Accordion/index.d.ts +17 -0
  4. package/dist/components/Accordion/index.d.ts.map +1 -0
  5. package/dist/components/Accordion/index.js +46 -0
  6. package/dist/components/Alert/index.d.ts +13 -0
  7. package/dist/components/Alert/index.d.ts.map +1 -0
  8. package/dist/components/Alert/index.js +46 -0
  9. package/dist/components/AppBar/index.d.ts +19 -0
  10. package/dist/components/AppBar/index.d.ts.map +1 -0
  11. package/dist/components/AppBar/index.js +48 -0
  12. package/dist/components/AspectRatio/index.d.ts +8 -0
  13. package/dist/components/AspectRatio/index.d.ts.map +1 -0
  14. package/dist/components/AspectRatio/index.js +32 -0
  15. package/dist/components/Autocomplete/index.d.ts +21 -0
  16. package/dist/components/Autocomplete/index.d.ts.map +1 -0
  17. package/dist/components/Autocomplete/index.js +94 -0
  18. package/dist/components/Avatar/index.d.ts +12 -0
  19. package/dist/components/Avatar/index.d.ts.map +1 -0
  20. package/dist/components/Avatar/index.js +32 -0
  21. package/dist/components/AvatarGroup/index.d.ts +9 -0
  22. package/dist/components/AvatarGroup/index.d.ts.map +1 -0
  23. package/dist/components/AvatarGroup/index.js +24 -0
  24. package/dist/components/Backdrop/index.d.ts +10 -0
  25. package/dist/components/Backdrop/index.d.ts.map +1 -0
  26. package/dist/components/Backdrop/index.js +25 -0
  27. package/dist/components/Badge/index.d.ts +10 -0
  28. package/dist/components/Badge/index.d.ts.map +1 -0
  29. package/dist/components/Badge/index.js +30 -0
  30. package/dist/components/BottomNavigation/index.d.ts +16 -0
  31. package/dist/components/BottomNavigation/index.d.ts.map +1 -0
  32. package/dist/components/BottomNavigation/index.js +43 -0
  33. package/dist/components/Box/index.d.ts +21 -0
  34. package/dist/components/Box/index.d.ts.map +1 -0
  35. package/dist/components/Box/index.js +30 -0
  36. package/dist/components/Breadcrumb/index.d.ts +13 -0
  37. package/dist/components/Breadcrumb/index.d.ts.map +1 -0
  38. package/dist/components/Breadcrumb/index.js +19 -0
  39. package/dist/components/Button/index.d.ts +22 -0
  40. package/dist/components/Button/index.d.ts.map +1 -0
  41. package/dist/components/Button/index.js +93 -0
  42. package/dist/components/ButtonGroup/index.d.ts +9 -0
  43. package/dist/components/ButtonGroup/index.d.ts.map +1 -0
  44. package/dist/components/ButtonGroup/index.js +27 -0
  45. package/dist/components/Card/index.d.ts +14 -0
  46. package/dist/components/Card/index.d.ts.map +1 -0
  47. package/dist/components/Card/index.js +33 -0
  48. package/dist/components/Checkbox/index.d.ts +17 -0
  49. package/dist/components/Checkbox/index.d.ts.map +1 -0
  50. package/dist/components/Checkbox/index.js +42 -0
  51. package/dist/components/Chip/index.d.ts +18 -0
  52. package/dist/components/Chip/index.d.ts.map +1 -0
  53. package/dist/components/Chip/index.js +60 -0
  54. package/dist/components/CircularProgress/index.d.ts +14 -0
  55. package/dist/components/CircularProgress/index.d.ts.map +1 -0
  56. package/dist/components/CircularProgress/index.js +58 -0
  57. package/dist/components/ClickAwayListener/index.d.ts +11 -0
  58. package/dist/components/ClickAwayListener/index.d.ts.map +1 -0
  59. package/dist/components/ClickAwayListener/index.js +31 -0
  60. package/dist/components/Code/index.d.ts +9 -0
  61. package/dist/components/Code/index.d.ts.map +1 -0
  62. package/dist/components/Code/index.js +50 -0
  63. package/dist/components/Collapse/index.d.ts +11 -0
  64. package/dist/components/Collapse/index.d.ts.map +1 -0
  65. package/dist/components/Collapse/index.js +30 -0
  66. package/dist/components/CommandPalette/index.d.ts +26 -0
  67. package/dist/components/CommandPalette/index.d.ts.map +1 -0
  68. package/dist/components/CommandPalette/index.js +141 -0
  69. package/dist/components/Container/index.d.ts +11 -0
  70. package/dist/components/Container/index.d.ts.map +1 -0
  71. package/dist/components/Container/index.js +18 -0
  72. package/dist/components/DashboardLayout/index.d.ts +15 -0
  73. package/dist/components/DashboardLayout/index.d.ts.map +1 -0
  74. package/dist/components/DashboardLayout/index.js +67 -0
  75. package/dist/components/DataTable/index.d.ts +27 -0
  76. package/dist/components/DataTable/index.d.ts.map +1 -0
  77. package/dist/components/DataTable/index.js +59 -0
  78. package/dist/components/Dialog/index.d.ts +19 -0
  79. package/dist/components/Dialog/index.d.ts.map +1 -0
  80. package/dist/components/Dialog/index.js +96 -0
  81. package/dist/components/Divider/index.d.ts +13 -0
  82. package/dist/components/Divider/index.d.ts.map +1 -0
  83. package/dist/components/Divider/index.js +40 -0
  84. package/dist/components/Drawer/index.d.ts +17 -0
  85. package/dist/components/Drawer/index.d.ts.map +1 -0
  86. package/dist/components/Drawer/index.js +77 -0
  87. package/dist/components/DropdownMenu/index.d.ts +25 -0
  88. package/dist/components/DropdownMenu/index.d.ts.map +1 -0
  89. package/dist/components/DropdownMenu/index.js +67 -0
  90. package/dist/components/EmptyState/index.d.ts +11 -0
  91. package/dist/components/EmptyState/index.d.ts.map +1 -0
  92. package/dist/components/EmptyState/index.js +53 -0
  93. package/dist/components/ErrorState/index.d.ts +12 -0
  94. package/dist/components/ErrorState/index.d.ts.map +1 -0
  95. package/dist/components/ErrorState/index.js +54 -0
  96. package/dist/components/Fab/index.d.ts +16 -0
  97. package/dist/components/Fab/index.d.ts.map +1 -0
  98. package/dist/components/Fab/index.js +39 -0
  99. package/dist/components/Fade/index.d.ts +10 -0
  100. package/dist/components/Fade/index.d.ts.map +1 -0
  101. package/dist/components/Fade/index.js +13 -0
  102. package/dist/components/FocusTrap/index.d.ts +11 -0
  103. package/dist/components/FocusTrap/index.d.ts.map +1 -0
  104. package/dist/components/FocusTrap/index.js +69 -0
  105. package/dist/components/FormControl/index.d.ts +34 -0
  106. package/dist/components/FormControl/index.d.ts.map +1 -0
  107. package/dist/components/FormControl/index.js +52 -0
  108. package/dist/components/GlobalSearch/index.d.ts +23 -0
  109. package/dist/components/GlobalSearch/index.d.ts.map +1 -0
  110. package/dist/components/GlobalSearch/index.js +91 -0
  111. package/dist/components/Grid/index.d.ts +19 -0
  112. package/dist/components/Grid/index.d.ts.map +1 -0
  113. package/dist/components/Grid/index.js +30 -0
  114. package/dist/components/Grow/index.d.ts +10 -0
  115. package/dist/components/Grow/index.d.ts.map +1 -0
  116. package/dist/components/Grow/index.js +13 -0
  117. package/dist/components/IconButton/index.d.ts +16 -0
  118. package/dist/components/IconButton/index.d.ts.map +1 -0
  119. package/dist/components/IconButton/index.js +43 -0
  120. package/dist/components/ImageList/index.d.ts +21 -0
  121. package/dist/components/ImageList/index.d.ts.map +1 -0
  122. package/dist/components/ImageList/index.js +39 -0
  123. package/dist/components/Input/index.d.ts +33 -0
  124. package/dist/components/Input/index.d.ts.map +1 -0
  125. package/dist/components/Input/index.js +45 -0
  126. package/dist/components/Kbd/index.d.ts +8 -0
  127. package/dist/components/Kbd/index.d.ts.map +1 -0
  128. package/dist/components/Kbd/index.js +41 -0
  129. package/dist/components/KeyboardShortcut/index.d.ts +20 -0
  130. package/dist/components/KeyboardShortcut/index.d.ts.map +1 -0
  131. package/dist/components/KeyboardShortcut/index.js +63 -0
  132. package/dist/components/Label/index.d.ts +10 -0
  133. package/dist/components/Label/index.d.ts.map +1 -0
  134. package/dist/components/Label/index.js +17 -0
  135. package/dist/components/LinearProgress/index.d.ts +13 -0
  136. package/dist/components/LinearProgress/index.d.ts.map +1 -0
  137. package/dist/components/LinearProgress/index.js +69 -0
  138. package/dist/components/Link/index.d.ts +16 -0
  139. package/dist/components/Link/index.d.ts.map +1 -0
  140. package/dist/components/Link/index.js +25 -0
  141. package/dist/components/List/index.d.ts +40 -0
  142. package/dist/components/List/index.d.ts.map +1 -0
  143. package/dist/components/List/index.js +70 -0
  144. package/dist/components/LoadingState/index.d.ts +11 -0
  145. package/dist/components/LoadingState/index.d.ts.map +1 -0
  146. package/dist/components/LoadingState/index.js +66 -0
  147. package/dist/components/Menu/index.d.ts +40 -0
  148. package/dist/components/Menu/index.d.ts.map +1 -0
  149. package/dist/components/Menu/index.js +103 -0
  150. package/dist/components/MobileStepper/index.d.ts +16 -0
  151. package/dist/components/MobileStepper/index.d.ts.map +1 -0
  152. package/dist/components/MobileStepper/index.js +67 -0
  153. package/dist/components/Modal/index.d.ts +14 -0
  154. package/dist/components/Modal/index.d.ts.map +1 -0
  155. package/dist/components/Modal/index.js +51 -0
  156. package/dist/components/Navbar/index.d.ts +14 -0
  157. package/dist/components/Navbar/index.d.ts.map +1 -0
  158. package/dist/components/Navbar/index.js +27 -0
  159. package/dist/components/NoSSR/index.d.ts +7 -0
  160. package/dist/components/NoSSR/index.d.ts.map +1 -0
  161. package/dist/components/NoSSR/index.js +9 -0
  162. package/dist/components/PageLayout/index.d.ts +13 -0
  163. package/dist/components/PageLayout/index.d.ts.map +1 -0
  164. package/dist/components/PageLayout/index.js +41 -0
  165. package/dist/components/Pagination/index.d.ts +11 -0
  166. package/dist/components/Pagination/index.d.ts.map +1 -0
  167. package/dist/components/Pagination/index.js +56 -0
  168. package/dist/components/Paper/index.d.ts +12 -0
  169. package/dist/components/Paper/index.d.ts.map +1 -0
  170. package/dist/components/Paper/index.js +24 -0
  171. package/dist/components/Popover/index.d.ts +13 -0
  172. package/dist/components/Popover/index.d.ts.map +1 -0
  173. package/dist/components/Popover/index.js +34 -0
  174. package/dist/components/Progress/index.d.ts +13 -0
  175. package/dist/components/Progress/index.d.ts.map +1 -0
  176. package/dist/components/Progress/index.js +40 -0
  177. package/dist/components/Radio/index.d.ts +7 -0
  178. package/dist/components/Radio/index.d.ts.map +1 -0
  179. package/dist/components/Radio/index.js +28 -0
  180. package/dist/components/Rating/index.d.ts +15 -0
  181. package/dist/components/Rating/index.d.ts.map +1 -0
  182. package/dist/components/Rating/index.js +41 -0
  183. package/dist/components/ResizablePanel/index.d.ts +16 -0
  184. package/dist/components/ResizablePanel/index.d.ts.map +1 -0
  185. package/dist/components/ResizablePanel/index.js +41 -0
  186. package/dist/components/ScrollArea/index.d.ts +12 -0
  187. package/dist/components/ScrollArea/index.d.ts.map +1 -0
  188. package/dist/components/ScrollArea/index.js +50 -0
  189. package/dist/components/Select/index.d.ts +23 -0
  190. package/dist/components/Select/index.d.ts.map +1 -0
  191. package/dist/components/Select/index.js +52 -0
  192. package/dist/components/Sheet/index.d.ts +15 -0
  193. package/dist/components/Sheet/index.d.ts.map +1 -0
  194. package/dist/components/Sheet/index.js +61 -0
  195. package/dist/components/Sidebar/index.d.ts +23 -0
  196. package/dist/components/Sidebar/index.d.ts.map +1 -0
  197. package/dist/components/Sidebar/index.js +37 -0
  198. package/dist/components/Skeleton/index.d.ts +9 -0
  199. package/dist/components/Skeleton/index.d.ts.map +1 -0
  200. package/dist/components/Skeleton/index.js +22 -0
  201. package/dist/components/Slide/index.d.ts +12 -0
  202. package/dist/components/Slide/index.d.ts.map +1 -0
  203. package/dist/components/Slide/index.js +21 -0
  204. package/dist/components/Slider/index.d.ts +19 -0
  205. package/dist/components/Slider/index.d.ts.map +1 -0
  206. package/dist/components/Slider/index.js +49 -0
  207. package/dist/components/Snackbar/index.d.ts +28 -0
  208. package/dist/components/Snackbar/index.d.ts.map +1 -0
  209. package/dist/components/Snackbar/index.js +71 -0
  210. package/dist/components/SpeedDial/index.d.ts +18 -0
  211. package/dist/components/SpeedDial/index.d.ts.map +1 -0
  212. package/dist/components/SpeedDial/index.js +71 -0
  213. package/dist/components/Spinner/index.d.ts +10 -0
  214. package/dist/components/Spinner/index.d.ts.map +1 -0
  215. package/dist/components/Spinner/index.js +67 -0
  216. package/dist/components/SplitPane/index.d.ts +11 -0
  217. package/dist/components/SplitPane/index.d.ts.map +1 -0
  218. package/dist/components/SplitPane/index.js +46 -0
  219. package/dist/components/Stack/index.d.ts +17 -0
  220. package/dist/components/Stack/index.d.ts.map +1 -0
  221. package/dist/components/Stack/index.js +30 -0
  222. package/dist/components/Stepper/index.d.ts +20 -0
  223. package/dist/components/Stepper/index.d.ts.map +1 -0
  224. package/dist/components/Stepper/index.js +66 -0
  225. package/dist/components/Switch/index.d.ts +13 -0
  226. package/dist/components/Switch/index.d.ts.map +1 -0
  227. package/dist/components/Switch/index.js +38 -0
  228. package/dist/components/Tabs/index.d.ts +20 -0
  229. package/dist/components/Tabs/index.d.ts.map +1 -0
  230. package/dist/components/Tabs/index.js +62 -0
  231. package/dist/components/TextField/index.d.ts +35 -0
  232. package/dist/components/TextField/index.d.ts.map +1 -0
  233. package/dist/components/TextField/index.js +69 -0
  234. package/dist/components/Textarea/index.d.ts +22 -0
  235. package/dist/components/Textarea/index.d.ts.map +1 -0
  236. package/dist/components/Textarea/index.js +27 -0
  237. package/dist/components/Timeline/index.d.ts +16 -0
  238. package/dist/components/Timeline/index.d.ts.map +1 -0
  239. package/dist/components/Timeline/index.js +30 -0
  240. package/dist/components/Toast/index.d.ts +34 -0
  241. package/dist/components/Toast/index.d.ts.map +1 -0
  242. package/dist/components/Toast/index.js +106 -0
  243. package/dist/components/ToggleButton/index.d.ts +21 -0
  244. package/dist/components/ToggleButton/index.d.ts.map +1 -0
  245. package/dist/components/ToggleButton/index.js +81 -0
  246. package/dist/components/Tooltip/index.d.ts +14 -0
  247. package/dist/components/Tooltip/index.d.ts.map +1 -0
  248. package/dist/components/Tooltip/index.js +47 -0
  249. package/dist/components/TreeView/index.d.ts +19 -0
  250. package/dist/components/TreeView/index.d.ts.map +1 -0
  251. package/dist/components/TreeView/index.js +50 -0
  252. package/dist/components/Typography/index.d.ts +17 -0
  253. package/dist/components/Typography/index.d.ts.map +1 -0
  254. package/dist/components/Typography/index.js +44 -0
  255. package/dist/components/VisuallyHidden/index.d.ts +7 -0
  256. package/dist/components/VisuallyHidden/index.d.ts.map +1 -0
  257. package/dist/components/VisuallyHidden/index.js +18 -0
  258. package/dist/components/Zoom/index.d.ts +10 -0
  259. package/dist/components/Zoom/index.d.ts.map +1 -0
  260. package/dist/components/Zoom/index.js +13 -0
  261. package/dist/components/ai.d.ts +133 -0
  262. package/dist/components/ai.d.ts.map +1 -0
  263. package/dist/components/ai.js +184 -0
  264. package/dist/components/charts.d.ts +143 -0
  265. package/dist/components/charts.d.ts.map +1 -0
  266. package/dist/components/charts.js +435 -0
  267. package/dist/components/data.d.ts +192 -0
  268. package/dist/components/data.d.ts.map +1 -0
  269. package/dist/components/data.js +581 -0
  270. package/dist/components/date.d.ts +73 -0
  271. package/dist/components/date.d.ts.map +1 -0
  272. package/dist/components/date.js +199 -0
  273. package/dist/components/enterprise.d.ts +246 -0
  274. package/dist/components/enterprise.d.ts.map +1 -0
  275. package/dist/components/enterprise.js +428 -0
  276. package/dist/components/form.d.ts +132 -0
  277. package/dist/components/form.d.ts.map +1 -0
  278. package/dist/components/form.js +380 -0
  279. package/dist/components/index.d.ts +173 -0
  280. package/dist/components/index.d.ts.map +1 -0
  281. package/dist/components/index.js +107 -0
  282. package/dist/components/inputs.d.ts +169 -0
  283. package/dist/components/inputs.d.ts.map +1 -0
  284. package/dist/components/inputs.js +437 -0
  285. package/dist/components/layout.d.ts +224 -0
  286. package/dist/components/layout.d.ts.map +1 -0
  287. package/dist/components/layout.js +644 -0
  288. package/dist/components/overlay.d.ts +102 -0
  289. package/dist/components/overlay.d.ts.map +1 -0
  290. package/dist/components/overlay.js +318 -0
  291. package/dist/components/surfaces.d.ts +180 -0
  292. package/dist/components/surfaces.d.ts.map +1 -0
  293. package/dist/components/surfaces.js +423 -0
  294. package/dist/components/typography.d.ts +69 -0
  295. package/dist/components/typography.d.ts.map +1 -0
  296. package/dist/components/typography.js +206 -0
  297. package/dist/index.d.ts +23 -0
  298. package/dist/index.d.ts.map +1 -0
  299. package/dist/index.js +29 -0
  300. package/dist/portal.d.ts +3 -0
  301. package/dist/portal.d.ts.map +1 -0
  302. package/dist/portal.js +17 -0
  303. package/dist/theme/index.d.ts +31 -0
  304. package/dist/theme/index.d.ts.map +1 -0
  305. package/dist/theme/index.js +258 -0
  306. package/dist/tokens/component.d.ts +124 -0
  307. package/dist/tokens/component.d.ts.map +1 -0
  308. package/dist/tokens/component.js +113 -0
  309. package/dist/tokens/index.d.ts +494 -0
  310. package/dist/tokens/index.d.ts.map +1 -0
  311. package/dist/tokens/index.js +345 -0
  312. package/dist/tokens/primitives.d.ts +675 -0
  313. package/dist/tokens/primitives.d.ts.map +1 -0
  314. package/dist/tokens/primitives.js +356 -0
  315. package/dist/tokens/semantic.d.ts +252 -0
  316. package/dist/tokens/semantic.d.ts.map +1 -0
  317. package/dist/tokens/semantic.js +242 -0
  318. package/dist/tokens/themes.d.ts +18 -0
  319. package/dist/tokens/themes.d.ts.map +1 -0
  320. package/dist/tokens/themes.js +316 -0
  321. 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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"}