<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Frontend (Gov-Chat Web) on GENIE.AI</title><link>https://genie-ai-7e342b.opensource.unicc.org/docs/frontend/</link><description>Recent content in Frontend (Gov-Chat Web) on GENIE.AI</description><generator>Hugo</generator><language>en</language><atom:link href="https://genie-ai-7e342b.opensource.unicc.org/docs/frontend/index.xml" rel="self" type="application/rss+xml"/><item><title>Ui Component Inventory Frontend</title><link>https://genie-ai-7e342b.opensource.unicc.org/docs/frontend/ui-component-inventory-frontend/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://genie-ai-7e342b.opensource.unicc.org/docs/frontend/ui-component-inventory-frontend/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;For frontend developers.&lt;/strong&gt; A reference catalogue of the web UI components and their props.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Total Vue Components&lt;/strong&gt;: 55&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design System Components&lt;/strong&gt;: 12&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Application Components&lt;/strong&gt;: 43&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="design-system-primitives-srccomponentsds"&gt;Design System Primitives (&lt;code&gt;src/components/ds/&lt;/code&gt;)&lt;/h2&gt;
&lt;h3 id="core-primitives"&gt;Core Primitives&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Button.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Button primitive with variants (primary, secondary, ghost, danger)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Card.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Container card with shadow and border radius&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Input.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Text input field with label, validation states, and error messaging&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Modal.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Modal dialog overlay with header, body, footer slots&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Select.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Dropdown select component with options&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Combobox.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Auto-complete text input with dropdown suggestions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Tabs.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Tab navigation component with panels&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Pill.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Small badge/tag component for status or category display&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Spinner.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Loading spinner animation&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;StatusTag.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Status indicator with color coding (success, warning, error, info)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;StateDisplay.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Empty state / error state / loading state display component&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;FormGroup.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Form field wrapper with label and error messaging&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="layout-components"&gt;Layout Components&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;App.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Root application component with router-view and global providers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;NavBarComponent.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Top navigation bar with user menu, language selector, logout&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SideBarComponent.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Left sidebar with conversation history and navigation&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SplashScreen.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Initial loading screen with logo and progress indicator&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="chat-components"&gt;Chat Components&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ChatBotComponent.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Main chat interface with message list and input area&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ChatFolders.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Conversation folder management (create, rename, delete)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ChatHistoryComponent.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Conversation history list with search and filtering&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ChatResponseFeedbackDialog.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Feedback dialog for rating chat responses (thumbs up/down)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RightSideBarComponent.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Right sidebar displaying context, documents, or service info&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WeatherPanel.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Weather information display panel (contextual data)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="admin--analytics-components"&gt;Admin &amp;amp; Analytics Components&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;AdminDashboard.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Admin dashboard with system metrics and user management&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;AnalyticsDashboard.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Analytics dashboard with charts and usage statistics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;AnalyticsComponent.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Analytics data display with filtering and date ranges&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;UnifiedAnalytics.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Unified analytics view combining multiple metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="chart-components-srccomponentscharts"&gt;Chart Components (&lt;code&gt;src/components/charts/&lt;/code&gt;)&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;UsageTrendChart.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Line chart showing query usage over time&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;CategoryDistributionChart.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Pie/donut chart for service category distribution&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SatisfactionGauge.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Gauge chart for user satisfaction scores&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SatisfactionHeatmap.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Heatmap chart for satisfaction by time/category&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;TopQueriesChart.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Bar chart showing most frequent queries&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="authentication--user-profile"&gt;Authentication &amp;amp; User Profile&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;CallbackView.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;OIDC authentication callback handler (view-level component)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;UserProfileComponent.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;User profile display and edit form&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="settings-components"&gt;Settings Components&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SettingsComponent.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Application settings panel (theme, language, preferences)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;LanguageSelector.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Language selection dropdown for i18n&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="file-management-components"&gt;File Management Components&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;FileUploadComponent.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;File upload widget with drag-and-drop support&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;UploadFilesDialog.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Dialog for uploading multiple files to the knowledge base&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;AddFromLinkDialog.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Dialog for adding documents via URL/link&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;FileDetailsDialog.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;File metadata display (name, size, upload date, status)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="service--context-components"&gt;Service &amp;amp; Context Components&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ServiceTreePanelComponent.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Hierarchical tree view of service categories&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ServiceCategoryPanelComponent.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Service category list/details panel&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="shared-ui-components"&gt;Shared UI Components&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ConfirmDialog.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Generic confirmation dialog (confirm/cancel actions)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ModalDialog.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Generic modal dialog wrapper component&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ContextMenu.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Right-click context menu with custom actions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;NotificationSystem.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Toast notification system (success, error, warning messages)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;OperationResultsModal.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Modal displaying results of batch operations&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;LogSearchDialog.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Dialog for searching through system logs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SearchableCountryDropdown.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Country selector with search functionality&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="views-srcviews"&gt;Views (&lt;code&gt;src/views/&lt;/code&gt;)&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;DashboardView.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Main dashboard view (router target)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;CallbackView.vue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Authentication callback view (OIDC redirect handler)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="component-organization"&gt;Component Organization&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;src/
├── App.vue # Root component
├── views/ # Router-level views
│ ├── DashboardView.vue
│ └── CallbackView.vue
├── components/
│ ├── ds/ # Design system primitives (12)
│ ├── charts/ # Analytics chart components (5)
│ ├── [Layout] # Navigation and layout (4)
│ ├── [Chat] # Chat interface (6)
│ ├── [Admin] # Admin/analytics (4)
│ ├── [Auth] # Authentication (2)
│ ├── [Settings] # Settings (2)
│ ├── [Files] # File management (4)
│ ├── [Services] # Service navigation (2)
│ └── [Shared] # Shared UI components (6)
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;All components use Vue 3 &lt;strong&gt;Options API&lt;/strong&gt; (not Composition API)&lt;/li&gt;
&lt;li&gt;Design system components in &lt;code&gt;src/components/ds/&lt;/code&gt; are reusable primitives&lt;/li&gt;
&lt;li&gt;Chart components use &lt;strong&gt;ApexCharts&lt;/strong&gt; library (via vue3-apexcharts)&lt;/li&gt;
&lt;li&gt;Routing via Vue Router with views in &lt;code&gt;src/views/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;i18n via vue-i18n with translations in &lt;code&gt;/src/i18n/locales/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>State Management Frontend</title><link>https://genie-ai-7e342b.opensource.unicc.org/docs/frontend/state-management-frontend/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://genie-ai-7e342b.opensource.unicc.org/docs/frontend/state-management-frontend/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;For frontend developers.&lt;/strong&gt; How the Vue 3 web app manages state — Vuex store, modules, and data flow.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;The frontend application uses &lt;strong&gt;Vuex 4.x&lt;/strong&gt; for centralized state management, with a modular architecture that separates concerns between authentication, chat history, and application state. The implementation follows modern Vue.js 3 patterns with namespaced modules.&lt;/p&gt;
&lt;h2 id="store-architecture"&gt;Store Architecture&lt;/h2&gt;
&lt;h3 id="main-store-srcstoreindexjs"&gt;Main Store (&lt;code&gt;/src/store/index.js&lt;/code&gt;)&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;createStore&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;modules&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;chatHistory&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;chatHistoryStore&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;auth&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;plugins&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// localStorage persistence plugin for chatHistory
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Theme System</title><link>https://genie-ai-7e342b.opensource.unicc.org/docs/frontend/theme-system/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://genie-ai-7e342b.opensource.unicc.org/docs/frontend/theme-system/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;For frontend developers.&lt;/strong&gt; The web app&amp;rsquo;s theme system — design tokens, SCSS variables, and customisation points.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="theme-system"&gt;Theme System&lt;/h1&gt;
&lt;p&gt;GENIE.AI uses a CSS-native theming architecture. A single &lt;strong&gt;brand color&lt;/strong&gt; drives the entire accent palette, including dark mode — no JavaScript color manipulation.&lt;/p&gt;
&lt;h2 id="how-it-works"&gt;How It Works&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;JSON config (genie-ai-config.json)
 │
 ▼
main.js — injects base CSS variables via inline style
 │
 ▼
theme-variables.css — derives full palette using OKLch relative syntax
 │
 ▼
Components consume tokens via var(--token)
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="1-json-config"&gt;1. JSON Config&lt;/h3&gt;
&lt;p&gt;The config file (&lt;code&gt;public/config/genie-ai-config.json&lt;/code&gt;) defines the base theme:&lt;/p&gt;</description></item></channel></rss>