@viax.io/uxm 4.44.0 → 4.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/studio/lib/registry/inputs/radio-group.cjs +33 -1
  3. package/dist/studio/lib/registry/inputs/radio-group.cjs.map +1 -1
  4. package/dist/studio/lib/registry/inputs/radio-group.d.ts.map +1 -1
  5. package/dist/studio/lib/registry/inputs/radio-group.js +33 -1
  6. package/dist/studio/lib/registry/inputs/radio-group.js.map +1 -1
  7. package/dist/ui/button/button.cjs +10 -10
  8. package/dist/ui/button/button.cjs.map +1 -1
  9. package/dist/ui/button/button.d.ts +20 -8
  10. package/dist/ui/button/button.d.ts.map +1 -1
  11. package/dist/ui/button/button.js +10 -10
  12. package/dist/ui/button/button.js.map +1 -1
  13. package/dist/ui/icon-button/icon-button.cjs +2 -0
  14. package/dist/ui/icon-button/icon-button.cjs.map +1 -1
  15. package/dist/ui/icon-button/icon-button.d.ts +3 -3
  16. package/dist/ui/icon-button/icon-button.d.ts.map +1 -1
  17. package/dist/ui/icon-button/icon-button.js +2 -0
  18. package/dist/ui/icon-button/icon-button.js.map +1 -1
  19. package/dist/ui/radio-group/radio-group-preview.cjs +86 -35
  20. package/dist/ui/radio-group/radio-group-preview.cjs.map +1 -1
  21. package/dist/ui/radio-group/radio-group-preview.d.ts.map +1 -1
  22. package/dist/ui/radio-group/radio-group-preview.js +87 -36
  23. package/dist/ui/radio-group/radio-group-preview.js.map +1 -1
  24. package/dist/ui/radio-group/radio-group.cjs +46 -18
  25. package/dist/ui/radio-group/radio-group.cjs.map +1 -1
  26. package/dist/ui/radio-group/radio-group.css +82 -0
  27. package/dist/ui/radio-group/radio-group.d.ts +24 -1
  28. package/dist/ui/radio-group/radio-group.d.ts.map +1 -1
  29. package/dist/ui/radio-group/radio-group.js +46 -18
  30. package/dist/ui/radio-group/radio-group.js.map +1 -1
  31. package/package.json +1 -1
