@luxfi/ui 8.2.7 → 8.2.9

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 (241) hide show
  1. package/dist/3d-model-viewer.cjs +25 -421
  2. package/dist/3d-model-viewer.js +20 -416
  3. package/dist/accordion.cjs +3 -10
  4. package/dist/accordion.js +2 -10
  5. package/dist/advanced-navigation-bar.cjs +5 -401
  6. package/dist/advanced-navigation-bar.js +5 -401
  7. package/dist/ai-agents.cjs +45 -890
  8. package/dist/ai-agents.js +8 -834
  9. package/dist/ai-assistant.cjs +13 -740
  10. package/dist/ai-assistant.js +10 -738
  11. package/dist/ai-chat.cjs +24 -770
  12. package/dist/ai-chat.js +18 -765
  13. package/dist/ai-code.cjs +67 -923
  14. package/dist/ai-code.js +49 -905
  15. package/dist/ai-playground.cjs +25 -801
  16. package/dist/ai-playground.js +18 -795
  17. package/dist/ai-tools.cjs +22 -767
  18. package/dist/ai-tools.js +15 -761
  19. package/dist/ai-vision.cjs +41 -993
  20. package/dist/ai-vision.js +30 -983
  21. package/dist/ai-voice-settings.cjs +35 -1006
  22. package/dist/ai-voice-settings.js +32 -1004
  23. package/dist/ai-voice.cjs +51 -1024
  24. package/dist/ai-voice.js +9 -963
  25. package/dist/alert.cjs +11 -129
  26. package/dist/alert.js +8 -127
  27. package/dist/announcement.cjs +6 -402
  28. package/dist/announcement.js +6 -402
  29. package/dist/app-switcher-navigation-bar.cjs +5 -401
  30. package/dist/app-switcher-navigation-bar.js +5 -401
  31. package/dist/apple-cards-carousel.cjs +84 -480
  32. package/dist/apple-cards-carousel.js +19 -415
  33. package/dist/auth.cjs +10 -387
  34. package/dist/auth.js +7 -385
  35. package/dist/avatar.cjs +2 -9
  36. package/dist/avatar.js +2 -10
  37. package/dist/badge.cjs +8 -228
  38. package/dist/badge.js +5 -210
  39. package/dist/button.cjs +14 -67
  40. package/dist/button.js +12 -65
  41. package/dist/chrome.cjs +29 -493
  42. package/dist/chrome.js +9 -474
  43. package/dist/code-block.cjs +16 -664
  44. package/dist/code-block.js +13 -662
  45. package/dist/code-compare.cjs +28 -1302
  46. package/dist/code-compare.js +18 -1293
  47. package/dist/code-diff.cjs +21 -669
  48. package/dist/code-diff.js +17 -666
  49. package/dist/code-editor.cjs +13 -409
  50. package/dist/code-editor.js +12 -408
  51. package/dist/code-explorer.cjs +14 -456
  52. package/dist/code-explorer.js +13 -456
  53. package/dist/code-preview.cjs +31 -983
  54. package/dist/code-preview.js +23 -976
  55. package/dist/code-snippet.cjs +19 -667
  56. package/dist/code-snippet.js +14 -663
  57. package/dist/code-terminal.cjs +24 -485
  58. package/dist/code-terminal.js +19 -481
  59. package/dist/collapsible.cjs +13 -347
  60. package/dist/collapsible.js +11 -330
  61. package/dist/color-picker.cjs +8 -450
  62. package/dist/color-picker.js +7 -450
  63. package/dist/combobox.cjs +6 -402
  64. package/dist/combobox.js +6 -402
  65. package/dist/communication-navigation-bar.cjs +7 -403
  66. package/dist/communication-navigation-bar.js +5 -401
  67. package/dist/dashboard-navigation-bar.cjs +6 -402
  68. package/dist/dashboard-navigation-bar.js +5 -401
  69. package/dist/dialog-stack.cjs +5 -401
  70. package/dist/dialog-stack.js +5 -401
  71. package/dist/dialog.cjs +13 -70
  72. package/dist/dialog.js +13 -70
  73. package/dist/drawer.cjs +23 -99
  74. package/dist/drawer.js +19 -96
  75. package/dist/e-commerce-navigation-bar.cjs +7 -403
  76. package/dist/e-commerce-navigation-bar.js +5 -401
  77. package/dist/editor.cjs +9 -405
  78. package/dist/editor.js +6 -402
  79. package/dist/iam.cjs +2 -123
  80. package/dist/iam.js +1 -122
  81. package/dist/icon-button.cjs +2 -56
  82. package/dist/icon-button.js +1 -55
  83. package/dist/identity.cjs +28 -242
  84. package/dist/identity.js +20 -235
  85. package/dist/image-crop.cjs +10 -406
  86. package/dist/image-crop.js +7 -403
  87. package/dist/image.cjs +14 -83
  88. package/dist/image.js +13 -67
  89. package/dist/index.cjs +1868 -38770
  90. package/dist/index.js +174 -38320
  91. package/dist/input-group.cjs +3 -10
  92. package/dist/input-group.js +2 -10
  93. package/dist/item.cjs +2 -27
  94. package/dist/item.js +1 -22
  95. package/dist/kanban.cjs +25 -751
  96. package/dist/kanban.js +15 -742
  97. package/dist/limelight-nav.cjs +10 -452
  98. package/dist/limelight-nav.js +9 -452
  99. package/dist/link.cjs +11 -80
  100. package/dist/link.js +6 -60
  101. package/dist/lux.config.cjs +14 -32
  102. package/dist/lux.config.js +3 -26
  103. package/dist/menu.cjs +5 -13
  104. package/dist/menu.js +1 -9
  105. package/dist/message-dock.cjs +5 -401
  106. package/dist/message-dock.js +5 -401
  107. package/dist/mini-calendar.cjs +7 -403
  108. package/dist/mini-calendar.js +6 -402
  109. package/dist/music-player.cjs +30 -528
  110. package/dist/music-player.js +22 -520
  111. package/dist/next.cjs +8 -89
  112. package/dist/next.js +3 -86
  113. package/dist/popover.cjs +17 -74
  114. package/dist/popover.js +16 -73
  115. package/dist/progress-circle.cjs +3 -10
  116. package/dist/progress-circle.js +2 -10
  117. package/dist/provider.cjs +7 -176
  118. package/dist/provider.js +4 -174
  119. package/dist/select.cjs +36 -89
  120. package/dist/select.js +35 -88
  121. package/dist/sidebar.cjs +22 -493
  122. package/dist/sidebar.js +17 -489
  123. package/dist/site/commerce/ui/context.cjs +9 -214
  124. package/dist/site/commerce/ui/context.js +6 -215
  125. package/dist/site/components/analytics.cjs +2 -42
  126. package/dist/site/components/analytics.js +1 -37
  127. package/dist/site/components/auth/callback.cjs +2 -8
  128. package/dist/site/components/auth/callback.js +1 -7
  129. package/dist/site/components/auth/login-panel.cjs +15 -74
  130. package/dist/site/components/auth/login-panel.js +12 -73
  131. package/dist/site/components/auth/login.cjs +2 -6
  132. package/dist/site/components/auth/login.js +1 -5
  133. package/dist/site/components/auth/widget.cjs +2 -6
  134. package/dist/site/components/auth/widget.js +1 -5
  135. package/dist/site/components/commerce/bag-button.cjs +2 -3
  136. package/dist/site/components/commerce/bag-button.js +2 -3
  137. package/dist/site/components/commerce/buy-button.cjs +2 -11
  138. package/dist/site/components/commerce/buy-button.js +1 -10
  139. package/dist/site/components/commerce/checkout-button.cjs +2 -3
  140. package/dist/site/components/commerce/checkout-button.js +2 -3
  141. package/dist/site/components/commerce/checkout-panel/desktop-cp.cjs +15 -173
  142. package/dist/site/components/commerce/checkout-panel/desktop-cp.js +14 -174
  143. package/dist/site/components/commerce/checkout-panel/index.cjs +9 -400
  144. package/dist/site/components/commerce/checkout-panel/index.js +10 -403
  145. package/dist/site/components/commerce/checkout-panel/mobile-cp.cjs +15 -236
  146. package/dist/site/components/commerce/checkout-panel/mobile-cp.js +13 -237
  147. package/dist/site/components/commerce/desktop-bag-popup.cjs +7 -8
  148. package/dist/site/components/commerce/desktop-bag-popup.js +3 -8
  149. package/dist/site/components/commerce/drawer/index.cjs +15 -289
  150. package/dist/site/components/commerce/drawer/index.js +10 -290
  151. package/dist/site/components/commerce/drawer/micro.cjs +8 -115
  152. package/dist/site/components/commerce/drawer/micro.js +4 -115
  153. package/dist/site/components/commerce/drawer/shell.cjs +2 -10
  154. package/dist/site/components/commerce/drawer/shell.js +2 -10
  155. package/dist/site/components/contact-dialog/index.cjs +6 -69
  156. package/dist/site/components/contact-dialog/index.js +7 -71
  157. package/dist/site/components/drawer-margin.cjs +2 -10
  158. package/dist/site/components/drawer-margin.js +2 -10
  159. package/dist/site/components/footer.cjs +11 -81
  160. package/dist/site/components/footer.js +8 -80
  161. package/dist/site/components/header/desktop.cjs +18 -374
  162. package/dist/site/components/header/desktop.js +12 -355
  163. package/dist/site/components/header/index.cjs +9 -674
  164. package/dist/site/components/header/index.js +8 -657
  165. package/dist/site/components/header/mobile-bag-drawer.cjs +6 -71
  166. package/dist/site/components/header/mobile-bag-drawer.js +5 -74
  167. package/dist/site/components/header/mobile-nav-menu-ai.cjs +2 -31
  168. package/dist/site/components/header/mobile-nav-menu-ai.js +1 -26
  169. package/dist/site/components/header/mobile-nav-menu-item.cjs +6 -60
  170. package/dist/site/components/header/mobile-nav-menu-item.js +6 -61
  171. package/dist/site/components/header/mobile-nav-menu.cjs +7 -110
  172. package/dist/site/components/header/mobile-nav-menu.js +7 -112
  173. package/dist/site/components/header/mobile.cjs +25 -330
  174. package/dist/site/components/header/mobile.js +20 -330
  175. package/dist/site/components/icons/index.cjs +34 -35
  176. package/dist/site/components/icons/index.js +5 -33
  177. package/dist/site/components/index.cjs +118 -1961
  178. package/dist/site/components/index.js +23 -1951
  179. package/dist/site/components/mini-chart/index.cjs +7 -90
  180. package/dist/site/components/mini-chart/index.js +1 -92
  181. package/dist/site/components/mini-chart/wrapper.cjs +7 -76
  182. package/dist/site/components/mini-chart/wrapper.js +4 -77
  183. package/dist/site/components/not-found/index.cjs +9 -819
  184. package/dist/site/components/not-found/index.js +8 -802
  185. package/dist/site/components/security/index.cjs +9 -819
  186. package/dist/site/components/security/index.js +8 -802
  187. package/dist/site/next/analytics/index.cjs +16 -49
  188. package/dist/site/next/analytics/index.js +3 -49
  189. package/dist/site/next/analytics/pixel-analytics.cjs +23 -8
  190. package/dist/site/next/analytics/pixel-analytics.js +4 -8
  191. package/dist/site/next/index.cjs +13 -140
  192. package/dist/site/next/index.js +2 -140
  193. package/dist/site/root-layout/index.cjs +12 -1435
  194. package/dist/site/root-layout/index.css +0 -133
  195. package/dist/site/root-layout/index.js +12 -1416
  196. package/dist/site/site-def/footer/community.cjs +11 -27
  197. package/dist/site/site-def/footer/community.js +2 -18
  198. package/dist/site/site-def/footer/company.d.ts +3 -3
  199. package/dist/site/site-def/footer/index.cjs +38 -218
  200. package/dist/site/site-def/footer/index.js +14 -215
  201. package/dist/site/site-def/index.cjs +28 -620
  202. package/dist/site/site-def/index.js +3 -624
  203. package/dist/table.cjs +20 -338
  204. package/dist/table.js +19 -338
  205. package/dist/tabs.cjs +3 -10
  206. package/dist/tabs.js +1 -9
  207. package/dist/tag.cjs +9 -270
  208. package/dist/tag.js +6 -268
  209. package/dist/tags.cjs +6 -314
  210. package/dist/tags.js +5 -314
  211. package/dist/textarea.cjs +4 -50
  212. package/dist/textarea.js +3 -49
  213. package/dist/tooltip.cjs +15 -34
  214. package/dist/tooltip.js +13 -33
  215. package/dist/vite.cjs +3 -82
  216. package/dist/vite.js +1 -80
  217. package/package.json +1 -1
  218. package/dist/index.css +0 -132
  219. package/dist/site/components/auth/login-panel.css +0 -4
  220. package/dist/site/components/commerce/bag-button.css +0 -4
  221. package/dist/site/components/commerce/checkout-button.css +0 -4
  222. package/dist/site/components/commerce/checkout-panel/desktop-cp.css +0 -132
  223. package/dist/site/components/commerce/checkout-panel/index.css +0 -132
  224. package/dist/site/components/commerce/checkout-panel/mobile-cp.css +0 -132
  225. package/dist/site/components/commerce/desktop-bag-popup.css +0 -4
  226. package/dist/site/components/commerce/drawer/index.css +0 -132
  227. package/dist/site/components/commerce/drawer/micro.css +0 -4
  228. package/dist/site/components/header/desktop.css +0 -4
  229. package/dist/site/components/header/index.css +0 -132
  230. package/dist/site/components/header/mobile-bag-drawer.css +0 -4
  231. package/dist/site/components/header/mobile-nav-menu-ai.css +0 -132
  232. package/dist/site/components/header/mobile-nav-menu-item.css +0 -132
  233. package/dist/site/components/header/mobile-nav-menu.css +0 -132
  234. package/dist/site/components/header/mobile.css +0 -132
  235. package/dist/site/components/icons/index.css +0 -4
  236. package/dist/site/components/index.css +0 -132
  237. package/dist/site/components/not-found/index.css +0 -132
  238. package/dist/site/components/security/index.css +0 -132
  239. package/dist/site/site-def/footer/community.css +0 -4
  240. package/dist/site/site-def/footer/index.css +0 -4
  241. package/dist/site/site-def/index.css +0 -4
