Package Exports
- @startnext/chrome
- @startnext/chrome/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@startnext/chrome) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@startnext/chrome
Startnext Header/Footer Web Components
Wiederverwendbare Header- und Footer-Components für alle Startnext Microservices.
Installation
npm install @startnext/chrome
# or
pnpm add @startnext/chromeQuick Start
Modern JavaScript (React, Vue, etc.)
import '@startnext/chrome';<startnext-header></startnext-header>
<startnext-footer></startnext-footer>Via CDN (PHP, Vanilla HTML)
<script type="module" src="https://unpkg.com/@startnext/chrome@latest/dist/index.js"></script>
<startnext-header></startnext-header>
<startnext-footer></startnext-footer>API
<startnext-header>
Attributes:
| Attribute | Type | Default | Description |
|---|---|---|---|
lang |
string |
'de' |
Sprache ('de', 'en') |
light |
boolean |
false |
Heller Header (weiße Schrift/Icons über dunklem Hero, wechselt automatisch zu dunkel beim Scrollen). Standard ohne Attribut: dunkler Header |
large-animation |
boolean |
false |
Große Lottie-Logo-Animation mit Claim und horizontaler Navigation |
authenticated |
boolean |
false |
Zeigt User-Avatar statt "Anmelden" Button |
user-name |
string |
- | Name des eingeloggten Users |
user-avatar |
string |
- | Avatar-URL des Users |
Events:
| Event | Detail | Description |
|---|---|---|
burger-menu-toggle |
{ open: boolean } |
Burger-Menü geöffnet/geschlossen |
user-menu-toggle |
{ open: boolean } |
User-Menü geöffnet/geschlossen |
navigation-click |
{ item: NavigationItem } |
Navigation-Link geklickt |
cta-click |
{ url: string } |
"Projekt starten" Button geklickt |
logout |
{} |
Abmelden geklickt |
language-change |
{ language: string } |
Sprache gewechselt |
scroll-state-change |
{ scrolled: boolean, slideUp: boolean } |
Scroll-Zustand geändert |
Usage Examples:
<!-- Default: dunkler Header (dunkle Schrift für helle Seiten) -->
<startnext-header></startnext-header>
<!-- Heller Header (weiße Schrift über dunklem Hero) -->
<startnext-header light></startnext-header>
<!-- Heller Header + große Animation (z.B. Startseite) -->
<startnext-header light large-animation></startnext-header>
<!-- Heller Header + groß + eingeloggt -->
<startnext-header
light
large-animation
authenticated
user-name="Elias Groesel"
user-avatar="https://..."
></startnext-header>const header = document.querySelector('startnext-header');
header.addEventListener('navigation-click', (e) => {
console.log(e.detail.item);
// e.preventDefault() to handle navigation yourself
});
header.addEventListener('language-change', (e) => {
// Sprache auch im Footer synchronisieren
document.querySelector('startnext-footer').setAttribute('lang', e.detail.language);
});
header.addEventListener('logout', () => {
// Handle logout
});<startnext-footer>
Attributes:
| Attribute | Type | Default | Description |
|---|---|---|---|
lang |
string |
'de' |
Sprache ('de', 'en') |
Events:
| Event | Detail | Description |
|---|---|---|
navigation-click |
{ item: { url, label } } |
Footer-Link geklickt |
Theming
Override CSS Custom Properties:
startnext-header {
--primary-color: #0066FF;
--btn-primary-bg: #0066FF;
--header-bg-scrolled: #FAFAFA;
}
startnext-footer {
--footer-bg: #111111;
--footer-link-hover: #0066FF;
}Browser Support
- Chrome/Edge 90+
- Firefox 88+
- Safari 14+
Development
# Install deps (from monorepo root)
pnpm install
# Dev mode (watch)
pnpm --filter @startnext/chrome dev
# Build
pnpm --filter @startnext/chrome build
# Lint
pnpm --filter @startnext/chrome lintDemo-Seite öffnen: packages/sn-chrome-web-component/examples/vanilla/index.html
Architecture
Jede Component ist modular in drei Dateien aufgeteilt:
src/
├── components/
│ ├── base/
│ │ ├── BaseComponent.ts # Abstrakte Basis (Shadow DOM, Events, Theming)
│ │ ├── icons.ts # SVG-Icon-Registry
│ │ └── styles.ts # Shared Reset-CSS
│ ├── header/
│ │ ├── StartnextHeader.ts # Logik (Scroll, Drawers, Lottie, Events)
│ │ ├── header.css.ts # CSS als Template-Literal-Export
│ │ └── header.template.ts # Render-Funktionen (HTML-Strings)
│ └── footer/
│ ├── StartnextFooter.ts # Logik (Render, Events)
│ ├── footer.css.ts # CSS als Template-Literal-Export
│ └── footer.template.ts # Render-Funktion (HTML-String)
├── data/
│ └── mockData.ts # Mock-Daten
├── types/
│ └── index.ts # Alle TypeScript-Interfaces
└── index.ts # Barrel-ExportKonventionen:
- CSS in
*.css.tsals exportierter Template-Literal-String (kein extra Build-Plugin nötig) - Templates in
*.template.tsals reine Funktionen die HTML-Strings zurückgeben - Logik in der Hauptdatei: Event-Handling, State, Lifecycle
- BEM-Naming für CSS-Klassen (
headbar__left,drawer__item--highlighted) - Shadow DOM (open mode), kein Virtual DOM
Monorepo Structure
packages/
scs-chrome-web-component/ ← this package
scs-chrome-api/ ← API service