@roy-ui/ui 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,396 @@
1
+ .royui-dt {
2
+ --royui-dt-bg: #ffffff;
3
+ --royui-dt-fg: rgb(20, 20, 20);
4
+ --royui-dt-muted: rgba(20, 20, 20, 0.55);
5
+ --royui-dt-subtle: rgba(20, 20, 20, 0.35);
6
+ --royui-dt-border: rgba(20, 20, 20, 0.1);
7
+ --royui-dt-border-strong: rgba(20, 20, 20, 0.18);
8
+ --royui-dt-hover-bg: rgba(20, 20, 20, 0.04);
9
+ --royui-dt-accent: rgb(20, 20, 20);
10
+ --royui-dt-accent-fg: #ffffff;
11
+ --royui-dt-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
12
+ --royui-dt-dur: 160ms;
13
+
14
+ width: 100%;
15
+ font-family:
16
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial,
17
+ sans-serif;
18
+ }
19
+
20
+ /* ── Toolbar ────────────────────────────────────────────── */
21
+
22
+ .royui-dt__toolbar {
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: space-between;
26
+ gap: 12px;
27
+ margin-bottom: 10px;
28
+ flex-wrap: wrap;
29
+ }
30
+
31
+ .royui-dt__toolbar-left,
32
+ .royui-dt__toolbar-right {
33
+ display: flex;
34
+ align-items: center;
35
+ gap: 8px;
36
+ flex-wrap: wrap;
37
+ }
38
+
39
+ .royui-dt__sep {
40
+ width: 1px;
41
+ height: 16px;
42
+ background: var(--royui-dt-border);
43
+ margin: 0 2px;
44
+ }
45
+
46
+ /* ── Column menu ────────────────────────────────────────── */
47
+
48
+ .royui-dt-colmenu {
49
+ position: relative;
50
+ display: inline-flex;
51
+ align-items: center;
52
+ gap: 6px;
53
+ }
54
+
55
+ .royui-dt-colmenu__trigger {
56
+ background: transparent;
57
+ border: 1px solid var(--royui-dt-border);
58
+ border-radius: 8px;
59
+ padding: 6px 12px;
60
+ font: inherit;
61
+ font-size: 13px;
62
+ color: var(--royui-dt-fg);
63
+ cursor: pointer;
64
+ transition:
65
+ background var(--royui-dt-dur) var(--royui-dt-ease),
66
+ border-color var(--royui-dt-dur) var(--royui-dt-ease);
67
+ }
68
+ .royui-dt-colmenu__trigger:hover {
69
+ background: var(--royui-dt-hover-bg);
70
+ border-color: var(--royui-dt-border-strong);
71
+ }
72
+
73
+ .royui-dt-colmenu__chip {
74
+ background: var(--royui-dt-hover-bg);
75
+ border: 1px solid var(--royui-dt-border);
76
+ border-radius: 999px;
77
+ padding: 3px 9px;
78
+ font: inherit;
79
+ font-size: 11.5px;
80
+ color: var(--royui-dt-muted);
81
+ cursor: pointer;
82
+ font-variant-numeric: tabular-nums;
83
+ }
84
+ .royui-dt-colmenu__chip:hover {
85
+ color: var(--royui-dt-fg);
86
+ }
87
+
88
+ .royui-dt-colmenu__panel {
89
+ position: absolute;
90
+ top: calc(100% + 6px);
91
+ right: 0;
92
+ z-index: 30;
93
+ min-width: 220px;
94
+ background: var(--royui-dt-bg);
95
+ border: 1px solid var(--royui-dt-border);
96
+ border-radius: 12px;
97
+ padding: 8px;
98
+ box-shadow:
99
+ 0 0 0 0.5px rgba(20, 20, 20, 0.04),
100
+ 0 6px 14px rgba(0, 0, 0, 0.06),
101
+ 0 22px 44px rgba(0, 0, 0, 0.12);
102
+ animation: royui-dt-pop var(--royui-dt-dur) var(--royui-dt-ease);
103
+ }
104
+
105
+ .royui-dt-colmenu__head {
106
+ display: flex;
107
+ justify-content: space-between;
108
+ align-items: center;
109
+ padding: 4px 8px 6px;
110
+ border-bottom: 1px solid var(--royui-dt-border);
111
+ }
112
+ .royui-dt-colmenu__title {
113
+ font-size: 11.5px;
114
+ font-weight: 600;
115
+ letter-spacing: 0.04em;
116
+ text-transform: uppercase;
117
+ color: var(--royui-dt-muted);
118
+ }
119
+ .royui-dt-colmenu__reset {
120
+ background: transparent;
121
+ border: 0;
122
+ font: inherit;
123
+ font-size: 12px;
124
+ color: var(--royui-dt-muted);
125
+ cursor: pointer;
126
+ padding: 2px 4px;
127
+ border-radius: 4px;
128
+ transition: color var(--royui-dt-dur) var(--royui-dt-ease);
129
+ }
130
+ .royui-dt-colmenu__reset:hover {
131
+ color: var(--royui-dt-fg);
132
+ }
133
+
134
+ .royui-dt-colmenu__list {
135
+ list-style: none;
136
+ margin: 6px 0 0;
137
+ padding: 0;
138
+ display: flex;
139
+ flex-direction: column;
140
+ gap: 1px;
141
+ }
142
+
143
+ .royui-dt-colmenu__row {
144
+ width: 100%;
145
+ display: flex;
146
+ align-items: center;
147
+ gap: 10px;
148
+ background: transparent;
149
+ border: 0;
150
+ border-radius: 6px;
151
+ padding: 7px 8px;
152
+ font: inherit;
153
+ font-size: 13px;
154
+ color: var(--royui-dt-fg);
155
+ cursor: pointer;
156
+ text-align: left;
157
+ transition: background var(--royui-dt-dur) var(--royui-dt-ease);
158
+ }
159
+ .royui-dt-colmenu__row:hover {
160
+ background: var(--royui-dt-hover-bg);
161
+ }
162
+ .royui-dt-colmenu__row--locked {
163
+ opacity: 0.45;
164
+ cursor: not-allowed;
165
+ }
166
+ .royui-dt-colmenu__row--off .royui-dt-colmenu__label {
167
+ color: var(--royui-dt-muted);
168
+ }
169
+
170
+ .royui-dt-colmenu__dot {
171
+ width: 9px;
172
+ height: 9px;
173
+ border-radius: 999px;
174
+ border: 1.5px solid var(--royui-dt-subtle);
175
+ background: transparent;
176
+ flex: 0 0 9px;
177
+ transition:
178
+ background var(--royui-dt-dur) var(--royui-dt-ease),
179
+ border-color var(--royui-dt-dur) var(--royui-dt-ease);
180
+ }
181
+ .royui-dt-colmenu__dot--on {
182
+ background: var(--royui-dt-accent);
183
+ border-color: var(--royui-dt-accent);
184
+ }
185
+
186
+ .royui-dt-colmenu__label {
187
+ flex: 1;
188
+ min-width: 0;
189
+ }
190
+
191
+ /* ── IO buttons ─────────────────────────────────────────── */
192
+
193
+ .royui-dt-io {
194
+ position: relative;
195
+ display: inline-flex;
196
+ }
197
+
198
+ .royui-dt-io__btn {
199
+ background: transparent;
200
+ border: 1px solid var(--royui-dt-border);
201
+ border-radius: 8px;
202
+ padding: 6px 12px;
203
+ font: inherit;
204
+ font-size: 13px;
205
+ color: var(--royui-dt-fg);
206
+ cursor: pointer;
207
+ transition:
208
+ background var(--royui-dt-dur) var(--royui-dt-ease),
209
+ border-color var(--royui-dt-dur) var(--royui-dt-ease);
210
+ min-width: 70px;
211
+ }
212
+ .royui-dt-io__btn:hover {
213
+ background: var(--royui-dt-hover-bg);
214
+ border-color: var(--royui-dt-border-strong);
215
+ }
216
+
217
+ .royui-dt-io__menu {
218
+ position: absolute;
219
+ top: calc(100% + 4px);
220
+ right: 0;
221
+ z-index: 30;
222
+ background: var(--royui-dt-bg);
223
+ border: 1px solid var(--royui-dt-border);
224
+ border-radius: 8px;
225
+ padding: 4px;
226
+ min-width: 100px;
227
+ box-shadow:
228
+ 0 0 0 0.5px rgba(20, 20, 20, 0.04),
229
+ 0 6px 14px rgba(0, 0, 0, 0.06),
230
+ 0 22px 44px rgba(0, 0, 0, 0.12);
231
+ animation: royui-dt-pop 140ms var(--royui-dt-ease);
232
+ }
233
+ .royui-dt-io__menu-item {
234
+ display: block;
235
+ width: 100%;
236
+ text-align: left;
237
+ background: transparent;
238
+ border: 0;
239
+ border-radius: 5px;
240
+ padding: 6px 8px;
241
+ font: inherit;
242
+ font-size: 12.5px;
243
+ color: var(--royui-dt-fg);
244
+ cursor: pointer;
245
+ }
246
+ .royui-dt-io__menu-item:hover {
247
+ background: var(--royui-dt-hover-bg);
248
+ }
249
+
250
+ /* ── Header drag + resize affordances ───────────────────── */
251
+
252
+ .royui-dt .royui-table__th {
253
+ position: relative;
254
+ cursor: default;
255
+ transition:
256
+ background var(--royui-dt-dur) var(--royui-dt-ease);
257
+ }
258
+ /* Persistent column boundary — hints at where the resize handle lives. */
259
+ .royui-dt .royui-table__th + .royui-dt .royui-table__th { /* selector chain harmless */ }
260
+ .royui-dt .royui-table__th--resizable {
261
+ /* a quiet hairline along the right edge so the boundary is legible,
262
+ making the resize handle's location implicit instead of hidden. */
263
+ box-shadow: inset -1px 0 0 0 var(--royui-dt-border);
264
+ }
265
+
266
+ .royui-dt .royui-table__th--reorderable {
267
+ cursor: grab;
268
+ }
269
+ .royui-dt .royui-table__th--reorderable:hover {
270
+ background: var(--royui-dt-hover-bg);
271
+ }
272
+ .royui-dt .royui-table__th--reorderable:active {
273
+ cursor: grabbing;
274
+ }
275
+
276
+ .royui-dt__th-inner {
277
+ display: inline-flex;
278
+ align-items: center;
279
+ gap: 6px;
280
+ outline: none;
281
+ cursor: pointer;
282
+ }
283
+
284
+ .royui-dt__th-label {
285
+ user-select: none;
286
+ }
287
+
288
+ .royui-dt__sort-indicator {
289
+ width: 6px;
290
+ height: 6px;
291
+ border-radius: 999px;
292
+ background: var(--royui-dt-fg);
293
+ opacity: 0.6;
294
+ transform-origin: center;
295
+ transition: transform 220ms var(--royui-dt-ease);
296
+ }
297
+ .royui-dt__sort-indicator--desc {
298
+ transform: scaleY(-1) translateY(1px);
299
+ }
300
+
301
+ .royui-dt__th--dragging {
302
+ opacity: 0.45;
303
+ }
304
+
305
+ .royui-dt__th--drop-before {
306
+ box-shadow: inset 2px 0 0 0 var(--royui-dt-accent);
307
+ }
308
+ .royui-dt__th--drop-end {
309
+ width: 0;
310
+ padding: 0;
311
+ border-left: 2px solid var(--royui-dt-accent);
312
+ }
313
+
314
+ /* Resize hit-target — wider than the visible bar so a 5px target catches the
315
+ pointer comfortably. Visible bar is 1px, sitting on top of the boundary
316
+ hairline; on hover it brightens, on drag it goes accent-colored. */
317
+ .royui-dt__resize {
318
+ position: absolute;
319
+ top: 0;
320
+ right: -3px;
321
+ width: 8px;
322
+ height: 100%;
323
+ cursor: col-resize;
324
+ user-select: none;
325
+ z-index: 3;
326
+ display: flex;
327
+ align-items: center;
328
+ justify-content: center;
329
+ }
330
+ .royui-dt__resize-bar {
331
+ width: 2px;
332
+ height: 50%;
333
+ border-radius: 999px;
334
+ background: var(--royui-dt-border-strong);
335
+ opacity: 0;
336
+ transition:
337
+ background var(--royui-dt-dur) var(--royui-dt-ease),
338
+ opacity var(--royui-dt-dur) var(--royui-dt-ease),
339
+ height var(--royui-dt-dur) var(--royui-dt-ease);
340
+ }
341
+ .royui-dt__resize:hover .royui-dt__resize-bar {
342
+ opacity: 1;
343
+ height: 60%;
344
+ background: var(--royui-dt-fg);
345
+ }
346
+ .royui-dt__resize:active .royui-dt__resize-bar {
347
+ opacity: 1;
348
+ background: var(--royui-dt-accent);
349
+ height: 70%;
350
+ }
351
+
352
+ .royui-dt__col--dragging {
353
+ background: var(--royui-dt-hover-bg);
354
+ }
355
+
356
+ /* ── Pagination row ─────────────────────────────────────── */
357
+
358
+ .royui-dt__pagination {
359
+ margin-top: 12px;
360
+ padding: 8px 4px 0;
361
+ }
362
+
363
+ /* ── Anim ───────────────────────────────────────────────── */
364
+
365
+ @keyframes royui-dt-pop {
366
+ from { opacity: 0; transform: translateY(-3px) scale(0.98); }
367
+ to { opacity: 1; transform: none; }
368
+ }
369
+
370
+ /* ── Dark ───────────────────────────────────────────────── */
371
+
372
+ @media (prefers-color-scheme: dark) {
373
+ .royui-dt {
374
+ --royui-dt-bg: #131315;
375
+ --royui-dt-fg: rgba(255, 255, 255, 0.94);
376
+ --royui-dt-muted: rgba(255, 255, 255, 0.55);
377
+ --royui-dt-subtle: rgba(255, 255, 255, 0.32);
378
+ --royui-dt-border: rgba(255, 255, 255, 0.1);
379
+ --royui-dt-border-strong: rgba(255, 255, 255, 0.22);
380
+ --royui-dt-hover-bg: rgba(255, 255, 255, 0.06);
381
+ --royui-dt-accent: rgba(255, 255, 255, 0.95);
382
+ --royui-dt-accent-fg: #0a0a0a;
383
+ }
384
+ .royui-dt-colmenu__panel,
385
+ .royui-dt-io__menu {
386
+ box-shadow:
387
+ 0 0 0 0.5px rgba(255, 255, 255, 0.06),
388
+ 0 6px 14px rgba(0, 0, 0, 0.4),
389
+ 0 22px 44px rgba(0, 0, 0, 0.55);
390
+ }
391
+ }
392
+
393
+ @media (prefers-reduced-motion: reduce) {
394
+ .royui-dt-colmenu__panel,
395
+ .royui-dt-io__menu { animation: none; }
396
+ }
@@ -0,0 +1,335 @@
1
+ .royui-drp {
2
+ --royui-drp-bg: #ffffff;
3
+ --royui-drp-fg: rgb(20, 20, 20);
4
+ --royui-drp-muted: rgba(20, 20, 20, 0.55);
5
+ --royui-drp-subtle: rgba(20, 20, 20, 0.35);
6
+ --royui-drp-border: rgba(20, 20, 20, 0.1);
7
+ --royui-drp-border-strong: rgba(20, 20, 20, 0.18);
8
+ --royui-drp-hover-bg: rgba(20, 20, 20, 0.04);
9
+ --royui-drp-in-bg: rgba(20, 20, 20, 0.06);
10
+ --royui-drp-edge-bg: rgb(20, 20, 20);
11
+ --royui-drp-edge-fg: #ffffff;
12
+ --royui-drp-today-ring: rgba(20, 20, 20, 0.55);
13
+ --royui-drp-preset-bg: rgba(20, 20, 20, 0.03);
14
+ --royui-drp-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
15
+ --royui-drp-dur: 160ms;
16
+ --royui-drp-radius: 10px;
17
+
18
+ position: relative;
19
+ display: inline-block;
20
+ font-family:
21
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial,
22
+ sans-serif;
23
+ }
24
+
25
+ /* ── Trigger ────────────────────────────────────────────── */
26
+
27
+ .royui-drp__trigger {
28
+ display: inline-flex;
29
+ align-items: center;
30
+ gap: 9px;
31
+ height: 34px;
32
+ padding: 0 12px;
33
+ background: var(--royui-drp-bg);
34
+ border: 1px solid var(--royui-drp-border);
35
+ border-radius: 8px;
36
+ color: var(--royui-drp-fg);
37
+ font: inherit;
38
+ font-size: 13.5px;
39
+ letter-spacing: -0.005em;
40
+ cursor: pointer;
41
+ transition:
42
+ border-color var(--royui-drp-dur) var(--royui-drp-ease),
43
+ background var(--royui-drp-dur) var(--royui-drp-ease);
44
+ }
45
+ .royui-drp__trigger:hover {
46
+ background: var(--royui-drp-hover-bg);
47
+ border-color: var(--royui-drp-border-strong);
48
+ }
49
+ .royui-drp__trigger:disabled {
50
+ opacity: 0.5;
51
+ cursor: not-allowed;
52
+ }
53
+ .royui-drp__trigger-dot {
54
+ width: 5px;
55
+ height: 5px;
56
+ border-radius: 999px;
57
+ background: var(--royui-drp-subtle);
58
+ }
59
+ .royui-drp__trigger-label {
60
+ white-space: nowrap;
61
+ }
62
+
63
+ /* ── Panel ──────────────────────────────────────────────── */
64
+
65
+ .royui-drp__panel {
66
+ position: absolute;
67
+ top: calc(100% + 8px);
68
+ z-index: 40;
69
+ background: var(--royui-drp-bg);
70
+ border: 1px solid var(--royui-drp-border);
71
+ border-radius: 14px;
72
+ display: flex;
73
+ overflow: hidden;
74
+ box-shadow:
75
+ 0 0 0 0.5px rgba(20, 20, 20, 0.04),
76
+ 0 6px 14px rgba(0, 0, 0, 0.06),
77
+ 0 22px 44px rgba(0, 0, 0, 0.12);
78
+ animation: royui-drp-in var(--royui-drp-dur) var(--royui-drp-ease);
79
+ }
80
+ .royui-drp__panel--left { left: 0; }
81
+ .royui-drp__panel--right { right: 0; }
82
+
83
+ .royui-drp__presets {
84
+ display: flex;
85
+ flex-direction: column;
86
+ gap: 1px;
87
+ padding: 12px 10px;
88
+ background: var(--royui-drp-preset-bg);
89
+ border-right: 1px solid var(--royui-drp-border);
90
+ min-width: 130px;
91
+ }
92
+ .royui-drp__preset {
93
+ text-align: left;
94
+ background: transparent;
95
+ border: 0;
96
+ border-radius: 6px;
97
+ padding: 7px 10px;
98
+ font: inherit;
99
+ font-size: 13px;
100
+ color: var(--royui-drp-muted);
101
+ cursor: pointer;
102
+ transition:
103
+ background var(--royui-drp-dur) var(--royui-drp-ease),
104
+ color var(--royui-drp-dur) var(--royui-drp-ease);
105
+ }
106
+ .royui-drp__preset:hover {
107
+ background: var(--royui-drp-hover-bg);
108
+ color: var(--royui-drp-fg);
109
+ }
110
+ .royui-drp__preset--active {
111
+ background: var(--royui-drp-in-bg);
112
+ color: var(--royui-drp-fg);
113
+ font-weight: 500;
114
+ }
115
+
116
+ .royui-drp__main {
117
+ display: flex;
118
+ flex-direction: column;
119
+ padding: 14px;
120
+ min-width: 0;
121
+ }
122
+
123
+ /* ── Nav ────────────────────────────────────────────────── */
124
+
125
+ .royui-drp__nav {
126
+ display: flex;
127
+ justify-content: space-between;
128
+ gap: 8px;
129
+ margin-bottom: 10px;
130
+ }
131
+ .royui-drp__nav-btn {
132
+ background: transparent;
133
+ border: 1px solid var(--royui-drp-border);
134
+ border-radius: 7px;
135
+ padding: 4px 10px;
136
+ font: inherit;
137
+ font-size: 12px;
138
+ color: var(--royui-drp-muted);
139
+ cursor: pointer;
140
+ transition:
141
+ background var(--royui-drp-dur) var(--royui-drp-ease),
142
+ color var(--royui-drp-dur) var(--royui-drp-ease),
143
+ border-color var(--royui-drp-dur) var(--royui-drp-ease);
144
+ }
145
+ .royui-drp__nav-btn:hover {
146
+ background: var(--royui-drp-hover-bg);
147
+ color: var(--royui-drp-fg);
148
+ border-color: var(--royui-drp-border-strong);
149
+ }
150
+
151
+ /* ── Months row ─────────────────────────────────────────── */
152
+
153
+ .royui-drp__months {
154
+ display: flex;
155
+ gap: 16px;
156
+ }
157
+
158
+ .royui-drp__month {
159
+ width: 240px;
160
+ }
161
+
162
+ .royui-drp__month-title {
163
+ font-size: 13px;
164
+ font-weight: 600;
165
+ letter-spacing: -0.005em;
166
+ color: var(--royui-drp-fg);
167
+ text-align: center;
168
+ margin-bottom: 6px;
169
+ }
170
+
171
+ .royui-drp__weekdays {
172
+ display: grid;
173
+ grid-template-columns: repeat(7, 1fr);
174
+ margin-bottom: 4px;
175
+ }
176
+ .royui-drp__weekday {
177
+ text-align: center;
178
+ font-size: 10.5px;
179
+ text-transform: uppercase;
180
+ letter-spacing: 0.04em;
181
+ color: var(--royui-drp-muted);
182
+ padding: 4px 0;
183
+ }
184
+
185
+ .royui-drp__grid {
186
+ display: grid;
187
+ grid-template-columns: repeat(7, 1fr);
188
+ gap: 1px;
189
+ }
190
+
191
+ .royui-drp__day {
192
+ position: relative;
193
+ appearance: none;
194
+ background: transparent;
195
+ border: 0;
196
+ border-radius: 999px;
197
+ height: 30px;
198
+ font: inherit;
199
+ font-size: 12.5px;
200
+ color: var(--royui-drp-fg);
201
+ cursor: pointer;
202
+ font-variant-numeric: tabular-nums;
203
+ display: flex;
204
+ align-items: center;
205
+ justify-content: center;
206
+ transition: background var(--royui-drp-dur) var(--royui-drp-ease);
207
+ }
208
+
209
+ .royui-drp__day:hover:not(:disabled) {
210
+ background: var(--royui-drp-hover-bg);
211
+ }
212
+
213
+ .royui-drp__day--out {
214
+ color: var(--royui-drp-subtle);
215
+ pointer-events: none;
216
+ }
217
+
218
+ .royui-drp__day--disabled {
219
+ color: var(--royui-drp-subtle);
220
+ cursor: not-allowed;
221
+ }
222
+
223
+ .royui-drp__day--today {
224
+ box-shadow: inset 0 0 0 1px var(--royui-drp-today-ring);
225
+ }
226
+
227
+ .royui-drp__day--in {
228
+ background: var(--royui-drp-in-bg);
229
+ border-radius: 0;
230
+ }
231
+
232
+ .royui-drp__day--edge {
233
+ background: var(--royui-drp-edge-bg);
234
+ color: var(--royui-drp-edge-fg);
235
+ z-index: 1;
236
+ }
237
+ .royui-drp__day--edge:hover {
238
+ background: var(--royui-drp-edge-bg);
239
+ }
240
+ .royui-drp__day--start {
241
+ border-top-left-radius: 999px;
242
+ border-bottom-left-radius: 999px;
243
+ border-top-right-radius: 999px;
244
+ border-bottom-right-radius: 999px;
245
+ }
246
+ .royui-drp__day--end {
247
+ border-top-right-radius: 999px;
248
+ border-bottom-right-radius: 999px;
249
+ border-top-left-radius: 999px;
250
+ border-bottom-left-radius: 999px;
251
+ }
252
+
253
+ /* ── Footer ─────────────────────────────────────────────── */
254
+
255
+ .royui-drp__foot {
256
+ display: flex;
257
+ justify-content: space-between;
258
+ align-items: center;
259
+ gap: 12px;
260
+ margin-top: 12px;
261
+ padding-top: 12px;
262
+ border-top: 1px solid var(--royui-drp-border);
263
+ }
264
+ .royui-drp__readout {
265
+ font-size: 12.5px;
266
+ color: var(--royui-drp-muted);
267
+ font-variant-numeric: tabular-nums;
268
+ }
269
+ .royui-drp__foot-actions {
270
+ display: flex;
271
+ gap: 6px;
272
+ }
273
+ .royui-drp__ghost,
274
+ .royui-drp__primary {
275
+ font: inherit;
276
+ font-size: 12.5px;
277
+ padding: 6px 12px;
278
+ border-radius: 7px;
279
+ cursor: pointer;
280
+ transition:
281
+ background var(--royui-drp-dur) var(--royui-drp-ease),
282
+ color var(--royui-drp-dur) var(--royui-drp-ease);
283
+ }
284
+ .royui-drp__ghost {
285
+ background: transparent;
286
+ border: 1px solid var(--royui-drp-border);
287
+ color: var(--royui-drp-muted);
288
+ }
289
+ .royui-drp__ghost:hover {
290
+ color: var(--royui-drp-fg);
291
+ background: var(--royui-drp-hover-bg);
292
+ }
293
+ .royui-drp__primary {
294
+ background: var(--royui-drp-edge-bg);
295
+ color: var(--royui-drp-edge-fg);
296
+ border: 1px solid var(--royui-drp-edge-bg);
297
+ }
298
+ .royui-drp__primary:disabled {
299
+ opacity: 0.4;
300
+ cursor: not-allowed;
301
+ }
302
+
303
+ @keyframes royui-drp-in {
304
+ from { opacity: 0; transform: translateY(-4px) scale(0.98); }
305
+ to { opacity: 1; transform: none; }
306
+ }
307
+
308
+ /* ── Dark ───────────────────────────────────────────────── */
309
+
310
+ @media (prefers-color-scheme: dark) {
311
+ .royui-drp {
312
+ --royui-drp-bg: #131315;
313
+ --royui-drp-fg: rgba(255, 255, 255, 0.94);
314
+ --royui-drp-muted: rgba(255, 255, 255, 0.55);
315
+ --royui-drp-subtle: rgba(255, 255, 255, 0.32);
316
+ --royui-drp-border: rgba(255, 255, 255, 0.1);
317
+ --royui-drp-border-strong: rgba(255, 255, 255, 0.22);
318
+ --royui-drp-hover-bg: rgba(255, 255, 255, 0.06);
319
+ --royui-drp-in-bg: rgba(255, 255, 255, 0.08);
320
+ --royui-drp-edge-bg: rgba(255, 255, 255, 0.95);
321
+ --royui-drp-edge-fg: #0a0a0a;
322
+ --royui-drp-today-ring: rgba(255, 255, 255, 0.55);
323
+ --royui-drp-preset-bg: rgba(255, 255, 255, 0.025);
324
+ }
325
+ .royui-drp__panel {
326
+ box-shadow:
327
+ 0 0 0 0.5px rgba(255, 255, 255, 0.06),
328
+ 0 6px 14px rgba(0, 0, 0, 0.4),
329
+ 0 22px 44px rgba(0, 0, 0, 0.55);
330
+ }
331
+ }
332
+
333
+ @media (prefers-reduced-motion: reduce) {
334
+ .royui-drp__panel { animation: none; }
335
+ }