@atelier-ui/react 0.1.12 → 0.2.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/CHANGELOG.md +26 -0
- package/README.md +3 -3
- package/package.json +1 -1
- package/src/index.d.ts +29 -29
- package/src/index.js +29 -29
- package/src/index.js.map +1 -1
- package/src/lib/accordion/{llm-accordion.css → atl-accordion.css} +8 -8
- package/src/lib/accordion/{llm-accordion.d.ts → atl-accordion.d.ts} +12 -12
- package/src/lib/accordion/{llm-accordion.d.ts.map → atl-accordion.d.ts.map} +1 -1
- package/src/lib/accordion/{llm-accordion.js → atl-accordion.js} +9 -9
- package/src/lib/accordion/{llm-accordion.js.map → atl-accordion.js.map} +1 -1
- package/src/lib/alert/{llm-alert.css → atl-alert.css} +10 -10
- package/src/lib/alert/{llm-alert.d.ts → atl-alert.d.ts} +8 -8
- package/src/lib/alert/{llm-alert.d.ts.map → atl-alert.d.ts.map} +1 -1
- package/src/lib/alert/{llm-alert.js → atl-alert.js} +4 -4
- package/src/lib/alert/{llm-alert.js.map → atl-alert.js.map} +1 -1
- package/src/lib/avatar/{llm-avatar.css → atl-avatar.css} +20 -20
- package/src/lib/avatar/{llm-avatar.d.ts → atl-avatar.d.ts} +10 -10
- package/src/lib/avatar/{llm-avatar.d.ts.map → atl-avatar.d.ts.map} +1 -1
- package/src/lib/avatar/{llm-avatar.js → atl-avatar.js} +6 -6
- package/src/lib/avatar/{llm-avatar.js.map → atl-avatar.js.map} +1 -1
- package/src/lib/badge/{llm-badge.css → atl-badge.css} +9 -9
- package/src/lib/badge/atl-badge.d.ts +27 -0
- package/src/lib/badge/{llm-badge.d.ts.map → atl-badge.d.ts.map} +1 -1
- package/src/lib/badge/{llm-badge.js → atl-badge.js} +4 -4
- package/src/lib/badge/{llm-badge.js.map → atl-badge.js.map} +1 -1
- package/src/lib/breadcrumbs/{llm-breadcrumbs.css → atl-breadcrumbs.css} +11 -11
- package/src/lib/breadcrumbs/atl-breadcrumbs.d.ts +38 -0
- package/src/lib/breadcrumbs/{llm-breadcrumbs.d.ts.map → atl-breadcrumbs.d.ts.map} +1 -1
- package/src/lib/breadcrumbs/{llm-breadcrumbs.js → atl-breadcrumbs.js} +7 -7
- package/src/lib/breadcrumbs/{llm-breadcrumbs.js.map → atl-breadcrumbs.js.map} +1 -1
- package/src/lib/button/{llm-button.css → atl-button.css} +20 -20
- package/src/lib/button/{llm-button.d.ts → atl-button.d.ts} +7 -7
- package/src/lib/button/{llm-button.d.ts.map → atl-button.d.ts.map} +1 -1
- package/src/lib/button/{llm-button.js → atl-button.js} +4 -4
- package/src/lib/button/{llm-button.js.map → atl-button.js.map} +1 -1
- package/src/lib/card/{llm-card.css → atl-card.css} +20 -20
- package/src/lib/card/{llm-card.d.ts → atl-card.d.ts} +13 -13
- package/src/lib/card/{llm-card.d.ts.map → atl-card.d.ts.map} +1 -1
- package/src/lib/card/atl-card.js +30 -0
- package/src/lib/card/{llm-card.js.map → atl-card.js.map} +1 -1
- package/src/lib/chat/{llm-chat.css → atl-chat.css} +55 -55
- package/src/lib/chat/{llm-chat.d.ts → atl-chat.d.ts} +26 -26
- package/src/lib/chat/{llm-chat.d.ts.map → atl-chat.d.ts.map} +1 -1
- package/src/lib/chat/{llm-chat.js → atl-chat.js} +21 -21
- package/src/lib/chat/{llm-chat.js.map → atl-chat.js.map} +1 -1
- package/src/lib/checkbox/{llm-checkbox.css → atl-checkbox.css} +19 -19
- package/src/lib/checkbox/{llm-checkbox.d.ts → atl-checkbox.d.ts} +6 -6
- package/src/lib/checkbox/{llm-checkbox.d.ts.map → atl-checkbox.d.ts.map} +1 -1
- package/src/lib/checkbox/{llm-checkbox.js → atl-checkbox.js} +4 -4
- package/src/lib/checkbox/{llm-checkbox.js.map → atl-checkbox.js.map} +1 -1
- package/src/lib/code-block/{llm-code-block.css → atl-code-block.css} +2 -2
- package/src/lib/code-block/{llm-code-block.d.ts → atl-code-block.d.ts} +4 -4
- package/src/lib/code-block/{llm-code-block.d.ts.map → atl-code-block.d.ts.map} +1 -1
- package/src/lib/code-block/{llm-code-block.js → atl-code-block.js} +4 -4
- package/src/lib/code-block/{llm-code-block.js.map → atl-code-block.js.map} +1 -1
- package/src/lib/combobox/{llm-combobox.css → atl-combobox.css} +24 -24
- package/src/lib/combobox/{llm-combobox.d.ts → atl-combobox.d.ts} +7 -7
- package/src/lib/combobox/{llm-combobox.d.ts.map → atl-combobox.d.ts.map} +1 -1
- package/src/lib/combobox/{llm-combobox.js → atl-combobox.js} +8 -8
- package/src/lib/combobox/{llm-combobox.js.map → atl-combobox.js.map} +1 -1
- package/src/lib/dialog/{llm-dialog.css → atl-dialog.css} +18 -18
- package/src/lib/dialog/{llm-dialog.d.ts → atl-dialog.d.ts} +12 -12
- package/src/lib/dialog/{llm-dialog.d.ts.map → atl-dialog.d.ts.map} +1 -1
- package/src/lib/dialog/{llm-dialog.js → atl-dialog.js} +13 -13
- package/src/lib/dialog/{llm-dialog.js.map → atl-dialog.js.map} +1 -1
- package/src/lib/drawer/{llm-drawer.css → atl-drawer.css} +35 -35
- package/src/lib/drawer/{llm-drawer.d.ts → atl-drawer.d.ts} +12 -12
- package/src/lib/drawer/{llm-drawer.d.ts.map → atl-drawer.d.ts.map} +1 -1
- package/src/lib/drawer/{llm-drawer.js → atl-drawer.js} +13 -13
- package/src/lib/drawer/{llm-drawer.js.map → atl-drawer.js.map} +1 -1
- package/src/lib/icon/{llm-icon.css → atl-icon.css} +4 -4
- package/src/lib/icon/atl-icon.d.ts +24 -0
- package/src/lib/icon/{llm-icon.d.ts.map → atl-icon.d.ts.map} +1 -1
- package/src/lib/icon/{llm-icon.js → atl-icon.js} +5 -5
- package/src/lib/icon/{llm-icon.js.map → atl-icon.js.map} +1 -1
- package/src/lib/input/{llm-input.css → atl-input.css} +14 -14
- package/src/lib/input/{llm-input.d.ts → atl-input.d.ts} +6 -6
- package/src/lib/input/{llm-input.d.ts.map → atl-input.d.ts.map} +1 -1
- package/src/lib/input/{llm-input.js → atl-input.js} +4 -4
- package/src/lib/input/{llm-input.js.map → atl-input.js.map} +1 -1
- package/src/lib/menu/{llm-menu.css → atl-menu.css} +11 -11
- package/src/lib/menu/{llm-menu.d.ts → atl-menu.d.ts} +13 -13
- package/src/lib/menu/{llm-menu.d.ts.map → atl-menu.d.ts.map} +1 -1
- package/src/lib/menu/{llm-menu.js → atl-menu.js} +10 -10
- package/src/lib/menu/{llm-menu.js.map → atl-menu.js.map} +1 -1
- package/src/lib/pagination/{llm-pagination.css → atl-pagination.css} +1 -1
- package/src/lib/pagination/{llm-pagination.d.ts → atl-pagination.d.ts} +6 -6
- package/src/lib/pagination/{llm-pagination.d.ts.map → atl-pagination.d.ts.map} +1 -1
- package/src/lib/pagination/{llm-pagination.js → atl-pagination.js} +4 -4
- package/src/lib/pagination/{llm-pagination.js.map → atl-pagination.js.map} +1 -1
- package/src/lib/progress/{llm-progress.css → atl-progress.css} +9 -9
- package/src/lib/progress/{llm-progress.d.ts → atl-progress.d.ts} +6 -6
- package/src/lib/progress/{llm-progress.d.ts.map → atl-progress.d.ts.map} +1 -1
- package/src/lib/progress/{llm-progress.js → atl-progress.js} +4 -4
- package/src/lib/progress/{llm-progress.js.map → atl-progress.js.map} +1 -1
- package/src/lib/radio/{llm-radio.css → atl-radio.css} +11 -11
- package/src/lib/radio/{llm-radio.d.ts → atl-radio.d.ts} +7 -7
- package/src/lib/radio/{llm-radio.d.ts.map → atl-radio.d.ts.map} +1 -1
- package/src/lib/radio/{llm-radio.js → atl-radio.js} +6 -6
- package/src/lib/radio/{llm-radio.js.map → atl-radio.js.map} +1 -1
- package/src/lib/radio-group/{llm-radio-group.css → atl-radio-group.css} +6 -6
- package/src/lib/radio-group/{llm-radio-group.d.ts → atl-radio-group.d.ts} +6 -6
- package/src/lib/radio-group/{llm-radio-group.d.ts.map → atl-radio-group.d.ts.map} +1 -1
- package/src/lib/radio-group/{llm-radio-group.js → atl-radio-group.js} +4 -4
- package/src/lib/radio-group/{llm-radio-group.js.map → atl-radio-group.js.map} +1 -1
- package/src/lib/select/{llm-select.css → atl-select.css} +11 -11
- package/src/lib/select/{llm-select.d.ts → atl-select.d.ts} +10 -10
- package/src/lib/select/{llm-select.d.ts.map → atl-select.d.ts.map} +1 -1
- package/src/lib/select/{llm-select.js → atl-select.js} +6 -6
- package/src/lib/select/{llm-select.js.map → atl-select.js.map} +1 -1
- package/src/lib/skeleton/{llm-skeleton.css → atl-skeleton.css} +6 -6
- package/src/lib/skeleton/{llm-skeleton.d.ts → atl-skeleton.d.ts} +6 -6
- package/src/lib/skeleton/{llm-skeleton.d.ts.map → atl-skeleton.d.ts.map} +1 -1
- package/src/lib/skeleton/{llm-skeleton.js → atl-skeleton.js} +4 -4
- package/src/lib/skeleton/{llm-skeleton.js.map → atl-skeleton.js.map} +1 -1
- package/src/lib/spec.d.ts +120 -120
- package/src/lib/spec.js.map +1 -1
- package/src/lib/stepper/{llm-stepper.css → atl-stepper.css} +5 -5
- package/src/lib/stepper/{llm-stepper.d.ts → atl-stepper.d.ts} +9 -9
- package/src/lib/stepper/{llm-stepper.d.ts.map → atl-stepper.d.ts.map} +1 -1
- package/src/lib/stepper/{llm-stepper.js → atl-stepper.js} +11 -11
- package/src/lib/stepper/{llm-stepper.js.map → atl-stepper.js.map} +1 -1
- package/src/lib/table/{llm-table.css → atl-table.css} +30 -30
- package/src/lib/table/atl-table.d.ts +40 -0
- package/src/lib/table/{llm-table.d.ts.map → atl-table.d.ts.map} +1 -1
- package/src/lib/table/{llm-table.js → atl-table.js} +14 -14
- package/src/lib/table/{llm-table.js.map → atl-table.js.map} +1 -1
- package/src/lib/tabs/{llm-tabs.css → atl-tabs.css} +17 -17
- package/src/lib/tabs/{llm-tabs.d.ts → atl-tabs.d.ts} +12 -12
- package/src/lib/tabs/{llm-tabs.d.ts.map → atl-tabs.d.ts.map} +1 -1
- package/src/lib/tabs/{llm-tabs.js → atl-tabs.js} +11 -11
- package/src/lib/tabs/{llm-tabs.js.map → atl-tabs.js.map} +1 -1
- package/src/lib/textarea/{llm-textarea.css → atl-textarea.css} +15 -15
- package/src/lib/textarea/{llm-textarea.d.ts → atl-textarea.d.ts} +6 -6
- package/src/lib/textarea/{llm-textarea.d.ts.map → atl-textarea.d.ts.map} +1 -1
- package/src/lib/textarea/{llm-textarea.js → atl-textarea.js} +4 -4
- package/src/lib/textarea/{llm-textarea.js.map → atl-textarea.js.map} +1 -1
- package/src/lib/toast/{llm-toast.css → atl-toast.css} +16 -16
- package/src/lib/toast/atl-toast.d.ts +54 -0
- package/src/lib/toast/{llm-toast.d.ts.map → atl-toast.d.ts.map} +1 -1
- package/src/lib/toast/{llm-toast.js → atl-toast.js} +12 -12
- package/src/lib/toast/{llm-toast.js.map → atl-toast.js.map} +1 -1
- package/src/lib/toggle/{llm-toggle.css → atl-toggle.css} +16 -16
- package/src/lib/toggle/{llm-toggle.d.ts → atl-toggle.d.ts} +6 -6
- package/src/lib/toggle/{llm-toggle.d.ts.map → atl-toggle.d.ts.map} +1 -1
- package/src/lib/toggle/{llm-toggle.js → atl-toggle.js} +4 -4
- package/src/lib/toggle/{llm-toggle.js.map → atl-toggle.js.map} +1 -1
- package/src/lib/tooltip/{llm-tooltip.css → atl-tooltip.css} +12 -12
- package/src/lib/tooltip/atl-tooltip.d.ts +17 -0
- package/src/lib/tooltip/{llm-tooltip.d.ts.map → atl-tooltip.d.ts.map} +1 -1
- package/src/lib/tooltip/{llm-tooltip.js → atl-tooltip.js} +7 -7
- package/src/lib/tooltip/{llm-tooltip.js.map → atl-tooltip.js.map} +1 -1
- package/src/lib/badge/llm-badge.d.ts +0 -27
- package/src/lib/breadcrumbs/llm-breadcrumbs.d.ts +0 -38
- package/src/lib/card/llm-card.js +0 -30
- package/src/lib/icon/llm-icon.d.ts +0 -24
- package/src/lib/table/llm-table.d.ts +0 -40
- package/src/lib/toast/llm-toast.d.ts +0 -54
- package/src/lib/tooltip/llm-tooltip.d.ts +0 -17
package/src/lib/spec.d.ts
CHANGED
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
* @atelier-ui/spec
|
|
3
3
|
*
|
|
4
4
|
* Framework-agnostic TypeScript interfaces defining the public API contract
|
|
5
|
-
* for every
|
|
5
|
+
* for every Atelier component. Both the Angular and React libraries
|
|
6
6
|
* import from here so the compiler enforces parity.
|
|
7
7
|
*
|
|
8
8
|
* Angular: use the union types as `input<T>()` type parameters.
|
|
9
9
|
* React: extend the spec interface from the framework-specific props interface.
|
|
10
10
|
*/
|
|
11
|
-
export type
|
|
12
|
-
export type
|
|
13
|
-
export interface
|
|
14
|
-
variant?:
|
|
15
|
-
size?:
|
|
11
|
+
export type AtlButtonVariant = 'primary' | 'secondary' | 'outline' | 'danger';
|
|
12
|
+
export type AtlButtonSize = 'sm' | 'md' | 'lg';
|
|
13
|
+
export interface AtlButtonSpec {
|
|
14
|
+
variant?: AtlButtonVariant;
|
|
15
|
+
size?: AtlButtonSize;
|
|
16
16
|
disabled?: boolean;
|
|
17
17
|
loading?: boolean;
|
|
18
18
|
/**
|
|
@@ -25,29 +25,29 @@ export interface LlmButtonSpec {
|
|
|
25
25
|
*/
|
|
26
26
|
'aria-label'?: string;
|
|
27
27
|
}
|
|
28
|
-
export type
|
|
29
|
-
export type
|
|
30
|
-
export interface
|
|
31
|
-
variant?:
|
|
32
|
-
size?:
|
|
28
|
+
export type AtlBadgeVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';
|
|
29
|
+
export type AtlBadgeSize = 'sm' | 'md';
|
|
30
|
+
export interface AtlBadgeSpec {
|
|
31
|
+
variant?: AtlBadgeVariant;
|
|
32
|
+
size?: AtlBadgeSize;
|
|
33
33
|
}
|
|
34
|
-
export type
|
|
35
|
-
export type
|
|
36
|
-
export type
|
|
37
|
-
export interface
|
|
34
|
+
export type AtlAvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
35
|
+
export type AtlAvatarShape = 'circle' | 'square';
|
|
36
|
+
export type AtlAvatarStatus = 'online' | 'offline' | 'away' | 'busy' | '';
|
|
37
|
+
export interface AtlAvatarSpec {
|
|
38
38
|
src?: string;
|
|
39
39
|
alt?: string;
|
|
40
40
|
name?: string;
|
|
41
|
-
size?:
|
|
42
|
-
shape?:
|
|
43
|
-
status?:
|
|
41
|
+
size?: AtlAvatarSize;
|
|
42
|
+
shape?: AtlAvatarShape;
|
|
43
|
+
status?: AtlAvatarStatus;
|
|
44
44
|
}
|
|
45
|
-
export interface
|
|
45
|
+
export interface AtlAvatarGroupSpec {
|
|
46
46
|
max?: number;
|
|
47
|
-
size?:
|
|
47
|
+
size?: AtlAvatarSize;
|
|
48
48
|
}
|
|
49
|
-
export type
|
|
50
|
-
export type
|
|
49
|
+
export type AtlCardVariant = 'elevated' | 'outlined' | 'flat';
|
|
50
|
+
export type AtlCardPadding = 'none' | 'sm' | 'md' | 'lg';
|
|
51
51
|
/**
|
|
52
52
|
* Optional landmark role for the card. Default behaviour is a plain
|
|
53
53
|
* `<div>` — most cards group content visually and shouldn't add a
|
|
@@ -61,17 +61,17 @@ export type LlmCardPadding = 'none' | 'sm' | 'md' | 'lg';
|
|
|
61
61
|
* - `'section'` is not a landmark by itself — equivalent to a
|
|
62
62
|
* `<section>` element. Useful when nesting structure matters.
|
|
63
63
|
*/
|
|
64
|
-
export type
|
|
65
|
-
export interface
|
|
66
|
-
variant?:
|
|
67
|
-
padding?:
|
|
64
|
+
export type AtlCardRole = 'article' | 'region' | 'section';
|
|
65
|
+
export interface AtlCardSpec {
|
|
66
|
+
variant?: AtlCardVariant;
|
|
67
|
+
padding?: AtlCardPadding;
|
|
68
68
|
/**
|
|
69
69
|
* Opt-in landmark role. Default is no role (plain `<div>`).
|
|
70
|
-
* See {@link
|
|
70
|
+
* See {@link AtlCardRole} for when to use each value.
|
|
71
71
|
*/
|
|
72
|
-
role?:
|
|
72
|
+
role?: AtlCardRole;
|
|
73
73
|
}
|
|
74
|
-
export interface
|
|
74
|
+
export interface AtlFormFieldSpec {
|
|
75
75
|
value?: any;
|
|
76
76
|
onValueChange?: (value: any) => void;
|
|
77
77
|
disabled?: boolean;
|
|
@@ -80,45 +80,45 @@ export interface LlmFormFieldSpec {
|
|
|
80
80
|
required?: boolean;
|
|
81
81
|
name?: string;
|
|
82
82
|
}
|
|
83
|
-
export type
|
|
84
|
-
export interface
|
|
85
|
-
type?:
|
|
83
|
+
export type AtlInputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url';
|
|
84
|
+
export interface AtlInputSpec extends AtlFormFieldSpec {
|
|
85
|
+
type?: AtlInputType;
|
|
86
86
|
placeholder?: string;
|
|
87
87
|
}
|
|
88
|
-
export interface
|
|
88
|
+
export interface AtlTextareaSpec extends AtlFormFieldSpec {
|
|
89
89
|
rows?: number;
|
|
90
90
|
placeholder?: string;
|
|
91
91
|
autoResize?: boolean;
|
|
92
92
|
}
|
|
93
|
-
export interface
|
|
93
|
+
export interface AtlCheckboxSpec extends Omit<AtlFormFieldSpec, 'value' | 'onValueChange'> {
|
|
94
94
|
checked?: boolean;
|
|
95
95
|
onCheckedChange?: (checked: boolean) => void;
|
|
96
96
|
indeterminate?: boolean;
|
|
97
97
|
}
|
|
98
|
-
export interface
|
|
98
|
+
export interface AtlToggleSpec extends Omit<AtlFormFieldSpec, 'value' | 'onValueChange'> {
|
|
99
99
|
checked?: boolean;
|
|
100
100
|
onCheckedChange?: (checked: boolean) => void;
|
|
101
101
|
}
|
|
102
|
-
export interface
|
|
102
|
+
export interface AtlRadioSpec {
|
|
103
103
|
radioValue: string;
|
|
104
104
|
disabled?: boolean;
|
|
105
105
|
}
|
|
106
|
-
export interface
|
|
106
|
+
export interface AtlRadioGroupSpec extends AtlFormFieldSpec {
|
|
107
107
|
value?: string;
|
|
108
108
|
}
|
|
109
|
-
export interface
|
|
109
|
+
export interface AtlSelectSpec extends AtlFormFieldSpec {
|
|
110
110
|
placeholder?: string;
|
|
111
111
|
}
|
|
112
|
-
export interface
|
|
112
|
+
export interface AtlOptionSpec {
|
|
113
113
|
optionValue: string;
|
|
114
114
|
disabled?: boolean;
|
|
115
115
|
}
|
|
116
|
-
export interface
|
|
116
|
+
export interface AtlStepperSpec {
|
|
117
117
|
activeStep?: number;
|
|
118
118
|
orientation?: 'horizontal' | 'vertical';
|
|
119
119
|
linear?: boolean;
|
|
120
120
|
}
|
|
121
|
-
export interface
|
|
121
|
+
export interface AtlStepSpec {
|
|
122
122
|
label: string;
|
|
123
123
|
description?: string;
|
|
124
124
|
completed?: boolean;
|
|
@@ -126,44 +126,44 @@ export interface LlmStepSpec {
|
|
|
126
126
|
optional?: boolean;
|
|
127
127
|
disabled?: boolean;
|
|
128
128
|
}
|
|
129
|
-
export interface
|
|
129
|
+
export interface AtlComboboxOption {
|
|
130
130
|
value: string;
|
|
131
131
|
label: string;
|
|
132
132
|
disabled?: boolean;
|
|
133
133
|
}
|
|
134
|
-
export interface
|
|
135
|
-
options?:
|
|
134
|
+
export interface AtlComboboxSpec extends AtlFormFieldSpec {
|
|
135
|
+
options?: AtlComboboxOption[];
|
|
136
136
|
placeholder?: string;
|
|
137
137
|
}
|
|
138
|
-
export type
|
|
139
|
-
export interface
|
|
140
|
-
variant?:
|
|
138
|
+
export type AtlAlertVariant = 'info' | 'success' | 'warning' | 'danger';
|
|
139
|
+
export interface AtlAlertSpec {
|
|
140
|
+
variant?: AtlAlertVariant;
|
|
141
141
|
dismissible?: boolean;
|
|
142
142
|
}
|
|
143
|
-
export type
|
|
144
|
-
export interface
|
|
143
|
+
export type AtlDialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
144
|
+
export interface AtlDialogSpec {
|
|
145
145
|
open?: boolean;
|
|
146
146
|
onOpenChange?: (open: boolean) => void;
|
|
147
147
|
closeOnBackdrop?: boolean;
|
|
148
|
-
size?:
|
|
148
|
+
size?: AtlDialogSize;
|
|
149
149
|
}
|
|
150
|
-
export type
|
|
151
|
-
export interface
|
|
150
|
+
export type AtlTabGroupVariant = 'default' | 'pills';
|
|
151
|
+
export interface AtlTabGroupSpec {
|
|
152
152
|
selectedIndex?: number;
|
|
153
153
|
onSelectedIndexChange?: (index: number) => void;
|
|
154
|
-
variant?:
|
|
154
|
+
variant?: AtlTabGroupVariant;
|
|
155
155
|
}
|
|
156
|
-
export interface
|
|
156
|
+
export interface AtlTabSpec {
|
|
157
157
|
label: string;
|
|
158
158
|
disabled?: boolean;
|
|
159
159
|
}
|
|
160
|
-
export type
|
|
161
|
-
export interface
|
|
160
|
+
export type AtlAccordionGroupVariant = 'default' | 'bordered' | 'separated';
|
|
161
|
+
export interface AtlAccordionGroupSpec {
|
|
162
162
|
multi?: boolean;
|
|
163
|
-
variant?:
|
|
163
|
+
variant?: AtlAccordionGroupVariant;
|
|
164
164
|
}
|
|
165
|
-
export type
|
|
166
|
-
export interface
|
|
165
|
+
export type AtlAccordionHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
|
|
166
|
+
export interface AtlAccordionItemSpec {
|
|
167
167
|
expanded?: boolean;
|
|
168
168
|
onExpandedChange?: (expanded: boolean) => void;
|
|
169
169
|
disabled?: boolean;
|
|
@@ -175,57 +175,57 @@ export interface LlmAccordionItemSpec {
|
|
|
175
175
|
* `headingLevel={3}` (default); if nested under an `<h3>`, pass
|
|
176
176
|
* `headingLevel={4}`.
|
|
177
177
|
*/
|
|
178
|
-
headingLevel?:
|
|
178
|
+
headingLevel?: AtlAccordionHeadingLevel;
|
|
179
179
|
}
|
|
180
|
-
export type
|
|
181
|
-
export interface
|
|
182
|
-
variant?:
|
|
180
|
+
export type AtlMenuVariant = 'default' | 'compact';
|
|
181
|
+
export interface AtlMenuSpec {
|
|
182
|
+
variant?: AtlMenuVariant;
|
|
183
183
|
}
|
|
184
|
-
export interface
|
|
184
|
+
export interface AtlMenuItemSpec {
|
|
185
185
|
disabled?: boolean;
|
|
186
186
|
}
|
|
187
|
-
export type
|
|
188
|
-
export interface
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}
|
|
195
|
-
export type
|
|
196
|
-
export type
|
|
197
|
-
export interface
|
|
198
|
-
variant?:
|
|
187
|
+
export type AtlTooltipPosition = 'above' | 'below' | 'left' | 'right';
|
|
188
|
+
export interface AtlTooltipSpec {
|
|
189
|
+
atlTooltip: string;
|
|
190
|
+
atlTooltipPosition?: AtlTooltipPosition;
|
|
191
|
+
atlTooltipDisabled?: boolean;
|
|
192
|
+
atlTooltipShowDelay?: number;
|
|
193
|
+
atlTooltipHideDelay?: number;
|
|
194
|
+
}
|
|
195
|
+
export type AtlToastVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';
|
|
196
|
+
export type AtlToastContainerPosition = 'top-right' | 'top-center' | 'bottom-right' | 'bottom-center';
|
|
197
|
+
export interface AtlToastOptions {
|
|
198
|
+
variant?: AtlToastVariant;
|
|
199
199
|
duration?: number;
|
|
200
200
|
dismissible?: boolean;
|
|
201
201
|
}
|
|
202
|
-
export type
|
|
203
|
-
export interface
|
|
204
|
-
variant?:
|
|
202
|
+
export type AtlSkeletonVariant = 'text' | 'circular' | 'rectangular';
|
|
203
|
+
export interface AtlSkeletonSpec {
|
|
204
|
+
variant?: AtlSkeletonVariant;
|
|
205
205
|
width?: string;
|
|
206
206
|
height?: string;
|
|
207
207
|
animated?: boolean;
|
|
208
208
|
}
|
|
209
|
-
export interface
|
|
209
|
+
export interface AtlBreadcrumbsSpec {
|
|
210
210
|
separator?: string;
|
|
211
211
|
}
|
|
212
|
-
export interface
|
|
212
|
+
export interface AtlBreadcrumbItemSpec {
|
|
213
213
|
href?: string;
|
|
214
214
|
current?: boolean;
|
|
215
215
|
}
|
|
216
|
-
export interface
|
|
216
|
+
export interface AtlPaginationSpec {
|
|
217
217
|
page?: number;
|
|
218
218
|
pageCount?: number;
|
|
219
219
|
siblingCount?: number;
|
|
220
220
|
showFirstLast?: boolean;
|
|
221
221
|
}
|
|
222
|
-
export type
|
|
223
|
-
export type
|
|
224
|
-
export interface
|
|
222
|
+
export type AtlProgressVariant = 'default' | 'success' | 'warning' | 'danger';
|
|
223
|
+
export type AtlProgressSize = 'sm' | 'md' | 'lg';
|
|
224
|
+
export interface AtlProgressSpec {
|
|
225
225
|
value?: number;
|
|
226
226
|
max?: number;
|
|
227
|
-
variant?:
|
|
228
|
-
size?:
|
|
227
|
+
variant?: AtlProgressVariant;
|
|
228
|
+
size?: AtlProgressSize;
|
|
229
229
|
indeterminate?: boolean;
|
|
230
230
|
/**
|
|
231
231
|
* Accessible name for the progress bar — rendered as `aria-label`.
|
|
@@ -235,21 +235,21 @@ export interface LlmProgressSpec {
|
|
|
235
235
|
*/
|
|
236
236
|
label?: string;
|
|
237
237
|
}
|
|
238
|
-
export type
|
|
239
|
-
export type
|
|
240
|
-
export interface
|
|
238
|
+
export type AtlDrawerPosition = 'left' | 'right' | 'top' | 'bottom';
|
|
239
|
+
export type AtlDrawerSize = 'sm' | 'md' | 'lg' | 'full';
|
|
240
|
+
export interface AtlDrawerSpec {
|
|
241
241
|
open?: boolean;
|
|
242
|
-
position?:
|
|
243
|
-
size?:
|
|
242
|
+
position?: AtlDrawerPosition;
|
|
243
|
+
size?: AtlDrawerSize;
|
|
244
244
|
closeOnBackdrop?: boolean;
|
|
245
245
|
}
|
|
246
|
-
export type
|
|
247
|
-
export type
|
|
248
|
-
export type
|
|
249
|
-
export type
|
|
250
|
-
export interface
|
|
251
|
-
variant?:
|
|
252
|
-
size?:
|
|
246
|
+
export type AtlTableVariant = 'default' | 'striped' | 'bordered';
|
|
247
|
+
export type AtlTableSize = 'sm' | 'md' | 'lg';
|
|
248
|
+
export type AtlSortDirection = 'asc' | 'desc' | null;
|
|
249
|
+
export type AtlTableAlign = 'start' | 'center' | 'end';
|
|
250
|
+
export interface AtlTableSpec {
|
|
251
|
+
variant?: AtlTableVariant;
|
|
252
|
+
size?: AtlTableSize;
|
|
253
253
|
stickyHeader?: boolean;
|
|
254
254
|
/**
|
|
255
255
|
* Accessible name for the scrollable table region. The wrapper
|
|
@@ -259,29 +259,29 @@ export interface LlmTableSpec {
|
|
|
259
259
|
*/
|
|
260
260
|
'aria-label'?: string;
|
|
261
261
|
}
|
|
262
|
-
export interface
|
|
262
|
+
export interface AtlTbodySpec {
|
|
263
263
|
empty?: boolean;
|
|
264
264
|
colSpan?: number;
|
|
265
265
|
}
|
|
266
|
-
export interface
|
|
266
|
+
export interface AtlTrSpec {
|
|
267
267
|
selected?: boolean;
|
|
268
268
|
selectable?: boolean;
|
|
269
269
|
rowId?: string;
|
|
270
270
|
}
|
|
271
|
-
export interface
|
|
271
|
+
export interface AtlThSpec {
|
|
272
272
|
sortable?: boolean;
|
|
273
|
-
sortDirection?:
|
|
274
|
-
align?:
|
|
273
|
+
sortDirection?: AtlSortDirection;
|
|
274
|
+
align?: AtlTableAlign;
|
|
275
275
|
width?: string;
|
|
276
276
|
}
|
|
277
|
-
export interface
|
|
278
|
-
align?:
|
|
277
|
+
export interface AtlTdSpec {
|
|
278
|
+
align?: AtlTableAlign;
|
|
279
279
|
}
|
|
280
|
-
export type
|
|
281
|
-
export type
|
|
282
|
-
export interface
|
|
283
|
-
name:
|
|
284
|
-
size?:
|
|
280
|
+
export type AtlIconName = 'success' | 'warning' | 'danger' | 'info' | 'error' | 'chevron-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'sort-asc' | 'sort-desc' | 'arrow-right' | 'arrow-left' | 'copy' | 'paste' | 'add' | 'edit' | 'delete' | 'close' | 'more' | 'default-toast';
|
|
281
|
+
export type AtlIconSize = 'sm' | 'md' | 'lg';
|
|
282
|
+
export interface AtlIconSpec {
|
|
283
|
+
name: AtlIconName;
|
|
284
|
+
size?: AtlIconSize;
|
|
285
285
|
/**
|
|
286
286
|
* Accessible label. When provided, the icon is announced as an image with
|
|
287
287
|
* this label. When omitted, the icon is hidden from assistive tech (treated
|
|
@@ -289,23 +289,23 @@ export interface LlmIconSpec {
|
|
|
289
289
|
*/
|
|
290
290
|
label?: string;
|
|
291
291
|
}
|
|
292
|
-
export type
|
|
293
|
-
export type
|
|
294
|
-
export type
|
|
295
|
-
export interface
|
|
292
|
+
export type AtlChatVariant = 'drawer' | 'popup' | 'inline';
|
|
293
|
+
export type AtlChatStatus = 'idle' | 'streaming' | 'error';
|
|
294
|
+
export type AtlChatMessageRole = 'user' | 'assistant' | 'system';
|
|
295
|
+
export interface AtlChatMessageSpec {
|
|
296
296
|
id: string;
|
|
297
|
-
role:
|
|
297
|
+
role: AtlChatMessageRole;
|
|
298
298
|
content: string;
|
|
299
299
|
failed?: boolean;
|
|
300
300
|
}
|
|
301
|
-
export interface
|
|
301
|
+
export interface AtlChatSuggestionSpec {
|
|
302
302
|
id: string;
|
|
303
303
|
label: string;
|
|
304
304
|
hint?: string;
|
|
305
305
|
}
|
|
306
|
-
export interface
|
|
307
|
-
variant?:
|
|
308
|
-
status?:
|
|
306
|
+
export interface AtlChatSpec {
|
|
307
|
+
variant?: AtlChatVariant;
|
|
308
|
+
status?: AtlChatStatus;
|
|
309
309
|
open?: boolean;
|
|
310
310
|
}
|
|
311
311
|
//# sourceMappingURL=spec.d.ts.map
|
package/src/lib/spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../../../libs/react/src/lib/spec.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,4EAA4E;AAC5E,4EAA4E","sourcesContent":["// AUTO-GENERATED from libs/spec/src/index.ts — do not edit here.\n// Run `node tools/scripts/sync-spec.mjs` after editing the source of truth.\n// The framework libs inline these types so @atelier-ui/spec stays internal.\n\n/**\n * @atelier-ui/spec\n *\n * Framework-agnostic TypeScript interfaces defining the public API contract\n * for every llm-components component. Both the Angular and React libraries\n * import from here so the compiler enforces parity.\n *\n * Angular: use the union types as `input<T>()` type parameters.\n * React: extend the spec interface from the framework-specific props interface.\n */\n\n// ---------------------------------------------------------------------------\n// Button\n// ---------------------------------------------------------------------------\nexport type LlmButtonVariant = 'primary' | 'secondary' | 'outline' | 'danger';\nexport type LlmButtonSize = 'sm' | 'md' | 'lg';\nexport interface LlmButtonSpec {\n variant?: LlmButtonVariant;\n size?: LlmButtonSize;\n disabled?: boolean;\n loading?: boolean;\n /**\n * Accessible name — rendered as `aria-label`. Required when the\n * button has no visible text label (icon-only buttons), otherwise\n * the button is unnamed for assistive tech. The React adapter\n * encodes this requirement at the type level via a discriminated\n * union; the Angular and Vue adapters log a dev-mode warning when\n * a rendered button has no accessible name.\n */\n 'aria-label'?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Badge\n// ---------------------------------------------------------------------------\nexport type LlmBadgeVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';\nexport type LlmBadgeSize = 'sm' | 'md';\nexport interface LlmBadgeSpec {\n variant?: LlmBadgeVariant;\n size?: LlmBadgeSize;\n}\n\n// ---------------------------------------------------------------------------\n// Avatar / AvatarGroup\n// ---------------------------------------------------------------------------\nexport type LlmAvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type LlmAvatarShape = 'circle' | 'square';\nexport type LlmAvatarStatus = 'online' | 'offline' | 'away' | 'busy' | '';\nexport interface LlmAvatarSpec {\n src?: string;\n alt?: string;\n name?: string;\n size?: LlmAvatarSize;\n shape?: LlmAvatarShape;\n status?: LlmAvatarStatus;\n}\nexport interface LlmAvatarGroupSpec {\n max?: number;\n size?: LlmAvatarSize;\n}\n\n// ---------------------------------------------------------------------------\n// Card\n// ---------------------------------------------------------------------------\nexport type LlmCardVariant = 'elevated' | 'outlined' | 'flat';\nexport type LlmCardPadding = 'none' | 'sm' | 'md' | 'lg';\n/**\n * Optional landmark role for the card. Default behaviour is a plain\n * `<div>` — most cards group content visually and shouldn't add a\n * landmark to the page outline.\n *\n * Pick a role only when the card is meaningful as a landmark:\n * - `'article'` for self-contained pieces of content (a blog post,\n * a comment, a forum entry) that make sense out of context.\n * - `'region'` for a perceivable area that needs a screen-reader\n * stop. Pair with `aria-label` or `aria-labelledby`.\n * - `'section'` is not a landmark by itself — equivalent to a\n * `<section>` element. Useful when nesting structure matters.\n */\nexport type LlmCardRole = 'article' | 'region' | 'section';\nexport interface LlmCardSpec {\n variant?: LlmCardVariant;\n padding?: LlmCardPadding;\n /**\n * Opt-in landmark role. Default is no role (plain `<div>`).\n * See {@link LlmCardRole} for when to use each value.\n */\n role?: LlmCardRole;\n}\n\n// ---------------------------------------------------------------------------\n// Input / Textarea (shared form field props)\n// ---------------------------------------------------------------------------\n// `any` is intentional here: downstream form-field interfaces narrow `value`\n// to the concrete primitive they accept (string, number, boolean, Date, …).\n// Using `unknown` would force every downstream consumer to redeclare the\n// property, defeating the purpose of the shared spec.\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport interface LlmFormFieldSpec {\n value?: any;\n onValueChange?: (value: any) => void;\n disabled?: boolean;\n readonly?: boolean;\n invalid?: boolean;\n required?: boolean;\n name?: string;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nexport type LlmInputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url';\nexport interface LlmInputSpec extends LlmFormFieldSpec {\n type?: LlmInputType;\n placeholder?: string;\n}\n\nexport interface LlmTextareaSpec extends LlmFormFieldSpec {\n rows?: number;\n placeholder?: string;\n autoResize?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Checkbox / Toggle\n// ---------------------------------------------------------------------------\n// Checkbox/Toggle are checked-based, not value-based, so they omit the\n// inherited `value`/`onValueChange` — their state is `checked`/`onCheckedChange`.\n// (Input/Textarea/RadioGroup/Select/Combobox keep the value-based pair.)\nexport interface LlmCheckboxSpec extends Omit<LlmFormFieldSpec, 'value' | 'onValueChange'> {\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n indeterminate?: boolean;\n}\n\nexport interface LlmToggleSpec extends Omit<LlmFormFieldSpec, 'value' | 'onValueChange'> {\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n}\n\n// ---------------------------------------------------------------------------\n// Radio / RadioGroup\n// ---------------------------------------------------------------------------\nexport interface LlmRadioSpec {\n radioValue: string;\n disabled?: boolean;\n}\n\nexport interface LlmRadioGroupSpec extends LlmFormFieldSpec {\n value?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Select / Option\n// ---------------------------------------------------------------------------\nexport interface LlmSelectSpec extends LlmFormFieldSpec {\n placeholder?: string;\n}\n\nexport interface LlmOptionSpec {\n optionValue: string;\n disabled?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Stepper\n// ---------------------------------------------------------------------------\nexport interface LlmStepperSpec {\n activeStep?: number;\n orientation?: 'horizontal' | 'vertical';\n linear?: boolean;\n}\n\nexport interface LlmStepSpec {\n label: string;\n description?: string;\n completed?: boolean;\n error?: boolean;\n optional?: boolean;\n disabled?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Combobox\n// ---------------------------------------------------------------------------\nexport interface LlmComboboxOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface LlmComboboxSpec extends LlmFormFieldSpec {\n options?: LlmComboboxOption[];\n placeholder?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Alert\n// ---------------------------------------------------------------------------\nexport type LlmAlertVariant = 'info' | 'success' | 'warning' | 'danger';\nexport interface LlmAlertSpec {\n variant?: LlmAlertVariant;\n dismissible?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Dialog\n// ---------------------------------------------------------------------------\nexport type LlmDialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\nexport interface LlmDialogSpec {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n closeOnBackdrop?: boolean;\n size?: LlmDialogSize;\n}\n\n// ---------------------------------------------------------------------------\n// TabGroup / Tab\n// ---------------------------------------------------------------------------\nexport type LlmTabGroupVariant = 'default' | 'pills';\nexport interface LlmTabGroupSpec {\n selectedIndex?: number;\n onSelectedIndexChange?: (index: number) => void;\n variant?: LlmTabGroupVariant;\n}\n\nexport interface LlmTabSpec {\n label: string;\n disabled?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// AccordionGroup / AccordionItem\n// ---------------------------------------------------------------------------\nexport type LlmAccordionGroupVariant = 'default' | 'bordered' | 'separated';\nexport interface LlmAccordionGroupSpec {\n multi?: boolean;\n variant?: LlmAccordionGroupVariant;\n}\n\nexport type LlmAccordionHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport interface LlmAccordionItemSpec {\n expanded?: boolean;\n onExpandedChange?: (expanded: boolean) => void;\n disabled?: boolean;\n /**\n * HTML heading level wrapping the trigger button. Default `3`.\n * Set this to match your page's heading outline so the\n * accordion's section titles don't break heading order.\n * Example: if the accordion is nested under an `<h2>`, pass\n * `headingLevel={3}` (default); if nested under an `<h3>`, pass\n * `headingLevel={4}`.\n */\n headingLevel?: LlmAccordionHeadingLevel;\n}\n\n// ---------------------------------------------------------------------------\n// Menu / MenuItem\n// ---------------------------------------------------------------------------\nexport type LlmMenuVariant = 'default' | 'compact';\nexport interface LlmMenuSpec {\n variant?: LlmMenuVariant;\n}\n\nexport interface LlmMenuItemSpec {\n disabled?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Tooltip\n// ---------------------------------------------------------------------------\nexport type LlmTooltipPosition = 'above' | 'below' | 'left' | 'right';\nexport interface LlmTooltipSpec {\n llmTooltip: string;\n llmTooltipPosition?: LlmTooltipPosition;\n llmTooltipDisabled?: boolean;\n llmTooltipShowDelay?: number;\n llmTooltipHideDelay?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Toast\n// ---------------------------------------------------------------------------\nexport type LlmToastVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';\nexport type LlmToastContainerPosition =\n | 'top-right'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-center';\nexport interface LlmToastOptions {\n variant?: LlmToastVariant;\n duration?: number;\n dismissible?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Skeleton\n// ---------------------------------------------------------------------------\nexport type LlmSkeletonVariant = 'text' | 'circular' | 'rectangular';\nexport interface LlmSkeletonSpec {\n variant?: LlmSkeletonVariant;\n width?: string;\n height?: string;\n animated?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Breadcrumbs / BreadcrumbItem\n// ---------------------------------------------------------------------------\nexport interface LlmBreadcrumbsSpec {\n separator?: string;\n}\n\nexport interface LlmBreadcrumbItemSpec {\n href?: string;\n current?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Pagination\n// ---------------------------------------------------------------------------\nexport interface LlmPaginationSpec {\n page?: number;\n pageCount?: number;\n siblingCount?: number;\n showFirstLast?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Progress\n// ---------------------------------------------------------------------------\nexport type LlmProgressVariant = 'default' | 'success' | 'warning' | 'danger';\nexport type LlmProgressSize = 'sm' | 'md' | 'lg';\nexport interface LlmProgressSpec {\n value?: number;\n max?: number;\n variant?: LlmProgressVariant;\n size?: LlmProgressSize;\n indeterminate?: boolean;\n /**\n * Accessible name for the progress bar — rendered as `aria-label`.\n * Required by ARIA when there is no visible label nearby; without it\n * screen readers announce only \"progress bar 47%\". Examples:\n * `\"Upload progress\"`, `\"Form completion\"`, `\"Quota usage\"`.\n */\n label?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Drawer\n// ---------------------------------------------------------------------------\nexport type LlmDrawerPosition = 'left' | 'right' | 'top' | 'bottom';\nexport type LlmDrawerSize = 'sm' | 'md' | 'lg' | 'full';\nexport interface LlmDrawerSpec {\n open?: boolean;\n position?: LlmDrawerPosition;\n size?: LlmDrawerSize;\n closeOnBackdrop?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Table\n// ---------------------------------------------------------------------------\nexport type LlmTableVariant = 'default' | 'striped' | 'bordered';\nexport type LlmTableSize = 'sm' | 'md' | 'lg';\nexport type LlmSortDirection = 'asc' | 'desc' | null;\nexport type LlmTableAlign = 'start' | 'center' | 'end';\n\nexport interface LlmTableSpec {\n variant?: LlmTableVariant;\n size?: LlmTableSize;\n stickyHeader?: boolean;\n /**\n * Accessible name for the scrollable table region. The wrapper\n * around the `<table>` is keyboard-focusable (tabindex=0) so that\n * users can scroll horizontally; this label is what screen readers\n * announce when focus enters the region. Defaults to `\"Table\"`.\n */\n 'aria-label'?: string;\n}\n\nexport interface LlmTbodySpec {\n empty?: boolean;\n colSpan?: number;\n}\n\nexport interface LlmTrSpec {\n selected?: boolean;\n selectable?: boolean;\n rowId?: string;\n}\n\nexport interface LlmThSpec {\n sortable?: boolean;\n sortDirection?: LlmSortDirection;\n align?: LlmTableAlign;\n width?: string;\n}\n\nexport interface LlmTdSpec {\n align?: LlmTableAlign;\n}\n\n// ---------------------------------------------------------------------------\n// Icon\n// ---------------------------------------------------------------------------\nexport type LlmIconName =\n | 'success'\n | 'warning'\n | 'danger'\n | 'info'\n | 'error'\n | 'chevron-up'\n | 'chevron-down'\n | 'chevron-left'\n | 'chevron-right'\n | 'sort-asc'\n | 'sort-desc'\n | 'arrow-right'\n | 'arrow-left'\n | 'copy'\n | 'paste'\n | 'add'\n | 'edit'\n | 'delete'\n | 'close'\n | 'more'\n | 'default-toast';\nexport type LlmIconSize = 'sm' | 'md' | 'lg';\nexport interface LlmIconSpec {\n name: LlmIconName;\n size?: LlmIconSize;\n /**\n * Accessible label. When provided, the icon is announced as an image with\n * this label. When omitted, the icon is hidden from assistive tech (treated\n * as decorative).\n */\n label?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Chat (AI surface)\n// ---------------------------------------------------------------------------\nexport type LlmChatVariant = 'drawer' | 'popup' | 'inline';\nexport type LlmChatStatus = 'idle' | 'streaming' | 'error';\nexport type LlmChatMessageRole = 'user' | 'assistant' | 'system';\n\nexport interface LlmChatMessageSpec {\n id: string;\n role: LlmChatMessageRole;\n content: string;\n failed?: boolean;\n}\n\nexport interface LlmChatSuggestionSpec {\n id: string;\n label: string;\n hint?: string;\n}\n\nexport interface LlmChatSpec {\n variant?: LlmChatVariant;\n status?: LlmChatStatus;\n open?: boolean;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../../../libs/react/src/lib/spec.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,4EAA4E;AAC5E,4EAA4E","sourcesContent":["// AUTO-GENERATED from libs/spec/src/index.ts — do not edit here.\n// Run `node tools/scripts/sync-spec.mjs` after editing the source of truth.\n// The framework libs inline these types so @atelier-ui/spec stays internal.\n\n/**\n * @atelier-ui/spec\n *\n * Framework-agnostic TypeScript interfaces defining the public API contract\n * for every Atelier component. Both the Angular and React libraries\n * import from here so the compiler enforces parity.\n *\n * Angular: use the union types as `input<T>()` type parameters.\n * React: extend the spec interface from the framework-specific props interface.\n */\n\n// ---------------------------------------------------------------------------\n// Button\n// ---------------------------------------------------------------------------\nexport type AtlButtonVariant = 'primary' | 'secondary' | 'outline' | 'danger';\nexport type AtlButtonSize = 'sm' | 'md' | 'lg';\nexport interface AtlButtonSpec {\n variant?: AtlButtonVariant;\n size?: AtlButtonSize;\n disabled?: boolean;\n loading?: boolean;\n /**\n * Accessible name — rendered as `aria-label`. Required when the\n * button has no visible text label (icon-only buttons), otherwise\n * the button is unnamed for assistive tech. The React adapter\n * encodes this requirement at the type level via a discriminated\n * union; the Angular and Vue adapters log a dev-mode warning when\n * a rendered button has no accessible name.\n */\n 'aria-label'?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Badge\n// ---------------------------------------------------------------------------\nexport type AtlBadgeVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';\nexport type AtlBadgeSize = 'sm' | 'md';\nexport interface AtlBadgeSpec {\n variant?: AtlBadgeVariant;\n size?: AtlBadgeSize;\n}\n\n// ---------------------------------------------------------------------------\n// Avatar / AvatarGroup\n// ---------------------------------------------------------------------------\nexport type AtlAvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type AtlAvatarShape = 'circle' | 'square';\nexport type AtlAvatarStatus = 'online' | 'offline' | 'away' | 'busy' | '';\nexport interface AtlAvatarSpec {\n src?: string;\n alt?: string;\n name?: string;\n size?: AtlAvatarSize;\n shape?: AtlAvatarShape;\n status?: AtlAvatarStatus;\n}\nexport interface AtlAvatarGroupSpec {\n max?: number;\n size?: AtlAvatarSize;\n}\n\n// ---------------------------------------------------------------------------\n// Card\n// ---------------------------------------------------------------------------\nexport type AtlCardVariant = 'elevated' | 'outlined' | 'flat';\nexport type AtlCardPadding = 'none' | 'sm' | 'md' | 'lg';\n/**\n * Optional landmark role for the card. Default behaviour is a plain\n * `<div>` — most cards group content visually and shouldn't add a\n * landmark to the page outline.\n *\n * Pick a role only when the card is meaningful as a landmark:\n * - `'article'` for self-contained pieces of content (a blog post,\n * a comment, a forum entry) that make sense out of context.\n * - `'region'` for a perceivable area that needs a screen-reader\n * stop. Pair with `aria-label` or `aria-labelledby`.\n * - `'section'` is not a landmark by itself — equivalent to a\n * `<section>` element. Useful when nesting structure matters.\n */\nexport type AtlCardRole = 'article' | 'region' | 'section';\nexport interface AtlCardSpec {\n variant?: AtlCardVariant;\n padding?: AtlCardPadding;\n /**\n * Opt-in landmark role. Default is no role (plain `<div>`).\n * See {@link AtlCardRole} for when to use each value.\n */\n role?: AtlCardRole;\n}\n\n// ---------------------------------------------------------------------------\n// Input / Textarea (shared form field props)\n// ---------------------------------------------------------------------------\n// `any` is intentional here: downstream form-field interfaces narrow `value`\n// to the concrete primitive they accept (string, number, boolean, Date, …).\n// Using `unknown` would force every downstream consumer to redeclare the\n// property, defeating the purpose of the shared spec.\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport interface AtlFormFieldSpec {\n value?: any;\n onValueChange?: (value: any) => void;\n disabled?: boolean;\n readonly?: boolean;\n invalid?: boolean;\n required?: boolean;\n name?: string;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nexport type AtlInputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url';\nexport interface AtlInputSpec extends AtlFormFieldSpec {\n type?: AtlInputType;\n placeholder?: string;\n}\n\nexport interface AtlTextareaSpec extends AtlFormFieldSpec {\n rows?: number;\n placeholder?: string;\n autoResize?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Checkbox / Toggle\n// ---------------------------------------------------------------------------\n// Checkbox/Toggle are checked-based, not value-based, so they omit the\n// inherited `value`/`onValueChange` — their state is `checked`/`onCheckedChange`.\n// (Input/Textarea/RadioGroup/Select/Combobox keep the value-based pair.)\nexport interface AtlCheckboxSpec extends Omit<AtlFormFieldSpec, 'value' | 'onValueChange'> {\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n indeterminate?: boolean;\n}\n\nexport interface AtlToggleSpec extends Omit<AtlFormFieldSpec, 'value' | 'onValueChange'> {\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n}\n\n// ---------------------------------------------------------------------------\n// Radio / RadioGroup\n// ---------------------------------------------------------------------------\nexport interface AtlRadioSpec {\n radioValue: string;\n disabled?: boolean;\n}\n\nexport interface AtlRadioGroupSpec extends AtlFormFieldSpec {\n value?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Select / Option\n// ---------------------------------------------------------------------------\nexport interface AtlSelectSpec extends AtlFormFieldSpec {\n placeholder?: string;\n}\n\nexport interface AtlOptionSpec {\n optionValue: string;\n disabled?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Stepper\n// ---------------------------------------------------------------------------\nexport interface AtlStepperSpec {\n activeStep?: number;\n orientation?: 'horizontal' | 'vertical';\n linear?: boolean;\n}\n\nexport interface AtlStepSpec {\n label: string;\n description?: string;\n completed?: boolean;\n error?: boolean;\n optional?: boolean;\n disabled?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Combobox\n// ---------------------------------------------------------------------------\nexport interface AtlComboboxOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface AtlComboboxSpec extends AtlFormFieldSpec {\n options?: AtlComboboxOption[];\n placeholder?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Alert\n// ---------------------------------------------------------------------------\nexport type AtlAlertVariant = 'info' | 'success' | 'warning' | 'danger';\nexport interface AtlAlertSpec {\n variant?: AtlAlertVariant;\n dismissible?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Dialog\n// ---------------------------------------------------------------------------\nexport type AtlDialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\nexport interface AtlDialogSpec {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n closeOnBackdrop?: boolean;\n size?: AtlDialogSize;\n}\n\n// ---------------------------------------------------------------------------\n// TabGroup / Tab\n// ---------------------------------------------------------------------------\nexport type AtlTabGroupVariant = 'default' | 'pills';\nexport interface AtlTabGroupSpec {\n selectedIndex?: number;\n onSelectedIndexChange?: (index: number) => void;\n variant?: AtlTabGroupVariant;\n}\n\nexport interface AtlTabSpec {\n label: string;\n disabled?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// AccordionGroup / AccordionItem\n// ---------------------------------------------------------------------------\nexport type AtlAccordionGroupVariant = 'default' | 'bordered' | 'separated';\nexport interface AtlAccordionGroupSpec {\n multi?: boolean;\n variant?: AtlAccordionGroupVariant;\n}\n\nexport type AtlAccordionHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport interface AtlAccordionItemSpec {\n expanded?: boolean;\n onExpandedChange?: (expanded: boolean) => void;\n disabled?: boolean;\n /**\n * HTML heading level wrapping the trigger button. Default `3`.\n * Set this to match your page's heading outline so the\n * accordion's section titles don't break heading order.\n * Example: if the accordion is nested under an `<h2>`, pass\n * `headingLevel={3}` (default); if nested under an `<h3>`, pass\n * `headingLevel={4}`.\n */\n headingLevel?: AtlAccordionHeadingLevel;\n}\n\n// ---------------------------------------------------------------------------\n// Menu / MenuItem\n// ---------------------------------------------------------------------------\nexport type AtlMenuVariant = 'default' | 'compact';\nexport interface AtlMenuSpec {\n variant?: AtlMenuVariant;\n}\n\nexport interface AtlMenuItemSpec {\n disabled?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Tooltip\n// ---------------------------------------------------------------------------\nexport type AtlTooltipPosition = 'above' | 'below' | 'left' | 'right';\nexport interface AtlTooltipSpec {\n atlTooltip: string;\n atlTooltipPosition?: AtlTooltipPosition;\n atlTooltipDisabled?: boolean;\n atlTooltipShowDelay?: number;\n atlTooltipHideDelay?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Toast\n// ---------------------------------------------------------------------------\nexport type AtlToastVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';\nexport type AtlToastContainerPosition =\n | 'top-right'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-center';\nexport interface AtlToastOptions {\n variant?: AtlToastVariant;\n duration?: number;\n dismissible?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Skeleton\n// ---------------------------------------------------------------------------\nexport type AtlSkeletonVariant = 'text' | 'circular' | 'rectangular';\nexport interface AtlSkeletonSpec {\n variant?: AtlSkeletonVariant;\n width?: string;\n height?: string;\n animated?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Breadcrumbs / BreadcrumbItem\n// ---------------------------------------------------------------------------\nexport interface AtlBreadcrumbsSpec {\n separator?: string;\n}\n\nexport interface AtlBreadcrumbItemSpec {\n href?: string;\n current?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Pagination\n// ---------------------------------------------------------------------------\nexport interface AtlPaginationSpec {\n page?: number;\n pageCount?: number;\n siblingCount?: number;\n showFirstLast?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Progress\n// ---------------------------------------------------------------------------\nexport type AtlProgressVariant = 'default' | 'success' | 'warning' | 'danger';\nexport type AtlProgressSize = 'sm' | 'md' | 'lg';\nexport interface AtlProgressSpec {\n value?: number;\n max?: number;\n variant?: AtlProgressVariant;\n size?: AtlProgressSize;\n indeterminate?: boolean;\n /**\n * Accessible name for the progress bar — rendered as `aria-label`.\n * Required by ARIA when there is no visible label nearby; without it\n * screen readers announce only \"progress bar 47%\". Examples:\n * `\"Upload progress\"`, `\"Form completion\"`, `\"Quota usage\"`.\n */\n label?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Drawer\n// ---------------------------------------------------------------------------\nexport type AtlDrawerPosition = 'left' | 'right' | 'top' | 'bottom';\nexport type AtlDrawerSize = 'sm' | 'md' | 'lg' | 'full';\nexport interface AtlDrawerSpec {\n open?: boolean;\n position?: AtlDrawerPosition;\n size?: AtlDrawerSize;\n closeOnBackdrop?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Table\n// ---------------------------------------------------------------------------\nexport type AtlTableVariant = 'default' | 'striped' | 'bordered';\nexport type AtlTableSize = 'sm' | 'md' | 'lg';\nexport type AtlSortDirection = 'asc' | 'desc' | null;\nexport type AtlTableAlign = 'start' | 'center' | 'end';\n\nexport interface AtlTableSpec {\n variant?: AtlTableVariant;\n size?: AtlTableSize;\n stickyHeader?: boolean;\n /**\n * Accessible name for the scrollable table region. The wrapper\n * around the `<table>` is keyboard-focusable (tabindex=0) so that\n * users can scroll horizontally; this label is what screen readers\n * announce when focus enters the region. Defaults to `\"Table\"`.\n */\n 'aria-label'?: string;\n}\n\nexport interface AtlTbodySpec {\n empty?: boolean;\n colSpan?: number;\n}\n\nexport interface AtlTrSpec {\n selected?: boolean;\n selectable?: boolean;\n rowId?: string;\n}\n\nexport interface AtlThSpec {\n sortable?: boolean;\n sortDirection?: AtlSortDirection;\n align?: AtlTableAlign;\n width?: string;\n}\n\nexport interface AtlTdSpec {\n align?: AtlTableAlign;\n}\n\n// ---------------------------------------------------------------------------\n// Icon\n// ---------------------------------------------------------------------------\nexport type AtlIconName =\n | 'success'\n | 'warning'\n | 'danger'\n | 'info'\n | 'error'\n | 'chevron-up'\n | 'chevron-down'\n | 'chevron-left'\n | 'chevron-right'\n | 'sort-asc'\n | 'sort-desc'\n | 'arrow-right'\n | 'arrow-left'\n | 'copy'\n | 'paste'\n | 'add'\n | 'edit'\n | 'delete'\n | 'close'\n | 'more'\n | 'default-toast';\nexport type AtlIconSize = 'sm' | 'md' | 'lg';\nexport interface AtlIconSpec {\n name: AtlIconName;\n size?: AtlIconSize;\n /**\n * Accessible label. When provided, the icon is announced as an image with\n * this label. When omitted, the icon is hidden from assistive tech (treated\n * as decorative).\n */\n label?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Chat (AI surface)\n// ---------------------------------------------------------------------------\nexport type AtlChatVariant = 'drawer' | 'popup' | 'inline';\nexport type AtlChatStatus = 'idle' | 'streaming' | 'error';\nexport type AtlChatMessageRole = 'user' | 'assistant' | 'system';\n\nexport interface AtlChatMessageSpec {\n id: string;\n role: AtlChatMessageRole;\n content: string;\n failed?: boolean;\n}\n\nexport interface AtlChatSuggestionSpec {\n id: string;\n label: string;\n hint?: string;\n}\n\nexport interface AtlChatSpec {\n variant?: AtlChatVariant;\n status?: AtlChatStatus;\n open?: boolean;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.
|
|
1
|
+
.atl-stepper {
|
|
2
2
|
display: block;
|
|
3
3
|
font-family: var(--ui-font-family);
|
|
4
4
|
}
|
|
@@ -144,25 +144,25 @@
|
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
/* ─── Vertical orientation ─── */
|
|
147
|
-
.
|
|
147
|
+
.atl-stepper.orientation-vertical .stepper-header {
|
|
148
148
|
flex-direction: column;
|
|
149
149
|
align-items: stretch;
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
.
|
|
152
|
+
.atl-stepper.orientation-vertical .step-item {
|
|
153
153
|
flex-direction: row;
|
|
154
154
|
align-items: flex-start;
|
|
155
155
|
gap: var(--ui-spacing-3);
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
.
|
|
158
|
+
.atl-stepper.orientation-vertical .step-text {
|
|
159
159
|
align-items: flex-start;
|
|
160
160
|
text-align: left;
|
|
161
161
|
margin-top: 0;
|
|
162
162
|
padding-top: var(--ui-spacing-1);
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
.
|
|
165
|
+
.atl-stepper.orientation-vertical .step-connector {
|
|
166
166
|
flex: none;
|
|
167
167
|
width: 2px;
|
|
168
168
|
height: var(--ui-spacing-6);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ReactNode, HTMLAttributes } from 'react';
|
|
2
|
-
import type {
|
|
3
|
-
import './
|
|
2
|
+
import type { AtlStepperSpec, AtlStepSpec } from '../spec';
|
|
3
|
+
import './atl-stepper.css';
|
|
4
4
|
interface StepInfo {
|
|
5
5
|
label: string;
|
|
6
6
|
description?: string;
|
|
@@ -19,8 +19,8 @@ interface StepperContextValue {
|
|
|
19
19
|
goTo(i: number): void;
|
|
20
20
|
}
|
|
21
21
|
/** Access stepper navigation from within step content. */
|
|
22
|
-
export declare function
|
|
23
|
-
export interface
|
|
22
|
+
export declare function useAtlStepper(): StepperContextValue;
|
|
23
|
+
export interface AtlStepperProps extends HTMLAttributes<HTMLDivElement>, AtlStepperSpec {
|
|
24
24
|
/** Currently active step index. */
|
|
25
25
|
activeStep?: number;
|
|
26
26
|
/** Callback when the active step changes. */
|
|
@@ -31,8 +31,8 @@ export interface LlmStepperProps extends HTMLAttributes<HTMLDivElement>, LlmStep
|
|
|
31
31
|
linear?: boolean;
|
|
32
32
|
children?: ReactNode;
|
|
33
33
|
}
|
|
34
|
-
export declare function
|
|
35
|
-
export interface
|
|
34
|
+
export declare function AtlStepper({ activeStep: externalStep, onActiveStepChange, orientation, linear, children, className, ...rest }: AtlStepperProps): import("react").JSX.Element;
|
|
35
|
+
export interface AtlStepProps extends AtlStepSpec {
|
|
36
36
|
/** Text displayed on the step indicator. Required. */
|
|
37
37
|
label: string;
|
|
38
38
|
/** Optional subtitle. */
|
|
@@ -47,9 +47,9 @@ export interface LlmStepProps extends LlmStepSpec {
|
|
|
47
47
|
disabled?: boolean;
|
|
48
48
|
children?: ReactNode;
|
|
49
49
|
}
|
|
50
|
-
export declare function
|
|
51
|
-
export declare namespace
|
|
50
|
+
export declare function AtlStep({ children }: AtlStepProps): ReactNode;
|
|
51
|
+
export declare namespace AtlStep {
|
|
52
52
|
var displayName: string;
|
|
53
53
|
}
|
|
54
54
|
export {};
|
|
55
|
-
//# sourceMappingURL=
|
|
55
|
+
//# sourceMappingURL=atl-stepper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"atl-stepper.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/stepper/atl-stepper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,cAAc,EAKf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,mBAAmB,CAAC;AAE3B,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,mBAAmB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,IAAI,IAAI,CAAC;IACb,IAAI,IAAI,IAAI,CAAC;IACb,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAYD,0DAA0D;AAC1D,wBAAgB,aAAa,wBAE5B;AAED,MAAM,WAAW,eACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,cAAc;IAChB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,0BAA0B;IAC1B,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,EACzB,UAAU,EAAE,YAAY,EACxB,kBAAkB,EAClB,WAA0B,EAC1B,MAAc,EACd,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,eAAe,+BAuJjB;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iCAAiC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,YAAY,aAEjD;yBAFe,OAAO"}
|