@polishd/next 0.2.3-dev.5 → 0.2.3-dev.7

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 (90) hide show
  1. package/AGENTS.md +1 -1
  2. package/CHANGELOG.md +79 -14
  3. package/README.md +13 -3
  4. package/dist/ai/actions.d.ts +13 -1
  5. package/dist/ai/actions.d.ts.map +1 -1
  6. package/dist/ai/actions.js +20 -1
  7. package/dist/ai/actions.js.map +1 -1
  8. package/dist/ai/design.d.ts +5 -1
  9. package/dist/ai/design.d.ts.map +1 -1
  10. package/dist/ai/design.js +21 -4
  11. package/dist/ai/design.js.map +1 -1
  12. package/dist/ai/fix.d.ts +14 -0
  13. package/dist/ai/fix.d.ts.map +1 -0
  14. package/dist/ai/fix.js +254 -0
  15. package/dist/ai/fix.js.map +1 -0
  16. package/dist/ai/guard.d.ts.map +1 -1
  17. package/dist/ai/guard.js +8 -32
  18. package/dist/ai/guard.js.map +1 -1
  19. package/dist/ai/issues.d.ts +29 -6
  20. package/dist/ai/issues.d.ts.map +1 -1
  21. package/dist/ai/issues.js +113 -40
  22. package/dist/ai/issues.js.map +1 -1
  23. package/dist/ai/types.d.ts +52 -0
  24. package/dist/ai/types.d.ts.map +1 -1
  25. package/dist/dashboard/design-review-card.d.ts +3 -1
  26. package/dist/dashboard/design-review-card.d.ts.map +1 -1
  27. package/dist/dashboard/design-review-card.js +14 -6
  28. package/dist/dashboard/design-review-card.js.map +1 -1
  29. package/dist/dashboard/design.d.ts.map +1 -1
  30. package/dist/dashboard/design.js +75 -17
  31. package/dist/dashboard/design.js.map +1 -1
  32. package/dist/dashboard/file-bug-button.d.ts +14 -0
  33. package/dist/dashboard/file-bug-button.d.ts.map +1 -0
  34. package/dist/dashboard/file-bug-button.js +37 -0
  35. package/dist/dashboard/file-bug-button.js.map +1 -0
  36. package/dist/dashboard/index.d.ts.map +1 -1
  37. package/dist/dashboard/index.js +4 -2
  38. package/dist/dashboard/index.js.map +1 -1
  39. package/dist/dashboard/issue-list.d.ts +11 -0
  40. package/dist/dashboard/issue-list.d.ts.map +1 -0
  41. package/dist/dashboard/issue-list.js +159 -0
  42. package/dist/dashboard/issue-list.js.map +1 -0
  43. package/dist/dashboard/issues.d.ts +31 -2
  44. package/dist/dashboard/issues.d.ts.map +1 -1
  45. package/dist/dashboard/issues.js +4 -71
  46. package/dist/dashboard/issues.js.map +1 -1
  47. package/dist/dashboard/markdown-parse.d.ts +87 -0
  48. package/dist/dashboard/markdown-parse.d.ts.map +1 -0
  49. package/dist/dashboard/markdown-parse.js +244 -0
  50. package/dist/dashboard/markdown-parse.js.map +1 -0
  51. package/dist/dashboard/markdown.d.ts +5 -0
  52. package/dist/dashboard/markdown.d.ts.map +1 -0
  53. package/dist/dashboard/markdown.js +65 -0
  54. package/dist/dashboard/markdown.js.map +1 -0
  55. package/dist/dashboard/snapshot-actions.d.ts.map +1 -1
  56. package/dist/dashboard/snapshot-actions.js +22 -54
  57. package/dist/dashboard/snapshot-actions.js.map +1 -1
  58. package/dist/dashboard/snapshots.d.ts.map +1 -1
  59. package/dist/dashboard/snapshots.js +7 -20
  60. package/dist/dashboard/snapshots.js.map +1 -1
  61. package/dist/dashboard/summary.d.ts.map +1 -1
  62. package/dist/dashboard/summary.js +8 -36
  63. package/dist/dashboard/summary.js.map +1 -1
  64. package/dist/dashboard/ui.d.ts +1 -0
  65. package/dist/dashboard/ui.d.ts.map +1 -1
  66. package/dist/dashboard/ui.js +1 -0
  67. package/dist/dashboard/ui.js.map +1 -1
  68. package/dist/dashboard/value-preview.d.ts +47 -0
  69. package/dist/dashboard/value-preview.d.ts.map +1 -0
  70. package/dist/dashboard/value-preview.js +138 -0
  71. package/dist/dashboard/value-preview.js.map +1 -0
  72. package/dist/dashboard.css +234 -62
  73. package/dist/server/snapshot-blob.d.ts +38 -0
  74. package/dist/server/snapshot-blob.d.ts.map +1 -0
  75. package/dist/server/snapshot-blob.js +75 -0
  76. package/dist/server/snapshot-blob.js.map +1 -0
  77. package/dist/server/snapshots.d.ts +32 -4
  78. package/dist/server/snapshots.d.ts.map +1 -1
  79. package/dist/server/snapshots.js +195 -55
  80. package/dist/server/snapshots.js.map +1 -1
  81. package/dist/server/value-previews.d.ts +47 -0
  82. package/dist/server/value-previews.d.ts.map +1 -0
  83. package/dist/server/value-previews.js +313 -0
  84. package/dist/server/value-previews.js.map +1 -0
  85. package/dist/shared/design-values.d.ts +71 -0
  86. package/dist/shared/design-values.d.ts.map +1 -0
  87. package/dist/shared/design-values.js +98 -0
  88. package/dist/shared/design-values.js.map +1 -0
  89. package/docs/SETUP.md +4 -2
  90. package/package.json +1 -1