package/dist/dialog.js CHANGED
@@ -1,67 +1,10 @@
1
1
  'use client';
2
- import { styled, View, Dialog } from '@hanzo/gui';
2
+ import { Dialog } from '@hanzo/gui';
3
3
  import { sx, Box, cn, css } from '@hanzo/ui';
4
- import * as React2 from 'react';
5
- import { jsx, jsxs } from 'react/jsx-runtime';
4
+ import * as React from 'react';
5
+ import { CloseButton } from './close-button.js';
6
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
7
 
7
- var CLOSE_ICON_PATH = "M9.44 8.035a.791.791 0 0 0 1.12 0l3.802-3.803a.791.791 0 0 1 1.119 0l.287.287a.79.79 0 0 1 0 1.119L11.965 9.44a.79.79 0 0 0 0 1.118l3.803 3.803a.791.791 0 0 1 0 1.119l-.287.287a.791.791 0 0 1-1.119 0l-3.803-3.803a.79.79 0 0 0-1.118 0l-3.803 3.803a.79.79 0 0 1-1.119 0l-.287-.287a.791.791 0 0 1 0-1.119l3.803-3.803a.791.791 0 0 0 0-1.118L4.232 5.638a.791.791 0 0 1 0-1.119l.287-.287a.791.791 0 0 1 1.119 0L9.44 8.035Z";
8
- var CloseButtonFrame = styled(View, {
9
- name: "LuxCloseButton",
10
- render: /* @__PURE__ */ jsx("button", { type: "button", "aria-label": "Close" }),
11
- role: "button",
12
- cursor: "pointer",
13
- display: "inline-flex",
14
- alignItems: "center",
15
- justifyContent: "center",
16
- width: 20,
17
- height: 20,
18
- minWidth: 0,
19
- flexShrink: 1,
20
- padding: 0,
21
- borderRadius: 4,
22
- borderWidth: 0,
23
- overflow: "hidden",
24
- backgroundColor: "transparent",
25
- hoverStyle: {
26
- backgroundColor: "transparent"
27
- },
28
- variants: {
29
- disabled: {
30
- true: {
31
- opacity: 0.4,
32
- pointerEvents: "none"
33
- }
34
- }
35
- }
36
- });
37
- var CloseButton = React2.forwardRef(function CloseButton2(props, ref) {
38
- const { variant: _variant, size: _size, className, children, ...rest } = props;
39
- return /* @__PURE__ */ jsx(
40
- CloseButtonFrame,
41
- {
42
- ref,
43
- className,
44
- ...rest,
45
- children: children ?? /* @__PURE__ */ jsx(
46
- "svg",
47
- {
48
- width: 20,
49
- height: 20,
50
- viewBox: "0 0 20 20",
51
- fill: "none",
52
- "aria-hidden": "true",
53
- children: /* @__PURE__ */ jsx(
54
- "path",
55
- {
56
- d: CLOSE_ICON_PATH,
57
- fill: "currentColor"
58
- }
59
- )
60
- }
61
- )
62
- }
63
- );
64
- });
65
8
  function BackToButton({ onClick }) {
66
9
  return /* @__PURE__ */ jsx(
67
10
  Box,
@@ -75,9 +18,9 @@ function BackToButton({ onClick }) {
75
18
  }
76
19
  );
77
20
  }
