@texturehq/edges 1.33.1 → 1.34.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 (52) hide show
  1. package/README.md +57 -3
  2. package/dist/{RichTextEditor-CxrunTg7.d.cts → RichTextEditor-diZqy_s1.d.cts} +1 -1
  3. package/dist/{RichTextEditor-CxrunTg7.d.ts → RichTextEditor-diZqy_s1.d.ts} +1 -1
  4. package/dist/{TimeField-DRQshIHX.d.ts → TimeField-7pTUPh11.d.ts} +32 -17
  5. package/dist/{TimeField-WCmeiLu3.d.cts → TimeField-CqmVrAdn.d.cts} +32 -17
  6. package/dist/{colors-Cgs2MGZ8.d.ts → colors-CoULWZ5j.d.ts} +53 -18
  7. package/dist/{colors-DGRiGzgj.d.cts → colors-upTGgIQe.d.cts} +53 -18
  8. package/dist/form/index.cjs +1 -1
  9. package/dist/form/index.cjs.map +1 -1
  10. package/dist/form/index.d.cts +1 -1
  11. package/dist/form/index.d.ts +1 -1
  12. package/dist/form/index.js +1 -1
  13. package/dist/form/index.js.map +1 -1
  14. package/dist/{index-BqpWEc_N.d.ts → index-dofSwYId.d.cts} +5 -5
  15. package/dist/{index-BqpWEc_N.d.cts → index-dofSwYId.d.ts} +5 -5
  16. package/dist/index.cjs +10 -10
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +161 -41
  19. package/dist/index.d.ts +161 -41
  20. package/dist/index.js +10 -10
  21. package/dist/index.js.map +1 -1
  22. package/dist/prose.css +202 -0
  23. package/dist/rhf/index.cjs +1 -1
  24. package/dist/rhf/index.cjs.map +1 -1
  25. package/dist/rhf/index.d.cts +2 -2
  26. package/dist/rhf/index.d.ts +2 -2
  27. package/dist/rhf/index.js +1 -1
  28. package/dist/rhf/index.js.map +1 -1
  29. package/dist/server.cjs +2 -2
  30. package/dist/server.cjs.map +1 -1
  31. package/dist/server.d.cts +2 -2
  32. package/dist/server.d.ts +2 -2
  33. package/dist/server.js +2 -2
  34. package/dist/server.js.map +1 -1
  35. package/dist/styles/computed.css +2 -2
  36. package/dist/styles/responsive-typography.css +9 -7
  37. package/dist/styles/theme-light-override.css +26 -15
  38. package/dist/styles.css +953 -877
  39. package/dist/theme.css +20 -7
  40. package/dist/typography.css +150 -0
  41. package/package.json +11 -13
  42. package/scripts/check-legacy-action-variants.mjs +96 -0
  43. package/scripts/check-legacy-font-colors.mjs +92 -0
  44. package/scripts/copy-assets.js +12 -0
  45. package/templates/claude-rules/.claude +5 -5
  46. package/templates/claude-rules/claude.md +5 -5
  47. package/templates/codex-rules/codex.md +5 -5
  48. package/dist/generated/tailwind-tokens-dark.css +0 -397
  49. package/dist/generated/tailwind-tokens-light.css +0 -611
  50. package/dist/generated/viz-runtime.css +0 -243
  51. package/scripts/generate-viz-runtime.js +0 -107
  52. package/scripts/validate-tokens.js +0 -176