@@ -93,6 +93,7 @@
93
93
  --color-purple-300: oklch(82.7% .119 306.383);
94
94
  --color-purple-400: oklch(71.4% .203 305.504);
95
95
  --color-purple-500: oklch(62.7% .265 303.9);
96
+ --color-purple-950: oklch(29.1% .149 302.717);
96
97
  --color-black: #000;
97
98
  --color-white: #fff;
98
99
  --spacing: .25rem;
@@ -107,6 +108,7 @@
107
108
  --font-weight-medium: 500;
108
109
  --font-weight-semibold: 600;
109
110
  --font-weight-bold: 700;
111
+ --font-weight-extrabold: 800;
110
112
  --tracking-tight: -.025em;
111
113
  --tracking-normal: 0em;
112
114
  --tracking-wider: .05em;
@@ -117,6 +119,7 @@
117
119
  --radius-lg: .5rem;
118
120
  --radius-xl: .75rem;
119
121
  --ease-out: cubic-bezier(0, 0, .2, 1);
122
+ --ease-in-out: cubic-bezier(.4, 0, .2, 1);
120
123
  --animate-spin: spin 1s linear infinite;
121
124
  --animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;
122
125
  --default-transition-duration: .15s;
@@ -219,6 +222,10 @@
219
222
  border-top-width: 1px;
220
223
  }
221
224
 
225
+ .polishd-root.polishd-root .\[container-type\:inline-size\] {
226
+ container-type: inline-size;
227
+ }
228
+
222
229
  .polishd-root.polishd-root .pointer-events-none {
223
230
  pointer-events: none;
224
231
  }
@@ -389,6 +396,14 @@
389
396
  }
390
397
  }
391
398
 
399
+ .polishd-root.polishd-root .-m-1\.5 {
400
+ margin: calc(var(--spacing) * -1.5);
401
+ }
402
+
403
+ .polishd-root.polishd-root .-mx-1\.5 {
404
+ margin-inline: calc(var(--spacing) * -1.5);
405
+ }
406
+
392
407
  .polishd-root.polishd-root .mx-1\.5 {
393
408
  margin-inline: calc(var(--spacing) * 1.5);
394
409
  }
@@ -397,10 +412,18 @@
397
412
  margin-inline: calc(var(--spacing) * 4);
398
413
  }
399
414
 
415
+ .polishd-root.polishd-root .mx-\[0\.02em\] {
416
+ margin-inline: .02em;
417
+ }
418
+
400
419
  .polishd-root.polishd-root .mx-auto {
401
420
  margin-inline: auto;
402
421
  }
403
422
 
423
+ .polishd-root.polishd-root .my-1 {
424
+ margin-block: var(--spacing);
425
+ }
426
+
404
427
  .polishd-root.polishd-root .mt-0\.5 {
405
428
  margin-top: calc(var(--spacing) * .5);
406
429
  }
