mirror of
https://github.com/appwrite/console.git
synced 2026-06-06 19:27:48 +00:00
Merge branch 'feat-profiles' into 'fix-ima-328'.
This commit is contained in:
+3
-1
@@ -34,7 +34,9 @@ export default ts.config(
|
||||
'svelte/no-reactive-reassign': 'off',
|
||||
'svelte/no-reactive-literals': 'off',
|
||||
// TODO: @itznotabug, this requires a big refactor!
|
||||
'svelte/no-navigation-without-resolve': 'off'
|
||||
'svelte/no-navigation-without-resolve': 'off',
|
||||
'svelte/prefer-svelte-reactivity': 'off',
|
||||
'svelte/prefer-writable-derived': 'off'
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@ai-sdk/svelte": "^1.1.24",
|
||||
"@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@636ed39",
|
||||
"@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2752",
|
||||
"@appwrite.io/pink-icons": "0.25.0",
|
||||
"@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8f82877",
|
||||
"@appwrite.io/pink-legacy": "^1.0.3",
|
||||
|
||||
Generated
+1101
-1218
File diff suppressed because it is too large
Load Diff
@@ -13,6 +13,7 @@
|
||||
import { isLanguage, type Language } from '$lib/components/code.svelte';
|
||||
import { preferences } from '$lib/stores/preferences';
|
||||
import { getApiEndpoint } from '$lib/stores/sdk';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
const endpoint = getApiEndpoint();
|
||||
const { input, handleSubmit, completion, isLoading, complete, error } = useCompletion({
|
||||
@@ -26,9 +27,9 @@
|
||||
|
||||
const examples = [
|
||||
'How to add platform in the console?',
|
||||
'How can I manage users, permissions, and access control in Appwrite?',
|
||||
'How can I set up database tables and rows in Appwrite?',
|
||||
'How do I configure and manage server-side functions in Appwrite?',
|
||||
`How can I manage users, permissions, and access control in ${resolvedProfile.platform}?`,
|
||||
`How can I set up database tables and rows in ${resolvedProfile.platform}?`,
|
||||
`How do I configure and manage server-side functions in ${resolvedProfile.platform}?`,
|
||||
'How to add custom domain in the console?'
|
||||
];
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
import { resolve } from '$app/paths';
|
||||
import { browser } from '$app/environment';
|
||||
import { slide } from 'svelte/transition';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let {
|
||||
show = $bindable(false),
|
||||
@@ -139,8 +140,8 @@
|
||||
<Card.Base variant="secondary" padding="s">
|
||||
<Layout.Stack gap="xxs">
|
||||
<Typography.Text gap="m">
|
||||
To continue using Appwrite Cloud, please verify your email address. An email
|
||||
will be sent to <Typography.Text
|
||||
To continue using {resolvedProfile.platform} Cloud, please verify your email address.
|
||||
An email will be sent to <Typography.Text
|
||||
variant="m-600"
|
||||
color="neutral-secondary"
|
||||
style="display: inline;">{email || get(user)?.email}</Typography.Text>
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
import GradientBanner from '../gradientBanner.svelte';
|
||||
import { isSmallViewport } from '$lib/stores/viewport';
|
||||
import { Layout, Typography } from '@appwrite.io/pink-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let show = true;
|
||||
|
||||
@@ -30,7 +31,8 @@
|
||||
alignItems="center"
|
||||
alignContent="center"
|
||||
direction={$isSmallViewport ? 'column' : 'row'}>
|
||||
<Typography.Text>Get $50 Cloud credits for Appwrite Pro.</Typography.Text>
|
||||
<Typography.Text
|
||||
>Get $50 Cloud credits for {resolvedProfile.platform} Pro.</Typography.Text>
|
||||
|
||||
<Button
|
||||
secondary
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
import InputSelect from '$lib/elements/forms/inputSelect.svelte';
|
||||
import { invalidate } from '$app/navigation';
|
||||
import { Dependencies } from '$lib/constants';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let value: string;
|
||||
export let taxId = '';
|
||||
@@ -50,10 +51,10 @@
|
||||
{#if selectedPaymentMethod?.country?.toLowerCase() === 'in'}
|
||||
<Alert.Inline status="warning">
|
||||
<svelte:fragment slot="title">Indian credit or debit card-holders</svelte:fragment>
|
||||
To comply with RBI regulations in India, Appwrite will ask for verification to charge
|
||||
up to $150 USD on your payment method. We will never charge more than the cost of your
|
||||
plan and the resources you use, or your budget cap limit. For higher usage limits, please
|
||||
contact us.
|
||||
To comply with RBI regulations in India, {resolvedProfile.platform} will ask for verification
|
||||
to charge up to $150 USD on your payment method. We will never charge more than the cost
|
||||
of your plan and the resources you use, or your budget cap limit. For higher usage limits,
|
||||
please contact us.
|
||||
</Alert.Inline>
|
||||
{/if}
|
||||
<InputSelect
|
||||
|
||||
@@ -271,7 +271,7 @@
|
||||
|
||||
{#key derivedKey}
|
||||
<div use:melt={$menubar}>
|
||||
{#if !$isSmallViewport}
|
||||
{#if !$isSmallViewport && resolvedProfile.showOrgInBreadcrumbs}
|
||||
<span class="breadcrumb-separator">/</span>
|
||||
<button
|
||||
type="button"
|
||||
@@ -288,7 +288,7 @@
|
||||
{/if}</span>
|
||||
<Icon icon={IconChevronDown} size="s" color="--fgcolor-neutral-secondary" />
|
||||
</button>
|
||||
{:else}
|
||||
{:else if resolvedProfile.showOrgInBreadcrumbs}
|
||||
<button
|
||||
type="button"
|
||||
class="trigger"
|
||||
@@ -461,7 +461,11 @@
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<BottomSheet.Menu bind:isOpen={organisationBottomSheetOpen} menu={organizationsBottomSheet} />
|
||||
{#if resolvedProfile.showOrgInBreadcrumbs}
|
||||
<BottomSheet.Menu
|
||||
bind:isOpen={organisationBottomSheetOpen}
|
||||
menu={organizationsBottomSheet} />
|
||||
{/if}
|
||||
|
||||
{#await projectsBottomSheet then menu}
|
||||
{#if menu}
|
||||
|
||||
@@ -19,9 +19,10 @@
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
import { createEventDispatcher, onMount } from 'svelte';
|
||||
import { Modal } from '.';
|
||||
import { Button } from '$lib/elements/forms';
|
||||
import { createEventDispatcher, onMount } from 'svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
const key = new Date('2023-11-07');
|
||||
const dispatch = createEventDispatcher();
|
||||
@@ -92,7 +93,7 @@
|
||||
<Modal bind:show={$settings} title="Cookie Preferences">
|
||||
<p>
|
||||
We use cookies to improve your site experience. The "strictly necessary" cookies are
|
||||
required for Appwrite to function.
|
||||
required for {resolvedProfile.platform} to function.
|
||||
</p>
|
||||
<div class="u-flex-vertical u-gap-24 u-width-full-line" style:margin-block-end="24px">
|
||||
<div class="u-flex u-gap-8">
|
||||
@@ -100,7 +101,7 @@
|
||||
<div>
|
||||
<span class="text u-bold">Strictly necessary cookies</span>
|
||||
<p class="text u-margin-block-start-8">
|
||||
These are the cookies required for Appwrite to function.
|
||||
These are the cookies required for {resolvedProfile.platform} to function.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
import { IconGithub } from '@appwrite.io/pink-icons-svelte';
|
||||
import { Alert, Card, Empty, Icon, Layout } from '@appwrite.io/pink-svelte';
|
||||
import { regionalConsoleVariables } from '$routes/(console)/project-[region]-[project]/store';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let callbackState: Record<string, string> = null;
|
||||
|
||||
@@ -16,8 +17,8 @@
|
||||
<Alert.Inline status="info" title="Installing Git on a self-hosted instance ">
|
||||
<Layout.Stack>
|
||||
<p>
|
||||
Before installing Git in a locally hosted Appwrite project, ensure your
|
||||
environment variables are configured.
|
||||
Before installing Git in a locally hosted {resolvedProfile.platform} project, ensure
|
||||
your environment variables are configured.
|
||||
</p>
|
||||
<div>
|
||||
<Button
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
} from '@appwrite.io/pink-svelte';
|
||||
import { onMount } from 'svelte';
|
||||
import LoggingAlert from './loggingAlert.svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let {
|
||||
selectedLog,
|
||||
@@ -142,8 +143,8 @@
|
||||
{:else}
|
||||
<Card padding="xs" radius="s">
|
||||
<Typography.Text>
|
||||
Body data is not captured by Appwrite for your user's security and privacy. To
|
||||
display body data in the Logs tab, use <InlineCode
|
||||
Body data is not captured by {resolvedProfile.platform} for your user's security
|
||||
and privacy. To display body data in the Logs tab, use <InlineCode
|
||||
code="context.log()"
|
||||
size="s" />. <Link external {href} variant="muted">Learn more</Link>.
|
||||
</Typography.Text>
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
import {
|
||||
IconChevronRight,
|
||||
IconCreditCard,
|
||||
IconGlobe,
|
||||
IconGlobeAlt,
|
||||
IconLogoutRight,
|
||||
IconMenuAlt4,
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
link: 'https://appwrite.io/discord',
|
||||
description: 'Get support from our community through Discord'
|
||||
},
|
||||
...(resolvedProfile.showGithubIssueSupport
|
||||
...(!resolvedProfile.showGithubIssueSupport
|
||||
? []
|
||||
: [
|
||||
{
|
||||
@@ -153,7 +153,7 @@
|
||||
{#key $app.themeInUse}
|
||||
<iframe
|
||||
style="color-scheme: none"
|
||||
title="Appwrite Status"
|
||||
title="{resolvedProfile.platform} Status"
|
||||
src={`https://status.appwrite.online/badge?theme=${
|
||||
$app.themeInUse === 'dark' ? 'dark' : 'light'
|
||||
}`}
|
||||
|
||||
@@ -2,6 +2,7 @@ import DevKind from '$lib/images/testimonials/hassan.png';
|
||||
import LangX from '$lib/images/testimonials/xue.webp';
|
||||
import KCollect from '$lib/images/testimonials/ryan-oconner-testimonial.png';
|
||||
import Phil from '$lib/images/testimonials/phil.jpg';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export interface Testimonial {
|
||||
id: string;
|
||||
@@ -18,7 +19,7 @@ export const testimonials: Testimonial[] = [
|
||||
id: 'hassan-devkind',
|
||||
logo: DevKind,
|
||||
headline: 'DevKind reduced development time by 60% and lowered server costs by 40%',
|
||||
blurb: 'A special thanks to Appwrite for providing robust features and seamless functionality.',
|
||||
blurb: `A special thanks to ${resolvedProfile.platform} for providing robust features and seamless functionality.`,
|
||||
name: 'Hassan Ahmed',
|
||||
title: 'Engineer at DevKind',
|
||||
avatar: DevKind
|
||||
@@ -26,8 +27,8 @@ export const testimonials: Testimonial[] = [
|
||||
{
|
||||
id: 'xue-langx',
|
||||
logo: LangX,
|
||||
headline: 'LangX handled millions of requests using Appwrite',
|
||||
blurb: 'With its comprehensive suite of services, Appwrite emerged as an ideal choice for my needs.',
|
||||
headline: `LangX handled millions of requests using ${resolvedProfile.platform}`,
|
||||
blurb: `With its comprehensive suite of services, ${resolvedProfile.platform} emerged as an ideal choice for my needs.`,
|
||||
name: 'Xue',
|
||||
title: 'Founder at LangX',
|
||||
avatar: LangX
|
||||
@@ -36,7 +37,7 @@ export const testimonials: Testimonial[] = [
|
||||
id: 'ryan-kcollect',
|
||||
logo: KCollect,
|
||||
headline: 'K-Collect reduced infrastructure costs by 700%',
|
||||
blurb: 'A major impact that Appwrite made was the amount of time and stress saved.',
|
||||
blurb: `A major impact that ${resolvedProfile.platform} made was the amount of time and stress saved.`,
|
||||
name: "Ryan O'Connor",
|
||||
title: 'Founder at K-Collect',
|
||||
avatar: KCollect
|
||||
@@ -44,8 +45,8 @@ export const testimonials: Testimonial[] = [
|
||||
{
|
||||
id: 'phil-majikkids',
|
||||
logo: Phil,
|
||||
headline: 'With Appwrite, Majik Kids built an entire app with one developer.',
|
||||
blurb: 'Just like a Swiss Army Knife you can choose and use the tools that you need with Appwrite.',
|
||||
headline: `With ${resolvedProfile.platform}, Majik Kids built an entire app with one developer.`,
|
||||
blurb: `Just like a Swiss Army Knife you can choose and use the tools that you need with ${resolvedProfile.platform}.`,
|
||||
name: 'Phil McCluskey',
|
||||
title: 'App Manager, Majik Kids',
|
||||
avatar: Phil
|
||||
|
||||
@@ -65,11 +65,10 @@ export async function gzipUpload(files: FileList) {
|
||||
data: f.buffer
|
||||
}))
|
||||
);
|
||||
const blob = new Blob([tar], { type: 'application/gzip' });
|
||||
const file = new File([blob], 'deployment.tar.gz', {
|
||||
const blob = new Blob([new Uint8Array(tar)], { type: 'application/gzip' });
|
||||
uploadFile = new File([blob], 'deployment.tar.gz', {
|
||||
type: 'application/gzip'
|
||||
});
|
||||
uploadFile = file;
|
||||
} catch (e) {
|
||||
addNotification({
|
||||
type: 'error',
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
} from '@appwrite.io/pink-svelte';
|
||||
import { isSmallViewport } from '$lib/stores/viewport';
|
||||
import { page } from '$app/state';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte.ts';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
const currentYear = new Date().getFullYear();
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
<Divider vertical />
|
||||
</span>
|
||||
<Layout.Stack direction="row" gap="xxs" inline>
|
||||
<!-- TODO: hide on studio mode. -->
|
||||
<Button.Anchor
|
||||
icon
|
||||
size="xs"
|
||||
@@ -46,7 +47,7 @@
|
||||
href="https://github.com/appwrite/appwrite"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
aria-label="Appwrite on Github">
|
||||
aria-label="{resolvedProfile.platform} on Github">
|
||||
<Icon size="s" icon={IconGithub} />
|
||||
</Button.Anchor>
|
||||
<Button.Anchor
|
||||
@@ -56,7 +57,7 @@
|
||||
href="https://appwrite.io/discord"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
aria-label="Appwrite on Discord">
|
||||
aria-label="{resolvedProfile.platform} on Discord">
|
||||
<Icon size="s" icon={IconDiscord} />
|
||||
</Button.Anchor>
|
||||
</Layout.Stack>
|
||||
@@ -83,7 +84,7 @@
|
||||
size="s"
|
||||
variant="quiet"
|
||||
href="https://github.com/appwrite/appwrite/releases"
|
||||
aria-label="Appwrite releases on Github"
|
||||
aria-label="{resolvedProfile.platform} releases on Github"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
style="white-space: nowrap;">
|
||||
@@ -148,7 +149,7 @@
|
||||
size="s"
|
||||
variant="quiet"
|
||||
href="https://github.com/appwrite/appwrite/releases"
|
||||
aria-label="Appwrite releases on Github"
|
||||
aria-label="{resolvedProfile.platform} releases on Github"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
style="white-space: nowrap;">
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
import { Typography, Layout, Avatar } from '@appwrite.io/pink-svelte';
|
||||
import { getCampaignImageUrl } from '$routes/(public)/card/helpers';
|
||||
import { isSmallViewport } from '$lib/stores/viewport';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export const imgLight = LoginLight;
|
||||
export const imgDark = LoginDark;
|
||||
@@ -62,13 +63,13 @@
|
||||
src={AppwriteLogoDark}
|
||||
width="160"
|
||||
class="u-block u-only-dark"
|
||||
alt="Appwrite Logo" />
|
||||
alt="{resolvedProfile.platform} Logo" />
|
||||
{:else}
|
||||
<img
|
||||
src={AppwriteLogoLight}
|
||||
width="160"
|
||||
class="u-block u-only-light"
|
||||
alt="Appwrite Logo" />
|
||||
alt="{resolvedProfile.platform} Logo" />
|
||||
{/if}
|
||||
</a>
|
||||
</div>
|
||||
@@ -174,13 +175,13 @@
|
||||
src={AppwriteLogoDark}
|
||||
width="120"
|
||||
class="u-block u-only-dark"
|
||||
alt="Appwrite Logo" />
|
||||
alt="{resolvedProfile.platform} Logo" />
|
||||
{:else}
|
||||
<img
|
||||
src={AppwriteLogoLight}
|
||||
width="120"
|
||||
class="u-block u-only-light"
|
||||
alt="Appwrite Logo" />
|
||||
alt="{resolvedProfile.platform} Logo" />
|
||||
{/if}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -34,6 +34,8 @@ export type Profile = {
|
||||
sites: boolean;
|
||||
settings: boolean;
|
||||
};
|
||||
showOrgInBreadcrumbs: boolean;
|
||||
minimalOrgHeader: boolean;
|
||||
getProjectRoute: (params: { region: string; project: string }) => ResolvedPathname;
|
||||
};
|
||||
|
||||
@@ -64,6 +66,8 @@ export const base: Profile = {
|
||||
sites: true,
|
||||
settings: true
|
||||
},
|
||||
showOrgInBreadcrumbs: true,
|
||||
minimalOrgHeader: false,
|
||||
getProjectRoute({ region, project }) {
|
||||
return resolve(`/(console)/project-[region]-[project]/overview`, {
|
||||
region,
|
||||
@@ -99,6 +103,8 @@ export const studio: Profile = {
|
||||
sites: true,
|
||||
settings: false
|
||||
},
|
||||
showOrgInBreadcrumbs: false,
|
||||
minimalOrgHeader: true,
|
||||
getProjectRoute({ region, project }) {
|
||||
return resolve(`/(console)/project-[region]-[project]/(studio)/studio`, {
|
||||
region,
|
||||
|
||||
@@ -17,6 +17,7 @@ const CDN_URL =
|
||||
const DEV_OVERRIDE_WEB_COMPONENTS = env?.PUBLIC_AI_OVERRIDE_WEB_COMPONENTS === 'true';
|
||||
|
||||
let component: HTMLElement | null = null;
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
let webComponentsModule: Record<string, any> | null = null;
|
||||
let configInitialized = false;
|
||||
let routingInitialized = false;
|
||||
@@ -119,6 +120,7 @@ export async function getWebComponents() {
|
||||
/**
|
||||
* Navigate to a route in the web components
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
export async function navigateToRoute(...args: any[]) {
|
||||
try {
|
||||
const { navigateToRoute: navigate } = await getWebComponents();
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
import { Vcs, Client } from '@appwrite.io/console';
|
||||
import { onMount } from 'svelte';
|
||||
import { getApiEndpoint } from '$lib/stores/sdk';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let data;
|
||||
|
||||
@@ -86,13 +87,13 @@
|
||||
src={AppwriteLogoDark}
|
||||
width="120"
|
||||
class="u-block u-only-dark"
|
||||
alt="Appwrite Logo" />
|
||||
alt="{resolvedProfile.platform} Logo" />
|
||||
{:else}
|
||||
<img
|
||||
src={AppwriteLogoLight}
|
||||
width="120"
|
||||
class="u-block u-only-light"
|
||||
alt="Appwrite Logo" />
|
||||
alt="{resolvedProfile.platform} Logo" />
|
||||
{/if}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
import { addNotification } from '$lib/stores/notifications.js';
|
||||
import { Icon, Layout } from '@appwrite.io/pink-svelte';
|
||||
import { IconChevronLeft } from '@appwrite.io/pink-icons-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let data;
|
||||
|
||||
@@ -50,7 +51,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Verify - Appwrite</title>
|
||||
<title>Verify - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Unauthenticated align="center">
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
import type { Models } from '@appwrite.io/console';
|
||||
import type { sdk } from '$lib/stores/sdk';
|
||||
import ImportReport from '$routes/(console)/project-[region]-[project]/settings/migrations/(import)/importReport.svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let errorInResources: boolean | undefined = undefined;
|
||||
export let formData: ReturnType<typeof createMigrationFormStore>;
|
||||
@@ -128,8 +129,8 @@
|
||||
{#if report && !isVersionAtLeast(version, '1.4.0') && $provider.provider === 'appwrite'}
|
||||
<Alert.Inline status="warning">
|
||||
<svelte:fragment slot="title">Functions not available for import</svelte:fragment>
|
||||
To migrate your functions, update the version of the Appwrite instance you're importing from
|
||||
to a version newer than 1.4
|
||||
To migrate your functions, update the version of the {resolvedProfile.platform} instance
|
||||
you're importing from to a version newer than 1.4
|
||||
</Alert.Inline>
|
||||
{/if}
|
||||
|
||||
|
||||
@@ -3,13 +3,15 @@
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { formData, provider, selectedProject } from '.';
|
||||
import ResourceForm from './resource-form.svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
</script>
|
||||
|
||||
<WizardStep>
|
||||
<svelte:fragment slot="title">Resources</svelte:fragment>
|
||||
<svelte:fragment slot="subtitle">
|
||||
Select the resources you need to migrate to Appwrite. Some resources can be migrated, but
|
||||
with limitations. <a
|
||||
Select the resources you need to migrate to {resolvedProfile.platform}. Some resources can
|
||||
be migrated, but with limitations.
|
||||
<a
|
||||
class="link"
|
||||
href="https://appwrite.io/docs/advanced/migrations"
|
||||
target="_blank"
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
} from '@appwrite.io/pink-icons-svelte';
|
||||
import { Dependencies } from '$lib/constants';
|
||||
import { filterRegions } from '$lib/helpers/regions';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
const onExit = () => {
|
||||
formData.reset();
|
||||
@@ -80,7 +81,9 @@
|
||||
}
|
||||
|
||||
function getProjectName(): string {
|
||||
return isExisting ? currentSelectedProject.name : newProjName || 'Appwrite project';
|
||||
return isExisting
|
||||
? currentSelectedProject.name
|
||||
: newProjName || `${resolvedProfile.platform} project`;
|
||||
}
|
||||
|
||||
async function createNewProject() {
|
||||
@@ -361,10 +364,11 @@
|
||||
</Typography.Text>
|
||||
|
||||
{#if isFirebase}
|
||||
Appwrite does not impose charges for importing data, but please note
|
||||
that Firebase may have its own pricing for this service
|
||||
{resolvedProfile.platform} does not impose charges for importing data, but
|
||||
please note that Firebase may have its own pricing for this service
|
||||
{:else}
|
||||
You won't be charged for Appwrite bandwidth usage for importing data
|
||||
You won't be charged for {resolvedProfile.platform} bandwidth usage for importing
|
||||
data
|
||||
{/if}
|
||||
</Layout.Stack>
|
||||
</Layout.Stack>
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
<script>
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>User - Appwrite</title>
|
||||
<title>User - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<slot />
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
import { Fieldset, Icon, Layout, Tooltip } from '@appwrite.io/pink-svelte';
|
||||
import { IconInfo } from '@appwrite.io/pink-icons-svelte';
|
||||
import EstimatedTotalBox from '$lib/components/billing/estimatedTotalBox.svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let data;
|
||||
|
||||
@@ -265,7 +266,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Apply credits - Appwrite</title>
|
||||
<title>Apply credits - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Wizard bind:showExitModal href={previousPage} confirmExit title="Apply credits">
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
import { writable } from 'svelte/store';
|
||||
import EstimatedTotalBox from '$lib/components/billing/estimatedTotalBox.svelte';
|
||||
import { onMount } from 'svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let data;
|
||||
|
||||
@@ -175,7 +176,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Create organization - Appwrite</title>
|
||||
<title>Create organization - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Wizard title="Create organization" href={previousPage} bind:showExitModal confirmExit>
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
import { isCloud } from '$lib/system';
|
||||
import { base } from '$app/paths';
|
||||
import { Alert } from '@appwrite.io/pink-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let show = false;
|
||||
|
||||
@@ -44,7 +45,7 @@
|
||||
|
||||
<Modal title="Create new organization" {error} onSubmit={create} bind:show>
|
||||
{#if isCloud}
|
||||
<Alert.Inline status="info" title="Get ready for Appwrite Pro">
|
||||
<Alert.Inline status="info" title="Get ready for {resolvedProfile.platform} Pro">
|
||||
We will soon introduce the much-anticipated Pro plan. Your account will continue to have
|
||||
access to <b>one free organization</b>. If you manage more than one organization, you
|
||||
will need to either upgrade to the Pro plan, transfer your projects to a Pro
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
import { Form } from '$lib/elements/forms/index.js';
|
||||
import { goto, invalidate } from '$app/navigation';
|
||||
import { base } from '$app/paths';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let isLoading = false;
|
||||
let organizationName = 'Personal Projects';
|
||||
@@ -61,7 +62,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Create organization - Appwrite</title>
|
||||
<title>Create organization - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Form onSubmit={createOrganization}>
|
||||
|
||||
@@ -13,13 +13,14 @@
|
||||
import { loadAvailableRegions } from '$routes/(console)/regions';
|
||||
import { regions as regionsStore } from '$lib/stores/organization';
|
||||
import { user } from '$lib/stores/user';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let isLoading = false;
|
||||
let startAnimation = false;
|
||||
|
||||
let projectId = ID.unique();
|
||||
let projectRegion = Region.Fra;
|
||||
let projectName = 'Appwrite Project';
|
||||
let projectName = `${resolvedProfile.platform} Project`;
|
||||
|
||||
const projectIdForLog = projectId;
|
||||
|
||||
@@ -76,7 +77,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Create project - Appwrite</title>
|
||||
<title>Create project - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
<div
|
||||
class="page-container u-flex-vertical u-cross-child-center u-cross-center"
|
||||
@@ -89,13 +90,13 @@
|
||||
width="120"
|
||||
height="22"
|
||||
class="u-only-light"
|
||||
alt="Appwrite Logo" />
|
||||
alt="{resolvedProfile.platform} Logo" />
|
||||
<img
|
||||
src="{base}/images/appwrite-logo-dark.svg"
|
||||
width="120"
|
||||
height="22"
|
||||
class="u-only-dark"
|
||||
alt="Appwrite Logo" />
|
||||
alt="{resolvedProfile.platform} Logo" />
|
||||
<Card.Base variant="primary" padding="l">
|
||||
<CreateProject
|
||||
showTitle
|
||||
|
||||
@@ -6,12 +6,28 @@ import { isOrganization, tierToPlan } from '$lib/stores/billing';
|
||||
import { ID, Query, type Models } from '@appwrite.io/console';
|
||||
import { BillingPlan } from '$lib/constants';
|
||||
import { redirect } from '@sveltejs/kit';
|
||||
import { base } from '$app/paths';
|
||||
import { base, resolve } from '$app/paths';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
// TODO: this needs to be cleaned up!
|
||||
export const load: PageLoad = async ({ parent }) => {
|
||||
const { account, organizations } = await parent();
|
||||
|
||||
const firstOrganization = organizations?.teams[0]?.$id;
|
||||
|
||||
if (!resolvedProfile.showOnboarding) {
|
||||
if (!organizations?.total) {
|
||||
redirect(303, resolve('/(console)/create-organization'));
|
||||
} else {
|
||||
redirect(
|
||||
303,
|
||||
resolve('/(console)/organization-[organization]', {
|
||||
organization: firstOrganization
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const accountPrefs = account.prefs;
|
||||
const hasCompletedOnboarding = accountPrefs['newOnboardingCompleted'] ?? false;
|
||||
|
||||
@@ -19,7 +35,7 @@ export const load: PageLoad = async ({ parent }) => {
|
||||
if (hasCompletedOnboarding && !organizations?.total) {
|
||||
redirect(303, `${base}/onboarding/create-organization`);
|
||||
} else if (hasCompletedOnboarding && organizations?.total) {
|
||||
redirect(303, `${base}/organization-${organizations.teams[0].$id}`);
|
||||
redirect(303, `${base}/organization-${firstOrganization}`);
|
||||
}
|
||||
|
||||
if (!organizations?.total) {
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
import { base } from '$app/paths';
|
||||
import { onMount } from 'svelte';
|
||||
import { fade } from 'svelte/transition';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let startAnimation = false;
|
||||
|
||||
@@ -13,7 +14,7 @@
|
||||
'All 37 OAuth providers are ready',
|
||||
'Global CDN is ready',
|
||||
'Advanced DDoS protection is ready',
|
||||
'Appwrite network is ready'
|
||||
`${resolvedProfile.platform} network is ready`
|
||||
];
|
||||
let currentSentenceIndex = 0;
|
||||
let visible = true;
|
||||
@@ -73,7 +74,7 @@
|
||||
</Layout.Stack>
|
||||
</div>
|
||||
<div class="title-container">
|
||||
<Typography.Title size="l">Welcome to Appwrite</Typography.Title>
|
||||
<Typography.Title size="l">Welcome to {resolvedProfile.platform}</Typography.Title>
|
||||
</div>
|
||||
<div class="grid" class:remove-shadow={removeShadow}>
|
||||
<div class="border-right" style="grid-row: 1 / 6; grid-column-start: 1; "></div>
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
import { base } from '$app/paths';
|
||||
import { isOwner } from '$lib/stores/roles';
|
||||
import type { LayoutProps } from './$types';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let { data, children }: LayoutProps = $props();
|
||||
|
||||
@@ -44,7 +45,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Organizations - Appwrite</title>
|
||||
<title>Organizations - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
{@render children()}
|
||||
|
||||
@@ -14,7 +14,6 @@ import { defaultRoles, defaultScopes } from '$lib/constants';
|
||||
import type { Plan } from '$lib/sdk/billing';
|
||||
import { loadAvailableRegions } from '$routes/(console)/regions';
|
||||
import type { Organization } from '$lib/stores/organization';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export const load: LayoutLoad = async ({ params, depends, parent }) => {
|
||||
const { preferences: prefs } = await parent();
|
||||
@@ -52,10 +51,8 @@ export const load: LayoutLoad = async ({ params, depends, parent }) => {
|
||||
loadAvailableRegions(params.organization)
|
||||
]);
|
||||
|
||||
const header = resolvedProfile.id === 'studio' ? undefined : Header;
|
||||
|
||||
return {
|
||||
header,
|
||||
header: Header,
|
||||
breadcrumbs: Breadcrumbs,
|
||||
organization,
|
||||
currentPlan,
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
import { HeaderAlert } from '$lib/layout';
|
||||
import { hideBillingHeaderRoutes, readOnly, showBudgetAlert } from '$lib/stores/billing';
|
||||
import { base } from '$app/paths';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
$: redirectUrl = `${base}/organization-${$organization.$id}/billing#update-budget`;
|
||||
</script>
|
||||
@@ -14,7 +15,7 @@
|
||||
<HeaderAlert type="error" title="Budget limit reached">
|
||||
<svelte:fragment>
|
||||
This organization has reached its budget limit and is now blocked. To continue using
|
||||
Appwrite services, update the budget limit.
|
||||
{resolvedProfile.platform} services, update the budget limit.
|
||||
</svelte:fragment>
|
||||
<svelte:fragment slot="buttons">
|
||||
{#if !page.data.currentPlan?.usagePerProject}
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
import type { OrganizationUsage } from '$lib/sdk/billing';
|
||||
import type { Models } from '@appwrite.io/console';
|
||||
import { toLocaleDate } from '$lib/helpers/date';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let data;
|
||||
|
||||
@@ -318,7 +319,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Change plan - Appwrite</title>
|
||||
<title>Change plan - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Wizard title="Change plan" href={previousPage} bind:showExitModal confirmExit>
|
||||
|
||||
+2
-1
@@ -26,6 +26,7 @@
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { addNotification } from '$lib/stores/notifications';
|
||||
import RetryDomainModal from '$routes/(console)/organization-[organization]/domains/retryDomainModal.svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let data;
|
||||
|
||||
@@ -113,7 +114,7 @@
|
||||
src={$app.themeInUse === 'dark'
|
||||
? `${base}/images/domains/empty-records-dark.svg`
|
||||
: `${base}/images/domains/empty-records-light.svg`}
|
||||
title="Get started with Appwrite DNS">
|
||||
title="Get started with {resolvedProfile.platform} DNS">
|
||||
<span slot="description">
|
||||
Navigate to your domain provider and update the nameservers to <InlineCode
|
||||
code="ns1.appwrite-dns.com"
|
||||
|
||||
+3
-2
@@ -33,6 +33,7 @@
|
||||
import DualTimeView from '$lib/components/dualTimeView.svelte';
|
||||
import type { PageData } from './$types';
|
||||
import type { Models } from '@appwrite.io/console';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let data: PageData;
|
||||
|
||||
@@ -89,7 +90,7 @@
|
||||
<Badge
|
||||
variant="secondary"
|
||||
size="s"
|
||||
content="Served by Appwrite" />
|
||||
content="Served by {resolvedProfile.platform}" />
|
||||
</div>
|
||||
{:else if record.lock && isCAARecord}
|
||||
<!-- to align with InteractiveText -->
|
||||
@@ -97,7 +98,7 @@
|
||||
<Badge
|
||||
variant="secondary"
|
||||
size="s"
|
||||
content="Generated by Appwrite" />
|
||||
content="Generated by {resolvedProfile.platform}" />
|
||||
</div>
|
||||
{:else}
|
||||
<InteractiveText variant="copy" text={record.value} isVisible />
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
import { GRACE_PERIOD_OVERRIDE, isCloud } from '$lib/system';
|
||||
import { IconGithub, IconPlus } from '@appwrite.io/pink-icons-svelte';
|
||||
import { Badge, Icon, Layout, Tooltip, Typography } from '@appwrite.io/pink-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let areMembersLimited: boolean = $state(false);
|
||||
|
||||
@@ -88,33 +89,44 @@
|
||||
);
|
||||
|
||||
const avatars = $derived($members.memberships?.map((m) => m.userName || m.userEmail) ?? []);
|
||||
|
||||
const titleName = $derived(resolvedProfile.minimalOrgHeader ? 'Billing' : organization?.name);
|
||||
|
||||
const blockSize = $derived(resolvedProfile.minimalOrgHeader ? 'unset' : '152px');
|
||||
|
||||
const shouldShowCover = $derived(resolvedProfile.minimalOrgHeader ? true : organization.$id);
|
||||
</script>
|
||||
|
||||
{#if organization?.$id}
|
||||
<Cover>
|
||||
{#if shouldShowCover}
|
||||
<Cover blocksize={blockSize}>
|
||||
<svelte:fragment slot="header">
|
||||
<span class="u-flex u-cross-center u-gap-8 u-min-width-0">
|
||||
<Typography.Title color="--fgcolor-neutral-primary" size="xl" truncate>
|
||||
{organization.name}
|
||||
{titleName}
|
||||
</Typography.Title>
|
||||
{#if isCloud && organization?.billingPlan === BillingPlan.GITHUB_EDUCATION}
|
||||
<Badge variant="secondary" content="Education">
|
||||
<Icon icon={IconGithub} size="s" slot="start" />
|
||||
</Badge>
|
||||
{:else if isCloud && organization?.billingPlan === BillingPlan.FREE}
|
||||
<Badge variant="secondary" content="Free"></Badge>
|
||||
{/if}
|
||||
{#if isCloud && organization?.billingTrialStartDate && $daysLeftInTrial > 0 && organization.billingPlan !== BillingPlan.FREE && $plansInfo.get(organization.billingPlan)?.trialDays}
|
||||
<Tooltip>
|
||||
<Badge variant="secondary" content="Trial" />
|
||||
<svelte:fragment slot="tooltip">
|
||||
{`Your trial ends on ${toLocaleDate(
|
||||
organization.billingStartDate
|
||||
)}. ${$daysLeftInTrial} days remaining.`}
|
||||
</svelte:fragment>
|
||||
</Tooltip>
|
||||
|
||||
{#if !resolvedProfile.minimalOrgHeader}
|
||||
{#if isCloud && organization?.billingPlan === BillingPlan.GITHUB_EDUCATION}
|
||||
<Badge variant="secondary" content="Education">
|
||||
<Icon icon={IconGithub} size="s" slot="start" />
|
||||
</Badge>
|
||||
{:else if isCloud && organization?.billingPlan === BillingPlan.FREE}
|
||||
<Badge variant="secondary" content="Free"></Badge>
|
||||
{/if}
|
||||
|
||||
{#if isCloud && organization?.billingTrialStartDate && $daysLeftInTrial > 0 && organization.billingPlan !== BillingPlan.FREE && $plansInfo.get(organization.billingPlan)?.trialDays}
|
||||
<Tooltip>
|
||||
<Badge variant="secondary" content="Trial" />
|
||||
<svelte:fragment slot="tooltip">
|
||||
{`Your trial ends on ${toLocaleDate(
|
||||
organization.billingStartDate
|
||||
)}. ${$daysLeftInTrial} days remaining.`}
|
||||
</svelte:fragment>
|
||||
</Tooltip>
|
||||
{/if}
|
||||
{/if}
|
||||
</span>
|
||||
|
||||
<div class="u-margin-inline-start-auto">
|
||||
<Layout.Stack direction="row" alignItems="center" gap="xl">
|
||||
{#if $members.total > 1}
|
||||
@@ -123,7 +135,7 @@
|
||||
</a>
|
||||
{/if}
|
||||
|
||||
{#if $isOwner}
|
||||
{#if $isOwner && !resolvedProfile.minimalOrgHeader}
|
||||
<Tooltip disabled={!areMembersLimited} placement="bottom-end">
|
||||
<div>
|
||||
<Button
|
||||
@@ -147,15 +159,18 @@
|
||||
</Layout.Stack>
|
||||
</div>
|
||||
</svelte:fragment>
|
||||
<Tabs>
|
||||
{#each tabs as tab}
|
||||
<Tab
|
||||
href={tab.href}
|
||||
selected={isTabSelected(tab, page.url.pathname, path, tabs)}
|
||||
event={tab.event}>
|
||||
{tab.title}
|
||||
</Tab>
|
||||
{/each}
|
||||
</Tabs>
|
||||
|
||||
{#if !resolvedProfile.minimalOrgHeader}
|
||||
<Tabs>
|
||||
{#each tabs as tab}
|
||||
<Tab
|
||||
href={tab.href}
|
||||
selected={isTabSelected(tab, page.url.pathname, path, tabs)}
|
||||
event={tab.event}>
|
||||
{tab.title}
|
||||
</Tab>
|
||||
{/each}
|
||||
</Tabs>
|
||||
{/if}
|
||||
</Cover>
|
||||
{/if}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
import { base } from '$app/paths';
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { Submit, trackEvent } from '$lib/actions/analytics';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
async function downloadPdf() {
|
||||
trackEvent(Submit.DownloadDPA);
|
||||
@@ -26,7 +27,8 @@
|
||||
</h6>
|
||||
<p class="text u-margin-block-start-8">
|
||||
The DPA is a legal document that describes the roles and responsibilities of
|
||||
Appwrite and the organization when personal data is processed. <a
|
||||
{resolvedProfile.platform} and the organization when personal data is processed.
|
||||
<a
|
||||
class="link"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
|
||||
@@ -319,8 +319,11 @@
|
||||
organization={data.organization}
|
||||
currentPlan={$currentPlan} />
|
||||
</Container>
|
||||
|
||||
<CreateOrganization bind:show={addOrganization} />
|
||||
|
||||
<CreateProject bind:show={showCreate} teamId={page.params.organization} />
|
||||
|
||||
<CreateProjectCloud
|
||||
projects={data.projects.total}
|
||||
bind:showCreateProjectCloud
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
navigateToRoute
|
||||
} from '$lib/studio/studio-widget';
|
||||
import { page } from '$app/state';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let anchor: HTMLElement = $state();
|
||||
|
||||
@@ -38,7 +39,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Studio - Appwrite</title>
|
||||
<title>Studio - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<div class="studio-page" bind:this={anchor}></div>
|
||||
|
||||
@@ -9,10 +9,6 @@ export const load: PageLoad = async ({ params, parent }) => {
|
||||
const { account } = await parent();
|
||||
const baseRedirectUrl = `${base}/project-${params.region}-${params.project}`;
|
||||
|
||||
if (PUBLIC_CONSOLE_PROFILE === 'studio') {
|
||||
redirect(302, `${baseRedirectUrl}/studio`);
|
||||
}
|
||||
|
||||
if (!hasOnboardingDismissed(params.project, account)) {
|
||||
redirect(302, `${baseRedirectUrl}/get-started`);
|
||||
} else {
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
import { showCreateUser } from './+page.svelte';
|
||||
import { showCreateTeam } from './teams/+page.svelte';
|
||||
import { IconPlus } from '@appwrite.io/pink-icons-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
$: $registerCommands([
|
||||
{
|
||||
@@ -105,7 +106,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Auth - Appwrite</title>
|
||||
<title>Auth - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<slot />
|
||||
|
||||
+5
-1
@@ -19,6 +19,7 @@
|
||||
import type { Models } from '@appwrite.io/console';
|
||||
import { Icon, Input, Layout, Link, Tooltip } from '@appwrite.io/pink-svelte';
|
||||
import { IconPlus, IconRefresh } from '@appwrite.io/pink-icons-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let numbers: Models.MockNumber[] = $project?.authMockNumbers ?? [];
|
||||
let initialNumbers = [];
|
||||
@@ -28,12 +29,15 @@
|
||||
|
||||
let isComponentDisabled: boolean =
|
||||
isSelfHosted || (isCloud && !$currentPlan.supportsMockNumbers);
|
||||
|
||||
let emptyStateTitle: string = isSelfHosted
|
||||
? 'Available on Appwrite Cloud'
|
||||
? `Available on ${resolvedProfile.platform} Cloud`
|
||||
: 'Upgrade to add mock phone numbers';
|
||||
|
||||
let emptyStateDescription: string = isSelfHosted
|
||||
? 'Sign up for Cloud to add mock phone numbers to your projects.'
|
||||
: 'Upgrade to a Pro plan to add mock phone numbers to your project.';
|
||||
|
||||
let cta: string = isSelfHosted ? 'Sign up' : 'Upgrade plan';
|
||||
|
||||
async function updateMockNumbers() {
|
||||
|
||||
+2
-1
@@ -9,6 +9,7 @@
|
||||
import { Layout, Selector, Input, Badge } from '@appwrite.io/pink-svelte';
|
||||
import { project } from '../../store';
|
||||
import { tick } from 'svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let value = $project?.authLimit !== 0 ? 'limited' : 'unlimited';
|
||||
|
||||
@@ -59,7 +60,7 @@
|
||||
<CardGrid>
|
||||
<svelte:fragment slot="title">Users limit</svelte:fragment>
|
||||
Limit new users from signing up for your project, regardless of authentication method. You can still
|
||||
create users and team memberships from your Appwrite console.
|
||||
create users and team memberships from your {resolvedProfile.platform} console.
|
||||
<svelte:fragment slot="aside">
|
||||
<Layout.Stack>
|
||||
<Layout.Stack direction="row" alignItems="center">
|
||||
|
||||
+5
-1
@@ -1,5 +1,9 @@
|
||||
<script>
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Team - Appwrite</title>
|
||||
<title>Team - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<slot />
|
||||
|
||||
+6
-3
@@ -8,11 +8,12 @@
|
||||
import EmailLight from './email-footer-light.png';
|
||||
import EmailMobileDark from './email-footer-mobile-dark.png';
|
||||
import EmailMobileLight from './email-footer-mobile-light.png';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
</script>
|
||||
|
||||
<CardGrid>
|
||||
<svelte:fragment slot="title">Email signature</svelte:fragment>
|
||||
Enable or disable Appwrite branding in your email template signature.
|
||||
Enable or disable {resolvedProfile.platform} branding in your email template signature.
|
||||
|
||||
<svelte:fragment slot="aside">
|
||||
<EmptyCardImageCloud source="email_signature_card" let:nextTier>
|
||||
@@ -46,8 +47,10 @@
|
||||
{/if}
|
||||
</div>
|
||||
</svelte:fragment>
|
||||
<svelte:fragment slot="title">Upgrade to remove Appwrite branding</svelte:fragment>
|
||||
Upgrade to a {nextTier} plan to remove the Appwrite branding from your emails.
|
||||
<svelte:fragment slot="title"
|
||||
>Upgrade to remove {resolvedProfile.platform} branding</svelte:fragment>
|
||||
Upgrade to a {nextTier} plan to remove the {resolvedProfile.platform} branding from your
|
||||
emails.
|
||||
|
||||
<svelte:fragment let:source slot="cta">
|
||||
<Button
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
<script>
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>User - Appwrite</title>
|
||||
<title>User - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<slot />
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
import { addSubPanel, registerCommands, updateCommandGroupRanks } from '$lib/commandCenter';
|
||||
import { DatabasesPanel } from '$lib/commandCenter/panels';
|
||||
import { project } from '../store';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
$: $registerCommands([
|
||||
{
|
||||
@@ -33,7 +34,7 @@
|
||||
<svelte:head>
|
||||
<!-- svelte bug, the table header just stays! -->
|
||||
{#key page.url.pathname}
|
||||
<title>Databases - Appwrite</title>
|
||||
<title>Databases - {resolvedProfile.platform}</title>
|
||||
{/key}
|
||||
</svelte:head>
|
||||
|
||||
|
||||
+2
-1
@@ -19,6 +19,7 @@
|
||||
import { currentPlan } from '$lib/stores/organization';
|
||||
import { isCloud } from '$lib/system';
|
||||
import { noWidthTransition } from '$lib/stores/sidebar';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
const project = page.params.project;
|
||||
const databaseId = page.params.database;
|
||||
@@ -140,7 +141,7 @@
|
||||
<svelte:head>
|
||||
<!-- svelte bug, the table header just stays! -->
|
||||
{#key page.url.pathname}
|
||||
<title>Database - Appwrite</title>
|
||||
<title>Database - {resolvedProfile.platform}</title>
|
||||
{/key}
|
||||
</svelte:head>
|
||||
|
||||
|
||||
+4
-3
@@ -14,14 +14,15 @@
|
||||
import { upgradeURL } from '$lib/stores/billing';
|
||||
import { isCloud } from '$lib/system';
|
||||
import { Card, Layout, Typography } from '@appwrite.io/pink-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
const title = isCloud
|
||||
? 'Backups are available on paid plans'
|
||||
: 'Database Backups are available on Appwrite Cloud';
|
||||
: `Database Backups are available on ${resolvedProfile.platform} Cloud`;
|
||||
|
||||
const message = isCloud
|
||||
? "Upgrade now to unlock Appwrite's backups."
|
||||
: "Sign up now to access Appwrite's backups.";
|
||||
? `Upgrade now to unlock ${resolvedProfile.platform}'s backups.`
|
||||
: `Sign up now to access ${resolvedProfile.platform}'s backups.`;
|
||||
|
||||
const isDark = $app.themeInUse === 'dark';
|
||||
|
||||
|
||||
+2
-1
@@ -66,6 +66,7 @@
|
||||
|
||||
import IndexesSuggestions from '../(suggestions)/indexes.svelte';
|
||||
import { showIndexesSuggestions, tableColumnSuggestions } from '../(suggestions)';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let editRow: EditRow;
|
||||
let editRelatedRow: EditRelatedRow;
|
||||
@@ -344,7 +345,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>{$table?.name ?? 'Table'} - Appwrite</title>
|
||||
<title>{$table?.name ?? 'Table'} - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<slot />
|
||||
|
||||
+3
-2
@@ -13,6 +13,7 @@
|
||||
import { Icon, Layout } from '@appwrite.io/pink-svelte';
|
||||
import { IconPlus, IconX } from '@appwrite.io/pink-icons-svelte';
|
||||
import { organization } from '$lib/stores/organization';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
const tableId = page.params.table;
|
||||
|
||||
@@ -76,8 +77,8 @@
|
||||
<Form onSubmit={updateDisplayName}>
|
||||
<CardGrid>
|
||||
<svelte:fragment slot="title">Display name</svelte:fragment>
|
||||
Select up to 5 string columns to display as row names in the Appwrite console. These help identify
|
||||
rows in places like relationships.
|
||||
Select up to 5 string columns to display as row names in the {resolvedProfile.platform} console.
|
||||
These help identify rows in places like relationships.
|
||||
|
||||
<svelte:fragment slot="aside">
|
||||
<Layout.Stack gap="s">
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
import { addSubPanel, registerCommands } from '$lib/commandCenter';
|
||||
import { FunctionsPanel } from '$lib/commandCenter/panels';
|
||||
import { canSeeFunctions } from '$lib/stores/roles';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
$registerCommands([
|
||||
{
|
||||
@@ -17,7 +18,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Functions - Appwrite</title>
|
||||
<title>Functions - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<slot />
|
||||
|
||||
+2
-1
@@ -20,6 +20,7 @@
|
||||
import { getLatestTag } from '$lib/helpers/github';
|
||||
import { writable } from 'svelte/store';
|
||||
import Link from '$lib/elements/link.svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let {
|
||||
data
|
||||
@@ -160,7 +161,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Deploy {data.repository.name} - Appwrite</title>
|
||||
<title>Deploy {data.repository.name} - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Wizard
|
||||
|
||||
+2
-1
@@ -23,6 +23,7 @@
|
||||
import { isCloud } from '$lib/system';
|
||||
import { humanFileSize } from '$lib/helpers/sizeConvertion';
|
||||
import { currentPlan } from '$lib/stores/organization';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let data;
|
||||
|
||||
@@ -160,7 +161,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Create function - Appwrite</title>
|
||||
<title>Create function - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Wizard
|
||||
|
||||
+2
-1
@@ -22,6 +22,7 @@
|
||||
import RepoCard from './repoCard.svelte';
|
||||
import { getIconFromRuntime } from '$lib/stores/runtimes';
|
||||
import { regionalConsoleVariables } from '$routes/(console)/project-[region]-[project]/store';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let data;
|
||||
|
||||
@@ -158,7 +159,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Create function - Appwrite</title>
|
||||
<title>Create function - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Wizard
|
||||
|
||||
+2
-1
@@ -31,6 +31,7 @@
|
||||
import { Dependencies } from '$lib/constants';
|
||||
import { getIconFromRuntime } from '$lib/stores/runtimes';
|
||||
import { regionalConsoleVariables } from '$routes/(console)/project-[region]-[project]/store';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let data;
|
||||
|
||||
@@ -218,7 +219,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Create function - Appwrite</title>
|
||||
<title>Create function - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Wizard
|
||||
|
||||
+3
-2
@@ -5,6 +5,7 @@
|
||||
import { page } from '$app/state';
|
||||
import { Alert, Code, Layout, Tabs } from '@appwrite.io/pink-svelte';
|
||||
import { Link } from '$lib/elements';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let show = false;
|
||||
|
||||
@@ -84,8 +85,8 @@ appwrite functions createDeployment ,
|
||||
|
||||
<Modal title="Create CLI deployment" bind:show hideFooter>
|
||||
<span slot="description">
|
||||
Deploy your function using the Appwrite CLI by running the following command inside your
|
||||
function's folder.
|
||||
Deploy your function using the {resolvedProfile.platform} CLI by running the following command
|
||||
inside your function's folder.
|
||||
</span>
|
||||
|
||||
<Layout.Stack gap="l">
|
||||
|
||||
+2
-1
@@ -38,6 +38,7 @@
|
||||
import { IconInfo, IconPlus, IconX } from '@appwrite.io/pink-icons-svelte';
|
||||
import Wizard from '$lib/layout/wizard.svelte';
|
||||
import Aside from './aside.svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let previousPage: string = `${base}/project-${page.params.region}-${page.params.project}/functions/function-${page.params.function}/executions`;
|
||||
|
||||
@@ -145,7 +146,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Create execution - Appwrite</title>
|
||||
<title>Create execution - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Wizard title="Create execution" href={previousPage}>
|
||||
|
||||
+3
-2
@@ -17,6 +17,7 @@
|
||||
import { Runtime } from '@appwrite.io/console';
|
||||
import { IconPlus, IconX } from '@appwrite.io/pink-icons-svelte';
|
||||
import { Icon, Layout, Link, Table, Typography } from '@appwrite.io/pink-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
const functionId = page.params.function;
|
||||
const eventSet: Writable<Set<string>> = writable(new Set($func.events));
|
||||
@@ -135,11 +136,11 @@
|
||||
|
||||
<EventModal bind:show={showEvents} initialValue={eventValue} on:created={handleEvent}>
|
||||
<Typography.Text
|
||||
>Select events in your Appwrite project that will trigger your function.
|
||||
>Select events in your {resolvedProfile.platform} project that will trigger your function.
|
||||
<Link.Anchor
|
||||
href="https://appwrite.io/docs/advanced/platform/events"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="link">Learn more about Appwrite Events</Link.Anchor
|
||||
class="link">Learn more about {resolvedProfile.platform} Events</Link.Anchor
|
||||
>.</Typography.Text>
|
||||
</EventModal>
|
||||
|
||||
+2
-1
@@ -24,6 +24,7 @@
|
||||
import { page } from '$app/state';
|
||||
import { capitalize } from '$lib/helpers/string';
|
||||
import { IconExternalLink } from '@appwrite.io/pink-icons-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
$: buttonDisabled =
|
||||
isCloud && isServiceLimited('functions', $organization?.billingPlan, $functionsList?.total);
|
||||
@@ -41,7 +42,7 @@
|
||||
src={$app.themeInUse === 'dark' ? AppwriteLogoDark : AppwriteLogoLight}
|
||||
width={120}
|
||||
height={22}
|
||||
alt="Appwrite" />
|
||||
alt={resolvedProfile.platform} />
|
||||
</Layout.Stack>
|
||||
</PinkCard.Base>
|
||||
</div>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import Breadcrumbs from '../overview/breadcrumbs.svelte';
|
||||
import Header from '../overview/header.svelte';
|
||||
import type { LayoutLoad } from './$types';
|
||||
import Header from '../overview/header.svelte';
|
||||
import Breadcrumbs from '../overview/breadcrumbs.svelte';
|
||||
|
||||
export const load: LayoutLoad = async () => {
|
||||
export const load: LayoutLoad = () => {
|
||||
return {
|
||||
header: Header,
|
||||
breadcrumbs: Breadcrumbs
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
<script lang="ts">
|
||||
import { page } from '$app/state';
|
||||
import Onboard from '../overview/onboard.svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Console - Appwrite</title>
|
||||
<title>Console - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Onboard platforms={page.data.project.platforms} pingCount={page.data.project.pingCount} />
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
import { canWriteMessages } from '$lib/stores/roles';
|
||||
import { project } from '../store';
|
||||
import { IconPlus } from '@appwrite.io/pink-icons-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
// TODO: finalize the commands
|
||||
$: $registerCommands([
|
||||
@@ -58,7 +59,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Messaging - Appwrite</title>
|
||||
<title>Messaging - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<slot />
|
||||
|
||||
+5
-1
@@ -1,5 +1,9 @@
|
||||
<script>
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Message - Appwrite</title>
|
||||
<title>Message - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<slot />
|
||||
|
||||
+5
-1
@@ -1,5 +1,9 @@
|
||||
<script>
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Provider - Appwrite</title>
|
||||
<title>Provider - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<slot />
|
||||
|
||||
+2
-1
@@ -4,6 +4,7 @@
|
||||
import { page } from '$app/state';
|
||||
import { registerCommands } from '$lib/commandCenter';
|
||||
import { project } from '$routes/(console)/project-[region]-[project]/store';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
const topicId = page.params.topic;
|
||||
|
||||
@@ -48,7 +49,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Topic - Appwrite</title>
|
||||
<title>Topic - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<slot />
|
||||
|
||||
+2
-1
@@ -17,6 +17,7 @@
|
||||
import Scopes from '../api-keys/scopes.svelte';
|
||||
import { InteractiveText, Layout, Typography } from '@appwrite.io/pink-svelte';
|
||||
import { getEffectiveScopes } from '../api-keys/scopes.svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let key: Models.DevKey | Models.Key;
|
||||
export let keyType: 'api' | 'dev' = 'api';
|
||||
@@ -111,7 +112,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>{label} key - Appwrite</title>
|
||||
<title>{label} key - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Container>
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
import { writable, type Writable } from 'svelte/store';
|
||||
import { IconPlus } from '@appwrite.io/pink-icons-svelte';
|
||||
import { isSmallViewport } from '$lib/stores/viewport';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let period: UsagePeriods = '30d';
|
||||
$: path = `${base}/project-${page.params.region}-${page.params.project}/overview`;
|
||||
@@ -94,7 +95,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Console - Appwrite</title>
|
||||
<title>Console - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Container overlapCover>
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
import { addNotification } from '$lib/stores/notifications';
|
||||
import { page } from '$app/state';
|
||||
import { showDevKeysCreateModal } from '$routes/(console)/project-[region]-[project]/overview/store';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let name = '';
|
||||
let expire = null;
|
||||
@@ -57,7 +58,7 @@
|
||||
<Form onSubmit={create} isModal>
|
||||
<Modal title="Create dev key" bind:open={$showDevKeysCreateModal}>
|
||||
<span slot="description">
|
||||
Bypass Appwrite rate limits and CORS errors in your development environment.
|
||||
Bypass {resolvedProfile.platform} rate limits and CORS errors in your development environment.
|
||||
</span>
|
||||
|
||||
<Layout.Stack>
|
||||
|
||||
@@ -45,12 +45,12 @@
|
||||
<Layout.Stack direction="column" gap={$isSmallViewport ? 's' : 'xs'}>
|
||||
<Typography.Title color="--fgcolor-neutral-primary" size="xl"
|
||||
>{#if $user.name === $user.email}
|
||||
Welcome to Appwrite
|
||||
Welcome to {resolvedProfile.platform}
|
||||
{:else}
|
||||
Welcome, {$user.name}
|
||||
{/if}</Typography.Title>
|
||||
<Typography.Text size="m" color="--fgcolor-neutral-secondary"
|
||||
>Follow a few quick steps to get started with Appwrite</Typography.Text>
|
||||
>Follow a few quick steps to get started with {resolvedProfile.platform}</Typography.Text>
|
||||
</Layout.Stack>
|
||||
<div class="dashboard-header-button">
|
||||
{#if !hasOnboardingDismissed($project.$id, $user)}
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
import { Click, trackEvent } from '$lib/actions/analytics';
|
||||
import { goto } from '$app/navigation';
|
||||
import { page } from '$app/state';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
function createKey() {
|
||||
trackEvent(Click.KeyCreateClick, {
|
||||
@@ -472,6 +473,7 @@
|
||||
</Layout.Stack>
|
||||
</div></Card.Base>
|
||||
</Layout.Stack>
|
||||
|
||||
<Layout.Stack
|
||||
gap="l"
|
||||
direction={$isSmallViewport ? 'column' : 'row'}>
|
||||
@@ -531,6 +533,7 @@
|
||||
</div></Card.Base>
|
||||
</div>
|
||||
</Layout.Stack>
|
||||
|
||||
<Layout.Stack
|
||||
gap="l"
|
||||
direction={$isSmallViewport ? 'column' : 'row'}>
|
||||
@@ -545,8 +548,8 @@
|
||||
size="s">MCP server</Typography.Title>
|
||||
<Typography.Text
|
||||
color="--fgcolor-neutral-secondary">
|
||||
Deploy the Appwrite MCP server with a single
|
||||
click, or view the <Link.Anchor
|
||||
Deploy the {resolvedProfile.platform} MCP server
|
||||
with a single click, or view the <Link.Anchor
|
||||
href="https://appwrite.io/docs"
|
||||
target="_blank">docs</Link.Anchor> for instructions.
|
||||
</Typography.Text>
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
import CreateWeb from './createWeb.svelte';
|
||||
import { createPlatform } from './wizard/store';
|
||||
import { Click, trackEvent } from '$lib/actions/analytics';
|
||||
import { PlatformType } from '@appwrite.io/console';
|
||||
|
||||
export enum Platform {
|
||||
Web,
|
||||
@@ -29,7 +30,7 @@
|
||||
platform: Platform,
|
||||
name: string,
|
||||
key: string,
|
||||
type: string
|
||||
type: PlatformType
|
||||
) {
|
||||
createPlatform.set({
|
||||
name: name,
|
||||
|
||||
+2
-2
@@ -26,6 +26,7 @@
|
||||
import OnboardingPlatformCard from './components/OnboardingPlatformCard.svelte';
|
||||
import { PlatformType } from '@appwrite.io/console';
|
||||
import { project } from '../../store';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let showExitModal = false;
|
||||
let isPlatformCreated = false;
|
||||
@@ -94,8 +95,7 @@
|
||||
[PlatformType.Flutterweb]: {
|
||||
name: 'My Web app',
|
||||
hostname: 'localhost',
|
||||
tooltip:
|
||||
'The hostname that your website will use to interact with the Appwrite APIs in production or development environments. No protocol or port number required.'
|
||||
tooltip: `The hostname that your website will use to interact with the ${resolvedProfile.platform} APIs in production or development environments. No protocol or port number required.`
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+2
-1
@@ -26,6 +26,7 @@
|
||||
import OnboardingPlatformCard from './components/OnboardingPlatformCard.svelte';
|
||||
import { PlatformType } from '@appwrite.io/console';
|
||||
import { project } from '../../store';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let showExitModal = false;
|
||||
let isPlatformCreated = false;
|
||||
@@ -228,7 +229,7 @@ EXPO_PUBLIC_APPWRITE_ENDPOINT=${sdk.forProject(page.params.region, page.params.p
|
||||
</div>
|
||||
|
||||
<Typography.Text variant="m-500"
|
||||
>2. Add your Appwrite credentials to <InlineCode
|
||||
>2. Add your {resolvedProfile.platform} credentials to <InlineCode
|
||||
size="s"
|
||||
code=".env.example" /> then rename it to <InlineCode
|
||||
size="s"
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
} from './components/index';
|
||||
import { extendedHostnameRegex } from '$lib/helpers/string';
|
||||
import { project } from '../../store';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let key;
|
||||
|
||||
@@ -256,8 +257,8 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p
|
||||
<Icon icon={IconInfo} size="s" />
|
||||
<span slot="tooltip">
|
||||
The hostname that your website will use to interact with the
|
||||
Appwrite APIs in production or development environments. No
|
||||
protocol or port number required.
|
||||
{resolvedProfile.platform} APIs in production or development
|
||||
environments. No protocol or port number required.
|
||||
</span>
|
||||
</Tooltip>
|
||||
</InputText></Fieldset>
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
import { registerCommands, updateCommandGroupRanks } from '$lib/commandCenter';
|
||||
import { canWriteProjects } from '$lib/stores/roles';
|
||||
import { IconPlus } from '@appwrite.io/pink-icons-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
$: $registerCommands([
|
||||
{
|
||||
@@ -28,7 +29,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Settings - Appwrite</title>
|
||||
<title>Settings - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<slot />
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
import { Click, trackEvent } from '$lib/actions/analytics';
|
||||
import Table from './table.svelte';
|
||||
import { ResponsiveContainerHeader } from '$lib/layout';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let { data } = $props();
|
||||
</script>
|
||||
@@ -54,7 +55,7 @@
|
||||
? `${base}/images/domains/empty-domain-dark.svg`
|
||||
: `${base}/images/domains/empty-domain-light.svg`}
|
||||
title="Use a custom domain for your API"
|
||||
description="Connect your own domain to Appwrite, so your API is accessible from a custom URL instead of the default Appwrite endpoint.">
|
||||
description={`Connect your own domain to ${resolvedProfile.platform}, so your API is accessible from a custom URL instead of the default ${resolvedProfile.platform} endpoint.`}>
|
||||
<svelte:fragment slot="actions">
|
||||
<Button
|
||||
external
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
|
||||
<svelte:fragment slot="tooltip" let:toggle>
|
||||
<ActionMenu.Root>
|
||||
{#if domain.status !== 'verified' && domain.status !== 'verifiying'}
|
||||
{#if domain.status !== 'verified' && domain.status !== 'verifying'}
|
||||
<ActionMenu.Item.Button
|
||||
leadingIcon={IconRefresh}
|
||||
on:click={(e) => {
|
||||
|
||||
+6
-4
@@ -31,6 +31,7 @@
|
||||
} from '@appwrite.io/pink-icons-svelte';
|
||||
import { capitalize } from '$lib/helpers/string';
|
||||
import { page } from '$app/state';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
const onExit = () => {
|
||||
resetImportStores();
|
||||
@@ -113,7 +114,7 @@
|
||||
onDestroy(onExit);
|
||||
|
||||
const providers: Record<Provider, string> = {
|
||||
appwrite: 'Appwrite self-hosted',
|
||||
appwrite: `${resolvedProfile.platform} self-hosted`,
|
||||
firebase: 'Firebase',
|
||||
supabase: 'Supabase',
|
||||
nhost: 'NHost'
|
||||
@@ -240,10 +241,11 @@
|
||||
</Typography.Text>
|
||||
|
||||
{#if isFirebase}
|
||||
Appwrite does not impose charges for importing data, but please note
|
||||
that Firebase may have its own pricing for this service
|
||||
{resolvedProfile.platform} does not impose charges for importing data, but
|
||||
please note that Firebase may have its own pricing for this service
|
||||
{:else}
|
||||
You won't be charged for Appwrite bandwidth usage for importing data
|
||||
You won't be charged for {resolvedProfile.platform} bandwidth usage for importing
|
||||
data
|
||||
{/if}
|
||||
</Layout.Stack>
|
||||
</Layout.Stack>
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
import DualTimeView from '$lib/components/dualTimeView.svelte';
|
||||
import { Click, trackEvent } from '$lib/actions/analytics';
|
||||
import { page } from '$app/state';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let data;
|
||||
let showExport = false;
|
||||
@@ -149,7 +150,7 @@
|
||||
<Container>
|
||||
<CardGrid>
|
||||
<svelte:fragment slot="title">Import project data</svelte:fragment>
|
||||
Import data from another platform or from a different Appwrite instance.
|
||||
Import data from another platform or from a different {resolvedProfile.platform} instance.
|
||||
<Link.Anchor
|
||||
href="https://appwrite.io/docs/advanced/migrations"
|
||||
target="_blank"
|
||||
@@ -218,7 +219,7 @@
|
||||
{#if isSelfHosted}
|
||||
<CardGrid>
|
||||
<svelte:fragment slot="title">Deploy to Cloud</svelte:fragment>
|
||||
Export data from your project to Appwrite Cloud.
|
||||
Export data from your project to {resolvedProfile.platform} Cloud.
|
||||
<Link.Anchor
|
||||
href="https://appwrite.io/docs/advanced/migrations/self-hosted"
|
||||
target="_blank"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { Dependencies } from '$lib/constants.js';
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { Query } from '@appwrite.io/console';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export async function load({ depends, params }) {
|
||||
depends(Dependencies.MIGRATIONS);
|
||||
@@ -9,9 +10,19 @@ export async function load({ depends, params }) {
|
||||
const { migrations } = await sdk.forProject(params.region, params.project).migrations.list({
|
||||
queries: [
|
||||
// hides backups/restorations from migrations page.
|
||||
Query.equal('source', ['Appwrite', 'Firebase', 'NHost', 'Supabase']),
|
||||
Query.equal('source', [
|
||||
`${resolvedProfile.platform}`,
|
||||
'Firebase',
|
||||
'NHost',
|
||||
'Supabase'
|
||||
]),
|
||||
Query.or([
|
||||
Query.equal('destination', ['Appwrite', 'Firebase', 'NHost', 'Supabase']),
|
||||
Query.equal('destination', [
|
||||
`${resolvedProfile.platform}`,
|
||||
'Firebase',
|
||||
'NHost',
|
||||
'Supabase'
|
||||
]),
|
||||
Query.isNull('destination')
|
||||
])
|
||||
]
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
import type { ComponentType } from 'svelte';
|
||||
import { Link } from '$lib/elements';
|
||||
import { regionalConsoleVariables, mcpTools } from '../store';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let total: number;
|
||||
export let limit: number;
|
||||
@@ -170,8 +171,8 @@
|
||||
</Layout.Stack>
|
||||
{:else if isSelfHosted && !isVcsEnabled}
|
||||
<Alert.Inline status="info" title="Installing Git on a self-hosted instance">
|
||||
Before installing Git in a locally hosted Appwrite project, ensure your environment
|
||||
variables are configured.
|
||||
Before installing Git in a locally hosted {resolvedProfile.platform} project, ensure
|
||||
your environment variables are configured.
|
||||
<svelte:fragment slot="actions">
|
||||
<FormButton
|
||||
compact
|
||||
@@ -209,7 +210,8 @@
|
||||
<Card.Base padding="none" border="dashed">
|
||||
<Empty type="secondary" title="MCP installation">
|
||||
<svelte:fragment slot="description">
|
||||
Deploy the Appwrite MCP server with a single click, or view the <PinkLink.Anchor
|
||||
Deploy the {resolvedProfile.platform} MCP server with a single click, or view the
|
||||
<PinkLink.Anchor
|
||||
href="https://appwrite.io/docs"
|
||||
target="_blank"
|
||||
rel="noreferrer">docs</PinkLink.Anchor> for instructions.
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
import { project } from '../store';
|
||||
import { canWriteProjects } from '$lib/stores/roles';
|
||||
import { getProjectEndpoint } from '$lib/helpers/project';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let name: string = null;
|
||||
|
||||
@@ -44,7 +45,7 @@
|
||||
|
||||
<CardGrid>
|
||||
<svelte:fragment slot="title">API credentials</svelte:fragment>
|
||||
Access Appwrite services using this project's API Endpoint and Project ID.
|
||||
Access {resolvedProfile.platform} services using this project's API Endpoint and Project ID.
|
||||
<svelte:fragment slot="aside">
|
||||
<CopyInput label="Project ID" value={$project.$id} />
|
||||
<CopyInput label="API Endpoint" value={getProjectEndpoint()} />
|
||||
|
||||
+5
-1
@@ -1,5 +1,9 @@
|
||||
<script>
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Webhook - Appwrite</title>
|
||||
<title>Webhook - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<slot />
|
||||
|
||||
+2
-1
@@ -13,6 +13,7 @@
|
||||
import { webhook } from './store';
|
||||
import { Icon, Layout, Link, Table, Typography } from '@appwrite.io/pink-svelte';
|
||||
import { IconPlus, IconX } from '@appwrite.io/pink-icons-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
const projectId = page.params.project;
|
||||
const eventSet: Writable<Set<string>> = writable(new Set());
|
||||
@@ -114,7 +115,7 @@
|
||||
|
||||
<EventModal bind:show={showCreateEvent} on:created={handleEvent}>
|
||||
<Typography.Text>
|
||||
Select events in your Appwrite project that will trigger your webhook. <Link.Anchor
|
||||
Select events in your {resolvedProfile.platform} project that will trigger your webhook. <Link.Anchor
|
||||
href="https://appwrite.io/docs/advanced/platform/events"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
|
||||
+3
-1
@@ -5,13 +5,15 @@
|
||||
import Regenerate from './regenerate.svelte';
|
||||
import { webhook } from './store';
|
||||
import { Click, trackEvent } from '$lib/actions/analytics';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let showRegenerate = false;
|
||||
</script>
|
||||
|
||||
<CardGrid>
|
||||
<svelte:fragment slot="title">Signature key</svelte:fragment>
|
||||
Add the Signature Key to the X-Appwrite-Webhook-Signature header to validate your webhooks.
|
||||
Add the Signature Key to the X-{resolvedProfile.platform}-Webhook-Signature header to validate
|
||||
your webhooks.
|
||||
<Link.Anchor
|
||||
href="https://appwrite.io/docs/advanced/platform/webhooks#verification"
|
||||
target="_blank"
|
||||
|
||||
+3
-1
@@ -4,6 +4,7 @@
|
||||
import { EventModal } from '$lib/components';
|
||||
import { Icon, Typography, Link, Table, Layout, Fieldset } from '@appwrite.io/pink-svelte';
|
||||
import { IconPlus, IconX } from '@appwrite.io/pink-icons-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let showCreate = false;
|
||||
|
||||
@@ -58,7 +59,8 @@
|
||||
{#if showCreate}
|
||||
<EventModal bind:show={showCreate} on:created={handleCreated}>
|
||||
<Typography.Text>
|
||||
Select events in your Appwrite project that will trigger your webhook. <Link.Anchor
|
||||
Select events in your {resolvedProfile.platform} project that will trigger your webhook.
|
||||
<Link.Anchor
|
||||
href="https://appwrite.io/docs/advanced/platform/events"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
<script>
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Sites - Appwrite</title>
|
||||
<title>Sites - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<slot />
|
||||
|
||||
+2
-1
@@ -21,6 +21,7 @@
|
||||
import { writable } from 'svelte/store';
|
||||
import { getLatestTag } from '$lib/helpers/github';
|
||||
import Link from '$lib/elements/link.svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let {
|
||||
data
|
||||
@@ -198,7 +199,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Deploy {data.repository.name} - Appwrite</title>
|
||||
<title>Deploy {data.repository.name} - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Wizard
|
||||
|
||||
+2
-1
@@ -21,6 +21,7 @@
|
||||
import { isCloud } from '$lib/system';
|
||||
import { currentPlan } from '$lib/stores/organization';
|
||||
import Domain from '../domain.svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let data;
|
||||
let showExitModal = false;
|
||||
@@ -152,7 +153,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Create site - Appwrite</title>
|
||||
<title>Create site - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Wizard
|
||||
|
||||
+4
-3
@@ -10,6 +10,7 @@
|
||||
import { installation, repository } from '$lib/stores/vcs.js';
|
||||
import type { Models } from '@appwrite.io/console';
|
||||
import { Fieldset, Layout, Typography } from '@appwrite.io/pink-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
let { data } = $props();
|
||||
|
||||
@@ -60,9 +61,9 @@
|
||||
Missing a repository?
|
||||
</Typography.Text>
|
||||
<Typography.Text variation="m-400">
|
||||
Make sure Appwrite has access to your GitHub repositories. If you chose
|
||||
specific repos, you may need to update your permissions to include the
|
||||
missing one.
|
||||
Make sure {resolvedProfile.platform} has access to your GitHub repositories.
|
||||
If you chose specific repos, you may need to update your permissions to include
|
||||
the missing one.
|
||||
</Typography.Text>
|
||||
</Layout.Stack>
|
||||
<Layout.Stack gap="s" direction="row">
|
||||
|
||||
+2
-1
@@ -27,6 +27,7 @@
|
||||
import Configuration from '../../configuration.svelte';
|
||||
import Domain from '../../domain.svelte';
|
||||
import { regionalConsoleVariables } from '$routes/(console)/project-[region]-[project]/store';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let data;
|
||||
let showExitModal = false;
|
||||
@@ -155,7 +156,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Create site - Appwrite</title>
|
||||
<title>Create site - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Wizard
|
||||
|
||||
+2
-1
@@ -10,6 +10,7 @@
|
||||
import { capitalize } from '$lib/helpers/string';
|
||||
import { app } from '$lib/stores/app.js';
|
||||
import { getFrameworkIcon } from '$lib/stores/sites.js';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let data;
|
||||
|
||||
@@ -77,7 +78,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Create site - Appwrite</title>
|
||||
<title>Create site - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Wizard
|
||||
|
||||
+2
-1
@@ -38,6 +38,7 @@
|
||||
import { getFrameworkIcon } from '$lib/stores/sites';
|
||||
import { regionalConsoleVariables } from '$routes/(console)/project-[region]-[project]/store';
|
||||
import { getTemplateSourceUrl } from '$lib/helpers/templateSource';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let data;
|
||||
|
||||
@@ -193,7 +194,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Create site - Appwrite</title>
|
||||
<title>Create site - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<Wizard
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<script lang="ts">
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Site - Appwrite</title>
|
||||
<title>Site - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<slot />
|
||||
|
||||
+3
-2
@@ -6,6 +6,7 @@
|
||||
import { Button } from '$lib/elements/forms';
|
||||
import type { Models } from '@appwrite.io/console';
|
||||
import { Alert, Code, Layout, Tabs } from '@appwrite.io/pink-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let show = false;
|
||||
export let site: Models.Site;
|
||||
@@ -77,8 +78,8 @@ appwrite sites createDeployment ,
|
||||
|
||||
<Modal title="Create CLI deployment" bind:show hideFooter>
|
||||
<span slot="description">
|
||||
Deploy your site using the Appwrite CLI by running the following command inside your sites's
|
||||
folder.
|
||||
Deploy your site using the {resolvedProfile.platform} CLI by running the following command inside
|
||||
your sites's folder.
|
||||
</span>
|
||||
|
||||
<Layout.Stack gap="l">
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
import { project } from '../store';
|
||||
import { showCreateBucket } from './+page.svelte';
|
||||
import { IconPlus } from '@appwrite.io/pink-icons-svelte';
|
||||
import { resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
$: $registerCommands([
|
||||
{
|
||||
@@ -47,7 +48,7 @@
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Storage - Appwrite</title>
|
||||
<title>Storage - {resolvedProfile.platform}</title>
|
||||
</svelte:head>
|
||||
|
||||
<slot />
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user