@@ -9,6 +9,8 @@ function RadioGroup({
9
9
  defaultValue,
10
10
  onChange,
11
11
  direction = "vertical",
12
+ variant = "default",
13
+ indicator = "hidden",
12
14
  className,
13
15
  children,
14
16
  error,
@@ -32,13 +34,20 @@ function RadioGroup({
32
34
  className: cn(
33
35
  "uxm-radio-group",
34
36
  `uxm-radio-group--${direction}`,
37
+ variant === "card" && "uxm-radio-group--card",
35
38
  error && "uxm-radio-group--error",
36
39
  className
37
40
  ),
38
41
  id,
39
42
  "aria-invalid": error ? true : void 0,
40
43
  "aria-describedby": mergeDescribedBy(describedBy, error ? errorId : void 0),
41
- children: /* @__PURE__ */ jsx(RadioGroupContext.Provider, { value: { name, value, hasValue, onChange: handleChange }, children })
44
+ children: /* @__PURE__ */ jsx(
45
+ RadioGroupContext.Provider,
46
+ {
47
+ value: { name, value, hasValue, onChange: handleChange, variant, indicator },
48
+ children
49
+ }
50
+ )
42
51
  }
43
52
  ),
44
53
  error && /* @__PURE__ */ jsx(FieldError, { id: errorId, className: "uxm-radio-group__error-message", children: error })
@@ -62,23 +71,42 @@ function RadioOption({
62
71
  onChange?.(value, e);
63
72
  group?.onChange?.(value, e);
64
73
  }
65
- return /* @__PURE__ */ jsxs("label", { className: cn("uxm-radio", disabled && "uxm-radio--disabled", className), children: [
66
- /* @__PURE__ */ jsx(
67
- "input",
68
- {
69
- type: "radio",
70
- className: "uxm-radio__input",
71
- name: resolvedName,
72
- value,
73
- checked: resolvedChecked,
74
- defaultChecked,
75
- disabled,
76
- onChange: handleChange
77
- }
78
- ),
79
- /* @__PURE__ */ jsx("span", { className: "uxm-radio__circle", "aria-hidden": "true", children: /* @__PURE__ */ jsx("span", { className: "uxm-radio__dot" }) }),
80
- children && /* @__PURE__ */ jsx("span", { className: "uxm-radio__label", children })
81
- ] });
74
+ const isCard = group?.variant === "card";
75
+ const indicator = group?.indicator ?? "hidden";
76
+ return /* @__PURE__ */ jsxs(
77
+ "label",
78
+ {
79
+ className: cn(
80
+ "uxm-radio",
81
+ isCard && "uxm-radio--card",
82
+ isCard && indicator === "corner" && "uxm-radio--indicator-corner",
83
+ disabled && "uxm-radio--disabled",
84
+ className
85
+ ),
86
+ children: [
87
+ /* @__PURE__ */ jsx(
88
+ "input",
89
+ {
90
+ type: "radio",
91
+ className: "uxm-radio__input",
92
+ name: resolvedName,
93
+ value,
94
+ checked: resolvedChecked,
95
+ defaultChecked,
96
+ disabled,
97
+ onChange: handleChange
98
+ }
99
+ ),
100
+ /* @__PURE__ */ jsx("span", { className: "uxm-radio__circle", "aria-hidden": "true", children: /* @__PURE__ */ jsx("span", { className: "uxm-radio__dot" }) }),
101
+ isCard ? (
102
+ // The tile itself. A general-sibling selector off the input paints its
103
+ // selected frame, so it works for a controlled option and an
104
+ // uncontrolled one alike — the DOM, not React, knows which is checked.
105
+ /* @__PURE__ */ jsx("span", { className: "uxm-radio__card", children })
106
+ ) : children && /* @__PURE__ */ jsx("span", { className: "uxm-radio__label", children })
107
+ ]
108
+ }
109
+ );
82
110
  }
83
111
  export {
84
112
  RadioGroup,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ui/radio-group/radio-group.tsx"],"sourcesContent":["import { createContext, useContext, useId, useState } from 'react';\n\nimport { cn, mergeDescribedBy } from '@/helpers';\nimport { FieldError } from '@/ui/field-error';\n\nimport type { ChangeEvent, ReactNode } from 'react';\n\nexport type RadioGroupDirection = 'vertical' | 'horizontal';\n\nexport interface RadioGroupProps {\n name: string;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string, e: ChangeEvent<HTMLInputElement>) => void;\n direction?: RadioGroupDirection;\n className?: string;\n children: ReactNode;\n /**\n * When set to a non-empty string, marks the group invalid: `aria-invalid`\n * lands on the group and the message renders below in the error color. Per\n * the input family's small-control convention the circles AND the option\n * labels all stay neutral — the message is the sole signal. The\n * `.uxm-radio-group--error` class still rides on the root as a state hook.\n * Omit (or pass an empty string) for normal.\n */\n error?: string;\n /**\n * Forwarded to the `role=\"radiogroup\"` root. `FormField` injects both — `id` for its\n * label association, `aria-describedby` for the hint — so wiring these\n * makes the atom hint-associable; the describedby is merged with the\n * atom's own error-message id, consumer ids first.\n */\n id?: string;\n 'aria-describedby'?: string;\n}\n\n// Carries the group-level `name` / selected `value` / change handler down to\n// each `RadioOption` without forcing every consumer to repeat `name` and wire\n// `checked`/`onChange` by hand on every option. `RadioOption` still accepts\n// its own `name` / `checked` / `defaultChecked` / `onChange` so existing call\n// sites that set those directly (bypassing the group) keep working unchanged.\n//\n// `hasValue` is fixed for the lifetime of the group (derived from whether\n// `value`/`defaultValue` was passed at all, not from the current value) so a\n// `RadioOption` that defers to the group never flips between an\n// uncontrolled (`checked={undefined}`) and controlled (`checked={boolean}`)\n// input across renders — that flip is what triggers React's \"changing an\n// uncontrolled input to be controlled\" warning.\ninterface RadioGroupContextValue {\n name?: string;\n value?: string;\n hasValue: boolean;\n onChange: (value: string, e: ChangeEvent<HTMLInputElement>) => void;\n}\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null);\n\nexport function RadioGroup({\n name,\n value: controlledValue,\n defaultValue,\n onChange,\n direction = 'vertical',\n className,\n children,\n error,\n id,\n 'aria-describedby': describedBy,\n}: RadioGroupProps) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n const hasValue = controlledValue !== undefined || defaultValue !== undefined;\n const errorId = useId();\n\n function handleChange(nextValue: string, e: ChangeEvent<HTMLInputElement>) {\n if (!isControlled) setUncontrolledValue(nextValue);\n onChange?.(nextValue, e);\n }\n\n return (\n <>\n <div\n role=\"radiogroup\"\n className={cn(\n 'uxm-radio-group',\n `uxm-radio-group--${direction}`,\n error && 'uxm-radio-group--error',\n className,\n )}\n id={id}\n aria-invalid={error ? true : undefined}\n aria-describedby={mergeDescribedBy(describedBy, error ? errorId : undefined)}\n >\n <RadioGroupContext.Provider value={{ name, value, hasValue, onChange: handleChange }}>\n {children}\n </RadioGroupContext.Provider>\n </div>\n {error && (\n <FieldError id={errorId} className=\"uxm-radio-group__error-message\">\n {error}\n </FieldError>\n )}\n </>\n );\n}\n// Static marker so FormField only forwards its `error` prop into children that\n// accept one (avoids React unknown-prop warnings on non-input children).\nRadioGroup.hasError = true;\n\nexport interface RadioOptionProps {\n name?: string;\n value: string;\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n onChange?: (value: string, e: ChangeEvent<HTMLInputElement>) => void;\n children?: ReactNode;\n className?: string;\n}\n\nexport function RadioOption({\n name,\n value,\n checked,\n defaultChecked,\n disabled,\n onChange,\n children,\n className,\n}: RadioOptionProps) {\n const group = useContext(RadioGroupContext);\n const resolvedName = name ?? group?.name;\n // Only defer to the group's selected value when this option doesn't\n // already manage its own checked state (explicit `checked`/`defaultChecked`\n // always wins, matching the controlled/uncontrolled convention) AND the\n // group was actually given a `value`/`defaultValue` to manage — otherwise\n // `checked` stays `undefined` so the input remains a plain native\n // uncontrolled radio (as it always has been for consumers who only use\n // `RadioGroup` for the shared `name` + layout, not selection state).\n const resolvedChecked =\n checked !== undefined\n ? checked\n : defaultChecked !== undefined || !group?.hasValue\n ? undefined\n : group.value === value;\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n onChange?.(value, e);\n group?.onChange?.(value, e);\n }\n\n return (\n <label className={cn('uxm-radio', disabled && 'uxm-radio--disabled', className)}>\n <input\n type=\"radio\"\n className=\"uxm-radio__input\"\n name={resolvedName}\n value={value}\n checked={resolvedChecked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n onChange={handleChange}\n />\n <span className=\"uxm-radio__circle\" aria-hidden=\"true\">\n <span className=\"uxm-radio__dot\" />\n </span>\n {children && <span className=\"uxm-radio__label\">{children}</span>}\n </label>\n );\n}\n"],"mappings":"AAiFI,mBAaI,KAbJ;AAjFJ,SAAS,eAAe,YAAY,OAAO,gBAAgB;AAE3D,SAAS,IAAI,wBAAwB;AACrC,SAAS,kBAAkB;AAoD3B,MAAM,oBAAoB,cAA6C,IAAI;AAEpE,SAAS,WAAW;AAAA,EACzB;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,oBAAoB;AACtB,GAAoB;AAClB,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAS,YAAY;AACvE,QAAM,eAAe,oBAAoB;AACzC,QAAM,QAAQ,eAAe,kBAAkB;AAC/C,QAAM,WAAW,oBAAoB,UAAa,iBAAiB;AACnE,QAAM,UAAU,MAAM;AAEtB,WAAS,aAAa,WAAmB,GAAkC;AACzE,QAAI,CAAC,aAAc,sBAAqB,SAAS;AACjD,eAAW,WAAW,CAAC;AAAA,EACzB;AAEA,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAW;AAAA,UACT;AAAA,UACA,oBAAoB,SAAS;AAAA,UAC7B,SAAS;AAAA,UACT;AAAA,QACF;AAAA,QACA;AAAA,QACA,gBAAc,QAAQ,OAAO;AAAA,QAC7B,oBAAkB,iBAAiB,aAAa,QAAQ,UAAU,MAAS;AAAA,QAE3E,8BAAC,kBAAkB,UAAlB,EAA2B,OAAO,EAAE,MAAM,OAAO,UAAU,UAAU,aAAa,GAChF,UACH;AAAA;AAAA,IACF;AAAA,IACC,SACC,oBAAC,cAAW,IAAI,SAAS,WAAU,kCAChC,iBACH;AAAA,KAEJ;AAEJ;AAGA,WAAW,WAAW;AAaf,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,QAAM,QAAQ,WAAW,iBAAiB;AAC1C,QAAM,eAAe,QAAQ,OAAO;AAQpC,QAAM,kBACJ,YAAY,SACR,UACA,mBAAmB,UAAa,CAAC,OAAO,WACtC,SACA,MAAM,UAAU;AAExB,WAAS,aAAa,GAAkC;AACtD,eAAW,OAAO,CAAC;AACnB,WAAO,WAAW,OAAO,CAAC;AAAA,EAC5B;AAEA,SACE,qBAAC,WAAM,WAAW,GAAG,aAAa,YAAY,uBAAuB,SAAS,GAC5E;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,UAAU;AAAA;AAAA,IACZ;AAAA,IACA,oBAAC,UAAK,WAAU,qBAAoB,eAAY,QAC9C,8BAAC,UAAK,WAAU,kBAAiB,GACnC;AAAA,IACC,YAAY,oBAAC,UAAK,WAAU,oBAAoB,UAAS;AAAA,KAC5D;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/ui/radio-group/radio-group.tsx"],"sourcesContent":["import { createContext, useContext, useId, useState } from 'react';\n\nimport { cn, mergeDescribedBy } from '@/helpers';\nimport { FieldError } from '@/ui/field-error';\n\nimport type { ChangeEvent, ReactNode } from 'react';\n\nexport type RadioGroupDirection = 'vertical' | 'horizontal';\n\n/** Option presentation. See `RadioGroupProps.variant`. */\nexport type RadioGroupVariant = 'default' | 'card';\n\n/** Where the radio dot goes in card mode. See `RadioGroupProps.indicator`. */\nexport type RadioGroupIndicator = 'hidden' | 'corner';\n\nexport interface RadioGroupProps {\n name: string;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string, e: ChangeEvent<HTMLInputElement>) => void;\n direction?: RadioGroupDirection;\n /**\n * Option presentation. `default` (unchanged) renders each option as a\n * `[circle] label` row. `card` renders each one as a selectable tile: the\n * option's `children` fill the card body and the selected state is an accent\n * frame around the whole tile — for a visual single-select (a layout picker,\n * plan tiers, theme swatches).\n *\n * The control stays a native radio group either way, so `role=\"radiogroup\"`,\n * `aria-checked` and arrow-key selection are unaffected by this prop.\n */\n variant?: RadioGroupVariant;\n /**\n * Card mode only. `hidden` (default) drops the radio circle — the frame is\n * the affordance. `corner` keeps it, pinned to the tile's top-right, for\n * redundancy where a frame alone is too subtle.\n *\n * Ignored when `variant` is `default`.\n */\n indicator?: RadioGroupIndicator;\n className?: string;\n children: ReactNode;\n /**\n * When set to a non-empty string, marks the group invalid: `aria-invalid`\n * lands on the group and the message renders below in the error color. Per\n * the input family's small-control convention the circles AND the option\n * labels all stay neutral — the message is the sole signal. The\n * `.uxm-radio-group--error` class still rides on the root as a state hook.\n * Omit (or pass an empty string) for normal.\n */\n error?: string;\n /**\n * Forwarded to the `role=\"radiogroup\"` root. `FormField` injects both — `id` for its\n * label association, `aria-describedby` for the hint — so wiring these\n * makes the atom hint-associable; the describedby is merged with the\n * atom's own error-message id, consumer ids first.\n */\n id?: string;\n 'aria-describedby'?: string;\n}\n\n// Carries the group-level `name` / selected `value` / change handler down to\n// each `RadioOption` without forcing every consumer to repeat `name` and wire\n// `checked`/`onChange` by hand on every option. `RadioOption` still accepts\n// its own `name` / `checked` / `defaultChecked` / `onChange` so existing call\n// sites that set those directly (bypassing the group) keep working unchanged.\n//\n// `hasValue` is fixed for the lifetime of the group (derived from whether\n// `value`/`defaultValue` was passed at all, not from the current value) so a\n// `RadioOption` that defers to the group never flips between an\n// uncontrolled (`checked={undefined}`) and controlled (`checked={boolean}`)\n// input across renders — that flip is what triggers React's \"changing an\n// uncontrolled input to be controlled\" warning.\ninterface RadioGroupContextValue {\n name?: string;\n value?: string;\n hasValue: boolean;\n onChange: (value: string, e: ChangeEvent<HTMLInputElement>) => void;\n // Presentation travels down the same channel as `name`/`value` so an option\n // never has to be told twice what group it is in.\n variant: RadioGroupVariant;\n indicator: RadioGroupIndicator;\n}\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null);\n\nexport function RadioGroup({\n name,\n value: controlledValue,\n defaultValue,\n onChange,\n direction = 'vertical',\n variant = 'default',\n indicator = 'hidden',\n className,\n children,\n error,\n id,\n 'aria-describedby': describedBy,\n}: RadioGroupProps) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n const hasValue = controlledValue !== undefined || defaultValue !== undefined;\n const errorId = useId();\n\n function handleChange(nextValue: string, e: ChangeEvent<HTMLInputElement>) {\n if (!isControlled) setUncontrolledValue(nextValue);\n onChange?.(nextValue, e);\n }\n\n return (\n <>\n <div\n role=\"radiogroup\"\n className={cn(\n 'uxm-radio-group',\n `uxm-radio-group--${direction}`,\n variant === 'card' && 'uxm-radio-group--card',\n error && 'uxm-radio-group--error',\n className,\n )}\n id={id}\n aria-invalid={error ? true : undefined}\n aria-describedby={mergeDescribedBy(describedBy, error ? errorId : undefined)}\n >\n <RadioGroupContext.Provider\n value={{ name, value, hasValue, onChange: handleChange, variant, indicator }}\n >\n {children}\n </RadioGroupContext.Provider>\n </div>\n {error && (\n <FieldError id={errorId} className=\"uxm-radio-group__error-message\">\n {error}\n </FieldError>\n )}\n </>\n );\n}\n// Static marker so FormField only forwards its `error` prop into children that\n// accept one (avoids React unknown-prop warnings on non-input children).\nRadioGroup.hasError = true;\n\nexport interface RadioOptionProps {\n name?: string;\n value: string;\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n onChange?: (value: string, e: ChangeEvent<HTMLInputElement>) => void;\n children?: ReactNode;\n className?: string;\n}\n\nexport function RadioOption({\n name,\n value,\n checked,\n defaultChecked,\n disabled,\n onChange,\n children,\n className,\n}: RadioOptionProps) {\n const group = useContext(RadioGroupContext);\n const resolvedName = name ?? group?.name;\n // Only defer to the group's selected value when this option doesn't\n // already manage its own checked state (explicit `checked`/`defaultChecked`\n // always wins, matching the controlled/uncontrolled convention) AND the\n // group was actually given a `value`/`defaultValue` to manage — otherwise\n // `checked` stays `undefined` so the input remains a plain native\n // uncontrolled radio (as it always has been for consumers who only use\n // `RadioGroup` for the shared `name` + layout, not selection state).\n const resolvedChecked =\n checked !== undefined\n ? checked\n : defaultChecked !== undefined || !group?.hasValue\n ? undefined\n : group.value === value;\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n onChange?.(value, e);\n group?.onChange?.(value, e);\n }\n\n const isCard = group?.variant === 'card';\n const indicator = group?.indicator ?? 'hidden';\n\n return (\n <label\n className={cn(\n 'uxm-radio',\n isCard && 'uxm-radio--card',\n isCard && indicator === 'corner' && 'uxm-radio--indicator-corner',\n disabled && 'uxm-radio--disabled',\n className,\n )}\n >\n <input\n type=\"radio\"\n className=\"uxm-radio__input\"\n name={resolvedName}\n value={value}\n checked={resolvedChecked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n onChange={handleChange}\n />\n {/* The circle stays a SIBLING of the input in both presentations, even\n in card mode where it is pinned to a corner by CSS. Nesting it inside\n the card body would have put it out of reach of every existing\n `__input:checked + __circle` / hover / focus rule, which would then\n need a parallel card-mode copy — two sets of state rules to keep in\n step. Card mode only moves it, or hides it. */}\n <span className=\"uxm-radio__circle\" aria-hidden=\"true\">\n <span className=\"uxm-radio__dot\" />\n </span>\n {isCard ? (\n // The tile itself. A general-sibling selector off the input paints its\n // selected frame, so it works for a controlled option and an\n // uncontrolled one alike — the DOM, not React, knows which is checked.\n <span className=\"uxm-radio__card\">{children}</span>\n ) : (\n children && <span className=\"uxm-radio__label\">{children}</span>\n )}\n </label>\n );\n}\n"],"mappings":"AAgHI,mBAcI,KAdJ;AAhHJ,SAAS,eAAe,YAAY,OAAO,gBAAgB;AAE3D,SAAS,IAAI,wBAAwB;AACrC,SAAS,kBAAkB;AAiF3B,MAAM,oBAAoB,cAA6C,IAAI;AAEpE,SAAS,WAAW;AAAA,EACzB;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,oBAAoB;AACtB,GAAoB;AAClB,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAS,YAAY;AACvE,QAAM,eAAe,oBAAoB;AACzC,QAAM,QAAQ,eAAe,kBAAkB;AAC/C,QAAM,WAAW,oBAAoB,UAAa,iBAAiB;AACnE,QAAM,UAAU,MAAM;AAEtB,WAAS,aAAa,WAAmB,GAAkC;AACzE,QAAI,CAAC,aAAc,sBAAqB,SAAS;AACjD,eAAW,WAAW,CAAC;AAAA,EACzB;AAEA,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAW;AAAA,UACT;AAAA,UACA,oBAAoB,SAAS;AAAA,UAC7B,YAAY,UAAU;AAAA,UACtB,SAAS;AAAA,UACT;AAAA,QACF;AAAA,QACA;AAAA,QACA,gBAAc,QAAQ,OAAO;AAAA,QAC7B,oBAAkB,iBAAiB,aAAa,QAAQ,UAAU,MAAS;AAAA,QAE3E;AAAA,UAAC,kBAAkB;AAAA,UAAlB;AAAA,YACC,OAAO,EAAE,MAAM,OAAO,UAAU,UAAU,cAAc,SAAS,UAAU;AAAA,YAE1E;AAAA;AAAA,QACH;AAAA;AAAA,IACF;AAAA,IACC,SACC,oBAAC,cAAW,IAAI,SAAS,WAAU,kCAChC,iBACH;AAAA,KAEJ;AAEJ;AAGA,WAAW,WAAW;AAaf,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,QAAM,QAAQ,WAAW,iBAAiB;AAC1C,QAAM,eAAe,QAAQ,OAAO;AAQpC,QAAM,kBACJ,YAAY,SACR,UACA,mBAAmB,UAAa,CAAC,OAAO,WACtC,SACA,MAAM,UAAU;AAExB,WAAS,aAAa,GAAkC;AACtD,eAAW,OAAO,CAAC;AACnB,WAAO,WAAW,OAAO,CAAC;AAAA,EAC5B;AAEA,QAAM,SAAS,OAAO,YAAY;AAClC,QAAM,YAAY,OAAO,aAAa;AAEtC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,UAAU;AAAA,QACV,UAAU,cAAc,YAAY;AAAA,QACpC,YAAY;AAAA,QACZ;AAAA,MACF;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,MAAM;AAAA,YACN;AAAA,YACA,SAAS;AAAA,YACT;AAAA,YACA;AAAA,YACA,UAAU;AAAA;AAAA,QACZ;AAAA,QAOA,oBAAC,UAAK,WAAU,qBAAoB,eAAY,QAC9C,8BAAC,UAAK,WAAU,kBAAiB,GACnC;AAAA,QACC;AAAA;AAAA;AAAA;AAAA,UAIC,oBAAC,UAAK,WAAU,mBAAmB,UAAS;AAAA,YAE5C,YAAY,oBAAC,UAAK,WAAU,oBAAoB,UAAS;AAAA;AAAA;AAAA,EAE7D;AAEJ;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@viax.io/uxm",
3
- "version": "4.44.0",
3
+ "version": "4.46.0",
4
4
  "description": "Viax UXM — React 19 UI primitives and design tokens.",
5
5
  "license": "MIT",
6
6
  "private": false,