@keepkit/ui 0.14.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,8 @@
1
1
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="collection"] {
2
2
  display: grid;
3
- gap: var(--keep-card-gap);
3
+ container-name: keepkit-collection;
4
+ container-type: inline-size;
5
+ gap: calc(var(--keep-card-gap) * 1.5);
4
6
  color: var(--keep-foreground);
5
7
  }
6
8
 
@@ -9,10 +11,24 @@
9
11
  flex-wrap: wrap;
10
12
  gap: var(--keep-card-gap);
11
13
  align-items: center;
14
+ border: 1px solid var(--keep-border);
15
+ border-radius: calc(var(--keep-radius) + 0.25rem);
16
+ padding: var(--keep-card-padding);
17
+ background: color-mix(in srgb, var(--keep-muted) 64%, var(--keep-card));
18
+ box-shadow: 0 1px 2px color-mix(in srgb, var(--keep-foreground) 4%, transparent);
19
+ }
20
+
21
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="collection"] > :first-child > :is(input, select) {
22
+ flex: 1 1 12rem;
12
23
  }
13
24
 
14
25
  :where(.keep-theme, [data-keep-theme])
15
- :is([data-keepkit="layout"], [data-keepkit="list"] > ul, [data-keepkit="list"] > [data-layout]) {
26
+ :is(
27
+ [data-keepkit="layout"],
28
+ [data-keepkit="list"] > ul,
29
+ [data-keepkit="list"] > [data-layout],
30
+ [data-keepkit="skeleton-list"]
31
+ ) {
16
32
  display: grid;
17
33
  grid-template-columns: repeat(var(--keep-list-columns), minmax(0, 1fr));
18
34
  gap: var(--keep-list-gap);
@@ -24,6 +40,11 @@
24
40
  list-style: none;
25
41
  }
26
42
 
43
+ :where(.keep-theme, [data-keep-theme]) :is([data-keepkit="layout"], [data-keepkit="list"]) {
44
+ container-name: keepkit-layout;
45
+ container-type: inline-size;
46
+ }
47
+
27
48
  :where(.keep-theme, [data-keep-theme])
28
49
  :is(
29
50
  [data-keepkit="layout"][data-layout="grid"],
@@ -43,6 +64,27 @@
43
64
  --keep-list-gap: 0.5rem;
44
65
  }
45
66
 
67
+ :where(.keep-theme, [data-keep-theme])
68
+ :is(
69
+ [data-keepkit="layout"][data-layout="auto"],
70
+ [data-keepkit="list"] > ul[data-layout="auto"],
71
+ [data-keepkit="list"] > [data-layout="auto"]
72
+ ) {
73
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--keep-auto-column-min, 16rem)), 1fr));
74
+ }
75
+
76
+ @container keepkit-layout (max-width: 31.999rem) {
77
+ :where([data-layout="auto"]) {
78
+ --keep-auto-column-min: 100%;
79
+ }
80
+ }
81
+
82
+ @container keepkit-layout (min-width: 48rem) {
83
+ :where([data-layout="auto"]) {
84
+ --keep-auto-column-min: 15rem;
85
+ }
86
+ }
87
+
46
88
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"] {
47
89
  display: grid;
48
90
  position: relative;
@@ -53,14 +95,70 @@
53
95
  padding: var(--keep-card-padding);
54
96
  background: var(--keep-card);
55
97
  color: var(--keep-card-foreground);
98
+ box-shadow: var(--keep-shadow);
56
99
  transition:
57
100
  opacity 160ms ease,
58
101
  box-shadow 160ms ease,
59
102
  transform 160ms ease;
60
103
  }
61
104
 
