Title: Widget System Description: The widget system is the foundation of our composable UI architecture, enabling dynamic application building through reusable, configurable components. --- Overview The widget system provides a powerful framework for building dynamic user interfaces through composable widgets. Each widget encapsulates specific functionality and can be configured, styled, and combined with other widgets to create complex applications. graph TB subgraph "Widget Ecosystem" A[Widget Registry] --> B[Widget Definitions] B --> C[Widget Components] B --> D[Widget Schemas] B --> E[Widget Categories] F[Widget Tree] --> G[Root Widget] G --> H[Child Widgets] H --> I[Nested Widgets] J[Widget Renderer] --> K[Component Loader] K --> L[Dynamic Import] L --> M[Svelte Component] N[Widget Editor] --> O[Schema-based Forms] O --> P[Visual Configuration] P --> Q[Real-time Preview] end A --> F F --> J J --> N Core Concepts Widget Definition A widget is defined by several key components: interface WidgetRegistration { name: string; // Unique identifier title?: InlineTranslation; // Localized display name description?: InlineTranslation; // Localized widget description (required for catalog widgets) category?: string; // Organization category visibleInCatalog?: boolean; // Show in widget picker componentLoader: () => Promise; // Dynamic component loading dataSchema?: () => Promise; // Configuration schema } Important: Widget descriptions use InlineTranslation (an object with language keys like { en: "...", de: "..." }), not plain strings. Descriptions are required for widgets with visibleInCatalog: true. They are displayed in the widget catalog and exposed via /docs/widgets/llm.txt for AI agents and chatbots. Widget Instance Each widget instance contains: interface Widget { id: string; // Unique instance ID name: string; // Widget type from registry data?: any; // Widget configuration data styles?: WidgetCSSStyles; // CSS styling slots?: WidgetSlotMapping; // Child widget relationships } Widget Tree Structure Widgets are organized in a hierarchical tree structure: interface WidgetTree { rootWidgetId: string | undefined; // Entry point widgets: Record; // All widget instances } Widget Categories Layout Widgets Widgets that provide structure and organization: Container: Horizontal or vertical layout container Max Width Container: Responsive width limiting App Shell: Full application layout with header, sidebar, and content Layout Child: Flexible layout positioning Content Widgets Widgets for displaying and editing content: Text: Rich text display and editing Image: Image display with responsive sizing Editor.js: Block-style content editor Hero: Large banner/hero sections Check-in (CheckIn): Visitor check-in widget with registration form, optional QR code scanner, and GDPR-compliant data retention settings. See configuration details below. Bunny Stream Video (BunnyStreamVideo): Embeds a video from Bunny Stream (bunny.net) with configurable playback options. See configuration details below. Form Widgets Interactive input and form components: Form Fields: Various input types (text, number, date, etc.) Form Containers: Form layout and validation Button: Action triggers and navigation Login: User authentication widget Register: User registration widget Data Widgets Widgets for displaying and manipulating data: DataView: Sortable, filterable data display with saved queries EntityEditor: Edit entity records with validation Dashboard: Customizable dashboard with multiple widgets NumberStats: Display numeric statistics NumberStatsDataTypeCount: Count statistics by data type Todo: Task list and management ProfileCard: User profile display AddressCard: Address information display StarRating: Rating input and display Maps: Map display and location selection Navigation Widgets Components for application navigation: Navbar: Top-level navigation Footer: Bottom navigation and links Tabs: Tabbed content organization Breadcrumbs: Hierarchical navigation Special Purpose Widgets Specialized widgets for specific use cases: Kiosk: Full-screen kiosk mode for public displays EmoticonsBar: Emoji picker and emoticon input Error: Error display widget EventStream Widgets Real-time collaborative widgets for Event Streams: EventStreamMap: GPS location sharing with OpenStreetMap integration (docs) EventStreamImageGallery: Photo sharing with camera capture and gallery upload (docs) EventStreamChatMessages: Real-time messaging for event streams (docs) EventStreamTimeline: Chronological display of event entries (docs) EventStreamPinBoard: Collaborative pin board for notes and ideas (docs) EventStreamSettings: Configuration and settings for event streams (docs) Website Building Block Widgets Composable widgets for building public-facing website pages: WebsiteSection: Configurable page section wrapper with variant (base, alternate, accent) and padding options (sm, md, lg, xl) WebsiteNavigation: Fixed navigation bar with scroll-aware styling, responsive mobile menu, brand logo, navigation links, and CTA button WebsiteFooter: Footer with contact information, navigation links, and social media icons WebsiteFrame: Full-page wrapper combining WebsiteNavigation and WebsiteFooter around page content CardGrid: Responsive card grid layout with configurable columns (1-3) and style variants (flat, elevated, gradient) CtaSection: Call-to-action section with title, subtitle, button, and style variants (subtle, gradient) FaqAccordion: Expandable FAQ section with question/answer pairs FeatureList: Icon-based feature list for trust signals and feature highlights PricingTable: Responsive pricing tier comparison table with feature checklists and CTA buttons Utility Widgets Specialized utility widgets: QRCodeScanner: Real-time QR code and barcode scanning with configurable actions (docs) IpForwarder: Network utility for IP forwarding and port mapping (docs) PushNotificationSubscription: Browser notification subscription management Bunny Stream Video Widget Widget name constant: WIDGETBUNNYSTREAM_VIDEO ("BunnyStreamVideo") Category: content Visible in catalog: yes The Bunny Stream Video widget embeds a video hosted on Bunny Stream (bunny.net) using a responsive