@plitzi/sdk-dev-tools 0.37.9 → 0.38.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 +621 -0
  2. package/dist/DevToolsContainer.d.ts +7 -1
  3. package/dist/DevToolsContainer.mjs +66 -60
  4. package/dist/agentInspector/flowRuns.d.ts +22 -0
  5. package/dist/agentInspector/flowRuns.mjs +26 -0
  6. package/dist/agentInspector/inspector.d.ts +27 -0
  7. package/dist/agentInspector/inspector.mjs +20 -0
  8. package/dist/agentInspector/report.d.ts +36 -0
  9. package/dist/agentInspector/report.mjs +53 -0
  10. package/dist/agentInspector/useAgentInspector.d.ts +15 -0
  11. package/dist/agentInspector/useAgentInspector.mjs +36 -0
  12. package/dist/components/DevToolsOverlay/DevToolsOverlay.d.ts +6 -1
  13. package/dist/components/DevToolsOverlay/DevToolsOverlay.mjs +25 -15
  14. package/dist/components/DevToolsPanel/DevToolsBody.d.ts +3 -1
  15. package/dist/components/DevToolsPanel/DevToolsBody.mjs +35 -31
  16. package/dist/components/DevToolsPanel/DevToolsHeader.d.ts +3 -1
  17. package/dist/components/DevToolsPanel/DevToolsHeader.mjs +20 -10
  18. package/dist/components/DevToolsPanel/DevToolsPanel.d.ts +3 -1
  19. package/dist/components/DevToolsPanel/DevToolsPanel.mjs +25 -23
  20. package/dist/components/DevToolsPanel/DevToolsSubHeader.mjs +41 -45
  21. package/dist/components/DevToolsPanel/tabs/ActionsViewer/ActionsViewer.mjs +10 -10
  22. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementsViewer.d.ts +4 -0
  23. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementsViewer.mjs +33 -18
  24. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsAttributes/DetailsAttributes.mjs +16 -0
  25. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsAttributes/index.d.ts +3 -0
  26. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsAttributes/index.mjs +5 -0
  27. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsDefinition/DetailsDefinition.mjs +18 -0
  28. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsDefinition/index.d.ts +3 -0
  29. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsDefinition/index.mjs +5 -0
  30. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRow/DetailsRow.d.ts +8 -0
  31. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRow/DetailsRow.mjs +14 -0
  32. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRow/index.d.ts +3 -0
  33. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRow/index.mjs +5 -0
  34. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRuntime/DetailsRuntime.d.ts +9 -0
  35. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRuntime/DetailsRuntime.mjs +54 -0
  36. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRuntime/index.d.ts +3 -0
  37. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRuntime/index.mjs +5 -0
  38. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsValue/DetailsValue.d.ts +9 -0
  39. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsValue/DetailsValue.mjs +15 -0
  40. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsValue/index.d.ts +3 -0
  41. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsValue/index.mjs +5 -0
  42. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementDetails/ElementDetails.d.ts +7 -0
  43. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementDetails/ElementDetails.mjs +46 -0
  44. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementDetails/index.d.ts +3 -0
  45. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementDetails/index.mjs +5 -0
  46. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementLink/ElementLink.d.ts +7 -0
  47. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementLink/ElementLink.mjs +14 -0
  48. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementLink/index.d.ts +3 -0
  49. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementLink/index.mjs +5 -0
  50. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementsTree/ElementsTree.d.ts +12 -0
  51. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementsTree/ElementsTree.mjs +39 -0
  52. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementsTree/index.d.ts +3 -0
  53. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementsTree/index.mjs +5 -0
  54. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeRow/TreeRow.d.ts +10 -0
  55. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeRow/TreeRow.mjs +36 -0
  56. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeRow/index.d.ts +3 -0
  57. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeRow/index.mjs +5 -0
  58. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeSection/TreeSection.d.ts +13 -0
  59. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeSection/TreeSection.mjs +39 -0
  60. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeSection/index.d.ts +3 -0
  61. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeSection/index.mjs +5 -0
  62. package/dist/components/DevToolsPanel/tabs/ElementsViewer/helpers/renderTree.d.ts +31 -0
  63. package/dist/components/DevToolsPanel/tabs/ElementsViewer/helpers/renderTree.mjs +61 -0
  64. package/dist/components/DevToolsPanel/tabs/FlagsViewer/FlagSource.d.ts +7 -0
  65. package/dist/components/DevToolsPanel/tabs/FlagsViewer/FlagSource.mjs +23 -0
  66. package/dist/components/DevToolsPanel/tabs/FlagsViewer/FlagsListItem.d.ts +11 -0
  67. package/dist/components/DevToolsPanel/tabs/FlagsViewer/FlagsListItem.mjs +66 -0
  68. package/dist/components/DevToolsPanel/tabs/FlagsViewer/FlagsViewer.d.ts +10 -0
  69. package/dist/components/DevToolsPanel/tabs/FlagsViewer/FlagsViewer.mjs +43 -0
  70. package/dist/components/DevToolsPanel/tabs/FlagsViewer/index.d.ts +3 -0
  71. package/dist/components/DevToolsPanel/tabs/FlagsViewer/index.mjs +5 -0
  72. package/dist/components/DevToolsPanel/tabs/Logs/Log.d.ts +3 -8
  73. package/dist/components/DevToolsPanel/tabs/Logs/Log.mjs +42 -31
  74. package/dist/components/DevToolsPanel/tabs/Logs/Logs.mjs +1 -6
  75. package/dist/components/DevToolsPanel/tabs/Logs/categories/LogInteraction/BodyHeader.mjs +53 -54
  76. package/dist/components/DevToolsPanel/tabs/Logs/categories/LogInteraction/LogInteraction.mjs +17 -17
  77. package/dist/components/DevToolsPanel/tabs/Logs/categories/LogNavigation/LogNavigationBody.mjs +26 -26
  78. package/dist/components/DevToolsPanel/tabs/Logs/categories/LogRealtime/LogRealtime.d.ts +10 -0
  79. package/dist/components/DevToolsPanel/tabs/Logs/categories/LogRealtime/LogRealtime.mjs +58 -0
  80. package/dist/components/DevToolsPanel/tabs/Logs/categories/LogRealtime/index.d.ts +3 -0
  81. package/dist/components/DevToolsPanel/tabs/Logs/categories/LogRealtime/index.mjs +5 -0
  82. package/dist/components/DevToolsPanel/tabs/QaViewer/QaAllChecksButton.d.ts +3 -0
  83. package/dist/components/DevToolsPanel/tabs/QaViewer/QaAllChecksButton.mjs +16 -0
  84. package/dist/components/DevToolsPanel/tabs/QaViewer/QaCheckRow.d.ts +7 -0
  85. package/dist/components/DevToolsPanel/tabs/QaViewer/QaCheckRow.mjs +47 -0
  86. package/dist/components/DevToolsPanel/tabs/QaViewer/QaChecks.d.ts +3 -0
  87. package/dist/components/DevToolsPanel/tabs/QaViewer/QaChecks.mjs +24 -0
  88. package/dist/components/DevToolsPanel/tabs/QaViewer/QaDivider.d.ts +3 -0
  89. package/dist/components/DevToolsPanel/tabs/QaViewer/QaDivider.mjs +5 -0
  90. package/dist/components/DevToolsPanel/tabs/QaViewer/QaFindingItem.d.ts +7 -0
  91. package/dist/components/DevToolsPanel/tabs/QaViewer/QaFindingItem.mjs +32 -0
  92. package/dist/components/DevToolsPanel/tabs/QaViewer/QaInspectorDetails.d.ts +9 -0
  93. package/dist/components/DevToolsPanel/tabs/QaViewer/QaInspectorDetails.mjs +135 -0
  94. package/dist/components/DevToolsPanel/tabs/QaViewer/QaInspectorEmpty.d.ts +3 -0
  95. package/dist/components/DevToolsPanel/tabs/QaViewer/QaInspectorEmpty.mjs +17 -0
  96. package/dist/components/DevToolsPanel/tabs/QaViewer/QaInspectorPanel.d.ts +3 -0
  97. package/dist/components/DevToolsPanel/tabs/QaViewer/QaInspectorPanel.mjs +22 -0
  98. package/dist/components/DevToolsPanel/tabs/QaViewer/QaProperty.d.ts +8 -0
  99. package/dist/components/DevToolsPanel/tabs/QaViewer/QaProperty.mjs +14 -0
  100. package/dist/components/DevToolsPanel/tabs/QaViewer/QaRescanButton.d.ts +3 -0
  101. package/dist/components/DevToolsPanel/tabs/QaViewer/QaRescanButton.mjs +15 -0
  102. package/dist/components/DevToolsPanel/tabs/QaViewer/QaRuleItem.d.ts +7 -0
  103. package/dist/components/DevToolsPanel/tabs/QaViewer/QaRuleItem.mjs +38 -0
  104. package/dist/components/DevToolsPanel/tabs/QaViewer/QaToolChip.d.ts +13 -0
  105. package/dist/components/DevToolsPanel/tabs/QaViewer/QaToolChip.mjs +27 -0
  106. package/dist/components/DevToolsPanel/tabs/QaViewer/QaToolbar.d.ts +3 -0
  107. package/dist/components/DevToolsPanel/tabs/QaViewer/QaToolbar.mjs +58 -0
  108. package/dist/components/DevToolsPanel/tabs/QaViewer/QaViewer.d.ts +8 -0
  109. package/dist/components/DevToolsPanel/tabs/QaViewer/QaViewer.mjs +14 -0
  110. package/dist/components/DevToolsPanel/tabs/QaViewer/QaVisionSelect.d.ts +3 -0
  111. package/dist/components/DevToolsPanel/tabs/QaViewer/QaVisionSelect.mjs +50 -0
  112. package/dist/components/DevToolsPanel/tabs/QaViewer/index.d.ts +3 -0
  113. package/dist/components/DevToolsPanel/tabs/QaViewer/index.mjs +5 -0
  114. package/dist/components/DevToolsPanel/tabs/TracingViewer/TracingViewer.mjs +31 -31
  115. package/dist/components/DevToolsPanel/tabs/VariablesViewer/VariablesStyleList.mjs +7 -10
  116. package/dist/components/DevToolsPanel/tabs/VariablesViewer/VariablesViewer.mjs +12 -12
  117. package/dist/highlight/index.d.ts +2 -0
  118. package/dist/highlight/index.mjs +5 -0
  119. package/dist/highlight/useHighlightElement.d.ts +6 -0
  120. package/dist/{components/DevToolsPanel/tabs/TracingViewer → highlight}/useHighlightElement.mjs +1 -1
  121. package/dist/qa/QaContext.d.ts +29 -0
  122. package/dist/qa/QaContext.mjs +73 -0
  123. package/dist/qa/QaLayer.d.ts +9 -0
  124. package/dist/qa/QaLayer.mjs +69 -0
  125. package/dist/qa/checks/contrast.d.ts +6 -0
  126. package/dist/qa/checks/contrast.mjs +23 -0
  127. package/dist/qa/checks/dom.d.ts +15 -0
  128. package/dist/qa/checks/dom.mjs +4 -0
  129. package/dist/qa/checks/headings.d.ts +6 -0
  130. package/dist/qa/checks/headings.mjs +28 -0
  131. package/dist/qa/checks/images.d.ts +6 -0
  132. package/dist/qa/checks/images.mjs +20 -0
  133. package/dist/qa/checks/index.d.ts +15 -0
  134. package/dist/qa/checks/index.mjs +47 -0
  135. package/dist/qa/checks/names.d.ts +9 -0
  136. package/dist/qa/checks/names.mjs +27 -0
  137. package/dist/qa/checks/overflow.d.ts +3 -0
  138. package/dist/qa/checks/overflow.mjs +24 -0
  139. package/dist/qa/checks/targets.d.ts +8 -0
  140. package/dist/qa/checks/targets.mjs +17 -0
  141. package/dist/qa/findings.d.ts +5 -0
  142. package/dist/qa/findings.mjs +11 -0
  143. package/dist/qa/inspect/colour.d.ts +33 -0
  144. package/dist/qa/inspect/colour.mjs +111 -0
  145. package/dist/qa/inspect/describe.d.ts +32 -0
  146. package/dist/qa/inspect/describe.mjs +42 -0
  147. package/dist/qa/inspect/measure.d.ts +20 -0
  148. package/dist/qa/inspect/measure.mjs +23 -0
  149. package/dist/qa/inspect/rules.d.ts +12 -0
  150. package/dist/qa/inspect/rules.mjs +29 -0
  151. package/dist/qa/overlays/QaBoxModel.d.ts +9 -0
  152. package/dist/qa/overlays/QaBoxModel.mjs +49 -0
  153. package/dist/qa/overlays/QaContrastBadge.d.ts +7 -0
  154. package/dist/qa/overlays/QaContrastBadge.mjs +13 -0
  155. package/dist/qa/overlays/QaGrid.d.ts +10 -0
  156. package/dist/qa/overlays/QaGrid.mjs +24 -0
  157. package/dist/qa/overlays/QaInspector.d.ts +7 -0
  158. package/dist/qa/overlays/QaInspector.mjs +50 -0
  159. package/dist/qa/overlays/QaMeasure.d.ts +7 -0
  160. package/dist/qa/overlays/QaMeasure.mjs +39 -0
  161. package/dist/qa/overlays/QaSwatch.d.ts +6 -0
  162. package/dist/qa/overlays/QaSwatch.mjs +11 -0
  163. package/dist/qa/overlays/QaTabOrder.d.ts +6 -0
  164. package/dist/qa/overlays/QaTabOrder.mjs +39 -0
  165. package/dist/qa/overlays/QaTooltip.d.ts +6 -0
  166. package/dist/qa/overlays/QaTooltip.mjs +65 -0
  167. package/dist/qa/overlays/QaViewport.d.ts +10 -0
  168. package/dist/qa/overlays/QaViewport.mjs +27 -0
  169. package/dist/qa/qaCss.d.ts +12 -0
  170. package/dist/qa/qaCss.mjs +45 -0
  171. package/dist/qa/qaSettings.d.ts +38 -0
  172. package/dist/qa/qaSettings.mjs +28 -0
  173. package/dist/qa/tabOrder.d.ts +2 -0
  174. package/dist/qa/tabOrder.mjs +8 -0
  175. package/dist/qa/usePageBox.d.ts +13 -0
  176. package/dist/qa/usePageBox.mjs +23 -0
  177. package/package.json +373 -33
  178. package/dist/components/DevToolsPanel/tabs/ElementsViewer/DetailsAttributes.mjs +0 -19
  179. package/dist/components/DevToolsPanel/tabs/ElementsViewer/DetailsDefinition.mjs +0 -20
  180. package/dist/components/DevToolsPanel/tabs/ElementsViewer/DetailsValue.d.ts +0 -10
  181. package/dist/components/DevToolsPanel/tabs/ElementsViewer/DetailsValue.mjs +0 -31
  182. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementDetails.d.ts +0 -8
  183. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementDetails.mjs +0 -21
  184. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementsList.d.ts +0 -8
  185. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementsList.mjs +0 -42
  186. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementsListItem.d.ts +0 -9
  187. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementsListItem.mjs +0 -24
  188. package/dist/components/DevToolsPanel/tabs/TracingViewer/useHighlightElement.d.ts +0 -2
  189. /package/dist/components/DevToolsPanel/tabs/ElementsViewer/{DetailsAttributes.d.ts → components/DetailsAttributes/DetailsAttributes.d.ts} +0 -0
  190. /package/dist/components/DevToolsPanel/tabs/ElementsViewer/{DetailsDefinition.d.ts → components/DetailsDefinition/DetailsDefinition.d.ts} +0 -0
