Two related housekeeping items in one commit:
**1. FieldProvider via barrel (audit Round 3 §3 #23)**
37 consumer files across soma imported `FieldProvider` from the deep
path `'../field/field-provider.svelte'`, mirroring the same pattern
that motivated `internals.ts` indirection on the 5 pickers earlier.
Adds `src/uix/soma/components/field/internals.ts` re-exporting
`FieldProvider` and exposes it from the barrel `exports.ts`. The 37
imports become the canonical `from '../field'`. Consistency only —
no behavioral change.
**2. DateRangePicker view sub-parts (P4 follow-up)**
The MonthView/YearView soma parts created in commit `e93c0c73` stamp
internal layout data-attrs (`-header`, `-prev`, `-heading`, `-next`,
`-grid`, `-cell`) that weren't declared in the morfo, surfacing as 12
hardcoded-data-attr violations once the contract suite caught up.
Declares the 12 sub-parts in the morfo with the canonical kebab
prefix (`month-view-*`, `year-view-*`). Each entry minimal (data: [],
aria: []) except `*-prev` / `*-next` which stamp `type='button'` and
`*-cell` which surfaces the `data-range-{start,end,in-range}`
classification states used by the eidos range tinting CSS.
Test result: 2393/2399 passing — back to the canonical 6 fails
(Words + cookie infra). The 13 transient regressions are closed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>