@umami/react-zen 0.239.0 → 0.240.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -385,6 +385,37 @@ var toast = tailwindVariants.tv({
385
385
  }
386
386
  }
387
387
  });
388
+ var tag = tailwindVariants.tv({
389
+ slots: {
390
+ base: [
391
+ "inline-flex items-center gap-1 px-2 py-0.5 rounded text-sm",
392
+ "cursor-default outline-none",
393
+ "focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-1"
394
+ ],
395
+ removeButton: [
396
+ "flex items-center justify-center rounded-full p-0.5 -mr-1",
397
+ "cursor-pointer outline-none",
398
+ "hover:bg-black/10 dark:hover:bg-white/10",
399
+ "pressed:bg-black/20 dark:pressed:bg-white/20"
400
+ ]
401
+ },
402
+ variants: {
403
+ variant: {
404
+ default: {
405
+ base: "bg-interactive text-foreground-primary"
406
+ },
407
+ outline: {
408
+ base: "bg-transparent border border-edge text-foreground-primary"
409
+ },
410
+ primary: {
411
+ base: "bg-primary text-primary-foreground"
412
+ }
413
+ }
414
+ },
415
+ defaultVariants: {
416
+ variant: "default"
417
+ }
418
+ });
388
419
  function Button({
389
420
  variant,
390
421
  size = "md",
@@ -1120,7 +1151,11 @@ var semanticColorMap = {
1120
1151
  "surface-sunken": { text: "", bg: "bg-surface-sunken" },
1121
1152
  "surface-overlay": { text: "", bg: "bg-surface-overlay" },
1122
1153
  "surface-inverted": { text: "", bg: "bg-surface-inverted" },
1123
- "surface-disabled": { text: "", bg: "bg-surface-disabled" }
1154
+ "surface-disabled": { text: "", bg: "bg-surface-disabled" },
1155
+ // Interactive colors
1156
+ interactive: { text: "", bg: "bg-interactive" },
1157
+ "interactive-hover": { text: "", bg: "bg-interactive-hover" },
1158
+ "interactive-pressed": { text: "", bg: "bg-interactive-pressed" }
1124
1159
  };
1125
1160
  var tailwindColors = /* @__PURE__ */ new Set([
1126
1161
  "gray",
@@ -2520,6 +2555,7 @@ var Box = react.forwardRef(function Box2({
2520
2555
  flexBasis,
2521
2556
  flexGrow,
2522
2557
  flexShrink,
2558
+ fill,
2523
2559
  gridArea,
2524
2560
  gridRow,
2525
2561
  gridColumn,
@@ -2607,6 +2643,7 @@ var Box = react.forwardRef(function Box2({
2607
2643
  ...flexBasis && { flexBasis },
2608
2644
  ...flexGrow !== void 0 && { flexGrow },
2609
2645
  ...flexShrink !== void 0 && { flexShrink },
2646
+ ...fill && { flex: 1 },
2610
2647
  ...gridArea && { gridArea },
2611
2648
  ...gridRow && { gridRow },
2612
2649
  ...gridColumn && { gridColumn },
@@ -2871,20 +2908,12 @@ function Calendar({
2871
2908
  function Checkbox({ label, className, children, ...props }) {
2872
2909
  const isSelected = typeof props.value !== "undefined" ? !!props.value : void 0;
2873
2910
  const styles = checkbox();
2874
- return /* @__PURE__ */ jsxRuntime.jsx(
2875
- reactAriaComponents.Checkbox,
2876
- {
2877
- ...props,
2878
- isSelected,
2879
- className: cn(styles.root(), className),
2880
- children: ({ isIndeterminate, isSelected: isSelected2 }) => {
2881
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2882
- /* @__PURE__ */ jsxRuntime.jsx(Box, { className: styles.box(), children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: styles.icon(), size: "sm", children: isIndeterminate ? /* @__PURE__ */ jsxRuntime.jsx(icons_exports.Minus, {}) : isSelected2 ? /* @__PURE__ */ jsxRuntime.jsx(icons_exports.Check, {}) : null }) }),
2883
- children
2884
- ] });
2885
- }
2886
- }
2887
- );
2911
+ return /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Checkbox, { ...props, isSelected, className: cn(styles.root(), className), children: ({ isIndeterminate, isSelected: isSelected2 }) => {
2912
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2913
+ /* @__PURE__ */ jsxRuntime.jsx(Box, { className: styles.box(), children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: styles.icon(), size: "sm", children: isIndeterminate ? /* @__PURE__ */ jsxRuntime.jsx(icons_exports.Minus, {}) : isSelected2 ? /* @__PURE__ */ jsxRuntime.jsx(icons_exports.Check, {}) : null }) }),
2914
+ children
2915
+ ] });
2916
+ } });
2888
2917
  }
2889
2918
  function Code({ className, children, ...props }) {
2890
2919
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -2903,7 +2932,12 @@ function useFieldId(id) {
2903
2932
  const generatedId = react.useId();
2904
2933
  return id ?? generatedId;
2905
2934
  }
2906
- function Label({ size = "base", weight = "semibold", lineHeight = "loose", ...props }) {
2935
+ function Label({
2936
+ size = "base",
2937
+ weight = "semibold",
2938
+ lineHeight = "loose",
2939
+ ...props
2940
+ }) {
2907
2941
  return /* @__PURE__ */ jsxRuntime.jsx(
2908
2942
  Text,
2909
2943
  {
@@ -2976,10 +3010,6 @@ function getHighlightColor(color) {
2976
3010
  }
2977
3011
  function List({
2978
3012
  id,
2979
- items = [],
2980
- idProperty = "id",
2981
- labelProperty = "label",
2982
- separatorProperty = "separator",
2983
3013
  highlightColor,
2984
3014
  showCheckmark = true,
2985
3015
  isFullscreen,
@@ -3011,7 +3041,6 @@ function List({
3011
3041
  ...props,
3012
3042
  selectedKeys: value || selectedKeys,
3013
3043
  defaultSelectedKeys: value || defaultSelectedKeys,
3014
- items,
3015
3044
  className: cn(
3016
3045
  "grid outline-none overflow-auto gap-1",
3017
3046
  isFullscreen && "block p-3 rounded-none fixed inset-0 overflow-auto z-[9999] bg-surface-base",
@@ -3019,14 +3048,7 @@ function List({
3019
3048
  ),
3020
3049
  onSelectionChange: handleSelectionChange,
3021
3050
  style: { ...style, ...getHighlightColor(highlightColor) },
3022
- children: children || items?.map((item) => {
3023
- const id2 = item[idProperty] || item.toString();
3024
- const label2 = item[labelProperty] || item.toString();
3025
- return /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
3026
- item[separatorProperty] && /* @__PURE__ */ jsxRuntime.jsx(ListSeparator, {}),
3027
- /* @__PURE__ */ jsxRuntime.jsx(ListItem, { id: id2, showCheckmark, children: label2 })
3028
- ] }, id2);
3029
- })
3051
+ children
3030
3052
  }
3031
3053
  )
3032
3054
  ] });
@@ -3083,7 +3105,6 @@ function Popover({ children, isFullscreen, className, ...props }) {
3083
3105
  );
3084
3106
  }
3085
3107
  function ComboBox({
3086
- items,
3087
3108
  className,
3088
3109
  renderEmptyState,
3089
3110
  listProps,
@@ -3120,11 +3141,17 @@ function ComboBox({
3120
3141
  ]
3121
3142
  }
3122
3143
  ),
3123
- /* @__PURE__ */ jsxRuntime.jsx(Popover, { ...popoverProps, children: /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "2", border: true, borderRadius: "md", shadow: "lg", className: "bg-surface-overlay", children: /* @__PURE__ */ jsxRuntime.jsx(List, { items, renderEmptyState, ...listProps, children: children || items?.map((item) => /* @__PURE__ */ jsxRuntime.jsx(ListItem, { textValue: item, children: item }, item)) }) }) })
3144
+ /* @__PURE__ */ jsxRuntime.jsx(Popover, { ...popoverProps, children: /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "2", border: true, borderRadius: "md", shadow: "lg", className: "bg-surface-overlay", children: /* @__PURE__ */ jsxRuntime.jsx(List, { renderEmptyState, ...listProps, children }) }) })
3124
3145
  ] });
