@setsquare/review-sdk 0.0.1 → 0.1.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 (105) hide show
  1. package/NOTICE +3 -2
  2. package/README.md +220 -0
  3. package/dist/autoscan.d.ts +15 -1
  4. package/dist/autoscan.d.ts.map +1 -1
  5. package/dist/autoscan.js +168 -13
  6. package/dist/autoscan.js.map +1 -1
  7. package/dist/brand.d.ts +51 -2
  8. package/dist/brand.d.ts.map +1 -1
  9. package/dist/brand.js +560 -5
  10. package/dist/brand.js.map +1 -1
  11. package/dist/checks/context-change.d.ts +96 -0
  12. package/dist/checks/context-change.d.ts.map +1 -0
  13. package/dist/checks/context-change.js +655 -0
  14. package/dist/checks/context-change.js.map +1 -0
  15. package/dist/checks/focus.d.ts +154 -0
  16. package/dist/checks/focus.d.ts.map +1 -0
  17. package/dist/checks/focus.js +1123 -0
  18. package/dist/checks/focus.js.map +1 -0
  19. package/dist/checks/heuristics.d.ts +116 -0
  20. package/dist/checks/heuristics.d.ts.map +1 -0
  21. package/dist/checks/heuristics.js +931 -0
  22. package/dist/checks/heuristics.js.map +1 -0
  23. package/dist/checks/keyboard.d.ts +106 -0
  24. package/dist/checks/keyboard.d.ts.map +1 -0
  25. package/dist/checks/keyboard.js +452 -0
  26. package/dist/checks/keyboard.js.map +1 -0
  27. package/dist/checks/reflow.d.ts +75 -0
  28. package/dist/checks/reflow.d.ts.map +1 -0
  29. package/dist/checks/reflow.js +285 -0
  30. package/dist/checks/reflow.js.map +1 -0
  31. package/dist/checks/rule-pack.d.ts +1 -1
  32. package/dist/checks/rule-pack.d.ts.map +1 -1
  33. package/dist/checks/rule-pack.js +350 -45
  34. package/dist/checks/rule-pack.js.map +1 -1
  35. package/dist/checks/shortcuts.d.ts +71 -0
  36. package/dist/checks/shortcuts.d.ts.map +1 -0
  37. package/dist/checks/shortcuts.js +196 -0
  38. package/dist/checks/shortcuts.js.map +1 -0
  39. package/dist/checks/versions.d.ts.map +1 -1
  40. package/dist/checks/versions.js +33 -1
  41. package/dist/checks/versions.js.map +1 -1
  42. package/dist/contract.d.ts +18 -0
  43. package/dist/contract.d.ts.map +1 -1
  44. package/dist/covers.d.ts +56 -0
  45. package/dist/covers.d.ts.map +1 -0
  46. package/dist/covers.js +135 -0
  47. package/dist/covers.js.map +1 -0
  48. package/dist/dedupe.d.ts +23 -0
  49. package/dist/dedupe.d.ts.map +1 -1
  50. package/dist/dedupe.js +96 -2
  51. package/dist/dedupe.js.map +1 -1
  52. package/dist/document.d.ts.map +1 -1
  53. package/dist/document.js +144 -0
  54. package/dist/document.js.map +1 -1
  55. package/dist/envelope.d.ts +8 -0
  56. package/dist/envelope.d.ts.map +1 -1
  57. package/dist/envelope.js +28 -0
  58. package/dist/envelope.js.map +1 -1
  59. package/dist/fixture.d.ts.map +1 -1
  60. package/dist/fixture.js +12 -0
  61. package/dist/fixture.js.map +1 -1
  62. package/dist/html-report.d.ts +24 -7
  63. package/dist/html-report.d.ts.map +1 -1
  64. package/dist/html-report.js +608 -136
  65. package/dist/html-report.js.map +1 -1
  66. package/dist/index.d.ts +13 -0
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +13 -0
  69. package/dist/index.js.map +1 -1
  70. package/dist/links.d.ts +43 -0
  71. package/dist/links.d.ts.map +1 -1
  72. package/dist/links.js +43 -0
  73. package/dist/links.js.map +1 -1
  74. package/dist/observe.d.ts +8 -0
  75. package/dist/observe.d.ts.map +1 -1
  76. package/dist/observe.js +45 -1
  77. package/dist/observe.js.map +1 -1
  78. package/dist/options.d.ts +53 -0
  79. package/dist/options.d.ts.map +1 -1
  80. package/dist/options.js +3 -0
  81. package/dist/options.js.map +1 -1
  82. package/dist/reading-level.d.ts +22 -1
  83. package/dist/reading-level.d.ts.map +1 -1
  84. package/dist/reading-level.js +122 -19
  85. package/dist/reading-level.js.map +1 -1
  86. package/dist/reporter.d.ts.map +1 -1
  87. package/dist/reporter.js +31 -15
  88. package/dist/reporter.js.map +1 -1
  89. package/dist/scan.d.ts +36 -1
  90. package/dist/scan.d.ts.map +1 -1
  91. package/dist/scan.js +16 -2
  92. package/dist/scan.js.map +1 -1
  93. package/dist/screens.d.ts +55 -4
  94. package/dist/screens.d.ts.map +1 -1
  95. package/dist/screens.js +243 -43
  96. package/dist/screens.js.map +1 -1
  97. package/dist/summary.d.ts +22 -0
  98. package/dist/summary.d.ts.map +1 -1
  99. package/dist/summary.js +197 -22
  100. package/dist/summary.js.map +1 -1
  101. package/dist/viewports.d.ts +105 -0
  102. package/dist/viewports.d.ts.map +1 -0
  103. package/dist/viewports.js +134 -0
  104. package/dist/viewports.js.map +1 -0
  105. package/package.json +5 -4