@@ -445,6 +468,10 @@
445
468
  margin-top: calc(var(--spacing) * 7);
446
469
  }
447
470
 
471
+ .polishd-root.polishd-root .mt-8 {
472
+ margin-top: calc(var(--spacing) * 8);
473
+ }
474
+
448
475
  .polishd-root.polishd-root .mt-9 {
449
476
  margin-top: calc(var(--spacing) * 9);
450
477
  }
@@ -457,10 +484,6 @@
457
484
  margin-top: calc(var(--spacing) * 14);
458
485
  }
459
486
 
460
- .polishd-root.polishd-root .mt-16 {
461
- margin-top: calc(var(--spacing) * 16);
462
- }
463
-
464
487
  .polishd-root.polishd-root .mt-\[5px\] {
465
488
  margin-top: 5px;
466
489
  }
@@ -473,14 +496,6 @@
473
496
  margin-top: 18px;
474
497
  }
475
498
 
476
- .polishd-root.polishd-root .mt-\[22px\] {
477
- margin-top: 22px;
478
- }
479
-
480
- .polishd-root.polishd-root .mt-\[26px\] {
481
- margin-top: 26px;
482
- }
483
-
484
499
  .polishd-root.polishd-root .mt-\[34px\] {
485
500
  margin-top: 34px;
486
501
  }
@@ -565,6 +580,10 @@
565
580
  aspect-ratio: 4 / 5;
566
581
  }
567
582
 
583
+ .polishd-root.polishd-root .aspect-\[16\/10\] {
584
+ aspect-ratio: 16 / 10;
585
+ }
586
+
568
587
  .polishd-root.polishd-root .h-1 {
569
588
  height: var(--spacing);
570
589
  }
@@ -625,6 +644,10 @@
625
644
  height: calc(var(--spacing) * 16);
626
645
  }
627
646
 
647
+ .polishd-root.polishd-root .h-\[0\.73em\] {
648
+ height: .73em;
649
+ }
650
+
628
651
  .polishd-root.polishd-root .h-\[5px\] {
629
652
  height: 5px;
630
653
  }
@@ -657,8 +680,8 @@
657
680
  height: 1px;
658
681
  }
659
682
 
660
- .polishd-root.polishd-root .max-h-96 {
661
- max-height: calc(var(--spacing) * 96);
683
+ .polishd-root.polishd-root .max-h-\[56vh\] {
684
+ max-height: 56vh;
662
685
  }
663
686
 
664
687
  .polishd-root.polishd-root .max-h-\[80vh\] {
@@ -781,6 +804,10 @@
781
804
  width: 74px;
782
805
  }
783
806
 
807
+ .polishd-root.polishd-root .w-\[88vw\] {
808
+ width: 88vw;
809
+ }
810
+
784
811
  .polishd-root.polishd-root .w-\[92\%\] {
785
812
  width: 92%;
786
813
  }
@@ -833,12 +860,12 @@
833
860
  max-width: 46ch;
834
861
  }
835
862
 
836
- .polishd-root.polishd-root .max-w-\[52ch\] {
837
- max-width: 52ch;
863
+ .polishd-root.polishd-root .max-w-\[56ch\] {
864
+ max-width: 56ch;
838
865
  }
839
866
 
840
- .polishd-root.polishd-root .max-w-\[58ch\] {
841
- max-width: 58ch;
867
+ .polishd-root.polishd-root .max-w-\[62ch\] {
868
+ max-width: 62ch;
842
869
  }
843
870
 
844
871
  .polishd-root.polishd-root .max-w-\[68ch\] {
@@ -994,8 +1021,12 @@
994
1021
  resize: vertical;
995
1022
  }
996
1023
 
997
- .polishd-root.polishd-root .list-none {
998
- list-style-type: none;
1024
+ .polishd-root.polishd-root .list-decimal {
1025
+ list-style-type: decimal;
1026
+ }
1027
+
1028
+ .polishd-root.polishd-root .list-disc {
1029
+ list-style-type: disc;
999
1030
  }
1000
1031
 
1001
1032
  .polishd-root.polishd-root .grid-cols-1 {
@@ -1094,6 +1125,12 @@
1094
1125
  gap: 1px;
1095
1126
  }
1096
1127
 
1128
+ .polishd-root.polishd-root :where(.space-y-1 > :not(:last-child)) {
1129
+ --tw-space-y-reverse: 0;
1130
+ margin-block-start: calc(var(--spacing) * var(--tw-space-y-reverse));
1131
+ margin-block-end: calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)));
1132
+ }
1133
+
1097
1134
  .polishd-root.polishd-root :where(.space-y-1\.5 > :not(:last-child)) {
1098
1135
  --tw-space-y-reverse: 0;
1099
1136
  margin-block-start: calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));
