@webappwiz/arbor 0.0.30 → 0.0.31

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 (118) hide show
  1. package/add.d.ts +23 -0
  2. package/age.d.ts +2 -0
  3. package/arbor.d.ts +11 -0
  4. package/attachments.d.ts +36 -0
  5. package/claim.d.ts +11 -0
  6. package/config.d.ts +55 -0
  7. package/config.js +7 -0
  8. package/dev/assets.d.ts +11 -0
  9. package/dev.d.ts +48 -0
  10. package/escalate.d.ts +28 -0
  11. package/exit.d.ts +42 -0
  12. package/git.d.ts +77 -0
  13. package/index.d.ts +2 -0
  14. package/index.js +4712 -0
  15. package/journal.d.ts +29 -0
  16. package/list.d.ts +18 -0
  17. package/load-config.d.ts +15 -0
  18. package/log.d.ts +14 -0
  19. package/merge.d.ts +24 -0
  20. package/package.json +15 -32
  21. package/path.d.ts +13 -0
  22. package/plan.d.ts +83 -0
  23. package/remove.d.ts +19 -0
  24. package/repository.d.ts +25 -0
  25. package/retry.d.ts +17 -0
  26. package/shell.d.ts +17 -0
  27. package/show.d.ts +53 -0
  28. package/snapshot.d.ts +35 -0
  29. package/table.d.ts +5 -0
  30. package/todo.d.ts +264 -0
  31. package/wait.d.ts +22 -0
  32. package/worktree-service.d.ts +51 -0
  33. package/worktree.d.ts +95 -0
  34. package/AGENTS.md +0 -7
  35. package/add.test.ts +0 -125
  36. package/add.ts +0 -192
  37. package/age.ts +0 -11
  38. package/arbor.test.ts +0 -145
  39. package/arbor.ts +0 -429
  40. package/assets.d.ts +0 -9
  41. package/attachments.ts +0 -87
  42. package/build.ts +0 -98
  43. package/claim.test.ts +0 -89
  44. package/claim.ts +0 -73
  45. package/components.json +0 -21
  46. package/config.ts +0 -58
  47. package/dev/api.ts +0 -120
  48. package/dev/app.test.tsx +0 -645
  49. package/dev/app.tsx +0 -80
  50. package/dev/assets.ts +0 -16
  51. package/dev/build/main.txt +0 -68
  52. package/dev/build/shell.txt +0 -21
  53. package/dev/build/styles.txt +0 -2263
  54. package/dev/components/ui/badge.tsx +0 -51
  55. package/dev/components/ui/button.tsx +0 -57
  56. package/dev/components/ui/dialog.tsx +0 -154
  57. package/dev/components/ui/empty.tsx +0 -100
  58. package/dev/components/ui/input-group.tsx +0 -155
  59. package/dev/components/ui/input.tsx +0 -19
  60. package/dev/components/ui/progress.tsx +0 -80
  61. package/dev/components/ui/textarea.tsx +0 -17
  62. package/dev/components/ui/toast.tsx +0 -227
  63. package/dev/feed.ts +0 -69
  64. package/dev/files.tsx +0 -191
  65. package/dev/index.html +0 -21
  66. package/dev/lib/utils.ts +0 -7
  67. package/dev/main.tsx +0 -22
  68. package/dev/markdown.test.tsx +0 -133
  69. package/dev/markdown.tsx +0 -124
  70. package/dev/mentions.tsx +0 -319
  71. package/dev/shadcn.css +0 -649
  72. package/dev/styles.css +0 -107
  73. package/dev/tags.tsx +0 -44
  74. package/dev/tasks.tsx +0 -151
  75. package/dev/todos.tsx +0 -759
  76. package/dev.test.ts +0 -439
  77. package/dev.ts +0 -386
  78. package/e2e.test.ts +0 -256
  79. package/escalate.test.ts +0 -76
  80. package/escalate.ts +0 -112
  81. package/exit.test.ts +0 -71
  82. package/exit.ts +0 -74
  83. package/git.ts +0 -294
  84. package/index.ts +0 -9
  85. package/journal.ts +0 -89
  86. package/list.test.ts +0 -82
  87. package/list.ts +0 -137
  88. package/load-config.test.ts +0 -121
  89. package/load-config.ts +0 -62
  90. package/log.test.ts +0 -65
  91. package/log.ts +0 -40
  92. package/merge.test.ts +0 -332
  93. package/merge.ts +0 -283
  94. package/path.test.ts +0 -35
  95. package/path.ts +0 -38
  96. package/plan.test.ts +0 -318
  97. package/plan.ts +0 -302
  98. package/progress.test.ts +0 -54
  99. package/progress.ts +0 -31
  100. package/remove.test.ts +0 -68
  101. package/remove.ts +0 -88
  102. package/repository.ts +0 -83
  103. package/retry.test.ts +0 -43
  104. package/retry.ts +0 -48
  105. package/shell.ts +0 -44
  106. package/show.test.ts +0 -91
  107. package/show.ts +0 -151
  108. package/snapshot.test.ts +0 -33
  109. package/snapshot.ts +0 -84
  110. package/table.ts +0 -20
  111. package/testing.ts +0 -229
  112. package/todo.test.ts +0 -490
  113. package/todo.ts +0 -834
  114. package/wait.test.ts +0 -61
  115. package/wait.ts +0 -77
  116. package/worktree-service.test.ts +0 -158
  117. package/worktree-service.ts +0 -193
  118. package/worktree.ts +0 -239
