[0.3.0] - 2026-01-28
Infrastructure
- Added unified release script for all packages (`scripts/release.js`)
- Updated CI workflow to fetch all branches and history
- Updated dependencies across all packages
[0.2.0] - 2026-01-27
Added
- **Tabs component** - Tabbed navigation with horizontal/vertical orientation
- Supports keyboard navigation (Arrow keys, Home, End)
- Accessible with ARIA attributes
- Variants: horizontal (default), vertical
- Size variants for different use cases
- **Pagination component** - Page navigation controls
- Page number controls with ellipsis for large ranges
- Customizable page size options
- Next/Previous navigation buttons
- Accessible with proper ARIA labels
- **Text component** - Typography component with semantic HTML
- Variants: display, heading, body, label, caption
- Semantic elements: h1-h6, p, span, label
- Consistent styling based on design tokens
- Polymorphic as prop for flexible rendering
- **Box component** - Flexible layout primitive with system props
- Supports spacing, layout, and flex properties via props
- Token-aware: uses design token values
- Polymorphic as prop for semantic HTML elements
Changed
- **BREAKING**: Renamed package scope from `@enara/*` to `@enara-health/*` for consistency
- `@enara/tokens` → `@enara-health/tokens`
- `@enara/ui-react` → `@enara-health/ui-react`
- All import paths must be updated
- **BREAKING**: Renamed `packages/` directory to `libs/` to align with team's Nx convention
- Git history fully preserved using `git mv`
- Updated 42+ files with new path references
- All configuration files, build scripts, and documentation updated
- **BREAKING**: Migrated to CSS-in-JS architecture
- Component styles now injected into JS bundle via vite-plugin-css-injected-by-js
- Removed separate `styles.css` file - no longer need `import '@enara-health/ui-react/styles.css'`
- Token CSS variables still imported separately by consuming applications
- Reduces bundle size and eliminates CSS file management
- Migrated from pnpm workspace to Nx monorepo for better build orchestration
- Installed Nx v22.4.2 with @nx/vite, @nx/js, and @nx/eslint plugins
- Configured nx.json with workspace layout, task runner, and caching options
- Created project.json for all packages (tokens, ui-react, docs)
- Updated CI workflow to use Nx affected commands
- Build caching: Unchanged packages skip rebuild automatically
- Automatic build ordering: tokens build before ui-react via dependsOn
- New commands: `nx build`, `nx dev`, `nx test`, `nx graph`, `nx affected`
- Restructured package exports for better tree-shaking
- Main export: `@enara-health/ui-react` (all components)
- Icon export: `@enara-health/ui-react/icons` (Lucide icons re-export)
- Token export: `@enara-health/ui-react/tokens` (tokens re-export for convenience)
- Separate build outputs: index.mjs (275 KB), icons.mjs (1 MB), tokens.mjs (0.04 KB)
[0.1.0] - 2026-01-22
Added
- Initial monorepo setup with pnpm workspaces
- `@enara-health/tokens` package for design tokens (304 CSS variables)
- Style Dictionary v4 configuration
- CSS variables and JavaScript ES6 output formats
- Typography primitive tokens (font-family, weight, size, lineHeight)
- 45 composite text styles (display, title, body variants)
- Primitive color tokens (moonstone, wisteria, mauve, green, red, yellow, light, dark, shadow)
- Semantic color tokens (foreground, background, border, elevation, system, interactive)
- Spacing tokens (pixel-based naming: size-0 to size-160)
- Border width tokens (0, 1, 2, 4, 8px)
- Border radius tokens (none, xs, sm, md, lg, xl, 2xl, full)
- Z-index tokens (base, dropdown, sticky, fixed, modal, popover, tooltip)
- Breakpoint tokens (xs: 320px to 2xl: 1280px)
- Icon size tokens (sm: 12px to 3xl: 24px)
- Elevation tokens (100-400 with layered shadows)
- Motion tokens (duration and easing curves)
- `@enara-health/ui-react` package for React components
- Vite build configuration (ESM + CJS output)
- Vitest testing setup with Testing Library
- CSS Modules + CVA for styling
- TypeScript strict mode
- **Chip component** - Status indicators, tags, badges
- Variants: solid, outline
- Sizes: sm, md, lg
- Colors: default, primary, primary-alt, success, warning, danger
- Icon support: iconStart, iconEnd, icon-only mode
- AI-ready metadata file
- 12 unit tests
- **Switch component** - Toggle switches
- Sizes: sm, md, lg
- States: checked, unchecked, disabled
- Controlled component with onCheckedChange callback
- **Checkbox component** - Checkboxes with indeterminate support
- Sizes: sm, md, lg
- States: checked, unchecked, indeterminate, disabled
- Controlled component with onCheckedChange callback
- **Radio component** - Radio buttons
- Sizes: sm, md, lg
- States: checked, unchecked, disabled
- Dot indicator for checked state
- **Button component** - Versatile button with multiple variants
- Roles: primary (solid), secondary (outline), ghost (transparent)
- Sizes: sm, md, lg
- Radius: square, sm, md, lg, rounded (pill)
- Colors: base, primary, primary-alt, success, warning, danger
- Icon support: iconStart, iconEnd, icon-only mode
- States: disabled, loading with spinner
- Features: fullWidth, polymorphic as/href for links
- **Input component** - Single-line text input
- Density: default, compact
- States: default, error, success (with colored borders)
- Helper text with leading icons for error/success
- Built-in: clearable button, password visibility toggle
- Slots: startElement, endElement for icons/content
- Features: disabled, readOnly, forwardRef support
- **Documentation site** (Astro 5)
- Three-column layout (sidebar, content, table of contents)
- Collapsible navigation sidebar with sections
- Component documentation pages for all 6 atoms
- Live component examples using built @enara-health/ui-react package
- Token documentation pages:
- DocsLayout with responsive design
- ComponentLayout for component pages
- TokenLayout for token pages
- Design system architecture documentation
Known Issues
- Style Dictionary v4 reports 11 token collisions on build (harmless)
- Cause: Root-level `$description` fields in each token JSON file collide when merged
- Impact: None - descriptions are metadata only, not output to CSS/JS
- The build completes successfully with correct token output
Infrastructure
- pnpm workspace configuration
- TypeScript configuration for all packages (strict mode)
- ESLint 9 with TypeScript and React rules
- Prettier with Astro plugin
- Husky pre-commit hooks with lint-staged
- Commitlint for conventional commits (scopes: tokens, ui-react, icons, docs, repo, deps)
- Claude AI configuration
- 18 contextual rule documents
- 3 skills (ai-component-metadata, ai-ds-composer, codebase-index)
- Component metadata system for AI integration
- GitHub Actions CI/CD workflows
- Unified release and publish workflow (detects version changes, builds, publishes, tags)
- Automatic tag creation on version bump commits
- Duplicate tag prevention (checks local and remote)
- Manual workflow trigger support
- Release script with interactive version bumping (patch/minor/major)
- Automated CHANGELOG generation
- GitHub Packages publishing for npm packages
Version History
This changelog will track all releases once the design system reaches v0.1.0.
Upcoming Milestones
- **v0.1.0** - Foundation release with tokens and core form components
- **v0.2.0** - Complete form components (Select, Textarea, FormField)
- **v0.3.0** - Layout and feedback components (Card, Modal, Tooltip)
- **v0.4.0** - Documentation site with interactive examples
- **v1.0.0** - Production-ready release with full component coverage