@@ -1124,6 +1161,10 @@
1124
1161
  margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));
1125
1162
  }
1126
1163
 
1164
+ .polishd-root.polishd-root .gap-x-1\.5 {
1165
+ column-gap: calc(var(--spacing) * 1.5);
1166
+ }
1167
+
1127
1168
  .polishd-root.polishd-root .gap-x-2 {
1128
1169
  column-gap: calc(var(--spacing) * 2);
1129
1170
  }
@@ -1174,6 +1215,10 @@
1174
1215
  overflow-x: auto;
1175
1216
  }
1176
1217
 
1218
+ .polishd-root.polishd-root .overflow-x-clip {
1219
+ overflow-x: clip;
1220
+ }
1221
+
1177
1222
  .polishd-root.polishd-root .overflow-y-auto {
1178
1223
  overflow-y: auto;
1179
1224
  }
@@ -1261,6 +1306,11 @@
1261
1306
  border-left-width: 1px;
1262
1307
  }
1263
1308
 
1309
+ .polishd-root.polishd-root .border-l-2 {
1310
+ border-left-style: var(--tw-border-style);
1311
+ border-left-width: 2px;
1312
+ }
1313
+
1264
1314
  .polishd-root.polishd-root .border-dashed {
1265
1315
  --tw-border-style: dashed;
1266
1316
  border-style: dashed;
@@ -1274,6 +1324,10 @@
1274
1324
  border-color: oklab(34.6182% -.0177443 -.0713795 / .6);
1275
1325
  }
1276
1326
 
1327
+ .polishd-root.polishd-root .border-\[\#1f1f1f\] {
1328
+ border-color: #1f1f1f;
1329
+ }
1330
+
1277
1331
  .polishd-root.polishd-root .border-\[\#2e2e2e\] {
1278
1332
  border-color: #2e2e2e;
1279
1333
  }
@@ -1560,6 +1614,10 @@
1560
1614
  background-color: var(--color-purple-500);
1561
1615
  }
1562
1616
 
1617
+ .polishd-root.polishd-root .bg-purple-950 {
1618
+ background-color: var(--color-purple-950);
1619
+ }
1620
+
1563
1621
  .polishd-root.polishd-root .bg-red-500 {
1564
1622
  background-color: var(--color-red-500);
1565
1623
  }
@@ -1596,6 +1654,10 @@
1596
1654
  background-color: var(--color-white);
1597
1655
  }
1598
1656
 
1657
+ .polishd-root.polishd-root .object-contain {
1658
+ object-fit: contain;
1659
+ }
1660
+
1599
1661
  .polishd-root.polishd-root .object-cover {
1600
1662
  object-fit: cover;
1601
1663
  }
@@ -1608,6 +1670,14 @@
1608
1670
  padding: calc(var(--spacing) * .5);
1609
1671
  }
1610
1672
 
1673
+ .polishd-root.polishd-root .p-1\.5 {
1674
+ padding: calc(var(--spacing) * 1.5);
1675
+ }
1676
+
1677
+ .polishd-root.polishd-root .p-3 {
1678
+ padding: calc(var(--spacing) * 3);
1679
+ }
1680
+
1611
1681
  .polishd-root.polishd-root .p-4 {
1612
1682
  padding: calc(var(--spacing) * 4);
1613
1683
  }
@@ -1656,10 +1726,6 @@
1656
1726
  padding-inline: 9px;
1657
1727
  }
1658
1728
 
1659
- .polishd-root.polishd-root .px-\[22px\] {
1660
- padding-inline: 22px;
1661
- }
1662
-
1663
1729
  .polishd-root.polishd-root .py-0\.5 {
1664
1730
  padding-block: calc(var(--spacing) * .5);
1665
1731
  }
@@ -1740,6 +1806,10 @@
1740
1806
  padding-block: 1px;
