@adrelle/design-system 0.0.0-stage → 3.2.1

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.
@@ -0,0 +1,267 @@
1
+ .button {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ white-space: nowrap;
6
+ border-radius: var(--radius-lg, 0.5rem);
7
+ font-size: 0.75rem;
8
+ font-weight: 600;
9
+ line-height: 1;
10
+ gap: 0.375rem;
11
+ transition:
12
+ background-color 0.15s ease,
13
+ color 0.15s ease,
14
+ border-color 0.15s ease,
15
+ box-shadow 0.15s ease;
16
+ outline: none;
17
+ border: 1px solid transparent;
18
+ cursor: pointer;
19
+ height: 2.25rem;
20
+ padding: 0 0.875rem;
21
+ user-select: none;
22
+ text-decoration: none;
23
+ box-shadow: var(--shadow-xs);
24
+ }
25
+
26
+ .button:focus-visible {
27
+ outline: none;
28
+ box-shadow:
29
+ 0 0 0 1px var(--background),
30
+ 0 0 0 3px var(--primary);
31
+ }
32
+
33
+ .button:disabled,
34
+ .button[disabled] {
35
+ pointer-events: none;
36
+ opacity: 0.5;
37
+ cursor: not-allowed;
38
+ }
39
+
40
+ /* Primary Action: Sky Scale (#0284C7 Anchor) */
41
+ .button-primary,
42
+ .button-default {
43
+ background-color: var(--primary);
44
+ color: var(--primary-foreground);
45
+ border-color: transparent;
46
+ box-shadow: var(--shadow-xs);
47
+ }
48
+
49
+ .button-primary:hover,
50
+ .button-default:hover {
51
+ background-color: var(--primary-hover);
52
+ }
53
+
54
+ .button-primary:active,
55
+ .button-default:active {
56
+ background-color: var(--primary-active);
57
+ }
58
+
59
+ /* Secondary Action: Slate Bordered Neutral */
60
+ .button-secondary {
61
+ background-color: var(--card);
62
+ color: var(--secondary-foreground);
63
+ border: 1px solid var(--secondary-border);
64
+ box-shadow: var(--shadow-xs);
65
+ }
66
+
67
+ .button-secondary:hover {
68
+ background-color: var(--secondary-hover);
69
+ color: var(--foreground);
70
+ }
71
+
72
+ .button-secondary:active {
73
+ background-color: var(--secondary-active);
74
+ }
75
+
76
+ /* Outline Action */
77
+ .button-outline {
78
+ border: 1px solid var(--border);
79
+ background-color: var(--card);
80
+ color: var(--secondary-foreground);
81
+ box-shadow: var(--shadow-xs);
82
+ }
83
+
84
+ .button-outline:hover {
85
+ background-color: var(--secondary-hover);
86
+ color: var(--foreground);
87
+ }
88
+
89
+ .button-outline:active {
90
+ background-color: var(--neutral);
91
+ }
92
+
93
+ /* Destructive Action */
94
+ .button-destructive,
95
+ .button-danger {
96
+ background-color: #dc2626;
97
+ color: #fff;
98
+ border-color: transparent;
99
+ box-shadow: var(--shadow-xs);
100
+ }
101
+
102
+ .button-destructive:hover,
103
+ .button-danger:hover {
104
+ background-color: #b91c1c;
105
+ }
106
+
107
+ .button-destructive:active,
108
+ .button-danger:active {
109
+ background-color: #991b1b;
110
+ }
111
+
112
+ /* Ghost Action */
113
+ .button-ghost {
114
+ background-color: transparent;
115
+ border-color: transparent;
116
+ color: var(--neutral-foreground);
117
+ box-shadow: none;
118
+ }
119
+
120
+ .button-ghost:hover {
121
+ background-color: var(--neutral);
122
+ color: var(--foreground);
123
+ }
124
+
125
+ .button-ghost:active {
126
+ background-color: var(--neutral-hover);
127
+ }
128
+
129
+ /* Icon-only Button */
130
+ .button-icon {
131
+ padding: 0.375rem;
132
+ height: 2rem;
133
+ width: 2rem;
134
+ border-radius: var(--radius-lg, 0.5rem);
135
+ color: var(--neutral-foreground);
136
+ background-color: transparent;
137
+ border: 1px solid transparent;
138
+ box-shadow: none;
139
+ }
140
+
141
+ .button-icon:hover {
142
+ color: var(--foreground);
143
+ background-color: var(--neutral);
144
+ }
145
+
146
+ .button-icon:active {
147
+ background-color: var(--neutral-hover);
148
+ }
149
+
150
+ /* Subtle Accent Button */
151
+ .button-accent {
152
+ background-color: var(--primary-tint);
153
+ color: var(--primary);
154
+ border: 1px solid var(--primary-border);
155
+ box-shadow: var(--shadow-xs);
156
+ }
157
+
158
+ .button-accent:hover {
159
+ background-color: var(--primary-border);
160
+ }
161
+
162
+ .button-accent:active {
163
+ background-color: color-mix(in srgb, var(--primary-border) 90%, black);
164
+ }
165
+
166
+ /* Success Button */
167
+ .button-success {
168
+ background-color: var(--success);
169
+ color: var(--success-foreground);
170
+ border-color: transparent;
171
+ box-shadow: var(--shadow-xs);
172
+ }
173
+
174
+ .button-success:hover {
175
+ background-color: var(--success-hover);
176
+ }
177
+
178
+ /* Warning Button */
179
+ .button-warning {
180
+ background-color: var(--warning);
181
+ color: var(--warning-foreground);
182
+ border-color: transparent;
183
+ box-shadow: var(--shadow-xs);
184
+ }
185
+
186
+ .button-warning:hover {
187
+ background-color: var(--warning-hover);
188
+ }
189
+
190
+ /* Info Button */
191
+ .button-info {
192
+ background-color: var(--info);
193
+ color: var(--info-foreground);
194
+ border-color: transparent;
195
+ box-shadow: var(--shadow-xs);
196
+ }
197
+
198
+ .button-info:hover {
199
+ background-color: var(--info-hover);
200
+ }
201
+
202
+ /* Link Button */
203
+ .button-link {
204
+ background-color: transparent;
205
+ color: var(--primary);
206
+ border: none;
207
+ padding: 0;
208
+ height: auto;
209
+ box-shadow: none;
210
+ text-underline-offset: 4px;
211
+ }
212
+
213
+ .button-link:hover {
214
+ text-decoration: underline;
215
+ }
216
+
217
+ /* Sizes */
218
+ .button-sm {
219
+ height: 1.75rem;
220
+ padding: 0 0.625rem;
221
+ font-size: 0.6875rem;
222
+ border-radius: var(--radius-md, 0.375rem);
223
+ gap: 0.25rem;
224
+ }
225
+
226
+ .button-lg {
227
+ height: 2.5rem;
228
+ padding: 0 1rem;
229
+ font-size: 0.875rem;
230
+ border-radius: var(--radius-lg, 0.5rem);
231
+ gap: 0.5rem;
232
+ }
233
+
234
+ /* Segmented View Switcher Pattern (buttons.md) */
235
+ .segmented-switcher {
236
+ display: inline-flex;
237
+ align-items: center;
238
+ padding: 0.25rem;
239
+ border-radius: var(--radius-lg, 0.5rem);
240
+ border: 1px solid var(--border);
241
+ background-color: var(--card-nested);
242
+ gap: 0.25rem;
243
+ }
244
+
245
+ .segmented-tab {
246
+ padding: 0.375rem 0.75rem;
247
+ border-radius: var(--radius-md, 0.375rem);
248
+ font-weight: 600;
249
+ font-size: 0.75rem;
250
+ color: var(--neutral-foreground);
251
+ background: transparent;
252
+ border: none;
253
+ cursor: pointer;
254
+ transition: all 0.15s ease;
255
+ line-height: 1;
256
+ }
257
+
258
+ .segmented-tab:hover {
259
+ color: var(--foreground);
260
+ }
261
+
262
+ .segmented-tab.active {
263
+ background-color: var(--card);
264
+ color: var(--foreground);
265
+ box-shadow: var(--shadow-xs);
266
+ }
267
+
@@ -0,0 +1,129 @@
1
+ /* Root Card & Container (Level 1: rounded-xl, crisp 1px border, shadow-xs) */
2
+ .card {
3
+ border-radius: var(--radius-xl, 0.75rem);
4
+ border: 1px solid var(--border);
5
+ background-color: var(--card);
6
+ color: var(--foreground);
7
+ box-shadow: var(--shadow-xs);
8
+ display: flex;
9
+ flex-direction: column;
10
+ overflow: hidden;
11
+ }
12
+
13
+ .card-header {
14
+ display: flex;
15
+ flex-direction: column;
16
+ gap: 0.25rem;
17
+ padding: 1.25rem;
18
+ }
19
+
20
+ .card-title {
21
+ font-size: 0.875rem;
22
+ font-weight: 600;
23
+ line-height: 1.25;
24
+ letter-spacing: -0.02em;
25
+ color: var(--foreground);
26
+ }
27
+
28
+ .card-description {
29
+ font-size: 0.75rem;
30
+ color: var(--neutral-foreground);
31
+ font-weight: 500;
32
+ line-height: 1.4;
33
+ }
34
+
35
+ .card-content {
36
+ padding: 0 1.25rem 1.25rem;
37
+ flex-grow: 1;
38
+ }
39
+
40
+ .card-header + .card-content {
41
+ padding-top: 0;
42
+ }
43
+
44
+ .card-footer {
45
+ display: flex;
46
+ align-items: center;
47
+ padding: 1rem 1.25rem;
48
+ border-top: 1px solid var(--border);
49
+ background-color: var(--card-nested);
50
+ font-size: 0.75rem;
51
+ }
52
+
53
+ /* Level 2: Cluster Well (Nested inset region) */
54
+ .card-well,
55
+ .cluster-well {
56
+ background-color: var(--card-nested);
57
+ border: 1px solid var(--border);
58
+ border-radius: var(--radius-xl, 0.75rem);
59
+ padding: 1rem;
60
+ box-shadow: var(--shadow-xs);
61
+ }
62
+
63
+ /* Level 3: Nested Tile / Sub-Card */
64
+ .card-tile,
65
+ .card-sub {
66
+ background-color: var(--card);
67
+ border: 1px solid var(--border);
68
+ border-radius: var(--radius-lg, 0.5rem);
69
+ padding: 1rem;
70
+ box-shadow: var(--shadow-xs);
71
+ display: flex;
72
+ flex-direction: column;
73
+ justify-content: space-between;
74
+ }
75
+
76
+ /* Level 4: Icon Box */
77
+ .icon-box {
78
+ width: 2rem;
79
+ height: 2rem;
80
+ border-radius: var(--radius-lg, 0.5rem);
81
+ display: inline-flex;
82
+ align-items: center;
83
+ justify-content: center;
84
+ flex-shrink: 0;
85
+ background-color: var(--primary-tint);
86
+ color: var(--primary);
87
+ }
88
+
89
+ .icon-box-emerald {
90
+ background-color: var(--success-tint);
91
+ color: var(--success);
92
+ }
93
+
94
+ .icon-box-amber {
95
+ background-color: var(--warning-tint);
96
+ color: var(--warning);
97
+ }
98
+
99
+ .icon-box-rose {
100
+ background-color: var(--danger-tint);
101
+ color: var(--danger);
102
+ }
103
+
104
+ /* Metric & Telemetry Tile Typography */
105
+ .stat-value {
106
+ font-family: var(--font-mono);
107
+ font-size: 1.5rem;
108
+ font-weight: 700;
109
+ color: var(--foreground);
110
+ line-height: 1.2;
111
+ font-feature-settings: "tnum" 1;
112
+ }
113
+
114
+ .stat-change {
115
+ font-size: 0.75rem;
116
+ font-weight: 600;
117
+ display: inline-flex;
118
+ align-items: center;
119
+ gap: 0.25rem;
120
+ }
121
+
122
+ .stat-change-positive {
123
+ color: var(--success);
124
+ }
125
+
126
+ .stat-change-negative {
127
+ color: var(--danger);
128
+ }
129
+
@@ -0,0 +1,144 @@
1
+ /* Modal & Dialog Backdrop (Level 0 Backdrop: backdrop-blur-xs) */
2
+ .dialog-overlay {
3
+ position: fixed;
4
+ inset: 0;
5
+ z-index: 50;
6
+ background-color: rgb(15 23 42 / 50%);
7
+ backdrop-filter: blur(4px);
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: center;
11
+ padding: 1rem;
12
+ overflow-y: auto;
13
+ transition: opacity 0.15s ease-in-out;
14
+ }
15
+
16
+ /* Modal Window Container (Level 1: rounded-xl, crisp 1px border, shadow-lg) */
17
+ .dialog {
18
+ position: relative;
19
+ width: 100%;
20
+ max-width: 28rem;
21
+ border-radius: var(--radius-xl, 0.75rem);
22
+ border: 1px solid var(--border);
23
+ background-color: var(--card);
24
+ color: var(--foreground);
25
+ box-shadow: var(--shadow-lg);
26
+ overflow: hidden;
27
+ margin: auto;
28
+ display: flex;
29
+ flex-direction: column;
30
+ transition:
31
+ transform 0.15s ease-in-out,
32
+ opacity 0.15s ease-in-out;
33
+ }
34
+
35
+ /* Modal Sizing Matrix */
36
+ .dialog-sm {
37
+ max-width: 24rem;
38
+ }
39
+
40
+ .dialog-md {
41
+ max-width: 28rem;
42
+ }
43
+
44
+ .dialog-lg {
45
+ max-width: 36rem;
46
+ }
47
+
48
+ .dialog-xl {
49
+ max-width: 48rem;
50
+ }
51
+
52
+ /* 5-Region Modal Structure */
53
+ .dialog-header {
54
+ padding: 1rem 1.25rem;
55
+ border-bottom: 1px solid var(--border);
56
+ display: flex;
57
+ align-items: center;
58
+ justify-content: space-between;
59
+ gap: 0.5rem;
60
+ }
61
+
62
+ .dialog-title {
63
+ font-size: 0.875rem;
64
+ font-weight: 700;
65
+ color: var(--foreground);
66
+ line-height: 1.2;
67
+ margin: 0;
68
+ }
69
+
70
+ .dialog-description {
71
+ font-size: 0.6875rem;
72
+ color: var(--neutral-foreground);
73
+ font-weight: 500;
74
+ margin-top: 0.25rem;
75
+ }
76
+
77
+ .dialog-body,
78
+ .dialog-content {
79
+ padding: 1.25rem;
80
+ font-size: 0.75rem;
81
+ max-height: calc(100vh - 14rem);
82
+ overflow-y: auto;
83
+ flex: 1;
84
+ display: flex;
85
+ flex-direction: column;
86
+ gap: 1rem;
87
+ }
88
+
89
+ .dialog-footer {
90
+ padding: 1rem 1.25rem;
91
+ background-color: var(--card-nested);
92
+ border-top: 1px solid var(--border);
93
+ display: flex;
94
+ align-items: center;
95
+ justify-content: flex-end;
96
+ gap: 0.625rem;
97
+ }
98
+
99
+ /* Slide-Over Detail Drawer Pattern (modals-and-dialogs.md) */
100
+ .drawer {
101
+ position: fixed;
102
+ inset-block: 0;
103
+ right: 0;
104
+ z-index: 50;
105
+ width: 100%;
106
+ max-width: 32rem;
107
+ background-color: var(--card);
108
+ border-left: 1px solid var(--border);
109
+ box-shadow: var(--shadow-xl);
110
+ display: flex;
111
+ flex-direction: column;
112
+ height: 100vh;
113
+ }
114
+
115
+ .drawer-header {
116
+ padding: 1rem 1.25rem;
117
+ border-bottom: 1px solid var(--border);
118
+ display: flex;
119
+ align-items: center;
120
+ justify-content: space-between;
121
+ flex-shrink: 0;
122
+ }
123
+
124
+ .drawer-body {
125
+ flex: 1;
126
+ overflow-y: auto;
127
+ padding: 1.25rem;
128
+ font-size: 0.75rem;
129
+ display: flex;
130
+ flex-direction: column;
131
+ gap: 1rem;
132
+ }
133
+
134
+ .drawer-footer {
135
+ padding: 1rem 1.25rem;
136
+ border-top: 1px solid var(--border);
137
+ background-color: var(--card-nested);
138
+ display: flex;
139
+ align-items: center;
140
+ justify-content: flex-end;
141
+ gap: 0.625rem;
142
+ flex-shrink: 0;
143
+ }
144
+
@@ -0,0 +1,40 @@
1
+ .empty-state {
2
+ display: flex;
3
+ flex-direction: column;
4
+ align-items: center;
5
+ justify-content: center;
6
+ text-align: center;
7
+ padding: 3rem 1.5rem;
8
+ border: 1px dashed var(--border);
9
+ border-radius: var(--radius-xl, 0.75rem);
10
+ background-color: var(--card);
11
+ }
12
+
13
+ .empty-state-icon {
14
+ height: 2.5rem;
15
+ width: 2.5rem;
16
+ color: var(--neutral-foreground);
17
+ margin-bottom: 0.75rem;
18
+ opacity: 0.6;
19
+ }
20
+
21
+ .empty-state-title {
22
+ font-size: 0.875rem;
23
+ font-weight: 600;
24
+ color: var(--foreground);
25
+ margin-bottom: 0.25rem;
26
+ }
27
+
28
+ .empty-state-description {
29
+ font-size: 0.75rem;
30
+ color: var(--neutral-foreground);
31
+ max-width: 20rem;
32
+ margin-bottom: 1.25rem;
33
+ line-height: 1.5;
34
+ }
35
+
36
+ .empty-state-actions {
37
+ display: flex;
38
+ gap: 0.5rem;
39
+ }
40
+