@urbicon-ui/blocks 6.21.2 → 6.22.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 (37) hide show
  1. package/dist/components/Calendar/Calendar.svelte +9 -0
  2. package/dist/components/Calendar/CalendarMiniMonth.svelte +10 -8
  3. package/dist/components/Calendar/calendar.context.d.ts +3 -0
  4. package/dist/components/Calendar/calendar.drag.js +19 -7
  5. package/dist/components/Calendar/calendar.variants.d.ts +63 -63
  6. package/dist/components/CompositionBar/CompositionBar.svelte +6 -2
  7. package/dist/components/Sankey/Sankey.svelte +18 -2
  8. package/dist/i18n/index.d.ts +378 -2
  9. package/dist/primitives/Alert/alert.variants.d.ts +8 -8
  10. package/dist/primitives/Avatar/avatar.variants.d.ts +6 -6
  11. package/dist/primitives/Badge/Badge.svelte +6 -4
  12. package/dist/primitives/Button/button.variants.d.ts +4 -4
  13. package/dist/primitives/ButtonGroup/index.d.ts +1 -1
  14. package/dist/primitives/Card/card.variants.d.ts +5 -5
  15. package/dist/primitives/Checkbox/Checkbox.svelte +18 -9
  16. package/dist/primitives/Checkbox/checkbox.variants.js +58 -16
  17. package/dist/primitives/Combobox/combobox.variants.d.ts +24 -24
  18. package/dist/primitives/Dialog/dialog.variants.d.ts +9 -9
  19. package/dist/primitives/Input/Input.svelte +10 -1
  20. package/dist/primitives/Input/input.variants.d.ts +9 -9
  21. package/dist/primitives/JourneyTimeline/journey-timeline.variants.d.ts +22 -22
  22. package/dist/primitives/Popover/Popover.svelte +24 -3
  23. package/dist/primitives/Select/Select.svelte +10 -1
  24. package/dist/primitives/Select/select.variants.d.ts +17 -17
  25. package/dist/primitives/Skeleton/skeleton.variants.d.ts +3 -3
  26. package/dist/primitives/Slider/Slider.svelte +8 -5
  27. package/dist/primitives/Spinner/spinner.variants.d.ts +32 -32
  28. package/dist/primitives/Stepper/stepper.variants.d.ts +11 -11
  29. package/dist/primitives/Textarea/Textarea.svelte +10 -1
  30. package/dist/primitives/Textarea/textarea.variants.d.ts +7 -7
  31. package/dist/primitives/Toast/toast.variants.d.ts +12 -12
  32. package/dist/primitives/Toolbar/toolbar.variants.d.ts +6 -6
  33. package/dist/primitives/Tooltip/tooltip.variants.d.ts +3 -3
  34. package/dist/style/semantic.css +55 -29
  35. package/dist/utils/figma-token-export.d.ts +13 -0
  36. package/dist/utils/figma-token-export.js +99 -26
  37. package/package.json +3 -3