package/dist/prose.css ADDED
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Prose — @texturehq/edges-tokens
3
+ *
4
+ * Editorial composition styles for long-form content. Wrap any container in
5
+ * `.prose` and the descendant `h1`–`h6`, `p`, `ul`, `ol`, `blockquote`, `a`,
6
+ * `code`, and `hr` elements pick up the editorial type system, spacing
7
+ * rules, inline-element styling, and the 42rem reading column.
8
+ *
9
+ * Authors do not put role class names on individual elements — the wrapper
10
+ * owns them all. This is the canonical wrapper described on
11
+ * https://edges.texturehq.com/foundations/typography
12
+ *
13
+ * Import after `@texturehq/edges-tokens/css/light` so the referenced
14
+ * `--text-*`, `--color-*`, `--spacing-*`, and `--radius-*` custom
15
+ * properties are defined.
16
+ */
17
+
18
+ .prose {
19
+ max-width: 42rem;
20
+ color: var(--color-text-primary);
21
+ }
22
+
23
+ /* Size variants — apply alongside .prose. */
24
+ .prose.prose-sm {
25
+ max-width: 36rem;
26
+ }
27
+ .prose.prose-sm p,
28
+ .prose.prose-sm ul,
29
+ .prose.prose-sm ol,
30
+ .prose.prose-sm blockquote {
31
+ font: var(--text-body-md);
32
+ letter-spacing: var(--text-body-md-letter-spacing);
33
+ }
34
+ .prose.prose-lede p:first-child,
35
+ .prose.prose-lede > p:only-child {
36
+ font: var(--text-body-lg);
37
+ letter-spacing: var(--text-body-lg-letter-spacing);
38
+ color: var(--color-text-secondary);
39
+ }
40
+
41
+ /* Headings — Rethink Sans display roles with balanced wrapping. */
42
+ .prose h1 {
43
+ font: var(--text-display-lg);
44
+ letter-spacing: var(--text-display-lg-letter-spacing);
45
+ color: var(--color-text-primary);
46
+ text-wrap: balance;
47
+ margin: 0 0 var(--spacing-4);
48
+ }
49
+
50
+ .prose h2 {
51
+ font: var(--text-display-md);
52
+ letter-spacing: var(--text-display-md-letter-spacing);
53
+ color: var(--color-text-primary);
54
+ text-wrap: balance;
55
+ margin: var(--spacing-10) 0 var(--spacing-3);
56
+ }
57
+
58
+ .prose h3 {
59
+ font: var(--text-display-sm);
60
+ letter-spacing: var(--text-display-sm-letter-spacing);
61
+ color: var(--color-text-primary);
62
+ text-wrap: balance;
63
+ margin: var(--spacing-8) 0 var(--spacing-3);
64
+ }
65
+
66
+ .prose h4 {
67
+ font: var(--text-heading-lg);
68
+ letter-spacing: var(--text-heading-lg-letter-spacing);
69
+ color: var(--color-text-primary);
70
+ text-wrap: balance;
71
+ margin: var(--spacing-6) 0 var(--spacing-2);
72
+ }
73
+
74
+ .prose h5 {
75
+ font: var(--text-heading-md);
76
+ letter-spacing: var(--text-heading-md-letter-spacing);
77
+ color: var(--color-text-primary);
78
+ text-wrap: balance;
79
+ margin: var(--spacing-6) 0 var(--spacing-2);
80
+ }
81
+
82
+ .prose h6 {
83
+ font: var(--text-heading-sm);
84
+ letter-spacing: var(--text-heading-sm-letter-spacing);
85
+ color: var(--color-text-primary);
86
+ text-wrap: balance;
87
+ margin: var(--spacing-6) 0 var(--spacing-2);
88
+ }
89
+
90
+ /* Body paragraphs — 18px, 1.55, pretty-wrapped with hyphenation. */
91
+ .prose p {
92
+ font: var(--text-body-lg);
93
+ letter-spacing: var(--text-body-lg-letter-spacing);
94
+ color: var(--color-text-primary);
95
+ text-wrap: pretty;
96
+ hyphens: auto;
97
+ margin: 0 0 var(--spacing-5);
98
+ }
99
+
100
+ .prose > :last-child {
101
+ margin-bottom: 0;
102
+ }
103
+
104
+ /* Inline emphasis. */
105
+ .prose strong,
106
+ .prose b {
107
+ font-weight: 600;
108
+ color: var(--color-text-primary);
109
+ }
110
+
111
+ .prose em,
112
+ .prose i {
113
+ font-style: italic;
114
+ }
115
+
116
+ /* Editorial links — iris with the long underline treatment. */
117
+ .prose a {
118
+ color: var(--color-iris-base);
119
+ font-weight: 500;
120
+ text-decoration: underline;
121
+ text-decoration-thickness: 1px;
122
+ text-underline-offset: 6px;
123
+ text-decoration-color: color-mix(in oklch, var(--color-iris-base), transparent 60%);
124
+ transition:
125
+ color 150ms ease,
126
+ text-decoration-color 150ms ease;
127
+ }
128
+
129
+ .prose a:hover,
130
+ .prose a:focus-visible {
131
+ color: color-mix(in oklch, var(--color-iris-base), black 15%);
132
+ text-decoration-color: currentcolor;
133
+ }
134
+
135
+ /* Inline code — warm-tinted pill (the Slack/GitHub/Notion convention). */
136
+ .prose :where(code):not(pre code) {
137
+ font: var(--text-code);
138
+ letter-spacing: var(--text-code-letter-spacing);
139
+ font-size: 0.875em;
140
+ background: var(--color-rose-pastel);
141
+ color: var(--color-rose-base);
142
+ padding: 0 5px;
143
+ border-radius: var(--radius-sm);
144
+ }
145
+
146
+ /* Lists. */
147
+ .prose ul,
148
+ .prose ol {
149
+ padding-left: 1.5rem;
150
+ margin: 0 0 var(--spacing-5);
151
+ font: var(--text-body-lg);
152
+ letter-spacing: var(--text-body-lg-letter-spacing);
153
+ color: var(--color-text-primary);
154
+ }
155
+
156
+ .prose ul {
157
+ list-style: disc;
158
+ }
159
+
160
+ .prose ol {
161
+ list-style: decimal;
162
+ }
163
+
164
+ .prose li + li {
165
+ margin-top: 0.75rem;
166
+ }
167
+
168
+ /* Blockquote. */
169
+ .prose blockquote {
170
+ margin: 0 0 var(--spacing-5);
171
+ padding: 4px 0 4px 1.5rem;
172
+ border-left: 3px solid var(--color-border-default);
173
+ font: var(--text-body-lg);
174
+ letter-spacing: var(--text-body-lg-letter-spacing);
175
+ color: var(--color-text-primary);
176
+ font-style: italic;
177
+ }
178
+
179
+ /* Horizontal rule — full reading column, generous vertical breathing room. */
180
+ .prose hr {
181
+ max-width: 42rem;
182
+ margin: var(--spacing-10) 0;
183
+ border: 0;
184
+ border-top: 1px solid var(--color-border-default);
185
+ }
186
+
187
+ /* Neutral tone — text-primary links with the same underline treatment as
188
+ editorial (long offset, semi-transparent), just tinted from the body
189
+ color instead of iris. Use in product contexts (forms, in-app chrome,
190
+ banners) where the editorial iris would compete with the surface's
191
+ brand action color. */
192
+ .prose-neutral a {
193
+ color: var(--color-text-primary);
194
+ font-weight: 600;
195
+ text-decoration-color: color-mix(in oklch, var(--color-text-primary), transparent 60%);
196
+ }
197
+
198
+ .prose-neutral a:hover,
199
+ .prose-neutral a:focus-visible {
200
+ color: var(--color-text-primary);
201
+ text-decoration-color: currentcolor;
202
+ }