@cogenta/theme-canonical 1.1.2 → 1.3.3

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 (71) hide show
  1. package/dist/src/index.d.ts +1 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +1 -0
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/render/arrow-link.d.ts +11 -0
  6. package/dist/src/render/arrow-link.d.ts.map +1 -0
  7. package/dist/src/render/arrow-link.js +29 -0
  8. package/dist/src/render/arrow-link.js.map +1 -0
  9. package/dist/src/render/blocks/collection-list.d.ts +15 -5
  10. package/dist/src/render/blocks/collection-list.d.ts.map +1 -1
  11. package/dist/src/render/blocks/collection-list.js +36 -13
  12. package/dist/src/render/blocks/collection-list.js.map +1 -1
  13. package/dist/src/render/blocks/embed.d.ts.map +1 -1
  14. package/dist/src/render/blocks/embed.js +3 -2
  15. package/dist/src/render/blocks/embed.js.map +1 -1
  16. package/dist/src/render/blocks/gallery.d.ts.map +1 -1
  17. package/dist/src/render/blocks/gallery.js +4 -1
  18. package/dist/src/render/blocks/gallery.js.map +1 -1
  19. package/dist/src/render/blocks/hero.d.ts.map +1 -1
  20. package/dist/src/render/blocks/hero.js +9 -2
  21. package/dist/src/render/blocks/hero.js.map +1 -1
  22. package/dist/src/render/blocks/pricing-table.d.ts.map +1 -1
  23. package/dist/src/render/blocks/pricing-table.js +17 -4
  24. package/dist/src/render/blocks/pricing-table.js.map +1 -1
  25. package/dist/src/render/chrome.d.ts +40 -1
  26. package/dist/src/render/chrome.d.ts.map +1 -1
  27. package/dist/src/render/chrome.js +103 -71
  28. package/dist/src/render/chrome.js.map +1 -1
  29. package/dist/src/render/dates.d.ts +9 -0
  30. package/dist/src/render/dates.d.ts.map +1 -0
  31. package/dist/src/render/dates.js +16 -0
  32. package/dist/src/render/dates.js.map +1 -0
  33. package/dist/src/render/render-block.d.ts.map +1 -1
  34. package/dist/src/render/render-block.js +7 -1
  35. package/dist/src/render/render-block.js.map +1 -1
  36. package/dist/src/render/strings.d.ts +25 -0
  37. package/dist/src/render/strings.d.ts.map +1 -0
  38. package/dist/src/render/strings.js +26 -0
  39. package/dist/src/render/strings.js.map +1 -0
  40. package/dist/src/render/term-archive.d.ts +5 -5
  41. package/dist/src/render/term-archive.d.ts.map +1 -1
  42. package/dist/src/render/term-archive.js +14 -12
  43. package/dist/src/render/term-archive.js.map +1 -1
  44. package/dist/src/render/widget-areas.d.ts +20 -0
  45. package/dist/src/render/widget-areas.d.ts.map +1 -0
  46. package/dist/src/render/widget-areas.js +40 -0
  47. package/dist/src/render/widget-areas.js.map +1 -0
  48. package/package.json +5 -5
  49. package/src/index.ts +1 -0
  50. package/src/render/arrow-link.ts +27 -0
  51. package/src/render/blocks/collection-list.ts +53 -15
  52. package/src/render/blocks/embed.ts +3 -2
  53. package/src/render/blocks/gallery.ts +4 -1
  54. package/src/render/blocks/hero.ts +9 -2
  55. package/src/render/blocks/pricing-table.ts +22 -4
  56. package/src/render/chrome.ts +156 -70
  57. package/src/render/dates.ts +14 -0
  58. package/src/render/render-block.ts +6 -0
  59. package/src/render/strings.ts +30 -0
  60. package/src/render/term-archive.ts +54 -32
  61. package/src/render/widget-areas.ts +44 -0
  62. package/src/styles/archive.css +66 -20
  63. package/src/styles/base.css +266 -680
  64. package/src/styles/blocks.css +678 -811
  65. package/src/styles/chrome.css +469 -0
  66. package/src/styles/listings.css +183 -0
  67. package/src/styles/theme.css +28 -14
  68. package/src/styles/tokens.css +192 -205
  69. package/src/styles/utility.css +295 -0
  70. package/src/styles/widgets.css +1064 -0
  71. package/tokens.json +15 -15
