@certrev/cert-block 0.2.0 → 0.5.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.
- package/README.md +48 -1
- package/dist/builder/cert-chrome-data.d.ts +129 -0
- package/dist/builder/cert-chrome-data.d.ts.map +1 -0
- package/dist/builder/cert-chrome-data.js +59 -0
- package/dist/builder/cert-chrome-data.js.map +1 -0
- package/dist/builder/cert-review-card.d.ts +68 -0
- package/dist/builder/cert-review-card.d.ts.map +1 -0
- package/dist/builder/cert-review-card.js +129 -0
- package/dist/builder/cert-review-card.js.map +1 -0
- package/dist/builder/index.d.ts +2 -0
- package/dist/builder/index.d.ts.map +1 -1
- package/dist/builder/index.js +3 -0
- package/dist/builder/index.js.map +1 -1
- package/dist/components/preview-block.d.ts +43 -0
- package/dist/components/preview-block.d.ts.map +1 -0
- package/dist/components/preview-block.js +53 -0
- package/dist/components/preview-block.js.map +1 -0
- package/dist/components/render-cert-block.d.ts +50 -5
- package/dist/components/render-cert-block.d.ts.map +1 -1
- package/dist/components/render-cert-block.js +341 -93
- package/dist/components/render-cert-block.js.map +1 -1
- package/dist/components/render-def.d.ts +27 -0
- package/dist/components/render-def.d.ts.map +1 -1
- package/dist/components/render-def.js +38 -0
- package/dist/components/render-def.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/modal/avatar-resize.d.ts +60 -0
- package/dist/modal/avatar-resize.d.ts.map +1 -0
- package/dist/modal/avatar-resize.js +91 -0
- package/dist/modal/avatar-resize.js.map +1 -0
- package/dist/modal/cert-modal-view.d.ts +74 -0
- package/dist/modal/cert-modal-view.d.ts.map +1 -0
- package/dist/modal/cert-modal-view.js +160 -0
- package/dist/modal/cert-modal-view.js.map +1 -0
- package/dist/modal/certrev-cert-modal.d.ts +72 -0
- package/dist/modal/certrev-cert-modal.d.ts.map +1 -0
- package/dist/modal/certrev-cert-modal.js +270 -0
- package/dist/modal/certrev-cert-modal.js.map +1 -0
- package/dist/modal/certrev-cert-modal.styles.d.ts +35 -0
- package/dist/modal/certrev-cert-modal.styles.d.ts.map +1 -0
- package/dist/modal/certrev-cert-modal.styles.js +488 -0
- package/dist/modal/certrev-cert-modal.styles.js.map +1 -0
- package/dist/modal/certrev-cert.entry.d.ts +19 -0
- package/dist/modal/certrev-cert.entry.d.ts.map +1 -0
- package/dist/modal/certrev-cert.entry.js +39 -0
- package/dist/modal/certrev-cert.entry.js.map +1 -0
- package/dist/modal/certrev-cert.js +557 -0
- package/dist/modal/display-strings.d.ts +22 -0
- package/dist/modal/display-strings.d.ts.map +1 -0
- package/dist/modal/display-strings.js +35 -0
- package/dist/modal/display-strings.js.map +1 -0
- package/dist/modal/escape.d.ts +13 -0
- package/dist/modal/escape.d.ts.map +1 -0
- package/dist/modal/escape.js +20 -0
- package/dist/modal/escape.js.map +1 -0
- package/dist/modal/font-face.d.ts +4 -0
- package/dist/modal/font-face.d.ts.map +1 -0
- package/dist/modal/font-face.js +137 -0
- package/dist/modal/font-face.js.map +1 -0
- package/dist/modal/ftc-disclosure.d.ts +12 -0
- package/dist/modal/ftc-disclosure.d.ts.map +1 -0
- package/dist/modal/ftc-disclosure.js +12 -0
- package/dist/modal/ftc-disclosure.js.map +1 -0
- package/dist/modal/ftc-guard.d.ts +50 -0
- package/dist/modal/ftc-guard.d.ts.map +1 -0
- package/dist/modal/ftc-guard.js +117 -0
- package/dist/modal/ftc-guard.js.map +1 -0
- package/dist/modal/index.d.ts +20 -0
- package/dist/modal/index.d.ts.map +1 -0
- package/dist/modal/index.js +25 -0
- package/dist/modal/index.js.map +1 -0
- package/dist/modal/interactions.d.ts +53 -0
- package/dist/modal/interactions.d.ts.map +1 -0
- package/dist/modal/interactions.js +147 -0
- package/dist/modal/interactions.js.map +1 -0
- package/dist/modal/logo-paths.d.ts +15 -0
- package/dist/modal/logo-paths.d.ts.map +1 -0
- package/dist/modal/logo-paths.js +24 -0
- package/dist/modal/logo-paths.js.map +1 -0
- package/dist/modal/placement.d.ts +95 -0
- package/dist/modal/placement.d.ts.map +1 -0
- package/dist/modal/placement.js +302 -0
- package/dist/modal/placement.js.map +1 -0
- package/dist/modal/revalidate.d.ts +48 -0
- package/dist/modal/revalidate.d.ts.map +1 -0
- package/dist/modal/revalidate.js +65 -0
- package/dist/modal/revalidate.js.map +1 -0
- package/dist/modal/verify-client.d.ts +24 -0
- package/dist/modal/verify-client.d.ts.map +1 -0
- package/dist/modal/verify-client.js +38 -0
- package/dist/modal/verify-client.js.map +1 -0
- package/package.json +10 -4
- package/src/__tests__/__snapshots__/render-cert-block.test.ts.snap +10 -6
- package/src/__tests__/preview-block.test.ts +84 -0
- package/src/__tests__/render-cert-block.test.ts +404 -6
- package/src/builder/__tests__/builder.test.tsx +71 -0
- package/src/builder/cert-chrome-data.ts +159 -0
- package/src/builder/cert-review-card.tsx +177 -0
- package/src/builder/index.tsx +18 -0
- package/src/components/preview-block.ts +74 -0
- package/src/components/render-cert-block.ts +427 -121
- package/src/components/render-def.ts +55 -0
- package/src/index.ts +9 -0
- package/src/modal/avatar-resize.ts +99 -0
- package/src/modal/cert-modal-view.test.ts +175 -0
- package/src/modal/cert-modal-view.ts +210 -0
- package/src/modal/certrev-cert-modal.styles.ts +494 -0
- package/src/modal/certrev-cert-modal.test.ts +125 -0
- package/src/modal/certrev-cert-modal.ts +273 -0
- package/src/modal/certrev-cert.entry.ts +44 -0
- package/src/modal/display-strings.ts +38 -0
- package/src/modal/escape.ts +20 -0
- package/src/modal/font-face.ts +138 -0
- package/src/modal/ftc-disclosure.ts +13 -0
- package/src/modal/ftc-guard.test.ts +153 -0
- package/src/modal/ftc-guard.ts +119 -0
- package/src/modal/index.ts +34 -0
- package/src/modal/interactions.test.ts +250 -0
- package/src/modal/interactions.ts +166 -0
- package/src/modal/logo-paths.ts +23 -0
- package/src/modal/placement.test.ts +398 -0
- package/src/modal/placement.ts +331 -0
- package/src/modal/revalidate.test.ts +111 -0
- package/src/modal/revalidate.ts +81 -0
- package/src/modal/verify-client.test.ts +164 -0
- package/src/modal/verify-client.ts +42 -0
|
@@ -19,10 +19,23 @@
|
|
|
19
19
|
* hooks on the ROOT element so the block is self-contained on a storefront that does
|
|
20
20
|
* NOT define the guide's `:root` — the accent (`--ba`), its auto-contrast ink
|
|
21
21
|
* (`--ba-fg`), the corner radius (`--br`), the body font (`--bf`) and surface
|
|
22
|
-
* (`--surface`) come from the resolved theme; the
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
22
|
+
* (`--surface`) come from the resolved theme; the fixed mono label font (`--font-mono`)
|
|
23
|
+
* is a LOCKED literal (guide "the lock is legal, not aesthetic"). Names, the memo quote,
|
|
24
|
+
* disclosures, links, and the "CertREV" wordmark ride the body font; the serif/grotesk
|
|
25
|
+
* slots remain reachable only as a brand's themeable body-font choice.
|
|
26
|
+
*
|
|
27
|
+
* V2 BRAND-INK (Phase 1, parity with the portal Liquid/CSS engines): a brand may lift TWO
|
|
28
|
+
* more chrome surfaces off their hardcoded navy literals — the header/seal bar (`barInk`,
|
|
29
|
+
* with its auto-contrast `barInkFg`) and the FREE-content trust ink (`inkColor`: reviewer/
|
|
30
|
+
* author names, title, credential, bio, initials + the derived muted scale). These reach
|
|
31
|
+
* the root as the exact `--certrev-bar-bg` / `--certrev-bar-fg` / `--certrev-ink` wire vars
|
|
32
|
+
* the Shopify/WordPress engines emit — but ONLY when the def sets them, so a no-def face is
|
|
33
|
+
* byte-identical. The bar consumes `var(--certrev-bar-bg, #0a1b3f)` / `var(--certrev-bar-fg,
|
|
34
|
+
* #fff)`; the free content consumes the `--cr-ink` family (`--cr-ink` = `var(--certrev-ink,
|
|
35
|
+
* #0a1b3f)`, with `-sub`/`-soft` muted derivations). The LOCKED trust text — the compensation
|
|
36
|
+
* cue, the FTC scope line, "Credential verified by CertREV", the WRITTEN/REVIEWED BY labels,
|
|
37
|
+
* and the certified date — NEVER follows `inkColor`; it stays on the navy `--navy*` scale so a
|
|
38
|
+
* brand ink can never drag legally load-bearing text below its floor.
|
|
26
39
|
*
|
|
27
40
|
* COMPLIANCE (LOCKED, non-negotiable): the three material disclosures always render
|
|
28
41
|
* on a CLAIM face (banner + sidebar) — the compensation cue, the byte-exact FTC
|
|
@@ -35,10 +48,27 @@
|
|
|
35
48
|
* interpolated value is escaped — `escapeHtml` for content, `escapeAttribute` for
|
|
36
49
|
* attribute values, `safeHttpUrl` for hrefs. Theme tokens are re-validated
|
|
37
50
|
* (`resolveBlockTheme`) and only ever emitted as strict hex / length / enum-stack.
|
|
51
|
+
*
|
|
52
|
+
* PLACED-FIELDS STRICTNESS (WS-B): Visibility is decided by the engine's
|
|
53
|
+
* `placedFields` alone; `rung` is a stamp, never a branch; an absent face
|
|
54
|
+
* grandfathers the 0.3.0 full-facts render byte-for-byte.
|
|
38
55
|
*/
|
|
39
56
|
import { type ResolvedBlockTheme } from './render-def.js';
|
|
40
57
|
/** The three LOCKED placement faces. */
|
|
41
58
|
export type CertBlockMode = 'banner' | 'sidebar' | 'floating';
|
|
59
|
+
/** All layouts renderCertBlock can paint: the three locked modes + the engine's free-composition face. */
|
|
60
|
+
export type CertBlockLayout = CertBlockMode | 'custom';
|
|
61
|
+
/**
|
|
62
|
+
* The portal engine's resolved face (assertCompliantRender output). `rung` is
|
|
63
|
+
* INFORMATIONAL ONLY — stamped as data, NEVER branched on for visibility.
|
|
64
|
+
* `placedFields` is the single source of what renders. Plain strings (not a closed
|
|
65
|
+
* union) so a future engine field id degrades to "not painted here" instead of a
|
|
66
|
+
* type break.
|
|
67
|
+
*/
|
|
68
|
+
export interface CertBlockFace {
|
|
69
|
+
readonly rung: string;
|
|
70
|
+
readonly placedFields: readonly string[];
|
|
71
|
+
}
|
|
42
72
|
/**
|
|
43
73
|
* The cert facts + LOCKED display strings a face renders. Facts are escaped; the
|
|
44
74
|
* three locked strings (`compensationCue`, `scopeLine`, `credentialLine`) are
|
|
@@ -75,10 +105,25 @@ export interface CertBlockFacts {
|
|
|
75
105
|
}
|
|
76
106
|
/** The full input to `renderCertBlock`. */
|
|
77
107
|
export interface RenderCertBlockInput {
|
|
78
|
-
readonly mode:
|
|
108
|
+
readonly mode: CertBlockLayout;
|
|
79
109
|
/** RESOLVED theme tokens (the portal bakes these). Absent/invalid tokens fall back to navy. */
|
|
80
110
|
readonly theme?: Partial<ResolvedBlockTheme>;
|
|
81
111
|
readonly facts: CertBlockFacts;
|
|
112
|
+
/**
|
|
113
|
+
* OPTIONAL engine face. ABSENT ⇒ grandfathered full-facts render, byte-identical
|
|
114
|
+
* to 0.3.0 (published callers unaffected). PRESENT ⇒ strict placedFields render.
|
|
115
|
+
*/
|
|
116
|
+
readonly face?: CertBlockFace;
|
|
117
|
+
/**
|
|
118
|
+
* BANNER memo placement (POR-10741 — first-class split, retires the CertReviewCard
|
|
119
|
+
* string-hack). Default `'full'` = header card + memo card in ONE root, BYTE-IDENTICAL
|
|
120
|
+
* to prior behavior. `'header'` / `'memo'` render ONLY that card in its own themed root,
|
|
121
|
+
* so a headless exporter can place the memo as its OWN block under the article body
|
|
122
|
+
* (the "banner → body → memo" layout) WITHOUT string-splitting the rendered HTML — and
|
|
123
|
+
* without duplicating the options payload (each block carries only what its card needs).
|
|
124
|
+
* Ignored outside banner mode.
|
|
125
|
+
*/
|
|
126
|
+
readonly part?: 'full' | 'header' | 'memo';
|
|
82
127
|
}
|
|
83
128
|
/**
|
|
84
129
|
* Render the LOCKED CertREV cert design as an SSR-safe HTML string for one of the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-cert-block.d.ts","sourceRoot":"","sources":["../../src/components/render-cert-block.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"render-cert-block.d.ts","sourceRoot":"","sources":["../../src/components/render-cert-block.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAIH,OAAO,EAMN,KAAK,kBAAkB,EAEvB,MAAM,iBAAiB,CAAA;AAExB,wCAAwC;AACxC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAA;AAE7D,0GAA0G;AAC1G,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,QAAQ,CAAA;AAEtD;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CACxC;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,qEAAqE;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,qFAAqF;IACrF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,iFAAiF;IACjF,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,oFAAoF;IACpF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,2CAA2C;AAC3C,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;IAC9B,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC5C,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;IAC9B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;;;;;OAQG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;CAC1C;AAkhBD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CA+BnE"}
|