@@ -0,0 +1,27 @@
1
+ import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
+ import { displayModeAt as n } from "@plitzi/sdk-shared/style";
3
+ //#region src/qa/overlays/QaViewport.tsx
4
+ var r = ({ box: r }) => {
5
+ let i = Math.round(r.width) < r.viewportWidth;
6
+ return /* @__PURE__ */ t("div", {
7
+ className: "pointer-events-none fixed top-2 z-[999999] -translate-x-1/2 rounded-full bg-zinc-900/90 px-3 py-1 font-mono text-[11px] whitespace-nowrap text-white shadow-lg ring-1 ring-white/10",
8
+ style: { left: r.left + r.width / 2 },
9
+ children: [
10
+ r.viewportWidth,
11
+ " × ",
12
+ r.viewportHeight,
13
+ " ·",
14
+ " ",
15
+ /* @__PURE__ */ e("span", {
16
+ className: "text-violet-300",
17
+ children: n(r.viewportWidth)
18
+ }),
19
+ i && /* @__PURE__ */ t("span", {
20
+ className: "text-zinc-400",
21
+ children: [" · page ", Math.round(r.width)]
22
+ })
23
+ ]
24
+ });
25
+ };
26
+ //#endregion
27
+ export { r as default };
@@ -0,0 +1,12 @@
1
+ import { QaSettings, VisionMode } from './qaSettings';
2
+ /** The id of the SVG filter a vision mode needs, for the ones a CSS function cannot say. */
3
+ export declare const visionFilterId: (mode: VisionMode) => string;
4
+ /** How each mode is drawn on the page's box. */
5
+ export declare const VISION_FILTER: Record<VisionMode, string>;
6
+ /**
7
+ * The colour matrices of the three dichromacies, as an SVG `feColorMatrix` takes them — the widely used approximations
8
+ * of how each sees, good enough to ask whether two states of a page can be told apart.
9
+ */
10
+ export declare const VISION_MATRIX: Record<'protanopia' | 'deuteranopia' | 'tritanopia', string>;
11
+ /** The rules for what is on; empty when nothing that needs a rule is. */
12
+ export declare const qaCss: (settings: QaSettings) => string;
@@ -0,0 +1,45 @@
1
+ import { QA_CHECKS as e, QA_FINDING_ATTRIBUTE as t, QA_PAGE_ATTRIBUTE as n } from "./qaSettings.mjs";
2
+ import { CHECKS as r } from "./checks/index.mjs";
3
+ //#region src/qa/qaCss.ts
4
+ var i = `[${n}]`, a = ":is([data-type=\"heading\"], [data-type=\"text\"], [data-type=\"paragraph\"], [data-type=\"button\"], [data-type=\"link\"])", o = `
5
+ ${i} [data-plitzi-el] { outline: 1px dashed rgba(124, 92, 255, 0.5); outline-offset: -1px; }
6
+ ${i} [data-plitzi-el]:hover { outline: 1.5px solid #7c5cff; outline-offset: -1.5px; }
7
+ ${i} ${a}[data-plitzi-el]:hover { position: relative; }
8
+ ${i} ${a}[data-plitzi-el]:hover::after {
9
+ content: attr(data-type) ' · ' attr(data-plitzi-el);
10
+ position: absolute;
11
+ left: -1px;
12
+ bottom: 100%;
13
+ z-index: 2147483000;
14
+ padding: 1px 6px;
15
+ border-radius: 4px 4px 0 0;
16
+ background-color: #7c5cff;
17
+ color: #ffffff;
18
+ font: 500 10px/1.6 ui-monospace, SFMono-Regular, Menlo, monospace;
19
+ letter-spacing: 0;
20
+ text-transform: none;
21
+ white-space: nowrap;
22
+ pointer-events: none;
23
+ }`, s = `${i}, ${i} * { cursor: crosshair !important; }`, c = `${i} *, ${i} ::before, ${i} ::after { animation-play-state: paused !important; }`, l = (e) => e.map((e) => `${i} [${t}~="${e}"] { outline: 2px solid ${r[e].colour} !important; outline-offset: 1px !important; box-shadow: 0 0 0 4px color-mix(in srgb, ${r[e].colour} 22%, transparent) !important; }`).join("\n"), u = (e) => `plitzi-qa-${e}`, d = {
24
+ none: "none",
25
+ grayscale: "grayscale(1)",
26
+ protanopia: `url(#${u("protanopia")})`,
27
+ deuteranopia: `url(#${u("deuteranopia")})`,
28
+ tritanopia: `url(#${u("tritanopia")})`,
29
+ blurred: "blur(2px)"
30
+ }, f = {
31
+ protanopia: "0.567 0.433 0 0 0 0.558 0.442 0 0 0 0 0.242 0.758 0 0 0 0 0 1 0",
32
+ deuteranopia: "0.625 0.375 0 0 0 0.7 0.3 0 0 0 0 0.3 0.7 0 0 0 0 0 1 0",
33
+ tritanopia: "0.95 0.05 0 0 0 0 0.433 0.567 0 0 0 0.475 0.525 0 0 0 0 0 1 0"
34
+ }, p = (t) => {
35
+ let n = e.filter((e) => t.checks[e]);
36
+ return [
37
+ t.inspect ? s : "",
38
+ t.outlines ? o : "",
39
+ t.paused ? c : "",
40
+ t.vision === "none" ? "" : `${i} { filter: ${d[t.vision]}; }`,
41
+ l(n)
42
+ ].filter(Boolean).join("\n");
43
+ };
44
+ //#endregion
45
+ export { d as VISION_FILTER, f as VISION_MATRIX, p as qaCss, u as visionFilterId };
@@ -0,0 +1,38 @@
1
+ /**
2
+ * What the QA tab can turn on over a running page — for whoever checks a build before it ships: a designer lining
3
+ * things up, a tester looking for what breaks. Kept in this browser, and only ever offered where the dev tools are,
4
+ * which is only where debugging is authorized.
5
+ */
6
+ export type VisionMode = 'none' | 'grayscale' | 'protanopia' | 'deuteranopia' | 'tritanopia' | 'blurred';
7
+ /** What the checks look for, in the order the tab lists them. */
8
+ export declare const QA_CHECKS: readonly ["overflow", "names", "targets", "contrast", "images", "headings"];
9
+ export type QaCheck = (typeof QA_CHECKS)[number];
10
+ export interface QaSettings {
11
+ /** Point at an element for its box, type and style; click to keep it in the tab; Alt to measure to another. */
12
+ inspect: boolean;
13
+ /** The columns the page is laid out on (`@plitzi/sdk-shared/style`'s layout grid), over it. */
14
+ grid: boolean;
15
+ /** Every element's box, and its type and id when pointed at. */
16
+ outlines: boolean;
17
+ /** The order the Tab key walks the page's controls in, numbered on them. */
18
+ tabOrder: boolean;
19
+ /** The viewport's size and the breakpoint whose rules show. */
20
+ viewport: boolean;
21
+ /** Every animation held where it is, to look at a moment of it. */
22
+ paused: boolean;
23
+ /** The page as a visitor who asked for less motion gets it — the SDK's own rule, by class. */
24
+ reducedMotion: boolean;
25
+ vision: VisionMode;
26
+ checks: Record<QaCheck, boolean>;
27
+ }
28
+ export declare const QA_DEFAULTS: QaSettings;
29
+ /** The tools that are simply on or off. */
30
+ export type QaSwitch = 'inspect' | 'grid' | 'outlines' | 'tabOrder' | 'viewport' | 'paused' | 'reducedMotion';
31
+ /** Whether any of it is on: the page is marked only while something is. */
32
+ export declare const isQaActive: (settings: QaSettings) => boolean;
33
+ /** The class the SDK's stylesheet stills every animation under, as its `prefers-reduced-motion` rule does. */
34
+ export declare const REDUCED_MOTION_CLASS = "plitzi-reduced-motion";
35
+ /** The attribute the page's box is marked with while QA is on: what every rule here is scoped to. */
36
+ export declare const QA_PAGE_ATTRIBUTE = "data-plitzi-qa-page";
37
+ /** The attribute a check marks what it found with, its value the checks that found it. */
38
+ export declare const QA_FINDING_ATTRIBUTE = "data-plitzi-qa-finding";
@@ -0,0 +1,28 @@
1
+ //#region src/qa/qaSettings.ts
2
+ var e = [
3
+ "overflow",
4
+ "names",
5
+ "targets",
6
+ "contrast",
7
+ "images",
8
+ "headings"
9
+ ], t = {
10
+ inspect: !1,
11
+ grid: !1,
12
+ outlines: !1,
13
+ tabOrder: !1,
14
+ viewport: !1,
15
+ paused: !1,
16
+ reducedMotion: !1,
17
+ vision: "none",
18
+ checks: {
19
+ overflow: !1,
20
+ names: !1,
21
+ targets: !1,
22
+ contrast: !1,
23
+ images: !1,
24
+ headings: !1
25
+ }
26
+ }, n = (e) => e.inspect || e.grid || e.outlines || e.tabOrder || e.viewport || e.paused || e.reducedMotion || e.vision !== "none" || Object.values(e.checks).some(Boolean), r = "plitzi-reduced-motion", i = "data-plitzi-qa-page", a = "data-plitzi-qa-finding";
27
+ //#endregion
28
+ export { e as QA_CHECKS, t as QA_DEFAULTS, a as QA_FINDING_ATTRIBUTE, i as QA_PAGE_ATTRIBUTE, r as REDUCED_MOTION_CLASS, n as isQaActive };
@@ -0,0 +1,2 @@
1
+ /** The order the Tab key walks the page's controls in: positive `tabindex` first, by value, then the page's order. */
2
+ export declare const tabOrderOf: (page: Element) => Element[];
@@ -0,0 +1,8 @@
1
+ import { INTERACTIVE as e, isDrawn as t } from "./checks/dom.mjs";
2
+ //#region src/qa/tabOrder.ts
3
+ var n = (n) => {
4
+ let r = [...n.querySelectorAll(`${e}, [tabindex]`)].filter((e) => Number(e.getAttribute("tabindex") ?? 0) >= 0 && t(e) && !e.matches(":disabled")), i = (e) => Number(e.getAttribute("tabindex") ?? 0);
5
+ return [...r.filter((e) => i(e) > 0).sort((e, t) => i(e) - i(t)), ...r.filter((e) => i(e) === 0)];
6
+ };
7
+ //#endregion
8
+ export { n as tabOrderOf };
@@ -0,0 +1,13 @@
1
+ import { RefObject } from 'react';
2
+ export interface PageBox {
3
+ left: number;
4
+ width: number;
5
+ viewportWidth: number;
6
+ viewportHeight: number;
7
+ }
8
+ /**
9
+ * Where the page sits across the window, and the window's size: the page is narrower than the window while the panel
10
+ * is docked beside it, and its breakpoints still follow the window, as its media queries do.
11
+ */
12
+ declare const usePageBox: (pageRef: RefObject<HTMLElement | null>) => PageBox;
13
+ export default usePageBox;
@@ -0,0 +1,23 @@
1
+ import { useEffect as e, useState as t } from "react";
2
+ //#region src/qa/usePageBox.ts
3
+ var n = (e) => {
4
+ let t = typeof window > "u" ? 0 : window.innerWidth, n = typeof window > "u" ? 0 : window.innerHeight, r = e?.getBoundingClientRect();
5
+ return {
6
+ left: r?.left ?? 0,
7
+ width: r?.width ?? t,
8
+ viewportWidth: t,
9
+ viewportHeight: n
10
+ };
11
+ }, r = (r) => {
12
+ let [i, a] = t(() => n(r.current));
13
+ return e(() => {
14
+ let e = r.current, t = () => a(n(e));
15
+ t(), window.addEventListener("resize", t);
16
+ let i = e ? new ResizeObserver(t) : void 0;
17
+ return e && i?.observe(e), () => {
18
+ window.removeEventListener("resize", t), i?.disconnect();
19
+ };
20
+ }, [r]), i;
21
+ };
22
+ //#endregion
23
+ export { r as default };