@@ -4,7 +4,7 @@ export declare const buttonVariants: ((props?: {
4
4
  intent?: "primary" | "secondary" | "success" | "warning" | "danger" | "neutral" | undefined;
5
5
  pressed?: boolean | undefined;
6
6
  variant?: "text" | "ghost" | "filled" | "outlined" | undefined;
7
- size?: "sm" | "md" | "lg" | "xl" | "xs" | "2xs" | undefined;
7
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | "2xs" | undefined;
8
8
  loading?: boolean | undefined;
9
9
  loadingPlacement?: "start" | "end" | "overlay" | undefined;
10
10
  active?: boolean | undefined;
@@ -15,7 +15,7 @@ export declare const buttonVariants: ((props?: {
15
15
  intent?: "primary" | "secondary" | "success" | "warning" | "danger" | "neutral" | undefined;
16
16
  pressed?: boolean | undefined;
17
17
  variant?: "text" | "ghost" | "filled" | "outlined" | undefined;
18
- size?: "sm" | "md" | "lg" | "xl" | "xs" | "2xs" | undefined;
18
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | "2xs" | undefined;
19
19
  loading?: boolean | undefined;
20
20
  loadingPlacement?: "start" | "end" | "overlay" | undefined;
21
21
  active?: boolean | undefined;
@@ -28,7 +28,7 @@ export declare const buttonVariants: ((props?: {
28
28
  intent?: "primary" | "secondary" | "success" | "warning" | "danger" | "neutral" | undefined;
29
29
  pressed?: boolean | undefined;
30
30
  variant?: "text" | "ghost" | "filled" | "outlined" | undefined;
31
- size?: "sm" | "md" | "lg" | "xl" | "xs" | "2xs" | undefined;
31
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | "2xs" | undefined;
32
32
  loading?: boolean | undefined;
33
33
  loadingPlacement?: "start" | "end" | "overlay" | undefined;
34
34
  active?: boolean | undefined;
@@ -41,7 +41,7 @@ export declare const buttonVariants: ((props?: {
41
41
  intent?: "primary" | "secondary" | "success" | "warning" | "danger" | "neutral" | undefined;
42
42
  pressed?: boolean | undefined;
43
43
  variant?: "text" | "ghost" | "filled" | "outlined" | undefined;
44
- size?: "sm" | "md" | "lg" | "xl" | "xs" | "2xs" | undefined;
44
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | "2xs" | undefined;
45
45
  loading?: boolean | undefined;
46
46
  loadingPlacement?: "start" | "end" | "overlay" | undefined;
47
47
  active?: boolean | undefined;
@@ -45,7 +45,7 @@ export interface ButtonGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, '
45
45
  orientation?: ButtonGroupOrientation;
46
46
  /** Visually connect buttons (overlapping borders, shared rounding). When `false`, buttons are spaced with a small gap. */
47
47
  connected?: boolean;
48
- /** Size propagated to child Buttons (unless a Button sets its own). */
48
+ /** Size propagated to child Buttons (the group value wins over a Button's own `size`). */
49
49
  size?: ComponentSize;
50
50
  /** Semantic colour propagated to child Buttons. */
51
51
  intent?: ComponentIntent;
@@ -1,6 +1,6 @@
1
1
  import { type SlotNames, type VariantProps } from '../../utils/variants.js';
2
2
  export declare const cardVariants: ((props?: {
3
- variant?: "elevated" | "outlined" | "quiet" | "floating" | undefined;
3
+ variant?: "quiet" | "elevated" | "outlined" | "floating" | undefined;
4
4
  padding?: "none" | "sm" | "md" | "lg" | "xl" | undefined;
5
5
  dividers?: boolean | undefined;
6
6
  interactive?: boolean | undefined;
@@ -8,7 +8,7 @@ export declare const cardVariants: ((props?: {
8
8
  disabled?: boolean | undefined;
9
9
  } | undefined) => {
10
10
  base: (props?: ({
11
- variant?: "elevated" | "outlined" | "quiet" | "floating" | undefined;
11
+ variant?: "quiet" | "elevated" | "outlined" | "floating" | undefined;
12
12
  padding?: "none" | "sm" | "md" | "lg" | "xl" | undefined;
13
13
  dividers?: boolean | undefined;
14
14
  interactive?: boolean | undefined;
@@ -18,7 +18,7 @@ export declare const cardVariants: ((props?: {
18
18
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
19
19
  }) | undefined) => string;
20
20
  header: (props?: ({
21
- variant?: "elevated" | "outlined" | "quiet" | "floating" | undefined;
21
+ variant?: "quiet" | "elevated" | "outlined" | "floating" | undefined;
22
22
  padding?: "none" | "sm" | "md" | "lg" | "xl" | undefined;
23
23
  dividers?: boolean | undefined;
24
24
  interactive?: boolean | undefined;
@@ -28,7 +28,7 @@ export declare const cardVariants: ((props?: {
28
28
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
29
29
  }) | undefined) => string;
30
30
  content: (props?: ({
31
- variant?: "elevated" | "outlined" | "quiet" | "floating" | undefined;
31
+ variant?: "quiet" | "elevated" | "outlined" | "floating" | undefined;
32
32
  padding?: "none" | "sm" | "md" | "lg" | "xl" | undefined;
33
33
  dividers?: boolean | undefined;
34
34
  interactive?: boolean | undefined;
@@ -38,7 +38,7 @@ export declare const cardVariants: ((props?: {
38
38
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
39
39
  }) | undefined) => string;
40
40
  footer: (props?: ({
41
- variant?: "elevated" | "outlined" | "quiet" | "floating" | undefined;
41
+ variant?: "quiet" | "elevated" | "outlined" | "floating" | undefined;
42
42
  padding?: "none" | "sm" | "md" | "lg" | "xl" | undefined;
43
43
  dividers?: boolean | undefined;
44
44
  interactive?: boolean | undefined;
@@ -139,15 +139,24 @@
139
139
  aria-hidden="true"
140
140
  data-state={dataState}
141
141
  >
142
- {#if indeterminate}
143
- <IndeterminateIcon
144
- class={unstyled ? (slotClasses?.icon ?? '') : styles.icon({ class: slotClasses?.icon })}
145
- />
146
- {:else if checked}
147
- <CheckMarkIcon
148
- class={unstyled ? (slotClasses?.icon ?? '') : styles.icon({ class: slotClasses?.icon })}
149
- strokeWidth={3}
150
- />
142
+ {#if unstyled}
143
+ <!-- Unstyled keeps the mount-on-state contract: consumers style via
144
+ `data-state` on the box and rely on the icon only existing while
145
+ checked/indeterminate. -->
146
+ {#if indeterminate}
147
+ <IndeterminateIcon class={slotClasses?.icon ?? ''} />
148
+ {:else if checked}
149
+ <CheckMarkIcon class={slotClasses?.icon ?? ''} strokeWidth={3} />
150
+ {/if}
151
+ {:else if indeterminate}
152
+ <IndeterminateIcon class={styles.icon({ class: slotClasses?.icon })} strokeWidth={3} />
153
+ {:else}
154
+ <!-- Styled mode keeps the icon mounted even while unchecked (hidden by
155
+ `opacity-0` + full stroke-dash offset) — a conditional mount would
156
+ insert the element already at its resolved classes and the draw-in
157
+ transition could never run. strokeWidth 3 matches the check and
158
+ the minus so both states carry the same stroke weight. -->
159
+ <CheckMarkIcon class={styles.icon({ class: slotClasses?.icon })} strokeWidth={3} />
151
160
  {/if}
152
161
  </span>
153
162
 
@@ -7,12 +7,27 @@ export const checkboxVariants = tv({
7
7
  // the checkbox box is an input-tap surface.
8
8
  box: [
9
9
  'relative flex items-center justify-center shrink-0 border',
10
- 'transition-[color,background-color,border-color,box-shadow] duration-[var(--blocks-duration-fast)] ease-out',
10
+ 'transition-[color,background-color,border-color,box-shadow,scale] duration-[var(--blocks-duration-fast)] ease-out',
11
+ // Press feedback on the control surface — same small-element press cue
12
+ // as Badge/Avatar (`scale-95`); `group-active` so pressing the label
13
+ // squeezes the box too. `scale` is in the transition list above, and
14
+ // reduced motion collapses `--blocks-duration-fast` to 1ms.
15
+ 'group-active:scale-95',
11
16
  'peer-focus-visible:ring-2 peer-focus-visible:ring-primary/50',
12
17
  'peer-focus-visible:ring-offset-2 peer-focus-visible:ring-offset-surface-base'
13
18
  ],
14
19
  icon: [
15
- 'opacity-0 scale-75 transition-[opacity,transform] duration-[var(--blocks-duration-fast)] ease-out'
20
+ // Check/minus draw in along their stroke: the paths hide behind a full
21
+ // dash offset and the checked/indeterminate variants pull it to 0.
22
+ // 22px covers both geometries (check ≈ 20.2, minus = 14 user units);
23
+ // the offset sits 1px past the dash edge so no round-cap dot can bleed
24
+ // at the path start. A fast opacity fade rides along so the un-draw on
25
+ // uncheck can't flash in the inherited text colour once the box's
26
+ // intent fill (and its `text-on-*`) has left. Both durations are
27
+ // tokens, so `prefers-reduced-motion` collapses the whole draw to 1ms.
28
+ 'opacity-0 transition-opacity duration-[var(--blocks-duration-fast)] ease-out',
29
+ '[&_path]:[stroke-dasharray:22px] [&_path]:[stroke-dashoffset:23px]',
30
+ '[&_path]:transition-[stroke-dashoffset] [&_path]:duration-[var(--blocks-duration-normal)] [&_path]:ease-out'
16
31
  ],
17
32
  label: ['text-text-primary select-none'],
18
33
  message: ['text-xs text-text-tertiary']
@@ -63,12 +78,12 @@ export const checkboxVariants = tv({
63
78
  },
64
79
  checked: {
65
80
  true: {
66
- icon: 'opacity-100 scale-100'
81
+ icon: 'opacity-100 [&_path]:[stroke-dashoffset:0]'
67
82
  }
68
83
  },
69
84
  indeterminate: {
70
85
  true: {
71
- icon: 'opacity-100 scale-100'
86
+ icon: 'opacity-100 [&_path]:[stroke-dashoffset:0]'
72
87
  }
73
88
  },
74
89
  disabled: {
@@ -103,66 +118,93 @@ export const checkboxVariants = tv({
103
118
  class: { box: 'bg-transparent border-transparent group-hover:bg-surface-subtle' }
104
119
  },
105
120
  // ── Checked intent colors (identical across all variants) ──
121
+ // Hover/active darken through the intent interaction-layer tokens —
122
+ // the same `bg-<intent>-hover` / `bg-<intent>-active` ladder Button
123
+ // uses — via `group-*` so hovering/pressing the label counts too.
106
124
  {
107
125
  checked: true,
108
126
  intent: 'primary',
109
- class: { box: 'bg-primary border-primary text-text-on-primary' }
127
+ class: {
128
+ box: 'bg-primary border-primary text-text-on-primary group-hover:bg-primary-hover group-active:bg-primary-active'
129
+ }
110
130
  },
111
131
  {
112
132
  checked: true,
113
133
  intent: 'secondary',
114
- class: { box: 'bg-secondary border-secondary text-text-on-primary' }
134
+ class: {
135
+ box: 'bg-secondary border-secondary text-text-on-primary group-hover:bg-secondary-hover group-active:bg-secondary-active'
136
+ }
115
137
  },
116
138
  {
117
139
  checked: true,
118
140
  intent: 'success',
119
- class: { box: 'bg-success border-success text-text-on-primary' }
141
+ class: {
142
+ box: 'bg-success border-success text-text-on-primary group-hover:bg-success-hover group-active:bg-success-active'
143
+ }
120
144
  },
121
145
  {
122
146
  checked: true,
123
147
  intent: 'warning',
124
- class: { box: 'bg-warning border-warning text-text-on-surface' }
148
+ class: {
149
+ box: 'bg-warning border-warning text-text-on-surface group-hover:bg-warning-hover group-active:bg-warning-active'
150
+ }
125
151
  },
126
152
  {
127
153
  checked: true,
128
154
  intent: 'danger',
129
- class: { box: 'bg-danger border-danger text-text-on-primary' }
155
+ class: {
156
+ box: 'bg-danger border-danger text-text-on-primary group-hover:bg-danger-hover group-active:bg-danger-active'
157
+ }
130
158
  },
131
159
  {
132
160
  checked: true,
133
161
  intent: 'neutral',
134
- class: { box: 'bg-neutral border-neutral text-text-on-primary' }
162
+ class: {
163
+ box: 'bg-neutral border-neutral text-text-on-primary group-hover:bg-neutral-hover group-active:bg-neutral-active'
164
+ }
135
165
  },
136
166
  // ── Indeterminate mirrors checked ──
137
167
  {
138
168
  indeterminate: true,
139
169
  intent: 'primary',
140
- class: { box: 'bg-primary border-primary text-text-on-primary' }
170
+ class: {
171
+ box: 'bg-primary border-primary text-text-on-primary group-hover:bg-primary-hover group-active:bg-primary-active'
172
+ }
141
173
  },
142
174
  {
143
175
  indeterminate: true,
144
176
  intent: 'secondary',
145
- class: { box: 'bg-secondary border-secondary text-text-on-primary' }
177
+ class: {
178
+ box: 'bg-secondary border-secondary text-text-on-primary group-hover:bg-secondary-hover group-active:bg-secondary-active'
179
+ }
146
180
  },
147
181
  {
148
182
  indeterminate: true,
149
183
  intent: 'success',
150
- class: { box: 'bg-success border-success text-text-on-primary' }
184
+ class: {
185
+ box: 'bg-success border-success text-text-on-primary group-hover:bg-success-hover group-active:bg-success-active'
186
+ }
151
187
  },
152
188
  {
153
189
  indeterminate: true,
154
190
  intent: 'warning',
155
- class: { box: 'bg-warning border-warning text-text-on-surface' }
191
+ class: {
192
+ box: 'bg-warning border-warning text-text-on-surface group-hover:bg-warning-hover group-active:bg-warning-active'
193
+ }
156
194
  },
157
195
  {
158
196
  indeterminate: true,
159
197
  intent: 'danger',
160
- class: { box: 'bg-danger border-danger text-text-on-primary' }
198
+ class: {
199
+ box: 'bg-danger border-danger text-text-on-primary group-hover:bg-danger-hover group-active:bg-danger-active'
200
+ }
161
201
  },
162
202
  {
163
203
  indeterminate: true,
164
204
  intent: 'neutral',
165
- class: { box: 'bg-neutral border-neutral text-text-on-primary' }
205
+ class: {
206
+ box: 'bg-neutral border-neutral text-text-on-primary group-hover:bg-neutral-hover group-active:bg-neutral-active'
207
+ }
166
208
  },
167
209
  // ── Error overrides unchecked border ──
168
210
  {
@@ -2,14 +2,14 @@ import { type SlotNames, type VariantProps } from '../../utils/variants.js';
2
2
  export declare const comboboxVariants: ((props?: {
3
3
  tier?: "commit" | "modify" | undefined;
4
4
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
5
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
5
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
6
6
  open?: boolean | undefined;
7
7
  disabled?: boolean | undefined;
8
8
  } | undefined) => {
9
9
  base: (props?: ({
10
10
  tier?: "commit" | "modify" | undefined;
11
11
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
12
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
12
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
13
13
  open?: boolean | undefined;
14
14
  disabled?: boolean | undefined;
15
15
  } & {
@@ -18,7 +18,7 @@ export declare const comboboxVariants: ((props?: {
18
18
  label: (props?: ({
19
19
  tier?: "commit" | "modify" | undefined;
20
20
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
21
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
21
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
22
22
  open?: boolean | undefined;
23
23
  disabled?: boolean | undefined;
24
24
  } & {
@@ -27,7 +27,7 @@ export declare const comboboxVariants: ((props?: {
27
27
  requiredMark: (props?: ({
28
28
  tier?: "commit" | "modify" | undefined;
29
29
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
30
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
30
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
31
31
  open?: boolean | undefined;
32
32
  disabled?: boolean | undefined;
33
33
  } & {
@@ -36,7 +36,7 @@ export declare const comboboxVariants: ((props?: {
36
36
  inputWrapper: (props?: ({
37
37
  tier?: "commit" | "modify" | undefined;
38
38
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
39
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
39
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
40
40
  open?: boolean | undefined;
41
41
  disabled?: boolean | undefined;
42
42
  } & {
@@ -45,7 +45,7 @@ export declare const comboboxVariants: ((props?: {
45
45
  input: (props?: ({
46
46
  tier?: "commit" | "modify" | undefined;
47
47
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
48
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
48
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
49
49
  open?: boolean | undefined;
50
50
  disabled?: boolean | undefined;
51
51
  } & {
@@ -54,7 +54,7 @@ export declare const comboboxVariants: ((props?: {
54
54
  message: (props?: ({
55
55
  tier?: "commit" | "modify" | undefined;
56
56
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
57
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
57
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
58
58
  open?: boolean | undefined;
59
59
  disabled?: boolean | undefined;
60
60
  } & {
@@ -63,7 +63,7 @@ export declare const comboboxVariants: ((props?: {
63
63
  helper: (props?: ({
64
64
  tier?: "commit" | "modify" | undefined;
65
65
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
66
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
66
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
67
67
  open?: boolean | undefined;
68
68
  disabled?: boolean | undefined;
69
69
  } & {
@@ -72,7 +72,7 @@ export declare const comboboxVariants: ((props?: {
72
72
  listbox: (props?: ({
73
73
  tier?: "commit" | "modify" | undefined;
74
74
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
75
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
75
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
76
76
  open?: boolean | undefined;
77
77
  disabled?: boolean | undefined;
78
78
  } & {
@@ -81,7 +81,7 @@ export declare const comboboxVariants: ((props?: {
81
81
  option: (props?: ({
82
82
  tier?: "commit" | "modify" | undefined;
83
83
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
84
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
84
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
85
85
  open?: boolean | undefined;
86
86
  disabled?: boolean | undefined;
87
87
  } & {
@@ -90,7 +90,7 @@ export declare const comboboxVariants: ((props?: {
90
90
  optionActive: (props?: ({
91
91
  tier?: "commit" | "modify" | undefined;
92
92
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
93
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
93
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
94
94
  open?: boolean | undefined;
95
95
  disabled?: boolean | undefined;
96
96
  } & {
@@ -99,7 +99,7 @@ export declare const comboboxVariants: ((props?: {
99
99
  optionSelected: (props?: ({
100
100
  tier?: "commit" | "modify" | undefined;
101
101
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
102
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
102
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
103
103
  open?: boolean | undefined;
104
104
  disabled?: boolean | undefined;
105
105
  } & {
@@ -108,7 +108,7 @@ export declare const comboboxVariants: ((props?: {
108
108
  group: (props?: ({
109
109
  tier?: "commit" | "modify" | undefined;
110
110
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
111
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
111
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
112
112
  open?: boolean | undefined;
113
113
  disabled?: boolean | undefined;
114
114
  } & {
@@ -117,7 +117,7 @@ export declare const comboboxVariants: ((props?: {
117
117
  groupLabel: (props?: ({
118
118
  tier?: "commit" | "modify" | undefined;
119
119
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
120
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
120
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
121
121
  open?: boolean | undefined;
122
122
  disabled?: boolean | undefined;
123
123
  } & {
@@ -126,7 +126,7 @@ export declare const comboboxVariants: ((props?: {
126
126
  noResults: (props?: ({
127
127
  tier?: "commit" | "modify" | undefined;
128
128
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
129
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
129
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
130
130
  open?: boolean | undefined;
131
131
  disabled?: boolean | undefined;
132
132
  } & {
@@ -135,7 +135,7 @@ export declare const comboboxVariants: ((props?: {
135
135
  loading: (props?: ({
136
136
  tier?: "commit" | "modify" | undefined;
137
137
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
138
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
138
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
139
139
  open?: boolean | undefined;
140
140
  disabled?: boolean | undefined;
141
141
  } & {
@@ -144,7 +144,7 @@ export declare const comboboxVariants: ((props?: {
144
144
  clear: (props?: ({
145
145
  tier?: "commit" | "modify" | undefined;
146
146
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
147
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
147
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
148
148
  open?: boolean | undefined;
149
149
  disabled?: boolean | undefined;
150
150
  } & {
@@ -153,7 +153,7 @@ export declare const comboboxVariants: ((props?: {
153
153
  chevronButton: (props?: ({
154
154
  tier?: "commit" | "modify" | undefined;
155
155
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
156
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
156
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
157
157
  open?: boolean | undefined;
158
158
  disabled?: boolean | undefined;
159
159
  } & {
@@ -162,7 +162,7 @@ export declare const comboboxVariants: ((props?: {
162
162
  chevron: (props?: ({
163
163
  tier?: "commit" | "modify" | undefined;
164
164
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
165
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
165
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
166
166
  open?: boolean | undefined;
167
167
  disabled?: boolean | undefined;
168
168
  } & {
@@ -171,7 +171,7 @@ export declare const comboboxVariants: ((props?: {
171
171
  control: (props?: ({
172
172
  tier?: "commit" | "modify" | undefined;
173
173
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
174
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
174
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
175
175
  open?: boolean | undefined;
176
176
  disabled?: boolean | undefined;
177
177
  } & {
@@ -180,7 +180,7 @@ export declare const comboboxVariants: ((props?: {
180
180
  search: (props?: ({
181
181
  tier?: "commit" | "modify" | undefined;
182
182
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
183
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
183
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
184
184
  open?: boolean | undefined;
185
185
  disabled?: boolean | undefined;
186
186
  } & {
@@ -189,7 +189,7 @@ export declare const comboboxVariants: ((props?: {
189
189
  tag: (props?: ({
190
190
  tier?: "commit" | "modify" | undefined;
191
191
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
192
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
192
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
193
193
  open?: boolean | undefined;
194
194
  disabled?: boolean | undefined;
195
195
  } & {
@@ -198,7 +198,7 @@ export declare const comboboxVariants: ((props?: {
198
198
  tagLabel: (props?: ({
199
199
  tier?: "commit" | "modify" | undefined;
200
200
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
201
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
201
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
202
202
  open?: boolean | undefined;
203
203
  disabled?: boolean | undefined;
204
204
  } & {
@@ -207,7 +207,7 @@ export declare const comboboxVariants: ((props?: {
207
207
  tagRemove: (props?: ({
208
208
  tier?: "commit" | "modify" | undefined;
209
209
  variant?: "ghost" | "filled" | "outlined" | "underline" | undefined;
210
- size?: "sm" | "md" | "lg" | "xl" | "xs" | undefined;
210
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
211
211
  open?: boolean | undefined;
212
212
  disabled?: boolean | undefined;
213
213
  } & {
@@ -1,60 +1,60 @@
1
1
  import { type SlotNames, type VariantProps } from '../../utils/variants.js';
2
2
  export declare const dialogVariants: ((props?: {
3
- size?: "sm" | "md" | "lg" | "xl" | "full" | "fullscreen" | undefined;
3
+ size?: "sm" | "md" | "lg" | "xl" | "fullscreen" | "full" | undefined;
4
4
  placement?: "top" | "center" | undefined;
5
5
  intent?: "primary" | "secondary" | "success" | "warning" | "danger" | "neutral" | undefined;
6
6
  } | undefined) => {
7
7
  dialog: (props?: ({
8
- size?: "sm" | "md" | "lg" | "xl" | "full" | "fullscreen" | undefined;
8
+ size?: "sm" | "md" | "lg" | "xl" | "fullscreen" | "full" | undefined;
9
9
  placement?: "top" | "center" | undefined;
10
10
  intent?: "primary" | "secondary" | "success" | "warning" | "danger" | "neutral" | undefined;
11
11
  } & {
12
12
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
13
13
  }) | undefined) => string;
14
14
  backdrop: (props?: ({
15
- size?: "sm" | "md" | "lg" | "xl" | "full" | "fullscreen" | undefined;
15
+ size?: "sm" | "md" | "lg" | "xl" | "fullscreen" | "full" | undefined;
16
16
  placement?: "top" | "center" | undefined;
17
17
  intent?: "primary" | "secondary" | "success" | "warning" | "danger" | "neutral" | undefined;
18
18
  } & {
19
19
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
20
20
  }) | undefined) => string;
21
21
  panel: (props?: ({
22
- size?: "sm" | "md" | "lg" | "xl" | "full" | "fullscreen" | undefined;
22
+ size?: "sm" | "md" | "lg" | "xl" | "fullscreen" | "full" | undefined;
23
23
  placement?: "top" | "center" | undefined;
24
24
  intent?: "primary" | "secondary" | "success" | "warning" | "danger" | "neutral" | undefined;
25
25
  } & {
26
26
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
27
27
  }) | undefined) => string;
28
28
  content: (props?: ({
29
- size?: "sm" | "md" | "lg" | "xl" | "full" | "fullscreen" | undefined;
29
+ size?: "sm" | "md" | "lg" | "xl" | "fullscreen" | "full" | undefined;
30
30
  placement?: "top" | "center" | undefined;
31
31
  intent?: "primary" | "secondary" | "success" | "warning" | "danger" | "neutral" | undefined;
32
32
  } & {
33
33
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
34
34
  }) | undefined) => string;
35
35
  header: (props?: ({
36
- size?: "sm" | "md" | "lg" | "xl" | "full" | "fullscreen" | undefined;
36
+ size?: "sm" | "md" | "lg" | "xl" | "fullscreen" | "full" | undefined;
37
37
  placement?: "top" | "center" | undefined;
38
38
  intent?: "primary" | "secondary" | "success" | "warning" | "danger" | "neutral" | undefined;
39
39
  } & {
40
40
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
41
41
  }) | undefined) => string;
42
42
  title: (props?: ({
43
- size?: "sm" | "md" | "lg" | "xl" | "full" | "fullscreen" | undefined;
43
+ size?: "sm" | "md" | "lg" | "xl" | "fullscreen" | "full" | undefined;
44
44
  placement?: "top" | "center" | undefined;
45
45
  intent?: "primary" | "secondary" | "success" | "warning" | "danger" | "neutral" | undefined;
46
46
  } & {
47
47
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
48
48
  }) | undefined) => string;
49
49
  body: (props?: ({
50
- size?: "sm" | "md" | "lg" | "xl" | "full" | "fullscreen" | undefined;
50
+ size?: "sm" | "md" | "lg" | "xl" | "fullscreen" | "full" | undefined;
51
51
  placement?: "top" | "center" | undefined;
52
52
  intent?: "primary" | "secondary" | "success" | "warning" | "danger" | "neutral" | undefined;
53
53
  } & {
54
54
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
55
55
  }) | undefined) => string;
56
56
  footer: (props?: ({
57
- size?: "sm" | "md" | "lg" | "xl" | "full" | "fullscreen" | undefined;
57
+ size?: "sm" | "md" | "lg" | "xl" | "fullscreen" | "full" | undefined;
58
58
  placement?: "top" | "center" | undefined;
59
59
  intent?: "primary" | "secondary" | "success" | "warning" | "danger" | "neutral" | undefined;
60
60
  } & {
@@ -43,6 +43,7 @@
43
43
  persistVersion = 1,
44
44
  persistNamespace,
45
45
  onkeydown: userOnKeydown,
46
+ 'aria-describedby': ariaDescribedby,
46
47
  ...restProps
47
48
  }: InputProps = $props();
48
49
 
@@ -126,6 +127,14 @@
126
127
  disabled
127
128
  }));
128
129
 
130
+ // Consumer-supplied `aria-describedby` (e.g. an external hint rendered
131
+ // outside the component) merges with the internal error/helper chain
132
+ // instead of being clobbered by it — internal descriptions first, the
133
+ // consumer's supplemental one last.
134
+ const describedBy = $derived(
135
+ [ff.describedBy, ariaDescribedby].filter(Boolean).join(' ') || undefined
136
+ );
137
+
129
138
  $effect(() => {
130
139
  if (inputRef && mint && mint !== 'none' && !disabled) {
131
140
  return mintRegistry.apply(inputRef, mint);
@@ -222,7 +231,7 @@
222
231
  {readonly}
223
232
  {required}
224
233
  aria-invalid={ff.invalid ? 'true' : undefined}
225
- aria-describedby={ff.describedBy}
234
+ aria-describedby={describedBy}
226
235
  onkeydown={handleKeydown}
227
236
  />
228
237