Skip to content

feat(emerald): scaffold Wave 1 design system under family contract#715

Open
johnleider wants to merge 6 commits into
masterfrom
feat/emerald-wave1
Open

feat(emerald): scaffold Wave 1 design system under family contract#715
johnleider wants to merge 6 commits into
masterfrom
feat/emerald-wave1

Conversation

@johnleider

Copy link
Copy Markdown
Member

Summary

Rebuilds @paper/emerald from scratch under DESIGN_SYSTEMS.md — thin v0 composition, Figma tokens, no Paper middle layer, no <style scoped>. The prior emerald reference branch stays a visual/token oracle only.

Pipeline

  • theme.ts / colors.ts — Emerald 1.0 Figma tokens
  • EmeraldStyleSheetAdapter — publishes --emerald-* and --v0-* kit aliases (Genesis interop)
  • createEmeraldPlugin() — theme only
  • dist/theme.css prebake via pnpm bake:theme (zero-config path)

Wave 1 surface (preview, package private)

Component v0 primitive
EmButton Button.Root / Content / Loading
EmTextField Input.Root / Control / Description / Error
EmCheckbox Checkbox.Root / Indicator
EmSwitch Switch.Root / Track / Thumb
EmDialog* Dialog.*
EmSelect* Select.*

Unscoped class CSS, data-* state, var(--emerald-*, fallback) everywhere. SPEC + README included.

Out of scope: kitchen sink, dark theme, Waves 2–3, publish cut.

Rebuild @paper/emerald from tokens + thin v0 composition — not the prior
Paper/scoped reference branch. Wave 1 ships EmButton, EmTextField,
EmCheckbox, EmSwitch, EmDialog*, EmSelect* with unscoped class CSS,
EmeraldStyleSheetAdapter (--emerald-* + --v0-* kit aliases), prebaked
theme.css, and createEmeraldPlugin. Package is private/preview.
@johnleider johnleider added this to the v1.0.x milestone Jul 24, 2026
@johnleider johnleider added enhancement New feature or request paper Paper layer (unstyled component bridge) labels Jul 24, 2026
@johnleider johnleider self-assigned this Jul 24, 2026
@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Changeset found — this change will be included in the next release. Thanks!

- EmButton: loading overlay inside Loading slot; drop dead type prop
- EmTextField: type on Root, label for/id association, Error slot content
- EmSelect: data-open/data-highlighted, Value slot forward, host wrapper, Root props
- EmDialog: Activator renderless + slot attrs; Content prop forward
- EmCheckbox: indeterminate dash glyph
- Export theme.css; strengthen UNSAFE_CSS; --v0-on-surface-variant alias
- Document style.css import path
Reduce EmDialogContent padding from 48/56 to 32px. Add EmDialogFooter
with justify-content:flex-end for primary action rows. Kitchen sink uses
the footer for the confirm dialog demo.
Add EmAlert, EmCard, EmTag, EmAvatar, EmTabs, EmPagination, and EmSlider
as thin v0/Atom wraps. Promote switch/checkbox/avatar geometry and
transition durations into theme motion/control tokens. Expand kitchen
sink and SPEC for Wave 2 preview.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request paper Paper layer (unstyled component bridge)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant