diff --git a/.github/ISSUE_TEMPLATE/3-bug_report.yml b/.github/ISSUE_TEMPLATE/3-bug_report.yml index 137a488..176aba7 100644 --- a/.github/ISSUE_TEMPLATE/3-bug_report.yml +++ b/.github/ISSUE_TEMPLATE/3-bug_report.yml @@ -24,7 +24,7 @@ body: attributes: label: Reproduction description: | - Please provide a link to a repo or Stackblitz that can reproduce the problem you ran into. If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "needs reproduction" label. If no reproduction is provided within a reasonable time-frame, the issue will be closed. + Please provide a link to a repo or StackBlitz that can reproduce the problem you ran into. If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "needs reproduction" label. If no reproduction is provided within a reasonable time-frame, the issue will be closed. placeholder: Reproduction validations: required: true diff --git a/.github/workflows/build-preview.yml b/.github/workflows/build-preview.yml index 262150c..7788079 100644 --- a/.github/workflows/build-preview.yml +++ b/.github/workflows/build-preview.yml @@ -11,7 +11,7 @@ on: jobs: build-preview: - runs-on: ubuntu-latest + runs-on: macos-latest steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 @@ -30,4 +30,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: preview-build - path: sites/docs/.svelte-kit/cloudflare + path: docs/.svelte-kit/cloudflare diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2183865..0c2c6bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,7 +4,18 @@ on: push: branches: - main + - next + paths-ignore: + - ".changeset/**" + - README.md + - ".vscode/**" + - CHANGELOG.md pull_request: + paths-ignore: + - ".changeset/**" + - README.md + - ".vscode/**" + - CHANGELOG.md concurrency: group: ${{ github.workflow }}-${{ github.event.number || github.sha }} @@ -13,7 +24,7 @@ concurrency: jobs: Check: name: Run svelte-check - runs-on: ubuntu-latest + runs-on: macos-latest steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 @@ -29,7 +40,7 @@ jobs: run: pnpm check Lint: - runs-on: ubuntu-latest + runs-on: macos-latest name: Lint steps: - uses: actions/checkout@v4 @@ -42,22 +53,4 @@ jobs: - name: Install dependencies run: pnpm install - - name: Lint - run: pnpm lint - - Test: - name: Test - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: pnpm - - - name: Install dependencies - run: pnpm install - - - name: Test - run: pnpm test + - run: pnpm lint diff --git a/.github/workflows/deploy-preview.yml b/.github/workflows/deploy-preview.yml index d61b2cd..9fbf454 100644 --- a/.github/workflows/deploy-preview.yml +++ b/.github/workflows/deploy-preview.yml @@ -14,7 +14,7 @@ permissions: jobs: deploy-preview: - runs-on: ubuntu-latest + runs-on: macos-latest if: ${{ github.event.workflow_run.conclusion == 'success' }} steps: - name: Download build artifact diff --git a/.github/workflows/deploy-prod.yml b/.github/workflows/deploy-prod.yml index c82b2d6..030ec10 100644 --- a/.github/workflows/deploy-prod.yml +++ b/.github/workflows/deploy-prod.yml @@ -4,12 +4,13 @@ on: branches: - main paths: - - sites/docs/** + - docs/** - packages/formsnap/** + workflow_dispatch: jobs: deploy-production: - runs-on: ubuntu-latest + runs-on: macos-latest permissions: contents: read deployments: write @@ -36,5 +37,5 @@ jobs: githubToken: ${{ secrets.GITHUB_TOKEN }} projectName: formsnap directory: ./.svelte-kit/cloudflare - workingDirectory: sites/docs + workingDirectory: docs deploymentName: Production diff --git a/.github/workflows/preview-release.yml b/.github/workflows/preview-release.yml new file mode 100644 index 0000000..617ff99 --- /dev/null +++ b/.github/workflows/preview-release.yml @@ -0,0 +1,28 @@ +name: Publish Preview Release +on: + pull_request: + types: [ready_for_review, synchronize, opened, labeled] + paths: [packages/**] + +jobs: + preview-release: + if: github.repository == 'svecosystem/formsnap' && contains(github.event.pull_request.labels.*.name, 'publish:preview') + timeout-minutes: 5 + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + + - name: install dependencies + run: pnpm install + + - name: build + run: pnpm build:packages + + - name: publish preview + run: | + pnpx pkg-pr-new@0.0 publish --pnpm --compact './packages/*' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3688810..d864b6f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,14 +14,11 @@ jobs: contents: write # to create release (changesets/action) pull-requests: write # to create pull request (changesets/action) name: Release - runs-on: ubuntu-latest + runs-on: macos-latest steps: - - name: Checkout Repo - uses: actions/checkout@v4 + - uses: actions/checkout@v4 with: - # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits fetch-depth: 0 - - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: @@ -35,8 +32,6 @@ jobs: id: changesets uses: changesets/action@v1 with: - commit: "chore(release): version package" - title: "chore(release): version package" publish: pnpm ci:publish env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.prettierignore b/.prettierignore index f048cbe..6ee1dd1 100644 --- a/.prettierignore +++ b/.prettierignore @@ -20,4 +20,6 @@ package.json CHANGELOG.md vite.config.js.timestamp-* -vite.config.ts.timestamp-* \ No newline at end of file +vite.config.ts.timestamp-* + +docs/.velite/**/* \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index ec0efcf..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - // Enable the ESlint flat config support - "eslint.useFlatConfig": true, - - // Auto fix - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit", - "source.organizeImports": "never" - }, - - // Enable eslint for all supported languages - "eslint.validate": [ - "javascript", - "javascriptreact", - "typescript", - "typescriptreact", - "vue", - "svelte", - "html", - "markdown", - "json", - "jsonc", - "yaml", - "toml", - "astro" - ] -} diff --git a/sites/docs/.gitignore b/docs/.gitignore similarity index 64% rename from sites/docs/.gitignore rename to docs/.gitignore index 7fda903..79518f7 100644 --- a/sites/docs/.gitignore +++ b/docs/.gitignore @@ -1,14 +1,21 @@ -.DS_Store node_modules -/build + +# Output +.output +.vercel /.svelte-kit -/package +/build + +# OS +.DS_Store +Thumbs.db + +# Env .env .env.* !.env.example +!.env.test + +# Vite vite.config.js.timestamp-* vite.config.ts.timestamp-* -.contentlayer -.contentlayer/ -/.contentlayer -.vercel \ No newline at end of file diff --git a/docs/.npmrc b/docs/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/docs/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/docs/.velite/docs.json b/docs/.velite/docs.json new file mode 100644 index 0000000..aed4a35 --- /dev/null +++ b/docs/.velite/docs.json @@ -0,0 +1,594 @@ +[ + { + "title": "Introduction", + "description": "What is this?", + "path": "index", + "content": "

Formsnap takes the already incredible sveltekit-superforms (winner of Svelte Hack 2023 for best library), made by the brilliant Andreas Söderlund and wraps it with components that make it simpler to use while making your forms accessible by default.

\n

The Same Form, Two Ways

\n

To showcase the value provided by Formsnap, let's take a look at a simple sign up form using only Superforms, and then using Superforms with Formsnap.

\n

Superforms Only

\n
<script lang=\"ts\">\n\timport type { PageData } from \"./$types\";\n\timport { superForm } from \"sveltekit-superforms\";\n\timport { zodClient } from \"sveltekit-superforms/adapters\";\n\timport { signupFormSchema } from \"./schema\";\n\tlet { data } = $props();\n\n\tconst { form, errors, enhance, constraints } = superForm(data.form, {\n\t\tvalidators: zodClient(signupFormSchema),\n\t});\n</script>\n\n<form method=\"POST\" use:enhance>\n\t<label for=\"name\">Name</label>\n\t<input\n\t\tid=\"name\"\n\t\tname=\"name\"\n\t\taria-describedby={$errors.name ? \"name-error name-desc\" : \"name-desc\"}\n\t\taria-invalid={$errors.name ? \"true\" : undefined}\n\t\taria-required={$constraints.name?.required ? \"true\" : undefined}\n\t\tbind:value={$form.name}\n\t/>\n\t<span id=\"name-desc\">Be sure to use your real name.</span>\n\t<span id=\"name-error\" aria-live=\"assertive\">\n\t\t{#if $errors.name.length}\n\t\t\t{#each $errors.name as err}\n\t\t\t\t{err}\n\t\t\t{/each}\n\t\t{/if}\n\t</span>\n\t<label for=\"email\">Email</label>\n\t<input\n\t\tid=\"email\"\n\t\tname=\"email\"\n\t\ttype=\"email\"\n\t\taria-describedby={$errors.email ? \"email-error email-desc\" : \"email-desc\"}\n\t\taria-invalid={$errors.email ? \"true\" : undefined}\n\t\taria-required={$constraints.email?.required ? \"true\" : undefined}\n\t\tbind:value={$form.email}\n\t/>\n\t<span id=\"email-desc\">It's preferred that you use your company email.</span>\n\t<span id=\"email-error\" aria-live=\"assertive\">\n\t\t{#if $errors.email.length}\n\t\t\t{#each $errors.email as err}\n\t\t\t\t{err}\n\t\t\t{/each}\n\t\t{/if}\n\t</span>\n\t<label for=\"password\">Password</label>\n\t<input\n\t\tid=\"password\"\n\t\tname=\"password\"\n\t\ttype=\"password\"\n\t\taria-describedby={$errors.password ? \"password-error password-desc\" : \"password-desc\"}\n\t\taria-invalid={$errors.password ? \"true\" : undefined}\n\t\taria-required={$constraints.password?.required ? \"true\" : undefined}\n\t\tbind:value={$form.password}\n\t/>\n\t<span id=\"password-desc\">Ensure the password is at least 10 characters.</span>\n\t<span id=\"password-error\" aria-live=\"assertive\">\n\t\t{#if $errors.password.length}\n\t\t\t{#each $errors.password as err}\n\t\t\t\t{err}\n\t\t\t{/each}\n\t\t{/if}\n\t</span>\n\t<button>Submit</button>\n</form>\n
\n

That's quite a bit of code required to get a simple, accessible form up and running. We can't move as quickly as we'd like to, it's not very DRY, and is ripe for copy-paste errors.

\n

All is not lost though, as the whole idea behind Formsnap is to make this process simpler, without sacrificing the flexibility that Superforms provides.

\n

Superforms + Formsnap

\n
<script lang=\"ts\">\n\timport { Field, Control, Label, FieldErrors, Description } from \"formsnap\";\n\timport { signupFormSchema } from \"./schema.ts\";\n\timport { zodClient } from \"sveltekit-superforms/adapters\";\n\timport { superForm } from \"sveltekit-superforms\";\n\tlet { data } = $props();\n\n\tconst form = superForm(data.form, {\n\t\tvalidators: zodClient(signupFormSchema),\n\t});\n\tconst { form: formData, enhance } = form;\n</script>\n\n<form method=\"POST\" use:enhance>\n\t<Field {form} name=\"name\">\n\t\t<Control>\n\t\t\t{#snippet children({ props })}\n\t\t\t\t<Label>Name</Label>\n\t\t\t\t<input {...props} bind:value={$formData.name} />\n\t\t\t{/snippet}\n\t\t</Control>\n\t\t<Description>Be sure to use your real name.</Description>\n\t\t<FieldErrors />\n\t</Field>\n\t<Field {form} name=\"email\">\n\t\t<Control>\n\t\t\t{#snippet children({ props })}\n\t\t\t\t<Label>Email</Label>\n\t\t\t\t<input {...props} type=\"email\" bind:value={$formData.email} />\n\t\t\t{/snippet}\n\t\t</Control>\n\t\t<Description>It's preferred that you use your company email.</Description>\n\t\t<FieldErrors />\n\t</Field>\n\t<Field {form} name=\"password\">\n\t\t<Control>\n\t\t\t{#snippet children({ props })}\n\t\t\t\t<Label>Password</Label>\n\t\t\t\t<input {...props} type=\"password\" bind:value={$formData.password} />\n\t\t\t{/snippet}\n\t\t</Control>\n\t\t<Description>Ensure the password is at least 10 characters.</Description>\n\t\t<FieldErrors />\n\t</Field>\n</form>\n
\n

That's it! We just condensed a bunch of code, while retaining the same functionality.

\n

Next Steps

\n

To get started using Formsnap, head over to the Quick start section of the docs, where you'll learn how to install and use the library.

