@quvel-kit/core 1.1.0
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 +670 -0
- package/dist/auth/boot/defineAuthGuard.d.ts +54 -0
- package/dist/auth/boot/defineAuthGuard.d.ts.map +1 -0
- package/dist/auth/boot/defineAuthGuard.js +72 -0
- package/dist/auth/enums/AuthStatusEnum.d.ts +13 -0
- package/dist/auth/enums/AuthStatusEnum.d.ts.map +1 -0
- package/dist/auth/enums/AuthStatusEnum.js +13 -0
- package/dist/auth/index.d.ts +13 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +13 -0
- package/dist/auth/services/AuthGuard.d.ts +58 -0
- package/dist/auth/services/AuthGuard.d.ts.map +1 -0
- package/dist/auth/services/AuthGuard.js +51 -0
- package/dist/auth/services/AuthService.d.ts +52 -0
- package/dist/auth/services/AuthService.d.ts.map +1 -0
- package/dist/auth/services/AuthService.js +67 -0
- package/dist/auth/services/PasswordResetService.d.ts +34 -0
- package/dist/auth/services/PasswordResetService.d.ts.map +1 -0
- package/dist/auth/services/PasswordResetService.js +45 -0
- package/dist/auth/services/TwoFactorChallengeService.d.ts +22 -0
- package/dist/auth/services/TwoFactorChallengeService.d.ts.map +1 -0
- package/dist/auth/services/TwoFactorChallengeService.js +29 -0
- package/dist/auth/services/TwoFactorService.d.ts +64 -0
- package/dist/auth/services/TwoFactorService.d.ts.map +1 -0
- package/dist/auth/services/TwoFactorService.js +68 -0
- package/dist/auth/services/index.d.ts +8 -0
- package/dist/auth/services/index.d.ts.map +1 -0
- package/dist/auth/services/index.js +5 -0
- package/dist/auth/types/auth-meta.d.ts +54 -0
- package/dist/auth/types/auth-meta.d.ts.map +1 -0
- package/dist/auth/types/auth-meta.js +6 -0
- package/dist/auth/types/index.d.ts +5 -0
- package/dist/auth/types/index.d.ts.map +1 -0
- package/dist/auth/types/index.js +4 -0
- package/dist/auth/utils/auth-meta.d.ts +75 -0
- package/dist/auth/utils/auth-meta.d.ts.map +1 -0
- package/dist/auth/utils/auth-meta.js +93 -0
- package/dist/boot/quvel.d.ts +26 -0
- package/dist/boot/quvel.d.ts.map +1 -0
- package/dist/boot/quvel.js +38 -0
- package/dist/build/index.d.ts +9 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +8 -0
- package/dist/build/loadEnv.d.ts +14 -0
- package/dist/build/loadEnv.d.ts.map +1 -0
- package/dist/build/loadEnv.js +33 -0
- package/dist/build/quasarConfig.d.ts +67 -0
- package/dist/build/quasarConfig.d.ts.map +1 -0
- package/dist/build/quasarConfig.js +126 -0
- package/dist/components/Common/TaskErrors.vue +47 -0
- package/dist/components/Inputs/BaseInput.vue +88 -0
- package/dist/components/Misc/ClientOnly.vue +22 -0
- package/dist/components/Transitions/FadeInOut.vue +9 -0
- package/dist/components/Transitions/SlowExpand.vue +13 -0
- package/dist/components/WebSocketChannelManager.vue +634 -0
- package/dist/components/index.d.ts +12 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +16 -0
- package/dist/composables/index.d.ts +19 -0
- package/dist/composables/index.d.ts.map +1 -0
- package/dist/composables/index.js +16 -0
- package/dist/composables/useClient.d.ts +16 -0
- package/dist/composables/useClient.d.ts.map +1 -0
- package/dist/composables/useClient.js +28 -0
- package/dist/composables/useMetaConfig.d.ts +14 -0
- package/dist/composables/useMetaConfig.d.ts.map +1 -0
- package/dist/composables/useMetaConfig.js +77 -0
- package/dist/composables/useQueryMessageHandler.d.ts +44 -0
- package/dist/composables/useQueryMessageHandler.d.ts.map +1 -0
- package/dist/composables/useQueryMessageHandler.js +74 -0
- package/dist/composables/useQuvel.d.ts +15 -0
- package/dist/composables/useQuvel.d.ts.map +1 -0
- package/dist/composables/useQuvel.js +38 -0
- package/dist/composables/useRecaptcha.d.ts +35 -0
- package/dist/composables/useRecaptcha.d.ts.map +1 -0
- package/dist/composables/useRecaptcha.js +87 -0
- package/dist/composables/useScopedService.d.ts +18 -0
- package/dist/composables/useScopedService.d.ts.map +1 -0
- package/dist/composables/useScopedService.js +25 -0
- package/dist/composables/useScript.d.ts +25 -0
- package/dist/composables/useScript.d.ts.map +1 -0
- package/dist/composables/useScript.js +106 -0
- package/dist/composables/useUrlQueryHandler.d.ts +38 -0
- package/dist/composables/useUrlQueryHandler.d.ts.map +1 -0
- package/dist/composables/useUrlQueryHandler.js +76 -0
- package/dist/composables/useWebSockets.d.ts +18 -0
- package/dist/composables/useWebSockets.d.ts.map +1 -0
- package/dist/composables/useWebSockets.js +55 -0
- package/dist/composables/useWindowEvent.d.ts +16 -0
- package/dist/composables/useWindowEvent.d.ts.map +1 -0
- package/dist/composables/useWindowEvent.js +27 -0
- package/dist/composables/useXsrf.d.ts +29 -0
- package/dist/composables/useXsrf.d.ts.map +1 -0
- package/dist/composables/useXsrf.js +59 -0
- package/dist/config/QuasarConfigBuilder.d.ts +100 -0
- package/dist/config/QuasarConfigBuilder.d.ts.map +1 -0
- package/dist/config/QuasarConfigBuilder.js +98 -0
- package/dist/config/i18n.d.ts +23 -0
- package/dist/config/i18n.d.ts.map +1 -0
- package/dist/config/i18n.js +43 -0
- package/dist/config/index.d.ts +8 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +7 -0
- package/dist/config/moduleTransformer.d.ts +18 -0
- package/dist/config/moduleTransformer.d.ts.map +1 -0
- package/dist/config/moduleTransformer.js +76 -0
- package/dist/config/quvel.d.ts +40 -0
- package/dist/config/quvel.d.ts.map +1 -0
- package/dist/config/quvel.js +59 -0
- package/dist/config/quvel.types.d.ts +59 -0
- package/dist/config/quvel.types.d.ts.map +1 -0
- package/dist/config/quvel.types.js +6 -0
- package/dist/container/ServiceContainer.d.ts +107 -0
- package/dist/container/ServiceContainer.d.ts.map +1 -0
- package/dist/container/ServiceContainer.js +201 -0
- package/dist/container/types/vue.d.ts +9 -0
- package/dist/container/types.d.ts +81 -0
- package/dist/container/types.d.ts.map +1 -0
- package/dist/container/types.js +1 -0
- package/dist/i18n/en-US/common.d.ts +19 -0
- package/dist/i18n/en-US/common.d.ts.map +1 -0
- package/dist/i18n/en-US/common.js +17 -0
- package/dist/i18n/en-US/index.d.ts +21 -0
- package/dist/i18n/en-US/index.d.ts.map +1 -0
- package/dist/i18n/en-US/index.js +4 -0
- package/dist/i18n/es-MX/common.d.ts +19 -0
- package/dist/i18n/es-MX/common.d.ts.map +1 -0
- package/dist/i18n/es-MX/common.js +17 -0
- package/dist/i18n/es-MX/index.d.ts +21 -0
- package/dist/i18n/es-MX/index.d.ts.map +1 -0
- package/dist/i18n/es-MX/index.js +4 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -0
- package/dist/models/User.d.ts +32 -0
- package/dist/models/User.d.ts.map +1 -0
- package/dist/models/User.js +48 -0
- package/dist/module.d.ts +21 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +45 -0
- package/dist/modules/helpers.d.ts +30 -0
- package/dist/modules/helpers.d.ts.map +1 -0
- package/dist/modules/helpers.js +45 -0
- package/dist/modules/index.d.ts +8 -0
- package/dist/modules/index.d.ts.map +1 -0
- package/dist/modules/index.js +6 -0
- package/dist/modules/types.d.ts +141 -0
- package/dist/modules/types.d.ts.map +1 -0
- package/dist/modules/types.js +7 -0
- package/dist/pages/ErrorNotFound.vue +300 -0
- package/dist/pages/index.d.ts +7 -0
- package/dist/pages/index.d.ts.map +1 -0
- package/dist/pages/index.js +6 -0
- package/dist/services/ApiService.d.ts +90 -0
- package/dist/services/ApiService.d.ts.map +1 -0
- package/dist/services/ApiService.js +159 -0
- package/dist/services/I18nService.d.ts +67 -0
- package/dist/services/I18nService.d.ts.map +1 -0
- package/dist/services/I18nService.js +92 -0
- package/dist/services/LogService.d.ts +31 -0
- package/dist/services/LogService.d.ts.map +1 -0
- package/dist/services/LogService.js +49 -0
- package/dist/services/Service.d.ts +10 -0
- package/dist/services/Service.d.ts.map +1 -0
- package/dist/services/Service.js +8 -0
- package/dist/services/TaskService.d.ts +64 -0
- package/dist/services/TaskService.d.ts.map +1 -0
- package/dist/services/TaskService.js +188 -0
- package/dist/services/ThemeService.d.ts +28 -0
- package/dist/services/ThemeService.d.ts.map +1 -0
- package/dist/services/ThemeService.js +77 -0
- package/dist/services/ValidationService.d.ts +55 -0
- package/dist/services/ValidationService.d.ts.map +1 -0
- package/dist/services/ValidationService.js +81 -0
- package/dist/services/WebSocketService.d.ts +59 -0
- package/dist/services/WebSocketService.d.ts.map +1 -0
- package/dist/services/WebSocketService.js +148 -0
- package/dist/services/logger/BaseLogger.d.ts +35 -0
- package/dist/services/logger/BaseLogger.d.ts.map +1 -0
- package/dist/services/logger/BaseLogger.js +66 -0
- package/dist/services/logger/ConsoleLogger.d.ts +21 -0
- package/dist/services/logger/ConsoleLogger.d.ts.map +1 -0
- package/dist/services/logger/ConsoleLogger.js +60 -0
- package/dist/services/logger/NullLogger.d.ts +10 -0
- package/dist/services/logger/NullLogger.d.ts.map +1 -0
- package/dist/services/logger/NullLogger.js +10 -0
- package/dist/stores/plugins/serviceContainer.d.ts +10 -0
- package/dist/stores/plugins/serviceContainer.d.ts.map +1 -0
- package/dist/stores/plugins/serviceContainer.js +14 -0
- package/dist/stores/sessionStore.d.ts +71 -0
- package/dist/stores/sessionStore.d.ts.map +1 -0
- package/dist/stores/sessionStore.js +125 -0
- package/dist/types/app.types.d.ts +202 -0
- package/dist/types/app.types.d.ts.map +1 -0
- package/dist/types/app.types.js +6 -0
- package/dist/types/config.types.d.ts +2 -0
- package/dist/types/config.types.d.ts.map +1 -0
- package/dist/types/config.types.js +1 -0
- package/dist/types/global.d.ts +33 -0
- package/dist/types/i18n.types.d.ts +21 -0
- package/dist/types/i18n.types.d.ts.map +1 -0
- package/dist/types/i18n.types.js +6 -0
- package/dist/types/laravel.types.d.ts +167 -0
- package/dist/types/laravel.types.d.ts.map +1 -0
- package/dist/types/laravel.types.js +6 -0
- package/dist/types/logging.types.d.ts +81 -0
- package/dist/types/logging.types.d.ts.map +1 -0
- package/dist/types/logging.types.js +22 -0
- package/dist/types/pinia.d.ts +24 -0
- package/dist/types/scripts.types.d.ts +31 -0
- package/dist/types/scripts.types.d.ts.map +1 -0
- package/dist/types/scripts.types.js +6 -0
- package/dist/types/ssr.d.ts +11 -0
- package/dist/types/task.types.d.ts +121 -0
- package/dist/types/task.types.d.ts.map +1 -0
- package/dist/types/task.types.js +7 -0
- package/dist/types/theme.types.d.ts +13 -0
- package/dist/types/theme.types.d.ts.map +1 -0
- package/dist/types/theme.types.js +17 -0
- package/dist/types/user.types.d.ts +24 -0
- package/dist/types/user.types.d.ts.map +1 -0
- package/dist/types/user.types.js +1 -0
- package/dist/types/vue-shim.d.ts +11 -0
- package/dist/types/websocket.types.d.ts +62 -0
- package/dist/types/websocket.types.d.ts.map +1 -0
- package/dist/types/websocket.types.js +6 -0
- package/dist/utils/apiInterceptors.d.ts +76 -0
- package/dist/utils/apiInterceptors.d.ts.map +1 -0
- package/dist/utils/apiInterceptors.js +149 -0
- package/dist/utils/assets.d.ts +40 -0
- package/dist/utils/assets.d.ts.map +1 -0
- package/dist/utils/assets.js +340 -0
- package/dist/utils/axios.d.ts +19 -0
- package/dist/utils/axios.d.ts.map +1 -0
- package/dist/utils/axios.js +113 -0
- package/dist/utils/config.d.ts +16 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +48 -0
- package/dist/utils/container.d.ts +12 -0
- package/dist/utils/container.d.ts.map +1 -0
- package/dist/utils/container.js +11 -0
- package/dist/utils/deepMerge.d.ts +28 -0
- package/dist/utils/deepMerge.d.ts.map +1 -0
- package/dist/utils/deepMerge.js +59 -0
- package/dist/utils/envConfig.d.ts +73 -0
- package/dist/utils/envConfig.d.ts.map +1 -0
- package/dist/utils/envConfig.js +161 -0
- package/dist/utils/error.d.ts +44 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +67 -0
- package/dist/utils/headers.d.ts +36 -0
- package/dist/utils/headers.d.ts.map +1 -0
- package/dist/utils/headers.js +54 -0
- package/dist/utils/i18n.d.ts +26 -0
- package/dist/utils/i18n.d.ts.map +1 -0
- package/dist/utils/i18n.js +56 -0
- package/dist/utils/index.d.ts +14 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +13 -0
- package/dist/utils/loading.d.ts +29 -0
- package/dist/utils/loading.d.ts.map +1 -0
- package/dist/utils/loading.js +46 -0
- package/dist/utils/logging.d.ts +20 -0
- package/dist/utils/logging.d.ts.map +1 -0
- package/dist/utils/logging.js +54 -0
- package/dist/utils/notify.d.ts +15 -0
- package/dist/utils/notify.d.ts.map +1 -0
- package/dist/utils/notify.js +30 -0
- package/dist/utils/object.d.ts +28 -0
- package/dist/utils/object.d.ts.map +1 -0
- package/dist/utils/object.js +48 -0
- package/dist/utils/pagination.d.ts +60 -0
- package/dist/utils/pagination.d.ts.map +1 -0
- package/dist/utils/pagination.js +252 -0
- package/dist/utils/paths.d.ts +54 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +48 -0
- package/dist/utils/platform.d.ts +25 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +64 -0
- package/dist/utils/scripts.d.ts +20 -0
- package/dist/utils/scripts.d.ts.map +1 -0
- package/dist/utils/scripts.js +39 -0
- package/global.d.ts +29 -0
- package/package.json +119 -0
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="ErrorNotFound">
|
|
3
|
+
<div class="ErrorNotFound-Container">
|
|
4
|
+
<div class="ErrorNotFound-Content">
|
|
5
|
+
<!-- Gradient Background Effect -->
|
|
6
|
+
<div class="ErrorNotFound-Glow"></div>
|
|
7
|
+
|
|
8
|
+
<!-- 404 Icon with Glow Effect -->
|
|
9
|
+
<div class="ErrorNotFound-IconContainer SmallGlow">
|
|
10
|
+
<q-icon
|
|
11
|
+
name="search"
|
|
12
|
+
size="80px"
|
|
13
|
+
class="ErrorNotFound-Icon"
|
|
14
|
+
/>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<!-- Error Code -->
|
|
18
|
+
<div class="ErrorNotFound-Code">
|
|
19
|
+
404
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<!-- Message -->
|
|
23
|
+
<div class="ErrorNotFound-Title">
|
|
24
|
+
{{ $t('common.errors.notFound.title') }}
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<div class="ErrorNotFound-Description">
|
|
28
|
+
{{ $t('common.errors.notFound.description') }}
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<!-- Actions -->
|
|
32
|
+
<div class="ErrorNotFound-Actions">
|
|
33
|
+
<q-btn
|
|
34
|
+
unelevated
|
|
35
|
+
size="md"
|
|
36
|
+
:to="homeRoute"
|
|
37
|
+
class="PrimaryButton GenericBorder ErrorNotFound-HomeButton"
|
|
38
|
+
no-caps
|
|
39
|
+
>
|
|
40
|
+
<q-icon
|
|
41
|
+
name="home"
|
|
42
|
+
size="18px"
|
|
43
|
+
class="q-mr-xs"
|
|
44
|
+
/>
|
|
45
|
+
{{ $t('common.errors.notFound.actions.home') }}
|
|
46
|
+
</q-btn>
|
|
47
|
+
|
|
48
|
+
<q-btn
|
|
49
|
+
outline
|
|
50
|
+
size="md"
|
|
51
|
+
@click="goBack"
|
|
52
|
+
class="Button GenericBorder ErrorNotFound-BackButton"
|
|
53
|
+
no-caps
|
|
54
|
+
>
|
|
55
|
+
<q-icon
|
|
56
|
+
name="arrow_back"
|
|
57
|
+
size="18px"
|
|
58
|
+
class="q-mr-xs"
|
|
59
|
+
/>
|
|
60
|
+
{{ $t('common.errors.notFound.actions.back') }}
|
|
61
|
+
</q-btn>
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
<!-- Help Text -->
|
|
65
|
+
<div class="ErrorNotFound-Help">
|
|
66
|
+
<p class="ErrorNotFound-HelpText">
|
|
67
|
+
{{ $t('common.errors.notFound.help') }}
|
|
68
|
+
</p>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
</template>
|
|
74
|
+
|
|
75
|
+
<script setup lang="ts">
|
|
76
|
+
import { computed } from 'vue';
|
|
77
|
+
import { useRouter } from 'vue-router';
|
|
78
|
+
import { useQuvel } from '../composables/useQuvel.js';
|
|
79
|
+
|
|
80
|
+
const router = useRouter();
|
|
81
|
+
const container = useQuvel();
|
|
82
|
+
|
|
83
|
+
// Get home route from config with default fallback
|
|
84
|
+
const homeRoute = computed(() => {
|
|
85
|
+
return container.config.routes?.home || '/' as const;
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
const goBack = () => {
|
|
89
|
+
if (window.history.length > 1) {
|
|
90
|
+
router.go(-1);
|
|
91
|
+
} else {
|
|
92
|
+
void router.push(homeRoute.value);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
</script>
|
|
96
|
+
|
|
97
|
+
<style lang="scss" scoped>
|
|
98
|
+
.ErrorNotFound {
|
|
99
|
+
min-height: 100vh;
|
|
100
|
+
display: flex;
|
|
101
|
+
align-items: center;
|
|
102
|
+
justify-content: center;
|
|
103
|
+
position: relative;
|
|
104
|
+
background: linear-gradient(170deg, #f9fafb, #e6e7eb);
|
|
105
|
+
|
|
106
|
+
.dark & {
|
|
107
|
+
background: linear-gradient(150deg, #202b3b, #12171e);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
&-Container {
|
|
111
|
+
max-width: 32rem;
|
|
112
|
+
margin-left: auto;
|
|
113
|
+
margin-right: auto;
|
|
114
|
+
padding-left: 2rem;
|
|
115
|
+
padding-right: 2rem;
|
|
116
|
+
position: relative;
|
|
117
|
+
z-index: 10;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
&-Content {
|
|
121
|
+
text-align: center;
|
|
122
|
+
position: relative;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
&-Glow {
|
|
126
|
+
position: absolute;
|
|
127
|
+
top: 50%;
|
|
128
|
+
left: 50%;
|
|
129
|
+
width: 300px;
|
|
130
|
+
height: 300px;
|
|
131
|
+
transform: translate(-50%, -60%);
|
|
132
|
+
border-radius: 50%;
|
|
133
|
+
background: radial-gradient(circle,
|
|
134
|
+
rgba(59, 130, 246, 0.15) 0%,
|
|
135
|
+
rgba(243, 85, 44, 0.05) 40%,
|
|
136
|
+
rgba(255, 255, 255, 0) 70%);
|
|
137
|
+
opacity: 0.8;
|
|
138
|
+
z-index: -1;
|
|
139
|
+
|
|
140
|
+
.dark & {
|
|
141
|
+
background: radial-gradient(circle,
|
|
142
|
+
rgba(99, 102, 241, 0.2) 0%,
|
|
143
|
+
rgba(253, 106, 42, 0.1) 40%,
|
|
144
|
+
rgba(30, 30, 46, 0) 70%);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
&-IconContainer {
|
|
149
|
+
margin-bottom: 2rem;
|
|
150
|
+
display: inline-block;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
&-Icon {
|
|
154
|
+
color: #9ca3af;
|
|
155
|
+
|
|
156
|
+
.dark & {
|
|
157
|
+
color: #6b7280;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
&-Code {
|
|
162
|
+
font-size: 6rem;
|
|
163
|
+
line-height: 1;
|
|
164
|
+
font-weight: 700;
|
|
165
|
+
margin-bottom: 1.5rem;
|
|
166
|
+
font-family: system-ui, -apple-system, sans-serif;
|
|
167
|
+
background: linear-gradient(135deg,
|
|
168
|
+
rgba(59, 130, 246, 0.8) 0%,
|
|
169
|
+
rgba(243, 85, 44, 0.8) 50%,
|
|
170
|
+
rgba(234, 83, 1, 0.8) 100%);
|
|
171
|
+
background-clip: text;
|
|
172
|
+
-webkit-background-clip: text;
|
|
173
|
+
-webkit-text-fill-color: transparent;
|
|
174
|
+
text-shadow: 0 4px 20px rgba(59, 130, 246, 0.3);
|
|
175
|
+
|
|
176
|
+
.dark & {
|
|
177
|
+
background: linear-gradient(135deg,
|
|
178
|
+
rgba(139, 92, 246, 0.9) 0%,
|
|
179
|
+
rgba(99, 102, 241, 0.9) 50%,
|
|
180
|
+
rgba(59, 130, 246, 0.9) 100%);
|
|
181
|
+
background-clip: text;
|
|
182
|
+
-webkit-background-clip: text;
|
|
183
|
+
-webkit-text-fill-color: transparent;
|
|
184
|
+
text-shadow: 0 4px 20px rgba(139, 92, 246, 0.4);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
&-Title {
|
|
189
|
+
font-size: 1.5rem;
|
|
190
|
+
line-height: 2rem;
|
|
191
|
+
font-weight: 600;
|
|
192
|
+
color: #111827;
|
|
193
|
+
margin-bottom: 0.75rem;
|
|
194
|
+
|
|
195
|
+
.dark & {
|
|
196
|
+
color: #f3f4f6;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
&-Description {
|
|
201
|
+
color: #4b5563;
|
|
202
|
+
margin-bottom: 2.5rem;
|
|
203
|
+
line-height: 1.625;
|
|
204
|
+
max-width: 28rem;
|
|
205
|
+
margin-left: auto;
|
|
206
|
+
margin-right: auto;
|
|
207
|
+
|
|
208
|
+
.dark & {
|
|
209
|
+
color: #d1d5db;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
&-Actions {
|
|
214
|
+
display: flex;
|
|
215
|
+
flex-direction: column;
|
|
216
|
+
gap: 1rem;
|
|
217
|
+
justify-content: center;
|
|
218
|
+
margin-bottom: 2.5rem;
|
|
219
|
+
|
|
220
|
+
@media (min-width: 640px) {
|
|
221
|
+
flex-direction: row;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
&-HomeButton,
|
|
226
|
+
&-BackButton {
|
|
227
|
+
padding-left: 1.5rem;
|
|
228
|
+
padding-right: 1.5rem;
|
|
229
|
+
padding-top: 0.75rem;
|
|
230
|
+
padding-bottom: 0.75rem;
|
|
231
|
+
font-weight: 500;
|
|
232
|
+
transition-property: all;
|
|
233
|
+
transition-duration: 300ms;
|
|
234
|
+
min-width: 140px;
|
|
235
|
+
|
|
236
|
+
&:hover {
|
|
237
|
+
transform: translateY(-2px);
|
|
238
|
+
box-shadow: 0 8px 25px rgba(59, 130, 246, 0.25);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
&:active {
|
|
242
|
+
transform: translateY(0);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
&-BackButton {
|
|
247
|
+
&:hover {
|
|
248
|
+
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
|
|
249
|
+
|
|
250
|
+
.dark & {
|
|
251
|
+
box-shadow: 0 8px 25px rgba(255, 255, 255, 0.1);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
&-Help {
|
|
257
|
+
font-size: 0.875rem;
|
|
258
|
+
line-height: 1.25rem;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
&-HelpText {
|
|
262
|
+
color: #6b7280;
|
|
263
|
+
line-height: 1.625;
|
|
264
|
+
|
|
265
|
+
.dark & {
|
|
266
|
+
color: #9ca3af;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
@media (max-width: 640px) {
|
|
272
|
+
.ErrorNotFound {
|
|
273
|
+
&-Container {
|
|
274
|
+
padding-left: 1.5rem;
|
|
275
|
+
padding-right: 1.5rem;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
&-Code {
|
|
279
|
+
font-size: 3.75rem;
|
|
280
|
+
line-height: 1;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
&-Title {
|
|
284
|
+
font-size: 1.25rem;
|
|
285
|
+
line-height: 1.75rem;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
&-Actions {
|
|
289
|
+
.q-btn {
|
|
290
|
+
width: 100%;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
&-Glow {
|
|
295
|
+
width: 200px;
|
|
296
|
+
height: 200px;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
</style>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pages/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Service
|
|
3
|
+
*
|
|
4
|
+
* Axios wrapper service with request cancellation and session management
|
|
5
|
+
*/
|
|
6
|
+
import type { AxiosInstance, AxiosRequestConfig } from 'axios';
|
|
7
|
+
import type { QSsrContext } from '@quasar/app-vite';
|
|
8
|
+
import { Service } from './Service.js';
|
|
9
|
+
import type { AppConfig } from '../types/app.types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Error thrown when a request requires a session cookie, but none exists
|
|
12
|
+
*/
|
|
13
|
+
export declare class NoSessionCookieError extends Error {
|
|
14
|
+
constructor(method: string, url: string);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* API Service - Manages HTTP requests with cancellation and logging
|
|
18
|
+
*/
|
|
19
|
+
export declare class ApiService extends Service {
|
|
20
|
+
private readonly api;
|
|
21
|
+
private abortControllers;
|
|
22
|
+
private requestCounter;
|
|
23
|
+
constructor(config: AppConfig, ssrContext?: QSsrContext | null);
|
|
24
|
+
/**
|
|
25
|
+
* Get the underlying Axios instance
|
|
26
|
+
*/
|
|
27
|
+
get instance(): AxiosInstance;
|
|
28
|
+
/**
|
|
29
|
+
* Check if a session cookie exists
|
|
30
|
+
* Returns false if no session cookie, true if valid session cookie exists
|
|
31
|
+
*/
|
|
32
|
+
hasSession(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Mark that a session now exists (called after successful login/register)
|
|
35
|
+
* Updates the internal flag so hasSession() returns true
|
|
36
|
+
*/
|
|
37
|
+
markSessionExists(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Mark that a session no longer exists (called after logout)
|
|
40
|
+
* Updates the internal flag so hasSession() returns false
|
|
41
|
+
*/
|
|
42
|
+
markSessionCleared(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Generate unique request ID
|
|
45
|
+
*/
|
|
46
|
+
private createRequestId;
|
|
47
|
+
/**
|
|
48
|
+
* Create cancellable request config
|
|
49
|
+
*/
|
|
50
|
+
private createCancellableConfig;
|
|
51
|
+
/**
|
|
52
|
+
* Cancel a specific request by ID
|
|
53
|
+
*/
|
|
54
|
+
cancelRequest(requestId: string): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Generic request handler
|
|
57
|
+
*/
|
|
58
|
+
private request;
|
|
59
|
+
/**
|
|
60
|
+
* GET request
|
|
61
|
+
*/
|
|
62
|
+
get<T>(url: string, config?: AxiosRequestConfig & {
|
|
63
|
+
requiresSessionCookie?: boolean;
|
|
64
|
+
}, requestId?: string): Promise<T>;
|
|
65
|
+
/**
|
|
66
|
+
* POST request
|
|
67
|
+
*/
|
|
68
|
+
post<T>(url: string, data?: unknown, config?: AxiosRequestConfig & {
|
|
69
|
+
requiresSessionCookie?: boolean;
|
|
70
|
+
}, requestId?: string): Promise<T>;
|
|
71
|
+
/**
|
|
72
|
+
* PUT request
|
|
73
|
+
*/
|
|
74
|
+
put<T>(url: string, data?: unknown, config?: AxiosRequestConfig & {
|
|
75
|
+
requiresSessionCookie?: boolean;
|
|
76
|
+
}, requestId?: string): Promise<T>;
|
|
77
|
+
/**
|
|
78
|
+
* PATCH request
|
|
79
|
+
*/
|
|
80
|
+
patch<T>(url: string, data?: unknown, config?: AxiosRequestConfig & {
|
|
81
|
+
requiresSessionCookie?: boolean;
|
|
82
|
+
}, requestId?: string): Promise<T>;
|
|
83
|
+
/**
|
|
84
|
+
* DELETE request
|
|
85
|
+
*/
|
|
86
|
+
delete<T>(url: string, config?: AxiosRequestConfig & {
|
|
87
|
+
requiresSessionCookie?: boolean;
|
|
88
|
+
}, requestId?: string): Promise<T>;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=ApiService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiService.d.ts","sourceRoot":"","sources":["../../src/services/ApiService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAA6C,MAAM,OAAO,CAAC;AAC1G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKvD;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAIxC;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,OAAO;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiB;IACrC,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,OAAO,CAAC,cAAc,CAAK;gBAEf,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,IAAI;IAoB9D;;OAEG;IACH,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED;;;OAGG;IACH,UAAU,IAAI,OAAO;IAIrB;;;OAGG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;;OAGG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAczC;;OAEG;YACW,OAAO;IAqDrB;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG;QAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAI5H;;OAEG;IACG,IAAI,CAAC,CAAC,EACV,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAAG;QAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;KAAE,EACjE,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC;IAIb;;OAEG;IACG,GAAG,CAAC,CAAC,EACT,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAAG;QAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;KAAE,EACjE,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC;IAIb;;OAEG;IACG,KAAK,CAAC,CAAC,EACX,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAAG;QAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;KAAE,EACjE,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC;IAIb;;OAEG;IACG,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG;QAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAGhI"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Service
|
|
3
|
+
*
|
|
4
|
+
* Axios wrapper service with request cancellation and session management
|
|
5
|
+
*/
|
|
6
|
+
import { Service } from './Service.js';
|
|
7
|
+
import { createApiInstance } from '../utils/axios.js';
|
|
8
|
+
import { getTraceIdHeader, getPlatformHeader } from '../utils/headers.js';
|
|
9
|
+
import { detectPlatformTags } from '../utils/platform.js';
|
|
10
|
+
/**
|
|
11
|
+
* Error thrown when a request requires a session cookie, but none exists
|
|
12
|
+
*/
|
|
13
|
+
export class NoSessionCookieError extends Error {
|
|
14
|
+
constructor(method, url) {
|
|
15
|
+
super(`Request skipped: ${method} ${url} requires a session cookie but none exists`);
|
|
16
|
+
this.name = 'NoSessionCookieError';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* API Service - Manages HTTP requests with cancellation and logging
|
|
21
|
+
*/
|
|
22
|
+
export class ApiService extends Service {
|
|
23
|
+
api;
|
|
24
|
+
abortControllers = new Map();
|
|
25
|
+
requestCounter = 0;
|
|
26
|
+
constructor(config, ssrContext) {
|
|
27
|
+
super(config, ssrContext);
|
|
28
|
+
this.api = createApiInstance(ssrContext ?? undefined, config ?? undefined);
|
|
29
|
+
this.api.interceptors.request.use((requestConfig) => {
|
|
30
|
+
const trace = config.trace;
|
|
31
|
+
if (trace?.id) {
|
|
32
|
+
requestConfig.headers.set(getTraceIdHeader(config), trace.id);
|
|
33
|
+
}
|
|
34
|
+
const platformTags = detectPlatformTags();
|
|
35
|
+
if (platformTags) {
|
|
36
|
+
requestConfig.headers.set(getPlatformHeader(config), platformTags);
|
|
37
|
+
}
|
|
38
|
+
return requestConfig;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get the underlying Axios instance
|
|
43
|
+
*/
|
|
44
|
+
get instance() {
|
|
45
|
+
return this.api;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Check if a session cookie exists
|
|
49
|
+
* Returns false if no session cookie, true if valid session cookie exists
|
|
50
|
+
*/
|
|
51
|
+
hasSession() {
|
|
52
|
+
return this.api.defaults.hasSessionCookie ?? false;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Mark that a session now exists (called after successful login/register)
|
|
56
|
+
* Updates the internal flag so hasSession() returns true
|
|
57
|
+
*/
|
|
58
|
+
markSessionExists() {
|
|
59
|
+
this.api.defaults.hasSessionCookie = true;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Mark that a session no longer exists (called after logout)
|
|
63
|
+
* Updates the internal flag so hasSession() returns false
|
|
64
|
+
*/
|
|
65
|
+
markSessionCleared() {
|
|
66
|
+
this.api.defaults.hasSessionCookie = false;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Generate unique request ID
|
|
70
|
+
*/
|
|
71
|
+
createRequestId(url, method) {
|
|
72
|
+
this.requestCounter += 1;
|
|
73
|
+
return `${method}:${url}:${this.requestCounter}`;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Create cancellable request config
|
|
77
|
+
*/
|
|
78
|
+
createCancellableConfig(requestId, config) {
|
|
79
|
+
this.cancelRequest(requestId);
|
|
80
|
+
const controller = new AbortController();
|
|
81
|
+
this.abortControllers.set(requestId, controller);
|
|
82
|
+
return {
|
|
83
|
+
...config,
|
|
84
|
+
signal: controller.signal,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Cancel a specific request by ID
|
|
89
|
+
*/
|
|
90
|
+
cancelRequest(requestId) {
|
|
91
|
+
const controller = this.abortControllers.get(requestId);
|
|
92
|
+
if (controller) {
|
|
93
|
+
controller.abort();
|
|
94
|
+
this.abortControllers.delete(requestId);
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
async request(method, url, dataOrConfig, configOrRequestId, requestIdOrUndefined) {
|
|
100
|
+
const hasData = method !== 'get' && method !== 'delete';
|
|
101
|
+
const data = hasData ? dataOrConfig : undefined;
|
|
102
|
+
const config = hasData
|
|
103
|
+
? configOrRequestId
|
|
104
|
+
: dataOrConfig;
|
|
105
|
+
const requestId = hasData
|
|
106
|
+
? requestIdOrUndefined
|
|
107
|
+
: configOrRequestId;
|
|
108
|
+
if (config?.requiresSessionCookie && !this.hasSession()) {
|
|
109
|
+
throw new NoSessionCookieError(method.toUpperCase(), url);
|
|
110
|
+
}
|
|
111
|
+
const id = requestId || this.createRequestId(url, method.toUpperCase());
|
|
112
|
+
const cancellableConfig = this.createCancellableConfig(id, config);
|
|
113
|
+
try {
|
|
114
|
+
let response;
|
|
115
|
+
if (hasData) {
|
|
116
|
+
response = await this.api[method](url, data, cancellableConfig);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
response = await this.api[method](url, cancellableConfig);
|
|
120
|
+
}
|
|
121
|
+
this.abortControllers.delete(id);
|
|
122
|
+
return response.data;
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
this.abortControllers.delete(id);
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* GET request
|
|
131
|
+
*/
|
|
132
|
+
async get(url, config, requestId) {
|
|
133
|
+
return this.request('get', url, config, requestId);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* POST request
|
|
137
|
+
*/
|
|
138
|
+
async post(url, data, config, requestId) {
|
|
139
|
+
return this.request('post', url, data, config, requestId);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* PUT request
|
|
143
|
+
*/
|
|
144
|
+
async put(url, data, config, requestId) {
|
|
145
|
+
return this.request('put', url, data, config, requestId);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* PATCH request
|
|
149
|
+
*/
|
|
150
|
+
async patch(url, data, config, requestId) {
|
|
151
|
+
return this.request('patch', url, data, config, requestId);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* DELETE request
|
|
155
|
+
*/
|
|
156
|
+
async delete(url, config, requestId) {
|
|
157
|
+
return this.request('delete', url, config, requestId);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* I18n Service
|
|
3
|
+
*
|
|
4
|
+
* Service for managing internationalization with vue-i18n
|
|
5
|
+
*/
|
|
6
|
+
import type { QSsrContext } from '@quasar/app-vite';
|
|
7
|
+
import type { ServiceContainer } from '../container/ServiceContainer.js';
|
|
8
|
+
import type { SsrAwareService, RegisterService } from '../container/types.js';
|
|
9
|
+
import type { I18nType, MessageLanguages } from '../types/i18n.types.js';
|
|
10
|
+
import type { AppConfig } from '../types/app.types.js';
|
|
11
|
+
import { Service } from './Service.js';
|
|
12
|
+
/**
|
|
13
|
+
* I18n Service for managing localization
|
|
14
|
+
*
|
|
15
|
+
* IMPORTANT: You must call I18nService.setTranslations() before booting the container
|
|
16
|
+
*/
|
|
17
|
+
export declare class I18nService extends Service implements SsrAwareService, RegisterService {
|
|
18
|
+
private static translations;
|
|
19
|
+
private readonly i18n;
|
|
20
|
+
private api;
|
|
21
|
+
private readonly config;
|
|
22
|
+
/**
|
|
23
|
+
* Set translations for all supported locales
|
|
24
|
+
* Must be called before booting the service
|
|
25
|
+
*
|
|
26
|
+
* @param messages - Translation messages keyed by locale (e.g., { 'en-US': {...}, 'es-MX': {...} })
|
|
27
|
+
*/
|
|
28
|
+
static setTranslations(messages: Record<string, Record<string, unknown>>): void;
|
|
29
|
+
constructor(config: AppConfig, ssrContext?: QSsrContext | null);
|
|
30
|
+
/**
|
|
31
|
+
* Register with container (called first)
|
|
32
|
+
*/
|
|
33
|
+
register({ api }: ServiceContainer): void;
|
|
34
|
+
/**
|
|
35
|
+
* Boot method to set up the API locale header after all services are ready
|
|
36
|
+
*/
|
|
37
|
+
boot(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Get the i18n instance
|
|
40
|
+
*/
|
|
41
|
+
get instance(): I18nType;
|
|
42
|
+
/**
|
|
43
|
+
* Get current locale
|
|
44
|
+
*/
|
|
45
|
+
get locale(): MessageLanguages;
|
|
46
|
+
/**
|
|
47
|
+
* Set current locale
|
|
48
|
+
*/
|
|
49
|
+
set locale(value: MessageLanguages);
|
|
50
|
+
/**
|
|
51
|
+
* Sets the locale header for API requests
|
|
52
|
+
*/
|
|
53
|
+
setApiLocaleHeader(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Changes the locale and stores it persistently
|
|
56
|
+
*/
|
|
57
|
+
changeLocale(locale: string): void;
|
|
58
|
+
/**
|
|
59
|
+
* Translates a message using the current locale
|
|
60
|
+
*/
|
|
61
|
+
t(key: string, params?: Record<string, unknown>): string;
|
|
62
|
+
/**
|
|
63
|
+
* Checks if a translation exists
|
|
64
|
+
*/
|
|
65
|
+
te(key: string): boolean;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=I18nService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"I18nService.d.ts","sourceRoot":"","sources":["../../src/services/I18nService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAKvC;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,OAAQ,YAAW,eAAe,EAAE,eAAe;IAClF,OAAO,CAAC,MAAM,CAAC,YAAY,CAAwD;IACnF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAChC,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAE7C;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI;gBAInE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,IAAI;IAO9D;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,gBAAgB,GAAG,IAAI;IAIzC;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,gBAAgB,CAE7B;IAED;;OAEG;IACH,IAAI,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAEjC;IAED;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAM1B;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUlC;;OAEG;IACH,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,MAAM;IAI5D;;OAEG;IACH,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAGzB"}
|