@hanzo/ui 8.27.8 → 8.27.10

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 (253) hide show
  1. package/README.md +2 -1
  2. package/dist/backends/gui/3d-card.cjs +100 -0
  3. package/dist/backends/gui/3d-card.d.ts +59 -0
  4. package/dist/backends/gui/3d-card.d.ts.map +1 -0
  5. package/dist/backends/gui/3d-card.js +92 -0
  6. package/dist/backends/gui/3d-card.js.map +1 -0
  7. package/dist/backends/gui/3d-marquee.cjs +225 -0
  8. package/dist/backends/gui/3d-marquee.d.ts +114 -0
  9. package/dist/backends/gui/3d-marquee.d.ts.map +1 -0
  10. package/dist/backends/gui/3d-marquee.js +190 -0
  11. package/dist/backends/gui/3d-marquee.js.map +1 -0
  12. package/dist/backends/gui/3d-pin.cjs +51 -0
  13. package/dist/backends/gui/3d-pin.d.ts +14 -0
  14. package/dist/backends/gui/3d-pin.d.ts.map +1 -0
  15. package/dist/backends/gui/3d-pin.js +49 -0
  16. package/dist/backends/gui/3d-pin.js.map +1 -0
  17. package/dist/backends/gui/advanced-chart.cjs +61 -0
  18. package/dist/backends/gui/advanced-chart.d.ts +38 -0
  19. package/dist/backends/gui/advanced-chart.d.ts.map +1 -0
  20. package/dist/backends/gui/advanced-chart.js +59 -0
  21. package/dist/backends/gui/advanced-chart.js.map +1 -0
  22. package/dist/backends/gui/alert.cjs +106 -0
  23. package/dist/backends/gui/alert.d.ts +39 -0
  24. package/dist/backends/gui/alert.d.ts.map +1 -0
  25. package/dist/backends/gui/alert.js +102 -0
  26. package/dist/backends/gui/alert.js.map +1 -0
  27. package/dist/backends/gui/android.cjs +52 -0
  28. package/dist/backends/gui/android.d.ts +16 -0
  29. package/dist/backends/gui/android.d.ts.map +1 -0
  30. package/dist/backends/gui/android.js +50 -0
  31. package/dist/backends/gui/android.js.map +1 -0
  32. package/dist/backends/gui/animated-beam.cjs +97 -0
  33. package/dist/backends/gui/animated-beam.d.ts +57 -0
  34. package/dist/backends/gui/animated-beam.d.ts.map +1 -0
  35. package/dist/backends/gui/animated-beam.js +62 -0
  36. package/dist/backends/gui/animated-beam.js.map +1 -0
  37. package/dist/backends/gui/animated-cursor.cjs +183 -0
  38. package/dist/backends/gui/animated-cursor.d.ts +42 -0
  39. package/dist/backends/gui/animated-cursor.d.ts.map +1 -0
  40. package/dist/backends/gui/animated-cursor.js +181 -0
  41. package/dist/backends/gui/animated-cursor.js.map +1 -0
  42. package/dist/backends/gui/animated-testimonials.cjs +109 -0
  43. package/dist/backends/gui/animated-testimonials.d.ts +23 -0
  44. package/dist/backends/gui/animated-testimonials.d.ts.map +1 -0
  45. package/dist/backends/gui/animated-testimonials.js +74 -0
  46. package/dist/backends/gui/animated-testimonials.js.map +1 -0
  47. package/dist/backends/gui/animated-tooltip.cjs +100 -0
  48. package/dist/backends/gui/animated-tooltip.d.ts +15 -0
  49. package/dist/backends/gui/animated-tooltip.d.ts.map +1 -0
  50. package/dist/backends/gui/animated-tooltip.js +65 -0
  51. package/dist/backends/gui/animated-tooltip.js.map +1 -0
  52. package/dist/backends/gui/announcement.cjs +54 -0
  53. package/dist/backends/gui/announcement.d.ts +26 -0
  54. package/dist/backends/gui/announcement.d.ts.map +1 -0
  55. package/dist/backends/gui/announcement.js +52 -0
  56. package/dist/backends/gui/announcement.js.map +1 -0
  57. package/dist/backends/gui/apple-cards-carousel.cjs +198 -0
  58. package/dist/backends/gui/apple-cards-carousel.d.ts +45 -0
  59. package/dist/backends/gui/apple-cards-carousel.d.ts.map +1 -0
  60. package/dist/backends/gui/apple-cards-carousel.js +162 -0
  61. package/dist/backends/gui/apple-cards-carousel.js.map +1 -0
  62. package/dist/backends/gui/apple-hello-effect.cjs +38 -0
  63. package/dist/backends/gui/apple-hello-effect.d.ts +9 -0
  64. package/dist/backends/gui/apple-hello-effect.d.ts.map +1 -0
  65. package/dist/backends/gui/apple-hello-effect.js +36 -0
  66. package/dist/backends/gui/apple-hello-effect.js.map +1 -0
  67. package/dist/backends/gui/banner.cjs +108 -0
  68. package/dist/backends/gui/banner.d.ts +33 -0
  69. package/dist/backends/gui/banner.d.ts.map +1 -0
  70. package/dist/backends/gui/banner.js +106 -0
  71. package/dist/backends/gui/banner.js.map +1 -0
  72. package/dist/backends/gui/calendar.cjs +152 -0
  73. package/dist/backends/gui/calendar.d.ts +41 -0
  74. package/dist/backends/gui/calendar.d.ts.map +1 -0
  75. package/dist/backends/gui/calendar.js +151 -0
  76. package/dist/backends/gui/calendar.js.map +1 -0
  77. package/dist/backends/gui/choicebox.cjs +50 -0
  78. package/dist/backends/gui/choicebox.d.ts +33 -0
  79. package/dist/backends/gui/choicebox.d.ts.map +1 -0
  80. package/dist/backends/gui/choicebox.js +49 -0
  81. package/dist/backends/gui/choicebox.js.map +1 -0
  82. package/dist/backends/gui/code-block.cjs +120 -0
  83. package/dist/backends/gui/code-block.d.ts +22 -0
  84. package/dist/backends/gui/code-block.d.ts.map +1 -0
  85. package/dist/backends/gui/code-block.js +118 -0
  86. package/dist/backends/gui/code-block.js.map +1 -0
  87. package/dist/backends/gui/code-editor.cjs +195 -0
  88. package/dist/backends/gui/code-editor.d.ts +43 -0
  89. package/dist/backends/gui/code-editor.d.ts.map +1 -0
  90. package/dist/backends/gui/code-editor.js +160 -0
  91. package/dist/backends/gui/code-editor.js.map +1 -0
  92. package/dist/backends/gui/code-tabs.cjs +21 -0
  93. package/dist/backends/gui/code-tabs.d.ts +22 -0
  94. package/dist/backends/gui/code-tabs.d.ts.map +1 -0
  95. package/dist/backends/gui/code-tabs.js +19 -0
  96. package/dist/backends/gui/code-tabs.js.map +1 -0
  97. package/dist/backends/gui/color-picker.cjs +141 -0
  98. package/dist/backends/gui/color-picker.d.ts +25 -0
  99. package/dist/backends/gui/color-picker.d.ts.map +1 -0
  100. package/dist/backends/gui/color-picker.js +139 -0
  101. package/dist/backends/gui/color-picker.js.map +1 -0
  102. package/dist/backends/gui/combobox.cjs +42 -0
  103. package/dist/backends/gui/combobox.d.ts +39 -0
  104. package/dist/backends/gui/combobox.d.ts.map +1 -0
  105. package/dist/backends/gui/combobox.js +40 -0
  106. package/dist/backends/gui/combobox.js.map +1 -0
  107. package/dist/backends/gui/company-profile.cjs +43 -0
  108. package/dist/backends/gui/company-profile.d.ts +33 -0
  109. package/dist/backends/gui/company-profile.d.ts.map +1 -0
  110. package/dist/backends/gui/company-profile.js +41 -0
  111. package/dist/backends/gui/company-profile.js.map +1 -0
  112. package/dist/backends/gui/comparison.cjs +43 -0
  113. package/dist/backends/gui/comparison.d.ts +16 -0
  114. package/dist/backends/gui/comparison.d.ts.map +1 -0
  115. package/dist/backends/gui/comparison.js +41 -0
  116. package/dist/backends/gui/comparison.js.map +1 -0
  117. package/dist/backends/gui/credit-card.cjs +80 -0
  118. package/dist/backends/gui/credit-card.d.ts +21 -0
  119. package/dist/backends/gui/credit-card.d.ts.map +1 -0
  120. package/dist/backends/gui/credit-card.js +78 -0
  121. package/dist/backends/gui/credit-card.js.map +1 -0
  122. package/dist/backends/gui/crypto-market.cjs +128 -0
  123. package/dist/backends/gui/crypto-market.d.ts +52 -0
  124. package/dist/backends/gui/crypto-market.d.ts.map +1 -0
  125. package/dist/backends/gui/crypto-market.js +126 -0
  126. package/dist/backends/gui/crypto-market.js.map +1 -0
  127. package/dist/backends/gui/crypto-screener.cjs +55 -0
  128. package/dist/backends/gui/crypto-screener.d.ts +42 -0
  129. package/dist/backends/gui/crypto-screener.d.ts.map +1 -0
  130. package/dist/backends/gui/crypto-screener.js +53 -0
  131. package/dist/backends/gui/crypto-screener.js.map +1 -0
  132. package/dist/backends/gui/cursor.cjs +40 -0
  133. package/dist/backends/gui/cursor.d.ts +16 -0
  134. package/dist/backends/gui/cursor.d.ts.map +1 -0
  135. package/dist/backends/gui/cursor.js +38 -0
  136. package/dist/backends/gui/cursor.js.map +1 -0
  137. package/dist/backends/gui/data-table.cjs +211 -0
  138. package/dist/backends/gui/data-table.d.ts +71 -0
  139. package/dist/backends/gui/data-table.d.ts.map +1 -0
  140. package/dist/backends/gui/data-table.js +175 -0
  141. package/dist/backends/gui/data-table.js.map +1 -0
  142. package/dist/backends/gui/date-picker.cjs +66 -0
  143. package/dist/backends/gui/date-picker.d.ts +29 -0
  144. package/dist/backends/gui/date-picker.d.ts.map +1 -0
  145. package/dist/backends/gui/date-picker.js +64 -0
  146. package/dist/backends/gui/date-picker.js.map +1 -0
  147. package/dist/backends/gui/desktop-spotlight.cjs +46 -0
  148. package/dist/backends/gui/desktop-spotlight.d.ts +34 -0
  149. package/dist/backends/gui/desktop-spotlight.d.ts.map +1 -0
  150. package/dist/backends/gui/desktop-spotlight.js +44 -0
  151. package/dist/backends/gui/desktop-spotlight.js.map +1 -0
  152. package/dist/backends/gui/desktop-window.cjs +180 -0
  153. package/dist/backends/gui/desktop-window.d.ts +51 -0
  154. package/dist/backends/gui/desktop-window.d.ts.map +1 -0
  155. package/dist/backends/gui/desktop-window.js +177 -0
  156. package/dist/backends/gui/desktop-window.js.map +1 -0
  157. package/dist/backends/gui/desktop.cjs +238 -0
  158. package/dist/backends/gui/desktop.d.ts +109 -0
  159. package/dist/backends/gui/desktop.d.ts.map +1 -0
  160. package/dist/backends/gui/desktop.js +199 -0
  161. package/dist/backends/gui/desktop.js.map +1 -0
  162. package/dist/backends/gui/dialog-stack.cjs +26 -0
  163. package/dist/backends/gui/dialog-stack.d.ts +23 -0
  164. package/dist/backends/gui/dialog-stack.d.ts.map +1 -0
  165. package/dist/backends/gui/dialog-stack.js +24 -0
  166. package/dist/backends/gui/dialog-stack.js.map +1 -0
  167. package/dist/backends/gui/dock.cjs +99 -0
  168. package/dist/backends/gui/dock.d.ts +41 -0
  169. package/dist/backends/gui/dock.d.ts.map +1 -0
  170. package/dist/backends/gui/dock.js +96 -0
  171. package/dist/backends/gui/dock.js.map +1 -0
  172. package/dist/backends/gui/dropzone.cjs +142 -0
  173. package/dist/backends/gui/dropzone.d.ts +12 -0
  174. package/dist/backends/gui/dropzone.d.ts.map +1 -0
  175. package/dist/backends/gui/dropzone.js +140 -0
  176. package/dist/backends/gui/dropzone.js.map +1 -0
  177. package/dist/backends/gui/editor.cjs +80 -0
  178. package/dist/backends/gui/editor.d.ts +23 -0
  179. package/dist/backends/gui/editor.d.ts.map +1 -0
  180. package/dist/backends/gui/editor.js +45 -0
  181. package/dist/backends/gui/editor.js.map +1 -0
  182. package/dist/backends/gui/empty.cjs +71 -0
  183. package/dist/backends/gui/empty.d.ts +43 -0
  184. package/dist/backends/gui/empty.d.ts.map +1 -0
  185. package/dist/backends/gui/empty.js +63 -0
  186. package/dist/backends/gui/empty.js.map +1 -0
  187. package/dist/backends/gui/financials.cjs +45 -0
  188. package/dist/backends/gui/financials.d.ts +36 -0
  189. package/dist/backends/gui/financials.d.ts.map +1 -0
  190. package/dist/backends/gui/financials.js +43 -0
  191. package/dist/backends/gui/financials.js.map +1 -0
  192. package/dist/backends/gui/forex-market.cjs +21 -0
  193. package/dist/backends/gui/forex-market.d.ts +17 -0
  194. package/dist/backends/gui/forex-market.d.ts.map +1 -0
  195. package/dist/backends/gui/forex-market.js +19 -0
  196. package/dist/backends/gui/forex-market.js.map +1 -0
  197. package/dist/backends/gui/forex-screener.cjs +57 -0
  198. package/dist/backends/gui/forex-screener.d.ts +45 -0
  199. package/dist/backends/gui/forex-screener.d.ts.map +1 -0
  200. package/dist/backends/gui/forex-screener.js +55 -0
  201. package/dist/backends/gui/forex-screener.js.map +1 -0
  202. package/dist/backends/gui/gantt.cjs +50 -0
  203. package/dist/backends/gui/gantt.d.ts +19 -0
  204. package/dist/backends/gui/gantt.d.ts.map +1 -0
  205. package/dist/backends/gui/gantt.js +49 -0
  206. package/dist/backends/gui/gantt.js.map +1 -0
  207. package/dist/backends/gui/index.cjs +108 -1
  208. package/dist/backends/gui/index.d.ts +41 -0
  209. package/dist/backends/gui/index.d.ts.map +1 -1
  210. package/dist/backends/gui/index.js +41 -0
  211. package/dist/backends/gui/index.js.map +1 -1
  212. package/dist/canvas.cjs +3 -3
  213. package/dist/canvas.js +3 -3
  214. package/dist/canvas.js.map +1 -1
  215. package/dist/gallery.html +2 -2
  216. package/dist/grid.cjs +19 -43
  217. package/dist/grid.d.ts +36 -1
  218. package/dist/grid.d.ts.map +1 -1
  219. package/dist/grid.js +19 -43
  220. package/dist/grid.js.map +1 -1
  221. package/dist/index.cjs +70 -1
  222. package/dist/index.d.ts +1 -0
  223. package/dist/index.d.ts.map +1 -1
  224. package/dist/index.js +3 -0
  225. package/dist/index.js.map +1 -1
  226. package/dist/index.node.cjs +70 -1
  227. package/dist/index.node.js +3 -0
  228. package/dist/product/ChunkGuard.cjs +58 -0
  229. package/dist/product/ChunkGuard.d.ts +7 -0
  230. package/dist/product/ChunkGuard.d.ts.map +1 -0
  231. package/dist/product/ChunkGuard.js +56 -0
  232. package/dist/product/ChunkGuard.js.map +1 -0
  233. package/dist/product/DetailPane.cjs +46 -0
  234. package/dist/product/DetailPane.d.ts +47 -0
  235. package/dist/product/DetailPane.d.ts.map +1 -0
  236. package/dist/product/DetailPane.js +43 -0
  237. package/dist/product/DetailPane.js.map +1 -0
  238. package/dist/product/Fact.cjs +19 -0
  239. package/dist/product/Fact.d.ts +23 -0
  240. package/dist/product/Fact.d.ts.map +1 -0
  241. package/dist/product/Fact.js +17 -0
  242. package/dist/product/Fact.js.map +1 -0
  243. package/dist/product/chunkGuard.logic.cjs +54 -0
  244. package/dist/product/chunkGuard.logic.d.ts +26 -0
  245. package/dist/product/chunkGuard.logic.d.ts.map +1 -0
  246. package/dist/product/chunkGuard.logic.js +49 -0
  247. package/dist/product/chunkGuard.logic.js.map +1 -0
  248. package/dist/product/index.cjs +10 -0
  249. package/dist/product/index.d.ts +3 -0
  250. package/dist/product/index.d.ts.map +1 -1
  251. package/dist/product/index.js +10 -0
  252. package/dist/product/index.js.map +1 -1
  253. package/package.json +5 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop-window.js","sourceRoot":"","sources":["../../../src/backends/gui/desktop-window.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,238 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.useWindowManager = useWindowManager;