package/dist/brand.d.ts CHANGED
@@ -67,7 +67,7 @@ export declare const MARK_DARK: string;
67
67
  * for the CSS custom-property namespace only; everything a customer types is
68
68
  * still `setsquare` in full.
69
69
  */
70
- export declare const BRAND_CSS = "\n :root {\n /* Surfaces. The base is now the LIGHTER of the two, inverted from the\n previous palette, so the raised step is the worse ground here. */\n --ss-surface: #ffffff;\n --ss-surface-raised: #f2f2f2;\n\n /* Text, measured against --ss-surface-raised (the worse case in this theme) */\n --ss-ink: #000000; /* 18.76:1 raised, 21.00:1 surface */\n --ss-ink-muted: #4f4f4f; /* 7.32:1 raised, 8.19:1 surface */\n\n --ss-border: #8c8c8c; /* 3.00:1 raised \u2014 non-text, meets 1.4.11 */\n --ss-grid-line: #d4d4d4; /* 1.32:1 raised \u2014 decorative only */\n\n --ss-accent: #005392; /* 7.07:1 raised, 7.92:1 surface */\n --ss-accent-ink: #ffffff; /* on accent \u2014 7.92:1 */\n\n /* Status roles. Used as text on a surface, or as a fill under their -ink. */\n --ss-danger: #a70019; /* 7.06:1 raised, 7.90:1 surface */\n --ss-danger-ink: #ffffff; /* on danger \u2014 7.90:1 */\n --ss-success: #005f29; /* 7.03:1 raised, 7.87:1 surface */\n --ss-success-ink: #ffffff;/* on success \u2014 7.87:1 */\n --ss-warning: #704a00; /* 7.03:1 raised, 7.87:1 surface */\n --ss-warning-ink: #ffffff;/* on warning \u2014 7.87:1 */\n\n --ss-code-bg: #f2f2f2;\n --ss-mark: url('data:image/png;base64,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');\n }\n\n @media (prefers-color-scheme: dark) {\n :root {\n --ss-surface: #0a0a0a;\n --ss-surface-raised: #1a1a1a;\n\n /* Measured against --ss-surface-raised, the worse case here. The chromatic\n values are unchanged; the grounds got darker, so every one of them GAINED\n headroom (7.0x -> 8.0x) rather than needing re-derivation. */\n --ss-ink: #ffffff; /* 17.40:1 raised, 19.80:1 surface */\n --ss-ink-muted: #a8a8a8; /* 7.32:1 raised, 8.33:1 surface */\n\n --ss-border: #676767; /* 3.08:1 raised */\n --ss-grid-line: #333333; /* 1.38:1 raised \u2014 decorative only */\n\n --ss-accent: #6bb5fe; /* 8.01:1 raised, 9.11:1 surface */\n --ss-accent-ink: #0b0e11; /* on accent \u2014 8.91:1 */\n\n --ss-danger: #fe928a; /* 8.03:1 raised, 9.14:1 surface */\n --ss-danger-ink: #0b0e11; /* on danger \u2014 8.93:1 */\n --ss-success: #62c47b; /* 8.04:1 raised, 9.15:1 surface */\n --ss-success-ink: #0b0e11;/* on success \u2014 8.94:1 */\n --ss-warning: #e9a228; /* 8.01:1 raised, 9.11:1 surface */\n --ss-warning-ink: #0b0e11;/* on warning \u2014 8.91:1 */\n\n --ss-code-bg: #1a1a1a;\n --ss-mark: url('data:image/png;base64,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');\n }\n }\n";
70
+ export declare const BRAND_CSS = "\n :root {\n /* Surfaces. The base is now the LIGHTER of the two, inverted from the\n previous palette, so the raised step is the worse ground here. */\n --ss-surface: #ffffff;\n --ss-surface-raised: #f2f2f2;\n\n /* Text, measured against --ss-surface-raised (the worse case in this theme) */\n --ss-ink: #000000; /* 18.76:1 raised, 21.00:1 surface */\n --ss-ink-muted: #4f4f4f; /* 7.32:1 raised, 8.19:1 surface */\n\n --ss-border: #8c8c8c; /* 3.00:1 raised \u2014 non-text, meets 1.4.11 */\n --ss-grid-line: #d4d4d4; /* 1.32:1 raised \u2014 decorative only */\n\n --ss-accent: #005392; /* 7.07:1 raised, 7.92:1 surface */\n --ss-accent-ink: #ffffff; /* on accent \u2014 7.92:1 */\n\n /* Status roles. Used as text on a surface, or as a fill under their -ink. */\n --ss-danger: #a70019; /* 7.06:1 raised, 7.90:1 surface */\n --ss-danger-ink: #ffffff; /* on danger \u2014 7.90:1 */\n --ss-success: #005f29; /* 7.03:1 raised, 7.87:1 surface */\n --ss-success-ink: #ffffff;/* on success \u2014 7.87:1 */\n --ss-warning: #704a00; /* 7.03:1 raised, 7.87:1 surface */\n --ss-warning-ink: #ffffff;/* on warning \u2014 7.87:1 */\n\n /*\n The conformance-level ramp. Two tokens per level: the wash is the ground\n the letters sit on and the thing you see at a glance, the other is the\n indicator \u2014 a border, non-text, held to 4.5:1 where 1.4.11 asks 3:1.\n The letters are never coloured; on a light ground a colour dark enough\n to carry text is dark, and a dark yellow is olive.\n */\n --ss-level-a: #db0024; /* 4.65:1 raised, 5.20:1 surface */\n --ss-level-a-wash: #ffdfdc; /* ink on this \u2014 16.84:1 */\n --ss-level-aa: #a15c02; /* 4.63:1 raised, 5.19:1 surface */\n --ss-level-aa-wash: #fee2cb; /* ink on this \u2014 16.96:1 */\n --ss-level-aaa: #816b05; /* 4.64:1 raised, 5.20:1 surface */\n --ss-level-aaa-wash: #ffe88f; /* ink on this \u2014 17.19:1 */\n\n --ss-code-bg: #f2f2f2;\n --ss-mark: url('data:image/png;base64,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');\n }\n\n @media (prefers-color-scheme: dark) {\n :root {\n --ss-surface: #0a0a0a;\n --ss-surface-raised: #1a1a1a;\n\n /* Measured against --ss-surface-raised, the worse case here. The chromatic\n values are unchanged; the grounds got darker, so every one of them GAINED\n headroom (7.0x -> 8.0x) rather than needing re-derivation. */\n --ss-ink: #ffffff; /* 17.40:1 raised, 19.80:1 surface */\n --ss-ink-muted: #a8a8a8; /* 7.32:1 raised, 8.33:1 surface */\n\n --ss-border: #676767; /* 3.08:1 raised */\n --ss-grid-line: #333333; /* 1.38:1 raised \u2014 decorative only */\n\n --ss-accent: #6bb5fe; /* 8.01:1 raised, 9.11:1 surface */\n --ss-accent-ink: #0b0e11; /* on accent \u2014 8.91:1 */\n\n --ss-danger: #fe928a; /* 8.03:1 raised, 9.14:1 surface */\n --ss-danger-ink: #0b0e11; /* on danger \u2014 8.93:1 */\n --ss-success: #62c47b; /* 8.04:1 raised, 9.15:1 surface */\n --ss-success-ink: #0b0e11;/* on success \u2014 8.94:1 */\n --ss-warning: #e9a228; /* 8.01:1 raised, 9.11:1 surface */\n --ss-warning-ink: #0b0e11;/* on warning \u2014 8.91:1 */\n\n /* The level ramp, dark: same hues, the wash deep and the indicator light. */\n --ss-level-a: #ff1d32; /* 4.54:1 raised, 5.16:1 surface */\n --ss-level-a-wash: #5c0109; /* ink on this \u2014 14.35:1 */\n --ss-level-aa: #c1700c; /* 4.63:1 raised, 5.27:1 surface */\n --ss-level-aa-wash: #452501; /* ink on this \u2014 13.83:1 */\n --ss-level-aaa: #9b8207; /* 4.63:1 raised, 5.27:1 surface */\n --ss-level-aaa-wash: #372d02; /* ink on this \u2014 13.65:1 */\n\n --ss-code-bg: #1a1a1a;\n --ss-mark: url('data:image/png;base64,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');\n }\n }\n";
71
71
  /**
72
72
  * The masthead: mark plus wordmark, shared by both artifacts.
73
73
  *
@@ -80,5 +80,54 @@ export declare const BRAND_CSS = "\n :root {\n /* Surfaces. The base is now
80
80
  */
