diff --git a/src/lib/components/Metadata.svelte b/src/lib/components/Metadata.svelte new file mode 100644 index 0000000000..30c99983d9 --- /dev/null +++ b/src/lib/components/Metadata.svelte @@ -0,0 +1,72 @@ + + + + +{#if title} + {title} + +{/if} +{#if description} + +{/if} +{#if ogImage} + + + + + +{/if} +{#if ogTitle} + + +{/if} +{#if ogDescription} + + +{/if} +{#if author} + {@html ``} +{/if} +{#if post} + {@html ``} +{/if} + diff --git a/src/lib/components/index.ts b/src/lib/components/index.ts index 86191183b0..329fbd8d76 100644 --- a/src/lib/components/index.ts +++ b/src/lib/components/index.ts @@ -9,3 +9,4 @@ export { default as Tooltip } from './Tooltip.svelte'; export { default as Spline } from './Spline.svelte'; export { default as Article } from './Article.svelte'; export { default as Carousel } from './Carousel.svelte'; +export { default as Metadata } from './Metadata.svelte'; diff --git a/src/markdoc/layouts/Article.svelte b/src/markdoc/layouts/Article.svelte index fe92dc32f6..9a7f64f795 100644 --- a/src/markdoc/layouts/Article.svelte +++ b/src/markdoc/layouts/Article.svelte @@ -16,9 +16,10 @@ - {title}{DOCS_TITLE_SUFFIX} - + diff --git a/src/markdoc/layouts/Author.svelte b/src/markdoc/layouts/Author.svelte index 9c84fcf425..4d7e57acfa 100644 --- a/src/markdoc/layouts/Author.svelte +++ b/src/markdoc/layouts/Author.svelte @@ -13,7 +13,7 @@ - {name + BLOG_TITLE_SUFFIX} +
diff --git a/src/markdoc/layouts/Category.svelte b/src/markdoc/layouts/Category.svelte index da34266bb3..5a9e407a27 100644 --- a/src/markdoc/layouts/Category.svelte +++ b/src/markdoc/layouts/Category.svelte @@ -7,7 +7,7 @@ - {name + BLOG_TITLE_SUFFIX} +
diff --git a/src/markdoc/layouts/Post.svelte b/src/markdoc/layouts/Post.svelte index 8eeb4a447c..2457801b44 100644 --- a/src/markdoc/layouts/Post.svelte +++ b/src/markdoc/layouts/Post.svelte @@ -13,12 +13,13 @@ - {title + BLOG_TITLE_SUFFIX} +
diff --git a/src/markdoc/layouts/Tutorial.svelte b/src/markdoc/layouts/Tutorial.svelte index b489ff2cda..c2a4e73da4 100644 --- a/src/markdoc/layouts/Tutorial.svelte +++ b/src/markdoc/layouts/Tutorial.svelte @@ -9,7 +9,7 @@ - {title}{DOCS_TITLE_SUFFIX} - + diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 92f6d83dd0..50fe25b6da 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -10,12 +10,18 @@ import '@fontsource/inter/900.css'; import '$scss/index.scss'; import { dev } from '$app/environment'; + import { Metadata } from '$lib/components'; + import { DEFAULT_HOST } from '$lib/components/Metadata.svelte'; {#if !dev} {/if} + diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 5cfb45fd53..173c0e8c76 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,6 +1,6 @@ - Assets{TITLE_SUFFIX} +
@@ -347,16 +348,16 @@

- + placeholder
- + placeholder
- + placeholder
- + placeholder
diff --git a/src/routes/blog/+page.svelte b/src/routes/blog/+page.svelte index d971f8ebc7..7f2b35bdd1 100644 --- a/src/routes/blog/+page.svelte +++ b/src/routes/blog/+page.svelte @@ -1,7 +1,8 @@ - Blog{TITLE_SUFFIX} +
diff --git a/src/routes/community/+page.svelte b/src/routes/community/+page.svelte index 8dd3fb1073..10c75031ff 100644 --- a/src/routes/community/+page.svelte +++ b/src/routes/community/+page.svelte @@ -3,12 +3,12 @@ import MainFooter from '$lib/components/MainFooter.svelte'; import FooterNav from '$lib/components/FooterNav.svelte'; import PreFooter from '$lib/components/PreFooter.svelte'; - import { Carousel } from '$lib/components'; + import { Carousel, Metadata } from '$lib/components'; import { TITLE_SUFFIX } from '$routes/titles'; - Community{TITLE_SUFFIX} +
diff --git a/src/routes/company/+page.svelte b/src/routes/company/+page.svelte index 2adaada2e1..6c40733da3 100644 --- a/src/routes/company/+page.svelte +++ b/src/routes/company/+page.svelte @@ -3,10 +3,11 @@ import MainFooter from '$lib/components/MainFooter.svelte'; import FooterNav from '$lib/components/FooterNav.svelte'; import { TITLE_SUFFIX } from '$routes/titles'; + import { Metadata } from '$lib/components'; - Company{TITLE_SUFFIX} +
diff --git a/src/routes/contact-us/+page.svelte b/src/routes/contact-us/+page.svelte index 3877c0f97a..6365cf6d19 100644 --- a/src/routes/contact-us/+page.svelte +++ b/src/routes/contact-us/+page.svelte @@ -1,4 +1,5 @@ - Contact us{TITLE_SUFFIX} +
diff --git a/src/routes/cookies/+page.svelte b/src/routes/cookies/+page.svelte index 1ce779ca27..0f6ff34db3 100644 --- a/src/routes/cookies/+page.svelte +++ b/src/routes/cookies/+page.svelte @@ -1,4 +1,5 @@ - Cookies{TITLE_SUFFIX} +
diff --git a/src/routes/docs/+layout.svelte b/src/routes/docs/+layout.svelte new file mode 100644 index 0000000000..4e3c72123a --- /dev/null +++ b/src/routes/docs/+layout.svelte @@ -0,0 +1,11 @@ + + + + + + + diff --git a/src/routes/docs/quick-starts/nuxt/+page.markdoc b/src/routes/docs/quick-starts/nuxt/+page.markdoc index 37b561cd4c..c5c379c26c 100644 --- a/src/routes/docs/quick-starts/nuxt/+page.markdoc +++ b/src/routes/docs/quick-starts/nuxt/+page.markdoc @@ -6,11 +6,125 @@ difficulty: beginner readtime: 3 --- -Improve the docs, add this guide. +Learn to setup your first Nuxt project powered by Appwrite. +{% section #step-1 step=1 title="Create project" %} +Head to the [Appwrite Console](https://cloud.appwrite.io/console). -We still don't have this guide in place, but we do have some great news. -The Appwrite docs, just like Appwrite, is completely open sourced. -This means, anyone can help improve them and add new guides and tutorials. +{% only_dark %} +![Create project screen](/images/docs/quick-starts/dark/create-project.png) +{% /only_dark %} +{% only_light %} +![Create project screen](/images/docs/quick-starts/create-project.png) +{% /only_light %} -If you see this page, **we're actively looking for contributions to this page**. -Follow our contribution guidelines, open a PR to [our Website repo](https://github.com/appwrite/website), and collaborate with our core team to improve this page. \ No newline at end of file +If this is your first time using Appwrite, create an account and create your first project. + +Then, under **Add a platform**, add a **Web app**. The **Hostname** should be `localhost`. + + +{% only_dark %} +![Add a platform](/images/docs/quick-starts/dark/add-platform.png) +{% /only_dark %} +{% only_light %} +![Add a platform](/images/docs/quick-starts/add-platform.png) +{% /only_light %} + +You can skip optional steps. + +{% /section %} +{% section #step-2 step=2 title="Create Nuxt project" %} +Create a Nuxt project. + +```sh +npx nuxi@latest init my-app && cd my app + +``` +{% /section %} +{% section #step-3 step=3 title="Install Appwrite" %} + +Install the JavaScript Appwrite SDK. + +```sh +npm install appwrite +``` +{% /section %} +{% section #step-4 step=4 title="Import Appwrite" %} +Find your project's ID in the **Settings** page. + +{% only_dark %} +![Project settings screen](/images/docs/quick-starts/dark/project-id.png) +{% /only_dark %} +{% only_light %} +![Project settings screen](/images/docs/quick-starts/project-id.png) +{% /only_light %} + +Create a new file `utils/appwrite.js` and add the following code to it, replace `` with your project ID. + +```js +import { Client, Account} from 'appwrite'; + +export const client = new Client(); + +client + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject(''); // Replace with your project ID + +export const account = new Account(client); +export { ID } from 'appwrite'; +``` +{% /section %} +{% section #step-5 step=5 title="Create a login page" %} +Add the following code to `app.vue`. + +```html + + + +``` +{% /section %} + +{% section #step-6 step=6 title="Checkout what you've built" %} +Run your project with `npm run dev -- --open --port 3000` and open [http://localhost:3000](http://localhost:3000) in your browser. +{% /section %} diff --git a/src/routes/docs/references/+layout.svelte b/src/routes/docs/references/+layout.svelte index fa9c52f851..e1225b5ffb 100644 --- a/src/routes/docs/references/+layout.svelte +++ b/src/routes/docs/references/+layout.svelte @@ -73,16 +73,16 @@ } ] }, - { - label: 'Debugging', - items: [ - { - icon: 'icon-document-search', - label: 'Response codes', - href: '/docs/advanced/platform/response-codes' - } - ] - } + // { + // label: 'Debugging', + // items: [ + // { + // icon: 'icon-document-search', + // label: 'Response codes', + // href: '/docs/advanced/platform/response-codes' + // } + // ] + // } ] as NavTree; const parent: NavParent = { diff --git a/src/routes/docs/references/[version]/[platform]/[service]/+page.svelte b/src/routes/docs/references/[version]/[platform]/[service]/+page.svelte index 25772f518a..dfebb90ded 100644 --- a/src/routes/docs/references/[version]/[platform]/[service]/+page.svelte +++ b/src/routes/docs/references/[version]/[platform]/[service]/+page.svelte @@ -1,7 +1,7 @@ - {serviceName}{DOCS_TITLE_SUFFIX} +
diff --git a/src/routes/heroes/+page.svelte b/src/routes/heroes/+page.svelte index 93a05b3f7a..ab72b2e236 100644 --- a/src/routes/heroes/+page.svelte +++ b/src/routes/heroes/+page.svelte @@ -1,11 +1,11 @@ - Heroes{TITLE_SUFFIX} +
- import { FooterNav, MainFooter, PreFooter } from '$lib/components'; + import { FooterNav, MainFooter, Metadata, PreFooter } from '$lib/components'; import { Main } from '$lib/layouts'; import { TITLE_SUFFIX } from '$routes/titles'; @@ -8,7 +8,7 @@ - Pricing{TITLE_SUFFIX} +
diff --git a/src/routes/privacy/+page.svelte b/src/routes/privacy/+page.svelte index fded808e02..ca0d950000 100644 --- a/src/routes/privacy/+page.svelte +++ b/src/routes/privacy/+page.svelte @@ -1,4 +1,5 @@ - Privacy{TITLE_SUFFIX} +
diff --git a/src/scss/7-components/_side-nav.scss b/src/scss/7-components/_side-nav.scss index 3bf60ec707..61710f14f6 100644 --- a/src/scss/7-components/_side-nav.scss +++ b/src/scss/7-components/_side-nav.scss @@ -18,14 +18,14 @@ position:sticky; z-index:35; inset-block-start:pxToRem(74); inset-block-end:0; - block-size:calc(100vh - pxToRem(75)); + block-size:calc(100vh - pxToRem(81)); .#{$p}-icon-button { transition:var(--transition); margin-block-end:pxToRem(-4); margin-inline-end:pxToRem(6); } &-wrapper { display:flex; flex-direction:column; block-size:100%; gap:pxToRem(16); - padding-inline:pxToRem(16); + padding:pxToRem(16); padding-block-end:pxToRem(32); background-color:hsl(var(--p-side-nav-bg-color)); transition:var(--transition); &-parent { @@ -39,7 +39,7 @@ @include scroll(); overflow-y:auto; overflow-x:hidden; flex:1; display:flex; flex-direction:column; gap:pxToRem(24); - padding:pxToRem(16); margin-inline:pxToRem(-16); + padding-inline:pxToRem(16); margin-inline:pxToRem(-16); .#{$p}-is-only-mobile & { border-block-start: 1px solid hsl(var(--aw-color-smooth)); diff --git a/static/images/open-graph/blog.png b/static/images/open-graph/blog.png new file mode 100644 index 0000000000..cfd81f4b4a Binary files /dev/null and b/static/images/open-graph/blog.png differ diff --git a/static/images/open-graph/docs.png b/static/images/open-graph/docs.png new file mode 100644 index 0000000000..99d78e8960 Binary files /dev/null and b/static/images/open-graph/docs.png differ diff --git a/static/images/open-graph/website.png b/static/images/open-graph/website.png new file mode 100644 index 0000000000..3f9c57ff26 Binary files /dev/null and b/static/images/open-graph/website.png differ