Frontend Components Documentation
Version: 1.0.0 | Astro + Svelte
Architecture
Framework: Astro (SSG + Islands)
UI Components: Svelte 4
Styling: Tailwind CSS 3
State: Svelte stores
i18n: Custom solution (FR, NL, EN)
Key Components
Authentication
LoginForm.svelte
Location:
frontend/src/components/auth/LoginForm.svelteProps: None
Emits:
loginevent with credentialsUses:
authStorefor JWT management
Buildings
BuildingList.svelte
Location:
frontend/src/components/buildings/BuildingList.svelteProps:
buildings: Building[]Features: Search, filter, pagination
BuildingCreateModal.svelte
Location:
frontend/src/components/buildings/BuildingCreateModal.svelteProps:
open: booleanEmits:
create,close
Units
UnitOwners.svelte
Location:
frontend/src/components/UnitOwners.svelteProps:
unitId: stringFeatures: Multi-owner management, quote-part validation
Stores
authStore
// frontend/src/lib/stores/authStore.ts
export const authStore = writable<AuthState>({
isAuthenticated: false,
user: null,
token: null,
activeRole: null
});
Styling Conventions
<button class="btn btn-primary">
<!-- Tailwind utilities -->
</button>
Storybook Setup (Planned)
npm install --save-dev @storybook/svelte
npx storybook init
Version: 1.0.0