mirror of
https://github.com/unraid/api.git
synced 2026-04-27 10:41:26 -05:00
345e83bfb0
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added new modal dialogs and UI components, including activation steps, OS update feedback, and expanded notification management. * Introduced a plugin to configure internationalization, state management, and Apollo client support in web components. * Added a new Log Viewer page with a streamlined interface for viewing logs. * **Improvements** * Centralized Pinia state management by consolidating all stores to use a shared global Pinia instance. * Simplified component templates by removing redundant internationalization host wrappers. * Enhanced ESLint configuration with stricter rules and global variable declarations. * Refined custom element build process to prevent jQuery conflicts and optimize minification. * Updated component imports and templates for consistent structure and maintainability. * Streamlined log viewer dropdowns using simplified select components with improved formatting. * Improved notification sidebar with filtering by importance and modular components. * Replaced legacy notification popups with new UI components and added automatic root session creation for localhost requests. * Updated OS version display and user profile UI with refined styling and component usage. * **Bug Fixes** * Fixed component tag capitalization and improved type annotations across components. * **Chores** * Updated development dependencies including ESLint plugins and build tools. * Removed deprecated log viewer patch class and cleaned up related test fixtures. * Removed unused imports and simplified Apollo client setup. * Cleaned up test mocks and removed obsolete i18n host component tests. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --- - To see the specific tasks where the Asana app for GitHub is being used, see below: - https://app.asana.com/0/0/1210730229632804 --------- Co-authored-by: Pujit Mehrotra <pujit@lime-technology.com> Co-authored-by: Zack Spear <zackspear@users.noreply.github.com>
100 lines
3.0 KiB
Vue
100 lines
3.0 KiB
Vue
<script lang="ts" setup>
|
|
import { computed } from 'vue';
|
|
import { storeToRefs } from 'pinia';
|
|
|
|
import { ArrowTopRightOnSquareIcon } from '@heroicons/vue/24/solid';
|
|
import { BrandButton } from '@unraid/ui';
|
|
|
|
import type { BrandButtonProps } from '@unraid/ui';
|
|
import type { ComposerTranslation } from 'vue-i18n';
|
|
|
|
import ActivationPartnerLogo from '~/components/Activation/ActivationPartnerLogo.vue';
|
|
import { useActivationCodeDataStore } from '~/components/Activation/store/activationCodeData';
|
|
import { useActivationCodeModalStore } from '~/components/Activation/store/activationCodeModal';
|
|
import { usePurchaseStore } from '~/store/purchase';
|
|
import { useThemeStore } from '~/store/theme';
|
|
|
|
import Modal from '~/components/Modal.vue';
|
|
import ActivationSteps from './ActivationSteps.vue';
|
|
|
|
export interface Props {
|
|
t: ComposerTranslation;
|
|
}
|
|
|
|
const props = defineProps<Props>();
|
|
|
|
const { isVisible } = storeToRefs(useActivationCodeModalStore());
|
|
const { partnerInfo } = storeToRefs(useActivationCodeDataStore());
|
|
const purchaseStore = usePurchaseStore();
|
|
|
|
useThemeStore();
|
|
|
|
const title = computed<string>(() => props.t("Let's activate your Unraid OS License"));
|
|
const description = computed<string>(() =>
|
|
props.t(
|
|
`On the following screen, your license will be activated. You'll then create an Unraid.net Account to manage your license going forward.`
|
|
)
|
|
);
|
|
const docsButtons = computed<BrandButtonProps[]>(() => {
|
|
return [
|
|
{
|
|
variant: 'underline',
|
|
external: true,
|
|
href: 'https://docs.unraid.net/unraid-os/faq/licensing-faq/',
|
|
iconRight: ArrowTopRightOnSquareIcon,
|
|
size: '14px',
|
|
text: props.t('More about Licensing'),
|
|
},
|
|
{
|
|
variant: 'underline',
|
|
external: true,
|
|
href: 'https://docs.unraid.net/account/',
|
|
iconRight: ArrowTopRightOnSquareIcon,
|
|
size: '14px',
|
|
text: props.t('More about Unraid.net Accounts'),
|
|
},
|
|
];
|
|
});
|
|
</script>
|
|
|
|
<template>
|
|
<Modal
|
|
v-if="isVisible"
|
|
:t="t"
|
|
:open="isVisible"
|
|
:show-close-x="false"
|
|
:title="title"
|
|
:title-in-main="partnerInfo?.hasPartnerLogo"
|
|
:description="description"
|
|
overlay-color="bg-background"
|
|
overlay-opacity="bg-opacity-100"
|
|
max-width="max-w-800px"
|
|
:modal-vertical-center="false"
|
|
:disable-shadow="true"
|
|
>
|
|
<template v-if="partnerInfo?.hasPartnerLogo" #header>
|
|
<ActivationPartnerLogo :name="partnerInfo.partnerName" />
|
|
</template>
|
|
|
|
<template #footer>
|
|
<div class="w-full flex gap-8px justify-center mx-auto">
|
|
<BrandButton
|
|
:text="t('Activate Now')"
|
|
:icon-right="ArrowTopRightOnSquareIcon"
|
|
@click="purchaseStore.activate"
|
|
/>
|
|
</div>
|
|
</template>
|
|
|
|
<template #subFooter>
|
|
<div class="flex flex-col gap-6">
|
|
<ActivationSteps :active-step="2" class="mt-6" />
|
|
|
|
<div class="flex flex-col sm:flex-row justify-center gap-4 mx-auto w-full">
|
|
<BrandButton v-for="button in docsButtons" :key="button.text" v-bind="button" />
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</Modal>
|
|
</template>
|