@godxjp/ui 31.26.2 → 31.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/agent/START-HERE.md +7 -7
  2. package/agent/components/BlockEditor.json +91 -0
  3. package/agent/components/CommandPalette.json +5 -0
  4. package/agent/components/EmojiPicker.json +78 -0
  5. package/agent/components/Markdown.json +16 -0
  6. package/agent/components/PageContainer.json +11 -1
  7. package/agent/components/PageCover.json +75 -0
  8. package/agent/components/Tree.json +6 -0
  9. package/agent/components-index.json +15 -0
  10. package/agent/components.json +282 -1
  11. package/agent/index.json +8 -8
  12. package/agent/llms.txt +7 -7
  13. package/agent/tokens.json +108 -0
  14. package/dist/components/data-display/tree.js +5 -0
  15. package/dist/components/data-entry/command-palette.d.ts +5 -0
  16. package/dist/components/data-entry/command-palette.js +1 -0
  17. package/dist/components/data-entry/emoji-data.d.ts +43 -0
  18. package/dist/components/data-entry/emoji-data.js +54 -0
  19. package/dist/components/data-entry/emoji-picker.d.ts +13 -0
  20. package/dist/components/data-entry/emoji-picker.js +272 -0
  21. package/dist/components/data-entry/index.d.ts +2 -0
  22. package/dist/components/data-entry/index.js +2 -0
  23. package/dist/components/layout/index.d.ts +2 -0
  24. package/dist/components/layout/index.js +2 -0
  25. package/dist/components/layout/page-container.d.ts +1 -1
  26. package/dist/components/layout/page-container.js +8 -1
  27. package/dist/components/layout/page-cover.d.ts +14 -0
  28. package/dist/components/layout/page-cover.js +127 -0
  29. package/dist/contracts/measurement.json +1 -1
  30. package/dist/i18n/messages/en.json +25 -0
  31. package/dist/i18n/messages/ja.json +25 -0
  32. package/dist/i18n/messages/vi.json +25 -0
  33. package/dist/props/components/data-display.prop.d.ts +6 -0
  34. package/dist/props/components/data-entry.prop.d.ts +26 -0
  35. package/dist/props/components/layout.prop.d.ts +49 -2
  36. package/dist/props/registry.d.ts +85 -1
  37. package/dist/props/registry.js +95 -1
  38. package/dist/styles/control.css +81 -0
  39. package/dist/styles/data-display-layout.css +315 -2
  40. package/dist/styles/focus-ring.css +4 -0
  41. package/dist/styles/layers.json +26 -1
  42. package/dist/styles/layout.css +113 -0
  43. package/dist/tokens/components/control.css +10 -0
  44. package/dist/tokens/components/data-display.css +9 -0
  45. package/dist/tokens/semantic/layout.css +14 -0
  46. package/docs/FRAME-COVERAGE-REPORT.md +5 -2
  47. package/docs/data-entry/block-editor.tsx +105 -0
  48. package/docs/data-entry/emoji-picker.tsx +35 -0
  49. package/docs/i18n/messages/en.json +40 -0
  50. package/docs/i18n/messages/ja.json +40 -0
  51. package/docs/i18n/messages/vi.json +40 -0
  52. package/docs/layout/page-cover.tsx +56 -0
  53. package/package.json +28 -4
  54. package/scripts/prune-css.mjs +1 -1
@@ -1142,7 +1142,7 @@
1142
1142
  background: hsl(var(--muted));
1143
1143
  padding: var(--code-block-space-inset);
1144
1144
  color: var(--code-block-foreground, hsl(var(--foreground)));
1145
- font-family: var(--font-mono);
1145
+ font-family: var(--font-family-mono);
1146
1146
  font-size: var(--code-block-font-size);
1147
1147
  line-height: var(--code-block-line-height);
1148
1148
  white-space: pre-wrap;
@@ -1378,7 +1378,7 @@
1378
1378
  }
1379
1379
 
1380
1380
  .ui-prose :not(pre) > code {
1381
- font-family: var(--font-mono);
1381
+ font-family: var(--font-family-mono);
1382
1382
  font-size: var(--prose-code-font-size);
1383
1383
  background: hsl(var(--muted));
1384
1384
  padding-inline: var(--prose-code-space-inline);
@@ -1429,6 +1429,319 @@
1429
1429
  inline-size: auto;
1430
1430
  }
