@adia-ai/web-components 0.7.3 → 0.7.4

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 (136) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/components/accordion/accordion.css +2 -2
  3. package/components/action-list/action-list.css +2 -2
  4. package/components/agent-artifact/agent-artifact.css +31 -31
  5. package/components/agent-feedback-bar/agent-feedback-bar.css +10 -10
  6. package/components/agent-questions/agent-questions.css +59 -57
  7. package/components/agent-reasoning/agent-reasoning.css +54 -54
  8. package/components/agent-suggestions/agent-suggestions.css +4 -4
  9. package/components/agent-trace/agent-trace.css +53 -53
  10. package/components/alert/alert.css +53 -53
  11. package/components/avatar/avatar.css +27 -27
  12. package/components/badge/badge.css +56 -53
  13. package/components/block/block.css +16 -16
  14. package/components/blockquote/blockquote.css +16 -16
  15. package/components/breadcrumb/breadcrumb.css +23 -23
  16. package/components/button/button.css +99 -100
  17. package/components/calendar-grid/calendar-grid.css +95 -92
  18. package/components/calendar-picker/calendar-picker.css +141 -139
  19. package/components/canvas/canvas.css +12 -12
  20. package/components/card/card.css +83 -83
  21. package/components/chart/chart.css +218 -218
  22. package/components/chart-legend/chart-legend.css +26 -26
  23. package/components/check/check.css +40 -40
  24. package/components/code/code.css +125 -125
  25. package/components/col/col.css +15 -15
  26. package/components/color-picker/color-picker.css +55 -55
  27. package/components/combobox/combobox.css +64 -62
  28. package/components/command/command.css +91 -91
  29. package/components/context-menu/context-menu.css +1 -1
  30. package/components/date-range-picker/date-range-picker.css +59 -59
  31. package/components/datetime-picker/datetime-picker.css +25 -25
  32. package/components/demo-toggle/demo-toggle.css +27 -27
  33. package/components/description-list/description-list.css +18 -18
  34. package/components/divider/divider.css +24 -24
  35. package/components/embed/embed.css +6 -6
  36. package/components/empty-state/empty-state.css +29 -29
  37. package/components/feed/feed.css +12 -12
  38. package/components/field/field.css +28 -28
  39. package/components/field/field.test.js +2 -2
  40. package/components/fields/fields.css +5 -5
  41. package/components/grid/grid.a2ui.json +10 -0
  42. package/components/grid/grid.css +23 -5
  43. package/components/grid/grid.d.ts +4 -0
  44. package/components/grid/grid.yaml +13 -0
  45. package/components/heatmap/heatmap.css +61 -61
  46. package/components/icon/icon.css +12 -12
  47. package/components/image/image.css +14 -14
  48. package/components/inline-edit/inline-edit.css +16 -16
  49. package/components/inline-message/inline-message.css +16 -16
  50. package/components/input/input.css +69 -66
  51. package/components/inspector/inspector.css +6 -6
  52. package/components/integration-card/integration-card.css +41 -41
  53. package/components/integration-card/integration-card.test.js +4 -4
  54. package/components/kbd/kbd.css +47 -40
  55. package/components/link/link.css +12 -12
  56. package/components/list/list.css +8 -8
  57. package/components/list-window/list-window.css +10 -10
  58. package/components/loading-overlay/loading-overlay.css +17 -18
  59. package/components/loading-overlay/loading-overlay.test.js +8 -8
  60. package/components/mark/mark.css +16 -16
  61. package/components/menu/menu.css +9 -9
  62. package/components/modal/modal.class.js +5 -9
  63. package/components/modal/modal.css +43 -43
  64. package/components/nav/nav.css +40 -40
  65. package/components/nav-group/nav-group.css +54 -54
  66. package/components/nav-item/nav-item.css +44 -44
  67. package/components/noodles/noodles.css +31 -31
  68. package/components/number-format/number-format.css +4 -4
  69. package/components/option-card/option-card.css +70 -70
  70. package/components/otp-input/otp-input.css +29 -29
  71. package/components/page/page.a2ui.json +1 -1
  72. package/components/page/page.css +27 -27
  73. package/components/page/page.d.ts +1 -1
  74. package/components/page/page.yaml +1 -1
  75. package/components/pagination/pagination.css +6 -6
  76. package/components/pane/pane.css +57 -57
  77. package/components/password-strength/password-strength.css +32 -32
  78. package/components/pipeline-status/pipeline-status.css +67 -67
  79. package/components/popover/popover.css +11 -11
  80. package/components/preview/preview.css +21 -21
  81. package/components/progress/progress.css +23 -23
  82. package/components/progress-row/progress-row.css +17 -17
  83. package/components/qr-code/qr-code.css +4 -4
  84. package/components/radio/radio.css +39 -39
  85. package/components/range/range.css +58 -55
  86. package/components/rating/rating.css +28 -28
  87. package/components/relative-time/relative-time.css +6 -6
  88. package/components/richtext/richtext.css +133 -133
  89. package/components/row/row.css +19 -19
  90. package/components/search/search.css +5 -5
  91. package/components/segment/segment.css +29 -24
  92. package/components/segmented/segmented.css +30 -25
  93. package/components/select/select.css +95 -93
  94. package/components/skeleton/skeleton.css +14 -14
  95. package/components/skip-nav/skip-nav.css +4 -4
  96. package/components/slider/slider.css +61 -61
  97. package/components/spinner/spinner.css +40 -40
  98. package/components/spinner/spinner.test.js +10 -12
  99. package/components/stack/stack.css +11 -11
  100. package/components/stat/stat.css +27 -27
  101. package/components/step-progress/step-progress.css +20 -20
  102. package/components/stepper/stepper.css +29 -29
  103. package/components/stream/stream.css +12 -12
  104. package/components/swatch/swatch.css +68 -68
  105. package/components/swiper/swiper.class.js +5 -12
  106. package/components/swiper/swiper.css +57 -57
  107. package/components/switch/switch.css +53 -53
  108. package/components/table/table.css +166 -163
  109. package/components/table-toolbar/table-toolbar.css +33 -33
  110. package/components/tabs/tabs.css +54 -51
  111. package/components/tag/tag.css +74 -71
  112. package/components/tag/tag.test.js +14 -14
  113. package/components/tags-input/tags-input.css +51 -49
  114. package/components/text/text.css +44 -44
  115. package/components/textarea/textarea.css +49 -46
  116. package/components/time-picker/time-picker.css +47 -47
  117. package/components/timeline/timeline.css +54 -54
  118. package/components/toast/toast.css +58 -58
  119. package/components/toc/toc.css +28 -28
  120. package/components/toggle-group/toggle-group.css +9 -6
  121. package/components/toggle-scheme/toggle-scheme.css +2 -2
  122. package/components/toolbar/toolbar.css +18 -18
  123. package/components/tooltip/tooltip.css +2 -2
  124. package/components/tour/tour.css +4 -4
  125. package/components/tree/tree.css +37 -37
  126. package/components/upload/upload.css +49 -49
  127. package/dist/host.min.css +1 -0
  128. package/dist/web-components.min.css +1 -1
  129. package/dist/web-components.min.js +2 -2
  130. package/package.json +1 -1
  131. package/styles/foundation/space.css +19 -18
  132. package/styles/host.css +48 -0
  133. package/styles/prose.css +187 -173
  134. package/styles/type/scale.css +6 -0
  135. package/styles/typography.css +10 -5
  136. package/styles/verse.css +122 -0
