jig-ui 0.16.0 → 0.17.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/CHANGELOG.md +65 -0
- package/README.md +7 -6
- package/dist/index.js +730 -235
- package/examples/A-01.html +7 -0
- package/examples/A-02.html +7 -0
- package/examples/A-03.html +7 -0
- package/examples/A-04.html +7 -0
- package/examples/A-05.html +7 -0
- package/examples/A-06.html +7 -0
- package/examples/A-07.html +7 -0
- package/examples/A-08.html +7 -0
- package/examples/A-09.html +7 -0
- package/examples/A-10.html +7 -0
- package/examples/A-135.html +7 -0
- package/examples/A-136.html +7 -0
- package/examples/A-137.html +7 -0
- package/examples/A-138.html +7 -0
- package/examples/A-139.html +7 -0
- package/examples/A-140.html +7 -0
- package/examples/A-141.html +7 -0
- package/examples/A-142.html +7 -0
- package/examples/A-143.html +7 -0
- package/examples/A-144.html +7 -0
- package/examples/A-146.html +7 -0
- package/examples/A-58.html +7 -0
- package/examples/A-59.html +7 -0
- package/examples/A-60.html +7 -0
- package/examples/A-67.html +7 -0
- package/examples/B-105.html +7 -0
- package/examples/B-106.html +7 -0
- package/examples/B-11.html +7 -0
- package/examples/B-12.html +7 -0
- package/examples/B-13.html +7 -0
- package/examples/B-14.html +7 -0
- package/examples/B-15.html +7 -0
- package/examples/B-16.html +7 -0
- package/examples/B-17.html +7 -0
- package/examples/B-75.html +7 -0
- package/examples/B-76.html +7 -0
- package/examples/B-77.html +7 -0
- package/examples/B-78.html +7 -0
- package/examples/C-18.html +7 -0
- package/examples/C-19.html +7 -0
- package/examples/C-20.html +7 -0
- package/examples/C-21.html +7 -0
- package/examples/C-22.html +11 -0
- package/examples/C-49.html +7 -0
- package/examples/C-50.html +7 -0
- package/examples/C-66.html +7 -0
- package/examples/C-68.html +7 -0
- package/examples/D-111.html +7 -0
- package/examples/D-112.html +7 -0
- package/examples/D-114.html +7 -0
- package/examples/D-115.html +7 -0
- package/examples/D-23.html +11 -0
- package/examples/D-24.html +7 -0
- package/examples/D-25.html +7 -0
- package/examples/D-26.html +7 -0
- package/examples/D-27.html +7 -0
- package/examples/D-69.html +7 -0
- package/examples/D-70.html +7 -0
- package/examples/D-71.html +7 -0
- package/examples/D-72.html +7 -0
- package/examples/D-96.html +7 -0
- package/examples/E-116.html +7 -0
- package/examples/E-28.html +7 -0
- package/examples/E-29.html +7 -0
- package/examples/E-30.html +7 -0
- package/examples/E-31.html +7 -0
- package/examples/E-32.html +7 -0
- package/examples/E-33.html +11 -0
- package/examples/E-34.html +7 -0
- package/examples/E-35.html +7 -0
- package/examples/E-51.html +7 -0
- package/examples/E-52.html +7 -0
- package/examples/E-61.html +7 -0
- package/examples/E-62.html +7 -0
- package/examples/E-63.html +7 -0
- package/examples/E-64.html +7 -0
- package/examples/E-65.html +7 -0
- package/examples/E-73.html +7 -0
- package/examples/E-74.html +7 -0
- package/examples/E-91.html +7 -0
- package/examples/E-92.html +7 -0
- package/examples/E-93.html +7 -0
- package/examples/E-94.html +7 -0
- package/examples/E-95.html +7 -0
- package/examples/F-100.html +7 -0
- package/examples/F-101.html +7 -0
- package/examples/F-102.html +7 -0
- package/examples/F-103.html +7 -0
- package/examples/F-104.html +7 -0
- package/examples/F-113.html +7 -0
- package/examples/F-147.html +7 -0
- package/examples/F-36.html +7 -0
- package/examples/F-37.html +7 -0
- package/examples/F-38.html +7 -0
- package/examples/F-39.html +7 -0
- package/examples/F-40.html +7 -0
- package/examples/F-41.html +11 -0
- package/examples/F-97.html +7 -0
- package/examples/F-98.html +7 -0
- package/examples/F-99.html +7 -0
- package/examples/G-145.html +7 -0
- package/examples/G-42.html +7 -0
- package/examples/G-43.html +10 -0
- package/examples/G-44.html +7 -0
- package/examples/H-117.html +11 -0
- package/examples/H-119.html +13 -0
- package/examples/H-45.html +13 -0
- package/examples/H-46.html +10 -0
- package/examples/H-47.html +15 -0
- package/examples/H-48.html +8 -0
- package/examples/I-118.html +7 -0
- package/examples/I-53.html +7 -0
- package/examples/I-54.html +7 -0
- package/examples/I-55.html +7 -0
- package/examples/I-56.html +7 -0
- package/examples/I-57.html +7 -0
- package/examples/I-79.html +7 -0
- package/examples/I-80.html +7 -0
- package/examples/I-81.html +7 -0
- package/examples/I-82.html +7 -0
- package/examples/I-83.html +7 -0
- package/examples/I-84.html +7 -0
- package/examples/I-85.html +7 -0
- package/examples/I-86.html +7 -0
- package/examples/I-87.html +7 -0
- package/examples/I-88.html +7 -0
- package/examples/I-89.html +7 -0
- package/examples/I-90.html +7 -0
- package/examples/J-120.html +7 -0
- package/examples/J-121.html +7 -0
- package/examples/J-122.html +7 -0
- package/examples/J-123.html +7 -0
- package/examples/J-124.html +8 -0
- package/examples/J-125.html +10 -0
- package/examples/J-126.html +9 -0
- package/examples/J-127.html +10 -0
- package/examples/K-128.html +9 -0
- package/examples/K-129.html +7 -0
- package/examples/K-130.html +7 -0
- package/examples/K-131.html +11 -0
- package/examples/K-132.html +7 -0
- package/examples/K-133.html +8 -0
- package/examples/K-134.html +9 -0
- package/examples/README.md +44 -0
- package/package.json +3 -2
- package/rules/00-anti-patterns.md +67 -0
- package/rules/01-modes.md +1 -1
- package/rules/03-patterns.md +6 -6
- package/rules/04-principles.md +12 -12
- package/rules/05-copy.md +3 -0
- package/rules.index.json +101 -0
- package/templates/COMMAND.md.tmpl +10 -3
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- F-98 · Labels beside inputs -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:6px;"><div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;flex-wrap:nowrap"><span style="width:80px;text-align:right;font-size:12px;font-weight:600">Name</span><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;flex:1"> </div></div><div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;flex-wrap:nowrap"><span style="width:80px;text-align:right;font-size:12px;font-weight:600">Work email</span><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;flex:1"> </div></div><div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;flex-wrap:nowrap"><span style="width:80px;text-align:right;font-size:12px;font-weight:600">Team size</span><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;flex:1"> </div></div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:4px;"><div style="display:flex;flex-direction:column;gap:0px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;margin-bottom:2px">Name</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;padding:3px 8px"> </div></div><div style="display:flex;flex-direction:column;gap:0px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;margin-bottom:2px">Work email</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;padding:3px 8px"> </div></div><div style="display:flex;flex-direction:column;gap:0px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;margin-bottom:2px">Team size</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;padding:3px 8px"> </div></div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- F-99 · Uniform field widths -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:3px;"><div style="display:flex;flex-direction:column;gap:0px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;margin-bottom:2px">Postcode</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;width:230px;padding:4px 8px"><span style="color:#8a8a8a">SW1A 1AA</span></div></div><div style="display:flex;flex-direction:column;gap:0px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;margin-bottom:2px">Street address</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;width:230px;padding:4px 8px"><span style="color:#8a8a8a">10 Downing Street</span></div></div><div style="display:flex;flex-direction:column;gap:0px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;margin-bottom:2px">CVC</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;width:230px;padding:4px 8px"><span style="color:#8a8a8a">123</span></div></div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:3px;"><div style="display:flex;flex-direction:column;gap:0px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;margin-bottom:2px">Postcode</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;width:90px;padding:4px 8px"><span style="color:#8a8a8a">SW1A 1AA</span></div></div><div style="display:flex;flex-direction:column;gap:0px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;margin-bottom:2px">Street address</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;width:230px;padding:4px 8px"><span style="color:#8a8a8a">10 Downing Street</span></div></div><div style="display:flex;flex-direction:column;gap:0px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;margin-bottom:2px">CVC</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;width:50px;padding:4px 8px"><span style="color:#8a8a8a">123</span></div></div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- G-145 · A pulsing status dot -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;gap:10px;align-items:center;flex-wrap:wrap;"><span style="position:relative;display:inline-flex;width:10px;height:10px"><span style="position:absolute;inset:-6px;border-radius:50%;background:#22c55e;opacity:.25"></span><span style="position:absolute;inset:-3px;border-radius:50%;background:#22c55e;opacity:.4"></span><span style="position:relative;width:10px;height:10px;border-radius:50%;background:#22c55e"></span></span><b>All systems operational</b></div><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Pulses forever, on a status unchanged for a week.</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;"><span style="width:10px;height:10px;border-radius:50%;background:#15803d;display:inline-block"></span><b>All systems operational</b><span style="color:#5c5c5c">since 12 March</span></div><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Still. Motion is kept for a change happening now.</div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- G-42 · Entrance animation on everything -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:4px;"><div style="opacity:0.25"><div style="background:#ffffff;border:1px solid #d6d6d6;border-radius:8px;padding:12px;padding:6px 10px">Search</div></div><div style="opacity:0.5"><div style="background:#ffffff;border:1px solid #d6d6d6;border-radius:8px;padding:12px;padding:6px 10px">Alerts</div></div><div style="opacity:0.8"><div style="background:#ffffff;border:1px solid #d6d6d6;border-radius:8px;padding:12px;padding:6px 10px">Sharing</div></div></div><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Every block fades and rises as you scroll.</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:4px;"><div style="background:#ffffff;border:1px solid #d6d6d6;border-radius:8px;padding:12px;padding:6px 10px">Search</div><div style="background:#ffffff;border:1px solid #d6d6d6;border-radius:8px;padding:12px;padding:6px 10px">Alerts</div><div style="background:#ffffff;border:1px solid #d6d6d6;border-radius:8px;padding:12px;padding:6px 10px">Sharing</div></div><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Present when you arrive. Motion is kept for changes.</div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<!-- G-43 · `prefers-reduced-motion` ignored -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">.hero { animation: float 3s infinite; }</pre><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Moves for everyone, including people it makes ill.</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">.hero { animation: float 3s infinite; }
|
|
7
|
+
@media (prefers-reduced-motion: reduce) {
|
|
8
|
+
.hero { animation: none; }
|
|
9
|
+
}</pre></div>
|
|
10
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- G-44 · Durations too long -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:6px;"><div style="display:flex;gap:6px;align-items:center;flex-wrap:wrap;"><span style="display:inline-block;align-self:flex-start;background:#ffffff;color:#1f1f1f;border:1px solid #d6d6d6;border-radius:6px;padding:6px 11px;font-weight:600;font-size:12px;">Open</span><span style="color:#5c5c5c">····· 800ms ·····</span><div style="background:#ffffff;border:1px solid #d6d6d6;border-radius:8px;padding:12px;padding:6px 10px">Menu</div></div><div style="font-size:11px;color:#5c5c5c;margin-top:8px">A menu that takes most of a second to arrive.</div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:6px;"><div style="display:flex;gap:6px;align-items:center;flex-wrap:wrap;"><span style="display:inline-block;align-self:flex-start;background:#ffffff;color:#1f1f1f;border:1px solid #d6d6d6;border-radius:6px;padding:6px 11px;font-weight:600;font-size:12px;">Open</span><span style="color:#5c5c5c">· 150ms ·</span><div style="background:#ffffff;border:1px solid #d6d6d6;border-radius:8px;padding:12px;padding:6px 10px">Menu</div></div><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Fast enough to feel like an answer.</div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<!-- H-117 · A token name nothing declares -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">.card {
|
|
4
|
+
background: var(--color-surface-2);
|
|
5
|
+
}</pre><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Nothing declares --color-surface-2: the card has no background.</div></div>
|
|
6
|
+
</figure>
|
|
7
|
+
<figure data-example="do">
|
|
8
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">.card {
|
|
9
|
+
background: var(--color-bg-raised);
|
|
10
|
+
}</pre><div style="font-size:11px;color:#5c5c5c;margin-top:8px">A token the layer declares.</div></div>
|
|
11
|
+
</figure>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!-- H-119 · A generic element where a native one says what the content is -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;"><div class="nav">
|
|
4
|
+
<div><a href="/docs">Docs</a></div>
|
|
5
|
+
<div><a href="/pricing">Pricing</a></div>
|
|
6
|
+
</div></pre></div>
|
|
7
|
+
</figure>
|
|
8
|
+
<figure data-example="do">
|
|
9
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;"><nav aria-label="Main">
|
|
10
|
+
<a href="/docs">Docs</a>
|
|
11
|
+
<a href="/pricing">Pricing</a>
|
|
12
|
+
</nav></pre></div>
|
|
13
|
+
</figure>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!-- H-45 · New component instead of the existing one -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">// components/PrimaryBtn.tsx, new
|
|
4
|
+
export const PrimaryBtn = …
|
|
5
|
+
|
|
6
|
+
// components/Button.tsx already has
|
|
7
|
+
// variant="primary"</pre></div>
|
|
8
|
+
</figure>
|
|
9
|
+
<figure data-example="do">
|
|
10
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;"><Button variant="primary">
|
|
11
|
+
Save
|
|
12
|
+
</Button></pre></div>
|
|
13
|
+
</figure>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<!-- H-46 · Local convention overridden -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">// every file here uses clsx and CSS modules
|
|
4
|
+
const s = { padding: 12, color: "#333" }
|
|
5
|
+
return <div style={s}>…</pre></div>
|
|
6
|
+
</figure>
|
|
7
|
+
<figure data-example="do">
|
|
8
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">import styles from "./Card.module.css"
|
|
9
|
+
return <div className={styles.card}>…</pre></div>
|
|
10
|
+
</figure>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!-- H-47 · Values hard-coded past the token layer -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">.card {
|
|
4
|
+
color: #3a3a3a;
|
|
5
|
+
padding: 13px 17px;
|
|
6
|
+
border-radius: 9px;
|
|
7
|
+
}</pre></div>
|
|
8
|
+
</figure>
|
|
9
|
+
<figure data-example="do">
|
|
10
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">.card {
|
|
11
|
+
color: var(--color-text-strong);
|
|
12
|
+
padding: var(--spacing-card);
|
|
13
|
+
border-radius: var(--radius-surface);
|
|
14
|
+
}</pre></div>
|
|
15
|
+
</figure>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<!-- H-48 · JavaScript for something CSS does -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">el.onmouseenter = () =>
|
|
4
|
+
el.style.textDecoration = "underline"</pre></div>
|
|
5
|
+
</figure>
|
|
6
|
+
<figure data-example="do">
|
|
7
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">a:hover { text-decoration: underline; }</pre></div>
|
|
8
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-118 · Em dashes in interface text -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:4px;"><div style="font-size:14px;">Your plan — including every seat — renews monthly.</div><div style="font-size:14px;">Free — forever.</div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:4px;"><div style="font-size:14px;">Your plan renews monthly, including every seat.</div><div style="font-size:14px;">Free forever.</div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-53 · Title Case Used For Interface Text -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:8px;"><div style="font-size:15px;font-weight:700;line-height:1.2;letter-spacing:-0.01em;text-wrap:balance;">Save Post For Later?</div><div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;"><span style="display:inline-block;align-self:flex-start;background:#1f1f1f;color:#fff;border-radius:6px;padding:7px 12px;font-weight:600;font-size:12px;">Add To Cart</span><span style="display:inline-block;align-self:flex-start;background:#ffffff;color:#1f1f1f;border:1px solid #d6d6d6;border-radius:6px;padding:6px 11px;font-weight:600;font-size:12px;">Keep Browsing</span></div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:8px;"><div style="font-size:15px;font-weight:700;line-height:1.2;letter-spacing:-0.01em;text-wrap:balance;">Save post for later?</div><div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;"><span style="display:inline-block;align-self:flex-start;background:#1f1f1f;color:#fff;border-radius:6px;padding:7px 12px;font-weight:600;font-size:12px;">Add to cart</span><span style="display:inline-block;align-self:flex-start;background:#ffffff;color:#1f1f1f;border:1px solid #d6d6d6;border-radius:6px;padding:6px 11px;font-weight:600;font-size:12px;">Keep browsing</span></div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-54 · Text that buries the point -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="font-size:14px;">If you want to learn how to design interfaces, you should read these 5 UI design books</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="font-size:14px;">5 UI design books worth reading</div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-55 · Vague or inflated language -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="font-size:14px;">Leverage our seamless, best-in-class solution to utilise actionable insights across your ecosystem.</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="font-size:14px;">Ask your logs a question and see the lines that answer it.</div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-56 · Brand colour spent on decoration -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:4px;"><div style="font-size:16px;font-weight:700;line-height:1.2;letter-spacing:-0.01em;text-wrap:balance;color:#0e7490">Retention</div><div style="height:3px;width:40px;background:#0e7490;margin:4px 0"></div><div style="font-size:14px;font-size:12px">How long logs are kept.</div><div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;"><span style="display:inline-block;align-self:flex-start;background:#1f1f1f;color:#fff;border-radius:6px;padding:7px 12px;font-weight:600;font-size:12px;background:#0e7490">Change plan</span></div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:4px;"><div style="font-size:16px;font-weight:700;line-height:1.2;letter-spacing:-0.01em;text-wrap:balance;">Retention</div><div style="font-size:14px;font-size:12px">How long logs are kept.</div><div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;"><span style="display:inline-block;align-self:flex-start;background:#1f1f1f;color:#fff;border-radius:6px;padding:7px 12px;font-weight:600;font-size:12px;background:#0e7490">Change plan</span></div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-57 · Actions and text centred by default -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:8px;"><div style="font-size:15px;font-weight:700;line-height:1.2;letter-spacing:-0.01em;text-wrap:balance;text-align:center">Delete this workspace?</div><div style="font-size:14px;text-align:center;font-size:12px">This removes 3 saved searches and 2 alerts.</div><div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:center"><span style="display:inline-block;align-self:flex-start;background:#1f1f1f;color:#fff;border-radius:6px;padding:7px 12px;font-weight:600;font-size:12px;">Delete</span><span style="display:inline-block;align-self:flex-start;background:#ffffff;color:#1f1f1f;border:1px solid #d6d6d6;border-radius:6px;padding:6px 11px;font-weight:600;font-size:12px;">Cancel</span></div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:8px;"><div style="font-size:15px;font-weight:700;line-height:1.2;letter-spacing:-0.01em;text-wrap:balance;">Delete this workspace?</div><div style="font-size:14px;font-size:12px">This removes 3 saved searches and 2 alerts.</div><div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;"><span style="display:inline-block;align-self:flex-start;background:#1f1f1f;color:#fff;border-radius:6px;padding:7px 12px;font-weight:600;font-size:12px;">Delete</span><span style="display:inline-block;align-self:flex-start;background:#ffffff;color:#1f1f1f;border:1px solid #d6d6d6;border-radius:6px;padding:6px 11px;font-weight:600;font-size:12px;">Cancel</span></div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-79 · Padding words and introductory phrases -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:8px;"><div style="font-size:14px;">Would you like to save the article? Don’t worry, you’ll still be able to publish it later.</div><div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;"><span style="display:inline-block;align-self:flex-start;background:#1f1f1f;color:#fff;border-radius:6px;padding:7px 12px;font-weight:600;font-size:12px;">Yes, save it</span></div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:8px;"><div style="font-size:14px;">Save article to publish later?</div><div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;"><span style="display:inline-block;align-self:flex-start;background:#1f1f1f;color:#fff;border-radius:6px;padding:7px 12px;font-weight:600;font-size:12px;">Save</span></div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-80 · Long text without a structure -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="font-size:14px;font-size:12px">We moved to a new data centre last month, which took some time and involved several teams, and because of that some older exports use the old address, so if you have a saved link you will need to regenerate it from Settings.</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:4px;"><div style="font-size:14px;font-weight:700;line-height:1.2;letter-spacing:-0.01em;text-wrap:balance;">Regenerate saved export links</div><div style="font-size:14px;font-size:12px">Old links point to a data centre we have closed. Settings → Exports → Regenerate.</div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-81 · Vague headings -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:8px;"><div style="font-size:15px;font-weight:700;line-height:1.2;letter-spacing:-0.01em;text-wrap:balance;">Powerful features</div><div style="font-size:20px;font-weight:700;line-height:1.2;letter-spacing:-0.01em;text-wrap:balance;">Build the future of work</div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:8px;"><div style="font-size:20px;font-weight:700;line-height:1.2;letter-spacing:-0.01em;text-wrap:balance;">Search your logs by asking in plain English</div><div style="font-size:15px;font-weight:700;line-height:1.2;letter-spacing:-0.01em;text-wrap:balance;">Alerts on any question you ask twice</div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-82 · Uneven text length across parallel elements -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;gap:6px;align-items:center;flex-wrap:wrap;flex-wrap:nowrap;align-items:stretch"><div style="background:#ffffff;border:1px solid #d6d6d6;border-radius:8px;padding:12px;flex:1;min-width:0"><b>Search</b><div style="color:#5c5c5c;margin-top:4px;">Words.</div></div><div style="background:#ffffff;border:1px solid #d6d6d6;border-radius:8px;padding:12px;flex:1;min-width:0"><b>Alerts</b><div style="color:#5c5c5c;margin-top:4px;">Saved questions that run every five minutes and message you when the answer changes.</div></div><div style="background:#ffffff;border:1px solid #d6d6d6;border-radius:8px;padding:12px;flex:1;min-width:0"><b>Sharing</b><div style="color:#5c5c5c;margin-top:4px;">A link.</div></div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;gap:6px;align-items:center;flex-wrap:wrap;flex-wrap:nowrap;align-items:stretch"><div style="background:#ffffff;border:1px solid #d6d6d6;border-radius:8px;padding:12px;flex:1;min-width:0"><b>Search</b><div style="color:#5c5c5c;margin-top:4px;">Ask in plain English.</div></div><div style="background:#ffffff;border:1px solid #d6d6d6;border-radius:8px;padding:12px;flex:1;min-width:0"><b>Alerts</b><div style="color:#5c5c5c;margin-top:4px;">Hear when an answer changes.</div></div><div style="background:#ffffff;border:1px solid #d6d6d6;border-radius:8px;padding:12px;flex:1;min-width:0"><b>Sharing</b><div style="color:#5c5c5c;margin-top:4px;">Send any result by link.</div></div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-83 · Numbers spelled out -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="font-size:14px;">Trusted by eight hundred and ninety-nine teams</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="font-size:14px;">Trusted by 899 teams</div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-84 · Abbreviations and acronyms -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="font-size:14px;">The ETA of the dept. mgr. is COB tmrw.</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="font-size:14px;">The department manager will reply by the end of tomorrow.</div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-85 · UPPERCASE -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:0px;"><div style="font-size:14px;font-weight:700">YOUR TRIAL ENDS IN 3 DAYS. UPGRADE NOW TO KEEP YOUR SAVED SEARCHES.</div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:4px;"><div style="font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#5c5c5c">Trial</div><div style="font-size:14px;">Your trial ends in 3 days. Upgrade to keep your saved searches.</div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-86 · Full stops on fragments -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:2px;"><div style="font-size:14px;">Free secure parking.</div><div style="font-size:14px;">Fast check-in.</div><div style="font-size:14px;">Waterfront view</div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:2px;"><div style="font-size:14px;">Free secure parking</div><div style="font-size:14px;">Fast check-in</div><div style="font-size:14px;">Waterfront view</div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-87 · Inconsistent vocabulary -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:2px;"><div style="font-size:14px;">Create a <b>workspace</b></div><div style="font-size:14px;">Invite people to your <b>project</b></div><div style="font-size:14px;">Delete this <b>space</b></div><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Three words. Are they three things?</div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:2px;"><div style="font-size:14px;">Create a <b>workspace</b></div><div style="font-size:14px;">Invite people to your <b>workspace</b></div><div style="font-size:14px;">Delete this <b>workspace</b></div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-88 · "My" or "your" on form labels -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:2px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;">Your email</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;"> </div><div style="font-size:12px;font-weight:600;margin-bottom:4px;">My company</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;"> </div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:2px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;">Email</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;"> </div><div style="font-size:12px;font-weight:600;margin-bottom:4px;">Company</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;"> </div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-89 · Generic link text -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:8px;"><div style="font-size:14px;">Alerts, sharing and saved searches. <u>Learn more</u></div><div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;"><span style="display:inline-block;align-self:flex-start;background:#1f1f1f;color:#fff;border-radius:6px;padding:7px 12px;font-weight:600;font-size:12px;">Get started</span><span style="display:inline-block;align-self:flex-start;background:#ffffff;color:#1f1f1f;border:1px solid #d6d6d6;border-radius:6px;padding:6px 11px;font-weight:600;font-size:12px;">Learn more</span></div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:8px;"><div style="font-size:14px;"><u>How alerts work</u> · <u>Sharing a search</u></div><div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;"><span style="display:inline-block;align-self:flex-start;background:#1f1f1f;color:#fff;border-radius:6px;padding:7px 12px;font-weight:600;font-size:12px;">Create a workspace</span><span style="display:inline-block;align-self:flex-start;background:#ffffff;color:#1f1f1f;border:1px solid #d6d6d6;border-radius:6px;padding:6px 11px;font-weight:600;font-size:12px;">Book a 20-minute demo</span></div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- I-90 · Error messages that report without helping -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:2px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;">Card number</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;border-color:#b91c1c">4242 4242</div><div style="color:#b91c1c;font-size:12px">Error: validation failed.</div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:2px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;">Card number</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;border-color:#b91c1c">4242 4242</div><div style="color:#b91c1c;font-size:12px">✕ This number is 8 digits. Card numbers are 16.</div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- J-120 · Metadata that no longer matches the page -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="background:#fff;border:1px solid #d6d6d6;border-radius:8px;padding:10px;"><div style="font-size:11px;color:#3f6212">tidewell.io</div><div style="color:#1a0dab;font-size:15px;line-height:1.25">Tidewell · The observability platform for enterprises</div><div style="font-size:12px;color:#4d5156;margin-top:2px">Unify metrics, traces and logs across your enterprise stack.</div></div><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Metadata from before the page was rewritten.</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="background:#fff;border:1px solid #d6d6d6;border-radius:8px;padding:10px;"><div style="font-size:11px;color:#3f6212">tidewell.io</div><div style="color:#1a0dab;font-size:15px;line-height:1.25">Tidewell · Ask your logs in plain English</div><div style="font-size:12px;color:#4d5156;margin-top:2px">Search your server logs by asking a question. For teams of 2 to 50.</div></div><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Changed in the same commit as the headline.</div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- J-121 · An indexable page with no title or description of its own -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="background:#fff;border:1px solid #d6d6d6;border-radius:8px;padding:10px;"><div style="font-size:11px;color:#3f6212">tidewell.io › pricing</div><div style="color:#1a0dab;font-size:15px;line-height:1.25">Tidewell</div><div style="font-size:12px;color:#4d5156;margin-top:2px">Home · Product · Docs · Pricing · Sign in · Features · Alerts…</div></div><div style="font-size:11px;color:#5c5c5c;margin-top:8px">No title or description of its own: the nav is the snippet.</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="background:#fff;border:1px solid #d6d6d6;border-radius:8px;padding:10px;"><div style="font-size:11px;color:#3f6212">tidewell.io › pricing</div><div style="color:#1a0dab;font-size:15px;line-height:1.25">Pricing · Tidewell</div><div style="font-size:12px;color:#4d5156;margin-top:2px">$0 for one person, $49 a month for a team of ten. Priced by log volume.</div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- J-122 · Metadata past its budget -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="background:#fff;border:1px solid #d6d6d6;border-radius:8px;padding:10px;"><div style="font-size:11px;color:#3f6212">tidewell.io</div><div style="color:#1a0dab;font-size:15px;line-height:1.25">Tidewell · Search your server logs by asking in plain English, for small te…</div><div style="font-size:12px;color:#4d5156;margin-top:2px">Tidewell turns plain English questions into precise log queries across every service you run, so small teams can find the lines that explain an incident without…</div></div><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Cut mid-word at both ends.</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="background:#fff;border:1px solid #d6d6d6;border-radius:8px;padding:10px;"><div style="font-size:11px;color:#3f6212">tidewell.io</div><div style="color:#1a0dab;font-size:15px;line-height:1.25">Tidewell · Search your logs in plain English</div><div style="font-size:12px;color:#4d5156;margin-top:2px">Ask your server logs a question and see the lines that answer it. For teams of 2 to 50.</div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- J-123 · A page that must not be indexed and does not say so -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="background:#fff;border:1px solid #d6d6d6;border-radius:8px;padding:10px;"><div style="font-size:11px;color:#3f6212">tidewell.io › admin › billing</div><div style="color:#1a0dab;font-size:15px;line-height:1.25">Admin · Billing overrides · Tidewell</div><div style="font-size:12px;color:#4d5156;margin-top:2px">Override plan limits for any customer account.</div></div><div style="font-size:11px;color:#5c5c5c;margin-top:8px">An admin screen in a search result.</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;"><meta name="robots" content="noindex"></pre><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Said on the page itself, not in robots.txt.</div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<!-- J-124 · A sitemap that contradicts the page -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;"><url><loc>https://tidewell.io/admin</loc></url>
|
|
4
|
+
<url><loc>/pricing</loc></url></pre><div style="font-size:11px;color:#5c5c5c;margin-top:8px">A noindex page listed, and a path a crawler drops.</div></div>
|
|
5
|
+
</figure>
|
|
6
|
+
<figure data-example="do">
|
|
7
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;"><url><loc>https://tidewell.io/pricing</loc></url></pre><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Indexable pages only, as full URLs.</div></div>
|
|
8
|
+
</figure>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<!-- J-125 · Invented facts in metadata -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">lastModified: new Date(),
|
|
4
|
+
datePublished: "2026-01-01",
|
|
5
|
+
aggregateRating: { ratingValue: 4.9 }</pre><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Today on every build; a date and a rating nobody gave.</div></div>
|
|
6
|
+
</figure>
|
|
7
|
+
<figure data-example="do">
|
|
8
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">lastModified: post.updatedAt,
|
|
9
|
+
// no rating: there is none</pre></div>
|
|
10
|
+
</figure>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<!-- J-126 · Structured data retyped instead of read -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">"name": "Tidewell",
|
|
4
|
+
"description": "The enterprise observability platform"</pre><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Typed by hand, already out of date.</div></div>
|
|
5
|
+
</figure>
|
|
6
|
+
<figure data-example="do">
|
|
7
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">"name": site.name,
|
|
8
|
+
"description": site.description</pre><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Read from the source the page renders.</div></div>
|
|
9
|
+
</figure>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<!-- J-127 · A list served as a fact when it is empty -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;"><urlset></urlset></pre><div style="font-size:11px;color:#5c5c5c;margin-top:8px">A failed read, shipped as “the site has no pages”.</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;"><urlset>
|
|
7
|
+
<url><loc>https://tidewell.io/</loc></url>
|
|
8
|
+
…static routes, always
|
|
9
|
+
</urlset></pre></div>
|
|
10
|
+
</figure>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<!-- K-128 · A new-tab link that hands over the page it left -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;"><a href="https://partner.example"
|
|
4
|
+
target="_blank">Partner</a></pre><div style="font-size:11px;color:#5c5c5c;margin-top:8px">The new tab can rewrite the page it came from.</div></div>
|
|
5
|
+
</figure>
|
|
6
|
+
<figure data-example="do">
|
|
7
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;"><a href="https://partner.example"
|
|
8
|
+
target="_blank" rel="noopener noreferrer">Partner</a></pre></div>
|
|
9
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- K-129 · User content written as markup -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">el.innerHTML = comment.body</pre><div style="font-size:11px;color:#5c5c5c;margin-top:8px">A comment that contains a script runs it.</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">el.textContent = comment.body</pre><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Shown as text, whatever it contains.</div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- K-130 · Credential fields that fight the password manager -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:0px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;">Password</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;border-color:#a3a3a3"> </div><div style="font-size:11px;color:#5c5c5c;margin-top:8px">autocomplete="off", paste blocked: the manager cannot fill it.</div></div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:0px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;">Password</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;">••••••••••••</div><div style="font-size:11px;color:#5c5c5c;margin-top:8px">autocomplete="current-password": filled, pasted, strong.</div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<!-- K-131 · A frame with no sandbox, a script from anywhere -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;"><iframe src="https://widget.example"></iframe>
|
|
4
|
+
<script src="https://cdn.anywhere/x.js"></script></pre></div>
|
|
5
|
+
</figure>
|
|
6
|
+
<figure data-example="do">
|
|
7
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;"><iframe src="https://widget.example"
|
|
8
|
+
sandbox="allow-scripts"></iframe>
|
|
9
|
+
<script src="/vendor/x.js"
|
|
10
|
+
integrity="sha384-…"></script></pre></div>
|
|
11
|
+
</figure>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- K-132 · A secret rendered as plain text -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:0px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;">API key</div><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace">tw_live_8f2c91a7d44e0b6c3e</div></div><div style="font-size:11px;color:#5c5c5c;margin-top:8px">On screen, in a screenshot, in a screen share.</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:0px;"><div style="font-size:12px;font-weight:600;margin-bottom:4px;">API key</div><div style="display:flex;gap:6px;align-items:center;flex-wrap:wrap;flex-wrap:nowrap"><div style="background:#ffffff;border:1px solid #a3a3a3;border-radius:6px;padding:7px 9px;font-size:13px;min-height:18px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;flex:1">tw_live_••••••••••0b6c3e</div><span style="display:inline-block;align-self:flex-start;background:#ffffff;color:#1f1f1f;border:1px solid #d6d6d6;border-radius:6px;padding:6px 11px;font-weight:600;font-size:12px;">Copy</span><span style="display:inline-block;align-self:flex-start;background:#ffffff;color:#1f1f1f;border:1px solid #d6d6d6;border-radius:6px;padding:6px 11px;font-weight:600;font-size:12px;">Reveal</span></div></div></div>
|
|
7
|
+
</figure>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<!-- K-133 · An error that describes the system -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:6px;"><div style="color:#b91c1c;font-weight:600">Error 500</div><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;">PG::UndefinedColumn: column users.plan_id
|
|
4
|
+
at /srv/app/models/user.rb:42</pre></div></div>
|
|
5
|
+
</figure>
|
|
6
|
+
<figure data-example="do">
|
|
7
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><div style="display:flex;flex-direction:column;gap:4px;"><div style="color:#b91c1c;font-weight:600">We could not load your plan</div><div style="font-size:14px;font-size:12px">Try again in a minute. If it keeps happening, quote reference 7F3A.</div></div></div>
|
|
8
|
+
</figure>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<!-- K-134 · Inline handlers on a page with a content policy -->
|
|
2
|
+
<figure data-example="dont">
|
|
3
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;"><button onclick="save()">Save</button></pre><div style="font-size:11px;color:#5c5c5c;margin-top:8px">Blocked by the page’s own content policy.</div></div>
|
|
4
|
+
</figure>
|
|
5
|
+
<figure data-example="do">
|
|
6
|
+
<div style="font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;line-height:1.45;color:#1f1f1f;background:#f5f5f4;padding:16px;min-height:176px;box-sizing:border-box;"><pre style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;background:#ffffff;border:1px solid #d6d6d6;border-radius:6px;padding:10px;margin:0;white-space:pre-wrap;"><button id="save">Save</button>
|
|
7
|
+
// in a script file:
|
|
8
|
+
save.addEventListener("click", …)</pre></div>
|
|
9
|
+
</figure>
|