1431
1431
 
1432
+ .ui-prose .ui-prose-callout {
1433
+ margin-block: var(--callout-space-stack);
1434
+ padding-block: var(--callout-space-inset-block);
1435
+ padding-inline: var(--callout-space-inset-inline);
1436
+ border-inline-start: var(--callout-rail-width) solid hsl(var(--info));
1437
+ border-start-end-radius: var(--callout-radius, var(--alert-radius, var(--card-radius, calc(var(--radius) * var(--radius-ratio)))));
1438
+ border-end-end-radius: var(--callout-radius, var(--alert-radius, var(--card-radius, calc(var(--radius) * var(--radius-ratio)))));
1439
+ background-color: var(--surface-info, hsl(var(--info) / var(--alert-bg-alpha)));
1440
+ }
1441
+
1442
+ .ui-prose .ui-prose-callout[data-kind="tip"] {
1443
+ border-inline-start-color: hsl(var(--success));
1444
+ background-color: var(--surface-success, hsl(var(--success) / var(--alert-bg-alpha)));
1445
+ }
1446
+
1447
+ .ui-prose .ui-prose-callout[data-kind="important"] {
1448
+ border-inline-start-color: hsl(var(--primary));
1449
+ background-color: hsl(var(--primary) / var(--alert-bg-alpha));
1450
+ }
1451
+
1452
+ .ui-prose .ui-prose-callout[data-kind="warning"] {
1453
+ border-inline-start-color: hsl(var(--warning));
1454
+ background-color: var(--surface-warning, hsl(var(--warning) / var(--alert-bg-alpha)));
1455
+ }
1456
+
1457
+ .ui-prose .ui-prose-callout[data-kind="caution"] {
1458
+ border-inline-start-color: hsl(var(--destructive));
1459
+ background-color: var(--surface-destructive, hsl(var(--destructive) / var(--alert-bg-alpha)));
1460
+ }
1461
+
1462
+ .ui-prose .ui-prose-callout-title {
1463
+ font-weight: var(--font-weight-medium);
1464
+ }
1465
+
1466
+ .ui-prose :is(.ui-prose-callout, .ui-prose-column, .ui-prose-toggle) > :first-child {
1467
+ margin-block-start: 0;
1468
+ }
1469
+
1470
+ .ui-prose :is(.ui-prose-callout, .ui-prose-column, .ui-prose-toggle) > :last-child {
1471
+ margin-block-end: 0;
1472
+ }
1473
+
1474
+ .ui-prose .ui-prose-toggle {
1475
+ margin-block: var(--prose-space-block);
1476
+ }
1477
+
1478
+ .ui-prose .ui-prose-toggle-summary {
1479
+ cursor: pointer;
1480
+ font-weight: var(--font-weight-medium);
1481
+ }
1482
+
1483
+ .ui-prose .ui-prose-toggle[open] > .ui-prose-toggle-summary {
1484
+ margin-block-end: var(--prose-space-block);
1485
+ }
1486
+
1487
+ .ui-prose .ui-prose-columns {
1488
+ display: flex;
1489
+ gap: var(--prose-columns-gap);
1490
+ margin-block: var(--prose-space-block);
1491
+ }
1492
+
1493
+ .ui-prose .ui-prose-column {
1494
+ flex: var(--prose-column-grow, 1) 1 0;
1495
+ min-inline-size: 0;
1496
+ }
1497
+
1498
+ @media (width < 40rem) {
1499
+ .ui-prose .ui-prose-columns {
1500
+ flex-direction: column;
1501
+ }
1502
+ }
1503
+
1504
+ .ui-block-editor {
1505
+ position: relative;
1506
+ padding-inline-start: var(--block-editor-gutter-inline-size);
1507
+ }
1508
+
1509
+ .ui-block-editor[data-appearance="framed"] {
1510
+ padding-block: var(--block-editor-frame-padding);
1511
+ padding-inline-end: var(--block-editor-frame-padding);
1512
+ border: var(--stroke-hairline) solid hsl(var(--input));
1513
+ border-radius: var(--control-radius, var(--radius));
1514
+ background-color: hsl(var(--background));
1515
+ transition: border-color var(--duration-fast);
1516
+ }
1517
+
1518
+ .ui-block-editor[data-appearance="framed"]:focus-within {
1519
+ border-color: hsl(var(--ring));
1520
+ }
1521
+
1522
+ .ui-block-editor[data-appearance="framed"][data-disabled] {
1523
+ background-color: hsl(var(--muted));
1524
+ }
1525
+
1526
+ .ui-block-editor-content {
1527
+ min-block-size: var(--block-editor-min-height);
1528
+ outline: none;
1529
+ white-space: pre-wrap;
1530
+ overflow-wrap: break-word;
1531
+ }
1532
+
1533
+ .ui-block-editor-content .is-empty::before {
1534
+ content: attr(data-placeholder);
1535
+ float: inline-start;
1536
+ block-size: 0;
1537
+ color: hsl(var(--muted-foreground));
1538
+ pointer-events: none;
1539
+ }
1540
+
1541
+ .ui-block-editor-handle {
1542
+ position: absolute;
1543
+ inset-inline-start: 0;
1544
+ z-index: 1;
1545
+ display: flex;
1546
+ gap: var(--space-1);
1547
+ }
1548
+
1549
+ @media (hover: hover) {
1550
+ .ui-block-editor:not(:hover):not(:focus-within) .ui-block-editor-handle {
1551
+ opacity: 0;
1552
+ }
1553
+ }
1554
+
1555
+ .ui-block-editor-content .ProseMirror-selectednode {
1556
+ outline: var(--stroke-md) solid hsl(var(--ring));
1557
+ outline-offset: var(--stroke-md);
1558
+ border-radius: calc(var(--radius) / var(--radius-ratio));
1559
+ }
1560
+
1561
+ .ui-block-editor-menu {
1562
+ --popover-surface-inline-size: var(--block-editor-menu-inline-size);
1563
+ }
1564
+
1565
+ .ui-block-editor-menu [cmdk-list] {
1566
+ max-block-size: var(--block-editor-menu-max-block-size);
1567
+ }
1568
+
1569
+ .ui-block-editor-menu-icon {
1570
+ display: inline-flex;
1571
+ flex-shrink: 0;
1572
+ }
1573
+
1574
+ .ui-block-editor-menu-icon svg,
1575
+ .ui-block-editor-toolbar svg {
1576
+ inline-size: var(--control-icon-size);
1577
+ block-size: var(--control-icon-size);
1578
+ }
1579
+
1580
+ .ui-block-editor-menu-text {
1581
+ display: flex;
1582
+ min-inline-size: 0;
1583
+ flex-direction: column;
1584
+ }
1585
+
1586
+ .ui-block-editor-menu-description {
1587
+ color: hsl(var(--muted-foreground));
1588
+ font-size: var(--font-size-xs, var(--font-size-sm));
1589
+ }
1590
+
1591
+ .ui-block-editor-toolbar {
1592
+ z-index: var(--overlay-z-index);
1593
+ padding: var(--space-1);
1594
+ border: var(--stroke-hairline) solid hsl(var(--border));
1595
+ border-radius: var(--popover-radius, var(--radius));
1596
+ background-color: hsl(var(--popover) / var(--popover-alpha, 100%));
1597
+ color: hsl(var(--popover-foreground));
1598
+ box-shadow: var(--popover-shadow, var(--shadow-md));
1599
+ }
1600
+
1601
+ .ui-block-editor-toolbar-row,
1602
+ .ui-block-editor-toolbar-link {
1603
+ display: flex;
1604
+ align-items: center;
1605
+ gap: var(--space-1);
1606
+ }
1607
+
1608
+ .ui-block-editor-wikilink {
1609
+ color: hsl(var(--prose-link-color, var(--text-link, var(--primary))));
1610
+ text-decoration-line: underline;
1611
+ text-decoration-style: dotted;
1612
+ }
1613
+
1614
+ .ui-block-editor-embed-inline,
1615
+ .ui-block-editor-raw-inline {
1616
+ font-family: var(--font-family-mono);
1617
+ font-size: var(--prose-code-font-size);
1618
+ }
1619
+
1620
+ .ui-block-editor-embed,
1621
+ .ui-block-editor-raw-block {
1622
+ margin-block: var(--prose-space-block);
1623
+ padding: var(--space-2) var(--space-3);
1624
+ border: var(--stroke-hairline) dashed hsl(var(--border));
1625
+ border-radius: calc(var(--radius) / var(--radius-ratio));
1626
+ }
1627
+
1628
+ .ui-block-editor-raw-block-head {
1629
+ display: flex;
1630
+ align-items: center;
1631
+ justify-content: space-between;
1632
+ gap: var(--space-2);
1633
+ }
1634
+
1635
+ .ui-block-editor-raw-block-source {
1636
+ margin: 0;
1637
+ white-space: pre-wrap;
1638
+ font-family: var(--font-family-mono);
1639
+ font-size: var(--prose-code-font-size);
1640
+ }
1641
+
1642
+ .ui-block-editor-upload {
1643
+ display: inline-flex;
1644
+ align-items: center;
1645
+ gap: var(--space-1);
1646
+ vertical-align: middle;
1647
+ }
1648
+
1649
+ .ui-block-editor-upload svg {
1650
+ inline-size: var(--control-icon-size);
1651
+ block-size: var(--control-icon-size);
1652
+ }
1653
+
1654
+ .ui-block-editor-upload-spinner {
1655
+ animation: spin 1s linear infinite;
1656
+ }
1657
+
1658
+ @media (prefers-reduced-motion: reduce) {
1659
+ .ui-block-editor-upload-spinner {
1660
+ animation: none;
1661
+ }
1662
+ }
1663
+
1664
+ .ui-block-editor-status {
1665
+ margin-block-start: var(--space-2);
1666
+ }
1667
+
1668
+ .ui-block-editor-callout-head,
1669
+ .ui-block-editor-columns-bar {
1670
+ display: flex;
1671
+ flex-wrap: wrap;
1672
+ align-items: center;
1673
+ gap: var(--space-1);
1674
+ margin-block-end: var(--space-2);
1675
+ }
1676
+
1677
+ .ui-block-editor-callout-title {
1678
+ flex: 1 1 auto;
1679
+ min-inline-size: 0;
1680
+ font-weight: var(--font-weight-medium);
1681
+ }
1682
+
1683
+ .ui-block-editor-columns {
1684
+ margin-block: var(--prose-space-block);
1685
+ }
1686
+
1687
+ .ui-block-editor-columns-content > [data-node-view-content-react] {
1688
+ display: flex;
1689
+ gap: var(--prose-columns-gap);
1690
+ }
1691
+
1692
+ @media (width < 40rem) {
1693
+ .ui-block-editor-columns-content > [data-node-view-content-react] {
1694
+ flex-direction: column;
1695
+ }
1696
+ }
1697
+
1698
+ .ui-block-editor-content [data-type="details"] {
1699
+ display: flex;
1700
+ gap: var(--space-1);
1701
+ margin-block: var(--prose-space-block);
1702
+ }
1703
+
1704
+ .ui-block-editor-content [data-type="details"] > div {
1705
+ flex: 1 1 auto;
1706
+ min-inline-size: 0;
1707
+ }
1708
+
1709
+ .ui-block-editor-content [data-type="detailsSummary"],
1710
+ .ui-block-editor-content [data-type="details"] summary {
1711
+ font-weight: var(--font-weight-medium);
1712
+ list-style: none;
1713
+ }
1714
+
1715
+ .ui-block-editor-toggle-button {
1716
+ display: inline-flex;
1717
+ flex-shrink: 0;
1718
+ align-items: center;
1719
+ justify-content: center;
1720
+ inline-size: var(--control-height-xs);
1721
+ block-size: var(--control-height-xs);
1722
+ padding: 0;
1723
+ border: 0;
1724
+ border-radius: calc(var(--radius) / var(--radius-ratio));
1725
+ background: transparent;
1726
+ color: hsl(var(--muted-foreground));
1727
+ cursor: pointer;
1728
+ }
1729
+
1730
+ .ui-block-editor-toggle-button::before {
1731
+ content: "";
1732
+ border-block: var(--stroke-lg) solid transparent;
1733
+ border-inline-start: calc(var(--stroke-lg) * 1.5) solid currentColor;
1734
+ transition: rotate var(--duration-fast);
1735
+ }
1736
+
1737
+ [data-type="details"].is-open > .ui-block-editor-toggle-button::before {
1738
+ rotate: 90deg;
1739
+ }
1740
+
1741
+ .ui-block-editor-toggle-button:hover {
1742
+ background-color: hsl(var(--accent));
1743
+ }
1744
+
1432
1745
  .ui-prose img[data-prose-preview] {
1433
1746
  cursor: zoom-in;
1434
1747
  }