3125
3146
  }
3126
3147
  var TIMEOUT = 2e3;
3127
- function CopyButton({ value, timeout = TIMEOUT, className, children, ...props }) {
3148
+ function CopyButton({
3149
+ value,
3150
+ timeout = TIMEOUT,
3151
+ className,
3152
+ children,
3153
+ ...props
3154
+ }) {
3128
3155
  const [copied, setCopied] = react.useState(false);
3129
3156
  const ref = react.useRef(timeout);
3130
3157
  const handleCopy = async () => {
@@ -3411,10 +3438,13 @@ function DataCard({ data = [], labelWidth = "auto", ...props }) {
3411
3438
  padding: "6",
3412
3439
  ...props,
3413
3440
  children: rows.map((row, index) => {
3414
- return /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
3415
- /* @__PURE__ */ jsxRuntime.jsx(Row, { paddingY: "3", border: "bottom", borderColor: "muted", paddingRight: "6", children: /* @__PURE__ */ jsxRuntime.jsx(Text, { weight: "bold", children: row?.label }) }),
3416
- /* @__PURE__ */ jsxRuntime.jsx(Row, { paddingY: "3", border: "bottom", children: /* @__PURE__ */ jsxRuntime.jsx(Text, { children: row?.value }) })
3417
- ] }, index);
3441
+ return (
3442
+ // biome-ignore lint/suspicious/noArrayIndexKey: rows are static display data
3443
+ /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
3444
+ /* @__PURE__ */ jsxRuntime.jsx(Row, { paddingY: "3", border: "bottom", borderColor: "muted", paddingRight: "6", children: /* @__PURE__ */ jsxRuntime.jsx(Text, { weight: "bold", children: row?.label }) }),
3445
+ /* @__PURE__ */ jsxRuntime.jsx(Row, { paddingY: "3", border: "bottom", children: /* @__PURE__ */ jsxRuntime.jsx(Text, { children: row?.value }) })
3446
+ ] }, index)
3447
+ );
3418
3448
  })
