@urbicon-ui/blocks 6.10.1 → 6.12.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/i18n/index.d.ts +2 -0
- package/dist/primitives/JourneyTimeline/JourneyTimeline.svelte +26 -5
- package/dist/primitives/JourneyTimeline/index.d.ts +33 -12
- package/dist/primitives/JourneyTimeline/journey-timeline.variants.d.ts +55 -19
- package/dist/primitives/JourneyTimeline/journey-timeline.variants.js +25 -8
- package/dist/translations/de.d.ts +1 -0
- package/dist/translations/de.js +1 -0
- package/dist/translations/en.d.ts +1 -0
- package/dist/translations/en.js +1 -0
- package/package.json +3 -3
package/dist/i18n/index.d.ts
CHANGED
|
@@ -137,6 +137,7 @@ declare const blocksTranslations: {
|
|
|
137
137
|
readonly complete: "Completed";
|
|
138
138
|
readonly active: "In progress";
|
|
139
139
|
readonly pending: "Pending";
|
|
140
|
+
readonly attention: "Needs attention";
|
|
140
141
|
readonly blocked: "Blocked";
|
|
141
142
|
readonly skipped: "Skipped";
|
|
142
143
|
};
|
|
@@ -318,6 +319,7 @@ declare const blocksTranslations: {
|
|
|
318
319
|
readonly complete: "Abgeschlossen";
|
|
319
320
|
readonly active: "In Bearbeitung";
|
|
320
321
|
readonly pending: "Ausstehend";
|
|
322
|
+
readonly attention: "Aufmerksamkeit erforderlich";
|
|
321
323
|
readonly blocked: "Blockiert";
|
|
322
324
|
readonly skipped: "Übersprungen";
|
|
323
325
|
};
|
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
onFocusChange,
|
|
21
21
|
node,
|
|
22
22
|
meta,
|
|
23
|
+
marker,
|
|
24
|
+
trailing,
|
|
23
25
|
class: className = '',
|
|
24
26
|
unstyled: unstyledProp = false,
|
|
25
27
|
slotClasses: slotClassesProp = {},
|
|
@@ -310,6 +312,25 @@
|
|
|
310
312
|
<span class="sr-only">{statusLabel(item.status)}</span>
|
|
311
313
|
{/snippet}
|
|
312
314
|
|
|
315
|
+
{#snippet markerDot(item: JourneyNode, styles: Styles | null)}
|
|
316
|
+
<!-- Decorative either way: the status is announced via the sr-only label,
|
|
317
|
+
so custom glyph content never needs to be readable. -->
|
|
318
|
+
<span class={sc(styles, 'marker')} data-journey-marker="" aria-hidden="true">
|
|
319
|
+
{#if marker}{@render marker(item)}{/if}
|
|
320
|
+
</span>
|
|
321
|
+
{/snippet}
|
|
322
|
+
|
|
323
|
+
{#snippet headerRow(item: JourneyNode, index: number, focused: boolean, styles: Styles | null)}
|
|
324
|
+
<div class={sc(styles, 'header')}>
|
|
325
|
+
{@render trigger(item, index, focused, styles)}
|
|
326
|
+
{#if trailing}
|
|
327
|
+
<div class={sc(styles, 'trailing')} data-journey-trailing="">
|
|
328
|
+
{@render trailing(item)}
|
|
329
|
+
</div>
|
|
330
|
+
{/if}
|
|
331
|
+
</div>
|
|
332
|
+
{/snippet}
|
|
333
|
+
|
|
313
334
|
{#snippet trigger(item: JourneyNode, index: number, focused: boolean, styles: Styles | null)}
|
|
314
335
|
{@const interactive = item.focusable !== false}
|
|
315
336
|
{#if interactive}
|
|
@@ -373,11 +394,11 @@
|
|
|
373
394
|
{/if}
|
|
374
395
|
</div>
|
|
375
396
|
{/if}
|
|
376
|
-
<!-- DOM order
|
|
397
|
+
<!-- DOM order header → spine (visual order flipped via order-*):
|
|
377
398
|
a segment label is announced after the node it departs from. -->
|
|
378
|
-
{@render
|
|
399
|
+
{@render headerRow(item, index, focused, styles)}
|
|
379
400
|
<div class={sc(styles, 'markerColumn')}>
|
|
380
|
-
|
|
401
|
+
{@render markerDot(item, styles)}
|
|
381
402
|
{#if !last}
|
|
382
403
|
<span data-journey-connector="" class={sc(styles, 'connector')} aria-hidden="true"
|
|
383
404
|
></span>
|
|
@@ -404,7 +425,7 @@
|
|
|
404
425
|
</div>
|
|
405
426
|
{/if}
|
|
406
427
|
<div class={sc(styles, 'markerColumn')}>
|
|
407
|
-
|
|
428
|
+
{@render markerDot(item, styles)}
|
|
408
429
|
{#if !last}
|
|
409
430
|
<span data-journey-connector="" class={sc(styles, 'connector')} aria-hidden="true"
|
|
410
431
|
></span>
|
|
@@ -412,7 +433,7 @@
|
|
|
412
433
|
</div>
|
|
413
434
|
<div class={sc(styles, 'content', last && 'pb-0')}>
|
|
414
435
|
<div class={sc(styles, 'card')}>
|
|
415
|
-
{@render
|
|
436
|
+
{@render headerRow(item, index, focused, styles)}
|
|
416
437
|
{#if detailMode === 'inline' && node && item.focusable !== false}
|
|
417
438
|
<div
|
|
418
439
|
id={detailDomId(index)}
|
|
@@ -2,7 +2,7 @@ import type { Snippet } from 'svelte';
|
|
|
2
2
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
3
|
import type { JourneyTimelineSlots, JourneyTimelineVariants } from './journey-timeline.variants.js';
|
|
4
4
|
/** Lifecycle status of a journey node — drives marker colour and title tone. */
|
|
5
|
-
export type JourneyStatus = 'complete' | 'active' | 'pending' | 'blocked' | 'skipped';
|
|
5
|
+
export type JourneyStatus = 'complete' | 'active' | 'pending' | 'attention' | 'blocked' | 'skipped';
|
|
6
6
|
/** A single node (waypoint) on a {@link JourneyTimelineProps | JourneyTimeline}. */
|
|
7
7
|
export interface JourneyNode {
|
|
8
8
|
/** Stable unique identifier — used as the focus key and for `{#each}` keying. */
|
|
@@ -12,8 +12,9 @@ export interface JourneyNode {
|
|
|
12
12
|
/**
|
|
13
13
|
* Lifecycle status. Maps to a semantic dot marker + title tone:
|
|
14
14
|
* `complete` (success), `active` (primary, ringed), `pending` (hollow),
|
|
15
|
-
* `
|
|
16
|
-
* a visually-hidden
|
|
15
|
+
* `attention` (warning — worth a look, does not block), `blocked` (danger),
|
|
16
|
+
* `skipped` (muted). The status is also announced through a visually-hidden
|
|
17
|
+
* label.
|
|
17
18
|
*/
|
|
18
19
|
status: JourneyStatus;
|
|
19
20
|
/** Short context line shown below the title. */
|
|
@@ -51,13 +52,17 @@ export interface JourneyNode {
|
|
|
51
52
|
* shows rich detail (`node` snippet); the rest stay quiet, compact context
|
|
52
53
|
* rows. The chronicle axis is first-class: per-node `meta` (time/date/actor)
|
|
53
54
|
* renders on a meta rail, connectors carry meaning (`solid | dashed | dotted`)
|
|
54
|
-
* and `segmentLabel` annotates the stretch between nodes.
|
|
55
|
-
*
|
|
56
|
-
* `
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
55
|
+
* and `segmentLabel` annotates the stretch between nodes. Rows extend without
|
|
56
|
+
* forking the layout: a `marker` snippet puts glyphs inside the status dots, a
|
|
57
|
+
* `trailing` snippet adds badges/help/actions beside each header (outside the
|
|
58
|
+
* button — safe for interactive elements), and the `attention` status flags
|
|
59
|
+
* optional-but-noteworthy rows. Detail placement is configurable:
|
|
60
|
+
* `detail="inline"` expands in place (vertical default); `detail="panel"`
|
|
61
|
+
* renders a stable readout beside (wide) or docked below (narrow) the rail —
|
|
62
|
+
* horizontal always uses the panel. Use `Stepper` for a prospective
|
|
63
|
+
* wizard/progress indicator and `Tab` for switching between peer views;
|
|
64
|
+
* JourneyTimeline is read-only observation of a sequence, not process control
|
|
65
|
+
* or navigation.
|
|
61
66
|
*
|
|
62
67
|
* @tag navigation
|
|
63
68
|
* @tag display
|
|
@@ -127,14 +132,30 @@ export interface JourneyTimelineProps extends Pick<JourneyTimelineVariants, 'ori
|
|
|
127
132
|
* the plain `item.meta` text (e.g. planned + actual time with a Badge).
|
|
128
133
|
*/
|
|
129
134
|
meta?: Snippet<[JourneyNode]>;
|
|
135
|
+
/**
|
|
136
|
+
* Custom content *inside* each status dot — a glyph, count or icon. The dot
|
|
137
|
+
* keeps its status colour, shape and size contract (scale it via
|
|
138
|
+
* `slotClasses.marker`, e.g. `size-5`). Markers stay decorative
|
|
139
|
+
* (`aria-hidden`); the status is still announced through the hidden label.
|
|
140
|
+
*/
|
|
141
|
+
marker?: Snippet<[JourneyNode]>;
|
|
142
|
+
/**
|
|
143
|
+
* End-of-row content beside each node's header — status badges, a help
|
|
144
|
+
* affordance, quick actions. Renders *outside* the trigger button (a sibling
|
|
145
|
+
* in the header row), so interactive elements are valid HTML and activating
|
|
146
|
+
* them never moves the focused node. Right-aligned in vertical orientation,
|
|
147
|
+
* appended to the label pill in horizontal.
|
|
148
|
+
*/
|
|
149
|
+
trailing?: Snippet<[JourneyNode]>;
|
|
130
150
|
/** Extra classes merged onto the root element. */
|
|
131
151
|
class?: string;
|
|
132
152
|
/** Remove all default tv() classes. */
|
|
133
153
|
unstyled?: boolean;
|
|
134
154
|
/**
|
|
135
155
|
* Per-slot class overrides. Slots: base | rail | node | metaColumn | meta |
|
|
136
|
-
* markerColumn | marker | connector | content | card |
|
|
137
|
-
* title | subtitle | segment | detail | detailInner |
|
|
156
|
+
* markerColumn | marker | connector | content | card | header | trigger |
|
|
157
|
+
* trailing | labelGroup | title | subtitle | segment | detail | detailInner |
|
|
158
|
+
* detailContent | panel
|
|
138
159
|
*/
|
|
139
160
|
slotClasses?: Partial<Record<JourneyTimelineSlots, string>>;
|
|
140
161
|
/**
|
|
@@ -6,6 +6,9 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
6
6
|
node: string;
|
|
7
7
|
markerColumn: string;
|
|
8
8
|
connector: string;
|
|
9
|
+
header: string;
|
|
10
|
+
trigger: string;
|
|
11
|
+
trailing: string;
|
|
9
12
|
segment: string;
|
|
10
13
|
};
|
|
11
14
|
horizontal: {
|
|
@@ -14,6 +17,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
14
17
|
node: string;
|
|
15
18
|
metaColumn: string;
|
|
16
19
|
markerColumn: string;
|
|
20
|
+
header: string;
|
|
17
21
|
trigger: string;
|
|
18
22
|
connector: string;
|
|
19
23
|
segment: string;
|
|
@@ -71,6 +75,10 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
71
75
|
marker: string;
|
|
72
76
|
title: string;
|
|
73
77
|
};
|
|
78
|
+
attention: {
|
|
79
|
+
marker: string;
|
|
80
|
+
title: string;
|
|
81
|
+
};
|
|
74
82
|
blocked: {
|
|
75
83
|
marker: string;
|
|
76
84
|
title: string;
|
|
@@ -128,7 +136,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
128
136
|
base: (props?: ({
|
|
129
137
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
130
138
|
size?: "sm" | "md" | "lg" | undefined;
|
|
131
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
139
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
132
140
|
focused?: boolean | undefined;
|
|
133
141
|
interactive?: boolean | undefined;
|
|
134
142
|
travelled?: boolean | undefined;
|
|
@@ -142,7 +150,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
142
150
|
rail: (props?: ({
|
|
143
151
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
144
152
|
size?: "sm" | "md" | "lg" | undefined;
|
|
145
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
153
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
146
154
|
focused?: boolean | undefined;
|
|
147
155
|
interactive?: boolean | undefined;
|
|
148
156
|
travelled?: boolean | undefined;
|
|
@@ -156,7 +164,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
156
164
|
node: (props?: ({
|
|
157
165
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
158
166
|
size?: "sm" | "md" | "lg" | undefined;
|
|
159
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
167
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
160
168
|
focused?: boolean | undefined;
|
|
161
169
|
interactive?: boolean | undefined;
|
|
162
170
|
travelled?: boolean | undefined;
|
|
@@ -170,7 +178,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
170
178
|
metaColumn: (props?: ({
|
|
171
179
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
172
180
|
size?: "sm" | "md" | "lg" | undefined;
|
|
173
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
181
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
174
182
|
focused?: boolean | undefined;
|
|
175
183
|
interactive?: boolean | undefined;
|
|
176
184
|
travelled?: boolean | undefined;
|
|
@@ -184,7 +192,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
184
192
|
meta: (props?: ({
|
|
185
193
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
186
194
|
size?: "sm" | "md" | "lg" | undefined;
|
|
187
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
195
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
188
196
|
focused?: boolean | undefined;
|
|
189
197
|
interactive?: boolean | undefined;
|
|
190
198
|
travelled?: boolean | undefined;
|
|
@@ -198,7 +206,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
198
206
|
markerColumn: (props?: ({
|
|
199
207
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
200
208
|
size?: "sm" | "md" | "lg" | undefined;
|
|
201
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
209
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
202
210
|
focused?: boolean | undefined;
|
|
203
211
|
interactive?: boolean | undefined;
|
|
204
212
|
travelled?: boolean | undefined;
|
|
@@ -212,7 +220,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
212
220
|
marker: (props?: ({
|
|
213
221
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
214
222
|
size?: "sm" | "md" | "lg" | undefined;
|
|
215
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
223
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
216
224
|
focused?: boolean | undefined;
|
|
217
225
|
interactive?: boolean | undefined;
|
|
218
226
|
travelled?: boolean | undefined;
|
|
@@ -226,7 +234,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
226
234
|
connector: (props?: ({
|
|
227
235
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
228
236
|
size?: "sm" | "md" | "lg" | undefined;
|
|
229
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
237
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
230
238
|
focused?: boolean | undefined;
|
|
231
239
|
interactive?: boolean | undefined;
|
|
232
240
|
travelled?: boolean | undefined;
|
|
@@ -240,7 +248,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
240
248
|
content: (props?: ({
|
|
241
249
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
242
250
|
size?: "sm" | "md" | "lg" | undefined;
|
|
243
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
251
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
244
252
|
focused?: boolean | undefined;
|
|
245
253
|
interactive?: boolean | undefined;
|
|
246
254
|
travelled?: boolean | undefined;
|
|
@@ -254,7 +262,21 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
254
262
|
card: (props?: ({
|
|
255
263
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
256
264
|
size?: "sm" | "md" | "lg" | undefined;
|
|
257
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
265
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
266
|
+
focused?: boolean | undefined;
|
|
267
|
+
interactive?: boolean | undefined;
|
|
268
|
+
travelled?: boolean | undefined;
|
|
269
|
+
connectorStyle?: "solid" | "dashed" | "dotted" | undefined;
|
|
270
|
+
detail?: "inline" | "panel" | undefined;
|
|
271
|
+
withMeta?: boolean | undefined;
|
|
272
|
+
} & {
|
|
273
|
+
class?: 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;
|
|
274
|
+
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;
|
|
275
|
+
}) | undefined) => string;
|
|
276
|
+
header: (props?: ({
|
|
277
|
+
orientation?: "horizontal" | "vertical" | undefined;
|
|
278
|
+
size?: "sm" | "md" | "lg" | undefined;
|
|
279
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
258
280
|
focused?: boolean | undefined;
|
|
259
281
|
interactive?: boolean | undefined;
|
|
260
282
|
travelled?: boolean | undefined;
|
|
@@ -268,7 +290,21 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
268
290
|
trigger: (props?: ({
|
|
269
291
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
270
292
|
size?: "sm" | "md" | "lg" | undefined;
|
|
271
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
293
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
294
|
+
focused?: boolean | undefined;
|
|
295
|
+
interactive?: boolean | undefined;
|
|
296
|
+
travelled?: boolean | undefined;
|
|
297
|
+
connectorStyle?: "solid" | "dashed" | "dotted" | undefined;
|
|
298
|
+
detail?: "inline" | "panel" | undefined;
|
|
299
|
+
withMeta?: boolean | undefined;
|
|
300
|
+
} & {
|
|
301
|
+
class?: 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;
|
|
302
|
+
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;
|
|
303
|
+
}) | undefined) => string;
|
|
304
|
+
trailing: (props?: ({
|
|
305
|
+
orientation?: "horizontal" | "vertical" | undefined;
|
|
306
|
+
size?: "sm" | "md" | "lg" | undefined;
|
|
307
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
272
308
|
focused?: boolean | undefined;
|
|
273
309
|
interactive?: boolean | undefined;
|
|
274
310
|
travelled?: boolean | undefined;
|
|
@@ -282,7 +318,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
282
318
|
labelGroup: (props?: ({
|
|
283
319
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
284
320
|
size?: "sm" | "md" | "lg" | undefined;
|
|
285
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
321
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
286
322
|
focused?: boolean | undefined;
|
|
287
323
|
interactive?: boolean | undefined;
|
|
288
324
|
travelled?: boolean | undefined;
|
|
@@ -296,7 +332,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
296
332
|
title: (props?: ({
|
|
297
333
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
298
334
|
size?: "sm" | "md" | "lg" | undefined;
|
|
299
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
335
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
300
336
|
focused?: boolean | undefined;
|
|
301
337
|
interactive?: boolean | undefined;
|
|
302
338
|
travelled?: boolean | undefined;
|
|
@@ -310,7 +346,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
310
346
|
subtitle: (props?: ({
|
|
311
347
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
312
348
|
size?: "sm" | "md" | "lg" | undefined;
|
|
313
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
349
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
314
350
|
focused?: boolean | undefined;
|
|
315
351
|
interactive?: boolean | undefined;
|
|
316
352
|
travelled?: boolean | undefined;
|
|
@@ -324,7 +360,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
324
360
|
segment: (props?: ({
|
|
325
361
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
326
362
|
size?: "sm" | "md" | "lg" | undefined;
|
|
327
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
363
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
328
364
|
focused?: boolean | undefined;
|
|
329
365
|
interactive?: boolean | undefined;
|
|
330
366
|
travelled?: boolean | undefined;
|
|
@@ -338,7 +374,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
338
374
|
detail: (props?: ({
|
|
339
375
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
340
376
|
size?: "sm" | "md" | "lg" | undefined;
|
|
341
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
377
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
342
378
|
focused?: boolean | undefined;
|
|
343
379
|
interactive?: boolean | undefined;
|
|
344
380
|
travelled?: boolean | undefined;
|
|
@@ -352,7 +388,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
352
388
|
detailInner: (props?: ({
|
|
353
389
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
354
390
|
size?: "sm" | "md" | "lg" | undefined;
|
|
355
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
391
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
356
392
|
focused?: boolean | undefined;
|
|
357
393
|
interactive?: boolean | undefined;
|
|
358
394
|
travelled?: boolean | undefined;
|
|
@@ -366,7 +402,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
366
402
|
detailContent: (props?: ({
|
|
367
403
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
368
404
|
size?: "sm" | "md" | "lg" | undefined;
|
|
369
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
405
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
370
406
|
focused?: boolean | undefined;
|
|
371
407
|
interactive?: boolean | undefined;
|
|
372
408
|
travelled?: boolean | undefined;
|
|
@@ -380,7 +416,7 @@ export declare const journeyTimelineVariants: (props?: import("../../utils/varia
|
|
|
380
416
|
panel: (props?: ({
|
|
381
417
|
orientation?: "horizontal" | "vertical" | undefined;
|
|
382
418
|
size?: "sm" | "md" | "lg" | undefined;
|
|
383
|
-
status?: "active" | "blocked" | "complete" | "pending" | "skipped" | undefined;
|
|
419
|
+
status?: "active" | "blocked" | "attention" | "complete" | "pending" | "skipped" | undefined;
|
|
384
420
|
focused?: boolean | undefined;
|
|
385
421
|
interactive?: boolean | undefined;
|
|
386
422
|
travelled?: boolean | undefined;
|
|
@@ -19,9 +19,10 @@ export const journeyTimelineVariants = tv({
|
|
|
19
19
|
// grows down inside; horizontal: a full-width row the line grows right in.
|
|
20
20
|
markerColumn: 'flex items-center',
|
|
21
21
|
// The status dot. Deliberately small — the line is the protagonist, the
|
|
22
|
-
// dots are punctuation (contrast: Stepper's large glyph discs).
|
|
22
|
+
// dots are punctuation (contrast: Stepper's large glyph discs). The grid
|
|
23
|
+
// centring only matters when a `marker` snippet puts a glyph inside.
|
|
23
24
|
marker: [
|
|
24
|
-
'box-border shrink-0 rounded-commit border-2',
|
|
25
|
+
'box-border grid shrink-0 place-items-center rounded-commit border-2',
|
|
25
26
|
'transition-[background-color,border-color,box-shadow] duration-[var(--blocks-duration-fast)]'
|
|
26
27
|
],
|
|
27
28
|
// The connecting line. Drawn with borders so `connectorStyle` can switch
|
|
@@ -39,13 +40,19 @@ export const journeyTimelineVariants = tv({
|
|
|
39
40
|
'rounded-contain border border-transparent',
|
|
40
41
|
'transition-[background-color,border-color,box-shadow] duration-[var(--blocks-duration-normal)] ease-[var(--blocks-ease-gentle)]'
|
|
41
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',
|
|
42
47
|
// The interactive header — title + subtitle. A <button> for focusable
|
|
43
48
|
// nodes, a plain <div> for pure waypoints (focusable === false).
|
|
44
49
|
trigger: [
|
|
45
|
-
'flex
|
|
50
|
+
'flex appearance-none flex-col items-start gap-0.5 border-0 bg-transparent p-0 text-left',
|
|
46
51
|
'rounded-contain',
|
|
47
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'
|
|
48
53
|
],
|
|
54
|
+
// End-of-row content (badges, help, quick actions) beside the trigger.
|
|
55
|
+
trailing: 'flex shrink-0 items-center gap-1',
|
|
49
56
|
labelGroup: 'flex min-w-0 flex-col',
|
|
50
57
|
title: [
|
|
51
58
|
'font-medium leading-tight',
|
|
@@ -75,6 +82,9 @@ export const journeyTimelineVariants = tv({
|
|
|
75
82
|
node: 'grid',
|
|
76
83
|
markerColumn: 'flex-col',
|
|
77
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',
|
|
78
88
|
segment: 'flex items-center'
|
|
79
89
|
},
|
|
80
90
|
horizontal: {
|
|
@@ -84,13 +94,14 @@ export const journeyTimelineVariants = tv({
|
|
|
84
94
|
// Stacked station: meta row above the spine, label pill below. Every
|
|
85
95
|
// node but the last stretches so the spine distributes the stations.
|
|
86
96
|
node: 'flex flex-col [&:not(:last-child)]:flex-1',
|
|
87
|
-
// Visual order is meta → spine →
|
|
97
|
+
// Visual order is meta → spine → header, but the DOM keeps the header
|
|
88
98
|
// before the spine so a segment label is read *after* its node.
|
|
89
99
|
metaColumn: 'order-1 text-left',
|
|
90
100
|
markerColumn: 'order-2 w-full flex-row',
|
|
101
|
+
header: 'order-3 items-center gap-x-1.5 self-start',
|
|
91
102
|
// Shrink-to-fit pill around the labels only — the marker sits on the
|
|
92
103
|
// spine above, so the whole rail reads as stations on one line.
|
|
93
|
-
trigger: '
|
|
104
|
+
trigger: 'w-auto',
|
|
94
105
|
connector: 'h-0 min-w-3 flex-1 border-t-2',
|
|
95
106
|
// Segment labels sit *in* the line (line — label — line); they widen
|
|
96
107
|
// the gap instead of overlapping the next station's marker.
|
|
@@ -152,6 +163,12 @@ export const journeyTimelineVariants = tv({
|
|
|
152
163
|
marker: 'bg-surface-base border-border-strong',
|
|
153
164
|
title: 'text-text-secondary'
|
|
154
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'
|
|
171
|
+
},
|
|
155
172
|
blocked: {
|
|
156
173
|
marker: 'bg-danger border-danger',
|
|
157
174
|
title: 'text-danger'
|
|
@@ -248,7 +265,7 @@ export const journeyTimelineVariants = tv({
|
|
|
248
265
|
node: 'gap-y-0.5',
|
|
249
266
|
metaColumn: 'min-h-3.5',
|
|
250
267
|
markerColumn: 'h-4 gap-1 pr-1',
|
|
251
|
-
trigger: '-
|
|
268
|
+
trigger: '-ml-1.5 px-1.5 py-1'
|
|
252
269
|
}
|
|
253
270
|
},
|
|
254
271
|
{
|
|
@@ -258,7 +275,7 @@ export const journeyTimelineVariants = tv({
|
|
|
258
275
|
node: 'gap-y-1',
|
|
259
276
|
metaColumn: 'min-h-4',
|
|
260
277
|
markerColumn: 'h-4 gap-1.5 pr-1.5',
|
|
261
|
-
trigger: '-
|
|
278
|
+
trigger: '-ml-2 px-2 py-1.5'
|
|
262
279
|
}
|
|
263
280
|
},
|
|
264
281
|
{
|
|
@@ -268,7 +285,7 @@ export const journeyTimelineVariants = tv({
|
|
|
268
285
|
node: 'gap-y-1',
|
|
269
286
|
metaColumn: 'min-h-4.5',
|
|
270
287
|
markerColumn: 'h-5 gap-2 pr-2',
|
|
271
|
-
trigger: '-
|
|
288
|
+
trigger: '-ml-2.5 px-2.5 py-2'
|
|
272
289
|
}
|
|
273
290
|
},
|
|
274
291
|
// Vertical + panel: two-column layout on wide viewports; on narrow ones the
|
|
@@ -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
|
};
|
package/dist/translations/de.js
CHANGED
package/dist/translations/en.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@urbicon-ui/blocks",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.12.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.
|
|
95
|
-
"@urbicon-ui/shared-types": "6.
|
|
94
|
+
"@urbicon-ui/i18n": "6.12.0",
|
|
95
|
+
"@urbicon-ui/shared-types": "6.12.0",
|
|
96
96
|
"prettier": "^3.8.4",
|
|
97
97
|
"prettier-plugin-svelte": "^4.1.1",
|
|
98
98
|
"prettier-plugin-tailwindcss": "^0.8.0",
|