@certrev/cert-block 0.5.5 → 1.0.1

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 (190) hide show
  1. package/CHANGELOG.md +189 -25
  2. package/LICENSE +21 -0
  3. package/README.md +415 -54
  4. package/dist/builder/cert-chrome-data.d.ts +26 -8
  5. package/dist/builder/cert-chrome-data.d.ts.map +1 -1
  6. package/dist/builder/cert-chrome-data.js +5 -5
  7. package/dist/builder/cert-chrome-data.js.map +1 -1
  8. package/dist/builder/cert-review-card.d.ts +35 -5
  9. package/dist/builder/cert-review-card.d.ts.map +1 -1
  10. package/dist/builder/cert-review-card.js +117 -34
  11. package/dist/builder/cert-review-card.js.map +1 -1
  12. package/dist/builder/index.d.ts +33 -16
  13. package/dist/builder/index.d.ts.map +1 -1
  14. package/dist/builder/index.js +33 -16
  15. package/dist/builder/index.js.map +1 -1
  16. package/dist/components/CertBadge.d.ts +2 -2
  17. package/dist/components/CertBadge.d.ts.map +1 -1
  18. package/dist/components/CertBadge.js +11 -5
  19. package/dist/components/CertBadge.js.map +1 -1
  20. package/dist/components/CertJsonLd.d.ts.map +1 -1
  21. package/dist/components/CertJsonLd.js.map +1 -1
  22. package/dist/components/CertRevBacklink.d.ts.map +1 -1
  23. package/dist/components/CertRevBacklink.js +3 -2
  24. package/dist/components/CertRevBacklink.js.map +1 -1
  25. package/dist/components/CertReview.d.ts +1 -1
  26. package/dist/components/ExpertBio.d.ts.map +1 -1
  27. package/dist/components/ExpertBio.js +12 -4
  28. package/dist/components/ExpertBio.js.map +1 -1
  29. package/dist/components/escape.d.ts +28 -1
  30. package/dist/components/escape.d.ts.map +1 -1
  31. package/dist/components/escape.js +37 -8
  32. package/dist/components/escape.js.map +1 -1
  33. package/dist/components/format.d.ts +51 -2
  34. package/dist/components/format.d.ts.map +1 -1
  35. package/dist/components/format.js +103 -6
  36. package/dist/components/format.js.map +1 -1
  37. package/dist/components/preview-block.d.ts +1 -1
  38. package/dist/components/preview-block.js +3 -3
  39. package/dist/components/preview-block.js.map +1 -1
  40. package/dist/components/rel.d.ts +24 -0
  41. package/dist/components/rel.d.ts.map +1 -0
  42. package/dist/components/rel.js +24 -0
  43. package/dist/components/rel.js.map +1 -0
  44. package/dist/components/render-cert-block.d.ts +50 -22
  45. package/dist/components/render-cert-block.d.ts.map +1 -1
  46. package/dist/components/render-cert-block.js +146 -80
  47. package/dist/components/render-cert-block.js.map +1 -1
  48. package/dist/components/render-def.d.ts +13 -14
  49. package/dist/components/render-def.d.ts.map +1 -1
  50. package/dist/components/render-def.js +14 -15
  51. package/dist/components/render-def.js.map +1 -1
  52. package/dist/index.d.ts +1 -0
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +4 -2
  55. package/dist/index.js.map +1 -1
  56. package/dist/jsonld/project.d.ts +46 -13
  57. package/dist/jsonld/project.d.ts.map +1 -1
  58. package/dist/jsonld/project.js +139 -56
  59. package/dist/jsonld/project.js.map +1 -1
  60. package/dist/modal/avatar-resize.d.ts +10 -10
  61. package/dist/modal/avatar-resize.js +14 -14
  62. package/dist/modal/avatar-resize.js.map +1 -1
  63. package/dist/modal/cert-modal-view.d.ts +27 -7
  64. package/dist/modal/cert-modal-view.d.ts.map +1 -1
  65. package/dist/modal/cert-modal-view.js +49 -25
  66. package/dist/modal/cert-modal-view.js.map +1 -1
  67. package/dist/modal/certrev-cert-modal.d.ts +5 -5
  68. package/dist/modal/certrev-cert-modal.js +9 -9
  69. package/dist/modal/certrev-cert-modal.js.map +1 -1
  70. package/dist/modal/certrev-cert-modal.styles.d.ts +6 -6
  71. package/dist/modal/certrev-cert-modal.styles.d.ts.map +1 -1
  72. package/dist/modal/certrev-cert-modal.styles.js +8 -8
  73. package/dist/modal/certrev-cert-modal.styles.js.map +1 -1
  74. package/dist/modal/certrev-cert.entry.d.ts +8 -6
  75. package/dist/modal/certrev-cert.entry.d.ts.map +1 -1
  76. package/dist/modal/certrev-cert.entry.js +9 -7
  77. package/dist/modal/certrev-cert.entry.js.map +1 -1
  78. package/dist/modal/certrev-cert.js +6 -6
  79. package/dist/modal/display-strings.d.ts +25 -5
  80. package/dist/modal/display-strings.d.ts.map +1 -1
  81. package/dist/modal/display-strings.js +27 -5
  82. package/dist/modal/display-strings.js.map +1 -1
  83. package/dist/modal/escape.d.ts +26 -3
  84. package/dist/modal/escape.d.ts.map +1 -1
  85. package/dist/modal/escape.js +32 -3
  86. package/dist/modal/escape.js.map +1 -1
  87. package/dist/modal/font-face.d.ts.map +1 -1
  88. package/dist/modal/font-face.js +8 -11
  89. package/dist/modal/font-face.js.map +1 -1
  90. package/dist/modal/ftc-disclosure.d.ts +2 -2
  91. package/dist/modal/ftc-disclosure.js +2 -2
  92. package/dist/modal/ftc-guard.d.ts +44 -9
  93. package/dist/modal/ftc-guard.d.ts.map +1 -1
  94. package/dist/modal/ftc-guard.js +50 -17
  95. package/dist/modal/ftc-guard.js.map +1 -1
  96. package/dist/modal/index.d.ts +1 -1
  97. package/dist/modal/index.js +1 -1
  98. package/dist/modal/interactions.d.ts +2 -2
  99. package/dist/modal/interactions.js +2 -2
  100. package/dist/modal/logo-paths.js +2 -2
  101. package/dist/modal/logo-paths.js.map +1 -1
  102. package/dist/modal/placement.d.ts +4 -3
  103. package/dist/modal/placement.d.ts.map +1 -1
  104. package/dist/modal/placement.js +7 -6
  105. package/dist/modal/placement.js.map +1 -1
  106. package/dist/modal/revalidate.d.ts +2 -3
  107. package/dist/modal/revalidate.d.ts.map +1 -1
  108. package/dist/modal/revalidate.js +2 -3
  109. package/dist/modal/revalidate.js.map +1 -1
  110. package/dist/modal/verify-client.d.ts +2 -2
  111. package/dist/modal/verify-client.js +2 -2
  112. package/dist/verify/cache.d.ts +21 -6
  113. package/dist/verify/cache.d.ts.map +1 -1
  114. package/dist/verify/cache.js +29 -8
  115. package/dist/verify/cache.js.map +1 -1
  116. package/dist/verify/fetch-with-deadline.d.ts +35 -0
  117. package/dist/verify/fetch-with-deadline.d.ts.map +1 -0
  118. package/dist/verify/fetch-with-deadline.js +55 -0
  119. package/dist/verify/fetch-with-deadline.js.map +1 -0
  120. package/dist/verify/get-verified-envelope.d.ts +23 -9
  121. package/dist/verify/get-verified-envelope.d.ts.map +1 -1
  122. package/dist/verify/get-verified-envelope.js +89 -40
  123. package/dist/verify/get-verified-envelope.js.map +1 -1
  124. package/dist/verify/resolve-kid.d.ts +3 -0
  125. package/dist/verify/resolve-kid.d.ts.map +1 -1
  126. package/dist/verify/resolve-kid.js +17 -8
  127. package/dist/verify/resolve-kid.js.map +1 -1
  128. package/dist/webcomponent/certrev-badge.d.ts.map +1 -1
  129. package/dist/webcomponent/certrev-badge.js +24 -2
  130. package/dist/webcomponent/certrev-badge.js.map +1 -1
  131. package/dist/webcomponent/render-badge-html.d.ts +1 -1
  132. package/dist/webcomponent/render-badge-html.d.ts.map +1 -1
  133. package/dist/webcomponent/render-badge-html.js +36 -17
  134. package/dist/webcomponent/render-badge-html.js.map +1 -1
  135. package/package.json +5 -2
  136. package/src/builder/cert-chrome-data.ts +26 -8
  137. package/src/builder/cert-review-card.tsx +149 -38
  138. package/src/builder/index.tsx +34 -17
  139. package/src/components/CertBadge.tsx +14 -9
  140. package/src/components/CertJsonLd.tsx +1 -1
  141. package/src/components/CertRevBacklink.tsx +10 -3
  142. package/src/components/CertReview.tsx +1 -1
  143. package/src/components/ExpertBio.tsx +15 -8
  144. package/src/components/escape.ts +37 -7
  145. package/src/components/format.ts +102 -6
  146. package/src/components/preview-block.ts +3 -3
  147. package/src/components/rel.ts +23 -0
  148. package/src/components/render-cert-block.ts +192 -109
  149. package/src/components/render-def.ts +14 -15
  150. package/src/index.ts +4 -2
  151. package/src/jsonld/project.ts +155 -59
  152. package/src/modal/avatar-resize.ts +14 -14
  153. package/src/modal/cert-modal-view.ts +52 -27
  154. package/src/modal/certrev-cert-modal.styles.ts +8 -8
  155. package/src/modal/certrev-cert-modal.ts +9 -9
  156. package/src/modal/certrev-cert.entry.ts +9 -7
  157. package/src/modal/display-strings.ts +26 -5
  158. package/src/modal/escape.ts +32 -4
  159. package/src/modal/font-face.ts +8 -11
  160. package/src/modal/ftc-disclosure.ts +2 -2
  161. package/src/modal/ftc-guard.ts +73 -18
  162. package/src/modal/index.ts +1 -1
  163. package/src/modal/interactions.ts +2 -2
  164. package/src/modal/logo-paths.ts +2 -2
  165. package/src/modal/placement.ts +7 -6
  166. package/src/modal/revalidate.ts +2 -3
  167. package/src/modal/verify-client.ts +2 -2
  168. package/src/verify/cache.ts +34 -8
  169. package/src/verify/fetch-with-deadline.ts +60 -0
  170. package/src/verify/get-verified-envelope.ts +131 -48
  171. package/src/verify/resolve-kid.ts +22 -6
  172. package/src/webcomponent/certrev-badge.ts +24 -2
  173. package/src/webcomponent/render-badge-html.ts +66 -19
  174. package/src/__tests__/__snapshots__/render-cert-block.test.ts.snap +0 -17
  175. package/src/__tests__/components.test.tsx +0 -206
  176. package/src/__tests__/preview-block.test.ts +0 -84
  177. package/src/__tests__/project.test.ts +0 -128
  178. package/src/__tests__/readme-version.test.ts +0 -51
  179. package/src/__tests__/render-cert-block.test.ts +0 -657
  180. package/src/__tests__/render-def.test.tsx +0 -295
  181. package/src/__tests__/verify.test.ts +0 -239
  182. package/src/__tests__/webcomponent.test.tsx +0 -116
  183. package/src/builder/__tests__/builder.test.tsx +0 -158
  184. package/src/modal/cert-modal-view.test.ts +0 -175
  185. package/src/modal/certrev-cert-modal.test.ts +0 -125
  186. package/src/modal/ftc-guard.test.ts +0 -153
  187. package/src/modal/interactions.test.ts +0 -250
  188. package/src/modal/placement.test.ts +0 -398
  189. package/src/modal/revalidate.test.ts +0 -111
  190. package/src/modal/verify-client.test.ts +0 -164