1741
1807
  }
1742
1808
 
1809
+ .polishd-root.polishd-root .pt-1 {
1810
+ padding-top: var(--spacing);
1811
+ }
1812
+
1743
1813
  .polishd-root.polishd-root .pt-3 {
1744
1814
  padding-top: calc(var(--spacing) * 3);
1745
1815
  }
@@ -1756,8 +1826,8 @@
1756
1826
  padding-top: calc(var(--spacing) * 9);
1757
1827
  }
1758
1828
 
1759
- .polishd-root.polishd-root .pt-\[72px\] {
1760
- padding-top: 72px;
1829
+ .polishd-root.polishd-root .pt-16 {
1830
+ padding-top: calc(var(--spacing) * 16);
1761
1831
  }
1762
1832
 
1763
1833
  .polishd-root.polishd-root .pt-\[88px\] {
@@ -1820,6 +1890,10 @@
1820
1890
  padding-left: calc(var(--spacing) * 1.5);
1821
1891
  }
1822
1892
 
1893
+ .polishd-root.polishd-root .pl-3 {
1894
+ padding-left: calc(var(--spacing) * 3);
1895
+ }
1896
+
1823
1897
  .polishd-root.polishd-root .pl-4 {
1824
1898
  padding-left: calc(var(--spacing) * 4);
1825
1899
  }
@@ -1860,6 +1934,10 @@
1860
1934
  font-family: var(--font-sans);
1861
1935
  }
1862
1936
 
1937
+ .polishd-root.polishd-root .text-\[0\.92em\] {
1938
+ font-size: .92em;
1939
+ }
1940
+
1863
1941
  .polishd-root.polishd-root .text-\[8px\] {
1864
1942
  font-size: 8px;
1865
1943
  }
@@ -1912,10 +1990,6 @@
1912
1990
  font-size: 14px;
1913
1991
  }
1914
1992
 
1915
- .polishd-root.polishd-root .text-\[15\.5px\] {
1916
- font-size: 15.5px;
1917
- }
1918
-
1919
1993
  .polishd-root.polishd-root .text-\[15px\] {
1920
1994
  font-size: 15px;
1921
1995
  }
@@ -1952,8 +2026,8 @@
1952
2026
  font-size: 44px;
1953
2027
  }
1954
2028
 