3419
3449
  }
3420
3450
  );
@@ -3530,25 +3560,28 @@ function DataTable({
3530
3560
  return /* @__PURE__ */ react.createElement(TableColumn, { ...columnProps, key: id, id }, label);
3531
3561
  }) }),
3532
3562
  /* @__PURE__ */ jsxRuntime.jsx(TableBody, { children: rows.map((row, index) => {
3533
- return /* @__PURE__ */ jsxRuntime.jsx(TableRow, { style: { gridTemplateColumns: gridTemplateColumns2 }, children: columns?.map(({ id, as, hidden, className: className2, children: children2, ...cellProps }) => {
3534
- if (hidden) {
3535
- return null;
3536
- }
3537
- const value = typeof children2 === "function" ? children2(row, index) : children2 || row[id];
3538
- return /* @__PURE__ */ react.createElement(
3539
- TableCell,
3540
- {
3541
- ...cellProps,
3542
- key: id,
3543
- className: cn("items-center", className2)
3544
- },
3545
- as ? react.createElement(as, {}, value) : value
3546
- );
3547
- }) }, index);
3563
+ return (
3564
+ // biome-ignore lint/suspicious/noArrayIndexKey: row data may not have unique ids
3565
+ /* @__PURE__ */ jsxRuntime.jsx(TableRow, { style: { gridTemplateColumns: gridTemplateColumns2 }, children: columns?.map(({ id, as, hidden, className: className2, children: children2, ...cellProps }) => {
3566
+ if (hidden) {
3567
+ return null;
3568
+ }
3569
+ const value = typeof children2 === "function" ? children2(row, index) : children2 || row[id];
3570
+ return /* @__PURE__ */ react.createElement(
3571
+ TableCell,
3572
+ {
3573
+ ...cellProps,
3574
+ key: id,
3575
+ className: cn("items-center", className2)
3576
+ },
3577
+ as ? react.createElement(as, {}, value) : value
3578
+ );
3579
+ }) }, index)
3580
+ );
3548
3581
  }) })
