refactor(semantics): migrate legacy @TIER to @COMPLEXITY annotations

- Replaced @TIER: TRIVIAL with @COMPLEXITY: 1
- Replaced @TIER: STANDARD with @COMPLEXITY: 3
- Replaced @TIER: CRITICAL with @COMPLEXITY: 5
- Manually elevated specific critical/complex components to levels 2 and 4
- Ignored legacy, specs, and node_modules directories
- Updated generated semantic map
This commit is contained in:
2026-03-16 10:06:44 +03:00
parent 321e0eb2db
commit 274510fc38
321 changed files with 30101 additions and 58483 deletions

View File

@@ -1,6 +1,6 @@
<!-- [DEF:Counter:Component] -->
<!--
@TIER: TRIVIAL
@COMPLEXITY: 1
@PURPOSE: Simple counter demo component
@LAYER: UI
-->

View File

@@ -1,5 +1,5 @@
// [DEF:api_module:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: api, client, fetch, rest
// @PURPOSE: Handles all communication with the backend API.
// @LAYER: Infra-API

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.api.__tests__.reports_api:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: tests, reports, api-client, query-string, error-normalization
// @PURPOSE: Unit tests for reports API client functions: query string building, error normalization, and fetch wrappers.
// @LAYER: Infra (Tests)

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.api.assistant:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: assistant, api, client, chat, confirmation
// @PURPOSE: API client wrapper for assistant chat, confirmation actions, and history retrieval.
// @LAYER: Infra-API

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.api.reports:Module]
// @TIER: CRITICAL
// @COMPLEXITY: 5
// @SEMANTICS: frontend, api_client, reports, wrapper
// @PURPOSE: Wrapper-based reports API client for list/detail retrieval without direct native fetch usage.
// @LAYER: Infra

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.auth.__tests__.permissions:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: tests, auth, permissions, rbac
// @PURPOSE: Verifies frontend RBAC permission parsing and access checks.
// @LAYER: UI (Tests)

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.auth.permissions:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: auth, permissions, rbac, roles
// @PURPOSE: Shared frontend RBAC utilities for route guards and menu visibility.
// @LAYER: Domain

View File

@@ -1,5 +1,5 @@
// [DEF:authStore:Store]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: auth, store, svelte, jwt, session
// @PURPOSE: Manages the global authentication state on the frontend.
// @LAYER: Feature

View File

