mirror of
https://github.com/unraid/api.git
synced 2026-05-14 20:10:10 -05:00
af5ca11860
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - New Features - Introduced Docker management UI components: Overview, Logs, Console, Preview, and Edit. - Added responsive Card/Detail layouts with grouping, bulk actions, and tabs. - New UnraidToaster component and global toaster configuration. - Component auto-mounting improved with async loading and multi-selector support. - UI/UX - Overhauled theme system (light/dark tokens, primary/orange accents) and added theme variants. - Header OS version now includes integrated changelog modal. - Registration displays warning states; multiple visual polish updates. - API - CPU load now includes percentGuest and percentSteal metrics. - Chores - Migrated web app to Vite; updated artifacts and manifests. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: mdatelle <mike@datelle.net> Co-authored-by: Michael Datelle <mdatelle@icloud.com>
60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
import { createApp } from 'vue';
|
|
import { createI18n } from 'vue-i18n';
|
|
import { DefaultApolloClient } from '@vue/apollo-composable';
|
|
import ui from '@nuxt/ui/vue-plugin';
|
|
|
|
// Import main CSS
|
|
import '~/assets/main.css';
|
|
|
|
import App from '@/App.vue';
|
|
// Import router and main app
|
|
import router from '@/router';
|
|
import { client } from '~/helpers/create-apollo-client';
|
|
import { createHtmlEntityDecoder } from '~/helpers/i18n-utils';
|
|
import en_US from '~/locales/en_US.json';
|
|
|
|
import { globalPinia } from '~/store/globalPinia';
|
|
|
|
const app = createApp(App);
|
|
|
|
// Create and configure i18n
|
|
const defaultLocale = 'en_US';
|
|
let parsedLocale = '';
|
|
let parsedMessages = {};
|
|
let nonDefaultLocale = false;
|
|
|
|
// Check for window locale data
|
|
if (typeof window !== 'undefined') {
|
|
const windowLocaleData = (window as unknown as { LOCALE_DATA?: string }).LOCALE_DATA || null;
|
|
if (windowLocaleData) {
|
|
try {
|
|
parsedMessages = JSON.parse(decodeURIComponent(windowLocaleData));
|
|
parsedLocale = Object.keys(parsedMessages)[0] || '';
|
|
nonDefaultLocale = parsedLocale !== defaultLocale;
|
|
} catch (error) {
|
|
console.error('[Main] error parsing messages', error);
|
|
}
|
|
}
|
|
}
|
|
|
|
const i18n = createI18n({
|
|
legacy: false,
|
|
locale: nonDefaultLocale ? parsedLocale : defaultLocale,
|
|
fallbackLocale: defaultLocale,
|
|
messages: {
|
|
en_US,
|
|
...(nonDefaultLocale ? parsedMessages : {}),
|
|
},
|
|
postTranslation: createHtmlEntityDecoder(),
|
|
});
|
|
|
|
app.use(i18n);
|
|
app.use(globalPinia);
|
|
app.use(router);
|
|
app.use(ui);
|
|
|
|
// Provide Apollo client
|
|
app.provide(DefaultApolloClient, client);
|
|
|
|
app.mount('#app');
|