1955
- .polishd-root.polishd-root .text-\[clamp\(15px\,1\.9vw\,18px\)\] {
1956
- font-size: clamp(15px, 1.9vw, 18px);
2029
+ .polishd-root.polishd-root .text-\[clamp\(19px\,2\.6vw\,26px\)\] {
2030
+ font-size: clamp(19px, 2.6vw, 26px);
1957
2031
  }
1958
2032
 
1959
2033
  .polishd-root.polishd-root .text-\[clamp\(22px\,3\.2vw\,32px\)\] {
@@ -1968,13 +2042,13 @@
1968
2042
  font-size: clamp(34px, 7vw, 74px);
1969
2043
  }
1970
2044
 
1971
- .polishd-root.polishd-root .text-\[clamp\(42px\,8\.4vw\,92px\)\] {
1972
- font-size: clamp(42px, 8.4vw, 92px);
2045
+ .polishd-root.polishd-root .text-\[clamp\(64px\,13vw\,160px\)\] {
2046
+ font-size: clamp(64px, 13vw, 160px);
1973
2047
  }
1974
2048
 
1975
- .polishd-root.polishd-root .leading-\[0\.96\] {
1976
- --tw-leading: .96;
1977
- line-height: .96;
2049
+ .polishd-root.polishd-root .leading-\[0\.95\] {
2050
+ --tw-leading: .95;
2051
+ line-height: .95;
1978
2052
  }
1979
2053
 
1980
2054
  .polishd-root.polishd-root .leading-\[1\.02\] {
@@ -2042,6 +2116,11 @@
2042
2116
  font-weight: var(--font-weight-bold);
2043
2117
  }
2044
2118
 
2119
+ .polishd-root.polishd-root .font-extrabold {
2120
+ --tw-font-weight: var(--font-weight-extrabold);
2121
+ font-weight: var(--font-weight-extrabold);
2122
+ }
2123
+
2045
2124
  .polishd-root.polishd-root .font-medium {
2046
2125
  --tw-font-weight: var(--font-weight-medium);
2047
2126
  font-weight: var(--font-weight-medium);
@@ -2082,19 +2161,9 @@
2082
2161
  letter-spacing: -.025em;
2083
2162
  }
2084
2163
 
2085
- .polishd-root.polishd-root .tracking-\[-0\.035em\] {
2086
- --tw-tracking: -.035em;
2087
- letter-spacing: -.035em;
2088
- }
2089
-
2090
- .polishd-root.polishd-root .tracking-\[-0\.045em\] {
2091
- --tw-tracking: -.045em;
2092
- letter-spacing: -.045em;
2093
- }
2094
-
2095
- .polishd-root.polishd-root .tracking-\[0\.06em\] {
2096
- --tw-tracking: .06em;
2097
- letter-spacing: .06em;
2164
+ .polishd-root.polishd-root .tracking-\[0\.005em\] {
2165
+ --tw-tracking: .005em;
2166
+ letter-spacing: .005em;
2098
2167
  }
2099
2168
 
2100
2169
  .polishd-root.polishd-root .tracking-\[0\.07em\] {
@@ -2117,6 +2186,11 @@
2117
2186
  letter-spacing: .14em;
2118
2187
  }
2119
2188
 
2189
+ .polishd-root.polishd-root .tracking-\[0\.015em\] {
2190
+ --tw-tracking: .015em;
2191
+ letter-spacing: .015em;
2192
+ }
2193
+
2120
2194
  .polishd-root.polishd-root .tracking-normal {
2121
2195
  --tw-tracking: var(--tracking-normal);
2122
2196
  letter-spacing: var(--tracking-normal);
@@ -2160,6 +2234,10 @@
2160
2234
  color: #8a6a6a;
2161
2235
  }
2162
2236
 
2237
+ .polishd-root.polishd-root .text-\[\#8ab4f8\] {
2238
+ color: #8ab4f8;
2239
+ }
2240
+
2163
2241
  .polishd-root.polishd-root .text-\[\#444\] {
2164
2242
  color: #444;
2165
2243
  }
@@ -2208,10 +2286,18 @@
2208
2286
  color: #e4e4e4;
2209
2287
  }
2210
2288
 
2289
+ .polishd-root.polishd-root .text-\[\#e5e5e5\] {
2290
+ color: #e5e5e5;
2291
+ }
2292
+
2211
2293
  .polishd-root.polishd-root .text-\[\#f5a623\] {
2212
2294
  color: #f5a623;
2213
2295
  }
2214
2296
 
2297
+ .polishd-root.polishd-root .text-\[\#f5e17a\] {
2298
+ color: #f5e17a;
2299
+ }
2300
+
2215
2301
  .polishd-root.polishd-root .text-amber-300 {
2216
2302
  color: var(--color-amber-300);
2217
2303
  }
@@ -2298,6 +2384,10 @@
2298
2384
  text-transform: capitalize;
2299
2385
  }
2300
2386
 
2387
+ .polishd-root.polishd-root .lowercase {
2388
+ text-transform: lowercase;
2389
+ }
2390
+
2301
2391
  .polishd-root.polishd-root .normal-case {
2302
2392
  text-transform: none;
2303
2393
  }
@@ -2437,17 +2527,28 @@
2437
2527
  transition-timing-function: cubic-bezier(.2, .8, .2, 1);
2438
2528
  }
2439
2529
 
2530
+ .polishd-root.polishd-root .ease-in-out {
2531
+ --tw-ease: var(--ease-in-out);
2532
+ transition-timing-function: var(--ease-in-out);
2533
+ }
2534
+
2440
2535
  .polishd-root.polishd-root .ease-out {
2441
2536
  --tw-ease: var(--ease-out);
2442
2537
  transition-timing-function: var(--ease-out);
2443
2538
  }
2444
2539
 
2445
- .polishd-root.polishd-root .group-open\:hidden:is(:where(.group):is([open], :popover-open, :open) *) {
2446
- display: none;
2540
+ .polishd-root.polishd-root .will-change-transform {
2541
+ will-change: transform;
2447
2542
  }
2448
2543
 
2449
- .polishd-root.polishd-root .group-open\:inline:is(:where(.group):is([open], :popover-open, :open) *) {
2450
- display: inline;
2544
+ .polishd-root.polishd-root .outline-none {
2545
+ --tw-outline-style: none;
2546
+ outline-style: none;
2547
+ }
2548
+
2549
+ .polishd-root.polishd-root .select-none {
2550
+ -webkit-user-select: none;
2551
+ user-select: none;
2451
2552
  }
2452
2553
 
2453
2554
  @media (hover: hover) {
@@ -2487,6 +2588,22 @@
2487
2588
  opacity: 1;
2488
2589
  }
2489
2590
 
2591
+ .polishd-root.polishd-root .marker\:text-\[\#555\] ::marker {
2592
+ color: #555;
2593
+ }
2594
+
2595
+ .polishd-root.polishd-root .marker\:text-\[\#555\]::marker {
2596
+ color: #555;
2597
+ }
2598
+
2599
+ .polishd-root.polishd-root .marker\:text-\[\#555\] ::-webkit-details-marker {
2600
+ color: #555;
2601
+ }
2602
+
2603
+ .polishd-root.polishd-root .marker\:text-\[\#555\]::-webkit-details-marker {
2604
+ color: #555;
2605
+ }
2606
+
2490
2607
  .polishd-root.polishd-root .placeholder\:text-\[\#555\]::placeholder {
2491
2608
  color: #555;
2492
2609
  }
@@ -2557,6 +2674,10 @@
2557
2674
  color: var(--color-white);
2558
2675
  }
2559
2676
 
2677
+ .polishd-root.polishd-root .hover\:underline:hover {
2678
+ text-decoration-line: underline;
2679
+ }
2680
+
2560
2681
  .polishd-root.polishd-root .hover\:opacity-90:hover {
2561
2682
  opacity: .9;
2562
2683
  }
@@ -2575,6 +2696,25 @@
2575
2696
  border-color: #777;
2576
2697
  }
2577
2698
 
2699
+ .polishd-root.polishd-root .focus-visible\:bg-\[\#111\]:focus-visible {
2700
+ background-color: #111;
2701
+ }
2702
+
2703
+ .polishd-root.polishd-root .focus-visible\:ring-1:focus-visible {
2704
+ --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
2705
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2706
+ }
2707
+
2708
+ .polishd-root.polishd-root .focus-visible\:ring-amber-500\/60:focus-visible {
2709
+ --tw-ring-color: #f99c0099;
2710
+ }
2711
+
2712
+ @supports (color: color-mix(in lab, red, red)) {
2713
+ .polishd-root.polishd-root .focus-visible\:ring-amber-500\/60:focus-visible {
2714
+ --tw-ring-color: color-mix(in oklab, var(--color-amber-500) 60%, transparent);
2715
+ }
2716
+ }
2717
+
2578
2718
  .polishd-root.polishd-root .disabled\:cursor-default:disabled {
2579
2719
  cursor: default;
2580
2720
  }
@@ -2664,6 +2804,10 @@
2664
2804
  max-width: var(--container-md);
2665
2805
  }