@@ -4,10 +4,20 @@
4
4
  * ─────────────────────────────────────────────────────────────────────────────
5
5
  *
6
6
  * Paints the owner-approved cert render (decision 2026-07-17) in one of three
7
- * placement modes — `banner`, `sidebar`, `floating` — from RESOLVED theme tokens +
8
- * the cert facts. It returns a self-contained HTML string that renders with ZERO
9
- * JavaScript (the CertREV modal + the reviewer-bio accordion are progressive
10
- * enhancement, wired by the shared embed script via the `data-certrev-*` hooks).
7
+ * placement modes — `sidebar` (the DEFAULT), `banner`, `floating` — plus the engine's
8
+ * free-composition `custom` face, from RESOLVED theme tokens + the cert facts. It
9
+ * returns a self-contained HTML string that renders with ZERO JavaScript (the CertREV
10
+ * modal + the reviewer-bio accordion are progressive enhancement, wired by the shared
11
+ * embed script via the `data-certrev-*` hooks).
12
+ *
13
+ * THE DEFAULT PLACEMENT IS `sidebar`, AND IT IS NAMED IN EXACTLY ONE PLACE — the
14
+ * `case 'sidebar':` that falls into `default:` at the bottom of this file. Nothing
15
+ * else in the package (this renderer, the Builder card, the preview) may name a
16
+ * placement fallback of its own: the switch previously had no `default:` at all, so
17
+ * an untyped `mode` off CMS JSON returned `undefined` from a `: string` function and
18
+ * landed in `dangerouslySetInnerHTML` as an empty div — a 200 with the card silently
19
+ * gone. Declared default and runtime fallback are now physically the same line and
20
+ * cannot drift.
11
21
  *
