mirror of
https://github.com/appwrite/console.git
synced 2026-06-06 19:27:48 +00:00
Merge branch 'main' of github.com:appwrite/console into feat-credit-flow
This commit is contained in:
Generated
+9
-9
@@ -7,8 +7,8 @@
|
||||
"name": "@appwrite/console",
|
||||
"dependencies": {
|
||||
"@appwrite.io/console": "^0.6.2",
|
||||
"@appwrite.io/pink": "0.20.0",
|
||||
"@appwrite.io/pink-icons": "0.20.0",
|
||||
"@appwrite.io/pink": "0.23.0",
|
||||
"@appwrite.io/pink-icons": "0.23.0",
|
||||
"@popperjs/core": "^2.11.8",
|
||||
"@sentry/svelte": "^7.66.0",
|
||||
"@sentry/tracing": "^7.66.0",
|
||||
@@ -162,19 +162,19 @@
|
||||
"integrity": "sha512-3qYknuFwhvTN2GnPB8G1w5DgxfVorGtfj4uuEaXbTmMUmjA8fHaW5VkJriuUxCi6/TpxDxqV/hhEkdoXL+5H4w=="
|
||||
},
|
||||
"node_modules/@appwrite.io/pink": {
|
||||
"version": "0.20.0",
|
||||
"resolved": "https://registry.npmjs.org/@appwrite.io/pink/-/pink-0.20.0.tgz",
|
||||
"integrity": "sha512-17anov7EL+Ic/4fNtCYgG3wA+hoeBXn/j+ZjkfZFfX3g66M8XzVTaQfsAH+EMZ3YjvWuKlHtn+bY4BkGwvMIzQ==",
|
||||
"version": "0.23.0",
|
||||
"resolved": "https://registry.npmjs.org/@appwrite.io/pink/-/pink-0.23.0.tgz",
|
||||
"integrity": "sha512-AGV0o0pjcKEHFc77TBDUEVGdlxwxB66n9XyPWn/meN9amVMPCEWuYcjhI4I5H6mdmPgW1YaFmaUZ2bIsXtyWBA==",
|
||||
"dependencies": {
|
||||
"@appwrite.io/pink-icons": "0.20.0",
|
||||
"@appwrite.io/pink-icons": "0.23.0",
|
||||
"normalize.css": "^8.0.1",
|
||||
"the-new-css-reset": "^1.11.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@appwrite.io/pink-icons": {
|
||||
"version": "0.20.0",
|
||||
"resolved": "https://registry.npmjs.org/@appwrite.io/pink-icons/-/pink-icons-0.20.0.tgz",
|
||||
"integrity": "sha512-nfDy7qE6FQWVO1eC+3nwGjXkj/Zm2V50rhvyj0/HKq8RyWNWFGX31BZoMSim01vl/N5irBilpkaER6mLPp7oEw=="
|
||||
"version": "0.23.0",
|
||||
"resolved": "https://registry.npmjs.org/@appwrite.io/pink-icons/-/pink-icons-0.23.0.tgz",
|
||||
"integrity": "sha512-hIvAWf+LxedFePGEckVzM3TO5qkhNn/biBx25itVTWWEF5vI8fBnGfG6Vkv73Yy4PPAScryOc10uJxkWGEWCqw=="
|
||||
},
|
||||
"node_modules/@babel/code-frame": {
|
||||
"version": "7.24.2",
|
||||
|
||||
+2
-2
@@ -20,8 +20,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@appwrite.io/console": "^0.6.2",
|
||||
"@appwrite.io/pink": "0.20.0",
|
||||
"@appwrite.io/pink-icons": "0.20.0",
|
||||
"@appwrite.io/pink": "0.23.0",
|
||||
"@appwrite.io/pink-icons": "0.23.0",
|
||||
"@popperjs/core": "^2.11.8",
|
||||
"@sentry/svelte": "^7.66.0",
|
||||
"@sentry/tracing": "^7.66.0",
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
interactiveOutput
|
||||
let:option={o}>
|
||||
<svelte:fragment slot="output" let:option={o}>
|
||||
<output class="input-text">
|
||||
<output class="input-text u-cursor-pointer">
|
||||
<span class="u-flex u-gap-16 u-flex-vertical">
|
||||
<span class="u-flex u-gap-16">
|
||||
<span class="u-flex u-cross-center u-gap-8" style="padding-inline:0.25rem">
|
||||
|
||||
@@ -90,8 +90,8 @@
|
||||
</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;">
|
||||
class="tag eyebrow-heading-3 u-padding-block-4"
|
||||
style="--p-tag-height: 1.785rem; --p-tag-content-height: 1.2rem;">
|
||||
<span class="text u-x-small" style="font-weight: 500">Beta</span>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
import { createEventDispatcher } from 'svelte';
|
||||
|
||||
export let show = false;
|
||||
export let href: string = null;
|
||||
const dispatch = createEventDispatcher();
|
||||
|
||||
function handleSubmit() {
|
||||
@@ -25,6 +26,10 @@
|
||||
</p>
|
||||
<svelte:fragment slot="footer">
|
||||
<Button text on:click={() => (show = false)}>Cancel</Button>
|
||||
<Button secondary submit>Exit</Button>
|
||||
{#if href}
|
||||
<Button secondary {href}>Exit</Button>
|
||||
{:else}
|
||||
<Button secondary submit>Exit</Button>
|
||||
{/if}
|
||||
</svelte:fragment>
|
||||
</Modal>
|
||||
|
||||
@@ -1,13 +1,32 @@
|
||||
<script lang="ts">
|
||||
import { trackEvent } from '$lib/actions/analytics';
|
||||
import { Heading } from '$lib/components';
|
||||
import { Button } from '$lib/elements/forms';
|
||||
import WizardExitModal from './wizardExitModal.svelte';
|
||||
|
||||
let show = false;
|
||||
export let showExitModal = false;
|
||||
export let href: string;
|
||||
</script>
|
||||
|
||||
<header class="wizard-secondary-header">
|
||||
<div class="u-flex u-main-space-between u-gap-32 u-cross-center">
|
||||
<Heading size={5} tag="h1"><slot /></Heading>
|
||||
<Button text round class="u-margin-block-start-8" ariaLabel="close modal" {href}>
|
||||
<Button
|
||||
text
|
||||
round
|
||||
class="u-margin-block-start-8"
|
||||
ariaLabel="close modal"
|
||||
href={showExitModal ? null : href}
|
||||
on:click={() => {
|
||||
if (showExitModal) {
|
||||
show = true;
|
||||
} else {
|
||||
trackEvent('wizard_exit', {
|
||||
from: 'button'
|
||||
});
|
||||
}
|
||||
}}>
|
||||
<span class="icon-x u-font-size-20" aria-hidden="true"></span>
|
||||
</Button>
|
||||
</div>
|
||||
@@ -15,3 +34,16 @@
|
||||
<p class="body-text-2"><slot name="description" /></p>
|
||||
{/if}
|
||||
</header>
|
||||
|
||||
{#if show}
|
||||
<WizardExitModal
|
||||
{href}
|
||||
bind:show
|
||||
on:exit={() => {
|
||||
trackEvent('wizard_exit', {
|
||||
from: 'prompt'
|
||||
});
|
||||
}}>
|
||||
<slot name="exit">this process</slot>
|
||||
</WizardExitModal>
|
||||
{/if}
|
||||
|
||||
@@ -77,6 +77,244 @@ export const marketplace: MarketplaceTemplate[] = [
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
icon: 'icon-upstash',
|
||||
id: 'query-upstash-vector',
|
||||
name: 'Query Upstash Vector',
|
||||
tagline: 'Vector database that stores text embeddings and context retrieval for LLMs',
|
||||
permissions: ['any'],
|
||||
events: [],
|
||||
cron: '',
|
||||
timeout: 15,
|
||||
usecases: ['Databases'],
|
||||
runtimes: [
|
||||
...getRuntimes(
|
||||
TemplateRuntimes.NODE,
|
||||
'npm install',
|
||||
'src/main.js',
|
||||
'node/query-upstash-vector'
|
||||
)
|
||||
],
|
||||
instructions: `For documentation and instructions check out <a target="_blank" rel="noopener noreferrer" class="link" href="https://github.com/appwrite/templates/tree/main/node/query-upstash-vector">file</a>.`,
|
||||
vcsProvider: 'github',
|
||||
providerRepositoryId: 'templates',
|
||||
providerOwner: 'appwrite',
|
||||
providerBranch: 'main',
|
||||
variables: [
|
||||
{
|
||||
name: 'UPSTASH_URL',
|
||||
description: `The endpoint to connect to your Upstash Vector database. <a class="u-bold" target="_blank" href="https://upstash.com/docs/vector/overall/getstarted">Learn more</a>.`,
|
||||
value: '',
|
||||
placeholder: 'https://resolved-mallard-84564-eu1-vector.upstash.io',
|
||||
required: true,
|
||||
type: 'text'
|
||||
},
|
||||
{
|
||||
name: 'UPSTASH_TOKEN',
|
||||
description: `Authentication token to access your Upstash Vector database. <a class="u-bold" target="_blank" href="https://upstash.com/docs/vector/overall/getstarted">Learn more</a>.`,
|
||||
value: '',
|
||||
placeholder:
|
||||
'oe4wNTbwHVLcDNa6oceZfhBEABsCNYh43ii6Xdq4bKBH7mq7qJkUmc4cs3ABbYyuVKWZTxVQjiNjYgydn2dkhABNes4NAuDpj7qxUAmZYqGJT78',
|
||||
required: true,
|
||||
type: 'password'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
icon: 'icon-redis',
|
||||
id: 'query-redis-labs',
|
||||
name: 'Query Redis Labs',
|
||||
tagline: 'Key-value database with advanced caching capabilities.',
|
||||
permissions: ['any'],
|
||||
events: [],
|
||||
cron: '',
|
||||
timeout: 15,
|
||||
usecases: ['Databases'],
|
||||
runtimes: [
|
||||
...getRuntimes(
|
||||
TemplateRuntimes.NODE,
|
||||
'npm install',
|
||||
'src/main.js',
|
||||
'node/query-redis-labs'
|
||||
)
|
||||
],
|
||||
instructions: `For documentation and instructions check out <a target="_blank" rel="noopener noreferrer" class="link" href="https://github.com/appwrite/templates/tree/main/node/query-redis-labs">file</a>.`,
|
||||
vcsProvider: 'github',
|
||||
providerRepositoryId: 'templates',
|
||||
providerOwner: 'appwrite',
|
||||
providerBranch: 'main',
|
||||
variables: [
|
||||
{
|
||||
name: 'REDIS_HOST',
|
||||
description: `The endpoint to connect to your Redis database. <a class="u-bold" target="_blank" href="https://redis.io/docs/latest/operate/rc/rc-quickstart/">Learn more</a>.`,
|
||||
value: '',
|
||||
placeholder: 'redis-13258.c35.eu-central-1-1.ec2.redns.redis-cloud.com',
|
||||
required: true,
|
||||
type: 'text'
|
||||
},
|
||||
{
|
||||
name: 'REDIS_PASSWORD',
|
||||
description: `Authentication password to access your Redis database. <a class="u-bold" target="_blank" href="https://redis.io/docs/latest/operate/rc/rc-quickstart/">Learn more</a>.`,
|
||||
value: '',
|
||||
placeholder: 'efNNehiACfcZiwsTAjcK6xiwPyu6Dpdq',
|
||||
required: true,
|
||||
type: 'password'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
icon: 'icon-neo4j',
|
||||
id: 'query-neo4j-auradb',
|
||||
name: 'Query Neo4j AuraDB',
|
||||
tagline: 'Graph database with focus on relations between data.',
|
||||
permissions: ['any'],
|
||||
events: [],
|
||||
cron: '',
|
||||
timeout: 15,
|
||||
usecases: ['Databases'],
|
||||
runtimes: [
|
||||
...getRuntimes(
|
||||
TemplateRuntimes.NODE,
|
||||
'npm install',
|
||||
'src/main.js',
|
||||
'node/query-neo4j-auradb'
|
||||
)
|
||||
],
|
||||
instructions: `For documentation and instructions check out <a target="_blank" rel="noopener noreferrer" class="link" href="https://github.com/appwrite/templates/tree/main/node/query-neo4j-auradb">file</a>.`,
|
||||
vcsProvider: 'github',
|
||||
providerRepositoryId: 'templates',
|
||||
providerOwner: 'appwrite',
|
||||
providerBranch: 'main',
|
||||
variables: [
|
||||
{
|
||||
name: 'NEO4J_URI',
|
||||
description: `The endpoint to connect to your Neo4j database. <a class="u-bold" target="_blank" href="https://neo4j.com/docs/aura/auradb/getting-started/connect-database/">Learn more</a>.`,
|
||||
value: '',
|
||||
placeholder: 'neo4j+s://4tg4mddo.databases.neo4j.io',
|
||||
required: true,
|
||||
type: 'text'
|
||||
},
|
||||
{
|
||||
name: 'NEO4J_USER',
|
||||
description: `Authentication user to access your Neo4j database. <a class="u-bold" target="_blank" href="https://neo4j.com/docs/aura/auradb/getting-started/connect-database/">Learn more</a>.`,
|
||||
value: '',
|
||||
placeholder: 'neo4j',
|
||||
required: true,
|
||||
type: 'text'
|
||||
},
|
||||
{
|
||||
name: 'NEO4J_PASSWORD',
|
||||
description: `Authentication password to access your Neo4j database. <a class="u-bold" target="_blank" href="https://neo4j.com/docs/aura/auradb/getting-started/connect-database/">Learn more</a>.`,
|
||||
value: '',
|
||||
placeholder: 'mCUc4PbVUQN-_NkTLJLisb6ccnwzQKKhrkF77YMctzx',
|
||||
required: true,
|
||||
type: 'password'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
icon: 'icon-mongodb',
|
||||
id: 'query-mongo-atlas',
|
||||
name: 'Query MongoDB Atlas',
|
||||
tagline:
|
||||
'Realtime NoSQL document database with geospecial, graph, search, and vector suport.',
|
||||
permissions: ['any'],
|
||||
events: [],
|
||||
cron: '',
|
||||
timeout: 15,
|
||||
usecases: ['Databases'],
|
||||
runtimes: [
|
||||
...getRuntimes(
|
||||
TemplateRuntimes.NODE,
|
||||
'npm install',
|
||||
'src/main.js',
|
||||
'node/query-mongo-atlas'
|
||||
)
|
||||
],
|
||||
instructions: `For documentation and instructions check out <a target="_blank" rel="noopener noreferrer" class="link" href="https://github.com/appwrite/templates/tree/main/node/query-mongo-atlas">file</a>.`,
|
||||
vcsProvider: 'github',
|
||||
providerRepositoryId: 'templates',
|
||||
providerOwner: 'appwrite',
|
||||
providerBranch: 'main',
|
||||
variables: [
|
||||
{
|
||||
name: 'MONGO_URI',
|
||||
description: `The endpoint to connect to your Mongo database. <a class="u-bold" target="_blank" href="https://www.mongodb.com/docs/atlas/getting-started/">Learn more</a>.`,
|
||||
value: '',
|
||||
placeholder:
|
||||
'mongodb+srv://appwrite:Yx42hafg7Q4fgkxe@cluster0.7mslfog.mongodb.net/?retryWrites=true&w=majority&appName=Appwrite',
|
||||
required: true,
|
||||
type: 'password'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
icon: 'icon-neon',
|
||||
id: 'query-neon-postgres',
|
||||
name: 'Query Neon Postgres',
|
||||
tagline:
|
||||
'Reliable SQL database with replication, point-in-time recovery, and pgvector support.',
|
||||
permissions: ['any'],
|
||||
events: [],
|
||||
cron: '',
|
||||
timeout: 15,
|
||||
usecases: ['Databases'],
|
||||
runtimes: [
|
||||
...getRuntimes(
|
||||
TemplateRuntimes.NODE,
|
||||
'npm install',
|
||||
'src/main.js',
|
||||
'node/query-neon-postgres'
|
||||
)
|
||||
],
|
||||
instructions: `For documentation and instructions check out <a target="_blank" rel="noopener noreferrer" class="link" href="https://github.com/appwrite/templates/tree/main/node/query-neon-postgres">file</a>.`,
|
||||
vcsProvider: 'github',
|
||||
providerRepositoryId: 'templates',
|
||||
providerOwner: 'appwrite',
|
||||
providerBranch: 'main',
|
||||
variables: [
|
||||
{
|
||||
name: 'PGHOST',
|
||||
description: `The endpoint to connect to your Postgres database. <a class="u-bold" target="_blank" href="https://neon.tech/docs/get-started-with-neon/signing-up/">Learn more</a>.`,
|
||||
value: '',
|
||||
placeholder: 'ep-still-sea-a792sh84.eu-central-1.aws.neon.tech',
|
||||
required: true,
|
||||
type: 'text'
|
||||
},
|
||||
{
|
||||
name: 'PGDATABASE',
|
||||
description: `Name of our Postgres database. <a class="u-bold" target="_blank" href="https://neon.tech/docs/get-started-with-neon/signing-up/">Learn more</a>.`,
|
||||
value: '',
|
||||
placeholder: 'main',
|
||||
required: true,
|
||||
type: 'text'
|
||||
},
|
||||
{
|
||||
name: 'PGUSER',
|
||||
description: `Name of our Postgres user for authentication. <a class="u-bold" target="_blank" href="https://neon.tech/docs/get-started-with-neon/signing-up/">Learn more</a>.`,
|
||||
value: '',
|
||||
placeholder: 'main_owner',
|
||||
required: true,
|
||||
type: 'text'
|
||||
},
|
||||
{
|
||||
name: 'PGPASSWORD',
|
||||
description: `Password of our Postgres user for authentication. <a class="u-bold" target="_blank" href="https://neon.tech/docs/get-started-with-neon/signing-up/">Learn more</a>.`,
|
||||
value: '',
|
||||
placeholder: 'iQCfaUaaWB3B',
|
||||
required: true,
|
||||
type: 'password'
|
||||
},
|
||||
{
|
||||
name: 'ENDPOINT_ID',
|
||||
description: `Endpoint ID provided for your Postgres database. <a class="u-bold" target="_blank" href="https://neon.tech/docs/get-started-with-neon/signing-up/">Learn more</a>.`,
|
||||
value: '',
|
||||
placeholder: 'ep-still-sea-a792sh84',
|
||||
required: true,
|
||||
type: 'text'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
icon: 'icon-open-ai',
|
||||
id: 'prompt-chatgpt',
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
import MfaRecoveryCodes from './mfaRecoveryCodes.svelte';
|
||||
import type { Models } from '@appwrite.io/console';
|
||||
import MfaRegenerateCodes from './mfaRegenerateCodes.svelte';
|
||||
import { Pill } from '$lib/elements';
|
||||
|
||||
let showSetup: boolean = false;
|
||||
let showDelete: boolean = false;
|
||||
@@ -144,8 +145,11 @@
|
||||
<div class="avatar is-size-x-small">
|
||||
<span class="icon-mail" aria-hidden="true" />
|
||||
</div>
|
||||
<div class="u-flex-vertical u-gap-4 body-text-2">
|
||||
<span class="u-bold">Email verification</span>
|
||||
<div class="u-flex-vertical u-gap-4">
|
||||
<div class="u-flex u-gap-4 u-cross-center">
|
||||
<span class="body-text-2 u-bold">Email</span>
|
||||
<Pill>verified</Pill>
|
||||
</div>
|
||||
<span>One-time codes will be sent to: {$user.email}</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -160,8 +164,11 @@
|
||||
<div class="avatar is-size-x-small">
|
||||
<span class="icon-send" aria-hidden="true" />
|
||||
</div>
|
||||
<div class="u-flex-vertical u-gap-4 body-text-2">
|
||||
<span class="u-bold">SMS verification</span>
|
||||
<div class="u-flex-vertical u-gap-4">
|
||||
<div class="u-flex u-gap-4 u-cross-center">
|
||||
<span class="body-text-2 u-bold">SMS</span>
|
||||
<Pill>verified</Pill>
|
||||
</div>
|
||||
<span>One-time codes will be sent to: {$user.phone}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -186,7 +186,9 @@
|
||||
</svelte:head>
|
||||
|
||||
<WizardSecondaryContainer>
|
||||
<WizardSecondaryHeader href={previousPage}>Create organization</WizardSecondaryHeader>
|
||||
<WizardSecondaryHeader href={previousPage} showExitModal>
|
||||
Create organization
|
||||
</WizardSecondaryHeader>
|
||||
<WizardSecondaryContent>
|
||||
<Form bind:this={formComponent} onSubmit={create} bind:isSubmitting>
|
||||
<FormList>
|
||||
|
||||
@@ -147,7 +147,9 @@
|
||||
}}></span>
|
||||
</span>
|
||||
<div class="body-text-2 u-margin-inline-start-auto">
|
||||
{formatCurrency(currentInvoice?.amount ?? 0)}
|
||||
{$organization?.billingPlan === BillingPlan.STARTER
|
||||
? formatCurrency(0)
|
||||
: formatCurrency(currentInvoice?.amount ?? 0)}
|
||||
</div>
|
||||
</CollapsibleItem>
|
||||
</Collapsible>
|
||||
|
||||
@@ -253,7 +253,7 @@
|
||||
</svelte:head>
|
||||
|
||||
<WizardSecondaryContainer>
|
||||
<WizardSecondaryHeader href={previousPage}>Change plan</WizardSecondaryHeader>
|
||||
<WizardSecondaryHeader href={previousPage} showExitModal>Change plan</WizardSecondaryHeader>
|
||||
<WizardSecondaryContent>
|
||||
<Form bind:this={formComponent} onSubmit={handleSubmit} bind:isSubmitting>
|
||||
<Label class="label u-margin-block-start-16">Select plan</Label>
|
||||
|
||||
+1
-1
@@ -62,7 +62,7 @@
|
||||
{abbreviateNumber(limit)} function executions
|
||||
</li>
|
||||
<li>
|
||||
${hoursToDays(logs)} of logs
|
||||
{hoursToDays(logs)} of logs
|
||||
</li>
|
||||
</ul>
|
||||
{#if $organization?.billingPlan === BillingPlan.STARTER}
|
||||
|
||||
Reference in New Issue
Block a user