2666
2806
 
2807
+ .polishd-root.polishd-root .sm\:max-w-xl {
2808
+ max-width: var(--container-xl);
2809
+ }
2810
+
2667
2811
  .polishd-root.polishd-root .sm\:grid-cols-2 {
2668
2812
  grid-template-columns: repeat(2, minmax(0, 1fr));
2669
2813
  }
@@ -2718,6 +2862,34 @@
2718
2862
  }
2719
2863
 
2720
2864
  @media (min-width: 48rem) {
2865
+ .polishd-root.polishd-root .md\:mt-12 {
2866
+ margin-top: calc(var(--spacing) * 12);
2867
+ }
2868
+
2869
+ .polishd-root.polishd-root .md\:max-h-none {
2870
+ max-height: none;
2871
+ }
2872
+
2873
+ .polishd-root.polishd-root .md\:min-h-\[390px\] {
2874
+ min-height: 390px;
2875
+ }
2876
+
2877
+ .polishd-root.polishd-root .md\:min-h-screen {
2878
+ min-height: 100vh;
2879
+ }
2880
+
2881
+ .polishd-root.polishd-root .md\:w-\[80vw\] {
2882
+ width: 80vw;
2883
+ }
2884
+
2885
+ .polishd-root.polishd-root .md\:flex-1 {
2886
+ flex: 1;
2887
+ }
2888
+
2889
+ .polishd-root.polishd-root .md\:basis-0 {
2890
+ flex-basis: 0;
2891
+ }
2892
+
2721
2893
  .polishd-root.polishd-root .md\:grid-cols-2 {
2722
2894
  grid-template-columns: repeat(2, minmax(0, 1fr));
2723
2895
  }
@@ -2730,21 +2902,25 @@
2730
2902
  padding-block: calc(var(--spacing) * 28);
2731
2903
  }
