@luxfi/ui 7.4.10 → 7.4.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accordion.cjs +107 -166
- package/dist/accordion.d.cts +18 -51
- package/dist/accordion.d.ts +18 -51
- package/dist/accordion.js +109 -166
- package/dist/alert.cjs +68 -46
- package/dist/alert.js +69 -46
- package/dist/avatar.cjs +49 -46
- package/dist/avatar.js +52 -48
- package/dist/badge.cjs +82 -49
- package/dist/badge.js +83 -50
- package/dist/checkbox.cjs +42 -75
- package/dist/checkbox.js +43 -76
- package/dist/chrome.cjs +196 -386
- package/dist/chrome.js +198 -386
- package/dist/close-button.cjs +3 -7
- package/dist/close-button.js +3 -7
- package/dist/collapsible.cjs +35 -26
- package/dist/collapsible.d.cts +2 -1
- package/dist/collapsible.d.ts +2 -1
- package/dist/collapsible.js +34 -24
- package/dist/dialog.cjs +3 -7
- package/dist/dialog.d.cts +1 -1
- package/dist/dialog.d.ts +1 -1
- package/dist/dialog.js +3 -7
- package/dist/drawer.cjs +95 -122
- package/dist/drawer.d.cts +43 -10
- package/dist/drawer.d.ts +43 -10
- package/dist/drawer.js +97 -122
- package/dist/empty-state.cjs +13 -13
- package/dist/empty-state.js +13 -13
- package/dist/expiration-selector.cjs +58 -63
- package/dist/expiration-selector.js +58 -63
- package/dist/field.cjs +60 -109
- package/dist/field.d.cts +0 -1
- package/dist/field.d.ts +0 -1
- package/dist/field.js +61 -109
- package/dist/greeks-display.cjs +48 -39
- package/dist/greeks-display.js +48 -39
- package/dist/heading.cjs +10 -17
- package/dist/heading.d.cts +0 -2
- package/dist/heading.d.ts +0 -2
- package/dist/heading.js +10 -17
- package/dist/icon-button.cjs +82 -82
- package/dist/icon-button.d.cts +16 -12
- package/dist/icon-button.d.ts +16 -12
- package/dist/icon-button.js +82 -82
- package/dist/index.cjs +1812 -2105
- package/dist/index.d.cts +1 -5
- package/dist/index.d.ts +1 -5
- package/dist/index.js +1814 -2100
- package/dist/input-group.cjs +11 -12
- package/dist/input-group.js +11 -12
- package/dist/input.cjs +27 -27
- package/dist/input.d.cts +21 -1
- package/dist/input.d.ts +21 -1
- package/dist/input.js +25 -28
- package/dist/menu.cjs +160 -271
- package/dist/menu.d.cts +41 -57
- package/dist/menu.d.ts +41 -57
- package/dist/menu.js +161 -251
- package/dist/option-chain.cjs +89 -67
- package/dist/option-chain.js +89 -67
- package/dist/option-position.cjs +88 -85
- package/dist/option-position.js +88 -85
- package/dist/pnl-diagram.cjs +20 -20
- package/dist/pnl-diagram.js +20 -20
- package/dist/popover.cjs +4 -8
- package/dist/popover.js +4 -8
- package/dist/progress.cjs +15 -22
- package/dist/progress.d.cts +6 -6
- package/dist/progress.d.ts +6 -6
- package/dist/progress.js +15 -22
- package/dist/radio.cjs +35 -67
- package/dist/radio.d.cts +18 -18
- package/dist/radio.d.ts +18 -18
- package/dist/radio.js +36 -68
- package/dist/select.cjs +40 -39
- package/dist/select.d.cts +35 -4
- package/dist/select.d.ts +35 -4
- package/dist/select.js +40 -38
- package/dist/separator.cjs +8 -33
- package/dist/separator.js +8 -33
- package/dist/slider.cjs +33 -49
- package/dist/slider.js +34 -50
- package/dist/switch.cjs +48 -55
- package/dist/switch.js +49 -56
- package/dist/tabs.cjs +108 -197
- package/dist/tabs.d.cts +16 -60
- package/dist/tabs.d.ts +16 -60
- package/dist/tabs.js +109 -196
- package/dist/tag.cjs +112 -69
- package/dist/tag.js +113 -69
- package/dist/textarea.cjs +56 -27
- package/dist/textarea.js +57 -28
- package/dist/toaster.cjs +97 -79
- package/dist/toaster.d.cts +7 -8
- package/dist/toaster.d.ts +7 -8
- package/dist/toaster.js +78 -80
- package/dist/tooltip.cjs +28 -17
- package/dist/tooltip.js +30 -18
- package/package.json +2 -16
- package/src/accordion.tsx +173 -227
- package/src/alert.tsx +78 -45
- package/src/avatar.tsx +54 -37
- package/src/badge.tsx +65 -44
- package/src/checkbox.tsx +70 -89
- package/src/close-button.tsx +3 -8
- package/src/collapsible.tsx +55 -52
- package/src/drawer.tsx +123 -115
- package/src/empty-state.tsx +21 -17
- package/src/expiration-selector.tsx +84 -66
- package/src/field.tsx +68 -124
- package/src/greeks-display.tsx +59 -51
- package/src/heading.tsx +22 -26
- package/src/icon-button.tsx +134 -141
- package/src/ink.tsx +37 -0
- package/src/input-group.tsx +59 -36
- package/src/input.tsx +41 -32
- package/src/menu.tsx +224 -397
- package/src/option-chain.tsx +154 -104
- package/src/option-position.tsx +136 -114
- package/src/pin-input.tsx +37 -29
- package/src/pnl-diagram.tsx +36 -28
- package/src/popover.tsx +1 -1
- package/src/progress.tsx +17 -21
- package/src/radio.tsx +56 -75
- package/src/select.tsx +80 -59
- package/src/separator.tsx +13 -34
- package/src/slider.tsx +43 -44
- package/src/strategy-builder.tsx +245 -156
- package/src/switch.tsx +63 -64
- package/src/tabs.tsx +166 -296
- package/src/tag.tsx +89 -51
- package/src/textarea.tsx +19 -29
- package/src/toaster.tsx +118 -86
- package/src/tooltip.tsx +21 -13
- package/tokens.css +79 -0
package/dist/badge.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
+
var gui = require('@hanzo/gui');
|
|
4
5
|
var React3 = require('react');
|
|
5
6
|
var clsx = require('clsx');
|
|
6
7
|
var tailwindMerge = require('tailwind-merge');
|
|
7
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
-
var gui = require('@hanzo/gui');
|
|
9
9
|
var usehooks = require('@uidotdev/usehooks');
|
|
10
10
|
|
|
11
11
|
function _interopNamespace(e) {
|
|
@@ -215,6 +215,14 @@ React3__namespace.forwardRef(
|
|
|
215
215
|
)) });
|
|
216
216
|
}
|
|
217
217
|
);
|
|
218
|
+
var ink = (children, Wrap = gui.Text, props = {}) => {
|
|
219
|
+
let hasText = false;
|
|
220
|
+
React3.Children.forEach(children, (child) => {
|
|
221
|
+
if (typeof child === "string" || typeof child === "number") hasText = true;
|
|
222
|
+
});
|
|
223
|
+
if (!hasText) return children;
|
|
224
|
+
return React3.Children.map(children, (child) => typeof child === "string" || typeof child === "number" ? React3.createElement(Wrap, props, child) : child);
|
|
225
|
+
};
|
|
218
226
|
var TOUCH_PX = 1024;
|
|
219
227
|
function useBelow(px) {
|
|
220
228
|
const [below, setBelow] = React3__namespace.useState(false);
|
|
@@ -319,14 +327,21 @@ var Tooltip = React3__namespace.forwardRef(
|
|
|
319
327
|
{
|
|
320
328
|
ref,
|
|
321
329
|
unstyled: true,
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
+
zIndex: 9999,
|
|
331
|
+
overflow: "hidden",
|
|
332
|
+
borderRadius: 8,
|
|
333
|
+
paddingHorizontal: 12,
|
|
334
|
+
paddingVertical: 8,
|
|
335
|
+
maxWidth: isPopover ? 384 : 320,
|
|
336
|
+
backgroundColor: isPopover ? "var(--color-popover-bg)" : "var(--color-tooltip-bg)",
|
|
337
|
+
transition: "quick",
|
|
338
|
+
enterStyle: { opacity: 0, scale: 0.95 },
|
|
339
|
+
exitStyle: { opacity: 0, scale: 0.95 },
|
|
340
|
+
...isPopover ? {
|
|
341
|
+
borderWidth: 1,
|
|
342
|
+
borderColor: "var(--color-border-divider)",
|
|
343
|
+
shadowColor: "var(--shadow-popover)"
|
|
344
|
+
} : {},
|
|
330
345
|
onClick: interactive ? handleContentClick : void 0,
|
|
331
346
|
...selected ? { "data-selected": true } : {},
|
|
332
347
|
...contentProps,
|
|
@@ -335,12 +350,13 @@ var Tooltip = React3__namespace.forwardRef(
|
|
|
335
350
|
gui.Tooltip.Arrow,
|
|
336
351
|
{
|
|
337
352
|
unstyled: true,
|
|
338
|
-
|
|
339
|
-
isPopover ? "fill-[var(--color-popover-bg)]" : "fill-[var(--color-tooltip-bg)]"
|
|
340
|
-
)
|
|
353
|
+
backgroundColor: isPopover ? "var(--color-popover-bg)" : "var(--color-tooltip-bg)"
|
|
341
354
|
}
|
|
342
355
|
),
|
|
343
|
-
content
|
|
356
|
+
ink(content, void 0, {
|
|
357
|
+
fontSize: 14,
|
|
358
|
+
color: isPopover ? "var(--color-text-primary)" : "var(--color-tooltip-fg)"
|
|
359
|
+
})
|
|
344
360
|
]
|
|
345
361
|
}
|
|
346
362
|
)
|
|
@@ -352,35 +368,39 @@ var Tooltip = React3__namespace.forwardRef(
|
|
|
352
368
|
function TruncatedTextTooltip({ label, children }) {
|
|
353
369
|
return /* @__PURE__ */ jsxRuntime.jsx(Tooltip, { content: label, positioning: { placement: "top" }, children });
|
|
354
370
|
}
|
|
355
|
-
var
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
371
|
+
var SIZE = {
|
|
372
|
+
sm: { padding: 4, height: 18, minHeight: 18 },
|
|
373
|
+
md: { paddingHorizontal: 4, paddingVertical: 2, minHeight: 24 },
|
|
374
|
+
lg: { paddingHorizontal: 8, paddingVertical: 4, minHeight: 28 }
|
|
375
|
+
};
|
|
376
|
+
var SIZE_TEXT = {
|
|
377
|
+
sm: { fontSize: 12, fontWeight: "500" },
|
|
378
|
+
md: { fontSize: 14, fontWeight: "500" },
|
|
379
|
+
lg: { fontSize: 14, fontWeight: "600" }
|
|
360
380
|
};
|
|
361
|
-
var
|
|
362
|
-
gray: "
|
|
363
|
-
green: "
|
|
364
|
-
red: "
|
|
365
|
-
purple: "
|
|
366
|
-
orange: "
|
|
367
|
-
blue: "
|
|
368
|
-
yellow: "
|
|
369
|
-
teal: "
|
|
370
|
-
cyan: "
|
|
371
|
-
pink: "
|
|
372
|
-
purple_alt: "
|
|
373
|
-
blue_alt: "
|
|
374
|
-
bright_gray: "
|
|
375
|
-
bright_green: "
|
|
376
|
-
bright_red: "
|
|
377
|
-
bright_blue: "
|
|
378
|
-
bright_yellow: "
|
|
379
|
-
bright_teal: "
|
|
380
|
-
bright_cyan: "
|
|
381
|
-
bright_orange: "
|
|
382
|
-
bright_purple: "
|
|
383
|
-
bright_pink: "
|
|
381
|
+
var COLOR_PALETTE = {
|
|
382
|
+
gray: { bg: "var(--color-badge-gray-bg)", fg: "var(--color-badge-gray-fg)" },
|
|
383
|
+
green: { bg: "var(--color-badge-green-bg)", fg: "var(--color-badge-green-fg)" },
|
|
384
|
+
red: { bg: "var(--color-badge-red-bg)", fg: "var(--color-badge-red-fg)" },
|
|
385
|
+
purple: { bg: "var(--color-badge-purple-bg)", fg: "var(--color-badge-purple-fg)" },
|
|
386
|
+
orange: { bg: "var(--color-badge-orange-bg)", fg: "var(--color-badge-orange-fg)" },
|
|
387
|
+
blue: { bg: "var(--color-badge-blue-bg)", fg: "var(--color-badge-blue-fg)" },
|
|
388
|
+
yellow: { bg: "var(--color-badge-yellow-bg)", fg: "var(--color-badge-yellow-fg)" },
|
|
389
|
+
teal: { bg: "var(--color-badge-teal-bg)", fg: "var(--color-badge-teal-fg)" },
|
|
390
|
+
cyan: { bg: "var(--color-badge-cyan-bg)", fg: "var(--color-badge-cyan-fg)" },
|
|
391
|
+
pink: { bg: "var(--color-badge-pink-bg)", fg: "var(--color-badge-pink-fg)" },
|
|
392
|
+
purple_alt: { bg: "var(--color-badge-purple-alt-bg)", fg: "var(--color-badge-purple-alt-fg)" },
|
|
393
|
+
blue_alt: { bg: "var(--color-badge-blue-alt-bg)", fg: "var(--color-badge-blue-alt-fg)" },
|
|
394
|
+
bright_gray: { bg: "var(--color-badge-bright-gray-bg)", fg: "var(--color-badge-bright-gray-fg)" },
|
|
395
|
+
bright_green: { bg: "var(--color-badge-bright-green-bg)", fg: "var(--color-badge-bright-green-fg)" },
|
|
396
|
+
bright_red: { bg: "var(--color-badge-bright-red-bg)", fg: "var(--color-badge-bright-red-fg)" },
|
|
397
|
+
bright_blue: { bg: "var(--color-badge-bright-blue-bg)", fg: "var(--color-badge-bright-blue-fg)" },
|
|
398
|
+
bright_yellow: { bg: "var(--color-badge-bright-yellow-bg)", fg: "var(--color-badge-bright-yellow-fg)" },
|
|
399
|
+
bright_teal: { bg: "var(--color-badge-bright-teal-bg)", fg: "var(--color-badge-bright-teal-fg)" },
|
|
400
|
+
bright_cyan: { bg: "var(--color-badge-bright-cyan-bg)", fg: "var(--color-badge-bright-cyan-fg)" },
|
|
401
|
+
bright_orange: { bg: "var(--color-badge-bright-orange-bg)", fg: "var(--color-badge-bright-orange-fg)" },
|
|
402
|
+
bright_purple: { bg: "var(--color-badge-bright-purple-bg)", fg: "var(--color-badge-bright-purple-fg)" },
|
|
403
|
+
bright_pink: { bg: "var(--color-badge-bright-pink-bg)", fg: "var(--color-badge-bright-pink-fg)" }
|
|
384
404
|
};
|
|
385
405
|
var S2 = 4;
|
|
386
406
|
var Badge = React3__namespace.default.forwardRef(
|
|
@@ -415,18 +435,31 @@ var Badge = React3__namespace.default.forwardRef(
|
|
|
415
435
|
}
|
|
416
436
|
if (_mr !== void 0) shimStyle.marginRight = typeof _mr === "number" ? `${_mr * S2}px` : _mr;
|
|
417
437
|
const badgeStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
|
|
418
|
-
const
|
|
438
|
+
const palette = COLOR_PALETTE[colorPalette];
|
|
439
|
+
const child = children ? (
|
|
440
|
+
// `ellipsis` is gui Text's own built-in variant for single-line
|
|
441
|
+
// truncation — it expands to the same overflow/text-overflow/
|
|
442
|
+
// white-space/max-width rule Tailwind's `text-ellipsis` did, but
|
|
443
|
+
// through the component's own variants (guaranteed to compile),
|
|
444
|
+
// rather than naming each longhand as a separate style prop.
|
|
445
|
+
/* @__PURE__ */ jsxRuntime.jsx(gui.Text, { ellipsis: true, ...SIZE_TEXT[size], color: palette.fg, children })
|
|
446
|
+
) : null;
|
|
419
447
|
const childrenElement = truncated ? /* @__PURE__ */ jsxRuntime.jsx(TruncatedTextTooltip, { label: children, children: child }) : child;
|
|
420
448
|
const badgeElement = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
421
|
-
|
|
449
|
+
gui.XStack,
|
|
422
450
|
{
|
|
423
451
|
ref,
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
452
|
+
render: /* @__PURE__ */ jsxRuntime.jsx("span", {}),
|
|
453
|
+
display: "inline-flex",
|
|
454
|
+
alignItems: "center",
|
|
455
|
+
alignSelf: "flex-start",
|
|
456
|
+
borderRadius: 2,
|
|
457
|
+
gap: 4,
|
|
458
|
+
maxWidth: "100%",
|
|
459
|
+
userSelect: "text",
|
|
460
|
+
...SIZE[size],
|
|
461
|
+
backgroundColor: palette.bg,
|
|
462
|
+
className,
|
|
430
463
|
style: badgeStyle,
|
|
431
464
|
...rest,
|
|
432
465
|
children: [
|
package/dist/badge.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import { TooltipGroup, Tooltip as Tooltip$1, Text, XStack } from '@hanzo/gui';
|
|
2
3
|
import * as React3 from 'react';
|
|
3
|
-
import React3__default from 'react';
|
|
4
|
+
import React3__default, { Children, createElement } from 'react';
|
|
4
5
|
import { clsx } from 'clsx';
|
|
5
6
|
import { twMerge } from 'tailwind-merge';
|
|
6
7
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
7
|
-
import { TooltipGroup, Tooltip as Tooltip$1 } from '@hanzo/gui';
|
|
8
8
|
import { useClickAway } from '@uidotdev/usehooks';
|
|
9
9
|
|
|
10
10
|
// src/badge.tsx
|
|
@@ -194,6 +194,14 @@ React3.forwardRef(
|
|
|
194
194
|
)) });
|
|
195
195
|
}
|
|
196
196
|
);
|
|
197
|
+
var ink = (children, Wrap = Text, props = {}) => {
|
|
198
|
+
let hasText = false;
|
|
199
|
+
Children.forEach(children, (child) => {
|
|
200
|
+
if (typeof child === "string" || typeof child === "number") hasText = true;
|
|
201
|
+
});
|
|
202
|
+
if (!hasText) return children;
|
|
203
|
+
return Children.map(children, (child) => typeof child === "string" || typeof child === "number" ? createElement(Wrap, props, child) : child);
|
|
204
|
+
};
|
|
197
205
|
var TOUCH_PX = 1024;
|
|
198
206
|
function useBelow(px) {
|
|
199
207
|
const [below, setBelow] = React3.useState(false);
|
|
@@ -298,14 +306,21 @@ var Tooltip = React3.forwardRef(
|
|
|
298
306
|
{
|
|
299
307
|
ref,
|
|
300
308
|
unstyled: true,
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
+
zIndex: 9999,
|
|
310
|
+
overflow: "hidden",
|
|
311
|
+
borderRadius: 8,
|
|
312
|
+
paddingHorizontal: 12,
|
|
313
|
+
paddingVertical: 8,
|
|
314
|
+
maxWidth: isPopover ? 384 : 320,
|
|
315
|
+
backgroundColor: isPopover ? "var(--color-popover-bg)" : "var(--color-tooltip-bg)",
|
|
316
|
+
transition: "quick",
|
|
317
|
+
enterStyle: { opacity: 0, scale: 0.95 },
|
|
318
|
+
exitStyle: { opacity: 0, scale: 0.95 },
|
|
319
|
+
...isPopover ? {
|
|
320
|
+
borderWidth: 1,
|
|
321
|
+
borderColor: "var(--color-border-divider)",
|
|
322
|
+
shadowColor: "var(--shadow-popover)"
|
|
323
|
+
} : {},
|
|
309
324
|
onClick: interactive ? handleContentClick : void 0,
|
|
310
325
|
...selected ? { "data-selected": true } : {},
|
|
311
326
|
...contentProps,
|
|
@@ -314,12 +329,13 @@ var Tooltip = React3.forwardRef(
|
|
|
314
329
|
Tooltip$1.Arrow,
|
|
315
330
|
{
|
|
316
331
|
unstyled: true,
|
|
317
|
-
|
|
318
|
-
isPopover ? "fill-[var(--color-popover-bg)]" : "fill-[var(--color-tooltip-bg)]"
|
|
319
|
-
)
|
|
332
|
+
backgroundColor: isPopover ? "var(--color-popover-bg)" : "var(--color-tooltip-bg)"
|
|
320
333
|
}
|
|
321
334
|
),
|
|
322
|
-
content
|
|
335
|
+
ink(content, void 0, {
|
|
336
|
+
fontSize: 14,
|
|
337
|
+
color: isPopover ? "var(--color-text-primary)" : "var(--color-tooltip-fg)"
|
|
338
|
+
})
|
|
323
339
|
]
|
|
324
340
|
}
|
|
325
341
|
)
|
|
@@ -331,35 +347,39 @@ var Tooltip = React3.forwardRef(
|
|
|
331
347
|
function TruncatedTextTooltip({ label, children }) {
|
|
332
348
|
return /* @__PURE__ */ jsx(Tooltip, { content: label, positioning: { placement: "top" }, children });
|
|
333
349
|
}
|
|
334
|
-
var
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
350
|
+
var SIZE = {
|
|
351
|
+
sm: { padding: 4, height: 18, minHeight: 18 },
|
|
352
|
+
md: { paddingHorizontal: 4, paddingVertical: 2, minHeight: 24 },
|
|
353
|
+
lg: { paddingHorizontal: 8, paddingVertical: 4, minHeight: 28 }
|
|
354
|
+
};
|
|
355
|
+
var SIZE_TEXT = {
|
|
356
|
+
sm: { fontSize: 12, fontWeight: "500" },
|
|
357
|
+
md: { fontSize: 14, fontWeight: "500" },
|
|
358
|
+
lg: { fontSize: 14, fontWeight: "600" }
|
|
339
359
|
};
|
|
340
|
-
var
|
|
341
|
-
gray: "
|
|
342
|
-
green: "
|
|
343
|
-
red: "
|
|
344
|
-
purple: "
|
|
345
|
-
orange: "
|
|
346
|
-
blue: "
|
|
347
|
-
yellow: "
|
|
348
|
-
teal: "
|
|
349
|
-
cyan: "
|
|
350
|
-
pink: "
|
|
351
|
-
purple_alt: "
|
|
352
|
-
blue_alt: "
|
|
353
|
-
bright_gray: "
|
|
354
|
-
bright_green: "
|
|
355
|
-
bright_red: "
|
|
356
|
-
bright_blue: "
|
|
357
|
-
bright_yellow: "
|
|
358
|
-
bright_teal: "
|
|
359
|
-
bright_cyan: "
|
|
360
|
-
bright_orange: "
|
|
361
|
-
bright_purple: "
|
|
362
|
-
bright_pink: "
|
|
360
|
+
var COLOR_PALETTE = {
|
|
361
|
+
gray: { bg: "var(--color-badge-gray-bg)", fg: "var(--color-badge-gray-fg)" },
|
|
362
|
+
green: { bg: "var(--color-badge-green-bg)", fg: "var(--color-badge-green-fg)" },
|
|
363
|
+
red: { bg: "var(--color-badge-red-bg)", fg: "var(--color-badge-red-fg)" },
|
|
364
|
+
purple: { bg: "var(--color-badge-purple-bg)", fg: "var(--color-badge-purple-fg)" },
|
|
365
|
+
orange: { bg: "var(--color-badge-orange-bg)", fg: "var(--color-badge-orange-fg)" },
|
|
366
|
+
blue: { bg: "var(--color-badge-blue-bg)", fg: "var(--color-badge-blue-fg)" },
|
|
367
|
+
yellow: { bg: "var(--color-badge-yellow-bg)", fg: "var(--color-badge-yellow-fg)" },
|
|
368
|
+
teal: { bg: "var(--color-badge-teal-bg)", fg: "var(--color-badge-teal-fg)" },
|
|
369
|
+
cyan: { bg: "var(--color-badge-cyan-bg)", fg: "var(--color-badge-cyan-fg)" },
|
|
370
|
+
pink: { bg: "var(--color-badge-pink-bg)", fg: "var(--color-badge-pink-fg)" },
|
|
371
|
+
purple_alt: { bg: "var(--color-badge-purple-alt-bg)", fg: "var(--color-badge-purple-alt-fg)" },
|
|
372
|
+
blue_alt: { bg: "var(--color-badge-blue-alt-bg)", fg: "var(--color-badge-blue-alt-fg)" },
|
|
373
|
+
bright_gray: { bg: "var(--color-badge-bright-gray-bg)", fg: "var(--color-badge-bright-gray-fg)" },
|
|
374
|
+
bright_green: { bg: "var(--color-badge-bright-green-bg)", fg: "var(--color-badge-bright-green-fg)" },
|
|
375
|
+
bright_red: { bg: "var(--color-badge-bright-red-bg)", fg: "var(--color-badge-bright-red-fg)" },
|
|
376
|
+
bright_blue: { bg: "var(--color-badge-bright-blue-bg)", fg: "var(--color-badge-bright-blue-fg)" },
|
|
377
|
+
bright_yellow: { bg: "var(--color-badge-bright-yellow-bg)", fg: "var(--color-badge-bright-yellow-fg)" },
|
|
378
|
+
bright_teal: { bg: "var(--color-badge-bright-teal-bg)", fg: "var(--color-badge-bright-teal-fg)" },
|
|
379
|
+
bright_cyan: { bg: "var(--color-badge-bright-cyan-bg)", fg: "var(--color-badge-bright-cyan-fg)" },
|
|
380
|
+
bright_orange: { bg: "var(--color-badge-bright-orange-bg)", fg: "var(--color-badge-bright-orange-fg)" },
|
|
381
|
+
bright_purple: { bg: "var(--color-badge-bright-purple-bg)", fg: "var(--color-badge-bright-purple-fg)" },
|
|
382
|
+
bright_pink: { bg: "var(--color-badge-bright-pink-bg)", fg: "var(--color-badge-bright-pink-fg)" }
|
|
363
383
|
};
|
|
364
384
|
var S2 = 4;
|
|
365
385
|
var Badge = React3__default.forwardRef(
|
|
@@ -394,18 +414,31 @@ var Badge = React3__default.forwardRef(
|
|
|
394
414
|
}
|
|
395
415
|
if (_mr !== void 0) shimStyle.marginRight = typeof _mr === "number" ? `${_mr * S2}px` : _mr;
|
|
396
416
|
const badgeStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
|
|
397
|
-
const
|
|
417
|
+
const palette = COLOR_PALETTE[colorPalette];
|
|
418
|
+
const child = children ? (
|
|
419
|
+
// `ellipsis` is gui Text's own built-in variant for single-line
|
|
420
|
+
// truncation — it expands to the same overflow/text-overflow/
|
|
421
|
+
// white-space/max-width rule Tailwind's `text-ellipsis` did, but
|
|
422
|
+
// through the component's own variants (guaranteed to compile),
|
|
423
|
+
// rather than naming each longhand as a separate style prop.
|
|
424
|
+
/* @__PURE__ */ jsx(Text, { ellipsis: true, ...SIZE_TEXT[size], color: palette.fg, children })
|
|
425
|
+
) : null;
|
|
398
426
|
const childrenElement = truncated ? /* @__PURE__ */ jsx(TruncatedTextTooltip, { label: children, children: child }) : child;
|
|
399
427
|
const badgeElement = /* @__PURE__ */ jsxs(
|
|
400
|
-
|
|
428
|
+
XStack,
|
|
401
429
|
{
|
|
402
430
|
ref,
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
431
|
+
render: /* @__PURE__ */ jsx("span", {}),
|
|
432
|
+
display: "inline-flex",
|
|
433
|
+
alignItems: "center",
|
|
434
|
+
alignSelf: "flex-start",
|
|
435
|
+
borderRadius: 2,
|
|
436
|
+
gap: 4,
|
|
437
|
+
maxWidth: "100%",
|
|
438
|
+
userSelect: "text",
|
|
439
|
+
...SIZE[size],
|
|
440
|
+
backgroundColor: palette.bg,
|
|
441
|
+
className,
|
|
409
442
|
style: badgeStyle,
|
|
410
443
|
...rest,
|
|
411
444
|
children: [
|
package/dist/checkbox.cjs
CHANGED
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
|
|
4
4
|
var gui = require('@hanzo/gui');
|
|
5
5
|
var React = require('react');
|
|
6
|
-
var clsx = require('clsx');
|
|
7
|
-
var tailwindMerge = require('tailwind-merge');
|
|
8
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
7
|
|
|
10
8
|
function _interopNamespace(e) {
|
|
@@ -28,9 +26,6 @@ function _interopNamespace(e) {
|
|
|
28
26
|
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
29
27
|
|
|
30
28
|
// src/checkbox.tsx
|
|
31
|
-
function cn(...inputs) {
|
|
32
|
-
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
33
|
-
}
|
|
34
29
|
var NOOP = () => {
|
|
35
30
|
};
|
|
36
31
|
var CheckboxGroupContext = React__namespace.createContext(null);
|
|
@@ -46,7 +41,6 @@ var CheckboxGroupBase = React__namespace.forwardRef(
|
|
|
46
41
|
onValueChange,
|
|
47
42
|
orientation = "vertical",
|
|
48
43
|
name: _name,
|
|
49
|
-
className,
|
|
50
44
|
...rest
|
|
51
45
|
} = props;
|
|
52
46
|
const [uncontrolledValue, setUncontrolledValue] = React__namespace.useState(defaultValue ?? []);
|
|
@@ -69,15 +63,13 @@ var CheckboxGroupBase = React__namespace.forwardRef(
|
|
|
69
63
|
}, [isControlled, controlledValue]);
|
|
70
64
|
const ctx = React__namespace.useMemo(() => ({ value, toggle }), [value, toggle]);
|
|
71
65
|
return /* @__PURE__ */ jsxRuntime.jsx(CheckboxGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
72
|
-
|
|
66
|
+
gui.View,
|
|
73
67
|
{
|
|
74
68
|
ref,
|
|
75
69
|
role: "group",
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
className
|
|
80
|
-
),
|
|
70
|
+
display: "flex",
|
|
71
|
+
flexDirection: orientation === "vertical" ? "column" : "row",
|
|
72
|
+
gap: orientation === "vertical" ? 12 : 32,
|
|
81
73
|
...rest,
|
|
82
74
|
children
|
|
83
75
|
}
|
|
@@ -85,46 +77,22 @@ var CheckboxGroupBase = React__namespace.forwardRef(
|
|
|
85
77
|
}
|
|
86
78
|
);
|
|
87
79
|
var CheckboxGroup2 = CheckboxGroupBase;
|
|
88
|
-
var
|
|
89
|
-
sm: {
|
|
90
|
-
|
|
91
|
-
control: "h-3.5 w-3.5 rounded-sm",
|
|
92
|
-
label: "text-xs",
|
|
93
|
-
icon: "h-3 w-3"
|
|
94
|
-
},
|
|
95
|
-
md: {
|
|
96
|
-
root: "gap-2",
|
|
97
|
-
control: "h-4 w-4 rounded",
|
|
98
|
-
label: "text-sm",
|
|
99
|
-
icon: "h-3.5 w-3.5"
|
|
100
|
-
}
|
|
80
|
+
var SIZE = {
|
|
81
|
+
sm: { rootGap: 6, control: 14, radius: 2, label: 12, icon: 12 },
|
|
82
|
+
md: { rootGap: 8, control: 16, radius: 4, label: 14, icon: 14 }
|
|
101
83
|
};
|
|
102
|
-
var
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
109
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
110
|
-
"path",
|
|
111
|
-
{
|
|
112
|
-
d: "M10.59 0.59L4 7.17L1.41 4.59L0 6L4 10L12 2L10.59 0.59Z",
|
|
113
|
-
fill: "currentColor"
|
|
114
|
-
}
|
|
115
|
-
)
|
|
116
|
-
}
|
|
117
|
-
);
|
|
118
|
-
var IndeterminateIcon = ({ className }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
119
|
-
"svg",
|
|
84
|
+
var INK = "var(--color-text-primary)";
|
|
85
|
+
var ON_INK = "var(--color-bg-body)";
|
|
86
|
+
var RESTING_BORDER = "var(--color-input-border)";
|
|
87
|
+
var OUTLINE = "var(--color-gray-500)";
|
|
88
|
+
var CheckIcon = ({ size, color }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { width: size, height: size, viewBox: "0 0 12 10", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
89
|
+
"path",
|
|
120
90
|
{
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
fill: "none",
|
|
124
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
125
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M0 0H12V2H0V0Z", fill: "currentColor" })
|
|
91
|
+
d: "M10.59 0.59L4 7.17L1.41 4.59L0 6L4 10L12 2L10.59 0.59Z",
|
|
92
|
+
fill: color
|
|
126
93
|
}
|
|
127
|
-
);
|
|
94
|
+
) });
|
|
95
|
+
var IndeterminateIcon = ({ size, color }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { width: size, height: size, viewBox: "0 0 12 2", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M0 0H12V2H0V0Z", fill: color }) });
|
|
128
96
|
var CheckboxBase = React__namespace.forwardRef(
|
|
129
97
|
function Checkbox(props, ref) {
|
|
130
98
|
const {
|
|
@@ -142,7 +110,6 @@ var CheckboxBase = React__namespace.forwardRef(
|
|
|
142
110
|
size = "md",
|
|
143
111
|
name,
|
|
144
112
|
required,
|
|
145
|
-
className,
|
|
146
113
|
...rest
|
|
147
114
|
} = props;
|
|
148
115
|
const group = useCheckboxGroupContext();
|
|
@@ -195,18 +162,19 @@ var CheckboxBase = React__namespace.forwardRef(
|
|
|
195
162
|
},
|
|
196
163
|
[readOnly, isControlled, isInGroup, group, value, onCheckedChange, onChange]
|
|
197
164
|
);
|
|
198
|
-
const
|
|
165
|
+
const s = SIZE[size];
|
|
166
|
+
const isChecked = checkedState !== false;
|
|
199
167
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
200
|
-
|
|
168
|
+
gui.Label,
|
|
201
169
|
{
|
|
202
170
|
ref: rootRef,
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
171
|
+
unstyled: true,
|
|
172
|
+
flexDirection: "row",
|
|
173
|
+
alignItems: "center",
|
|
174
|
+
gap: s.rootGap,
|
|
175
|
+
cursor: disabled ? "not-allowed" : readOnly ? "default" : "pointer",
|
|
176
|
+
userSelect: "none",
|
|
177
|
+
opacity: disabled ? 0.5 : 1,
|
|
210
178
|
onChange,
|
|
211
179
|
"data-disabled": disabled || void 0,
|
|
212
180
|
"data-readonly": readOnly || void 0,
|
|
@@ -222,26 +190,25 @@ var CheckboxBase = React__namespace.forwardRef(
|
|
|
222
190
|
name,
|
|
223
191
|
value,
|
|
224
192
|
required,
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
children: icon ?? /* @__PURE__ */ jsxRuntime.jsx(gui.Checkbox.Indicator, {
|
|
193
|
+
flexShrink: 0,
|
|
194
|
+
alignItems: "center",
|
|
195
|
+
justifyContent: "center",
|
|
196
|
+
width: s.control,
|
|
197
|
+
height: s.control,
|
|
198
|
+
borderRadius: s.radius,
|
|
199
|
+
borderWidth: 2,
|
|
200
|
+
borderColor: isChecked ? INK : RESTING_BORDER,
|
|
201
|
+
backgroundColor: isChecked ? INK : "transparent",
|
|
202
|
+
transition: "quicker",
|
|
203
|
+
focusStyle: { outlineWidth: 2, outlineStyle: "solid", outlineColor: OUTLINE, outlineOffset: 2 },
|
|
204
|
+
children: icon ?? /* @__PURE__ */ jsxRuntime.jsx(gui.Checkbox.Indicator, { alignItems: "center", justifyContent: "center", width: s.icon, height: s.icon, children: checkedState === "indeterminate" ? /* @__PURE__ */ jsxRuntime.jsx(IndeterminateIcon, { size: s.icon, color: ON_INK }) : /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, { size: s.icon, color: ON_INK }) })
|
|
237
205
|
}
|
|
238
206
|
),
|
|
239
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
207
|
+
/* @__PURE__ */ jsxRuntime.jsx(gui.VisuallyHidden, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
240
208
|
"input",
|
|
241
209
|
{
|
|
242
210
|
ref: setHiddenInputRef,
|
|
243
211
|
type: "checkbox",
|
|
244
|
-
className: "sr-only",
|
|
245
212
|
checked: checkedState === true,
|
|
246
213
|
disabled,
|
|
247
214
|
readOnly,
|
|
@@ -252,8 +219,8 @@ var CheckboxBase = React__namespace.forwardRef(
|
|
|
252
219
|
onChange: NOOP,
|
|
253
220
|
...inputProps
|
|
254
221
|
}
|
|
255
|
-
),
|
|
256
|
-
children != null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
222
|
+
) }),
|
|
223
|
+
children != null && /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: s.label, children })
|
|
257
224
|
]
|
|
258
225
|
}
|
|
259
226
|
);
|