@@ -0,0 +1,295 @@
1
+ /*
2
+ * The pages and sections the host renders around a theme's own markup with
3
+ * this theme's classes: the search page (`search-page.ts`), a public form
4
+ * (`forms-page.ts`) and the comment thread after an entry (`comments.ts`,
5
+ * `@cogenta/theme-kit`). Each sits in the page frame, under the page title.
6
+ */
7
+
8
+ /* --------------------------------------------------------------------------
9
+ Controls shared by the three
10
+ -------------------------------------------------------------------------- */
11
+
12
+ .cg-search__form input,
13
+ .cg-form__field input:not([type="checkbox"], [type="radio"]),
14
+ .cg-form__field select,
15
+ .cg-form__field textarea,
16
+ .cg-comment__form input,
17
+ .cg-comment__form textarea {
18
+ inline-size: 100%;
19
+ min-block-size: 2.75rem;
20
+ padding: var(--cg-s2) var(--cg-s3);
21
+ /* 3:1 against the page, the contrast a control's edge needs (WCAG 1.4.11). */
22
+ border: var(--cg-rule) solid var(--cg-line-strong);
23
+ border-radius: var(--cg-radius-control);
24
+ background: var(--cg-canvas);
25
+ color: var(--cg-ink);
26
+ font: inherit;
27
+ transition: border-color var(--cg-duration) var(--cg-ease);
28
+ }
29
+
30
+ .cg-search__form input:hover,
31
+ .cg-form__field :is(input, select, textarea):hover,
32
+ .cg-comment__form :is(input, textarea):hover {
33
+ border-color: var(--cg-ink);
34
+ }
35
+
36
+ .cg-search__form button,
37
+ .cg-form button[type="submit"],
38
+ .cg-comment__form button[type="submit"] {
39
+ min-block-size: 2.75rem;
40
+ padding: var(--cg-s2) var(--cg-s6);
41
+ border: var(--cg-rule) solid var(--cg-action);
42
+ border-radius: var(--cg-radius-control);
43
+ background: var(--cg-action);
44
+ color: var(--cg-action-fg);
45
+ font: inherit;
46
+ font-weight: var(--cg-weight-semibold);
47
+ cursor: pointer;
48
+ transition:
49
+ background-color var(--cg-duration) var(--cg-ease),
50
+ border-color var(--cg-duration) var(--cg-ease);
51
+ }
52
+
53
+ .cg-search__form button:hover,
54
+ .cg-form button[type="submit"]:hover,
55
+ .cg-comment__form button[type="submit"]:hover {
56
+ border-color: var(--cg-action-hover);
57
+ background: var(--cg-action-hover);
58
+ }
59
+
60
+ .cg-search__form label,
61
+ .cg-form__field label,
62
+ .cg-comment__form label {
63
+ display: block;
64
+ margin-block-end: var(--cg-s2);
65
+ font-weight: var(--cg-weight-semibold);
66
+ }
67
+
68
+ /* No skin names a "danger" colour, so an error reads through weight and a
69
+ rule in ink, never through a hue a skin cannot change. */
70
+ .cg-search__error,
71
+ .cg-form__error,
72
+ .cg-form__field-error {
73
+ padding-inline-start: var(--cg-s4);
74
+ border-inline-start: 4px solid var(--cg-ink);
75
+ color: var(--cg-ink);
76
+ font-weight: var(--cg-weight-semibold);
77
+ }
78
+
79
+ .cg-form__field :is(input, select, textarea)[aria-invalid="true"] {
80
+ border-width: var(--cg-rule-strong);
81
+ border-color: var(--cg-ink);
82
+ }
83
+
84
+ /* The honeypots: reachable by a script that fills every field, never shown. */
85
+ .cg-form__honeypot,
86
+ .cg-comment__honeypot {
87
+ position: absolute;
88
+ inline-size: 1px;
89
+ block-size: 1px;
90
+ overflow: hidden;
91
+ inset-inline-start: -9999px;
92
+ }
93
+
94
+ /* --------------------------------------------------------------------------
95
+ Search
96
+ -------------------------------------------------------------------------- */
97
+
98
+ .cg-search__form,
99
+ .cg-search__results,
100
+ .cg-search__empty,
101
+ .cg-search__error,
102
+ .cg-form,
103
+ .cg-form__confirmation,
104
+ :is(.cg-main, .cg-sidebar-layout__content) > .cg-form__error,
105
+ .cg-comments {
106
+ padding-inline: var(--cg-inset);
107
+ }
108
+
109
+ .cg-search__form {
110
+ display: grid;
111
+ grid-template-columns: minmax(0, 32rem) auto;
112
+ justify-content: start;
113
+ align-items: end;
114
+ column-gap: var(--cg-s3);
115
+ margin-block: var(--cg-s4) var(--cg-s12);
116
+ }
117
+
118
+ .cg-search__form label {
119
+ grid-column: 1 / -1;
120
+ }
121
+
122
+ .cg-search__results {
123
+ margin-block: 0 calc(var(--cg-section) / 2);
124
+ padding-block: 0;
125
+ list-style: none;
126
+ }
127
+
128
+ .cg-search__results li {
129
+ max-inline-size: 48rem;
130
+ padding-block: var(--cg-s5);
131
+ border-block-start: var(--cg-rule) solid var(--cg-line);
132
+ font-size: var(--cg-text-lg);
133
+ font-weight: var(--cg-weight-semibold);
134
+ }
135
+
136
+ .cg-search__results li:last-child {
137
+ border-block-end: var(--cg-rule) solid var(--cg-line);
138
+ }
139
+
140
+ .cg-search__results a {
141
+ color: var(--cg-ink);
142
+ text-decoration-color: var(--cg-underline);
143
+ }
144
+
145
+ .cg-search__results a:hover {
146
+ color: var(--cg-accent);
147
+ text-decoration-color: currentColor;
148
+ }
149
+
150
+ /* A result's summary and date, and the count beside the page title: in the
151
+ text face and the theme's muted ink, which the host's own floor (a raw skin
152
+ colour) does not follow into the dark scheme. */
153
+ .cg-search__count {
154
+ color: var(--cg-ink-muted);
155
+ font-family: var(--cg-font-text);
156
+ font-size: var(--cg-text-sm);
157
+ }
158
+
159
+ .cg-search__excerpt {
160
+ max-inline-size: var(--cg-measure);
161
+ margin-block-start: var(--cg-s2);
162
+ color: var(--cg-ink-muted);
163
+ font-size: var(--cg-text-md);
164
+ font-weight: var(--cg-weight-regular);
165
+ line-height: var(--cg-leading-snug);
166
+ }
167
+
168
+ .cg-search__meta {
169
+ margin-block-start: var(--cg-s2);
170
+ color: var(--cg-ink-muted);
171
+ font-size: var(--cg-text-label);
172
+ font-weight: var(--cg-weight-regular);
173
+ }
174
+
175
+ .cg-search__empty,
176
+ .cg-search__error {
177
+ margin-block-end: calc(var(--cg-section) / 2);
178
+ color: var(--cg-ink-muted);
179
+ }
180
+
181
+ /* --------------------------------------------------------------------------
182
+ A public form
183
+ -------------------------------------------------------------------------- */
184
+
185
+ .cg-form {
186
+ margin-block: var(--cg-s4) calc(var(--cg-section) / 2);
187
+ }
188
+
189
+ .cg-form > *,
190
+ .cg-form__confirmation > * {
191
+ max-inline-size: 36rem;
192
+ }
193
+
194
+ .cg-form__field {
195
+ margin-block-end: var(--cg-s6);
196
+ }
197
+
198
+ .cg-form__help {
199
+ margin-block-start: var(--cg-s2);
200
+ color: var(--cg-ink-muted);
201
+ font-size: var(--cg-text-sm);
202
+ }
203
+
204
+ .cg-form__field-error {
205
+ margin-block-start: var(--cg-s2);
206
+ font-size: var(--cg-text-sm);
207
+ }
208
+
209
+ .cg-form__choice {
210
+ display: inline-flex;
211
+ align-items: center;
212
+ gap: var(--cg-s2);
213
+ margin-inline-end: var(--cg-s5);
214
+ font-weight: var(--cg-weight-regular);
215
+ }
216
+
217
+ .cg-form__confirmation {
218
+ margin-block: var(--cg-s4) calc(var(--cg-section) / 2);
219
+ font-size: var(--cg-text-lg);
220
+ }
221
+
222
+ :is(.cg-main, .cg-sidebar-layout__content) > .cg-form__error {
223
+ margin-block: var(--cg-s4);
224
+ }
225
+
226
+ /* --------------------------------------------------------------------------
227
+ Comments
228
+ -------------------------------------------------------------------------- */
229
+
230
+ .cg-comments {
231
+ padding-block: calc(var(--cg-section) / 2);
232
+ }
233
+
234
+ .cg-comments > * {
235
+ max-inline-size: 44rem;
236
+ }
237
+
238
+ .cg-comments > h2 {
239
+ max-inline-size: none;
240
+ margin-block-end: var(--cg-s8);
241
+ padding-block-start: var(--cg-s4);
242
+ border-block-start: var(--cg-rule) solid var(--cg-ink);
243
+ font-size: var(--cg-text-heading);
244
+ }
245
+
246
+ .cg-comments__list,
247
+ .cg-comment__replies {
248
+ margin: 0;
249
+ padding: 0;
250
+ list-style: none;
251
+ }
252
+
253
+ .cg-comment {
254
+ padding-block: var(--cg-s5);
255
+ border-block-start: var(--cg-rule) solid var(--cg-line);
256
+ }
257
+
258
+ .cg-comment__replies {
259
+ margin-block-start: var(--cg-s5);
260
+ padding-inline-start: var(--cg-s6);
261
+ border-inline-start: var(--cg-rule-strong) solid var(--cg-line);
262
+ }
263
+
264
+ .cg-comment__replies > .cg-comment:first-child {
265
+ padding-block-start: 0;
266
+ border-block-start: 0;
267
+ }
268
+
269
+ .cg-comment__meta {
270
+ display: flex;
271
+ flex-wrap: wrap;
272
+ align-items: baseline;
273
+ gap: var(--cg-s1) var(--cg-s4);
274
+ margin-block-end: var(--cg-s2);
275
+ color: var(--cg-ink-muted);
276
+ font-size: var(--cg-text-sm);
277
+ }
278
+
279
+ .cg-comment__author {
280
+ color: var(--cg-ink);
281
+ font-weight: var(--cg-weight-semibold);
282
+ }
283
+
284
+ .cg-comments__empty,
285
+ .cg-comments__closed {
286
+ color: var(--cg-ink-muted);
287
+ }
288
+
289
+ .cg-comment__form {
290
+ margin-block-start: var(--cg-s10);
291
+ }
292
+
293
+ .cg-comment__form p {
294
+ margin-block-end: var(--cg-s5);
295
+ }