From 31e67c4316843cf6f629f6d5fc3f425c2957a53a Mon Sep 17 00:00:00 2001 From: iCrawl Date: Mon, 28 Nov 2022 05:55:08 +0100 Subject: [PATCH] build: smaller bundle size for websites --- apps/guide/astro.config.ts | 62 ++++++------- apps/guide/package.json | 14 ++- apps/website/next.config.js | 9 +- apps/website/package.json | 6 +- .../src/app/docs/packages/[package]/page.tsx | 4 +- apps/website/src/app/docs/packages/page.tsx | 4 +- apps/website/src/app/page.tsx | 2 +- apps/website/src/components/CmdK.tsx | 18 ++-- apps/website/src/components/CodeListing.tsx | 2 +- apps/website/src/components/DocContainer.tsx | 18 ++-- apps/website/src/components/Header.tsx | 7 +- apps/website/src/components/MethodItem.tsx | 5 +- apps/website/src/components/PackageSelect.tsx | 3 +- apps/website/src/components/Sections.tsx | 4 +- apps/website/src/components/SidebarItems.tsx | 14 ++- .../src/components/TableOfContentItems.tsx | 4 +- apps/website/src/components/VersionSelect.tsx | 3 +- apps/website/src/components/model/Enum.tsx | 2 +- .../website/src/components/model/Function.tsx | 3 +- packages/ui/package.json | 4 +- packages/ui/src/lib/components/Alert.tsx | 4 +- packages/ui/src/lib/components/Section.tsx | 2 +- packages/ui/vite.config.ts | 10 +- yarn.lock | 92 +++++++++++++++++-- 24 files changed, 199 insertions(+), 97 deletions(-) diff --git a/apps/guide/astro.config.ts b/apps/guide/astro.config.ts index d95b9d7e8..e7750a663 100644 --- a/apps/guide/astro.config.ts +++ b/apps/guide/astro.config.ts @@ -48,7 +48,37 @@ const rootDir = new URL('../../', import.meta.url); export default defineConfig({ integrations: [ react(), - mdx(), + mdx({ + remarkPlugins: [[remarkCodeHike, { autoImport: false, theme: shikiThemeDarkPlus, lineNumbers: true }]], + rehypePlugins: [ + rehypeSlug, + [ + rehypeAutolinkHeadings, + { + properties: { + class: + 'relative inline-flex w-6 h-6 place-items-center place-content-center outline-0 text-black dark:text-white ml-2', + }, + behavior: 'after', + group: ({ tagName }: { tagName: string }) => + h('div', { + class: `[&>*]:inline-block [&>h1]:m-0 [&>h2]:m-0 [&>h3]:m-0 [&>h4]:m-0 level-${tagName}`, + tabIndex: -1, + }), + content: (heading: Node) => [ + h( + `span.anchor-icon`, + { + ariaHidden: 'true', + }, + LinkIcon, + ), + createSROnlyLabel(toString(heading)), + ], + }, + ], + ], + }), image({ serviceEntryPoint: '@astrojs/image/sharp', }), @@ -62,35 +92,6 @@ export default defineConfig({ compress(), ], markdown: { - remarkPlugins: [[remarkCodeHike, { autoImport: false, theme: shikiThemeDarkPlus, lineNumbers: true }]], - rehypePlugins: [ - rehypeSlug, - [ - rehypeAutolinkHeadings, - { - properties: { - class: - 'relative inline-flex w-6 h-6 place-items-center place-content-center outline-0 text-black dark:text-white ml-2', - }, - behavior: 'after', - group: ({ tagName }: { tagName: string }) => - h('div', { - class: `[&>*]:inline-block [&>h1]:m-0 [&>h2]:m-0 [&>h3]:m-0 [&>h4]:m-0 level-${tagName}`, - tabIndex: -1, - }), - content: (heading: Node) => [ - h( - `span.anchor-icon`, - { - ariaHidden: 'true', - }, - LinkIcon, - ), - createSROnlyLabel(toString(heading)), - ], - }, - ], - ], extendDefaultPlugins: true, syntaxHighlight: false, }, @@ -109,7 +110,6 @@ export default defineConfig({ 'ariakit-utils/system': fileURLToPath(new URL('node_modules/ariakit-utils/esm/system.js', rootDir)), 'react-icons/fi': fileURLToPath(new URL('node_modules/react-icons/fi/index.esm.js', rootDir)), 'react-icons/vsc': fileURLToPath(new URL('node_modules/react-icons/vsc/index.esm.js', rootDir)), - 'react-use': fileURLToPath(new URL('node_modules/react-use/esm/index.js', rootDir)), }, }, }, diff --git a/apps/guide/package.json b/apps/guide/package.json index 8b4f78b55..f38919e8c 100644 --- a/apps/guide/package.json +++ b/apps/guide/package.json @@ -36,24 +36,20 @@ }, "homepage": "https://discord.js.org", "dependencies": { - "@astrojs/image": "^0.11.6", - "@astrojs/mdx": "^0.12.0", - "@astrojs/react": "^1.2.2", "@code-hike/mdx": "^0.7.4", "@discordjs/ui": "workspace:^", "ariakit": "^2.0.0-next.41", - "cmdk": "^0.1.20", - "meilisearch": "^0.29.1", "react": "^18.2.0", "react-custom-scrollbars-2": "^4.5.0", "react-dom": "^18.2.0", "react-icons": "^4.6.0", - "react-use": "^17.4.0", - "sharp": "^0.31.2", - "shiki": "^0.11.1" + "react-use": "^17.4.0" }, "devDependencies": { + "@astrojs/image": "^0.11.6", + "@astrojs/mdx": "^0.12.0", "@astrojs/prefetch": "^0.1.1", + "@astrojs/react": "^1.2.2", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", "@types/node": "16.18.3", @@ -80,6 +76,8 @@ "prettier-plugin-tailwindcss": "^0.2.0", "rehype-autolink-headings": "^6.1.1", "rehype-slug": "^5.1.0", + "sharp": "^0.31.2", + "shiki": "^0.11.1", "typescript": "^4.9.3", "unocss": "^0.46.5", "vercel": "^28.5.6", diff --git a/apps/website/next.config.js b/apps/website/next.config.js index 0c25edbf6..e63fd9b2c 100644 --- a/apps/website/next.config.js +++ b/apps/website/next.config.js @@ -1,10 +1,15 @@ /* eslint-disable tsdoc/syntax */ import { fileURLToPath } from 'node:url'; +import bundleAnalyzer from '@next/bundle-analyzer'; + +const withBundleAnalyzer = bundleAnalyzer({ + enabled: process.env.ANALYZE === 'true', +}); /** * @type {import('next').NextConfig} */ -export default { +export default withBundleAnalyzer({ reactStrictMode: true, eslint: { ignoreDuringBuilds: true, @@ -20,4 +25,4 @@ export default { dangerouslyAllowSVG: true, contentSecurityPolicy: "default-src 'self'; script-src 'none'; sandbox;", }, -}; +}); diff --git a/apps/website/package.json b/apps/website/package.json index 7b4cc3c5b..c0f86b979 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -5,11 +5,12 @@ "private": true, "scripts": { "test": "vitest run", - "build:local": "yarn run --top-level docs --force && cross-env NEXT_PUBLIC_LOCAL_DEV=true yarn build:prod", + "build:local": "yarn run --top-level docs --force && cross-env-shell NEXT_PUBLIC_LOCAL_DEV=true yarn build:prod", "build:prod": "yarn workspaces foreach -ptR run build && yarn build:css && yarn build:next", "build:next": "next build", "build:css": "yarn generate:css", "build:search_indicies": "yarn node scripts/generateAllIndicies.js", + "build:analyze": "yarn run --top-level docs --force && cross-env-shell ANALYZE=true NEXT_PUBLIC_LOCAL_DEV=true yarn build:prod", "dev": "yarn run --top-level docs && concurrently 'yarn dev:css' 'yarn dev:next'", "dev:next": "next dev", "dev:css": "yarn generate:css --watch", @@ -46,6 +47,7 @@ "@discordjs/ui": "workspace:^", "@microsoft/api-extractor-model": "7.24.0", "@microsoft/tsdoc": "0.14.1", + "@react-icons/all-files": "^4.1.0", "@vercel/og": "^0.0.21", "@vscode/codicons": "^0.0.32", "ariakit": "^2.0.0-next.41", @@ -58,7 +60,6 @@ "react": "^18.2.0", "react-custom-scrollbars-2": "^4.5.0", "react-dom": "^18.2.0", - "react-icons": "^4.6.0", "react-syntax-highlighter": "^15.5.0", "react-use": "^17.4.0", "rehype-ignore": "^1.0.3", @@ -71,6 +72,7 @@ "swr": "^1.3.0" }, "devDependencies": { + "@next/bundle-analyzer": "^13.0.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", "@types/node": "16.18.3", diff --git a/apps/website/src/app/docs/packages/[package]/page.tsx b/apps/website/src/app/docs/packages/[package]/page.tsx index 801f0c017..91e3f54dc 100644 --- a/apps/website/src/app/docs/packages/[package]/page.tsx +++ b/apps/website/src/app/docs/packages/[package]/page.tsx @@ -1,6 +1,8 @@ +import { VscArrowLeft } from '@react-icons/all-files/vsc/VscArrowLeft'; +import { VscArrowRight } from '@react-icons/all-files/vsc/VscArrowRight'; +import { VscVersions } from '@react-icons/all-files/vsc/VscVersions'; import Link from 'next/link'; import { notFound } from 'next/navigation'; -import { VscArrowLeft, VscArrowRight, VscVersions } from 'react-icons/vsc'; import { PACKAGES } from '~/util/constants'; export const dynamicParams = false; diff --git a/apps/website/src/app/docs/packages/page.tsx b/apps/website/src/app/docs/packages/page.tsx index 9f5df4310..5e1af0051 100644 --- a/apps/website/src/app/docs/packages/page.tsx +++ b/apps/website/src/app/docs/packages/page.tsx @@ -1,5 +1,7 @@ +import { VscArrowLeft } from '@react-icons/all-files/vsc/VscArrowLeft'; +import { VscArrowRight } from '@react-icons/all-files/vsc/VscArrowRight'; +import { VscPackage } from '@react-icons/all-files/vsc/VscPackage'; import Link from 'next/link'; -import { VscArrowLeft, VscArrowRight, VscPackage } from 'react-icons/vsc'; import { PACKAGES } from '~/util/constants'; async function getData() { diff --git a/apps/website/src/app/page.tsx b/apps/website/src/app/page.tsx index 8e3197e10..f5893452c 100644 --- a/apps/website/src/app/page.tsx +++ b/apps/website/src/app/page.tsx @@ -1,6 +1,6 @@ +import { FiExternalLink } from '@react-icons/all-files/fi/FiExternalLink'; import Image from 'next/image'; import Link from 'next/link'; -import { FiExternalLink } from 'react-icons/fi'; import vercelLogo from '../assets/powered-by-vercel.svg'; import { SyntaxHighlighter } from '~/components/SyntaxHighlighter'; import { CODE_EXAMPLE } from '~/util/constants'; diff --git a/apps/website/src/components/CmdK.tsx b/apps/website/src/components/CmdK.tsx index 1a6c43536..26e499d9e 100644 --- a/apps/website/src/components/CmdK.tsx +++ b/apps/website/src/components/CmdK.tsx @@ -1,20 +1,18 @@ 'use client'; import type { ApiItemKind } from '@microsoft/api-extractor-model'; +import { VscArrowRight } from '@react-icons/all-files/vsc/VscArrowRight'; +import { VscSymbolClass } from '@react-icons/all-files/vsc/VscSymbolClass'; +import { VscSymbolEnum } from '@react-icons/all-files/vsc/VscSymbolEnum'; +import { VscSymbolField } from '@react-icons/all-files/vsc/VscSymbolField'; +import { VscSymbolInterface } from '@react-icons/all-files/vsc/VscSymbolInterface'; +import { VscSymbolMethod } from '@react-icons/all-files/vsc/VscSymbolMethod'; +import { VscSymbolProperty } from '@react-icons/all-files/vsc/VscSymbolProperty'; +import { VscSymbolVariable } from '@react-icons/all-files/vsc/VscSymbolVariable'; import { Dialog } from 'ariakit/dialog'; import { Command } from 'cmdk'; import { usePathname, useRouter } from 'next/navigation'; import { useEffect, useMemo, useState } from 'react'; -import { - VscArrowRight, - VscSymbolClass, - VscSymbolEnum, - VscSymbolField, - VscSymbolInterface, - VscSymbolMethod, - VscSymbolProperty, - VscSymbolVariable, -} from 'react-icons/vsc'; import { useKey } from 'react-use'; import { useCmdK } from '~/contexts/cmdK'; import { client } from '~/util/search'; diff --git a/apps/website/src/components/CodeListing.tsx b/apps/website/src/components/CodeListing.tsx index 997be93cd..d8ff47951 100644 --- a/apps/website/src/components/CodeListing.tsx +++ b/apps/website/src/components/CodeListing.tsx @@ -1,8 +1,8 @@ 'use client'; import type { TokenDocumentation, ApiItemJSON, AnyDocNodeJSON, InheritanceData } from '@discordjs/api-extractor-utils'; +import { FiLink } from '@react-icons/all-files/fi/FiLink'; import type { PropsWithChildren } from 'react'; -import { FiLink } from 'react-icons/fi'; import { HyperlinkedText } from './HyperlinkedText'; import { InheritanceText } from './InheritanceText'; import { TSDoc } from './tsdoc/TSDoc'; diff --git a/apps/website/src/components/DocContainer.tsx b/apps/website/src/components/DocContainer.tsx index 832466451..519e41fdf 100644 --- a/apps/website/src/components/DocContainer.tsx +++ b/apps/website/src/components/DocContainer.tsx @@ -8,18 +8,16 @@ import type { ApiInterfaceJSON, } from '@discordjs/api-extractor-utils'; import { Section } from '@discordjs/ui'; -import type { ReactNode } from 'react'; +import { VscListSelection } from '@react-icons/all-files/vsc/VscListSelection'; +import { VscSymbolClass } from '@react-icons/all-files/vsc/VscSymbolClass'; +import { VscSymbolEnum } from '@react-icons/all-files/vsc/VscSymbolEnum'; +import { VscSymbolInterface } from '@react-icons/all-files/vsc/VscSymbolInterface'; +import { VscSymbolMethod } from '@react-icons/all-files/vsc/VscSymbolMethod'; +import { VscSymbolParameter } from '@react-icons/all-files/vsc/VscSymbolParameter'; +import { VscSymbolVariable } from '@react-icons/all-files/vsc/VscSymbolVariable'; import { Fragment, type PropsWithChildren } from 'react'; +import type { ReactNode } from 'react'; import { Scrollbars } from 'react-custom-scrollbars-2'; -import { - VscSymbolClass, - VscSymbolMethod, - VscSymbolEnum, - VscSymbolInterface, - VscSymbolVariable, - VscListSelection, - VscSymbolParameter, -} from 'react-icons/vsc'; import { useMedia } from 'react-use'; import { HyperlinkedText } from './HyperlinkedText'; import { SyntaxHighlighter } from './SyntaxHighlighter'; diff --git a/apps/website/src/components/Header.tsx b/apps/website/src/components/Header.tsx index faefc98cd..5b958d7c6 100644 --- a/apps/website/src/components/Header.tsx +++ b/apps/website/src/components/Header.tsx @@ -1,12 +1,15 @@ 'use client'; +import { FiCommand } from '@react-icons/all-files/fi/FiCommand'; +import { VscColorMode } from '@react-icons/all-files/vsc/VscColorMode'; +import { VscGithubInverted } from '@react-icons/all-files/vsc/VscGithubInverted'; +import { VscMenu } from '@react-icons/all-files/vsc/VscMenu'; +import { VscSearch } from '@react-icons/all-files/vsc/VscSearch'; import { Button } from 'ariakit/button'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { useTheme } from 'next-themes'; import { Fragment, useEffect, useMemo, useState } from 'react'; -import { FiCommand } from 'react-icons/fi'; -import { VscColorMode, VscGithubInverted, VscMenu, VscSearch } from 'react-icons/vsc'; import { useCmdK } from '~/contexts/cmdK'; import { useNav } from '~/contexts/nav'; diff --git a/apps/website/src/components/MethodItem.tsx b/apps/website/src/components/MethodItem.tsx index fa88e3afb..64e05d2b2 100644 --- a/apps/website/src/components/MethodItem.tsx +++ b/apps/website/src/components/MethodItem.tsx @@ -1,10 +1,11 @@ 'use client'; import type { ApiMethodJSON, ApiMethodSignatureJSON } from '@discordjs/api-extractor-utils'; +import { FiLink } from '@react-icons/all-files/fi/FiLink'; +import { VscChevronDown } from '@react-icons/all-files/vsc/VscChevronDown'; +import { VscVersions } from '@react-icons/all-files/vsc/VscVersions'; import { Menu, MenuButton, MenuItem, useMenuState } from 'ariakit/menu'; import { useCallback, useMemo, useState } from 'react'; -import { FiLink } from 'react-icons/fi'; -import { VscChevronDown, VscVersions } from 'react-icons/vsc'; import { HyperlinkedText } from './HyperlinkedText'; import { InheritanceText } from './InheritanceText'; import { ParameterTable } from './ParameterTable'; diff --git a/apps/website/src/components/PackageSelect.tsx b/apps/website/src/components/PackageSelect.tsx index 32737cb26..384123643 100644 --- a/apps/website/src/components/PackageSelect.tsx +++ b/apps/website/src/components/PackageSelect.tsx @@ -1,8 +1,9 @@ +import { VscChevronDown } from '@react-icons/all-files/vsc/VscChevronDown'; +import { VscPackage } from '@react-icons/all-files/vsc/VscPackage'; import { Menu, MenuButton, MenuItem, useMenuState } from 'ariakit/menu'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { useMemo } from 'react'; -import { VscPackage, VscChevronDown } from 'react-icons/vsc'; import { PACKAGES } from '~/util/constants'; export function PackageSelect() { diff --git a/apps/website/src/components/Sections.tsx b/apps/website/src/components/Sections.tsx index a2ba983df..1a957e116 100644 --- a/apps/website/src/components/Sections.tsx +++ b/apps/website/src/components/Sections.tsx @@ -7,8 +7,10 @@ import type { ApiConstructorJSON, } from '@discordjs/api-extractor-utils'; import { Section } from '@discordjs/ui'; +import { VscSymbolConstant } from '@react-icons/all-files/vsc/VscSymbolConstant'; +import { VscSymbolMethod } from '@react-icons/all-files/vsc/VscSymbolMethod'; +import { VscSymbolProperty } from '@react-icons/all-files/vsc/VscSymbolProperty'; import { useMemo } from 'react'; -import { VscSymbolConstant, VscSymbolMethod, VscSymbolProperty } from 'react-icons/vsc'; import { useMedia } from 'react-use'; import { MethodList } from './MethodList'; import { ParameterTable } from './ParameterTable'; diff --git a/apps/website/src/components/SidebarItems.tsx b/apps/website/src/components/SidebarItems.tsx index 78ae7f957..7748b19a5 100644 --- a/apps/website/src/components/SidebarItems.tsx +++ b/apps/website/src/components/SidebarItems.tsx @@ -2,17 +2,15 @@ import type { getMembers } from '@discordjs/api-extractor-utils'; import { Section } from '@discordjs/ui'; +import { VscSymbolClass } from '@react-icons/all-files/vsc/VscSymbolClass'; +import { VscSymbolEnum } from '@react-icons/all-files/vsc/VscSymbolEnum'; +import { VscSymbolField } from '@react-icons/all-files/vsc/VscSymbolField'; +import { VscSymbolInterface } from '@react-icons/all-files/vsc/VscSymbolInterface'; +import { VscSymbolMethod } from '@react-icons/all-files/vsc/VscSymbolMethod'; +import { VscSymbolVariable } from '@react-icons/all-files/vsc/VscSymbolVariable'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { useMemo, useState, useEffect } from 'react'; -import { - VscSymbolClass, - VscSymbolEnum, - VscSymbolInterface, - VscSymbolField, - VscSymbolVariable, - VscSymbolMethod, -} from 'react-icons/vsc'; import { useNav } from '~/contexts/nav'; type Members = ReturnType; diff --git a/apps/website/src/components/TableOfContentItems.tsx b/apps/website/src/components/TableOfContentItems.tsx index 8c81eb762..7bee31a43 100644 --- a/apps/website/src/components/TableOfContentItems.tsx +++ b/apps/website/src/components/TableOfContentItems.tsx @@ -1,8 +1,10 @@ 'use client'; import type { ApiClassJSON, ApiInterfaceJSON } from '@discordjs/api-extractor-utils'; +import { VscListSelection } from '@react-icons/all-files/vsc/VscListSelection'; +import { VscSymbolMethod } from '@react-icons/all-files/vsc/VscSymbolMethod'; +import { VscSymbolProperty } from '@react-icons/all-files/vsc/VscSymbolProperty'; import { useMemo } from 'react'; -import { VscListSelection, VscSymbolMethod, VscSymbolProperty } from 'react-icons/vsc'; export function TableOfContentItems({ methods, diff --git a/apps/website/src/components/VersionSelect.tsx b/apps/website/src/components/VersionSelect.tsx index ee6bf0fb2..5be632a2a 100644 --- a/apps/website/src/components/VersionSelect.tsx +++ b/apps/website/src/components/VersionSelect.tsx @@ -1,8 +1,9 @@ +import { VscChevronDown } from '@react-icons/all-files/vsc/VscChevronDown'; +import { VscVersions } from '@react-icons/all-files/vsc/VscVersions'; import { Menu, MenuButton, MenuItem, useMenuState } from 'ariakit/menu'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { useMemo } from 'react'; -import { VscVersions, VscChevronDown } from 'react-icons/vsc'; import useSWR from 'swr'; import { fetcher } from '~/util/fetcher'; diff --git a/apps/website/src/components/model/Enum.tsx b/apps/website/src/components/model/Enum.tsx index dc69904b8..d317d85df 100644 --- a/apps/website/src/components/model/Enum.tsx +++ b/apps/website/src/components/model/Enum.tsx @@ -2,8 +2,8 @@ import type { ApiEnumJSON } from '@discordjs/api-extractor-utils'; import { Section } from '@discordjs/ui'; +import { VscSymbolEnumMember } from '@react-icons/all-files/vsc/VscSymbolEnumMember'; import { Fragment } from 'react'; -import { VscSymbolEnumMember } from 'react-icons/vsc'; import { useMedia } from 'react-use'; import { CodeListing, CodeListingSeparatorType } from '../CodeListing'; import { DocContainer } from '../DocContainer'; diff --git a/apps/website/src/components/model/Function.tsx b/apps/website/src/components/model/Function.tsx index ef20ad82e..99b5df3dd 100644 --- a/apps/website/src/components/model/Function.tsx +++ b/apps/website/src/components/model/Function.tsx @@ -1,9 +1,10 @@ 'use client'; import type { ApiFunctionJSON } from '@discordjs/api-extractor-utils'; +import { VscChevronDown } from '@react-icons/all-files/vsc/VscChevronDown'; +import { VscVersions } from '@react-icons/all-files/vsc/VscVersions'; import { Menu, MenuButton, MenuItem, useMenuState } from 'ariakit/menu'; import { useState } from 'react'; -import { VscChevronDown, VscVersions } from 'react-icons/vsc'; import { DocContainer } from '../DocContainer'; import { ParametersSection } from '../Sections'; diff --git a/packages/ui/package.json b/packages/ui/package.json index ddca29e5a..1cce05e18 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -45,12 +45,12 @@ "dependencies": { "ariakit": "^2.0.0-next.41", "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-icons": "^4.6.0" + "react-dom": "^18.2.0" }, "devDependencies": { "@favware/cliff-jumper": "^1.9.0", "@ladle/react": "^2.4.5", + "@react-icons/all-files": "^4.1.0", "@types/node": "16.18.3", "@types/react": "^18.0.25", "@types/react-dom": "^18.0.9", diff --git a/packages/ui/src/lib/components/Alert.tsx b/packages/ui/src/lib/components/Alert.tsx index e50156634..0c35800aa 100644 --- a/packages/ui/src/lib/components/Alert.tsx +++ b/packages/ui/src/lib/components/Alert.tsx @@ -1,5 +1,7 @@ +import { VscFlame } from '@react-icons/all-files/vsc/VscFlame'; +import { VscInfo } from '@react-icons/all-files/vsc/VscInfo'; +import { VscWarning } from '@react-icons/all-files/vsc/VscWarning'; import type { PropsWithChildren } from 'react'; -import { VscFlame, VscInfo, VscWarning } from 'react-icons/vsc'; export interface IAlert { title?: string | undefined; diff --git a/packages/ui/src/lib/components/Section.tsx b/packages/ui/src/lib/components/Section.tsx index e4da574c5..39846282e 100644 --- a/packages/ui/src/lib/components/Section.tsx +++ b/packages/ui/src/lib/components/Section.tsx @@ -1,6 +1,6 @@ +import { VscChevronDown } from '@react-icons/all-files/vsc/VscChevronDown'; import { Disclosure, DisclosureContent, useDisclosureState } from 'ariakit/disclosure'; import type { PropsWithChildren } from 'react'; -import { VscChevronDown } from 'react-icons/vsc'; export interface SectionOptions { background?: boolean | undefined; diff --git a/packages/ui/vite.config.ts b/packages/ui/vite.config.ts index 19a3833f5..8cf7a6116 100644 --- a/packages/ui/vite.config.ts +++ b/packages/ui/vite.config.ts @@ -14,7 +14,15 @@ export default defineConfig({ fileName: 'ui', }, rollupOptions: { - external: ['react', 'react-dom', 'ariakit/disclosure', 'react-icons/vsc'], + external: [ + 'react', + 'react-dom', + 'ariakit/disclosure', + '@react-icons/all-files/vsc/VscFlame', + '@react-icons/all-files/vsc/VscInfo', + '@react-icons/all-files/vsc/VscWarning', + '@react-icons/all-files/vsc/VscChevronDown', + ], }, }, }); diff --git a/yarn.lock b/yarn.lock index 9bc3f368a..7b67ef66c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2179,7 +2179,6 @@ __metadata: astro: ^1.6.11 astro-compress: ^1.1.12 astro-critters: ^1.1.12 - cmdk: ^0.1.20 cross-env: ^7.0.3 eslint: ^8.28.0 eslint-config-neon: ^0.1.40 @@ -2188,7 +2187,6 @@ __metadata: hast-util-to-string: ^2.0.0 hastscript: ^7.1.0 html-escaper: ^3.0.3 - meilisearch: ^0.29.1 prettier: ^2.8.0 prettier-plugin-astro: ^0.7.0 prettier-plugin-tailwindcss: ^0.2.0 @@ -2312,6 +2310,7 @@ __metadata: dependencies: "@favware/cliff-jumper": ^1.9.0 "@ladle/react": ^2.4.5 + "@react-icons/all-files": ^4.1.0 "@types/node": 16.18.3 "@types/react": ^18.0.25 "@types/react-dom": ^18.0.9 @@ -2326,7 +2325,6 @@ __metadata: prettier: ^2.8.0 react: ^18.2.0 react-dom: ^18.2.0 - react-icons: ^4.6.0 typescript: ^4.9.3 unocss: ^0.46.5 vite: ^3.2.4 @@ -2395,6 +2393,8 @@ __metadata: "@discordjs/ui": "workspace:^" "@microsoft/api-extractor-model": 7.24.0 "@microsoft/tsdoc": 0.14.1 + "@next/bundle-analyzer": ^13.0.5 + "@react-icons/all-files": ^4.1.0 "@testing-library/react": ^13.4.0 "@testing-library/user-event": ^14.4.3 "@types/node": 16.18.3 @@ -2425,7 +2425,6 @@ __metadata: react: ^18.2.0 react-custom-scrollbars-2: ^4.5.0 react-dom: ^18.2.0 - react-icons: ^4.6.0 react-syntax-highlighter: ^15.5.0 react-use: ^17.4.0 rehype-ignore: ^1.0.3 @@ -3249,6 +3248,15 @@ __metadata: languageName: node linkType: hard +"@next/bundle-analyzer@npm:^13.0.5": + version: 13.0.5 + resolution: "@next/bundle-analyzer@npm:13.0.5" + dependencies: + webpack-bundle-analyzer: 4.7.0 + checksum: 0494c7211af0f4d995d5b08df00f6686f2df7e165623c7c9a9d27ed1b04a8ae1b3908c0f09ec40174de96f6817873df89b7c5c4044c4cbf4e2e9034cb9859d56 + languageName: node + linkType: hard + "@next/env@npm:13.0.5": version: 13.0.5 resolution: "@next/env@npm:13.0.5" @@ -3703,6 +3711,15 @@ __metadata: languageName: node linkType: hard +"@react-icons/all-files@npm:^4.1.0": + version: 4.1.0 + resolution: "@react-icons/all-files@npm:4.1.0" + peerDependencies: + react: "*" + checksum: c34c644650a144e4f2157c20b3106200ac1f76b3132dcda1a40f061e000a34c78df188266395afae571d5c85bf48365824db7b1bf8b7ae6229fdc148c941ab85 + languageName: node + linkType: hard + "@resvg/resvg-wasm@npm:2.0.0-alpha.4": version: 2.0.0-alpha.4 resolution: "@resvg/resvg-wasm@npm:2.0.0-alpha.4" @@ -5242,14 +5259,14 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.2.0": +"acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.2.0": version: 8.2.0 resolution: "acorn-walk@npm:8.2.0" checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 languageName: node linkType: hard -"acorn@npm:^8.0.0, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.6.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0": +"acorn@npm:^8.0.0, acorn@npm:^8.0.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.6.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0": version: 8.8.1 resolution: "acorn@npm:8.8.1" bin: @@ -13866,7 +13883,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.21, lodash@npm:~4.17.15": +"lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:~4.17.15": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -15956,6 +15973,15 @@ __metadata: languageName: node linkType: hard +"opener@npm:^1.5.2": + version: 1.5.2 + resolution: "opener@npm:1.5.2" + bin: + opener: bin/opener-bin.js + checksum: 33b620c0d53d5b883f2abc6687dd1c5fd394d270dbe33a6356f2d71e0a2ec85b100d5bac94694198ccf5c30d592da863b2292c5539009c715a9c80c697b4f6cc + languageName: node + linkType: hard + "optionator@npm:^0.9.1": version: 0.9.1 resolution: "optionator@npm:0.9.1" @@ -18350,6 +18376,17 @@ __metadata: languageName: node linkType: hard +"sirv@npm:^1.0.7": + version: 1.0.19 + resolution: "sirv@npm:1.0.19" + dependencies: + "@polka/url": ^1.0.0-next.20 + mrmime: ^1.0.0 + totalist: ^1.0.0 + checksum: c943cfc61baf85f05f125451796212ec35d4377af4da90ae8ec1fa23e6d7b0b4d9c74a8fbf65af83c94e669e88a09dc6451ba99154235eead4393c10dda5b07c + languageName: node + linkType: hard + "sirv@npm:^2.0.2": version: 2.0.2 resolution: "sirv@npm:2.0.2" @@ -19554,6 +19591,13 @@ __metadata: languageName: node linkType: hard +"totalist@npm:^1.0.0": + version: 1.1.0 + resolution: "totalist@npm:1.1.0" + checksum: dfab80c7104a1d170adc8c18782d6c04b7df08352dec452191208c66395f7ef2af7537ddfa2cf1decbdcfab1a47afbbf0dec6543ea191da98c1c6e1599f86adc + languageName: node + linkType: hard + "totalist@npm:^3.0.0": version: 3.0.0 resolution: "totalist@npm:3.0.0" @@ -21213,6 +21257,25 @@ __metadata: languageName: node linkType: hard +"webpack-bundle-analyzer@npm:4.7.0": + version: 4.7.0 + resolution: "webpack-bundle-analyzer@npm:4.7.0" + dependencies: + acorn: ^8.0.4 + acorn-walk: ^8.0.0 + chalk: ^4.1.0 + commander: ^7.2.0 + gzip-size: ^6.0.0 + lodash: ^4.17.20 + opener: ^1.5.2 + sirv: ^1.0.7 + ws: ^7.3.1 + bin: + webpack-bundle-analyzer: lib/bin/analyzer.js + checksum: 4ce3b379c61ce16b2219756843407cc99f2b82cd191f653043f1b705a3e32b3af03834af0dfded98ab852313a892a148bed1a8effaacd6440f028c19f41581f3 + languageName: node + linkType: hard + "whatwg-encoding@npm:^2.0.0": version: 2.0.0 resolution: "whatwg-encoding@npm:2.0.0" @@ -21448,6 +21511,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:^7.3.1": + version: 7.5.9 + resolution: "ws@npm:7.5.9" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: c3c100a181b731f40b7f2fddf004aa023f79d64f489706a28bc23ff88e87f6a64b3c6651fbec3a84a53960b75159574d7a7385709847a62ddb7ad6af76f49138 + languageName: node + linkType: hard + "ws@npm:^8.11.0": version: 8.11.0 resolution: "ws@npm:8.11.0"