@@ -37,6 +37,8 @@
37
37
  .ui-carousel-dot,
38
38
  .ui-rating-star,
39
39
  .ui-prose img[data-prose-preview],
40
+ .ui-prose .ui-prose-toggle-summary,
41
+ .ui-block-editor-toggle-button,
40
42
  a.ui-list-row,
41
43
 
42
44
  a[data-slot="card"],
@@ -107,6 +109,8 @@
107
109
  .ui-carousel-dot,
108
110
  .ui-rating-star,
109
111
  .ui-prose img[data-prose-preview],
112
+ .ui-prose .ui-prose-toggle-summary,
113
+ .ui-block-editor-toggle-button,
110
114
  a.ui-list-row,
111
115
  a[data-slot="card"],
112
116
  button[data-slot="card"],
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "31.26.2",
2
+ "version": "31.28.0",
3
3
  "generatedBy": "scripts/gen-style-layers.mjs — do not edit by hand; run `pnpm gen:style-layers`",
4
4
  "base": "base.css",
5
5
  "fonts": "fonts.css",
@@ -215,6 +215,19 @@
215
215
  "chart-layout.css"
216
216
  ]
217
217
  },
218
+ "BlockEditor": {
219
+ "layers": [
220
+ "layout.css",
221
+ "control.css",
222
+ "toggle.css",
223
+ "text-layout.css",
224
+ "dialog-layout.css",
225
+ "alert-layout.css",
226
+ "data-display-layout.css",
227
+ "form-layout.css",
228
+ "navigation-layout.css"
229
+ ]
230
+ },
218
231
  "BranchScopePicker": {
219
232
  "layers": [
220
233
  "layout.css",
@@ -460,6 +473,13 @@
460
473
  "navigation-layout.css"
461
474
  ]
462
475
  },