2732
2904
 
2733
- .polishd-root.polishd-root .md\:pt-\[110px\] {
2734
- padding-top: 110px;
2905
+ .polishd-root.polishd-root .md\:pt-20 {
2906
+ padding-top: calc(var(--spacing) * 20);
2735
2907
  }
2736
2908
 
2737
2909
  .polishd-root.polishd-root .md\:pt-\[132px\] {
2738
2910
  padding-top: 132px;
2739
2911
  }
2740
2912
 
2741
- .polishd-root.polishd-root .md\:pb-\[72px\] {
2742
- padding-bottom: 72px;
2913
+ .polishd-root.polishd-root .md\:pb-0 {
2914
+ padding-bottom: 0;
2743
2915
  }
2744
2916
 
2745
2917
  .polishd-root.polishd-root .md\:pb-\[108px\] {
2746
2918
  padding-bottom: 108px;
2747
2919
  }
2920
+
2921
+ .polishd-root.polishd-root .md\:text-\[13\.5px\] {
2922
+ font-size: 13.5px;
2923
+ }
2748
2924
  }
2749
2925
 
2750
2926
  @media (min-width: 64rem) {
@@ -2848,10 +3024,6 @@
2848
3024
  }
2849
3025
  }
2850
3026
 
2851
- .polishd-root.polishd-root .\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker {
2852
- display: none;
2853
- }
2854
-
2855
3027
  @property --tw-translate-x {
2856
3028
  syntax: "*";
2857
3029
  inherits: false;
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Polishd — the Vercel Blob rules behind site snapshots (server only).
3
+ *
4
+ * Whether a store is connected, which access mode it accepts, and which
5
+ * recorded URLs need credentials to read back. Kept free of imports — the SDK
6
+ * call is handed in — so `node --test` can pin the rules down without a store
7
+ * or a network. `snapshots.ts` does the actual I/O.
8
+ */
9
+ /** A Blob store is created public or private, and stays that way. */
10
+ export type BlobAccess = "public" | "private";
11
+ /**
12
+ * True when a Vercel Blob store is connected to the project, whichever way
13
+ * Vercel wired it. A store connected over OIDC injects `BLOB_STORE_ID`, which
14
+ * `@vercel/blob` pairs with the short-lived OIDC token Vercel issues to every
15
+ * function at runtime; the classic connection injects a static
16
+ * `BLOB_READ_WRITE_TOKEN`. The SDK resolves the credential itself (OIDC
17
+ * first), so presence of either variable is the whole signal — no
18
+ * Polishd-specific configuration on top. Blank values count as unset, as
19
+ * they do in the SDK.
20
+ */
21
+ export declare function blobConfigured(env?: Record<string, string | undefined>): boolean;
22
+ /**
23
+ * True for a blob in a private store —
24
+ * `https://<store>.private.blob.vercel-storage.com/…`. Those refuse anonymous
25
+ * reads, so they are read back through the SDK, which attaches the store's
26
+ * credential; a public store's URLs are a plain fetch.
27
+ */
28
+ export declare function isPrivateBlobUrl(url: string): boolean;
29
+ /**
30
+ * Upload with whichever access mode the connected store was created with.
31
+ * Nothing in the environment says which that is, so the first upload tries
32
+ * public (what every store was before private storage existed) and, when
33
+ * that's refused, private. The mode that worked is kept for the rest of the
34
+ * process. When both fail the error carries both reasons — only one of them
35
+ * is the real problem, and there's no telling which from here.
36
+ */
37
+ export declare function createBlobUploader(): <T>(put: (access: BlobAccess) => Promise<T>) => Promise<T>;
38
+ //# sourceMappingURL=snapshot-blob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot-blob.d.ts","sourceRoot":"","sources":["../../src/server/snapshot-blob.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qEAAqE;AACrE,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9C;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMrD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,KAElB,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAAC,CAwBtE"}