Skip to content

Commit 1e00a6c

Browse files
authored
Merge branch 'main' into add-mid-content-cta
2 parents 592c63b + 8ecb621 commit 1e00a6c

File tree

59 files changed

+1869
-58
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+1869
-58
lines changed

src/lib/components/FooterNav.svelte

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@
3535
Products: [
3636
{ label: 'Auth', href: '/products/auth' },
3737
{ label: 'Databases', href: '/docs/products/databases' },
38+
{ label: 'Storage', href: '/products/storage' },
3839
{ label: 'Functions', href: '/products/functions' },
3940
{ label: 'Messaging', href: '/products/messaging' },
40-
{ label: 'Storage', href: '/products/storage' },
4141
{ label: 'Realtime', href: '/docs/apis/realtime' },
42-
{ label: 'Network', href: '/docs/products/network' },
43-
{ label: 'Hosting', href: '/docs/products/sites' }
42+
{ label: 'Hosting', href: '/docs/products/sites' },
43+
{ label: 'Network', href: '/docs/products/network' }
4444
],
4545
Learn: [
4646
{ label: 'Blog', href: '/blog' },

src/lib/components/ProductsSubmenu.svelte

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,17 @@
4343
description: 'Set up a full-functioning messaging service.',
4444
icon: '/images/icons/illustrated/dark/messaging.png'
4545
},
46-
{
47-
name: 'Sites',
48-
href: '/products/sites',
49-
description: 'The open-source Vercel alternative.',
50-
icon: '/images/icons/illustrated/dark/sites.png'
51-
},
5246
{
5347
name: 'Realtime',
5448
href: '/docs/apis/realtime',
5549
description: 'Subscribe and react to any event.',
5650
icon: '/images/icons/illustrated/dark/realtime.png'
51+
},
52+
{
53+
name: 'Sites',
54+
href: '/products/sites',
55+
description: 'The open-source Vercel alternative.',
56+
icon: '/images/icons/illustrated/dark/sites.png'
5757
}
5858
];
5959

src/lib/components/layout/navigation/menus/product-menu.svelte

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@
3333
name: 'Realtime',
3434
href: '/docs/apis/realtime',
3535
description: 'Subscribe and react to any event.'
36+
},
37+
{
38+
name: 'Sites',
39+
href: '/products/sites',
40+
description: 'The open-source Vercel alternative.'
3641
}
3742
];
3843
</script>

src/lib/components/layout/navigation/mobile-nav.svelte

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@
3333
name: 'Realtime',
3434
href: '/docs/apis/realtime',
3535
description: 'Subscribe and react to any event.'
36+
},
37+
{
38+
name: 'Sites',
39+
href: '/products',
40+
description: 'The open-source Vercel alternative.'
3641
}
3742
];
3843

