@urbicon-ui/blocks 6.9.0 → 6.11.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.
@@ -1,95 +1,150 @@
1
1
  import { tv } from '../../utils/variants.js';
2
2
  export const journeyTimelineVariants = tv({
3
3
  slots: {
4
- // Root wrapper. Always a <div> so the same element hosts the marker rail
5
- // AND (horizontal only) the shared detail panel beneath it. The last node's
6
- // connector is hidden in both orientations — nothing to connect onward to.
7
- base: 'w-full [&_[data-journey-node]:last-child_[data-journey-connector]]:hidden',
4
+ // Root wrapper. Hosts the rail and in panel mode the shared readout.
5
+ base: 'w-full',
8
6
  // The ordered list of nodes. `flex-col` vertical, `flex-row` horizontal.
9
7
  rail: 'flex list-none m-0 p-0',
10
- // A single node <li>.
8
+ // A single node <li>. Vertical: grid of [meta?] [marker column] [content];
9
+ // horizontal: flex row of trigger + connector group.
11
10
  node: 'group/node',
12
- // The interactive header marker + title/subtitle. A <button> for focusable
13
- // nodes, a plain <div> for pure waypoints (focusable === false).
14
- trigger: [
15
- 'flex items-center text-left w-full bg-transparent border-0 appearance-none p-1 -m-1',
16
- 'rounded-contain',
17
- 'transition-[color,background-color] duration-[var(--blocks-duration-fast)]',
18
- 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:ring-offset-2 focus-visible:ring-offset-surface-base'
11
+ // Chronicle-axis column (vertical): right-aligned, tabular times, dates,
12
+ // versions. Rendered only when any node provides `meta` (or a meta snippet).
13
+ metaColumn: 'shrink-0 text-right',
14
+ meta: [
15
+ 'font-mono tabular-nums leading-tight text-text-tertiary',
16
+ 'transition-colors duration-[var(--blocks-duration-fast)]'
19
17
  ],
20
- // The status-coloured circle.
18
+ // The spine: marker + connector line. Vertical: a narrow column the line
19
+ // grows down inside; horizontal: a full-width row the line grows right in.
20
+ markerColumn: 'flex items-center',
21
+ // The status dot. Deliberately small — the line is the protagonist, the
22
+ // dots are punctuation (contrast: Stepper's large glyph discs). The grid
23
+ // centring only matters when a `marker` snippet puts a glyph inside.
21
24
  marker: [
22
- 'flex items-center justify-center shrink-0 font-semibold rounded-commit border-2 box-border',
23
- 'transition-[color,background-color,border-color,box-shadow] duration-[var(--blocks-duration-fast)]'
25
+ 'box-border grid shrink-0 place-items-center rounded-commit border-2',
26
+ 'transition-[background-color,border-color,box-shadow] duration-[var(--blocks-duration-fast)]'
24
27
  ],
25
- // Column (marker width) that carries the vertical connector below a marker.
26
- // `flex-col` is essential: it makes the connector's `flex-1` grow *down* the
27
- // column (a thin vertical line) instead of *across* it (a fat block).
28
- connectorColumn: 'flex flex-col shrink-0 items-center',
29
- // The connecting line between markers.
28
+ // The connecting line. Drawn with borders so `connectorStyle` can switch
29
+ // solid/dashed/dotted the connector carries meaning, not just geometry.
30
30
  connector: [
31
- 'bg-border-subtle',
32
- 'transition-[background-color] duration-[var(--blocks-duration-normal)]'
31
+ 'border-border-default',
32
+ 'transition-[border-color] duration-[var(--blocks-duration-normal)]'
33
+ ],
34
+ // Content cell (vertical): card + segment label.
35
+ content: 'min-w-0',
36
+ // The focus surface around header + inline detail. Transparent at rest,
37
+ // elevated card when focused inline, selected tint when focused in panel
38
+ // mode — never a bare full-width grey block.
39
+ card: [
40
+ 'rounded-contain border border-transparent',
41
+ 'transition-[background-color,border-color,box-shadow] duration-[var(--blocks-duration-normal)] ease-[var(--blocks-ease-gentle)]'
42
+ ],
43
+ // Header row: the trigger plus the optional trailing area. Keeping
44
+ // `trailing` a *sibling* of the button (never a child) keeps interactive
45
+ // trailing content valid HTML and off the activation target.
46
+ header: 'flex',
47
+ // The interactive header — title + subtitle. A <button> for focusable
48
+ // nodes, a plain <div> for pure waypoints (focusable === false).
49
+ trigger: [
50
+ 'flex appearance-none flex-col items-start gap-0.5 border-0 bg-transparent p-0 text-left',
51
+ 'rounded-contain',
52
+ 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:ring-offset-2 focus-visible:ring-offset-surface-base'
33
53
  ],
34
- // Title + subtitle wrapper.
35
- labelGroup: 'flex flex-col min-w-0',
54
+ // End-of-row content (badges, help, quick actions) beside the trigger.
55
+ trailing: 'flex shrink-0 items-center gap-1',
56
+ labelGroup: 'flex min-w-0 flex-col',
36
57
  title: [
37
- 'font-medium leading-tight truncate',
58
+ 'font-medium leading-tight',
38
59
  'transition-colors duration-[var(--blocks-duration-fast)]'
39
60
  ],
40
- subtitle: 'text-text-tertiary leading-tight mt-0.5 truncate',
41
- // Lower row (vertical only): connector column + inline detail region.
42
- body: 'flex',
61
+ subtitle: 'text-text-tertiary leading-tight mt-0.5',
62
+ // Label for the stretch between two nodes (duration, transport, gap…).
63
+ segment: 'text-text-quaternary leading-tight',
43
64
  // Grid-rows collapse wrapper (0fr → 1fr). Reduced-motion safe: the duration
44
65
  // token collapses to 1ms under prefers-reduced-motion (interaction.css).
45
66
  detail: [
46
67
  'grid',
47
68
  'transition-[grid-template-rows] duration-[var(--blocks-duration-normal)] ease-[var(--blocks-ease-smooth)]'
48
69
  ],
49
- detailInner: 'overflow-hidden min-h-0',
70
+ detailInner: 'min-h-0 overflow-hidden',
50
71
  detailContent: 'text-text-secondary',
51
- // Shared detail panel (horizontal only) rendered beneath the rail.
52
- panel: 'text-text-secondary border border-border-subtle rounded-contain bg-surface-quiet'
72
+ // The stable readout (detail="panel" and every horizontal timeline).
73
+ panel: [
74
+ 'text-text-secondary border border-border-default bg-surface-elevated rounded-contain',
75
+ 'shadow-[var(--blocks-shadow-md)]'
76
+ ]
53
77
  },
54
78
  variants: {
55
79
  orientation: {
56
80
  vertical: {
57
- rail: 'flex-col'
81
+ rail: 'flex-col',
82
+ node: 'grid',
83
+ markerColumn: 'flex-col',
84
+ connector: 'my-1 w-0 min-h-3 flex-1 border-l-2',
85
+ header: 'items-start gap-x-3',
86
+ trigger: 'min-w-0 flex-1',
87
+ trailing: 'ml-auto',
88
+ segment: 'flex items-center'
58
89
  },
59
90
  horizontal: {
60
- // Column layout so the shared detail panel sits below the rail.
91
+ // Column layout so the shared panel sits below the rail.
61
92
  base: 'flex flex-col',
62
93
  rail: 'flex-row items-start',
63
- // Each node grows to spread markers evenly; the last one hugs its content.
64
- node: 'flex items-center [&:not(:last-child)]:flex-1',
65
- // Compact header (marker + label side by side) so the connector can grow.
66
- trigger: 'w-auto shrink-0'
94
+ // Stacked station: meta row above the spine, label pill below. Every
95
+ // node but the last stretches so the spine distributes the stations.
96
+ node: 'flex flex-col [&:not(:last-child)]:flex-1',
97
+ // Visual order is meta → spine → header, but the DOM keeps the header
98
+ // before the spine so a segment label is read *after* its node.
99
+ metaColumn: 'order-1 text-left',
100
+ markerColumn: 'order-2 w-full flex-row',
101
+ header: 'order-3 items-center gap-x-1.5 self-start',
102
+ // Shrink-to-fit pill around the labels only — the marker sits on the
103
+ // spine above, so the whole rail reads as stations on one line.
104
+ trigger: 'w-auto',
105
+ connector: 'h-0 min-w-3 flex-1 border-t-2',
106
+ // Segment labels sit *in* the line (line — label — line); they widen
107
+ // the gap instead of overlapping the next station's marker.
108
+ segment: 'shrink-0 whitespace-nowrap',
109
+ panel: 'mt-4 w-full'
67
110
  }
68
111
  },
69
112
  size: {
70
113
  sm: {
71
- marker: 'size-7 text-xs',
72
- connectorColumn: 'w-7',
73
- trigger: 'gap-2',
114
+ meta: 'text-[11px]',
115
+ marker: 'size-2.5',
116
+ node: 'gap-x-2.5',
117
+ card: '-mx-1.5 px-1.5 py-1.5',
74
118
  title: 'text-xs',
75
119
  subtitle: 'text-[11px]',
76
- detailContent: 'text-sm pl-2'
120
+ segment: 'text-[11px]',
121
+ content: 'pb-4',
122
+ detailContent: 'text-xs pt-2',
123
+ panel: 'p-3 text-xs'
77
124
  },
78
125
  md: {
79
- marker: 'size-9 text-sm',
80
- connectorColumn: 'w-9',
81
- trigger: 'gap-2.5',
126
+ meta: 'text-xs',
127
+ marker: 'size-3',
128
+ node: 'gap-x-3',
129
+ card: '-mx-2 px-2 py-2',
82
130
  title: 'text-sm',
83
131
  subtitle: 'text-xs',
84
- detailContent: 'text-sm pl-2.5'
132
+ segment: 'text-xs',
133
+ content: 'pb-5',
134
+ detailContent: 'text-sm pt-2.5',
135
+ panel: 'p-4 text-sm'
85
136
  },
86
137
  lg: {
87
- marker: 'size-11 text-base',
88
- connectorColumn: 'w-11',
89
- trigger: 'gap-3',
138
+ meta: 'text-sm',
139
+ marker: 'size-3.5',
140
+ node: 'gap-x-3.5',
141
+ card: '-mx-2.5 px-2.5 py-2.5',
90
142
  title: 'text-base',
91
143
  subtitle: 'text-sm',
92
- detailContent: 'text-base pl-3'
144
+ segment: 'text-sm',
145
+ content: 'pb-6',
146
+ detailContent: 'text-base pt-3',
147
+ panel: 'p-5 text-base'
93
148
  }
94
149
  },
95
150
  // Marker colour + title tone per journey status. Mirrors the semantic intent
@@ -97,71 +152,184 @@ export const journeyTimelineVariants = tv({
97
152
  // Progress and Stepper.
98
153
  status: {
99
154
  complete: {
100
- marker: 'border-success bg-success text-text-on-primary'
155
+ marker: 'bg-success border-success',
156
+ title: 'text-text-primary'
101
157
  },
102
158
  active: {
103
- marker: 'border-primary bg-primary text-text-on-primary shadow-[var(--blocks-shadow-sm)]',
159
+ marker: 'bg-primary border-primary ring-4 ring-primary/15',
104
160
  title: 'text-text-primary'
105
161
  },
106
162
  pending: {
107
- marker: 'border-border-default bg-surface-base text-text-tertiary'
163
+ marker: 'bg-surface-base border-border-strong',
164
+ title: 'text-text-secondary'
165
+ },
166
+ // Worth a look, does not block — hollow like pending but on the warning
167
+ // token, mirroring Stepper's per-step warning state.
168
+ attention: {
169
+ marker: 'bg-surface-base border-warning',
170
+ title: 'text-warning-emphasis'
108
171
  },
109
172
  blocked: {
110
- marker: 'border-danger bg-danger text-text-on-primary',
173
+ marker: 'bg-danger border-danger',
111
174
  title: 'text-danger'
112
175
  },
113
176
  skipped: {
114
- marker: 'border-border-subtle bg-surface-subtle text-text-tertiary opacity-70',
177
+ marker: 'bg-surface-subtle border-border-subtle opacity-80',
115
178
  title: 'text-text-tertiary'
116
179
  }
117
180
  },
118
- // The currently expanded node. Distinct from DOM focus (focus-visible ring).
181
+ // The currently focused node. Distinct from DOM focus (focus-visible ring).
119
182
  focused: {
120
183
  true: {
121
- trigger: 'bg-surface-subtle',
122
- title: 'text-text-primary font-semibold'
184
+ meta: 'text-text-primary',
185
+ title: 'font-semibold text-text-primary'
123
186
  },
124
187
  false: {}
125
188
  },
126
189
  // Focusable nodes react to hover + show a pointer; pure waypoints do not.
127
190
  interactive: {
128
191
  true: {
129
- trigger: 'cursor-pointer hover:bg-surface-hover'
192
+ trigger: 'cursor-pointer'
130
193
  },
131
194
  false: {
132
195
  trigger: 'cursor-default'
133
196
  }
134
197
  },
135
- // The connector segment leading out of a completed node reads as "travelled".
136
- connectorComplete: {
198
+ // The connector leaving a completed node reads as "travelled".
199
+ travelled: {
137
200
  true: {
138
- connector: 'bg-success'
201
+ connector: 'border-success'
139
202
  },
140
203
  false: {}
204
+ },
205
+ // Per-node line style — solid ride, dashed/dotted transfer or gap.
206
+ connectorStyle: {
207
+ solid: { connector: 'border-solid' },
208
+ dashed: { connector: 'border-dashed' },
209
+ dotted: { connector: 'border-dotted' }
210
+ },
211
+ // Where the focused detail lives (vertical only; horizontal is always panel).
212
+ detail: {
213
+ inline: {},
214
+ panel: {}
215
+ },
216
+ // Whether the chronicle axis (meta rail) is rendered — adds the grid column.
217
+ withMeta: {
218
+ true: { node: 'grid-cols-[auto_auto_minmax(0,1fr)]' },
219
+ false: { node: 'grid-cols-[auto_minmax(0,1fr)]' }
141
220
  }
142
221
  },
143
222
  compoundVariants: [
144
- // Vertical connector geometry: a thin line that grows down the marker column.
223
+ // Size geometry that only applies to one orientation. Vertical: fixed
224
+ // meta/marker column widths + baseline offsets that align dot and title;
225
+ // horizontal: spine gaps + the label pill's optical left edge (-mx
226
+ // compensates px so title, marker and meta share one left line).
227
+ {
228
+ orientation: 'vertical',
229
+ size: 'sm',
230
+ class: {
231
+ metaColumn: 'w-10 pt-1.5',
232
+ markerColumn: 'w-3.5',
233
+ marker: 'mt-2',
234
+ segment: 'mt-1.5 gap-1'
235
+ }
236
+ },
145
237
  {
146
238
  orientation: 'vertical',
239
+ size: 'md',
147
240
  class: {
148
- connector: 'w-0.5 flex-1 my-1 min-h-4 rounded-commit'
241
+ metaColumn: 'w-12 pt-2',
242
+ markerColumn: 'w-4',
243
+ marker: 'mt-2.5',
244
+ segment: 'mt-2 gap-1.5'
149
245
  }
150
246
  },
151
- // Horizontal connector geometry: a thin line filling the gap to the next marker.
247
+ {
248
+ orientation: 'vertical',
249
+ size: 'lg',
250
+ class: {
251
+ metaColumn: 'w-14 pt-2.5',
252
+ markerColumn: 'w-5',
253
+ marker: 'mt-3',
254
+ segment: 'mt-2.5 gap-2'
255
+ }
256
+ },
257
+ // The fixed spine height keeps every marker on one line whether or not the
258
+ // station's outgoing segment carries a (taller) text label. The metaColumn
259
+ // min-height is the same guarantee for the chronicle row: it holds even
260
+ // when a consumer `meta` snippet renders nothing for some stations.
152
261
  {
153
262
  orientation: 'horizontal',
263
+ size: 'sm',
154
264
  class: {
155
- connector: 'h-0.5 flex-1 mx-2 self-center rounded-commit'
265
+ node: 'gap-y-0.5',
266
+ metaColumn: 'min-h-3.5',
267
+ markerColumn: 'h-4 gap-1 pr-1',
268
+ trigger: '-ml-1.5 px-1.5 py-1'
156
269
  }
157
270
  },
158
- // A focused pure waypoint keeps a bold title but gains no hover surface.
159
271
  {
160
- interactive: false,
272
+ orientation: 'horizontal',
273
+ size: 'md',
274
+ class: {
275
+ node: 'gap-y-1',
276
+ metaColumn: 'min-h-4',
277
+ markerColumn: 'h-4 gap-1.5 pr-1.5',
278
+ trigger: '-ml-2 px-2 py-1.5'
279
+ }
280
+ },
281
+ {
282
+ orientation: 'horizontal',
283
+ size: 'lg',
284
+ class: {
285
+ node: 'gap-y-1',
286
+ metaColumn: 'min-h-4.5',
287
+ markerColumn: 'h-5 gap-2 pr-2',
288
+ trigger: '-ml-2.5 px-2.5 py-2'
289
+ }
290
+ },
291
+ // Vertical + panel: two-column layout on wide viewports; on narrow ones the
292
+ // readout docks to the viewport bottom while the rail scrolls behind it.
293
+ {
294
+ orientation: 'vertical',
295
+ detail: 'panel',
296
+ class: {
297
+ base: 'sm:grid sm:grid-cols-[minmax(0,1fr)_minmax(16rem,20rem)] sm:items-start sm:gap-x-6',
298
+ panel: 'max-sm:sticky max-sm:bottom-4 max-sm:z-[var(--z-docked)] max-sm:mt-4 sm:sticky sm:top-4'
299
+ }
300
+ },
301
+ // Focused inline node: the elevated card — the focus IS a surface change,
302
+ // not a grey backdrop.
303
+ {
304
+ detail: 'inline',
305
+ focused: true,
306
+ class: {
307
+ card: 'border-border-default bg-surface-elevated shadow-[var(--blocks-shadow-md)]'
308
+ }
309
+ },
310
+ // Focused row while the detail lives in the panel: quiet selected tint.
311
+ {
312
+ orientation: 'vertical',
313
+ detail: 'panel',
161
314
  focused: true,
162
315
  class: {
163
- trigger: 'bg-transparent'
316
+ card: 'bg-surface-selected'
164
317
  }
318
+ },
319
+ { orientation: 'horizontal', focused: true, class: { trigger: 'bg-surface-selected' } },
320
+ // Hover affordance only on non-focused interactive nodes (a focused inline
321
+ // card must not flicker back to the hover tint).
322
+ {
323
+ orientation: 'vertical',
324
+ interactive: true,
325
+ focused: false,
326
+ class: { card: 'hover:bg-surface-hover' }
327
+ },
328
+ {
329
+ orientation: 'horizontal',
330
+ interactive: true,
331
+ focused: false,
332
+ class: { trigger: 'hover:bg-surface-hover' }
165
333
  }
166
334
  ],
167
335
  defaultVariants: {
@@ -170,6 +338,9 @@ export const journeyTimelineVariants = tv({
170
338
  status: 'pending',
171
339
  focused: false,
172
340
  interactive: true,
173
- connectorComplete: false
341
+ travelled: false,
342
+ connectorStyle: 'solid',
343
+ detail: 'inline',
344
+ withMeta: false
174
345
  }
175
346
  });
@@ -62,7 +62,7 @@ export declare const tabVariants: (props?: import("../../utils/variants.js").TVP
62
62
  };
63
63
  }> | undefined) => {
64
64
  base: (props?: ({
65
- variant?: "line" | "pills" | "enclosed" | "solid" | undefined;
65
+ variant?: "line" | "solid" | "pills" | "enclosed" | undefined;
66
66
  orientation?: "horizontal" | "vertical" | undefined;
67
67
  size?: "sm" | "md" | "lg" | undefined;
68
68
  fullWidth?: boolean | undefined;
@@ -72,7 +72,7 @@ export declare const tabVariants: (props?: import("../../utils/variants.js").TVP
72
72
  className?: string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | /*elided*/ any | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined;
73
73
  }) | undefined) => string;
74
74
  list: (props?: ({
75
- variant?: "line" | "pills" | "enclosed" | "solid" | undefined;
75
+ variant?: "line" | "solid" | "pills" | "enclosed" | undefined;
76
76
  orientation?: "horizontal" | "vertical" | undefined;
77
77
  size?: "sm" | "md" | "lg" | undefined;
78
78
  fullWidth?: boolean | undefined;
@@ -82,7 +82,7 @@ export declare const tabVariants: (props?: import("../../utils/variants.js").TVP
82
82
  className?: string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | /*elided*/ any | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined;
83
83
  }) | undefined) => string;
84
84
  trigger: (props?: ({
85
- variant?: "line" | "pills" | "enclosed" | "solid" | undefined;
85
+ variant?: "line" | "solid" | "pills" | "enclosed" | undefined;
86
86
  orientation?: "horizontal" | "vertical" | undefined;
87
87
  size?: "sm" | "md" | "lg" | undefined;
88
88
  fullWidth?: boolean | undefined;
@@ -92,7 +92,7 @@ export declare const tabVariants: (props?: import("../../utils/variants.js").TVP
92
92
  className?: string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | /*elided*/ any | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined;
93
93
  }) | undefined) => string;
94
94
  icon: (props?: ({
95
- variant?: "line" | "pills" | "enclosed" | "solid" | undefined;
95
+ variant?: "line" | "solid" | "pills" | "enclosed" | undefined;
96
96
  orientation?: "horizontal" | "vertical" | undefined;
97
97
  size?: "sm" | "md" | "lg" | undefined;
98
98
  fullWidth?: boolean | undefined;
@@ -102,7 +102,7 @@ export declare const tabVariants: (props?: import("../../utils/variants.js").TVP
102
102
  className?: string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | /*elided*/ any | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined;
103
103
  }) | undefined) => string;
104
104
  label: (props?: ({
105
- variant?: "line" | "pills" | "enclosed" | "solid" | undefined;
105
+ variant?: "line" | "solid" | "pills" | "enclosed" | undefined;
106
106
  orientation?: "horizontal" | "vertical" | undefined;
107
107
  size?: "sm" | "md" | "lg" | undefined;
108
108
  fullWidth?: boolean | undefined;
@@ -112,7 +112,7 @@ export declare const tabVariants: (props?: import("../../utils/variants.js").TVP
112
112
  className?: string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | /*elided*/ any | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined;
113
113
  }) | undefined) => string;
114
114
  badge: (props?: ({
115
- variant?: "line" | "pills" | "enclosed" | "solid" | undefined;
115
+ variant?: "line" | "solid" | "pills" | "enclosed" | undefined;
116
116
  orientation?: "horizontal" | "vertical" | undefined;
117
117
  size?: "sm" | "md" | "lg" | undefined;
118
118
  fullWidth?: boolean | undefined;
@@ -122,7 +122,7 @@ export declare const tabVariants: (props?: import("../../utils/variants.js").TVP
122
122
  className?: string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | /*elided*/ any | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined;
123
123
  }) | undefined) => string;
124
124
  panel: (props?: ({
125
- variant?: "line" | "pills" | "enclosed" | "solid" | undefined;
125
+ variant?: "line" | "solid" | "pills" | "enclosed" | undefined;
126
126
  orientation?: "horizontal" | "vertical" | undefined;
127
127
  size?: "sm" | "md" | "lg" | undefined;
128
128
  fullWidth?: boolean | undefined;
@@ -132,7 +132,7 @@ export declare const tabVariants: (props?: import("../../utils/variants.js").TVP
132
132
  className?: string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | (string | false | /*elided*/ any | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined)[] | null | undefined;
133
133
  }) | undefined) => string;
134
134
  indicator: (props?: ({
135
- variant?: "line" | "pills" | "enclosed" | "solid" | undefined;
135
+ variant?: "line" | "solid" | "pills" | "enclosed" | undefined;
136
136
  orientation?: "horizontal" | "vertical" | undefined;
137
137
  size?: "sm" | "md" | "lg" | undefined;
138
138
  fullWidth?: boolean | undefined;
@@ -135,6 +135,7 @@ declare const _default: {
135
135
  readonly complete: "Abgeschlossen";
136
136
  readonly active: "In Bearbeitung";
137
137
  readonly pending: "Ausstehend";
138
+ readonly attention: "Aufmerksamkeit erforderlich";
138
139
  readonly blocked: "Blockiert";
139
140
  readonly skipped: "Übersprungen";
140
141
  };
@@ -135,6 +135,7 @@ export default {
135
135
  complete: 'Abgeschlossen',
136
136
  active: 'In Bearbeitung',
137
137
  pending: 'Ausstehend',
138
+ attention: 'Aufmerksamkeit erforderlich',
138
139
  blocked: 'Blockiert',
139
140
  skipped: 'Übersprungen'
140
141
  }
@@ -135,6 +135,7 @@ declare const _default: {
135
135
  readonly complete: "Completed";
136
136
  readonly active: "In progress";
137
137
  readonly pending: "Pending";
138
+ readonly attention: "Needs attention";
138
139
  readonly blocked: "Blocked";
139
140
  readonly skipped: "Skipped";
140
141
  };
@@ -135,6 +135,7 @@ export default {
135
135
  complete: 'Completed',
136
136
  active: 'In progress',
137
137
  pending: 'Pending',
138
+ attention: 'Needs attention',
138
139
  blocked: 'Blocked',
139
140
  skipped: 'Skipped'
140
141
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@urbicon-ui/blocks",
3
- "version": "6.9.0",
3
+ "version": "6.11.0",
4
4
  "description": "Svelte 5 UI component library with Tailwind CSS 4, OKLCH design tokens and zero runtime dependencies",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -91,8 +91,8 @@
91
91
  "@sveltejs/package": "^2.5.8",
92
92
  "@sveltejs/vite-plugin-svelte": "^7.0.0",
93
93
  "@tailwindcss/vite": "^4.3.1",
94
- "@urbicon-ui/i18n": "6.9.0",
95
- "@urbicon-ui/shared-types": "6.9.0",
94
+ "@urbicon-ui/i18n": "6.11.0",
95
+ "@urbicon-ui/shared-types": "6.11.0",
96
96
  "prettier": "^3.8.4",
97
97
  "prettier-plugin-svelte": "^4.1.1",
98
98
  "prettier-plugin-tailwindcss": "^0.8.0",