gbs-add-block 2.1.0 → 2.3.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.
Files changed (129) hide show
  1. package/.gbs/skills/gbs-components/SKILL.md +190 -134
  2. package/.gbs/skills/gbs-components/references/install.md +25 -3
  3. package/.gbs/skills/gbs-components/references/styling.md +246 -207
  4. package/CHANGELOG.md +74 -0
  5. package/README.md +154 -23
  6. package/index.cjs +212 -3
  7. package/package.json +41 -10
  8. package/schema/passport-v1.schema.json +204 -0
  9. package/source/beta-components/accordion/passport.json +259 -0
  10. package/source/beta-components/accordion/styles.css +207 -208
  11. package/source/beta-components/alert/passport.json +250 -0
  12. package/source/beta-components/alert/styles.css +154 -155
  13. package/source/beta-components/avatar/passport.json +294 -0
  14. package/source/beta-components/avatar/styles.css +225 -226
  15. package/source/beta-components/badge/passport.json +332 -0
  16. package/source/beta-components/badge/styles.css +203 -204
  17. package/source/beta-components/breadcrumb/passport.json +243 -0
  18. package/source/beta-components/breadcrumb/styles.css +138 -140
  19. package/source/beta-components/button/passport.json +402 -0
  20. package/source/beta-components/button/passport.manual.json +31 -0
  21. package/source/beta-components/button/styles.css +232 -234
  22. package/source/beta-components/card/passport.json +337 -0
  23. package/source/beta-components/card/styles.css +230 -232
  24. package/source/beta-components/checkbox/passport.json +456 -0
  25. package/source/beta-components/checkbox/styles.css +211 -213
  26. package/source/beta-components/combobox/passport.json +456 -0
  27. package/source/beta-components/combobox/styles.css +419 -417
  28. package/source/beta-components/data-grid/agent/coerce.ts +368 -0
  29. package/source/beta-components/data-grid/agent/contract.ts +410 -0
  30. package/source/beta-components/data-grid/agent/dataset.ts +92 -0
  31. package/source/beta-components/data-grid/agent/engine.ts +470 -0
  32. package/source/beta-components/data-grid/agent/executors.ts +155 -0
  33. package/source/beta-components/data-grid/agent/index.ts +79 -0
  34. package/source/beta-components/data-grid/agent/intent.ts +324 -0
  35. package/source/beta-components/data-grid/agent/operations.ts +335 -0
  36. package/source/beta-components/data-grid/agent/validate.ts +630 -0
  37. package/source/beta-components/data-grid/agent/webmcp.ts +107 -0
  38. package/source/beta-components/data-grid/index.ts +14 -7
  39. package/source/beta-components/data-grid/passport.json +1051 -0
  40. package/source/beta-components/data-grid/passport.manual.json +255 -0
  41. package/source/beta-components/data-grid/react/AskGrid.tsx +164 -0
  42. package/source/beta-components/data-grid/react/DataGrid.tsx +39 -0
  43. package/source/beta-components/data-grid/styles.css +874 -716
  44. package/source/beta-components/date-picker/passport.json +407 -0
  45. package/source/beta-components/date-picker/styles.css +445 -446
  46. package/source/beta-components/dialog/passport.json +344 -0
  47. package/source/beta-components/dialog/styles.css +280 -279
  48. package/source/beta-components/file-uploader/passport.json +518 -0
  49. package/source/beta-components/file-uploader/styles.css +394 -396
  50. package/source/beta-components/input/passport.json +536 -0
  51. package/source/beta-components/input/styles.css +295 -297
  52. package/source/beta-components/menu/passport.json +322 -0
  53. package/source/beta-components/menu/styles.css +224 -223
  54. package/source/beta-components/modal/passport.json +289 -0
  55. package/source/beta-components/modal/styles.css +241 -240
  56. package/source/beta-components/number-input/passport.json +541 -0
  57. package/source/beta-components/number-input/styles.css +230 -231
  58. package/source/beta-components/popover/passport.json +238 -0
  59. package/source/beta-components/popover/styles.css +148 -147
  60. package/source/beta-components/progress/passport.json +270 -0
  61. package/source/beta-components/progress/styles.css +200 -201
  62. package/source/beta-components/radio-group/passport.json +477 -0
  63. package/source/beta-components/radio-group/styles.css +269 -270
  64. package/source/beta-components/shared/core/agent/adapter.ts +65 -0
  65. package/source/beta-components/shared/core/agent/history.ts +120 -0
  66. package/source/beta-components/shared/core/agent/index.ts +46 -0
  67. package/source/beta-components/shared/core/agent/numbers.ts +217 -0
  68. package/source/beta-components/shared/core/agent/schema.ts +180 -0
  69. package/source/beta-components/shared/core/agent/types.ts +169 -0
  70. package/source/beta-components/shared/core/agent/webmcp.ts +328 -0
  71. package/source/beta-components/shared/index.ts +9 -0
  72. package/source/beta-components/shared/react/GramproAIProvider.tsx +50 -0
  73. package/source/beta-components/shared/react/useAskAgent.ts +217 -0
  74. package/source/beta-components/shared/styles.css +79 -0
  75. package/source/beta-components/shared/version.json +4 -4
  76. package/source/beta-components/shared/version.ts +6 -6
  77. package/source/beta-components/skeleton/passport.json +251 -0
  78. package/source/beta-components/skeleton/styles.css +185 -187
  79. package/source/beta-components/spinner/passport.json +245 -0
  80. package/source/beta-components/spinner/styles.css +173 -174
  81. package/source/beta-components/switch/passport.json +421 -0
  82. package/source/beta-components/switch/styles.css +227 -229
  83. package/source/beta-components/tabs/passport.json +315 -0
  84. package/source/beta-components/tabs/styles.css +263 -264
  85. package/source/beta-components/textarea/passport.json +382 -0
  86. package/source/beta-components/textarea/styles.css +158 -160
  87. package/source/beta-components/toaster/passport.json +221 -0
  88. package/source/beta-components/toaster/styles.css +282 -282
  89. package/source/beta-components/tooltip/passport.json +170 -0
  90. package/source/beta-components/tooltip/styles.css +71 -73
  91. package/tools/env.cjs +61 -0
  92. package/tools/passport/cli.cjs +79 -0
  93. package/tools/passport/extract.cjs +493 -0
  94. package/tools/passport/index.cjs +185 -0
  95. package/tools/passport/merge.cjs +131 -0
  96. package/tools/passport/policy.cjs +65 -0
  97. package/tools/passport/validate.cjs +277 -0
  98. package/tools/ts-require.cjs +79 -0
  99. package/source/beta-components/accordion/__tests__/core.test.ts +0 -58
  100. package/source/beta-components/alert/__tests__/core.test.ts +0 -17
  101. package/source/beta-components/avatar/__tests__/core.test.ts +0 -88
  102. package/source/beta-components/badge/__tests__/core.test.ts +0 -46
  103. package/source/beta-components/breadcrumb/__tests__/core.test.ts +0 -58
  104. package/source/beta-components/button/__tests__/core.test.ts +0 -31
  105. package/source/beta-components/card/__tests__/core.test.ts +0 -57
  106. package/source/beta-components/checkbox/__tests__/core.test.ts +0 -40
  107. package/source/beta-components/combobox/__tests__/core.test.ts +0 -134
  108. package/source/beta-components/data-grid/__tests__/core.test.ts +0 -356
  109. package/source/beta-components/data-grid/__tests__/export.test.ts +0 -70
  110. package/source/beta-components/data-grid/__tests__/pdf.test.ts +0 -209
  111. package/source/beta-components/date-picker/__tests__/core.test.ts +0 -273
  112. package/source/beta-components/dialog/__tests__/core.test.ts +0 -86
  113. package/source/beta-components/file-uploader/__tests__/core.test.ts +0 -395
  114. package/source/beta-components/input/__tests__/core.test.ts +0 -75
  115. package/source/beta-components/menu/__tests__/core.test.ts +0 -120
  116. package/source/beta-components/modal/__tests__/core.test.ts +0 -55
  117. package/source/beta-components/number-input/__tests__/core.test.ts +0 -151
  118. package/source/beta-components/progress/__tests__/core.test.ts +0 -56
  119. package/source/beta-components/radio-group/__tests__/core.test.ts +0 -64
  120. package/source/beta-components/shared/__tests__/boundaries.test.ts +0 -95
  121. package/source/beta-components/shared/__tests__/core.test.ts +0 -55
  122. package/source/beta-components/shared/__tests__/position.test.ts +0 -143
  123. package/source/beta-components/skeleton/__tests__/core.test.ts +0 -41
  124. package/source/beta-components/spinner/__tests__/core.test.ts +0 -48
  125. package/source/beta-components/switch/__tests__/core.test.ts +0 -64
  126. package/source/beta-components/tabs/__tests__/core.test.ts +0 -51
  127. package/source/beta-components/textarea/__tests__/core.test.ts +0 -38
  128. package/source/beta-components/toaster/__tests__/core.test.ts +0 -256
  129. package/source/beta-components/tooltip/__tests__/core.test.ts +0 -42