81
81
  export declare const masthead: (title: string, subtitle: string) => string;
82
82
  /** Masthead styling, kept beside the markup that needs it. */
83
- export declare const MASTHEAD_CSS = "\n .masthead { display: flex; align-items: center; gap: 1rem; margin: 0 0 1.5rem; }\n .masthead h1 { margin: 0; }\n .masthead p { margin: .25rem 0 0; }\n .mark {\n flex: 0 0 auto; width: 44px; height: 44px;\n background: var(--ss-mark) center / contain no-repeat;\n }\n @media (max-width: 30rem) { .mark { width: 32px; height: 32px; } }\n";
83
+ export declare const MASTHEAD_CSS = "\n /*\n * The mark sits on the TOP of the title block rather than its centre, because\n * the subtitle is a two-line mono string at narrow widths and centring against\n * it drags the mark off the h1's cap line \u2014 the one alignment a reader notices.\n */\n .masthead {\n display: flex; align-items: flex-start; gap: 16px;\n margin: 0 0 var(--ss-stack);\n padding-bottom: var(--ss-block);\n border-bottom: 1px solid var(--ss-border);\n }\n .masthead h1 { margin: 0; }\n /*\n * The provenance line is mono, like every other machine fact in these\n * documents \u2014 a timestamp, a branch and a commit are strings a person copies,\n * and the site gives those the same treatment (.ss-citation, .ss-evidence dt).\n */\n .masthead .provenance {\n margin: 10px 0 0;\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n font-size: 12px; letter-spacing: .04em;\n /* Not measured: this is one unbreakable machine string, not a line of prose. */\n max-width: none;\n color: var(--ss-ink-muted);\n }\n .mark {\n flex: 0 0 auto; width: 44px; height: 44px; margin-top: 4px;\n background: var(--ss-mark) center / contain no-repeat;\n }\n @media (max-width: 30rem) { .mark { width: 32px; height: 32px; margin-top: 2px; } }\n";
84
+ /**
85
+ * The band legend, rendered once per document that groups by viewport.
86
+ *
87
+ * Here beside its styles, and beside `masthead()`, because it is the other
88
+ * shared piece of markup both artifacts print. It takes the bands it was
89
+ * actually given rather than all three — a run that never went below 1024 has
90
+ * no business defining "mobile" for a reader, and a legend listing bands that
91
+ * are not on the page reads as a list of things we looked at.
92
+ */
93
+ export declare const viewportLegend: (bands: readonly {
94
+ label: string;
95
+ range: string;
96
+ }[], note: string) => string;
97
+ /**
98
+ * The design system the two artifacts share with the public site.
99
+ *
100
+ * ## Why this exists at all
101
+ *
102
+ * `BRAND_CSS` made the report and the contact sheet use the product's COLOURS.
103
+ * They still did not look like the product: 16px/1.5 system-ui, two bold
104
+ * headings, 8px corners on everything and a table with a border round every
105
+ * cell is what any document looks like when nobody decided. The site has a
106
+ * pattern language — a type ladder, a mono ordinal spine, a radius ladder, one
107
+ * device for "we could not check" and one for a data table — and a customer who
108
+ * meets us through a report should meet the same one.
109
+ *
110
+ * The values are copied from `apps/marketing/app/site.css` for the reason the
111
+ * palette above is copied from `tokens.css`: that app is not a dependency of a
112
+ * published package. Unlike the palette there is no test diffing them, and that
113
+ * is a deliberate difference rather than an oversight — `brand.test.ts` guards
114
+ * the palette because a drifted COLOUR is a silent accessibility failure, and
115
+ * nothing here can fail: a radius that drifts by a pixel is untidy, not wrong.
116
+ *
117
+ * ## What is NOT copied, and why
118
+ *
119
+ * The hero rhythm, the mark keyframes, the price table and the docs rail — none
120
+ * of them has a counterpart in a report. The section spine, the type ladder, the
121
+ * radius ladder, the absence device and the data-table treatment do, and they
122
+ * are the ones that make a page recognisable.
123
+ *
124
+ * NO COLOUR IS NAMED HERE. Every rule below reaches for a `--ss-*` role, so the
125
+ * palette stays the single place a colour is decided and `brand.test.ts` stays
126
+ * the single place it is checked.
127
+ *
128
+ * (No backticks anywhere in this string or the comments inside it. It is a
129
+ * template literal, and one would end it with the parse error landing pages
130
+ * away.)
131
+ */
132
+ export declare const SYSTEM_CSS = "\n :root {\n /*\n * THE TYPE LADDER, at the site's docs altitude rather than its marketing\n * one. A report is a document you read, not a page that has to hold an eye\n * before the argument starts, so the display and hero steps are omitted and\n * h1 is the site's --ss-h1-docs.\n */\n --ss-h1: clamp(28px, 3.6vw, 44px);\n --ss-h2: clamp(24px, 2.8vw, 34px);\n --ss-h3: clamp(18px, 1.6vw, 21px);\n\n /* The spacing ladder, verbatim. */\n --ss-section-gap: clamp(46px, 5.6vw, 96px);\n --ss-lead-gap: clamp(30px, 3.4vw, 48px);\n --ss-stack: clamp(24px, 2.8vw, 36px);\n --ss-block: clamp(18px, 2.2vw, 26px);\n\n /* Radius ladder: cards, inner blocks, controls, small mono, pills. */\n --ss-radius-card: 9px;\n --ss-radius-inner: 8px;\n --ss-radius-block: 7px;\n --ss-radius-control: 5px;\n --ss-radius-mono: 4px;\n --ss-radius-pill: 3px;\n\n /*\n * WCAG 1.4.8 asks for 1.5 line spacing within a paragraph, and these\n * documents are held to AAA because of what they are. It is a property\n * rather than a literal so the floor has one definition.\n */\n --ss-line-prose: 1.55;\n\n /* The measure 1.4.8 caps. Overridden per document for the body width. */\n --ss-measure: 68ch;\n\n --ss-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n\n /*\n * The document's own names for brand roles. Both artifacts used to declare\n * this block themselves, in two copies that had already diverged (the sheet\n * never mapped a warning colour). One place, one vocabulary.\n */\n --bg: var(--ss-surface);\n --fg: var(--ss-ink);\n --muted: var(--ss-ink-muted);\n --line: var(--ss-border);\n --code-bg: var(--ss-surface-raised);\n --bad-fg: var(--ss-danger);\n --warn-fg: var(--ss-warning);\n --good-fg: var(--ss-success);\n /*\n * The faint grey a \"nothing here\" glyph would want does not exist: the\n * palette has no second grey that clears 7:1, and the untested glyph is\n * already distinct by content.\n */\n --none-fg: var(--ss-ink-muted);\n }\n\n * { box-sizing: border-box; }\n\n body {\n margin: 0 auto;\n padding: var(--ss-stack) var(--ss-block) calc(var(--ss-section-gap) * 1.2);\n max-width: var(--doc-width, 72rem);\n background: var(--bg); color: var(--fg);\n font: 16px/var(--ss-line-prose) system-ui, -apple-system, \"Segoe UI\", sans-serif;\n text-wrap: pretty;\n }\n\n /* ------------------------------------------------------------- headings */\n\n /*\n * A default gap per heading role, scaled with the type. One value for a 34px\n * h2 and a 21px h3 is what makes a page feel squashed.\n */\n h1, h2, h3 { font-weight: 600; }\n h1 { font-size: var(--ss-h1); line-height: 1.08; letter-spacing: -.03em; margin: 0; }\n h2 {\n font-size: var(--ss-h2); line-height: 1.12; letter-spacing: -.026em;\n margin: 0 0 clamp(14px, 1.5vw, 18px);\n }\n h3 { font-size: var(--ss-h3); line-height: 1.3; letter-spacing: -.012em; margin: 0 0 8px; }\n\n /* --------------------------------------------------------------- spine */\n\n /*\n * THE SECTION SPINE: a 22px rule, a mono ordinal, and an uppercase category.\n * This is the site's structural device and the single thing that makes these\n * documents read as ours rather than as any tool's output.\n *\n * THE ORDINAL IS A CSS COUNTER, NOT A NUMBER WE RENDER. Half of this report's\n * sections are conditional \u2014 no performance table without timings, no run\n * group unless the run was merged, no captures unless Playwright wrote some \u2014\n * so a hand-numbered spine would have gaps in it on most real runs, and\n * numbering correctly in the renderer would mean threading a counter through\n * a dozen independently-built strings. The browser already counts the\n * sections that exist. It stays deterministic: two renders of one run emit\n * identical markup, and the counter is a function of that markup.\n *\n * R, because these are Review artifacts. The site numbers per module for the\n * same reason: R on Review surfaces, C on Consent.\n *\n * The rule is an absolutely positioned ::after rather than an inline ::before,\n * so a category that wraps at 320px wraps under itself instead of leaving the\n * rule alone on the first line looking like a stray dash.\n */\n main { counter-reset: ss-section; }\n section { counter-increment: ss-section; }\n\n .eyebrow {\n position: relative;\n max-width: 64ch;\n margin: 0 0 18px;\n padding-left: 32px;\n font-family: var(--ss-mono);\n font-size: 12px;\n letter-spacing: .1em;\n text-transform: uppercase;\n color: var(--muted);\n }\n .eyebrow::before { content: 'R' counter(ss-section, decimal-leading-zero) ' / '; }\n .eyebrow::after {\n content: ''; position: absolute; left: 0; top: .62em;\n width: 22px; height: 1px; background: var(--line);\n }\n\n main > section { margin-top: var(--ss-section-gap); }\n main > section:first-child { margin-top: 0; }\n\n /* ---------------------------------------------------------------- prose */\n\n /*\n * 1.4.8 caps the line a reader tracks, and an unbounded block is unbounded\n * whatever happens to be in it today. Scoped to prose: a table cell and a\n * figure caption set their own width from their content.\n */\n p, ul, ol { max-width: var(--ss-measure); }\n p { margin: 0 0 .75rem; }\n\n a { color: inherit; }\n :focus-visible { outline: 3px solid var(--fg); outline-offset: 2px; }\n\n code {\n background: var(--code-bg); padding: .1em .35em;\n border-radius: var(--ss-radius-mono);\n font-family: var(--ss-mono); font-size: .875em; overflow-wrap: anywhere;\n }\n\n .muted { color: var(--muted); }\n .good, .ok { color: var(--good-fg); }\n .bad { color: var(--bad-fg); font-weight: 600; }\n .check { color: var(--warn-fg); font-weight: 600; }\n\n .sr-only {\n position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;\n overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;\n }\n\n footer {\n margin-top: var(--ss-section-gap); padding-top: var(--ss-block);\n border-top: 1px solid var(--line); color: var(--muted); font-size: .875rem;\n }\n footer code { font-size: .8rem; }\n\n /* ------------------------------------------------------------ the level tag */\n\n /*\n * A, AA, AAA \u2014 one treatment, and the SAME one the site uses. Ink on a wash\n * with an indicator border: the hue makes a level findable across a grid\n * without reading every chip, and the letters are what say which one, because\n * red, orange and yellow are inseparable under deuteranopia and no contrast\n * ratio changes that.\n *\n * A LEVEL IS ALWAYS THIS SHAPE AND A STATUS IS NEVER ONE. That is what stops\n * the A tag reading as a failure next to a danger-coloured word.\n *\n * One width for all three, so A does not read as a smaller thing than AAA.\n * The padding is asymmetric by a pixel because uppercase mono has no\n * descenders and a symmetric box sits the ink high. The radius is the pill\n * step, 3px \u2014 it used to be 999px here, which is a different design language\n * from the one the site ships.\n */\n .level {\n display: inline-flex; align-items: center; justify-content: center;\n flex: none; min-width: 40px;\n padding: 5px 9px 4px;\n border: 1px solid var(--ss-border);\n border-radius: var(--ss-radius-pill);\n background: var(--ss-surface-raised);\n color: var(--ss-ink);\n font-family: var(--ss-mono); font-size: 10.5px; line-height: 1;\n /* Trailing space trimmed, so the letters sit centred rather than pushed left. */\n letter-spacing: .09em; text-indent: .09em;\n white-space: nowrap;\n }\n .level-a { border-color: var(--ss-level-a); background: var(--ss-level-a-wash); }\n .level-aa { border-color: var(--ss-level-aa); background: var(--ss-level-aa-wash); }\n .level-aaa { border-color: var(--ss-level-aaa); background: var(--ss-level-aaa-wash); }\n /*\n * Under forced colours the wash and the border are the user's, so the hue is\n * gone \u2014 which is fine, because it never carried the meaning. The border is\n * kept so the tag stays a tag.\n */\n @media (forced-colors: active) {\n .level { border-color: CanvasText; background: Canvas; color: CanvasText; }\n }\n\n /* --------------------------------------------------------------- absence */\n\n /*\n * \"WE COULD NOT CHECK\" IS ITS OWN STATE, and most products render it as a\n * failure. One visual language for it: a broken 4px rule rather than a solid\n * one, and a sentence saying what would resolve it. Never the danger colour,\n * never a pass \u2014 which is this repository's honesty vocabulary drawn rather\n * than written.\n *\n * The same device covers every absence these documents carry, and they are\n * the same KIND of thing rather than four coincidences: a criterion the\n * engine could not decide, a run that scanned nothing, a capture whose file\n * has gone, and a viewport nothing was measured at. Every one is a gap in\n * knowledge rather than a fault.\n */\n .absence {\n display: flex; flex-direction: column; gap: 8px;\n max-width: var(--ss-measure);\n margin: 0 0 var(--ss-block);\n padding: 16px 18px;\n background: var(--ss-surface-raised);\n border: 1px solid var(--line);\n border-left: 4px dotted var(--line);\n border-radius: 0 var(--ss-radius-inner) var(--ss-radius-inner) 0;\n }\n .absence p { margin: 0; max-width: none; }\n .absence ul { margin: 0; max-width: none; }\n /*\n * A code chip inside an absence takes the FLAT ground, because the box it is\n * in has already used the raised one and a chip the same colour as the box it\n * sits in is not a chip. The same inversion the site does for an absence\n * inside a raised section.\n */\n .absence code { background: var(--ss-surface); }\n .absence__label {\n margin: 0;\n font-family: var(--ss-mono); font-size: 11px;\n letter-spacing: .1em; text-transform: uppercase;\n color: var(--ss-ink);\n }\n\n /* ------------------------------------------------------------ data tables */\n\n /*\n * A REGION THAT SCROLLS WITH A MOUSE MUST BE REACHABLE WITH A KEYBOARD.\n *\n * That is WCAG 2.1.1, and axe enforces it as scrollable-region-focusable. The\n * conformance grid is nineteen columns wide inside this scroller, so on any\n * ordinary window it scrolls \u2014 and for the whole of this document's life that\n * was a level A failure nothing caught, because no suite scans the report.\n * Found by pointing axe at it by hand, which is worth doing again.\n *\n * The markup carries the tabindex and a name: a bare tab stop announces\n * nothing, and a reader who lands in a nineteen-column grid deserves to be\n * told which one they are in.\n */\n .tablewrap { overflow-x: auto; }\n .tablewrap:focus-visible { outline: 3px solid var(--fg); outline-offset: 2px; }\n table { border-collapse: collapse; width: 100%; margin: .75rem 0 var(--ss-block); }\n caption { text-align: left; margin-bottom: .5rem; }\n th, td {\n border: 1px solid var(--line); padding: .5rem .7rem;\n text-align: left; vertical-align: top;\n }\n td.num { text-align: right; font-variant-numeric: tabular-nums; }\n\n /*\n * THE EVIDENCE TABLES: a filled header and a zebra stripe, which is the\n * site's treatment and arrived there with both halves measured first.\n *\n * The header is ink with the ground reversed out of it \u2014 21.00:1 in light and\n * 19.80:1 in dark, the strongest pairing the palette has.\n *\n * The stripe is grid-line, the decorative token, at 1.48:1 against the flat\n * ground in light and 1.57:1 in dark. The raised surface was the obvious\n * choice and measures 1.12:1 and 1.14:1, which is a stripe nobody can see.\n *\n * THE CELLS ARE INK, AND THAT IS WHAT MAKES THE STRIPE POSSIBLE. On grid-line\n * the palette's muted grey measures 5.53:1 in light and 5.31:1 in dark, and\n * every status colour lands within a hundredth of the same place \u2014 all of\n * them under 1.4.6's 7:1. So a cell in one of these tables carries no colour\n * at all: where a state has to appear, it appears as a pill, whose fill is a\n * role under its own -ink and is therefore a pair that was measured.\n *\n * That constraint is also why the conformance grid is NOT one of these tables\n * \u2014 see the note beside it in html-report.ts.\n *\n * There is no hover state. One was built for the site and removed for being\n * too heavy, and a static evidence document has even less use for it.\n */\n .data-table thead th {\n background: var(--ss-ink); color: var(--ss-surface); border-bottom: none;\n }\n .data-table thead th:not(:first-child) { border-left-color: var(--ss-surface); }\n .data-table tbody th, .data-table tbody td { color: var(--ss-ink); }\n /*\n * A code chip in a striped cell gets the mono face and no ground at all. Its\n * usual raised background lands lighter than the flat row and darker than the\n * stripe, so it reads as two different chips down one column \u2014 and the thing\n * that makes a rule id look like a rule id is the typeface, not the box.\n */\n .data-table code { background: none; padding: 0; }\n .data-table tbody tr:nth-child(even) th,\n .data-table tbody tr:nth-child(even) td { background: var(--ss-grid-line); }\n /*\n * Under forced colours the grounds are the user's, so the stripe goes. The\n * borders survive, which is the right thing to keep: the stripe was always an\n * aid to tracking a row and never the structure.\n */\n @media (forced-colors: active) {\n .data-table thead th {\n background: Canvas; color: CanvasText; border-bottom: 2px solid CanvasText;\n }\n .data-table tbody tr:nth-child(even) th,\n .data-table tbody tr:nth-child(even) td { background: Canvas; }\n }\n\n /*\n * The straight-to-a-band links out of the report's captures section. Mono and\n * uppercase because they are the same vocabulary as the band headings they\n * land on, and a reader should recognise where they are going to arrive.\n */\n .band-links {\n list-style: none; padding: 0; margin: 0 0 .75rem; max-width: none;\n display: flex; flex-direction: column; gap: 6px;\n }\n .band-links a {\n font-family: var(--ss-mono); font-size: 12px;\n letter-spacing: .12em; text-transform: uppercase; font-weight: 600;\n }\n .band-links .muted {\n font-family: var(--ss-mono); font-size: 12px; letter-spacing: .04em;\n }\n\n /* ----------------------------------------------------- viewport bands */\n\n /*\n * A ROW THAT IS A HEADING, inside its own tbody.\n *\n * The grouping is real table structure rather than a visual break: each band\n * is its own row group, and this is that group's header cell scoped to it, so\n * a screen reader announces which band a cell belongs to the same way it\n * announces which column. A styled row with no header semantics would group\n * the rows for sighted readers only, which on an accessibility report is a\n * poor joke. (No backticks in this block \u2014 it is inside a template literal.)\n *\n * Reversed out of ink, like the column header above it, because it is a\n * header \u2014 21.00:1 light and 19.80:1 dark, the same measured pairing. The\n * size sits beside the name at a lighter weight and never replaces it: the\n * band is shorthand and the pixels are the fact.\n */\n /*\n * THE TABLE CLASS IS IN THE SELECTOR, and it has to be. The cell-colour rule\n * above is scoped to a data table's body header cells, which out-specifies a\n * bare band-row rule \u2014 so the heading took the body's ink on its own ink\n * ground and rendered as a black bar with nothing in it. Caught by looking at\n * the page; no test asserts a colour, and a contrast checker would have\n * called 1:1 a pass for text nobody can see. (No backticks: template literal.)\n */\n .data-table .band-row th,\n .data-table .band-row td {\n background: var(--ss-ink); color: var(--ss-surface);\n font-family: var(--ss-mono); font-size: 11px;\n letter-spacing: .12em; text-transform: uppercase;\n padding: .45rem .7rem;\n }\n /*\n * No border between the two cells, so the header and the sizes read as one\n * bar. They are two cells because axe cannot resolve a header that spans\n * every column \u2014 see the note beside bandHeader in html-report.ts.\n */\n .data-table .band-row th { border-right: 0; }\n .data-table .band-row td { border-left: 0; }\n .data-table .band-row .sizes {\n letter-spacing: .04em; text-transform: none; opacity: .78;\n }\n @media (forced-colors: active) {\n .data-table .band-row th,\n .data-table .band-row td {\n background: Canvas; color: CanvasText; border-bottom: 2px solid CanvasText;\n }\n }\n\n /*\n * The legend, and it is not decoration.\n *\n * \"Mobile\" is a claim about a device and these documents cannot make one \u2014 a\n * viewport is a number of CSS pixels and the machine behind it is unknowable.\n * The band names are kept because they are what a reader is actually asking\n * about, and the legend is the price: every artifact that prints a band name\n * prints this beside it, with the ranges, once.\n */\n .legend {\n margin: 0 0 var(--ss-block);\n padding: 14px 16px;\n max-width: var(--ss-measure);\n background: var(--ss-surface-raised);\n border: 1px solid var(--line);\n border-radius: var(--ss-radius-block);\n }\n .legend dl {\n display: flex; flex-wrap: wrap; gap: 6px 20px;\n margin: 0 0 8px;\n font-family: var(--ss-mono); font-size: 12px;\n }\n .legend div { display: flex; align-items: baseline; gap: 8px; }\n .legend dt {\n letter-spacing: .12em; text-transform: uppercase; font-weight: 600;\n }\n .legend dd { margin: 0; color: var(--muted); }\n .legend p { margin: 0; max-width: none; font-size: .875rem; color: var(--muted); }\n\n /* ------------------------------------------------------------------ pills */\n\n /*\n * The one solid fill in either document: a role under its own -ink is a pair\n * the palette measured, and nothing here invents a tint.\n */\n .pill {\n display: inline-block; min-width: 4.5ch; text-align: center;\n padding: .1em .5em; border-radius: var(--ss-radius-mono);\n font-family: var(--ss-mono); font-size: .8125em; letter-spacing: .04em;\n }\n .pill.s-failed { background: var(--ss-danger); color: var(--ss-danger-ink); font-weight: 700; }\n .pill.s-cantTell { background: var(--ss-warning); color: var(--ss-warning-ink); font-weight: 600; }\n .pill.s-rulesPassed { background: var(--ss-success); color: var(--ss-success-ink); }\n .pill.s-inapplicable {\n background: var(--ss-surface); color: var(--ss-ink); border: 1px solid var(--line);\n }\n /*\n * The two declared states are HOLLOW, never filled.\n *\n * Every solid pill is something a rule observed. A declaration is the\n * customer's claim about their own test, and a dashed outline reads as\n * provisional next to a solid fill \u2014 and survives forced colours, where a\n * background fill does not. The word inside carries the meaning regardless.\n */\n .pill.s-assertedFailing {\n background: none; color: var(--bad-fg);\n border: 1px dashed var(--bad-fg); font-weight: 700;\n }\n .pill.s-assertedBySuite {\n background: none; color: var(--fg); border: 1px dashed var(--line);\n }\n";
84
133
  //# sourceMappingURL=brand.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../src/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,UAAU,QA2EiD,CAAC;AAEzE,sFAAsF;AACtF,eAAO,MAAM,SAAS,QAyGsB,CAAC;AAE7C;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,4mmBAyDrB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,MAO/C,CAAC;AAEb,8DAA8D;AAC9D,eAAO,MAAM,YAAY,mWASxB,CAAC"}
1
+ {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../src/brand.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,UAAU,QA2EiD,CAAC;AAEzE,sFAAsF;AACtF,eAAO,MAAM,SAAS,QAyGsB,CAAC;AAE7C;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,26oBA+ErB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,MAO/C,CAAC;AAEb,8DAA8D;AAC9D,eAAO,MAAM,YAAY,6wCA+BxB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EAClD,MAAM,MAAM,KACX,MAWF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,UAAU,gtmBAoctB,CAAC"}