12
22
  * WHY A STRING (not a React component): the block is emitted into storefront HTML
13
23
  * across every render surface (Shopify Liquid, WordPress PHP, the JS engine, and
@@ -54,7 +64,8 @@
54
64
  * grandfathers the 0.3.0 full-facts render byte-for-byte.
55
65
  */
56
66
  import { escapeAttribute, escapeHtml, safeHttpUrl } from './escape.js';
57
- import { formatDate } from './format.js';
67
+ import { dedupeCredential, formatDate } from './format.js';
68
+ import { CERTREV_LINK_REL } from './rel.js';
58
69
  import { CERT_SCOPE_LINE, CERT_STRINGS_VERSION, COMPENSATED_EXPERT_CUE, CREDENTIAL_VERIFIED_ATTRIBUTION, RENDER_BLOCK_FONT_STACKS, resolveBlockTheme, } from './render-def.js';
59
70
  // ─────────────────────────────────────────────────────────────────────────────
60
71
  // The CertREV logo — the fixed 4-chevron mark (owner decision 2026-07-17: the logo
@@ -107,15 +118,6 @@ function firstNameOf(name) {
107
118
  const clean = stripHonorific(name);
108
119
  return clean.split(/\s+/)[0] || clean;
109
120
  }
110
- /**
111
- * A LOCKED display string: use the caller's value ONLY when it is a non-blank
112
- * string, else the byte-verbatim constant. The three compliance strings
113
- * (compensation cue, scope line, credential attribution) are undroppable — an
114
- * omitted OR empty/whitespace override must never blank the disclosure.
115
- */
116
- function locked(supplied, constant) {
117
- return supplied?.trim() ? supplied : constant;
118
- }
119
121
  /**
120
122
  * Absent face ⇒ constant-true (the grandfather path: every conditional collapses to
121
123
  * today's markup, guaranteeing byte-identity with 0.3.0). Present ⇒ Set membership.
@@ -126,9 +128,23 @@ function placedTester(face) {
126
128
  const set = new Set(face.placedFields);
127
129
  return (id) => set.has(id);
128
130
  }
131
+ /**
132
+ * Is there actually a bio to expand? The banner's accordion affordance — role=button,
133
+ * tabindex, aria-expanded, the caret, the pointer cursor — is gated on THIS, not on the
134
+ * reviewer row being non-empty. Gating on the row announced "Read more about Dr. X,
135
+ * button, collapsed" over nothing whenever the reviewer had no bio (WCAG 2.1 4.1.2 name/
136
+ * role/value, and 2.1.1 keyboard: a focus stop that does nothing).
137
+ */
138
+ function hasExpandableBio(facts, placed) {
139
+ return placed('bio') && !!facts.bio;
140
+ }
141
+ /** Whether the material-connection cue renders: placed by the engine AND not the pro-bono `null`. */
142
+ function showsCompensationCue(facts, placed) {
143
+ return placed('compensationCue') && facts.compensationCue !== null;
144
+ }
129
145
  /**
130
146
  * The memo/custom action-link stamp style — the JetBrains-mono uppercase lockup that
131
- * matches the badge footer (Owen 2026-07-17); navy so it still reads as an action.
147
+ * matches the badge footer; navy so it still reads as an action.
132
148
  */
133
149
  const STAMP_LINK_STYLE = 'font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--navy);text-decoration:none;cursor:pointer;';
134
150
  /** A round avatar tile with the given initials. */
@@ -137,20 +153,27 @@ function avatar(text, size, fontSize) {
137
153
  `display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-weight:700;font-size:${fontSize}px;flex-shrink:0;">` +
138
154
  `${escapeHtml(text)}</div>`);
139
155
  }
140
- /** "Jane Doe, MD" (or just the name when there is no credential) — escaped. */
156
+ /**
157
+ * "Jane Doe, MD" (or just the name when there is no credential) — escaped, and never the
158
+ * same credential twice. A display name that arrives already carrying its own post-nominal
159
+ * ("Dr. Erik Schraga, MD") used to have the credential appended regardless, which put
160
+ * "Dr. Erik Schraga, MD, MD, EM" on a live customer page — see `dedupeCredential` in
161
+ * format.ts for the rule, and for why the stored data is still the real repair.
162
+ */
141
163
  function nameWithCredential(name, credential) {
142
164
  const n = escapeHtml(name);
143
- return credential ? `${n}, ${escapeHtml(credential)}` : n;
165
+ const tail = dedupeCredential(name, credential);
166
+ return tail ? `${n}, ${escapeHtml(tail)}` : n;
144
167
  }
145
168
  /** The reviewer profile link (carries the modal `expert` hook + a real href fallback). */
146
169
  function profileLink(url, inner, style) {
147
170
  const href = safeHttpUrl(url) ?? '#';
148
- return `<a href="${escapeAttribute(href)}" data-certrev-modal-open="expert" rel="noopener" style="${style}">${inner}</a>`;
171
+ return `<a href="${escapeAttribute(href)}" data-certrev-modal-open="expert" rel="${CERTREV_LINK_REL}" style="${style}">${inner}</a>`;
149
172
  }
150
173
  /** The certificate link (carries the modal hook + a real href fallback). */
