diff --git a/components.d.ts b/components.d.ts index 320d303..9c6bcb7 100644 --- a/components.d.ts +++ b/components.d.ts @@ -18,6 +18,7 @@ declare module 'vue' { Chart: typeof import('./src/components/icons/Chart.vue')['default'] Checkbox: typeof import('primevue/checkbox')['default'] CheckIcon: typeof import('./src/components/icons/CheckIcon.vue')['default'] + ClientOnly: typeof import('./src/components/ClientOnly.tsx')['default'] Credit: typeof import('./src/components/icons/Credit.vue')['default'] DashboardLayout: typeof import('./src/components/DashboardLayout.vue')['default'] Drawer: typeof import('primevue/drawer')['default'] @@ -25,6 +26,8 @@ declare module 'vue' { FloatLabel: typeof import('primevue/floatlabel')['default'] HardDriveUpload: typeof import('./src/components/icons/HardDriveUpload.vue')['default'] Home: typeof import('./src/components/icons/Home.vue')['default'] + IconField: typeof import('primevue/iconfield')['default'] + InputIcon: typeof import('primevue/inputicon')['default'] InputText: typeof import('primevue/inputtext')['default'] Layout: typeof import('./src/components/icons/Layout.vue')['default'] LinkIcon: typeof import('./src/components/icons/LinkIcon.vue')['default'] @@ -54,6 +57,7 @@ declare global { const Chart: typeof import('./src/components/icons/Chart.vue')['default'] const Checkbox: typeof import('primevue/checkbox')['default'] const CheckIcon: typeof import('./src/components/icons/CheckIcon.vue')['default'] + const ClientOnly: typeof import('./src/components/ClientOnly.tsx')['default'] const Credit: typeof import('./src/components/icons/Credit.vue')['default'] const DashboardLayout: typeof import('./src/components/DashboardLayout.vue')['default'] const Drawer: typeof import('primevue/drawer')['default'] @@ -61,6 +65,8 @@ declare global { const FloatLabel: typeof import('primevue/floatlabel')['default'] const HardDriveUpload: typeof import('./src/components/icons/HardDriveUpload.vue')['default'] const Home: typeof import('./src/components/icons/Home.vue')['default'] + const IconField: typeof import('primevue/iconfield')['default'] + const InputIcon: typeof import('primevue/inputicon')['default'] const InputText: typeof import('primevue/inputtext')['default'] const Layout: typeof import('./src/components/icons/Layout.vue')['default'] const LinkIcon: typeof import('./src/components/icons/LinkIcon.vue')['default'] diff --git a/src/api/client.ts b/src/api/client.ts index 528e28a..b9753f1 100644 --- a/src/api/client.ts +++ b/src/api/client.ts @@ -551,7 +551,9 @@ export class Api< plansList: (params: RequestParams = {}) => this.request< ResponseResponse & { - data?: ModelPlan[]; + data: { + plans: ModelPlan[]; + } }, ResponseResponse >({ diff --git a/src/components/ClientOnly.tsx b/src/components/ClientOnly.tsx new file mode 100644 index 0000000..5c22360 --- /dev/null +++ b/src/components/ClientOnly.tsx @@ -0,0 +1,25 @@ +// export default defineComponent((props, context) => { +// if (typeof window === 'undefined') { +// return () => context.slots.default ? context.slots.default() : null; +// } +// return () => null; +// }); + +import { ref, onMounted } from "vue"; +const ClientOnly = defineComponent({ + name: "ClientOnly", + setup(_p, { slots }) { + const isClient = ref(false); + + onMounted(() => { + isClient.value = true; + }); + return () => { + if (isClient.value) { + return slots.default ? slots.default() : null; + } + return null; + }; + }, +}); +export default ClientOnly; diff --git a/src/components/DashboardLayout.vue b/src/components/DashboardLayout.vue index a766b45..11f4427 100644 --- a/src/components/DashboardLayout.vue +++ b/src/components/DashboardLayout.vue @@ -15,52 +15,43 @@ const profileHoist = createStaticVNode(`
`, 1); -const links = [ - { href: "/fdsfsd", label: "app", icon: homeHoist, type: "btn", className }, - { href: "/", label: "Overview", icon: Home, type: "a", className }, - { href: "/upload", label: "Upload", icon: Upload, type: "a", className }, - { href: "/video", label: "Video", icon: Video, type: "a", className }, - { href: "/payments-and-plans", label: "Payments & Plans", icon: Credit, type: "a", className }, - { href: "#notification", label: "Notification", icon: Bell, type: "notification", className }, - { href: "/profile", label: "Profile", icon: profileHoist, type: "a", className: 'w-12 h-12 rounded-2xl hover:bg-primary/15 flex' }, -]; - const notificationPopover = ref{{ auth.user?.email }}
-- - Member since {{ joinDate }} -
-{{ formatBytes(storageUsed) }} of {{ formatBytes(storageLimit) }} used
-Your subscription is in good standing.
-{{ formatBytes(storageUsed) }} of {{ formatBytes(storageLimit) }} used
+Your subscription is in good standing.
+{{ user?.email }}
++ + Member since {{ joinDate }} +
+Tip: For fastest processing
-Upload videos in H.264 video codec + AAC - audio codec format (e.g., MP4 with H.264/AAC). Videos in this format will be - processed much faster (seconds instead of minutes) because they don't need re-encoding.
-Supports uploading multiple files at once. Formats MP4, MOV, MKV. Up to 10GB per file.
- - - Choose Files - -Apply to {{ pendingCount || 0 }} pending files
+Tip: For fastest processing
+Upload videos in H.264 video codec + AAC + audio codec format (e.g., MP4 with H.264/AAC). Videos in this format will be + processed much faster (seconds instead of minutes) because they don't need re-encoding.
++ Supports uploading multiple files at once. Formats MP4, MOV, MKV. Up to 10GB per file. +
+ + + Choose Files + +