@@ -1,279 +1,280 @@
1
- /*
2
- * Dialog styles (alert, confirm and prompt).
3
- *
4
- * Tokens read the shared --gbs-* variables when they are set on an ancestor
5
- * (set them on :root to theme every component at once) and fall back to the
6
- * same default palette otherwise. Rules live in the `gbs` layer. Declare
7
- * where that sits in your global CSS — e.g. `@layer reset, gbs, app,
8
- * utilities;` — and anything in a later layer, Tailwind utilities included,
9
- * overrides them.
10
- */
11
-
12
- @layer gbs {
13
- .dl-root {
14
- --dl-bg: var(--gbs-bg, var(--dg-bg, light-dark(#ffffff, #0b0b0e)));
15
- --dl-fg: var(--gbs-fg, var(--dg-fg, light-dark(#18181b, #f4f4f5)));
16
- --dl-muted: var(--gbs-muted, var(--dg-muted, light-dark(#71717a, #a1a1aa)));
17
- --dl-border: var(--gbs-border, var(--dg-border, light-dark(#e4e4e7, #27272a)));
18
- --dl-hover: var(--gbs-hover, var(--dg-hover, light-dark(#f4f4f5, #1f1f23)));
19
- --dl-input-bg: var(--gbs-input-bg, var(--dg-input-bg, light-dark(#ffffff, #121216)));
20
- --dl-accent: var(--gbs-accent, var(--dg-accent, light-dark(#2563eb, #60a5fa)));
21
- --dl-accent-fg: var(--gbs-accent-fg, var(--dg-accent-fg, light-dark(#ffffff, #0b1220)));
22
- --dl-focus: var(--gbs-focus, var(--dg-focus, light-dark(#2563eb, #60a5fa)));
23
- --dl-danger: var(--gbs-danger, var(--dg-danger, light-dark(#dc2626, #f87171)));
24
- --dl-danger-fg: var(--gbs-danger-fg, light-dark(#ffffff, #1c0606));
25
- --dl-success: var(--gbs-success, light-dark(#15803d, #4ade80));
26
- --dl-warning: var(--gbs-warning, light-dark(#d97706, #fbbf24));
27
- --dl-info: var(--gbs-info, var(--gbs-accent, var(--dg-accent, light-dark(#2563eb, #60a5fa))));
28
- --dl-shadow: 0 24px 64px -16px light-dark(rgb(0 0 0 / 0.3), rgb(0 0 0 / 0.8));
29
- --dl-backdrop: var(--gbs-backdrop, light-dark(rgb(9 9 11 / 0.45), rgb(0 0 0 / 0.65)));
30
- --dl-radius: var(--gbs-radius, var(--dg-radius, 12px));
31
- --dl-font-size: var(--gbs-font-size, var(--dg-font-size, 13px));
32
- --dl-width: 420px;
33
- --dl-intent: transparent;
34
- --dl-duration: 200ms;
35
-
36
- color-scheme: inherit;
37
- box-sizing: border-box;
38
- width: min(var(--dl-width), 100vw - 32px);
39
- max-width: none;
40
- max-height: calc(100dvh - 32px);
41
- margin: auto;
42
- padding: 0;
43
- overflow: auto;
44
- border: 1px solid var(--dl-border);
45
- border-radius: var(--dl-radius);
46
- background: var(--dl-bg);
47
- color: var(--dl-fg);
48
- box-shadow: var(--dl-shadow);
49
- font-size: var(--dl-font-size);
50
- line-height: 1.5;
51
- opacity: 0;
52
- scale: 0.96;
53
- transition:
54
- opacity var(--dl-duration) ease,
55
- scale var(--dl-duration) ease,
56
- overlay var(--dl-duration) allow-discrete,
57
- display var(--dl-duration) allow-discrete;
58
- }
59
- .dl-root[open] {
60
- opacity: 1;
61
- scale: 1;
62
- }
63
- @starting-style {
64
- .dl-root[open] {
65
- opacity: 0;
66
- scale: 0.96;
67
- }
68
- }
69
-
70
- .dl-root::backdrop {
71
- background: var(--dl-backdrop, rgb(9 9 11 / 0.45));
72
- opacity: 0;
73
- transition:
74
- opacity var(--dl-duration) ease,
75
- overlay var(--dl-duration) allow-discrete,
76
- display var(--dl-duration) allow-discrete;
77
- }
78
- .dl-root[open]::backdrop {
79
- opacity: 1;
80
- }
81
- @starting-style {
82
- .dl-root[open]::backdrop {
83
- opacity: 0;
84
- }
85
- }
86
-
87
- :where(.dark, [data-theme="dark"]) .dl-root {
88
- color-scheme: dark;
89
- }
90
- :where(.light, [data-theme="light"]) .dl-root {
91
- color-scheme: light;
92
- }
93
-
94
- :where(.dl-root) *,
95
- :where(.dl-root) *::before,
96
- :where(.dl-root) *::after {
97
- box-sizing: border-box;
98
- }
99
-
100
- :root:has(.dl-root[open]) {
101
- overflow: hidden;
102
- }
103
-
104
- .dl-root[data-size="md"] {
105
- --dl-width: 540px;
106
- }
107
- .dl-root[data-intent="info"] {
108
- --dl-intent: var(--dl-info);
109
- }
110
- .dl-root[data-intent="success"] {
111
- --dl-intent: var(--dl-success);
112
- }
113
- .dl-root[data-intent="warning"] {
114
- --dl-intent: var(--dl-warning);
115
- }
116
- .dl-root[data-intent="danger"] {
117
- --dl-intent: var(--dl-danger);
118
- }
119
-
120
- /* ------------------------------------------------------------ content */
121
-
122
- .dl-body {
123
- display: flex;
124
- align-items: flex-start;
125
- gap: 14px;
126
- padding: 20px 20px 16px;
127
- }
128
- .dl-icon {
129
- display: grid;
130
- flex: none;
131
- place-items: center;
132
- width: 38px;
133
- height: 38px;
134
- border-radius: 50%;
135
- background: color-mix(in oklab, var(--dl-intent), transparent 86%);
136
- color: var(--dl-intent);
137
- }
138
- .dl-text {
139
- display: flex;
140
- flex: 1 1 auto;
141
- flex-direction: column;
142
- gap: 6px;
143
- min-width: 0;
144
- }
145
- .dl-title {
146
- margin: 0;
147
- font-size: 1.15em;
148
- font-weight: 600;
149
- line-height: 1.35;
150
- overflow-wrap: anywhere;
151
- }
152
- .dl-description {
153
- color: var(--dl-muted);
154
- overflow-wrap: anywhere;
155
- }
156
-
157
- .dl-field {
158
- display: flex;
159
- flex-direction: column;
160
- gap: 4px;
161
- margin-top: 6px;
162
- }
163
- .dl-label {
164
- font-weight: 500;
165
- }
166
- .dl-input {
167
- width: 100%;
168
- height: 36px;
169
- padding: 0 10px;
170
- border: 1px solid var(--dl-border);
171
- border-radius: 8px;
172
- background: var(--dl-input-bg);
173
- color: inherit;
174
- font: inherit;
175
- }
176
- .dl-input:focus-visible {
177
- outline: 2px solid var(--dl-focus);
178
- outline-offset: -1px;
179
- }
180
- .dl-input[aria-invalid="true"] {
181
- border-color: var(--dl-danger);
182
- outline-color: var(--dl-danger);
183
- }
184
- .dl-error {
185
- margin: 0;
186
- color: var(--dl-danger);
187
- font-size: 0.92em;
188
- }
189
-
190
- /* ------------------------------------------------------------ actions */
191
-
192
- .dl-actions {
193
- display: flex;
194
- flex-wrap: wrap;
195
- justify-content: flex-end;
196
- gap: 8px;
197
- padding: 12px 20px;
198
- border-top: 1px solid var(--dl-border);
199
- background: var(--gbs-header-bg, var(--dg-header-bg, light-dark(#fafafa, #111114)));
200
- }
201
- .dl-button {
202
- display: inline-flex;
203
- align-items: center;
204
- justify-content: center;
205
- gap: 6px;
206
- min-width: 80px;
207
- height: 34px;
208
- padding: 0 14px;
209
- border: 1px solid var(--dl-border);
210
- border-radius: 8px;
211
- background: var(--dl-bg);
212
- color: inherit;
213
- font: inherit;
214
- font-weight: 500;
215
- white-space: nowrap;
216
- cursor: pointer;
217
- }
218
- .dl-button:hover:not([aria-disabled="true"]) {
219
- background: var(--dl-hover);
220
- }
221
- .dl-button[data-variant="primary"] {
222
- border-color: var(--dl-accent);
223
- background: var(--dl-accent);
224
- color: var(--dl-accent-fg);
225
- }
226
- .dl-button[data-variant="danger"] {
227
- border-color: var(--dl-danger);
228
- background: var(--dl-danger);
229
- color: var(--dl-danger-fg);
230
- }
231
- .dl-button[data-variant="primary"]:hover:not([aria-disabled="true"]) {
232
- background: color-mix(in oklab, var(--dl-accent), var(--dl-fg) 12%);
233
- }
234
- .dl-button[data-variant="danger"]:hover:not([aria-disabled="true"]) {
235
- background: color-mix(in oklab, var(--dl-danger), var(--dl-fg) 12%);
236
- }
237
- .dl-button:focus-visible {
238
- outline: 2px solid var(--dl-focus);
239
- outline-offset: 2px;
240
- }
241
- .dl-button[aria-disabled="true"] {
242
- opacity: 0.65;
243
- cursor: progress;
244
- }
245
-
246
- .dl-spinner {
247
- animation: dl-spin 0.7s linear infinite;
248
- }
249
- @keyframes dl-spin {
250
- to {
251
- transform: rotate(360deg);
252
- }
253
- }
254
-
255
- @media (max-width: 480px) {
256
- .dl-actions {
257
- flex-direction: column-reverse;
258
- }
259
- .dl-button {
260
- width: 100%;
261
- }
262
- }
263
-
264
- @media (prefers-reduced-motion: reduce) {
265
- .dl-root,
266
- .dl-root::backdrop {
267
- transition-duration: 0s;
268
- }
269
- .dl-spinner {
270
- animation-duration: 2s;
271
- }
272
- }
273
-
274
- @media (forced-colors: active) {
275
- .dl-root {
276
- border: 1px solid CanvasText;
277
- }
278
- }
279
- }
1
+ /*
2
+ * Dialog styles (alert, confirm and prompt).
3
+ *
4
+ * Tokens read the shared --gbs-* variables when they are set on an ancestor
5
+ * (set them on :root to theme every component at once) and fall back to the
6
+ * same default palette otherwise. Rules are unlayered: they beat a framework
7
+ * reset on specificity, and lose to anything you pass through `className`.
8
+ * With Tailwind v4, import this file after the framework and inside its
9
+ * components layer - see the README.
10
+ */
11
+
12
+ .dl-root {
13
+ --dl-bg: var(--gbs-bg, var(--dg-bg, light-dark(#ffffff, #0b0b0e)));
14
+ --dl-fg: var(--gbs-fg, var(--dg-fg, light-dark(#18181b, #f4f4f5)));
15
+ --dl-muted: var(--gbs-muted, var(--dg-muted, light-dark(#71717a, #a1a1aa)));
16
+ --dl-border: var(--gbs-border, var(--dg-border, light-dark(#e4e4e7, #27272a)));
17
+ --dl-hover: var(--gbs-hover, var(--dg-hover, light-dark(#f4f4f5, #1f1f23)));
18
+ --dl-input-bg: var(--gbs-input-bg, var(--dg-input-bg, light-dark(#ffffff, #121216)));
19
+ --dl-accent: var(--gbs-accent, var(--dg-accent, light-dark(#2563eb, #60a5fa)));
20
+ --dl-accent-fg: var(--gbs-accent-fg, var(--dg-accent-fg, light-dark(#ffffff, #0b1220)));
21
+ --dl-focus: var(--gbs-focus, var(--dg-focus, light-dark(#2563eb, #60a5fa)));
22
+ --dl-danger: var(--gbs-danger, var(--dg-danger, light-dark(#dc2626, #f87171)));
23
+ --dl-danger-fg: var(--gbs-danger-fg, light-dark(#ffffff, #1c0606));
24
+ --dl-success: var(--gbs-success, light-dark(#15803d, #4ade80));
25
+ --dl-warning: var(--gbs-warning, light-dark(#d97706, #fbbf24));
26
+ --dl-info: var(--gbs-info, var(--gbs-accent, var(--dg-accent, light-dark(#2563eb, #60a5fa))));
27
+ --dl-shadow: 0 24px 64px -16px light-dark(rgb(0 0 0 / 0.3), rgb(0 0 0 / 0.8));
28
+ --dl-backdrop: var(--gbs-backdrop, light-dark(rgb(9 9 11 / 0.45), rgb(0 0 0 / 0.65)));
29
+ --dl-radius: var(--gbs-radius, var(--dg-radius, 12px));
30
+ --dl-font-size: var(--gbs-font-size, var(--dg-font-size, 13px));
31
+ --dl-width: 420px;
32
+ --dl-intent: transparent;
33
+ --dl-duration: 200ms;
34
+
35
+ color-scheme: inherit;
36
+ box-sizing: border-box;
37
+ width: min(var(--dl-width), 100vw - 32px);
38
+ max-width: none;
39
+ max-height: calc(100dvh - 32px);
40
+ margin: auto;
41
+ padding: 0;
42
+ overflow: auto;
43
+ border: 1px solid var(--dl-border);
44
+ border-radius: var(--dl-radius);
45
+ background: var(--dl-bg);
46
+ color: var(--dl-fg);
47
+ box-shadow: var(--dl-shadow);
48
+ font-size: var(--dl-font-size);
49
+ line-height: 1.5;
50
+ opacity: 0;
51
+ scale: 0.96;
52
+ transition:
53
+ opacity var(--dl-duration) ease,
54
+ scale var(--dl-duration) ease,
55
+ overlay var(--dl-duration) allow-discrete,
56
+ display var(--dl-duration) allow-discrete;
57
+ scrollbar-width: var(--gbs-scrollbar-width, thin);
58
+ scrollbar-color: var(--gbs-scrollbar-thumb, light-dark(#c4c4ca, #3f3f46))
59
+ var(--gbs-scrollbar-track, transparent);
60
+ }
61
+ .dl-root[open] {
62
+ opacity: 1;
63
+ scale: 1;
64
+ }
65
+ @starting-style {
66
+ .dl-root[open] {
67
+ opacity: 0;
68
+ scale: 0.96;
69
+ }
70
+ }
71
+
72
+ .dl-root::backdrop {
73
+ background: var(--dl-backdrop, rgb(9 9 11 / 0.45));
74
+ opacity: 0;
75
+ transition:
76
+ opacity var(--dl-duration) ease,
77
+ overlay var(--dl-duration) allow-discrete,
78
+ display var(--dl-duration) allow-discrete;
79
+ }
80
+ .dl-root[open]::backdrop {
81
+ opacity: 1;
82
+ }
83
+ @starting-style {
84
+ .dl-root[open]::backdrop {
85
+ opacity: 0;
86
+ }
87
+ }
88
+
89
+ :where(.dark, [data-theme="dark"]) .dl-root {
90
+ color-scheme: dark;
91
+ }
92
+ :where(.light, [data-theme="light"]) .dl-root {
93
+ color-scheme: light;
94
+ }
95
+
96
+ :where(.dl-root) *,
97
+ :where(.dl-root) *::before,
98
+ :where(.dl-root) *::after {
99
+ box-sizing: border-box;
100
+ }
101
+
102
+ :root:has(.dl-root[open]) {
103
+ overflow: hidden;
104
+ }
105
+
106
+ .dl-root[data-size="md"] {
107
+ --dl-width: 540px;
108
+ }
109
+ .dl-root[data-intent="info"] {
110
+ --dl-intent: var(--dl-info);
111
+ }
112
+ .dl-root[data-intent="success"] {
113
+ --dl-intent: var(--dl-success);
114
+ }
115
+ .dl-root[data-intent="warning"] {
116
+ --dl-intent: var(--dl-warning);
117
+ }
118
+ .dl-root[data-intent="danger"] {
119
+ --dl-intent: var(--dl-danger);
120
+ }
121
+
122
+ /* ------------------------------------------------------------ content */
123
+
124
+ .dl-body {
125
+ display: flex;
126
+ align-items: flex-start;
127
+ gap: 14px;
128
+ padding: 20px 20px 16px;
129
+ }
130
+ .dl-icon {
131
+ display: grid;
132
+ flex: none;
133
+ place-items: center;
134
+ width: 38px;
135
+ height: 38px;
136
+ border-radius: 50%;
137
+ background: color-mix(in oklab, var(--dl-intent), transparent 86%);
138
+ color: var(--dl-intent);
139
+ }
140
+ .dl-text {
141
+ display: flex;
142
+ flex: 1 1 auto;
143
+ flex-direction: column;
144
+ gap: 6px;
145
+ min-width: 0;
146
+ }
147
+ .dl-title {
148
+ margin: 0;
149
+ font-size: 1.15em;
150
+ font-weight: 600;
151
+ line-height: 1.35;
152
+ overflow-wrap: anywhere;
153
+ }
154
+ .dl-description {
155
+ color: var(--dl-muted);
156
+ overflow-wrap: anywhere;
157
+ }
158
+
159
+ .dl-field {
160
+ display: flex;
161
+ flex-direction: column;
162
+ gap: 4px;
163
+ margin-top: 6px;
164
+ }
165
+ .dl-label {
166
+ font-weight: 500;
167
+ }
168
+ .dl-input {
169
+ width: 100%;
170
+ height: 36px;
171
+ padding: 0 10px;
172
+ border: 1px solid var(--dl-border);
173
+ border-radius: 8px;
174
+ background: var(--dl-input-bg);
175
+ color: inherit;
176
+ font: inherit;
177
+ }
178
+ .dl-input:focus-visible {
179
+ outline: 2px solid var(--dl-focus);
180
+ outline-offset: -1px;
181
+ }
182
+ .dl-input[aria-invalid="true"] {
183
+ border-color: var(--dl-danger);
184
+ outline-color: var(--dl-danger);
185
+ }
186
+ .dl-error {
187
+ margin: 0;
188
+ color: var(--dl-danger);
189
+ font-size: 0.92em;
190
+ }
191
+
192
+ /* ------------------------------------------------------------ actions */
193
+
194
+ .dl-actions {
195
+ display: flex;
196
+ flex-wrap: wrap;
197
+ justify-content: flex-end;
198
+ gap: 8px;
199
+ padding: 12px 20px;
200
+ border-top: 1px solid var(--dl-border);
201
+ background: var(--gbs-header-bg, var(--dg-header-bg, light-dark(#fafafa, #111114)));
202
+ }
203
+ .dl-button {
204
+ display: inline-flex;
205
+ align-items: center;
206
+ justify-content: center;
207
+ gap: 6px;
208
+ min-width: 80px;
209
+ height: 34px;
210
+ padding: 0 14px;
211
+ border: 1px solid var(--dl-border);
212
+ border-radius: 8px;
213
+ background: var(--dl-bg);
214
+ color: inherit;
215
+ font: inherit;
216
+ font-weight: 500;
217
+ white-space: nowrap;
218
+ cursor: pointer;
219
+ }
220
+ .dl-button:hover:not([aria-disabled="true"]) {
221
+ background: var(--dl-hover);
222
+ }
223
+ .dl-button[data-variant="primary"] {
224
+ border-color: var(--dl-accent);
225
+ background: var(--dl-accent);
226
+ color: var(--dl-accent-fg);
227
+ }
228
+ .dl-button[data-variant="danger"] {
229
+ border-color: var(--dl-danger);
230
+ background: var(--dl-danger);
231
+ color: var(--dl-danger-fg);
232
+ }
233
+ .dl-button[data-variant="primary"]:hover:not([aria-disabled="true"]) {
234
+ background: color-mix(in oklab, var(--dl-accent), var(--dl-fg) 12%);
235
+ }
236
+ .dl-button[data-variant="danger"]:hover:not([aria-disabled="true"]) {
237
+ background: color-mix(in oklab, var(--dl-danger), var(--dl-fg) 12%);
238
+ }
239
+ .dl-button:focus-visible {
240
+ outline: 2px solid var(--dl-focus);
241
+ outline-offset: 2px;
242
+ }
243
+ .dl-button[aria-disabled="true"] {
244
+ opacity: 0.65;
245
+ cursor: progress;
246
+ }
247
+
248
+ .dl-spinner {
249
+ animation: dl-spin 0.7s linear infinite;
250
+ }
251
+ @keyframes dl-spin {
252
+ to {
253
+ transform: rotate(360deg);
254
+ }
255
+ }
256
+
257
+ @media (max-width: 480px) {
258
+ .dl-actions {
259
+ flex-direction: column-reverse;
260
+ }
261
+ .dl-button {
262
+ width: 100%;
263
+ }
264
+ }
265
+
266
+ @media (prefers-reduced-motion: reduce) {
267
+ .dl-root,
268
+ .dl-root::backdrop {
269
+ transition-duration: 0s;
270
+ }
271
+ .dl-spinner {
272
+ animation-duration: 2s;
273
+ }
274
+ }
275
+
276
+ @media (forced-colors: active) {
277
+ .dl-root {
278
+ border: 1px solid CanvasText;
279
+ }
280
+ }