151
174
  function certificateLink(url, inner, style) {
152
175
  const href = safeHttpUrl(url) ?? '#';
153
- return `<a href="${escapeAttribute(href)}" data-certrev-modal-open rel="noopener" style="${style}">${inner}</a>`;
176
+ return `<a href="${escapeAttribute(href)}" data-certrev-modal-open rel="${CERTREV_LINK_REL}" style="${style}">${inner}</a>`;
154
177
  }
155
178
  /**
156
179
  * The GROUPED dated credential verification (LOCKED requirement): the credentialed
@@ -163,14 +186,21 @@ function verificationBlock(facts, withAccordion, placed) {
163
186
  // Nothing placed ⇒ empty (the caller drops the wrapping toggle div).
164
187
  if (!showName)
165
188
  return '';
166
- const credentialLine = locked(facts.credentialLine, CREDENTIAL_VERIFIED_ATTRIBUTION);
167
- const verified = formatDate(facts.credentialVerifiedAt) ?? escapeHtml(facts.credentialVerifiedAt);
168
- const showBio = withAccordion && placed('bio') && !!facts.bio;
189
+ // An UNPARSEABLE or blank verification date is dropped, not echoed. The old
190
+ // `formatDate(x) ?? escapeHtml(x)` asserted "Credential verified by CertREV on
191
+ // not-a-date", and left "on " dangling when blank — a disclosure that names a date
192
+ // it cannot stand behind is worse than one that names none. The attribution itself
193
+ // survives: it is true independently of when the credential was checked.
194
+ const verified = formatDate(facts.credentialVerifiedAt);
195
+ const showBio = withAccordion && hasExpandableBio(facts, placed);
169
196
  const caret = showBio ? CARET : '';
170
197
  const nameSize = withAccordion ? '15px' : '16px';
171
198
  const muteSize = withAccordion ? '13px' : '12.5px';
199
+ // `hidden` alone, NOT an inline `display:none` — the accordion is revealed by an author
200
+ // rule on the toggled `.open` class (see modal/interactions.ts), and an inline declaration
201
+ // is the one thing such a rule can never beat.
172
202
  const bio = showBio
173
- ? `<div class="certrev-cert__bio" hidden style="display:none;margin-top:8px;font-size:12.5px;line-height:1.5;color:var(--cr-ink-soft);">${escapeHtml(facts.bio ?? '')}</div>`
203
+ ? `<div class="acc-bio" hidden style="margin-top:8px;font-size:12.5px;line-height:1.5;color:var(--cr-ink-soft);">${escapeHtml(facts.bio ?? '')}</div>`
174
204
  : '';
175
205
  // The credential suffix + the GROUPED attribution/date lines are all-or-nothing on
176
206
  // `bylineCredentialed`; a plain byline shows the name only.
@@ -178,8 +208,8 @@ function verificationBlock(facts, withAccordion, placed) {
178
208
  ? nameWithCredential(facts.reviewerName, facts.credential)
179
209
  : escapeHtml(facts.reviewerName);
180
210
  const attribution = showCredentialed
181
- ? `<div style="font-size:${muteSize};color:var(--navy-55);line-height:1.45;margin-top:3px;">${escapeHtml(credentialLine)}</div>` +
182
- `<div style="font-size:${muteSize};color:var(--navy-55);line-height:1.35;">on ${verified}</div>`
211
+ ? `<div style="font-size:${muteSize};color:var(--navy-55);line-height:1.45;margin-top:3px;">${escapeHtml(CREDENTIAL_VERIFIED_ATTRIBUTION)}</div>` +
212
+ (verified ? `<div style="font-size:${muteSize};color:var(--navy-55);line-height:1.35;">on ${verified}</div>` : '')
183
213
  : '';
184
214
  return (`<div>` +
185
215
  `<div style="font-size:${nameSize};font-weight:700;color:var(--cr-ink);">${nameInner}${caret}</div>` +
@@ -199,7 +229,7 @@ function rootStyle(theme) {
199
229
  `--ba:${theme.accentColor}`,
200
230
  `--ba-fg:${theme.accentFg}`,
201
231
  `--br:${theme.cornerRadius}`,
202
- // The body font is a host-overridable HOOK (POR-10742): `--cr-bf` resolves a host-page
232
+ // The body font is a host-overridable HOOK: `--cr-bf` resolves a host-page
203
233
  // `--bf` (set on any ancestor) with the fontSlot stack as the FALLBACK — so a storefront
204
234
  // can theme the card font via plain CSS, no `!important` (the old inline `--bf:<stack>`
205
235
  // declaration shadowed a host `--bf`). Unset ⇒ resolves to the stack ⇒ byte-identical render.
@@ -242,18 +272,17 @@ function root(mode, theme, inner, face) {
242
272
  `data-certrev-strings-version="${CERT_STRINGS_VERSION}"${rungAttr} style="${rootStyle(theme)}">${inner}</div>`);
243
273
  }
244
274
  // ─────────────────────────────────────────────────────────────────────────────
245
- // Mode 1 — BANNER: a certification header card + a separate expert-memo card
275
+ // Face — BANNER: a certification header card + a separate expert-memo card
246
276
  // ─────────────────────────────────────────────────────────────────────────────
247
277
  function bannerHeaderCard(facts, placed) {
248
- const compensationCue = locked(facts.compensationCue, COMPENSATED_EXPERT_CUE);
249
- const certified = formatDate(facts.certifiedAt) ?? escapeHtml(facts.certifiedAt);
278
+ const certified = formatDate(facts.certifiedAt);
250
279
  const subtitle = placed('authorTitle') && facts.authorTitle
251
280
  ? `<div style="font-size:13px;color:var(--cr-ink-sub);">${escapeHtml(facts.authorTitle)}</div>`
252
281
  : '';
253
282
  // A subtle right-aligned arrow opens the certificate: the whole navy bar is the mouse
254
283
  // target (data-certrev-modal-open); this focusable <a> is the keyboard / SR / no-JS control.
255
284
  const certHref = safeHttpUrl(facts.certificateUrl) ?? '#';
256
- const headerArrow = `<a href="${escapeAttribute(certHref)}" data-certrev-modal-open rel="noopener" aria-label="View certificate" ` +
285
+ const headerArrow = `<a href="${escapeAttribute(certHref)}" data-certrev-modal-open rel="${CERTREV_LINK_REL}" aria-label="View certificate" ` +
257
286
  `style="display:inline-flex;align-items:center;flex-shrink:0;color:inherit;opacity:.72;text-decoration:none;">` +
258
287
  `<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></a>`;
259
288
  // navy header — the trust bar stays fixed navy (accent theming is Phase B); mark + eyebrow + cert arrow
@@ -277,13 +306,32 @@ function bannerHeaderCard(facts, placed) {
277
306
  // reviewed by — emphasized label (navy, 700): the certification's authority voice
278
307
  const reviewerAvatar = placed('reviewerPhoto') ? avatar(initials(facts.reviewerName), 42, 12) : '';
279
308
  const reviewerBlock = verificationBlock(facts, true, placed);
280
- const revToggle = reviewerBlock
281
- ? `<div class="certrev-cert__rev" role="button" tabindex="0" aria-expanded="false" data-certrev-bio-toggle aria-label="Read more about ${escapeAttribute(facts.reviewerName)}" style="display:flex;align-items:flex-start;gap:12px;cursor:pointer;border-radius:8px;transition:opacity .15s;">` +
282
- `${reviewerAvatar}${reviewerBlock}` +
309
+ // The interactive affordance is gated on there being a bio to expand — NOT on the
310
+ // reviewer row existing. `data-certrev-acc` is the hook modal/interactions.ts actually
311
+ // binds (click + Enter/Space); the old `data-certrev-bio-toggle` had zero consumers
312
+ // repo-wide, so the row was focusable, announced as a collapsed button, and inert.
313
+ const revRow = reviewerBlock
314
+ ? hasExpandableBio(facts, placed)
315
+ ? `<div class="certrev-cert__rev" data-certrev-acc role="button" tabindex="0" aria-expanded="false" aria-label="Read more about ${escapeAttribute(facts.reviewerName)}" style="display:flex;align-items:flex-start;gap:12px;cursor:pointer;border-radius:8px;transition:opacity .15s;">` +
316
+ `${reviewerAvatar}${reviewerBlock}` +
317
+ `</div>`
318
+ : `<div class="certrev-cert__rev" style="display:flex;align-items:flex-start;gap:12px;">` +
319
+ `${reviewerAvatar}${reviewerBlock}` +
320
+ `</div>`
321
+ : '';
322
+ // The mono footer row: "Certified <date>" is card chrome, but an unusable `certifiedAt`
323
+ // used to emit the bare word "Certified" followed by nothing — so it is gated on the date
324
+ // PARSING, the same family as the memo/verification-date gates. The cue is engine-placed
325
+ // AND dropped for the pro-bono (`null`) reviewer. Neither ⇒ the hairline + row go too.
326
+ const certifiedSpan = certified ? `<span>Certified <span style="margin-left:8px;">${certified}</span></span>` : '';
327
+ const cueSpan = showsCompensationCue(facts, placed) ? `<span>${escapeHtml(COMPENSATED_EXPERT_CUE)}</span>` : '';
328
+ const footer = certifiedSpan || cueSpan
329
+ ? `<div style="height:1px;background:var(--navy-10);margin:16px 0 14px;"></div>` +
330
+ `<div style="display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--navy-55);">` +
331
+ certifiedSpan +
332
+ cueSpan +
283
333
  `</div>`
284
334
  : '';
285
- // "Certified <date>" is card chrome (renders with the card); the cue is engine-placed
286
- const cueSpan = placed('compensationCue') ? `<span>${escapeHtml(compensationCue)}</span>` : '';
287
335
  return (`<div style="border:1px solid var(--navy-10);border-radius:calc(var(--br,14px) * 0.7);overflow:hidden;font-family:var(--cr-bf);">` +
288
336
  header +
289
337
  `<div style="padding:22px 24px 18px;">` +
@@ -291,40 +339,40 @@ function bannerHeaderCard(facts, placed) {
291
339
  authorColumn +
292
340
  `<div>` +
293
341
  `<div style="font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--navy);margin-bottom:11px;">Reviewed by</div>` +
294
- revToggle +
342
+ revRow +
295
343
  `</div>` +
296
344
  `</div>` +
297
345
  // hairline + mono footer — "Certified <date>" + "Compensated expert", UNIFORM navy-55
298
- `<div style="height:1px;background:var(--navy-10);margin:16px 0 14px;"></div>` +
299
- `<div style="display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--navy-55);">` +
300
- `<span>Certified <span style="margin-left:8px;">${certified}</span></span>` +
301
- cueSpan +
302
- `</div>` +
346
+ footer +
303
347
  `</div>` +
304
348
  `</div>`);
305
349
  }
306
350
  function bannerMemoCard(facts, placed) {
307
- const scopeLine = locked(facts.scopeLine, CERT_SCOPE_LINE);
308
- const credTail = placed('bylineCredentialed') && facts.credential
309
- ? `<span style="color:var(--cr-ink-sub);">, ${escapeHtml(facts.credential)}</span>`
310
- : '';
351
+ // The memo card composes `<name><, credential>` as two spans rather than through
352
+ // `nameWithCredential`, so it needs the SAME duplicate guard — the doubled "MD, MD" was
353
+ // visible on this card too. Gated on what SURVIVES the dedupe, not on the raw field: a
354
+ // credential the name already carries must drop the tail span whole, comma and all.
355
+ const credential = placed('bylineCredentialed') ? dedupeCredential(facts.reviewerName, facts.credential) : '';
356
+ const credTail = credential ? `<span style="color:var(--cr-ink-sub);">, ${escapeHtml(credential)}</span>` : '';
311
357
  const first = firstNameOf(facts.reviewerName);
312
358
  // The eyebrow + reviewer name row + memo quote are grouped under `memo`; the avatar
313
- // inside it is gated on `reviewerPhoto`.
359
+ // inside it is gated on `reviewerPhoto`. Gated on the memo's CONTENT as well as its
360
+ // placement (the pattern `bio` already follows): placement alone painted an "Expert
361
+ // memo" heading over an empty `<p>` for a contract-legal empty memo.
314
362
  const memoAvatar = placed('reviewerPhoto') ? avatar(initials(facts.reviewerName), 46, 13) : '';
315
- const memoSection = placed('memo')
363
+ const memoSection = placed('memo') && facts.memo
316
364
  ? `<div style="font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--navy-55);margin-bottom:14px;">Expert memo</div>` +
317
365
  `<div style="display:flex;gap:15px;">${memoAvatar}` +
318
366
  `<div style="flex:1;min-width:0;">` +
319
367
  `<div style="font-size:16px;line-height:1.2;color:var(--cr-ink);"><span style="font-weight:700;">${escapeHtml(facts.reviewerName)}</span>${credTail}</div>` +
320
- // Readable, UPRIGHT DM Sans quote (Owen 2026-07-17: the display-serif italic hurt legibility);
368
+ // Readable, UPRIGHT DM Sans quote (the display-serif italic hurt legibility);
321
369
  // pre-line preserves the reviewer's paragraph breaks. No left accent bar (matches the guide).
322
370
  `<p style="margin:11px 0 14px;font-size:15.5px;line-height:1.6;color:var(--cr-ink-soft);white-space:pre-line;">${escapeHtml(facts.memo)}</p>` +
323
371
  `</div>` +
324
372
  `</div>`
325
373
  : '';
326
374
  // The memo footer's profile/certificate actions read as the JetBrains-mono uppercase stamp
327
- // that matches the badge footer lockup (Owen 2026-07-17) — navy, so they still read as actions.
375
+ // that matches the badge footer lockup — navy, so they still read as actions.
328
376
  const profile = placed('profileLink')
329
377
  ? profileLink(facts.profileUrl, `${escapeHtml(first)}'s Profile`, STAMP_LINK_STYLE)
330
378
  : '';
@@ -332,7 +380,7 @@ function bannerMemoCard(facts, placed) {
332
380
  ? certificateLink(facts.certificateUrl, 'Certificate', STAMP_LINK_STYLE)
333
381
  : '';
334
382
  const scope = placed('scopeLine')
335
- ? `<div style="font-size:13px;color:var(--navy-55);margin-top:8px;line-height:1.5;">${escapeHtml(scopeLine)}</div>`
383
+ ? `<div style="font-size:13px;color:var(--navy-55);margin-top:8px;line-height:1.5;">${escapeHtml(CERT_SCOPE_LINE)}</div>`
336
384
  : '';
337
385
  return (`<div style="border:1px solid var(--navy-10);border-radius:calc(var(--br,14px) * 0.7);padding:24px;font-family:var(--cr-bf);">` +
338
386
  memoSection +
@@ -352,11 +400,9 @@ function bannerMemoCard(facts, placed) {
352
400
  `</div>`);
353
401
  }
354
402
  // ─────────────────────────────────────────────────────────────────────────────
355
- // Mode 2 — SIDEBAR: a reviewer card pinned beside the article body
403
+ // Face — SIDEBAR (the DEFAULT): a reviewer card pinned beside the article body
356
404
  // ─────────────────────────────────────────────────────────────────────────────
357
405
  function sidebarCard(facts, placed) {
358
- const compensationCue = locked(facts.compensationCue, COMPENSATED_EXPERT_CUE);
359
- const scopeLine = locked(facts.scopeLine, CERT_SCOPE_LINE);
360
406
  const header = placed('label')
361
407
  ? `<div style="display:flex;align-items:center;justify-content:center;gap:10px;padding:12px;background:var(--certrev-bar-bg,#0a1b3f);color:var(--certrev-bar-fg,#fff);font-family:var(--font-mono);font-size:12px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;">${logo(18)} Expert reviewed</div>`
362
408
  : '';
@@ -364,14 +410,16 @@ function sidebarCard(facts, placed) {
364
410
  const bioPara = placed('bio') && facts.bio
365
411
  ? `<p style="font-size:14px;line-height:1.55;color:var(--cr-ink-soft);margin:16px 0 0;">${escapeHtml(facts.bio)}</p>`
366
412
  : '';
367
- const blockquote = placed('memo')
413
+ // Gated on CONTENT as well as placement (like `bioPara` above) — placement alone rendered
414
+ // an empty accent-bordered blockquote for a contract-legal empty memo.
415
+ const blockquote = placed('memo') && facts.memo
368
416
  ? `<blockquote style="margin:16px 0 0;padding-left:16px;border-left:3px solid var(--ba,#0a1b3f);font-size:15px;line-height:1.5;color:var(--cr-ink-soft);white-space:pre-line;">${escapeHtml(facts.memo)}</blockquote>`
369
417
  : '';
370
418
  // Disclosure row: cue + ` · ` + scope; the separator only when BOTH land, the row only when either does.
371
- const cueEl = placed('compensationCue')
372
- ? `<span style="font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;">${escapeHtml(compensationCue)}</span>`
419
+ const cueEl = showsCompensationCue(facts, placed)
420
+ ? `<span style="font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;">${escapeHtml(COMPENSATED_EXPERT_CUE)}</span>`
373
421
  : '';
374
- const scopeEl = placed('scopeLine') ? escapeHtml(scopeLine) : '';
422
+ const scopeEl = placed('scopeLine') ? escapeHtml(CERT_SCOPE_LINE) : '';
375
423
  const disclosure = cueEl || scopeEl
376
424
  ? `<div style="font-size:12.5px;line-height:1.5;color:var(--navy-55);margin-top:16px;">${cueEl}${cueEl && scopeEl ? ' · ' : ''}${scopeEl}</div>`
377
425
  : '';
@@ -403,7 +451,7 @@ function sidebarCard(facts, placed) {
403
451
  `</div>`);
404
452
  }
405
453
  // ─────────────────────────────────────────────────────────────────────────────
406
- // Mode 3 — FLOATING: a compact pinned pill (a modal pointer, NOT a claim face)
454
+ // Face — FLOATING: a compact pinned pill (a modal pointer, NOT a claim face)
407
455
  // ─────────────────────────────────────────────────────────────────────────────
408
456
  function floatingPill(facts, placed) {
409
457
  const label = placed('label')
@@ -430,10 +478,17 @@ function floatingPill(facts, placed) {
430
478
  `</div>`);
431
479
  }
432
480
  // ─────────────────────────────────────────────────────────────────────────────
433
- // Mode 4 — CUSTOM: the engine's free-composition face — ONE vertical stack of
434
- // EXACTLY the placed fields, in canonical order, from the SAME escaped / locked() /
435
- // data-certrev-* building blocks the locked layouts use (so the ftc-guard + crawl
436
- // monitor see identical markers). Never consults `rung`.
481
+ // Face — CUSTOM: the engine's free-composition face — ONE vertical stack of
482
+ // EXACTLY the placed fields, in canonical order, from the SAME escaped, constant-fed,
483
+ // `data-certrev-*`-hooked building blocks the locked layouts use, so the custom face
484
+ // carries the same markers as banner/sidebar and the crawl monitor reads them alike.
485
+ //
486
+ // NOT the ftc-guard, though — and the comment here claimed otherwise for as long as the
487
+ // face has existed. `modal/ftc-guard.ts` looks for `data-ftc-line` / `data-ftc-disclosure`
488
+ // hooks, which `CertBadge.tsx` and `render-badge-html.ts` emit and this renderer emits at
489
+ // NONE of its three scope-line sites. The kill switch therefore cannot see anything
490
+ // renderCertBlock produces, on ANY face. Whether it should is a live design question
491
+ // (which surfaces the switch covers) — not something to settle by quietly adding hooks.
437
492
  // ─────────────────────────────────────────────────────────────────────────────
438
493
  function renderCustomFace(facts, placed) {
439
494
  const parts = [];
@@ -462,15 +517,15 @@ function renderCustomFace(facts, placed) {
462
517
  if (placed('bio') && facts.bio) {
463
518
  parts.push(`<p style="font-size:14px;line-height:1.55;color:var(--cr-ink-soft);margin:16px 0 0;">${escapeHtml(facts.bio)}</p>`);
464
519
  }
465
- // 5. memo (sidebar's blockquote)
466
- if (placed('memo')) {
520
+ // 5. memo (sidebar's blockquote) — placement AND content, like `bio` directly above
521
+ if (placed('memo') && facts.memo) {
467
522
  parts.push(`<blockquote style="margin:16px 0 0;padding-left:16px;border-left:3px solid var(--ba,#0a1b3f);font-size:15px;line-height:1.5;color:var(--cr-ink-soft);white-space:pre-line;">${escapeHtml(facts.memo)}</blockquote>`);
468
523
  }
469
524
  // 6. disclosures (sidebar's cue · scope row; separator only when BOTH land)
470
- const cueEl = placed('compensationCue')
471
- ? `<span style="font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;">${escapeHtml(locked(facts.compensationCue, COMPENSATED_EXPERT_CUE))}</span>`
525
+ const cueEl = showsCompensationCue(facts, placed)
526
+ ? `<span style="font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;">${escapeHtml(COMPENSATED_EXPERT_CUE)}</span>`
472
527
  : '';
473
- const scopeEl = placed('scopeLine') ? escapeHtml(locked(facts.scopeLine, CERT_SCOPE_LINE)) : '';
528
+ const scopeEl = placed('scopeLine') ? escapeHtml(CERT_SCOPE_LINE) : '';
474
529
  if (cueEl || scopeEl) {
475
530
  parts.push(`<div style="font-size:12.5px;line-height:1.5;color:var(--navy-55);margin-top:16px;">${cueEl}${cueEl && scopeEl ? ' · ' : ''}${scopeEl}</div>`);
476
531
  }
@@ -493,38 +548,49 @@ function renderCustomFace(facts, placed) {
493
548
  // Entry point
494
549
  // ─────────────────────────────────────────────────────────────────────────────
495
550
  /**
496
- * Render the LOCKED CertREV cert design as an SSR-safe HTML string for one of the
497
- * three placement modes. Returns a self-contained `<div class="certrev-cert …">`
498
- * that needs no JS to render (the modal + bio accordion progressively enhance).
551
+ * Render the LOCKED CertREV cert design as an SSR-safe HTML string for one placement
552
+ * face. Returns a self-contained `<div class="certrev-cert …">` that needs no JS to
553
+ * render (the modal + bio accordion progressively enhance).
554
+ *
555
+ * `mode` absent or unrecognised ⇒ `sidebar`. Each arm passes its own LITERAL to
556
+ * `root()` — never `input.mode` — so an untyped `mode` can reach neither the root class
557
+ * name nor the `data-certrev-mode` attribute.
499
558
  */