@@ -1,7 +1,7 @@
<!-- [DEF:AssistantChatPanel:Component] -->
<script>
/**
* @TIER: CRITICAL
* @COMPLEXITY: 5
* @PURPOSE: Slide-out assistant chat panel for natural language command execution and task tracking.
* @LAYER: UI
* @RELATION: BINDS_TO -> assistantChatStore

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.components.assistant.__tests__.assistant_chat_integration:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: assistant, integration-test, ux-contract, i18n
// @PURPOSE: Contract-level integration checks for assistant chat panel implementation and localization wiring.
// @LAYER: UI Tests

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.components.assistant.__tests__.assistant_first_message_integration:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: assistant, integration-test, optimistic-message, conversation-race
// @PURPOSE: Verify first optimistic user message stays visible while a new conversation request is pending.
// @LAYER: UI Tests
@@ -121,7 +121,7 @@ vi.mock('$lib/i18n', () => ({
}));
// [DEF:assistant_first_message_tests:Function]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @PURPOSE: Guard optimistic first-message UX against history reload race in new conversation flow.
// @PRE: Assistant panel renders with open state and mocked network dependencies.
// @POST: First user message remains visible before pending send request resolves.

View File

@@ -1,6 +1,6 @@
<!-- [DEF:HealthMatrix:Component] -->
<!--
@TIER: STANDARD
@COMPLEXITY: 3
@PURPOSE: Visual grid/matrix representing the health status of dashboards.
@LAYER: UI/Component
@UX_STATE: Idle -> Displays the health matrix grid.

View File

@@ -1,6 +1,6 @@
<!-- [DEF:PolicyForm:Component] -->
<!--
@TIER: STANDARD
@COMPLEXITY: 3
@PURPOSE: Form for creating and editing validation policies.
@LAYER: UI/Component
@UX_STATE: Idle -> Displays the policy form.

View File

@@ -1,7 +1,7 @@
<!-- [DEF:Breadcrumbs:Component] -->
<script>
/**
* @TIER: STANDARD
* @COMPLEXITY: 3
* @PURPOSE: Display page hierarchy navigation
* @LAYER: UI
* @RELATION: DEPENDS_ON -> page store

View File

@@ -1,7 +1,7 @@
<!-- [DEF:Sidebar:Component] -->
<script>
/**
* @TIER: CRITICAL
* @COMPLEXITY: 5
* @PURPOSE: Persistent left sidebar with resource categories navigation
* @LAYER: UI
* @RELATION: BINDS_TO -> sidebarStore

View File

@@ -1,7 +1,7 @@
<!-- [DEF:TaskDrawer:Component] -->
<script>
/**
* @TIER: CRITICAL
* @COMPLEXITY: 5
* @PURPOSE: Global task drawer for monitoring background operations
* @LAYER: UI
* @RELATION: BINDS_TO -> taskDrawerStore, assistantChatStore, WebSocket
@@ -414,7 +414,7 @@
* @PURPOSE: Disconnects the active WebSocket connection
* @PRE: ws may or may not be initialized
* @POST: ws is closed and set to null
* @TIER: STANDARD
* @COMPLEXITY: 3
*/
function disconnectWebSocket() {
console.log("[TaskDrawer][WebSocket][disconnectWebSocket:START]");
@@ -470,7 +470,7 @@
* @PURPOSE: Return to task list view from task details
* @PRE: Drawer is open and activeTaskId is set
* @POST: Drawer switches to list view and reloads tasks
* @TIER: STANDARD
* @COMPLEXITY: 3
*/
function goBackToList() {
console.log("[TaskDrawer][UI][goBackToList:START]");

View File

@@ -1,7 +1,7 @@
<!-- [DEF:TopNavbar:Component] -->
<script>
/**
* @TIER: CRITICAL
* @COMPLEXITY: 5
* @PURPOSE: Unified top navigation bar with Logo, Search, Activity, and User menu
* @LAYER: UI
* @RELATION: BINDS_TO -> activityStore, authStore

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.components.layout.__tests__.sidebarNavigation:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: tests, sidebar, navigation, rbac, permissions
// @PURPOSE: Verifies RBAC-based sidebar category and subitem visibility.
// @LAYER: UI (Tests)

View File

@@ -1,5 +1,5 @@
// [DEF:__tests__/test_breadcrumbs:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @PURPOSE: Contract-focused unit tests for Breadcrumbs.svelte logic and UX annotations
// @LAYER: UI
// @RELATION: VERIFIES -> frontend/src/lib/components/layout/Breadcrumbs.svelte
@@ -68,7 +68,7 @@ describe('Breadcrumbs Component Contract & Logic', () => {
it('contains required UX tags and semantic header for STANDARD module', () => {
const source = fs.readFileSync(COMPONENT_PATH, 'utf-8');
expect(source).toContain('@TIER: STANDARD');
expect(source).toContain('@COMPLEXITY: 3');
expect(source).toContain('@UX_STATE: Idle');
expect(source).toContain('@UX_FEEDBACK');
expect(source).toContain('@UX_RECOVERY');

View File

@@ -1,5 +1,5 @@
// [DEF:__tests__/test_sidebar:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @PURPOSE: Unit tests for Sidebar.svelte component
// @LAYER: UI
// @RELATION: VERIFIES -> frontend/src/lib/components/layout/Sidebar.svelte

View File

@@ -1,5 +1,5 @@
// [DEF:__tests__/test_taskDrawer:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @PURPOSE: Unit tests for TaskDrawer.svelte component
// @LAYER: UI
// @RELATION: VERIFIES -> frontend/src/lib/components/layout/TaskDrawer.svelte

View File

@@ -1,5 +1,5 @@
// [DEF:__tests__/test_topNavbar:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @PURPOSE: Unit tests for TopNavbar.svelte component
// @LAYER: UI
// @RELATION: VERIFIES -> frontend/src/lib/components/layout/TopNavbar.svelte

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.components.layout.sidebarNavigation:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: navigation, sidebar, rbac, menu, filtering
// @PURPOSE: Build sidebar navigation categories filtered by current user permissions.
// @LAYER: UI

View File

@@ -1,7 +1,7 @@
<!-- [DEF:ReportCard:Component] -->
<script>
/**
* @TIER: CRITICAL
* @COMPLEXITY: 5
* @SEMANTICS: reports, card, type-profile, accessibility, fallback
* @PURPOSE: Render one report with explicit textual type label and profile-driven visual variant.
* @LAYER: UI

View File

@@ -1,7 +1,7 @@
<!-- [DEF:ReportDetailPanel:Component] -->
<script>
/**
* @TIER: CRITICAL
* @COMPLEXITY: 5
* @SEMANTICS: reports, detail, diagnostics, next-actions, placeholders
* @PURPOSE: Display detailed report context with diagnostics and actionable recovery guidance.
* @LAYER: UI

View File

@@ -1,7 +1,7 @@
<!-- [DEF:ReportsList:Component] -->
<script>
/**
* @TIER: CRITICAL
* @COMPLEXITY: 5
* @SEMANTICS: reports, list, card, unified, mixed-types
* @PURPOSE: Render unified list of normalized reports with canonical minimum fields.
* @LAYER: UI

View File

@@ -1,5 +1,5 @@
// [DEF:reports.fixtures:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: reports, fixtures, test-data
// @PURPOSE: Shared frontend fixtures for unified reports states.
// @LAYER: UI

View File

@@ -2,7 +2,7 @@
* @vitest-environment jsdom
*/
// [DEF:frontend.src.lib.components.reports.__tests__.report_card.ux:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: reports, ux-tests, card, states, recovery
// @PURPOSE: Test UX states and transitions for ReportCard component
// @LAYER: UI

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.components.reports.__tests__.report_detail.integration:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: tests, reports, detail, recovery-guidance, integration
// @PURPOSE: Validate detail-panel behavior for failed reports and recovery guidance visibility.
// @LAYER: UI (Tests)

View File

@@ -2,7 +2,7 @@
* @vitest-environment jsdom
*/
// [DEF:frontend.src.lib.components.reports.__tests__.report_detail.ux:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: reports, ux-tests, detail, diagnostics, recovery
// @PURPOSE: Test UX states and recovery for ReportDetailPanel component
// @LAYER: UI

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.components.reports.__tests__.report_type_profiles:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: tests, reports, type-profiles, fallback
// @PURPOSE: Validate report type profile mapping and unknown fallback behavior.
// @LAYER: UI (Tests)

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.components.reports.__tests__.reports_filter_performance:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: tests, reports, performance, filtering
// @PURPOSE: Guard test for report filter responsiveness on moderate in-memory dataset.
// @LAYER: UI (Tests)

View File

@@ -2,7 +2,7 @@
* @vitest-environment jsdom
*/
// [DEF:frontend.src.lib.components.reports.__tests__.reports_list.ux:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: reports, list, ux-tests, events, iteration
// @PURPOSE: Test ReportsList component iteration and event forwarding.
// @LAYER: UI

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.components.reports.__tests__.reports_page.integration:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: tests, reports, integration, mixed-types, rendering
// @PURPOSE: Integration-style checks for unified mixed-type reports rendering expectations.
// @LAYER: UI (Tests)

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.components.reports.reportTypeProfiles:Module]
// @TIER: CRITICAL
// @COMPLEXITY: 5
// @SEMANTICS: reports, ui, profiles, fallback, mapping
// @PURPOSE: Deterministic mapping from report task_type to visual profile with one fallback.
// @LAYER: UI

View File

@@ -1,6 +1,6 @@
// [DEF:i18n:Module]
//
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: i18n, localization, svelte-store, translation
// @PURPOSE: Centralized internationalization management using Svelte stores.
// @LAYER: Infra

View File

@@ -1,71 +1,71 @@
// [DEF:stores_module:Module]
// @TIER: STANDARD
// @SEMANTICS: state, stores, svelte, plugins, tasks
// @PURPOSE: Global state management using Svelte stores.
// @LAYER: UI-State
import { writable } from 'svelte/store';
import { api } from './api.js';
// [DEF:plugins:Data]
// @PURPOSE: Store for the list of available plugins.
export const plugins = writable([]);
// [/DEF:plugins:Data]
// [DEF:tasks:Data]
// @PURPOSE: Store for the list of tasks.
export const tasks = writable([]);
// [/DEF:tasks:Data]
// [DEF:selectedPlugin:Data]
// @PURPOSE: Store for the currently selected plugin.
export const selectedPlugin = writable(null);
// [/DEF:selectedPlugin:Data]
// [DEF:selectedTask:Data]
// @PURPOSE: Store for the currently selected task.
export const selectedTask = writable(null);
// [/DEF:selectedTask:Data]
// [DEF:currentPage:Data]
// @PURPOSE: Store for the current page.
export const currentPage = writable('dashboard');
// [/DEF:currentPage:Data]
// [DEF:taskLogs:Data]
// @PURPOSE: Store for the logs of the currently selected task.
export const taskLogs = writable([]);
// [/DEF:taskLogs:Data]
// [DEF:fetchPlugins:Function]
// @PURPOSE: Fetches plugins from the API and updates the plugins store.
// @PRE: None.
// @POST: plugins store is updated with data from the API.
export async function fetchPlugins() {
try {
console.log("[stores.fetchPlugins][Action] Fetching plugins.");
const data = await api.getPlugins();
console.log("[stores.fetchPlugins][Coherence:OK] Plugins fetched context={{'count': " + data.length + "}}");
plugins.set(data);
} catch (error) {
console.error(`[stores.fetchPlugins][Coherence:Failed] Error fetching plugins context={{'error': '${error}'}}`);
}
}
// [/DEF:fetchPlugins:Function]
// [DEF:fetchTasks:Function]
// @PURPOSE: Fetches tasks from the API and updates the tasks store.
// @PRE: None.
// @POST: tasks store is updated with data from the API.
export async function fetchTasks() {
try {
console.log("[stores.fetchTasks][Action] Fetching tasks.");
const data = await api.getTasks();
console.log("[stores.fetchTasks][Coherence:OK] Tasks fetched context={{'count': " + data.length + "}}");
tasks.set(data);
} catch (error) {
console.error(`[stores.fetchTasks][Coherence:Failed] Error fetching tasks context={{'error': '${error}'}}`);
}
}
// [/DEF:fetchTasks:Function]
// [DEF:stores_module:Module]
// @COMPLEXITY: 3
// @SEMANTICS: state, stores, svelte, plugins, tasks
// @PURPOSE: Global state management using Svelte stores.
// @LAYER: UI-State
import { writable } from 'svelte/store';
import { api } from './api.js';
// [DEF:plugins:Data]
// @PURPOSE: Store for the list of available plugins.
export const plugins = writable([]);
// [/DEF:plugins:Data]
// [DEF:tasks:Data]
// @PURPOSE: Store for the list of tasks.
export const tasks = writable([]);
// [/DEF:tasks:Data]
// [DEF:selectedPlugin:Data]
// @PURPOSE: Store for the currently selected plugin.
export const selectedPlugin = writable(null);
// [/DEF:selectedPlugin:Data]
// [DEF:selectedTask:Data]
// @PURPOSE: Store for the currently selected task.
export const selectedTask = writable(null);
// [/DEF:selectedTask:Data]
// [DEF:currentPage:Data]
// @PURPOSE: Store for the current page.
export const currentPage = writable('dashboard');
// [/DEF:currentPage:Data]
// [DEF:taskLogs:Data]
// @PURPOSE: Store for the logs of the currently selected task.
export const taskLogs = writable([]);
// [/DEF:taskLogs:Data]
// [DEF:fetchPlugins:Function]
// @PURPOSE: Fetches plugins from the API and updates the plugins store.
// @PRE: None.
// @POST: plugins store is updated with data from the API.
export async function fetchPlugins() {
try {
console.log("[stores.fetchPlugins][Action] Fetching plugins.");
const data = await api.getPlugins();
console.log("[stores.fetchPlugins][Coherence:OK] Plugins fetched context={{'count': " + data.length + "}}");
plugins.set(data);
} catch (error) {
console.error(`[stores.fetchPlugins][Coherence:Failed] Error fetching plugins context={{'error': '${error}'}}`);
}
}
// [/DEF:fetchPlugins:Function]
// [DEF:fetchTasks:Function]
// @PURPOSE: Fetches tasks from the API and updates the tasks store.
// @PRE: None.
// @POST: tasks store is updated with data from the API.
export async function fetchTasks() {
try {
console.log("[stores.fetchTasks][Action] Fetching tasks.");
const data = await api.getTasks();
console.log("[stores.fetchTasks][Coherence:OK] Tasks fetched context={{'count': " + data.length + "}}");
tasks.set(data);
} catch (error) {
console.error(`[stores.fetchTasks][Coherence:Failed] Error fetching tasks context={{'error': '${error}'}}`);
}
}
// [/DEF:fetchTasks:Function]
// [/DEF:stores_module:Module]

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.stores.__tests__.assistantChat:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: test, store, assistant, toggle, conversation
// @PURPOSE: Validate assistant chat store visibility and conversation binding transitions.
// @LAYER: UI Tests
@@ -17,7 +17,7 @@ import {
} from '../assistantChat.js';
// [DEF:assistantChatStore_tests:Function]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @PURPOSE: Group store unit scenarios for assistant panel behavior.
// @PRE: Store can be reset to baseline state in beforeEach hook.
// @POST: Open/close/toggle/conversation transitions are validated.

View File

@@ -1,5 +1,5 @@
// [DEF:mock_env_public:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @PURPOSE: Mock for $env/static/public SvelteKit module in vitest
// @LAYER: UI (Tests)
export const PUBLIC_WS_URL = 'ws://localhost:8000';

View File

@@ -1,5 +1,5 @@
// [DEF:setupTests:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @PURPOSE: Global test setup with mocks for SvelteKit modules
// @LAYER: UI

View File

@@ -1,6 +1,6 @@
// @RELATION: VERIFIES -> frontend/src/lib/stores/sidebar.js
// [DEF:frontend.src.lib.stores.__tests__.sidebar:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: sidebar, store, tests, mobile, navigation
// @PURPOSE: Unit tests for sidebar store
// @LAYER: Domain (Tests)

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.stores.__tests__.test_activity:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @PURPOSE: Unit tests for activity store
// @LAYER: UI
// @RELATION: VERIFIES -> frontend.src.lib.stores.activity

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.stores.__tests__.test_sidebar:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @PURPOSE: Unit tests for sidebar store
// @LAYER: UI
// @RELATION: VERIFIES -> frontend.src.lib.stores.sidebar

View File

@@ -1,5 +1,5 @@
// [DEF:frontend.src.lib.stores.__tests__.test_taskDrawer:Module]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: task-drawer, store, mapping, tests
// @PURPOSE: Unit tests for task drawer store
// @LAYER: UI

View File

@@ -1,5 +1,5 @@
// [DEF:activity:Store]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @PURPOSE: Track active task count for navbar indicator
// @LAYER: UI
// @RELATION: DEPENDS_ON -> WebSocket connection, taskDrawer store

View File

@@ -1,5 +1,5 @@
// [DEF:assistantChat:Store]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @SEMANTICS: assistant, store, ui-state, conversation
// @PURPOSE: Control assistant chat panel visibility and active conversation binding.
// @LAYER: UI

View File

@@ -1,5 +1,5 @@
// [DEF:environmentContext:Store]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @PURPOSE: Global selected environment context for navigation and safety cues.
// @LAYER: UI-State

View File

@@ -1,5 +1,5 @@
// [DEF:health_store:Store]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @PURPOSE: Manage dashboard health summary state and failing counts for UI badges.
// @LAYER: UI
// @RELATION: DEPENDS_ON -> api.getHealthSummary

View File

@@ -1,5 +1,5 @@
// [DEF:sidebar:Store]
// @TIER: STANDARD
// @COMPLEXITY: 3
// @PURPOSE: Manage sidebar visibility and navigation state
// @LAYER: UI
// @INVARIANT: isExpanded state is always synced with localStorage

View File

@@ -1,5 +1,5 @@
// [DEF:taskDrawer:Store]
// @TIER: CRITICAL
// @COMPLEXITY: 5
// @PURPOSE: Manage Task Drawer visibility and resource-to-task mapping
// @LAYER: UI
// @INVARIANT: resourceTaskMap always reflects current task associations

View File

@@ -1,6 +1,6 @@
<!-- [DEF:Button:Component] -->
<!--
@TIER: TRIVIAL
@COMPLEXITY: 1
@SEMANTICS: button, ui-atom, interactive
@PURPOSE: Standardized button component with variants and loading states.
@LAYER: Atom

View File

@@ -1,6 +1,6 @@
<!-- [DEF:Card:Component] -->
<!--
@TIER: TRIVIAL
@COMPLEXITY: 1
@SEMANTICS: card, container, ui-atom
@PURPOSE: Standardized container with padding and elevation.
@LAYER: Atom

View File

@@ -1,6 +1,6 @@
<!-- [DEF:Input:Component] -->
<!--
@TIER: TRIVIAL
@COMPLEXITY: 1
@SEMANTICS: input, form-field, ui-atom
@PURPOSE: Standardized text input component with label and error handling.
@LAYER: Atom

View File

@@ -1,6 +1,6 @@
<!-- [DEF:LanguageSwitcher:Component] -->
<!--
@TIER: TRIVIAL
@COMPLEXITY: 1
@SEMANTICS: language-switcher, i18n-ui, ui-atom
@PURPOSE: Dropdown component to switch between supported languages.
@LAYER: Atom

View File

@@ -1,6 +1,6 @@
<!-- [DEF:PageHeader:Component] -->
<!--
@TIER: TRIVIAL
@COMPLEXITY: 1
@SEMANTICS: page-header, layout-atom
@PURPOSE: Standardized page header with title and action area.
@LAYER: Atom

View File

@@ -1,6 +1,6 @@
<!-- [DEF:Select:Component] -->
<!--
@TIER: TRIVIAL
@COMPLEXITY: 1
@SEMANTICS: select, dropdown, form-field, ui-atom
@PURPOSE: Standardized dropdown selection component.
@LAYER: Atom

View File

@@ -1,6 +1,6 @@
// [DEF:ui:Module]
//
// @TIER: TRIVIAL
// @COMPLEXITY: 1
// @SEMANTICS: ui, components, library, atomic-design
// @PURPOSE: Central export point for standardized UI components.
// @LAYER: Atom

View File

@@ -1,6 +1,6 @@
// [DEF:Utils:Module]
/**
* @TIER: TRIVIAL
* @COMPLEXITY: 1
* @PURPOSE: General utility functions (class merging)
* @LAYER: Infra
*

View File

@@ -1,6 +1,6 @@
// [DEF:Debounce:Module]
/**
* @TIER: TRIVIAL
* @COMPLEXITY: 1
* @PURPOSE: Debounce utility for limiting function execution rate
* @LAYER: Infra
*