78
- var DialogSizeContext = React2.createContext({ size: "md" });
21
+ var DialogSizeContext = React.createContext({ size: "md" });
79
22
  function useDialogSizeContext() {
80
- return React2.useContext(DialogSizeContext);
23
+ return React.useContext(DialogSizeContext);
81
24
  }
82
25
  var CONTENT_SIZE_MAP = {
83
26
  sm: "max-w-[400px]",
@@ -109,13 +52,13 @@ var DialogRoot = ({
109
52
  modal = true
110
53
  // motionPreset is intentionally unused -- kept for API compat
111
54
  }) => {
112
- const handleOpenChange = React2.useCallback(
55
+ const handleOpenChange = React.useCallback(
113
56
  (nextOpen) => {
114
57
  onOpenChange?.({ open: nextOpen });
115
58
  },
116
59
  [onOpenChange]
117
60
  );
118
- const ctx = React2.useMemo(() => ({ size }), [size]);
61
+ const ctx = React.useMemo(() => ({ size }), [size]);
119
62
  return /* @__PURE__ */ jsx(DialogSizeContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(
120
63
  Dialog,
121
64
  {
@@ -127,7 +70,7 @@ var DialogRoot = ({
127
70
  }
128
71
  ) });
129
72
  };
130
- var DialogContent = React2.forwardRef(function DialogContent2(props, ref) {
73
+ var DialogContent = React.forwardRef(function DialogContent2(props, ref) {
131
74
  const {
132
75
  children,
133
76
  portalled: _portalled = true,
@@ -184,11 +127,11 @@ var DialogContent = React2.forwardRef(function DialogContent2(props, ref) {
184
127
  )
185
128
  ] });
186
129
  });
187
- var DialogCloseTrigger = React2.forwardRef(function DialogCloseTrigger2(props, ref) {
130
+ var DialogCloseTrigger = React.forwardRef(function DialogCloseTrigger2(props, ref) {
188
131
  const { className, ...rest } = props;
189
132
  return /* @__PURE__ */ jsx(Dialog.Close, { asChild: true, children: /* @__PURE__ */ jsx(CloseButton, { ref, className, ...rest, children: props.children }) });
190
133
  });
191
- var DialogHeader = React2.forwardRef(function DialogHeader2(props, ref) {
134
+ var DialogHeader = React.forwardRef(function DialogHeader2(props, ref) {
192
135
  const { startElement: startElementProp, onBackToClick, className, children, ...rest } = props;
193
136
  const startElement = startElementProp ?? (onBackToClick ? /* @__PURE__ */ jsx(BackToButton, { onClick: onBackToClick }) : void 0);
194
137
  return /* @__PURE__ */ jsxs(
@@ -218,7 +161,7 @@ var DialogHeader = React2.forwardRef(function DialogHeader2(props, ref) {
218
161
  }
219
162
  );
220
163
  });
221
- var DialogBody = React2.forwardRef(function DialogBody2({ className, pt, display, flexDir, style: styleProp, ...props }, ref) {
164
+ var DialogBody = React.forwardRef(function DialogBody2({ className, pt, display, flexDir, style: styleProp, ...props }, ref) {
222
165
  const bodyStyle = {
223
166
  ...styleProp,
224
167
  ...pt !== void 0 ? { paddingTop: typeof pt === "number" ? `${pt * 4}px` : pt } : {},
@@ -235,7 +178,7 @@ var DialogBody = React2.forwardRef(function DialogBody2({ className, pt, display
235
178
  }
236
179
  );
237
180
  });
238
- var DialogFooter = React2.forwardRef(function DialogFooter2({ className, ...props }, ref) {
181
+ var DialogFooter = React.forwardRef(function DialogFooter2({ className, ...props }, ref) {
239
182
  return /* @__PURE__ */ jsx(
240
183
  Box,
241
184
  {
package/dist/drawer.cjs CHANGED
@@ -2,7 +2,10 @@
2
2
  'use strict';
3
3
 
4
4
  var gui = require('@hanzo/gui');
5
- var React3 = require('react');
5
+ var React = require('react');
6
+ var closeButton_cjs = require('./close-button.cjs');
7
+ var ink_cjs = require('./ink.cjs');
8
+ var useNarrow_cjs = require('./use-narrow.cjs');
6
9
  var jsxRuntime = require('react/jsx-runtime');
7
10
 
8
11
  function _interopNamespace(e) {
@@ -23,90 +26,11 @@ function _interopNamespace(e) {
23
26
  return Object.freeze(n);
24
27
  }
25
28
 
26
- var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
29
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
27
30
 
28
- var CLOSE_ICON_PATH = "M9.44 8.035a.791.791 0 0 0 1.12 0l3.802-3.803a.791.791 0 0 1 1.119 0l.287.287a.79.79 0 0 1 0 1.119L11.965 9.44a.79.79 0 0 0 0 1.118l3.803 3.803a.791.791 0 0 1 0 1.119l-.287.287a.791.791 0 0 1-1.119 0l-3.803-3.803a.79.79 0 0 0-1.118 0l-3.803 3.803a.79.79 0 0 1-1.119 0l-.287-.287a.791.791 0 0 1 0-1.119l3.803-3.803a.791.791 0 0 0 0-1.118L4.232 5.638a.791.791 0 0 1 0-1.119l.287-.287a.791.791 0 0 1 1.119 0L9.44 8.035Z";
29
- var CloseButtonFrame = gui.styled(gui.View, {
30
- name: "LuxCloseButton",
31
- render: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", "aria-label": "Close" }),
32
- role: "button",
33
- cursor: "pointer",
34
- display: "inline-flex",
35
- alignItems: "center",
36
- justifyContent: "center",
37
- width: 20,
38
- height: 20,
39
- minWidth: 0,
40
- flexShrink: 1,
41
- padding: 0,
42
- borderRadius: 4,
43
- borderWidth: 0,
44
- overflow: "hidden",
45
- backgroundColor: "transparent",
46
- hoverStyle: {
47
- backgroundColor: "transparent"
48
- },
49
- variants: {
50
- disabled: {
51
- true: {
52
- opacity: 0.4,
53
- pointerEvents: "none"
54
- }
55
- }
56
- }
57
- });
58
- var CloseButton = React3__namespace.forwardRef(function CloseButton2(props, ref) {
59
- const { variant: _variant, size: _size, className, children, ...rest } = props;
60
- return /* @__PURE__ */ jsxRuntime.jsx(
61
- CloseButtonFrame,
62
- {
63
- ref,
64
- className,
65
- ...rest,
66
- children: children ?? /* @__PURE__ */ jsxRuntime.jsx(
67
- "svg",
68
- {
69
- width: 20,
70
- height: 20,
71
- viewBox: "0 0 20 20",
72
- fill: "none",
73
- "aria-hidden": "true",
74
- children: /* @__PURE__ */ jsxRuntime.jsx(
75
- "path",
76
- {
77
- d: CLOSE_ICON_PATH,
78
- fill: "currentColor"
79
- }
80
- )
81
- }
82
- )
83
- }
84
- );
85
- });
86
- var ink = (children, Wrap = gui.Text, props = {}) => {
87
- let hasText = false;
88
- React3.Children.forEach(children, (child) => {
89
- if (typeof child === "string" || typeof child === "number") hasText = true;
90
- });
91
- if (!hasText) return children;
92
- return React3.Children.map(children, (child) => typeof child === "string" || typeof child === "number" ? React3.createElement(Wrap, props, child) : child);
93
- };
94
- var NARROW_PX = 640;
95
- function useBelow(px) {
96
- const [below, setBelow] = React3__namespace.useState(false);
97
- React3__namespace.useEffect(() => {
98
- const mql = window.matchMedia(`(max-width: ${px - 1}px)`);
99
- const apply = () => setBelow(mql.matches);
100
- apply();
101
- mql.addEventListener("change", apply);
102
- return () => mql.removeEventListener("change", apply);
103
- }, [px]);
104
- return below;
105
- }
106
- var useIsNarrow = () => useBelow(NARROW_PX);
107
- var DrawerPlacementContext = React3__namespace.createContext("right");
108
- var DrawerSizeContext = React3__namespace.createContext("md");
109
- var DrawerStateContext = React3__namespace.createContext({
31
+ var DrawerPlacementContext = React__namespace.createContext("right");
32
+ var DrawerSizeContext = React__namespace.createContext("md");
33
+ var DrawerStateContext = React__namespace.createContext({
110
34
  open: false,
111
35
  setOpen: () => {
112
36
  },
@@ -123,15 +47,15 @@ var DrawerRoot = (props) => {
123
47
  modal = true,
124
48
  size = "md"
125
49
  } = props;
126
- const [uncontrolled, setUncontrolled] = React3__namespace.useState(defaultOpen ?? false);
50
+ const [uncontrolled, setUncontrolled] = React__namespace.useState(defaultOpen ?? false);
127
51
  const isControlled = open !== void 0;
128
52
  const isOpen = isControlled ? open : uncontrolled;
129
- const narrow = useIsNarrow();
130
- const setOpen = React3__namespace.useCallback((nextOpen) => {
53
+ const narrow = useNarrow_cjs.useIsNarrow();
54
+ const setOpen = React__namespace.useCallback((nextOpen) => {
131
55
  if (!isControlled) setUncontrolled(nextOpen);
132
56
  onOpenChange?.({ open: nextOpen });
133
57
  }, [isControlled, onOpenChange]);
134
- const state = React3__namespace.useMemo(
58
+ const state = React__namespace.useMemo(
135
59
  () => ({ open: isOpen, setOpen, modal, narrow }),
136
60
  [isOpen, setOpen, modal, narrow]
137
61
  );
@@ -153,12 +77,12 @@ var ACROSS = {
153
77
  };
154
78
  var extent = (placement, size) => placement === "left" || placement === "right" ? { width: ACROSS[size], maxWidth: "100%" } : { height: ACROSS[size], maxHeight: "100%" };
155
79
  var SCRIM = "rgba(0,0,0,0.5)";
156
- var DrawerContent = React3__namespace.forwardRef(
80
+ var DrawerContent = React__namespace.forwardRef(
157
81
  function DrawerContent2(props, ref) {
158
82
  const { children, portalled = true, portalRef: _portalRef, offset: _offset, backdrop = true, ...rest } = props;
159
- const placement = React3__namespace.useContext(DrawerPlacementContext);
160
- const size = React3__namespace.useContext(DrawerSizeContext);
161
- const { open, setOpen, modal, narrow } = React3__namespace.useContext(DrawerStateContext);
83
+ const placement = React__namespace.useContext(DrawerPlacementContext);
84
+ const size = React__namespace.useContext(DrawerSizeContext);
85
+ const { open, setOpen, modal, narrow } = React__namespace.useContext(DrawerStateContext);
162
86
  if (narrow) {
163
87
  return /* @__PURE__ */ jsxRuntime.jsxs(
164
88
  gui.Sheet,
@@ -236,23 +160,23 @@ var DrawerContent = React3__namespace.forwardRef(
236
160
  return portalled ? /* @__PURE__ */ jsxRuntime.jsx(gui.Dialog.Portal, { children: content }) : content;
237
161
  }
238
162
  );
239
- var DrawerCloseTrigger = React3__namespace.forwardRef(function DrawerCloseTrigger2(props, ref) {
163
+ var DrawerCloseTrigger = React__namespace.forwardRef(function DrawerCloseTrigger2(props, ref) {
240
164
  return (
241
165
  // Placement belongs to the surrounding box, not to the button: CloseButton
242
166
  // is a fixed 20px control and has no opinion about where it sits.
243
- /* @__PURE__ */ jsxRuntime.jsx(gui.View, { position: "absolute", top: 28, right: 20, zIndex: 1, children: /* @__PURE__ */ jsxRuntime.jsx(gui.Dialog.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { ref, ...props }) }) })
167
+ /* @__PURE__ */ jsxRuntime.jsx(gui.View, { position: "absolute", top: 28, right: 20, zIndex: 1, children: /* @__PURE__ */ jsxRuntime.jsx(gui.Dialog.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(closeButton_cjs.CloseButton, { ref, ...props }) }) })
244
168
  );
245
169
  });
246
170
  var DrawerTrigger = ({ asChild = true, children, ...rest }) => {
247
- const { setOpen, narrow } = React3__namespace.useContext(DrawerStateContext);
171
+ const { setOpen, narrow } = React__namespace.useContext(DrawerStateContext);
248
172
  if (narrow) {
249
- return React3__namespace.isValidElement(children) ? React3__namespace.cloneElement(children, { onClick: () => setOpen(true) }) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
173
+ return React__namespace.isValidElement(children) ? React__namespace.cloneElement(children, { onClick: () => setOpen(true) }) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
250
174
  }
251
175
  return /* @__PURE__ */ jsxRuntime.jsx(gui.Dialog.Trigger, { asChild, ...rest, children });
252
176
  };
253
- var DrawerHeader = ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(gui.YStack, { gap: 6, padding: 24, paddingBottom: 0, ...props, children: ink(children) });
254
- var DrawerBody = ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(gui.YStack, { flex: 1, overflow: "scroll", padding: 24, ...props, children: ink(children) });
255
- var DrawerFooter = ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(gui.XStack, { alignItems: "center", justifyContent: "flex-end", gap: 8, padding: 24, paddingTop: 0, ...props, children: ink(children) });
177
+ var DrawerHeader = ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(gui.YStack, { gap: 6, padding: 24, paddingBottom: 0, ...props, children: ink_cjs.ink(children) });
178
+ var DrawerBody = ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(gui.YStack, { flex: 1, overflow: "scroll", padding: 24, ...props, children: ink_cjs.ink(children) });
179
+ var DrawerFooter = ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(gui.XStack, { alignItems: "center", justifyContent: "flex-end", gap: 8, padding: 24, paddingTop: 0, ...props, children: ink_cjs.ink(children) });
256
180
  var DrawerTitle = gui.Dialog.Title;
257
181
  var DrawerDescription = gui.Dialog.Description;
258
182
  var DrawerActionTrigger = gui.Dialog.Close;
package/dist/drawer.js CHANGED
@@ -1,91 +1,14 @@
1
1
  'use client';
2
- import { styled, View, Sheet, Dialog, YStack, Text, XStack } from '@hanzo/gui';
3
- import * as React3 from 'react';
4
- import { Children, createElement } from 'react';
5
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { Sheet, Dialog, View, YStack, XStack } from '@hanzo/gui';
3
+ import * as React from 'react';
4
+ import { CloseButton } from './close-button.js';
5
+ import { ink } from './ink.js';
6
+ import { useIsNarrow } from './use-narrow.js';
7
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
6
8
 
7
- var CLOSE_ICON_PATH = "M9.44 8.035a.791.791 0 0 0 1.12 0l3.802-3.803a.791.791 0 0 1 1.119 0l.287.287a.79.79 0 0 1 0 1.119L11.965 9.44a.79.79 0 0 0 0 1.118l3.803 3.803a.791.791 0 0 1 0 1.119l-.287.287a.791.791 0 0 1-1.119 0l-3.803-3.803a.79.79 0 0 0-1.118 0l-3.803 3.803a.79.79 0 0 1-1.119 0l-.287-.287a.791.791 0 0 1 0-1.119l3.803-3.803a.791.791 0 0 0 0-1.118L4.232 5.638a.791.791 0 0 1 0-1.119l.287-.287a.791.791 0 0 1 1.119 0L9.44 8.035Z";
8
- var CloseButtonFrame = styled(View, {
9
- name: "LuxCloseButton",
10
- render: /* @__PURE__ */ jsx("button", { type: "button", "aria-label": "Close" }),
11
- role: "button",
12
- cursor: "pointer",
13
- display: "inline-flex",
14
- alignItems: "center",
15
- justifyContent: "center",
16
- width: 20,
17
- height: 20,
18
- minWidth: 0,
19
- flexShrink: 1,
20
- padding: 0,
21
- borderRadius: 4,
22
- borderWidth: 0,
23
- overflow: "hidden",
24
- backgroundColor: "transparent",
25
- hoverStyle: {
26
- backgroundColor: "transparent"
27
- },
28
- variants: {
29
- disabled: {
30
- true: {
31
- opacity: 0.4,
32
- pointerEvents: "none"
33
- }
34
- }
35
- }
36
- });
37
- var CloseButton = React3.forwardRef(function CloseButton2(props, ref) {
38
- const { variant: _variant, size: _size, className, children, ...rest } = props;
39
- return /* @__PURE__ */ jsx(
40
- CloseButtonFrame,
41
- {
42
- ref,
43
- className,
44
- ...rest,
45
- children: children ?? /* @__PURE__ */ jsx(
46
- "svg",
47
- {
48
- width: 20,
49
- height: 20,
50
- viewBox: "0 0 20 20",
51
- fill: "none",
52
- "aria-hidden": "true",
53
- children: /* @__PURE__ */ jsx(
54
- "path",
55
- {
56
- d: CLOSE_ICON_PATH,
57
- fill: "currentColor"
58
- }
59
- )
60
- }
61
- )
62
- }
63
- );
64
- });
65
- var ink = (children, Wrap = Text, props = {}) => {
66
- let hasText = false;
67
- Children.forEach(children, (child) => {
68
- if (typeof child === "string" || typeof child === "number") hasText = true;
69
- });
70
- if (!hasText) return children;
71
- return Children.map(children, (child) => typeof child === "string" || typeof child === "number" ? createElement(Wrap, props, child) : child);
72
- };
73
- var NARROW_PX = 640;
74
- function useBelow(px) {
75
- const [below, setBelow] = React3.useState(false);
76
- React3.useEffect(() => {
77
- const mql = window.matchMedia(`(max-width: ${px - 1}px)`);
78
- const apply = () => setBelow(mql.matches);
79
- apply();
80
- mql.addEventListener("change", apply);
81
- return () => mql.removeEventListener("change", apply);
82
- }, [px]);
83
- return below;
84
- }
85
- var useIsNarrow = () => useBelow(NARROW_PX);
86
- var DrawerPlacementContext = React3.createContext("right");
87
- var DrawerSizeContext = React3.createContext("md");
88
- var DrawerStateContext = React3.createContext({
9
+ var DrawerPlacementContext = React.createContext("right");
10
+ var DrawerSizeContext = React.createContext("md");
11
+ var DrawerStateContext = React.createContext({
89
12
  open: false,
90
13
  setOpen: () => {
91
14
  },
@@ -102,15 +25,15 @@ var DrawerRoot = (props) => {
102
25
  modal = true,
103
26
  size = "md"
104
27
  } = props;
105
- const [uncontrolled, setUncontrolled] = React3.useState(defaultOpen ?? false);
28
+ const [uncontrolled, setUncontrolled] = React.useState(defaultOpen ?? false);
106
29
  const isControlled = open !== void 0;
107
30
  const isOpen = isControlled ? open : uncontrolled;
108
31
  const narrow = useIsNarrow();
109
- const setOpen = React3.useCallback((nextOpen) => {
32
+ const setOpen = React.useCallback((nextOpen) => {
110
33
  if (!isControlled) setUncontrolled(nextOpen);
111
34
  onOpenChange?.({ open: nextOpen });
112
35
  }, [isControlled, onOpenChange]);
113
- const state = React3.useMemo(
36
+ const state = React.useMemo(
114
37
  () => ({ open: isOpen, setOpen, modal, narrow }),
115
38
  [isOpen, setOpen, modal, narrow]
116
39
  );
@@ -132,12 +55,12 @@ var ACROSS = {
132
55
  };
133
56
  var extent = (placement, size) => placement === "left" || placement === "right" ? { width: ACROSS[size], maxWidth: "100%" } : { height: ACROSS[size], maxHeight: "100%" };
134
57
  var SCRIM = "rgba(0,0,0,0.5)";
135
- var DrawerContent = React3.forwardRef(
58
+ var DrawerContent = React.forwardRef(
136
59
  function DrawerContent2(props, ref) {
137
60
  const { children, portalled = true, portalRef: _portalRef, offset: _offset, backdrop = true, ...rest } = props;
138
- const placement = React3.useContext(DrawerPlacementContext);
139
- const size = React3.useContext(DrawerSizeContext);
140
- const { open, setOpen, modal, narrow } = React3.useContext(DrawerStateContext);
61
+ const placement = React.useContext(DrawerPlacementContext);
62
+ const size = React.useContext(DrawerSizeContext);
63
+ const { open, setOpen, modal, narrow } = React.useContext(DrawerStateContext);
141
64
  if (narrow) {
142
65
  return /* @__PURE__ */ jsxs(
143
66
  Sheet,
@@ -215,7 +138,7 @@ var DrawerContent = React3.forwardRef(
215
138
  return portalled ? /* @__PURE__ */ jsx(Dialog.Portal, { children: content }) : content;
216
139
  }
217
140
  );
218
- var DrawerCloseTrigger = React3.forwardRef(function DrawerCloseTrigger2(props, ref) {
141
+ var DrawerCloseTrigger = React.forwardRef(function DrawerCloseTrigger2(props, ref) {
219
142
  return (
220
143
  // Placement belongs to the surrounding box, not to the button: CloseButton
221
144
  // is a fixed 20px control and has no opinion about where it sits.
@@ -223,9 +146,9 @@ var DrawerCloseTrigger = React3.forwardRef(function DrawerCloseTrigger2(props, r
223
146
  );
224
147
  });
225
148
  var DrawerTrigger = ({ asChild = true, children, ...rest }) => {
226
- const { setOpen, narrow } = React3.useContext(DrawerStateContext);
149
+ const { setOpen, narrow } = React.useContext(DrawerStateContext);
227
150
  if (narrow) {
228
- return React3.isValidElement(children) ? React3.cloneElement(children, { onClick: () => setOpen(true) }) : /* @__PURE__ */ jsx(Fragment, { children });
151
+ return React.isValidElement(children) ? React.cloneElement(children, { onClick: () => setOpen(true) }) : /* @__PURE__ */ jsx(Fragment, { children });
229
152
  }
230
153
  return /* @__PURE__ */ jsx(Dialog.Trigger, { asChild, ...rest, children });
231
154
  };