500
559
  export function renderCertBlock(input) {
501
560
  const theme = resolveBlockTheme(input.theme);
502
- const { facts, mode, face } = input;
561
+ const { facts, face } = input;
503
562
  const placed = placedTester(face);
504
- switch (mode) {
563
+ switch (input.mode) {
505
564
  case 'banner': {
506
565
  // Suppress the memo card entirely when the engine placed none of its fields
507
566
  // (avoids an empty bordered shell). Grandfather: all placed ⇒ card renders.
508
567
  const memoCard = placed('memo') || placed('profileLink') || placed('certificateLink') || placed('scopeLine')
509
568
  ? bannerMemoCard(facts, placed)
510
569
  : '';
511
- // First-class memo split (POR-10741): default 'full' is byte-identical to the prior
570
+ // First-class memo split: default 'full' is byte-identical to the prior
512
571
  // header+memo render; 'header'/'memo' emit only that card so the exporter can place
513
- // the memo as its own block (retires the CertReviewCard string-split shim).
514
- const part = input.part ?? 'full';
572
+ // the memo as its own block (retires the CertReviewCard string-split shim). An
573
+ // unknown `part` falls back to 'full' by this written rule, not by a catch-all arm.
574
+ const part = input.part === 'header' || input.part === 'memo' ? input.part : 'full';
515
575
  const inner = part === 'header'
516
576
  ? bannerHeaderCard(facts, placed)
517
577
  : part === 'memo'
518
578
  ? memoCard
519
579
  : bannerHeaderCard(facts, placed) + memoCard;
520
- return root(mode, theme, inner, face);
580
+ return root('banner', theme, inner, face);
521
581
  }
522
- case 'sidebar':
523
- return root(mode, theme, sidebarCard(facts, placed), face);
524
582
  case 'floating':
525
- return root(mode, theme, floatingPill(facts, placed), face);
583
+ return root('floating', theme, floatingPill(facts, placed), face);
526
584
  case 'custom':
527
- return root(mode, theme, renderCustomFace(facts, placed), face);
585
+ return root('custom', theme, renderCustomFace(facts, placed), face);
586
+ // THE default placement, named here and nowhere else: the declared default and the
587
+ // runtime fallback are the same line, so they cannot drift apart. Naming `sidebar` as a
588
+ // real case also keeps the exhaustiveness read over CertBlockLayout honest — a reader
589
+ // sees all four faces handled — while the shared `default:` catches untyped input.
590
+ // biome-ignore lint/complexity/noUselessSwitchCase: the redundancy IS the mechanism (see above)
591
+ case 'sidebar':
592
+ default:
593
+ return root('sidebar', theme, sidebarCard(facts, placed), face);
528
594
  }
529
595
  }
530
596
  //# sourceMappingURL=render-cert-block.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render-cert-block.js","sourceRoot":"","sources":["../../src/components/render-cert-block.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-cert-block.js","sourceRoot":"","sources":["../../src/components/render-cert-block.ts"],"names":[],"mappings":"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"}
@@ -4,19 +4,18 @@
4
4
  * layer) + the two always-on COMPLIANCE strings.
