@domainkit/react 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/styles.css DELETED
@@ -1,1875 +0,0 @@
1
- /**
2
- * Every rule ships inside the `domainkit` cascade layer, so a host's own stylesheet wins
3
- * without needing to out-specify a part selector. Nothing here relies on beating host CSS;
4
- * a host that wants the package to win puts its own rules in a layer ordered below this one.
5
- */
6
- @layer domainkit {
7
- :where(
8
- [data-domainkit-root],
9
- [data-domainkit-part="copy-value"]:not([data-domainkit-root] *),
10
- [data-domainkit-part="record-card"]:not([data-domainkit-root] *),
11
- [data-domainkit-part="record-status"]:not([data-domainkit-root] *),
12
- [data-domainkit-part="records-panel"]:not([data-domainkit-root] *),
13
- [data-domainkit-part="zone-file"]:not([data-domainkit-root] *)
14
- ) {
15
- --domainkit-accent: #0070f3;
16
- --domainkit-accent-contrast: #ffffff;
17
- --domainkit-backdrop: rgb(15 23 42 / 0.45);
18
- --domainkit-background: #ffffff;
19
- --domainkit-border: #d4d4d8;
20
- --domainkit-danger: #dc2626;
21
- --domainkit-danger-contrast: #ffffff;
22
- --domainkit-fill: #f4f4f5;
23
- --domainkit-font-family: ui-sans-serif, system-ui, sans-serif;
24
- --domainkit-muted: #52525b;
25
- --domainkit-radius: 0.75rem;
26
- --domainkit-shadow: 0 16px 40px rgb(15 23 42 / 0.12);
27
- --domainkit-success: #059669;
28
- --domainkit-text: #18181b;
29
- --domainkit-warning: #b45309;
30
- --domainkit-control-radius: calc(var(--domainkit-radius) * 0.5);
31
- /*
32
- * The quiet controls in a dialog — a docs link, a disclosure trigger, a secondary action, the
33
- * way back, the provider menu — share one rhythm: what sits above them, what sits below, and
34
- * the room their hover and focus states need around the text.
35
- */
36
- --domainkit-quiet-lead: 0.5rem;
37
- --domainkit-quiet-trail: 0.75rem;
38
- --domainkit-quiet-inset: 0.5rem;
39
- --domainkit-quiet-pad: 0.25rem;
40
- /* The inner room a panel gives its contents: the dialog's form, and the two cards. */
41
- --domainkit-panel-pad: 0.75rem;
42
- /* A dialog that asks one question, and the width a dialog listing records takes instead. */
43
- --domainkit-dialog-width: 24rem;
44
- --domainkit-dialog-wide: 36rem;
45
- /* The switch track, the thumb inside it, and the room it keeps at each end of the track. */
46
- --domainkit-switch-width: 2.25rem;
47
- --domainkit-switch-height: 1.25rem;
48
- --domainkit-switch-thumb: 1rem;
49
- --domainkit-switch-inset: 0.125rem;
50
- /*
51
- * A provider's identity is a name over one line about it, and the mark stands against both.
52
- * The mark's size is the two lines added up, so it spans the block instead of guessing at it.
53
- */
54
- --domainkit-identity-name: 0.875rem;
55
- --domainkit-identity-line: 0.8125rem;
56
- --domainkit-identity-leading: 1.4;
57
- --domainkit-mark-size: calc(
58
- (var(--domainkit-identity-name) + var(--domainkit-identity-line)) *
59
- var(--domainkit-identity-leading)
60
- );
61
- /* Cards draw no border of their own. A host that wants one sets this on the part. */
62
- --domainkit-card-border: transparent;
63
- --domainkit-button-raised-glint: rgb(255 255 255 / 0.95);
64
- --domainkit-button-raised-shade: color-mix(in srgb, var(--domainkit-text) 10%, transparent);
65
- --domainkit-button-raised-shadow: 0 1px 2px
66
- color-mix(in srgb, var(--domainkit-text) 10%, transparent);
67
- color: var(--domainkit-text);
68
- color-scheme: light;
69
- font-family: var(--domainkit-font-family);
70
- }
71
-
72
- :where([data-domainkit-root][data-color-scheme="dark"]) {
73
- --domainkit-background: #18181b;
74
- --domainkit-border: #3f3f46;
75
- --domainkit-fill: #27272a;
76
- --domainkit-muted: #a1a1aa;
77
- --domainkit-shadow: 0 16px 40px rgb(0 0 0 / 0.4);
78
- --domainkit-success: #34d399;
79
- --domainkit-warning: #fbbf24;
80
- --domainkit-text: #fafafa;
81
- --domainkit-button-raised-glint: rgb(255 255 255 / 0.14);
82
- --domainkit-button-raised-shade: rgb(0 0 0 / 0.42);
83
- --domainkit-button-raised-shadow: 0 1px 2px rgb(0 0 0 / 0.45);
84
- color-scheme: dark;
85
- }
86
-
87
- @media (prefers-color-scheme: dark) {
88
- :where([data-domainkit-root][data-color-scheme="inherit"]) {
89
- --domainkit-background: #18181b;
90
- --domainkit-border: #3f3f46;
91
- --domainkit-fill: #27272a;
92
- --domainkit-muted: #a1a1aa;
93
- --domainkit-shadow: 0 16px 40px rgb(0 0 0 / 0.4);
94
- --domainkit-success: #34d399;
95
- --domainkit-warning: #fbbf24;
96
- --domainkit-text: #fafafa;
97
- --domainkit-button-raised-glint: rgb(255 255 255 / 0.14);
98
- --domainkit-button-raised-shade: rgb(0 0 0 / 0.42);
99
- --domainkit-button-raised-shadow: 0 1px 2px rgb(0 0 0 / 0.45);
100
- color-scheme: dark;
101
- }
102
- }
103
-
104
- :where([data-domainkit-part="connection-root"]) {
105
- display: grid;
106
- gap: 0.75rem;
107
- justify-items: stretch;
108
- width: 100%;
109
- }
110
-
111
- :where([data-domainkit-part="connection-status"]) {
112
- color: var(--domainkit-muted);
113
- font-size: 0.875rem;
114
- line-height: 1.4;
115
- }
116
-
117
- :where([data-domainkit-part="connection-status"][data-state="Connected"]) {
118
- color: var(--domainkit-success);
119
- font-weight: 500;
120
- }
121
-
122
- :where([data-domainkit-part="connection-status"][data-state="Failure"]) {
123
- color: var(--domainkit-danger);
124
- }
125
-
126
- :where(
127
- [data-domainkit-recipe="connect"],
128
- [data-domainkit-part="integration-connect"],
129
- [data-domainkit-part="oauth-connect"],
130
- [data-domainkit-part="attach-target"],
131
- [data-domainkit-part="connection-retry"],
132
- [data-domainkit-part="plan-trigger"],
133
- [data-domainkit-part="plan-apply"],
134
- [data-domainkit-part="provisioning-retry"],
135
- [data-domainkit-part="observe-action"],
136
- [data-domainkit-part="cleanup-trigger"],
137
- [data-domainkit-part="cleanup-apply"],
138
- [data-domainkit-part="cleanup-retry"],
139
- [data-domainkit-part="disconnect-action"],
140
- [data-domainkit-part="disconnect-confirm"],
141
- [data-domainkit-part="method-alternate"],
142
- [data-domainkit-part="dialog-back"],
143
- [data-domainkit-part="dialog-provider-menu"],
144
- [data-domainkit-part="more-options-trigger"],
145
- [data-domainkit-part="disconnect-trigger"],
146
- [data-domainkit-part="actions-trigger"],
147
- [data-domainkit-part="token-connect"] button,
148
- [data-domainkit-part="connection-trigger"],
149
- [data-domainkit-part="token-submit"],
150
- [data-domainkit-part="plan-decline"],
151
- [data-domainkit-part="verification-retry"],
152
- [data-domainkit-part="copy-action"],
153
- [data-domainkit-part="zone-copy"],
154
- [data-domainkit-part="zone-download"],
155
- [data-domainkit-part="dialog-cancel"],
156
- [data-domainkit-part="dialog-close"]
157
- ) {
158
- align-items: center;
159
- border: 1px solid transparent;
160
- border-radius: var(--domainkit-control-radius);
161
- cursor: pointer;
162
- display: inline-flex;
163
- font: inherit;
164
- font-size: 0.875rem;
165
- font-weight: 500;
166
- justify-content: center;
167
- line-height: 1.2;
168
- min-height: 2.25rem;
169
- padding: 0.45rem 0.85rem;
170
- transition:
171
- background-color 120ms ease,
172
- background-image 120ms ease,
173
- border-color 120ms ease,
174
- box-shadow 120ms ease;
175
- }
176
-
177
- :where(
178
- [data-domainkit-recipe="connect"],
179
- [data-domainkit-part="integration-connect"],
180
- [data-domainkit-part="oauth-connect"],
181
- [data-domainkit-part="plan-trigger"],
182
- [data-domainkit-part="plan-apply"],
183
- [data-domainkit-part="connection-trigger"],
184
- [data-domainkit-part="token-submit"]
185
- ) {
186
- --domainkit-button-face: color-mix(in oklch, var(--domainkit-accent), white 22%);
187
- --domainkit-button-glint: color-mix(in oklch, var(--domainkit-accent), white 42%);
188
- --domainkit-button-edge: color-mix(in oklch, var(--domainkit-accent), black 18%);
189
- background-color: var(--domainkit-accent);
190
- background-image: linear-gradient(
191
- to bottom,
192
- var(--domainkit-button-face),
193
- var(--domainkit-accent)
194
- );
195
- border-color: var(--domainkit-button-edge);
196
- box-shadow:
197
- 0 1px 2px color-mix(in srgb, var(--domainkit-text) 18%, transparent),
198
- inset 0 1px 0 var(--domainkit-button-glint);
199
- color: var(--domainkit-accent-contrast);
200
- }
201
-
202
- :where(
203
- [data-domainkit-recipe="connect"]:hover:not(:disabled),
204
- [data-domainkit-part="integration-connect"]:hover:not(:disabled),
205
- [data-domainkit-part="oauth-connect"]:hover:not(:disabled),
206
- [data-domainkit-part="plan-trigger"]:hover:not(:disabled),
207
- [data-domainkit-part="plan-apply"]:hover:not(:disabled),
208
- [data-domainkit-part="connection-trigger"]:hover:not(:disabled),
209
- [data-domainkit-part="token-submit"]:hover:not(:disabled)
210
- ) {
211
- --domainkit-button-face: color-mix(in oklch, var(--domainkit-accent), white 28%);
212
- }
213
-
214
- :where(
215
- [data-domainkit-recipe="connect"]:active:not(:disabled),
216
- [data-domainkit-part="integration-connect"]:active:not(:disabled),
217
- [data-domainkit-part="oauth-connect"]:active:not(:disabled),
218
- [data-domainkit-part="plan-trigger"]:active:not(:disabled),
219
- [data-domainkit-part="plan-apply"]:active:not(:disabled),
220
- [data-domainkit-part="connection-trigger"]:active:not(:disabled),
221
- [data-domainkit-part="token-submit"]:active:not(:disabled)
222
- ) {
223
- background-image: linear-gradient(
224
- to bottom,
225
- var(--domainkit-accent),
226
- color-mix(in oklch, var(--domainkit-accent), black 10%)
227
- );
228
- box-shadow: inset 0 1px 2px color-mix(in srgb, var(--domainkit-text) 28%, transparent);
229
- }
230
-
231
- :where(
232
- [data-domainkit-part="attach-target"],
233
- [data-domainkit-part="connection-retry"],
234
- [data-domainkit-part="provisioning-retry"],
235
- [data-domainkit-part="cleanup-retry"],
236
- [data-domainkit-part="observe-action"],
237
- [data-domainkit-part="zone-copy"],
238
- [data-domainkit-part="zone-download"],
239
- [data-domainkit-part="plan-decline"]
240
- ) {
241
- background-color: var(--domainkit-background);
242
- border-color: var(--domainkit-border);
243
- box-shadow:
244
- var(--domainkit-button-raised-shadow),
245
- inset 0 1px 0 var(--domainkit-button-raised-glint),
246
- inset 0 -1px 0 var(--domainkit-button-raised-shade);
247
- color: var(--domainkit-text);
248
- }
249
-
250
- :where(
251
- [data-domainkit-part="attach-target"]:hover:not(:disabled),
252
- [data-domainkit-part="connection-retry"]:hover:not(:disabled),
253
- [data-domainkit-part="provisioning-retry"]:hover:not(:disabled),
254
- [data-domainkit-part="observe-action"]:hover:not(:disabled),
255
- [data-domainkit-part="zone-copy"]:hover:not(:disabled),
256
- [data-domainkit-part="zone-download"]:hover:not(:disabled),
257
- [data-domainkit-part="plan-decline"]:hover:not(:disabled)
258
- ) {
259
- background-color: var(--domainkit-fill);
260
- }
261
-
262
- :where([data-domainkit-part="cleanup-trigger"], [data-domainkit-part="disconnect-action"]) {
263
- background: transparent;
264
- border-color: transparent;
265
- box-shadow: none;
266
- color: var(--domainkit-danger);
267
- font-weight: 500;
268
- }
269
-
270
- :where(
271
- [data-domainkit-part="cleanup-trigger"]:hover:not(:disabled),
272
- [data-domainkit-part="disconnect-action"]:hover:not(:disabled)
273
- ) {
274
- background: color-mix(in srgb, var(--domainkit-danger) 8%, transparent);
275
- }
276
-
277
- :where([data-domainkit-part="cleanup-apply"], [data-domainkit-part="disconnect-confirm"]) {
278
- --domainkit-button-face: color-mix(in oklch, var(--domainkit-danger), white 22%);
279
- --domainkit-button-glint: color-mix(in oklch, var(--domainkit-danger), white 42%);
280
- --domainkit-button-edge: color-mix(in oklch, var(--domainkit-danger), black 18%);
281
- background-color: var(--domainkit-danger);
282
- background-image: linear-gradient(
283
- to bottom,
284
- var(--domainkit-button-face),
285
- var(--domainkit-danger)
286
- );
287
- border-color: var(--domainkit-button-edge);
288
- box-shadow:
289
- 0 1px 2px color-mix(in srgb, var(--domainkit-text) 18%, transparent),
290
- inset 0 1px 0 var(--domainkit-button-glint);
291
- color: var(--domainkit-danger-contrast);
292
- }
293
-
294
- :where(
295
- [data-domainkit-part="cleanup-apply"]:hover:not(:disabled),
296
- [data-domainkit-part="disconnect-confirm"]:hover:not(:disabled)
297
- ) {
298
- --domainkit-button-face: color-mix(in oklch, var(--domainkit-danger), white 28%);
299
- }
300
-
301
- :where(
302
- [data-domainkit-part="cleanup-apply"]:active:not(:disabled),
303
- [data-domainkit-part="disconnect-confirm"]:active:not(:disabled)
304
- ) {
305
- background-image: linear-gradient(
306
- to bottom,
307
- var(--domainkit-danger),
308
- color-mix(in oklch, var(--domainkit-danger), black 10%)
309
- );
310
- box-shadow: inset 0 1px 2px color-mix(in srgb, var(--domainkit-text) 28%, transparent);
311
- }
312
-
313
- /* Every quiet control in the dialog keeps the same rhythm above and below it. */
314
- :where(
315
- [data-domainkit-part="method-alternate"],
316
- [data-domainkit-part="dialog-back"],
317
- [data-domainkit-part="more-options-trigger"]
318
- ) {
319
- margin-block: var(--domainkit-quiet-lead) var(--domainkit-quiet-trail);
320
- }
321
-
322
- :where([data-domainkit-part="method-alternate"]) {
323
- background: transparent;
324
- border-color: var(--domainkit-border);
325
- box-shadow: none;
326
- color: var(--domainkit-text);
327
- width: 100%;
328
- }
329
-
330
- :where(
331
- [data-domainkit-part="method-alternate"]:hover:not(:disabled),
332
- [data-domainkit-part="more-options-trigger"]:hover:not(:disabled)
333
- ) {
334
- background: var(--domainkit-fill);
335
- }
336
-
337
- :where([data-domainkit-part="more-options-trigger"]) {
338
- background: transparent;
339
- border-color: var(--domainkit-border);
340
- box-shadow: none;
341
- color: var(--domainkit-muted);
342
- font-size: 0.8125rem;
343
- gap: var(--domainkit-quiet-pad);
344
- justify-self: start;
345
- }
346
-
347
- :where([data-domainkit-part="more-options-trigger"] svg),
348
- :where([data-domainkit-part="dialog-provider-menu"] svg) {
349
- height: 1rem;
350
- transition: transform 150ms ease;
351
- width: 1rem;
352
- }
353
-
354
- :where([data-domainkit-part="more-options"][data-state="open"])
355
- :where([data-domainkit-part="more-options-trigger"] svg) {
356
- transform: rotate(180deg);
357
- }
358
-
359
- :where([data-domainkit-part="more-options-panel"]) {
360
- display: grid;
361
- gap: var(--domainkit-quiet-lead);
362
- padding-block-end: var(--domainkit-quiet-lead);
363
- }
364
-
365
- :where([data-domainkit-part="dialog-back"]) {
366
- background: transparent;
367
- border-color: transparent;
368
- box-shadow: none;
369
- color: var(--domainkit-muted);
370
- justify-self: start;
371
- margin-inline-start: calc(-1 * var(--domainkit-quiet-inset));
372
- padding-inline: var(--domainkit-quiet-inset);
373
- }
374
-
375
- :where([data-domainkit-part="dialog-back"]:hover:not(:disabled)) {
376
- background: var(--domainkit-fill);
377
- color: var(--domainkit-text);
378
- }
379
-
380
- :where([data-domainkit-part="dialog-back"])::before {
381
- content: "\2190";
382
- margin-inline-end: 0.35rem;
383
- }
384
-
385
- :where([data-domainkit-part="dialog-provider-menu"]) {
386
- background: transparent;
387
- border-color: transparent;
388
- box-shadow: none;
389
- color: inherit;
390
- font: inherit;
391
- gap: var(--domainkit-quiet-pad);
392
- margin-inline-start: calc(-1 * var(--domainkit-quiet-inset));
393
- padding: var(--domainkit-quiet-pad) var(--domainkit-quiet-inset);
394
- }
395
-
396
- :where([data-domainkit-part="dialog-provider-menu"]:hover:not(:disabled)) {
397
- background: var(--domainkit-fill);
398
- color: var(--domainkit-accent);
399
- }
400
-
401
- :where([data-domainkit-part="dialog-provider-menu"][data-popup-open] svg) {
402
- transform: rotate(180deg);
403
- }
404
-
405
- /* Above the dialog that opened it: the trigger sits inside the dialog's own stacking context. */
406
- :where([data-domainkit-part="provider-menu-positioner"]) {
407
- z-index: 1002;
408
- }
409
-
410
- :where([data-domainkit-part="provider-menu"]) {
411
- background: var(--domainkit-background);
412
- border: 1px solid var(--domainkit-border);
413
- border-radius: var(--domainkit-radius);
414
- box-shadow: var(--domainkit-shadow);
415
- display: grid;
416
- gap: 0.15rem;
417
- min-width: 12rem;
418
- padding: 0.3rem;
419
- }
420
-
421
- :where([data-domainkit-part="provider-menu-item"]) {
422
- align-items: center;
423
- border-radius: var(--domainkit-control-radius);
424
- color: var(--domainkit-text);
425
- cursor: pointer;
426
- display: flex;
427
- font-size: 0.875rem;
428
- gap: 0.5rem;
429
- padding: 0.35rem 0.5rem;
430
- }
431
-
432
- :where([data-domainkit-part="provider-menu-item"][data-highlighted]) {
433
- background: var(--domainkit-fill);
434
- }
435
-
436
- :where([data-domainkit-part="disconnect-scope"]) {
437
- border: 1px solid var(--domainkit-border);
438
- border-radius: var(--domainkit-control-radius);
439
- display: grid;
440
- gap: 0.4rem;
441
- margin: 0;
442
- padding: 0.6rem 0.75rem;
443
- }
444
-
445
- :where([data-domainkit-part="disconnect-scope"] legend) {
446
- color: var(--domainkit-muted);
447
- font-size: 0.8125rem;
448
- padding-inline: 0.25rem;
449
- }
450
-
451
- :where([data-domainkit-part="disconnect-scope"] label) {
452
- align-items: center;
453
- color: var(--domainkit-text);
454
- cursor: pointer;
455
- display: flex;
456
- font-size: 0.875rem;
457
- gap: 0.5rem;
458
- }
459
-
460
- :where([data-domainkit-part="disconnect-scope"] input) {
461
- accent-color: var(--domainkit-accent);
462
- margin: 0;
463
- }
464
-
465
- :where([data-domainkit-part="dialog-cancel"], [data-domainkit-part="dialog-close"]) {
466
- background: transparent;
467
- border-color: transparent;
468
- color: var(--domainkit-muted);
469
- }
470
-
471
- :where([data-domainkit-part="dialog-cancel"]:hover, [data-domainkit-part="dialog-close"]:hover) {
472
- background: var(--domainkit-fill);
473
- color: var(--domainkit-text);
474
- }
475
-
476
- :where([data-domainkit-part="copy-action"]) {
477
- background: var(--domainkit-fill);
478
- border-color: var(--domainkit-border);
479
- color: var(--domainkit-muted);
480
- display: inline-grid;
481
- flex: none;
482
- height: 1.5rem;
483
- min-height: 1.5rem;
484
- min-width: 1.5rem;
485
- overflow: hidden;
486
- padding: 0;
487
- place-items: center;
488
- width: 1.5rem;
489
- }
490
-
491
- :where([data-domainkit-part="copy-action"]:hover) {
492
- background: var(--domainkit-background);
493
- color: var(--domainkit-text);
494
- }
495
-
496
- :where([data-domainkit-part="copy-value"][data-copied] [data-domainkit-part="copy-action"]) {
497
- border-color: color-mix(in srgb, var(--domainkit-success) 45%, var(--domainkit-border));
498
- color: var(--domainkit-success);
499
- }
500
-
501
- :where([data-icon] svg) {
502
- display: block;
503
- flex: none;
504
- height: 0.875rem;
505
- width: 0.875rem;
506
- }
507
-
508
- :where([data-domainkit-part="copy-glyph"]) {
509
- display: flex;
510
- grid-area: 1 / 1;
511
- transition:
512
- opacity 180ms ease,
513
- transform 180ms ease;
514
- }
515
-
516
- :where([data-domainkit-part="copy-glyph"][data-state="idle"]) {
517
- opacity: 1;
518
- transform: scale(1) rotate(0deg);
519
- }
520
-
521
- :where(
522
- [data-domainkit-part="copy-value"][data-copied]
523
- [data-domainkit-part="copy-glyph"][data-state="idle"]
524
- ) {
525
- opacity: 0;
526
- transform: scale(0.5) rotate(-18deg);
527
- }
528
-
529
- :where([data-domainkit-part="copy-glyph"][data-state="done"]) {
530
- opacity: 0;
531
- transform: scale(0.5) rotate(18deg);
532
- }
533
-
534
- :where(
535
- [data-domainkit-part="copy-value"][data-copied]
536
- [data-domainkit-part="copy-glyph"][data-state="done"]
537
- ) {
538
- opacity: 1;
539
- transform: scale(1) rotate(0deg);
540
- }
541
-
542
- :where([data-domainkit-part="dialog-close"]) {
543
- flex: none;
544
- min-height: 2rem;
545
- padding: 0;
546
- width: 2rem;
547
- }
548
-
549
- :where([data-domainkit-part]:disabled) {
550
- cursor: not-allowed;
551
- opacity: 0.5;
552
- }
553
-
554
- :where([data-domainkit-part="dialog-backdrop"]) {
555
- background: var(--domainkit-backdrop);
556
- inset: 0;
557
- opacity: 1;
558
- position: fixed;
559
- transition: opacity 150ms ease;
560
- z-index: 1000;
561
- }
562
-
563
- :where(
564
- [data-domainkit-part="connection-dialog"],
565
- [data-domainkit-part="plan-dialog"],
566
- [data-domainkit-part="cleanup-dialog"],
567
- [data-domainkit-part="disconnect-dialog"]
568
- ) {
569
- background: var(--domainkit-background);
570
- border: 1px solid var(--domainkit-border);
571
- border-color: color-mix(in oklab, var(--domainkit-border) 60%, var(--domainkit-background));
572
- border-radius: var(--domainkit-radius);
573
- box-shadow: var(--domainkit-shadow);
574
- color: var(--domainkit-text);
575
- display: grid;
576
- grid-template-rows: auto 1fr auto;
577
- left: 50%;
578
- max-height: calc(100vh - 2rem);
579
- max-width: calc(100vw - 2rem);
580
- overflow: hidden;
581
- outline: none;
582
- position: fixed;
583
- top: 50%;
584
- transform: translate(-50%, -50%);
585
- transition:
586
- opacity 150ms ease,
587
- transform 150ms ease;
588
- width: var(--domainkit-dialog-width);
589
- z-index: 1001;
590
- }
591
-
592
- /*
593
- * A dialog that lists records takes the wider width: the plan and the cleanup always do, and the
594
- * disconnect dialog does whenever it carries removals to decide over.
595
- */
596
- :where(
597
- [data-domainkit-part="plan-dialog"],
598
- [data-domainkit-part="cleanup-dialog"],
599
- [data-domainkit-part="disconnect-dialog"][data-cleanup="offered"]
600
- ) {
601
- --domainkit-dialog-width: var(--domainkit-dialog-wide);
602
- }
603
-
604
- /* The backdrop fades with the dialog it belongs to rather than appearing whole. */
605
- :where(
606
- [data-domainkit-part="dialog-backdrop"][data-starting-style],
607
- [data-domainkit-part="dialog-backdrop"][data-ending-style]
608
- ) {
609
- opacity: 0;
610
- }
611
-
612
- /*
613
- * A closed dialog is out of the customer's way even while it is still in the tree: it may linger
614
- * for its exit, and a transparent sheet that still takes a press would swallow the next click.
615
- */
616
- :where(
617
- [data-domainkit-part="dialog-backdrop"][data-closed],
618
- [data-domainkit-part="connection-dialog"][data-closed],
619
- [data-domainkit-part="plan-dialog"][data-closed],
620
- [data-domainkit-part="cleanup-dialog"][data-closed],
621
- [data-domainkit-part="disconnect-dialog"][data-closed]
622
- ) {
623
- pointer-events: none;
624
- }
625
-
626
- :where(
627
- [data-domainkit-part="connection-dialog"][data-starting-style],
628
- [data-domainkit-part="connection-dialog"][data-ending-style],
629
- [data-domainkit-part="plan-dialog"][data-starting-style],
630
- [data-domainkit-part="plan-dialog"][data-ending-style],
631
- [data-domainkit-part="cleanup-dialog"][data-starting-style],
632
- [data-domainkit-part="cleanup-dialog"][data-ending-style],
633
- [data-domainkit-part="disconnect-dialog"][data-starting-style],
634
- [data-domainkit-part="disconnect-dialog"][data-ending-style]
635
- ) {
636
- opacity: 0;
637
- transform: translate(-50%, -48%) scale(0.98);
638
- }
639
-
640
- :where([data-domainkit-part="dialog-header"]) {
641
- align-items: flex-start;
642
- border-bottom: 1px solid var(--domainkit-border);
643
- display: flex;
644
- gap: 0.75rem;
645
- padding: 1rem 1rem 0.85rem;
646
- }
647
-
648
- /* The mark stands against the title and the line under it, the way it does on the two cards. */
649
- :where([data-domainkit-part="dialog-media"]) {
650
- align-items: center;
651
- align-self: center;
652
- display: inline-flex;
653
- flex: none;
654
- }
655
-
656
- :where([data-domainkit-part="dialog-heading"]) {
657
- display: grid;
658
- flex: 1;
659
- gap: 0.25rem;
660
- min-width: 0;
661
- }
662
-
663
- :where([data-domainkit-part="dialog-title"]) {
664
- font-size: 1rem;
665
- font-weight: 600;
666
- line-height: 1.3;
667
- margin: 0;
668
- }
669
-
670
- :where([data-domainkit-part="dialog-description"]) {
671
- color: var(--domainkit-muted);
672
- font-size: 0.875rem;
673
- line-height: 1.45;
674
- margin: 0;
675
- }
676
-
677
- :where([data-domainkit-part="dialog-body"]) {
678
- display: grid;
679
- gap: 0.65rem;
680
- overflow: auto;
681
- padding: 1rem;
682
- }
683
-
684
- :where([data-domainkit-part="provider-authentication"]) {
685
- display: grid;
686
- gap: 0.55rem;
687
- }
688
-
689
- :where([data-domainkit-part="authentication-separator"]) {
690
- align-items: center;
691
- color: var(--domainkit-muted);
692
- display: grid;
693
- font-size: 0.75rem;
694
- gap: 0.75rem;
695
- grid-template-columns: 1fr auto 1fr;
696
- line-height: 1;
697
- padding: 0.15rem 0;
698
- text-transform: lowercase;
699
- }
700
-
701
- :where([data-domainkit-part="authentication-separator"])::before,
702
- :where([data-domainkit-part="authentication-separator"])::after {
703
- border-top: 1px solid var(--domainkit-border);
704
- content: "";
705
- }
706
-
707
- :where([data-domainkit-part="dialog-progress"]) {
708
- color: var(--domainkit-muted);
709
- margin: 0;
710
- min-height: 1.4em;
711
- }
712
-
713
- :where(
714
- [data-domainkit-part="dialog-body"] [data-domainkit-part="oauth-connect"],
715
- [data-domainkit-part="dialog-body"] [data-domainkit-part="integration-connect"],
716
- [data-domainkit-part="dialog-body"] [data-domainkit-part="attach-target"]
717
- ) {
718
- width: 100%;
719
- }
720
-
721
- :where([data-domainkit-part="reusable-connection"]) {
722
- background: var(--domainkit-fill);
723
- border: 1px solid var(--domainkit-border);
724
- border-radius: var(--domainkit-control-radius);
725
- display: grid;
726
- gap: 0.55rem;
727
- padding: 0.7rem;
728
- }
729
-
730
- :where([data-domainkit-part="reusable-connection-heading"]) {
731
- align-items: baseline;
732
- display: flex;
733
- gap: 0.5rem;
734
- justify-content: space-between;
735
- }
736
-
737
- :where([data-domainkit-part="reusable-connection-heading"] strong) {
738
- font-size: 0.8125rem;
739
- font-weight: 600;
740
- }
741
-
742
- :where([data-domainkit-part="reusable-connection-heading"] span) {
743
- color: var(--domainkit-muted);
744
- font-size: 0.6875rem;
745
- }
746
-
747
- :where([data-domainkit-part="target-list"]) {
748
- display: grid;
749
- gap: 0.45rem;
750
- }
751
-
752
- :where([data-domainkit-part="target-unavailable"]) {
753
- color: var(--domainkit-muted);
754
- font-size: 0.8125rem;
755
- margin: 0;
756
- }
757
-
758
- :where([data-domainkit-part="disconnect-cleanup"]) {
759
- display: grid;
760
- gap: var(--domainkit-quiet-lead);
761
- }
762
-
763
- :where([data-domainkit-part="disconnect-cleanup-label"]) {
764
- align-items: center;
765
- color: var(--domainkit-text);
766
- cursor: pointer;
767
- display: flex;
768
- font-size: 0.875rem;
769
- gap: 0.6rem;
770
- }
771
-
772
- /*
773
- * Base UI's own Switch anatomy: the root is the track and the thumb is a box laid out inside it.
774
- * `border-box` and `inline-flex` make the declared width and height the track a customer sees,
775
- * whatever the host's reset does with padding, and centre the thumb between the track's edges.
776
- */
777
- :where([data-domainkit-part="disconnect-cleanup-switch"]) {
778
- align-items: center;
779
- background: var(--domainkit-border);
780
- border: 0;
781
- border-radius: 999px;
782
- box-sizing: border-box;
783
- cursor: pointer;
784
- display: inline-flex;
785
- flex: none;
786
- height: var(--domainkit-switch-height);
787
- padding: var(--domainkit-switch-inset);
788
- transition: background-color 150ms ease;
789
- width: var(--domainkit-switch-width);
790
- }
791
-
792
- :where([data-domainkit-part="disconnect-cleanup-switch"][data-checked]) {
793
- background: var(--domainkit-accent);
794
- }
795
-
796
- :where([data-domainkit-part="disconnect-cleanup-switch"]:disabled) {
797
- cursor: default;
798
- opacity: 0.6;
799
- }
800
-
801
- :where([data-domainkit-part="disconnect-cleanup-thumb"]) {
802
- background: var(--domainkit-background);
803
- border-radius: 999px;
804
- display: block;
805
- flex: none;
806
- height: var(--domainkit-switch-thumb);
807
- transition: translate 150ms ease;
808
- width: var(--domainkit-switch-thumb);
809
- }
810
-
811
- /* The travel is the track less the thumb and the room the track keeps at both ends. */
812
- :where([data-domainkit-part="disconnect-cleanup-thumb"][data-checked]) {
813
- translate: calc(
814
- var(--domainkit-switch-width) - var(--domainkit-switch-thumb) -
815
- var(--domainkit-switch-inset) * 2
816
- );
817
- }
818
-
819
- :where([data-domainkit-part="disconnect-cleanup-panel"]) {
820
- display: grid;
821
- gap: 0.35rem;
822
- transition: opacity 150ms ease;
823
- }
824
-
825
- /* Off, the records are still what the decision is about, so they stay legible and step back. */
826
- :where([data-domainkit-part="disconnect-cleanup"][data-state="off"])
827
- :where([data-domainkit-part="disconnect-cleanup-panel"]) {
828
- opacity: 0.55;
829
- }
830
-
831
- :where([data-domainkit-part="disconnect-cleanup-note"]) {
832
- color: var(--domainkit-muted);
833
- font-size: 0.8125rem;
834
- margin: 0;
835
- }
836
-
837
- :where([data-domainkit-part="disconnect-status"]) {
838
- color: var(--domainkit-muted);
839
- font-size: 0.875rem;
840
- margin: 0;
841
- }
842
-
843
- :where([data-domainkit-part="dialog-footer"]) {
844
- border-top: 1px solid var(--domainkit-border);
845
- display: flex;
846
- gap: 0.5rem;
847
- justify-content: flex-end;
848
- padding: 0.75rem 1rem;
849
- }
850
-
851
- /* A squircle: a rounded square on the radius token, filled edge to edge. Nothing here rounds it
852
- * into a circle, so a mark that reads as one is a circular asset the host passed in. */
853
- :where([data-domainkit-part="provider-mark"]) {
854
- align-items: center;
855
- background: var(--domainkit-fill);
856
- border: 1px solid var(--domainkit-border);
857
- border-radius: var(--domainkit-control-radius);
858
- box-sizing: border-box;
859
- display: inline-flex;
860
- flex: none;
861
- font-size: 0.8125rem;
862
- font-weight: 600;
863
- height: var(--domainkit-mark-size);
864
- justify-content: center;
865
- overflow: hidden;
866
- width: var(--domainkit-mark-size);
867
- }
868
-
869
- :where([data-domainkit-part="provider-mark"] img),
870
- :where([data-domainkit-part="provider-mark"] svg) {
871
- display: block;
872
- height: 100%;
873
- object-fit: cover;
874
- width: 100%;
875
- }
876
-
877
- :where([data-domainkit-part="provider-mark"][data-domainkit-provider="vercel"]) {
878
- border-color: transparent;
879
- }
880
-
881
- :where([data-domainkit-part="token-connect"]) {
882
- background: var(--domainkit-fill);
883
- border: 1px solid var(--domainkit-border);
884
- border-radius: var(--domainkit-control-radius);
885
- display: grid;
886
- gap: 0.65rem;
887
- padding: var(--domainkit-panel-pad);
888
- }
889
-
890
- :where([data-domainkit-part="token-connect"] [data-domainkit-part="field-label"]) {
891
- color: var(--domainkit-muted);
892
- display: grid;
893
- font-size: 0.8125rem;
894
- gap: 0.35rem;
895
- }
896
-
897
- :where([data-domainkit-part="token-connect"] small) {
898
- color: var(--domainkit-muted);
899
- font-size: 0.75rem;
900
- }
901
-
902
- :where([data-domainkit-part="token-connect"] input) {
903
- background: var(--domainkit-background);
904
- border: 1px solid var(--domainkit-border);
905
- border-radius: var(--domainkit-control-radius);
906
- color: var(--domainkit-text);
907
- font: inherit;
908
- min-height: 2.25rem;
909
- padding: 0 0.65rem;
910
- }
911
-
912
- :where([data-domainkit-part="token-connect"] button) {
913
- justify-self: start;
914
- }
915
-
916
- :where([data-domainkit-part="connected-shell"]) {
917
- display: grid;
918
- gap: 1rem;
919
- width: 100%;
920
- }
921
-
922
- /*
923
- * Both cards sit on the host's inset surface rather than floating on the page ground, so a
924
- * domain page reads as one section. The border is off unless a host sets `--domainkit-card-border`
925
- * on the part.
926
- */
927
- :where([data-domainkit-part="connected-card"], [data-domainkit-part="connect-prompt"]) {
928
- background: var(--domainkit-fill);
929
- border: 1px solid var(--domainkit-card-border);
930
- border-radius: var(--domainkit-radius);
931
- padding: var(--domainkit-panel-pad);
932
- }
933
-
934
- :where([data-domainkit-part="connected-card"]) {
935
- align-items: center;
936
- column-gap: 1rem;
937
- display: grid;
938
- grid-template-columns: minmax(0, 1fr) auto;
939
- justify-content: space-between;
940
- width: 100%;
941
- }
942
-
943
- :where([data-domainkit-part="connected-actions"]) {
944
- align-items: center;
945
- display: flex;
946
- flex-wrap: nowrap;
947
- gap: 0.5rem;
948
- margin-left: auto;
949
- }
950
-
951
- :where([data-domainkit-part="actions-trigger"]) {
952
- background: transparent;
953
- border-color: transparent;
954
- color: var(--domainkit-muted);
955
- flex: none;
956
- font-size: 1.15rem;
957
- min-height: 2.25rem;
958
- padding: 0;
959
- width: 2.25rem;
960
- }
961
-
962
- :where(
963
- [data-domainkit-part="actions-trigger"]:hover:not(:disabled),
964
- [data-domainkit-part="actions-trigger"][data-popup-open]
965
- ) {
966
- background: var(--domainkit-fill);
967
- color: var(--domainkit-text);
968
- }
969
-
970
- :where([data-domainkit-part="actions-menu"]) {
971
- background: var(--domainkit-background);
972
- border: 1px solid var(--domainkit-border);
973
- border-radius: var(--domainkit-control-radius);
974
- box-shadow: var(--domainkit-shadow);
975
- color: var(--domainkit-text);
976
- display: grid;
977
- min-width: 11rem;
978
- padding: 0.3rem;
979
- transform-origin: var(--transform-origin);
980
- transition:
981
- opacity 120ms ease,
982
- transform 120ms ease;
983
- z-index: 1002;
984
- }
985
-
986
- :where(
987
- [data-domainkit-part="actions-menu"][data-starting-style],
988
- [data-domainkit-part="actions-menu"][data-ending-style]
989
- ) {
990
- opacity: 0;
991
- transform: scale(0.98);
992
- }
993
-
994
- :where([data-domainkit-part="actions-item"]) {
995
- align-items: center;
996
- background: transparent;
997
- border: 0;
998
- border-radius: calc(var(--domainkit-control-radius) * 0.75);
999
- cursor: pointer;
1000
- display: flex;
1001
- font: inherit;
1002
- font-size: 0.875rem;
1003
- min-height: 2.25rem;
1004
- outline: none;
1005
- padding: 0.45rem 0.65rem;
1006
- text-align: left;
1007
- width: 100%;
1008
- }
1009
-
1010
- :where([data-domainkit-part="actions-item"][data-highlighted]) {
1011
- background: var(--domainkit-fill);
1012
- }
1013
-
1014
- :where([data-domainkit-part="actions-item"][data-tone="danger"]) {
1015
- color: var(--domainkit-danger);
1016
- }
1017
-
1018
- :where([data-domainkit-part="actions-separator"]) {
1019
- background: var(--domainkit-border);
1020
- height: 1px;
1021
- margin: 0.25rem 0.35rem;
1022
- }
1023
-
1024
- @media (max-width: 36rem) {
1025
- :where([data-domainkit-part="connected-card"]) {
1026
- grid-template-columns: minmax(0, 1fr);
1027
- }
1028
-
1029
- :where([data-domainkit-part="connected-actions"]) {
1030
- justify-content: space-between;
1031
- margin-left: 0;
1032
- width: 100%;
1033
- }
1034
- }
1035
-
1036
- :where(
1037
- [data-domainkit-part="provisioning-flow"],
1038
- [data-domainkit-part="verification-status"],
1039
- [data-domainkit-part="cleanup-flow"]
1040
- ) {
1041
- align-items: flex-start;
1042
- display: flex;
1043
- flex-wrap: wrap;
1044
- gap: 0.5rem;
1045
- width: 100%;
1046
- }
1047
-
1048
- :where([data-domainkit-part="verification-status"]) {
1049
- display: inline-flex;
1050
- width: auto;
1051
- }
1052
-
1053
- :where(
1054
- [data-domainkit-part="connected-actions"] > [data-domainkit-part="provisioning-flow"],
1055
- [data-domainkit-part="connected-actions"] > [data-domainkit-part="verification-status"],
1056
- [data-domainkit-part="connected-actions"] > [data-domainkit-part="disconnect"]
1057
- ) {
1058
- flex: 0 0 auto;
1059
- width: auto;
1060
- }
1061
-
1062
- :where([data-domainkit-part="provisioning-flow"] > [data-domainkit-part="records-panel"]),
1063
- :where([data-domainkit-part="provisioning-flow"] > [data-domainkit-part="outcome"]),
1064
- :where([data-domainkit-part="cleanup-flow"] > [data-domainkit-part="outcome"]) {
1065
- flex: 1 1 100%;
1066
- }
1067
-
1068
- :where([data-domainkit-part="verification-positioner"]) {
1069
- max-width: min(var(--available-width), calc(100vw - 1rem));
1070
- z-index: 1002;
1071
- }
1072
-
1073
- :where([data-domainkit-part="verification-popover"]) {
1074
- background: var(--domainkit-background);
1075
- border: 1px solid var(--domainkit-border);
1076
- border-radius: var(--domainkit-control-radius);
1077
- box-shadow: 0 6px 20px color-mix(in srgb, var(--domainkit-text) 12%, transparent);
1078
- box-sizing: border-box;
1079
- color: var(--domainkit-text);
1080
- display: grid;
1081
- gap: 0.625rem;
1082
- max-height: min(20rem, var(--available-height));
1083
- max-width: min(18rem, calc(100vw - 1rem), var(--available-width));
1084
- overflow-x: hidden;
1085
- overflow-y: auto;
1086
- padding: 0.625rem;
1087
- transform-origin: var(--transform-origin);
1088
- transition:
1089
- opacity 120ms ease,
1090
- transform 120ms ease;
1091
- width: 18rem;
1092
- }
1093
-
1094
- :where(
1095
- [data-domainkit-part="verification-popover"][data-starting-style],
1096
- [data-domainkit-part="verification-popover"][data-ending-style]
1097
- ) {
1098
- opacity: 0;
1099
- transform: scale(0.98);
1100
- }
1101
-
1102
- :where([data-domainkit-part="verification-arrow"]) {
1103
- display: block;
1104
- height: 5px;
1105
- overflow: clip;
1106
- position: relative;
1107
- width: 10px;
1108
- }
1109
-
1110
- :where([data-domainkit-part="verification-arrow"])::before {
1111
- background: var(--domainkit-background);
1112
- border: 1px solid var(--domainkit-border);
1113
- box-sizing: border-box;
1114
- content: "";
1115
- display: block;
1116
- height: calc(5px * sqrt(2));
1117
- left: 50%;
1118
- position: absolute;
1119
- width: calc(5px * sqrt(2));
1120
- }
1121
-
1122
- :where([data-domainkit-part="verification-arrow"][data-side="bottom"]) {
1123
- top: -5px;
1124
- }
1125
-
1126
- :where([data-domainkit-part="verification-arrow"][data-side="bottom"])::before {
1127
- bottom: 0;
1128
- transform: translate(-50%, 50%) rotate(45deg);
1129
- }
1130
-
1131
- :where([data-domainkit-part="verification-arrow"][data-side="top"]) {
1132
- bottom: -5px;
1133
- rotate: 180deg;
1134
- }
1135
-
1136
- :where([data-domainkit-part="verification-arrow"][data-side="top"])::before {
1137
- bottom: 0;
1138
- transform: translate(-50%, 50%) rotate(45deg);
1139
- }
1140
-
1141
- :where([data-domainkit-part="verification-arrow"][data-side="left"]) {
1142
- right: -7px;
1143
- rotate: 90deg;
1144
- }
1145
-
1146
- :where([data-domainkit-part="verification-arrow"][data-side="left"])::before,
1147
- :where([data-domainkit-part="verification-arrow"][data-side="right"])::before {
1148
- bottom: 0;
1149
- transform: translate(-50%, 50%) rotate(45deg);
1150
- }
1151
-
1152
- :where([data-domainkit-part="verification-arrow"][data-side="right"]) {
1153
- left: -7px;
1154
- rotate: -90deg;
1155
- }
1156
-
1157
- :where([data-domainkit-part="verification-progress"]) {
1158
- color: var(--domainkit-muted);
1159
- font-size: 0.8125rem;
1160
- margin: 0;
1161
- }
1162
-
1163
- :where([data-domainkit-part="observation-list"]) {
1164
- background: var(--domainkit-fill);
1165
- border: 1px solid var(--domainkit-border);
1166
- border-radius: var(--domainkit-control-radius);
1167
- display: grid;
1168
- gap: 0.625rem;
1169
- max-width: 18rem;
1170
- padding: 0.75rem 0.85rem;
1171
- width: 100%;
1172
- }
1173
-
1174
- :where([data-domainkit-part="verification-popover"] > [data-domainkit-part="observation-list"]) {
1175
- background: transparent;
1176
- border: 0;
1177
- box-sizing: border-box;
1178
- max-width: none;
1179
- padding: 0;
1180
- }
1181
-
1182
- :where([data-domainkit-part="observation-group"]) {
1183
- display: grid;
1184
- gap: 0.4rem;
1185
- }
1186
-
1187
- :where([data-domainkit-part="observation-source"]) {
1188
- color: var(--domainkit-muted);
1189
- font-size: 0.6875rem;
1190
- font-weight: 650;
1191
- letter-spacing: 0.04em;
1192
- margin: 0 0 0.125rem;
1193
- text-transform: uppercase;
1194
- }
1195
-
1196
- :where([data-domainkit-part="observation-group"] ul) {
1197
- display: grid;
1198
- gap: 0.35rem;
1199
- list-style: none;
1200
- margin: 0;
1201
- padding: 0;
1202
- }
1203
-
1204
- :where([data-domainkit-part="observation-group"] li) {
1205
- display: grid;
1206
- gap: 0.25rem;
1207
- }
1208
-
1209
- :where([data-domainkit-part="observation-row"]) {
1210
- align-items: center;
1211
- display: flex;
1212
- gap: 0.75rem;
1213
- justify-content: space-between;
1214
- min-height: 1.5rem;
1215
- }
1216
-
1217
- /* A record name longer than the popover wraps inside its own cell; the status keeps the row. */
1218
- :where([data-domainkit-part="observation-record"]) {
1219
- font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
1220
- font-size: 0.75rem;
1221
- font-weight: 600;
1222
- min-width: 0;
1223
- overflow-wrap: anywhere;
1224
- }
1225
-
1226
- :where([data-domainkit-part="observation-note"]) {
1227
- color: var(--domainkit-muted);
1228
- font-size: 0.75rem;
1229
- margin: 0;
1230
- }
1231
-
1232
- :where([data-domainkit-part="records-panel"]) {
1233
- background: var(--domainkit-fill);
1234
- border: 1px solid var(--domainkit-border);
1235
- border-radius: var(--domainkit-control-radius);
1236
- overflow-x: auto;
1237
- width: 100%;
1238
- }
1239
-
1240
- :where([data-domainkit-part="records-table"]) {
1241
- border-collapse: collapse;
1242
- min-width: 36rem;
1243
- width: 100%;
1244
- }
1245
-
1246
- :where([data-domainkit-part="records-table"] th) {
1247
- color: var(--domainkit-muted);
1248
- font-size: 0.75rem;
1249
- font-weight: 600;
1250
- letter-spacing: 0.02em;
1251
- padding: 0.55rem 0.75rem;
1252
- text-align: left;
1253
- white-space: nowrap;
1254
- }
1255
-
1256
- :where([data-domainkit-part="records-table"] td) {
1257
- border-top: 1px solid var(--domainkit-border);
1258
- font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
1259
- font-size: 0.75rem;
1260
- line-height: 1.4;
1261
- padding: 0.55rem 0.75rem;
1262
- text-align: left;
1263
- vertical-align: middle;
1264
- }
1265
-
1266
- :where([data-domainkit-part="records-table"] td:first-child) {
1267
- font-weight: 600;
1268
- white-space: nowrap;
1269
- width: 4.5rem;
1270
- }
1271
-
1272
- :where([data-domainkit-part="records-table"] [data-column="status"]) {
1273
- text-align: right;
1274
- white-space: nowrap;
1275
- width: 1%;
1276
- }
1277
-
1278
- :where([data-domainkit-part="copy-value"]) {
1279
- align-items: center;
1280
- display: inline-flex;
1281
- flex-wrap: nowrap;
1282
- gap: 0.35rem;
1283
- max-width: 100%;
1284
- min-width: 0;
1285
- }
1286
-
1287
- :where([data-domainkit-part="copy-value"] code) {
1288
- font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
1289
- font-size: inherit;
1290
- line-height: 1.25rem;
1291
- min-width: 0;
1292
- overflow-wrap: anywhere;
1293
- }
1294
-
1295
- :where([data-domainkit-part="record-value"]) {
1296
- align-items: flex-start;
1297
- display: flex;
1298
- flex-direction: column;
1299
- gap: 0.15rem;
1300
- max-width: 100%;
1301
- min-width: 0;
1302
- width: 100%;
1303
- }
1304
-
1305
- :where([data-domainkit-part="record-value"] [data-domainkit-part="copy-value"]) {
1306
- min-width: 0;
1307
- width: 100%;
1308
- }
1309
-
1310
- :where([data-domainkit-part="record-priority"]) {
1311
- color: var(--domainkit-muted);
1312
- flex: none;
1313
- font-variant-numeric: tabular-nums;
1314
- }
1315
-
1316
- :where([data-domainkit-part="record-value"] [data-domainkit-part="record-priority"]) {
1317
- font-size: 0.6875rem;
1318
- }
1319
-
1320
- :where([data-domainkit-part="zone-file"]) {
1321
- display: flex;
1322
- flex-wrap: wrap;
1323
- gap: 0.5rem;
1324
- justify-content: flex-start;
1325
- }
1326
-
1327
- :where([data-domainkit-part="zone-copy"], [data-domainkit-part="zone-download"]) {
1328
- gap: 0.4rem;
1329
- }
1330
-
1331
- :where([data-domainkit-part="record-card"]) {
1332
- background: var(--domainkit-fill);
1333
- border: 1px solid var(--domainkit-border);
1334
- border-radius: var(--domainkit-control-radius);
1335
- display: grid;
1336
- gap: 0.75rem;
1337
- padding: 0.85rem 1rem;
1338
- }
1339
-
1340
- :where([data-domainkit-part="record-card-head"]) {
1341
- align-items: center;
1342
- display: flex;
1343
- gap: 0.5rem;
1344
- justify-content: space-between;
1345
- }
1346
-
1347
- :where([data-domainkit-part="record-card"] dl) {
1348
- display: grid;
1349
- gap: 0.65rem;
1350
- margin: 0;
1351
- }
1352
-
1353
- :where([data-domainkit-part="record-card"] dt) {
1354
- color: var(--domainkit-muted);
1355
- font-size: 0.6875rem;
1356
- font-weight: 650;
1357
- letter-spacing: 0.04em;
1358
- text-transform: uppercase;
1359
- }
1360
-
1361
- :where([data-domainkit-part="record-card"] dd) {
1362
- display: grid;
1363
- gap: 0.25rem;
1364
- justify-items: start;
1365
- margin: 0.25rem 0 0;
1366
- }
1367
-
1368
- :where([data-domainkit-part="record-card"] [data-domainkit-part="record-priority"]) {
1369
- font-size: 0.6875rem;
1370
- }
1371
-
1372
- /* Glyph and word are one badge: a narrow status column breaks the line, not the badge. */
1373
- :where([data-domainkit-part="record-status"]) {
1374
- align-items: center;
1375
- border-radius: 999px;
1376
- display: inline-flex;
1377
- font-size: 0.6875rem;
1378
- font-weight: 600;
1379
- gap: 0.25rem;
1380
- letter-spacing: 0.02em;
1381
- padding: 0.15rem 0.45rem;
1382
- white-space: nowrap;
1383
- }
1384
-
1385
- /* The glyph reads at the size of the word beside it rather than a size above it. */
1386
- :where([data-domainkit-part="record-status"] [data-icon] svg) {
1387
- height: 1em;
1388
- width: 1em;
1389
- }
1390
-
1391
- :where([data-domainkit-part="record-status"][data-status="Found"]) {
1392
- background: color-mix(in srgb, var(--domainkit-success) 16%, transparent);
1393
- color: var(--domainkit-success);
1394
- }
1395
-
1396
- :where([data-domainkit-part="record-status"][data-status="Missing"]),
1397
- :where([data-domainkit-part="record-status"][data-status="Mismatch"]) {
1398
- background: color-mix(in srgb, var(--domainkit-danger) 14%, transparent);
1399
- color: var(--domainkit-danger);
1400
- }
1401
-
1402
- :where([data-domainkit-part="record-status"][data-status="Unavailable"]) {
1403
- background: var(--domainkit-background);
1404
- color: var(--domainkit-muted);
1405
- }
1406
-
1407
- :where([data-domainkit-part="plan-operations"], [data-domainkit-part="cleanup-operations"]) {
1408
- display: grid;
1409
- gap: 0.35rem;
1410
- list-style: none;
1411
- margin: 0;
1412
- padding: 0;
1413
- }
1414
-
1415
- :where(
1416
- [data-domainkit-part="plan-operations"] li,
1417
- [data-domainkit-part="cleanup-operations"] li
1418
- ) {
1419
- align-items: baseline;
1420
- background: var(--domainkit-fill);
1421
- border-radius: var(--domainkit-control-radius);
1422
- display: grid;
1423
- font-size: 0.8125rem;
1424
- gap: 0.5rem 0.75rem;
1425
- grid-template-columns: auto auto 1fr;
1426
- padding: 0.6rem 0.75rem;
1427
- }
1428
-
1429
- :where([data-domainkit-part="operation-kind"]) {
1430
- border-radius: 999px;
1431
- font-size: 0.6875rem;
1432
- font-weight: 600;
1433
- letter-spacing: 0.02em;
1434
- padding: 0.15rem 0.45rem;
1435
- text-transform: uppercase;
1436
- }
1437
-
1438
- :where([data-operation="Create"] [data-domainkit-part="operation-kind"]) {
1439
- background: color-mix(in srgb, var(--domainkit-success) 16%, transparent);
1440
- color: var(--domainkit-success);
1441
- }
1442
-
1443
- :where([data-operation="Update"] [data-domainkit-part="operation-kind"]) {
1444
- background: color-mix(in srgb, var(--domainkit-accent) 14%, transparent);
1445
- color: var(--domainkit-accent);
1446
- }
1447
-
1448
- :where(
1449
- [data-operation="Delete"] [data-domainkit-part="operation-kind"],
1450
- [data-operation="Remove"] [data-domainkit-part="operation-kind"]
1451
- ) {
1452
- background: color-mix(in srgb, var(--domainkit-danger) 14%, transparent);
1453
- color: var(--domainkit-danger);
1454
- }
1455
-
1456
- :where(
1457
- [data-operation="Conflict"] [data-domainkit-part="operation-kind"],
1458
- [data-operation="Blocked"] [data-domainkit-part="operation-kind"],
1459
- [data-operation="Stale"] [data-domainkit-part="operation-kind"]
1460
- ) {
1461
- background: color-mix(in srgb, var(--domainkit-danger) 10%, var(--domainkit-fill));
1462
- color: var(--domainkit-danger);
1463
- }
1464
-
1465
- :where([data-operation="Noop"] [data-domainkit-part="operation-kind"]) {
1466
- background: var(--domainkit-background);
1467
- color: var(--domainkit-muted);
1468
- }
1469
-
1470
- /* A record name is longer than a dialog is wide; it wraps rather than running off the row. */
1471
- :where([data-domainkit-part="operation-record"]) {
1472
- color: var(--domainkit-muted);
1473
- display: grid;
1474
- font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
1475
- font-size: 0.75rem;
1476
- gap: 0.2rem;
1477
- min-width: 0;
1478
- overflow-wrap: anywhere;
1479
- }
1480
-
1481
- :where([data-domainkit-part="operation-value"]) {
1482
- color: var(--domainkit-text);
1483
- overflow-wrap: anywhere;
1484
- white-space: pre-wrap;
1485
- }
1486
-
1487
- :where([data-domainkit-part="operation-priority"]) {
1488
- font-size: 0.6875rem;
1489
- }
1490
-
1491
- :where([data-domainkit-part="operation-reason"]) {
1492
- color: var(--domainkit-danger);
1493
- }
1494
-
1495
- :where([data-operation="AlreadyAbsent"] [data-domainkit-part="operation-kind"]) {
1496
- background: var(--domainkit-background);
1497
- color: var(--domainkit-muted);
1498
- }
1499
-
1500
- :where([data-domainkit-part="cleanup-flow"]) {
1501
- display: flex;
1502
- flex-wrap: wrap;
1503
- gap: 0.5rem;
1504
- }
1505
-
1506
- /* -------------------------------------------------------------------------------------------
1507
- * Outcome: media, title, description, and the action, in a card or on one line
1508
- * ----------------------------------------------------------------------------------------- */
1509
-
1510
- :where([data-domainkit-part="outcome"]) {
1511
- --domainkit-outcome-tone: var(--domainkit-danger);
1512
- color: var(--domainkit-text);
1513
- font-size: 0.875rem;
1514
- width: 100%;
1515
- }
1516
-
1517
- :where([data-domainkit-part="outcome"][data-tone="success"]) {
1518
- --domainkit-outcome-tone: var(--domainkit-success);
1519
- }
1520
-
1521
- :where([data-domainkit-part="outcome"][data-tone="warning"]) {
1522
- --domainkit-outcome-tone: var(--domainkit-warning);
1523
- }
1524
-
1525
- :where([data-domainkit-part="outcome"][data-layout="card"]) {
1526
- border: 1px dashed color-mix(in srgb, var(--domainkit-outcome-tone) 45%, transparent);
1527
- border-radius: var(--domainkit-radius);
1528
- display: grid;
1529
- gap: 0.75rem;
1530
- justify-items: center;
1531
- padding: 1.25rem 1rem;
1532
- text-align: center;
1533
- }
1534
-
1535
- /* Glyph and title on one row, the description under the title, the action beside both. */
1536
- :where([data-domainkit-part="outcome"][data-layout="inline"]) {
1537
- align-items: start;
1538
- column-gap: 0.5rem;
1539
- display: grid;
1540
- grid-template-columns: auto minmax(0, 1fr) auto;
1541
- row-gap: 0.15rem;
1542
- }
1543
-
1544
- /* The header groups the words for a card; inline puts its parts on the outcome's own grid. */
1545
- :where(
1546
- [data-domainkit-part="outcome"][data-layout="inline"] [data-domainkit-part="outcome-header"]
1547
- ) {
1548
- display: contents;
1549
- }
1550
-
1551
- :where(
1552
- [data-domainkit-part="outcome"][data-layout="inline"] [data-domainkit-part="outcome-media"]
1553
- ) {
1554
- grid-area: 1 / 1;
1555
- }
1556
-
1557
- :where(
1558
- [data-domainkit-part="outcome"][data-layout="inline"] [data-domainkit-part="outcome-title"]
1559
- ) {
1560
- grid-area: 1 / 2;
1561
- }
1562
-
1563
- :where(
1564
- [data-domainkit-part="outcome"][data-layout="inline"]
1565
- [data-domainkit-part="outcome-description"]
1566
- ) {
1567
- grid-area: 2 / 2;
1568
- }
1569
-
1570
- /*
1571
- * The action sits on the title's row. Spanning the description's row too would hold that row
1572
- * open where an outcome has no description, and leave the row's gap under a single line.
1573
- */
1574
- :where(
1575
- [data-domainkit-part="outcome"][data-layout="inline"] [data-domainkit-part="outcome-content"]
1576
- ) {
1577
- align-self: start;
1578
- grid-area: 1 / 3;
1579
- }
1580
-
1581
- :where([data-domainkit-part="outcome-header"]) {
1582
- display: grid;
1583
- gap: 0.25rem;
1584
- justify-items: inherit;
1585
- }
1586
-
1587
- :where(
1588
- [data-domainkit-part="outcome"][data-layout="card"] [data-domainkit-part="outcome-header"]
1589
- ) {
1590
- gap: 0.35rem;
1591
- max-width: 26rem;
1592
- }
1593
-
1594
- :where([data-domainkit-part="outcome-media"]) {
1595
- align-items: center;
1596
- color: var(--domainkit-outcome-tone);
1597
- display: inline-flex;
1598
- justify-content: center;
1599
- }
1600
-
1601
- :where([data-domainkit-part="outcome-media"] svg) {
1602
- height: 1.25rem;
1603
- width: 1.25rem;
1604
- }
1605
-
1606
- :where([data-domainkit-part="outcome-media"][data-variant="icon"]) {
1607
- background: color-mix(in srgb, var(--domainkit-outcome-tone) 12%, transparent);
1608
- border-radius: var(--domainkit-control-radius);
1609
- height: 2.25rem;
1610
- width: 2.25rem;
1611
- }
1612
-
1613
- :where(
1614
- [data-domainkit-part="outcome"][data-layout="inline"]
1615
- [data-domainkit-part="outcome-media"][data-variant="icon"]
1616
- ) {
1617
- background: none;
1618
- height: 1.25rem;
1619
- width: 1.25rem;
1620
- }
1621
-
1622
- :where([data-domainkit-part="outcome-title"]) {
1623
- color: var(--domainkit-text);
1624
- font-size: 0.875rem;
1625
- font-weight: 600;
1626
- }
1627
-
1628
- :where([data-domainkit-part="outcome-description"]) {
1629
- color: var(--domainkit-muted);
1630
- font-size: 0.8125rem;
1631
- margin: 0;
1632
- }
1633
-
1634
- :where([data-domainkit-part="outcome-content"]) {
1635
- display: flex;
1636
- flex-wrap: wrap;
1637
- gap: 0.5rem;
1638
- }
1639
-
1640
- :where([data-domainkit-part]:focus-visible) {
1641
- outline: 2px solid var(--domainkit-accent);
1642
- outline-offset: 2px;
1643
- }
1644
-
1645
- @media (prefers-reduced-motion: reduce) {
1646
- :where([data-domainkit-part]) {
1647
- scroll-behavior: auto !important;
1648
- transition-duration: 0.01ms !important;
1649
- }
1650
- }
1651
-
1652
- /* ---------------------------------------------------------------------------------------------
1653
- * Domain.Flow, the connection form, and the review actions
1654
- * ------------------------------------------------------------------------------------------- */
1655
-
1656
- [data-domainkit-part="domain-flow"] {
1657
- display: grid;
1658
- gap: 0.75rem;
1659
- justify-items: start;
1660
- }
1661
-
1662
- [data-domainkit-part="domain-flow"] > [data-domainkit-part="records-panel"],
1663
- [data-domainkit-part="domain-flow"] > [data-domainkit-part="connected-card"] {
1664
- justify-self: stretch;
1665
- width: 100%;
1666
- }
1667
-
1668
- [data-domainkit-part="connection-form"] {
1669
- display: grid;
1670
- gap: 1rem;
1671
- }
1672
-
1673
- [data-domainkit-part="provider-heading"] {
1674
- align-items: center;
1675
- color: var(--domainkit-text);
1676
- display: flex;
1677
- font-size: 0.875rem;
1678
- gap: 0.5rem;
1679
- }
1680
-
1681
- [data-domainkit-part="token-connect"] {
1682
- display: grid;
1683
- gap: 0.5rem;
1684
- }
1685
-
1686
- [data-domainkit-part="field"] {
1687
- display: grid;
1688
- gap: 0.25rem;
1689
- }
1690
-
1691
- [data-domainkit-part="field"][data-orientation="horizontal"] {
1692
- align-items: center;
1693
- grid-template-columns: auto minmax(0, 1fr);
1694
- }
1695
-
1696
- [data-domainkit-part="field-label"] {
1697
- align-items: baseline;
1698
- color: var(--domainkit-muted);
1699
- display: flex;
1700
- font-size: 0.8125rem;
1701
- gap: 0.375rem;
1702
- }
1703
-
1704
- [data-domainkit-part="field-optional"] {
1705
- font-size: 0.75rem;
1706
- opacity: 0.8;
1707
- }
1708
-
1709
- [data-domainkit-part="field-input"] {
1710
- background-color: var(--domainkit-background);
1711
- border: 1px solid var(--domainkit-border);
1712
- border-radius: var(--domainkit-control-radius);
1713
- color: var(--domainkit-text);
1714
- font: inherit;
1715
- font-size: 0.875rem;
1716
- padding: 0.4375rem 0.625rem;
1717
- width: 100%;
1718
- }
1719
-
1720
- [data-domainkit-part="field-input"]:focus-visible {
1721
- border-color: var(--domainkit-accent);
1722
- outline: none;
1723
- }
1724
-
1725
- [data-domainkit-part="field-input"][aria-invalid="true"] {
1726
- border-color: var(--domainkit-danger);
1727
- }
1728
-
1729
- [data-domainkit-part="field-error"] {
1730
- display: grid;
1731
- gap: 0.25rem;
1732
- }
1733
-
1734
- [data-domainkit-part="field-description"] {
1735
- align-items: center;
1736
- border-radius: var(--domainkit-control-radius);
1737
- color: var(--domainkit-muted);
1738
- display: inline-flex;
1739
- font-size: 0.8125rem;
1740
- gap: 0.25rem;
1741
- justify-self: start;
1742
- margin-block: var(--domainkit-quiet-lead) var(--domainkit-quiet-trail);
1743
- margin-inline-start: calc(-1 * var(--domainkit-quiet-inset));
1744
- padding: var(--domainkit-quiet-pad) var(--domainkit-quiet-inset);
1745
- text-decoration: none;
1746
- }
1747
-
1748
- [data-domainkit-part="field-description"]:hover {
1749
- background: var(--domainkit-fill);
1750
- color: var(--domainkit-text);
1751
- }
1752
-
1753
- /* ---------------------------------------------------------------------------------------------
1754
- * The disconnected prompt, and the disclosures that keep the dialog to one decision
1755
- * ------------------------------------------------------------------------------------------- */
1756
-
1757
- [data-domainkit-part="connect-prompt"] {
1758
- align-items: center;
1759
- display: flex;
1760
- flex-wrap: wrap;
1761
- gap: 0.75rem;
1762
- justify-content: space-between;
1763
- width: 100%;
1764
- }
1765
-
1766
- /*
1767
- * The mark beside a name, with the line about it directly under: both cards read the same. Two
1768
- * explicit rows carry the name and the line, and the mark spans them, so it stands against the
1769
- * whole identity rather than hanging off the name.
1770
- */
1771
- [data-domainkit-part="connected-identity"],
1772
- [data-domainkit-part="host-identity"] {
1773
- column-gap: 0.5rem;
1774
- display: grid;
1775
- grid-template-columns: auto minmax(0, 1fr);
1776
- grid-template-rows: auto auto;
1777
- min-width: 0;
1778
- row-gap: 0;
1779
- }
1780
-
1781
- [data-domainkit-part="connected-identity"] > [data-domainkit-part="provider-mark"],
1782
- [data-domainkit-part="host-identity"] > [data-domainkit-part="provider-mark"] {
1783
- align-self: center;
1784
- grid-row: 1 / -1;
1785
- }
1786
-
1787
- [data-domainkit-part="host-name"] {
1788
- font-size: var(--domainkit-identity-name);
1789
- font-weight: 600;
1790
- grid-column: 2;
1791
- line-height: var(--domainkit-identity-leading);
1792
- }
1793
-
1794
- [data-domainkit-part="host-statement"] {
1795
- color: var(--domainkit-muted);
1796
- font-size: var(--domainkit-identity-line);
1797
- grid-column: 2;
1798
- line-height: var(--domainkit-identity-leading);
1799
- }
1800
-
1801
- button[data-domainkit-part="provider-heading"] {
1802
- background: none;
1803
- border: 0;
1804
- cursor: pointer;
1805
- padding: 0;
1806
- text-align: start;
1807
- width: 100%;
1808
- }
1809
-
1810
- [data-domainkit-part="discovery-resolved"],
1811
- [data-domainkit-part="discovery-candidates"] {
1812
- display: grid;
1813
- gap: 0.5rem;
1814
- }
1815
-
1816
- [data-domainkit-part="review-actions"] {
1817
- display: flex;
1818
- flex-wrap: wrap;
1819
- gap: 0.5rem;
1820
- }
1821
-
1822
- [data-domainkit-part="provisioning-status"],
1823
- [data-domainkit-part="cleanup-status"],
1824
- [data-domainkit-part="plan-decline-reason"],
1825
- [data-domainkit-part="plan-empty"] {
1826
- color: var(--domainkit-muted);
1827
- font-size: 0.875rem;
1828
- margin: 0;
1829
- }
1830
-
1831
- [data-domainkit-part="provisioning-status"]:empty,
1832
- [data-domainkit-part="cleanup-status"]:empty,
1833
- [data-domainkit-part="connection-status"]:empty {
1834
- display: none;
1835
- }
1836
-
1837
- [data-domainkit-part="record-purpose"] {
1838
- color: var(--domainkit-muted);
1839
- display: block;
1840
- font-size: 0.8125rem;
1841
- }
1842
-
1843
- [data-domainkit-part="host-evidence"] {
1844
- align-items: center;
1845
- display: flex;
1846
- flex-wrap: wrap;
1847
- gap: 0.375rem;
1848
- }
1849
-
1850
- /* A DKIM key is one word wider than the popover; it breaks rather than widening the whole list. */
1851
- [data-domainkit-part="observation-expected"] {
1852
- color: var(--domainkit-muted);
1853
- font-size: 0.8125rem;
1854
- margin: 0;
1855
- overflow-wrap: anywhere;
1856
- }
1857
-
1858
- /* The source line above these is a small uppercase label; the values under it are data. */
1859
- [data-domainkit-part="observation-observed"] {
1860
- color: var(--domainkit-text);
1861
- display: block;
1862
- font-size: 0.8125rem;
1863
- font-weight: 400;
1864
- letter-spacing: normal;
1865
- margin-top: 0.125rem;
1866
- overflow-wrap: anywhere;
1867
- text-transform: none;
1868
- }
1869
-
1870
- [data-domainkit-part="observation-source"] [data-domainkit-part="observation-note"] {
1871
- font-weight: 400;
1872
- letter-spacing: normal;
1873
- text-transform: none;
1874
- }
1875
- }