@dloizides/marketing-astro-kit 1.3.3 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/a11y.css ADDED
@@ -0,0 +1,46 @@
1
+ /* Minimum touch-target floor for every interactive box in this kit.
2
+ *
3
+ * SOURCE OF TRUTH: `MIN_TARGET_PX` in @dloizides/ui-layout
4
+ * (v1.27.0, src/constants.ts:134). It is re-declared here as a CSS custom
5
+ * property rather than imported, deliberately:
6
+ *
7
+ * 1. ui-layout is a React Native / RN-web package. Its peer dependencies are
8
+ * react, react-dom, react-native, react-native-svg and three more
9
+ * @dloizides UI packages. This kit is a zero-dependency static Astro
10
+ * source distribution (one peer: astro). Pulling that stack in for one
11
+ * integer is the wrong trade.
12
+ * 2. A CSS `min-height` cannot read a JS constant anyway. The value has to
13
+ * exist as CSS somewhere, so the only question is how many times — and
14
+ * this file is the one place.
15
+ *
16
+ * Keep the two in sync: if ui-layout's MIN_TARGET_PX changes, change this.
17
+ * A host may RAISE this (e.g. a touch-heavy kiosk build); it must never lower
18
+ * it below 44px, which is the WCAG 2.2 AA target-size floor.
19
+ */
20
+ :root {
21
+ --tmk-min-target: 44px;
22
+ }
23
+
24
+ /* ---------------------------------------------------------------------------
25
+ * TOPNAV TOUCH TARGETS
26
+ *
27
+ * The site header is hand-rolled per marketing site (agora / ichnos / kefi each
28
+ * own their own `src/components/SiteNav.astro`) but all three emit the SAME
29
+ * class names, and none of them sets a min-height. Measured at 360x640 on the
30
+ * deployed sites the brand link came out 36px tall and the nav CTA 41px, on all
31
+ * three identically. Because the defect is in shared markup conventions rather
32
+ * than in a shared component, the fix is a selector here rather than a new
33
+ * component: a site adopts it by importing this file once from its base layout.
34
+ *
35
+ * The per-site Astro scoped styles only set colour, font and gap on these
36
+ * selectors, so there is no min-height to fight; source order decides and this
37
+ * file is imported last.
38
+ * ------------------------------------------------------------------------- */
39
+ .topnav .brand,
40
+ .topnav__links > a {
41
+ display: inline-flex;
42
+ align-items: center;
43
+ justify-content: center;
44
+ min-height: var(--tmk-min-target);
45
+ min-width: var(--tmk-min-target);
46
+ }