update table of contents

This commit is contained in:
Jesse Winton
2025-02-28 15:07:36 -05:00
parent 72e0dd34cf
commit d42c8bff4b
8 changed files with 264 additions and 229 deletions

View File

@@ -45,8 +45,7 @@
"@sveltejs/enhanced-img": "^0.1.9", "@sveltejs/enhanced-img": "^0.1.9",
"@sveltejs/kit": "^2.16.1", "@sveltejs/kit": "^2.16.1",
"@sveltejs/vite-plugin-svelte": "^3.1.2", "@sveltejs/vite-plugin-svelte": "^3.1.2",
"@tailwindcss/postcss": "^4.0.9", "@tailwindcss/postcss": "4.0.0-alpha.17",
"@tailwindcss/typography": "^0.5.16",
"@types/compression": "^1.7.5", "@types/compression": "^1.7.5",
"@types/glob": "^8.1.0", "@types/glob": "^8.1.0",
"@types/markdown-it": "^13.0.9", "@types/markdown-it": "^13.0.9",
@@ -87,7 +86,7 @@
"svelte-markdown": "^0.4.1", "svelte-markdown": "^0.4.1",
"svgtofont": "^4.2.3", "svgtofont": "^4.2.3",
"tailwind-merge": "^2.6.0", "tailwind-merge": "^2.6.0",
"tailwindcss": "^4.0.9", "tailwindcss": "4.0.0-alpha.17",
"tslib": "^2.8.1", "tslib": "^2.8.1",
"typescript": "^5.7.3", "typescript": "^5.7.3",
"typescript-eslint": "^8.21.0", "typescript-eslint": "^8.21.0",

225
pnpm-lock.yaml generated
View File

