From 37e211c23de033ba43b321e9d52fc98898343fc5 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Tue, 28 May 2024 00:38:58 -0700 Subject: [PATCH] feat: sponsors --- docs/{intro.md => intro.mdx} | 21 + package-lock.json | 564 ++++++++++++++++++++++++++- package.json | 5 +- postcss.config.js | 6 + src/components/Sponsors/TopBanner.js | 28 ++ src/css/custom.css | 3 + static/ads/pipelines-banner.png | Bin 0 -> 18244 bytes static/ads/placeholder.png | Bin 0 -> 27875 bytes tailwind.config.js | 22 ++ 9 files changed, 647 insertions(+), 2 deletions(-) rename docs/{intro.md => intro.mdx} (91%) create mode 100644 postcss.config.js create mode 100644 src/components/Sponsors/TopBanner.js create mode 100644 static/ads/pipelines-banner.png create mode 100644 static/ads/placeholder.png create mode 100644 tailwind.config.js diff --git a/docs/intro.md b/docs/intro.mdx similarity index 91% rename from docs/intro.md rename to docs/intro.mdx index 0f94758..e22285f 100644 --- a/docs/intro.md +++ b/docs/intro.mdx @@ -5,6 +5,27 @@ title: 🏡 Home hide_title: true --- +import { TopBanner } from "@site/src/components/Sponsors/TopBanner"; + + + # Open WebUI **Open WebUI is an extensible, feature-rich, and user-friendly self-hosted WebUI designed to operate entirely offline.** It supports various LLM runners, including Ollama and OpenAI-compatible APIs. diff --git a/package-lock.json b/package-lock.json index b567a57..6d531fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,10 @@ }, "devDependencies": { "@docusaurus/module-type-aliases": "^3.2.0", - "@docusaurus/types": "^3.2.0" + "@docusaurus/types": "^3.2.0", + "autoprefixer": "^10.4.19", + "postcss": "^8.4.38", + "tailwindcss": "^3.4.3" }, "engines": { "node": ">=18.0" @@ -204,6 +207,18 @@ "@algolia/requester-common": "4.23.2" } }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -2747,6 +2762,50 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -2913,6 +2972,16 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@pnpm/config.env-replace": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", @@ -3991,6 +4060,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -4409,6 +4484,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -6024,6 +6108,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, "node_modules/diff": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", @@ -6043,6 +6133,12 @@ "node": ">=8" } }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -6849,6 +6945,34 @@ } } }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", @@ -8308,6 +8432,24 @@ "node": ">=0.10.0" } }, + "node_modules/jackspeak": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz", + "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", @@ -11334,6 +11476,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -11367,6 +11518,17 @@ "multicast-dns": "cli.js" } }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -11500,6 +11662,15 @@ "node": ">=0.10.0" } }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", @@ -11830,6 +12001,31 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/path-to-regexp": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", @@ -11872,6 +12068,24 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/pkg-dir": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", @@ -12082,6 +12296,101 @@ "postcss": "^8.2.15" } }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/postcss-loader": { "version": "7.3.4", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", @@ -12290,6 +12599,25 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, "node_modules/postcss-normalize-charset": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", @@ -13032,6 +13360,15 @@ "react": ">=15" } }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -14176,6 +14513,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/string-width/node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", @@ -14238,6 +14596,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", @@ -14293,6 +14664,83 @@ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==" }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -14411,6 +14859,55 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/tailwindcss": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", + "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -14551,6 +15048,27 @@ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -14627,6 +15145,12 @@ "node": ">=6.10" } }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -15610,6 +16134,44 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", diff --git a/package.json b/package.json index 027e893..a33e32c 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,10 @@ }, "devDependencies": { "@docusaurus/module-type-aliases": "^3.2.0", - "@docusaurus/types": "^3.2.0" + "@docusaurus/types": "^3.2.0", + "autoprefixer": "^10.4.19", + "postcss": "^8.4.38", + "tailwindcss": "^3.4.3" }, "browserslist": { "production": [ diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..33ad091 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/src/components/Sponsors/TopBanner.js b/src/components/Sponsors/TopBanner.js new file mode 100644 index 0000000..da19854 --- /dev/null +++ b/src/components/Sponsors/TopBanner.js @@ -0,0 +1,28 @@ +export const TopBanner = ({ items }) => { + return ( +
+ {items.map((item) => ( + <> +
+
+ Sponsored by {item.name} +
+ + + {item.name} + + +
+ {item.description} +
+
+ + ))} +
+ ); +}; diff --git a/src/css/custom.css b/src/css/custom.css index 4382d74..d27d2d5 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -3,6 +3,9 @@ * bundles Infima by default. Infima is a CSS framework designed to * work well for content-centric websites. */ +@tailwind base; +@tailwind components; +@tailwind utilities; @import url("https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap"); @import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600&display=swap"); diff --git a/static/ads/pipelines-banner.png b/static/ads/pipelines-banner.png new file mode 100644 index 0000000000000000000000000000000000000000..192029d0ca78e1db99d493aaab2626dca2bfaf34 GIT binary patch literal 18244 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 DfMR&p literal 0 HcmV?d00001 diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..dbb3611 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,22 @@ +const { fontFamily } = require("tailwindcss/defaultTheme"); + +/** @type {import('tailwindcss').Config} */ +module.exports = { + corePlugins: { + preflight: false, + container: false, + }, + darkMode: ["class", '[data-theme="dark"]'], + content: ["./src/**/*.{js,jsx,tsx,html}", "./docs/**/*.{md,mdx}"], + theme: { + extend: { + fontFamily: { + sans: ['"Inter"', ...fontFamily.sans], + jakarta: ['"Plus Jakarta Sans"', ...fontFamily.sans], + mono: ['"Fira Code"', ...fontFamily.mono], + }, + colors: {}, + }, + }, + plugins: [], +};