105
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"]:has(> [data-keep-card-part="media"]) {
106
+ grid-template-columns: var(--keep-thumbnail-size) minmax(0, 1fr);
107
+ }
108
+
109
+ :where(.keep-theme, [data-keep-theme]) [data-keep-card-part="media"] {
110
+ grid-row: 1 / span 2;
111
+ width: var(--keep-thumbnail-size);
112
+ height: var(--keep-thumbnail-size);
113
+ overflow: hidden;
114
+ border-radius: calc(var(--keep-radius) - 2px);
115
+ background: var(--keep-muted);
116
+ }
117
+
118
+ :where(.keep-theme, [data-keep-theme]) [data-keep-card-part="media"] > :is(img, [data-keep-card-fallback]) {
119
+ display: grid;
120
+ place-items: center;
121
+ width: 100%;
122
+ height: 100%;
123
+ object-fit: cover;
124
+ }
125
+
126
+ :where(.keep-theme, [data-keep-theme]) [data-keep-card-fallback] {
127
+ overflow: hidden;
128
+ color: var(--keep-muted-foreground);
129
+ font-weight: 700;
130
+ text-overflow: ellipsis;
131
+ white-space: nowrap;
132
+ }
133
+
134
+ :where(.keep-theme, [data-keep-theme]) [data-keep-card-part="content"],
135
+ :where(.keep-theme, [data-keep-theme]) [data-keep-card-part="actions"] {
136
+ display: grid;
137
+ gap: var(--keep-card-gap);
138
+ min-width: 0;
139
+ }
140
+
141
+ :where(.keep-theme, [data-keep-theme])
142
+ [data-keepkit="card"]:has(> [data-keep-card-part="media"])
143
+ > :is([data-keep-card-part="content"], [data-keep-card-part="actions"]) {
144
+ grid-column: 2;
145
+ }
146
+
147
+ :where(.keep-theme, [data-keep-theme]) [data-keep-card-part="actions"] {
148
+ align-items: center;
149
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 8rem), max-content));
150
+ }
151
+
62
152
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"]:hover {
63
- box-shadow: 0 2px 12px color-mix(in srgb, var(--keep-foreground) 12%, transparent);
153
+ border-color: color-mix(in srgb, var(--keep-primary) 32%, var(--keep-border));
154
+ box-shadow:
155
+ 0 2px 4px color-mix(in srgb, var(--keep-foreground) 8%, transparent),
156
+ 0 12px 28px color-mix(in srgb, var(--keep-foreground) 9%, transparent);
157
+ transform: translateY(-1px);
158
+ }
159
+
160
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"]:has(> img) {
161
+ grid-template-columns: var(--keep-thumbnail-size) minmax(0, 1fr);
64
162
  }
65
163
 
66
164
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"] img {
@@ -68,24 +166,58 @@
68
166
  height: var(--keep-thumbnail-size);
69
167
  border-radius: calc(var(--keep-radius) - 2px);
70
168
  object-fit: cover;
169
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--keep-foreground) 8%, transparent);
170
+ }
171
+
172
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"]:has(> img) > :not(img) {
173
+ grid-column: 2;
71
174
  }
72
175
 
73
- :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"] h3 {
176
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"] :is(h2, h3, h4, h5, h6)[data-keep-card-part="title"] {
74
177
  margin: 0;
178
+ padding-inline-end: calc(var(--keep-button-size) + var(--keep-card-gap));
75
179
  font-size: var(--keep-title-size);
180
+ line-height: 1.35;
76
181
  }
77
182
 
78
- :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"] > [data-keepkit="button"] {
183
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"] [data-keep-card-part="title"] a {
184
+ color: inherit;
185
+ text-decoration-color: color-mix(in srgb, currentColor 25%, transparent);
186
+ text-underline-offset: 0.2em;
187
+ }
188
+
189
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"] [data-keep-card-part="title"] a:hover {
190
+ color: var(--keep-primary);
191
+ text-decoration-color: currentColor;
192
+ }
193
+
194
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"] [data-keep-card-part="actions"] > [data-keepkit="button"] {
79
195
  position: absolute;
80
196
  top: var(--keep-card-gap);
81
197
  right: var(--keep-card-gap);
82
198
  }
83
199
 
84
- :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"] > [data-card-meta] {
200
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"] [data-card-meta] {
85
201
  color: var(--keep-muted-foreground);
86
202
  font-size: 0.8125rem;
87
203
  }
