@kupola/kupola 1.9.6 → 1.9.7

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,368 @@
1
+ /* ===== Dashboard Layout ===== */
2
+
3
+ html.ds-dashboard-page,
4
+ body.ds-dashboard-page {
5
+ height: 100vh;
6
+ overflow: hidden;
7
+ margin: 0;
8
+ padding: 0;
9
+ }
10
+
11
+ .ds-dashboard {
12
+ display: flex;
13
+ flex-direction: column;
14
+ height: 100%;
15
+ width: 100%;
16
+ overflow: hidden;
17
+ }
18
+
19
+ /* Header */
20
+ .ds-dashboard__header {
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: space-between;
24
+ height: var(--dashboard-header-height, 48px);
25
+ padding: 0 var(--spacer-12);
26
+ background: var(--bg-base-secondary);
27
+ border-bottom: 1px solid var(--border-neutral-l1);
28
+ flex-shrink: 0;
29
+ z-index: 100;
30
+ }
31
+
32
+ .ds-dashboard__header-left {
33
+ display: flex;
34
+ align-items: center;
35
+ gap: var(--spacer-12);
36
+ }
37
+
38
+ .ds-dashboard__logo {
39
+ display: flex;
40
+ align-items: center;
41
+ gap: var(--spacer-6);
42
+ font-weight: var(--font-weight-strong);
43
+ font-size: var(--heading-md-font-size);
44
+ color: var(--text-default);
45
+ }
46
+
47
+ .ds-dashboard__logo-icon {
48
+ width: 24px;
49
+ height: 24px;
50
+ background: var(--bg-brand);
51
+ border-radius: var(--radius-4);
52
+ }
53
+
54
+ .ds-dashboard__header-center {
55
+ display: flex;
56
+ align-items: center;
57
+ gap: var(--spacer-4);
58
+ }
59
+
60
+ .ds-dashboard__header-right {
61
+ display: flex;
62
+ align-items: center;
63
+ gap: var(--spacer-8);
64
+ }
65
+
66
+ /* Main Content Area */
67
+ .ds-dashboard__main {
68
+ display: flex;
69
+ flex: 1;
70
+ overflow: visible;
71
+ position: relative;
72
+ }
73
+
74
+ /* Sidebar */
75
+ .ds-dashboard__sidebar {
76
+ width: var(--dashboard-sidebar-width, 48px);
77
+ background: var(--bg-base-secondary);
78
+ border-right: 1px solid var(--border-neutral-l1);
79
+ display: flex;
80
+ flex-direction: column;
81
+ flex-shrink: 0;
82
+ padding: var(--spacer-8) 0;
83
+ position: relative;
84
+ z-index: 10;
85
+ overflow: visible;
86
+ }
87
+
88
+ .ds-dashboard__sidebar-nav {
89
+ display: flex;
90
+ flex-direction: column;
91
+ gap: var(--spacer-4);
92
+ padding: 0 var(--spacer-4);
93
+ }
94
+
95
+ .ds-dashboard__sidebar-item {
96
+ display: flex;
97
+ align-items: center;
98
+ justify-content: center;
99
+ width: 36px;
100
+ height: 36px;
101
+ margin: 0 auto;
102
+ border-radius: var(--radius-4);
103
+ color: var(--icon-secondary);
104
+ cursor: pointer;
105
+ transition: all 0.15s ease;
106
+ position: relative;
107
+ }
108
+
109
+ .ds-dashboard__sidebar-item:hover {
110
+ background: var(--bg-overlay-l1);
111
+ color: var(--icon-default);
112
+ }
113
+
114
+ .ds-dashboard__sidebar-item.is-active {
115
+ background: var(--bg-brand-popup);
116
+ color: var(--icon-brand);
117
+ }
118
+
119
+ .ds-dashboard__sidebar-item.is-active::before {
120
+ content: '';
121
+ position: absolute;
122
+ left: 0;
123
+ top: 50%;
124
+ transform: translateY(-50%);
125
+ width: 2px;
126
+ height: 16px;
127
+ background: var(--bg-brand);
128
+ border-radius: 0 var(--radius-2) var(--radius-2) 0;
129
+ }
130
+
131
+ .ds-dashboard__sidebar-item img {
132
+ width: 18px;
133
+ height: 18px;
134
+ opacity: 1;
135
+ filter: var(--icon-filter, none);
136
+ }
137
+
138
+ /* BUG-004 fix: sidebar tooltip via ::after + data-title */
139
+ .ds-dashboard__sidebar-item::after {
140
+ content: attr(data-title);
141
+ position: absolute;
142
+ left: calc(100% + 8px);
143
+ top: 50%;
144
+ transform: translateY(-50%);
145
+ padding: 4px 10px;
146
+ background: var(--bg-tooltip, var(--bg-base-secondary));
147
+ border: 1px solid var(--border-neutral-l2);
148
+ border-radius: var(--radius-4);
149
+ color: var(--text-default);
150
+ font-size: var(--body-xs-font-size, 11px);
151
+ white-space: nowrap;
152
+ pointer-events: none;
153
+ opacity: 0;
154
+ visibility: hidden;
155
+ transition: opacity 0.15s ease, visibility 0.15s ease;
156
+ z-index: 9999;
157
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
158
+ }
159
+
160
+ .ds-dashboard__sidebar-item:hover::after {
161
+ opacity: 1;
162
+ visibility: visible;
163
+ }
164
+
165
+ .ds-dashboard .icon {
166
+ opacity: 1;
167
+ filter: var(--icon-filter, none);
168
+ }
169
+
170
+ .ds-dashboard .theme-icon {
171
+ width: 16px;
172
+ height: 16px;
173
+ opacity: 1;
174
+ filter: var(--icon-filter, none);
175
+ }
176
+
177
+ .ds-dashboard__sidebar-divider {
178
+ height: 1px;
179
+ background: var(--border-neutral-l1);
180
+ margin: var(--spacer-8) var(--spacer-8);
181
+ }
182
+
183
+ .ds-dashboard__sidebar-bottom {
184
+ margin-top: auto;
185
+ display: flex;
186
+ flex-direction: column;
187
+ gap: var(--spacer-4);
188
+ padding: 0 var(--spacer-4);
189
+ }
190
+
191
+ /* Content Area */
192
+ .ds-dashboard__content {
193
+ flex: 1;
194
+ overflow-y: auto;
195
+ background: var(--bg-base-default);
196
+ padding: var(--spacer-16);
197
+ }
198
+
199
+ /* Status Bar */
200
+ .ds-dashboard__footer {
201
+ height: var(--dashboard-footer-height, 24px);
202
+ background: var(--bg-base-secondary);
203
+ border-top: 1px solid var(--border-neutral-l1);
204
+ display: flex;
205
+ align-items: center;
206
+ justify-content: space-between;
207
+ padding: 0 var(--spacer-12);
208
+ flex-shrink: 0;
209
+ font-size: var(--body-xs-font-size);
210
+ color: var(--text-tertiary);
211
+ }
212
+
213
+ .ds-dashboard__footer-left {
214
+ display: flex;
215
+ align-items: center;
216
+ gap: var(--spacer-12);
217
+ }
218
+
219
+ .ds-dashboard__footer-right {
220
+ display: flex;
221
+ align-items: center;
222
+ gap: var(--spacer-12);
223
+ }
224
+
225
+ .ds-dashboard__status-item {
226
+ display: flex;
227
+ align-items: center;
228
+ gap: var(--spacer-4);
229
+ }
230
+
231
+ .ds-dashboard__status-dot {
232
+ width: 6px;
233
+ height: 6px;
234
+ border-radius: 50%;
235
+ background: var(--status-success-default);
236
+ }
237
+
238
+ .ds-dashboard__status-dot.is-warning {
239
+ background: var(--status-warning-default);
240
+ }
241
+
242
+ .ds-dashboard__status-dot.is-error {
243
+ background: var(--status-error-default);
244
+ }
245
+
246
+ /* Scrollbar styling */
247
+ .ds-dashboard__content::-webkit-scrollbar {
248
+ width: 8px;
249
+ height: 8px;
250
+ }
251
+
252
+ .ds-dashboard__content::-webkit-scrollbar-track {
253
+ background: transparent;
254
+ }
255
+
256
+ .ds-dashboard__content::-webkit-scrollbar-thumb {
257
+ background: var(--border-neutral-l2);
258
+ border-radius: var(--radius-4);
259
+ }
260
+
261
+ .ds-dashboard__content::-webkit-scrollbar-thumb:hover {
262
+ background: var(--border-neutral-l3);
263
+ }
264
+
265
+ /* Responsive adjustments for tablet */
266
+ @media (max-width: 1024px) and (min-width: 769px) {
267
+ .ds-dashboard__sidebar {
268
+ width: 44px;
269
+ }
270
+
271
+ .ds-dashboard__sidebar-item {
272
+ width: 34px;
273
+ height: 34px;
274
+ }
275
+
276
+ .ds-dashboard__sidebar-item img {
277
+ width: 16px;
278
+ height: 16px;
279
+ }
280
+
281
+ .ds-dashboard__header-center {
282
+ display: none;
283
+ }
284
+
285
+ .ds-dashboard__content {
286
+ padding: var(--spacer-12);
287
+ }
288
+ }
289
+
290
+ /* Responsive adjustments for phone */
291
+ @media (max-width: 768px) {
292
+ .ds-dashboard__header-left .logo-text {
293
+ display: none;
294
+ }
295
+
296
+ .ds-dashboard__header-center {
297
+ display: none;
298
+ }
299
+
300
+ .ds-dashboard__content {
301
+ padding: var(--spacer-8);
302
+ padding-bottom: calc(var(--spacer-8) + 56px + var(--dashboard-footer-height, 24px));
303
+ }
304
+
305
+ .ds-dashboard__sidebar {
306
+ position: fixed;
307
+ bottom: var(--dashboard-footer-height, 24px);
308
+ left: 0;
309
+ right: 0;
310
+ width: 100%;
311
+ height: 56px;
312
+ flex-direction: row;
313
+ justify-content: space-around;
314
+ align-items: center;
315
+ padding: 0;
316
+ border-right: none;
317
+ border-top: 1px solid var(--border-neutral-l1);
318
+ z-index: 100;
319
+ background: var(--bg-base-secondary);
320
+ backdrop-filter: blur(10px);
321
+ }
322
+
323
+ .ds-dashboard__sidebar-nav {
324
+ flex-direction: row;
325
+ width: 100%;
326
+ justify-content: space-around;
327
+ padding: 0;
328
+ }
329
+
330
+ .ds-dashboard__sidebar-item {
331
+ width: 48px;
332
+ height: 48px;
333
+ margin: 0;
334
+ flex-direction: column;
335
+ gap: 2px;
336
+ }
337
+
338
+ .ds-dashboard__sidebar-item img {
339
+ width: 20px;
340
+ height: 20px;
341
+ }
342
+
343
+ .ds-dashboard__sidebar-item::before {
344
+ display: none;
345
+ }
346
+
347
+ .ds-dashboard__sidebar-item span {
348
+ display: block;
349
+ font-size: 10px;
350
+ color: inherit;
351
+ }
352
+
353
+ .ds-dashboard__sidebar-divider {
354
+ display: none;
355
+ }
356
+
357
+ .ds-dashboard__sidebar-bottom {
358
+ display: none;
359
+ }
360
+
361
+ .ds-dashboard__body {
362
+ flex-direction: column;
363
+ }
364
+
365
+ .ds-dashboard__footer {
366
+ padding-bottom: calc(env(safe-area-inset-bottom) + 4px);
367
+ }
368
+ }
package/css/kupola.css CHANGED
@@ -3,6 +3,7 @@
3
3
  @import url('theme-light.css');
4
4
  @import url('brand-themes.css');
5
5
  @import url('scaffold.css');
6
+ @import url('dashboard.css');
6
7
  @import url('components.css');
7
8
  @import url('components-ext.css');
8
9
  @import url('states.css');