package/styles/prose.css CHANGED
@@ -15,179 +15,193 @@
15
15
  re-skins everything within it. The @layer order is declared by the co-loaded
16
16
  barrel (styles/index.css); this file only contributes to `context`. */
17
17
  @layer context {
18
-
19
- [prose] {
20
- /* ── Radius larger bases than UI ── */
21
- --a-radius-sm: clamp(var(--a-radius-min), calc(var(--a-radius-k) * var(--a-radius-max) * var(--a-radius-sm-k)), var(--a-radius-max));
22
- --a-radius-md: clamp(var(--a-radius-min), calc(var(--a-radius-k) * var(--a-radius-max) * var(--a-radius-md-k)), var(--a-radius-max));
23
- --a-radius-lg: clamp(var(--a-radius-min), calc(var(--a-radius-k) * var(--a-radius-max) * var(--a-radius-lg-k)), var(--a-radius-max));
24
- --a-radius: var(--a-radius-md);
25
-
26
- /* ── Inset — shifted up the space scale ── */
27
- --a-inset-sm: var(--a-space-6);
28
- --a-inset-md: var(--a-space-8);
29
- --a-inset-lg: var(--a-space-10);
30
- --a-inset: var(--a-inset-md);
31
-
32
- /* ── Gaps — prose register, one rung up; same parametric (half + half·k)
33
- form as foundation, tracking --a-gap-k. At k=1: 8/12/16/20/24px. ── */
34
- --a-gap-xs: calc(var(--a-space-1) + var(--a-space-1) * var(--a-gap-k)); /* 8px @k=1 */
35
- --a-gap-sm: calc(var(--a-space-1-5) + var(--a-space-1-5) * var(--a-gap-k)); /* 12px @k=1 */
36
- --a-gap-md: calc(var(--a-space-2) + var(--a-space-2) * var(--a-gap-k)); /* 16px @k=1 */
37
- --a-gap-lg: calc(var(--a-space-2-5) + var(--a-space-2-5) * var(--a-gap-k)); /* 20px @k=1 */
38
- --a-gap-xl: calc(var(--a-space-3) + var(--a-space-3) * var(--a-gap-k)); /* 24px @k=1 */
39
- --a-gap: var(--a-gap-md);
40
-
41
- /* ── Sizing larger controls ── */
42
- --a-size-sm: calc(var(--a-density) * 1.75rem);
43
- --a-size-md: calc(var(--a-density) * 2.25rem);
44
- --a-size-lg: calc(var(--a-density) * 2.75rem);
45
- --a-size: var(--a-size-md);
46
-
47
- /* ── Typography override sm/md/lg tiers with prose sizes
18
+ [prose] {
19
+ /* ── Radius — prose register: rounder bounds (max 28px) than UI. ── */
20
+ --a-radius-min: 0.375rem; /* 6px */
21
+ --a-radius-max: 1.75rem; /* 28px */
22
+ --a-radius-sm: clamp(
23
+ var(--a-radius-min),
24
+ calc(var(--a-radius-k) * var(--a-radius-max) * var(--a-radius-sm-k)),
25
+ var(--a-radius-max)
26
+ );
27
+ --a-radius-md: clamp(
28
+ var(--a-radius-min),
29
+ calc(var(--a-radius-k) * var(--a-radius-max) * var(--a-radius-md-k)),
30
+ var(--a-radius-max)
31
+ );
32
+ --a-radius-lg: clamp(
33
+ var(--a-radius-min),
34
+ calc(var(--a-radius-k) * var(--a-radius-max) * var(--a-radius-lg-k)),
35
+ var(--a-radius-max)
36
+ );
37
+ --a-radius: var(--a-radius-md);
38
+
39
+ /* ── Inset — prose register (generous; sm/md/lg = 32/40/48). ── */
40
+ --a-inset-sm: var(--a-space-8); /* 32px */
41
+ --a-inset-md: var(--a-space-10); /* 40px */
42
+ --a-inset-lg: var(--a-space-12); /* 48px */
43
+ --a-inset: var(--a-inset-md);
44
+
45
+ /* ── Gaps — prose register (value × --a-gap-k), one rung up from regular.
46
+ At k=1: 12/16/20/24/28px. ── */
47
+ --a-gap-xs: calc(var(--a-space-3) * var(--a-gap-k)); /* 12px @k=1 */
48
+ --a-gap-sm: calc(var(--a-space-4) * var(--a-gap-k)); /* 16px @k=1 */
49
+ --a-gap-md: calc(var(--a-space-5) * var(--a-gap-k)); /* 20px @k=1 */
50
+ --a-gap-lg: calc(var(--a-space-6) * var(--a-gap-k)); /* 24px @k=1 */
51
+ --a-gap-xl: calc(var(--a-space-7) * var(--a-gap-k)); /* 28px @k=1 */
52
+ --a-gap: var(--a-gap-md);
53
+
54
+ /* ── Sizing — larger controls ── */
55
+ --a-size-sm: calc(var(--a-density) * 1.75rem);
56
+ --a-size-md: calc(var(--a-density) * 2.25rem);
57
+ --a-size-lg: calc(var(--a-density) * 2.75rem);
58
+ --a-size: var(--a-size-md);
59
+
60
+ /* ── Typography — override sm/md/lg tiers with prose sizes
48
61
  Also set --a-*-size to -md (base typography defaults to -sm) ── */
49
62
 
50
- /* display */
51
- --a-display-sm: clamp(24px, 20px + 1.5vw, 36px);
52
- --a-display-md: clamp(32px, 24px + 3vw, 56px);
53
- --a-display-lg: clamp(40px, 32px + 4vw, 80px);
54
- --a-display-size: var(--a-display-md);
55
-
56
- /* title */
57
- --a-title-sm: clamp(18px, 16px + 0.75vw, 24px);
58
- --a-title-md: clamp(24px, 20px + 1.5vw, 36px);
59
- --a-title-lg: clamp(28px, 24px + 2vw, 48px);
60
- --a-title-size: var(--a-title-md);
61
-
62
- /* heading */
63
- --a-heading-sm: 16px;
64
- --a-heading-md: 20px;
65
- --a-heading-lg: 24px;
66
- --a-heading-size: var(--a-heading-md);
67
-
68
- /* section */
69
- --a-section-sm: 14px;
70
- --a-section-md: 17px;
71
- --a-section-lg: 20px;
72
- --a-section-size: var(--a-section-md);
73
-
74
- /* subsection */
75
- --a-subsection-sm: 13px;
76
- --a-subsection-md: 15px;
77
- --a-subsection-lg: 17px;
78
- --a-subsection-size: var(--a-subsection-md);
79
-
80
- /* body */
81
- --a-body-sm: 14px;
82
- --a-body-md: 16px;
83
- --a-body-lg: 18px;
84
- --a-body-size: var(--a-body-md);
85
-
86
- /* deck */
87
- --a-deck-sm: 15px;
88
- --a-deck-md: 18px;
89
- --a-deck-lg: 20px;
90
- --a-deck-size: var(--a-deck-md);
91
-
92
- /* caption */
93
- --a-caption-sm: 14px;
94
- --a-caption-md: 15px;
95
- --a-caption-lg: 16px;
96
- --a-caption-size: var(--a-caption-md);
97
-
98
- /* kicker */
99
- --a-kicker-sm: 14px;
100
- --a-kicker-md: 15px;
101
- --a-kicker-lg: 16px;
102
- --a-kicker-size: var(--a-kicker-md);
103
-
104
- /* label */
105
- --a-label-sm: 12px;
106
- --a-label-md: 13px;
107
- --a-label-lg: 14px;
108
- --a-label-size: var(--a-label-md);
109
-
110
- /* metric */
111
- --a-metric-sm: clamp(20px, 16px + 1.5vw, 32px);
112
- --a-metric-md: clamp(28px, 24px + 2vw, 48px);
113
- --a-metric-lg: clamp(40px, 32px + 4vw, 72px);
114
- --a-metric-size: var(--a-metric-md);
115
-
116
- /* code */
117
- --a-code-sm: 14px;
118
- --a-code-md: 15px;
119
- --a-code-lg: 16px;
120
- --a-code-size: var(--a-code-md);
121
-
122
- /* ── UI — scale up for content context ── */
123
- --a-ui-px: var(--a-space-3);
124
- --a-ui-py: var(--a-space-2);
125
- --a-ui-sm: 14px;
126
- --a-ui-md: 15px;
127
- --a-ui-lg: 16px;
128
- --a-ui-size: var(--a-ui-md);
129
-
130
- --prose-max-width-sm: 55ch;
131
- --prose-max-width-md: 65ch;
132
- --prose-max-width-lg: 75ch;
133
- --prose-max-width: var(--prose-max-width-md);
134
- }
135
-
136
- [prose][size="lg"], [prose] [size="lg"] {
137
- --a-inset: var(--a-inset-lg);
138
- --a-gap: var(--a-gap-lg);
139
- --a-size: var(--a-size-lg);
140
- --a-radius: var(--a-radius-lg);
141
- }
142
- [prose][size="sm"], [prose] [size="sm"] {
143
- --a-inset: var(--a-inset-sm);
144
- --a-gap: var(--a-gap-sm);
145
- --a-size: var(--a-size-sm);
146
- --a-radius: var(--a-radius-sm);
147
- }
148
-
149
- /* Max-width constraint on flow content */
150
- [prose] > :is(p, ul, ol, blockquote, pre, table, dl) {
151
- max-width: var(--prose-max-width);
152
- }
153
-
154
- /* ── Prose-enhanced native elements ── */
155
-
156
- [prose] :is(ul, ol) {
157
- padding-inline-start: 1.75em;
158
- margin-block: 0.75em;
159
- }
160
-
161
- [prose] li + li {
162
- margin-block-start: 0.375em;
163
- }
164
-
165
- [prose] blockquote {
166
- padding: var(--a-space-4) var(--a-space-6);
167
- border-inline-start-width: 4px;
168
- font-size: var(--a-body-size);
169
- }
170
-
171
- [prose] hr {
172
- margin-block: var(--a-space-6);
173
- }
174
-
175
- [prose] table {
176
- border: 1px solid var(--a-border-subtle);
177
- border-radius: var(--a-radius-md);
178
- overflow: hidden;
179
- }
180
-
181
- [prose] th {
182
- background: var(--a-bg-muted);
183
- }
184
-
185
- [prose] pre {
186
- padding: var(--a-space-5);
187
- }
188
-
189
- [prose] img {
190
- border-radius: var(--a-radius-lg);
191
- }
192
-
63
+ /* display */
64
+ --a-display-sm: clamp(24px, 20px + 1.5vw, 36px);
65
+ --a-display-md: clamp(32px, 24px + 3vw, 56px);
66
+ --a-display-lg: clamp(40px, 32px + 4vw, 80px);
67
+ --a-display-size: var(--a-display-md);
68
+
69
+ /* title */
70
+ --a-title-sm: clamp(18px, 16px + 0.75vw, 24px);
71
+ --a-title-md: clamp(24px, 20px + 1.5vw, 36px);
72
+ --a-title-lg: clamp(28px, 24px + 2vw, 48px);
73
+ --a-title-size: var(--a-title-md);
74
+
75
+ /* heading */
76
+ --a-heading-sm: 16px;
77
+ --a-heading-md: 20px;
78
+ --a-heading-lg: 24px;
79
+ --a-heading-size: var(--a-heading-md);
80
+
81
+ /* section */
82
+ --a-section-sm: 14px;
83
+ --a-section-md: 17px;
84
+ --a-section-lg: 20px;
85
+ --a-section-size: var(--a-section-md);
86
+
87
+ /* subsection */
88
+ --a-subsection-sm: 13px;
89
+ --a-subsection-md: 15px;
90
+ --a-subsection-lg: 17px;
91
+ --a-subsection-size: var(--a-subsection-md);
92
+
93
+ /* body */
94
+ --a-body-sm: 14px;
95
+ --a-body-md: 16px;
96
+ --a-body-lg: 18px;
97
+ --a-body-size: var(--a-body-md);
98
+
99
+ /* deck */
100
+ --a-deck-sm: 15px;
101
+ --a-deck-md: 18px;
102
+ --a-deck-lg: 20px;
103
+ --a-deck-size: var(--a-deck-md);
104
+
105
+ /* caption */
106
+ --a-caption-sm: 14px;
107
+ --a-caption-md: 15px;
108
+ --a-caption-lg: 16px;
109
+ --a-caption-size: var(--a-caption-md);
110
+
111
+ /* kicker */
112
+ --a-kicker-sm: 14px;
113
+ --a-kicker-md: 15px;
114
+ --a-kicker-lg: 16px;
115
+ --a-kicker-size: var(--a-kicker-md);
116
+
117
+ /* label */
118
+ --a-label-sm: 12px;
119
+ --a-label-md: 13px;
120
+ --a-label-lg: 14px;
121
+ --a-label-size: var(--a-label-md);
122
+
123
+ /* metric */
124
+ --a-metric-sm: clamp(20px, 16px + 1.5vw, 32px);
125
+ --a-metric-md: clamp(28px, 24px + 2vw, 48px);
126
+ --a-metric-lg: clamp(40px, 32px + 4vw, 72px);
127
+ --a-metric-size: var(--a-metric-md);
128
+
129
+ /* code */
130
+ --a-code-sm: 14px;
131
+ --a-code-md: 15px;
132
+ --a-code-lg: 16px;
133
+ --a-code-size: var(--a-code-md);
134
+
135
+ /* ── UI — scale up for content context ── */
136
+ --a-ui-px: var(--a-space-3);
137
+ --a-ui-py: var(--a-space-2);
138
+ --a-ui-sm: 14px;
139
+ --a-ui-md: 15px;
140
+ --a-ui-lg: 16px;
141
+ --a-ui-size: var(--a-ui-md);
142
+
143
+ --prose-max-width-sm: 55ch;
144
+ --prose-max-width-md: 65ch;
145
+ --prose-max-width-lg: 75ch;
146
+ --prose-max-width: var(--prose-max-width-md);
147
+ }
148
+
149
+ [prose][size="lg"],
150
+ [prose] [size="lg"] {
151
+ --a-inset: var(--a-inset-lg);
152
+ --a-gap: var(--a-gap-lg);
153
+ --a-size: var(--a-size-lg);
154
+ --a-radius: var(--a-radius-lg);
155
+ }
156
+ [prose][size="sm"],
157
+ [prose] [size="sm"] {
158
+ --a-inset: var(--a-inset-sm);
159
+ --a-gap: var(--a-gap-sm);
160
+ --a-size: var(--a-size-sm);
161
+ --a-radius: var(--a-radius-sm);
162
+ }
163
+
164
+ /* Max-width constraint on flow content */
165
+ [prose] > :is(p, ul, ol, blockquote, pre, table, dl) {
166
+ max-width: var(--prose-max-width);
167
+ }
168
+
169
+ /* ── Prose-enhanced native elements ── */
170
+
171
+ [prose] :is(ul, ol) {
172
+ padding-inline-start: 1.75em;
173
+ margin-block: 0.75em;
174
+ }
175
+
176
+ [prose] li + li {
177
+ margin-block-start: 0.375em;
178
+ }
179
+
180
+ [prose] blockquote {
181
+ padding: var(--a-space-4) var(--a-space-6);
182
+ border-inline-start-width: 4px;
183
+ font-size: var(--a-body-size);
184
+ }
185
+
186
+ [prose] hr {
187
+ margin-block: var(--a-space-6);
188
+ }
189
+
190
+ [prose] table {
191
+ border: 1px solid var(--a-border-subtle);
192
+ border-radius: var(--a-radius-md);
193
+ overflow: hidden;
194
+ }
195
+
196
+ [prose] th {
197
+ background: var(--a-bg-muted);
198
+ }
199
+
200
+ [prose] pre {
201
+ padding: var(--a-space-5);
202
+ }
203
+
204
+ [prose] img {
205
+ border-radius: var(--a-radius-lg);
206
+ }
193
207
  }