88
204
 
205
+ :where(.keep-theme, [data-keep-theme])
206
+ [data-keepkit="card"]
207
+ [data-keep-card-part="actions"]
208
+ > [data-keep-action="remove-item"] {
209
+ justify-self: start;
210
+ border-color: color-mix(in srgb, var(--keep-destructive) 28%, var(--keep-border));
211
+ background: transparent;
212
+ color: var(--keep-destructive);
213
+ }
214
+
215
+ :where(.keep-theme, [data-keep-theme])
216
+ [data-keep-card-part="actions"]:has(> [data-keepkit="button"])
217
+ > [data-keep-action="remove-item"] {
218
+ display: none;
219
+ }
220
+
89
221
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"][data-item-status="expired"],
90
222
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"][data-item-status="removed"],
91
223
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"][data-item-status="restricted"] {
@@ -125,6 +257,281 @@
125
257
  padding: 0.125rem 0.5rem;
126
258
  background: var(--keep-muted);
127
259
  color: var(--keep-muted-foreground);
260
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--keep-border) 70%, transparent);
261
+ }
262
+
263
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="loading-label"] {
264
+ position: absolute;
265
+ width: 1px;
266
+ height: 1px;
267
+ overflow: hidden;
268
+ clip: rect(0 0 0 0);
269
+ clip-path: inset(50%);
270
+ white-space: nowrap;
271
+ }
272
+
273
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card-skeleton"] {
274
+ display: grid;
275
+ grid-template-columns: var(--keep-skeleton-media-size, var(--keep-thumbnail-size)) minmax(0, 1fr);
276
+ grid-template-rows: repeat(3, min-content);
277
+ gap: var(--keep-card-gap);
278
+ min-height: calc(var(--keep-thumbnail-size) + 2 * var(--keep-card-padding));
279
+ border: 1px solid var(--keep-border);
280
+ border-radius: var(--keep-radius);
281
+ padding: var(--keep-card-padding);
282
+ background: var(--keep-card);
283
+ }
284
+
285
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card-skeleton"] [data-skeleton-part] {
286
+ height: 0.75rem;
287
+ border-radius: 999px;
288
+ background: color-mix(in srgb, var(--keep-muted) 78%, var(--keep-border));
289
+ animation: keepkit-skeleton-pulse 1.4s ease-in-out infinite;
290
+ }
291
+
292
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card-skeleton"] [data-skeleton-part="media"] {
293
+ grid-row: 1 / span 3;
294
+ width: var(--keep-skeleton-media-size, var(--keep-thumbnail-size));
295
+ height: var(--keep-skeleton-media-size, var(--keep-thumbnail-size));
296
+ border-radius: calc(var(--keep-radius) - 2px);
297
+ }
298
+
299
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card-skeleton"] [data-skeleton-part="title"] {
300
+ width: var(--keep-skeleton-title-width, 78%);
301
+ height: 1rem;
302
+ }
303
+
304
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card-skeleton"] [data-skeleton-part="meta"] {
305
+ width: 48%;
306
+ }
307
+
308
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card-skeleton"] [data-skeleton-part="tag"] {
309
+ display: inline-block;
310
+ grid-row: 3;
311
+ width: var(--keep-skeleton-tag-width, 4rem);
312
+ }
313
+
314
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card-skeleton"][data-layout="grid"],
315
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card-skeleton"][data-layout="auto"] {
316
+ --keep-skeleton-media-size: 100%;
317
+ --keep-skeleton-title-width: 88%;
318
+ grid-template-columns: 1fr 1fr;
319
+ }
320
+
321
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card-skeleton"][data-layout="grid"] [data-skeleton-part="media"],
322
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card-skeleton"][data-layout="auto"] [data-skeleton-part="media"] {
323
+ grid-column: 1 / -1;
324
+ grid-row: 1;
325
+ height: auto;
326
+ aspect-ratio: 16 / 9;
327
+ }
328
+
329
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card-skeleton"][data-layout="compact"] {
330
+ --keep-skeleton-media-size: 2.75rem;
331
+ --keep-skeleton-title-width: 64%;
332
+ --keep-skeleton-tag-width: 3rem;
333
+ }
334
+
335
+ @keyframes keepkit-skeleton-pulse {
336
+ 0%,
337
+ 100% {
338
+ opacity: 0.55;
339
+ }
340
+ 50% {
341
+ opacity: 1;
342
+ }
343
+ }
344
+
345
+ @media (prefers-reduced-motion: reduce) {
346
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card-skeleton"] [data-skeleton-part] {
347
+ animation: none;
348
+ background: var(--keep-muted);
349
+ }
350
+ }
351
+
352
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="pagination"] {
353
+ display: flex;
354
+ flex-wrap: wrap;
355
+ justify-content: center;
356
+ gap: var(--keep-control-gap);
357
+ }
358
+
359
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="pagination"] button {
360
+ min-width: var(--keep-button-size);
361
+ padding-inline: 0.75rem;
362
+ background: var(--keep-card);
363
+ }
364
+
365
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="pagination"] button[aria-current="page"] {
366
+ border-color: var(--keep-primary);
367
+ background: var(--keep-primary);
368
+ color: var(--keep-primary-foreground);
369
+ box-shadow: 0 2px 8px color-mix(in srgb, var(--keep-primary) 22%, transparent);
370
+ }
371
+
372
+ :where(.keep-theme, [data-keep-theme]) :is([data-keepkit="tag-filter"], [data-keepkit="bulk-actions"]) fieldset {
373
+ display: flex;
374
+ flex-wrap: wrap;
375
+ gap: var(--keep-control-gap);
376
+ min-width: 0;
377
+ margin: 0;
378
+ border: 0;
379
+ padding: 0;
380
+ }
381
+
382
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="tag-filter"] legend {
383
+ width: 100%;
384
+ margin-block-end: 0.25rem;
385
+ color: var(--keep-muted-foreground);
386
+ font-size: var(--keep-tag-size);
387
+ font-weight: 650;
388
+ }
389
+
390
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="tag-filter"] button {
391
+ min-height: 2.25rem;
392
+ border-radius: 999px;
393
+ padding: 0.375rem 0.75rem;
394
+ background: var(--keep-card);
395
+ font-size: var(--keep-tag-size);
396
+ }
397
+
398
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="tag-filter"] button[aria-pressed="true"] {
399
+ border-color: color-mix(in srgb, var(--keep-primary) 55%, var(--keep-border));
400
+ background: color-mix(in srgb, var(--keep-primary) 11%, var(--keep-card));
401
+ color: var(--keep-primary);
402
+ }
403
+
404
+ :where(.keep-theme, [data-keep-theme])
405
+ :is([data-keepkit="note-editor"], [data-keepkit="tag-editor"], [data-keepkit="bulk-actions"]) {
406
+ display: grid;
407
+ gap: var(--keep-card-gap);
408
+ border: 1px solid var(--keep-border);
409
+ border-radius: var(--keep-radius);
410
+ padding: var(--keep-card-padding);
411
+ background: var(--keep-card);
412
+ box-shadow: 0 1px 3px color-mix(in srgb, var(--keep-foreground) 5%, transparent);
413
+ }
414
+
415
+ :where(.keep-theme, [data-keep-theme])
416
+ :is([data-keepkit="note-editor"], [data-keepkit="tag-editor"], [data-keepkit="bulk-actions"])
417
+ label {
418
+ display: grid;
419
+ gap: 0.375rem;
420
+ color: var(--keep-muted-foreground);
421
+ font-size: var(--keep-tag-size);
422
+ font-weight: 600;
423
+ }
424
+
425
+ :where(.keep-theme, [data-keep-theme])
426
+ :is([data-keepkit="note-editor"], [data-keepkit="tag-editor"], [data-keepkit="bulk-actions"])
427
+ :is(input:not([type="checkbox"]), select, textarea) {
428
+ width: 100%;
429
+ }
430
+
431
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="note-editor"] textarea {
432
+ min-height: 6rem;
433
+ resize: vertical;
434
+ }
435
+
436
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="tag-editor"] ul {
437
+ display: flex;
438
+ flex-wrap: wrap;
439
+ gap: var(--keep-control-gap);
440
+ margin: 0;
441
+ padding: 0;
442
+ list-style: none;
443
+ }
444
+
445
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="tag-editor"][data-state] ul li {
446
+ display: inline-flex;
447
+ align-items: center;
448
+ gap: 0.25rem;
449
+ border-radius: 999px;
450
+ padding-inline-start: 0.625rem;
451
+ background: var(--keep-muted);
452
+ color: var(--keep-muted-foreground);
453
+ font-size: var(--keep-tag-size);
454
+ }
455
+
456
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="tag-editor"] [data-keep-action="remove-tag"] {
457
+ min-width: 2rem;
458
+ min-height: 2rem;
459
+ border: 0;
460
+ border-radius: 999px;
461
+ padding: 0.45rem;
462
+ background: transparent;
463
+ font-size: 0;
464
+ }
465
+
466
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="tag-editor"] [data-keep-action="remove-tag"]::before {
467
+ width: 0.875rem;
468
+ height: 0.875rem;
469
+ }
470
+
471
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="bulk-actions"] {
472
+ background: color-mix(in srgb, var(--keep-muted) 42%, var(--keep-card));
473
+ }
474
+
475
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="bulk-actions"] fieldset > span {
476
+ display: inline-flex;
477
+ align-items: center;
478
+ gap: 0.375rem;
479
+ border: 1px solid var(--keep-border);
480
+ border-radius: var(--keep-radius);
481
+ padding: 0.375rem 0.625rem;
482
+ background: var(--keep-card);
483
+ }
484
+
485
+ :where(.keep-theme, [data-keep-theme]) :is([data-keepkit="item-checkbox"], [data-keep-action="select-all"]) {
486
+ width: 1rem;
487
+ min-width: 1rem;
488
+ height: 1rem;
489
+ min-height: 1rem;
490
+ margin: 0;
491
+ padding: 0;
492
+ accent-color: var(--keep-primary);
493
+ box-shadow: none;
494
+ }
495
+
496
+ :where(.keep-theme, [data-keep-theme])
497
+ :is([data-keepkit="empty-state"], [data-keepkit="status"]):not([data-state="idle"]) {
498
+ display: grid;
499
+ place-items: center;
500
+ gap: var(--keep-control-gap);
501
+ min-height: 8rem;
502
+ border: 1px dashed var(--keep-border);
503
+ border-radius: var(--keep-radius);
504
+ padding: calc(var(--keep-card-padding) * 1.5);
505
+ background: color-mix(in srgb, var(--keep-muted) 42%, var(--keep-card));
506
+ color: var(--keep-muted-foreground);
507
+ text-align: center;
508
+ }
509
+
510
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="empty-state"] :is(h2, p) {
511
+ margin: 0;
512
+ }
513
+
514
+ :where(.keep-theme, [data-keep-theme])
515
+ :is([data-keep-action="delete-selected"], [data-keep-action="remove-item"], [data-keep-action="prune-stale"]) {
516
+ border-color: color-mix(in srgb, var(--keep-destructive) 30%, var(--keep-border));
517
+ color: var(--keep-destructive);
518
+ }
519
+
520
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="list"] > ul[data-layout="grid"] [data-keepkit="card"]:has(> img) {
521
+ grid-template-columns: 1fr;
522
+ }
523
+
524
+ :where(.keep-theme, [data-keep-theme])
525
+ [data-keepkit="list"]
526
+ > ul[data-layout="grid"]
527
+ [data-keepkit="card"]:has(> img)
528
+ > * {
529
+ grid-column: 1;
530
+ }
531
+
532
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="list"] > ul[data-layout="grid"] [data-keepkit="card"] > img {
533
+ width: 100%;
534
+ height: 10rem;
128
535
  }