5
5
  * ─────────────────────────────────────────────────────────────────────────────
6
6
  *
7
- * WS6 of the unified cert-render / design-guide build
8
- * (~/.claude-account-m/plans/smooth-meandering-graham.md). This is the Builder /
9
- * headless projection twin's half of the "law-as-code" contract: cert-block is one
10
- * of the four render surfaces (Shopify Liquid, WordPress PHP, JS engine, and this)
11
- * that must paint the SAME compliant, optionally-themed badge from the SAME facts.
7
+ * This is the Builder / headless projection twin's half of the "law-as-code"
8
+ * contract: cert-block is one of the four render surfaces (Shopify Liquid,
9
+ * WordPress PHP, JS engine, and this) that must paint the SAME compliant,
10
+ * optionally-themed badge from the SAME facts.
12
11
  *
13
12
  * cert-block is a self-contained npm package — it does NOT import the portal's
14
- * `@/lib/design-guide` enforcement core. Instead it mirrors, at the RENDER edge,
15
- * the small subset that shape the projection carries:
13
+ * design-guide enforcement core. Instead it mirrors, at the RENDER edge, the
14
+ * small subset that shape the projection carries:
16
15
  *
17
16
  * 1. The four allowlisted THEMEABLE tokens `{accentColor, surface, cornerRadius,
18
17
  * fontSlot}`, emitted as the exact `--certrev-*` CSS custom properties the