@@ -19,6 +19,12 @@
19
19
  --a-font-family-code: var(--a-font-family-mono);
20
20
  --a-font-family-control: var(--a-font-family-mono);
21
21
  --a-font-family: var(--a-font-family-sans);
22
+ /* Back-compat alias for the pre-ADR-0035 token name. DEPRECATED — prefer
23
+ --a-font-family. Kept so legacy `font-family: var(--a-font)` references
24
+ (demo scaffolds, external consumers, embedded apps) resolve to the sans
25
+ stack instead of going invalid-at-computed-value-time → inherit → UA
26
+ serif. Retire once the host.css migration removes the boilerplate. */
27
+ --a-font: var(--a-font-family);
22
28
 
23
29
  /* ── Type scale ──
24
30
  Ratio: ~1.25 (major third) with dramatic hero jump.
@@ -24,20 +24,25 @@
24
24
  universal size token system in tokens.css shifts --a-*-size
25
25
  tokens so every consuming component tracks the cascade.
26
26
 
27
- TWO PUBLICATION REGISTERS
27
+ THREE PUBLICATION REGISTERS (inset · gap · control · type · radius scale together)
28
+ [verse] — Dense product UI (inspectors, tables, toolbars, side rails).
29
+ Smallest scale: tight inset/gap, small controls + type, tight radius
30
+ (max 16px). Type SHIFTS with [size] (body 11/12/13). styles/verse.css.
31
+
28
32
  Default (productive) — Product UI.
29
33
  Static, compressed scale. Announce/Divide roles default to -sm
30
34
  because product UI rarely needs hero-scale type. Everything else
31
35
  defaults to -md. 1-2 px between tiers. No fluid clamps in UI chrome.
32
36
 
33
37
  [prose] — Long-form content (articles, docs, marketing).
34
- Dynamic scale. All roles default to -md. Big dynamic range between
35
- tiers. Fluid clamps on display/title/metric respond to viewport.
36
- Reading measure (max-width) + generous insets.
38
+ Dynamic scale. All roles default to -md (type PINNED doesn't shift
39
+ with [size]). Fluid clamps on display/title/metric respond to viewport.
40
+ Reading measure (max-width) + generous insets + rounder radius (max 28px).
37
41
 
38
42
  TIERS
39
43
  Base defaults to -sm. [size="md"] or [size="lg"] on containers shifts up.
40
- [prose] overrides to -md defaults with fluid viewport-responsive clamps.
44
+ [verse] keeps the base convention (type shifts with [size]); [prose]
45
+ overrides to -md defaults (pinned) with fluid viewport-responsive clamps.
41
46
 
42
47
  FONTS
43
48
  --a-font-family-sans — long-form, marketing body
@@ -0,0 +1,122 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ VERSE — dense / compact context via [verse] attribute.
3
+
4
+ The third typographic register, sibling to [prose]. Where [prose]
5
+ shifts everything UP (long-form, generous), [verse] shifts everything
6
+ DOWN — tighter inset/gap, smaller controls, smaller type — for dense
7
+ product surfaces (inspectors, data tables, toolbars, side rails).
8
+
9
+ <aside verse>...</aside> — md (default)
10
+ <div verse size="sm">...</div> — extra-compact
11
+ <section verse size="lg">...</section> — relaxed-compact
12
+
13
+ Scale relationship (at density=1, --a-gap-k=1):
14
+ register inset sm/md/lg gap sm/md/lg body sm/md/lg
15
+ verse 10 / 12 / 14 10 / 12 / 14 11 / 12 / 13
16
+ regular 14 / 16 / 18 10 / 12 / 14 14 / 15 / 16
17
+ prose 32 / 40 / 48 16 / 20 / 24 14 / 16 / 18
18
+
19
+ TYPE SHIFTS WITH [size] (unlike [prose], which pins type at -md):
20
+ verse redefines the sm/md/lg type VALUES; the `-size` pointers are
21
+ re-declared under [verse]:not([size]) so a BARE verse resolves verse's
22
+ own md value (a pointer left at :root would resolve the BASE value —
23
+ custom props compute at their declaration site). The global [size]
24
+ rules then shift the pointer on [size]-bearing elements, resolving
25
+ verse's sm/lg values. Control-size (--a-size) needs explicit tier rules
26
+ because the global [size] rules set it to hardcoded base values, not via
27
+ --a-size-*.
28
+
29
+ NOTE: type sizes below the spacing anchors (body 11/12/13, control
30
+ 18/20/24) are DEDUCED — proposed compact scale, tune to taste.
31
+ ═══════════════════════════════════════════════════════════════ */
32
+
33
+ /* `context` layer (ADR-0038 step 7) — sits above utilities+components. */
34
+ @layer context {
35
+ [verse] {
36
+ /* ── Inset — tighter than regular ── */
37
+ --a-inset-sm: var(--a-space-2-5); /* 10px */
38
+ --a-inset-md: var(--a-space-3); /* 12px */
39
+ --a-inset-lg: var(--a-space-3-5); /* 14px */
40
+ --a-inset: var(--a-inset-md);
41
+
42
+ /* ── Gaps — parametric (value × --a-gap-k); k=1 = base value. ── */
43
+ --a-gap-xs: calc(var(--a-space-2) * var(--a-gap-k)); /* 8px @k=1 */
44
+ --a-gap-sm: calc(var(--a-space-2-5) * var(--a-gap-k)); /* 10px @k=1 */
45
+ --a-gap-md: calc(var(--a-space-3) * var(--a-gap-k)); /* 12px @k=1 */
46
+ --a-gap-lg: calc(var(--a-space-3-5) * var(--a-gap-k)); /* 14px @k=1 */
47
+ --a-gap-xl: calc(var(--a-space-4) * var(--a-gap-k)); /* 16px @k=1 */
48
+ --a-gap: var(--a-gap-md);
49
+
50
+ /* ── Radius — verse register: tighter bounds (max 16px). Re-declares the
51
+ clamps so they resolve verse's min/max (base clamps compute at :root). ── */
52
+ --a-radius-min: 0.25rem; /* 4px */
53
+ --a-radius-max: 1rem; /* 16px */
54
+ --a-radius-xs: clamp(var(--a-radius-min), calc(var(--a-radius-k) * var(--a-radius-max) * var(--a-radius-xs-k)), var(--a-radius-max));
55
+ --a-radius-sm: clamp(var(--a-radius-min), calc(var(--a-radius-k) * var(--a-radius-max) * var(--a-radius-sm-k)), var(--a-radius-max));
56
+ --a-radius-md: clamp(var(--a-radius-min), calc(var(--a-radius-k) * var(--a-radius-max) * var(--a-radius-md-k)), var(--a-radius-max));
57
+ --a-radius-lg: clamp(var(--a-radius-min), calc(var(--a-radius-k) * var(--a-radius-max) * var(--a-radius-lg-k)), var(--a-radius-max));
58
+ --a-radius: var(--a-radius-md);
59
+
60
+ /* ── Control sizing — smaller (explicit tier rules below) ── */
61
+ --a-size-sm: calc(var(--a-density) * 1.125rem); /* 18px */
62
+ --a-size-md: calc(var(--a-density) * 1.25rem); /* 20px */
63
+ --a-size-lg: calc(var(--a-density) * 1.5rem); /* 24px */
64
+ --a-size: var(--a-size-md);
65
+
66
+ /* ── Typography — compact register (deduced; static, no fluid clamps;
67
+ floored at 10px). VALUES only — pointers live under :not([size]). ── */
68
+ --a-display-sm: 18px; --a-display-md: 23px; --a-display-lg: 29px;
69
+ --a-title-sm: 16px; --a-title-md: 19px; --a-title-lg: 22px;
70
+ --a-heading-sm: 13px; --a-heading-md: 14px; --a-heading-lg: 15px;
71
+ --a-section-sm: 13px; --a-section-md: 14px; --a-section-lg: 16px;
72
+ --a-subsection-sm: 12px; --a-subsection-md: 13px; --a-subsection-lg: 14px;
73
+ --a-body-sm: 11px; --a-body-md: 12px; --a-body-lg: 13px;
74
+ --a-deck-sm: 14px; --a-deck-md: 15px; --a-deck-lg: 16px;
75
+ --a-caption-sm: 10px; --a-caption-md: 11px; --a-caption-lg: 12px;
76
+ --a-kicker-sm: 10px; --a-kicker-md: 10px; --a-kicker-lg: 11px;
77
+ --a-label-sm: 10px; --a-label-md: 10px; --a-label-lg: 11px;
78
+ --a-metric-sm: 19px; --a-metric-md: 25px; --a-metric-lg: 34px;
79
+ --a-code-sm: 11px; --a-code-md: 12px; --a-code-lg: 13px;
80
+
81
+ /* ── UI control text ── */
82
+ --a-ui-px: var(--a-space-2);
83
+ --a-ui-py: var(--a-space-1);
84
+ --a-ui-sm: 11px; --a-ui-md: 12px; --a-ui-lg: 13px;
85
+ }
86
+
87
+ /* Bare-verse default tier — re-declares the `-size` pointers ON the verse
88
+ element so they resolve verse's values (base :root pointers would resolve
89
+ base values). Mirrors the base default-tier convention: announce/divide
90
+ roles → -sm, text/data roles → -md. The global [size] rules override these
91
+ on [size]-bearing elements (resolving verse's sm/lg token values). */
92
+ [verse]:not([size]) {
93
+ --a-display-size: var(--a-display-sm);
94
+ --a-title-size: var(--a-title-sm);
95
+ --a-heading-size: var(--a-heading-sm);
96
+ --a-section-size: var(--a-section-sm);
97
+ --a-subsection-size: var(--a-subsection-md);
98
+ --a-body-size: var(--a-body-md);
99
+ --a-deck-size: var(--a-deck-md);
100
+ --a-caption-size: var(--a-caption-md);
101
+ --a-kicker-size: var(--a-kicker-md);
102
+ --a-label-size: var(--a-label-md);
103
+ --a-metric-size: var(--a-metric-md);
104
+ --a-code-size: var(--a-code-md);
105
+ --a-ui-size: var(--a-ui-md);
106
+ }
107
+
108
+ /* Tier shifts — inset/gap/control-size (typography shifts via global [size],
109
+ which resolves verse's token values). Mirrors the [prose] tier pattern. */
110
+ [verse][size="lg"],
111
+ [verse] [size="lg"] {
112
+ --a-inset: var(--a-inset-lg);
113
+ --a-gap: var(--a-gap-lg);
114
+ --a-size: var(--a-size-lg);
115
+ }
116
+ [verse][size="sm"],
117
+ [verse] [size="sm"] {
118
+ --a-inset: var(--a-inset-sm);
119
+ --a-gap: var(--a-gap-sm);
120
+ --a-size: var(--a-size-sm);
121
+ }
122
+ }