129
536
 
130
537
  @media (max-width: 48rem) {
@@ -157,4 +564,11 @@
157
564
  ) {
158
565
  --keep-list-columns: var(--keep-mobile-columns);
159
566
  }
567
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="collection"] > :first-child {
568
+ align-items: stretch;
569
+ flex-direction: column;
570
+ }
571
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="collection"] > :first-child > :is(input, select) {
572
+ width: 100%;
573
+ }
160
574
  }
@@ -9,10 +9,15 @@
9
9
  padding: var(--keep-card-padding);
10
10
  background: var(--keep-card);
11
11
  color: var(--keep-card-foreground);
12
+ box-shadow: var(--keep-shadow);
12
13
  }
13
14
 
14
15
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="status-badge"] {
16
+ --keep-status-icon: var(--keep-icon-warning);
15
17
  display: inline-flex;
18
+ align-items: center;
19
+ gap: 0.25rem;
20
+ border: 1px solid color-mix(in srgb, var(--keep-border) 72%, transparent);
16
21
  border-radius: 999px;
17
22
  padding: 0.125rem 0.5rem;
18
23
  background: var(--keep-muted);
@@ -20,8 +25,22 @@
20
25
  font-weight: 600;
21
26
  }
22
27
 
28
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="status-badge"]::before,
29
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-status"]::before,
30
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-recovery"]::before {
31
+ content: "";
32
+ display: inline-block;
33
+ flex: 0 0 auto;
34
+ width: var(--keep-icon-size);
35
+ height: var(--keep-icon-size);
36
+ background: currentColor;
37
+ mask: var(--keep-status-icon) center / contain no-repeat;
38
+ -webkit-mask: var(--keep-status-icon) center / contain no-repeat;
39
+ }
40
+
23
41
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="status-badge"][data-status="available"] {
24
- color: var(--keep-primary);
42
+ --keep-status-icon: var(--keep-icon-check);
43
+ color: var(--keep-success);
25
44
  }