", + "raw": "Formsnap takes the already incredible [sveltekit-superforms](https://github.com/ciscoheat/sveltekit-superforms) (winner of [Svelte Hack 2023](https://hack.sveltesociety.dev/winners) for best library), made by the brilliant [Andreas Söderlund](https://github.com/ciscoheat) and wraps it with components that make it simpler to use while making your forms accessible by default.\n\n## The Same Form, Two Ways\n\nTo showcase the value provided by Formsnap, let's take a look at a simple sign up form using only Superforms, and then using Superforms with Formsnap.\n\n### Superforms Only\n\n```svelte title=\"+page.svelte\"\n\n\n
\n\t\n\t\n\tBe sure to use your real name.\n\t\n\t\t{#if $errors.name.length}\n\t\t\t{#each $errors.name as err}\n\t\t\t\t{err}\n\t\t\t{/each}\n\t\t{/if}\n\t\n\t\n\t\n\tIt's preferred that you use your company email.\n\t\n\t\t{#if $errors.email.length}\n\t\t\t{#each $errors.email as err}\n\t\t\t\t{err}\n\t\t\t{/each}\n\t\t{/if}\n\t\n\t\n\t\n\tEnsure the password is at least 10 characters.\n\t\n\t\t{#if $errors.password.length}\n\t\t\t{#each $errors.password as err}\n\t\t\t\t{err}\n\t\t\t{/each}\n\t\t{/if}\n\t\n\t\n\n```\n\nThat's quite a bit of code required to get a simple, accessible form up and running. We can't move as quickly as we'd like to, it's not very DRY, and is ripe for copy-paste errors.\n\nAll is not lost though, as the whole idea behind Formsnap is to make this process simpler, without sacrificing the flexibility that Superforms provides.\n\n### Superforms + Formsnap\n\n```svelte title=\"+page.svelte\"\n\n\n
\n\t\n\t\t\n\t\t\t{#snippet children({ props })}\n\t\t\t\t\n\t\t\t\t\n\t\t\t{/snippet}\n\t\t\n\t\tBe sure to use your real name.\n\t\t\n\t\n\t\n\t\t\n\t\t\t{#snippet children({ props })}\n\t\t\t\t\n\t\t\t\t\n\t\t\t{/snippet}\n\t\t\n\t\tIt's preferred that you use your company email.\n\t\t\n\t\n\t\n\t\t\n\t\t\t{#snippet children({ props })}\n\t\t\t\t\n\t\t\t\t\n\t\t\t{/snippet}\n\t\t\n\t\tEnsure the password is at least 10 characters.\n\t\t\n\t\n
\n```\n\nThat's it! We just condensed a bunch of code, while retaining the same functionality.\n\n## Next Steps\n\nTo get started using Formsnap, head over to the [Quick start](/docs/quick-start) section of the docs, where you'll learn how to install and use the library.", + "toc": [ + { + "title": "The Same Form, Two Ways", + "url": "#the-same-form-two-ways", + "items": [ + { + "title": "Superforms Only", + "url": "#superforms-only", + "items": [] + }, + { + "title": "Superforms + Formsnap", + "url": "#superforms--formsnap", + "items": [] + } + ] + }, + { + "title": "Next Steps", + "url": "#next-steps", + "items": [] + } + ], + "section": "Anchors", + "slug": "index", + "slugFull": "/index" + }, + { + "title": "Quick start", + "description": "Learn how to take off with Formsnap by building a settings form.", + "path": "quick-start", + "content": "\n

Installation

\n

Since Formsnap is built on top of Superforms, you'll need to install it as well as a schema validation library of your choice. We'll use Zod.

\n
npm install formsnap sveltekit-superforms zod\n
\n

Tutorial: Build a settings form

\n

Before diving into this tutorial, it's important to be confident with Superforms, as Formsnap is built on top of it and uses the same APIs.

\n\n

Define a Zod schema

\n

This schema will represent the shape of our form data. It's used to validate the form data on the client (optional) and server, along with some other useful things.

\n
import { z } from \"zod\";\n\nexport const themes = [\"light\", \"dark\"] as const;\nexport const languages = [\"en\", \"es\", \"fr\"] as const;\nexport const allergies = [\"peanuts\", \"dairy\", \"gluten\", \"soy\", \"shellfish\"] as const;\n\nexport const schema = z.object({\n\temail: z.string().email(\"Please enter a valid email.\"),\n\tbio: z.string().optional(),\n\ttheme: z.enum(themes).default(\"light\"),\n\tlanguage: z.enum(languages).default(\"en\"),\n\tmarketingEmails: z.boolean().default(true),\n\tallergies: z.array(z.enum(allergies)),\n});\n
\n

Looking at the schema above, we know we'll need a few different input types to represent the different data types. Here's how we'll map the schema to input types:

\n
    \n
  • email -> <input type=\"email\">
  • \n
  • bio -> <textarea>
  • \n
  • theme -> <input type=\"radio\">
  • \n
  • language -> <select>
  • \n
  • marketingEmails -> <input type=\"checkbox>
  • \n
  • allergies -> <input type=\"checkbox\"> (group/multiple)
  • \n
\n

Of course, there are other ways to represent the data, but this is the approach we'll take for this tutorial.

\n

Return the form from a load function

\n

In Superforms fashion, we'll return the form from a load function to seamlessly merge our PageData and ActionData.

\n
import type { PageServerLoad } from \"./$types\";\nimport { schema } from \"./schema\";\nimport { superValidate } from \"sveltekit-superforms\";\nimport { zod } from \"sveltekit-superforms/adapters\";\n\nexport const load: PageServerLoad = async () => {\n\treturn {\n\t\tform: await superValidate(zod(schema)),\n\t};\n};\n
\n

Setup the form in the page component

\n

Now that we have our form in the PageData object, we can use it, along with the schema we defined earlier, to setup the form in our page component.

\n
<script lang=\"ts\">\n\timport { superForm } from \"sveltekit-superforms\";\n\timport { Field } from \"formsnap\";\n\timport { zodClient } from \"sveltekit-superforms/adapters\";\n\timport { allergies, schema, themes } from \"./schema.js\";\n\timport SuperDebug from \"sveltekit-superforms\";\n\n\tlet { data } = $props();\n\n\tconst form = superForm(data.form, {\n\t\tvalidators: zodClient(schema),\n\t});\n\tconst { form: formData, enhance } = form;\n</script>\n\n<form method=\"POST\" use:enhance>\n\t<!-- ... -->\n</form>\n<SuperDebug data={$formData} />\n
\n

We'll initialize the super form using superForm and pass in the form from the PageData. We'll also enable client-side validation by passing the validators option. Then, we'll setup the form using the enhance function, which will progressively enhance the form with client-side validation and other features.

\n

Constructing a form field

\n

You can think of form fields as the building blocks of your form. Each property of the schema will have a corresponding form field, which will be responsible for displaying the error messages and description.

\n

We'll start with the email field and work our way down.

\n
<script lang=\"ts\">\n\timport { superForm } from \"sveltekit-superforms\";\n\timport { zodClient } from \"sveltekit-superforms/adapters\";\n\timport { allergies, schema, themes } from \"./schema.js\";\n\timport SuperDebug from \"sveltekit-superforms\";\n\n\tlet { data } = $props();\n\n\tconst form = superForm(data.form, {\n\t\tvalidators: zodClient(schema),\n\t});\n\tconst { form: formData, enhance } = form;\n</script>\n\n<form method=\"POST\" use:enhance>\n\t<Field {form} name=\"email\">\n\t\t<!-- ... -->\n\t</Field>\n</form>\n<SuperDebug data={$formData} />\n
\n

We pass the form and name to the Field component, which will be used to setup the context for the field. The name is typed to the keys of the schema, so it's type-safe.

\n

Now let's add the remaining parts of the field:

\n
<script lang=\"ts\">\n\timport { superForm } from \"sveltekit-superforms\";\n\timport { Field, Control, Label, Description, FieldErrors } from \"formsnap\";\n\timport { zodClient } from \"sveltekit-superforms/adapters\";\n\timport { allergies, schema, themes } from \"./schema.js\";\n\timport SuperDebug from \"sveltekit-superforms\";\n\n\tlet { data } = $props();\n\n\tconst form = superForm(data.form, {\n\t\tvalidators: zodClient(schema),\n\t});\n\tconst { form: formData, enhance } = form;\n</script>\n\n<form method=\"POST\" use:enhance>\n\t<Field {form} name=\"email\">\n\t\t<Control>\n\t\t\t{#snippet children({ props })}\n\t\t\t\t<Label>Email</Label>\n\t\t\t\t<input {...props} type=\"email\" bind:value={$formData.email} />\n\t\t\t{/snippet}\n\t\t</Control>\n\t\t<Description>Use your company email if you have one.</Description>\n\t\t<FieldErrors />\n\t</Field>\n</form>\n<SuperDebug data={$formData} />\n
\n

We've first added the Control component. Controls are used to represent a form control and its label. They keep the control and label in sync via the props snippet prop, which is spread onto the control. Inside the Control, we've added the Label component, which will automatically associate itself with the control the props are spread onto. We've also added the control itself, which is an input that we're binding to the email property of the form data.

\n

The Description component is optional, but it's useful for providing additional context to the user about the field. It'll be synced with the aria-describedby attribute on the input, so it's accessible to screen readers.

\n

The FieldErrors component is used to display validation errors to the user. It also is synced with the aria-describedby attribute on the input, which can receive multiple IDs, so that screen readers are able to read the error messages in addition to the description.

\n

And that's really all it takes to setup a form field. Let's continue on with the rest of the fields.

\n

Add remaining form fields

\n
<script lang=\"ts\">\n\timport { superForm } from \"sveltekit-superforms\";\n\timport { Field, Control, Label, Description, FieldErrors, Fieldset, Legend } from \"formsnap\";\n\timport { zodClient } from \"sveltekit-superforms/adapters\";\n\timport { allergies, schema, themes } from \"./schema.js\";\n\timport SuperDebug from \"sveltekit-superforms\";\n\n\tlet { data } = $props();\n\n\tconst form = superForm(data.form, {\n\t\tvalidators: zodClient(schema),\n\t});\n\tconst { form: formData, enhance } = form;\n</script>\n\n<form use:enhance class=\"mx-auto flex max-w-md flex-col\" method=\"POST\">\n\t<Field {form} name=\"email\">\n\t\t<Control>\n\t\t\t{#snippet children({ props })}\n\t\t\t\t<Label>Email</Label>\n\t\t\t\t<input {...props} type=\"email\" bind:value={$formData.email} />\n\t\t\t{/snippet}\n\t\t</Control>\n\t\t<Description>Company email is preferred</Description>\n\t\t<FieldErrors />\n\t</Field>\n\t<Field {form} name=\"bio\">\n\t\t<Control>\n\t\t\t{#snippet children({ props })}\n\t\t\t\t<Label>Bio</Label>\n\t\t\t\t<textarea {...props} bind:value={$formData.bio} />\n\t\t\t{/snippet}\n\t\t</Control>\n\t\t<Description>Tell us a bit about yourself.</Description>\n\t\t<FieldErrors />\n\t</Field>\n\t<Field {form} name=\"language\">\n\t\t<Control>\n\t\t\t{#snippet children({ props })}\n\t\t\t\t<Label>Language</Label>\n\t\t\t\t<select {...props} bind:value={$formData.language}>\n\t\t\t\t\t<option value=\"fr\">French</option>\n\t\t\t\t\t<option value=\"es\">Spanish</option>\n\t\t\t\t\t<option value=\"en\">English</option>\n\t\t\t\t</select>\n\t\t\t{/snippet}\n\t\t</Control>\n\t\t<Description>Help us address you properly.</Description>\n\t\t<FieldErrors />\n\t</Field>\n\t<Fieldset {form} name=\"theme\">\n\t\t<Legend>Select your theme</Legend>\n\t\t{#each themes as theme}\n\t\t\t<Control>\n\t\t\t\t{#snippet children({ props })}\n\t\t\t\t\t<Label>{theme}</Label>\n\t\t\t\t\t<input {...props} type=\"radio\" value={theme} bind:group={$formData.theme} />\n\t\t\t\t{/snippet}\n\t\t\t</Control>\n\t\t{/each}\n\t\t<Description>We prefer dark mode, but the choice is yours.</Description>\n\t\t<FieldErrors />\n\t</Fieldset>\n\t<Field {form} name=\"marketingEmails\">\n\t\t<Control>\n\t\t\t{#snippet children({ props })}\n\t\t\t\t<input {...props} type=\"checkbox\" bind:checked={$formData.marketingEmails} />\n\t\t\t\t<Label>I want to receive marketing emails</Label>\n\t\t\t{/snippet}\n\t\t</Control>\n\t\t<Description>Stay up to date with our latest news and offers.</Description>\n\t\t<FieldErrors />\n\t</Field>\n\t<Fieldset {form} name=\"allergies\">\n\t\t<Legend>Food allergies</Legend>\n\t\t{#each allergies as allergy}\n\t\t\t<Control>\n\t\t\t\t{#snippet children({ props })}\n\t\t\t\t\t<input\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tbind:group={$formData.allergies}\n\t\t\t\t\t\tvalue={allergy}\n\t\t\t\t\t/>\n\t\t\t\t\t<Label>{allergy}</Label>\n\t\t\t\t{/snippet}\n\t\t\t</Control>\n\t\t{/each}\n\t\t<Description>When we provide lunch, we'll accommodate your needs.</Description>\n\t\t<FieldErrors />\n\t</Fieldset>\n\t<button>Submit</button>\n</form>\n<SuperDebug data={$formData} />\n
\n

You may have noticed for the allergies and theme fields, we used the Fieldset and Legend components. These are used to group related fields together and provide a title for the group, which is great for accessibility and organization. Additionally, we only use a single FieldError and Description component for the entire group, and use an Control for each field in the group to associate the label with the control.

\n
\n

And that's it! You've now successfully built a settings form with Formsnap!

\n

Next Steps

\n

Now that you've built your first form, you're ready to start building more complex forms with Formsnap & Superforms. Be sure to check out the rest of the documentation to learn more about the different components and APIs available to you.

", + "raw": "\n\n## Installation\n\nSince Formsnap is built on top of [Superforms](https://superforms.rocks), you'll need to install it as well as a schema validation library of your choice. We'll use [Zod](https://zod.dev).\n\n```bash\nnpm install formsnap sveltekit-superforms zod\n```\n\n## Tutorial: Build a settings form\n\nBefore diving into this tutorial, it's important to be confident with [Superforms](https://superforms.rocks), as Formsnap is built on top of it and uses the same APIs.\n\n\n\nDefine a Zod schema\n\nThis schema will represent the shape of our form data. It's used to validate the form data on the client (optional) and server, along with some other useful things.\n\n```ts title=\"src/routes/settings/schema.ts\"\nimport { z } from \"zod\";\n\nexport const themes = [\"light\", \"dark\"] as const;\nexport const languages = [\"en\", \"es\", \"fr\"] as const;\nexport const allergies = [\"peanuts\", \"dairy\", \"gluten\", \"soy\", \"shellfish\"] as const;\n\nexport const schema = z.object({\n\temail: z.string().email(\"Please enter a valid email.\"),\n\tbio: z.string().optional(),\n\ttheme: z.enum(themes).default(\"light\"),\n\tlanguage: z.enum(languages).default(\"en\"),\n\tmarketingEmails: z.boolean().default(true),\n\tallergies: z.array(z.enum(allergies)),\n});\n```\n\nLooking at the schema above, we know we'll need a few different input types to represent the different data types. Here's how we'll map the schema to input types:\n\n- `email` -> ``\n- `bio` -> ` diff --git a/sites/docs/src/lib/components/ui/toggle/index.ts b/sites/docs/src/lib/components/ui/toggle/index.ts deleted file mode 100644 index 2624f84..0000000 --- a/sites/docs/src/lib/components/ui/toggle/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { type VariantProps, tv } from "tailwind-variants"; -import Root from "./toggle.svelte"; - -export const toggleVariants = tv({ - base: "ring-offset-background hover:bg-muted hover:text-muted-foreground focus-visible:ring-ring data-[state=on]:bg-accent data-[state=on]:text-accent-foreground inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", - variants: { - variant: { - default: "bg-transparent", - outline: - "border-input hover:bg-accent hover:text-accent-foreground border bg-transparent", - }, - size: { - default: "h-10 px-3", - sm: "h-9 px-2.5", - lg: "h-11 px-5", - }, - }, - defaultVariants: { - variant: "default", - size: "default", - }, -}); - -export type ToggleVariant = VariantProps["variant"]; -export type ToggleSize = VariantProps["size"]; - -export { - Root, - // - Root as Toggle, -}; diff --git a/sites/docs/src/lib/components/ui/toggle/toggle.svelte b/sites/docs/src/lib/components/ui/toggle/toggle.svelte deleted file mode 100644 index b576a05..0000000 --- a/sites/docs/src/lib/components/ui/toggle/toggle.svelte +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/sites/docs/src/lib/config/index.ts b/sites/docs/src/lib/config/index.ts deleted file mode 100644 index 492b859..0000000 --- a/sites/docs/src/lib/config/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./navigation.js"; -export * from "./site.js"; diff --git a/sites/docs/src/lib/config/navigation.ts b/sites/docs/src/lib/config/navigation.ts deleted file mode 100644 index f83b3f8..0000000 --- a/sites/docs/src/lib/config/navigation.ts +++ /dev/null @@ -1,159 +0,0 @@ -export type NavItem = { - title: string; - href?: string; - disabled?: boolean; - external?: boolean; - label?: string; -}; - -export type SidebarNavItem = NavItem & { - items: SidebarNavItem[]; - collapsible?: boolean; -}; - -export type NavItemWithChildren = NavItem & { - items: NavItemWithChildren[]; -}; - -export type Navigation = { - main: NavItem[]; - sidebar: SidebarNavItem[]; -}; - -export const navigation: Navigation = { - // By default, `main` navigation items are rendered in the top navigation bar. - main: [ - { - title: "Documentation", - href: "/docs", - }, - { - title: "Svecosystem", - href: "https://github.com/svecosystem", - external: true, - }, - { - title: "Releases", - href: "https://github.com/huntabyte/formsnap/releases", - external: true, - }, - ], - // By default, `sidebar` navigation only supports 2 levels of navigation. - sidebar: [ - { - title: "Overview", - collapsible: true, - items: [ - { - title: "Introduction", - href: "/docs", - items: [], - }, - { - title: "Quick Start", - href: "/docs/quick-start", - items: [], - }, - - { - title: "Styling", - href: "/docs/styling", - items: [], - }, - ], - }, - { - title: "Components", - collapsible: true, - items: [ - { - title: "Field", - href: "/docs/components/field", - items: [], - }, - { - title: "Fieldset", - href: "/docs/components/fieldset", - items: [], - }, - { - title: "ElementField", - href: "/docs/components/element-field", - items: [], - }, - { - title: "FieldErrors", - href: "/docs/components/field-errors", - items: [], - }, - { - title: "Control", - href: "/docs/components/control", - items: [], - }, - { - title: "Label", - href: "/docs/components/label", - items: [], - }, - { - title: "Description", - href: "/docs/components/description", - items: [], - }, - { - title: "Legend", - href: "/docs/components/legend", - items: [], - }, - ], - }, - { - title: "Composition", - collapsible: true, - items: [ - { - title: "asChild", - href: "/docs/composition/aschild", - items: [], - }, - { - title: "getFormField", - href: "/docs/composition/get-form-field", - items: [], - }, - { - title: "getFormControl", - href: "/docs/composition/get-form-control", - items: [], - }, - ], - }, - { - title: "Recipes", - collapsible: true, - items: [ - { - title: "Checkbox Groups", - href: "/docs/recipes/checkbox-groups", - items: [], - }, - { - title: "Dynamic Fields", - href: "/docs/recipes/dynamic-fields", - items: [], - }, - { - title: "Multiple Select", - href: "/docs/recipes/multiple-select", - items: [], - }, - { - title: "Bits UI Select", - href: "/docs/recipes/bits-ui-select", - items: [], - }, - ], - }, - ], -}; diff --git a/sites/docs/src/lib/config/site.ts b/sites/docs/src/lib/config/site.ts deleted file mode 100644 index d3bb67b..0000000 --- a/sites/docs/src/lib/config/site.ts +++ /dev/null @@ -1,23 +0,0 @@ -export const siteConfig = { - name: "Formsnap", - url: "https://formsnap.dev", - description: "Accessible form components for SvelteKit.", - links: { - x: "https://x.com/huntabyte", - github: "https://github.com/svecosystem/formsnap", - }, - author: "Huntabyte", - keywords: - "Svelte forms,Sveltekit forms,superforms,svelte form components,accessible svelte forms,sveltekit form actions,Svelte ecosystem,ecosystem,svecosystem,sveltekit,svelte libraries", - ogImage: { - url: "https://formsnap.dev/og.png", - width: "1200", - height: "630", - }, - license: { - name: "MIT", - url: "https://github.com/svecosystem/formsnap/blob/main/LICENSE", - }, -}; - -export type SiteConfig = typeof siteConfig; diff --git a/sites/docs/src/lib/icons/github-icon.svelte b/sites/docs/src/lib/icons/github-icon.svelte deleted file mode 100644 index 5df7882..0000000 --- a/sites/docs/src/lib/icons/github-icon.svelte +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/sites/docs/src/lib/icons/index.ts b/sites/docs/src/lib/icons/index.ts deleted file mode 100644 index 3d1c97e..0000000 --- a/sites/docs/src/lib/icons/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -export { default as ArrowUpRight } from "phosphor-svelte/lib/ArrowUpRight"; -export { default as CaretRight } from "phosphor-svelte/lib/CaretRight"; -export { default as CaretLeft } from "phosphor-svelte/lib/CaretLeft"; -export { default as CaretUp } from "phosphor-svelte/lib/CaretUp"; -export { default as CaretDown } from "phosphor-svelte/lib/CaretDown"; -export { default as Check } from "phosphor-svelte/lib/Check"; -export { default as Circle } from "phosphor-svelte/lib/Circle"; -export { default as Code } from "phosphor-svelte/lib/Code"; -export { default as CopySimple } from "phosphor-svelte/lib/CopySimple"; -export { default as FileHTML } from "phosphor-svelte/lib/FileHtml"; -export { default as FileText } from "phosphor-svelte/lib/FileText"; -export { default as GitHubIcon } from "./github-icon.svelte"; -export { default as Info } from "phosphor-svelte/lib/Info"; -export { default as List } from "phosphor-svelte/lib/List"; -export { default as MarkdownIcon } from "./markdown-icon.svelte"; -export { default as MoonStars } from "phosphor-svelte/lib/MoonStars"; -export { default as Plug } from "phosphor-svelte/lib/Plug"; -export { default as RocketLaunch } from "phosphor-svelte/lib/RocketLaunch"; -export { default as WarningOctagon } from "phosphor-svelte/lib/WarningOctagon"; -export { default as Warning } from "phosphor-svelte/lib/Warning"; -export { default as XComIcon } from "./xcom-icon.svelte"; -export { default as ShadcnIcon } from "./shadcn-icon.svelte"; -export { default as Minus } from "phosphor-svelte/lib/Minus"; -export { default as PersonArmsSpread } from "phosphor-svelte/lib/PersonArmsSpread"; -export { default as Circuitry } from "phosphor-svelte/lib/Circuitry"; -export { default as FileTS } from "phosphor-svelte/lib/FileTs"; -export { default as UsersThree } from "phosphor-svelte/lib/UsersThree"; -export { default as Hammer } from "phosphor-svelte/lib/Hammer"; -export { default as Trash } from "phosphor-svelte/lib/Trash"; -export { default as Plus } from "phosphor-svelte/lib/Plus"; -export { default as SpinnerGap } from "phosphor-svelte/lib/SpinnerGap"; diff --git a/sites/docs/src/lib/icons/markdown-icon.svelte b/sites/docs/src/lib/icons/markdown-icon.svelte deleted file mode 100644 index e1d057f..0000000 --- a/sites/docs/src/lib/icons/markdown-icon.svelte +++ /dev/null @@ -1,10 +0,0 @@ -Markdown diff --git a/sites/docs/src/lib/icons/shadcn-icon.svelte b/sites/docs/src/lib/icons/shadcn-icon.svelte deleted file mode 100644 index de69439..0000000 --- a/sites/docs/src/lib/icons/shadcn-icon.svelte +++ /dev/null @@ -1,23 +0,0 @@ - diff --git a/sites/docs/src/lib/icons/xcom-icon.svelte b/sites/docs/src/lib/icons/xcom-icon.svelte deleted file mode 100644 index a79b6f5..0000000 --- a/sites/docs/src/lib/icons/xcom-icon.svelte +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/sites/docs/src/lib/styles/app.pcss b/sites/docs/src/lib/styles/app.pcss deleted file mode 100644 index 59c3d33..0000000 --- a/sites/docs/src/lib/styles/app.pcss +++ /dev/null @@ -1,165 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap"); -@tailwind base; -@tailwind components; -@tailwind utilities; - -@layer base { - :root { - --background: 0 0% 98%; - --foreground: 320 7% 8%; - - --muted: 320 4.8% 93%; - --muted-foreground: 320 3.8% 34.1%; - - --popover: 0 0% 98%; - --popover-foreground: 320 7% 8%; - - --card: 0 0% 98%; - --card-foreground: 320 7% 8%; - - --border: 320 5.9% 87%; - --input: 320 5.9% 90%; - - --primary: 320 7% 16%; - --primary-foreground: 0 0% 98%; - - --secondary: 163 62% 90%; - --secondary-foreground: 170 31% 19%; - - --accent: 320 4.8% 92%; - --accent-foreground: 320 7% 16%; - - --destructive: 0 84.2% 60.2%; - --destructive-foreground: 0 0% 98%; - - --ring: 320 5.9% 64.9%; - - --brand: 162 84% 28%; - - --radius: 0.5rem; - } - - .dark { - --background: 0 0% 5%; - --foreground: 0 0% 98%; - - --muted: 240 4% 16%; - --muted-foreground: 320 5.9% 64.9%; - - --popover: 320 7% 8%; - --popover-foreground: 0 0% 98%; - - --card: 320 7% 8%; - --card-foreground: 0 0% 98%; - - --border: 240 2% 14%; - --input: 240 4% 16%; - - --primary: 0 0% 98%; - --primary-foreground: 320 7% 16%; - - --secondary: 173 34% 14%; - --secondary-foreground: 151 61% 88%; - - --accent: 240 4% 16%; - --accent-foreground: 0 0% 98%; - - --destructive: 350 89% 60%; - --destructive-foreground: 0 85.7% 97.3%; - - --ring: 240 4% 16%; - - --brand: 162 84% 54%; - } -} - -@layer base { - * { - @apply border-border; - } - html { - -webkit-text-size-adjust: 100%; - font-variation-settings: normal; - } - body { - @apply bg-background text-foreground; - font-feature-settings: - "rlig" 1, - "calt" 1; - } - - /* Mobile tap highlight */ - /* https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-tap-highlight-color */ - html { - -webkit-tap-highlight-color: rgba(128, 128, 128, 0.5); - } - - /* === Scrollbars === */ - - ::-webkit-scrollbar { - @apply w-2; - @apply h-2; - } - - ::-webkit-scrollbar-track { - @apply !bg-muted; - } - ::-webkit-scrollbar-thumb { - @apply !bg-muted-foreground/30 rounded-sm; - } - - /* Firefox */ - /* https://developer.mozilla.org/en-US/docs/Web/CSS/scrollbar-color#browser_compatibility */ - - html { - scrollbar-color: hsl(215.4 16.3% 46.9% / 0.3); - } - - html.dark { - scrollbar-color: hsl(215.4 16.3% 56.9% / 0.3); - } - - .hide-scrollbar::-webkit-scrollbar { - display: none; - } - - .hide-scrollbar { - -ms-overflow-style: none; - scrollbar-width: none; - } - - .antialised { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } -} - -@layer utilities { - .step { - counter-increment: step; - } - - .step:before { - @apply border-background bg-muted absolute inline-flex h-9 w-9 items-center justify-center rounded-full border-4 text-center -indent-px font-mono text-base font-medium; - @apply ml-[-50px] mt-[-4px]; - content: counter(step); - } -} - -@layer components { - .hero-gradient { - background: radial-gradient( - circle 50vh at 50% 25%, - theme(colors.brand), - theme(colors.background) 60% - ); - filter: blur(180px); - height: 30vh; - opacity: 1; - position: fixed; - top: -5vh; - left: 0vw; - width: 100%; - z-index: -1; - } -} diff --git a/sites/docs/src/lib/styles/markdown.pcss b/sites/docs/src/lib/styles/markdown.pcss deleted file mode 100644 index 1fdafbc..0000000 --- a/sites/docs/src/lib/styles/markdown.pcss +++ /dev/null @@ -1,114 +0,0 @@ -.markdown code:not(pre > code) { - @apply bg-muted relative rounded px-[0.3rem] py-[0.2rem] font-mono text-sm; -} - -.link { - @apply inline-flex items-center gap-1 font-medium underline underline-offset-4; -} - -[data-theme*=" "] { - display: flex !important; - flex-direction: column; -} - -[data-rehype-pretty-code-figure] [data-line-numbers] > [data-line]::before { - @apply text-muted-foreground text-xs; - counter-increment: line; - content: counter(line); - display: inline-block; - width: 1.35rem; - margin-right: 0.5rem; - text-align: center; -} - -[data-metadata] [data-code-copy] { - @apply top-16 !important; -} - -[data-rehype-pretty-code-figure] { - @apply relative; - - & pre { - @apply border-border mb-4 mt-6 overflow-x-auto rounded-lg border bg-[#f1f1f1] py-4 text-sm font-medium; - } - - & code { - @apply grid min-w-fit break-words rounded-none border-0 bg-transparent p-0; - counter-reset: line; - box-decoration-break: clone; - } - - & code[data-line-numbers] { - font-size: 13px !important; - } - - & [data-line] { - @apply inline-block min-h-[1.5rem] w-full border-l-2 border-l-transparent px-4 py-0.5; - } - - & [data-chars-id] { - @apply pb-0.5 shadow-none; - } - - & [data-highlighted-line] { - @apply border-l-primary bg-foreground/5 z-10 w-full; - } - - & [data-highlighted-line][data-highlighted-line-id="add"] { - @apply border-l-green-600 data-[highlighted-line-id="add"]:bg-green-100; - } - - & [data-highlighted-line][data-highlighted-line-id="remove"] { - @apply border-l-red-600 data-[highlighted-line-id="remove"]:bg-red-100; - } - - & [data-line-numbers] [data-line] { - @apply pr-2; - } -} - -[data-rehype-pretty-code-title] { - @apply border-border bg-muted text-muted-foreground mt-6 flex rounded-t-lg border-l border-r border-t px-4 py-3 text-sm; -} - -[data-rehype-pretty-code-title] + pre { - @apply mt-0 rounded-t-none; -} - -[data-callout] > p:last-child { - @apply mb-0 !important; -} - -code[data-theme*=" "], -code[data-theme*=" "] span { - color: var(--shiki-light); - background-color: var(--shiki-light-bg); -} - -/* Dark mode specific overrides */ - -.dark { - & code[data-theme*=" "], - code[data-theme*=" "] span { - color: var(--shiki-dark); - background-color: var(--shiki-dark-bg); - } - - & [data-rehype-pretty-code-figure] { - & pre { - @apply bg-[#181818]; - } - - & [data-highlighted-line] { - @apply bg-muted; - } - - & [data-highlighted-line][data-highlighted-line-id="add"] { - @apply border-l-green-500 data-[highlighted-line-id="add"]:bg-green-600/20; - } - - & [data-highlighted-line][data-highlighted-line-id="remove"] { - @apply border-l-red-500 data-[highlighted-line-id="remove"]:bg-red-500/20; - } - } -} diff --git a/sites/docs/src/lib/styles/themes/tokyo-night-light.json b/sites/docs/src/lib/styles/themes/tokyo-night-light.json deleted file mode 100644 index 689500f..0000000 --- a/sites/docs/src/lib/styles/themes/tokyo-night-light.json +++ /dev/null @@ -1,1565 +0,0 @@ -{ - "name": "tokyo-night-light", - "author": "Enkia", - "maintainers": ["Enkia "], - "type": "light", - "semanticTokenColors": { - "parameter.declaration": { - "foreground": "#8f5e15" - }, - "parameter": { - "foreground": "#634f30" - }, - "property.declaration": { - "foreground": "#33635c" - }, - "property.defaultLibrary": { - "foreground": "#166775" - }, - "*.defaultLibrary": { - "foreground": "#166775" - }, - "variable.defaultLibrary": { - "foreground": "#166775" - }, - "variable.declaration": { - "foreground": "#5a4a78" - }, - "variable": { - "foreground": "#343b58" - } - }, - "semanticClass": "tokyo-night-light", - "colors": { - "foreground": "#4c505e", - "descriptionForeground": "#7b7f8c", - "focusBorder": "#82859433", - "errorForeground": "#5a607d", - "widget.shadow": "#ffffff00", - "scrollbar.shadow": "#00000033", - "badge.background": "#979db833", - "badge.foreground": "#4c505e", - "icon.foreground": "#4c505e", - "settings.headerForeground": "#34548a", - "window.activeBorder": "#cdced1", - "window.inactiveBorder": "#cdced1", - "sash.hoverBorder": "#828594", - - "toolbar.activeBackground": "#fafbff40", - "toolbar.hoverBackground": "#fafbff40", - - "extensionButton.prominentBackground": "#34548aDD", - "extensionButton.prominentHoverBackground": "#34548aAA", - "extensionButton.prominentForeground": "#ffffff", - "extensionBadge.remoteBackground": "#34548a", - "extensionBadge.remoteForeground": "#ffffff", - - "button.background": "#34548add", - "button.hoverBackground": "#34548aAA", - "button.secondaryBackground": "#828594", - "button.foreground": "#ffffff", - "progressBar.background": "#34548a", - - "input.background": "#d5d6db", - "input.foreground": "#4c505e", - "input.border": "#c1c2c7", - "input.placeholderForeground": "#4a5272", - "inputOption.activeBackground": "#34548a44", - - "inputValidation.infoForeground": "#000000", - "inputValidation.infoBackground": "#3d59a15c", - "inputValidation.infoBorder": "#3d59a1", - "inputValidation.warningForeground": "#000000", - "inputValidation.warningBackground": "#c2985b", - "inputValidation.warningBorder": "#8f5e15", - "inputValidation.errorForeground": "#e8e9ed", - "inputValidation.errorBackground": "#85353e", - "inputValidation.errorBorder": "#942f2f", - - "dropdown.foreground": "#4c505e", - "dropdown.background": "#d5d6db", - "dropdown.border": "#c1c2c7", - "dropdown.listBackground": "#d5d6db", - - "activityBar.background": "#cbccd1", - "activityBar.foreground": "#4c505e", - "activityBar.inactiveForeground": "#828594", - "activityBar.border": "#cbccd1", - "activityBarBadge.background": "#34548a", - "activityBarBadge.foreground": "#fff", - - "tree.indentGuidesStroke": "#c1c2c7", - "sideBar.foreground": "#4c505e", - "sideBar.background": "#cbccd1", - "sideBar.border": "#c1c2c7", - "sideBarTitle.foreground": "#4c505e", - "sideBarSectionHeader.background": "#cbccd1", - "sideBarSectionHeader.foreground": "#4c505e", - "sideBarSectionHeader.border": "#c1c2c7", - "sideBar.dropBackground": "#c1c2c7", - - "list.dropBackground": "#c1c2c7", - "list.deemphasizedForeground": "#4c505e", - "list.activeSelectionBackground": "#d5d6db", - - "list.activeSelectionForeground": "#4c505e", - "list.inactiveSelectionBackground": "#d5d6db", - "list.inactiveSelectionForeground": "#4c505e", - "list.focusBackground": "#d5d6db", - "list.focusForeground": "#4c505e", - "list.hoverBackground": "#d5d6db", - "list.hoverForeground": "#4c505e", - - "list.highlightForeground": "#34548a", - "list.invalidItemForeground": "#c97018", - "list.errorForeground": "#942f2f", - "list.warningForeground": "#8F5E15", - - "listFilterWidget.background": "#d5d6db", - "listFilterWidget.outline": "#34548a", - "listFilterWidget.noMatchesOutline": "#a6333f", - - "pickerGroup.foreground": "#4c505e", - "pickerGroup.border": "#c1c2c7", - - "scrollbarSlider.background": "#90929625", - "scrollbarSlider.hoverBackground": "#90929620", - "scrollbarSlider.activeBackground": "#90929632", - - "editorBracketHighlight.foreground1": "#34548A", - "editorBracketHighlight.foreground2": "#34548A", - "editorBracketHighlight.foreground3": "#343B58", - "editorBracketHighlight.foreground4": "#166775", - "editorBracketHighlight.foreground5": "#485E30", - "editorBracketHighlight.foreground6": "#8F5E15", - "editorBracketHighlight.unexpectedBracket.foreground": "#bd4040", - - "editorBracketPairGuide.activeBackground1": "#34548A", - "editorBracketPairGuide.activeBackground2": "#34548A", - "editorBracketPairGuide.activeBackground3": "#343B58", - "editorBracketPairGuide.activeBackground4": "#166775", - "editorBracketPairGuide.activeBackground5": "#485E30", - "editorBracketPairGuide.activeBackground6": "#8F5E15", - - "selection.background": "#fafbff55", - "editor.background": "#d5d6db", - "editor.foreground": "#343b59", - "editor.foldBackground": "#b2b3b833", - "editorLink.activeForeground": "#1f2335", - - "editor.selectionBackground": "#fafbff40", - "editor.inactiveSelectionBackground": "#fafbff15", - - "editor.findMatchBackground": "#fafbff66", - "editor.findMatchBorder": "#637dbf", - "editor.findMatchHighlightBackground": "#fafbff66", - - "editor.findRangeHighlightBackground": "#34548a15", - "editor.rangeHighlightBackground": "#fafbff20", - "editor.wordHighlightBackground": "#fafbff33", - "editor.wordHighlightStrongBackground": "#fafbff66", - "editor.selectionHighlightBackground": "#fafbff55", - - "editorCursor.foreground": "#4c505e", - "editorIndentGuide.background": "#cacbcf", - "editorIndentGuide.activeBackground": "#f4f5f8", - "editorLineNumber.foreground": "#9da0ab", - "editorLineNumber.activeForeground": "#4c505e", - "editor.lineHighlightBackground": "#dcdee3", - "editorWhitespace.foreground": "#d5d6db", - - "editorMarkerNavigation.background": "#cbccd1", - - "editorHoverWidget.background": "#dcdee3", - "editorHoverWidget.border": "#c1c2c7", - - "editorBracketMatch.background": "#cdced1", - "editorBracketMatch.border": "#dcdee3", - - "editorOverviewRuler.border": "#c1c2c7", - "editorOverviewRuler.errorForeground": "#bd4040", - "editorOverviewRuler.warningForeground": "#8f5e15", - "editorOverviewRuler.infoForeground": "#1abc9c", - "editorOverviewRuler.bracketMatchForeground": "#c1c2c7", - "editorOverviewRuler.findMatchForeground": "#4c505e44", - "editorOverviewRuler.rangeHighlightForeground": "#4c505e44", - "editorOverviewRuler.selectionHighlightForeground": "#4c505e22", - "editorOverviewRuler.wordHighlightForeground": "#5a4a7855", - "editorOverviewRuler.wordHighlightStrongForeground": "#5a4a7866", - "editorOverviewRuler.modifiedForeground": "#637dbf", - "editorOverviewRuler.addedForeground": "#71b6bd", - "editorOverviewRuler.deletedForeground": "#a8626a", - - "editorRuler.foreground": "#c1c2c7", - "editorError.foreground": "#bd4040", - "editorWarning.foreground": "#8f5e15", - "editorInfo.foreground": "#0da0ba", - "editorHint.foreground": "#0da0ba", - - "editorGutter.modifiedBackground": "#637dbf", - "editorGutter.addedBackground": "#71b6bd", - "editorGutter.deletedBackground": "#a8626a", - - "editorGhostText.foreground": "#73767d", - - "minimap.errorHighlight": "#bd4040", - - "editorGroup.border": "#c1c2c7", - "editorGroup.dropBackground": "#c1c2c7", - "editorGroupHeader.tabsBorder": "#c1c2c7", - "editorGroupHeader.tabsBackground": "#cbccd1", - "editorGroupHeader.noTabsBackground": "#cbccd1", - "editorGroupHeader.border": "#c1c2c7", - - "editorPane.background": "#cbccd1", - - "editorWidget.foreground": "#4c505e", - "editorWidget.background": "#cbccd1", - "editorWidget.resizeBorder": "#82859433", - - "editorSuggestWidget.background": "#dcdee3", - "editorSuggestWidget.border": "#c1c2c7", - "editorSuggestWidget.selectedBackground": "#e8e9ed", - "editorSuggestWidget.highlightForeground": "#34548a", - - "editorCodeLens.foreground": "#868891", - - "peekView.border": "#c1c2c7", - "peekViewEditor.background": "#dcdee3", - "peekViewEditor.matchHighlightBackground": "#34548a22", - "peekViewTitle.background": "#cbccd1", - "peekViewTitleLabel.foreground": "#4c505e", - "peekViewTitleDescription.foreground": "#4c505e", - "peekViewResult.background": "#d7d9de", - "peekViewResult.selectionForeground": "#4c505e", - "peekViewResult.selectionBackground": "#34548a33", - "peekViewResult.lineForeground": "#4c505e", - "peekViewResult.fileForeground": "#4c505e", - "peekViewResult.matchHighlightBackground": "#34548a22", - - "diffEditor.insertedTextBackground": "#3f919e15", - "diffEditor.removedTextBackground": "#e8686812", - "diffEditor.insertedLineBackground": "#3f919e15", - "diffEditor.removedLineBackground": "#e8686812", - "diffEditorGutter.insertedLineBackground": "#3f919e15", - "diffEditorGutter.removedLineBackground": "#e8686812", - "diffEditorOverview.insertedForeground": "#3f919e15", - "diffEditorOverview.removedForeground": "#e8686812", - "diffEditor.diagonalFill": "#cacbcf", - - "breadcrumb.background": "#cbccd1", - "breadcrumbPicker.background": "#cbccd1", - "breadcrumb.foreground": "#828594", - "breadcrumb.focusForeground": "#4c505e", - "breadcrumb.activeSelectionForeground": "#4c505e", - - "tab.activeBackground": "#cbccd1", - "tab.inactiveBackground": "#cbccd1", - "tab.activeForeground": "#383b45", - "tab.hoverForeground": "#383b45", - "tab.activeBorder": "#637dbf", - "tab.inactiveForeground": "#4c505e", - "tab.border": "#c1c2c7", - "tab.unfocusedActiveForeground": "#383b45", - "tab.unfocusedInactiveForeground": "#4c505e", - "tab.unfocusedHoverForeground": "#383b45", - "tab.activeModifiedBorder": "#d5d6db", - "tab.inactiveModifiedBorder": "#d5d6db", - "tab.unfocusedActiveBorder": "#9da0ab", - "tab.lastPinnedBorder": "#dadbe0", - - "panel.background": "#cbccd1", - "panel.border": "#c1c2c7", - "panelTitle.activeForeground": "#4c505e", - "panelTitle.inactiveForeground": "#828594", - "panelTitle.activeBorder": "#637dbf", - "panelInput.border": "#d5d6db", - - "statusBar.foreground": "#4c505e", - "statusBar.background": "#cbccd1", - "statusBar.border": "#c1c2c7", - "statusBar.noFolderBackground": "#d5d6db", - "statusBar.debuggingBackground": "#d5d6db", - "statusBar.debuggingForeground": "#4c505e", - "statusBarItem.activeBackground": "#c1c2c7", - "statusBarItem.hoverBackground": "#d5d6db", - "statusBarItem.prominentBackground": "#c1c2c7", - "statusBarItem.prominentHoverBackground": "#d5d6db", - - "titleBar.activeForeground": "#4c505e", - "titleBar.inactiveForeground": "#4c505e", - "titleBar.activeBackground": "#cbccd1", - "titleBar.inactiveBackground": "#cbccd1", - "titleBar.border": "#c1c2c7", - - "walkThrough.embeddedEditorBackground": "#cbccd1", - "textLink.foreground": "#34548a", - "textLink.activeForeground": "#4c505e", - "textPreformat.foreground": "#33635c", - "textBlockQuote.background": "#cbccd1", - "textCodeBlock.background": "#d5d6db", - "textSeparator.foreground": "#828594", - - "debugExceptionWidget.border": "#942f2f", - "debugExceptionWidget.background": "#fafbff40", - "debugToolBar.background": "#d5d6db", - - "debugConsole.infoForeground": "#166775", - "debugConsole.errorForeground": "#942f2f", - - "editor.stackFrameHighlightBackground": "#e7e8c8", - "editor.focusedStackFrameHighlightBackground": "#c5e3d0", - "debugView.stateLabelForeground": "#4c505e", - "debugView.stateLabelBackground": "#d5d6db", - "debugView.valueChangedHighlight": "#f4f5f8", - "debugTokenExpression.name": "#34548a", - "debugTokenExpression.value": "#565a6e", - "debugTokenExpression.string": "#485e30", - "debugTokenExpression.boolean": "#965027", - "debugTokenExpression.number": "#965027", - "debugTokenExpression.error": "#942f2f", - - "debugIcon.startForeground": "#34548a", - "debugIcon.pauseForeground": "#3e6396", - "debugIcon.stepOverForeground": "#3e6396", - "debugIcon.stepIntoForeground": "#3e6396", - "debugIcon.stepOutForeground": "#3e6396", - "debugIcon.continueForeground": "#3e6396", - "debugIcon.stepBackForeground": "#3e6396", - "debugIcon.breakpointForeground": "#db4b4b", - "debugIcon.breakpointDisabledForeground": "#828594", - "debugIcon.breakpointUnverifiedForeground": "#c24242", - - "terminal.background": "#cbccd1", - "terminal.foreground": "#4c505e", - "terminal.selectionBackground": "#fafbff40", - "terminalCursor.foreground": "#828594", - - "terminal.ansiBlack": "#0f0f14", - "terminal.ansiRed": "#8c4351", - "terminal.ansiGreen": "#33635c", - "terminal.ansiYellow": "#8f5e15", - "terminal.ansiBlue": "#34548a", - "terminal.ansiMagenta": "#5a4a78", - "terminal.ansiCyan": "#0f4b6e", - "terminal.ansiWhite": "#828594", - "terminal.ansiBrightBlack": "#0f0f14", - "terminal.ansiBrightRed": "#8c4351", - "terminal.ansiBrightGreen": "#33635c", - "terminal.ansiBrightYellow": "#8f5e15", - "terminal.ansiBrightBlue": "#34548a", - "terminal.ansiBrightMagenta": "#5a4a78", - "terminal.ansiBrightCyan": "#0f4b6e", - "terminal.ansiBrightWhite": "#828594", - - "gitDecoration.modifiedResourceForeground": "#34548a", - "gitDecoration.ignoredResourceForeground": "#828594", - "gitDecoration.deletedResourceForeground": "#914c54", - "gitDecoration.renamedResourceForeground": "#166775", - "gitDecoration.addedResourceForeground": "#166775", - "gitDecoration.untrackedResourceForeground": "#166775", - "gitDecoration.conflictingResourceForeground": "#8f5e15", - "gitDecoration.stageDeletedResourceForeground": "#914c54", - "gitDecoration.stageModifiedResourceForeground": "#34548a", - - "notebook.editorBackground": "#d5d6db", - "notebook.cellEditorBackground": "#cbccd1", - "notebook.cellBorderColor": "#c1c2c7", - "notebook.focusedCellBorder": "#828594", - "notebook.cellStatusBarItemHoverBackground": "#d5d6db", - - "charts.red": "#8c4351", - "charts.blue": "#34548a", - "charts.yellow": "#8f5e15", - "charts.orange": "#965027", - "charts.green": "#33635c", - "charts.purple": "#5a4a78", - "charts.foreground": "#565a6e", - "charts.lines": "#f4f5f8", - - "merge.currentHeaderBackground": "#007a75aa", - "merge.currentContentBackground": "#007a7544", - "merge.incomingHeaderBackground": "#34548aaa", - "merge.incomingContentBackground": "#34548a44", - "mergeEditor.change.background": "#007a7522", - "mergeEditor.change.word.background": "#007a7522", - "mergeEditor.conflict.unhandledUnfocused.border": "#bb7a6188", - "mergeEditor.conflict.unhandledFocused.border": "#bb7a61", - "mergeEditor.conflict.handledUnfocused.border": "#007a7525", - "mergeEditor.conflict.handledFocused.border": "#007a7525", - "mergeEditor.conflict.handled.minimapOverViewRuler": "#007a75", - "mergeEditor.conflict.unhandled.minimapOverViewRuler": "#bb7a61", - - "gitlens.trailingLineForegroundColor": "#73767d", - "gitlens.gutterUncommittedForegroundColor": "#34548a", - "gitlens.gutterForegroundColor": "#4c505e", - "gitlens.gutterBackgroundColor": "#dcdee3", - - "notificationCenterHeader.background": "#dcdee3", - "notifications.background": "#dcdee3", - "notificationLink.foreground": "#34548a", - "notificationsErrorIcon.foreground": "#bb616b", - "notificationsWarningIcon.foreground": "#bba461", - "notificationsInfoIcon.foreground": "#637dbf", - - "menubar.selectionForeground": "#343b58", - "menubar.selectionBackground": "#7a85a8", - "menubar.selectionBorder": "#c1c2c7", - "menu.foreground": "#4c505e", - "menu.background": "#cbccd1", - "menu.selectionForeground": "#343b58", - "menu.selectionBackground": "#7a85a8", - "menu.separatorBackground": "#c1c2c7", - "menu.border": "#c1c2c7" - }, - "tokenColorCustomizations": { - "property.readonly": { - "foreground": "#35166d" - }, - "variable.declaration": { - "foreground": "#5a4a78" - }, - "variable.local": { - "foreground": "#343b58" - } - }, - "tokenColors": [ - { - "name": "Italics - Comments, Storage, Keyword Flow, Vue attributes, Decorators", - "scope": [ - "comment", - "meta.var.expr storage.type", - "keyword.control.flow", - "keyword.control.return", - "meta.directive.vue punctuation.separator.key-value.html", - "meta.directive.vue entity.other.attribute-name.html", - "tag.decorator.js entity.name.tag.js", - "tag.decorator.js punctuation.definition.tag.js", - "storage.modifier" - ], - "settings": { - "fontStyle": "italic" - } - }, - { - "name": "Fix YAML block scalar, Python Logical", - "scope": ["keyword.control.flow.block-scalar.literal", "keyword.control.flow.python"], - "settings": { - "fontStyle": "" - } - }, - { - "name": "Comment", - "scope": [ - "comment", - "comment.block.documentation", - "punctuation.definition.comment", - "comment.block.documentation punctuation" - ], - "settings": { - "foreground": "#9699a3" - } - }, - { - "name": "Comment Doc", - "scope": [ - "keyword.operator.assignment.jsdoc", - "comment.block.documentation variable", - "comment.block.documentation storage", - "comment.block.documentation keyword", - "comment.block.documentation support", - "comment.block.documentation markup", - "comment.block.documentation markup.inline.raw.string.markdown", - "meta.other.type.phpdoc.php keyword.other.type.php", - "meta.other.type.phpdoc.php support.other.namespace.php", - "meta.other.type.phpdoc.php punctuation.separator.inheritance.php", - "meta.other.type.phpdoc.php support.class", - "keyword.other.phpdoc.php", - "log.date" - ], - "settings": { - "foreground": "#7c7f87" - } - }, - { - "name": "Comment Doc Emphasized", - "scope": [ - "meta.other.type.phpdoc.php support.class", - "comment.block.documentation storage.type", - "comment.block.documentation punctuation.definition.block.tag", - "comment.block.documentation entity.name.type.instance" - ], - "settings": { - "foreground": "#73767d" - } - }, - { - "name": "Number, Boolean, Undefined, Null", - "scope": [ - "variable.other.constant", - "punctuation.definition.constant", - "constant.language", - "constant.numeric", - "support.constant", - "constant.other.caps" - ], - "settings": { - "foreground": "#965027" - } - }, - { - "name": "String, Symbols", - "scope": [ - "string", - "constant.other.symbol", - "constant.other.key", - "meta.attribute-selector", - "string constant.character" - ], - "settings": { - "fontStyle": "", - "foreground": "#485e30" - } - }, - { - "name": "Colors", - "scope": [ - "constant.other.color", - "constant.other.color.rgb-value.hex punctuation.definition.constant" - ], - "settings": { - "foreground": "#565a6e" - } - }, - { - "name": "Invalid", - "scope": ["invalid", "invalid.illegal"], - "settings": { - "foreground": "#942f2f" - } - }, - { - "name": "Invalid deprecated", - "scope": "invalid.deprecated", - "settings": { - "foreground": "#5a4a78" - } - }, - { - "name": "Storage Type", - "scope": "storage.type", - "settings": { - "foreground": "#5a4a78" - } - }, - { - "name": "Storage - modifier, var, const, let", - "scope": ["meta.var.expr storage.type", "storage.modifier"], - "settings": { - "foreground": "#565f89" - } - }, - { - "name": "Interpolation / PHP tags / Smarty tags", - "scope": [ - "punctuation.definition.template-expression", - "punctuation.section.embedded", - "meta.embedded.line.tag.smarty", - "support.constant.handlebars", - "punctuation.section.tag.twig" - ], - "settings": { - "foreground": "#0f4b6e" - } - }, - { - "name": "Twig, Smarty, Blade, Handlebars keyword", - "scope": [ - "keyword.control.smarty", - "keyword.control.twig", - "support.constant.handlebars keyword.control", - "keyword.operator.comparison.twig", - "keyword.blade", - "entity.name.function.blade" - ], - "settings": { - "foreground": "#166775" - } - }, - { - "name": "Spread", - "scope": ["keyword.operator.spread", "keyword.operator.rest"], - "settings": { - "foreground": "#8c4351", - "fontStyle": "bold" - } - }, - { - "name": "Operator, Misc", - "scope": [ - "keyword.operator", - "keyword.control.as", - "keyword.other", - "keyword.operator.bitwise.shift", - "punctuation", - "expression.embbeded.vue punctuation.definition.tag", - "text.html.twig meta.tag.inline.any.html", - "meta.tag.template.value.twig meta.function.arguments.twig", - "meta.directive.vue punctuation.separator.key-value.html", - "punctuation.definition.constant.markdown", - "punctuation.definition.string", - "punctuation.support.type.property-name", - "text.html.vue-html meta.tag", - "meta.attribute.directive", - "punctuation.definition.keyword", - "punctuation.terminator.rule", - "punctuation.definition.entity", - "punctuation.separator.inheritance.php", - "keyword.other.template", - "keyword.other.substitution", - "entity.name.operator", - "meta.property-list punctuation.separator.key-value", - "meta.at-rule.mixin punctuation.separator.key-value", - "meta.at-rule.function variable.parameter.url" - ], - "settings": { - "foreground": "#4c505e" - } - }, - { - "name": "Import, Export, From, Default", - "scope": [ - "keyword.control.import", - "keyword.control.export", - "keyword.control.from", - "keyword.control.default", - "meta.import keyword.other" - ], - "settings": { - "foreground": "#0f4b6e" - } - }, - { - "name": "Keyword", - "scope": ["keyword", "keyword.control", "keyword.other.important"], - "settings": { - "foreground": "#5a4a78" - } - }, - { - "name": "Keyword SQL", - "scope": "keyword.other.DML", - "settings": { - "foreground": "#0f4b6e" - } - }, - { - "name": "Keyword Operator Logical, Arrow, Ternary, Comparison", - "scope": [ - "keyword.operator.logical", - "storage.type.function", - "keyword.operator.bitwise", - "keyword.operator.ternary", - "keyword.operator.comparison", - "keyword.operator.relational", - "keyword.operator.or.regexp" - ], - "settings": { - "foreground": "#5a4a78" - } - }, - { - "name": "Tag", - "scope": "entity.name.tag", - "settings": { - "foreground": "#8c4351" - } - }, - { - "name": "Tag - Custom / Unrecognized", - "scope": [ - "entity.name.tag support.class.component", - "meta.tag.custom entity.name.tag", - "meta.tag.other.unrecognized.html.derivative entity.name.tag", - "meta.tag" - ], - "settings": { - "foreground": "#69323d" - } - }, - { - "name": "Tag Punctuation", - "scope": "punctuation.definition.tag", - "settings": { - "foreground": "#b05467" - } - }, - { - "name": "Tag Punctuation - Custom", - "scope": [ - "meta.tag.custom punctuation.definition.tag", - "meta.jsx punctuation.definition.tag" - ], - "settings": { - "foreground": "#69323d" - } - }, - { - "name": "Globals, PHP Constants, etc", - "scope": [ - "constant.other.php", - "variable.other.global.safer", - "variable.other.global.safer punctuation.definition.variable", - "variable.other.global", - "variable.other.global punctuation.definition.variable", - "constant.other.haskell" - ], - "settings": { - "foreground": "#8f5e15" - } - }, - { - "name": "Variables", - "scope": [ - "variable", - "support.variable", - "string constant.other.placeholder", - "variable.parameter.handlebars", - "variable.other.object", - "meta.fstring", - "meta.function-call meta.function-call.arguments" - ], - "settings": { - "foreground": "#343b58" - } - }, - { - "name": "Variable Array Key", - "scope": "meta.array.literal variable", - "settings": { - "foreground": "#0f4b6e" - } - }, - { - "name": "Object Key", - "scope": [ - "meta.object-literal.key", - "entity.name.type.hcl", - "string.alias.graphql", - "string.unquoted.graphql", - "string.unquoted.alias.graphql", - "meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js", - "meta.field.declaration.ts variable.object.property", - "meta.block entity.name.label" - ], - "settings": { - "foreground": "#33635c" - } - }, - { - "name": "Object Property", - "scope": [ - "variable.other.property", - "support.variable.property", - "support.variable.property.dom", - "meta.function-call variable.other.object.property", - "variable.other.object.property.cs" - ], - "settings": { - "foreground": "#0f4b6e" - } - }, - { - "name": "Object Property", - "scope": "variable.other.object.property", - "settings": { - "foreground": "#343b58" - } - }, - { - "name": "Object Literal Member lvl 3 (Vue Prop Validation)", - "scope": "meta.objectliteral meta.object.member meta.objectliteral meta.object.member meta.objectliteral meta.object.member meta.object-literal.key", - "settings": { - "foreground": "#296973" - } - }, - { - "name": "C-related Block Level Variables", - "scope": "source.cpp meta.block variable.other", - "settings": { - "foreground": "#8c4351" - } - }, - { - "name": "Other Variable", - "scope": "support.other.variable", - "settings": { - "foreground": "#8c4351" - } - }, - { - "name": "Methods", - "scope": [ - "meta.class-method.js entity.name.function.js", - "entity.name.method.js", - "variable.function.constructor", - "keyword.other.special-method", - "storage.type.cs" - ], - "settings": { - "foreground": "#34548a" - } - }, - { - "name": "Function Definition", - "scope": [ - "entity.name.function", - "variable.other.enummember", - "meta.function-call", - "meta.function-call entity.name.function", - "variable.function", - "meta.definition.method entity.name.function", - "meta.object-literal entity.name.function" - ], - "settings": { - "foreground": "#34548a" - } - }, - { - "name": "Function Argument", - "scope": [ - "variable.parameter.function.language.special", - "variable.parameter", - "meta.function.parameters punctuation.definition.variable", - "meta.function.parameter variable" - ], - "settings": { - "foreground": "#8f5e15" - } - }, - { - "name": "Constant, Tag Attribute", - "scope": [ - "keyword.other.type.php", - "storage.type.php", - "constant.character", - "constant.escape", - "keyword.other.unit" - ], - "settings": { - "foreground": "#5a4a78" - } - }, - { - "name": "Variable Definition", - "scope": [ - "meta.definition.variable variable.other.constant", - "meta.definition.variable variable.other.readwrite", - "variable.declaration.hcl variable.other.readwrite.hcl", - "meta.mapping.key.hcl variable.other.readwrite.hcl", - "variable.other.declaration" - ], - "settings": { - "foreground": "#5a4a78" - } - }, - { - "name": "Inherited Class", - "scope": "entity.other.inherited-class", - "settings": { - "fontStyle": "", - "foreground": "#5a4a78" - } - }, - { - "name": "Class, Support, DOM, etc", - "scope": [ - "support.class", - "support.type", - "variable.other.readwrite.alias", - "support.orther.namespace.use.php", - "meta.use.php", - "support.other.namespace.php", - "support.type.sys-types", - "support.variable.dom", - "support.constant.math", - "support.type.object.module", - "support.constant.json", - "entity.name.namespace", - "meta.import.qualifier", - "variable.other.constant.object" - ], - "settings": { - "foreground": "#166775" - } - }, - { - "name": "Class Name", - "scope": "entity.name", - "settings": { - "foreground": "#343b58" - } - }, - { - "name": "Support Function", - "scope": "support.function", - "settings": { - "foreground": "#166775" - } - }, - { - "name": "CSS Class and Support", - "scope": [ - "source.css support.type.property-name", - "source.sass support.type.property-name", - "source.scss support.type.property-name", - "source.less support.type.property-name", - "source.stylus support.type.property-name", - "source.postcss support.type.property-name", - "support.type.property-name.css", - "support.type.vendored.property-name", - "support.type.map.key" - ], - "settings": { - "foreground": "#34548a" - } - }, - { - "name": "CSS Font", - "scope": ["support.constant.font-name", "meta.definition.variable"], - "settings": { - "foreground": "#485e30" - } - }, - { - "name": "CSS Class", - "scope": [ - "entity.other.attribute-name.class", - "meta.at-rule.mixin.scss entity.name.function.scss" - ], - "settings": { - "foreground": "#485e30" - } - }, - { - "name": "CSS ID", - "scope": "entity.other.attribute-name.id", - "settings": { - "foreground": "#942f2f" - } - }, - { - "name": "CSS Tag", - "scope": "entity.name.tag.css", - "settings": { - "foreground": "#166775" - } - }, - { - "name": "CSS Tag Reference, Pseudo & Class Punctuation", - "scope": [ - "entity.other.attribute-name.pseudo-class punctuation.definition.entity", - "entity.other.attribute-name.pseudo-element punctuation.definition.entity", - "entity.other.attribute-name.class punctuation.definition.entity", - "entity.name.tag.reference" - ], - "settings": { - "foreground": "#8f5e15" - } - }, - { - "name": "CSS Punctuation", - "scope": "meta.property-list", - "settings": { - "foreground": "#484c61" - } - }, - { - "name": "CSS at-rule fix", - "scope": [ - "meta.property-list meta.at-rule.if", - "meta.at-rule.return variable.parameter.url", - "meta.property-list meta.at-rule.else" - ], - "settings": { - "foreground": "#965027" - } - }, - { - "name": "CSS Parent Selector Entity", - "scope": [ - "entity.other.attribute-name.parent-selector-suffix punctuation.definition.entity.css" - ], - "settings": { - "foreground": "#33635c" - } - }, - { - "name": "CSS Punctuation comma fix", - "scope": "meta.property-list meta.property-list", - "settings": { - "foreground": "#484c61" - } - }, - { - "name": "SCSS @", - "scope": [ - "meta.at-rule.mixin keyword.control.at-rule.mixin", - "meta.at-rule.include entity.name.function.scss", - "meta.at-rule.include keyword.control.at-rule.include" - ], - "settings": { - "foreground": "#5a4a78" - } - }, - { - "name": "SCSS Mixins, Extends, Include Keyword", - "scope": [ - "keyword.control.at-rule.include punctuation.definition.keyword", - "keyword.control.at-rule.mixin punctuation.definition.keyword", - "meta.at-rule.include keyword.control.at-rule.include", - "keyword.control.at-rule.extend punctuation.definition.keyword", - "meta.at-rule.extend keyword.control.at-rule.extend", - "entity.other.attribute-name.placeholder.css punctuation.definition.entity.css", - "meta.at-rule.media keyword.control.at-rule.media", - "meta.at-rule.mixin keyword.control.at-rule.mixin", - "meta.at-rule.function keyword.control.at-rule.function", - "keyword.control punctuation.definition.keyword" - ], - "settings": { - "foreground": "#4f4168" - } - }, - { - "name": "SCSS Include Mixin Argument", - "scope": "meta.property-list meta.at-rule.include", - "settings": { - "foreground": "#343b58" - } - }, - { - "name": "CSS value", - "scope": "support.constant.property-value", - "settings": { - "foreground": "#965027" - } - }, - { - "name": "Sub-methods", - "scope": [ - "entity.name.module.js", - "variable.import.parameter.js", - "variable.other.class.js" - ], - "settings": { - "foreground": "#343b58" - } - }, - { - "name": "Language methods", - "scope": "variable.language", - "settings": { - "foreground": "#8c4351" - } - }, - { - "name": "Variable punctuation", - "scope": "variable.other punctuation.definition.variable", - "settings": { - "foreground": "#343b58" - } - }, - { - "name": "Keyword this with Punctuation, ES7 Bind Operator", - "scope": [ - "source.js constant.other.object.key.js string.unquoted.label.js", - "variable.language.this punctuation.definition.variable", - "keyword.other.this" - ], - "settings": { - "foreground": "#8c4351" - } - }, - { - "name": "HTML Attributes", - "scope": [ - "entity.other.attribute-name", - "text.html.basic entity.other.attribute-name.html", - "text.html.basic entity.other.attribute-name" - ], - "settings": { - "foreground": "#5a4a78" - } - }, - { - "name": "HTML Character Entity", - "scope": "text.html constant.character.entity", - "settings": { - "foreground": "#166775" - } - }, - { - "name": "HTML Character Entity Punctuation", - "scope": "text.html punctuation.definition.entity", - "settings": { - "foreground": "#166775" - } - }, - { - "name": "Vue (Vetur / deprecated) Template attributes", - "scope": [ - "entity.other.attribute-name.id.html", - "meta.directive.vue entity.other.attribute-name.html" - ], - "settings": { - "foreground": "#5a4a78" - } - }, - { - "name": "CSS ID's", - "scope": "source.sass keyword.control", - "settings": { - "foreground": "#34548a" - } - }, - { - "name": "CSS psuedo selectors", - "scope": [ - "entity.other.attribute-name.pseudo-class", - "entity.other.attribute-name.pseudo-element", - "entity.other.attribute-name.placeholder", - "meta.property-list meta.property-value" - ], - "settings": { - "foreground": "#5a4a78" - } - }, - { - "name": "Inserted", - "scope": "markup.inserted", - "settings": { - "foreground": "#449dab" - } - }, - { - "name": "Deleted", - "scope": "markup.deleted", - "settings": { - "foreground": "#914c54" - } - }, - { - "name": "Changed", - "scope": "markup.changed", - "settings": { - "foreground": "#34548a" - } - }, - { - "name": "Regular Expressions", - "scope": "string.regexp", - "settings": { - "foreground": "#3e6968" - } - }, - { - "name": "Regular Expressions - Punctuation", - "scope": "punctuation.definition.group", - "settings": { - "foreground": "#8c4351" - } - }, - { - "name": "Regular Expressions - Character Class", - "scope": ["constant.other.character-class.regexp"], - "settings": { - "foreground": "#5a4a78" - } - }, - { - "name": "Regular Expressions - Character Class Set", - "scope": [ - "constant.other.character-class.set.regexp", - "punctuation.definition.character-class.regexp" - ], - "settings": { - "foreground": "#8f5e15" - } - }, - { - "name": "Regular Expressions - Quantifier", - "scope": "keyword.operator.quantifier.regexp", - "settings": { - "foreground": "#5a4a78" - } - }, - { - "name": "Regular Expressions - Backslash", - "scope": "constant.character.escape.backslash", - "settings": { - "foreground": "#343b58" - } - }, - { - "name": "Escape Characters", - "scope": "constant.character.escape", - "settings": { - "foreground": "#4c505e" - } - }, - { - "name": "Decorators", - "scope": [ - "tag.decorator.js entity.name.tag.js", - "tag.decorator.js punctuation.definition.tag.js" - ], - "settings": { - "foreground": "#34548a" - } - }, - { - "name": "CSS Units", - "scope": "keyword.other.unit", - "settings": { - "foreground": "#8c4351" - } - }, - { - "name": "JSON Key - Level 0", - "scope": ["source.json meta.structure.dictionary.json support.type.property-name.json"], - "settings": { - "foreground": "#34548a" - } - }, - { - "name": "JSON Key - Level 1", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#166775" - } - }, - { - "name": "JSON Key - Level 2", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#0f4b6e" - } - }, - { - "name": "JSON Key - Level 3", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#5a4a78" - } - }, - { - "name": "JSON Key - Level 4", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#8f5e15" - } - }, - { - "name": "JSON Key - Level 5", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#166775" - } - }, - { - "name": "JSON Key - Level 6", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#33635c" - } - }, - { - "name": "JSON Key - Level 7", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#8c4351" - } - }, - { - "name": "JSON Key - Level 8", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#485e30" - } - }, - { - "name": "Plain Punctuation", - "scope": "punctuation.definition.list_item.markdown", - "settings": { - "foreground": "#484c61" - } - }, - { - "name": "Block Punctuation", - "scope": [ - "meta.block", - "meta.brace", - "punctuation.definition.block", - "punctuation.definition.use", - "punctuation.definition.class", - "punctuation.definition.begin.bracket", - "punctuation.definition.end.bracket", - "punctuation.definition.switch-expression.begin.bracket", - "punctuation.definition.switch-expression.end.bracket", - "punctuation.definition.section.switch-block.begin.bracket", - "punctuation.definition.section.switch-block.end.bracket", - "punctuation.definition.group.shell", - "punctuation.definition.parameters", - "punctuation.definition.arguments", - "punctuation.definition.dictionary", - "punctuation.definition.array", - "punctuation.section" - ], - "settings": { - "foreground": "#484c61" - } - }, - { - "name": "Markdown - Plain", - "scope": ["meta.jsx.children", "meta.embedded.block"], - "settings": { - "foreground": "#343b58" - } - }, - { - "name": "HTML text", - "scope": "text.html", - "settings": { - "foreground": "#565a6e" - } - }, - { - "name": "Markdown - Markup Raw Inline", - "scope": "text.html.markdown markup.inline.raw.markdown", - "settings": { - "foreground": "#5a4a78" - } - }, - { - "name": "Markdown - Markup Raw Inline Punctuation", - "scope": "text.html.markdown markup.inline.raw.markdown punctuation.definition.raw.markdown", - "settings": { - "foreground": "#4E5579" - } - }, - { - "name": "Markdown - Heading 1", - "scope": [ - "heading.1.markdown entity.name", - "heading.1.markdown punctuation.definition.heading.markdown" - ], - "settings": { - "fontStyle": "bold", - "foreground": "#383b45" - } - }, - { - "name": "Markdown - Heading 2", - "scope": [ - "heading.2.markdown entity.name", - "heading.2.markdown punctuation.definition.heading.markdown" - ], - "settings": { - "fontStyle": "bold", - "foreground": "#0F4B6E" - } - }, - { - "name": "Markdown - Heading 3", - "scope": [ - "heading.3.markdown entity.name", - "heading.3.markdown punctuation.definition.heading.markdown" - ], - "settings": { - "fontStyle": "bold", - "foreground": "#34548a" - } - }, - { - "name": "Markdown - Heading 4", - "scope": [ - "heading.4.markdown entity.name", - "heading.4.markdown punctuation.definition.heading.markdown" - ], - "settings": { - "fontStyle": "bold", - "foreground": "#395b96" - } - }, - { - "name": "Markdown - Heading 5", - "scope": [ - "heading.5.markdown entity.name", - "heading.5.markdown punctuation.definition.heading.markdown" - ], - "settings": { - "fontStyle": "bold", - "foreground": "#565a6e" - } - }, - { - "name": "Markdown - Heading 6", - "scope": [ - "heading.6.markdown entity.name", - "heading.6.markdown punctuation.definition.heading.markdown" - ], - "settings": { - "fontStyle": "bold", - "foreground": "#747ca1" - } - }, - { - "name": "Markup - Italic", - "scope": ["markup.italic", "markup.italic punctuation"], - "settings": { - "fontStyle": "italic", - "foreground": "#343b58" - } - }, - { - "name": "Markup - Bold", - "scope": ["markup.bold", "markup.bold punctuation"], - "settings": { - "fontStyle": "bold", - "foreground": "#343b58" - } - }, - { - "name": "Markup - Bold-Italic", - "scope": ["markup.bold markup.italic", "markup.bold markup.italic punctuation"], - "settings": { - "fontStyle": "bold italic", - "foreground": "#343b58" - } - }, - { - "name": "Markup - Underline", - "scope": ["markup.underline", "markup.underline punctuation"], - "settings": { - "fontStyle": "underline" - } - }, - { - "name": "Markdown - Blockquote", - "scope": "markup.quote punctuation.definition.blockquote.markdown", - "settings": { - "foreground": "#4E5579" - } - }, - { - "name": "Markup - Quote", - "scope": "markup.quote", - "settings": { - "fontStyle": "italic" - } - }, - { - "name": "Markdown - Link", - "scope": [ - "string.other.link", - "markup.underline.link", - "constant.other.reference.link.markdown", - "string.other.link.description.title.markdown" - ], - "settings": { - "foreground": "#33635c" - } - }, - { - "name": "Markdown - Fenced Code Block", - "scope": [ - "markup.fenced_code.block.markdown", - "markup.inline.raw.string.markdown", - "variable.language.fenced.markdown" - ], - "settings": { - "foreground": "#4c505e" - } - }, - { - "name": "Markdown - Separator", - "scope": "meta.separator", - "settings": { - "fontStyle": "bold", - "foreground": "#868891" - } - }, - { - "name": "Markup - Table", - "scope": "markup.table", - "settings": { - "foreground": "#c0cefc" - } - }, - { - "name": "Token - Info", - "scope": "token.info-token", - "settings": { - "foreground": "#0db9d7" - } - }, - { - "name": "Token - Warn", - "scope": "token.warn-token", - "settings": { - "foreground": "#ffdb69" - } - }, - { - "name": "Token - Error", - "scope": "token.error-token", - "settings": { - "foreground": "#942f2f" - } - }, - { - "name": "Token - Debug", - "scope": "token.debug-token", - "settings": { - "foreground": "#b267e6" - } - }, - { - "name": "Apache Tag", - "scope": "entity.tag.apacheconf", - "settings": { - "foreground": "#8c4351" - } - }, - { - "name": "Preprocessor", - "scope": ["meta.preprocessor"], - "settings": { - "foreground": "#33635c" - } - }, - { - "name": "ENV value", - "scope": "source.env", - "settings": { - "foreground": "#34548a" - } - } - ] -} diff --git a/sites/docs/src/lib/styles/themes/tokyo-night-storm.json b/sites/docs/src/lib/styles/themes/tokyo-night-storm.json deleted file mode 100644 index 3f9ab48..0000000 --- a/sites/docs/src/lib/styles/themes/tokyo-night-storm.json +++ /dev/null @@ -1,1535 +0,0 @@ -{ - "name": "tokyo-night-storm", - "author": "Enkia", - "maintainers": ["Enkia "], - "type": "dark", - "semanticTokenColors": { - "parameter.declaration": { - "foreground": "#e0af68" - }, - "parameter": { - "foreground": "#cfc9c2" - }, - "property.declaration": { - "foreground": "#73daca" - }, - "property.defaultLibrary": { - "foreground": "#52bacd" - }, - "*.defaultLibrary": { - "foreground": "#52bacd" - }, - "variable.defaultLibrary": { - "foreground": "#52bacd" - }, - "variable.declaration": { - "foreground": "#bb9af7" - }, - "variable": { - "foreground": "#c0caf5" - } - }, - "semanticClass": "tokyo-night-storm", - "colors": { - "foreground": "#7982a9", - "descriptionForeground": "#545c7e", - "focusBorder": "#545c7e33", - "errorForeground": "#5a607d", - "widget.shadow": "#ffffff00", - "scrollbar.shadow": "#00000033", - "badge.background": "#7e83b233", - "badge.foreground": "#a9b1d6", - "icon.foreground": "#7982a9", - "settings.headerForeground": "#6183bb", - "window.activeBorder": "#0d0f17", - "window.inactiveBorder": "#0d0f17", - "sash.hoverBorder": "#29355a", - - "toolbar.activeBackground": "#2c324a", - "toolbar.hoverBackground": "#2c324a", - - "extensionButton.prominentBackground": "#3d59a1DD", - "extensionButton.prominentHoverBackground": "#3d59a1AA", - "extensionButton.prominentForeground": "#ffffff", - "extensionBadge.remoteBackground": "#3d59a1", - "extensionBadge.remoteForeground": "#ffffff", - - "button.background": "#3d59a1dd", - "button.hoverBackground": "#3d59a1AA", - "button.secondaryBackground": "#41496b", - "button.foreground": "#ffffff", - "progressBar.background": "#3d59a1", - - "input.background": "#1b1e2e", - "input.foreground": "#a9b1d6", - "input.border": "#282e44", - "input.placeholderForeground": "#4a5272", - "inputOption.activeForeground": "#c0caf5", - "inputOption.activeBackground": "#3d59a144", - - "inputValidation.infoForeground": "#bbc2e0", - "inputValidation.infoBackground": "#3d59a15c", - "inputValidation.infoBorder": "#3d59a1", - "inputValidation.warningForeground": "#000000", - "inputValidation.warningBackground": "#c2985b", - "inputValidation.warningBorder": "#e0af68", - "inputValidation.errorForeground": "#bbc2e0", - "inputValidation.errorBackground": "#85353e", - "inputValidation.errorBorder": "#963c47", - - "dropdown.foreground": "#7982a9", - "dropdown.background": "#1b1e2e", - "dropdown.listBackground": "#1b1e2e", - - "activityBar.background": "#1f2335", - "activityBar.foreground": "#7982a9", - "activityBar.inactiveForeground": "#41496b", - "activityBar.border": "#1f2335", - "activityBarBadge.background": "#3d59a1", - "activityBarBadge.foreground": "#fff", - - "tree.indentGuidesStroke": "#2e344f", - "sideBar.foreground": "#7982a9", - "sideBar.background": "#1f2335", - "sideBar.border": "#1b1e2e", - "sideBarTitle.foreground": "#7982a9", - "sideBarSectionHeader.background": "#1f2335", - "sideBarSectionHeader.foreground": "#a9b1d6", - "sideBarSectionHeader.border": "#1b1e2e", - "sideBar.dropBackground": "#292e42", - - "list.dropBackground": "#292e42", - "list.deemphasizedForeground": "#7982a9", - "list.activeSelectionBackground": "#2c324a", - - "list.activeSelectionForeground": "#a9b1d6", - "list.inactiveSelectionBackground": "#292e42", - "list.inactiveSelectionForeground": "#a9b1d6", - "list.focusBackground": "#292e42", - "list.focusForeground": "#a9b1d6", - "list.hoverBackground": "#1b1e2e", - "list.hoverForeground": "#a9b1d6", - - "list.highlightForeground": "#668ac4", - "list.invalidItemForeground": "#c97018", - "list.errorForeground": "#bb616b", - "list.warningForeground": "#c49a5a", - - "listFilterWidget.background": "#1b1e2e", - "listFilterWidget.outline": "#3d59a1", - "listFilterWidget.noMatchesOutline": "#a6333f", - - "pickerGroup.foreground": "#a9b1d6", - "pickerGroup.border": "#1b1e2e", - - "scrollbarSlider.background": "#9cacff15", - "scrollbarSlider.hoverBackground": "#9cacff10", - "scrollbarSlider.activeBackground": "#9cacff22", - - "editorBracketHighlight.foreground1": "#698cd6", - "editorBracketHighlight.foreground2": "#68b3de", - "editorBracketHighlight.foreground3": "#9a7ecc", - "editorBracketHighlight.foreground4": "#25aac2", - "editorBracketHighlight.foreground5": "#80a856", - "editorBracketHighlight.foreground6": "#cfa25f", - "editorBracketHighlight.unexpectedBracket.foreground": "#db4b4b", - - "editorBracketPairGuide.activeBackground1": "#698cd6", - "editorBracketPairGuide.activeBackground2": "#68b3de", - "editorBracketPairGuide.activeBackground3": "#9a7ecc", - "editorBracketPairGuide.activeBackground4": "#25aac2", - "editorBracketPairGuide.activeBackground5": "#80a856", - "editorBracketPairGuide.activeBackground6": "#cfa25f", - - "selection.background": "#6f7bb635", - "editor.background": "#24283b", - "editor.foreground": "#a9b1d6", - "editor.foldBackground": "#181b294a", - "editorLink.activeForeground": "#a9b1d6", - - "editor.selectionBackground": "#6f7bb640", - "editor.inactiveSelectionBackground": "#6f7bb615", - - "editor.findMatchBackground": "#3d59a166", - "editor.findMatchBorder": "#ffdb69aa", - "editor.findMatchHighlightBackground": "#3d59a166", - - "editor.findRangeHighlightBackground": "#6f7bb625", - "editor.rangeHighlightBackground": "#6f7bb620", - "editor.wordHighlightBackground": "#6f7bb633", - "editor.wordHighlightStrongBackground": "#6f7bb644", - "editor.selectionHighlightBackground": "#6f7bb633", - - "editorCursor.foreground": "#c0caf5", - "editorIndentGuide.background": "#292e42", - "editorIndentGuide.activeBackground": "#3b4261", - "editorLineNumber.foreground": "#3b4261", - "editorLineNumber.activeForeground": "#737aa2", - "editor.lineHighlightBackground": "#292e42", - "editorWhitespace.foreground": "#3b4261", - - "editorMarkerNavigation.background": "#1f2335", - "editorHoverWidget.background": "#1f2335", - "editorHoverWidget.border": "#1b1e2e", - - "editorBracketMatch.background": "#1f2335", - "editorBracketMatch.border": "#545c7e", - - "editorOverviewRuler.border": "#1b1e2e", - "editorOverviewRuler.errorForeground": "#db4b4b", - "editorOverviewRuler.warningForeground": "#e0af68", - "editorOverviewRuler.infoForeground": "#1abc9c", - "editorOverviewRuler.bracketMatchForeground": "#1b1e2e", - "editorOverviewRuler.findMatchForeground": "#a9b1d644", - "editorOverviewRuler.rangeHighlightForeground": "#a9b1d644", - "editorOverviewRuler.selectionHighlightForeground": "#a9b1d622", - "editorOverviewRuler.wordHighlightForeground": "#bb9af755", - "editorOverviewRuler.wordHighlightStrongForeground": "#bb9af766", - "editorOverviewRuler.modifiedForeground": "#3d547a", - "editorOverviewRuler.addedForeground": "#164846", - "editorOverviewRuler.deletedForeground": "#703438", - - "editorRuler.foreground": "#1b1e2e", - "editorError.foreground": "#db4b4b", - "editorWarning.foreground": "#e0af68", - "editorInfo.foreground": "#0da0ba", - "editorHint.foreground": "#0da0ba", - - "editorGutter.modifiedBackground": "#3d547a", - "editorGutter.addedBackground": "#164846", - "editorGutter.deletedBackground": "#823c41", - - "editorGhostText.foreground": "#7582ba", - - "minimapGutter.modifiedBackground": "#3d547a", - "minimapGutter.addedBackground": "#1C5957", - "minimapGutter.deletedBackground": "#944449", - - "editorGroup.border": "#1b1e2e", - "editorGroup.dropBackground": "#292e42", - "editorGroupHeader.tabsBorder": "#1b1e2e", - "editorGroupHeader.tabsBackground": "#1f2335", - "editorGroupHeader.noTabsBackground": "#1f2335", - "editorGroupHeader.border": "#1b1e2e", - - "editorPane.background": "#1f2335", - - "editorWidget.foreground": "#7982a9", - "editorWidget.background": "#1f2335", - "editorWidget.resizeBorder": "#545c7e33", - - "editorSuggestWidget.background": "#1f2335", - "editorSuggestWidget.border": "#1b1e2e", - "editorSuggestWidget.selectedBackground": "#282e44", - "editorSuggestWidget.highlightForeground": "#668ac4", - - "editorCodeLens.foreground": "#a6aaad", - "editorLightBulb.foreground": "#e0af68", - "editorLightBulbAutoFix.foreground": "#e0af68", - - "peekView.border": "#1b1e2e", - "peekViewEditor.background": "#1f2335", - "peekViewEditor.matchHighlightBackground": "#3d59a166", - "peekViewTitle.background": "#1b1e2e", - "peekViewTitleLabel.foreground": "#a9b1d6", - "peekViewTitleDescription.foreground": "#7982a9", - "peekViewResult.background": "#1b1e2e", - "peekViewResult.selectionForeground": "#a9b1d6", - "peekViewResult.selectionBackground": "#3d59a133", - "peekViewResult.lineForeground": "#a9b1d6", - "peekViewResult.fileForeground": "#7982a9", - "peekViewResult.matchHighlightBackground": "#3d59a166", - - "diffEditor.insertedTextBackground": "#41a6b520", - "diffEditor.removedTextBackground": "#db4b4b22", - "diffEditor.insertedLineBackground": "#41a6b520", - "diffEditor.removedLineBackground": "#db4b4b22", - "diffEditorGutter.insertedLineBackground": "#41a6b525", - "diffEditorGutter.removedLineBackground": "#db4b4b22", - "diffEditorOverview.insertedForeground": "#41a6b525", - "diffEditorOverview.removedForeground": "#db4b4b22", - "diffEditor.diagonalFill": "#2c324a", - - "breadcrumb.background": "#1f2335", - "breadcrumbPicker.background": "#1f2335", - "breadcrumb.foreground": "#545c7e", - "breadcrumb.focusForeground": "#a9b1d6", - "breadcrumb.activeSelectionForeground": "#a9b1d6", - - "tab.activeBackground": "#1f2335", - "tab.inactiveBackground": "#1f2335", - "tab.activeForeground": "#a9b1d6", - "tab.hoverForeground": "#a9b1d6", - "tab.activeBorder": "#3d59a1", - "tab.inactiveForeground": "#7982a9", - "tab.border": "#1b1e2e", - "tab.unfocusedActiveForeground": "#a9b1d6", - "tab.unfocusedInactiveForeground": "#7982a9", - "tab.unfocusedHoverForeground": "#a9b1d6", - "tab.activeModifiedBorder": "#282d42", - "tab.inactiveModifiedBorder": "#282d42", - "tab.unfocusedActiveBorder": "#3b4261", - "tab.lastPinnedBorder": "#2c3147", - - "panel.background": "#1f2335", - "panel.border": "#1b1e2e", - "panelTitle.activeForeground": "#a9b1d6", - "panelTitle.inactiveForeground": "#7982a9", - "panelTitle.activeBorder": "#3d59a1", - "panelInput.border": "#1f2335", - - "statusBar.foreground": "#7982a9", - "statusBar.background": "#1f2335", - "statusBar.border": "#1b1e2e", - "statusBar.noFolderBackground": "#1f2335", - "statusBar.debuggingBackground": "#1f2335", - "statusBar.debuggingForeground": "#7982a9", - "statusBarItem.activeBackground": "#1b1e2e", - "statusBarItem.hoverBackground": "#282e44", - "statusBarItem.prominentBackground": "#1b1e2e", - "statusBarItem.prominentHoverBackground": "#282e44", - - "titleBar.activeForeground": "#7982a9", - "titleBar.inactiveForeground": "#7982a9", - "titleBar.activeBackground": "#1f2335", - "titleBar.inactiveBackground": "#1f2335", - "titleBar.border": "#1b1e2e", - - "walkThrough.embeddedEditorBackground": "#1f2335", - "textLink.foreground": "#668ac4", - "textLink.activeForeground": "#7dcfff", - "textPreformat.foreground": "#73daca", - "textBlockQuote.background": "#1f2335", - "textCodeBlock.background": "#1f2335", - "textSeparator.foreground": "#545c7e", - - "debugExceptionWidget.border": "#963c47", - "debugExceptionWidget.background": "#1b1e2e", - "debugToolBar.background": "#1b1e2e", - - "debugConsole.infoForeground": "#7982a9", - "debugConsole.errorForeground": "#bb616b", - "debugConsole.sourceForeground": "#7982a9", - "debugConsole.warningForeground": "#c49a5a", - "debugConsoleInputIcon.foreground": "#73daca", - - "editor.stackFrameHighlightBackground": "#e2bd3a20", - "editor.focusedStackFrameHighlightBackground": "#73daca20", - "debugView.stateLabelForeground": "#7982a9", - "debugView.stateLabelBackground": "#1b1e2e", - "debugView.valueChangedHighlight": "#3d59a1cc", - "debugTokenExpression.name": "#7dcfff", - "debugTokenExpression.value": "#9aa5ce", - "debugTokenExpression.string": "#9ece6a", - "debugTokenExpression.boolean": "#ff9e64", - "debugTokenExpression.number": "#ff9e64", - "debugTokenExpression.error": "#bb616b", - - "debugIcon.breakpointForeground": "#db4b4b", - "debugIcon.breakpointDisabledForeground": "#545c7e", - "debugIcon.breakpointUnverifiedForeground": "#c24242", - - "terminal.background": "#1f2335", - "terminal.foreground": "#7982a9", - "terminal.selectionBackground": "#6f7bb640", - - "terminal.ansiBlack": "#414868", - "terminal.ansiRed": "#f7768e", - "terminal.ansiGreen": "#73daca", - "terminal.ansiYellow": "#e0af68", - "terminal.ansiBlue": "#7aa2f7", - "terminal.ansiMagenta": "#bb9af7", - "terminal.ansiCyan": "#7dcfff", - "terminal.ansiWhite": "#7982a9", - "terminal.ansiBrightBlack": "#414868", - "terminal.ansiBrightRed": "#f7768e", - "terminal.ansiBrightGreen": "#73daca", - "terminal.ansiBrightYellow": "#e0af68", - "terminal.ansiBrightBlue": "#7aa2f7", - "terminal.ansiBrightMagenta": "#bb9af7", - "terminal.ansiBrightCyan": "#7dcfff", - "terminal.ansiBrightWhite": "#a9b1d6", - - "gitDecoration.modifiedResourceForeground": "#6183bb", - "gitDecoration.ignoredResourceForeground": "#545c7e", - "gitDecoration.deletedResourceForeground": "#914c54", - "gitDecoration.renamedResourceForeground": "#449dab", - "gitDecoration.addedResourceForeground": "#449dab", - "gitDecoration.untrackedResourceForeground": "#449dab", - "gitDecoration.conflictingResourceForeground": "#e0af68cc", - "gitDecoration.stageDeletedResourceForeground": "#914c54", - "gitDecoration.stageModifiedResourceForeground": "#6183bb", - - "notebook.editorBackground": "#24283b", - "notebook.cellEditorBackground": "#1f2335", - "notebook.cellBorderColor": "#1b1e2e", - "notebook.focusedCellBorder": "#29355a", - "notebook.cellStatusBarItemHoverBackground": "#2c324a", - - "charts.red": "#f7768e", - "charts.blue": "#7aa2f7", - "charts.yellow": "#e0af68", - "charts.orange": "#ff9e64", - "charts.green": "#73daca", - "charts.purple": "#9d7cd8", - "charts.foreground": "#9AA5CE", - "charts.lines": "#1f2335", - - "merge.currentHeaderBackground": "#41a6b525", - "merge.currentContentBackground": "#007a7544", - "merge.incomingHeaderBackground": "#3d59a1aa", - "merge.incomingContentBackground": "#3d59a144", - "mergeEditor.change.background": "#41a6b525", - "mergeEditor.change.word.background": "#41a6b540", - "mergeEditor.conflict.unhandledUnfocused.border": "#e0af6888", - "mergeEditor.conflict.unhandledFocused.border": "#e0af68d9", - "mergeEditor.conflict.handledUnfocused.border": "#41a6b525", - "mergeEditor.conflict.handledFocused.border": "#41a6b565", - "mergeEditor.conflict.handled.minimapOverViewRuler": "#449dab", - "mergeEditor.conflict.unhandled.minimapOverViewRuler": "#e0af68", - - "gitlens.trailingLineForegroundColor": "#7582ba", - "gitlens.gutterUncommittedForegroundColor": "#7aa2f7", - "gitlens.gutterForegroundColor": "#7982a9", - "gitlens.gutterBackgroundColor": "#1f2335", - - "notificationCenterHeader.background": "#1b1e2e", - "notifications.background": "#1b1e2e", - "notificationLink.foreground": "#6183bb", - "notificationsErrorIcon.foreground": "#bb616b", - "notificationsWarningIcon.foreground": "#bba461", - "notificationsInfoIcon.foreground": "#0da0ba", - - "menubar.selectionForeground": "#c0caf5", - "menubar.selectionBackground": "#2f3549", - "menubar.selectionBorder": "#1b1e2e", - "menu.foreground": "#7982a9", - "menu.background": "#1f2335", - "menu.selectionForeground": "#c0caf5", - "menu.selectionBackground": "#2f3549", - "menu.separatorBackground": "#1b1e2e", - "menu.border": "#1b1e2e" - }, - "tokenColors": [ - { - "name": "Italics - Comments, Storage, Keyword Flow, Vue attributes, Decorators", - "scope": [ - "comment", - "meta.var.expr storage.type", - "keyword.control.flow", - "keyword.control.return", - "meta.directive.vue punctuation.separator.key-value.html", - "meta.directive.vue entity.other.attribute-name.html", - "tag.decorator.js entity.name.tag.js", - "tag.decorator.js punctuation.definition.tag.js", - "storage.modifier" - ], - "settings": { - "fontStyle": "" - } - }, - { - "name": "Fix YAML block scalar, Python Logical", - "scope": ["keyword.control.flow.block-scalar.literal", "keyword.control.flow.python"], - "settings": { - "fontStyle": "" - } - }, - { - "name": "Comment", - "scope": [ - "comment", - "comment.block.documentation", - "punctuation.definition.comment", - "comment.block.documentation punctuation" - ], - "settings": { - "foreground": "#a6aaad" - } - }, - { - "name": "Comment Doc", - "scope": [ - "keyword.operator.assignment.jsdoc", - "comment.block.documentation variable", - "comment.block.documentation storage", - "comment.block.documentation keyword", - "comment.block.documentation support", - "comment.block.documentation markup", - "comment.block.documentation markup.inline.raw.string.markdown", - "meta.other.type.phpdoc.php keyword.other.type.php", - "meta.other.type.phpdoc.php support.other.namespace.php", - "meta.other.type.phpdoc.php punctuation.separator.inheritance.php", - "meta.other.type.phpdoc.php support.class", - "keyword.other.phpdoc.php", - "log.date" - ], - "settings": { - "foreground": "#6a75a8" - } - }, - { - "name": "Comment Doc Emphasized", - "scope": [ - "meta.other.type.phpdoc.php support.class", - "comment.block.documentation storage.type", - "comment.block.documentation punctuation.definition.block.tag", - "comment.block.documentation entity.name.type.instance" - ], - "settings": { - "foreground": "#7582ba" - } - }, - { - "name": "Number, Boolean, Undefined, Null", - "scope": [ - "variable.other.constant", - "punctuation.definition.constant", - "constant.language", - "constant.numeric", - "support.constant", - "constant.other.caps" - ], - "settings": { - "foreground": "#ff9e64" - } - }, - { - "name": "String, Symbols", - "scope": [ - "string", - "constant.other.symbol", - "constant.other.key", - "meta.attribute-selector", - "string constant.character" - ], - "settings": { - "fontStyle": "", - "foreground": "#9ece6a" - } - }, - { - "name": "Colors", - "scope": [ - "constant.other.color", - "constant.other.color.rgb-value.hex punctuation.definition.constant" - ], - "settings": { - "foreground": "#9aa5ce" - } - }, - { - "name": "Invalid", - "scope": ["invalid", "invalid.illegal"], - "settings": { - "foreground": "#ff5370" - } - }, - { - "name": "Invalid deprecated", - "scope": "invalid.deprecated", - "settings": { - "foreground": "#bb9af7" - } - }, - { - "name": "Storage Type", - "scope": "storage.type", - "settings": { - "foreground": "#bb9af7" - } - }, - { - "name": "Storage - modifier, var, const, let", - "scope": ["meta.var.expr storage.type", "storage.modifier"], - "settings": { - "foreground": "#9d7cd8" - } - }, - { - "name": "Interpolation / PHP tags / Smarty tags", - "scope": [ - "punctuation.definition.template-expression", - "punctuation.section.embedded", - "meta.embedded.line.tag.smarty", - "support.constant.handlebars", - "punctuation.section.tag.twig" - ], - "settings": { - "foreground": "#7dcfff" - } - }, - { - "name": "Twig, Smarty, Blade, Handlebars keyword", - "scope": [ - "keyword.control.smarty", - "keyword.control.twig", - "support.constant.handlebars keyword.control", - "keyword.operator.comparison.twig", - "keyword.blade", - "entity.name.function.blade" - ], - "settings": { - "foreground": "#52bacd" - } - }, - { - "name": "Spread", - "scope": ["keyword.operator.spread", "keyword.operator.rest"], - "settings": { - "foreground": "#f7768e", - "fontStyle": "bold" - } - }, - { - "name": "Operator, Misc", - "scope": [ - "keyword.operator", - "keyword.control.as", - "keyword.other", - "keyword.operator.bitwise.shift", - "punctuation", - "expression.embbeded.vue punctuation.definition.tag", - "text.html.twig meta.tag.inline.any.html", - "meta.tag.template.value.twig meta.function.arguments.twig", - "meta.directive.vue punctuation.separator.key-value.html", - "punctuation.definition.constant.markdown", - "punctuation.definition.string", - "punctuation.support.type.property-name", - "text.html.vue-html meta.tag", - "meta.attribute.directive", - "punctuation.definition.keyword", - "punctuation.terminator.rule", - "punctuation.definition.entity", - "punctuation.separator.inheritance.php", - "keyword.other.template", - "keyword.other.substitution", - "entity.name.operator", - "meta.property-list punctuation.separator.key-value", - "meta.at-rule.mixin punctuation.separator.key-value", - "meta.at-rule.function variable.parameter.url" - ], - "settings": { - "foreground": "#89ddff" - } - }, - { - "name": "Import, Export, From, Default", - "scope": [ - "keyword.control.import", - "keyword.control.export", - "keyword.control.from", - "keyword.control.default", - "meta.import keyword.other" - ], - "settings": { - "foreground": "#7dcfff" - } - }, - { - "name": "Keyword", - "scope": ["keyword", "keyword.control", "keyword.other.important"], - "settings": { - "foreground": "#bb9af7" - } - }, - { - "name": "Keyword SQL", - "scope": "keyword.other.DML", - "settings": { - "foreground": "#7dcfff" - } - }, - { - "name": "Keyword Operator Logical, Arrow, Ternary, Comparison", - "scope": [ - "keyword.operator.logical", - "storage.type.function", - "keyword.operator.bitwise", - "keyword.operator.ternary", - "keyword.operator.comparison", - "keyword.operator.relational", - "keyword.operator.or.regexp" - ], - "settings": { - "foreground": "#bb9af7" - } - }, - { - "name": "Tag", - "scope": "entity.name.tag", - "settings": { - "foreground": "#f7768e" - } - }, - { - "name": "Tag - Custom / Unrecognized", - "scope": [ - "entity.name.tag support.class.component", - "meta.tag.custom entity.name.tag", - "meta.tag.other.unrecognized.html.derivative entity.name.tag", - "meta.tag" - ], - "settings": { - "foreground": "#de5971" - } - }, - { - "name": "Tag Punctuation", - "scope": "punctuation.definition.tag", - "settings": { - "foreground": "#ba3c97" - } - }, - { - "name": "Globals, PHP Constants, etc", - "scope": [ - "constant.other.php", - "variable.other.global.safer", - "variable.other.global.safer punctuation.definition.variable", - "variable.other.global", - "variable.other.global punctuation.definition.variable", - "constant.other.haskell" - ], - "settings": { - "foreground": "#e0af68" - } - }, - { - "name": "Variables", - "scope": [ - "variable", - "support.variable", - "string constant.other.placeholder", - "variable.parameter.handlebars", - "variable.other.object", - "meta.fstring", - "meta.function-call meta.function-call.arguments" - ], - "settings": { - "foreground": "#c0caf5" - } - }, - { - "name": " Variable Array Key", - "scope": "meta.array.literal variable", - "settings": { - "foreground": "#7dcfff" - } - }, - { - "name": "Object Key", - "scope": [ - "meta.object-literal.key", - "entity.name.type.hcl", - "string.alias.graphql", - "string.unquoted.graphql", - "string.unquoted.alias.graphql", - "meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js", - "meta.field.declaration.ts variable.object.property", - "meta.block entity.name.label" - ], - "settings": { - "foreground": "#73daca" - } - }, - { - "name": "Object Property", - "scope": [ - "variable.other.property", - "support.variable.property", - "support.variable.property.dom", - "meta.function-call variable.other.object.property", - "variable.other.object.property.cs" - ], - "settings": { - "foreground": "#7dcfff" - } - }, - { - "name": "Object Property", - "scope": "variable.other.object.property", - "settings": { - "foreground": "#c0caf5" - } - }, - { - "name": "Object Literal Member lvl 3 (Vue Prop Validation)", - "scope": "meta.objectliteral meta.object.member meta.objectliteral meta.object.member meta.objectliteral meta.object.member meta.object-literal.key", - "settings": { - "foreground": "#41a6b5" - } - }, - { - "name": "C-related Block Level Variables", - "scope": "source.cpp meta.block variable.other", - "settings": { - "foreground": "#f7768e" - } - }, - { - "name": "Other Variable", - "scope": "support.other.variable", - "settings": { - "foreground": "#f7768e" - } - }, - { - "name": "Methods", - "scope": [ - "meta.class-method.js entity.name.function.js", - "entity.name.method.js", - "variable.function.constructor", - "keyword.other.special-method", - "storage.type.cs" - ], - "settings": { - "foreground": "#7aa2f7" - } - }, - { - "name": "Function Definition", - "scope": [ - "entity.name.function", - "variable.other.enummember", - "meta.function-call", - "meta.function-call entity.name.function", - "variable.function", - "meta.definition.method entity.name.function", - "meta.object-literal entity.name.function" - ], - "settings": { - "foreground": "#7aa2f7" - } - }, - { - "name": "Function Argument", - "scope": [ - "variable.parameter.function.language.special", - "variable.parameter", - "meta.function.parameters punctuation.definition.variable", - "meta.function.parameter variable" - ], - "settings": { - "foreground": "#e0af68" - } - }, - { - "name": "Constant, Tag Attribute", - "scope": [ - "keyword.other.type.php", - "storage.type.php", - "constant.character", - "constant.escape", - "keyword.other.unit" - ], - "settings": { - "foreground": "#bb9af7" - } - }, - { - "name": "Variable Definition", - "scope": [ - "meta.definition.variable variable.other.constant", - "meta.definition.variable variable.other.readwrite", - "variable.declaration.hcl variable.other.readwrite.hcl", - "meta.mapping.key.hcl variable.other.readwrite.hcl", - "variable.other.declaration" - ], - "settings": { - "foreground": "#bb9af7" - } - }, - { - "name": "Inherited Class", - "scope": "entity.other.inherited-class", - "settings": { - "fontStyle": "", - "foreground": "#bb9af7" - } - }, - { - "name": "Class, Support, DOM, etc", - "scope": [ - "support.class", - "support.type", - "variable.other.readwrite.alias", - "support.orther.namespace.use.php", - "meta.use.php", - "support.other.namespace.php", - "support.type.sys-types", - "support.variable.dom", - "support.constant.math", - "support.type.object.module", - "support.constant.json", - "entity.name.namespace", - "meta.import.qualifier", - "variable.other.constant.object" - ], - "settings": { - "foreground": "#52bacd" - } - }, - { - "name": "Class Name", - "scope": "entity.name", - "settings": { - "foreground": "#c0caf5" - } - }, - { - "name": "Support Function", - "scope": "support.function", - "settings": { - "foreground": "#52bacd" - } - }, - { - "name": "CSS Class and Support", - "scope": [ - "source.css support.type.property-name", - "source.sass support.type.property-name", - "source.scss support.type.property-name", - "source.less support.type.property-name", - "source.stylus support.type.property-name", - "source.postcss support.type.property-name", - "support.type.property-name.css", - "support.type.vendored.property-name", - "support.type.map.key" - ], - "settings": { - "foreground": "#7aa2f7" - } - }, - { - "name": "CSS Font", - "scope": ["support.constant.font-name", "meta.definition.variable"], - "settings": { - "foreground": "#9ece6a" - } - }, - { - "name": "CSS Class", - "scope": [ - "entity.other.attribute-name.class", - "meta.at-rule.mixin.scss entity.name.function.scss" - ], - "settings": { - "foreground": "#9ece6a" - } - }, - { - "name": "CSS ID", - "scope": "entity.other.attribute-name.id", - "settings": { - "foreground": "#fc7b7b" - } - }, - { - "name": "CSS Tag", - "scope": "entity.name.tag.css", - "settings": { - "foreground": "#52bacd" - } - }, - { - "name": "CSS Tag Reference, Pseudo & Class Punctuation", - "scope": [ - "entity.other.attribute-name.pseudo-class punctuation.definition.entity", - "entity.other.attribute-name.pseudo-element punctuation.definition.entity", - "entity.other.attribute-name.class punctuation.definition.entity", - "entity.name.tag.reference" - ], - "settings": { - "foreground": "#e0af68" - } - }, - { - "name": "CSS Punctuation", - "scope": "meta.property-list", - "settings": { - "foreground": "#9abdf5" - } - }, - { - "name": "CSS at-rule fix", - "scope": [ - "meta.property-list meta.at-rule.if", - "meta.at-rule.return variable.parameter.url", - "meta.property-list meta.at-rule.else" - ], - "settings": { - "foreground": "#ff9e64" - } - }, - { - "name": "CSS Parent Selector Entity", - "scope": [ - "entity.other.attribute-name.parent-selector-suffix punctuation.definition.entity.css" - ], - "settings": { - "foreground": "#73daca" - } - }, - { - "name": "CSS Punctuation comma fix", - "scope": "meta.property-list meta.property-list", - "settings": { - "foreground": "#9abdf5" - } - }, - { - "name": "SCSS @", - "scope": [ - "meta.at-rule.mixin keyword.control.at-rule.mixin", - "meta.at-rule.include entity.name.function.scss", - "meta.at-rule.include keyword.control.at-rule.include" - ], - "settings": { - "foreground": "#bb9af7" - } - }, - { - "name": "SCSS Mixins, Extends, Include Keyword", - "scope": [ - "keyword.control.at-rule.include punctuation.definition.keyword", - "keyword.control.at-rule.mixin punctuation.definition.keyword", - "meta.at-rule.include keyword.control.at-rule.include", - "keyword.control.at-rule.extend punctuation.definition.keyword", - "meta.at-rule.extend keyword.control.at-rule.extend", - "entity.other.attribute-name.placeholder.css punctuation.definition.entity.css", - "meta.at-rule.media keyword.control.at-rule.media", - "meta.at-rule.mixin keyword.control.at-rule.mixin", - "meta.at-rule.function keyword.control.at-rule.function", - "keyword.control punctuation.definition.keyword" - ], - "settings": { - "foreground": "#9d7cd8" - } - }, - { - "name": "SCSS Include Mixin Argument", - "scope": "meta.property-list meta.at-rule.include", - "settings": { - "foreground": "#c0caf5" - } - }, - { - "name": "CSS value", - "scope": "support.constant.property-value", - "settings": { - "foreground": "#ff9e64" - } - }, - { - "name": "Sub-methods", - "scope": [ - "entity.name.module.js", - "variable.import.parameter.js", - "variable.other.class.js" - ], - "settings": { - "foreground": "#c0caf5" - } - }, - { - "name": "Language methods", - "scope": "variable.language", - "settings": { - "foreground": "#f7768e" - } - }, - { - "name": "Variable punctuation", - "scope": "variable.other punctuation.definition.variable", - "settings": { - "foreground": "#c0caf5" - } - }, - { - "name": "Keyword this with Punctuation, ES7 Bind Operator", - "scope": [ - "source.js constant.other.object.key.js string.unquoted.label.js", - "variable.language.this punctuation.definition.variable", - "keyword.other.this" - ], - "settings": { - "foreground": "#f7768e" - } - }, - { - "name": "HTML Attributes", - "scope": [ - "entity.other.attribute-name", - "text.html.basic entity.other.attribute-name.html", - "text.html.basic entity.other.attribute-name" - ], - "settings": { - "foreground": "#bb9af7" - } - }, - { - "name": "HTML Character Entity", - "scope": "text.html constant.character.entity", - "settings": { - "foreground": "#52bacd" - } - }, - { - "name": "Vue (Vetur / deprecated) Template attributes", - "scope": [ - "entity.other.attribute-name.id.html", - "meta.directive.vue entity.other.attribute-name.html" - ], - "settings": { - "foreground": "#bb9af7" - } - }, - { - "name": "CSS ID's", - "scope": "source.sass keyword.control", - "settings": { - "foreground": "#7aa2f7" - } - }, - { - "name": "CSS psuedo selectors", - "scope": [ - "entity.other.attribute-name.pseudo-class", - "entity.other.attribute-name.pseudo-element", - "entity.other.attribute-name.placeholder", - "meta.property-list meta.property-value" - ], - "settings": { - "foreground": "#bb9af7" - } - }, - { - "name": "Inserted", - "scope": "markup.inserted", - "settings": { - "foreground": "#449dab" - } - }, - { - "name": "Deleted", - "scope": "markup.deleted", - "settings": { - "foreground": "#914c54" - } - }, - { - "name": "Changed", - "scope": "markup.changed", - "settings": { - "foreground": "#6183bb" - } - }, - { - "name": "Regular Expressions", - "scope": "string.regexp", - "settings": { - "foreground": "#b4f9f8" - } - }, - { - "name": "Regular Expressions - Punctuation", - "scope": "punctuation.definition.group", - "settings": { - "foreground": "#f7768e" - } - }, - { - "name": "Regular Expressions - Character Class", - "scope": ["constant.other.character-class.regexp"], - "settings": { - "foreground": "#bb9af7" - } - }, - { - "name": "Regular Expressions - Character Class Set", - "scope": [ - "constant.other.character-class.set.regexp", - "punctuation.definition.character-class.regexp" - ], - "settings": { - "foreground": "#e0af68" - } - }, - { - "name": "Regular Expressions - Quantifier", - "scope": "keyword.operator.quantifier.regexp", - "settings": { - "foreground": "#89ddff" - } - }, - { - "name": "Regular Expressions - Backslash", - "scope": "constant.character.escape.backslash", - "settings": { - "foreground": "#c0caf5" - } - }, - { - "name": "Escape Characters", - "scope": "constant.character.escape", - "settings": { - "foreground": "#89ddff" - } - }, - { - "name": "Decorators", - "scope": [ - "tag.decorator.js entity.name.tag.js", - "tag.decorator.js punctuation.definition.tag.js" - ], - "settings": { - "foreground": "#7aa2f7" - } - }, - { - "name": "CSS Units", - "scope": "keyword.other.unit", - "settings": { - "foreground": "#f7768e" - } - }, - { - "name": "JSON Key - Level 0", - "scope": ["source.json meta.structure.dictionary.json support.type.property-name.json"], - "settings": { - "foreground": "#7aa2f7" - } - }, - { - "name": "JSON Key - Level 1", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#52bacd" - } - }, - { - "name": "JSON Key - Level 2", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#7dcfff" - } - }, - { - "name": "JSON Key - Level 3", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#bb9af7" - } - }, - { - "name": "JSON Key - Level 4", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#e0af68" - } - }, - { - "name": "JSON Key - Level 5", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#52bacd" - } - }, - { - "name": "JSON Key - Level 6", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#73daca" - } - }, - { - "name": "JSON Key - Level 7", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#f7768e" - } - }, - { - "name": "JSON Key - Level 8", - "scope": [ - "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" - ], - "settings": { - "foreground": "#9ece6a" - } - }, - { - "name": "Plain Punctuation", - "scope": "punctuation.definition.list_item.markdown", - "settings": { - "foreground": "#9abdf5" - } - }, - { - "name": "Block Punctuation", - "scope": [ - "meta.block", - "meta.brace", - "punctuation.definition.block", - "punctuation.definition.use", - "punctuation.definition.class", - "punctuation.definition.begin.bracket", - "punctuation.definition.end.bracket", - "punctuation.definition.switch-expression.begin.bracket", - "punctuation.definition.switch-expression.end.bracket", - "punctuation.definition.section.switch-block.begin.bracket", - "punctuation.definition.section.switch-block.end.bracket", - "punctuation.definition.group.shell", - "punctuation.definition.parameters", - "punctuation.definition.arguments", - "punctuation.definition.dictionary", - "punctuation.definition.array", - "punctuation.section" - ], - "settings": { - "foreground": "#9abdf5" - } - }, - { - "name": "Markdown - Plain", - "scope": ["meta.jsx.children", "meta.embedded.block"], - "settings": { - "foreground": "#c0caf5" - } - }, - { - "name": "HTML text", - "scope": "text.html", - "settings": { - "foreground": "#9aa5ce" - } - }, - { - "name": "Markdown - Markup Raw Inline", - "scope": "text.html.markdown markup.inline.raw.markdown", - "settings": { - "foreground": "#bb9af7" - } - }, - { - "name": "Markdown - Markup Raw Inline Punctuation", - "scope": "text.html.markdown markup.inline.raw.markdown punctuation.definition.raw.markdown", - "settings": { - "foreground": "#4E5579" - } - }, - { - "name": "Markdown - Heading 1", - "scope": [ - "heading.1.markdown entity.name", - "heading.1.markdown punctuation.definition.heading.markdown" - ], - "settings": { - "fontStyle": "bold", - "foreground": "#89ddff" - } - }, - { - "name": "Markdown - Heading 2", - "scope": [ - "heading.2.markdown entity.name", - "heading.2.markdown punctuation.definition.heading.markdown" - ], - "settings": { - "fontStyle": "bold", - "foreground": "#61bdf2" - } - }, - { - "name": "Markdown - Heading 3", - "scope": [ - "heading.3.markdown entity.name", - "heading.3.markdown punctuation.definition.heading.markdown" - ], - "settings": { - "fontStyle": "bold", - "foreground": "#7aa2f7" - } - }, - { - "name": "Markdown - Heading 4", - "scope": [ - "heading.4.markdown entity.name", - "heading.4.markdown punctuation.definition.heading.markdown" - ], - "settings": { - "fontStyle": "bold", - "foreground": "#6d91de" - } - }, - { - "name": "Markdown - Heading 5", - "scope": [ - "heading.5.markdown entity.name", - "heading.5.markdown punctuation.definition.heading.markdown" - ], - "settings": { - "fontStyle": "bold", - "foreground": "#9aa5ce" - } - }, - { - "name": "Markdown - Heading 6", - "scope": [ - "heading.6.markdown entity.name", - "heading.6.markdown punctuation.definition.heading.markdown" - ], - "settings": { - "fontStyle": "bold", - "foreground": "#747ca1" - } - }, - { - "name": "Markup - Italic", - "scope": ["markup.italic", "markup.italic punctuation"], - "settings": { - "fontStyle": "", - "foreground": "#c0caf5" - } - }, - { - "name": "Markup - Bold", - "scope": ["markup.bold", "markup.bold punctuation"], - "settings": { - "fontStyle": "bold", - "foreground": "#c0caf5" - } - }, - { - "name": "Markup - Bold-Italic", - "scope": ["markup.bold markup.italic", "markup.bold markup.italic punctuation"], - "settings": { - "fontStyle": "bold italic", - "foreground": "#c0caf5" - } - }, - { - "name": "Markup - Underline", - "scope": ["markup.underline", "markup.underline punctuation"], - "settings": { - "fontStyle": "underline" - } - }, - { - "name": "Markdown - Blockquote", - "scope": "markup.quote punctuation.definition.blockquote.markdown", - "settings": { - "foreground": "#4E5579" - } - }, - { - "name": "Markup - Quote", - "scope": "markup.quote", - "settings": { - "fontStyle": "" - } - }, - { - "name": "Markdown - Link", - "scope": [ - "string.other.link", - "markup.underline.link", - "constant.other.reference.link.markdown", - "string.other.link.description.title.markdown" - ], - "settings": { - "foreground": "#73daca" - } - }, - { - "name": "Markdown - Fenced Code Block", - "scope": [ - "markup.fenced_code.block.markdown", - "markup.inline.raw.string.markdown", - "variable.language.fenced.markdown" - ], - "settings": { - "foreground": "#89ddff" - } - }, - { - "name": "Markdown - Separator", - "scope": "meta.separator", - "settings": { - "fontStyle": "bold", - "foreground": "#a6aaad" - } - }, - { - "name": "Markup - Table", - "scope": "markup.table", - "settings": { - "foreground": "#c0cefc" - } - }, - { - "name": "Token - Info", - "scope": "token.info-token", - "settings": { - "foreground": "#0db9d7" - } - }, - { - "name": "Token - Warn", - "scope": "token.warn-token", - "settings": { - "foreground": "#ffdb69" - } - }, - { - "name": "Token - Error", - "scope": "token.error-token", - "settings": { - "foreground": "#db4b4b" - } - }, - { - "name": "Token - Debug", - "scope": "token.debug-token", - "settings": { - "foreground": "#b267e6" - } - }, - { - "name": "Apache Tag", - "scope": "entity.tag.apacheconf", - "settings": { - "foreground": "#f7768e" - } - }, - { - "name": "Preprocessor", - "scope": ["meta.preprocessor"], - "settings": { - "foreground": "#73daca" - } - }, - { - "name": "ENV value", - "scope": "source.env", - "settings": { - "foreground": "#7aa2f7" - } - } - ] -} diff --git a/sites/docs/src/lib/utils/browser.ts b/sites/docs/src/lib/utils/browser.ts deleted file mode 100644 index 37ea315..0000000 --- a/sites/docs/src/lib/utils/browser.ts +++ /dev/null @@ -1 +0,0 @@ -export const isBrowser = typeof document !== "undefined"; diff --git a/sites/docs/src/lib/utils/contextify.ts b/sites/docs/src/lib/utils/contextify.ts deleted file mode 100644 index 32296f4..0000000 --- a/sites/docs/src/lib/utils/contextify.ts +++ /dev/null @@ -1,17 +0,0 @@ -// https://github.com/Hugos68/svelte-contextify -import { getContext, hasContext, setContext } from "svelte"; - -export function createContext(): [() => T, (value: T) => T, symbol]; - -export function createContext() { - const key = Symbol("context"); - - const getCtx = () => { - if (!hasContext(key)) { - throw new Error("No context provider found for this component."); - } - return getContext(key); - }; - - return [getCtx, (value: T) => setContext(key, value), key]; -} diff --git a/sites/docs/src/lib/utils/copy-code.ts b/sites/docs/src/lib/utils/copy-code.ts deleted file mode 100644 index 8f5ae5f..0000000 --- a/sites/docs/src/lib/utils/copy-code.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { writable } from "svelte/store"; -import { isBrowser } from "$lib/utils/index.js"; - -export function createCopyCodeButton() { - let codeString = ""; - const copied = writable(false); - let copyTimeout = 0; - - function copyCode() { - if (!isBrowser) return; - navigator.clipboard.writeText(codeString); - copied.set(true); - clearTimeout(copyTimeout); - copyTimeout = window.setTimeout(() => { - copied.set(false); - }, 2500); - } - - function setCodeString(node: HTMLElement) { - codeString = node.innerText.trim() ?? ""; - } - - return { - copied, - copyCode, - setCodeString, - }; -} diff --git a/sites/docs/src/lib/utils/docs.ts b/sites/docs/src/lib/utils/docs.ts deleted file mode 100644 index a68fa7e..0000000 --- a/sites/docs/src/lib/utils/docs.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { error } from "@sveltejs/kit"; -import type { Doc } from "../../../.contentlayer/generated/index.js"; - -export type FrontMatter = Pick; - -export type DocFile = { - default: import("svelte").SvelteComponent; - metadata: FrontMatter; -}; - -export type DocResolver = () => Promise; - -type TDoc = { - component: DocFile["default"]; - metadata: DocFile["metadata"]; - title: string; -}; - -export function slugFromPath(path: string) { - return path.replace("/content/", "").replace(".md", ""); -} - -type Modules = Record Promise>; - -function findMatch(slug: string, modules: Modules) { - let match: { path?: string; resolver?: DocResolver } = {}; - - for (const [path, resolver] of Object.entries(modules)) { - if (slugFromPath(path).toLowerCase() === slug.toLowerCase()) { - match = { path, resolver: resolver as unknown as DocResolver }; - break; - } - } - if (!match.path) { - match = getIndexDocIfExists(slug, modules); - } - - return match; -} - -function getIndexDocIfExists(slug: string, modules: Modules) { - let match: { path?: string; resolver?: DocResolver } = {}; - - for (const [path, resolver] of Object.entries(modules)) { - if (path.includes(`/${slug}/index.md`)) { - match = { path, resolver: resolver as unknown as DocResolver }; - break; - } - } - - return match; -} - -export async function getDoc(slug: string): Promise { - const modules = import.meta.glob(`/content/**/*.md`); - const match = findMatch(slug, modules); - const doc = await match?.resolver?.(); - - if (!doc || !doc.metadata) { - error(404); - } - - return { - component: doc.default, - metadata: doc.metadata, - title: doc.metadata.title, - }; -} - -export function slugFromPathname(pathname: string) { - return pathname.split("/").pop() ?? ""; -} - -export function isTitleActive(currentSlug: string, title: string) { - const slugifiedTitle = title.toLowerCase().replaceAll(" ", "-"); - return currentSlug === slugifiedTitle; -} diff --git a/sites/docs/src/lib/utils/index.ts b/sites/docs/src/lib/utils/index.ts deleted file mode 100644 index 9669b0d..0000000 --- a/sites/docs/src/lib/utils/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./styles.js"; -export * from "./browser.js"; -export * from "./copy-code.js"; diff --git a/sites/docs/src/lib/utils/styles.ts b/sites/docs/src/lib/utils/styles.ts deleted file mode 100644 index aa9f1dd..0000000 --- a/sites/docs/src/lib/utils/styles.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { type ClassValue, clsx } from "clsx"; -import { twMerge } from "tailwind-merge"; -import { cubicOut } from "svelte/easing"; -import type { TransitionConfig } from "svelte/transition"; -import type { - HTMLAnchorAttributes, - HTMLAttributes, - HTMLButtonAttributes, - HTMLInputAttributes, - HTMLLabelAttributes, - HTMLLiAttributes, - HTMLOlAttributes, - HTMLTableAttributes, - HTMLTdAttributes, - HTMLTextareaAttributes, - HTMLThAttributes, -} from "svelte/elements"; - -export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)); -} - -type FlyAndScaleParams = { - y?: number; - x?: number; - start?: number; - duration?: number; -}; - -export function flyAndScale( - node: Element, - params: FlyAndScaleParams = { y: -8, x: 0, start: 0.95, duration: 150 } -): TransitionConfig { - const style = getComputedStyle(node); - const transform = style.transform === "none" ? "" : style.transform; - - const scaleConversion = ( - valueA: number, - scaleA: [number, number], - scaleB: [number, number] - ) => { - const [minA, maxA] = scaleA; - const [minB, maxB] = scaleB; - - const percentage = (valueA - minA) / (maxA - minA); - const valueB = percentage * (maxB - minB) + minB; - - return valueB; - }; - - const styleToString = (style: Record): string => { - return Object.keys(style).reduce((str, key) => { - if (style[key] === undefined) return str; - return `${str}${key}:${style[key]};`; - }, ""); - }; - - return { - duration: params.duration ?? 200, - delay: 0, - css: (t) => { - const y = scaleConversion(t, [0, 1], [params.y ?? 5, 0]); - const x = scaleConversion(t, [0, 1], [params.x ?? 0, 0]); - const scale = scaleConversion(t, [0, 1], [params.start ?? 0.95, 1]); - - return styleToString({ - transform: `${transform} translate3d(${x}px, ${y}px, 0) scale(${scale})`, - opacity: t, - }); - }, - easing: cubicOut, - }; -} - -export type WithElementRef = T & { ref?: HTMLElement | null }; - -// to get a reference to the underlying DOM element the component is rendering. -export type PrimitiveDivAttributes = WithElementRef>; -export type PrimitiveElementAttributes = WithElementRef>; -export type PrimitiveAnchorAttributes = WithElementRef; -export type PrimitiveButtonAttributes = WithElementRef; -export type PrimitiveInputAttributes = WithElementRef; -export type PrimitiveSpanAttributes = WithElementRef>; -export type PrimitiveTextareaAttributes = WithElementRef; -export type PrimitiveHeadingAttributes = WithElementRef>; -export type PrimitiveLiAttributes = WithElementRef; -export type PrimitiveOlAttributes = WithElementRef; -export type PrimitiveLabelAttributes = WithElementRef; -export type PrimitiveUlAttributes = WithElementRef>; -export type PrimitiveTableAttributes = WithElementRef; -export type PrimitiveTdAttributes = WithElementRef; -export type PrimitiveTrAttributes = WithElementRef>; -export type PrimitiveThAttributes = WithElementRef; -export type PrimitiveTableSectionAttributes = WithElementRef< - HTMLAttributes ->; diff --git a/sites/docs/src/routes/+layout.svelte b/sites/docs/src/routes/+layout.svelte deleted file mode 100644 index 422115e..0000000 --- a/sites/docs/src/routes/+layout.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - -
-
- {@render children?.()} -
-
-
diff --git a/sites/docs/src/routes/+page.svelte b/sites/docs/src/routes/+page.svelte deleted file mode 100644 index 766dd17..0000000 --- a/sites/docs/src/routes/+page.svelte +++ /dev/null @@ -1,73 +0,0 @@ - - - -
-

- Forms can be a pain, but they don't have to be. -

-

- Accessible form components that take SvelteKit Superforms - to the next level. -

-
- - -
-
-
-

- What's included -

-
- - ARIA-attributes and wiring are included by default, following the WAI-ARIA Authoring Practices. - - - Designed with composition in mind, enabling you to extend and bend the components to - your will. - - - Utilizes appropriate HTML elements for compatibility and accessibility. - - - Each component is fully typed with TypeScript, so you can move fast without breaking - things. - - - A community of developers who are always willing to lend a helping hand. Join the Discord to get involved. - - - Built & maintained by the same team responsible for shadcn-svelte, Bits UI, Melt UI, - and more! - -
-
diff --git a/sites/docs/src/routes/docs/+layout.svelte b/sites/docs/src/routes/docs/+layout.svelte deleted file mode 100644 index 2bc26c3..0000000 --- a/sites/docs/src/routes/docs/+layout.svelte +++ /dev/null @@ -1,25 +0,0 @@ - - -
- -
-
- -
- {#key $page.url.pathname} - - {/key} -
-
diff --git a/sites/docs/src/routes/docs/+page.svelte b/sites/docs/src/routes/docs/+page.svelte deleted file mode 100644 index d4e4742..0000000 --- a/sites/docs/src/routes/docs/+page.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - - {doc.tagline ?? ""} - {doc.title} - {doc.description} - -
- -
diff --git a/sites/docs/src/routes/docs/+page.ts b/sites/docs/src/routes/docs/+page.ts deleted file mode 100644 index a7649fd..0000000 --- a/sites/docs/src/routes/docs/+page.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { PageLoad } from "./$types.js"; -import { getDoc } from "$lib/utils/docs.js"; - -export const load: PageLoad = async () => { - const { component, title, metadata } = await getDoc("index"); - return { - component, - title, - metadata, - }; -}; diff --git a/sites/docs/src/routes/docs/[...slug]/+page.svelte b/sites/docs/src/routes/docs/[...slug]/+page.svelte deleted file mode 100644 index 542aff5..0000000 --- a/sites/docs/src/routes/docs/[...slug]/+page.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - - {doc.tagline ?? ""} - {doc.title} - {doc.description} - -
- -
diff --git a/sites/docs/src/routes/docs/[...slug]/+page.ts b/sites/docs/src/routes/docs/[...slug]/+page.ts deleted file mode 100644 index abdc1fd..0000000 --- a/sites/docs/src/routes/docs/[...slug]/+page.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { PageLoad } from "./$types.js"; -import { getDoc } from "$lib/utils/docs.js"; - -export const load: PageLoad = async (event) => { - const { component, title, metadata } = await getDoc(event.params.slug); - return { - component, - title, - description: metadata.description, - metadata, - ...event.data, - }; -}; diff --git a/sites/docs/src/routes/docs/examples/basic/+page.server.ts b/sites/docs/src/routes/docs/examples/basic/+page.server.ts deleted file mode 100644 index f774bfa..0000000 --- a/sites/docs/src/routes/docs/examples/basic/+page.server.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { superValidate } from "sveltekit-superforms"; -import { zod } from "sveltekit-superforms/adapters"; -import { fail } from "@sveltejs/kit"; -import { schema } from "./schema"; -import type { Actions } from "./$types"; - -export async function load() { - const form = await superValidate(zod(schema)); - - return { form }; -} - -export const actions: Actions = { - default: async (event) => { - const form = await superValidate(event, zod(schema)); - - if (!form.valid) { - return fail(400, { form }); - } - - return { form }; - }, -}; diff --git a/sites/docs/src/routes/docs/examples/basic/+page.svelte b/sites/docs/src/routes/docs/examples/basic/+page.svelte deleted file mode 100644 index 883475f..0000000 --- a/sites/docs/src/routes/docs/examples/basic/+page.svelte +++ /dev/null @@ -1,92 +0,0 @@ - - -
- - - {#snippet children({ props })} - - - {/snippet} - - Company email is preferred - - - - - {#snippet children({ props })} - - - {/snippet} - - Tell us a bit about yourself. - - - - - {#snippet children({ props })} - - - {/snippet} - - Help us address you properly. - - -
- Select your theme - {#each themes as theme} - - {#snippet children({ props })} - - - {/snippet} - - {/each} - -
- - - {#snippet children({ props })} - - - {/snippet} - - Stay up to date with our latest news and offers. - - -
- Select your allergies - {#each allergies as allergy} - - {#snippet children({ props })} - - - {/snippet} - - {/each} - When we provide lunch, we'll accommodate your needs. - -
- -
- diff --git a/sites/docs/src/routes/docs/examples/basic/schema.ts b/sites/docs/src/routes/docs/examples/basic/schema.ts deleted file mode 100644 index 1401550..0000000 --- a/sites/docs/src/routes/docs/examples/basic/schema.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { z } from "zod"; - -export const languages = ["en", "es", "fr"] as const; -export const themes = ["light", "dark"] as const; -export const allergies = ["peanuts", "dairy", "gluten", "soy", "shellfish"] as const; - -// Define outside the load function so the adapter can be cached -export const schema = z.object({ - email: z.string().email(), - bio: z.string().optional(), - theme: z.enum(themes).default("dark"), - language: z.enum(languages).default("en"), - marketingEmails: z.boolean().default(true), - allergies: z.enum(allergies).array().default([]), -}); diff --git a/sites/docs/src/routes/docs/examples/bits-multi/+page.server.ts b/sites/docs/src/routes/docs/examples/bits-multi/+page.server.ts deleted file mode 100644 index 26697ad..0000000 --- a/sites/docs/src/routes/docs/examples/bits-multi/+page.server.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { superValidate } from "sveltekit-superforms"; -import { zod } from "sveltekit-superforms/adapters"; -import { fail } from "@sveltejs/kit"; -import type { Actions, PageServerLoad } from "./$types"; -import { colorsSchema } from "./+page.svelte"; - -export const load: PageServerLoad = async () => { - return { - form: await superValidate(zod(colorsSchema)), - }; -}; - -export const actions: Actions = { - default: async (event) => { - const form = await superValidate(event, zod(colorsSchema)); - - if (!form.valid) { - return fail(400, { form }); - } - - return { form }; - }, -}; diff --git a/sites/docs/src/routes/docs/examples/bits-multi/+page.svelte b/sites/docs/src/routes/docs/examples/bits-multi/+page.svelte deleted file mode 100644 index 3392c35..0000000 --- a/sites/docs/src/routes/docs/examples/bits-multi/+page.svelte +++ /dev/null @@ -1,66 +0,0 @@ - - - - -
- - - {#snippet children({ props })} - Favorite colors - - - {selectedLabel} - - - {#each Object.entries(colors) as [value, label]} - - {/each} - - - - We'll use these colors to customize your experience. - - - {/snippet} - - - Submit -
- diff --git a/sites/docs/src/routes/docs/examples/json/+page.svelte b/sites/docs/src/routes/docs/examples/json/+page.svelte deleted file mode 100644 index 008e914..0000000 --- a/sites/docs/src/routes/docs/examples/json/+page.svelte +++ /dev/null @@ -1,48 +0,0 @@ - - - - - -
- - - {#snippet children({ props })} - - - {/snippet} - - - - - -
diff --git a/sites/docs/src/routes/docs/examples/profile/+page.server.ts b/sites/docs/src/routes/docs/examples/profile/+page.server.ts deleted file mode 100644 index 4d160f6..0000000 --- a/sites/docs/src/routes/docs/examples/profile/+page.server.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { superValidate } from "sveltekit-superforms"; -import { zod } from "sveltekit-superforms/adapters"; -import { fail } from "@sveltejs/kit"; -import type { Actions, PageServerLoad } from "./$types"; -import { profileFormSchema } from "./+page.svelte"; - -export const load: PageServerLoad = async () => { - return { - form: await superValidate(zod(profileFormSchema)), - }; -}; - -export const actions: Actions = { - default: async (event) => { - const form = await superValidate(event, zod(profileFormSchema)); - - if (!form.valid) { - return fail(400, { form }); - } - - return { form }; - }, -}; diff --git a/sites/docs/src/routes/docs/examples/profile/+page.svelte b/sites/docs/src/routes/docs/examples/profile/+page.svelte deleted file mode 100644 index c797ca3..0000000 --- a/sites/docs/src/routes/docs/examples/profile/+page.svelte +++ /dev/null @@ -1,101 +0,0 @@ - - - - -
- - - {#snippet children({ props })} - Username - - - This is your public display name. It can be your real name or a pseudonym. You - can only change this once every 30 days. - - - {/snippet} - - - - - {#snippet children({ props })} - Email - - - - - - me@example.com - you@example.com - them@example.com - - - - - {/snippet} - - - - - {#snippet children({ props })} - Bio -