38
+ exports.useDesktopSettings = useDesktopSettings;
39
+ exports.useOverlayManager = useOverlayManager;
40
+ exports.useKeyboardShortcuts = useKeyboardShortcuts;
41
+ exports.Desktop = Desktop;
42
+ const jsx_runtime_1 = require("react/jsx-runtime");
43
+ /**
44
+ * Desktop — the surface and state hooks behind a macOS-style desktop
45
+ * interface: a full-viewport background that hosts windows, a dock and a
46
+ * spotlight, plus the four hooks that give those pieces somewhere to keep
47
+ * their state (`useWindowManager`, `useDesktopSettings`, `useOverlayManager`,
48
+ * `useKeyboardShortcuts`). `Window` and `Spotlight` are their own components;
49
+ * this is the ground they sit on.
50
+ *
51
+ * The hooks own no rendering and reach `@hanzo/gui` nowhere — a reducer, a
52
+ * `localStorage` mirror and a `keydown` listener behave identically on every
53
+ * backend, so they are plain React. Only `Desktop` itself is gui-native.
54
+ */
55
+ const React = __importStar(require("react"));
56
+ const gui_1 = require("@hanzo/gui");
57
+ function windowReducer(state, action) {
58
+ switch (action.type) {
59
+ case 'OPEN':
60
+ return { windows: { ...state.windows, [action.id]: true }, activeWindow: action.id };
61
+ case 'CLOSE':
62
+ return {
63
+ windows: { ...state.windows, [action.id]: false },
64
+ activeWindow: state.activeWindow === action.id ? null : state.activeWindow,
65
+ };
66
+ case 'TOGGLE': {
67
+ const isOpen = state.windows[action.id];
68
+ return {
69
+ windows: { ...state.windows, [action.id]: !isOpen },
70
+ activeWindow: !isOpen ? action.id : state.activeWindow === action.id ? null : state.activeWindow,
71
+ };
72
+ }
73
+ case 'CLOSE_ALL':
74
+ return {
75
+ windows: Object.keys(state.windows).reduce((acc, key) => {
76
+ acc[key] = false;
77
+ return acc;
78
+ }, {}),
79
+ activeWindow: null,
80
+ };
81
+ case 'SET_ACTIVE':
82
+ return { ...state, activeWindow: action.id };
83
+ default:
84
+ return state;
85
+ }
86
+ }
87
+ /** Reducer-backed open/close/focus state for any number of named windows. */
88
+ function useWindowManager(initialWindows = []) {
89
+ const initialState = React.useMemo(() => ({
90
+ windows: initialWindows.reduce((acc, id) => {
91
+ acc[id] = false;
92
+ return acc;
93
+ }, {}),
94
+ activeWindow: null,
95
+ }),
96
+ // eslint-disable-next-line react-hooks/exhaustive-deps
97
+ []);
98
+ const [state, dispatch] = React.useReducer(windowReducer, initialState);
99
+ const openWindows = React.useMemo(() => Object.entries(state.windows).filter(([, isOpen]) => isOpen).map(([id]) => id), [state.windows]);
100
+ const openWindow = React.useCallback((id) => dispatch({ type: 'OPEN', id }), []);
101
+ const closeWindow = React.useCallback((id) => dispatch({ type: 'CLOSE', id }), []);
102
+ const toggleWindow = React.useCallback((id) => dispatch({ type: 'TOGGLE', id }), []);
103
+ const focusWindow = React.useCallback((id) => dispatch({ type: 'SET_ACTIVE', id }), []);
104
+ const closeAllWindows = React.useCallback(() => dispatch({ type: 'CLOSE_ALL' }), []);
105
+ const isOpen = React.useCallback((id) => state.windows[id] ?? false, [state.windows]);
106
+ return {
107
+ windows: state.windows,
108
+ activeWindow: state.activeWindow,
109
+ openWindows,
110
+ openWindow,
111
+ closeWindow,
112
+ toggleWindow,
113
+ focusWindow,
114
+ closeAllWindows,
115
+ isOpen,
116
+ };
117
+ }
118
+ const defaultSettings = {
119
+ theme: 'default',
120
+ colorScheme: 'dark',
121
+ backgroundImage: undefined,
122
+ backgroundColor: undefined,
123
+ dockPosition: 'bottom',
124
+ dockSize: 64,
125
+ dockMagnification: true,
126
+ dockAutoHide: false,
127
+ windowTransparency: 20,
128
+ fontSize: 'medium',
129
+ reducedMotion: false,
130
+ };
131
+ const STORAGE_KEY = 'desktop-settings';
132
+ function loadSettings() {
133
+ if (typeof window === 'undefined')
134
+ return defaultSettings;
135
+ try {
136
+ const stored = window.localStorage.getItem(STORAGE_KEY);
137
+ if (stored)
138
+ return { ...defaultSettings, ...JSON.parse(stored) };
139
+ }
140
+ catch {
141
+ // Ignore a blocked or corrupt store; the defaults still render correctly.
142
+ }
143
+ return defaultSettings;
144
+ }
145
+ function saveSettings(settings) {
146
+ if (typeof window === 'undefined')
147
+ return;
148
+ try {
149
+ window.localStorage.setItem(STORAGE_KEY, JSON.stringify(settings));
150
+ }
151
+ catch {
152
+ // Ignore a full or blocked store; the setting still holds for this session.
153
+ }
154
+ }
155
+ /** Desktop preferences — theme, dock, transparency — mirrored to `localStorage`. */
156
+ function useDesktopSettings() {
157
+ const [settings, setSettings] = React.useState(loadSettings);
158
+ React.useEffect(() => {
159
+ saveSettings(settings);
160
+ }, [settings]);
161
+ const updateSetting = (key, value) => setSettings((prev) => ({ ...prev, [key]: value }));
162
+ return {
163
+ ...settings,
164
+ setTheme: (theme) => updateSetting('theme', theme),
165
+ setColorScheme: (scheme) => updateSetting('colorScheme', scheme),
166
+ setBackgroundImage: (url) => updateSetting('backgroundImage', url),
167
+ setBackgroundColor: (color) => updateSetting('backgroundColor', color),
168
+ setDockPosition: (position) => updateSetting('dockPosition', position),
169
+ setDockSize: (size) => updateSetting('dockSize', size),
170
+ setDockMagnification: (enabled) => updateSetting('dockMagnification', enabled),
171
+ setDockAutoHide: (enabled) => updateSetting('dockAutoHide', enabled),
172
+ setWindowTransparency: (value) => updateSetting('windowTransparency', value),
173
+ setFontSize: (size) => updateSetting('fontSize', size),
174
+ setReducedMotion: (enabled) => updateSetting('reducedMotion', enabled),
175
+ toggleDarkMode: () => setSettings((prev) => ({ ...prev, colorScheme: prev.colorScheme === 'dark' ? 'light' : 'dark' })),
176
+ resetToDefaults: () => setSettings(defaultSettings),
177
+ };
178
+ }
179
+ /** Open/close state for the desktop's overlays — spotlight, a menu, a modal, a drawer. */
180
+ function useOverlayManager() {
181
+ const [overlays, setOverlays] = React.useState({
182
+ spotlight: false,
183
+ contextMenu: false,
184
+ modal: false,
185
+ drawer: false,
186
+ });
187
+ const isOpen = React.useCallback((id) => overlays[id] ?? false, [overlays]);
188
+ const open = React.useCallback((id) => setOverlays((prev) => ({ ...prev, [id]: true })), []);
189
+ const close = React.useCallback((id) => setOverlays((prev) => ({ ...prev, [id]: false })), []);
190
+ const toggle = React.useCallback((id) => setOverlays((prev) => ({ ...prev, [id]: !prev[id] })), []);
191
+ const closeAll = React.useCallback(() => setOverlays((prev) => Object.keys(prev).reduce((acc, key) => {
192
+ acc[key] = false;
193
+ return acc;
194
+ }, {})), []);
195
+ return { overlays, isOpen, open, close, toggle, closeAll };
196
+ }
197
+ /** Registers global ⌘/Ctrl-chord shortcuts for the lifetime of the caller. */
198
+ function useKeyboardShortcuts(shortcuts) {
199
+ React.useEffect(() => {
200
+ const handleKeyDown = (e) => {
201
+ for (const shortcut of shortcuts) {
202
+ const metaMatch = shortcut.meta ? e.metaKey || e.ctrlKey : !e.metaKey;
203
+ const ctrlMatch = shortcut.ctrl ? e.ctrlKey : true;
204
+ const altMatch = shortcut.alt ? e.altKey : !e.altKey;
205
+ const shiftMatch = shortcut.shift ? e.shiftKey : !e.shiftKey;
206
+ const keyMatch = e.key.toLowerCase() === shortcut.key.toLowerCase();
207
+ if (keyMatch && metaMatch && ctrlMatch && altMatch && shiftMatch) {
208
+ if (shortcut.preventDefault !== false)
209
+ e.preventDefault();
210
+ shortcut.action();
211
+ return;
212
+ }
213
+ }
214
+ };
215
+ window.addEventListener('keydown', handleKeyDown);
216
+ return () => window.removeEventListener('keydown', handleKeyDown);
217
+ }, [shortcuts]);
218
+ }
219
+ // ============================================================================
220
+ // Desktop — the surface Window, Spotlight and a Dock render onto
221
+ // ============================================================================
222
+ const Frame = (0, gui_1.styled)(gui_1.YStack, {
223
+ name: 'Desktop',
224
+ position: 'relative',
225
+ width: '100%',
226
+ height: '100%',
227
+ overflow: 'hidden',
228
+ bg: '$background',
229
+ });
230
+ /**
231
+ * The full-viewport ground of a desktop interface: an optional painted
232
+ * background under a relatively-positioned surface, so absolutely-positioned
233
+ * windows, a dock and a spotlight all measure against this box rather than
234
+ * the document.
235
+ */
236
+ function Desktop({ background, children, ...props }) {
237
+ return ((0, jsx_runtime_1.jsxs)(Frame, { "data-slot": "desktop", ...props, children: [background ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { "data-slot": "desktop-background", position: "absolute", inset: 0, style: { background } })) : null, (0, jsx_runtime_1.jsx)(gui_1.YStack, { "data-slot": "desktop-surface", position: "relative", width: "100%", height: "100%", children: children })] }));
238
+ }
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Desktop — the surface and state hooks behind a macOS-style desktop
3
+ * interface: a full-viewport background that hosts windows, a dock and a
4
+ * spotlight, plus the four hooks that give those pieces somewhere to keep
5
+ * their state (`useWindowManager`, `useDesktopSettings`, `useOverlayManager`,
6
+ * `useKeyboardShortcuts`). `Window` and `Spotlight` are their own components;
7
+ * this is the ground they sit on.
8
+ *
9
+ * The hooks own no rendering and reach `@hanzo/gui` nowhere — a reducer, a
10
+ * `localStorage` mirror and a `keydown` listener behave identically on every
11
+ * backend, so they are plain React. Only `Desktop` itself is gui-native.
12
+ */
13
+ import * as React from 'react';
14
+ export type WindowId = string;
15
+ export interface WindowState {
16
+ [key: string]: boolean;
17
+ }
18
+ export interface WindowManager {
19
+ windows: WindowState;
20
+ activeWindow: WindowId | null;
21
+ openWindows: WindowId[];
22
+ openWindow: (id: WindowId) => void;
23
+ closeWindow: (id: WindowId) => void;
24
+ toggleWindow: (id: WindowId) => void;
25
+ focusWindow: (id: WindowId) => void;
26
+ closeAllWindows: () => void;
27
+ isOpen: (id: WindowId) => boolean;
28
+ }
29
+ /** Reducer-backed open/close/focus state for any number of named windows. */
30
+ export declare function useWindowManager(initialWindows?: WindowId[]): WindowManager;
31
+ export type ColorScheme = 'dark' | 'light' | 'auto';
32
+ export type DockPosition = 'bottom' | 'left' | 'right';
33
+ export interface DesktopSettings {
34
+ theme: string;
35
+ colorScheme: ColorScheme;
36
+ backgroundImage?: string;
37
+ backgroundColor?: string;
38
+ dockPosition: DockPosition;
39
+ dockSize: number;
40
+ dockMagnification: boolean;
41
+ dockAutoHide: boolean;
42
+ windowTransparency: number;
43
+ fontSize: 'small' | 'medium' | 'large';
44
+ reducedMotion: boolean;
45
+ }
46
+ export interface DesktopSettingsActions {
47
+ setTheme: (theme: string) => void;
48
+ setColorScheme: (scheme: ColorScheme) => void;
49
+ setBackgroundImage: (url?: string) => void;
50
+ setBackgroundColor: (color?: string) => void;
51
+ setDockPosition: (position: DockPosition) => void;
52
+ setDockSize: (size: number) => void;
53
+ setDockMagnification: (enabled: boolean) => void;
54
+ setDockAutoHide: (enabled: boolean) => void;
55
+ setWindowTransparency: (value: number) => void;
56
+ setFontSize: (size: 'small' | 'medium' | 'large') => void;
57
+ setReducedMotion: (enabled: boolean) => void;
58
+ toggleDarkMode: () => void;
59
+ resetToDefaults: () => void;
60
+ }
61
+ /** Desktop preferences — theme, dock, transparency — mirrored to `localStorage`. */
62
+ export declare function useDesktopSettings(): DesktopSettings & DesktopSettingsActions;
63
+ export interface OverlayState {
64
+ spotlight: boolean;
65
+ contextMenu: boolean;
66
+ modal: boolean;
67
+ drawer: boolean;
68
+ [key: string]: boolean;
69
+ }
70
+ export interface OverlayManager {
71
+ overlays: OverlayState;
72
+ isOpen: (id: string) => boolean;
73
+ open: (id: string) => void;
74
+ close: (id: string) => void;
75
+ toggle: (id: string) => void;
76
+ closeAll: () => void;
77
+ }
78
+ /** Open/close state for the desktop's overlays — spotlight, a menu, a modal, a drawer. */
79
+ export declare function useOverlayManager(): OverlayManager;
80
+ export interface KeyboardShortcut {
81
+ key: string;
82
+ meta?: boolean;
83
+ ctrl?: boolean;
84
+ alt?: boolean;
85
+ shift?: boolean;
86
+ action: () => void;
87
+ description?: string;
88
+ preventDefault?: boolean;
89
+ }
90
+ /** Registers global ⌘/Ctrl-chord shortcuts for the lifetime of the caller. */
91
+ export declare function useKeyboardShortcuts(shortcuts: KeyboardShortcut[]): void;
92
+ declare const Frame: import("@hanzogui/web").GuiComponent<import("@hanzogui/web").TamaDefer, import("@hanzogui/web").GuiElement, import("@hanzogui/core").RNGuiViewNonStyleProps, import("@hanzogui/web").StackStyleBase, {
93
+ elevation?: number | import("@hanzogui/web").SizeTokens | undefined;
94
+ fullscreen?: boolean | undefined;
95
+ }, import("@hanzogui/web").StaticConfigPublic>;
96
+ export interface DesktopProps extends React.ComponentProps<typeof Frame> {
97
+ /** A CSS `background` value (a gradient, a color, an image) behind the content. */
98
+ background?: string;
99
+ children?: React.ReactNode;
100
+ }
101
+ /**
102
+ * The full-viewport ground of a desktop interface: an optional painted
103
+ * background under a relatively-positioned surface, so absolutely-positioned
104
+ * windows, a dock and a spotlight all measure against this box rather than
105
+ * the document.
106
+ */
107
+ export declare function Desktop({ background, children, ...props }: DesktopProps): React.JSX.Element;
108
+ export {};
109
+ //# sourceMappingURL=desktop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/desktop.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,199 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * Desktop — the surface and state hooks behind a macOS-style desktop
5
+ * interface: a full-viewport background that hosts windows, a dock and a
6
+ * spotlight, plus the four hooks that give those pieces somewhere to keep
7
+ * their state (`useWindowManager`, `useDesktopSettings`, `useOverlayManager`,
8
+ * `useKeyboardShortcuts`). `Window` and `Spotlight` are their own components;
9
+ * this is the ground they sit on.
10
+ *
11
+ * The hooks own no rendering and reach `@hanzo/gui` nowhere — a reducer, a
12
+ * `localStorage` mirror and a `keydown` listener behave identically on every
13
+ * backend, so they are plain React. Only `Desktop` itself is gui-native.
14
+ */
15
+ import * as React from 'react';
16
+ import { YStack, styled } from '@hanzo/gui';
17
+ function windowReducer(state, action) {
18
+ switch (action.type) {
19
+ case 'OPEN':
20
+ return { windows: { ...state.windows, [action.id]: true }, activeWindow: action.id };
21
+ case 'CLOSE':
22
+ return {
23
+ windows: { ...state.windows, [action.id]: false },
24
+ activeWindow: state.activeWindow === action.id ? null : state.activeWindow,
25
+ };
26
+ case 'TOGGLE': {
27
+ const isOpen = state.windows[action.id];
28
+ return {
29
+ windows: { ...state.windows, [action.id]: !isOpen },
30
+ activeWindow: !isOpen ? action.id : state.activeWindow === action.id ? null : state.activeWindow,
31
+ };
32
+ }
33
+ case 'CLOSE_ALL':
34
+ return {
35
+ windows: Object.keys(state.windows).reduce((acc, key) => {
36
+ acc[key] = false;
37
+ return acc;
38
+ }, {}),
39
+ activeWindow: null,
40
+ };
41
+ case 'SET_ACTIVE':
42
+ return { ...state, activeWindow: action.id };
43
+ default:
44
+ return state;
45
+ }
46
+ }
47
+ /** Reducer-backed open/close/focus state for any number of named windows. */
48
+ export function useWindowManager(initialWindows = []) {
49
+ const initialState = React.useMemo(() => ({
50
+ windows: initialWindows.reduce((acc, id) => {
51
+ acc[id] = false;
52
+ return acc;
53
+ }, {}),
54
+ activeWindow: null,
55
+ }),
56
+ // eslint-disable-next-line react-hooks/exhaustive-deps
57
+ []);
58
+ const [state, dispatch] = React.useReducer(windowReducer, initialState);
59
+ const openWindows = React.useMemo(() => Object.entries(state.windows).filter(([, isOpen]) => isOpen).map(([id]) => id), [state.windows]);
60
+ const openWindow = React.useCallback((id) => dispatch({ type: 'OPEN', id }), []);
61
+ const closeWindow = React.useCallback((id) => dispatch({ type: 'CLOSE', id }), []);
62
+ const toggleWindow = React.useCallback((id) => dispatch({ type: 'TOGGLE', id }), []);
63
+ const focusWindow = React.useCallback((id) => dispatch({ type: 'SET_ACTIVE', id }), []);
64
+ const closeAllWindows = React.useCallback(() => dispatch({ type: 'CLOSE_ALL' }), []);
65
+ const isOpen = React.useCallback((id) => state.windows[id] ?? false, [state.windows]);
66
+ return {
67
+ windows: state.windows,
68
+ activeWindow: state.activeWindow,
69
+ openWindows,
70
+ openWindow,
71
+ closeWindow,
72
+ toggleWindow,
73
+ focusWindow,
74
+ closeAllWindows,
75
+ isOpen,
76
+ };
77
+ }
78
+ const defaultSettings = {
79
+ theme: 'default',
80
+ colorScheme: 'dark',
81
+ backgroundImage: undefined,
82
+ backgroundColor: undefined,
83
+ dockPosition: 'bottom',
84
+ dockSize: 64,
85
+ dockMagnification: true,
86
+ dockAutoHide: false,
87
+ windowTransparency: 20,
88
+ fontSize: 'medium',
89
+ reducedMotion: false,
90
+ };
91
+ const STORAGE_KEY = 'desktop-settings';
92
+ function loadSettings() {
93
+ if (typeof window === 'undefined')
94
+ return defaultSettings;
95
+ try {
96
+ const stored = window.localStorage.getItem(STORAGE_KEY);
97
+ if (stored)
98
+ return { ...defaultSettings, ...JSON.parse(stored) };
99
+ }
100
+ catch {
101
+ // Ignore a blocked or corrupt store; the defaults still render correctly.
102
+ }
103
+ return defaultSettings;
104
+ }
105
+ function saveSettings(settings) {
106
+ if (typeof window === 'undefined')
107
+ return;
108
+ try {
109
+ window.localStorage.setItem(STORAGE_KEY, JSON.stringify(settings));
110
+ }
111
+ catch {
112
+ // Ignore a full or blocked store; the setting still holds for this session.
113
+ }
114
+ }
115
+ /** Desktop preferences — theme, dock, transparency — mirrored to `localStorage`. */
116
+ export function useDesktopSettings() {
117
+ const [settings, setSettings] = React.useState(loadSettings);
118
+ React.useEffect(() => {
119
+ saveSettings(settings);
120
+ }, [settings]);
121
+ const updateSetting = (key, value) => setSettings((prev) => ({ ...prev, [key]: value }));
122
+ return {
123
+ ...settings,
124
+ setTheme: (theme) => updateSetting('theme', theme),
125
+ setColorScheme: (scheme) => updateSetting('colorScheme', scheme),
126
+ setBackgroundImage: (url) => updateSetting('backgroundImage', url),
127
+ setBackgroundColor: (color) => updateSetting('backgroundColor', color),
128
+ setDockPosition: (position) => updateSetting('dockPosition', position),
129
+ setDockSize: (size) => updateSetting('dockSize', size),
130
+ setDockMagnification: (enabled) => updateSetting('dockMagnification', enabled),
131
+ setDockAutoHide: (enabled) => updateSetting('dockAutoHide', enabled),
132
+ setWindowTransparency: (value) => updateSetting('windowTransparency', value),
133
+ setFontSize: (size) => updateSetting('fontSize', size),
134
+ setReducedMotion: (enabled) => updateSetting('reducedMotion', enabled),
135
+ toggleDarkMode: () => setSettings((prev) => ({ ...prev, colorScheme: prev.colorScheme === 'dark' ? 'light' : 'dark' })),
136
+ resetToDefaults: () => setSettings(defaultSettings),
137
+ };
138
+ }
139
+ /** Open/close state for the desktop's overlays — spotlight, a menu, a modal, a drawer. */
140
+ export function useOverlayManager() {
141
+ const [overlays, setOverlays] = React.useState({
142
+ spotlight: false,
143
+ contextMenu: false,
144
+ modal: false,
145
+ drawer: false,
146
+ });
147
+ const isOpen = React.useCallback((id) => overlays[id] ?? false, [overlays]);
148
+ const open = React.useCallback((id) => setOverlays((prev) => ({ ...prev, [id]: true })), []);
149
+ const close = React.useCallback((id) => setOverlays((prev) => ({ ...prev, [id]: false })), []);
150
+ const toggle = React.useCallback((id) => setOverlays((prev) => ({ ...prev, [id]: !prev[id] })), []);
151
+ const closeAll = React.useCallback(() => setOverlays((prev) => Object.keys(prev).reduce((acc, key) => {
152
+ acc[key] = false;
153
+ return acc;
154
+ }, {})), []);
155
+ return { overlays, isOpen, open, close, toggle, closeAll };
156
+ }
157
+ /** Registers global ⌘/Ctrl-chord shortcuts for the lifetime of the caller. */
158
+ export function useKeyboardShortcuts(shortcuts) {
159
+ React.useEffect(() => {
160
+ const handleKeyDown = (e) => {
161
+ for (const shortcut of shortcuts) {
162
+ const metaMatch = shortcut.meta ? e.metaKey || e.ctrlKey : !e.metaKey;
163
+ const ctrlMatch = shortcut.ctrl ? e.ctrlKey : true;
164
+ const altMatch = shortcut.alt ? e.altKey : !e.altKey;
165
+ const shiftMatch = shortcut.shift ? e.shiftKey : !e.shiftKey;
166
+ const keyMatch = e.key.toLowerCase() === shortcut.key.toLowerCase();
167
+ if (keyMatch && metaMatch && ctrlMatch && altMatch && shiftMatch) {
168
+ if (shortcut.preventDefault !== false)
169
+ e.preventDefault();
170
+ shortcut.action();
171
+ return;
172
+ }
173
+ }
174
+ };
175
+ window.addEventListener('keydown', handleKeyDown);
176
+ return () => window.removeEventListener('keydown', handleKeyDown);
177
+ }, [shortcuts]);
178
+ }
179
+ // ============================================================================
180
+ // Desktop — the surface Window, Spotlight and a Dock render onto
181
+ // ============================================================================
182
+ const Frame = styled(YStack, {
183
+ name: 'Desktop',
184
+ position: 'relative',
185
+ width: '100%',
186
+ height: '100%',
187
+ overflow: 'hidden',
188
+ bg: '$background',
189
+ });
190
+ /**
191
+ * The full-viewport ground of a desktop interface: an optional painted
192
+ * background under a relatively-positioned surface, so absolutely-positioned
193
+ * windows, a dock and a spotlight all measure against this box rather than
194
+ * the document.
195
+ */
196
+ export function Desktop({ background, children, ...props }) {
197
+ return (_jsxs(Frame, { "data-slot": "desktop", ...props, children: [background ? (_jsx(YStack, { "data-slot": "desktop-background", position: "absolute", inset: 0, style: { background } })) : null, _jsx(YStack, { "data-slot": "desktop-surface", position: "relative", width: "100%", height: "100%", children: children })] }));
198
+ }
199
+ //# sourceMappingURL=desktop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop.js","sourceRoot":"","sources":["../../../src/backends/gui/desktop.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAwB3C,SAAS,aAAa,CAAC,KAAyB,EAAE,MAAoB;IACpE,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,EAAE,CAAA;QACtF,KAAK,OAAO;YACV,OAAO;gBACL,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;gBACjD,YAAY,EAAE,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY;aAC3E,CAAA;QACH,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACvC,OAAO;gBACL,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE;gBACnD,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY;aACjG,CAAA;QACH,CAAC;QACD,KAAK,WAAW;YACd,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBACtD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;oBAChB,OAAO,GAAG,CAAA;gBACZ,CAAC,EAAE,EAAiB,CAAC;gBACrB,YAAY,EAAE,IAAI;aACnB,CAAA;QACH,KAAK,YAAY;YACf,OAAO,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,EAAE,CAAA;QAC9C;YACE,OAAO,KAAK,CAAA;IAChB,CAAC;AACH,CAAC;AAcD,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,cAAc,GAAe,EAAE;IAC9D,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAChC,GAAG,EAAE,CAAC,CAAC;QACL,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;YACzC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAA;YACf,OAAO,GAAG,CAAA;QACZ,CAAC,EAAE,EAAiB,CAAC;QACrB,YAAY,EAAE,IAAI;KACnB,CAAC;IACF,uDAAuD;IACvD,EAAE,CACH,CAAA;IACD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;IAEvE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAC/B,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EACpF,CAAC,KAAK,CAAC,OAAO,CAAC,CAChB,CAAA;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAC1F,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAC5F,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9F,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IACjG,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IACpF,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAY,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;IAE/F,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,WAAW;QACX,UAAU;QACV,WAAW;QACX,YAAY;QACZ,WAAW;QACX,eAAe;QACf,MAAM;KACP,CAAA;AACH,CAAC;AAuCD,MAAM,eAAe,GAAoB;IACvC,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,MAAM;IACnB,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,YAAY,EAAE,QAAQ;IACtB,QAAQ,EAAE,EAAE;IACZ,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,KAAK;IACnB,kBAAkB,EAAE,EAAE;IACtB,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE,KAAK;CACrB,CAAA;AAED,MAAM,WAAW,GAAG,kBAAkB,CAAA;AAEtC,SAAS,YAAY;IACnB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,eAAe,CAAA;IACzD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QACvD,IAAI,MAAM;YAAE,OAAO,EAAE,GAAG,eAAe,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAA;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;IAC5E,CAAC;IACD,OAAO,eAAe,CAAA;AACxB,CAAC;AAED,SAAS,YAAY,CAAC,QAAyB;IAC7C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAM;IACzC,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,4EAA4E;IAC9E,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,kBAAkB;IAChC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAkB,YAAY,CAAC,CAAA;IAE7E,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,YAAY,CAAC,QAAQ,CAAC,CAAA;IACxB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,MAAM,aAAa,GAAG,CAAkC,GAAM,EAAE,KAAyB,EAAE,EAAE,CAC3F,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IAEpD,OAAO;QACL,GAAG,QAAQ;QACX,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC;QAClD,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC;QAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,GAAG,CAAC;QAClE,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,KAAK,CAAC;QACtE,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC;QACtE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC;QACtD,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,CAAC;QAC9E,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,OAAO,CAAC;QACpE,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,oBAAoB,EAAE,KAAK,CAAC;QAC5E,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC;QACtD,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC;QACtE,cAAc,EAAE,GAAG,EAAE,CACnB,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACnG,eAAe,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,eAAe,CAAC;KACpD,CAAA;AACH,CAAC;AAuBD,0FAA0F;AAC1F,MAAM,UAAU,iBAAiB;IAC/B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAe;QAC3D,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;KACd,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IACnF,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACpG,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACtG,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAC9B,CAAC,EAAU,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACrE,EAAE,CACH,CAAA;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAChC,GAAG,EAAE,CACH,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CACnB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACpC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QAChB,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAkB,CAAC,CACvB,EACH,EAAE,CACH,CAAA;IAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AAC5D,CAAC;AAiBD,8EAA8E;AAC9E,MAAM,UAAU,oBAAoB,CAAC,SAA6B;IAChE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,aAAa,GAAG,CAAC,CAAgB,EAAE,EAAE;YACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;gBACrE,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;gBAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;gBACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;gBAC5D,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;gBAEnE,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;oBACjE,IAAI,QAAQ,CAAC,cAAc,KAAK,KAAK;wBAAE,CAAC,CAAC,cAAc,EAAE,CAAA;oBACzD,QAAQ,CAAC,MAAM,EAAE,CAAA;oBACjB,OAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC,CAAA;QAED,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;QACjD,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IACnE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,+EAA+E;AAC/E,iEAAiE;AACjE,+EAA+E;AAE/E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;IAC3B,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,QAAQ;IAClB,EAAE,EAAE,aAAa;CAClB,CAAC,CAAA;AAQF;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAgB;IACtE,OAAO,CACL,MAAC,KAAK,iBAAW,SAAS,KAAK,KAAK,aACjC,UAAU,CAAC,CAAC,CAAC,CACZ,KAAC,MAAM,iBAAW,oBAAoB,EAAC,QAAQ,EAAC,UAAU,EAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAI,CAC/F,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,MAAM,iBAAW,iBAAiB,EAAC,QAAQ,EAAC,UAAU,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,YAC/E,QAAQ,GACF,IACH,CACT,CAAA;AACH,CAAC"}
@@ -0,0 +1,26 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DialogStack = DialogStack;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ /**
7
+ * DialogStack — a pile of panels offset diagonally, front one on top.
8
+ *
9
+ * Each dialog is an absolutely positioned card inside a relatively positioned
10
+ * frame; index alone decides both its offset (`translate(index*10, index*10)`)
11
+ * and its stacking (`zIndex: index`), so the last item in `dialogs` reads as the
12
+ * top of the pile. A panel closes through its own corner button, which reports
13
+ * the closed id back through `onClose` — nothing here removes an item from the
14
+ * list, the caller owns that.
15
+ */
16
+ const gui_1 = require("@hanzo/gui");
17
+ const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
18
+ const button_1 = require("./button.cjs");
19
+ const ink_1 = require("./ink.cjs");
20
+ const slot_1 = require("./slot.cjs");
21
+ const gesture_1 = require("./gesture.cjs");
22
+ const OFFSET = 10;
23
+ const CLOSE = 24;
24
+ function DialogStack({ dialogs, onClose, children, ...props }) {
25
+ return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('dialog-stack'), position: "relative", ...props, children: [dialogs.map((dialog, index) => ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('dialog-stack-item'), "data-index": index, position: "absolute", t: 0, l: 0, r: 0, b: 0, rounded: "$5", borderWidth: 1, borderColor: "$borderColor", bg: "$background", p: "$6", gap: "$4", transform: [{ translateX: index * OFFSET }, { translateY: index * OFFSET }], style: { zIndex: index }, children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", justify: "space-between", children: [(0, ink_1.ink)(dialog.title, undefined, { fontSize: '$5', fontWeight: '600' }), (0, jsx_runtime_1.jsx)(button_1.Button, { ...(0, slot_1.slot)('dialog-stack-close'), variant: "ghost", size: "icon", minH: CLOSE, minW: CLOSE, ...(0, gesture_1.touch)(CLOSE), "aria-label": "Close", onPress: () => onClose?.(dialog.id), children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.X, { size: 16 }) })] }), (0, jsx_runtime_1.jsx)(gui_1.YStack, { children: (0, ink_1.ink)(dialog.content) })] }, dialog.id))), children] }));
26
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * DialogStack — a pile of panels offset diagonally, front one on top.
3
+ *
4
+ * Each dialog is an absolutely positioned card inside a relatively positioned
5
+ * frame; index alone decides both its offset (`translate(index*10, index*10)`)
6
+ * and its stacking (`zIndex: index`), so the last item in `dialogs` reads as the
7
+ * top of the pile. A panel closes through its own corner button, which reports
8
+ * the closed id back through `onClose` — nothing here removes an item from the
9
+ * list, the caller owns that.
10
+ */
11
+ import { YStack } from '@hanzo/gui';
12
+ import type { ComponentProps, ReactNode } from 'react';
13
+ export type DialogStackItem = {
14
+ id: string;
15
+ title: ReactNode;
16
+ content: ReactNode;
17
+ };
18
+ export type DialogStackProps = ComponentProps<typeof YStack> & {
19
+ dialogs: DialogStackItem[];
20
+ onClose?: (id: string) => void;
21
+ };
22
+ export declare function DialogStack({ dialogs, onClose, children, ...props }: DialogStackProps): import("react").JSX.Element;
23
+ //# sourceMappingURL=dialog-stack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog-stack.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/dialog-stack.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,OAAO,EAAU,MAAM,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAStD,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,SAAS,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IAC7D,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,CAAA;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,+BA2CrF"}