src/lib/components/layout/site-footer.svelte

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@
3434
Products: [
3535
{ label: 'Auth', href: '/products/auth' },
3636
{ label: 'Databases', href: '/docs/products/databases' },
37+
{ label: 'Storage', href: '/products/storage' },
3738
{ label: 'Functions', href: '/products/functions' },
3839
{ label: 'Messaging', href: '/products/messaging' },
39-
{ label: 'Storage', href: '/products/storage' },
40-
{ label: 'Realtime', href: '/docs/apis/realtime' }
40+
{ label: 'Realtime', href: '/docs/apis/realtime' },
41+
{ label: 'Sites', href: '/products/sites' }
4142
],
4243
Learn: [
4344
{ label: 'Docs', href: '/docs' },

src/lib/components/product-pages/product-cards.svelte

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,12 @@
11
<script lang="ts">
22
import { page } from '$app/state';
3-
43
const allProducts = {
5-
messaging: {
6-
title: 'Messaging',
7-
description: 'Use Appwrite messaging to send email, SMS, and push notifications.',
8-
icon: '/images/icons/illustrated/dark/messaging.png',
9-
url: '/products/messaging'
10-
},
114
auth: {
125
title: 'Auth',
136
description: 'Build secure authentication and manage your users.',
147
icon: '/images/icons/illustrated/dark/auth.png',
158
url: '/products/auth'
169
},
17-
functions: {
18-
title: 'Functions',
19-
description: ' Scale big and unlock limitless potential with Appwrite functions.',
20-
icon: '/images/icons/illustrated/dark/functions.png',
21-
url: '/products/functions'
22-
},
2310
databases: {
2411
title: 'Databases',
2512
description: 'Store and query structured data, ensuring scalable storage.',
@@ -32,17 +19,30 @@
3219
icon: '/images/icons/illustrated/dark/storage.png',
3320
url: '/products/storage'
3421
},
35-
sites: {
36-
title: 'Sites',
37-
description: 'The open-source Vercel alternative.',
38-
icon: '/images/icons/illustrated/dark/sites.png',
39-
url: '/products/sites'
22+
functions: {
23+
title: 'Functions',
24+
description: ' Scale big and unlock limitless potential with Appwrite functions.',
25+
icon: '/images/icons/illustrated/dark/functions.png',
26+
url: '/products/functions'
27+
},
28+
29+
messaging: {
30+
title: 'Messaging',
31+
description: 'Use Appwrite messaging to send email, SMS, and push notifications.',
32+
icon: '/images/icons/illustrated/dark/messaging.png',
33+
url: '/products/messaging'
4034
},
4135
realtime: {
4236
title: 'Realtime',
4337
description: 'Subscribe and react to any event using the Realtime API.',
4438
icon: '/images/icons/illustrated/dark/realtime.png',
4539
url: '/docs/realtime'
40+
},
41+
sites: {
42+
title: 'Sites',
43+
description: 'The open-source Vercel alternative.',
44+
icon: '/images/icons/illustrated/dark/sites.png',
45+
url: '/products/sites'
4646
}
4747
} as const;
4848

src/lib/constants.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,13 @@ export type SocialShareOption = {
5959
type: 'link' | 'copy';
6060
};
6161

62-
export type IntegrationCategory = {
62+
export type SearchableCategory = {
6363
slug: string;
6464
heading: string;
6565
description: string;
6666
};
6767

68-
export const integrationCategoryDescriptions: IntegrationCategory[] = [
68+
export const integrationCategoryDescriptions: SearchableCategory[] = [
6969
{
7070
slug: 'ai',
7171
heading: 'AI',
@@ -118,6 +118,14 @@ export const integrationCategoryDescriptions: IntegrationCategory[] = [
118118
}
119119
];
120120

121+
export const partnerCategoryDescriptions: SearchableCategory[] = [
122+
{
123+
slug: 'agency',
124+
heading: 'Agency',
125+
description: 'Agencies that build software for their clients using Appwrite'
126+
}
127+
];
128+
121129
export const socialSharingOptions: Array<SocialShareOption> = [
122130
{
123131
icon: 'web-icon-x',

src/lib/utils/console.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,33 @@ const BillingPlan = {
1717
SCALE: 'tier-2'
1818
} as const;
1919

20+
const ASCII_ART = `
21+
_ _ _
22+
/_\\ _ __ _ ____ ___ __(_) |_ ___
23+
//_\\\\| '_ \\| '_ \\ \\ /\\ / / '__| | __/ _ \\
24+
/ _ \\ |_) | |_) \\ V V /| | | | || __/
25+
\\_/ \\_/ .__/| .__/ \\_/\\_/ |_| |_|\\__\\___|
26+
|_| |_|
27+
`;
28+
29+
export function displayHiringMessage() {
30+
if (browser) {
31+
console.log('%c' + ASCII_ART, 'font-family: monospace; white-space: pre; color: #fd366e;');
32+
console.log(
33+
'%cWe are hiring!',
34+
'font-family: Aeonik Pro, -apple-system, BlinkMacSystemFont, sans-serif; font-size: 20px; font-weight: bold;'
35+
);
36+
console.log(
37+
'%cJoin us in building the open-source, all-in-one development platform',
38+
'font-family: Inter, -apple-system, BlinkMacSystemFont, sans-serif; font-size: 14px;'
39+
);
40+
console.log(
41+
'%cCheck out our open positions at https://appwrite.io/careers',
42+
'font-family: monospace; color: #666;'
43+
);
44+
}
45+
}
46+
2047
export async function createSource(
2148
ref: string | null,
2249
referrer: string | null,

src/markdoc/layouts/Partner.svelte

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
<script lang="ts">
2+
import FooterNav from '$lib/components/FooterNav.svelte';
3+
import MainFooter from '$lib/components/MainFooter.svelte';
4+
import { Main } from '$lib/layouts';
5+
import { DEFAULT_HOST } from '$lib/utils/metadata';
6+
7+
import { classNames } from '$lib/utils/classnames';
8+
import type { Partner } from '$routes/partners/catalog/+page';
9+
import ContactPartner from '$routes/partners/catalog/(components)/contact-partner.svelte';
10+
11+
export let title: Partner['title'];
12+
export let partnerLevel: Partner['partnerLevel'];
13+
export let category: Partner['category'];
14+
export let description: Partner['description'];
15+
export let cover: Partner['cover'];
16+
export let capabilities: Partner['capabilities'];
17+
export let frameworks: Partner['frameworks'];
18+
export let regions: Partner['regions'];
19+
export let languages: Partner['languages'];
20+
export let website: Partner['website'];
21+
22+
const ogImage = DEFAULT_HOST + cover;
23+
</script>
24+
25+
<svelte:head>
26+
<!-- Titles -->
27+
<title>{title}</title>
28+
<meta property="og:title" content={title} />
29+
<meta name="twitter:title" content={title} />
30+
<!-- Description -->
31+
<meta name="description" content={description} />
32+
<meta property="og:description" content={description} />
33+
<meta name="twitter:description" content={description} />
34+
<!-- Image -->
35+
<meta property="og:image" content={ogImage} />
36+
<meta property="og:image:width" content="1200" />
37+
<meta property="og:image:height" content="630" />
38+
<meta name="twitter:image" content={ogImage} />
39+
<meta name="twitter:card" content="summary_large_image" />
40+
</svelte:head>
41+
42+
<Main>
43+
<div
44+
class={classNames(
45+
'grid-bg border-smooth relative flex items-center border-b px-5 py-28 lg:px-8 xl:px-16',
46+
'before:from-accent/20 before:absolute before:inset-0 before:-z-1 before:bg-linear-to-tr before:via-transparent before:via-40% before:to-transparent'
47+
)}
48+
>
49+
<div class="relative container w-full pb-0">
50+
<div class="flex flex-col gap-7">
51+
<a href="/partners" class="text-caption text-primary group flex gap-2">
52+
<span class="web-icon-arrow-left transition group-hover:-translate-x-1" />
53+
Back to Partners Catalog
54+
</a>
55+
<h1 class="text-headline font-aeonik-pro text-primary">{title}</h1>
56+
</div>
57+
</div>
58+
</div>
59+
60+
<div class="py-10">
61+
<div class="container">
62+
<article class="flex flex-col gap-10 md:gap-14">
63+
<div class="grid grid-cols-1 gap-10 md:grid-cols-12 md:gap-x-14">
64+
<div class="md:col-span-7">
65+
<div class="web-article">
66+
<div class="web-article-content">
67+
<slot />
68+
</div>
69+
<ContactPartner />
70+
</div>
71+
</div>
72+
<div class="md:col-span-5">
73+
<h2 class="text-label text-primary font-aeonik-pro">About {title}</h2>
74+
<dl class="divide-smooth sticky top-32 mt-10 flex flex-col gap-7 divide-y">
75+
<div class="flex flex-col justify-between gap-7 pb-7">
76+
<dt class="text-micro font-aeonik-fono tracking-loose uppercase">
77+
Frameworks
78+
</dt>
79+
<dd class="flex flex-wrap gap-2">
80+
{#each frameworks as framework}
81+
<div
82+
class="text-primary text-caption bg-smooth rounded-full px-3 py-1"
83+
>
84+
{framework}
85+
</div>
86+
{/each}
87+
</dd>
88+
</div>
89+
90+
<div class="flex flex-col justify-between gap-7 pb-7">
91+
<dt class="text-micro font-aeonik-fono tracking-loose uppercase">
92+
Capabilities
93+
</dt>
94+
<dd class="flex flex-wrap gap-2">
95+
{#each capabilities as capability}
96+
<div
97+
class="text-primary text-caption bg-smooth rounded-full px-3 py-1"
98+
>
99+
{capability}
100+
</div>
101+
{/each}
102+
</dd>
103+
</div>
104+
105+
<div class="flex items-center justify-between gap-7 pb-7">
106+
<dt class="text-micro font-aeonik-fono tracking-loose uppercase">
107+
Category
108+
</dt>
109+
<dd class="text-primary text-caption">{category}</dd>
110+
</div>
111+
112+
<div class="flex items-center justify-between gap-7 pb-7">
113+
<dt class="text-micro font-aeonik-fono tracking-loose uppercase">
114+
Website
115+
</dt>
116+
<dd
117+
class="text-primary text-caption font-medium underline underline-offset-4"
118+
>
119+
{website}
120+
</dd>
121+
</div>
122+
123+
<div class="flex items-center justify-between gap-7 pb-7">
124+
<dt class="text-micro font-aeonik-fono tracking-loose uppercase">
125+
Partner Level
126+
</dt>
127+
<dd>
128+
<div
129+
class="text-primary text-caption rounded bg-white/24 px-2 py-0.5"
130+
>
131+
{partnerLevel}
132+
</div>
133+
</dd>
134+
</div>
135+
136+
<div class="flex items-center justify-between gap-8 pb-7">
137+
<dt class="text-micro font-aeonik-fono tracking-loose uppercase">
138+
Regions
139+
</dt>
140+
<dd class="text-primary text-caption">
141+
{regions.join(', ')}
142+
</dd>
143+
</div>
144+
145+
<div class="flex flex-col justify-between gap-7 pb-7">
146+
<dt class="text-micro font-aeonik-fono tracking-loose uppercase">
147+
Languages
148+
</dt>
149+
<dd class="flex flex-wrap gap-2">
150+
{#each languages as language}
151+
<div
152+
class="text-primary text-caption bg-smooth rounded-full px-3 py-1"
153+
>
154+
{language}
155+
</div>
156+
{/each}
157+
</dd>
158+
</div>
159+
</dl>
160+
</div>
161+
</div>
162+
</article>
163+
</div>
164+
</div>
165+
166+
<div class="mt-12 overflow-hidden py-10">
167+
<div class="container">
168+
<FooterNav />
169+
<MainFooter />
170+
</div>
171+
</div>
172+
</Main>

src/routes/(marketing)/(components)/bento/bento.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<script>
1+
<script lang="ts">
22
import { classNames } from '$lib/utils/classnames';
33
import Auth from './(animations)/auth.svelte';
44
import Databases from './(animations)/databases.svelte';

0 commit comments

Comments
 (0)