3549
3582
  ] });
3550
3583
  }
3551
- function DataColumn(props) {
3584
+ function DataColumn(_props) {
3552
3585
  return null;
3553
3586
  }
3554
3587
  var sizeMap2 = {
@@ -3589,7 +3622,12 @@ function Tooltip({ children, className, showArrow, ...props }) {
3589
3622
  children
3590
3623
  ] });
3591
3624
  }
3592
- function TooltipBubble({ children, className, color: _color, ...props }) {
3625
+ function TooltipBubble({
3626
+ children,
3627
+ className,
3628
+ color: _color,
3629
+ ...props
3630
+ }) {
3593
3631
  return /* @__PURE__ */ jsxRuntime.jsx(Box, { ...props, className, children });
3594
3632
  }
3595
3633
  function FloatingTooltip({ className, style, children, ...props }) {
@@ -3607,7 +3645,10 @@ function FloatingTooltip({ className, style, children, ...props }) {
3607
3645
  TooltipBubble,
3608
3646
  {
3609
3647
  ...props,
3610
- className: cn("fixed pointer-events-none z-[9999] -translate-x-1/2 -translate-y-[calc(100%+10px)]", className),
3648
+ className: cn(
3649
+ "fixed pointer-events-none z-[9999] -translate-x-1/2 -translate-y-[calc(100%+10px)]",
3650
+ className
3651
+ ),
3611
3652
  style: { ...style, left: position.x, top: position.y },
3612
3653
  children
3613
3654
  }
@@ -3754,7 +3795,12 @@ function FormFieldArray({
3754
3795
  children({ ...context, ...fieldProps })
3755
3796
  ] });
3756
3797
  }
3757
- function FormResetButton({ values = {}, children, onPress, ...props }) {
3798
+ function FormResetButton({
3799
+ values = {},
3800
+ children,
3801
+ onPress,
3802
+ ...props
3803
+ }) {
3758
3804
  const { reset } = reactHookForm.useFormContext();
3759
3805
  const handleReset = (e) => {
3760
3806
  reset(values);
@@ -4045,7 +4091,7 @@ function Toast({
4045
4091
  return /* @__PURE__ */ jsxRuntime.jsxs(Row, { ...props, className: cn(toast({ variant }), className), children: [
4046
4092
  /* @__PURE__ */ jsxRuntime.jsxs(Column, { flexGrow: 1, gap: "1", children: [
4047
4093
  title && /* @__PURE__ */ jsxRuntime.jsx(Text, { weight: "semibold", children: title }),
4048
- message && /* @__PURE__ */ jsxRuntime.jsx(Text, { color: "muted", children: message })
4094
+ message && /* @__PURE__ */ jsxRuntime.jsx(Text, { color: title ? "muted" : void 0, children: message })
4049
4095
  ] }),
4050
4096
  hasActions && actions.map((action) => {
4051
4097
  return /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "outline", onPress: () => onClose?.(action), children: action }, action);
@@ -4065,13 +4111,13 @@ function Toast({
4065
4111
  }
4066
4112
  var positionClasses = {
4067
4113
  "top-left": "top-4 left-4 items-start",
4068
- "top": "top-4 left-1/2 -translate-x-1/2 items-center",
4114
+ top: "top-4 left-1/2 -translate-x-1/2 items-center",
4069
4115
  "top-right": "top-4 right-4 items-end",
4070
4116
  "bottom-left": "bottom-4 left-4 items-start",
4071
- "bottom": "bottom-4 left-1/2 -translate-x-1/2 items-center",
4117
+ bottom: "bottom-4 left-1/2 -translate-x-1/2 items-center",
4072
4118
  "bottom-right": "bottom-4 right-4 items-end",
4073
- "left": "top-1/2 left-4 -translate-y-1/2 items-start",
4074
- "right": "top-1/2 right-4 -translate-y-1/2 items-end"
4119
+ left: "top-1/2 left-4 -translate-y-1/2 items-start",
4120
+ right: "top-1/2 right-4 -translate-y-1/2 items-end"
4075
4121
  };
4076
4122
  var AnimatedBox = web.animated(Box);
4077
4123
  function Toaster({ duration = 0, position = "bottom-right" }) {
@@ -4389,6 +4435,11 @@ var PALETTE_LABELS = {
4389
4435
  };
4390
4436
  function PaletteSwitcher({ className }) {
4391
4437
  const { palette, setPalette } = useTheme();
4438
+ const [mounted, setMounted] = react.useState(false);
4439
+ react.useEffect(() => {
4440
+ setMounted(true);
4441
+ }, []);
4442
+ const currentPalette = mounted ? palette : "neutral";
4392
4443
  return /* @__PURE__ */ jsxRuntime.jsx(
4393
4444
  "div",
4394
4445
  {
@@ -4402,13 +4453,13 @@ function PaletteSwitcher({ className }) {
4402
4453
  type: "button",
4403
4454
  onClick: () => setPalette(p),
4404
4455
  "aria-label": PALETTE_LABELS[p],
4405
- "aria-pressed": palette === p,
4456
+ "aria-pressed": currentPalette === p,
4406
4457
  className: cn(
4407
4458
  "px-3 h-9 flex items-center justify-center cursor-pointer outline-none transition-colors text-sm",
4408
4459
  "[&:not(:first-child)]:border-l [&:not(:first-child)]:border-edge",
4409
4460
  "hover:bg-interactive",
4410
4461
  "focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-inset",
4411
- palette === p ? "bg-interactive text-foreground-primary" : "text-foreground-muted"
4462
+ currentPalette === p ? "bg-interactive text-foreground-primary" : "text-foreground-muted"
4412
4463
  ),
4413
4464
  children: PALETTE_LABELS[p]
4414
4465
  },
@@ -4417,7 +4468,7 @@ function PaletteSwitcher({ className }) {
4417
4468
  }
4418
4469
  );
4419
4470
  }
4420
- var SvgEyeSlash = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 256 256", ...props, children: [
4471
+ var SvgEye = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 256 256", ...props, children: [
4421
4472
  /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "none", d: "M0 0h256v256H0z" }),
4422
4473
  /* @__PURE__ */ jsxRuntime.jsx(
4423
4474
  "path",
@@ -4427,23 +4478,25 @@ var SvgEyeSlash = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "ht
4427
4478
  strokeLinecap: "round",
4428
4479
  strokeLinejoin: "round",
4429
4480
  strokeWidth: 16,
4430
- d: "m48 40 160 176M154.91 157.6a40 40 0 0 1-53.82-59.2M135.53 88.71a40 40 0 0 1 32.3 35.53"
4481
+ d: "M128 56c-80 0-112 72-112 72s32 72 112 72 112-72 112-72-32-72-112-72"
4431
4482
  }
4432
4483
  ),
4433
4484
  /* @__PURE__ */ jsxRuntime.jsx(
4434
- "path",
4485
+ "circle",
4435
4486
  {
4487
+ cx: 128,
4488
+ cy: 128,
4489
+ r: 40,
4436
4490
  fill: "none",
4437
4491
  stroke: "currentColor",
4438
4492
  strokeLinecap: "round",
4439
4493
  strokeLinejoin: "round",
4440
- strokeWidth: 16,
4441
- d: "M208.61 169.1C230.41 149.58 240 128 240 128s-32-72-112-72a126 126 0 0 0-20.68 1.68M74 68.6C33.23 89.24 16 128 16 128s32 72 112 72a118.05 118.05 0 0 0 54-12.6"
4494
+ strokeWidth: 16
4442
4495
  }
4443
4496
  )
4444
4497
  ] });
4445
- var EyeSlash_default = SvgEyeSlash;
4446
- var SvgEye = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 256 256", ...props, children: [
4498
+ var Eye_default = SvgEye;
4499
+ var SvgEyeSlash = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 256 256", ...props, children: [
4447
4500
  /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "none", d: "M0 0h256v256H0z" }),
4448
4501
  /* @__PURE__ */ jsxRuntime.jsx(
4449
4502
  "path",
@@ -4453,24 +4506,22 @@ var SvgEye = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://
4453
4506
  strokeLinecap: "round",
4454
4507
  strokeLinejoin: "round",
4455
4508
  strokeWidth: 16,
4456
- d: "M128 56c-80 0-112 72-112 72s32 72 112 72 112-72 112-72-32-72-112-72"
4509
+ d: "m48 40 160 176M154.91 157.6a40 40 0 0 1-53.82-59.2M135.53 88.71a40 40 0 0 1 32.3 35.53"
4457
4510
  }
4458
4511
  ),
4459
4512
  /* @__PURE__ */ jsxRuntime.jsx(
4460
- "circle",
4513
+ "path",
4461
4514
  {
4462
- cx: 128,
4463
- cy: 128,
4464
- r: 40,
4465
4515
  fill: "none",
4466
4516
  stroke: "currentColor",
4467
4517
  strokeLinecap: "round",
4468
4518
  strokeLinejoin: "round",
4469
- strokeWidth: 16
4519
+ strokeWidth: 16,
4520
+ d: "M208.61 169.1C230.41 149.58 240 128 240 128s-32-72-112-72a126 126 0 0 0-20.68 1.68M74 68.6C33.23 89.24 16 128 16 128s32 72 112 72a118.05 118.05 0 0 0 54-12.6"
4470
4521
  }
4471
4522
  )
4472
4523
  ] });