19
- * Shopify/WordPress engines emit and the WS11 crawl monitor asserts
18
+ * Shopify/WordPress engines emit and the crawl monitor asserts
20
19
  * (`--certrev-accent` / `--certrev-surface` / `--certrev-radius` /
21
20
  * `--certrev-font`). Each is RE-VALIDATED here at render time (defense in
22
21
  * depth over the write-path fail-closed gate) against the SAME strict
@@ -46,9 +45,9 @@ export type FontSlot = (typeof FONT_SLOTS)[number];
46
45
  /**
47
46
  * The `fontSlot` → fixed font-stack literal — the render-def theme map the webcomponent MODAL
48
47
  * (`resolveRenderTheme` → `renderBadgeHtml`) and the legacy `<CertBadge>` resolve. The three original
49
- * slots (sans/serif/system) stay BYTE-IDENTICAL to the Shopify Liquid engine's stacks
50
- * (`shopify/extensions/certrev-schema/snippets/certrev-badge.liquid`), so a themed brand's popup modal
51
- * and its inline Liquid card paint the same typography — the load-bearing card==modal invariant.
48
+ * slots (sans/serif/system) stay BYTE-IDENTICAL to the Shopify Liquid engine's badge-snippet
49
+ * stacks, so a themed brand's popup modal and its inline Liquid card paint the same
50
+ * typography — the load-bearing card==modal invariant.
52
51
  * grotesk (Plus Jakarta Sans) + mono (JetBrains Mono) are ADDED at the shared guide values —
53
52
  * byte-identical to portal `FONT_SLOT_STACKS`, this package's `RENDER_BLOCK_FONT_STACKS`, and the
54
53
  * Liquid twin's added branches — so card == modal holds for them too. A raw family string in a
@@ -126,8 +125,8 @@ export declare function resolveRenderTheme(def?: CertRenderDef): ResolvedRenderT
126
125
  /** Is a brand-toggleable field hidden by this render-def's subtractive hide-set? */
