Production-ready Web Components for Government of Canada applications. WCAG AAA compliant, bilingual (EN-CA/FR-CA), and GC Design System certified.
npm install @eva-sovereign/web-components
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>
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>;
}
<eva-chat-panel
placeholder-text="Ask about government services..."
locale="en-CA">
</eva-chat-panel>
<eva-input
type="email"
placeholder="Enter your email"
locale="fr-CA"
required>
</eva-input>
<eva-button variant="primary" locale="fr-CA">Soumettre</eva-button>
<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>
See React Integration Guide for:
See Vue Integration Guide for:
<script type="module">
import '@eva-sovereign/web-components';
const button = document.querySelector('eva-button');
button.addEventListener('eva-click', () => {
console.log('Button clicked!');
});
</script>
import { setGlobalLocale } from '@eva-sovereign/web-components';
// Switch to French
setGlobalLocale('fr-CA');
// Switch to English
setGlobalLocale('en-CA');
<eva-button locale="fr-CA">Soumettre</eva-button>
<eva-alert type="info" locale="fr-CA">Message important</eva-alert>
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;
}
# 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 components
npm run build
# Build Storybook
npm run build-storybook
# Generate API docs
npm run docs
# Run unit tests
npm test
# Run tests with UI
npm run test:ui
# Run tests with coverage
npm run test:coverage
We welcome contributions! Please see our contributing guidelines:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)MIT License - See LICENSE file for details
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