26
45
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="status-badge"][data-status="expired"],
27
46
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="status-badge"][data-status="removed"],
@@ -29,23 +48,42 @@
29
48
  border-color: var(--keep-destructive);
30
49
  color: var(--keep-destructive);
31
50
  }
32
- :where(.keep-theme, [data-keep-theme]) [data-keepkit="status-badge"][data-item-status="expired"]::before {
33
- content: "⚠";
34
- margin-inline-end: 0.25rem;
35
- }
36
51
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="status-badge"][data-item-status="expired"],
37
52
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="status-badge"][data-item-status="removed"],
38
53
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="status-badge"][data-item-status="restricted"] {
39
54
  border-color: var(--keep-destructive);
40
55
  color: var(--keep-destructive);
56
+ --keep-status-icon: var(--keep-icon-warning);
41
57
  }
42
58
 
43
59
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="stale-notice"],
44
60
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-status"] {
45
- display: grid;
61
+ display: flex;
62
+ flex-wrap: wrap;
63
+ align-items: center;
46
64
  gap: var(--keep-card-gap);
47
65
  }
48
66
 
67
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="stale-notice"] > p,
68
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-status"] > p {
69
+ flex: 1 1 16rem;
70
+ margin: 0;
71
+ }
72
+
73
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="stale-notice"] > div {
74
+ display: flex;
75
+ flex-wrap: wrap;
76
+ gap: var(--keep-control-gap);
77
+ }
78
+
79
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-status"] {
80
+ --keep-status-icon: var(--keep-icon-check);
81
+ }
82
+
83
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-recovery"] {
84
+ --keep-status-icon: var(--keep-icon-warning);
85
+ }
86
+
49
87
  @keyframes keepkit-sync-spin {
50
88
  to {
51
89
  transform: rotate(360deg);
@@ -53,19 +91,37 @@
53
91
  }
54
92
 
55
93
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-status"][data-state="syncing"]::before {
56
- content: "↻";
57
- display: inline-block;
58
- width: 1.25rem;
94
+ --keep-status-icon: var(--keep-icon-refresh);
59
95
  animation: keepkit-sync-spin 900ms linear infinite;
60
96
  }