127
126
  export declare function isFieldHidden(def: CertRenderDef | undefined, id: BadgeVisibilityFieldId): boolean;
128
127
  /**
129
- * The full portal font-slot enum (mirrors portal `src/lib/design-guide/tokens.ts`
130
- * `FONT_SLOTS`). `grotesk` ⇐ the guide's wordmark slot; `mono` ⇐ the label slot.
128
+ * The full portal font-slot enum (mirrors the portal design-guide's `FONT_SLOTS`).
129
+ * `grotesk` ⇐ the guide's wordmark slot; `mono` ⇐ the label slot.
131
130
  */
132
131
  export declare const RENDER_BLOCK_FONT_SLOTS: readonly ["sans", "serif", "system", "grotesk", "mono"];
133
132
  export type RenderBlockFontSlot = (typeof RENDER_BLOCK_FONT_SLOTS)[number];
@@ -143,7 +142,7 @@ export declare const RENDER_BLOCK_FONT_STACKS: Readonly<Record<RenderBlockFontSl
143
142
  export declare function isRenderBlockFontSlot(value: string): value is RenderBlockFontSlot;
144
143
  /**
145
144
  * AUTO-CONTRAST PICKER — the ink painted over an opaque fill. BYTE-FAITHFUL to the portal's
146
- * `accentFg` (src/lib/design-guide/tokens.ts): Rec.601 perceptual luma with a strict `> 0.62`
145
+ * design-guide `accentFg`: Rec.601 perceptual luma with a strict `> 0.62`
147
146
  * cutoff, returning EXACTLY `#141414` (near-black) or `#ffffff`; an unparseable value falls back
148
147
  * to the dark ink (safe default). Used at the render edge to DERIVE `barInkFg` from a themed
149
148
  * `barInk` (v2 Phase 1), so the bar foreground always clears its own fill with no separate stored
@@ -1 +1 @@
1
- {"version":3,"file":"render-def.d.ts","sourceRoot":"","sources":["../../src/components/render-def.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-def.d.ts","sourceRoot":"","sources":["../../src/components/render-def.ts"],"names":[],"mappings":"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"}