mod-base 1.0.72 → 1.0.73-beta.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.73
4
+ - Fix hero content box-shadow not being removed in dark mode when form-in-progress is active on mobile.
5
+
3
6
  ## 1.0.72
4
7
 
5
8
  - Adding dark mode support for the input component when the input is active or focused.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mod-base",
3
- "version": "1.0.72",
3
+ "version": "1.0.73-beta.1",
4
4
  "description": "Base Styles for S3 Sites",
5
5
  "author": "",
6
6
  "license": "ISC"
@@ -1172,11 +1172,15 @@ $contact-us-blue-light: #8498E7;
1172
1172
  box-shadow: none;
1173
1173
  }
1174
1174
 
1175
- &.form-in-progress {
1176
- .hero {
1177
- background-color: $background-color;
1178
- }
1175
+ &.form-in-progress {
1176
+ .hero {
1177
+ background-color: $background-color;
1179
1178
  }
1179
+
1180
+ .hero__content {
1181
+ box-shadow: none;
1182
+ }
1183
+ }
1180
1184
  }
1181
1185
 
1182
1186
  @include breakpoint-lg {
@@ -1,219 +0,0 @@
1
- # Research Ticket: SCSS to Native CSS Variables Migration
2
-
3
- ## 1. Title and goal
4
-
5
- | Field | Value |
6
- |-------|-------|
7
- | **Title** | Research: Migrate mod-base from SCSS variables to native CSS custom properties |
8
- | **Goal** | Produce an epic with implementable tickets and a coexistence plan so S3 sites can adopt the new system in batches without big-bang cutover |
9
-
10
- **Outcome of this research (deliverables):**
11
-
12
- 1. Filled-in sections 2–3 below (findings and recommendation).
13
- 2. Final epic title and description.
14
- 3. Final list of child tickets (titles + short descriptions) ready for the issue tracker.
15
- 4. Written **Proposal for new version alongside current** (coexistence strategy, recommended option, batch migration steps).
16
-
17
- ---
18
-
19
- ## 2. Research tasks (complete during research)
20
-
21
- Use this checklist to drive the research. Record answers in this document or linked notes.
22
-
23
- ### 2.1 Inventory
24
-
25
- - [ ] **Confirm and extend** the variable inventory for every file under `src/styles/**/*.scss`.
26
- - [ ] **Classify each variable** as:
27
- - **(a)** Design token → candidate for CSS custom property.
28
- - **(b)** Theme / runtime (e.g. dark mode) → candidate for CSS custom property.
29
- - **(c)** Compile-time only (paths, breakpoint literals) → keep as SCSS.
30
-
31
- **Pre-filled inventory (validate and extend):**
32
-
33
- | Category | File(s) | Approx. count | Overridable | Notes |
34
- |----------|---------|---------------|-------------|--------|
35
- | **Colors** | `src/styles/base/_colors.scss` | ~213 definitions | No (`!default` only in `_variables.scss`) | Palettes (Modernize, BC, legacy), a11y |
36
- | **Typography / base** | `src/styles/base/_variables.scss` | 16 | Yes (`!default`) | h2/h3/body/disclaimer sizes & line-heights, font families, transition |
37
- | **Spacing** | `src/styles/base/_spacing.scss` | 9 | No | Tokens only (none, xxs → 2xl) |
38
- | **Radius** | `src/styles/base/_radius.scss` | 7 | No | xxs → xl, pill |
39
- | **Ratings** | `src/styles/base/_ratings.scss` | 4 | 1 with `!default` | Heights, `$rating-icons-folder` (path) |
40
- | **Icons** | `src/styles/icons/_*.scss` (per family) | 1 per family | Yes (`!default`) | `$icons-folder` (path only) |
41
- | **Dark mode** | `src/styles/templates/_dark-mode.scss` | 10 global + ~20+ mixin params | Via mixin | Theme globals set by mixin; heavy use of color vars |
42
-
43
- **Compile-time only (expected to stay SCSS):**
44
-
45
- - Breakpoint values in `src/styles/base/_breakpoints.scss` (inside mixins).
46
- - Asset paths: `$icons-folder`, `$rating-icons-folder` (used in `url()` / `@font-face`).
47
-
48
- **Findings (fill in):**
49
-
50
- - Additional variables discovered: _…_
51
- - Edge cases: _…_
52
-
53
- ---
54
-
55
- ### 2.2 Naming convention
56
-
57
- - [ ] Propose a **naming scheme** for CSS custom properties (e.g. `--mod-color-*`, `--mod-spacing-*`, `--mod-radius-*`).
58
- - [ ] Confirm **no clashes** with consumer or third-party CSS.
59
- - [ ] Define how **theming / dark mode** maps to names (e.g. semantic `--mod-theme-surface` vs. palette `--mod-color-grey-300`).
60
-
61
- **Proposed convention (draft — finalize in research):**
62
-
63
- | Layer | Pattern | Example |
64
- |-------|---------|---------|
65
- | Palette | `--mod-color-{palette}-{step}` | `--mod-color-dark-purple-500` |
66
- | Semantic (optional) | `--mod-{role}` | `--mod-color-text`, `--mod-color-surface` |
67
- | Spacing | `--mod-spacing-{token}` | `--mod-spacing-sm` |
68
- | Radius | `--mod-radius-{token}` | `--mod-radius-md` |
69
- | Typography | `--mod-font-{role}-{prop}` | `--mod-font-body-size`, `--mod-font-body-line-height` |
70
-
71
- **Final decision (fill in):** _…_
72
-
73
- ---
74
-
75
- ### 2.3 Consumption impact
76
-
77
- - [ ] Survey **how S3 sites override mod-base** today (e.g. redefine `!default` variables before `@import`).
78
- - [ ] Map each override pattern to an **equivalent with CSS vars** (e.g. set `--mod-*` on `:root`, or on a site wrapper class).
79
- - [ ] Identify **breaking changes** if any consumer relies on SCSS-only APIs.
80
-
81
- **Findings (fill in):**
82
-
83
- - Common override patterns: _…_
84
- - CSS var override pattern for consumers: _…_
85
- - Risks: _…_
86
-
87
- ---
88
-
89
- ### 2.4 Dark mode
90
-
91
- - [ ] Document how `_dark-mode.scss` sets **globals** (`!global`) and applies colors today.
92
- - [ ] Propose how the same behavior is achieved with **CSS vars** (e.g. set `--mod-theme-*` inside `@media (prefers-color-scheme: dark)` and `body[data-color-scheme='system']`).
93
- - [ ] Decide whether the **mixin stays** (wrapping var assignments) or is replaced by a **static theme block**.
94
-
95
- **Findings (fill in):**
96
-
97
- - Current behavior summary: _…_
98
- - Proposed CSS-var-based approach: _…_
99
- - Opt-in contract (unchanged vs. updated): _…_
100
-
101
- ---
102
-
103
- ### 2.5 Coexistence strategy
104
-
105
- - [ ] Compare **Option A**, **Option B**, and **Option C** (see section 3).
106
- - [ ] **Recommend one** with pros/cons and batch migration steps.
107
-
108
- **Recommendation (fill in after research):** _Option A / B / C — rationale: …_
109
-
110
- ---
111
-
112
- ## 3. Coexistence options to evaluate
113
-
114
- Compare these during research and pick one for the proposal.
115
-
116
- ### Option A — Dual entry point (same package)
117
-
118
- - Keep current `src/styles/base/index.scss` (SCSS vars, current compiled output) **unchanged**.
119
- - Add a **second entry** (e.g. `src/styles/base/index-tokens.scss` or `theme.scss`) that:
120
- - Emits CSS custom properties (and/or pulls partials that use `var(--mod-*)`).
121
- - Consumers migrate **per site** by switching imports when ready; same package semver.
122
-
123
- | Pros | Cons |
124
- |------|------|
125
- | No forced major bump; gradual adoption | Two code paths to maintain until deprecation |
126
- | Same npm version for all sites | Must document which entry each site uses |
127
-
128
- ---
129
-
130
- ### Option B — New major version (v2)
131
-
132
- - Publish **mod-base v2** with CSS vars throughout; **v1** unchanged.
133
- - Consumers migrate by **semver bump** when ready.
134
-
135
- | Pros | Cons |
136
- |------|------|
137
- | Clear boundary | Duplicate maintenance until v1 sunset |
138
- | Simple mental model (“v2 = vars”) | Coordination across many repos |
139
-
140
- ---
141
-
142
- ### Option C — Single codebase, two build outputs
143
-
144
- - One SCSS tree compiles to **legacy** (SCSS vars in output) or **vars** (output uses `var(--mod-*)` + a theme file that sets defaults).
145
- - Controlled by **entry file** or build flag.
146
-
147
- | Pros | Cons |
148
- |------|------|
149
- | Single source of truth for token values | Higher implementation complexity |
150
- | Flexible CI | Requires build pipeline alignment |
151
-
152
- ---
153
-
154
- ### Batch migration (example — adjust to chosen option)
155
-
156
- After research, document steps such as:
157
-
158
- 1. Site adds import of new token/theme entry (or bumps to v2).
159
- 2. Site replaces SCSS overrides with `:root { --mod-*: … }` where applicable.
160
- 3. Site validates dark mode and critical flows.
161
- 4. Site removes legacy overrides when fully on vars.
162
-
163
- ---
164
-
165
- ## 4. Epic and child tickets (create after research)
166
-
167
- Use this structure when opening the epic in your tracker. Refine titles/descriptions after section 2–3 are complete.
168
-
169
- ### Epic
170
-
171
- **Title:** Migrate mod-base design tokens from SCSS variables to native CSS custom properties (batch-friendly, coexistence with current version)
172
-
173
- **Description (template):**
174
-
175
- > Move design tokens (colors, spacing, radius, typography, and theme-related values) to native CSS custom properties while keeping a migration path for S3 microsites. Legacy SCSS-variable-based entry remains available until sites migrate in batches. Dark mode remains opt-in. Document naming, overrides, and deprecation.
176
-
177
- ---
178
-
179
- ### Child tickets
180
-
181
- | # | Title | Short description |
182
- |---|--------|-------------------|
183
- | 1 | Define CSS variable naming and scope | Finalize `--mod-*` (or chosen) convention; document `:root` vs. theme class; document consumer override pattern. |
184
- | 2 | Implement color tokens as CSS variables | New partial or entry defining palette (and optional semantic aliases) as custom properties; keep `_colors.scss` or mirror so legacy + new paths stay aligned. |
185
- | 3 | Implement spacing and radius as CSS variables | Map `_spacing.scss` and `_radius.scss` tokens to `--mod-spacing-*`, `--mod-radius-*`. |
186
- | 4 | Implement typography / base tokens as CSS variables | Font sizes, line heights, families, transition from `_variables.scss` as CSS vars; map `!default` override story to CSS. |
187
- | 5 | Wire base styles to use CSS variables | Update base partials (grid, text, built-in-classes, components, etc.) to use `var(--mod-*)` **behind the new entry point**; leave legacy `index.scss` output unchanged until deprecation. |
188
- | 6 | Dark mode with CSS variables | Refactor opt-in dark-mode template to drive theme via CSS custom properties inside media / `data-color-scheme` selectors; preserve behavior where possible. |
189
- | 7 | Ratings and icons token decision | Decide which rating/icon values become CSS vars; keep path vars as SCSS; implement agreed vars. |
190
- | 8 | New entry point and documentation | Ship chosen coexistence approach; README + CHANGELOG: migration steps, import paths, override examples. |
191
- | 9 | Deprecation and rollout | Timeline for legacy entry; batch rollout plan for S3 sites; communication checklist. |
192
-
193
- ---
194
-
195
- ## 5. Deliverables checklist (research complete when all checked)
196
-
197
- - [ ] Section 2 research tasks answered (inventory extended, naming, consumption, dark mode, coexistence).
198
- - [ ] Section 3: **one option recommended** with batch migration steps written out.
199
- - [ ] Epic title + description finalized (copy from §4 with edits).
200
- - [ ] Child tickets created in tracker from §4 table (with any renames from findings).
201
- - [ ] **Proposal for new version alongside current** attached or summarized below.
202
-
203
- ---
204
-
205
- ## Appendix: Proposal summary (fill in after research)
206
-
207
- **Recommended coexistence approach:** _Option A / B / C_
208
-
209
- **How the new version lives alongside the current one:** _e.g. second import path in same package, or parallel v1/v2 publish_
210
-
211
- **Batch migration steps (for site teams):**
212
-
213
- 1. _…_
214
- 2. _…_
215
- 3. _…_
216
-
217
- **Risks and mitigations:** _…_
218
-
219
- **Target timeline (optional):** _…_
@@ -1,181 +0,0 @@
1
- # Research results: SCSS → native CSS variables (mod-base)
2
-
3
- **Source ticket:** [research-scss-to-css-vars-migration.md](./research-scss-to-css-vars-migration.md)
4
- **Date:** 2026-03-11
5
- **Scope:** Repository analysis only; consumer (S3 site) override patterns marked as *to validate with site teams*.
6
-
7
- ---
8
-
9
- ## Executive summary
10
-
11
- - **~260** top-level SCSS variables across mod-base; **~213** are palette colors in `_colors.scss`.
12
- - **CSS custom properties** should back design tokens (colors, spacing, radius, typography, optional rating sizes) and **semantic theme tokens** for dark mode.
13
- - **Keep SCSS** for compile-time concerns: breakpoint mixins, `$icons-folder`, `$rating-icons-folder`, and any `url()` paths.
14
- - **Recommended coexistence:** **Option A — dual entry point** in the same package: legacy `base/index.scss` unchanged; new entry loads token definitions + styles using `var(--…)` tokens (see §2).
15
- - **Dark mode:** Keep **opt-in `@mixin dark-mode`**, but have the mixin (or generated blocks) **assign CSS variables** on `body[data-color-scheme='system']` under `@media (prefers-color-scheme: dark)` instead of relying on SCSS `!global` for theme values in the long term.
16
-
17
- ---
18
-
19
- ## 1. Variable inventory (confirmed)
20
-
21
- Counts are definitions matching `^\$name:` at file top level (not mixin-local `$property`).
22
-
23
- | File | Count | Classification |
24
- |------|------:|----------------|
25
- | `src/styles/base/_colors.scss` | 213 | **(a)** Design tokens → CSS vars |
26
- | `src/styles/base/_variables.scss` | 16 | **(a)** Typography / base → CSS vars |
27
- | `src/styles/base/_spacing.scss` | 9 | **(a)** → CSS vars |
28
- | `src/styles/base/_radius.scss` | 7 | **(a)** → CSS vars |
29
- | `src/styles/base/_ratings.scss` | 4 | **(a)** star heights → CSS vars optional; **(c)** `$rating-icons-folder` → SCSS only |
30
- | `src/styles/icons/_basics.scss`, `_fill.scss`, `_stroke.scss`, `_stroke-md.scss` | 1 each | **(c)** `$icons-folder` → SCSS only |
31
- | `src/styles/templates/_dark-mode.scss` | 10 module-level + 1 constant | **(b)** Theme/runtime → CSS vars; globals today are SCSS |
32
-
33
- **`src/styles/templates/_dark-mode.scss` detail**
34
-
35
- | Item | Role |
36
- |------|------|
37
- | Module globals (`$background-color`, `$text-color`, `$theme`, …) | Set inside `@mixin dark-mode` via `!global` when mixin runs |
38
- | `$contact-us-blue-light` | Fixed hex; could become `--color-contact-us-blue-light` or stay SCSS |
39
- | `@mixin dark-mode(...)` | **34 parameters** (colors, filters, radio/checkbox, TCPA, value props, etc.) |
40
- | Inner `$content-selectors`, `$background-selectors` | Selector strings — remain SCSS |
41
-
42
- **Files with no top-level `$` definitions (compile-time / structural only)**
43
-
44
- - `_breakpoints.scss` — pixel literals inside mixins → **(c)** stay SCSS.
45
- - `_grid.scss`, `_built-in-classes.scss`, `_text.scss`, `_reset.scss`, `_flex.scss`, `_fonts.scss`, components, icon class partials, font-face partials — consume vars or emit static CSS.
46
-
47
- **Additional / edge cases**
48
-
49
- - **`_fonts.scss` mixins** use `$h2-font-size`, `$body-font-size`, etc. from `_variables.scss`. Once those exist as CSS vars, mixins can emit `font-size: var(--h2-font-size)` (with optional media-query wrappers where desktop sizes differ).
50
- - **`darken()` / `lighten()`** in dark-mode and `btnStyles` — cannot run on CSS vars at build time. Mitigation: pre-compute hover/dark variants as separate tokens, or use `color-mix()` / fixed semantic tokens in CSS.
51
- - **Duplicate color naming:** `_colors.scss` has both new scale (e.g. `$color-red-100`) and legacy (`$color-red1`). CSS vars can mirror SCSS names 1:1 (`--color-red-100`, `--color-red1`) or alias legacy to the new scale in one pass.
52
-
53
- ---
54
-
55
- ## 2. Naming convention (recommendation)
56
-
57
- Use **direct mirrors of SCSS token names**: replace the leading `$` with `--` so designers and devs map variables without an extra prefix layer. No Bootstrap-style framework in stack, so namespace collision risk is acceptable.
58
-
59
- | Layer | Pattern | SCSS example → CSS var |
60
- |-------|---------|-------------------------|
61
- | Palette | `--color-{name}` | `$color-dark-purple-500` → `--color-dark-purple-500` |
62
- | Legacy palette | `--color-{legacy-id}` | `$color-red1` → `--color-red1` (or alias to new scale) |
63
- | A11y / BC | Same as SCSS | `$color-a11y-blue` → `--color-a11y-blue`, `$color-bc-green` → `--color-bc-green` |
64
- | Spacing | `--spacing-{token}` | `$spacing-sm` → `--spacing-sm` |
65
- | Radius | `--radius-{token}` | `$radius-md` → `--radius-md` |
66
- | Typography / base | Same as SCSS | `$base-font-family` → `--base-font-family`, `$h2-font-size` → `--h2-font-size`, `$body-line-height` → `--body-line-height`, `$base-transition` → `--base-transition` |
67
- | Semantic theme (dark) | `--theme-*` | e.g. `--theme-bg`, `--theme-text`, `--theme-accent`, `--theme-interactive` — map from current mixin params / globals |
68
-
69
- **Dark mode:** Prefer **semantic** `--theme-*` inside the dark block so one block swaps the whole theme; palette vars can stay literal for light-only pages or duplicate semantic assignment in dark.
70
-
71
- **Overrides:** Document that consumers may override any token on `:root` or a site wrapper (e.g. `.site-root { --h2-font-size: 1.5rem; }`) for theming.
72
-
73
- ---
74
-
75
- ## 3. Consumption impact
76
-
77
- **Inferred from mod-base (validate on 2–3 S3 repos)**
78
-
79
- | Pattern today | Likely frequency | CSS var equivalent |
80
- |---------------|------------------|--------------------|
81
- | Set `$base-font-family`, `$h2-font-size`, etc. **before** importing base (because of `!default`) | Common for typography | `:root { --base-font-family: …; --h2-font-size: …; }` **after** token file or in site layer |
82
- | Import only colors + breakpoints | Common | Import `--color-*` definitions + keep SCSS breakpoints |
83
- | `@include dark-mode(...)` with site-specific params | Opt-in | Same mixin, but params map to `--theme-*` assignments |
84
-
85
- **Breaking risks**
86
-
87
- - Any consumer **reading SCSS variables in their own SCSS** after importing mod-base (e.g. `color: $color-grey-500`) must either keep importing `_colors.scss` or switch to `var(--color-grey-500)` and ensure the token stylesheet is loaded.
88
- - **Dual path:** Legacy import keeps `$color-*`; new import path documents “use `var(--color-*)` in site SCSS.”
89
-
90
- **Action for epic:** Spike on 1–2 production sites to list real overrides.
91
-
92
- ---
93
-
94
- ## 4. Dark mode — current vs proposed
95
-
96
- **Current behavior**
97
-
98
- 1. Site calls `@include dark-mode($accent-color: …, $background: …, …)`.
99
- 2. Mixin sets **SCSS globals** (`$background-color`, `$text-color`, `$theme`, `$color-button`, …) with `!global`.
100
- 3. Under `@media (prefers-color-scheme: dark)` and `body[data-color-scheme='system']`, a large ruleset applies **concrete colors** from those globals and params to many selectors (`$content-selectors`, `$background-selectors`, plus nested rules for partners, TCPA, radios, etc.).
101
- 4. Uses **Sass color functions** (`darken`, `lighten`) on params — not compatible with raw CSS vars without `color-mix()` or pre-defined tokens.
102
-
103
- **Proposed direction**
104
-
105
- 1. **Phase 1 (minimal churn):** Emit the same selectors but replace values with `var(--theme-*, …)`; mixin **sets variables** on the dark root:
106
- ```scss
107
- body[data-color-scheme='system'] {
108
- --theme-bg: #{$background};
109
- --theme-text: #{$foreground};
110
- // …
111
- }
112
- ```
113
- (Interpolation keeps compile-time hex for phase 1; hover/darken still from SCSS where params are known at compile time.)
114
-
115
- 2. **Phase 2:** Move fully to CSS — define hover/active as explicit `--theme-*-hover` params or use `color-mix(in srgb, var(--theme-accent) 90%, black)`.
116
-
117
- **Opt-in contract:** Unchanged — still “import template + call mixin.” Implementation detail shifts from globals to CSS custom properties.
118
-
119
- ---
120
-
121
- ## 5. Coexistence strategy — decision
122
-
123
- | Option | Verdict |
124
- |--------|---------|
125
- | **A — Dual entry** | **Recommended.** Same semver; sites switch import when ready; clearest batch migration. |
126
- | **B — v2 package** | Valid if org wants a hard cut and less dual-path maintenance; higher coordination cost. |
127
- | **C — Two builds** | Overlaps with A if “build” means two entry SCSS files; full flag-based dual output adds complexity without much gain over A. |
128
-
129
- **Rationale:** Option A matches “migrate by batches” without forcing every site onto a new major at once. Option B remains a future consolidation after most sites adopt the new entry.
130
-
131
- ---
132
-
133
- ## 6. Batch migration steps (site teams)
134
-
135
- 1. Add import of **new token layer** (e.g. `mod-base/.../tokens.scss` or `index-tokens.scss`) early in the bundle so `:root` (or agreed scope) defines design tokens (`--color-*`, `--spacing-*`, etc.).
136
- 2. Optionally add **new base entry** that uses those vars in output; run visual / a11y regression.
137
- 3. Replace SCSS `!default` overrides with **CSS** on `:root` or a wrapper class using the same names as SCSS tokens (with `--` prefix).
138
- 4. If using dark mode: migrate to new mixin signature or ensure theme CSS vars are set; test `prefers-color-scheme` + `data-color-scheme`.
139
- 5. Remove redundant SCSS variable overrides when no longer importing legacy-only partials.
140
-
141
- ---
142
-
143
- ## 7. Epic and child tickets (ready for tracker)
144
-
145
- ### Epic
146
-
147
- **Title:** Migrate mod-base design tokens from SCSS variables to native CSS custom properties (batch-friendly, coexistence with current version)
148
-
149
- **Description:**
150
- Introduce native CSS custom properties for colors, spacing, radius, typography, and dark-mode theme tokens. Keep `src/styles/base/index.scss` behavior and output stable for existing consumers. Add a second import path for token definitions and var-based styling. Dark mode stays opt-in via mixin. Document naming, overrides, deprecation timeline, and site migration steps.
151
-
152
- ### Child tickets
153
-
154
- 1. **Define CSS variable naming and scope** — Adopt §2 (mirror SCSS names + `--theme-*` for dark); document `:root` vs scoped overrides.
155
- 2. **Color tokens as CSS variables** — Generate/maintain palette + legacy + a11y + BC as `--color-*`; keep `_colors.scss` for legacy entry.
156
- 3. **Spacing and radius as CSS variables** — `--spacing-*`, `--radius-*` from existing SCSS values.
157
- 4. **Typography / base tokens** — Map all `_variables.scss` `!default` fields to matching `--*` names (e.g. `--base-transition`).
158
- 5. **Wire base styles (new entry only)** — Duplicate or branch partials so new entry uses `var(--…)`; do not change legacy compiled output until deprecation.
159
- 6. **Dark mode + CSS variables** — Refactor `@mixin dark-mode` to drive layout via `--theme-*`; address `darken`/`lighten` (tokens or `color-mix`).
160
- 7. **Ratings / icons** — CSS vars for star heights if desired; keep `$icons-folder` / `$rating-icons-folder` as SCSS.
161
- 8. **Entry point + documentation** — Ship second entry; README + CHANGELOG migration guide.
162
- 9. **Deprecation + rollout** — Sunset plan for legacy path; batch checklist for S3 sites.
163
-
164
- ---
165
-
166
- ## 8. Risks and mitigations
167
-
168
- | Risk | Mitigation |
169
- |------|------------|
170
- | Bundle size (duplicate rules) if both entries ship long-term | Target deprecation window; share token partial between entries |
171
- | `darken`/`lighten` vs CSS vars | Semantic tokens + `color-mix()` or precomputed steps |
172
- | Sites forget to load token file before var-based CSS | Document import order; optional build-time check |
173
- | Browser support for `color-mix` | Provide fallbacks or stay on interpolated hex in mixin for older targets |
174
-
175
- ---
176
-
177
- ## 9. Follow-ups outside this doc
178
-
179
- - [ ] Survey 2–3 S3 repos for real mod-base override patterns.
180
- - [ ] Decide browser support floor for `color-mix()` vs SCSS-only dark mode values.
181
- - [ ] PM: target quarters for legacy entry deprecation.