@@ -64,11 +64,8 @@ importers:
specifier: ^3.1.2 specifier: ^3.1.2
version: 3.1.2(svelte@4.2.19)(vite@5.4.14(@types/node@22.10.10)(lightningcss@1.29.1)(sass@1.83.4)) version: 3.1.2(svelte@4.2.19)(vite@5.4.14(@types/node@22.10.10)(lightningcss@1.29.1)(sass@1.83.4))
'@tailwindcss/postcss': '@tailwindcss/postcss':
specifier: ^4.0.9 specifier: 4.0.0-alpha.17
version: 4.0.9 version: 4.0.0-alpha.17(postcss@8.5.1)
'@tailwindcss/typography':
specifier: ^0.5.16
version: 0.5.16(tailwindcss@4.0.9)
'@types/compression': '@types/compression':
specifier: ^1.7.5 specifier: ^1.7.5
version: 1.7.5 version: 1.7.5
@@ -187,8 +184,8 @@ importers:
specifier: ^2.6.0 specifier: ^2.6.0
version: 2.6.0 version: 2.6.0
tailwindcss: tailwindcss:
specifier: ^4.0.9 specifier: 4.0.0-alpha.17
version: 4.0.9 version: 4.0.0-alpha.17
tslib: tslib:
specifier: ^2.8.1 specifier: ^2.8.1
version: 2.8.1 version: 2.8.1
@@ -216,10 +213,6 @@ importers:
packages: packages:
'@alloc/quick-lru@5.2.0':
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
'@ampproject/remapping@2.3.0': '@ampproject/remapping@2.3.0':
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
@@ -1671,86 +1664,72 @@ packages:
'@swc/helpers@0.5.15': '@swc/helpers@0.5.15':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
'@tailwindcss/node@4.0.9': '@tailwindcss/oxide-android-arm64@4.0.0-alpha.17':
resolution: {integrity: sha512-tOJvdI7XfJbARYhxX+0RArAhmuDcczTC46DGCEziqxzzbIaPnfYaIyRT31n4u8lROrsO7Q6u/K9bmQHL2uL1bQ==} resolution: {integrity: sha512-IBOd4/iQW8tq8YJJgoEECy+wVPnJcAx/kwS45uKTbq5GVK9l8siBEnTiJ7VPnuoo2vQfLlJjshA7ar8nMX589w==}
'@tailwindcss/oxide-android-arm64@4.0.9':
resolution: {integrity: sha512-YBgy6+2flE/8dbtrdotVInhMVIxnHJPbAwa7U1gX4l2ThUIaPUp18LjB9wEH8wAGMBZUb//SzLtdXXNBHPUl6Q==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
'@tailwindcss/oxide-darwin-arm64@4.0.9': '@tailwindcss/oxide-darwin-arm64@4.0.0-alpha.17':
resolution: {integrity: sha512-pWdl4J2dIHXALgy2jVkwKBmtEb73kqIfMpYmcgESr7oPQ+lbcQ4+tlPeVXaSAmang+vglAfFpXQCOvs/aGSqlw==} resolution: {integrity: sha512-JiV0oe6QmeL/6dDQkk12H+sa/BmH4p7KbaW2/PPOTfFVZjIbM9Qj3drsFwWRuwPTI9mSpJQFxWtdbMYarLVK1w==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@tailwindcss/oxide-darwin-x64@4.0.9': '@tailwindcss/oxide-darwin-x64@4.0.0-alpha.17':
resolution: {integrity: sha512-4Dq3lKp0/C7vrRSkNPtBGVebEyWt9QPPlQctxJ0H3MDyiQYvzVYf8jKow7h5QkWNe8hbatEqljMj/Y0M+ERYJg==} resolution: {integrity: sha512-39zvOSxFfiVcQQp1/4dD5kMH6bwKagRO2PLLmlH6EAM7LuIyVsKJwFK5Z+ZYTLoG3hUGUxvCPOjgbqMYvRLJ3w==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@tailwindcss/oxide-freebsd-x64@4.0.9': '@tailwindcss/oxide-freebsd-x64@4.0.0-alpha.17':
resolution: {integrity: sha512-k7U1RwRODta8x0uealtVt3RoWAWqA+D5FAOsvVGpYoI6ObgmnzqWW6pnVwz70tL8UZ/QXjeMyiICXyjzB6OGtQ==} resolution: {integrity: sha512-KplmR3Md+B5W0ocH4N3ArLowABlKHKqV6mImURrGriqDhwfVeJyarugx+Uo811D2qSYTqLkQXW7u0esIxBM69w==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
'@tailwindcss/oxide-linux-arm-gnueabihf@4.0.9': '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.0-alpha.17':
resolution: {integrity: sha512-NDDjVweHz2zo4j+oS8y3KwKL5wGCZoXGA9ruJM982uVJLdsF8/1AeKvUwKRlMBpxHt1EdWJSAh8a0Mfhl28GlQ==} resolution: {integrity: sha512-2GZ91U2fkqY9ohaPiQr1UJt0yAaZq7/5tFXvtRUY72PDYfz1PlnvxyDlQ16roepxi+Si52svLmzm7E9g4kVz/g==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
'@tailwindcss/oxide-linux-arm64-gnu@4.0.9': '@tailwindcss/oxide-linux-arm64-gnu@4.0.0-alpha.17':
resolution: {integrity: sha512-jk90UZ0jzJl3Dy1BhuFfRZ2KP9wVKMXPjmCtY4U6fF2LvrjP5gWFJj5VHzfzHonJexjrGe1lMzgtjriuZkxagg==} resolution: {integrity: sha512-11do1KeInnJo7vVJgI2bTJ3YHQ6jirbJB4KcfHS1sn9ArKUFJrgk+32QQGj+Gv39krgzSReNb84Xr+Oi6iCcyA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@tailwindcss/oxide-linux-arm64-musl@4.0.9': '@tailwindcss/oxide-linux-arm64-musl@4.0.0-alpha.17':
resolution: {integrity: sha512-3eMjyTC6HBxh9nRgOHzrc96PYh1/jWOwHZ3Kk0JN0Kl25BJ80Lj9HEvvwVDNTgPg154LdICwuFLuhfgH9DULmg==} resolution: {integrity: sha512-qB0XX8iGafq7IJa7yDPVaDLQC2QhjtMgXgKggpgxjtLaSQDVJ53hHmmjglgLSghlHpZ0+mNfQDT8EOzRdhvj7Q==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@tailwindcss/oxide-linux-x64-gnu@4.0.9': '@tailwindcss/oxide-linux-x64-gnu@4.0.0-alpha.17':
resolution: {integrity: sha512-v0D8WqI/c3WpWH1kq/HP0J899ATLdGZmENa2/emmNjubT0sWtEke9W9+wXeEoACuGAhF9i3PO5MeyditpDCiWQ==} resolution: {integrity: sha512-iTsqmqxdcrLf77SagBIygip656YLEtl2wO5VMoeK3omYviM/ipNH2Vu5HZ6fB/qotX9gVzyz4iQovFAWvp6Azg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@tailwindcss/oxide-linux-x64-musl@4.0.9': '@tailwindcss/oxide-linux-x64-musl@4.0.0-alpha.17':
resolution: {integrity: sha512-Kvp0TCkfeXyeehqLJr7otsc4hd/BUPfcIGrQiwsTVCfaMfjQZCG7DjI+9/QqPZha8YapLA9UoIcUILRYO7NE1Q==} resolution: {integrity: sha512-2bHxD8yXy36dpIFUbDW7LRDKYpZXRcOC0PTVukobmkp+F0p8rEnTcI36DPLGEA8W3+FDIKbGQM4aMb1r/BbGZg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@tailwindcss/oxide-win32-arm64-msvc@4.0.9': '@tailwindcss/oxide-win32-x64-msvc@4.0.0-alpha.17':
resolution: {integrity: sha512-m3+60T/7YvWekajNq/eexjhV8z10rswcz4BC9bioJ7YaN+7K8W2AmLmG0B79H14m6UHE571qB0XsPus4n0QVgQ==} resolution: {integrity: sha512-qNFwdHYQoJDfObko0WyutVrFPoaZB5pVkJ6FlR7M/0ylLvx/BR7kfyWZYmivi3DGXZmm4eMFLLYZjBjLHWbvUg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
'@tailwindcss/oxide-win32-x64-msvc@4.0.9':
resolution: {integrity: sha512-dpc05mSlqkwVNOUjGu/ZXd5U1XNch1kHFJ4/cHkZFvaW1RzbHmRt24gvM8/HC6IirMxNarzVw4IXVtvrOoZtxA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@tailwindcss/oxide@4.0.9': '@tailwindcss/oxide@4.0.0-alpha.17':
resolution: {integrity: sha512-eLizHmXFqHswJONwfqi/WZjtmWZpIalpvMlNhTM99/bkHtUs6IqgI1XQ0/W5eO2HiRQcIlXUogI2ycvKhVLNcA==} resolution: {integrity: sha512-5FciVkCRpYRsVRyu8+ldiiOxGgXDJQLMzd5fjPCt7JZWhSZjS/QkXQdBc41Bcice3sgxTtKpKA4ef3sEcOfG/A==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
'@tailwindcss/postcss@4.0.9': '@tailwindcss/postcss@4.0.0-alpha.17':
resolution: {integrity: sha512-BT/E+pdMqulavEAVM5NCpxmGEwHiLDPpkmg/c/X25ZBW+izTe+aZ+v1gf/HXTrihRoCxrUp5U4YyHsBTzspQKQ==} resolution: {integrity: sha512-N0DQOSy+5c1/JkKt1yPja5Kb0QqpkYFFEcV5SK+Cnko+ncsDYOesEfIm00qAtb/9S9SWy5PGNHP7s0U21pWGyA==}
'@tailwindcss/typography@0.5.16':
resolution: {integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1'
'@tokenizer/token@0.3.0': '@tokenizer/token@0.3.0':
resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
@@ -2445,10 +2424,6 @@ packages:
end-of-stream@1.4.4: end-of-stream@1.4.4:
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
enhanced-resolve@5.18.1:
resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
engines: {node: '>=10.13.0'}
entities@4.5.0: entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'} engines: {node: '>=0.12'}
@@ -3088,12 +3063,6 @@ packages:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'} engines: {node: '>=10'}
lodash.castarray@4.4.0:
resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
lodash.isplainobject@4.0.6:
resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
lodash.merge@4.6.2: lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
@@ -3533,6 +3502,10 @@ packages:
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
engines: {node: '>=12'} engines: {node: '>=12'}
pify@2.3.0:
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
engines: {node: '>=0.10.0'}
pirates@4.0.6: pirates@4.0.6:
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
engines: {node: '>= 6'} engines: {node: '>= 6'}
@@ -3565,6 +3538,12 @@ packages:
resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==}
engines: {node: '>=4.0.0'} engines: {node: '>=4.0.0'}
postcss-import@16.1.0:
resolution: {integrity: sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==}
engines: {node: '>=18.0.0'}
peerDependencies:
postcss: ^8.0.0
postcss-load-config@3.1.4: postcss-load-config@3.1.4:
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
@@ -3589,14 +3568,13 @@ packages:
peerDependencies: peerDependencies:
postcss: ^8.4.29 postcss: ^8.4.29
postcss-selector-parser@6.0.10:
resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
engines: {node: '>=4'}
postcss-selector-parser@6.1.2: postcss-selector-parser@6.1.2:
resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
engines: {node: '>=4'} engines: {node: '>=4'}
postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
postcss@8.5.1: postcss@8.5.1:
resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==}
engines: {node: ^10 || ^12 || >=14} engines: {node: ^10 || ^12 || >=14}
@@ -3747,6 +3725,9 @@ packages:
react-is@18.3.1: react-is@18.3.1:
resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
read-cache@1.0.0:
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
readable-stream@2.3.8: readable-stream@2.3.8:
resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
@@ -4110,12 +4091,8 @@ packages:
tailwind-merge@2.6.0: tailwind-merge@2.6.0:
resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==}
tailwindcss@4.0.9: tailwindcss@4.0.0-alpha.17:
resolution: {integrity: sha512-12laZu+fv1ONDRoNR9ipTOpUD7RN9essRVkX36sjxuRUInpN7hIiHN4lBd/SIFjbISvnXzp8h/hXzmU8SQQYhw==} resolution: {integrity: sha512-wWr6kvH40Hp1LQVcD738ojwU6+muJnpIUZw3J2EqjOdqHpg3iUIkrrQszP5HP4nwi4qBsoCoHPWVJ3Qw4f1IZw==}
tapable@2.2.1:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
engines: {node: '>=6'}
tar@6.2.1: tar@6.2.1:
resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
@@ -4486,8 +4463,6 @@ packages:
snapshots: snapshots:
'@alloc/quick-lru@5.2.0': {}
'@ampproject/remapping@2.3.0': '@ampproject/remapping@2.3.0':
dependencies: dependencies:
'@jridgewell/gen-mapping': 0.3.8 '@jridgewell/gen-mapping': 0.3.8
@@ -6033,75 +6008,57 @@ snapshots:
dependencies: dependencies:
tslib: 2.8.1 tslib: 2.8.1
'@tailwindcss/node@4.0.9': '@tailwindcss/oxide-android-arm64@4.0.0-alpha.17':
dependencies:
enhanced-resolve: 5.18.1
jiti: 2.4.2
tailwindcss: 4.0.9
'@tailwindcss/oxide-android-arm64@4.0.9':
optional: true optional: true
'@tailwindcss/oxide-darwin-arm64@4.0.9': '@tailwindcss/oxide-darwin-arm64@4.0.0-alpha.17':
optional: true optional: true
'@tailwindcss/oxide-darwin-x64@4.0.9': '@tailwindcss/oxide-darwin-x64@4.0.0-alpha.17':
optional: true optional: true
'@tailwindcss/oxide-freebsd-x64@4.0.9': '@tailwindcss/oxide-freebsd-x64@4.0.0-alpha.17':
optional: true optional: true
'@tailwindcss/oxide-linux-arm-gnueabihf@4.0.9': '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.0-alpha.17':
optional: true optional: true
'@tailwindcss/oxide-linux-arm64-gnu@4.0.9': '@tailwindcss/oxide-linux-arm64-gnu@4.0.0-alpha.17':
optional: true optional: true
'@tailwindcss/oxide-linux-arm64-musl@4.0.9': '@tailwindcss/oxide-linux-arm64-musl@4.0.0-alpha.17':
optional: true optional: true
'@tailwindcss/oxide-linux-x64-gnu@4.0.9': '@tailwindcss/oxide-linux-x64-gnu@4.0.0-alpha.17':
optional: true optional: true
'@tailwindcss/oxide-linux-x64-musl@4.0.9': '@tailwindcss/oxide-linux-x64-musl@4.0.0-alpha.17':
optional: true optional: true
'@tailwindcss/oxide-win32-arm64-msvc@4.0.9': '@tailwindcss/oxide-win32-x64-msvc@4.0.0-alpha.17':
optional: true optional: true
'@tailwindcss/oxide-win32-x64-msvc@4.0.9': '@tailwindcss/oxide@4.0.0-alpha.17':
optional: true
'@tailwindcss/oxide@4.0.9':
optionalDependencies: optionalDependencies:
'@tailwindcss/oxide-android-arm64': 4.0.9 '@tailwindcss/oxide-android-arm64': 4.0.0-alpha.17
'@tailwindcss/oxide-darwin-arm64': 4.0.9 '@tailwindcss/oxide-darwin-arm64': 4.0.0-alpha.17
'@tailwindcss/oxide-darwin-x64': 4.0.9 '@tailwindcss/oxide-darwin-x64': 4.0.0-alpha.17
'@tailwindcss/oxide-freebsd-x64': 4.0.9 '@tailwindcss/oxide-freebsd-x64': 4.0.0-alpha.17
'@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.9 '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.0-alpha.17
'@tailwindcss/oxide-linux-arm64-gnu': 4.0.9 '@tailwindcss/oxide-linux-arm64-gnu': 4.0.0-alpha.17
'@tailwindcss/oxide-linux-arm64-musl': 4.0.9 '@tailwindcss/oxide-linux-arm64-musl': 4.0.0-alpha.17
'@tailwindcss/oxide-linux-x64-gnu': 4.0.9 '@tailwindcss/oxide-linux-x64-gnu': 4.0.0-alpha.17
'@tailwindcss/oxide-linux-x64-musl': 4.0.9 '@tailwindcss/oxide-linux-x64-musl': 4.0.0-alpha.17
'@tailwindcss/oxide-win32-arm64-msvc': 4.0.9 '@tailwindcss/oxide-win32-x64-msvc': 4.0.0-alpha.17
'@tailwindcss/oxide-win32-x64-msvc': 4.0.9
'@tailwindcss/postcss@4.0.9': '@tailwindcss/postcss@4.0.0-alpha.17(postcss@8.5.1)':
dependencies: dependencies:
'@alloc/quick-lru': 5.2.0 '@tailwindcss/oxide': 4.0.0-alpha.17
'@tailwindcss/node': 4.0.9
'@tailwindcss/oxide': 4.0.9
lightningcss: 1.29.1 lightningcss: 1.29.1
postcss: 8.5.1 postcss-import: 16.1.0(postcss@8.5.1)
tailwindcss: 4.0.9 tailwindcss: 4.0.0-alpha.17
transitivePeerDependencies:
'@tailwindcss/typography@0.5.16(tailwindcss@4.0.9)': - postcss
dependencies:
lodash.castarray: 4.4.0
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
postcss-selector-parser: 6.0.10
tailwindcss: 4.0.9
'@tokenizer/token@0.3.0': {} '@tokenizer/token@0.3.0': {}
@@ -6872,11 +6829,6 @@ snapshots:
dependencies: dependencies:
once: 1.4.0 once: 1.4.0
enhanced-resolve@5.18.1:
dependencies:
graceful-fs: 4.2.11
tapable: 2.2.1
entities@4.5.0: {} entities@4.5.0: {}
env-paths@2.2.1: {} env-paths@2.2.1: {}
@@ -7420,7 +7372,8 @@ snapshots:
jiti@1.21.7: {} jiti@1.21.7: {}
jiti@2.4.2: {} jiti@2.4.2:
optional: true
jpeg-js@0.4.4: {} jpeg-js@0.4.4: {}
@@ -7547,10 +7500,6 @@ snapshots:
dependencies: dependencies:
p-locate: 5.0.0 p-locate: 5.0.0
lodash.castarray@4.4.0: {}
lodash.isplainobject@4.0.6: {}
lodash.merge@4.6.2: {} lodash.merge@4.6.2: {}
lodash@4.17.21: {} lodash@4.17.21: {}
@@ -8002,6 +7951,8 @@ snapshots:
picomatch@4.0.2: {} picomatch@4.0.2: {}
pify@2.3.0: {}
pirates@4.0.6: {} pirates@4.0.6: {}
piscina@4.8.0: piscina@4.8.0:
@@ -8030,6 +7981,13 @@ snapshots:
pngjs@3.4.0: {} pngjs@3.4.0: {}
postcss-import@16.1.0(postcss@8.5.1):
dependencies:
postcss: 8.5.1
postcss-value-parser: 4.2.0
read-cache: 1.0.0
resolve: 1.22.10
postcss-load-config@3.1.4(postcss@8.5.1): postcss-load-config@3.1.4(postcss@8.5.1):
dependencies: dependencies:
lilconfig: 2.1.0 lilconfig: 2.1.0
@@ -8045,16 +8003,13 @@ snapshots:
dependencies: dependencies:
postcss: 8.5.1 postcss: 8.5.1
postcss-selector-parser@6.0.10:
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
postcss-selector-parser@6.1.2: postcss-selector-parser@6.1.2:
dependencies: dependencies:
cssesc: 3.0.0 cssesc: 3.0.0
util-deprecate: 1.0.2 util-deprecate: 1.0.2
postcss-value-parser@4.2.0: {}
postcss@8.5.1: postcss@8.5.1:
dependencies: dependencies:
nanoid: 3.3.8 nanoid: 3.3.8
@@ -8137,6 +8092,10 @@ snapshots:
react-is@18.3.1: {} react-is@18.3.1: {}
read-cache@1.0.0:
dependencies:
pify: 2.3.0
readable-stream@2.3.8: readable-stream@2.3.8:
dependencies: dependencies:
core-util-is: 1.0.3 core-util-is: 1.0.3
@@ -8576,9 +8535,7 @@ snapshots:
tailwind-merge@2.6.0: {} tailwind-merge@2.6.0: {}
tailwindcss@4.0.9: {} tailwindcss@4.0.0-alpha.17: {}
tapable@2.2.1: {}
tar@6.2.1: tar@6.2.1:
dependencies: dependencies:

View File

@@ -1,6 +1,5 @@
@import 'tailwindcss'; @import 'tailwindcss';
@variant dark (&:is(.dark *)); @variant dark (&:is(.dark *));
@config "../tailwind.config.ts";
@theme { @theme {
/* colors */ /* colors */
@@ -82,8 +81,27 @@
--color-badge-border-dark: hsl(240, 2.6%, 22.9%); --color-badge-border-dark: hsl(240, 2.6%, 22.9%);
/* Easings */ /* Easings */
--ease-bounce: linear(0, 0.063, 0.25 18.2%, 1 36.4%, 0.813, 0.75, 0.813, 1, 0.938, 1, 1); --transition-timing-function-bounce: linear(
--ease-spring: linear(0, 0.938 16.7%, 1.149 24.3%, 1.154 29.9%, 0.977 51%, 1); 0,
0.063,
0.25 18.2%,
1 36.4%,
0.813,
0.75,
0.813,
1,
0.938,
1,
1
);
--transition-timing-function-spring: linear(
0,
0.938 16.7%,
1.149 24.3%,
1.154 29.9%,
0.977 51%,
1
);
/* Animations */ /* Animations */
--animate-scale-in: scale-in 200ms ease-out forwards; --animate-scale-in: scale-in 200ms ease-out forwards;
@@ -169,50 +187,50 @@
--font-family-archia: 'Archia', arial, sans-serif; --font-family-archia: 'Archia', arial, sans-serif;
/* Font sizes */ /* Font sizes */
--text-x-micro: 0.625rem; --font-size-x-micro: 0.625rem;
--text-x-micro--line-height: 0.875rem; --font-size-x-micro--line-height: 0.875rem;
--text-x-micro--tracking: var(--tracking-tighter); --font-size-x-micro--letter-spacing: var(--letter-spacing-tighter);
--text-micro: 0.75rem; --font-size-micro: 0.75rem;
--text-micro--line-height: 1rem; --font-size-micro--line-height: 1rem;
--text-micro--tracking: var(--tracking-tighter); --font-size-micro--letter-spacing: var(--letter-spacing-tighter);
--text-caption: 0.875rem; --font-size-caption: 0.875rem;
--text-caption--line-height: 1.375rem; --font-size-caption--line-height: 1.375rem;
--text-caption--tracking: var(--tracking-tight); --font-size-caption--letter-spacing: var(--letter-spacing-tight);
--text-sub-body: clamp(0.875rem, 2vw, 1rem); --font-size-sub-body: clamp(0.875rem, 2vw, 1rem);
--text-sub-body--line-height: 1.375rem; --font-size-sub-body--line-height: 1.375rem;
--text-sub-body--tracking: var(--tracking-tight); --font-size-sub-body--letter-spacing: var(--letter-spacing-tight);
--text-body: clamp(1rem, 2.5vw, 1.125rem); --font-size-body: clamp(1rem, 2.5vw, 1.125rem);
--text-body--line-height: clamp(1.375rem, 3vw, 1.625rem); --font-size-body--line-height: clamp(1.375rem, 3vw, 1.625rem);
--text-body--tracking: var(--tracking-tight); --font-size-body--letter-spacing: var(--letter-spacing-tight);
--text-paragraph-md: 1rem; --font-size-paragraph-md: 1rem;
--text-paragraph-md--line-height: 1.625rem; --font-size-paragraph-md--line-height: 1.625rem;
--text-paragraph-md--tracking: var(--tracking-tight); --font-size-paragraph-md--letter-spacing: var(--letter-spacing-tight);
--text-paragraph-lg: 1.125rem; --font-size-paragraph-lg: 1.125rem;
--text-paragraph-lg--line-height: 1.75rem; --font-size-paragraph-lg--line-height: 1.75rem;
--text-paragraph-lg--tracking: var(--tracking-tight); --font-size-paragraph-lg--letter-spacing: var(--letter-spacing-tight);
--text-description: clamp(1.125rem, 3vw, 1.25rem); --font-size-description: clamp(1.125rem, 3vw, 1.25rem);
--text-description--line-height: clamp(1.625rem, 3.5vw, 1.75rem); --font-size-description--line-height: clamp(1.625rem, 3.5vw, 1.75rem);
--text-description--tracking: var(--tracking-tighter); --font-size-description--letter-spacing: var(--letter-spacing-tighter);
--text-label: 1.5rem; --font-size-label: 1.5rem;
--text-label--line-height: 1.75rem; --font-size-label--line-height: 1.75rem;
--text-title: clamp(2rem, 5vw, 2.5rem); --font-size-title: clamp(2rem, 5vw, 2.5rem);
--text-title--line-height: clamp(2.125rem, 5.5vw, 2.75rem); --font-size-title--line-height: clamp(2.125rem, 5.5vw, 2.75rem);
--text-title--tracking: var(--tracking-squeezed); --font-size-title--letter-spacing: var(--letter-spacing-squeezed);
--text-display: clamp(3rem, 7vw, 4rem); --font-size-display: clamp(3rem, 7vw, 4rem);
--text-display--line-height: clamp(3.125rem, 7.5vw, 4.25rem); --font-size-display--line-height: clamp(3.125rem, 7.5vw, 4.25rem);
--text-display--tracking: var(--tracking-compressed); --font-size-display--letter-spacing: var(--letter-spacing-compressed);
--text-headline: clamp(3.5rem, 8vw, 5.5rem); --font-size-headline: clamp(3.5rem, 8vw, 5.5rem);
--text-headline--line-height: clamp(3.5rem, 8.5vw, 5.75rem); --font-size-headline--line-height: clamp(3.5rem, 8.5vw, 5.75rem);
--text-headline--tracking: var(--tracking-compressed); --font-size-headline--letter-spacing: var(--letter-spacing-compressed);
/* letter spacing */ /* letter spacing */
--tracking-*: initial; --letter-spacing-*: initial;
--tracking-compressed: -0.022em; --letter-spacing-compressed: -0.022em;
--tracking-squeezed: -0.01em; --letter-spacing-squeezed: -0.01em;
--tracking-tighter: -0.018em; --letter-spacing-tighter: -0.018em;
--tracking-tight: -0.0045em; --letter-spacing-tight: -0.0045em;
--tracking-none: 0em; --letter-spacing-none: 0em;
--tracking-loose: 0.08em; --letter-spacing-loose: 0.08em;
} }
/* light & dark mode */ /* light & dark mode */

View File

@@ -1,33 +1,61 @@
<script lang="ts" context="module">
export const extractHeadings = () => {
let headings: Array<string> = [];
headings.push('Accessibility in design systems');
headings.push('Use high color contrast');
headings.push('Not relying on color');
return headings;
};
</script>
<script lang="ts"> <script lang="ts">
import type { TocItem } from '$lib/layouts/DocsArticle.svelte';
import { classNames } from '$lib/utils/classnames'; import { classNames } from '$lib/utils/classnames';
import { onMount } from 'svelte';
const backToTop = () => { const backToTop = () => {
window.scrollTo({ top: 0, behavior: 'smooth' }); window.scrollTo({ top: 0, behavior: 'smooth' });
}; };
let activeIndex: number = 0; export let toc: Array<TocItem> = [];
const headings = extractHeadings(); $: activeIndex = 0;
onMount(() => {
const observer = new IntersectionObserver(
(entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
const index = toc.findIndex((item) => item.href === `#${entry.target.id}`);
if (index !== -1) {
activeIndex = index;
}
}
});
},
{
rootMargin: '0px',
threshold: 0.5
}
);
toc.forEach((item) => {
const target = document.querySelector(item.href);
if (target) {
observer.observe(target);
}
});
return () => {
observer.disconnect();
};
});
$: console.log({ activeIndex });
</script> </script>
<nav class="border-smooth col-span-3 ml-4 hidden border-l lg:block"> <nav class="sticky top-32 col-span-3 -ml-4 hidden h-[600px] lg:block">
<span class="text-micro tracking-loose text-primary pl-8 uppercase">Table of Contents</span> <span class="text-micro tracking-loose text-primary pl-8 uppercase">Table of Contents</span>
<div class="relative"> <div class="relative">
<ul class="border-smooth mt-11 ml-7 flex flex-col gap-7 border-b pb-11"> <ul class="border-smooth mt-11 ml-7 flex flex-col gap-7 border-b pb-11">
{#each headings as heading, i} {#each toc as item}
{@const isActive = i === 0} <li
<li class={classNames(isActive ? 'text-primary' : 'text-secondary', 'relative')}> class={classNames(
{heading} item.selected ? 'text-primary' : 'text-secondary',
'relative transition-colors'
)}
>
<a href={item.href}> {item.title}</a>
</li> </li>
{/each} {/each}
</ul> </ul>

6
src/lib/utils/slugify.ts Normal file
View File

@@ -0,0 +1,6 @@
export const slugify = (string: string) => {
return string
.toLowerCase()
.replace(/[^a-z0-9]+/g, '-')
.replace(/(^-|-$)+/g, '');
};

View File

@@ -11,7 +11,7 @@
} from '$lib/utils/metadata'; } from '$lib/utils/metadata';
import type { AuthorData, PostsData } from '$routes/blog/content'; import type { AuthorData, PostsData } from '$routes/blog/content';
import { TITLE_SUFFIX } from '$routes/titles'; import { TITLE_SUFFIX } from '$routes/titles';
import { getContext } from 'svelte'; import { getContext, setContext } from 'svelte';
import { page } from '$app/state'; import { page } from '$app/state';
import CTA from '$lib/components/BlogCta.svelte'; import CTA from '$lib/components/BlogCta.svelte';
import PostMeta from '$lib/components/blog/post-meta.svelte'; import PostMeta from '$lib/components/blog/post-meta.svelte';
@@ -19,6 +19,9 @@
import Newsletter from '$lib/components/blog/newsletter.svelte'; import Newsletter from '$lib/components/blog/newsletter.svelte';
import TableOfContents from '$lib/components/blog/table-of-contents.svelte'; import TableOfContents from '$lib/components/blog/table-of-contents.svelte';
import Article from '$lib/components/blog/article.svelte'; import Article from '$lib/components/blog/article.svelte';
import type { TocItem } from '$lib/layouts/DocsArticle.svelte';
import { writable } from 'svelte/store';
import type { LayoutContext } from './Article.svelte';
export let title: string; export let title: string;
export let description: string; export let description: string;
@@ -40,6 +43,35 @@
const authors = getContext<AuthorData[]>('authors'); const authors = getContext<AuthorData[]>('authors');
const authorData = authors.find((a) => a.slug === author); const authorData = authors.find((a) => a.slug === author);
setContext<LayoutContext>('headings', writable({}));
const headings = getContext<LayoutContext>('headings');
let selected: string | undefined = undefined;
headings.subscribe((n) => {
const noVisible = Object.values(n).every((n) => !n.visible);
if (selected && noVisible) {
return;
}
for (const key in n) {
if (n[key].visible) {
selected = key;
break;
}
}
});
$: entries = Object.entries($headings);
$: toc = entries.reduce<Array<TocItem>>((carry, [id, heading]) => {
carry.push({
title: heading.title,
href: `#${id}`,
step: heading.step,
selected: selected === id
});
return carry;
}, []);
callToAction ??= true; callToAction ??= true;
const currentURL = `https://appwrite.io${page.url.pathname}`; const currentURL = `https://appwrite.io${page.url.pathname}`;
@@ -91,7 +123,7 @@
<div class="container"> <div class="container">
<Breadcrumbs {title} /> <Breadcrumbs {title} />
<article class="grid grid-cols-1 gap-4 lg:grid-cols-12"> <article class="grid grid-cols-1 gap-4 lg:grid-cols-12">
<div class="lg:col-span-9"> <div class="border-smooth border-r pr-12 lg:col-span-9">
<PostMeta {authorData} {title} {timeToRead} {currentURL} {date} {description} /> <PostMeta {authorData} {title} {timeToRead} {currentURL} {date} {description} />
{#if cover} {#if cover}
<div> <div>
@@ -113,7 +145,7 @@
</div> </div>
</div> </div>
<TableOfContents /> <TableOfContents {toc} />
</article> </article>
</div> </div>
{#if typeof callToAction === 'boolean'} {#if typeof callToAction === 'boolean'}

View File

@@ -2,6 +2,7 @@
import { getContext, hasContext, onMount } from 'svelte'; import { getContext, hasContext, onMount } from 'svelte';
import type { LayoutContext } from '../layouts/Article.svelte'; import type { LayoutContext } from '../layouts/Article.svelte';
import { isInPolicy } from '$markdoc/layouts/Policy.svelte'; import { isInPolicy } from '$markdoc/layouts/Policy.svelte';
import { slugify } from '$lib/utils/slugify';
export let level: number; export let level: number;
export let id: string | undefined = undefined; export let id: string | undefined = undefined;
@@ -10,6 +11,7 @@
const tag = `h${level + 1}`; const tag = `h${level + 1}`;
const ctx = hasContext('headings') ? getContext<LayoutContext>('headings') : undefined; const ctx = hasContext('headings') ? getContext<LayoutContext>('headings') : undefined;
const classList: Record<typeof level, string> = { const classList: Record<typeof level, string> = {
1: 'text-description mb-4', 1: 'text-description mb-4',
2: 'text-description text-primary mb-4', 2: 'text-description text-primary mb-4',
@@ -20,13 +22,15 @@
let element: HTMLElement | undefined; let element: HTMLElement | undefined;
onMount(() => { onMount(() => {
if (!element || !$ctx || !id) { if (!element || !$ctx) {
return; return;
} }
const slug = id ?? slugify(element.innerText);
$ctx = { $ctx = {
...$ctx, ...$ctx,
[id]: { [slug]: {
step, step,
title: element?.textContent ?? '', title: element?.textContent ?? '',
visible: false visible: false
@@ -35,8 +39,8 @@
const callback = (entries: IntersectionObserverEntry[]) => { const callback = (entries: IntersectionObserverEntry[]) => {
entries.forEach((entry) => { entries.forEach((entry) => {
if (id && $ctx && id in $ctx) { if (slug && $ctx && slug in $ctx) {
$ctx[id].visible = entry.isIntersecting; $ctx[slug].visible = entry.isIntersecting;
} }
}); });
}; };
@@ -52,26 +56,17 @@
const inPolicy = isInPolicy(); const inPolicy = isInPolicy();
$: headingClass = $: headingClass =
inPolicy && level === 1 ? 'text-title font-aeonik-pro mb-4 mt-8' : classList[level]; inPolicy && level === 1 ? 'text-title font-aeonik-pro mb-4 mt-8' : classList[level];
$: console.log({ ctx: $ctx });
</script> </script>
{#if id}
<svelte:element <svelte:element
this={tag} this={tag}
{id} id={id ?? slugify(element?.innerText ?? '')}
bind:this={element} bind:this={element}
class:web-snap-location={id && !inReferences} class:web-snap-location={id && !inReferences}
class:web-snap-location-references={id && inReferences} class:web-snap-location-references={id && inReferences}
class="{headingClass} text-primary font-medium" class="{headingClass} text-primary scroll-m-32 font-medium"
> >
<a href={`#${id}`} class=""><slot /></a> <a href={`#${id}`} class=""><slot /></a>
</svelte:element> </svelte:element>
{:else}
<svelte:element
this={tag}
bind:this={element}
class="{headingClass} text-primary font-medium"
class:in-policy={inPolicy}
>
<slot />
</svelte:element>
{/if}

View File

@@ -95,10 +95,10 @@
> >
{#if submitted} {#if submitted}
<section class="flex flex-col gap-5"> <section class="flex flex-col gap-5">
<h1 class="web-display web-u-color-text-primary"> <h1 class="text-display font-aeonik-pro text-primary">
Thank you for your submission Thank you for your submission
</h1> </h1>
<p class="web-description web-u-padding-block-end-32"> <p class="text-description pb-8">
Your details for the enterprise plan have been sent Your details for the enterprise plan have been sent
successfully. Our team will get back to you as soon successfully. Our team will get back to you as soon
as possible. as possible.