@illuminateeducation/dna-atd-frontend 1.0.1 → 1.0.2-DNAATD-3045-v2-POC.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -20
- package/dist/assets/dna-atd-frontend.css +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +47350 -0
- package/dist/index.es.js.map +1 -0
- package/dist/src/App.vue.d.ts +2 -0
- package/dist/src/components/common/BaseButton.vue.d.ts +16 -0
- package/dist/src/components/common/BaseInput.vue.d.ts +8 -0
- package/dist/src/components/common/BaseModal.vue.d.ts +19 -0
- package/dist/src/components/common/ErrorBoundary.vue.d.ts +37 -0
- package/dist/src/composables/useAsync.d.ts +24 -0
- package/dist/src/composables/useClickOutside.d.ts +7 -0
- package/dist/src/composables/useForm.d.ts +38 -0
- package/dist/src/composables/useLocalStorage.d.ts +24 -0
- package/dist/src/composables/useWindowSize.d.ts +20 -0
- package/dist/src/config/app.config.d.ts +67 -0
- package/dist/src/context/backendContext.d.ts +9 -0
- package/dist/src/features/admin/customization/composables/useCustomization.d.ts +19 -0
- package/dist/src/features/admin/customization/store/customizationStore.d.ts +30 -0
- package/dist/src/features/admin/customization/views/CustomizationView.vue.d.ts +2 -0
- package/dist/src/features/admin/validation/composables/useValidation.d.ts +18 -0
- package/dist/src/features/admin/validation/store/validationStore.d.ts +27 -0
- package/dist/src/features/admin/validation/views/ValidationView.vue.d.ts +2 -0
- package/dist/src/features/reports/codeBasedJasper/components/AssessmentFinder.vue.d.ts +618 -0
- package/dist/src/features/reports/codeBasedJasper/components/DownloadButtons.vue.d.ts +13 -0
- package/dist/src/features/reports/codeBasedJasper/components/FavoritesWidget.vue.d.ts +10 -0
- package/dist/src/features/reports/codeBasedJasper/components/MultipleAssessmentIdsField.vue.d.ts +18 -0
- package/dist/src/features/reports/codeBasedJasper/components/ReportFilters.vue.d.ts +18 -0
- package/dist/src/features/reports/codeBasedJasper/components/ReportPagination.vue.d.ts +11 -0
- package/dist/src/features/reports/codeBasedJasper/components/ReportViewer.vue.d.ts +16 -0
- package/dist/src/features/reports/codeBasedJasper/composables/useCodeBasedJasper.d.ts +184 -0
- package/dist/src/features/reports/codeBasedJasper/mount.d.ts +1 -0
- package/dist/src/features/reports/codeBasedJasper/services/codeBasedJasperApi.d.ts +190 -0
- package/dist/src/features/reports/codeBasedJasper/store/codeBasedJasperStore.d.ts +503 -0
- package/dist/src/features/reports/codeBasedJasper/types/index.d.ts +54 -0
- package/dist/src/features/reports/codeBasedJasper/views/CodeBasedJasperReportView.vue.d.ts +32 -0
- package/dist/src/index.d.ts +51 -0
- package/dist/src/layouts/AdminLayout.vue.d.ts +2 -0
- package/dist/src/plugins/globalErrorHandling.d.ts +36 -0
- package/dist/src/plugins/vuetify.d.ts +86 -0
- package/dist/src/router/index.d.ts +16 -0
- package/dist/src/services/apiService.d.ts +33 -0
- package/dist/src/services/integration.d.ts +54 -0
- package/dist/src/types/api.d.ts +27 -0
- package/dist/src/types/backend.d.ts +27 -0
- package/dist/src/utils/helpers.d.ts +50 -0
- package/dist/src/utils/safeJson.d.ts +17 -0
- package/dist/src/views/HomeView.vue.d.ts +2 -0
- package/dist/src/views/NotFoundView.vue.d.ts +2 -0
- package/package.json +32 -9
- package/dist/.vite/manifest.json +0 -80
- package/dist/assets/AdminLayout.css +0 -1
- package/dist/assets/AdminLayout.js +0 -1
- package/dist/assets/CustomizationView.css +0 -1
- package/dist/assets/CustomizationView.js +0 -1
- package/dist/assets/HomeView.js +0 -1
- package/dist/assets/NotFoundView.css +0 -1
- package/dist/assets/NotFoundView.js +0 -1
- package/dist/assets/ValidationView.css +0 -1
- package/dist/assets/ValidationView.js +0 -1
- package/dist/assets/_plugin-vue_export-helper.js +0 -1
- package/dist/assets/index.css +0 -1
- package/dist/assets/index.js +0 -2
- package/dist/index.html +0 -14
- package/index.js +0 -1
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { VuetifyOptions } from 'vuetify';
|
|
2
|
+
export type { VuetifyOptions };
|
|
3
|
+
export declare function createVuetifyInstance(options?: VuetifyOptions): {
|
|
4
|
+
install: (app: import('vue').App<any>) => void;
|
|
5
|
+
unmount: () => void;
|
|
6
|
+
defaults: import('vue').Ref<import('vuetify').DefaultsInstance, import('vuetify').DefaultsInstance>;
|
|
7
|
+
display: import('vuetify').DisplayInstance;
|
|
8
|
+
theme: import('vuetify').ThemeInstance & {
|
|
9
|
+
install: (app: import('vue').App<any>) => void;
|
|
10
|
+
};
|
|
11
|
+
icons: {
|
|
12
|
+
defaultSet: string;
|
|
13
|
+
aliases: Partial<import('vuetify').IconAliases>;
|
|
14
|
+
sets: Record<string, import('vuetify').IconSet>;
|
|
15
|
+
};
|
|
16
|
+
locale: {
|
|
17
|
+
name: string;
|
|
18
|
+
decimalSeparator: import('vue').ShallowRef<string>;
|
|
19
|
+
messages: import('vue').Ref<import('vuetify').LocaleMessages, import('vuetify').LocaleMessages>;
|
|
20
|
+
current: import('vue').Ref<string, string>;
|
|
21
|
+
fallback: import('vue').Ref<string, string>;
|
|
22
|
+
t: (key: string, ...params: unknown[]) => string;
|
|
23
|
+
n: (value: number) => string;
|
|
24
|
+
provide: (props: import('vuetify').LocaleOptions) => import('vuetify').LocaleInstance;
|
|
25
|
+
isRtl: import('vue').Ref<boolean, boolean>;
|
|
26
|
+
rtl: import('vue').Ref<Record<string, boolean>, Record<string, boolean>>;
|
|
27
|
+
rtlClasses: import('vue').Ref<string, string>;
|
|
28
|
+
};
|
|
29
|
+
date: {
|
|
30
|
+
options: {
|
|
31
|
+
adapter: (new (options: {
|
|
32
|
+
locale: any;
|
|
33
|
+
formats?: any;
|
|
34
|
+
}) => import('vuetify').DateInstance) | import('vuetify').DateInstance;
|
|
35
|
+
formats?: Record<string, any>;
|
|
36
|
+
locale: Record<string, any>;
|
|
37
|
+
};
|
|
38
|
+
instance: {
|
|
39
|
+
date: (value?: any) => unknown;
|
|
40
|
+
format: (date: unknown, formatString: string) => string;
|
|
41
|
+
toJsDate: (value: unknown) => Date;
|
|
42
|
+
parseISO: (date: string) => unknown;
|
|
43
|
+
toISO: (date: unknown) => string;
|
|
44
|
+
startOfDay: (date: unknown) => unknown;
|
|
45
|
+
endOfDay: (date: unknown) => unknown;
|
|
46
|
+
startOfWeek: (date: unknown, firstDayOfWeek?: string | number | undefined) => unknown;
|
|
47
|
+
endOfWeek: (date: unknown) => unknown;
|
|
48
|
+
startOfMonth: (date: unknown) => unknown;
|
|
49
|
+
endOfMonth: (date: unknown) => unknown;
|
|
50
|
+
startOfYear: (date: unknown) => unknown;
|
|
51
|
+
endOfYear: (date: unknown) => unknown;
|
|
52
|
+
isAfter: (date: unknown, comparing: unknown) => boolean;
|
|
53
|
+
isAfterDay: (date: unknown, comparing: unknown) => boolean;
|
|
54
|
+
isSameDay: (date: unknown, comparing: unknown) => boolean;
|
|
55
|
+
isSameMonth: (date: unknown, comparing: unknown) => boolean;
|
|
56
|
+
isSameYear: (date: unknown, comparing: unknown) => boolean;
|
|
57
|
+
isBefore: (date: unknown, comparing: unknown) => boolean;
|
|
58
|
+
isEqual: (date: unknown, comparing: unknown) => boolean;
|
|
59
|
+
isValid: (date: any) => boolean;
|
|
60
|
+
isWithinRange: (date: unknown, range: [unknown, unknown]) => boolean;
|
|
61
|
+
addMinutes: (date: unknown, amount: number) => unknown;
|
|
62
|
+
addHours: (date: unknown, amount: number) => unknown;
|
|
63
|
+
addDays: (date: unknown, amount: number) => unknown;
|
|
64
|
+
addWeeks: (date: unknown, amount: number) => unknown;
|
|
65
|
+
addMonths: (date: unknown, amount: number) => unknown;
|
|
66
|
+
getYear: (date: unknown) => number;
|
|
67
|
+
setYear: (date: unknown, year: number) => unknown;
|
|
68
|
+
getDiff: (date: unknown, comparing: unknown, unit?: string | undefined) => number;
|
|
69
|
+
getWeekArray: (date: unknown, firstDayOfWeek?: string | number | undefined) => unknown[][];
|
|
70
|
+
getWeekdays: (firstDayOfWeek?: string | number | undefined, weekdayFormat?: "long" | "narrow" | "short" | undefined) => string[];
|
|
71
|
+
getWeek: (date: unknown, firstDayOfWeek?: string | number | undefined, firstDayOfYear?: string | number | undefined) => number;
|
|
72
|
+
getMonth: (date: unknown) => number;
|
|
73
|
+
setMonth: (date: unknown, month: number) => unknown;
|
|
74
|
+
getDate: (date: unknown) => number;
|
|
75
|
+
setDate: (date: unknown, day: number) => unknown;
|
|
76
|
+
getNextMonth: (date: unknown) => unknown;
|
|
77
|
+
getPreviousMonth: (date: unknown) => unknown;
|
|
78
|
+
getHours: (date: unknown) => number;
|
|
79
|
+
setHours: (date: unknown, hours: number) => unknown;
|
|
80
|
+
getMinutes: (date: unknown) => number;
|
|
81
|
+
setMinutes: (date: unknown, minutes: number) => unknown;
|
|
82
|
+
locale?: any;
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
goTo: import('vuetify').GoToInstance;
|
|
86
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file index.ts
|
|
3
|
+
* @description Vue Router configuration for DNA ATD Frontend application
|
|
4
|
+
* @author Illuminate Education
|
|
5
|
+
* @lastUpdated 2025-12-21
|
|
6
|
+
*
|
|
7
|
+
* @responsibilities
|
|
8
|
+
* - Defines application routing structure and navigation
|
|
9
|
+
* - Configures route hierarchy with nested admin routes
|
|
10
|
+
* - Implements navigation guards for authentication checks
|
|
11
|
+
* - Manages route metadata (titles, auth requirements)
|
|
12
|
+
* - Handles 404 Not Found fallback routing
|
|
13
|
+
* - Uses lazy loading for optimal performance
|
|
14
|
+
*/
|
|
15
|
+
declare const router: import('vue-router').Router;
|
|
16
|
+
export default router;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file apiService.ts
|
|
3
|
+
* @description Centralized HTTP API service for all backend communications
|
|
4
|
+
* @author Illuminate Education
|
|
5
|
+
* @lastUpdated 2025-12-21
|
|
6
|
+
*
|
|
7
|
+
* @responsibilities
|
|
8
|
+
* - Provides unified API request interface using native Fetch API
|
|
9
|
+
* - Handles HTTP methods: GET, POST, PUT, PATCH, DELETE
|
|
10
|
+
* - Manages request/response formatting and JSON serialization
|
|
11
|
+
* - Implements centralized error handling and logging
|
|
12
|
+
* - Configures base URL from environment variables
|
|
13
|
+
* - Sets default headers (Content-Type, custom headers)
|
|
14
|
+
* - Validates HTTP response status codes
|
|
15
|
+
*/
|
|
16
|
+
type ApiBody = unknown | FormData | string | null | undefined;
|
|
17
|
+
export type ApiRequestOptions = Omit<RequestInit, 'body' | 'headers'> & {
|
|
18
|
+
body?: ApiBody;
|
|
19
|
+
headers?: Record<string, string>;
|
|
20
|
+
};
|
|
21
|
+
declare class ApiService {
|
|
22
|
+
private baseURL;
|
|
23
|
+
constructor(baseURL?: string);
|
|
24
|
+
request<T = unknown>(endpoint: string, options?: ApiRequestOptions): Promise<T>;
|
|
25
|
+
requestTyped<TEndpoint extends string, TResponse = unknown>(endpoint: TEndpoint, options?: ApiRequestOptions): Promise<TResponse>;
|
|
26
|
+
get<T = unknown>(endpoint: string, options?: Omit<ApiRequestOptions, 'method'>): Promise<T>;
|
|
27
|
+
post<T = unknown>(endpoint: string, data: unknown | FormData, options?: Omit<ApiRequestOptions, 'method' | 'body'>): Promise<T>;
|
|
28
|
+
put<T = unknown>(endpoint: string, data: unknown | FormData, options?: Omit<ApiRequestOptions, 'method' | 'body'>): Promise<T>;
|
|
29
|
+
patch<T = unknown>(endpoint: string, data: unknown | FormData, options?: Omit<ApiRequestOptions, 'method' | 'body'>): Promise<T>;
|
|
30
|
+
delete<T = unknown>(endpoint: string, options?: Omit<ApiRequestOptions, 'method'>): Promise<T>;
|
|
31
|
+
}
|
|
32
|
+
export declare const apiService: ApiService;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file integration.ts
|
|
3
|
+
* @description Service for bidirectional communication between Vue app and backend systems
|
|
4
|
+
* @author Illuminate Education
|
|
5
|
+
* @lastUpdated 2025-12-21
|
|
6
|
+
*
|
|
7
|
+
* @responsibilities
|
|
8
|
+
* - Reads backend config/user from a host-provided global bootstrap object (default: window.APP_DATA)
|
|
9
|
+
* - Enables retrieval of custom bootstrap data by key
|
|
10
|
+
* - Emits events to host/backend via window custom events
|
|
11
|
+
* - Listens for and handles host/backend-triggered events
|
|
12
|
+
* - Implements singleton pattern for consistent integration access
|
|
13
|
+
*/
|
|
14
|
+
export type JsonObject = Record<string, unknown>;
|
|
15
|
+
export type IntegrationOptions = {
|
|
16
|
+
/**
|
|
17
|
+
* Optional global bootstrap variable name. In the host app, a common pattern is:
|
|
18
|
+
* `APP_DATA = {...}`.
|
|
19
|
+
*
|
|
20
|
+
* This is the single source of truth for config/user/data in this library.
|
|
21
|
+
*/
|
|
22
|
+
globalDataKey?: string;
|
|
23
|
+
};
|
|
24
|
+
export declare class Integration {
|
|
25
|
+
private globalDataKey?;
|
|
26
|
+
config: JsonObject;
|
|
27
|
+
user: JsonObject;
|
|
28
|
+
constructor(options?: IntegrationOptions);
|
|
29
|
+
setGlobalDataKey(globalDataKey?: string): void;
|
|
30
|
+
private getGlobalBootstrap;
|
|
31
|
+
private getBootstrapConfig;
|
|
32
|
+
private getBootstrapUser;
|
|
33
|
+
/**
|
|
34
|
+
* Get configuration from backend
|
|
35
|
+
*/
|
|
36
|
+
getConfig(): JsonObject;
|
|
37
|
+
/**
|
|
38
|
+
* Get user data from backend
|
|
39
|
+
*/
|
|
40
|
+
getUser(): JsonObject;
|
|
41
|
+
/**
|
|
42
|
+
* Get any custom bootstrap data by key.
|
|
43
|
+
*/
|
|
44
|
+
getData<T = unknown>(attribute: string): T | null;
|
|
45
|
+
/**
|
|
46
|
+
* Emit event to backend (via window for backend to listen)
|
|
47
|
+
*/
|
|
48
|
+
emitToBackend<T = unknown>(eventName: string, data: T): void;
|
|
49
|
+
/**
|
|
50
|
+
* Listen for backend events
|
|
51
|
+
*/
|
|
52
|
+
listenFromBackend<T = unknown>(eventName: string, callback: (data: T) => void): void;
|
|
53
|
+
}
|
|
54
|
+
export declare const integration: Integration;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file api.ts
|
|
3
|
+
* @description Shared API typing utilities for request/response contracts.
|
|
4
|
+
* @lastUpdated 2025-12-21
|
|
5
|
+
*
|
|
6
|
+
* @responsibilities
|
|
7
|
+
* - Defines JSON value types
|
|
8
|
+
* - Defines an extendable endpoint map for consumers (module augmentation)
|
|
9
|
+
*/
|
|
10
|
+
export type JsonPrimitive = string | number | boolean | null;
|
|
11
|
+
export type JsonValue = JsonPrimitive | JsonValue[] | {
|
|
12
|
+
[key: string]: JsonValue;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Consumers can augment this interface to get typed endpoints.
|
|
16
|
+
*
|
|
17
|
+
* Example:
|
|
18
|
+
* declare module '@illuminateeducation/dna-atd-frontend' {
|
|
19
|
+
* interface ApiEndpointMap {
|
|
20
|
+
* '/api/foo': { id: number }
|
|
21
|
+
* }
|
|
22
|
+
* }
|
|
23
|
+
*/
|
|
24
|
+
export interface ApiEndpointMap {
|
|
25
|
+
}
|
|
26
|
+
export type ApiResponseFor<TEndpoint extends keyof ApiEndpointMap> = ApiEndpointMap[TEndpoint];
|
|
27
|
+
export type ApiMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file backend.ts
|
|
3
|
+
* @description Shared typing contracts for backend bootstrap data (config/user).
|
|
4
|
+
* @lastUpdated 2025-12-21
|
|
5
|
+
*
|
|
6
|
+
* @responsibilities
|
|
7
|
+
* - Defines base interfaces for config and user payloads
|
|
8
|
+
* - Provides an ergonomic default shape while allowing extension
|
|
9
|
+
*/
|
|
10
|
+
export interface BackendUser {
|
|
11
|
+
id?: number | string;
|
|
12
|
+
user_id?: number | string;
|
|
13
|
+
full_name?: string;
|
|
14
|
+
initials?: string;
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
}
|
|
17
|
+
export interface BackendConfig {
|
|
18
|
+
base_url?: string;
|
|
19
|
+
csrf_token?: string;
|
|
20
|
+
endpoints?: Record<string, string>;
|
|
21
|
+
feature_flags?: Record<string, boolean>;
|
|
22
|
+
[key: string]: unknown;
|
|
23
|
+
}
|
|
24
|
+
export interface BackendContextData {
|
|
25
|
+
config: BackendConfig;
|
|
26
|
+
user: BackendUser;
|
|
27
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file helpers.ts
|
|
3
|
+
* @description Collection of reusable utility functions for common operations
|
|
4
|
+
* @author Illuminate Education
|
|
5
|
+
* @lastUpdated 2025-12-21
|
|
6
|
+
*
|
|
7
|
+
* @responsibilities
|
|
8
|
+
* - Provides performance optimization functions (debounce, throttle)
|
|
9
|
+
* - Handles object manipulation (deep cloning)
|
|
10
|
+
* - Date formatting and manipulation utilities
|
|
11
|
+
* - String operations (capitalize, truncate)
|
|
12
|
+
* - Unique ID generation
|
|
13
|
+
* - Value validation helpers (isEmpty checks)
|
|
14
|
+
* - Shared utility logic across the application
|
|
15
|
+
*/
|
|
16
|
+
type AnyFn = (...args: unknown[]) => unknown;
|
|
17
|
+
/**
|
|
18
|
+
* Debounce function to limit rate of function execution
|
|
19
|
+
*/
|
|
20
|
+
export declare function debounce<T extends AnyFn>(func: T, wait?: number): (...args: Parameters<T>) => void;
|
|
21
|
+
/**
|
|
22
|
+
* Throttle function to limit function execution frequency
|
|
23
|
+
*/
|
|
24
|
+
export declare function throttle<T extends AnyFn>(func: T, limit?: number): (...args: Parameters<T>) => void;
|
|
25
|
+
/**
|
|
26
|
+
* Deep clone an object (best-effort; handles Date/Array/plain objects)
|
|
27
|
+
*/
|
|
28
|
+
export declare function deepClone<T>(obj: T): T;
|
|
29
|
+
type DateFormat = 'short' | 'long' | 'time';
|
|
30
|
+
/**
|
|
31
|
+
* Format date to readable string
|
|
32
|
+
*/
|
|
33
|
+
export declare function formatDate(date: Date | string, format?: DateFormat): string;
|
|
34
|
+
/**
|
|
35
|
+
* Generate unique ID
|
|
36
|
+
*/
|
|
37
|
+
export declare function generateId(): string;
|
|
38
|
+
/**
|
|
39
|
+
* Capitalize first letter of string
|
|
40
|
+
*/
|
|
41
|
+
export declare function capitalize(str: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* Truncate string to specified length
|
|
44
|
+
*/
|
|
45
|
+
export declare function truncate(str: string, length?: number, suffix?: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Check if value is empty (null, undefined, empty string, empty array, empty object)
|
|
48
|
+
*/
|
|
49
|
+
export declare function isEmpty(value: unknown): boolean;
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file safeJson.ts
|
|
3
|
+
* @description Small helper for safe JSON parsing with fallback.
|
|
4
|
+
* @lastUpdated 2025-12-21
|
|
5
|
+
*
|
|
6
|
+
* @responsibilities
|
|
7
|
+
* - Parses JSON safely without throwing
|
|
8
|
+
* - Returns a caller-provided fallback when parsing fails
|
|
9
|
+
*/
|
|
10
|
+
export type JsonParseOptions<T> = {
|
|
11
|
+
fallback: T;
|
|
12
|
+
label?: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Safe JSON.parse with fallback. Useful when values come from backend-rendered DOM attributes.
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseJsonSafely<T>(json: string | null, { fallback, label }: JsonParseOptions<T>): T;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
2
|
+
export default _default;
|
package/package.json
CHANGED
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@illuminateeducation/dna-atd-frontend",
|
|
3
|
-
"version": "1.0.1",
|
|
3
|
+
"version": "1.0.2-DNAATD-3045-v2-POC.1",
|
|
4
4
|
"description": "DNA ATD Frontend - Vue 3 application for Illuminate Education",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
7
|
-
"main": "./index.js",
|
|
8
|
-
"module": "./index.js",
|
|
7
|
+
"main": "./dist/index.es.js",
|
|
8
|
+
"module": "./dist/index.es.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
9
10
|
"exports": {
|
|
10
11
|
".": {
|
|
11
|
-
"import": "./index.js",
|
|
12
|
-
"default": "./index.js"
|
|
12
|
+
"import": "./dist/index.es.js",
|
|
13
|
+
"default": "./dist/index.es.js"
|
|
13
14
|
},
|
|
14
|
-
"./dist/*": "./dist/*",
|
|
15
15
|
"./package.json": "./package.json"
|
|
16
16
|
},
|
|
17
17
|
"files": [
|
|
18
|
-
"index.js",
|
|
19
18
|
"dist/"
|
|
20
19
|
],
|
|
21
20
|
"keywords": [
|
|
@@ -32,21 +31,45 @@
|
|
|
32
31
|
"scripts": {
|
|
33
32
|
"dev": "vite",
|
|
34
33
|
"build": "vite build",
|
|
34
|
+
"build:lib": "vite build",
|
|
35
35
|
"preview": "vite preview",
|
|
36
|
+
"typecheck": "vue-tsc --noEmit -p tsconfig.vue.json",
|
|
37
|
+
"typecheck:test": "vue-tsc --noEmit -p tsconfig.vitest.json",
|
|
38
|
+
"lint": "eslint .",
|
|
39
|
+
"lint:fix": "eslint . --fix",
|
|
40
|
+
"format": "prettier . --write",
|
|
41
|
+
"format:check": "prettier . --check",
|
|
36
42
|
"test:unit": "vitest",
|
|
37
|
-
"test": "vitest run"
|
|
43
|
+
"test": "vitest run",
|
|
44
|
+
"prepublishOnly": "npm run build"
|
|
38
45
|
},
|
|
39
46
|
"dependencies": {
|
|
47
|
+
"@mdi/font": "^7.4.47",
|
|
40
48
|
"pinia": "^3.0.4",
|
|
49
|
+
"vuetify": "^3.7.0",
|
|
41
50
|
"vue": "^3.5.25",
|
|
42
|
-
"vue-router": "^4.6.3"
|
|
51
|
+
"vue-router": "^4.6.3",
|
|
52
|
+
"vuedraggable": "^4.1.0"
|
|
43
53
|
},
|
|
44
54
|
"devDependencies": {
|
|
55
|
+
"@eslint/js": "^9.35.0",
|
|
56
|
+
"@types/node": "^24.3.1",
|
|
45
57
|
"@vitejs/plugin-vue": "^6.0.2",
|
|
46
58
|
"@vue/test-utils": "^2.4.6",
|
|
59
|
+
"eslint": "^9.35.0",
|
|
60
|
+
"eslint-config-prettier": "^10.1.1",
|
|
61
|
+
"eslint-plugin-vue": "^10.4.0",
|
|
47
62
|
"jsdom": "^27.2.0",
|
|
63
|
+
"prettier": "^3.6.2",
|
|
64
|
+
"sass": "^1.86.0",
|
|
65
|
+
"typescript-eslint": "^8.44.0",
|
|
66
|
+
"typescript": "^5.9.2",
|
|
48
67
|
"vite": "^7.2.4",
|
|
68
|
+
"vite-plugin-dts": "^4.5.4",
|
|
69
|
+
"vite-plugin-vuetify": "^2.1.0",
|
|
49
70
|
"vite-plugin-vue-devtools": "^8.0.5",
|
|
71
|
+
"vue-eslint-parser": "^10.2.0",
|
|
72
|
+
"vue-tsc": "^3.0.8",
|
|
50
73
|
"vitest": "^4.0.14"
|
|
51
74
|
}
|
|
52
75
|
}
|
package/dist/.vite/manifest.json
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"__plugin-vue_export-helper.js": {
|
|
3
|
-
"file": "assets/_plugin-vue_export-helper.js",
|
|
4
|
-
"name": "_plugin-vue_export-helper"
|
|
5
|
-
},
|
|
6
|
-
"index.html": {
|
|
7
|
-
"file": "assets/index.js",
|
|
8
|
-
"name": "index",
|
|
9
|
-
"src": "index.html",
|
|
10
|
-
"isEntry": true,
|
|
11
|
-
"dynamicImports": [
|
|
12
|
-
"src/views/HomeView.vue",
|
|
13
|
-
"src/layouts/AdminLayout.vue",
|
|
14
|
-
"src/features/admin/validation/views/ValidationView.vue",
|
|
15
|
-
"src/features/admin/customization/views/CustomizationView.vue",
|
|
16
|
-
"src/views/NotFoundView.vue"
|
|
17
|
-
],
|
|
18
|
-
"css": [
|
|
19
|
-
"assets/index.css"
|
|
20
|
-
]
|
|
21
|
-
},
|
|
22
|
-
"src/features/admin/customization/views/CustomizationView.vue": {
|
|
23
|
-
"file": "assets/CustomizationView.js",
|
|
24
|
-
"name": "CustomizationView",
|
|
25
|
-
"src": "src/features/admin/customization/views/CustomizationView.vue",
|
|
26
|
-
"isDynamicEntry": true,
|
|
27
|
-
"imports": [
|
|
28
|
-
"__plugin-vue_export-helper.js",
|
|
29
|
-
"index.html"
|
|
30
|
-
],
|
|
31
|
-
"css": [
|
|
32
|
-
"assets/CustomizationView.css"
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"src/features/admin/validation/views/ValidationView.vue": {
|
|
36
|
-
"file": "assets/ValidationView.js",
|
|
37
|
-
"name": "ValidationView",
|
|
38
|
-
"src": "src/features/admin/validation/views/ValidationView.vue",
|
|
39
|
-
"isDynamicEntry": true,
|
|
40
|
-
"imports": [
|
|
41
|
-
"__plugin-vue_export-helper.js",
|
|
42
|
-
"index.html"
|
|
43
|
-
],
|
|
44
|
-
"css": [
|
|
45
|
-
"assets/ValidationView.css"
|
|
46
|
-
]
|
|
47
|
-
},
|
|
48
|
-
"src/layouts/AdminLayout.vue": {
|
|
49
|
-
"file": "assets/AdminLayout.js",
|
|
50
|
-
"name": "AdminLayout",
|
|
51
|
-
"src": "src/layouts/AdminLayout.vue",
|
|
52
|
-
"isDynamicEntry": true,
|
|
53
|
-
"imports": [
|
|
54
|
-
"index.html",
|
|
55
|
-
"__plugin-vue_export-helper.js"
|
|
56
|
-
],
|
|
57
|
-
"css": [
|
|
58
|
-
"assets/AdminLayout.css"
|
|
59
|
-
]
|
|
60
|
-
},
|
|
61
|
-
"src/views/HomeView.vue": {
|
|
62
|
-
"file": "assets/HomeView.js",
|
|
63
|
-
"name": "HomeView",
|
|
64
|
-
"src": "src/views/HomeView.vue",
|
|
65
|
-
"isDynamicEntry": true
|
|
66
|
-
},
|
|
67
|
-
"src/views/NotFoundView.vue": {
|
|
68
|
-
"file": "assets/NotFoundView.js",
|
|
69
|
-
"name": "NotFoundView",
|
|
70
|
-
"src": "src/views/NotFoundView.vue",
|
|
71
|
-
"isDynamicEntry": true,
|
|
72
|
-
"imports": [
|
|
73
|
-
"__plugin-vue_export-helper.js",
|
|
74
|
-
"index.html"
|
|
75
|
-
],
|
|
76
|
-
"css": [
|
|
77
|
-
"assets/NotFoundView.css"
|
|
78
|
-
]
|
|
79
|
-
}
|
|
80
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.admin-layout[data-v-ae79f328]{display:flex;min-height:100vh;background-color:#f5f7fa}.admin-sidebar[data-v-ae79f328]{width:250px;background-color:#2c3e50;color:#fff;display:flex;flex-direction:column}.sidebar-header[data-v-ae79f328]{padding:2rem 1.5rem;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-header h2[data-v-ae79f328]{margin:0;font-size:1.5rem}.sidebar-nav[data-v-ae79f328]{flex:1;padding:1rem 0}.nav-item[data-v-ae79f328]{display:flex;align-items:center;gap:1rem;padding:1rem 1.5rem;color:#fffc;text-decoration:none;transition:all .3s}.nav-item[data-v-ae79f328]:hover{background-color:#ffffff1a;color:#fff}.nav-item.active[data-v-ae79f328]{background-color:#3498db;color:#fff;border-right:3px solid #2ecc71}.nav-icon[data-v-ae79f328]{font-size:1.2rem}.sidebar-footer[data-v-ae79f328]{padding:1.5rem;border-top:1px solid rgba(255,255,255,.1)}.back-link[data-v-ae79f328]{color:#fffc;text-decoration:none;transition:color .3s}.back-link[data-v-ae79f328]:hover{color:#fff}.admin-content[data-v-ae79f328]{flex:1;display:flex;flex-direction:column}.content-header[data-v-ae79f328]{background:#fff;padding:1.5rem 2rem;box-shadow:0 2px 4px #0000001a}.content-header h1[data-v-ae79f328]{margin:0;font-size:1.5rem;color:#2c3e50}.content-body[data-v-ae79f328]{flex:1;overflow-y:auto}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,u as r,a as _,b as t,d as a,w as e,r as n,t as m,o as u,e as v}from"./index.js";import{_ as p}from"./_plugin-vue_export-helper.js";const f={class:"admin-layout"},b={class:"admin-sidebar"},k={class:"sidebar-nav"},h={class:"sidebar-footer"},x={class:"admin-content"},y={class:"content-header"},w={class:"content-body"},A={__name:"AdminLayout",setup(B){const i=r(),d=c(()=>i.meta.title||"Admin");return(V,s)=>{const o=n("router-link"),l=n("router-view");return u(),_("div",f,[t("aside",b,[s[3]||(s[3]=t("div",{class:"sidebar-header"},[t("h2",null,"Admin Panel")],-1)),t("nav",k,[a(o,{to:"/admin/validation",class:"nav-item","active-class":"active"},{default:e(()=>[...s[0]||(s[0]=[t("span",{class:"nav-icon"},"✓",-1),t("span",null,"Validation",-1)])]),_:1}),a(o,{to:"/admin/customization",class:"nav-item","active-class":"active"},{default:e(()=>[...s[1]||(s[1]=[t("span",{class:"nav-icon"},"🎨",-1),t("span",null,"Customization",-1)])]),_:1})]),t("div",h,[a(o,{to:"/",class:"back-link"},{default:e(()=>[...s[2]||(s[2]=[v(" ← Back to Home ",-1)])]),_:1})])]),t("main",x,[t("div",y,[t("h1",null,m(d.value),1)]),t("div",w,[a(l)])])])}}},g=p(A,[["__scopeId","data-v-ae79f328"]]);export{g as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.customization-view[data-v-323a56cb]{padding:2rem}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as e}from"./_plugin-vue_export-helper.js";import{a as s,b as t,o as a}from"./index.js";const i={class:"customization-view"},n={__name:"CustomizationView",setup(r){return(c,o)=>(a(),s("div",i,[...o[0]||(o[0]=[t("h2",null,"Customization Module",-1),t("p",null,"Customization feature content goes here.",-1)])]))}},m=e(n,[["__scopeId","data-v-323a56cb"]]);export{m as default};
|
package/dist/assets/HomeView.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const n={__name:"HomeView",setup(e){return(_,t)=>null}};export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.not-found[data-v-f6374bfd]{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2rem}.not-found h1[data-v-f6374bfd]{font-size:6rem;margin:0;color:#3498db}.not-found h2[data-v-f6374bfd]{font-size:2rem;margin:1rem 0;color:#2c3e50}.not-found p[data-v-f6374bfd]{font-size:1.2rem;color:#7f8c8d;margin-bottom:2rem}.btn[data-v-f6374bfd]{background-color:#3498db;color:#fff;padding:1rem 2rem;border-radius:4px;text-decoration:none;transition:all .3s}.btn[data-v-f6374bfd]:hover{background-color:#2980b9}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as n}from"./_plugin-vue_export-helper.js";import{a as s,b as t,d as r,w as a,r as l,o as d,e as u}from"./index.js";const p={class:"not-found"},i={__name:"NotFoundView",setup(_){return(f,o)=>{const e=l("router-link");return d(),s("div",p,[o[1]||(o[1]=t("h1",null,"404",-1)),o[2]||(o[2]=t("h2",null,"Page Not Found",-1)),o[3]||(o[3]=t("p",null,"The page you're looking for doesn't exist.",-1)),r(e,{to:"/",class:"btn"},{default:a(()=>[...o[0]||(o[0]=[u("Go Home",-1)])]),_:1})])}}},N=n(i,[["__scopeId","data-v-f6374bfd"]]);export{N as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.validation-view[data-v-4069f97b]{padding:2rem}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as o}from"./_plugin-vue_export-helper.js";import{a as t,b as a,o as i}from"./index.js";const n={class:"validation-view"},s={__name:"ValidationView",setup(l){return(r,e)=>(i(),t("div",n,[...e[0]||(e[0]=[a("h2",null,"Validation Module",-1),a("p",null,"Validation feature content goes here.",-1)])]))}},c=o(s,[["__scopeId","data-v-4069f97b"]]);export{c as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const s=(t,r)=>{const o=t.__vccOpts||t;for(const[c,e]of r)o[c]=e;return o};export{s as _};
|
package/dist/assets/index.css
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
*{margin:0;padding:0;box-sizing:border-box}#app{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2c3e50}:root{--primary-color: #3498db;--secondary-color: #2c3e50;--success-color: #2ecc71;--danger-color: #e74c3c;--warning-color: #f39c12;--info-color: #3498db;--light-color: #ecf0f1;--dark-color: #2c3e50;--base-font-size: 16px;--border-radius: 4px;--box-shadow: 0 2px 4px rgba(0,0,0,.1);--transition: all .3s ease}[data-theme=dark]{--primary-color: #3498db;--secondary-color: #ecf0f1;--bg-color: #1a1a1a;--text-color: #ecf0f1;--border-color: #333}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#888;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#555}
|