4 Commits

Author SHA1 Message Date
jules
47204dee67 fix(cn): use canonical twMerge(clsx) so class overrides resolve
The local cn() joined classes with filter(Boolean).join(' '), which doesn't
dedupe conflicting Tailwind utilities — consumer className overrides could
silently lose to the component's base classes. Switch to the standard
twMerge(clsx(...)) (clsx + tailwind-merge are already app deps). Behaviour is
unchanged except conflicting overrides now win correctly. Build-verified
(skyai-finance clean; vibespace transforms all modules). Frontend audit rank 4.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 21:51:09 +10:00
jules
94ba0cb5eb chore(pkg): add package.json (name/version/peerDeps/exports/sideEffects)
Libs shipped as bare source with no manifest — consumable only via per-app
vite/tsconfig alias surgery, no version contract, no tree-shaking signal.
Add a minimal package.json matching the @crema/content-ui template: entry +
exports map, declared peerDependencies, sideEffects:false. Mechanical, no
code change. Frontend audit 2026-06-20, rank 2.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 20:37:34 +10:00
jules
73fd8ccf52 RecordGroupSection: sentence-case group header
Drops the tracking-wide uppercase micro-label treatment for a 13px
sentence-case header — softer fit for consumer surfaces.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 22:46:07 +10:00
jules
b5ccdbe903 Initial release: personal-records primitives
RecordCard / RecordGroupSection / TierBadge / RecordKindIcon, FieldTable
+ spec-driven FieldInputs + KeyValueEditor, the marquee RecordsEmpty,
renderRecordMd (mirror of the personal cloud's server renderer), and
parseMrzTd3 — a fully-local TD3 passport MRZ parser with check-digit
verification (validated against the ICAO Doc 9303 specimen).

Token-themed; lucide-react is the only dep (Crema shared-dep aliasing).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 18:42:51 +10:00