dev-process-kit 0.2.0 → 0.3.0-beta.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/README.md +178 -60
- package/dist/boards.js +1 -0
- package/dist/chunks/shared-B0QTGEwR.js +1844 -0
- package/dist/chunks/shared-BQqlFaPv.js +4928 -0
- package/dist/chunks/shared-BR7trWLo.js +3586 -0
- package/dist/chunks/shared-BpfuvyBP.js +1636 -0
- package/dist/chunks/shared-C1rWkW_W.js +705 -0
- package/dist/chunks/shared-C6hVLci2.js +574 -0
- package/dist/chunks/shared-CtoQ05tb.js +1 -0
- package/dist/chunks/{shared-DJruxrrR.js → shared-DW3QUBTw.js} +25 -56
- package/dist/chunks/shared-DXoggfKr.js +31 -0
- package/dist/chunks/shared-DbgUhOLb.js +686 -0
- package/dist/chunks/shared-Dj_D4ypT.js +2165 -0
- package/dist/chunks/shared-DuB4veji.js +904 -0
- package/dist/chunks/shared-TrlnHjrJ.js +1 -0
- package/dist/chunks/shared-bW1cft1H.js +2530 -0
- package/dist/chunks/shared-jVZVFFNq.js +602 -0
- package/dist/chunks/shared-xpAS9Ri4.js +6208 -0
- package/dist/chunks/shared-ztEUikTm.js +1 -0
- package/dist/components.js +1 -1
- package/dist/index.js +1 -1
- package/dist/views/delegation-poker.js +1 -0
- package/dist/views/plain.js +1 -0
- package/dist/views/prototype.js +1 -0
- package/dist/views/slides.js +1 -0
- package/dist/views/task-board.js +1 -0
- package/dist/views/usm.js +1 -0
- package/package.json +8 -10
- package/dist/chunks/shared-Ae8HmujL.js +0 -49
- package/dist/chunks/shared-B5lBiq5s.js +0 -1
- package/dist/chunks/shared-BCmqTEeQ.js +0 -1051
- package/dist/chunks/shared-BkM7jfZs.js +0 -1104
- package/dist/chunks/shared-Bo8OdTee.js +0 -4206
- package/dist/chunks/shared-C-7mxPbV.js +0 -301
- package/dist/chunks/shared-C-Os1zsf.js +0 -572
- package/dist/chunks/shared-C02b6b2m.js +0 -1
- package/dist/chunks/shared-DLdJfSN-.js +0 -1
- package/dist/chunks/shared-DYKbMmHn.js +0 -610
- package/dist/chunks/shared-DbBoZvUP.js +0 -1609
- package/dist/chunks/shared-DbnPOaXf.js +0 -4210
- package/dist/chunks/shared-DnJBtKmH.js +0 -3769
- package/dist/chunks/shared-v63w_5VP.js +0 -2774
- package/dist/templates/delegation-poker.js +0 -1
- package/dist/templates/event-storming.js +0 -1
- package/dist/templates/example-mapping.js +0 -1
- package/dist/templates/plain.js +0 -1
- package/dist/templates/prototype.js +0 -1
- package/dist/templates/slides.js +0 -1
- package/dist/templates/task-board.js +0 -1
- package/dist/templates/usm.js +0 -1
- package/dist/templates/whiteboard.js +0 -1
|
@@ -0,0 +1,705 @@
|
|
|
1
|
+
import{ah as e}from"./shared-BQqlFaPv.js";const r=e`
|
|
2
|
+
/* ------------------------------------------------------------ count */
|
|
3
|
+
|
|
4
|
+
/* How many: a small rounded mono figure, beside a tab or a heading. data-size='sm' is quieter. */
|
|
5
|
+
:where(.dpk-count) {
|
|
6
|
+
display: inline-block;
|
|
7
|
+
flex: none;
|
|
8
|
+
min-width: 18px;
|
|
9
|
+
padding: 0 6px;
|
|
10
|
+
border-radius: 999px;
|
|
11
|
+
background: var(--tone-soft, var(--dpk-rule));
|
|
12
|
+
color: var(--tone, var(--dpk-ink-soft));
|
|
13
|
+
font-family: var(--dpk-mono);
|
|
14
|
+
font-size: 10.5px;
|
|
15
|
+
font-weight: 650;
|
|
16
|
+
font-variant-numeric: tabular-nums;
|
|
17
|
+
line-height: 17px;
|
|
18
|
+
text-align: center;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
:where(.dpk-count[data-size='sm']) {
|
|
22
|
+
color: var(--tone, var(--dpk-ink-faint));
|
|
23
|
+
font-size: 10px;
|
|
24
|
+
font-weight: 500;
|
|
25
|
+
line-height: 16px;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* A count lands like the kit's own count badge does: it pops into place. */
|
|
29
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
30
|
+
:where(.dpk-count) {
|
|
31
|
+
animation: dpk-pop var(--dpk-dur) var(--dpk-ease-spring);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* ------------------------------------------------------------ segmented */
|
|
36
|
+
|
|
37
|
+
/* A sunken track with the selected segment raised on top of it. */
|
|
38
|
+
:where(.dpk-segmented) {
|
|
39
|
+
display: inline-flex;
|
|
40
|
+
gap: 2px;
|
|
41
|
+
max-width: 100%;
|
|
42
|
+
padding: 2px;
|
|
43
|
+
overflow-x: auto;
|
|
44
|
+
scrollbar-width: none;
|
|
45
|
+
border: 1px solid var(--dpk-rule);
|
|
46
|
+
border-radius: 999px;
|
|
47
|
+
background: var(--dpk-paper-sunken);
|
|
48
|
+
box-shadow: inset 0 1px 3px var(--dpk-shade-1);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:where(.dpk-segmented) > :where(a, button) {
|
|
52
|
+
padding: 4px 12px;
|
|
53
|
+
border: none;
|
|
54
|
+
border-radius: 999px;
|
|
55
|
+
background: transparent;
|
|
56
|
+
color: var(--dpk-ink-soft);
|
|
57
|
+
font: inherit;
|
|
58
|
+
font-size: 12px;
|
|
59
|
+
font-weight: 550;
|
|
60
|
+
text-decoration: none;
|
|
61
|
+
white-space: nowrap;
|
|
62
|
+
cursor: pointer;
|
|
63
|
+
transition:
|
|
64
|
+
background var(--dpk-dur) var(--dpk-ease),
|
|
65
|
+
color var(--dpk-dur) var(--dpk-ease),
|
|
66
|
+
box-shadow var(--dpk-dur) var(--dpk-ease);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
:where(.dpk-segmented) > :where(a:hover, button:hover) {
|
|
70
|
+
background: var(--dpk-paper-inset);
|
|
71
|
+
color: var(--dpk-ink);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
:where(.dpk-segmented) > :where(a:focus-visible, button:focus-visible) {
|
|
75
|
+
outline: none;
|
|
76
|
+
box-shadow: var(--dpk-focus);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
:where(.dpk-segmented)
|
|
80
|
+
> :where(
|
|
81
|
+
[aria-selected='true'],
|
|
82
|
+
[aria-pressed='true'],
|
|
83
|
+
[aria-checked='true'],
|
|
84
|
+
[aria-current]:not([aria-current='false'])
|
|
85
|
+
) {
|
|
86
|
+
background: var(--dpk-paper-raised);
|
|
87
|
+
color: var(--dpk-ink);
|
|
88
|
+
font-weight: 650;
|
|
89
|
+
box-shadow: var(--dpk-bevel), var(--dpk-shadow-xs);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* The pick landing in its track: the raised segment grows into place, so the
|
|
93
|
+
eye follows the selection instead of finding it already moved. */
|
|
94
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
95
|
+
:where(.dpk-segmented)
|
|
96
|
+
> :where(
|
|
97
|
+
[aria-selected='true'],
|
|
98
|
+
[aria-pressed='true'],
|
|
99
|
+
[aria-checked='true'],
|
|
100
|
+
[aria-current]:not([aria-current='false'])
|
|
101
|
+
) {
|
|
102
|
+
animation: dpk-scale-in var(--dpk-dur-fast) var(--dpk-ease-out);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* ------------------------------------------------------------ tab strip */
|
|
107
|
+
|
|
108
|
+
/*
|
|
109
|
+
* The pages of a view: an underlined tab strip, heavier than a segmented
|
|
110
|
+
* toggle. The selected tab's underline sits on the strip's bottom rule;
|
|
111
|
+
* --dpk-tabstrip-pad is the room between the tabs and that rule, so a bar
|
|
112
|
+
* that draws its own rule can set it to its padding and drop the strip's.
|
|
113
|
+
*/
|
|
114
|
+
:where(.dpk-tabstrip) {
|
|
115
|
+
--_tabstrip-pad: var(--dpk-tabstrip-pad, 6px);
|
|
116
|
+
position: relative;
|
|
117
|
+
display: flex;
|
|
118
|
+
gap: 4px;
|
|
119
|
+
min-width: 0;
|
|
120
|
+
padding-bottom: var(--_tabstrip-pad);
|
|
121
|
+
border-bottom: 1px solid var(--dpk-rule);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
:where(.dpk-tabstrip) > :where(a, button) {
|
|
125
|
+
position: relative;
|
|
126
|
+
display: inline-flex;
|
|
127
|
+
align-items: center;
|
|
128
|
+
gap: 8px;
|
|
129
|
+
padding: 5px 10px;
|
|
130
|
+
border: none;
|
|
131
|
+
border-radius: var(--dpk-radius-sm);
|
|
132
|
+
background: transparent;
|
|
133
|
+
color: var(--dpk-ink-soft);
|
|
134
|
+
font: inherit;
|
|
135
|
+
font-size: 13.5px;
|
|
136
|
+
font-weight: 600;
|
|
137
|
+
letter-spacing: -0.005em;
|
|
138
|
+
text-decoration: none;
|
|
139
|
+
white-space: nowrap;
|
|
140
|
+
cursor: pointer;
|
|
141
|
+
transition:
|
|
142
|
+
color var(--dpk-dur) var(--dpk-ease),
|
|
143
|
+
background var(--dpk-dur) var(--dpk-ease);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
:where(.dpk-tabstrip) > :where(a:hover, button:hover) {
|
|
147
|
+
background: var(--dpk-paper-inset);
|
|
148
|
+
color: var(--dpk-ink);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
:where(.dpk-tabstrip) > :where(a:focus-visible, button:focus-visible) {
|
|
152
|
+
outline: none;
|
|
153
|
+
box-shadow: var(--dpk-focus);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
:where(.dpk-tabstrip)
|
|
157
|
+
> :where([aria-selected='true'], [aria-pressed='true'], [aria-current]:not([aria-current='false'])) {
|
|
158
|
+
color: var(--dpk-ink);
|
|
159
|
+
font-weight: 700;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
:where(.dpk-tabstrip)
|
|
163
|
+
> :where([aria-selected='true'], [aria-pressed='true'], [aria-current]:not([aria-current='false']))::after {
|
|
164
|
+
content: '';
|
|
165
|
+
position: absolute;
|
|
166
|
+
right: 10px;
|
|
167
|
+
bottom: calc(-1 * var(--_tabstrip-pad) - 1px);
|
|
168
|
+
left: 10px;
|
|
169
|
+
height: 2px;
|
|
170
|
+
border-radius: 2px;
|
|
171
|
+
background: var(--dpk-tabstrip-accent, var(--dpk-blue));
|
|
172
|
+
transform-origin: center;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/* The underline is drawn out from under its label as the tab takes over. */
|
|
176
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
177
|
+
:where(.dpk-tabstrip)
|
|
178
|
+
> :where([aria-selected='true'], [aria-pressed='true'], [aria-current]:not([aria-current='false']))::after {
|
|
179
|
+
animation: dpk-grow-in var(--dpk-dur-fast) var(--dpk-ease-out);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
:where(.dpk-tabstrip)
|
|
184
|
+
> :where([aria-selected='true'], [aria-pressed='true'], [aria-current]:not([aria-current='false']))
|
|
185
|
+
> :where(.dpk-count) {
|
|
186
|
+
background: var(--dpk-blue-soft);
|
|
187
|
+
color: var(--dpk-blue);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/* ------------------------------------------------------------ filter */
|
|
191
|
+
|
|
192
|
+
/*
|
|
193
|
+
* A select-like trigger that names what it filters and what it is set to:
|
|
194
|
+
* <button class="dpk-filter"><span>Status</span><b>All</b></button>.
|
|
195
|
+
* data-active='true' (or aria-pressed) marks a filter that narrows the view.
|
|
196
|
+
*/
|
|
197
|
+
:where(.dpk-filter) {
|
|
198
|
+
display: inline-flex;
|
|
199
|
+
align-items: baseline;
|
|
200
|
+
gap: 6px;
|
|
201
|
+
max-width: 260px;
|
|
202
|
+
min-height: var(--dpk-control-h, 30px);
|
|
203
|
+
padding: 6px 28px 6px 10px;
|
|
204
|
+
border: 1px solid var(--dpk-rule-strong);
|
|
205
|
+
border-radius: var(--dpk-radius-sm);
|
|
206
|
+
background: var(--dpk-paper-raised)
|
|
207
|
+
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M3 4.5 6 7.5 9 4.5' fill='none' stroke='%23878e9e' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/></svg>")
|
|
208
|
+
no-repeat right 8px center;
|
|
209
|
+
color: var(--dpk-ink);
|
|
210
|
+
font: inherit;
|
|
211
|
+
font-size: 12.5px;
|
|
212
|
+
text-align: left;
|
|
213
|
+
box-shadow: var(--dpk-bevel), var(--dpk-shadow-xs);
|
|
214
|
+
cursor: pointer;
|
|
215
|
+
transition:
|
|
216
|
+
border-color var(--dpk-dur) var(--dpk-ease),
|
|
217
|
+
box-shadow var(--dpk-dur) var(--dpk-ease),
|
|
218
|
+
background-color var(--dpk-dur) var(--dpk-ease),
|
|
219
|
+
transform var(--dpk-dur-fast) var(--dpk-ease);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
:where(.dpk-filter:hover) {
|
|
223
|
+
border-color: var(--dpk-rule-hover);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
:where(.dpk-filter:focus-visible) {
|
|
227
|
+
outline: none;
|
|
228
|
+
border-color: var(--dpk-blue);
|
|
229
|
+
box-shadow: var(--dpk-focus);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
:where(.dpk-filter[data-active='true'], .dpk-filter[aria-pressed='true']) {
|
|
233
|
+
border-color: color-mix(in oklab, var(--dpk-blue) 55%, var(--dpk-rule-strong));
|
|
234
|
+
background-color: color-mix(in oklab, var(--dpk-blue) 8%, var(--dpk-paper-raised));
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
:where(.dpk-filter) > :where(:first-child) {
|
|
238
|
+
flex: none;
|
|
239
|
+
color: var(--dpk-ink-faint);
|
|
240
|
+
font-size: 11.5px;
|
|
241
|
+
font-weight: 600;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
:where(.dpk-filter) > :where(:last-child:not(:first-child)) {
|
|
245
|
+
min-width: 0;
|
|
246
|
+
overflow: hidden;
|
|
247
|
+
color: var(--dpk-ink);
|
|
248
|
+
font-weight: 600;
|
|
249
|
+
text-overflow: ellipsis;
|
|
250
|
+
white-space: nowrap;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/* ------------------------------------------------------------ add */
|
|
254
|
+
|
|
255
|
+
/* The quiet "add one here" button at the end of a list or a cell: dashed, blue under the pointer. */
|
|
256
|
+
:where(.dpk-add) {
|
|
257
|
+
display: inline-flex;
|
|
258
|
+
align-items: center;
|
|
259
|
+
justify-content: center;
|
|
260
|
+
gap: 6px;
|
|
261
|
+
padding: 4px 8px;
|
|
262
|
+
border: 1px dashed var(--dpk-rule-strong);
|
|
263
|
+
border-radius: var(--dpk-radius-sm);
|
|
264
|
+
background: transparent;
|
|
265
|
+
color: var(--dpk-ink-faint);
|
|
266
|
+
font: inherit;
|
|
267
|
+
font-size: 11.5px;
|
|
268
|
+
font-weight: 600;
|
|
269
|
+
text-decoration: none;
|
|
270
|
+
cursor: pointer;
|
|
271
|
+
transition:
|
|
272
|
+
background var(--dpk-dur) var(--dpk-ease),
|
|
273
|
+
border-color var(--dpk-dur) var(--dpk-ease),
|
|
274
|
+
color var(--dpk-dur) var(--dpk-ease),
|
|
275
|
+
transform var(--dpk-dur-fast) var(--dpk-ease);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
:where(.dpk-add:hover) {
|
|
279
|
+
border-color: var(--dpk-blue);
|
|
280
|
+
background: var(--dpk-blue-soft);
|
|
281
|
+
color: var(--dpk-blue);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
:where(.dpk-add:focus-visible) {
|
|
285
|
+
outline: none;
|
|
286
|
+
box-shadow: var(--dpk-focus);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/* ------------------------------------------------------------ form controls */
|
|
290
|
+
|
|
291
|
+
/*
|
|
292
|
+
* Text entry atoms for author content: a one-line .dpk-input (text, url,
|
|
293
|
+
* …), a resizable .dpk-textarea, and the native .dpk-select styled to
|
|
294
|
+
* match. For a filterable or multi-pick list use the combobox component
|
|
295
|
+
* instead; for a popover listbox, the select component.
|
|
296
|
+
*/
|
|
297
|
+
:where(.dpk-input, .dpk-textarea, .dpk-select) {
|
|
298
|
+
box-sizing: border-box;
|
|
299
|
+
width: 100%;
|
|
300
|
+
min-height: var(--dpk-control-h, 32px);
|
|
301
|
+
padding: 6px 10px;
|
|
302
|
+
border: 1px solid var(--dpk-rule-strong);
|
|
303
|
+
border-radius: var(--dpk-radius-sm);
|
|
304
|
+
background: var(--dpk-paper-raised);
|
|
305
|
+
color: var(--dpk-ink);
|
|
306
|
+
font: inherit;
|
|
307
|
+
font-size: 12.5px;
|
|
308
|
+
box-shadow: inset 0 1px 2px var(--dpk-shade-1);
|
|
309
|
+
transition:
|
|
310
|
+
border-color var(--dpk-dur) var(--dpk-ease),
|
|
311
|
+
box-shadow var(--dpk-dur) var(--dpk-ease),
|
|
312
|
+
background var(--dpk-dur) var(--dpk-ease);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
:where(.dpk-input, .dpk-textarea)::placeholder {
|
|
316
|
+
color: var(--dpk-ink-faint);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
:where(.dpk-input:hover, .dpk-textarea:hover, .dpk-select:hover) {
|
|
320
|
+
border-color: var(--dpk-rule-hover);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/* The ring arrives over the fast step rather than snapping on: the same
|
|
324
|
+
focus ring, given the time to read as feedback. */
|
|
325
|
+
:where(.dpk-input:focus, .dpk-textarea:focus, .dpk-select:focus) {
|
|
326
|
+
outline: none;
|
|
327
|
+
border-color: var(--dpk-blue);
|
|
328
|
+
box-shadow: var(--dpk-focus);
|
|
329
|
+
transition-duration: var(--dpk-dur-fast);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
:where(.dpk-input:disabled, .dpk-textarea:disabled, .dpk-select:disabled) {
|
|
333
|
+
opacity: 0.55;
|
|
334
|
+
cursor: not-allowed;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
:where(.dpk-textarea) {
|
|
338
|
+
resize: vertical;
|
|
339
|
+
min-height: 64px;
|
|
340
|
+
line-height: 1.55;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
:where(.dpk-select) {
|
|
344
|
+
appearance: none;
|
|
345
|
+
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M3 4.5 6 7.5 9 4.5' fill='none' stroke='%23878e9e' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/></svg>");
|
|
346
|
+
background-repeat: no-repeat;
|
|
347
|
+
background-position: right 8px center;
|
|
348
|
+
padding-right: 28px;
|
|
349
|
+
box-shadow: var(--dpk-bevel), var(--dpk-shadow-xs);
|
|
350
|
+
cursor: pointer;
|
|
351
|
+
}
|
|
352
|
+
`,a=e`
|
|
353
|
+
:where(.dpk-card) {
|
|
354
|
+
--_card-tone: var(--dpk-card-tone, var(--dpk-ink-faint));
|
|
355
|
+
position: relative;
|
|
356
|
+
display: flow-root;
|
|
357
|
+
min-width: 0;
|
|
358
|
+
padding: 12px 13px;
|
|
359
|
+
border: 1px solid color-mix(in oklab, var(--_card-tone) 24%, var(--dpk-rule));
|
|
360
|
+
border-radius: 12px;
|
|
361
|
+
background: color-mix(in oklab, var(--_card-tone) 6%, var(--dpk-paper-raised));
|
|
362
|
+
color: var(--dpk-ink-soft);
|
|
363
|
+
box-shadow:
|
|
364
|
+
0 1px 1px var(--dpk-shade-1),
|
|
365
|
+
0 2px 6px -3px var(--dpk-shade-2);
|
|
366
|
+
transition:
|
|
367
|
+
box-shadow var(--dpk-dur) var(--dpk-ease),
|
|
368
|
+
transform var(--dpk-dur) var(--dpk-ease),
|
|
369
|
+
border-color var(--dpk-dur) var(--dpk-ease),
|
|
370
|
+
opacity var(--dpk-dur) var(--dpk-ease),
|
|
371
|
+
filter var(--dpk-dur) var(--dpk-ease);
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
:where(.dpk-card[data-tone]) {
|
|
375
|
+
--_card-tone: var(--tone);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/* Flow layout, not grid: inline author content stays on one line. */
|
|
379
|
+
:where(.dpk-card) > :where(*) {
|
|
380
|
+
margin: 0;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
:where(.dpk-card) > :where(* + *) {
|
|
384
|
+
margin-top: var(--dpk-card-gap, 8px);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
:where(.dpk-card) :where(h3, h4) {
|
|
388
|
+
color: var(--dpk-ink);
|
|
389
|
+
font-size: 13.5px;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/* A card that opens something lifts under the pointer. */
|
|
393
|
+
:where(a.dpk-card, button.dpk-card, .dpk-card[tabindex], .dpk-card[data-interactive]) {
|
|
394
|
+
cursor: pointer;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
:where(a.dpk-card) {
|
|
398
|
+
color: inherit;
|
|
399
|
+
text-decoration: none;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
:where(button.dpk-card) {
|
|
403
|
+
width: 100%;
|
|
404
|
+
font: inherit;
|
|
405
|
+
text-align: start;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/* A card that opens something lifts under the pointer: it rises by the kit's
|
|
409
|
+
one lift step, its edge warms toward its own tone and its elevation grows
|
|
410
|
+
into the room the rise leaves under it. Transform only — the cards beside
|
|
411
|
+
it never move. */
|
|
412
|
+
:where(a.dpk-card:hover, button.dpk-card:hover, .dpk-card[tabindex]:hover, .dpk-card[data-interactive]:hover) {
|
|
413
|
+
border-color: color-mix(in oklab, var(--_card-tone) 45%, var(--dpk-rule));
|
|
414
|
+
box-shadow:
|
|
415
|
+
0 1px 2px var(--dpk-shade-1),
|
|
416
|
+
0 8px 20px -10px var(--dpk-shade-3);
|
|
417
|
+
transform: translateY(var(--dpk-lift));
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/* Pressed, it settles back down: the gesture a button makes under the finger. */
|
|
421
|
+
:where(a.dpk-card:active, button.dpk-card:active, .dpk-card[tabindex]:active, .dpk-card[data-interactive]:active) {
|
|
422
|
+
transform: translateY(0) scale(var(--dpk-press));
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
:where(.dpk-card:focus-visible) {
|
|
426
|
+
outline: none;
|
|
427
|
+
border-color: var(--dpk-blue);
|
|
428
|
+
box-shadow: var(--dpk-focus);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
/* The card the reader has open or picked. */
|
|
432
|
+
:where(
|
|
433
|
+
.dpk-card[aria-current='true'],
|
|
434
|
+
.dpk-card[aria-selected='true'],
|
|
435
|
+
.dpk-card[aria-pressed='true'],
|
|
436
|
+
.dpk-card[data-chosen],
|
|
437
|
+
.dpk-card[data-state~='selected']
|
|
438
|
+
) {
|
|
439
|
+
border-color: var(--dpk-blue);
|
|
440
|
+
box-shadow:
|
|
441
|
+
0 0 0 3px color-mix(in oklab, var(--dpk-blue) 20%, transparent),
|
|
442
|
+
0 8px 20px -10px var(--dpk-shade-3);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
/* A highlight across many cards (a path, a search hit): the cards on it stand out, the rest step back. */
|
|
446
|
+
:where(.dpk-card[data-state~='highlight']) {
|
|
447
|
+
border-color: color-mix(in oklab, var(--dpk-accent) 70%, var(--dpk-rule));
|
|
448
|
+
box-shadow:
|
|
449
|
+
0 0 0 2px color-mix(in oklab, var(--dpk-accent) 28%, transparent),
|
|
450
|
+
0 8px 20px -10px var(--dpk-shade-3);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
:where(.dpk-card[data-state~='dimmed']) {
|
|
454
|
+
opacity: 0.4;
|
|
455
|
+
filter: saturate(0.4);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
:where(.dpk-card[data-state~='dimmed']:is(:hover, :focus-visible, [data-state~='selected'])) {
|
|
459
|
+
opacity: 0.85;
|
|
460
|
+
filter: none;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
:where(.dpk-card[data-state~='dragging']) {
|
|
464
|
+
opacity: 0.45;
|
|
465
|
+
transform: none;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
/* A card related to the one in focus: a dashed ring in its tone, outside the edge. */
|
|
469
|
+
:where(.dpk-card[data-state~='marked']) {
|
|
470
|
+
outline: 2px dashed var(--dpk-card-mark, var(--dpk-amber));
|
|
471
|
+
outline-offset: 2px;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
:where(.dpk-card[data-variant='sunken']) {
|
|
475
|
+
border-color: transparent;
|
|
476
|
+
background: var(--dpk-paper-sunken);
|
|
477
|
+
box-shadow: none;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
/* ------------------------------------------------------------ card parts */
|
|
481
|
+
|
|
482
|
+
:where(.dpk-card-head) {
|
|
483
|
+
display: flex;
|
|
484
|
+
align-items: flex-start;
|
|
485
|
+
gap: 8px;
|
|
486
|
+
min-width: 0;
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
:where(.dpk-card-title) {
|
|
490
|
+
flex: 1 1 auto;
|
|
491
|
+
min-width: 0;
|
|
492
|
+
color: var(--dpk-ink);
|
|
493
|
+
font-size: 13px;
|
|
494
|
+
font-weight: 600;
|
|
495
|
+
letter-spacing: -0.01em;
|
|
496
|
+
line-height: 1.45;
|
|
497
|
+
overflow-wrap: anywhere;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
/* The size and the owner at the end of the head, small, like a ticket's. */
|
|
501
|
+
:where(.dpk-card-meta) {
|
|
502
|
+
flex: none;
|
|
503
|
+
display: inline-flex;
|
|
504
|
+
align-items: center;
|
|
505
|
+
gap: 4px;
|
|
506
|
+
margin-left: auto;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
/* The body, cut after --dpk-card-lines lines (3). */
|
|
510
|
+
:where(.dpk-card-text) {
|
|
511
|
+
display: -webkit-box;
|
|
512
|
+
-webkit-box-orient: vertical;
|
|
513
|
+
-webkit-line-clamp: var(--dpk-card-lines, 3);
|
|
514
|
+
overflow: hidden;
|
|
515
|
+
color: var(--dpk-ink-soft);
|
|
516
|
+
font-size: 12px;
|
|
517
|
+
line-height: 1.55;
|
|
518
|
+
overflow-wrap: anywhere;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
:where(.dpk-card-text) > :where(*) {
|
|
522
|
+
margin: 0;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
:where(.dpk-card-text) :where(h1, h2, h3, h4, h5, h6) {
|
|
526
|
+
font-size: inherit;
|
|
527
|
+
font-weight: 650;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
:where(.dpk-card-text) :where(ul, ol) {
|
|
531
|
+
padding-left: 1.2em;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
:where(.dpk-card-text) :where(code) {
|
|
535
|
+
padding: 0 3px;
|
|
536
|
+
border-radius: 4px;
|
|
537
|
+
background: var(--dpk-paper-inset);
|
|
538
|
+
font-family: var(--dpk-mono);
|
|
539
|
+
font-size: 0.92em;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
:where(.dpk-card-text) :where(a) {
|
|
543
|
+
color: var(--dpk-blue);
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
/* A row of chips (labels, links, dependencies). */
|
|
547
|
+
:where(.dpk-card-row) {
|
|
548
|
+
display: flex;
|
|
549
|
+
flex-wrap: wrap;
|
|
550
|
+
gap: 4px;
|
|
551
|
+
min-width: 0;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
/* Where the item sits and what was said about it. */
|
|
555
|
+
:where(.dpk-card-foot) {
|
|
556
|
+
display: flex;
|
|
557
|
+
align-items: center;
|
|
558
|
+
gap: 6px;
|
|
559
|
+
min-width: 0;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
/* The key people call the item by, quiet like a ticket number. */
|
|
563
|
+
:where(.dpk-card-key) {
|
|
564
|
+
flex: none;
|
|
565
|
+
color: var(--dpk-ink-faint);
|
|
566
|
+
font-family: var(--dpk-mono);
|
|
567
|
+
font-size: 10.5px;
|
|
568
|
+
font-weight: 600;
|
|
569
|
+
line-height: 18px;
|
|
570
|
+
font-variant-numeric: tabular-nums;
|
|
571
|
+
white-space: nowrap;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
:where(.dpk-card-chip) {
|
|
575
|
+
display: inline-flex;
|
|
576
|
+
align-items: center;
|
|
577
|
+
gap: 4px;
|
|
578
|
+
min-width: 0;
|
|
579
|
+
padding: 1px 7px;
|
|
580
|
+
border-radius: 6px;
|
|
581
|
+
background: color-mix(in oklab, var(--_card-tone, var(--dpk-ink-faint)) 10%, var(--dpk-paper-sunken));
|
|
582
|
+
color: var(--dpk-ink-soft);
|
|
583
|
+
font-size: 10.5px;
|
|
584
|
+
font-weight: 600;
|
|
585
|
+
line-height: 18px;
|
|
586
|
+
white-space: nowrap;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
:where(.dpk-card-chip) > :where(span) {
|
|
590
|
+
overflow: hidden;
|
|
591
|
+
text-overflow: ellipsis;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
:where(.dpk-card-chip) > :where(svg) {
|
|
595
|
+
flex: none;
|
|
596
|
+
width: 12px;
|
|
597
|
+
height: 12px;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
/* A count (comments, reviews): bare mono figures; a data-tone colors it. */
|
|
601
|
+
:where(.dpk-card-chip[data-variant='count']) {
|
|
602
|
+
background: transparent;
|
|
603
|
+
color: var(--tone, var(--dpk-ink-faint));
|
|
604
|
+
font-family: var(--dpk-mono);
|
|
605
|
+
font-variant-numeric: tabular-nums;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
/* The counts sit at the right end of the foot. */
|
|
609
|
+
:where(.dpk-card-foot) > :where(:not([data-variant='count'])) + :where([data-variant='count']) {
|
|
610
|
+
margin-left: auto;
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
/* A size (an estimate, a version): a small boxed mono figure. */
|
|
614
|
+
:where(.dpk-card-chip[data-variant='outline']) {
|
|
615
|
+
padding: 0 6px;
|
|
616
|
+
border: 1px solid color-mix(in oklab, var(--_card-tone, var(--dpk-ink-faint)) 30%, var(--dpk-rule-strong));
|
|
617
|
+
border-radius: 5px;
|
|
618
|
+
background: var(--dpk-paper-raised);
|
|
619
|
+
font-family: var(--dpk-mono);
|
|
620
|
+
font-weight: 650;
|
|
621
|
+
line-height: 17px;
|
|
622
|
+
font-variant-numeric: tabular-nums;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
/* ------------------------------------------------------------ pill / avatar */
|
|
626
|
+
|
|
627
|
+
/* A label in its own color: a dot and a name on a tinted pill. Any color through --tone. */
|
|
628
|
+
:where(.dpk-pill) {
|
|
629
|
+
--_pill-tone: var(--tone, var(--dpk-ink-faint));
|
|
630
|
+
display: inline-flex;
|
|
631
|
+
align-items: center;
|
|
632
|
+
gap: 5px;
|
|
633
|
+
min-width: 0;
|
|
634
|
+
max-width: 100%;
|
|
635
|
+
padding: 0 7px;
|
|
636
|
+
border: 1px solid color-mix(in oklab, var(--_pill-tone) 35%, transparent);
|
|
637
|
+
border-radius: 999px;
|
|
638
|
+
background: color-mix(in oklab, var(--_pill-tone) 12%, var(--dpk-paper-raised));
|
|
639
|
+
color: var(--dpk-ink);
|
|
640
|
+
font-size: 10.5px;
|
|
641
|
+
font-weight: 600;
|
|
642
|
+
line-height: 17px;
|
|
643
|
+
overflow: hidden;
|
|
644
|
+
text-overflow: ellipsis;
|
|
645
|
+
white-space: nowrap;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
:where(.dpk-pill)::before {
|
|
649
|
+
content: '';
|
|
650
|
+
flex: none;
|
|
651
|
+
width: 6px;
|
|
652
|
+
height: 6px;
|
|
653
|
+
border-radius: 50%;
|
|
654
|
+
background: var(--_pill-tone);
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
/* A person by their initial, in their color. data-size: sm (18px, default), md (24px), lg (34px). */
|
|
658
|
+
:where(.dpk-avatar) {
|
|
659
|
+
display: inline-grid;
|
|
660
|
+
flex: none;
|
|
661
|
+
place-items: center;
|
|
662
|
+
width: 18px;
|
|
663
|
+
height: 18px;
|
|
664
|
+
border-radius: 50%;
|
|
665
|
+
background: var(--tone, var(--dpk-blue));
|
|
666
|
+
color: var(--dpk-paper-raised);
|
|
667
|
+
font-size: 10px;
|
|
668
|
+
font-weight: 700;
|
|
669
|
+
line-height: 1;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
:where(.dpk-avatar[data-size='md']) {
|
|
673
|
+
width: 24px;
|
|
674
|
+
height: 24px;
|
|
675
|
+
font-size: 11.5px;
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
:where(.dpk-avatar[data-size='lg']) {
|
|
679
|
+
width: 34px;
|
|
680
|
+
height: 34px;
|
|
681
|
+
font-size: 14px;
|
|
682
|
+
font-weight: 650;
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
/* Overlapping avatars: a team on one card. */
|
|
686
|
+
:where(.dpk-avatars) {
|
|
687
|
+
display: inline-flex;
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
:where(.dpk-avatars) > :where(.dpk-avatar) {
|
|
691
|
+
box-shadow: 0 0 0 2px var(--dpk-paper-raised);
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
:where(.dpk-avatars) > :where(.dpk-avatar + .dpk-avatar) {
|
|
695
|
+
margin-left: -5px;
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
/* A label and a face land in their place: the same pop a count uses, so the
|
|
699
|
+
small figures on a card read as one family of "just appeared" marks. */
|
|
700
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
701
|
+
:where(.dpk-pill, .dpk-avatar) {
|
|
702
|
+
animation: dpk-pop var(--dpk-dur) var(--dpk-ease-spring);
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
`;export{r as a,a as c};
|