arrow-js-obsidian-porting
Porting parity (sandbox → Obsidian plugin)
The sandbox is the source of truth for a component; the plugin gets a near-verbatim copy. The risk is drift — someone hand-edits the plugin copy, or a port silently diverges. This makes components content-addressed: a canonical hash of the component's portable body must match on both sides, the same idea as "never hand-edit generated artifacts."
Copy utilities.css with the port
src/utilities.css is a set of oas--prefixed layout, spacing, typography, and
border utilities built on Obsidian's CSS custom property scale. It covers two
spacing families: the 4-px step scale (steps 1–6) and the 2-px sub-scale
(oas-gap-2-1 = 2px, oas-gap-2-3 = 6px — class names mirror Obsidian token names).
Components may use these classes — they are portable by design. When porting
a component, copy this file into the plugin's styles directory and import it: