EVA-Sovereign-UI Svelte Themes

Eva Sovereign Ui

EVA Sovereign UI - Five Eyes Government Design System Components (Canada GC, US Federal, UK Gov, Australia, New Zealand) - Web Components, React, Svelte - WCAG 2.1 AA+ - Bilingual EN/FR

EVA-Sovereign-UI

Production-ready Web Components for Government of Canada applications. WCAG AAA compliant, bilingual (EN-CA/FR-CA), and GC Design System certified.


๐Ÿš€ Quick Start

Installation

npm install @eva-sovereign/web-components

Usage

import '@eva-sovereign/web-components';
<eva-button variant="primary">Submit Application</eva-button>
<eva-input type="email" placeholder="Enter your email"></eva-input>
<eva-chat-panel placeholder-text="Ask a question..."></eva-chat-panel>

React Integration

import { useRef, useEffect } from 'react';
import '@eva-sovereign/web-components';

function App() {
  const buttonRef = useRef(null);

  useEffect(() => {
    const handleClick = () => console.log('Clicked!');
    buttonRef.current?.addEventListener('eva-click', handleClick);
    return () => buttonRef.current?.removeEventListener('eva-click', handleClick);
  }, []);

  return <eva-button ref={buttonRef} variant="primary">Submit</eva-button>;
}

๐Ÿ“ฆ What's Included

11 Production-Ready Components

  • eva-button - 6 variants (supertask, primary, secondary, danger, link, contextual-signin)
  • eva-input - 6 types with validation and character counting
  • eva-select - Dropdown with keyboard navigation
  • eva-checkbox - Custom styled with 44px touch targets
  • eva-radio - Mutual exclusion with arrow navigation
  • eva-modal - 3 sizes with focus trap and Esc/backdrop close
  • eva-tabs - Tabbed interface with Home/End keyboard shortcuts
  • eva-card - 3 variants (default, bordered, elevated)
  • eva-alert - 4 types (success, info, warning, danger) + dismissible
  • eva-chat-panel โญ - Message bubbles, typing indicator, RAG-ready

Complete Documentation

Production Demos


โœ… Quality Standards

Accessibility (WCAG 2.2 AAA)

  • โœ… 7:1 contrast ratio (text/background)
  • โœ… 44px minimum touch targets
  • โœ… Full keyboard navigation
  • โœ… Screen reader support
  • โœ… Focus indicators
  • โœ… ARIA labels and live regions

GC Design System Compliance

  • โœ… Official colors and typography
  • โœ… Responsive design (mobile-first)
  • โœ… Bilingual support (EN-CA/FR-CA)
  • โœ… Government of Canada branding

Technical Excellence

  • โœ… TypeScript strict mode
  • โœ… Lit 3.x Web Components
  • โœ… Shadow DOM encapsulation
  • โœ… Tree-shakeable (87 KB / 20 KB gzipped)
  • โœ… Browser support: Chrome 67+, Firefox 63+, Safari 13.1+, Edge 79+

๐Ÿ“š Documentation

For Developers

  • Quick Start - Get started in 5 minutes
  • Storybook (Coming Soon - Build in progress) - Interactive component playground
  • API Reference (Coming Soon - Build in progress) - Complete TypeScript API
  • React Guide - Integration patterns
  • Vue Guide - Composition API examples
  • Migration Guide - React to Web Components
  • Troubleshooting - Common issues + solutions

For Stakeholders


๐ŸŽฏ Use Cases

Government Chatbots

<eva-chat-panel 
  placeholder-text="Ask about government services..."
  locale="en-CA">
</eva-chat-panel>

Bilingual Forms

<eva-input 
  type="email" 
  placeholder="Enter your email"
  locale="fr-CA"
  required>
</eva-input>
<eva-button variant="primary" locale="fr-CA">Soumettre</eva-button>

Accessible Modals

<eva-modal size="medium" open>
  <h2 slot="header">Confirm Action</h2>
  <p>Are you sure you want to proceed?</p>
  <div slot="footer">
    <eva-button variant="danger">Confirm</eva-button>
    <eva-button variant="secondary">Cancel</eva-button>
  </div>
</eva-modal>

๐Ÿ› ๏ธ Framework Integration

React

See React Integration Guide for:

  • useRef + addEventListener patterns
  • State management with useState
  • Event handling
  • TypeScript declarations
  • Complete working examples

Vue 3

See Vue Integration Guide for:

  • Vite configuration (isCustomElement)
  • Composition API patterns
  • Two-way binding
  • Event handling
  • Complete working examples

Vanilla JavaScript

<script type="module">
  import '@eva-sovereign/web-components';
  
  const button = document.querySelector('eva-button');
  button.addEventListener('eva-click', () => {
    console.log('Button clicked!');
  });
</script>

๐ŸŒ Internationalization (i18n)

Global Locale

import { setGlobalLocale } from '@eva-sovereign/web-components';

// Switch to French
setGlobalLocale('fr-CA');

// Switch to English
setGlobalLocale('en-CA');

Per-Component Locale

<eva-button locale="fr-CA">Soumettre</eva-button>
<eva-alert type="info" locale="fr-CA">Message important</eva-alert>

๐ŸŽจ Theming

Customize with CSS custom properties:

:root {
  /* Colors */
  --eva-color-primary: #26374a;
  --eva-color-secondary: #2b8a3e;
  --eva-color-danger: #c92a2a;
  
  /* Typography */
  --eva-font-family: "Noto Sans", Arial, sans-serif;
  --eva-font-size-base: 1rem;
  
  /* Spacing */
  --eva-spacing-sm: 0.5rem;
  --eva-spacing-md: 1rem;
  --eva-spacing-lg: 1.5rem;
  
  /* Borders */
  --eva-border-radius: 4px;
}

๐Ÿงช Development

Setup

# Clone repository
git clone https://github.com/MarcoPolo483/EVA-Sovereign-UI.git

# Install dependencies
cd EVA-Sovereign-UI/packages/web-components
npm install

# Start development server
npm run dev

# Start Storybook
npm run storybook

Build

# Build components
npm run build

# Build Storybook
npm run build-storybook

# Generate API docs
npm run docs

Test

# Run unit tests
npm test

# Run tests with UI
npm run test:ui

# Run tests with coverage
npm run test:coverage

๐Ÿ“Š Bundle Size

  • ESM Bundle: 87.73 KB (20.14 KB gzipped)
  • UMD Bundle: 74.90 KB (18.51 KB gzipped)
  • Tree-shakeable: Import only what you need

๐Ÿค Contributing

We welcome contributions! Please see our contributing guidelines:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“ License

MIT License - See LICENSE file for details


๐Ÿ™ Acknowledgments

  • GC Design System - Official Government of Canada design guidelines
  • Lit - Fast, lightweight Web Components
  • Storybook - Component development environment
  • TypeDoc - TypeScript documentation generator

๐Ÿ“ž Support

Note: Storybook and API documentation builds are in progress. Demos are fully functional!


ยฉ 2025 EVA-Sovereign-UI | POD-X | Marco Presta + GitHub Copilot

Status: โœ… Production-Ready | Version: 1.0.0 | Last Updated: December 7, 2025

Top categories

Loading Svelte Themes