476
+ "EmojiPicker": {
477
+ "layers": [
478
+ "control.css",
479
+ "text-layout.css",
480
+ "dialog-layout.css"
481
+ ]
482
+ },
463
483
  "EmptyState": {
464
484
  "layers": [
465
485
  "layout.css"
@@ -727,6 +747,11 @@
727
747
  "dialog-layout.css"
728
748
  ]
729
749
  },
750
+ "PageCover": {
751
+ "layers": [
752
+ "layout.css"
753
+ ]
754
+ },
730
755
  "Pagination": {
731
756
  "layers": [
732
757
  "layout.css",
@@ -924,6 +924,119 @@
924
924
  font-size: var(--page-title-font-size-chrome);
925
925
  }
926
926
 
927
+ .ui-page-container[data-header-scale="display"] .ui-page-title,
928
+ .ui-page-container[data-header-scale="display"] .ui-page-header .ui-page-title {
929
+ font-size: var(--page-title-font-size-display);
930
+ font-weight: var(--font-weight-semibold);
931
+ line-height: var(--page-title-line-height-display);
932
+ text-wrap: balance;
933
+ overflow-wrap: normal;
934
+ }
935
+
936
+ .ui-page-header-icon {
937
+ display: flex;
938
+ align-items: center;
939
+ margin-block-end: var(--space-2);
940
+ font-size: var(--page-icon-size);
941
+ line-height: 1;
942
+ }
943
+
944
+ .ui-page-header-icon svg {
945
+ inline-size: var(--page-icon-size);
946
+ block-size: var(--page-icon-size);
947
+ }
948
+
949
+ .ui-page-container[data-cover="banner"] {
950
+ padding-block-start: 0;
951
+ }
952
+
953
+ .ui-page-container[data-cover="banner"] .ui-page-header-icon {
954
+ position: relative;
955
+ margin-block-start: calc(-1 * var(--page-icon-cover-overlap));
956
+ }
957
+
958
+ .ui-page-header .ui-page-cover-slot {
959
+ margin-block-end: var(--space-4);
960
+ }
961
+
962
+ .ui-page-cover {
963
+ position: relative;
964
+ }
965
+
966
+ .ui-page-cover-frame {
967
+ position: relative;
968
+ overflow: hidden;
969
+ block-size: var(--page-cover-block-size-md);
970
+ background-color: hsl(var(--muted));
971
+ }
972
+
973
+ .ui-page-cover[data-height="lg"] .ui-page-cover-frame {
974
+ block-size: var(--page-cover-block-size-lg);
975
+ }
976
+
977
+ .ui-page-cover[data-variant="eyecatch"] .ui-page-cover-frame {
978
+ block-size: auto;
979
+ aspect-ratio: var(--page-cover-eyecatch-aspect-ratio);
980
+ border-radius: var(--page-cover-radius, var(--card-radius, var(--radius)));
981
+ }
982
+
983
+ .ui-page-cover-image {
984
+ display: block;
985
+ inline-size: 100%;
986
+ block-size: 100%;
987
+ object-fit: cover;
988
+ user-select: none;
989
+ }
990
+
991
+ .ui-page-cover[data-repositioning] .ui-page-cover-frame {
992
+ cursor: grab;
993
+ touch-action: none;
994
+ }
995
+
996
+ .ui-page-cover[data-repositioning] .ui-page-cover-frame:active {
997
+ cursor: grabbing;
998
+ }
999
+
1000
+ .ui-page-cover-hint {
1001
+ position: absolute;
1002
+ inset-block-start: 50%;
1003
+ inset-inline: 0;
1004
+ margin-inline: auto;
1005
+ inline-size: fit-content;
1006
+ max-inline-size: calc(100% - 2 * var(--space-4));
1007
+ translate: 0 -50%;
1008
+ padding: var(--space-1) var(--space-3);
1009
+ border-radius: var(--radius-pill);
1010
+ background-color: hsl(var(--background) / 0.85);
1011
+ color: hsl(var(--foreground));
1012
+ font-size: var(--font-size-sm, var(--font-size-base));
1013
+ text-align: center;
1014
+ pointer-events: none;
1015
+ }
1016
+
1017
+ .ui-page-cover-actions {
1018
+ position: absolute;
1019
+ inset-block-end: var(--space-3);
1020
+ inset-inline-end: var(--space-3);
1021
+ display: flex;
1022
+ flex-wrap: wrap;
1023
+ gap: var(--space-1);
1024
+ }
1025
+
1026
+ @media (hover: hover) and (width >= 40rem) {
1027
+ .ui-page-cover:not(:hover):not(:focus-within) .ui-page-cover-actions {
1028
+ opacity: 0;
1029
+ }
1030
+ }
1031
+
1032
+ @media (width < 40rem) {
1033
+ .ui-page-cover-actions {
1034
+ position: static;
1035
+ justify-content: flex-end;
1036
+ padding: var(--space-2) var(--space-page-active-x, var(--space-4)) 0;
1037
+ }
1038
+ }
1039
+
927
1040
  @media (max-width: 720px) {
928
1041
  .ui-page-container {
929
1042
  --space-page-active-x: var(--space-page-compact-x);
@@ -460,6 +460,16 @@
460
460
  --control-status-warning-outline-color: initial;
461
461
  }
462
462
 
463
+ :root {
464
+ --emoji-picker-cell-size: var(--control-height-default);
465
+
466
+ --emoji-picker-panel-inline-size: calc(
467
+ 8 * var(--emoji-picker-cell-size) + 2 * var(--popover-space-inset, var(--space-3))
468
+ );
469
+ --emoji-picker-glyph-size: var(--icon-size-lg);
470
+ --emoji-picker-grid-max-block-size: 16rem;
471
+ }
472
+
463
473
  @media (pointer: coarse) {
464
474
  :root {
465
475
  --control-height-compact: var(--band-height-xl);
@@ -57,6 +57,15 @@
57
57
  --prose-code-space-inline: var(--space-1);
58
58
 
59
59
  --prose-cell-image-max-inline-size: 20rem;
60
+
61
+ --prose-columns-gap: var(--space-6);
62
+
63
+ --block-editor-gutter-inline-size: calc(2 * var(--control-height-xs) + var(--space-2));
64
+ --block-editor-min-height: var(--band-height-3xl);
65
+
66
+ --block-editor-frame-padding: var(--space-3);
67
+ --block-editor-menu-inline-size: 16rem;
68
+ --block-editor-menu-max-block-size: 20rem;
60
69
  --prose-code-radius: initial;
61
70
 
62
71
  --prose-link-color: initial;
@@ -91,6 +91,20 @@
91
91
 
92
92
  --page-title-font-size-chrome: var(--heading-h3, var(--font-size-base));
93
93
 
94
+ --page-title-font-size-display: var(
95
+ --font-size-4xl,
96
+ calc(var(--font-size-display) / var(--font-size-display-ratio))
97
+ );
98
+ --page-title-line-height-display: 1.4;
99
+
100
+ --page-icon-size: var(--icon-size-4xl);
101
+ --page-icon-cover-overlap: calc(var(--page-icon-size) * 0.6);
102
+
103
+ --page-cover-block-size-md: clamp(8rem, 24vw, 15rem);
104
+ --page-cover-block-size-lg: clamp(10rem, 32vw, 20rem);
105
+ --page-cover-eyecatch-aspect-ratio: 1.91;
106
+ --page-cover-radius: initial;
107
+
94
108
  --page-subtitle-font-size-chrome: var(
95
109
  --font-size-2xs,
96
110
  calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
@@ -3,8 +3,8 @@
3
3
  > Generated by `scripts/frame-coverage.mjs` (issue #163). Do not edit by hand — run `pnpm check:frame-coverage`.
4
4
  > Standard: [FRAME-COVERAGE-STANDARD.md](./FRAME-COVERAGE-STANDARD.md). A missing dimension is **UNTESTED**, never a pass.
5
5
 
6
- - Public components: **181**
7
- - With ≥1 frame: **157** · zero-frame: **24**
6
+ - Public components: **184**
7
+ - With ≥1 frame: **160** · zero-frame: **24**
8
8
  - Fully covered (every contract axis declared): **0**
9
9
 
10
10
  ## UNTESTED — no `/frame/**` route
@@ -50,6 +50,7 @@ Legend: ✓ covered · N/A reasoned skip · · UNTESTED (blank cell = UNTESTED).
50
50
  | VisuallyHidden | **✗** | N/A | N/A | N/A | · | · | · | · | · | · |
51
51
  | RangeTimeline | **✗** | · | N/A | N/A | · | · | · | · | · | · |
52
52
  | PageContainer | ✓ | ✓ | N/A | N/A | · | · | · | · | · | · |
53
+ | PageCover | ✓ | · | N/A | N/A | · | · | · | · | · | · |
53
54
  | Flex | ✓ | N/A | N/A | N/A | · | · | · | · | · | · |
54
55
  | SpaceCompact | ✓ | · | N/A | N/A | · | · | · | · | · | · |
55
56
  | ResponsiveGrid | ✓ | N/A | N/A | N/A | · | · | · | · | · | · |
@@ -100,6 +101,7 @@ Legend: ✓ covered · N/A reasoned skip · · UNTESTED (blank cell = UNTESTED).
100
101
  | CodeBlock | ✓ | · | N/A | N/A | · | · | · | · | · | · |
101
102
  | Markdown | ✓ | · | · | · | · | · | · | · | · | · |
102
103
  | MarkdownEditor | ✓ | · | · | · | · | · | · | · | · | · |
104
+ | BlockEditor | ✓ | · | · | · | · | · | · | · | · | · |
103
105
  | Prose | ✓ | · | N/A | N/A | · | · | · | · | · | · |
104
106
  | Timeline | ✓ | ✓ | N/A | N/A | · | · | · | · | · | · |
105
107
  | TimelineGrid | ✓ | N/A | N/A | N/A | · | · | · | · | · | · |
@@ -192,6 +194,7 @@ Legend: ✓ covered · N/A reasoned skip · · UNTESTED (blank cell = UNTESTED).
192
194
  | AreaChart | ✓ | ✓ | N/A | N/A | · | · | · | · | · | · |
193
195
  | PieChart | ✓ | ✓ | N/A | N/A | · | · | · | · | · | · |
194
196
  | CommandPalette | ✓ | N/A | · | · | · | · | · | · | · | · |
197
+ | EmojiPicker | ✓ | · | · | · | · | · | · | · | · | · |
195
198
  | TwoFactorSetup | ✓ | N/A | · | · | · | · | · | · | · | · |
196
199
  | AuthDivider | ✓ | N/A | N/A | N/A | · | · | · | · | · | · |
197
200
  | AuthFooter | ✓ | N/A | N/A | N/A | · | · | · | · | · | · |