sync against main

This commit is contained in:
shimon
2023-10-25 13:10:23 +03:00
114 changed files with 688 additions and 8895 deletions
+134 -1
View File
@@ -1,4 +1,6 @@
.DS_Store
.envrc
.vscode
node_modules
/build
/.svelte-kit
@@ -14,4 +16,135 @@ node_modules/
dist/
.vercel
*.swp
*.swp
### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
.env.production
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
### Node Patch ###
# Serverless Webpack directories
.webpack/
# Optional stylelint cache
.stylelintcache
# SvelteKit build / generate output
.svelte-kit
+1 -1
View File
@@ -56,7 +56,7 @@ cd appwrite-console && npm install
When you run the Appwrite Console locally, it needs to point to a backend as well. The easiest way to do this is to run an Appwrite instance locally.
Follow the [install instructions](https://appwrite.io/docs/installation) in the Appwrite docs.
Follow the [install instructions](https://appwrite.io/docs/advanced/self-hosting) in the Appwrite docs.
### 4. Setup environment variables
-1
View File
@@ -26,7 +26,6 @@ async function main() {
logEnv('CONSOLE MODE', env?.VITE_CONSOLE_MODE);
logEnv('APPWRITE ENDPOINT', env?.VITE_APPWRITE_ENDPOINT, 'relative');
logEnv('GROWTH ENDPOINT', env?.VITE_APPWRITE_GROWTH_ENDPOINT);
logEnv('GOOGLE ANALYTICS', env?.VITE_GA_PROJECT);
log();
logDelimiter();
await build();
-8558
View File
File diff suppressed because it is too large Load Diff
+36 -38
View File
@@ -10,67 +10,65 @@
"sync": "svelte-kit sync",
"check": "svelte-check --tsconfig ./tsconfig.json --fail-on-warnings --threshold warning",
"check:watch": "svelte-check --tsconfig ./tsconfig.json --watch",
"lint": "prettier --ignore-path .gitignore --check --plugin-search-dir=. . && eslint .",
"format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. .",
"lint": "prettier --ignore-path .gitignore --check --plugin prettier-plugin-svelte . && eslint .",
"format": "prettier --ignore-path .gitignore --write --plugin prettier-plugin-svelte .",
"test": "vitest run",
"test:ui": "vitest --ui",
"test:watch": "vitest watch",
"e2e": "playwright test tests/e2e"
},
"dependencies": {
"@analytics/google-analytics": "^1.0.5",
"@analytics/google-tag-manager": "^0.5.3",
"@appwrite.io/console": "npm:shimon-appwrite-console@0.1.2",
"@appwrite.io/pink": "0.1.0-next.8",
"@appwrite.io/pink-icons": "^0.1.0-next.8",
"@popperjs/core": "^2.11.6",
"@sentry/svelte": "^7.44.2",
"@sentry/tracing": "^7.44.2",
"ai": "^2.1.15",
"analytics": "^0.8.1",
"@appwrite.io/pink": "0.1.0-next.9",
"@appwrite.io/pink-icons": "^0.1.0-next.9",
"@popperjs/core": "^2.11.8",
"@sentry/svelte": "^7.66.0",
"@sentry/tracing": "^7.66.0",
"ai": "^2.2.11",
"analytics": "^0.8.9",
"dayjs": "^1.11.9",
"deep-equal": "^2.2.2",
"dotenv": "^16.0.3",
"echarts": "^5.4.1",
"logrocket": "^3.0.1",
"dotenv": "^16.3.1",
"echarts": "^5.4.3",
"logrocket": "^5.0.1",
"nanoid": "^4.0.2",
"pretty-bytes": "^6.1.0",
"plausible-tracker": "^0.3.8",
"pretty-bytes": "^6.1.1",
"prismjs": "^1.29.0",
"svelte-confetti": "^1.2.2",
"svelte-confetti": "^1.3.0",
"tippy.js": "^6.3.7",
"web-vitals": "^3.1.1"
"web-vitals": "^3.4.0"
},
"devDependencies": {
"@playwright/test": "^1.31.2",
"@sveltejs/adapter-static": "^2.0.2",
"@sveltejs/kit": "^1.15.4",
"@sveltejs/vite-plugin-svelte": "^2.0.4",
"@playwright/test": "^1.37.1",
"@sveltejs/adapter-static": "^2.0.3",
"@sveltejs/kit": "^1.24.0",
"@sveltejs/vite-plugin-svelte": "^2.4.5",
"@testing-library/dom": "^9.0.1",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/svelte": "^3.2.2",
"@testing-library/svelte": "^4.0.3",
"@testing-library/user-event": "^14.4.3",
"@types/deep-equal": "^1.0.1",
"@types/prismjs": "^1.26.0",
"@typescript-eslint/eslint-plugin": "^5.56.0",
"@typescript-eslint/parser": "^5.56.0",
"@typescript-eslint/eslint-plugin": "^6.5.0",
"@typescript-eslint/parser": "^6.5.0",
"@vitest/ui": "^0.29.7",
"eslint": "^8.36.0",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-svelte": "^2.33.2",
"eslint-plugin-svelte3": "^4.0.0",
"jsdom": "^21.1.1",
"eslint": "^8.48.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-svelte": "^2.33.0",
"jsdom": "^22.1.0",
"kleur": "^4.1.5",
"pre-commit": "^1.2.2",
"prettier": "^2.8.6",
"prettier-plugin-svelte": "^2.9.0",
"sass": "^1.59.3",
"svelte": "^3.57.0",
"svelte-check": "^3.1.4",
"prettier": "^3.0.3",
"prettier-plugin-svelte": "^3.0.3",
"sass": "^1.66.1",
"svelte": "^4.2.0",
"svelte-check": "^3.5.1",
"svelte-jester": "^2.3.2",
"svelte-preprocess": "^5.0.3",
"tslib": "^2.5.0",
"typescript": "^5.0.2",
"vite": "^4.2.1",
"svelte-preprocess": "^5.0.4",
"tslib": "^2.6.2",
"typescript": "^5.2.2",
"vite": "^4.4.9",
"vitest": "^0.29.7"
},
"type": "module",
+43 -16
View File
@@ -1,26 +1,53 @@
import Analytics, { type AnalyticsPlugin } from 'analytics';
import Plausible from 'plausible-tracker';
import { get } from 'svelte/store';
import { page } from '$app/stores';
import { user } from '$lib/stores/user';
import { ENV, MODE, VARS, isCloud } from '$lib/system';
import googleAnalytics from '@analytics/google-analytics';
import { AppwriteException } from '@appwrite.io/console';
import googleTagManager from '@analytics/google-tag-manager';
import Analytics from 'analytics';
import { get } from 'svelte/store';
import { browser } from '$app/environment';
function plausible(domain: string): AnalyticsPlugin {
if (!browser) return { name: 'analytics-plugin-plausible' };
const instance = Plausible({
domain
});
return {
name: 'analytics-plugin-plausible',
page: ({ payload }) => {
instance.trackPageview({
url: payload.properties.path,
referrer: payload.properties.referrer,
deviceWidth: payload.properties.width
});
},
track: ({ payload }) => {
instance.trackEvent(
payload.event,
{
props: payload.properties
},
{
url: payload.properties.path,
deviceWidth: payload.properties.width
}
);
},
loaded: () => true
};
}
const PLAUSIBLE_DOMAINS = {
CLOUD: 'cloud.appwrite.io',
GLOBAL: 'console.appwrite',
SELF_HOSTED: 'self-hosted.appwrite'
};
const analytics = Analytics({
app: 'appwrite',
plugins: [
googleAnalytics({
measurementIds: [VARS.GOOGLE_ANALYTICS || 'G-R4YJ9JN8L4']
}),
...(isCloud
? [
googleTagManager({
containerId: [VARS.GOOGLE_TAG || 'GTM-P3T9TBV']
})
]
: [])
]
plugins: [plausible(isCloud ? PLAUSIBLE_DOMAINS.CLOUD : PLAUSIBLE_DOMAINS.SELF_HOSTED)]
});
export function trackEvent(name: string, data: object = null): void {
+1 -1
View File
@@ -198,7 +198,7 @@ export const commandCenterKeyDownHandler = derived(
const commandKeyCodes = keys?.map((key) => key.toUpperCase().charCodeAt(0));
const allKeysPressed = commandKeyCodes
? recentKeyCodes.join('').includes(commandKeyCodes.join(''))
? recentKeyCodes.join(',').includes(commandKeyCodes.join(','))
: false;
if (allKeysPressed && isMetaPressed && isShiftPressed && isAltPressed) {
+7 -3
View File
@@ -2,13 +2,13 @@
import { trackEvent } from '$lib/actions/analytics';
import { InnerModal } from '$lib/components';
import { InputId } from '$lib/elements/forms';
import { InputProjectId } from '$lib/elements/forms';
export let show = false;
export let name: string;
export let id: string;
export let autofocus = true;
export let fullWidth = false;
export let isProject = false;
$: if (!show) {
id = null;
}
@@ -29,7 +29,11 @@
</svelte:fragment>
<svelte:fragment slot="content">
<div class="form">
<InputId bind:value={id} {autofocus} />
{#if isProject}
<InputProjectId bind:value={id} {autofocus} />
{:else}
<InputId bind:value={id} {autofocus} />
{/if}
</div>
</svelte:fragment>
</InnerModal>
+2 -2
View File
@@ -119,7 +119,7 @@
<p>There are no teams that match your search.</p>
</div>
<div class="u-flex u-gap-16 common-section u-main-center">
<Button external href="https://appwrite.io/docs/client/teams" text
<Button external href="https://appwrite.io/docs/products/auth/teams" text
>Documentation</Button>
<Button secondary on:click={() => (search = '')}>Clear search</Button>
</div>
@@ -134,7 +134,7 @@
</p>
<p class="text u-line-height-1-5">
Need a hand? Learn more in our <a
href="https://appwrite.io/docs/client/teams"
href="https://appwrite.io/docs/products/auth/teams"
target="_blank"
rel="noopener noreferrer">
documentation</a
+2 -2
View File
@@ -138,7 +138,7 @@
<p>There are no Users that match your search.</p>
</div>
<div class="u-flex u-gap-16 common-section u-main-center">
<Button external href="https://appwrite.io/docs/server/users" text
<Button external href="https://appwrite.io/docs/products/auth/accounts" text
>Documentation</Button>
<Button secondary on:click={() => (search = '')}>Clear search</Button>
</div>
@@ -153,7 +153,7 @@
</p>
<p class="text u-line-height-1-5">
Need a hand? Learn more in our <a
href="https://appwrite.io/docs/server/users"
href="https://appwrite.io/docs/products/auth/quick-start"
target="_blank"
rel="noopener noreferrer">
documentation</a
+1 -1
View File
@@ -18,5 +18,5 @@
{#if status}
<span class="status-icon" />
{/if}
<span class="text"><slot /></span>
<span class="text" data-private><slot /></span>
</div>
+1
View File
@@ -26,3 +26,4 @@ export { default as InputId } from './inputId.svelte';
export { default as InputSecret } from './inputSecret.svelte';
export { default as Helper } from './helper.svelte';
export { default as Label } from './label.svelte';
export { default as InputProjectId } from './inputProjectId.svelte';
+1 -1
View File
@@ -18,7 +18,7 @@
let element: HTMLInputElement;
let error: string;
const pattern = String.raw`^[^]+\s+[^]+\s+[^]+\s+[^]+\s+[^]+`;
const pattern = String.raw`^.*\s+.*\s+.*\s+.*\s+.*`;
onMount(() => {
if (element && autofocus) {
@@ -0,0 +1,59 @@
<script lang="ts">
import { onMount } from 'svelte';
import { FormItem } from '.';
import TextCounter from './textCounter.svelte';
export let value = '';
export let autofocus = true;
let element: HTMLInputElement;
let icon = 'info';
const pattern = String.raw`^[a-z0-9][a-z0-9\-]*$`;
onMount(() => {
if (element && autofocus) {
element.focus();
}
});
const handleInvalid = (event: Event) => {
event.preventDefault();
if (element.validity.patternMismatch) {
icon = 'exclamation';
return;
}
};
$: if (value) {
icon = 'info';
}
</script>
<FormItem>
<div class="input-text-wrapper">
<input
id="id"
placeholder="Enter ID"
maxlength={36}
{pattern}
autocomplete="off"
type="text"
class="input-text"
bind:value
bind:this={element}
on:invalid={handleInvalid} />
<TextCounter count={value?.length ?? 0} max={36} />
</div>
</FormItem>
<div
class="u-flex u-gap-4 u-margin-block-start-8 u-small"
class:u-color-text-warning={icon === 'exclamation'}>
<span
class:icon-info={icon === 'info'}
class:icon-exclamation={icon === 'exclamation'}
class="u-cross-center u-line-height-1 u-color-text-gray"
aria-hidden="true" />
<span class="text u-line-height-1-5">
Allowed characters: lowercase alphanumeric and non-leading hyphen
</span>
</div>
-22
View File
@@ -1,22 +0,0 @@
<svg width="215" height="19" viewBox="0 0 215 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.82529 15.1522H2.60847L1.64748 17.8121H6.10352e-05L4.32453 5.9198H6.12639L10.4337 17.8121H8.78628L7.82529 15.1522ZM7.37911 13.8823L5.21688 7.84179L3.05464 13.8823H7.37911Z" fill="white"/>
<path d="M23.7474 9.35192C23.7474 10.3472 23.4041 11.1767 22.7177 11.8402C22.0427 12.4923 21.0074 12.8184 19.6117 12.8184H17.3121V17.8121H15.7505V5.85116H19.6117C20.9616 5.85116 21.9855 6.17721 22.6834 6.82931C23.3927 7.48141 23.7474 8.32228 23.7474 9.35192ZM19.6117 11.5313C20.4811 11.5313 21.1218 11.3425 21.5336 10.965C21.9455 10.5875 22.1514 10.0498 22.1514 9.35192C22.1514 7.87611 21.3048 7.1382 19.6117 7.1382H17.3121V11.5313H19.6117Z" fill="white"/>
<path d="M37.1172 9.35192C37.1172 10.3472 36.774 11.1767 36.0876 11.8402C35.4126 12.4923 34.3772 12.8184 32.9815 12.8184H30.682V17.8121H29.1204V5.85116H32.9815C34.3315 5.85116 35.3554 6.17721 36.0532 6.82931C36.7625 7.48141 37.1172 8.32228 37.1172 9.35192ZM32.9815 11.5313C33.851 11.5313 34.4916 11.3425 34.9035 10.965C35.3153 10.5875 35.5213 10.0498 35.5213 9.35192C35.5213 7.87611 34.6747 7.1382 32.9815 7.1382H30.682V11.5313H32.9815Z" fill="white"/>
<path d="M57.5229 5.85116L54.0564 17.8121H52.306L49.526 8.185L46.6431 17.8121L44.9098 17.8292L41.5635 5.85116H43.2281L45.8365 15.9931L48.7195 5.85116H50.4699L53.2156 15.9587L55.8411 5.85116H57.5229Z" fill="white"/>
<path d="M68.9619 17.8121L66.1132 12.9213H64.2255V17.8121H62.6639V5.85116H66.5251C67.4288 5.85116 68.1896 6.0056 68.8074 6.31449C69.4366 6.62338 69.9057 7.04096 70.2146 7.56722C70.5235 8.09347 70.6779 8.69409 70.6779 9.36908C70.6779 10.1928 70.4377 10.9192 69.9572 11.5485C69.4881 12.1777 68.7788 12.5953 67.8293 12.8012L70.8324 17.8121H68.9619ZM64.2255 11.6686H66.5251C67.3717 11.6686 68.0066 11.4627 68.4299 11.0508C68.8532 10.6275 69.0648 10.0669 69.0648 9.36908C69.0648 8.65977 68.8532 8.11063 68.4299 7.72166C68.018 7.33269 67.3831 7.1382 66.5251 7.1382H64.2255V11.6686Z" fill="white"/>
<path d="M78.0981 5.85116V17.8121H76.5365V5.85116H78.0981Z" fill="white"/>
<path d="M91.5536 5.85116V7.12104H88.2931V17.8121H86.7315V7.12104H83.4538V5.85116H91.5536Z" fill="white"/>
<path d="M98.4696 7.12104V11.1195H102.828V12.4065H98.4696V16.525H103.343V17.8121H96.908V5.834H103.343V7.12104H98.4696Z" fill="white"/>
<path d="M108.383 11.7716C108.383 10.5818 108.641 9.52352 109.155 8.59685C109.67 7.65874 110.385 6.93228 111.3 6.41746C112.227 5.8912 113.274 5.62807 114.441 5.62807C115.871 5.62807 117.095 6.0056 118.113 6.76067C119.131 7.51573 119.812 8.54537 120.155 9.84957H116.929C116.689 9.3462 116.346 8.96294 115.9 8.69981C115.465 8.43669 114.967 8.30512 114.407 8.30512C113.503 8.30512 112.771 8.61973 112.21 9.24895C111.649 9.87817 111.369 10.719 111.369 11.7716C111.369 12.8241 111.649 13.6649 112.21 14.2942C112.771 14.9234 113.503 15.238 114.407 15.238C114.967 15.238 115.465 15.1064 115.9 14.8433C116.346 14.5802 116.689 14.1969 116.929 13.6935H120.155C119.812 14.9977 119.131 16.0274 118.113 16.7824C117.095 17.5261 115.871 17.8979 114.441 17.8979C113.274 17.8979 112.227 17.6405 111.3 17.1257C110.385 16.5994 109.67 15.8729 109.155 14.9463C108.641 14.0196 108.383 12.9614 108.383 11.7716Z" fill="white"/>
<path d="M128.319 15.5469H132.163V17.8121H125.385V5.76536H128.319V15.5469Z" fill="white"/>
<path d="M142.692 17.9322C141.559 17.9322 140.518 17.6691 139.569 17.1428C138.631 16.6166 137.881 15.8844 137.321 14.9463C136.772 13.9967 136.497 12.9328 136.497 11.7544C136.497 10.576 136.772 9.5178 137.321 8.57969C137.881 7.64158 138.631 6.90939 139.569 6.38314C140.518 5.85688 141.559 5.59375 142.692 5.59375C143.825 5.59375 144.86 5.85688 145.798 6.38314C146.748 6.90939 147.491 7.64158 148.029 8.57969C148.578 9.5178 148.853 10.576 148.853 11.7544C148.853 12.9328 148.578 13.9967 148.029 14.9463C147.48 15.8844 146.736 16.6166 145.798 17.1428C144.86 17.6691 143.825 17.9322 142.692 17.9322ZM142.692 15.2552C143.653 15.2552 144.42 14.9348 144.992 14.2942C145.575 13.6535 145.867 12.8069 145.867 11.7544C145.867 10.6904 145.575 9.84385 144.992 9.21463C144.42 8.57397 143.653 8.25364 142.692 8.25364C141.72 8.25364 140.942 8.56825 140.358 9.19747C139.786 9.82669 139.5 10.679 139.5 11.7544C139.5 12.8184 139.786 13.6707 140.358 14.3113C140.942 14.9405 141.72 15.2552 142.692 15.2552Z" fill="white"/>
<path d="M156.8 5.76536V12.9728C156.8 13.6935 156.978 14.2484 157.332 14.6374C157.687 15.0263 158.207 15.2208 158.894 15.2208C159.58 15.2208 160.107 15.0263 160.473 14.6374C160.839 14.2484 161.022 13.6935 161.022 12.9728V5.76536H163.956V12.9556C163.956 14.031 163.727 14.9405 163.27 15.6842C162.812 16.4278 162.194 16.9884 161.416 17.3659C160.65 17.7434 159.792 17.9322 158.842 17.9322C157.893 17.9322 157.041 17.7492 156.285 17.3831C155.542 17.0055 154.953 16.445 154.518 15.7013C154.083 14.9463 153.866 14.031 153.866 12.9556V5.76536H156.8Z" fill="white"/>
<path d="M173.962 5.76536C175.232 5.76536 176.342 6.01704 177.291 6.52042C178.241 7.0238 178.973 7.7331 179.488 8.64833C180.014 9.55212 180.277 10.5989 180.277 11.7887C180.277 12.9671 180.014 14.0139 179.488 14.9291C178.973 15.8443 178.235 16.5536 177.274 17.057C176.325 17.5604 175.221 17.8121 173.962 17.8121H169.449V5.76536H173.962ZM173.773 15.2723C174.883 15.2723 175.747 14.9691 176.365 14.3628C176.982 13.7565 177.291 12.8984 177.291 11.7887C177.291 10.679 176.982 9.81525 176.365 9.19747C175.747 8.57969 174.883 8.2708 173.773 8.2708H172.383V15.2723H173.773Z" fill="white"/>
<path d="M195.974 18.1164C193.085 18.1164 190.743 15.7507 190.743 12.8325C190.743 10.1024 192.792 7.85585 195.422 7.57752C195.294 7.08627 195.226 6.57056 195.226 6.03881C195.226 2.70367 197.903 0 201.205 0C204.013 0 206.369 1.95563 207.011 4.59213C207.311 4.55057 207.618 4.5291 207.931 4.5291C211.645 4.5291 214.656 7.57073 214.656 11.3228C214.656 15.0748 211.645 18.1164 207.931 18.1164H195.974Z" fill="url(#paint0_linear_511_23621)"/>
<defs>
<linearGradient id="paint0_linear_511_23621" x1="202.699" y1="0" x2="202.699" y2="23.7487" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="white" stop-opacity="0.7"/>
</linearGradient>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 6.0 KiB

-31
View File
@@ -1,31 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 18 12" fill="none">
<path
d="M6.15638 3.92787C6.14928 3.9455 6.05752 4.30532 5.95902 4.73224C5.85654 5.15904 5.69426 5.83283 5.60268 6.23135C5.4262 6.96159 5.32036 7.44133 5.32036 7.50475C5.32036 7.52232 5.42981 7.53659 5.56369 7.53659H5.80726L5.91647 7.04968C5.98008 6.78523 6.1213 6.1784 6.23406 5.7022C6.347 5.22601 6.48443 4.64746 6.53744 4.41454C6.59033 4.18173 6.64328 3.97029 6.65387 3.9455C6.66446 3.91379 6.60441 3.90332 6.42095 3.90332C6.28334 3.90332 6.16336 3.91379 6.15638 3.92787ZM4.262 5.4552L3.9375 5.80804L4.03287 5.92093C4.08564 5.98435 4.23047 6.14314 4.35383 6.27377L4.57965 6.51343H5.22174L4.91823 6.18544C4.75234 6.00926 4.61479 5.83975 4.61479 5.81869C4.61479 5.79396 4.74181 5.63535 4.89717 5.46591C5.05229 5.29322 5.17932 5.14484 5.17932 5.12727C5.17932 5.11306 5.04531 5.10253 4.88309 5.10253H4.59024L4.262 5.4552ZM6.73131 5.12371C6.73131 5.13437 6.79137 5.20122 6.86538 5.27535C7.14072 5.55051 7.33465 5.78343 7.324 5.8291C7.31708 5.85401 7.1829 6.01967 7.02068 6.19248L6.72794 6.51343H7.05594L7.38399 6.51L7.6837 6.18189C7.84972 5.99861 7.98372 5.83614 7.98372 5.81508C7.98372 5.79751 7.84262 5.63168 7.66614 5.44479L7.34891 5.10253H7.0418C6.86893 5.10253 6.73131 5.11306 6.73131 5.12371Z"
fill="url(#paint0_linear_598_58741)" fill-opacity="0.8" />
<mask id="path-2-inside-1_598_58741" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M8.99832 11.1877C9.8811 11.6997 10.9066 11.9929 12.0006 11.9929C15.3102 11.9929 17.993 9.31022 17.993 6.00105C17.993 2.69188 15.3102 0.00927734 12.0006 0.00927734C10.9071 0.00927734 9.88211 0.302156 8.99959 0.813692C5.36865 -1.31465 0.583686 0.92861 0.0457609 5.26024C-0.218391 7.38758 0.67407 9.49392 2.38612 10.784C4.45312 12.3436 7.03283 12.3191 8.99832 11.1877ZM10.4211 8.08168C10.0732 8.82164 9.54502 9.46011 8.8932 9.94057C8.59484 10.1577 8.26409 10.3462 7.90173 10.4997C6.29455 11.1807 4.44597 10.9525 3.05258 9.901C0.0502737 7.63552 0.626354 2.96986 4.08969 1.50272C5.3555 0.966514 6.77101 0.994119 7.99592 1.54365C7.99533 1.54418 7.99473 1.54471 7.99414 1.54525C9.65279 2.28896 10.821 3.93029 10.8806 5.85103C10.902 6.61658 10.7459 7.38355 10.4211 8.08168Z" />
</mask>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M8.99832 11.1877C9.8811 11.6997 10.9066 11.9929 12.0006 11.9929C15.3102 11.9929 17.993 9.31022 17.993 6.00105C17.993 2.69188 15.3102 0.00927734 12.0006 0.00927734C10.9071 0.00927734 9.88211 0.302156 8.99959 0.813692C5.36865 -1.31465 0.583686 0.92861 0.0457609 5.26024C-0.218391 7.38758 0.67407 9.49392 2.38612 10.784C4.45312 12.3436 7.03283 12.3191 8.99832 11.1877ZM10.4211 8.08168C10.0732 8.82164 9.54502 9.46011 8.8932 9.94057C8.59484 10.1577 8.26409 10.3462 7.90173 10.4997C6.29455 11.1807 4.44597 10.9525 3.05258 9.901C0.0502737 7.63552 0.626354 2.96986 4.08969 1.50272C5.3555 0.966514 6.77101 0.994119 7.99592 1.54365C7.99533 1.54418 7.99473 1.54471 7.99414 1.54525C9.65279 2.28896 10.821 3.93029 10.8806 5.85103C10.902 6.61658 10.7459 7.38355 10.4211 8.08168Z"
fill="url(#paint1_linear_598_58741)" fill-opacity="0.8" />
<path
d="M8.99832 11.1877L9.09866 11.0147L8.9987 10.9567L8.89854 11.0143L8.99832 11.1877ZM8.99959 0.813692L8.89845 0.986235L8.99903 1.04519L9.09989 0.986726L8.99959 0.813692ZM0.0457609 5.26024L-0.152715 5.23559L-0.152715 5.2356L0.0457609 5.26024ZM2.38612 10.784L2.50659 10.6243L2.50648 10.6243L2.38612 10.784ZM8.8932 9.94057L9.01088 10.1023L9.01186 10.1016L8.8932 9.94057ZM10.4211 8.08168L10.6021 8.16678L10.6024 8.16604L10.4211 8.08168ZM7.90173 10.4997L7.82371 10.3155L7.8237 10.3156L7.90173 10.4997ZM3.05258 9.901L3.17305 9.74135L3.17305 9.74135L3.05258 9.901ZM4.08969 1.50272L4.01168 1.31856L4.01168 1.31856L4.08969 1.50272ZM7.99592 1.54365L8.12958 1.69243L8.35825 1.487L8.07778 1.36117L7.99592 1.54365ZM7.99414 1.54525L7.86039 1.39655L7.63195 1.60203L7.91231 1.72774L7.99414 1.54525ZM10.8806 5.85103L11.0806 5.84545L11.0805 5.84483L10.8806 5.85103ZM12.0006 11.7929C10.9428 11.7929 9.95179 11.5095 9.09866 11.0147L8.89798 11.3607C9.81041 11.8899 10.8704 12.1929 12.0006 12.1929V11.7929ZM17.793 6.00105C17.793 9.19975 15.1997 11.7929 12.0006 11.7929V12.1929C15.4206 12.1929 18.193 9.4207 18.193 6.00105H17.793ZM12.0006 0.209277C15.1998 0.209277 17.793 2.80236 17.793 6.00105H18.193C18.193 2.58141 15.4206 -0.190723 12.0006 -0.190723V0.209277ZM9.09989 0.986726C9.95276 0.492375 10.9433 0.209277 12.0006 0.209277V-0.190723C10.8709 -0.190723 9.81146 0.111937 8.8993 0.640658L9.09989 0.986726ZM9.10073 0.641149C5.34805 -1.55855 0.403246 0.758733 -0.152715 5.23559L0.244236 5.28489C0.764126 1.09849 5.38925 -1.07074 8.89845 0.986235L9.10073 0.641149ZM-0.152715 5.2356C-0.425684 7.43394 0.496568 9.61059 2.26576 10.9437L2.50648 10.6243C0.851572 9.37725 -0.011098 7.34121 0.244237 5.28489L-0.152715 5.2356ZM2.26566 10.9436C4.40191 12.5556 7.06895 12.529 9.0981 11.361L8.89854 11.0143C6.99671 12.1091 4.50432 12.1317 2.50659 10.6243L2.26566 10.9436ZM9.01186 10.1016C9.69018 9.60158 10.2399 8.93712 10.6021 8.16678L10.2401 7.99657C9.90647 8.70615 9.39987 9.31865 8.77453 9.77957L9.01186 10.1016ZM8.77552 9.77885C8.48954 9.98696 8.1721 10.168 7.82371 10.3155L7.97974 10.6839C8.35607 10.5244 8.70014 10.3284 9.01088 10.1023L8.77552 9.77885ZM7.8237 10.3156C6.28232 10.9686 4.5094 10.7498 3.17305 9.74135L2.93211 10.0606C4.38253 11.1551 6.30678 11.3927 7.97975 10.6839L7.8237 10.3156ZM3.17305 9.74135C0.293644 7.56861 0.846137 3.09396 4.16771 1.68687L4.01168 1.31856C0.406571 2.84575 -0.193096 7.70243 2.93211 10.0606L3.17305 9.74135ZM4.16771 1.68688C5.38167 1.17263 6.73925 1.19908 7.91405 1.72613L8.07778 1.36117C6.80276 0.78916 5.32933 0.760396 4.01168 1.31856L4.16771 1.68688ZM8.12789 1.69394C8.12849 1.69341 8.12868 1.69324 8.12958 1.69243L7.86226 1.39487C7.86198 1.39512 7.86098 1.39602 7.86039 1.39655L8.12789 1.69394ZM11.0805 5.84483C11.0185 3.845 9.80209 2.13672 8.07597 1.36275L7.91231 1.72774C9.50349 2.4412 10.6236 4.01559 10.6807 5.85723L11.0805 5.84483ZM10.6807 5.85661C10.7012 6.59148 10.5514 7.32762 10.2398 7.99731L10.6024 8.16604C10.9405 7.43947 11.1028 6.64168 11.0806 5.84545L10.6807 5.85661Z"
fill="url(#paint2_linear_598_58741)" mask="url(#path-2-inside-1_598_58741)" />
<defs>
<linearGradient id="paint0_linear_598_58741" x1="5.96061" y1="2.08669" x2="5.96061" y2="8.29351"
gradientUnits="userSpaceOnUse">
<stop stop-color="#F02E65" />
<stop offset="1" stop-color="#F02E65" stop-opacity="0.48" />
</linearGradient>
<linearGradient id="paint1_linear_598_58741" x1="12.9936" y1="-5.98253" x2="12.9936" y2="14.4895"
gradientUnits="userSpaceOnUse">
<stop stop-color="#F02E65" />
<stop offset="1" stop-color="#F02E65" stop-opacity="0.35" />
</linearGradient>
<linearGradient id="paint2_linear_598_58741" x1="23.5" y1="4.5" x2="-13" y2="13.5" gradientUnits="userSpaceOnUse">
<stop stop-color="#F02E65" stop-opacity="0.57" />
<stop offset="1" stop-color="white" stop-opacity="0" />
</linearGradient>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 6.9 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.1 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.1 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.1 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.0 KiB

+2 -2
View File
@@ -25,12 +25,12 @@
</div>
</li>
<li class="inline-links-item">
<a href="https://appwrite.io/policy/terms" target="_blank" rel="noreferrer">
<a href="https://appwrite.io/terms" target="_blank" rel="noreferrer">
<span class="text">Terms</span>
</a>
</li>
<li class="inline-links-item">
<a href="https://appwrite.io/policy/privacy" target="_blank" rel="noreferrer">
<a href="https://appwrite.io/privacy" target="_blank" rel="noreferrer">
<span class="text">Privacy</span>
</a>
</li>
+23 -12
View File
@@ -19,6 +19,7 @@
import { newOrgModal, organization, organizationList } from '$lib/stores/organization';
import { sdk } from '$lib/stores/sdk';
import { user } from '$lib/stores/user';
import { isCloud } from '$lib/system';
import { slide } from 'svelte/transition';
let showDropdown = false;
@@ -65,15 +66,25 @@
<svelte:window on:click={onBlur} />
<a
class="logo"
href={$organization ? `${base}/console/organization-${$organization.$id}` : `${base}/console`}>
<img
src={$app.themeInUse == 'dark' ? AppwriteLogoDark : AppwriteLogoLight}
width="120"
height="22"
alt="Appwrite" />
</a>
<div class="logo u-inline-flex u-gap-16 u-cross-center">
<a
href={$organization
? `${base}/console/organization-${$organization.$id}`
: `${base}/console`}>
<img
src={$app.themeInUse == 'dark' ? AppwriteLogoDark : AppwriteLogoLight}
width="120"
height="22"
alt="Appwrite" />
</a>
{#if isCloud}
<div
class="tag eyebrow-heading-3"
style="--p-tag-height: 1.785rem; --p-tag-content-height: 1.15rem; padding-block: 0.25rem;">
<span class="text u-x-small" style="font-weight: 500">Beta</span>
</div>
{/if}
</div>
{#if $page.data.breadcrumbs}
<svelte:component this={$page.data.breadcrumbs} />
@@ -95,7 +106,7 @@
</svelte:fragment>
</DropList>
<a
href="https://github.com/appwrite/appwrite/issues/new/choose"
href="https://appwrite.io/discord"
target="_blank"
rel="noopener noreferrer"
class="button is-small is-text">
@@ -122,9 +133,9 @@
<button class="user-profile-button" on:click={() => (showDropdown = !showDropdown)}>
<AvatarInitials size={40} name={$user.name} />
<span class="user-profile-info is-only-desktop">
<span class="name">{$user.name}</span>
<span class="name" data-private>{$user.name}</span>
{#if $organization}
<span class="title">{$organization.name}</span>
<span class="title" data-private>{$organization.name}</span>
{/if}
</span>
<span
+5 -5
View File
@@ -207,7 +207,7 @@
use
<b>context.log()</b>.
<a
href="https://appwrite.io/docs/functions-develop#logging"
href="https://appwrite.io/docs/products/functions/development#logging"
target="_blank"
rel="noopener noreferrer"
class="link">Learn more</a
@@ -245,7 +245,7 @@
header data in the Logs tab, use
<b>context.log()</b>.
<a
href="https://appwrite.io/docs/functions-develop#logging"
href="https://appwrite.io/docs/products/functions/development#logging"
target="_blank"
rel="noopener noreferrer"
class="link">Learn more</a
@@ -257,7 +257,7 @@
and privacy. To display body data in the Logs tab, use
<b>context.log()</b>.
<a
href="https://appwrite.io/docs/functions-develop#logging"
href="https://appwrite.io/docs/products/functions/development#logging"
target="_blank"
rel="noopener noreferrer"
class="link">Learn more</a
@@ -335,7 +335,7 @@
header data in the Logs tab, use
<b>context.log()</b>.
<a
href="https://appwrite.io/docs/functions-develop#logging"
href="https://appwrite.io/docs/products/functions/development#logging"
target="_blank"
rel="noopener noreferrer"
class="link">Learn more</a
@@ -347,7 +347,7 @@
and privacy. To display body data in the Logs tab, use
<b>context.log()</b>.
<a
href="https://appwrite.io/docs/functions-develop#logging"
href="https://appwrite.io/docs/products/functions/development#logging"
target="_blank"
rel="noopener noreferrer"
class="link">Learn more</a
+52 -2
View File
@@ -5,6 +5,7 @@
import LoginLight from '$lib/images/login/login-light-mode.png';
import { app } from '$lib/stores/app';
import { user } from '$lib/stores/user';
import { isCloud } from '$lib/system';
export let imgLight = LoginLight;
export let imgDark = LoginDark;
@@ -14,7 +15,7 @@
<section
class="u-flex u-flex-vertical"
style:--url={`url(${$app.themeInUse === 'dark' ? imgDark : imgLight})`}>
<div class="logo">
<div class="logo u-flex u-gap-16">
<a href={user ? '/console' : '/'}>
{#if $app.themeInUse === 'dark'}
<img
@@ -30,6 +31,9 @@
alt="Appwrite Logo" />
{/if}
</a>
{#if isCloud}
<span class="aw-badges aw-eyebrow">Cloud Beta</span>
{/if}
</div>
<div class="u-flex u-stretch" />
@@ -76,7 +80,7 @@
font-weight: 400;
line-height: 100%; /* 80px */
letter-spacing: -1.6px;
backdrop-filter: blur(8px);
backdrop-filter: blur(0.5 rem);
.underscore {
-webkit-text-fill-color: #f02e65;
}
@@ -127,4 +131,50 @@
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.aw-eyebrow {
font-family: 'Source Code Pro', monospace;
line-height: 0.9rem;
font-size: 0.78rem;
letter-spacing: 0.08em;
font-weight: 400;
text-transform: uppercase;
}
.aw-badges {
--p-badges-shadow-bg-color: #f2c8d6;
--p-badges-shadow-border-color: #f69db7;
--p-badges-shadowopacity: 0.4;
align-self: center;
color: hsl(var(--color-neutral-0));
padding-block: 0.375rem;
padding-inline: 0.75rem;
border-radius: 0.375rem;
background: radial-gradient(
98.13% 199.7% at 98.13% 100%,
#fe6947 0%,
#fd366e 41.6%,
#fd366e 100%
);
-webkit-backdrop-filter: blur(2.5rem);
backdrop-filter: blur(2.5rem);
box-shadow:
0.1875rem 0.1875rem var(--p-badges-shadow-bg-color),
0.25rem 0.1875rem var(--p-badges-shadow-border-color),
0.1875rem 0.25rem var(--p-badges-shadow-border-color),
0.125rem 0.1875rem var(--p-badges-shadow-border-color),
0.1875rem 0.125rem var(--p-badges-shadow-border-color);
:global(.theme-dark) & {
--p-badges-shadow-bg-color: #2c2c2f;
--p-badges-shadow-border-color: #39393c;
--p-badges-shadowopacity: 0.13;
}
:global(.theme-light) & {
--p-badges-shadow-bg-color: #f2c8d6;
--p-badges-shadow-border-color: #f69db7;
--p-badges-shadowopacity: 0.4;
}
}
</style>
+1 -1
View File
@@ -178,7 +178,7 @@
{:else}
<Empty
single
href="https://appwrite.io/docs/custom-domains"
href="https://appwrite.io/docs/advanced/platform/custom-domains"
target="domain"
on:click={openWizard} />
{/if}
+2 -2
View File
@@ -54,7 +54,7 @@
In order to continue, set the following record on your DNS provider. DNS records may
take up to 48 hours to propagate. Please retry over the next 48 hours, but if
verification still fails, please <a
href="https://github.com/appwrite/appwrite/issues/new/choose"
href="https://appwrite.io/discord"
target="_blank"
rel="noopener noreferrer">contact support</a
>.
@@ -80,7 +80,7 @@
In order to continue, set the following record on your DNS provider. DNS records may
take up to 48 hours to propagate. Please retry over the next 48 hours, but if
verification still fails, please <a
href="https://github.com/appwrite/appwrite/issues/new/choose"
href="https://appwrite.io/discord"
target="_blank"
rel="noopener noreferrer">contact support</a
>.
+3 -3
View File
@@ -37,7 +37,7 @@
<svelte:fragment slot="title">Add function domain</svelte:fragment>
<svelte:fragment slot="subtitle">
Use your self-owned domain as the endpoint of your Appwrite API. <a
href="https://appwrite.io/docs/custom-domains"
href="https://appwrite.io/docs/advanced/platform/custom-domains"
target="_blank"
rel="noopener noreferrer"
class="link">Learn more</a
@@ -58,7 +58,7 @@
<p>
You can find a list of domain providers and their DNS setting documentation <a
class="link"
href="https://appwrite.io/docs/custom-domains#addCNAME"
href="https://appwrite.io/docs/advanced/platform/custom-domains#cname-record"
target="_blank"
rel="noreferrer">here</a
>. If your domain provider isn't listed, please contact us, and we'll include their
@@ -75,7 +75,7 @@
domain.
<svelte:fragment slot="buttons">
<Button
href="https://appwrite.io/docs/environment-variables#vcs_(version_control_system)"
href="https://appwrite.io/docs/advanced/self-hosting/functions#git"
external
text>
Learn more
+27 -20
View File
@@ -8,7 +8,7 @@ const TemplateRuntimes = {
PHP: { name: 'php', versions: ['8.2', '8.1', '8.0'] },
RUBY: { name: 'ruby', versions: ['3.2', '3.1', '3.0'] },
PYTHON: { name: 'python', versions: ['3.11', '3.10', '3.9', '3.8'] },
DART: { name: 'dart', versions: ['3.0', '2.19', '2.18', '2.17', '2.16', '2.16'] },
DART: { name: 'dart', versions: ['3.1', '3.0', '2.19', '2.18', '2.17', '2.16', '2.16'] },
BUN: { name: 'bun', versions: ['1.0'] }
};
@@ -69,7 +69,7 @@ export const marketplace: MarketplaceTemplate[] = [
variables: [
{
name: 'APPWRITE_API_KEY',
description: `The API Key to talk to Appwrite backend APIs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/getting-started-for-server">Learn more</a>.`,
description: `The API Key to authenticate against Appwrite's Server APIs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/advanced/platform/api-keys">Learn more</a>.`,
value: '',
placeholder: 'd1efb...aec35',
required: false,
@@ -363,7 +363,7 @@ export const marketplace: MarketplaceTemplate[] = [
variables: [
{
name: 'APPWRITE_API_KEY',
description: `The API Key to talk to Appwrite backend APIs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/getting-started-for-server">Learn more</a>.`,
description: `The API Key to authenticate against Appwrite's Server APIs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/advanced/platform/api-keys">Learn more</a>.`,
value: '',
placeholder: 'd1efb...aec35',
required: true,
@@ -371,7 +371,7 @@ export const marketplace: MarketplaceTemplate[] = [
},
{
name: 'APPWRITE_ENDPOINT',
description: `The URL endpoint of the Appwrite server. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/getting-started-for-server">Learn more</a>.`,
description: `The API endpoint of the Appwrite. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/references#api">Learn more</a>.`,
value: 'https://cloud.appwrite.io/v1',
placeholder: 'https://cloud.appwrite.io/v1',
required: false,
@@ -379,7 +379,7 @@ export const marketplace: MarketplaceTemplate[] = [
},
{
name: 'APPWRITE_DATABASE_ID',
description: `The ID of the database to store the short URLs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/databases">Learn more</a>.`,
description: `The ID of the database to store the short URLs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/products/databases/databases">Learn more</a>.`,
value: 'urlShortener',
placeholder: 'urlShortener',
required: false,
@@ -387,7 +387,7 @@ export const marketplace: MarketplaceTemplate[] = [
},
{
name: 'APPWRITE_COLLECTION_ID',
description: `The ID of the collection to store the short URLs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/collections">Learn more</a>.`,
description: `The ID of the collection to store the short URLs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/products/databases/collections">Learn more</a>.`,
value: 'urls',
placeholder: 'urls',
required: false,
@@ -441,7 +441,7 @@ export const marketplace: MarketplaceTemplate[] = [
variables: [
{
name: 'APPWRITE_API_KEY',
description: `The API Key to talk to Appwrite backend APIs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/getting-started-for-server">Learn more</a>.`,
description: `The API Key to authenticate against Appwrite's Server APIs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/advanced/platform/api-keys">Learn more</a>.`,
value: '',
placeholder: 'd1efb...aec35',
required: true,
@@ -449,18 +449,25 @@ export const marketplace: MarketplaceTemplate[] = [
},
{
name: 'APPWRITE_DATABASE_ID',
description: `The ID of the Appwrite database that contains the collection to sync. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/databases">Learn more</a>.`,
description: `The ID of the Appwrite database that contains the collection to sync. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/products/databases/databases">Learn more</a>.`,
placeholder: '64a55...7b912',
required: true,
type: 'text'
},
{
name: 'APPWRITE_COLLECTION_ID',
description: `The ID of the collection in the Appwrite database to sync. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/collections">Learn more</a>.`,
description: `The ID of the collection in the Appwrite database to sync. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/products/databases/collections">Learn more</a>.`,
placeholder: '7c3e8...2a9f1',
required: true,
type: 'text'
},
{
name: 'ALGOLIA_APP_ID',
description: `The ID of the application in Algolia. <a class="u-bold" target="_blank" href="https://support.algolia.com/hc/en-us/articles/11040113398673-Where-can-I-find-my-application-ID-and-the-index-name-">Learn more</a>.`,
placeholder: 'OFCNCOG2CU',
required: true,
type: 'text'
},
{
name: 'ALGOLIA_ADMIN_API_KEY',
description: `The admin API Key for your Algolia service. <a class="u-bold" target="_blank" href="https://www.algolia.com/doc/guides/security/api-keys/">Learn more</a>.`,
@@ -484,7 +491,7 @@ export const marketplace: MarketplaceTemplate[] = [
},
{
name: 'APPWRITE_ENDPOINT',
description: `The URL endpoint of the Appwrite server. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/getting-started-for-server">Learn more</a>.`,
description: `The URL endpoint of the Appwrite server. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/references#api">Learn more</a>.`,
value: 'https://cloud.appwrite.io/v1',
placeholder: 'https://cloud.appwrite.io/v1',
required: false,
@@ -518,7 +525,7 @@ export const marketplace: MarketplaceTemplate[] = [
variables: [
{
name: 'APPWRITE_API_KEY',
description: `The API Key to talk to Appwrite backend APIs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/getting-started-for-server">Learn more</a>.`,
description: `The API Key to authenticate against Appwrite's Server APIs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/advanced/platform/api-keys">Learn more</a>.`,
value: '',
placeholder: 'd1efb...aec35',
required: true,
@@ -526,14 +533,14 @@ export const marketplace: MarketplaceTemplate[] = [
},
{
name: 'APPWRITE_DATABASE_ID',
description: `The ID of the Appwrite database that contains the collection to sync. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/databases">Learn more</a>.`,
description: `The ID of the Appwrite database that contains the collection to sync. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/products/databases/databases">Learn more</a>.`,
placeholder: '64a55...7b912',
required: true,
type: 'text'
},
{
name: 'APPWRITE_COLLECTION_ID',
description: `The ID of the collection in the Appwrite database to sync. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/collections">Learn more</a>.`,
description: `The ID of the collection in the Appwrite database to sync. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/products/databases/collections">Learn more</a>.`,
placeholder: '7c3e8...2a9f1',
required: true,
type: 'text'
@@ -568,7 +575,7 @@ export const marketplace: MarketplaceTemplate[] = [
},
{
name: 'APPWRITE_ENDPOINT',
description: `The URL endpoint of the Appwrite server. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/getting-started-for-server">Learn more</a>.`,
description: `The URL endpoint of the Appwrite server. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/references#api">Learn more</a>.`,
value: 'https://cloud.appwrite.io/v1',
placeholder: 'https://cloud.appwrite.io/v1',
required: false,
@@ -794,7 +801,7 @@ export const marketplace: MarketplaceTemplate[] = [
variables: [
{
name: 'APPWRITE_API_KEY',
description: `The API Key to talk to Appwrite backend APIs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/getting-started-for-server">Learn more</a>.`,
description: `The API Key to authenticate against Appwrite's Server APIs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/advanced/platform/api-keys">Learn more</a>.`,
value: '',
placeholder: 'd1efb...aec35',
required: true,
@@ -802,7 +809,7 @@ export const marketplace: MarketplaceTemplate[] = [
},
{
name: 'APPWRITE_ENDPOINT',
description: `The URL endpoint of the Appwrite server. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/getting-started-for-server">Learn more</a>.`,
description: `The URL endpoint of the Appwrite server. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/references#api">Learn more</a>.`,
value: 'https://cloud.appwrite.io/v1',
placeholder: 'https://cloud.appwrite.io/v1',
required: false,
@@ -850,7 +857,7 @@ export const marketplace: MarketplaceTemplate[] = [
variables: [
{
name: 'APPWRITE_API_KEY',
description: `The API Key to talk to Appwrite backend APIs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/getting-started-for-server">Learn more</a>.`,
description: `The API Key to authenticate against Appwrite's Server APIs. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/advanced/platform/api-keys">Learn more</a>.`,
value: '',
placeholder: 'd1efb...aec35',
required: true,
@@ -858,7 +865,7 @@ export const marketplace: MarketplaceTemplate[] = [
},
{
name: 'APPWRITE_ENDPOINT',
description: `The URL endpoint of the Appwrite server. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/getting-started-for-server">Learn more</a>.`,
description: `The URL endpoint of the Appwrite server. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/references#api">Learn more</a>.`,
value: 'https://cloud.appwrite.io/v1',
placeholder: 'https://cloud.appwrite.io/v1',
required: false,
@@ -880,7 +887,7 @@ export const marketplace: MarketplaceTemplate[] = [
},
{
name: 'APPWRITE_DATABASE_ID',
description: `The ID of the database to store paid orders. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/databases">Learn more</a>.`,
description: `The ID of the database to store paid orders. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/products/databases/databases">Learn more</a>.`,
value: 'orders',
placeholder: 'orders',
required: false,
@@ -888,7 +895,7 @@ export const marketplace: MarketplaceTemplate[] = [
},
{
name: 'APPWRITE_COLLECTION_ID',
description: `The ID of the collection to store paid orders. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/collections">Learn more</a>.`,
description: `The ID of the collection to store paid orders. <a class="u-bold" target="_blank" href="https://appwrite.io/docs/products/databases/collections">Learn more</a>.`,
value: 'orders',
placeholder: 'orders',
required: false,
+2 -5
View File
@@ -8,16 +8,13 @@ export const VARS = {
GROWTH_ENDPOINT: import.meta.env?.VITE_APPWRITE_GROWTH_ENDPOINT?.toString() as
| string
| undefined,
CONSOLE_MODE: import.meta.env?.VITE_CONSOLE_MODE?.toString() as string | undefined,
VERCEL_ENV: import.meta.env?.VITE_VERCEL_ENV?.toString() as string | undefined,
GOOGLE_ANALYTICS: import.meta.env?.VITE_GA_PROJECT?.toString() as string | undefined,
GOOGLE_TAG: import.meta.env?.VITE_GTM_PROJECT?.toString() as string | undefined
CONSOLE_MODE: import.meta.env?.VITE_CONSOLE_MODE?.toString() as string | undefined
};
export const ENV = {
DEV: import.meta.env.DEV,
PROD: import.meta.env.PROD,
PREVIEW: VARS.VERCEL_ENV === 'preview',
PREVIEW: import.meta.env?.VERCEL === '1',
TEST: !!import.meta.env?.VITEST
};
@@ -20,7 +20,7 @@
disabled={!!$templateConfig.generateKey} />
<Helper type="neutral">
This API key will allow you to interact with the Appwrite server APIs. <a
href="https://appwrite.io/docs/keys"
href="https://appwrite.io/docs/advanced/platform/api-keys"
target="_blank"
rel="noopener noreferrer"
class="link">Learn more</a
+2 -2
View File
@@ -104,7 +104,7 @@
Connect your function to a Git repository or use a pre-made template<br />after
configuring your self-hosted instance. Learn more in our
<a
href="https://appwrite.io/docs/configuration#git"
href="https://appwrite.io/docs/advanced/self-hosting/functions#git"
target="_blank"
rel="noopener noreferrer"
class="link">documentation</a
@@ -271,7 +271,7 @@
on:click={() => wizard.start(CreateManual)}>manually</button>
or using the CLI.
<a
href="https://appwrite.io/docs/functions-deploy"
href="https://appwrite.io/docs/products/functions/deployment"
target="_blank"
rel="noopener noreferrer"
class="link">Learn more</a
@@ -9,7 +9,7 @@
<svelte:fragment slot="subtitle">
Choose who can execute this function using the client API. For more information, check out
the <a
href="https://appwrite.io/docs/permissions"
href="https://appwrite.io/docs/advanced/platform/permissions"
target="_blank"
rel="noopener noreferrer"
class="link">
+1 -1
View File
@@ -25,7 +25,7 @@
<Heading tag="h1" size="1">Missing Redirect URL</Heading>
<p>
Your Magic URL login flow is missing a proper redirect URL. Please check the
<a href="https://appwrite.io/docs/client/account?sdk=web#createMagicURLSession"
<a href="https://appwrite.io/docs/references/cloud/client-web/account#createMagicURLSession"
>Magic URL docs</a>
and send request for new session with a valid redirect URL.
</p>
+1 -1
View File
@@ -38,7 +38,7 @@
Your OAuth login flow is missing a proper redirect URL. Please check the
<a
class="link"
href="https://appwrite.io/docs/client/account?sdk=web#createOAuth2Session"
href="https://appwrite.io/docs/references/cloud/client-web/account#createOAuth2Session"
>OAuth docs</a>
and send request for new session with a valid callback URL.
</p>
+1 -1
View File
@@ -38,7 +38,7 @@
Your OAuth login flow is missing a proper redirect URL. Please check the
<a
class="link"
href="https://appwrite.io/docs/client/account?sdk=web#createOAuth2Session"
href="https://appwrite.io/docs/references/cloud/client-web/account#createOAuth2Session"
>OAuth docs</a>
and send request for new session with a valid callback URL.
</p>
@@ -12,7 +12,7 @@
Select the resources you need to migrate to Appwrite. Some resources can be migrated, but
with limitations. <a
class="link"
href="https://appwrite.io/docs/migrations"
href="https://appwrite.io/docs/advanced/migrations"
target="_blank"
rel="noopener noreferrer">
Learn about which resources are supported</a
+2 -2
View File
@@ -90,7 +90,7 @@
{
label: 'Contact support',
callback: () => {
window.open('https://github.com/appwrite/appwrite/issues/new/choose', '_blank');
window.open('https://appwrite.io/discord', '_blank');
},
group: 'help',
icon: 'question-mark-circle'
@@ -145,7 +145,7 @@
},
group: 'security',
icon: 'pencil'
} as const)
}) as const
),
// Settings
{
+1 -1
View File
@@ -167,7 +167,7 @@
<AvatarInitials size={48} name={$user.name} />
</svelte:fragment>
<svelte:fragment slot="title">
<h6 class="u-bold u-trim-1">{$user.name}</h6>
<h6 class="u-bold u-trim-1" data-private>{$user.name}</h6>
</svelte:fragment>
</BoxAvatar>
</svelte:fragment>
@@ -48,7 +48,7 @@
<Heading tag="h2" size="5">Sessions</Heading>
<Button secondary on:click={logoutAll}>
<span class="text">Logout all sessions</span>
<span class="text">Sign out all sessions</span>
</Button>
</div>
@@ -100,7 +100,7 @@
</TableCellText>
<TableCellText title="IP">{session.ip}</TableCellText>
<TableCell title="Client">
<Button secondary on:click={() => logout(session)}>Logout</Button>
<Button secondary on:click={() => logout(session)}>Sign out</Button>
</TableCell>
</TableRow>
{/each}
@@ -116,7 +116,7 @@
<Button
external
secondary
href="https://appwrite.io/docs/client/account#accountCreateEmailSession">
href="https://appwrite.io/docs/references/cloud/client-web/account#createEmailSession">
Documentation
</Button>
</div>
+1 -1
View File
@@ -64,7 +64,7 @@
</Pill>
</div>
{:else}
<CustomId bind:show={showCustomId} name="Project" bind:id />
<CustomId bind:show={showCustomId} name="Project" isProject bind:id />
{/if}
<Button fullWidth submit disabled={name === ''} event="create_project">
Create project
@@ -135,35 +135,37 @@
event="project"
on:click={() => (showCreate = true)}>
{#each data.projects.projects as project}
<GridItem1 href={`${base}/console/project-${project.$id}`}>
<svelte:fragment slot="eyebrow">
{project?.platforms?.length ? project?.platforms?.length : 'No'} apps
</svelte:fragment>
<svelte:fragment slot="title">
{project.name}
</svelte:fragment>
{#if allServiceDisabled(project)}
<p>
<span class="icon-pause" aria-hidden="true" /> All services are disabled.
</p>
{/if}
{@const platforms = filterPlatforms(
project.platforms.map((platform) => getPlatformInfo(platform.type))
)}
{#each platforms as platform, i}
{#if i < 3}
<li>
<GridItem1 href={`${base}/console/project-${project.$id}`}>
<svelte:fragment slot="eyebrow">
{project?.platforms?.length ? project?.platforms?.length : 'No'} apps
</svelte:fragment>
<svelte:fragment slot="title">
{project.name}
</svelte:fragment>
{#if allServiceDisabled(project)}
<p>
<span class="icon-pause" aria-hidden="true" /> All services are disabled.
</p>
{/if}
{@const platforms = filterPlatforms(
project.platforms.map((platform) => getPlatformInfo(platform.type))
)}
{#each platforms as platform, i}
{#if i < 3}
<Pill>
<span class={`icon-${platform.icon}`} aria-hidden="true" />
{platform.name}
</Pill>
{/if}
{/each}
{#if platforms?.length > 3}
<Pill>
<span class={`icon-${platform.icon}`} aria-hidden="true" />
{platform.name}
+{project.platforms.length - 3}
</Pill>
{/if}
{/each}
{#if platforms?.length > 3}
<Pill>
+{project.platforms.length - 3}
</Pill>
{/if}
</GridItem1>
</GridItem1>
</li>
{/each}
<svelte:fragment slot="empty">
<p>Create a new project</p>
@@ -56,7 +56,7 @@
</Pill>
</div>
{:else}
<CustomId bind:show={showCustomId} name="Project" bind:id />
<CustomId bind:show={showCustomId} name="Project" isProject bind:id />
{/if}
</FormList>
<svelte:fragment slot="footer">
@@ -43,7 +43,7 @@
icon="exclamation"
state="warning"
headerDivider={false}>
<p>
<p data-private>
Are you sure you want to delete <b>{$organization.name}</b>? All projects ({$organization.total})
and data associated with this organization will be deleted. This action is irreversible.
</p>
@@ -76,7 +76,7 @@
<AvatarGroup {avatars} total={$members.total} />
</svelte:fragment>
<svelte:fragment slot="title">
<h6 class="u-bold u-trim-1">{$organization.name}</h6>
<h6 class="u-bold u-trim-1" data-private>{$organization.name}</h6>
</svelte:fragment>
<p>{$organization.total} members</p>
</BoxAvatar>
@@ -138,7 +138,7 @@
{:else}
<Empty
single
href="https://appwrite.io/docs/server/users"
href="https://appwrite.io/docs/references/cloud/server-nodejs/users"
target="user"
on:click={() => showCreateUser.set(true)} />
{/if}
@@ -90,7 +90,7 @@
<Empty
single
on:click={() => ($showCreateTeam = true)}
href="https://appwrite.io/docs/client/teams"
href="https://appwrite.io/docs/references/cloud/client-web/teams"
target="team" />
{/if}
</Container>
@@ -100,7 +100,7 @@
</div>
<Button
external
href="https://appwrite.io/docs/client/teams?sdk=web-default#teamsCreateMembership"
href="https://appwrite.io/docs/products/auth/teams#create-membership"
text>
Documentation
</Button>
@@ -109,7 +109,7 @@
{:else}
<Empty
single
href="https://appwrite.io/docs/client/teams?sdk=web-default#teamsCreateMembership"
href="https://appwrite.io/docs/products/auth/teams"
target="membership"
on:click={() => (showCreate = true)} />
{/if}
@@ -107,7 +107,7 @@
<Heading size="7" tag="h3">Email templates</Heading>
<p class="text">
Use templates to send and process account management emails. <a
href="https://appwrite.io/docs/email-and-sms-templates"
href="https://appwrite.io/docs/advanced/platform/message-templates"
class="link">
Learn more about email templates.
</a>
@@ -173,7 +173,7 @@
<Heading size="7" tag="h3">SMS templates</Heading>
<p class="text">
Use templates to send and process account management mobile messages. <a
href="https://appwrite.io/docs"
href="https://appwrite.io/docs/advanced/platform/message-templates"
class="link">
Learn more about SMS templates</a
</p>
@@ -112,7 +112,8 @@
<p class="text">
Click to copy variables for the fields below. Learn more <a
class="link"
href="https://appwrite.io/docs/email-and-sms-templates">here</a
href="https://appwrite.io/docs/advanced/platform/message-templates"
>here</a
>.
</p>
<div class="u-margin-block-start-16 u-flex u-gap-8">
@@ -70,7 +70,10 @@
<EmptySearch>
<div class="u-flex u-flex-vertical u-cross-center u-gap-24">
<p class="text u-line-height-1-5">No memberships available</p>
<Button external secondary href="https://appwrite.io/docs/client/teams">
<Button
external
secondary
href="https://appwrite.io/docs/products/auth/teams#create-membership">
Documentation
</Button>
</div>
@@ -91,7 +91,7 @@
<Button
external
secondary
href="https://appwrite.io/docs/client/account#accountCreateEmailSession">
href="https://appwrite.io/docs/products/auth/email-password">
Documentation
</Button>
</div>
@@ -139,7 +139,8 @@
<Button
secondary
on:click={() => (showVerifcationDropdown = !showVerifcationDropdown)}>
{$user.emailVerification ? 'Unverify' : 'Verify'} account
{$user.emailVerification && $user.phoneVerification ? 'Unverify' : 'Verify'}
account
</Button>
<svelte:fragment slot="list">
<DropListItem icon="mail" on:click={() => updateVerificationEmail()}>
@@ -67,7 +67,7 @@
{:else}
<Empty
single
href="https://appwrite.io/docs/databases"
href="https://appwrite.io/docs/products/databases/databases"
target="database"
on:click={() => (showCreate = true)} />
{/if}
@@ -38,7 +38,7 @@
{:else}
<Empty
single
href="https://appwrite.io/docs/databases#collection"
href="https://appwrite.io/docs/products/databases/collections"
target="collection"
on:click={() => ($showCreate = true)} />
{/if}
@@ -107,7 +107,7 @@
{:else}
<Empty
single
href="https://appwrite.io/docs/databases#create-documents"
href="https://appwrite.io/docs/products/databases/documents"
target="document"
on:click={openWizard} />
{/if}
@@ -122,7 +122,7 @@
<div class="u-flex u-gap-16 u-main-center">
<Button
external
href="https://appwrite.io/docs/databases#attributes"
href="https://appwrite.io/docs/products/databases/collections#attributes"
text
event="empty_documentation"
ariaLabel={`create {target}`}>Documentation</Button>
@@ -188,7 +188,7 @@
<div class="u-flex u-gap-16 u-main-center">
<Button
external
href="https://appwrite.io/docs/databases#attributes"
href="https://appwrite.io/docs/products/databases/collections#attributes"
text
event="empty_documentation"
ariaLabel={`create {target}`}>Documentation</Button>
@@ -84,5 +84,6 @@
Indicate whether this is a required attribute
</InputChoice>
<InputChoice id="array" label="Array" bind:value={data.array} disabled={data.required || editing}>
Indicate whether this attribute should act as an array
Indicate whether this attribute should act as an array, with the default value set as an empty
array.
</InputChoice>
@@ -74,5 +74,6 @@
Indicate whether this is a required attribute
</InputChoice>
<InputChoice id="array" label="Array" bind:value={data.array} disabled={data.required || editing}>
Indicate whether this attribute should act as an array
Indicate whether this attribute should act as an array, with the default value set as an empty
array.
</InputChoice>
@@ -77,5 +77,6 @@
Indicate whether this is a required attribute
</InputChoice>
<InputChoice id="array" label="Array" bind:value={data.array} disabled={data.required || editing}>
Indicate whether this attribute should act as an array
Indicate whether this attribute should act as an array, with the default value set as an empty
array.
</InputChoice>
@@ -98,5 +98,6 @@
Indicate whether this is a required attribute
</InputChoice>
<InputChoice id="array" label="Array" bind:value={data.array} disabled={data.required || editing}>
Indicate whether this attribute should act as an array
Indicate whether this attribute should act as an array, with the default value set as an empty
array.
</InputChoice>
@@ -103,5 +103,6 @@
Indicate whether this is a required attribute
</InputChoice>
<InputChoice id="array" label="Array" bind:value={data.array} disabled={data.required || editing}>
Indicate whether this attribute should act as an array
Indicate whether this attribute should act as an array, with the default value set as an empty
array.
</InputChoice>
@@ -100,5 +100,6 @@
Indicate whether this is a required attribute
</InputChoice>
<InputChoice id="array" label="Array" bind:value={data.array} disabled={data.required || editing}>
Indicate whether this attribute should act as an array
Indicate whether this attribute should act as an array, with the default value set as an empty
array.
</InputChoice>
@@ -75,5 +75,6 @@
Indicate whether this is a required attribute
</InputChoice>
<InputChoice id="array" label="Array" bind:value={data.array} disabled={data.required || editing}>
Indicate whether this attribute should act as an array
Indicate whether this attribute should act as an array, with the default value set as an empty
array.
</InputChoice>
@@ -99,5 +99,6 @@
Indicate whether this is a required attribute
</InputChoice>
<InputChoice id="array" label="Array" bind:value={data.array} disabled={data.required || editing}>
Indicate whether this attribute should act as an array
Indicate whether this attribute should act as an array, with the default value set as an empty
array.
</InputChoice>
@@ -76,5 +76,6 @@
Indicate whether this is a required attribute
</InputChoice>
<InputChoice id="array" label="Array" bind:value={data.array} disabled={data.required || editing}>
Indicate whether this attribute should act as an array
Indicate whether this attribute should act as an array, with the default value set as an empty
array.
</InputChoice>
@@ -111,12 +111,6 @@
Delete document from <span data-private>{$collection.name}</span>
</InputChoice>
</div>
{:else}
<p data-private>
Are you sure you want to delete <b
>the document from <span data-private>{$collection.name}</span></b
>?
</p>
{/if}
<svelte:fragment slot="footer">
@@ -117,7 +117,7 @@
{:else}
<Empty
single
href="https://appwrite.io/docs/databases#indexes"
href="https://appwrite.io/docs/products/databases/collections#indexes"
target="index"
on:click={() => (showCreateIndex = true)} />
{/if}
@@ -132,7 +132,7 @@
<div class="u-flex u-gap-16 u-main-center">
<Button
external
href="https://appwrite.io/docs/databases#attributes"
href="https://appwrite.io/docs/products/databases/collections#attributes"
text
event="empty_documentation"
ariaLabel={`create {target}`}>Documentation</Button>
@@ -59,7 +59,7 @@
<Heading tag="h6" size="7">Permissions</Heading>
<p class="text">
Choose who can access your collection and documents. For more information, check out the <a
href="https://appwrite.io/docs/permissions"
href="https://appwrite.io/docs/products/databases/permissions"
target="_blank"
rel="noopener noreferrer"
class="link">
@@ -10,7 +10,7 @@
<svelte:fragment slot="title">Permissions</svelte:fragment>
<svelte:fragment slot="subtitle">
Choose who can access your collection and documents. For more information, check out the <a
href="https://appwrite.io/docs/permissions"
href="https://appwrite.io/docs/products/databases/permissions"
target="_blank"
rel="noopener noreferrer"
class="link">
@@ -130,7 +130,7 @@
{:else}
<Empty
single
href="https://appwrite.io/docs/functions#deployFunction"
href="https://appwrite.io/docs/products/functions/deployment"
target="function"
on:click={openWizard} />
{/if}
@@ -165,7 +165,7 @@
<div class="u-flex u-gap-16 u-main-center">
<Button
external
href="https://appwrite.io/docs/functions#createFunction"
href="https://appwrite.io/docs/products/functions/deployment"
text
event="empty_documentation"
ariaLabel={`create {target}`}>Documentation</Button>
@@ -294,7 +294,7 @@
<div class="u-flex u-gap-16 u-main-center">
<Button
external
href="https://appwrite.io/docs/functions#createFunction"
href="https://appwrite.io/docs/products/functions/deployment"
text
event="empty_documentation"
ariaLabel={`create {target}`}>Documentation</Button>
@@ -313,7 +313,7 @@
<div class="u-flex u-gap-16 u-main-center">
<Button
external
href="https://appwrite.io/docs/functions#createFunction"
href="https://appwrite.io/docs/products/functions/deployment"
text
event="empty_documentation"
ariaLabel={`create {target}`}>Documentation</Button>
@@ -91,7 +91,7 @@
<Alert dismissible={false} type="warning">
If you did not create your function using the CLI, initialize your function by following our <a
href="https://appwrite.io/docs/command-line"
href="https://appwrite.io/docs/tooling/command-line/installation"
target="_blank"
rel="noopener noreferrer"
class="link">documentation</a
@@ -13,7 +13,7 @@
<p class="text">
Deploy your function from the Git provider of your choice by following the steps below.
Learn more in our <a
href="https://appwrite.io/docs/functions-deployment"
href="https://appwrite.io/docs/products/functions/deployment"
target="_blank"
rel="noopener noreferrer"
class="link">documentation</a
@@ -74,7 +74,10 @@
you push to that repository, your function will be deployed.
</p>
<div class="alert-buttons u-flex u-margin-inline-start-auto">
<Button text href="https://appwrite.io/docs/functions-deploy#vcs" external>
<Button
text
href="https://appwrite.io/docs/products/functions/deployment"
external>
Learn more
</Button>
<Button
@@ -59,7 +59,7 @@
Manually deploy a function by uploading a zip file containing the source code and a relative
path to the entry point.
<a
href="https://appwrite.io/docs/functions#deployFunction"
href="https://appwrite.io/docs/products/functions/deployment"
target="_blank"
rel="noopener noreferrer"
class="link">Learn more about function deployments</a
@@ -83,8 +83,10 @@
</svelte:fragment>
Update your function version to make use of new features including build commands.
<svelte:fragment slot="buttons">
<Button href="https://appwrite.io/docs/functions-develop#upgrade" external text
>Learn more</Button>
<Button
href="https://appwrite.io/docs/products/functions/development"
external
text>Learn more</Button>
</svelte:fragment>
</Alert>
{:else}
@@ -97,7 +97,7 @@
<p class="text">
Manually execute your function. <a
class="link"
href="https://appwrite.io/docs/functions#execute"
href="https://appwrite.io/docs/products/functions/execution"
target="_blank"
rel="noopener noreferrer">
Learn more
@@ -113,7 +113,10 @@
Update your function version to make use of new features including customizable HTTP
data in your executions.
<svelte:fragment slot="buttons">
<Button href="https://appwrite.io/docs/functions-develop#upgrade" external text>
<Button
href="https://appwrite.io/docs/products/functions/development"
external
text>
Learn more
</Button>
</svelte:fragment>
@@ -130,7 +130,7 @@
<p class="text u-line-height-1-5">Need a hand? Learn more in our documentation</p>
</div>
<div class="u-flex u-gap-16">
<Button text external href="https://appwrite.io/docs/functions#execute">
<Button text external href="https://appwrite.io/docs/products/functions/execution">
Documentation
</Button>
<Create secondary />
@@ -53,13 +53,16 @@
Update your function version to make use of new features including build commands and HTTP
data in your executions. To update, follow the steps outlined in our
<a
href="https://appwrite.io/docs/functions-develop#upgrade"
href="https://appwrite.io/docs/products/functions/development"
target="_blank"
rel="noopener noreferrer"
class="link">documentation</a
>.
<svelte:fragment slot="buttons">
<Button href="https://appwrite.io/docs/functions-develop#upgrade" external text>
<Button
href="https://appwrite.io/docs/products/functions/development"
external
text>
Learn more
</Button>
</svelte:fragment>
@@ -209,7 +209,7 @@
<div class="u-flex u-gap-16 common-section u-main-center">
<Button
external
href="https://appwrite.io/docs/functions-deploy#vcs"
href="https://appwrite.io/docs/products/functions/deployment"
text>Documentation</Button>
<Button secondary on:click={() => (search = '')}>Clear search</Button>
</div>
@@ -222,7 +222,7 @@
<p class="text u-line-height-1-5">You have no repositories.</p>
<p class="text u-line-height-1-5">
Need a hand? Learn more in our <a
href="https://appwrite.io/docs/functions-deploy#vcs"
href="https://appwrite.io/docs/products/functions/deployment"
target="_blank"
rel="noopener noreferrer">
documentation</a
@@ -281,7 +281,7 @@
first configure your environment variables.
<svelte:fragment slot="buttons">
<Button
href="https://appwrite.io/docs/configuration#git"
href="https://appwrite.io/docs/advanced/self-hosting/functions"
external
text>
Learn more
@@ -154,7 +154,7 @@
<EventModal bind:show={showEvents} initialValue={eventValue} on:created={handleEvent}>
<p class="text">
Select events in your Appwrite project that will trigger your function. <a
href="https://appwrite.io/docs/events"
href="https://appwrite.io/docs/advanced/platform/events"
target="_blank"
rel="noopener noreferrer"
class="link">Learn more about Appwrite Events</a
@@ -69,7 +69,7 @@
<p>
Choose who can execute this function using the client API. For more information, check
out the <a
href="https://appwrite.io/docs/permissions"
href="https://appwrite.io/docs/advanced/platform/permissions"
target="_blank"
rel="noopener noreferrer"
class="link">
@@ -58,7 +58,7 @@
<Heading tag="h6" size="7" id="schedule">Schedule</Heading>
<p>
Set a Cron schedule to trigger your function. Leave blank for no schedule. <a
href="https://appwrite.io/docs/functions#scheduled-execution"
href="https://appwrite.io/docs/products/functions/execution"
target="_blank"
rel="noopener noreferrer"
class="link">
@@ -1,13 +1,15 @@
<script lang="ts">
import { base } from '$app/paths';
import { Alert, Card, Collapsible, Heading } from '$lib/components';
import { Pill } from '$lib/elements';
import { Button } from '$lib/elements/forms';
import { Container } from '$lib/layout';
import { isSelfHosted } from '$lib/system';
import AppwriteLogoDark from '$lib/images/appwrite-logo-dark.svg';
import AppwriteLogoLight from '$lib/images/appwrite-logo-light.svg';
import { connectTemplate } from '$lib/wizards/functions/cover.svelte';
import { consoleVariables } from '$routes/console/store';
import { template } from './store';
import { app } from '$lib/stores/app';
const isVcsEnabled = $consoleVariables?._APP_VCS_ENABLED === true;
</script>
@@ -41,9 +43,10 @@
<h4 class="body-text-1 u-bold">Published by</h4>
<img
class="u-margin-block-start-8"
width="130"
src={`${base}/logos/appwrite-full.svg`}
alt="" />
src={$app.themeInUse == 'dark' ? AppwriteLogoDark : AppwriteLogoLight}
width="120"
height="22"
alt="Appwrite" />
</section>
</li>
</Collapsible>
@@ -70,7 +73,10 @@
In order to clone a template to a locally hosted Appwrite project, you must set
up a Git integration and configure your environment variables.
<svelte:fragment slot="buttons">
<Button href="https://appwrite.io/docs/configuration#git" external text>
<Button
href="https://appwrite.io/docs/advanced/self-hosting/functions"
external
text>
Learn more
</Button>
</svelte:fragment>
@@ -9,7 +9,7 @@
<svelte:fragment slot="subtitle">
Choose which users have permission to execute this function using Client SDKs. For more
information, check out the <a
href="https://appwrite.io/docs/permissions"
href="https://appwrite.io/docs/advanced/platform/permissions"
target="_blank"
rel="noopener noreferrer"
class="link">
@@ -20,7 +20,7 @@
<svelte:fragment slot="title">Events</svelte:fragment>
<svelte:fragment slot="subtitle">
Set the events that will trigger your function. Maximum 100 events allowed.<a
href="https://appwrite.io/docs/events"
href="https://appwrite.io/docs/advanced/platform/events"
target="_blank"
rel="noopener noreferrer"
class="link">
@@ -64,7 +64,7 @@
<EventModal bind:show={showCreate} on:created={handleCreated}>
<p class="text">
Select events in your Appwrite project that will trigger your function. <a
href="https://appwrite.io/docs/events"
href="https://appwrite.io/docs/advanced/platform/events"
target="_blank"
rel="noopener noreferrer"
class="link">Learn more about Appwrite Events</a
@@ -8,7 +8,7 @@
<svelte:fragment slot="title">Schedule</svelte:fragment>
<svelte:fragment slot="subtitle">
Set a Cron schedule to trigger your function. Leave blank for no schedule. <a
href="https://appwrite.io/docs/functions#createFunction"
href="https://appwrite.io/docs/products/functions/quick-start"
target="_blank"
rel="noopener noreferrer"
class="link">More details on Cron syntax here</a
@@ -46,7 +46,7 @@
<svelte:fragment slot="title">Variables</svelte:fragment>
<svelte:fragment slot="subtitle">
Create the environment variables or secret keys that will be passed to your function. <a
href="https://appwrite.io/docs/permissions"
href="https://appwrite.io/docs/advanced/platform/permissions"
target="_blank"
rel="noopener noreferrer"
class="link">
@@ -61,5 +61,9 @@
</TableBody>
</Table>
{:else}
<Empty single href="https://appwrite.io/docs/keys" target="API key" on:click={createApiKey} />
<Empty
single
href="https://appwrite.io/docs/advanced/platform/api-keys"
target="API key"
on:click={createApiKey} />
{/if}
@@ -85,7 +85,7 @@
<Container>
{@const accessedAt = $key.accessedAt ? toLocaleDate($key.accessedAt) : 'never'}
<CardGrid>
<div>
<div data-private>
<Heading tag="h6" size="7">{$key.name}</Heading>
</div>
<svelte:fragment slot="aside">
@@ -157,7 +157,7 @@
<Box>
<div class="u-flex u-gap-16">
<div class="u-cross-child-center u-line-height-1-5">
<h6 class="u-bold">{$key.name}</h6>
<h6 class="u-bold" data-private>{$key.name}</h6>
<p>Last accessed: {accessedAt}</p>
</div>
</div>
@@ -37,7 +37,7 @@
<p class="u-bold">No data to show</p>
<a
class="link"
href="https://appwrite.io/docs/realtime"
href="https://appwrite.io/docs/apis/realtime"
target="_blank"
rel="noopener noreferrer">Get started with Realtime</a>
</div>
@@ -43,7 +43,7 @@
<svelte:fragment slot="aside">
<BoxAvatar>
<svelte:fragment slot="title">
<h6 class="u-bold u-trim-1">{$project.name}</h6>
<h6 class="u-bold u-trim-1" data-private>{$project.name}</h6>
</svelte:fragment>
<p>Last update: {toLocaleDateTime($project.$updatedAt)}</p>
</BoxAvatar>
@@ -57,7 +57,7 @@
<svelte:fragment slot="subtitle">
Select a source platform with the project you want to migrate. <a
class="link"
href="https://appwrite.io/docs/migrations"
href="https://appwrite.io/docs/advanced/migrations"
target="_blank"
rel="noopener noreferrer">
Learn about which platforms are supported</a
@@ -142,7 +142,7 @@
}))} />
</FormList>
<p class="u-text-center u-margin-block-start-24">
<button class="u-bold" on:click|preventDefault={deauthorizeGoogle}>Sign Out</button>
<button class="u-bold" on:click|preventDefault={deauthorizeGoogle}>Sign out</button>
</p>
{/if}
{:else if $provider.provider === 'supabase'}
@@ -12,7 +12,7 @@
Select the resources you need to migrate to Appwrite. Some resources can be migrated, but
with limitations. <a
class="link"
href="https://appwrite.io/docs/migrations"
href="https://appwrite.io/docs/advanced/migrations"
target="_blank"
rel="noopener noreferrer">
Learn about which resources are supported</a
@@ -143,7 +143,7 @@
<p class="text">
Import data from another platform or from a different Appwrite instance. <a
class="link"
href="https://appwrite.io/docs/migrations"
href="https://appwrite.io/docs/advanced/migrations"
target="_blank"
rel="noopener noreferrer">
Learn about which platforms are supported</a
@@ -235,7 +235,7 @@
<p class="text">
Export data from your project to Appwrite Cloud. <a
class="link"
href="https://appwrite.io/docs/migrations-self-hosted-to-cloud"
href="https://appwrite.io/docs/advanced/migrations/self-hosted"
target="_blank"
rel="noopener noreferrer">
Learn more in our documentation.</a>
@@ -262,7 +262,7 @@
<p class="text">
Export data from your project to a self-hosted instance. <a
class="link"
href="https://appwrite.io/docs/migrations-cloud-to-self-hosted"
href="https://appwrite.io/docs/advanced/migrations/self-hosted"
target="_blank"
rel="noopener noreferrer">
Learn more in our documentation.</a>
@@ -189,7 +189,10 @@
When installing Git in a locally hosted Appwrite project, you must first configure
your environment variables.
<svelte:fragment slot="buttons">
<Button href="https://appwrite.io/docs/configuration#git" external text>
<Button
href="https://appwrite.io/docs/advanced/self-hosting/functions"
external
text>
Learn more
</Button>
</svelte:fragment>
@@ -77,7 +77,7 @@
{:else}
<Empty
single
href="https://appwrite.io/docs/webhooks"
href="https://appwrite.io/docs/advanced/platform/webhooks"
target="webhook"
on:click={openWizard} />
{/if}
@@ -112,7 +112,7 @@
<EventModal bind:show={showCreateEvent} on:created={handleEvent}>
<p class="text">
Select events in your Appwrite project that will trigger your webhook. <a
href="https://appwrite.io/docs/events"
href="https://appwrite.io/docs/advanced/platform/events"
target="_blank"
rel="noopener noreferrer"
class="link">Learn more about Appwrite Events</a
@@ -89,7 +89,7 @@
<span class="u-color-text-danger">Warning:</span> Untrusted or self-signed
certificates may not be secure.
<a
href="https://appwrite.io/docs/custom-domains#enjoySSLCert"
href="https://appwrite.io/docs/advanced/self-hosting/tls-certificates"
target="_blank"
rel="noopener noreferrer"
class="link">
@@ -11,7 +11,7 @@
<Heading tag="h2" size="7">Signature Key</Heading>
<p>
Add the Signature Key to the X-Appwrite-Webhook-Signature header to validate your webhooks. <a
href="https://appwrite.io/docs/webhooks#verification"
href="https://appwrite.io/docs/advanced/platform/webhooks#verification"
target="_blank"
rel="noopener noreferrer"
class="link">Learn more about webhook validation.</a>
@@ -58,7 +58,7 @@
<EventModal bind:show={showCreate} on:created={handleCreated}>
<p class="text">
Select events in your Appwrite project that will trigger your webhook. <a
href="https://appwrite.io/docs/events"
href="https://appwrite.io/docs/advanced/platform/events"
target="_blank"
rel="noopener noreferrer"
class="link">Learn more about Appwrite Events</a

Some files were not shown because too many files have changed in this diff Show More