4473
- var Eye_default = SvgEye;
4524
+ var EyeSlash_default = SvgEyeSlash;
4474
4525
  function PasswordField({ label, className, ...props }) {
4475
4526
  const [show, setShow] = react.useState(false);
4476
4527
  const type = show ? "text" : "password";
@@ -4660,7 +4711,6 @@ function SearchField({
4660
4711
  ] });
4661
4712
  }
4662
4713
  function Select({
4663
- items = [],
4664
4714
  value,
4665
4715
  defaultValue,
4666
4716
  label,
@@ -4733,7 +4783,6 @@ function Select({
4733
4783
  List,
4734
4784
  {
4735
4785
  ...listProps,
4736
- items,
4737
4786
  isFullscreen,
4738
4787
  ...isFullscreen && {
4739
4788
  shouldSelectOnPressUp: true,
@@ -4856,6 +4905,20 @@ function Tab({ children, className, ...props }) {
4856
4905
  function TabPanel({ children, className, ...props }) {
4857
4906
  return /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.TabPanel, { ...props, className, children });
4858
4907
  }
4908
+ function TagGroup({ label, children, className, ...props }) {
4909
+ return /* @__PURE__ */ jsxRuntime.jsxs(reactAriaComponents.TagGroup, { ...props, className: cn("flex flex-col gap-1", className), children: [
4910
+ label && /* @__PURE__ */ jsxRuntime.jsx(Label, { children: label }),
4911
+ /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.TagList, { className: "flex flex-wrap gap-1", children })
4912
+ ] });
4913
+ }
4914
+ function Tag({ variant, children, className, ...props }) {
4915
+ const textValue = typeof children === "string" ? children : void 0;
4916
+ const styles = tag({ variant });
4917
+ return /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Tag, { ...props, textValue, className: cn(styles.base(), className), children: ({ allowsRemoving }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4918
+ children,
4919
+ allowsRemoving && /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Button, { slot: "remove", className: styles.removeButton(), children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { size: "xs", children: /* @__PURE__ */ jsxRuntime.jsx(icons_exports.X, {}) }) })
4920
+ ] }) });
4921
+ }
4859
4922
  function getElement(target) {
4860
4923
  return "current" in target ? target.current : target;
4861
4924
  }
@@ -5196,6 +5259,8 @@ exports.TableColumn = TableColumn;
5196
5259
  exports.TableHeader = TableHeader;
5197
5260
  exports.TableRow = TableRow;
5198
5261
  exports.Tabs = Tabs;
5262
+ exports.Tag = Tag;
5263
+ exports.TagGroup = TagGroup;
5199
5264
  exports.Text = Text;
5200
5265
  exports.TextField = TextField;
5201
5266
  exports.ThemeButton = ThemeButton;