61
97
 
62
98
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-status"][data-state="error"]::before,
63
99
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-recovery"][data-state="error"]::before {
64
- content: "!";
65
- font-weight: 800;
100
+ --keep-status-icon: var(--keep-icon-warning);
101
+ }
102
+
103
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-status"][data-state="pending"]::before {
104
+ --keep-status-icon: var(--keep-icon-refresh);
105
+ }
106
+
107
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-status"][data-state="pending"] {
108
+ border-color: color-mix(in srgb, var(--keep-warning) 45%, var(--keep-border));
109
+ color: var(--keep-warning);
110
+ background: color-mix(in srgb, var(--keep-warning) 6%, var(--keep-card));
111
+ }
112
+
113
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-status"][data-state="conflict"]::before {
114
+ --keep-status-icon: var(--keep-icon-warning);
66
115
  }
67
116
 
68
117
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="undo"] {
118
+ display: flex;
119
+ flex-wrap: wrap;
120
+ align-items: center;
121
+ justify-content: space-between;
122
+ gap: var(--keep-control-gap);
123
+ border-color: color-mix(in srgb, var(--keep-primary) 35%, var(--keep-border));
124
+ background: color-mix(in srgb, var(--keep-primary) 7%, var(--keep-card));
69
125
  animation: keepkit-undo-in 160ms ease-out;
70
126
  }