package/dev/shadcn.css DELETED
@@ -1,649 +0,0 @@
1
- /* Vendored from the shadcn package's dist/tailwind.css (shadcn 4.21.0): the
2
- custom variants (data-open, data-horizontal, ...) and keyframes the
3
- components in ./components/ui are written against. The package itself is
4
- the whole shadcn CLI, too much to install for one stylesheet. */
5
-
6
- @theme inline {
7
- @keyframes accordion-down {
8
- from {
9
- height: 0;
10
- }
11
- to {
12
- height: var(
13
- --radix-accordion-content-height,
14
- var(--accordion-panel-height, auto)
15
- );
16
- }
17
- }
18
-
19
- @keyframes accordion-up {
20
- from {
21
- height: var(
22
- --radix-accordion-content-height,
23
- var(--accordion-panel-height, auto)
24
- );
25
- }
26
- to {
27
- height: 0;
28
- }
29
- }
30
- }
31
-
32
- /* Custom variants */
33
- @custom-variant data-open {
34
- &:where([data-state="open"]),
35
- &:where([data-open]:not([data-open="false"])) {
36
- @slot;
37
- }
38
- }
39
-
40
- @custom-variant data-closed {
41
- &:where([data-state="closed"]),
42
- &:where([data-closed]:not([data-closed="false"])) {
43
- @slot;
44
- }
45
- }
46
-
47
- @custom-variant data-checked {
48
- &:where([data-state="checked"]),
49
- &:where([data-checked]:not([data-checked="false"])) {
50
- @slot;
51
- }
52
- }
53
-
54
- @custom-variant data-unchecked {
55
- &:where([data-state="unchecked"]),
56
- &:where([data-unchecked]:not([data-unchecked="false"])) {
57
- @slot;
58
- }
59
- }
60
-
61
- @custom-variant data-selected {
62
- &:where([data-selected="true"]) {
63
- @slot;
64
- }
65
- }
66
-
67
- @custom-variant data-disabled {
68
- &:where([data-disabled="true"]),
69
- &:where([data-disabled]:not([data-disabled="false"])) {
70
- @slot;
71
- }
72
- }
73
-
74
- @custom-variant data-active {
75
- &:where([data-state="active"]),
76
- &:where([data-active]:not([data-active="false"])) {
77
- @slot;
78
- }
79
- }
80
-
81
- @custom-variant data-horizontal {
82
- &:where([data-orientation="horizontal"]) {
83
- @slot;
84
- }
85
- }
86
-
87
- @custom-variant data-vertical {
88
- &:where([data-orientation="vertical"]) {
89
- @slot;
90
- }
91
- }
92
-
93
- @utility no-scrollbar {
94
- -ms-overflow-style: none;
95
- scrollbar-width: none;
96
-
97
- &::-webkit-scrollbar {
98
- display: none;
99
- }
100
- }
101
-
102
- /* scroll-fade */
103
- @property --scroll-fade-t {
104
- syntax: "<length-percentage>";
105
- inherits: false;
106
- initial-value: 0px;
107
- }
108
- @property --scroll-fade-b {
109
- syntax: "<length-percentage>";
110
- inherits: false;
111
- initial-value: 0px;
112
- }
113
- @property --scroll-fade-s {
114
- syntax: "<length-percentage>";
115
- inherits: false;
116
- initial-value: 0px;
117
- }
118
- @property --scroll-fade-e {
119
- syntax: "<length-percentage>";
120
- inherits: false;
121
- initial-value: 0px;
122
- }
123
- @property --scroll-fade-mask {
124
- syntax: "*";
125
- inherits: false;
126
- }
127
-
128
- @theme inline {
129
- @keyframes scroll-fade-reveal-t {
130
- from {
131
- --scroll-fade-t: 0px;
132
- }
133
- to {
134
- --scroll-fade-t: var(
135
- --_scroll-fade-size-t,
136
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
137
- );
138
- }
139
- }
140
- @keyframes scroll-fade-reveal-b {
141
- from {
142
- --scroll-fade-b: var(
143
- --_scroll-fade-size-b,
144
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
145
- );
146
- }
147
- to {
148
- --scroll-fade-b: 0px;
149
- }
150
- }
151
- @keyframes scroll-fade-reveal-s {
152
- from {
153
- --scroll-fade-s: 0px;
154
- }
155
- to {
156
- --scroll-fade-s: var(
157
- --_scroll-fade-size-s,
158
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
159
- );
160
- }
161
- }
162
- @keyframes scroll-fade-reveal-e {
163
- from {
164
- --scroll-fade-e: var(
165
- --_scroll-fade-size-e,
166
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
167
- );
168
- }
169
- to {
170
- --scroll-fade-e: 0px;
171
- }
172
- }
173
- }
174
-
175
- @utility scroll-fade {
176
- --_scroll-fade-size-t: var(
177
- --scroll-fade-t-size,
178
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
179
- );
180
- --_scroll-fade-size-b: var(
181
- --scroll-fade-b-size,
182
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
183
- );
184
- --scroll-fade-block: linear-gradient(
185
- to bottom,
186
- transparent 0,
187
- #000 var(--scroll-fade-t, 0px),
188
- #000 calc(100% - var(--scroll-fade-b, 0px)),
189
- transparent 100%
190
- );
191
- -webkit-mask-image: var(--scroll-fade-mask, var(--scroll-fade-block));
192
- mask-image: var(--scroll-fade-mask, var(--scroll-fade-block));
193
- -webkit-mask-composite: source-in;
194
- mask-composite: intersect;
195
- -webkit-mask-repeat: no-repeat;
196
- mask-repeat: no-repeat;
197
-
198
- @supports (animation-timeline: scroll()) {
199
- animation:
200
- scroll-fade-reveal-t 1ms ease-in-out,
201
- scroll-fade-reveal-b 1ms ease-in-out;
202
- animation-timeline: scroll(self y), scroll(self y);
203
- animation-range:
204
- 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
205
- calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
206
- animation-fill-mode: both;
207
- }
208
-
209
- @supports not (animation-timeline: scroll()) {
210
- --scroll-fade-t: var(--_scroll-fade-size-t);
211
- --scroll-fade-b: var(--_scroll-fade-size-b);
212
- }
213
- }
214
-
215
- @utility scroll-fade-y {
216
- --_scroll-fade-size-t: var(
217
- --scroll-fade-t-size,
218
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
219
- );
220
- --_scroll-fade-size-b: var(
221
- --scroll-fade-b-size,
222
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
223
- );
224
- --scroll-fade-block: linear-gradient(
225
- to bottom,
226
- transparent 0,
227
- #000 var(--scroll-fade-t, 0px),
228
- #000 calc(100% - var(--scroll-fade-b, 0px)),
229
- transparent 100%
230
- );
231
- -webkit-mask-image: var(--scroll-fade-mask, var(--scroll-fade-block));
232
- mask-image: var(--scroll-fade-mask, var(--scroll-fade-block));
233
- -webkit-mask-composite: source-in;
234
- mask-composite: intersect;
235
- -webkit-mask-repeat: no-repeat;
236
- mask-repeat: no-repeat;
237
-
238
- @supports (animation-timeline: scroll()) {
239
- animation:
240
- scroll-fade-reveal-t 1ms ease-in-out,
241
- scroll-fade-reveal-b 1ms ease-in-out;
242
- animation-timeline: scroll(self y), scroll(self y);
243
- animation-range:
244
- 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
245
- calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
246
- animation-fill-mode: both;
247
- }
248
-
249
- @supports not (animation-timeline: scroll()) {
250
- --scroll-fade-t: var(--_scroll-fade-size-t);
251
- --scroll-fade-b: var(--_scroll-fade-size-b);
252
- }
253
- }
254
-
255
- @utility scroll-fade-x {
256
- --_scroll-fade-size-s: var(
257
- --scroll-fade-s-size,
258
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
259
- );
260
- --_scroll-fade-size-e: var(
261
- --scroll-fade-e-size,
262
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
263
- );
264
- --scroll-fade-inline: linear-gradient(
265
- to right,
266
- transparent 0,
267
- #000 var(--scroll-fade-s, 0px),
268
- #000 calc(100% - var(--scroll-fade-e, 0px)),
269
- transparent 100%
270
- );
271
- &:where([dir="rtl"], [dir="rtl"] *) {
272
- --scroll-fade-inline: linear-gradient(
273
- to left,
274
- transparent 0,
275
- #000 var(--scroll-fade-s, 0px),
276
- #000 calc(100% - var(--scroll-fade-e, 0px)),
277
- transparent 100%
278
- );
279
- }
280
- -webkit-mask-image: var(--scroll-fade-mask, var(--scroll-fade-inline));
281
- mask-image: var(--scroll-fade-mask, var(--scroll-fade-inline));
282
- -webkit-mask-composite: source-in;
283
- mask-composite: intersect;
284
- -webkit-mask-repeat: no-repeat;
285
- mask-repeat: no-repeat;
286
-
287
- @supports (animation-timeline: scroll()) {
288
- animation:
289
- scroll-fade-reveal-s 1ms ease-in-out,
290
- scroll-fade-reveal-e 1ms ease-in-out;
291
- animation-timeline: scroll(self inline), scroll(self inline);
292
- animation-range:
293
- 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
294
- calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
295
- animation-fill-mode: both;
296
- }
297
-
298
- @supports not (animation-timeline: scroll()) {
299
- --scroll-fade-s: var(--_scroll-fade-size-s);
300
- --scroll-fade-e: var(--_scroll-fade-size-e);
301
- }
302
- }
303
-
304
- @utility scroll-fade-t {
305
- --_scroll-fade-size-t: var(
306
- --scroll-fade-t-size,
307
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
308
- );
309
- --scroll-fade-mask: linear-gradient(
310
- to bottom,
311
- transparent 0,
312
- #000 var(--scroll-fade-t, 0px),
313
- #000 100%
314
- );
315
- -webkit-mask-image: var(--scroll-fade-mask);
316
- mask-image: var(--scroll-fade-mask);
317
- -webkit-mask-composite: source-in;
318
- mask-composite: intersect;
319
- -webkit-mask-repeat: no-repeat;
320
- mask-repeat: no-repeat;
321
-
322
- @supports (animation-timeline: scroll()) {
323
- animation: scroll-fade-reveal-t 1ms ease-in-out;
324
- animation-timeline: scroll(self y);
325
- animation-range: 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24));
326
- animation-fill-mode: both;
327
- }
328
-
329
- @supports not (animation-timeline: scroll()) {
330
- --scroll-fade-t: var(--_scroll-fade-size-t);
331
- }
332
- }
333
-
334
- @utility scroll-fade-b {
335
- --_scroll-fade-size-b: var(
336
- --scroll-fade-b-size,
337
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
338
- );
339
- --scroll-fade-mask: linear-gradient(
340
- to bottom,
341
- #000 0,
342
- #000 calc(100% - var(--scroll-fade-b, 0px)),
343
- transparent 100%
344
- );
345
- -webkit-mask-image: var(--scroll-fade-mask);
346
- mask-image: var(--scroll-fade-mask);
347
- -webkit-mask-composite: source-in;
348
- mask-composite: intersect;
349
- -webkit-mask-repeat: no-repeat;
350
- mask-repeat: no-repeat;
351
-
352
- @supports (animation-timeline: scroll()) {
353
- animation: scroll-fade-reveal-b 1ms ease-in-out;
354
- animation-timeline: scroll(self y);
355
- animation-range: calc(
356
- 100% -
357
- var(--scroll-fade-reveal, calc(var(--spacing) * 24))
358
- )
359
- 100%;
360
- animation-fill-mode: both;
361
- }
362
-
363
- @supports not (animation-timeline: scroll()) {
364
- --scroll-fade-b: var(--_scroll-fade-size-b);
365
- }
366
- }
367
-
368
- @utility scroll-fade-l {
369
- --_scroll-fade-size-s: var(
370
- --scroll-fade-s-size,
371
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
372
- );
373
- --scroll-fade-mask: linear-gradient(
374
- to right,
375
- transparent 0,
376
- #000 var(--scroll-fade-s, 0px),
377
- #000 100%
378
- );
379
- -webkit-mask-image: var(--scroll-fade-mask);
380
- mask-image: var(--scroll-fade-mask);
381
- -webkit-mask-composite: source-in;
382
- mask-composite: intersect;
383
- -webkit-mask-repeat: no-repeat;
384
- mask-repeat: no-repeat;
385
-
386
- @supports (animation-timeline: scroll()) {
387
- animation: scroll-fade-reveal-s 1ms ease-in-out;
388
- animation-timeline: scroll(self x);
389
- animation-range: 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24));
390
- animation-fill-mode: both;
391
- }
392
-
393
- @supports not (animation-timeline: scroll()) {
394
- --scroll-fade-s: var(--_scroll-fade-size-s);
395
- }
396
- }
397
-
398
- @utility scroll-fade-r {
399
- --_scroll-fade-size-e: var(
400
- --scroll-fade-e-size,
401
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
402
- );
403
- --scroll-fade-mask: linear-gradient(
404
- to right,
405
- #000 0,
406
- #000 calc(100% - var(--scroll-fade-e, 0px)),
407
- transparent 100%
408
- );
409
- -webkit-mask-image: var(--scroll-fade-mask);
410
- mask-image: var(--scroll-fade-mask);
411
- -webkit-mask-composite: source-in;
412
- mask-composite: intersect;
413
- -webkit-mask-repeat: no-repeat;
414
- mask-repeat: no-repeat;
415
-
416
- @supports (animation-timeline: scroll()) {
417
- animation: scroll-fade-reveal-e 1ms ease-in-out;
418
- animation-timeline: scroll(self x);
419
- animation-range: calc(
420
- 100% -
421
- var(--scroll-fade-reveal, calc(var(--spacing) * 24))
422
- )
423
- 100%;
424
- animation-fill-mode: both;
425
- }
426
-
427
- @supports not (animation-timeline: scroll()) {
428
- --scroll-fade-e: var(--_scroll-fade-size-e);
429
- }
430
- }
431
-
432
- @utility scroll-fade-s {
433
- --_scroll-fade-size-s: var(
434
- --scroll-fade-s-size,
435
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
436
- );
437
- --scroll-fade-mask: linear-gradient(
438
- to right,
439
- transparent 0,
440
- #000 var(--scroll-fade-s, 0px),
441
- #000 100%
442
- );
443
- &:where([dir="rtl"], [dir="rtl"] *) {
444
- --scroll-fade-mask: linear-gradient(
445
- to left,
446
- transparent 0,
447
- #000 var(--scroll-fade-s, 0px),
448
- #000 100%
449
- );
450
- }
451
- -webkit-mask-image: var(--scroll-fade-mask);
452
- mask-image: var(--scroll-fade-mask);
453
- -webkit-mask-composite: source-in;
454
- mask-composite: intersect;
455
- -webkit-mask-repeat: no-repeat;
456
- mask-repeat: no-repeat;
457
-
458
- @supports (animation-timeline: scroll()) {
459
- animation: scroll-fade-reveal-s 1ms ease-in-out;
460
- animation-timeline: scroll(self inline);
461
- animation-range: 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24));
462
- animation-fill-mode: both;
463
- }
464
-
465
- @supports not (animation-timeline: scroll()) {
466
- --scroll-fade-s: var(--_scroll-fade-size-s);
467
- }
468
- }
469
-
470
- @utility scroll-fade-e {
471
- --_scroll-fade-size-e: var(
472
- --scroll-fade-e-size,
473
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
474
- );
475
- --scroll-fade-mask: linear-gradient(
476
- to right,
477
- #000 0,
478
- #000 calc(100% - var(--scroll-fade-e, 0px)),
479
- transparent 100%
480
- );
481
- &:where([dir="rtl"], [dir="rtl"] *) {
482
- --scroll-fade-mask: linear-gradient(
483
- to left,
484
- #000 0,
485
- #000 calc(100% - var(--scroll-fade-e, 0px)),
486
- transparent 100%
487
- );
488
- }
489
- -webkit-mask-image: var(--scroll-fade-mask);
490
- mask-image: var(--scroll-fade-mask);
491
- -webkit-mask-composite: source-in;
492
- mask-composite: intersect;
493
- -webkit-mask-repeat: no-repeat;
494
- mask-repeat: no-repeat;
495
-
496
- @supports (animation-timeline: scroll()) {
497
- animation: scroll-fade-reveal-e 1ms ease-in-out;
498
- animation-timeline: scroll(self inline);
499
- animation-range: calc(
500
- 100% -
501
- var(--scroll-fade-reveal, calc(var(--spacing) * 24))
502
- )
503
- 100%;
504
- animation-fill-mode: both;
505
- }
506
-
507
- @supports not (animation-timeline: scroll()) {
508
- --scroll-fade-e: var(--_scroll-fade-size-e);
509
- }
510
- }
511
-
512
- @utility scroll-fade-* {
513
- --scroll-fade-size: calc(var(--spacing) * --value(integer));
514
- --scroll-fade-size: --value([length], [percentage]);
515
- }
516
-
517
- @utility scroll-fade-t-* {
518
- --scroll-fade-t-size: calc(var(--spacing) * --value(integer));
519
- --scroll-fade-t-size: --value([length], [percentage]);
520
- }
521
-
522
- @utility scroll-fade-b-* {
523
- --scroll-fade-b-size: calc(var(--spacing) * --value(integer));
524
- --scroll-fade-b-size: --value([length], [percentage]);
525
- }
526
-
527
- @utility scroll-fade-s-* {
528
- --scroll-fade-s-size: calc(var(--spacing) * --value(integer));
529
- --scroll-fade-s-size: --value([length], [percentage]);
530
- }
531
-
532
- @utility scroll-fade-e-* {
533
- --scroll-fade-e-size: calc(var(--spacing) * --value(integer));
534
- --scroll-fade-e-size: --value([length], [percentage]);
535
- }
536
-
537
- @utility scroll-fade-none {
538
- --scroll-fade-mask: none;
539
- }
540
-
541
- /* shimmer */
542
- @property --shimmer-angle {
543
- syntax: "<angle>";
544
- inherits: true;
545
- initial-value: 20deg;
546
- }
547
- @property --shimmer-image {
548
- syntax: "*";
549
- inherits: false;
550
- }
551
- @property --shimmer-text-fill {
552
- syntax: "*";
553
- inherits: false;
554
- }
555
-
556
- @theme inline {
557
- @keyframes tw-shimmer {
558
- from {
559
- background-position: 100% 0;
560
- }
561
- to {
562
- background-position: 0 0;
563
- }
564
- }
565
- }
566
-
567
- @utility shimmer {
568
- --_spread: var(--shimmer-spread, calc(3ch + 40px));
569
- --_base: currentColor;
570
- --_highlight: var(
571
- --shimmer-color,
572
- oklch(from currentColor l c h / calc(alpha * 0.2))
573
- );
574
-
575
- background-image: var(
576
- --shimmer-image,
577
- linear-gradient(
578
- calc(90deg + var(--shimmer-angle)),
579
- var(--_base) calc(50% - var(--_spread)),
580
- color-mix(in oklch, var(--_highlight), var(--_base) 50%)
581
- calc(50% - var(--_spread) * 0.5),
582
- var(--_highlight) 50%,
583
- color-mix(in oklch, var(--_highlight), var(--_base) 50%)
584
- calc(50% + var(--_spread) * 0.5),
585
- var(--_base) calc(50% + var(--_spread))
586
- )
587
- );
588
- background-repeat: no-repeat;
589
- background-size: calc(200% + var(--_spread) * 2) 100%;
590
- background-position: 0 0;
591
- background-clip: text;
592
- -webkit-background-clip: text;
593
- -webkit-text-fill-color: var(--shimmer-text-fill, transparent);
594
- animation: tw-shimmer var(--shimmer-duration, 2s) linear infinite;
595
-
596
- @variant dark {
597
- --_highlight: var(
598
- --shimmer-color,
599
- oklch(from currentColor max(0.8, calc(l + 0.4)) c h / calc(alpha + 0.4))
600
- );
601
- }
602
-
603
- &:where([dir="rtl"], [dir="rtl"] *) {
604
- animation-direction: reverse;
605
- }
606
- }
607
-
608
- @utility shimmer-once {
609
- animation-iteration-count: 1;
610
- }
611
-
612
- @utility shimmer-reverse {
613
- animation-direction: reverse;
614
- }
615
-
616
- @utility shimmer-none {
617
- --shimmer-image: none;
618
- --shimmer-text-fill: currentColor;
619
- }
620
-
621
- @utility shimmer-color-* {
622
- --shimmer-color: --value(--color, [color]);
623
- --shimmer-color: color-mix(
624
- in oklch,
625
- --value(--color, [color]) calc(--modifier(integer) * 1%),
626
- transparent
627
- );
628
- }
629
-
630
- @utility shimmer-duration-* {
631
- --shimmer-duration: calc(--value(integer) * 1ms);
632
- }
633
-
634
- @utility shimmer-spread-* {
635
- --shimmer-spread: calc(var(--spacing) * --value(integer));
636
- --shimmer-spread: --value([length], [percentage]);
637
- }
638
-
639
- @utility shimmer-angle-* {
640
- --shimmer-angle: calc(--value(integer) * 1deg);
641
- }
642
-
643
- @media (prefers-reduced-motion: reduce) {
644
- .shimmer {
645
- animation: none;
646
- background-image: none;
647
- -webkit-text-fill-color: currentColor;
648
- }
649
- }