mirror of
https://github.com/appwrite/console.git
synced 2026-06-06 19:27:48 +00:00
Merge branch 'feat-pink-v2' into csv-imports
This commit is contained in:
+2
-2
@@ -23,9 +23,9 @@
|
||||
"dependencies": {
|
||||
"@appwrite.io/console": "https://pkg.pr.new/appwrite/appwrite/@appwrite.io/console@61868a9",
|
||||
"@appwrite.io/pink-icons": "0.25.0",
|
||||
"@appwrite.io/pink-icons-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@6b17cb23",
|
||||
"@appwrite.io/pink-icons-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f",
|
||||
"@appwrite.io/pink-legacy": "^1.0.3",
|
||||
"@appwrite.io/pink-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@29b227f",
|
||||
"@appwrite.io/pink-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@bd21ff7f",
|
||||
"@popperjs/core": "^2.11.8",
|
||||
"@sentry/sveltekit": "^8.38.0",
|
||||
"@stripe/stripe-js": "^3.5.0",
|
||||
|
||||
Generated
+14
-14
@@ -15,14 +15,14 @@ importers:
|
||||
specifier: 0.25.0
|
||||
version: 0.25.0
|
||||
'@appwrite.io/pink-icons-svelte':
|
||||
specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@6b17cb23
|
||||
version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@6b17cb23(svelte@5.27.0)
|
||||
specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f
|
||||
version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f(svelte@5.25.3)
|
||||
'@appwrite.io/pink-legacy':
|
||||
specifier: ^1.0.3
|
||||
version: 1.0.3
|
||||
'@appwrite.io/pink-svelte':
|
||||
specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@29b227f
|
||||
version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@29b227f(react-dom@18.3.1(react@18.3.1))(svelte@5.27.0)
|
||||
specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@bd21ff7f
|
||||
version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@bd21ff7f(react-dom@18.3.1(react@18.3.1))(svelte@5.25.3)
|
||||
'@popperjs/core':
|
||||
specifier: ^2.11.8
|
||||
version: 2.11.8
|
||||
@@ -221,14 +221,14 @@ packages:
|
||||
resolution: {tarball: https://pkg.pr.new/appwrite/appwrite/@appwrite.io/console@61868a9}
|
||||
version: 1.2.1
|
||||
|
||||
'@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@29b227fb7ad99f66e5031701c457d89ac190cd27':
|
||||
resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@29b227fb7ad99f66e5031701c457d89ac190cd27}
|
||||
'@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f':
|
||||
resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f}
|
||||
version: 1.0.0-next.7
|
||||
peerDependencies:
|
||||
svelte: ^4.0.0
|
||||
|
||||
'@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@6b17cb23':
|
||||
resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@6b17cb23}
|
||||
'@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f1fe1b018f3ef6aa6091874b28cfc4554':
|
||||
resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f1fe1b018f3ef6aa6091874b28cfc4554}
|
||||
version: 1.0.0-next.7
|
||||
peerDependencies:
|
||||
svelte: ^4.0.0
|
||||
@@ -242,8 +242,8 @@ packages:
|
||||
'@appwrite.io/pink-legacy@1.0.3':
|
||||
resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==}
|
||||
|
||||
'@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@29b227f':
|
||||
resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@29b227f}
|
||||
'@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@bd21ff7f':
|
||||
resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@bd21ff7f}
|
||||
version: 1.0.0-next.85
|
||||
peerDependencies:
|
||||
react-dom: ^18.0.0
|
||||
@@ -3445,11 +3445,11 @@ snapshots:
|
||||
|
||||
'@appwrite.io/console@https://pkg.pr.new/appwrite/appwrite/@appwrite.io/console@61868a9': {}
|
||||
|
||||
'@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@29b227fb7ad99f66e5031701c457d89ac190cd27(svelte@5.27.0)':
|
||||
'@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f(svelte@5.25.3)':
|
||||
dependencies:
|
||||
svelte: 5.27.0
|
||||
|
||||
'@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@6b17cb23(svelte@5.27.0)':
|
||||
'@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f1fe1b018f3ef6aa6091874b28cfc4554(svelte@5.25.3)':
|
||||
dependencies:
|
||||
svelte: 5.27.0
|
||||
|
||||
@@ -3462,9 +3462,9 @@ snapshots:
|
||||
'@appwrite.io/pink-icons': 1.0.0
|
||||
the-new-css-reset: 1.11.3
|
||||
|
||||
'@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@29b227f(react-dom@18.3.1(react@18.3.1))(svelte@5.27.0)':
|
||||
'@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@bd21ff7f(react-dom@18.3.1(react@18.3.1))(svelte@5.25.3)':
|
||||
dependencies:
|
||||
'@appwrite.io/pink-icons-svelte': https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@29b227fb7ad99f66e5031701c457d89ac190cd27(svelte@5.27.0)
|
||||
'@appwrite.io/pink-icons-svelte': https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f1fe1b018f3ef6aa6091874b28cfc4554(svelte@5.25.3)
|
||||
'@floating-ui/dom': 1.6.13
|
||||
'@melt-ui/pp': 0.3.2(@melt-ui/svelte@0.86.6(svelte@5.27.0))(svelte@5.27.0)
|
||||
'@melt-ui/svelte': 0.86.6(svelte@5.27.0)
|
||||
|
||||
@@ -20,7 +20,8 @@
|
||||
Icon,
|
||||
Layout,
|
||||
Popover,
|
||||
Table
|
||||
Table,
|
||||
Typography
|
||||
} from '@appwrite.io/pink-svelte';
|
||||
import DeleteDomainModal from './deleteDomainModal.svelte';
|
||||
import RetryDomainModal from './retryDomainModal.svelte';
|
||||
@@ -73,25 +74,27 @@
|
||||
href={`${base}/organization-${page.params.organization}/domains/domain-${domain.$id}`}>
|
||||
{#each $columns as column}
|
||||
<Table.Cell column={column.id} {root}>
|
||||
{#if column.id === 'domain'}
|
||||
<Link
|
||||
external
|
||||
icon
|
||||
href={`${$protocol}${domain.domain}`}
|
||||
variant="quiet">
|
||||
{domain.domain}
|
||||
</Link>
|
||||
{:else if column.id === 'registrar'}
|
||||
{domain.registrar || '-'}
|
||||
{:else if column.id === 'nameservers'}
|
||||
{domain.nameservers || '-'}
|
||||
{:else if column.id === 'expiry_date'}
|
||||
{domain?.expiry ? toLocaleDateTime(domain.expiry) : '-'}
|
||||
{:else if column.id === 'renewal'}
|
||||
{domain?.renewal ? toLocaleDateTime(domain.renewal) : '-'}
|
||||
{:else if column.id === 'auto_renewal'}
|
||||
{domain?.autoRenewal ? 'On' : 'Off'}
|
||||
{/if}
|
||||
<Typography.Text truncate>
|
||||
{#if column.id === 'domain'}
|
||||
<Link
|
||||
external
|
||||
icon
|
||||
href={`${$protocol}${domain.domain}`}
|
||||
variant="quiet">
|
||||
{domain.domain}
|
||||
</Link>
|
||||
{:else if column.id === 'registrar'}
|
||||
{domain.registrar || '-'}
|
||||
{:else if column.id === 'nameservers'}
|
||||
{domain.nameservers || '-'}
|
||||
{:else if column.id === 'expiry_date'}
|
||||
{domain?.expiry ? toLocaleDateTime(domain.expiry) : '-'}
|
||||
{:else if column.id === 'renewal'}
|
||||
{domain?.renewal ? toLocaleDateTime(domain.renewal) : '-'}
|
||||
{:else if column.id === 'auto_renewal'}
|
||||
{domain?.autoRenewal ? 'On' : 'Off'}
|
||||
{/if}
|
||||
</Typography.Text>
|
||||
</Table.Cell>
|
||||
{/each}
|
||||
|
||||
|
||||
@@ -3,9 +3,9 @@ import { writable } from 'svelte/store';
|
||||
|
||||
export const columns = writable<Column[]>([
|
||||
{ id: 'domain', title: 'Domain', type: 'string', width: { min: 300 } },
|
||||
{ id: 'registrar', title: 'Registrar', type: 'string' },
|
||||
{ id: 'nameservers', title: 'Nameservers', type: 'string' },
|
||||
{ id: 'expiry_date', title: 'Expiry Date', type: 'datetime' },
|
||||
{ id: 'renewal', title: 'Renewal', type: 'boolean' },
|
||||
{ id: 'auto_renewal', title: 'Auto Renewal', type: 'boolean' }
|
||||
{ id: 'registrar', title: 'Registrar', type: 'string', width: { min: 120 } },
|
||||
{ id: 'nameservers', title: 'Nameservers', type: 'string', width: { min: 120 } },
|
||||
{ id: 'expiry_date', title: 'Expiry Date', type: 'datetime', width: { min: 120 } },
|
||||
{ id: 'renewal', title: 'Renewal', type: 'datetime', width: { min: 120 } },
|
||||
{ id: 'auto_renewal', title: 'Auto Renewal', type: 'boolean', width: { min: 80 } }
|
||||
]);
|
||||
|
||||
@@ -79,10 +79,10 @@
|
||||
<Table.Root
|
||||
let:root
|
||||
columns={[
|
||||
{ id: 'name' },
|
||||
{ id: 'email' },
|
||||
{ id: 'roles' },
|
||||
{ id: 'mfa' },
|
||||
{ id: 'name', width: { min: 200 } },
|
||||
{ id: 'email', width: { min: 200 } },
|
||||
{ id: 'roles', width: { min: 200 } },
|
||||
{ id: 'mfa', width: { min: 80 } },
|
||||
{ id: 'actions', hide: !$isOwner, width: 40 }
|
||||
]}>
|
||||
<svelte:fragment slot="header" let:root>
|
||||
@@ -107,16 +107,18 @@
|
||||
<Table.Cell column="name" {root}>
|
||||
<Layout.Stack direction="row" alignItems="center" gap="s">
|
||||
<AvatarInitials size="xs" name={member.userName} />
|
||||
<span class="u-trim">
|
||||
<Typography.Text truncate>
|
||||
{member.userName ? member.userName : 'n/a'}
|
||||
</span>
|
||||
</Typography.Text>
|
||||
{#if member.invited && !member.joined}
|
||||
<Badge type="warning" variant="secondary" content="Pending" size="xs" />
|
||||
{/if}
|
||||
</Layout.Stack>
|
||||
</Table.Cell>
|
||||
<Table.Cell column="email" {root}>
|
||||
{member.userEmail}
|
||||
<Typography.Text truncate>
|
||||
{member.userEmail}
|
||||
</Typography.Text>
|
||||
</Table.Cell>
|
||||
<Table.Cell column="roles" {root}>
|
||||
{member.roles.map((role) => getRoleLabel(role)).join(', ')}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<script lang="ts" context="module">
|
||||
import { total } from '$lib/helpers/array';
|
||||
import type { Metric } from '$lib/sdk/usage';
|
||||
|
||||
export function totalMetrics(set: Array<unknown>): number {
|
||||
if (!set) return 0;
|
||||
return total((set as Metric[]).map((c) => c.value));
|
||||
@@ -20,13 +23,12 @@
|
||||
import Requests from './requests.svelte';
|
||||
import { usage } from './store';
|
||||
import { formatNum } from '$lib/helpers/string';
|
||||
import { total } from '$lib/helpers/array';
|
||||
import type { Metric } from '$lib/sdk/usage';
|
||||
import { periodToDates } from '$lib/layout/usage.svelte';
|
||||
import { canWriteProjects } from '$lib/stores/roles';
|
||||
import { Card, Layout, Typography } from '@appwrite.io/pink-svelte';
|
||||
import { writable, type Writable } from 'svelte/store';
|
||||
import { IconPlus } from '@appwrite.io/pink-icons-svelte';
|
||||
import { isSmallViewport } from '$lib/stores/viewport';
|
||||
|
||||
$: projectId = page.params.project;
|
||||
$: path = `${base}/project-${projectId}/overview`;
|
||||
@@ -84,12 +86,11 @@
|
||||
</svelte:head>
|
||||
|
||||
<Container overlapCover>
|
||||
<!-- TODO: fix with nicer solution -->
|
||||
<div class="flex-container">
|
||||
<Layout.Stack gap="xxl">
|
||||
{#if $usage}
|
||||
{@const storage = humanFileSize($usage.filesStorageTotal ?? 0)}
|
||||
<section class="common-section">
|
||||
<div class="grid-dashboard-1s-2m-6l" style:gap="1rem">
|
||||
<Layout.Stack gap="xl">
|
||||
<Layout.Stack gap="l" direction={$isSmallViewport ? 'column' : 'row'}>
|
||||
<Card.Base
|
||||
class="is-2-columns-medium-screen is-3-columns-large-screen"
|
||||
padding="s">
|
||||
@@ -100,6 +101,9 @@
|
||||
padding="s">
|
||||
<Requests {period} on:change={(e) => changePeriod(e.detail)} />
|
||||
</Card.Base>
|
||||
</Layout.Stack>
|
||||
|
||||
<Layout.Stack gap="xl" direction={$isSmallViewport ? 'column' : 'row'}>
|
||||
<Card.Link
|
||||
padding="s"
|
||||
href={`${base}/project-${projectId}/databases`}
|
||||
@@ -193,43 +197,37 @@
|
||||
</div>
|
||||
</div>
|
||||
</Card.Link>
|
||||
<Card.Base
|
||||
padding="s"
|
||||
class="is-2-columns-medium-screen is-2-columns-large-screen is-2-rows-large-screen is-location-row-2-end-large-screen">
|
||||
<Realtime />
|
||||
</Card.Base>
|
||||
</div>
|
||||
</section>
|
||||
<!-- <Card.Base-->
|
||||
<!-- padding="s"-->
|
||||
<!-- class="is-2-columns-medium-screen is-2-columns-large-screen is-2-rows-large-screen is-location-row-2-end-large-screen">-->
|
||||
<!-- <Realtime />-->
|
||||
<!-- </Card.Base>-->
|
||||
</Layout.Stack>
|
||||
</Layout.Stack>
|
||||
{/if}
|
||||
|
||||
<Layout.Stack gap="xl">
|
||||
<Typography.Title>Integrations</Typography.Title>
|
||||
<Layout.Stack gap="xl" direction="row" justifyContent="space-between">
|
||||
<Tabs>
|
||||
<Tab
|
||||
noscroll
|
||||
href={`${path}/platforms`}
|
||||
selected={page.url.pathname === `${path}/platforms`}
|
||||
event="platforms">Platforms</Tab>
|
||||
<Tab
|
||||
noscroll
|
||||
href={`${path}/keys`}
|
||||
selected={page.url.pathname === `${path}/keys`}
|
||||
event="keys">API keys</Tab>
|
||||
</Tabs>
|
||||
{#if $action}
|
||||
<svelte:component this={$action} />
|
||||
{/if}
|
||||
<div class="u-margin-block-start-64">
|
||||
<Layout.Stack gap="xl">
|
||||
<Typography.Title>Integrations</Typography.Title>
|
||||
<Layout.Stack gap="xl" direction="row" justifyContent="space-between">
|
||||
<Tabs>
|
||||
<Tab
|
||||
noscroll
|
||||
href={`${path}/platforms`}
|
||||
selected={page.url.pathname === `${path}/platforms`}
|
||||
event="platforms">Platforms</Tab>
|
||||
<Tab
|
||||
noscroll
|
||||
href={`${path}/keys`}
|
||||
selected={page.url.pathname === `${path}/keys`}
|
||||
event="keys">API keys</Tab>
|
||||
</Tabs>
|
||||
{#if $action}
|
||||
<svelte:component this={$action} />
|
||||
{/if}
|
||||
</Layout.Stack>
|
||||
<slot />
|
||||
</Layout.Stack>
|
||||
<slot />
|
||||
</Layout.Stack>
|
||||
</div>
|
||||
</div>
|
||||
</Layout.Stack>
|
||||
</Container>
|
||||
|
||||
<style>
|
||||
.flex-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--space-12);
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -217,7 +217,6 @@
|
||||
{:else}
|
||||
<Empty
|
||||
single
|
||||
href="https://appwrite.io/docs/products/storage/upload-download"
|
||||
target="file"
|
||||
on:click={() => {
|
||||
goto(
|
||||
|
||||
Reference in New Issue
Block a user