mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	chore(docs) revamp landing page (#1161)
* Added tailwind * Finished styling
This commit is contained in:
		@@ -1,56 +1,70 @@
 | 
			
		||||
// @ts-check
 | 
			
		||||
// Note: type annotations allow type checking and IDEs autocompletion
 | 
			
		||||
 | 
			
		||||
const lightCodeTheme = require('prism-react-renderer/themes/github');
 | 
			
		||||
const darkCodeTheme = require('prism-react-renderer/themes/dracula');
 | 
			
		||||
const lightCodeTheme = require("prism-react-renderer/themes/github");
 | 
			
		||||
const darkCodeTheme = require("prism-react-renderer/themes/dracula");
 | 
			
		||||
 | 
			
		||||
/** @type {import('@docusaurus/types').Config} */
 | 
			
		||||
const config = {
 | 
			
		||||
  title: 'Immich',
 | 
			
		||||
  tagline: 'High performance self-hosted photo and video backup solution directly from your mobile phone',
 | 
			
		||||
  url: 'https://documentation.immich.app',
 | 
			
		||||
  baseUrl: '/',
 | 
			
		||||
  onBrokenLinks: 'throw',
 | 
			
		||||
  onBrokenMarkdownLinks: 'warn',
 | 
			
		||||
  favicon: 'img/favicon.png',
 | 
			
		||||
  title: "Immich",
 | 
			
		||||
  tagline:
 | 
			
		||||
    "High performance self-hosted photo and video backup solution directly from your mobile phone",
 | 
			
		||||
  url: "https://documentation.immich.app",
 | 
			
		||||
  baseUrl: "/",
 | 
			
		||||
  onBrokenLinks: "throw",
 | 
			
		||||
  onBrokenMarkdownLinks: "warn",
 | 
			
		||||
  favicon: "img/favicon.png",
 | 
			
		||||
 | 
			
		||||
  // GitHub pages deployment config.
 | 
			
		||||
  // If you aren't using GitHub pages, you don't need these.
 | 
			
		||||
  organizationName: 'immich-app', // Usually your GitHub org/user name.
 | 
			
		||||
  projectName: 'immich', // Usually your repo name.
 | 
			
		||||
  deploymentBranch: 'main',
 | 
			
		||||
  organizationName: "immich-app", // Usually your GitHub org/user name.
 | 
			
		||||
  projectName: "immich", // Usually your repo name.
 | 
			
		||||
  deploymentBranch: "main",
 | 
			
		||||
  // Even if you don't use internalization, you can use this field to set useful
 | 
			
		||||
  // metadata like html lang. For example, if your site is Chinese, you may want
 | 
			
		||||
  // to replace "en" with "zh-Hans".
 | 
			
		||||
  i18n: {
 | 
			
		||||
    defaultLocale: 'en',
 | 
			
		||||
    locales: ['en'],
 | 
			
		||||
    defaultLocale: "en",
 | 
			
		||||
    locales: ["en"],
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  plugins: [
 | 
			
		||||
    async function myPlugin(context, options) {
 | 
			
		||||
      return {
 | 
			
		||||
        name: "docusaurus-tailwindcss",
 | 
			
		||||
        configurePostCss(postcssOptions) {
 | 
			
		||||
          // Appends TailwindCSS and AutoPrefixer.
 | 
			
		||||
          postcssOptions.plugins.push(require("tailwindcss"));
 | 
			
		||||
          postcssOptions.plugins.push(require("autoprefixer"));
 | 
			
		||||
          return postcssOptions;
 | 
			
		||||
        },
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  ],
 | 
			
		||||
  presets: [
 | 
			
		||||
    [
 | 
			
		||||
      'docusaurus-preset-openapi',
 | 
			
		||||
      "docusaurus-preset-openapi",
 | 
			
		||||
      /** @type {import('docusaurus-preset-openapi').Options} */
 | 
			
		||||
      ({
 | 
			
		||||
        docs: {
 | 
			
		||||
          showLastUpdateAuthor: true,
 | 
			
		||||
          showLastUpdateTime: true,
 | 
			
		||||
 | 
			
		||||
          sidebarPath: require.resolve('./sidebars.js'),
 | 
			
		||||
          sidebarPath: require.resolve("./sidebars.js"),
 | 
			
		||||
          // Please change this to your repo.
 | 
			
		||||
          // Remove this to remove the "edit this page" links.
 | 
			
		||||
          editUrl: 'https://github.com/immich-app/immich/tree/main/docs/',
 | 
			
		||||
          editUrl: "https://github.com/immich-app/immich/tree/main/docs/",
 | 
			
		||||
        },
 | 
			
		||||
        api: {
 | 
			
		||||
          path: '../server/immich-openapi-specs.json',
 | 
			
		||||
          routeBasePath: '/docs/api',
 | 
			
		||||
          path: "../server/immich-openapi-specs.json",
 | 
			
		||||
          routeBasePath: "/docs/api",
 | 
			
		||||
        },
 | 
			
		||||
        // blog: {
 | 
			
		||||
        //   showReadingTime: true,
 | 
			
		||||
        //   editUrl: "https://github.com/immich-app/immich/tree/main/docs/",
 | 
			
		||||
        // },
 | 
			
		||||
        theme: {
 | 
			
		||||
          customCss: require.resolve('./src/css/custom.css'),
 | 
			
		||||
          customCss: require.resolve("./src/css/custom.css"),
 | 
			
		||||
        },
 | 
			
		||||
      }),
 | 
			
		||||
    ],
 | 
			
		||||
@@ -59,11 +73,14 @@ const config = {
 | 
			
		||||
  themeConfig:
 | 
			
		||||
    /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
 | 
			
		||||
    ({
 | 
			
		||||
      colorMode: {
 | 
			
		||||
        defaultMode: "dark",
 | 
			
		||||
      },
 | 
			
		||||
      announcementBar: {
 | 
			
		||||
        id: 'site_announcement_immich',
 | 
			
		||||
        id: "site_announcement_immich",
 | 
			
		||||
        content: `⚠️ The project is under <strong>very active</strong> development. Expect bugs and changes. Do not use it as <strong>the only way</strong> to store your photos and videos!`,
 | 
			
		||||
        backgroundColor: '#593f00',
 | 
			
		||||
        textColor: '#ffefc9',
 | 
			
		||||
        backgroundColor: "#593f00",
 | 
			
		||||
        textColor: "#ffefc9",
 | 
			
		||||
        isCloseable: false,
 | 
			
		||||
      },
 | 
			
		||||
      docs: {
 | 
			
		||||
@@ -73,68 +90,68 @@ const config = {
 | 
			
		||||
      },
 | 
			
		||||
      navbar: {
 | 
			
		||||
        logo: {
 | 
			
		||||
          alt: 'Immich University Logo',
 | 
			
		||||
          src: 'img/color-logo.png',
 | 
			
		||||
          srcDark: 'img/logo.png',
 | 
			
		||||
          alt: "Immich University Logo",
 | 
			
		||||
          src: "img/color-logo.png",
 | 
			
		||||
          srcDark: "img/logo.png",
 | 
			
		||||
        },
 | 
			
		||||
        items: [
 | 
			
		||||
          {
 | 
			
		||||
            to: '/docs/overview/introduction',
 | 
			
		||||
            position: 'right',
 | 
			
		||||
            label: 'Docs',
 | 
			
		||||
            to: "/docs/overview/introduction",
 | 
			
		||||
            position: "right",
 | 
			
		||||
            label: "Docs",
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            to: '/docs/api',
 | 
			
		||||
            position: 'right',
 | 
			
		||||
            label: 'API',
 | 
			
		||||
            to: "/docs/api",
 | 
			
		||||
            position: "right",
 | 
			
		||||
            label: "API",
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            to: '/blog',
 | 
			
		||||
            position: 'right',
 | 
			
		||||
            label: 'Blog',
 | 
			
		||||
            to: "/blog",
 | 
			
		||||
            position: "right",
 | 
			
		||||
            label: "Blog",
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            href: 'https://github.com/immich-app/immich',
 | 
			
		||||
            label: 'GitHub',
 | 
			
		||||
            position: 'right',
 | 
			
		||||
            href: "https://github.com/immich-app/immich",
 | 
			
		||||
            label: "GitHub",
 | 
			
		||||
            position: "right",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
      },
 | 
			
		||||
      footer: {
 | 
			
		||||
        style: 'light',
 | 
			
		||||
        style: "light",
 | 
			
		||||
        links: [
 | 
			
		||||
          {
 | 
			
		||||
            title: 'Overview',
 | 
			
		||||
            title: "Overview",
 | 
			
		||||
            items: [
 | 
			
		||||
              {
 | 
			
		||||
                label: 'Welcome',
 | 
			
		||||
                to: '/docs/overview/introduction',
 | 
			
		||||
                label: "Welcome",
 | 
			
		||||
                to: "/docs/overview/introduction",
 | 
			
		||||
              },
 | 
			
		||||
              {
 | 
			
		||||
                label: 'Installation',
 | 
			
		||||
                to: '/docs/install/requirements',
 | 
			
		||||
                label: "Installation",
 | 
			
		||||
                to: "/docs/install/requirements",
 | 
			
		||||
              },
 | 
			
		||||
            ],
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            title: 'Community',
 | 
			
		||||
            title: "Community",
 | 
			
		||||
            items: [
 | 
			
		||||
              {
 | 
			
		||||
                label: 'Discord',
 | 
			
		||||
                href: 'https://discord.com/invite/D8JsnBEuKb',
 | 
			
		||||
                label: "Discord",
 | 
			
		||||
                href: "https://discord.com/invite/D8JsnBEuKb",
 | 
			
		||||
              },
 | 
			
		||||
            ],
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            title: 'More',
 | 
			
		||||
            title: "More",
 | 
			
		||||
            items: [
 | 
			
		||||
              {
 | 
			
		||||
                label: 'Blog',
 | 
			
		||||
                to: '/blog',
 | 
			
		||||
                label: "Blog",
 | 
			
		||||
                to: "/blog",
 | 
			
		||||
              },
 | 
			
		||||
              {
 | 
			
		||||
                label: 'GitHub',
 | 
			
		||||
                href: 'https://github.com/immich-app/immich',
 | 
			
		||||
                label: "GitHub",
 | 
			
		||||
                href: "https://github.com/immich-app/immich",
 | 
			
		||||
              },
 | 
			
		||||
            ],
 | 
			
		||||
          },
 | 
			
		||||
@@ -145,7 +162,7 @@ const config = {
 | 
			
		||||
        theme: lightCodeTheme,
 | 
			
		||||
        darkTheme: darkCodeTheme,
 | 
			
		||||
      },
 | 
			
		||||
      image: 'overview/img/feature-panel.png',
 | 
			
		||||
      image: "overview/img/feature-panel.png",
 | 
			
		||||
    }),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										417
									
								
								docs/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										417
									
								
								docs/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -11,11 +11,14 @@
 | 
			
		||||
        "@docusaurus/core": "2.1.0",
 | 
			
		||||
        "@docusaurus/preset-classic": "2.1.0",
 | 
			
		||||
        "@mdx-js/react": "^1.6.22",
 | 
			
		||||
        "autoprefixer": "^10.4.13",
 | 
			
		||||
        "clsx": "^1.2.1",
 | 
			
		||||
        "docusaurus-preset-openapi": "^0.6.3",
 | 
			
		||||
        "postcss": "^8.4.20",
 | 
			
		||||
        "prism-react-renderer": "^1.3.5",
 | 
			
		||||
        "react": "^17.0.2",
 | 
			
		||||
        "react-dom": "^17.0.2",
 | 
			
		||||
        "tailwindcss": "^3.2.4",
 | 
			
		||||
        "url": "^0.11.0"
 | 
			
		||||
      },
 | 
			
		||||
      "devDependencies": {
 | 
			
		||||
@@ -3681,6 +3684,35 @@
 | 
			
		||||
        "acorn": "^8"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/acorn-node": {
 | 
			
		||||
      "version": "1.8.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
 | 
			
		||||
      "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "acorn": "^7.0.0",
 | 
			
		||||
        "acorn-walk": "^7.0.0",
 | 
			
		||||
        "xtend": "^4.0.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/acorn-node/node_modules/acorn": {
 | 
			
		||||
      "version": "7.4.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
 | 
			
		||||
      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "acorn": "bin/acorn"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=0.4.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/acorn-node/node_modules/acorn-walk": {
 | 
			
		||||
      "version": "7.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=0.4.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/acorn-walk": {
 | 
			
		||||
      "version": "8.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
 | 
			
		||||
@@ -3926,9 +3958,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/autoprefixer": {
 | 
			
		||||
      "version": "10.4.12",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz",
 | 
			
		||||
      "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==",
 | 
			
		||||
      "version": "10.4.13",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz",
 | 
			
		||||
      "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==",
 | 
			
		||||
      "funding": [
 | 
			
		||||
        {
 | 
			
		||||
          "type": "opencollective",
 | 
			
		||||
@@ -3941,7 +3973,7 @@
 | 
			
		||||
      ],
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "browserslist": "^4.21.4",
 | 
			
		||||
        "caniuse-lite": "^1.0.30001407",
 | 
			
		||||
        "caniuse-lite": "^1.0.30001426",
 | 
			
		||||
        "fraction.js": "^4.2.0",
 | 
			
		||||
        "normalize-range": "^0.1.2",
 | 
			
		||||
        "picocolors": "^1.0.0",
 | 
			
		||||
@@ -4403,9 +4435,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/caniuse-lite": {
 | 
			
		||||
      "version": "1.0.30001425",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001425.tgz",
 | 
			
		||||
      "integrity": "sha512-/pzFv0OmNG6W0ym80P3NtapU0QEiDS3VuYAZMGoLLqiC7f6FJFe1MjpQDREGApeenD9wloeytmVDj+JLXPC6qw==",
 | 
			
		||||
      "version": "1.0.30001441",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz",
 | 
			
		||||
      "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==",
 | 
			
		||||
      "funding": [
 | 
			
		||||
        {
 | 
			
		||||
          "type": "opencollective",
 | 
			
		||||
@@ -5478,6 +5510,14 @@
 | 
			
		||||
        "url": "https://github.com/sponsors/ljharb"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/defined": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==",
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "url": "https://github.com/sponsors/ljharb"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/del": {
 | 
			
		||||
      "version": "6.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
 | 
			
		||||
@@ -5583,6 +5623,22 @@
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/detective": {
 | 
			
		||||
      "version": "5.2.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
 | 
			
		||||
      "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "acorn-node": "^1.8.2",
 | 
			
		||||
        "defined": "^1.0.0",
 | 
			
		||||
        "minimist": "^1.2.6"
 | 
			
		||||
      },
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "detective": "bin/detective.js"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=0.8.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/dezalgo": {
 | 
			
		||||
      "version": "1.0.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
 | 
			
		||||
@@ -5592,6 +5648,11 @@
 | 
			
		||||
        "wrappy": "1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/didyoumean": {
 | 
			
		||||
      "version": "1.2.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
 | 
			
		||||
      "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/dir-glob": {
 | 
			
		||||
      "version": "3.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
 | 
			
		||||
@@ -5603,6 +5664,11 @@
 | 
			
		||||
        "node": ">=8"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/dlv": {
 | 
			
		||||
      "version": "1.1.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
 | 
			
		||||
      "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/dns-equal": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
 | 
			
		||||
@@ -8688,6 +8754,14 @@
 | 
			
		||||
        "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==",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 6"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/object-inspect": {
 | 
			
		||||
      "version": "1.12.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
 | 
			
		||||
@@ -9242,6 +9316,14 @@
 | 
			
		||||
        "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==",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=0.10.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/pkg-dir": {
 | 
			
		||||
      "version": "4.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
 | 
			
		||||
@@ -9307,9 +9389,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/postcss": {
 | 
			
		||||
      "version": "8.4.18",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz",
 | 
			
		||||
      "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==",
 | 
			
		||||
      "version": "8.4.20",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz",
 | 
			
		||||
      "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==",
 | 
			
		||||
      "funding": [
 | 
			
		||||
        {
 | 
			
		||||
          "type": "opencollective",
 | 
			
		||||
@@ -9431,6 +9513,68 @@
 | 
			
		||||
        "postcss": "^8.2.15"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/postcss-import": {
 | 
			
		||||
      "version": "14.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "postcss-value-parser": "^4.0.0",
 | 
			
		||||
        "read-cache": "^1.0.0",
 | 
			
		||||
        "resolve": "^1.1.7"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=10.0.0"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "postcss": "^8.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/postcss-js": {
 | 
			
		||||
      "version": "4.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "camelcase-css": "^2.0.1"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": "^12 || ^14 || >= 16"
 | 
			
		||||
      },
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "type": "opencollective",
 | 
			
		||||
        "url": "https://opencollective.com/postcss/"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "postcss": "^8.3.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/postcss-load-config": {
 | 
			
		||||
      "version": "3.1.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
 | 
			
		||||
      "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "lilconfig": "^2.0.5",
 | 
			
		||||
        "yaml": "^1.10.2"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      },
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "type": "opencollective",
 | 
			
		||||
        "url": "https://opencollective.com/postcss/"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "postcss": ">=8.0.9",
 | 
			
		||||
        "ts-node": ">=9.0.0"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependenciesMeta": {
 | 
			
		||||
        "postcss": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        },
 | 
			
		||||
        "ts-node": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/postcss-loader": {
 | 
			
		||||
      "version": "7.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz",
 | 
			
		||||
@@ -9614,6 +9758,24 @@
 | 
			
		||||
        "postcss": "^8.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/postcss-nested": {
 | 
			
		||||
      "version": "6.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "postcss-selector-parser": "^6.0.10"
 | 
			
		||||
      },
 | 
			
		||||
      "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",
 | 
			
		||||
@@ -10282,6 +10444,17 @@
 | 
			
		||||
        }
 | 
			
		||||
      ]
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/quick-lru": {
 | 
			
		||||
      "version": "5.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=10"
 | 
			
		||||
      },
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "url": "https://github.com/sponsors/sindresorhus"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/randombytes": {
 | 
			
		||||
      "version": "2.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
 | 
			
		||||
@@ -10654,6 +10827,14 @@
 | 
			
		||||
        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "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==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "pify": "^2.3.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/readable-stream": {
 | 
			
		||||
      "version": "3.6.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
 | 
			
		||||
@@ -12388,6 +12569,57 @@
 | 
			
		||||
        "url": "https://github.com/fb55/entities?sponsor=1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/tailwindcss": {
 | 
			
		||||
      "version": "3.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz",
 | 
			
		||||
      "integrity": "sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "arg": "^5.0.2",
 | 
			
		||||
        "chokidar": "^3.5.3",
 | 
			
		||||
        "color-name": "^1.1.4",
 | 
			
		||||
        "detective": "^5.2.1",
 | 
			
		||||
        "didyoumean": "^1.2.2",
 | 
			
		||||
        "dlv": "^1.1.3",
 | 
			
		||||
        "fast-glob": "^3.2.12",
 | 
			
		||||
        "glob-parent": "^6.0.2",
 | 
			
		||||
        "is-glob": "^4.0.3",
 | 
			
		||||
        "lilconfig": "^2.0.6",
 | 
			
		||||
        "micromatch": "^4.0.5",
 | 
			
		||||
        "normalize-path": "^3.0.0",
 | 
			
		||||
        "object-hash": "^3.0.0",
 | 
			
		||||
        "picocolors": "^1.0.0",
 | 
			
		||||
        "postcss": "^8.4.18",
 | 
			
		||||
        "postcss-import": "^14.1.0",
 | 
			
		||||
        "postcss-js": "^4.0.0",
 | 
			
		||||
        "postcss-load-config": "^3.1.4",
 | 
			
		||||
        "postcss-nested": "6.0.0",
 | 
			
		||||
        "postcss-selector-parser": "^6.0.10",
 | 
			
		||||
        "postcss-value-parser": "^4.2.0",
 | 
			
		||||
        "quick-lru": "^5.1.1",
 | 
			
		||||
        "resolve": "^1.22.1"
 | 
			
		||||
      },
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "tailwind": "lib/cli.js",
 | 
			
		||||
        "tailwindcss": "lib/cli.js"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=12.13.0"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "postcss": "^8.0.9"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "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==",
 | 
			
		||||
      "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",
 | 
			
		||||
@@ -16634,6 +16866,28 @@
 | 
			
		||||
      "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
 | 
			
		||||
      "requires": {}
 | 
			
		||||
    },
 | 
			
		||||
    "acorn-node": {
 | 
			
		||||
      "version": "1.8.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
 | 
			
		||||
      "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "acorn": "^7.0.0",
 | 
			
		||||
        "acorn-walk": "^7.0.0",
 | 
			
		||||
        "xtend": "^4.0.2"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "acorn": {
 | 
			
		||||
          "version": "7.4.1",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
 | 
			
		||||
          "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
 | 
			
		||||
        },
 | 
			
		||||
        "acorn-walk": {
 | 
			
		||||
          "version": "7.2.0",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
 | 
			
		||||
          "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA=="
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "acorn-walk": {
 | 
			
		||||
      "version": "8.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
 | 
			
		||||
@@ -16823,12 +17077,12 @@
 | 
			
		||||
      "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg=="
 | 
			
		||||
    },
 | 
			
		||||
    "autoprefixer": {
 | 
			
		||||
      "version": "10.4.12",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz",
 | 
			
		||||
      "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==",
 | 
			
		||||
      "version": "10.4.13",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz",
 | 
			
		||||
      "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "browserslist": "^4.21.4",
 | 
			
		||||
        "caniuse-lite": "^1.0.30001407",
 | 
			
		||||
        "caniuse-lite": "^1.0.30001426",
 | 
			
		||||
        "fraction.js": "^4.2.0",
 | 
			
		||||
        "normalize-range": "^0.1.2",
 | 
			
		||||
        "picocolors": "^1.0.0",
 | 
			
		||||
@@ -17158,9 +17412,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "caniuse-lite": {
 | 
			
		||||
      "version": "1.0.30001425",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001425.tgz",
 | 
			
		||||
      "integrity": "sha512-/pzFv0OmNG6W0ym80P3NtapU0QEiDS3VuYAZMGoLLqiC7f6FJFe1MjpQDREGApeenD9wloeytmVDj+JLXPC6qw=="
 | 
			
		||||
      "version": "1.0.30001441",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz",
 | 
			
		||||
      "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg=="
 | 
			
		||||
    },
 | 
			
		||||
    "ccount": {
 | 
			
		||||
      "version": "1.1.0",
 | 
			
		||||
@@ -17901,6 +18155,11 @@
 | 
			
		||||
        "object-keys": "^1.1.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "defined": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q=="
 | 
			
		||||
    },
 | 
			
		||||
    "del": {
 | 
			
		||||
      "version": "6.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
 | 
			
		||||
@@ -17977,6 +18236,16 @@
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "detective": {
 | 
			
		||||
      "version": "5.2.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
 | 
			
		||||
      "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "acorn-node": "^1.8.2",
 | 
			
		||||
        "defined": "^1.0.0",
 | 
			
		||||
        "minimist": "^1.2.6"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "dezalgo": {
 | 
			
		||||
      "version": "1.0.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
 | 
			
		||||
@@ -17986,6 +18255,11 @@
 | 
			
		||||
        "wrappy": "1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "didyoumean": {
 | 
			
		||||
      "version": "1.2.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
 | 
			
		||||
      "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
 | 
			
		||||
    },
 | 
			
		||||
    "dir-glob": {
 | 
			
		||||
      "version": "3.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
 | 
			
		||||
@@ -17994,6 +18268,11 @@
 | 
			
		||||
        "path-type": "^4.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "dlv": {
 | 
			
		||||
      "version": "1.1.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
 | 
			
		||||
      "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
 | 
			
		||||
    },
 | 
			
		||||
    "dns-equal": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
 | 
			
		||||
@@ -20249,6 +20528,11 @@
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
 | 
			
		||||
    },
 | 
			
		||||
    "object-hash": {
 | 
			
		||||
      "version": "3.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="
 | 
			
		||||
    },
 | 
			
		||||
    "object-inspect": {
 | 
			
		||||
      "version": "1.12.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
 | 
			
		||||
@@ -20666,6 +20950,11 @@
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
 | 
			
		||||
      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
 | 
			
		||||
    },
 | 
			
		||||
    "pify": {
 | 
			
		||||
      "version": "2.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
 | 
			
		||||
      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="
 | 
			
		||||
    },
 | 
			
		||||
    "pkg-dir": {
 | 
			
		||||
      "version": "4.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
 | 
			
		||||
@@ -20715,9 +21004,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "postcss": {
 | 
			
		||||
      "version": "8.4.18",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz",
 | 
			
		||||
      "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==",
 | 
			
		||||
      "version": "8.4.20",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz",
 | 
			
		||||
      "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "nanoid": "^3.3.4",
 | 
			
		||||
        "picocolors": "^1.0.0",
 | 
			
		||||
@@ -20785,6 +21074,33 @@
 | 
			
		||||
        "postcss-selector-parser": "^6.0.5"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "postcss-import": {
 | 
			
		||||
      "version": "14.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "postcss-value-parser": "^4.0.0",
 | 
			
		||||
        "read-cache": "^1.0.0",
 | 
			
		||||
        "resolve": "^1.1.7"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "postcss-js": {
 | 
			
		||||
      "version": "4.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "camelcase-css": "^2.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "postcss-load-config": {
 | 
			
		||||
      "version": "3.1.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
 | 
			
		||||
      "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "lilconfig": "^2.0.5",
 | 
			
		||||
        "yaml": "^1.10.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "postcss-loader": {
 | 
			
		||||
      "version": "7.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz",
 | 
			
		||||
@@ -20892,6 +21208,14 @@
 | 
			
		||||
        "icss-utils": "^5.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "postcss-nested": {
 | 
			
		||||
      "version": "6.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "postcss-selector-parser": "^6.0.10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "postcss-normalize-charset": {
 | 
			
		||||
      "version": "5.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
 | 
			
		||||
@@ -21352,6 +21676,11 @@
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
 | 
			
		||||
      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
 | 
			
		||||
    },
 | 
			
		||||
    "quick-lru": {
 | 
			
		||||
      "version": "5.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="
 | 
			
		||||
    },
 | 
			
		||||
    "randombytes": {
 | 
			
		||||
      "version": "2.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
 | 
			
		||||
@@ -21635,6 +21964,14 @@
 | 
			
		||||
        "use-latest": "^1.2.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "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==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "pify": "^2.3.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "readable-stream": {
 | 
			
		||||
      "version": "3.6.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
 | 
			
		||||
@@ -22967,6 +23304,46 @@
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "tailwindcss": {
 | 
			
		||||
      "version": "3.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz",
 | 
			
		||||
      "integrity": "sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "arg": "^5.0.2",
 | 
			
		||||
        "chokidar": "^3.5.3",
 | 
			
		||||
        "color-name": "^1.1.4",
 | 
			
		||||
        "detective": "^5.2.1",
 | 
			
		||||
        "didyoumean": "^1.2.2",
 | 
			
		||||
        "dlv": "^1.1.3",
 | 
			
		||||
        "fast-glob": "^3.2.12",
 | 
			
		||||
        "glob-parent": "^6.0.2",
 | 
			
		||||
        "is-glob": "^4.0.3",
 | 
			
		||||
        "lilconfig": "^2.0.6",
 | 
			
		||||
        "micromatch": "^4.0.5",
 | 
			
		||||
        "normalize-path": "^3.0.0",
 | 
			
		||||
        "object-hash": "^3.0.0",
 | 
			
		||||
        "picocolors": "^1.0.0",
 | 
			
		||||
        "postcss": "^8.4.18",
 | 
			
		||||
        "postcss-import": "^14.1.0",
 | 
			
		||||
        "postcss-js": "^4.0.0",
 | 
			
		||||
        "postcss-load-config": "^3.1.4",
 | 
			
		||||
        "postcss-nested": "6.0.0",
 | 
			
		||||
        "postcss-selector-parser": "^6.0.10",
 | 
			
		||||
        "postcss-value-parser": "^4.2.0",
 | 
			
		||||
        "quick-lru": "^5.1.1",
 | 
			
		||||
        "resolve": "^1.22.1"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "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==",
 | 
			
		||||
          "requires": {
 | 
			
		||||
            "is-glob": "^4.0.3"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "tapable": {
 | 
			
		||||
      "version": "2.2.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
 | 
			
		||||
 
 | 
			
		||||
@@ -18,11 +18,14 @@
 | 
			
		||||
    "@docusaurus/core": "2.1.0",
 | 
			
		||||
    "@docusaurus/preset-classic": "2.1.0",
 | 
			
		||||
    "@mdx-js/react": "^1.6.22",
 | 
			
		||||
    "autoprefixer": "^10.4.13",
 | 
			
		||||
    "clsx": "^1.2.1",
 | 
			
		||||
    "docusaurus-preset-openapi": "^0.6.3",
 | 
			
		||||
    "postcss": "^8.4.20",
 | 
			
		||||
    "prism-react-renderer": "^1.3.5",
 | 
			
		||||
    "react": "^17.0.2",
 | 
			
		||||
    "react-dom": "^17.0.2",
 | 
			
		||||
    "tailwindcss": "^3.2.4",
 | 
			
		||||
    "url": "^0.11.0"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
 
 | 
			
		||||
@@ -3,11 +3,15 @@
 | 
			
		||||
 * 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=Overpass:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap");
 | 
			
		||||
@import url("https://fonts.googleapis.com/css2?family=Snowburst+One&display=swap");
 | 
			
		||||
 | 
			
		||||
html {
 | 
			
		||||
html,
 | 
			
		||||
button {
 | 
			
		||||
  font-family: "Overpass", sans-serif;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,66 +0,0 @@
 | 
			
		||||
/**
 | 
			
		||||
 * CSS files with the .module.css suffix will be treated as CSS modules
 | 
			
		||||
 * and scoped locally.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
.heroBanner {
 | 
			
		||||
  padding: 4rem 0;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  background: #606c88;
 | 
			
		||||
  background: -webkit-linear-gradient(to top, #4e5362, #606c88);
 | 
			
		||||
  background: linear-gradient(to top, #4e5362, #606c88);
 | 
			
		||||
  color: whitesmoke;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media screen and (max-width: 996px) {
 | 
			
		||||
  .heroBanner {
 | 
			
		||||
    padding: 2rem;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.buttons {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  justify-content: center;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.buttonsRow {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  justify-content: center;
 | 
			
		||||
  flex-wrap: wrap;
 | 
			
		||||
  margin-bottom: 4rem;
 | 
			
		||||
  gap: 1rem;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.installButton {
 | 
			
		||||
  background-color: #adcbfa;
 | 
			
		||||
  color: #000000;
 | 
			
		||||
  border-radius: 50px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.installButton:hover {
 | 
			
		||||
  color: #000000;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.introButton {
 | 
			
		||||
  background-color: #e6ebf5;
 | 
			
		||||
  color: #000000;
 | 
			
		||||
  border-radius: 50px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.introButton:hover {
 | 
			
		||||
  color: #000000;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.demoButton {
 | 
			
		||||
  background-color: aquamarine;
 | 
			
		||||
  color: #000000;
 | 
			
		||||
  border-radius: 50px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.demoButton:hover {
 | 
			
		||||
  color: #000000;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,71 +1,54 @@
 | 
			
		||||
import React from "react";
 | 
			
		||||
import clsx from "clsx";
 | 
			
		||||
import Link from "@docusaurus/Link";
 | 
			
		||||
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
 | 
			
		||||
import Layout from "@theme/Layout";
 | 
			
		||||
import HomepageFeatures from "@site/src/components/HomepageFeatures";
 | 
			
		||||
 | 
			
		||||
import styles from "./index.module.css";
 | 
			
		||||
 | 
			
		||||
function HomepageHeader() {
 | 
			
		||||
  const { siteConfig } = useDocusaurusContext();
 | 
			
		||||
  return (
 | 
			
		||||
    <header className={clsx("hero hero--primary", styles.heroBanner)}>
 | 
			
		||||
      <div className="container">
 | 
			
		||||
        <h1
 | 
			
		||||
          className="hero__title"
 | 
			
		||||
          style={{
 | 
			
		||||
            fontFamily: "Snowburst One",
 | 
			
		||||
            color: "#adcbfa",
 | 
			
		||||
          }}
 | 
			
		||||
        >
 | 
			
		||||
    <header>
 | 
			
		||||
      <section className="text-center m-6 p-12 border border-red-400 rounded-[50px] bg-gray-100 dark:bg-immich-dark-gray">
 | 
			
		||||
        <h1 className="text-6xl font-bold mb-10 font-immich-title text-immich-primary dark:text-immich-dark-primary">
 | 
			
		||||
          IMMICH
 | 
			
		||||
        </h1>
 | 
			
		||||
        <p className="hero__subtitle">{siteConfig.tagline}</p>
 | 
			
		||||
        <div className={styles.buttonsRow}>
 | 
			
		||||
          <div className={styles.buttons}>
 | 
			
		||||
        <div className="font-thin text-2xl my-12 leading-4">
 | 
			
		||||
          <p>SELF-HOSTED BACKUP SOLUTION </p>
 | 
			
		||||
          <p>FOR PHOTOS AND VIDEOS</p>
 | 
			
		||||
          <p>ON MOBILE DEVICE</p>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div className="flex place-items-center place-content-center mt-9 mb-16 gap-4">
 | 
			
		||||
          <Link
 | 
			
		||||
              className={clsx("button button--lg", styles.introButton)}
 | 
			
		||||
            className="flex place-items-center place-content-center py-3 px-8 text-lg border bg-immich-primary dark:bg-immich-dark-primary rounded-full no-underline hover:no-underline text-white hover:text-gray-50 dark:text-immich-dark-bg  font-bold"
 | 
			
		||||
            to="docs/overview/introduction"
 | 
			
		||||
          >
 | 
			
		||||
              Introduction
 | 
			
		||||
            GET STARTED
 | 
			
		||||
          </Link>
 | 
			
		||||
          </div>
 | 
			
		||||
 | 
			
		||||
          <div className={styles.buttons}>
 | 
			
		||||
          <Link
 | 
			
		||||
              className={clsx("button button--lg", styles.installButton)}
 | 
			
		||||
              to="docs/install/requirements"
 | 
			
		||||
            >
 | 
			
		||||
              Installation
 | 
			
		||||
            </Link>
 | 
			
		||||
          </div>
 | 
			
		||||
 | 
			
		||||
          <div className={styles.buttons}>
 | 
			
		||||
            <Link
 | 
			
		||||
              className={clsx("button button--lg", styles.demoButton)}
 | 
			
		||||
            className="flex place-items-center place-content-center py-3 px-8 text-lg border bg-immich-primary/10 dark:bg-gray-300  rounded-full hover:no-underline text-immich-primary dark:text-immich-dark-bg font-bold"
 | 
			
		||||
            to="https://demo.immich.app/"
 | 
			
		||||
          >
 | 
			
		||||
              Demo
 | 
			
		||||
            DEMO PORTAL
 | 
			
		||||
          </Link>
 | 
			
		||||
        </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <img src="/img/immich-screenshots.webp" alt="logo" />
 | 
			
		||||
      </div>
 | 
			
		||||
      </section>
 | 
			
		||||
    </header>
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default function Home(): JSX.Element {
 | 
			
		||||
  const { siteConfig } = useDocusaurusContext();
 | 
			
		||||
  return (
 | 
			
		||||
    <Layout
 | 
			
		||||
      title={`Home`}
 | 
			
		||||
      description="immich Self-hosted photo and video backup solution directly from your mobile phone "
 | 
			
		||||
      noFooter={true}
 | 
			
		||||
    >
 | 
			
		||||
      <HomepageHeader />
 | 
			
		||||
      <main>{/* <HomepageFeatures /> */}</main>
 | 
			
		||||
      <div className="flex flex-col place-items-center place-content-center">
 | 
			
		||||
        <p>This project is available under MIT license.</p>
 | 
			
		||||
        <p className="text-xs">Privacy should not be a luxury</p>
 | 
			
		||||
      </div>
 | 
			
		||||
    </Layout>
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										30
									
								
								docs/tailwind.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								docs/tailwind.config.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
// tailwind.config.js
 | 
			
		||||
/** @type {import('tailwindcss').Config} */
 | 
			
		||||
module.exports = {
 | 
			
		||||
  corePlugins: {
 | 
			
		||||
    preflight: false, // disable Tailwind's reset
 | 
			
		||||
  },
 | 
			
		||||
  content: ["./src/**/*.{js,jsx,ts,tsx}", "../docs/**/*.mdx"], // my markdown stuff is in ../docs, not /src
 | 
			
		||||
  darkMode: ["class", '[data-theme="dark"]'], // hooks into docusaurus' dark mode settigns
 | 
			
		||||
  theme: {
 | 
			
		||||
    extend: {
 | 
			
		||||
      colors: {
 | 
			
		||||
        // Light Theme
 | 
			
		||||
        "immich-primary": "#4250af",
 | 
			
		||||
        "immich-bg": "white",
 | 
			
		||||
        "immich-fg": "black",
 | 
			
		||||
        "immich-gray": "#F6F6F4",
 | 
			
		||||
 | 
			
		||||
        // Dark Theme
 | 
			
		||||
        "immich-dark-primary": "#adcbfa",
 | 
			
		||||
        "immich-dark-bg": "black",
 | 
			
		||||
        "immich-dark-fg": "#e5e7eb",
 | 
			
		||||
        "immich-dark-gray": "#212121",
 | 
			
		||||
      },
 | 
			
		||||
      fontFamily: {
 | 
			
		||||
        "immich-title": ["Snowburst One", "cursive"],
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  plugins: [],
 | 
			
		||||
};
 | 
			
		||||
		Reference in New Issue
	
	Block a user