71
127
 
@@ -85,11 +141,13 @@
85
141
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-recovery"][data-state="error"] {
86
142
  border-color: var(--keep-destructive);
87
143
  color: var(--keep-destructive);
144
+ background: color-mix(in srgb, var(--keep-destructive) 6%, var(--keep-card));
88
145
  }
89
146
 
90
147
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-recovery"] {
91
148
  max-width: 40rem;
92
149
  margin: 1rem auto;
150
+ border-color: color-mix(in srgb, var(--keep-destructive) 42%, var(--keep-border));
93
151
  }
94
152
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-recovery"] header,
95
153
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-recovery"] article,
@@ -127,6 +185,40 @@
127
185
  grid-template-columns: 1fr auto;
128
186
  align-items: start;
129
187
  }
188
+
189
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-recovery"] header h2,
190
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-recovery"] article h3,
191
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="sync-recovery"] article h4,
192
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="backup"] p {
193
+ margin: 0;
194
+ }
195
+
196
+ :where(.keep-theme, [data-keep-theme]) [data-keep-action="close-dialog"] {
197
+ min-width: var(--keep-button-size);
198
+ padding: 0.5rem;
199
+ font-size: 0;
200
+ }
201
+
202
+ :where(.keep-theme, [data-keep-theme]) [data-keep-action="close-dialog"]::before {
203
+ width: calc(var(--keep-icon-size) * 1.125);
204
+ height: calc(var(--keep-icon-size) * 1.125);
205
+ }
206
+
207
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="backup"] {
208
+ display: flex;
209
+ flex-wrap: wrap;
210
+ align-items: end;
211
+ gap: var(--keep-control-gap);
212
+ }
213
+
214
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="backup"] label {
215
+ display: grid;
216
+ flex: 1 1 10rem;
217
+ gap: 0.375rem;
218
+ color: var(--keep-muted-foreground);
219
+ font-size: var(--keep-tag-size);
220
+ font-weight: 600;
221
+ }
130
222
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="backup"] input[type="file"] {
131
223
  position: absolute;
132
224
  width: 1px;
package/dist/tailwind.css CHANGED
@@ -15,6 +15,8 @@
15
15
  --color-primary-foreground: var(--keep-primary-foreground);
16
16
  --color-destructive: var(--keep-destructive);
17
17
  --color-destructive-foreground: var(--keep-destructive-foreground);
18
+ --color-success: var(--keep-success);
19
+ --color-warning: var(--keep-warning);
18
20
  --color-ring: var(--keep-ring);
19
21
  --radius-sm: calc(var(--keep-radius) - 4px);
20
22
  --radius-md: calc(var(--keep-radius) - 2px);