@sd/assets/react

This commit is contained in:
Brendan Allan 2024-01-02 16:24:41 +08:00
parent 5371e9f961
commit 8f402c8252
85 changed files with 5663 additions and 1742 deletions

View file

@ -1,7 +1,7 @@
'use client';
import { AndroidLogo, Globe, Icon, LinuxLogo, WindowsLogo } from '@phosphor-icons/react';
import { Apple, Docker } from '@sd/assets/svgs/brands';
import { Apple, Docker } from '@sd/assets/react/svgs/brands';
import { ComponentProps, FunctionComponent, useEffect, useState } from 'react';
import { Tooltip } from '@sd/ui';
@ -86,7 +86,7 @@ export function Platform({ platform, ...props }: ComponentProps<'a'> & PlatformP
href={`${BASE_DL_LINK}/${platform.os}/${links[0].arch}`}
{...props}
/>
)
)
: (props: any) => <button {...props} />
: (props: any) => <div {...props} />;

View file

@ -1,6 +1,6 @@
'use client';
import { Github } from '@sd/assets/svgs/brands';
import { Github } from '@sd/assets/react/svgs/brands';
import clsx from 'clsx';
import { motion } from 'framer-motion';
import { usePlausible } from 'next-plausible';

View file

@ -5,7 +5,7 @@ import {
Opencollective,
Twitch,
Twitter
} from '@sd/assets/svgs/brands';
} from '@sd/assets/react/svgs/brands';
import Image from 'next/image';
import Link from 'next/link';
import { PropsWithChildren } from 'react';

View file

@ -1,7 +1,7 @@
'use client';
import { Book, Chat, DotsThreeVertical, MapPin, User } from '@phosphor-icons/react';
import { Academia, Discord, Github } from '@sd/assets/svgs/brands';
import { Academia, Discord, Github } from '@sd/assets/react/svgs/brands';
import clsx from 'clsx';
import { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime';
import { usePathname, useRouter } from 'next/navigation';
@ -19,11 +19,7 @@ export function MobileDropdown() {
return (
<Dropdown.Root
button={
<Button
aria-label="mobile-menu"
className="hover:!bg-transparent"
size="icon"
>
<Button aria-label="mobile-menu" className="hover:!bg-transparent" size="icon">
<DotsThreeVertical weight="bold" className="h-6 w-6 " />
</Button>
}

View file

@ -1,4 +1,4 @@
import { Discord, Github } from '@sd/assets/svgs/brands';
import { Discord, Github } from '@sd/assets/react/svgs/brands';
import Image from 'next/image';
import Link from 'next/link';
import { PropsWithChildren } from 'react';

View file

@ -1,6 +1,6 @@
import { allDocs } from '@contentlayer/generated';
import { CaretRight } from '@phosphor-icons/react/dist/ssr';
import { Github } from '@sd/assets/svgs/brands';
import { Github } from '@sd/assets/react/svgs/brands';
import { Metadata } from 'next';
import { getMDXComponent } from 'next-contentlayer/hooks';
import Link from 'next/link';

View file

@ -1,4 +1,4 @@
import { Dribbble, Github, Gitlab, Twitch, Twitter } from '@sd/assets/svgs/brands';
import { Dribbble, Github, Gitlab, Twitch, Twitter } from '@sd/assets/react/svgs/brands';
import clsx from 'clsx';
import Image from 'next/image';
import NextLink from 'next/link';

View file

@ -5,7 +5,7 @@ import {
Opencollective,
Twitch,
Twitter
} from '@sd/assets/svgs/brands';
} from '@sd/assets/react/svgs/brands';
import Image from 'next/image';
import Link from 'next/link';
import { PropsWithChildren } from 'react';

View file

@ -1,5 +1,5 @@
import { Book, Chat, DotsThreeVertical, MapPin, User } from '@phosphor-icons/react/dist/ssr';
import { Academia, Discord, Github } from '@sd/assets/svgs/brands';
import { Academia, Discord, Github } from '@sd/assets/react/svgs/brands';
import clsx from 'clsx';
import Image from 'next/image';
import Link from 'next/link';

View file

@ -7,7 +7,7 @@ export function getWindow(): (Window & typeof globalThis) | null {
}
export function toTitleCase(str: string) {
return str
return (str ?? '')
.toLowerCase()
.replace(/(?:^|[\s-/])\w/g, function (match) {
return match.toUpperCase();

View file

@ -1,4 +1,4 @@
import { getIcon } from '@sd/assets/util';
import { getIcon } from '@sd/assets/react/util';
import { useEffect, useLayoutEffect, useMemo, useState, type PropsWithChildren } from 'react';
import { Image, View } from 'react-native';
import { DocumentDirectoryPath } from 'react-native-fs';

View file

@ -1,4 +1,4 @@
import { Folder, Folder_Light } from '@sd/assets/icons';
import { Folder, Folder_Light } from '@sd/assets/react/icons';
import { Image } from 'react-native';
type FolderProps = {

View file

@ -1,4 +1,4 @@
import { getIcon, iconNames } from '@sd/assets/util';
import { getIcon, iconNames } from '@sd/assets/react/util';
import { Image, ImageProps } from 'react-native';
import { isDarkTheme } from '@sd/client';

View file

@ -1,4 +1,4 @@
import { Folder } from '@sd/assets/icons';
import { Folder } from '@sd/assets/react/icons';
import dayjs from 'dayjs';
import { DotsThreeVertical, Pause, Play, Stop } from 'phosphor-react-native';
import { useMemo, useState } from 'react';

View file

@ -1,5 +1,5 @@
import { useNavigation, useRoute } from '@react-navigation/native';
import { AppLogo, BloomOne } from '@sd/assets/images';
import { AppLogo, BloomOne } from '@sd/assets/react/images';
import { MotiView } from 'moti';
import { CaretLeft } from 'phosphor-react-native';
import { Image, KeyboardAvoidingView, Platform, Pressable, Text, View } from 'react-native';

24
apps/storybook-solid/.gitignore vendored Normal file
View file

@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

View file

@ -0,0 +1,37 @@
import type { StorybookConfig } from 'storybook-solidjs-vite';
const config: StorybookConfig = {
stories: [
{
directory: '../../../packages/ui-solid/src/**',
titlePrefix: 'UI',
files: '*.stories.*'
}
// {
// directory: '../../../interface-solid/app/**',
// titlePrefix: 'Interface',
// files: '*.stories.*'
// }
],
addons: [
'@storybook/addon-links',
'@storybook/addon-essentials',
'@storybook/addon-interactions',
{
name: '@storybook/addon-styling',
options: {
// Check out https://github.com/storybookjs/addon-styling/blob/main/docs/api.md
// For more details on this addon's options.
postCss: true
}
}
],
framework: {
name: 'storybook-solidjs-vite',
options: {}
},
docs: {
autodocs: 'tag'
}
};
export default config;

View file

@ -0,0 +1,3 @@
<script>
window.global = window;
</script>

View file

@ -0,0 +1,12 @@
import '@sd/ui/style/style.scss';
/** Autogenerated by Storybook */
export const parameters = {
actions: { argTypesRegex: '^on[A-Z].*' },
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/
}
}
};

View file

@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + React + TS</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>

View file

@ -0,0 +1,30 @@
{
"name": "@sd/storybook",
"private": true,
"scripts": {
"dev": "storybook dev -p 6006",
"build-storybook": "storybook build"
},
"dependencies": {
"@storybook/addon-essentials": "^7.6.6",
"@storybook/addon-interactions": "^7.6.6",
"@storybook/addon-links": "^7.6.6",
"@storybook/blocks": "^7.6.6",
"@storybook/testing-library": "^0.2.2",
"solid-js": "^1.8.7",
"storybook": "^7.6.6",
"storybook-solidjs": "^1.0.0-beta.2",
"eslint-plugin-storybook": "^0.6.15",
"storybook-solidjs-vite": "^1.0.0-beta.2"
},
"devDependencies": {
"@sd/config": "workspace:*",
"@sd/ui": "workspace:*",
"autoprefixer": "^10.4.16",
"postcss": "^8.4.31",
"postcss-pseudo-companion-classes": "^0.1.1",
"tailwindcss": "^3.3.5",
"typescript": "^5.2.2",
"vite": "^4.5.0"
}
}

View file

@ -0,0 +1,10 @@
module.exports = {
plugins: {
'tailwindcss': {},
'autoprefixer': {},
'postcss-pseudo-companion-classes': {
prefix: 'sb-pseudo--',
restrictTo: [':hover', ':focus']
}
}
};

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1 @@
module.exports = require('@sd/ui/tailwind')('web');

View file

@ -0,0 +1,20 @@
{
"compilerOptions": {
"target": "ESNext",
"useDefineForClassFields": true,
"lib": ["DOM", "DOM.Iterable", "ESNext"],
"allowJs": false,
"skipLibCheck": true,
"esModuleInterop": false,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "ESNext",
"moduleResolution": "Node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve",
"jsxImportSource": "solid-js"
}
}

View file

@ -0,0 +1,4 @@
import baseConfig from '../../packages/config/vite-solid';
// https://vitejs.dev/config/
export default baseConfig;

View file

@ -1,4 +1,4 @@
import { getLayeredIcon } from '@sd/assets/util';
import { getLayeredIcon } from '@sd/assets/react/util';
import clsx from 'clsx';
import { forwardRef, type ImgHTMLAttributes } from 'react';
import { type ObjectKindKey } from '@sd/client';

View file

@ -1,7 +1,6 @@
import { getIcon, iconNames } from '@sd/assets/util';
import { getIcon, iconNames } from '@sd/assets/react/util';
import clsx from 'clsx';
import {
memo,
SyntheticEvent,
useEffect,
useMemo,

View file

@ -1,4 +1,4 @@
import { getIcon, getIconByName } from '@sd/assets/util';
import { getIcon, getIconByName } from '@sd/assets/react/util';
import clsx from 'clsx';
import {
forwardRef,
@ -155,7 +155,7 @@ export const FileThumb = forwardRef<HTMLImageElement, ThumbProps>((props, ref) =
? [
'min-h-full min-w-full object-cover object-center',
_childClassName
]
]
: className,
props.frame && !(itemData.kind === 'Video' && props.blackBars)
? frameClassName

View file

@ -1,5 +1,5 @@
import { DotsThreeVertical, Eye, Pause, Play, Stop, Trash } from '@phosphor-icons/react';
import { Folder } from '@sd/assets/icons';
import { Folder } from '@sd/assets/react/icons';
import { useQueryClient } from '@tanstack/react-query';
import clsx from 'clsx';
import dayjs from 'dayjs';

View file

@ -1,5 +1,5 @@
import { CaretRight, FunnelSimple, Icon, Plus } from '@phosphor-icons/react';
import { IconTypes } from '@sd/assets/util';
import { IconTypes } from '@sd/assets/react/util';
import clsx from 'clsx';
import { memo, PropsWithChildren, useDeferredValue, useState } from 'react';
import { useLibraryMutation } from '@sd/client';

View file

@ -1,5 +1,5 @@
import { CircleDashed, Folder, Icon, Tag } from '@phosphor-icons/react';
import { IconTypes } from '@sd/assets/util';
import { IconTypes } from '@sd/assets/react/util';
import clsx from 'clsx';
import { Icon as SDIcon } from '~/components';

View file

@ -1,6 +1,6 @@
import { ArrowLeft, ArrowRight, Info } from '@phosphor-icons/react';
import * as Dialog from '@radix-ui/react-dialog';
import { iconNames } from '@sd/assets/util';
import { iconNames } from '@sd/assets/react/util';
import clsx from 'clsx';
import { memo, Suspense, useDeferredValue, useMemo } from 'react';
import { useLocation } from 'react-router';

View file

@ -1,5 +1,5 @@
import { MagnifyingGlass } from '@phosphor-icons/react';
import { getIcon, iconNames } from '@sd/assets/util';
import { getIcon, iconNames } from '@sd/assets/react/util';
import { useMemo } from 'react';
import {
FilePathOrder,

View file

@ -1,5 +1,5 @@
import { Envelope, User } from '@phosphor-icons/react';
import { iconNames } from '@sd/assets/util';
import { iconNames } from '@sd/assets/react/util';
import { auth, useBridgeQuery } from '@sd/client';
import { Button, Card } from '@sd/ui';
import { Icon, TruncatedText } from '~/components';

View file

@ -1,4 +1,4 @@
import { iconNames } from '@sd/assets/util';
import { iconNames } from '@sd/assets/react/util';
import { memo, useEffect, useMemo, useState } from 'react';
import { byteSize, useDiscoveredPeers, useLibraryQuery, useNodes } from '@sd/client';
import { Card } from '@sd/ui';

View file

@ -1,5 +1,5 @@
import { Globe } from '@phosphor-icons/react';
import { AppLogo } from '@sd/assets/images';
import { AppLogo } from '@sd/assets/react/images';
import { Discord, Github } from '@sd/assets/svgs/brands';
import { useBridgeQuery, useDebugStateEnabler } from '@sd/client';
import { Button, Divider } from '@sd/ui';

View file

@ -1,4 +1,4 @@
import { BloomOne } from '@sd/assets/images';
import { BloomOne } from '@sd/assets/react/images';
import clsx from 'clsx';
import { Navigate, Outlet } from 'react-router';
import { useDebugState } from '@sd/client';

View file

@ -1,5 +1,5 @@
import { AlphaBg, AlphaBg_Light, AppLogo } from '@sd/assets/images';
import { Discord } from '@sd/assets/svgs/brands';
import { AlphaBg, AlphaBg_Light, AppLogo } from '@sd/assets/react/images';
import { Discord } from '@sd/assets/react/svgs/brands';
import { Button, ButtonLink } from '@sd/ui';
import { useIsDark } from '~/hooks';
import { usePlatform } from '~/util/Platform';

View file

@ -1,4 +1,4 @@
import { Fda } from '@sd/assets/videos';
import { fda } from '@sd/assets/react/videos';
import { useNavigate } from 'react-router';
import { Button } from '@sd/ui';
import { Icon } from '~/components';
@ -19,7 +19,7 @@ export const FullDisk = () => {
files. Your files are only available to you.
</OnboardingDescription>
<div className="mt-5 w-full max-w-[450px]">
<video className="rounded-md" autoPlay loop muted controls={false} src={Fda} />
<video className="rounded-md" autoPlay loop muted controls={false} src={fda} />
</div>
<div className="flex items-center gap-3">
<Button onClick={requestFdaMacos} variant="gray" size="sm" className="my-5">

View file

@ -1,4 +1,4 @@
import { AppLogo } from '@sd/assets/images';
import { AppLogo } from '@sd/assets/react/images';
import { useNavigate } from 'react-router';
import { auth, useBridgeQuery } from '@sd/client';
import { Button, ButtonLink, Loader } from '@sd/ui';

View file

@ -3,7 +3,7 @@ import {
Database_Light,
Folder as Folder_Dark,
Folder_Light
} from '@sd/assets/icons';
} from '@sd/assets/react/icons';
import { useIsDark } from '~/hooks';
interface Props {

View file

@ -1,4 +1,4 @@
import { getIcon, iconNames } from '@sd/assets/util';
import { getIcon, iconNames } from '@sd/assets/react/util';
import { ImgHTMLAttributes } from 'react';
import { useIsDark } from '~/hooks';

View file

@ -1,346 +0,0 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
import Album_Light from './Album_Light.png';
import Album20 from './Album-20.png';
import Album from './Album.png';
import Alias_Light from './Alias_Light.png';
import Alias20 from './Alias-20.png';
import Alias from './Alias.png';
import AmazonS3 from './AmazonS3.png';
import Application_Light from './Application_Light.png';
import Application from './Application.png';
import Archive_Light from './Archive_Light.png';
import Archive20 from './Archive-20.png';
import Archive from './Archive.png';
import Audio_Light from './Audio_Light.png';
import Audio20 from './Audio-20.png';
import Audio from './Audio.png';
import BackBlaze from './BackBlaze.png';
import Ball from './Ball.png';
import Book_Light from './Book_Light.png';
import Book20 from './Book-20.png';
import Book from './Book.png';
import BookBlue from './BookBlue.png';
import Box from './Box.png';
import Code20 from './Code-20.png';
import Collection_Light from './Collection_Light.png';
import Collection20 from './Collection-20.png';
import Collection from './Collection.png';
import Config20 from './Config-20.png';
import Database_Light from './Database_Light.png';
import Database20 from './Database-20.png';
import Database from './Database.png';
import DAV from './DAV.png';
import DeleteLocation from './DeleteLocation.png';
import Document_doc_Light from './Document_doc_Light.png';
import Document_doc from './Document_doc.png';
import Document_Light from './Document_Light.png';
import Document_pdf_Light from './Document_pdf_Light.png';
import Document_pdf from './Document_pdf.png';
import Document_xls_Light from './Document_xls_Light.png';
import Document_xls from './Document_xls.png';
import Document20 from './Document-20.png';
import Document from './Document.png';
import Dotfile20 from './Dotfile-20.png';
import Drive_Light from './Drive_Light.png';
import DriveAmazonS3_Light from './Drive-AmazonS3_Light.png';
import DriveAmazonS3 from './Drive-AmazonS3.png';
import DriveBackBlaze_Light from './Drive-BackBlaze_Light.png';
import DriveBackBlaze from './Drive-BackBlaze.png';
import Drivebox_Light from './Drive-box_Light.png';
import DriveBox from './Drive-Box.png';
import DriveDarker from './Drive-Darker.png';
import DriveDAV_Light from './Drive-DAV_Light.png';
import DriveDAV from './Drive-DAV.png';
import DriveDropbox_Light from './Drive-Dropbox_Light.png';
import DriveDropbox from './Drive-Dropbox.png';
import DriveGoogleDrive_Light from './Drive-GoogleDrive_Light.png';
import DriveGoogleDrive from './Drive-GoogleDrive.png';
import DriveMega_Light from './Drive-Mega_Light.png';
import DriveMega from './Drive-Mega.png';
import DriveOneDrive_Light from './Drive-OneDrive_Light.png';
import DriveOneDrive from './Drive-OneDrive.png';
import DriveOpenStack_Light from './Drive-OpenStack_Light.png';
import DriveOpenStack from './Drive-OpenStack.png';
import DrivePCloud_Light from './Drive-PCloud_Light.png';
import DrivePCloud from './Drive-PCloud.png';
import Drive from './Drive.png';
import Dropbox from './Dropbox.png';
import Encrypted_Light from './Encrypted_Light.png';
import Encrypted20 from './Encrypted-20.png';
import Encrypted from './Encrypted.png';
import Entity_Light from './Entity_Light.png';
import Entity from './Entity.png';
import Executable_Light_old from './Executable_Light_old.png';
import Executable_Light from './Executable_Light.png';
import Executable_old from './Executable_old.png';
import Executable20 from './Executable-20.png';
import Executable from './Executable.png';
import Face_Light from './Face_Light.png';
import Folder_Light from './Folder_Light.png';
import Folder20 from './Folder-20.png';
import Folder from './Folder.png';
import FolderGrey_Light from './FolderGrey_Light.png';
import FolderGrey from './FolderGrey.png';
import FolderNoSpace_Light from './FolderNoSpace_Light.png';
import FolderNoSpace from './FolderNoSpace.png';
import Font20 from './Font-20.png';
import Game_Light from './Game_Light.png';
import Game from './Game.png';
import Globe_Light from './Globe_Light.png';
import Globe from './Globe.png';
import GlobeAlt from './GlobeAlt.png';
import GoogleDrive from './GoogleDrive.png';
import HDD_Light from './HDD_Light.png';
import HDD from './HDD.png';
import Heart_Light from './Heart_Light.png';
import Heart from './Heart.png';
import Home_Light from './Home_Light.png';
import Home from './Home.png';
import Image_Light from './Image_Light.png';
import Image20 from './Image-20.png';
import Image from './Image.png';
import Key_Light from './Key_Light.png';
import Key20 from './Key-20.png';
import Key from './Key.png';
import Keys_Light from './Keys_Light.png';
import Keys from './Keys.png';
import Laptop_Light from './Laptop_Light.png';
import Laptop from './Laptop.png';
import Link_Light from './Link_Light.png';
import Link20 from './Link-20.png';
import Link from './Link.png';
import Lock_Light from './Lock_Light.png';
import Lock from './Lock.png';
import Mega from './Mega.png';
import Mesh_Light from './Mesh_Light.png';
import Mesh20 from './Mesh-20.png';
import Mesh from './Mesh.png';
import Mobile_Light from './Mobile_Light.png';
import Mobile from './Mobile.png';
import MoveLocation_Light from './MoveLocation_Light.png';
import MoveLocation from './MoveLocation.png';
import Movie_Light from './Movie_Light.png';
import Movie from './Movie.png';
import NewLocation from './NewLocation.png';
import Node_Light from './Node_Light.png';
import Node from './Node.png';
import OneDrive from './OneDrive.png';
import OpenStack from './OpenStack.png';
import Package_Light from './Package_Light.png';
import Package20 from './Package-20.png';
import Package from './Package.png';
import PCloud from './PCloud.png';
import Scrapbook_Light from './Scrapbook_Light.png';
import Scrapbook from './Scrapbook.png';
import Screenshot_Light from './Screenshot_Light.png';
import Screenshot20 from './Screenshot-20.png';
import Screenshot from './Screenshot.png';
import ScreenshotAlt from './ScreenshotAlt.png';
import SD_Light from './SD_Light.png';
import SD from './SD.png';
import Server_Light from './Server_Light.png';
import Server from './Server.png';
import Spacedrop1 from './Spacedrop-1.png';
import Spacedrop from './Spacedrop.png';
import Tablet_Light from './Tablet_Light.png';
import Tablet from './Tablet.png';
import Tags_Light from './Tags_Light.png';
import Tags from './Tags.png';
import Terminal_Light from './Terminal_Light.png';
import Terminal from './Terminal.png';
import Text_Light from './Text_Light.png';
import Text_txt from './Text_txt.png';
import Text20 from './Text-20.png';
import Text from './Text.png';
import TextAlt_Light from './TextAlt_Light.png';
import TextAlt from './TextAlt.png';
import TexturedMesh_Light from './TexturedMesh_Light.png';
import TexturedMesh from './TexturedMesh.png';
import Trash_Light from './Trash_Light.png';
import Trash from './Trash.png';
import Undefined_Light from './Undefined_Light.png';
import Undefined from './Undefined.png';
import Unknown20 from './Unknown-20.png';
import Video_Light from './Video_Light.png';
import Video20 from './Video-20.png';
import Video from './Video.png';
import WebPageArchive20 from './WebPageArchive-20.png';
import Widget_Light from './Widget_Light.png';
import Widget20 from './Widget-20.png';
import Widget from './Widget.png';
export {
Album20,
Album,
Album_Light,
Alias20,
Alias,
Alias_Light,
AmazonS3,
Application,
Application_Light,
Archive20,
Archive,
Archive_Light,
Audio20,
Audio,
Audio_Light,
BackBlaze,
Ball,
Book20,
Book,
BookBlue,
Book_Light,
Box,
Code20,
Collection20,
Collection,
Collection_Light,
Config20,
DAV,
Database20,
Database,
Database_Light,
DeleteLocation,
Document20,
Document,
Document_Light,
Document_doc,
Document_doc_Light,
Document_pdf,
Document_pdf_Light,
Document_xls,
Document_xls_Light,
Dotfile20,
DriveAmazonS3,
DriveAmazonS3_Light,
DriveBackBlaze,
DriveBackBlaze_Light,
DriveBox,
DriveDAV,
DriveDAV_Light,
DriveDarker,
DriveDropbox,
DriveDropbox_Light,
DriveGoogleDrive,
DriveGoogleDrive_Light,
DriveMega,
DriveMega_Light,
DriveOneDrive,
DriveOneDrive_Light,
DriveOpenStack,
DriveOpenStack_Light,
DrivePCloud,
DrivePCloud_Light,
Drivebox_Light,
Drive,
Drive_Light,
Dropbox,
Encrypted20,
Encrypted,
Encrypted_Light,
Entity,
Entity_Light,
Executable20,
Executable,
Executable_Light,
Executable_Light_old,
Executable_old,
Face_Light,
Folder20,
Folder,
FolderGrey,
FolderGrey_Light,
FolderNoSpace,
FolderNoSpace_Light,
Folder_Light,
Font20,
Game,
Game_Light,
Globe,
GlobeAlt,
Globe_Light,
GoogleDrive,
HDD,
HDD_Light,
Heart,
Heart_Light,
Home,
Home_Light,
Image20,
Image,
Image_Light,
Key20,
Key,
Key_Light,
Keys,
Keys_Light,
Laptop,
Laptop_Light,
Link20,
Link,
Link_Light,
Lock,
Lock_Light,
Mega,
Mesh20,
Mesh,
Mesh_Light,
Mobile,
Mobile_Light,
MoveLocation,
MoveLocation_Light,
Movie,
Movie_Light,
NewLocation,
Node,
Node_Light,
OneDrive,
OpenStack,
PCloud,
Package20,
Package,
Package_Light,
SD,
SD_Light,
Scrapbook,
Scrapbook_Light,
Screenshot20,
Screenshot,
ScreenshotAlt,
Screenshot_Light,
Server,
Server_Light,
Spacedrop1,
Spacedrop,
Tablet,
Tablet_Light,
Tags,
Tags_Light,
Terminal,
Terminal_Light,
Text20,
Text,
TextAlt,
TextAlt_Light,
Text_Light,
Text_txt,
TexturedMesh,
TexturedMesh_Light,
Trash,
Trash_Light,
Undefined,
Undefined_Light,
Unknown20,
Video20,
Video,
Video_Light,
WebPageArchive20,
Widget20,
Widget,
Widget_Light
};

View file

@ -1,30 +0,0 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
import AlphaBg_Light from './AlphaBg_Light.png';
import AlphaBg from './AlphaBg.png';
import AppLogo from './AppLogo.png';
import Ball from './Ball.png';
import BloomOne from './BloomOne.png';
import BloomThree from './BloomThree.png';
import BloomTwo from './BloomTwo.png';
import Dropbox from './Dropbox.png';
import GoogleDrive from './GoogleDrive.png';
import iCloud from './iCloud.png';
import Mega from './Mega.png';
export {
AlphaBg,
AlphaBg_Light,
AppLogo,
Ball,
BloomOne,
BloomThree,
BloomTwo,
Dropbox,
GoogleDrive,
Mega,
iCloud
};

View file

@ -3,8 +3,13 @@
"version": "1.0.0",
"license": "GPL-3.0-only",
"private": true,
"type": "module",
"sideEffects": false,
"scripts": {
"gen": "node ./scripts/generate.mjs"
},
"exports": {
"./react/*": "./react/*/index.ts",
"./svgs/*": "./svgs/*"
}
}

View file

@ -0,0 +1,174 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
export { default as Album20 } from '../../icons/Album-20.png';
export { default as Album } from '../../icons/Album.png';
export { default as Album_Light } from '../../icons/Album_Light.png';
export { default as Alias20 } from '../../icons/Alias-20.png';
export { default as Alias } from '../../icons/Alias.png';
export { default as Alias_Light } from '../../icons/Alias_Light.png';
export { default as AmazonS3 } from '../../icons/AmazonS3.png';
export { default as Application } from '../../icons/Application.png';
export { default as Application_Light } from '../../icons/Application_Light.png';
export { default as Archive20 } from '../../icons/Archive-20.png';
export { default as Archive } from '../../icons/Archive.png';
export { default as Archive_Light } from '../../icons/Archive_Light.png';
export { default as Audio20 } from '../../icons/Audio-20.png';
export { default as Audio } from '../../icons/Audio.png';
export { default as Audio_Light } from '../../icons/Audio_Light.png';
export { default as BackBlaze } from '../../icons/BackBlaze.png';
export { default as Ball } from '../../icons/Ball.png';
export { default as Book20 } from '../../icons/Book-20.png';
export { default as Book } from '../../icons/Book.png';
export { default as BookBlue } from '../../icons/BookBlue.png';
export { default as Book_Light } from '../../icons/Book_Light.png';
export { default as Box } from '../../icons/Box.png';
export { default as Code20 } from '../../icons/Code-20.png';
export { default as Collection20 } from '../../icons/Collection-20.png';
export { default as Collection } from '../../icons/Collection.png';
export { default as Collection_Light } from '../../icons/Collection_Light.png';
export { default as Config20 } from '../../icons/Config-20.png';
export { default as DAV } from '../../icons/DAV.png';
export { default as Database20 } from '../../icons/Database-20.png';
export { default as Database } from '../../icons/Database.png';
export { default as Database_Light } from '../../icons/Database_Light.png';
export { default as DeleteLocation } from '../../icons/DeleteLocation.png';
export { default as Document20 } from '../../icons/Document-20.png';
export { default as Document } from '../../icons/Document.png';
export { default as Document_Light } from '../../icons/Document_Light.png';
export { default as Document_doc } from '../../icons/Document_doc.png';
export { default as Document_doc_Light } from '../../icons/Document_doc_Light.png';
export { default as Document_pdf } from '../../icons/Document_pdf.png';
export { default as Document_pdf_Light } from '../../icons/Document_pdf_Light.png';
export { default as Document_xls } from '../../icons/Document_xls.png';
export { default as Document_xls_Light } from '../../icons/Document_xls_Light.png';
export { default as Dotfile20 } from '../../icons/Dotfile-20.png';
export { default as DriveAmazonS3 } from '../../icons/Drive-AmazonS3.png';
export { default as DriveAmazonS3_Light } from '../../icons/Drive-AmazonS3_Light.png';
export { default as DriveBackBlaze } from '../../icons/Drive-BackBlaze.png';
export { default as DriveBackBlaze_Light } from '../../icons/Drive-BackBlaze_Light.png';
export { default as DriveBox } from '../../icons/Drive-Box.png';
export { default as DriveDAV } from '../../icons/Drive-DAV.png';
export { default as DriveDAV_Light } from '../../icons/Drive-DAV_Light.png';
export { default as DriveDarker } from '../../icons/Drive-Darker.png';
export { default as DriveDropbox } from '../../icons/Drive-Dropbox.png';
export { default as DriveDropbox_Light } from '../../icons/Drive-Dropbox_Light.png';
export { default as DriveGoogleDrive } from '../../icons/Drive-GoogleDrive.png';
export { default as DriveGoogleDrive_Light } from '../../icons/Drive-GoogleDrive_Light.png';
export { default as DriveMega } from '../../icons/Drive-Mega.png';
export { default as DriveMega_Light } from '../../icons/Drive-Mega_Light.png';
export { default as DriveOneDrive } from '../../icons/Drive-OneDrive.png';
export { default as DriveOneDrive_Light } from '../../icons/Drive-OneDrive_Light.png';
export { default as DriveOpenStack } from '../../icons/Drive-OpenStack.png';
export { default as DriveOpenStack_Light } from '../../icons/Drive-OpenStack_Light.png';
export { default as DrivePCloud } from '../../icons/Drive-PCloud.png';
export { default as DrivePCloud_Light } from '../../icons/Drive-PCloud_Light.png';
export { default as Drivebox_Light } from '../../icons/Drive-box_Light.png';
export { default as Drive } from '../../icons/Drive.png';
export { default as Drive_Light } from '../../icons/Drive_Light.png';
export { default as Dropbox } from '../../icons/Dropbox.png';
export { default as Encrypted20 } from '../../icons/Encrypted-20.png';
export { default as Encrypted } from '../../icons/Encrypted.png';
export { default as Encrypted_Light } from '../../icons/Encrypted_Light.png';
export { default as Entity } from '../../icons/Entity.png';
export { default as Entity_Light } from '../../icons/Entity_Light.png';
export { default as Executable20 } from '../../icons/Executable-20.png';
export { default as Executable } from '../../icons/Executable.png';
export { default as Executable_Light } from '../../icons/Executable_Light.png';
export { default as Executable_Light_old } from '../../icons/Executable_Light_old.png';
export { default as Executable_old } from '../../icons/Executable_old.png';
export { default as Face_Light } from '../../icons/Face_Light.png';
export { default as Folder20 } from '../../icons/Folder-20.png';
export { default as Folder } from '../../icons/Folder.png';
export { default as FolderGrey } from '../../icons/FolderGrey.png';
export { default as FolderGrey_Light } from '../../icons/FolderGrey_Light.png';
export { default as FolderNoSpace } from '../../icons/FolderNoSpace.png';
export { default as FolderNoSpace_Light } from '../../icons/FolderNoSpace_Light.png';
export { default as Folder_Light } from '../../icons/Folder_Light.png';
export { default as Font20 } from '../../icons/Font-20.png';
export { default as Game } from '../../icons/Game.png';
export { default as Game_Light } from '../../icons/Game_Light.png';
export { default as Globe } from '../../icons/Globe.png';
export { default as GlobeAlt } from '../../icons/GlobeAlt.png';
export { default as Globe_Light } from '../../icons/Globe_Light.png';
export { default as GoogleDrive } from '../../icons/GoogleDrive.png';
export { default as HDD } from '../../icons/HDD.png';
export { default as HDD_Light } from '../../icons/HDD_Light.png';
export { default as Heart } from '../../icons/Heart.png';
export { default as Heart_Light } from '../../icons/Heart_Light.png';
export { default as Home } from '../../icons/Home.png';
export { default as Home_Light } from '../../icons/Home_Light.png';
export { default as Image20 } from '../../icons/Image-20.png';
export { default as Image } from '../../icons/Image.png';
export { default as Image_Light } from '../../icons/Image_Light.png';
export { default as Key20 } from '../../icons/Key-20.png';
export { default as Key } from '../../icons/Key.png';
export { default as Key_Light } from '../../icons/Key_Light.png';
export { default as Keys } from '../../icons/Keys.png';
export { default as Keys_Light } from '../../icons/Keys_Light.png';
export { default as Laptop } from '../../icons/Laptop.png';
export { default as Laptop_Light } from '../../icons/Laptop_Light.png';
export { default as Link20 } from '../../icons/Link-20.png';
export { default as Link } from '../../icons/Link.png';
export { default as Link_Light } from '../../icons/Link_Light.png';
export { default as Lock } from '../../icons/Lock.png';
export { default as Lock_Light } from '../../icons/Lock_Light.png';
export { default as Mega } from '../../icons/Mega.png';
export { default as Mesh20 } from '../../icons/Mesh-20.png';
export { default as Mesh } from '../../icons/Mesh.png';
export { default as Mesh_Light } from '../../icons/Mesh_Light.png';
export { default as Mobile } from '../../icons/Mobile.png';
export { default as Mobile_Light } from '../../icons/Mobile_Light.png';
export { default as MoveLocation } from '../../icons/MoveLocation.png';
export { default as MoveLocation_Light } from '../../icons/MoveLocation_Light.png';
export { default as Movie } from '../../icons/Movie.png';
export { default as Movie_Light } from '../../icons/Movie_Light.png';
export { default as NewLocation } from '../../icons/NewLocation.png';
export { default as Node } from '../../icons/Node.png';
export { default as Node_Light } from '../../icons/Node_Light.png';
export { default as OneDrive } from '../../icons/OneDrive.png';
export { default as OpenStack } from '../../icons/OpenStack.png';
export { default as PCloud } from '../../icons/PCloud.png';
export { default as Package20 } from '../../icons/Package-20.png';
export { default as Package } from '../../icons/Package.png';
export { default as Package_Light } from '../../icons/Package_Light.png';
export { default as SD } from '../../icons/SD.png';
export { default as SD_Light } from '../../icons/SD_Light.png';
export { default as Scrapbook } from '../../icons/Scrapbook.png';
export { default as Scrapbook_Light } from '../../icons/Scrapbook_Light.png';
export { default as Screenshot20 } from '../../icons/Screenshot-20.png';
export { default as Screenshot } from '../../icons/Screenshot.png';
export { default as ScreenshotAlt } from '../../icons/ScreenshotAlt.png';
export { default as Screenshot_Light } from '../../icons/Screenshot_Light.png';
export { default as Server } from '../../icons/Server.png';
export { default as Server_Light } from '../../icons/Server_Light.png';
export { default as Spacedrop1 } from '../../icons/Spacedrop-1.png';
export { default as Spacedrop } from '../../icons/Spacedrop.png';
export { default as Tablet } from '../../icons/Tablet.png';
export { default as Tablet_Light } from '../../icons/Tablet_Light.png';
export { default as Tags } from '../../icons/Tags.png';
export { default as Tags_Light } from '../../icons/Tags_Light.png';
export { default as Terminal } from '../../icons/Terminal.png';
export { default as Terminal_Light } from '../../icons/Terminal_Light.png';
export { default as Text20 } from '../../icons/Text-20.png';
export { default as Text } from '../../icons/Text.png';
export { default as TextAlt } from '../../icons/TextAlt.png';
export { default as TextAlt_Light } from '../../icons/TextAlt_Light.png';
export { default as Text_Light } from '../../icons/Text_Light.png';
export { default as Text_txt } from '../../icons/Text_txt.png';
export { default as TexturedMesh } from '../../icons/TexturedMesh.png';
export { default as TexturedMesh_Light } from '../../icons/TexturedMesh_Light.png';
export { default as Trash } from '../../icons/Trash.png';
export { default as Trash_Light } from '../../icons/Trash_Light.png';
export { default as Undefined } from '../../icons/Undefined.png';
export { default as Undefined_Light } from '../../icons/Undefined_Light.png';
export { default as Unknown20 } from '../../icons/Unknown-20.png';
export { default as Video20 } from '../../icons/Video-20.png';
export { default as Video } from '../../icons/Video.png';
export { default as Video_Light } from '../../icons/Video_Light.png';
export { default as WebPageArchive20 } from '../../icons/WebPageArchive-20.png';
export { default as Widget20 } from '../../icons/Widget-20.png';
export { default as Widget } from '../../icons/Widget.png';
export { default as Widget_Light } from '../../icons/Widget_Light.png';

View file

@ -0,0 +1,16 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
export { default as AlphaBg } from '../../images/AlphaBg.png';
export { default as AlphaBg_Light } from '../../images/AlphaBg_Light.png';
export { default as AppLogo } from '../../images/AppLogo.png';
export { default as Ball } from '../../images/Ball.png';
export { default as BloomOne } from '../../images/BloomOne.png';
export { default as BloomThree } from '../../images/BloomThree.png';
export { default as BloomTwo } from '../../images/BloomTwo.png';
export { default as Dropbox } from '../../images/Dropbox.png';
export { default as GoogleDrive } from '../../images/GoogleDrive.png';
export { default as Mega } from '../../images/Mega.png';
export { default as iCloud } from '../../images/iCloud.png';

View file

@ -0,0 +1,16 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
export { ReactComponent as Academia } from '../../../svgs/brands/Academia.svg';
export { ReactComponent as Apple } from '../../../svgs/brands/Apple.svg';
export { ReactComponent as Discord } from '../../../svgs/brands/Discord.svg';
export { ReactComponent as Docker } from '../../../svgs/brands/Docker.svg';
export { ReactComponent as Dribbble } from '../../../svgs/brands/Dribbble.svg';
export { ReactComponent as Github } from '../../../svgs/brands/Github.svg';
export { ReactComponent as Gitlab } from '../../../svgs/brands/Gitlab.svg';
export { ReactComponent as Instagram } from '../../../svgs/brands/Instagram.svg';
export { ReactComponent as Opencollective } from '../../../svgs/brands/Opencollective.svg';
export { ReactComponent as Twitch } from '../../../svgs/brands/Twitch.svg';
export { ReactComponent as Twitter } from '../../../svgs/brands/Twitter.svg';

View file

@ -0,0 +1,22 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
export { ReactComponent as angular } from '../../../../svgs/ext/Code/angular.svg';
export { ReactComponent as bun } from '../../../../svgs/ext/Code/bun.svg';
export { ReactComponent as c } from '../../../../svgs/ext/Code/c.svg';
export { ReactComponent as cmake } from '../../../../svgs/ext/Code/cmake.svg';
export { ReactComponent as cpp } from '../../../../svgs/ext/Code/cpp.svg';
export { ReactComponent as csharp } from '../../../../svgs/ext/Code/csharp.svg';
export { ReactComponent as css } from '../../../../svgs/ext/Code/css.svg';
export { ReactComponent as dartlang } from '../../../../svgs/ext/Code/dartlang.svg';
export { ReactComponent as go } from '../../../../svgs/ext/Code/go.svg';
export { ReactComponent as html } from '../../../../svgs/ext/Code/html.svg';
export { ReactComponent as java } from '../../../../svgs/ext/Code/java.svg';
export { ReactComponent as js } from '../../../../svgs/ext/Code/js.svg';
export { ReactComponent as kotlin } from '../../../../svgs/ext/Code/kotlin.svg';
export { ReactComponent as php } from '../../../../svgs/ext/Code/php.svg';
export { ReactComponent as py } from '../../../../svgs/ext/Code/py.svg';
export { ReactComponent as ts } from '../../../../svgs/ext/Code/ts.svg';
export { ReactComponent as vue } from '../../../../svgs/ext/Code/vue.svg';

View file

@ -0,0 +1,289 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
export { ReactComponent as ace } from '../../../../svgs/ext/Extras/ace.svg';
export { ReactComponent as acemanifest } from '../../../../svgs/ext/Extras/acemanifest.svg';
export { ReactComponent as adoc } from '../../../../svgs/ext/Extras/adoc.svg';
export { ReactComponent as adonis } from '../../../../svgs/ext/Extras/adonis.svg';
export { ReactComponent as adonisconfig } from '../../../../svgs/ext/Extras/adonisconfig.svg';
export { ReactComponent as afdesign } from '../../../../svgs/ext/Extras/afdesign.svg';
export { ReactComponent as afphoto } from '../../../../svgs/ext/Extras/afphoto.svg';
export { ReactComponent as afpub } from '../../../../svgs/ext/Extras/afpub.svg';
export { ReactComponent as ai } from '../../../../svgs/ext/Extras/ai.svg';
export { ReactComponent as air } from '../../../../svgs/ext/Extras/air.svg';
export { ReactComponent as anim } from '../../../../svgs/ext/Extras/anim.svg';
export { ReactComponent as astro } from '../../../../svgs/ext/Extras/astro.svg';
export { ReactComponent as astroconfig } from '../../../../svgs/ext/Extras/astroconfig.svg';
export { ReactComponent as atomizer } from '../../../../svgs/ext/Extras/atomizer.svg';
export { ReactComponent as azure } from '../../../../svgs/ext/Extras/azure.svg';
export { ReactComponent as babel } from '../../../../svgs/ext/Extras/babel.svg';
export { ReactComponent as bat } from '../../../../svgs/ext/Extras/bat.svg';
export { ReactComponent as bicep } from '../../../../svgs/ext/Extras/bicep.svg';
export { ReactComponent as bicepparam } from '../../../../svgs/ext/Extras/bicepparam.svg';
export { ReactComponent as binary } from '../../../../svgs/ext/Extras/binary.svg';
export { ReactComponent as blade } from '../../../../svgs/ext/Extras/blade.svg';
export { ReactComponent as brotli } from '../../../../svgs/ext/Extras/brotli.svg';
export { ReactComponent as browserslist } from '../../../../svgs/ext/Extras/browserslist.svg';
export { ReactComponent as bsconfig } from '../../../../svgs/ext/Extras/bsconfig.svg';
export { ReactComponent as bundler } from '../../../../svgs/ext/Extras/bundler.svg';
export { ReactComponent as cargo } from '../../../../svgs/ext/Extras/cargo.svg';
export { ReactComponent as cargolock } from '../../../../svgs/ext/Extras/cargolock.svg';
export { ReactComponent as cert } from '../../../../svgs/ext/Extras/cert.svg';
export { ReactComponent as cheader } from '../../../../svgs/ext/Extras/cheader.svg';
export { ReactComponent as civet } from '../../../../svgs/ext/Extras/civet.svg';
export { ReactComponent as cli } from '../../../../svgs/ext/Extras/cli.svg';
export { ReactComponent as clojure } from '../../../../svgs/ext/Extras/clojure.svg';
export { ReactComponent as codeworkspace } from '../../../../svgs/ext/Extras/codeworkspace.svg';
export { ReactComponent as commitlint } from '../../../../svgs/ext/Extras/commitlint.svg';
export { ReactComponent as compodoc } from '../../../../svgs/ext/Extras/compodoc.svg';
export { ReactComponent as composer } from '../../../../svgs/ext/Extras/composer.svg';
export { ReactComponent as composerlock } from '../../../../svgs/ext/Extras/composerlock.svg';
export { ReactComponent as conan } from '../../../../svgs/ext/Extras/conan.svg';
export { ReactComponent as conf } from '../../../../svgs/ext/Extras/conf.svg';
export { ReactComponent as crystal } from '../../../../svgs/ext/Extras/crystal.svg';
export { ReactComponent as cshtml } from '../../../../svgs/ext/Extras/cshtml.svg';
export { ReactComponent as csproj } from '../../../../svgs/ext/Extras/csproj.svg';
export { ReactComponent as cssmap } from '../../../../svgs/ext/Extras/cssmap.svg';
export { ReactComponent as csv } from '../../../../svgs/ext/Extras/csv.svg';
export { ReactComponent as cucumber } from '../../../../svgs/ext/Extras/cucumber.svg';
export { ReactComponent as cypress } from '../../../../svgs/ext/Extras/cypress.svg';
export { ReactComponent as cypressjs } from '../../../../svgs/ext/Extras/cypressjs.svg';
export { ReactComponent as cypressts } from '../../../../svgs/ext/Extras/cypressts.svg';
export { ReactComponent as d } from '../../../../svgs/ext/Extras/d.svg';
export { ReactComponent as diff } from '../../../../svgs/ext/Extras/diff.svg';
export { ReactComponent as docker } from '../../../../svgs/ext/Extras/docker.svg';
export { ReactComponent as dockerdebug } from '../../../../svgs/ext/Extras/dockerdebug.svg';
export { ReactComponent as dockerignore } from '../../../../svgs/ext/Extras/dockerignore.svg';
export { ReactComponent as drawio } from '../../../../svgs/ext/Extras/drawio.svg';
export { ReactComponent as drizzle } from '../../../../svgs/ext/Extras/drizzle.svg';
export { ReactComponent as dsstore } from '../../../../svgs/ext/Extras/dsstore.svg';
export { ReactComponent as dune } from '../../../../svgs/ext/Extras/dune.svg';
export { ReactComponent as duneproject } from '../../../../svgs/ext/Extras/duneproject.svg';
export { ReactComponent as edge } from '../../../../svgs/ext/Extras/edge.svg';
export { ReactComponent as editorconfig } from '../../../../svgs/ext/Extras/editorconfig.svg';
export { ReactComponent as eex } from '../../../../svgs/ext/Extras/eex.svg';
export { ReactComponent as elixir } from '../../../../svgs/ext/Extras/elixir.svg';
export { ReactComponent as elm } from '../../../../svgs/ext/Extras/elm.svg';
export { ReactComponent as env } from '../../../../svgs/ext/Extras/env.svg';
export { ReactComponent as erb } from '../../../../svgs/ext/Extras/erb.svg';
export { ReactComponent as erlang } from '../../../../svgs/ext/Extras/erlang.svg';
export { ReactComponent as esbuild } from '../../../../svgs/ext/Extras/esbuild.svg';
export { ReactComponent as eslint } from '../../../../svgs/ext/Extras/eslint.svg';
export { ReactComponent as exs } from '../../../../svgs/ext/Extras/exs.svg';
export { ReactComponent as exx } from '../../../../svgs/ext/Extras/exx.svg';
export { ReactComponent as farm } from '../../../../svgs/ext/Extras/farm.svg';
export { ReactComponent as figma } from '../../../../svgs/ext/Extras/figma.svg';
export { ReactComponent as flakelock } from '../../../../svgs/ext/Extras/flakelock.svg';
export { ReactComponent as flutter } from '../../../../svgs/ext/Extras/flutter.svg';
export { ReactComponent as flutterlock } from '../../../../svgs/ext/Extras/flutterlock.svg';
export { ReactComponent as flutterpackage } from '../../../../svgs/ext/Extras/flutterpackage.svg';
export { ReactComponent as fonteot } from '../../../../svgs/ext/Extras/fonteot.svg';
export { ReactComponent as fontotf } from '../../../../svgs/ext/Extras/fontotf.svg';
export { ReactComponent as fontttf } from '../../../../svgs/ext/Extras/fontttf.svg';
export { ReactComponent as fontwoff } from '../../../../svgs/ext/Extras/fontwoff.svg';
export { ReactComponent as fontwoff2 } from '../../../../svgs/ext/Extras/fontwoff2.svg';
export { ReactComponent as freemarker } from '../../../../svgs/ext/Extras/freemarker.svg';
export { ReactComponent as fsharp } from '../../../../svgs/ext/Extras/fsharp.svg';
export { ReactComponent as gbl } from '../../../../svgs/ext/Extras/gbl.svg';
export { ReactComponent as git } from '../../../../svgs/ext/Extras/git.svg';
export { ReactComponent as go_package } from '../../../../svgs/ext/Extras/go_package.svg';
export { ReactComponent as godot } from '../../../../svgs/ext/Extras/godot.svg';
export { ReactComponent as gradle } from '../../../../svgs/ext/Extras/gradle.svg';
export { ReactComponent as gradlebat } from '../../../../svgs/ext/Extras/gradlebat.svg';
export { ReactComponent as gradlekotlin } from '../../../../svgs/ext/Extras/gradlekotlin.svg';
export { ReactComponent as grain } from '../../../../svgs/ext/Extras/grain.svg';
export { ReactComponent as graphql } from '../../../../svgs/ext/Extras/graphql.svg';
export { ReactComponent as groovy } from '../../../../svgs/ext/Extras/groovy.svg';
export { ReactComponent as grunt } from '../../../../svgs/ext/Extras/grunt.svg';
export { ReactComponent as gulp } from '../../../../svgs/ext/Extras/gulp.svg';
export { ReactComponent as h } from '../../../../svgs/ext/Extras/h.svg';
export { ReactComponent as haml } from '../../../../svgs/ext/Extras/haml.svg';
export { ReactComponent as handlebars } from '../../../../svgs/ext/Extras/handlebars.svg';
export { ReactComponent as hardhat } from '../../../../svgs/ext/Extras/hardhat.svg';
export { ReactComponent as hashicorp } from '../../../../svgs/ext/Extras/hashicorp.svg';
export { ReactComponent as haskell } from '../../../../svgs/ext/Extras/haskell.svg';
export { ReactComponent as haxe } from '../../../../svgs/ext/Extras/haxe.svg';
export { ReactComponent as haxeml } from '../../../../svgs/ext/Extras/haxeml.svg';
export { ReactComponent as hpp } from '../../../../svgs/ext/Extras/hpp.svg';
export { ReactComponent as htaccess } from '../../../../svgs/ext/Extras/htaccess.svg';
export { ReactComponent as imba } from '../../../../svgs/ext/Extras/imba.svg';
export { ReactComponent as info } from '../../../../svgs/ext/Extras/info.svg';
export { ReactComponent as ipynb } from '../../../../svgs/ext/Extras/ipynb.svg';
export { ReactComponent as jar } from '../../../../svgs/ext/Extras/jar.svg';
export { ReactComponent as jenkins } from '../../../../svgs/ext/Extras/jenkins.svg';
export { ReactComponent as jest } from '../../../../svgs/ext/Extras/jest.svg';
export { ReactComponent as jinja } from '../../../../svgs/ext/Extras/jinja.svg';
export { ReactComponent as jsmap } from '../../../../svgs/ext/Extras/jsmap.svg';
export { ReactComponent as json } from '../../../../svgs/ext/Extras/json.svg';
export { ReactComponent as jsp } from '../../../../svgs/ext/Extras/jsp.svg';
export { ReactComponent as julia } from '../../../../svgs/ext/Extras/julia.svg';
export { ReactComponent as karma } from '../../../../svgs/ext/Extras/karma.svg';
export { ReactComponent as key } from '../../../../svgs/ext/Extras/key.svg';
export { ReactComponent as knex } from '../../../../svgs/ext/Extras/knex.svg';
export { ReactComponent as kotlins } from '../../../../svgs/ext/Extras/kotlins.svg';
export { ReactComponent as krita } from '../../../../svgs/ext/Extras/krita.svg';
export { ReactComponent as latex } from '../../../../svgs/ext/Extras/latex.svg';
export { ReactComponent as launch } from '../../../../svgs/ext/Extras/launch.svg';
export { ReactComponent as less } from '../../../../svgs/ext/Extras/less.svg';
export { ReactComponent as license } from '../../../../svgs/ext/Extras/license.svg';
export { ReactComponent as light_editorconfig } from '../../../../svgs/ext/Extras/light_editorconfig.svg';
export { ReactComponent as liquid } from '../../../../svgs/ext/Extras/liquid.svg';
export { ReactComponent as llvm } from '../../../../svgs/ext/Extras/llvm.svg';
export { ReactComponent as log } from '../../../../svgs/ext/Extras/log.svg';
export { ReactComponent as lua } from '../../../../svgs/ext/Extras/lua.svg';
export { ReactComponent as m } from '../../../../svgs/ext/Extras/m.svg';
export { ReactComponent as makefile } from '../../../../svgs/ext/Extras/makefile.svg';
export { ReactComponent as manifest } from '../../../../svgs/ext/Extras/manifest.svg';
export { ReactComponent as markdown } from '../../../../svgs/ext/Extras/markdown.svg';
export { ReactComponent as markdownx } from '../../../../svgs/ext/Extras/markdownx.svg';
export { ReactComponent as maven } from '../../../../svgs/ext/Extras/maven.svg';
export { ReactComponent as mesh } from '../../../../svgs/ext/Extras/mesh.svg';
export { ReactComponent as mgcb } from '../../../../svgs/ext/Extras/mgcb.svg';
export { ReactComponent as mint } from '../../../../svgs/ext/Extras/mint.svg';
export { ReactComponent as mix } from '../../../../svgs/ext/Extras/mix.svg';
export { ReactComponent as mixlock } from '../../../../svgs/ext/Extras/mixlock.svg';
export { ReactComponent as mjml } from '../../../../svgs/ext/Extras/mjml.svg';
export { ReactComponent as motoko } from '../../../../svgs/ext/Extras/motoko.svg';
export { ReactComponent as mov } from '../../../../svgs/ext/Extras/mov.svg';
export { ReactComponent as mp4 } from '../../../../svgs/ext/Extras/mp4.svg';
export { ReactComponent as mtl } from '../../../../svgs/ext/Extras/mtl.svg';
export { ReactComponent as mustache } from '../../../../svgs/ext/Extras/mustache.svg';
export { ReactComponent as neon } from '../../../../svgs/ext/Extras/neon.svg';
export { ReactComponent as nestjs } from '../../../../svgs/ext/Extras/nestjs.svg';
export { ReactComponent as nestjscontroller } from '../../../../svgs/ext/Extras/nestjscontroller.svg';
export { ReactComponent as nestjsdecorator } from '../../../../svgs/ext/Extras/nestjsdecorator.svg';
export { ReactComponent as nestjsfilter } from '../../../../svgs/ext/Extras/nestjsfilter.svg';
export { ReactComponent as nestjsguard } from '../../../../svgs/ext/Extras/nestjsguard.svg';
export { ReactComponent as nestjsmodule } from '../../../../svgs/ext/Extras/nestjsmodule.svg';
export { ReactComponent as nestjsservice } from '../../../../svgs/ext/Extras/nestjsservice.svg';
export { ReactComponent as netlify } from '../../../../svgs/ext/Extras/netlify.svg';
export { ReactComponent as nextconfig } from '../../../../svgs/ext/Extras/nextconfig.svg';
export { ReactComponent as nextron } from '../../../../svgs/ext/Extras/nextron.svg';
export { ReactComponent as nginx } from '../../../../svgs/ext/Extras/nginx.svg';
export { ReactComponent as nim } from '../../../../svgs/ext/Extras/nim.svg';
export { ReactComponent as nix } from '../../../../svgs/ext/Extras/nix.svg';
export { ReactComponent as njk } from '../../../../svgs/ext/Extras/njk.svg';
export { ReactComponent as nodemon } from '../../../../svgs/ext/Extras/nodemon.svg';
export { ReactComponent as npm } from '../../../../svgs/ext/Extras/npm.svg';
export { ReactComponent as npmlock } from '../../../../svgs/ext/Extras/npmlock.svg';
export { ReactComponent as nuxt } from '../../../../svgs/ext/Extras/nuxt.svg';
export { ReactComponent as nvim } from '../../../../svgs/ext/Extras/nvim.svg';
export { ReactComponent as nvm } from '../../../../svgs/ext/Extras/nvm.svg';
export { ReactComponent as nx } from '../../../../svgs/ext/Extras/nx.svg';
export { ReactComponent as obj } from '../../../../svgs/ext/Extras/obj.svg';
export { ReactComponent as ocaml } from '../../../../svgs/ext/Extras/ocaml.svg';
export { ReactComponent as ocamli } from '../../../../svgs/ext/Extras/ocamli.svg';
export { ReactComponent as ocamll } from '../../../../svgs/ext/Extras/ocamll.svg';
export { ReactComponent as ocamly } from '../../../../svgs/ext/Extras/ocamly.svg';
export { ReactComponent as opengl } from '../../../../svgs/ext/Extras/opengl.svg';
export { ReactComponent as parcel } from '../../../../svgs/ext/Extras/parcel.svg';
export { ReactComponent as perl } from '../../../../svgs/ext/Extras/perl.svg';
export { ReactComponent as perlm } from '../../../../svgs/ext/Extras/perlm.svg';
export { ReactComponent as pfx } from '../../../../svgs/ext/Extras/pfx.svg';
export { ReactComponent as photoshop } from '../../../../svgs/ext/Extras/photoshop.svg';
export { ReactComponent as playright } from '../../../../svgs/ext/Extras/playright.svg';
export { ReactComponent as pnpm } from '../../../../svgs/ext/Extras/pnpm.svg';
export { ReactComponent as pnpmlock } from '../../../../svgs/ext/Extras/pnpmlock.svg';
export { ReactComponent as poetry } from '../../../../svgs/ext/Extras/poetry.svg';
export { ReactComponent as poetrylock } from '../../../../svgs/ext/Extras/poetrylock.svg';
export { ReactComponent as postcssconfig } from '../../../../svgs/ext/Extras/postcssconfig.svg';
export { ReactComponent as powershell } from '../../../../svgs/ext/Extras/powershell.svg';
export { ReactComponent as powershelldata } from '../../../../svgs/ext/Extras/powershelldata.svg';
export { ReactComponent as powershellmodule } from '../../../../svgs/ext/Extras/powershellmodule.svg';
export { ReactComponent as prettier } from '../../../../svgs/ext/Extras/prettier.svg';
export { ReactComponent as prettierignore } from '../../../../svgs/ext/Extras/prettierignore.svg';
export { ReactComponent as prisma } from '../../../../svgs/ext/Extras/prisma.svg';
export { ReactComponent as prolog } from '../../../../svgs/ext/Extras/prolog.svg';
export { ReactComponent as properties } from '../../../../svgs/ext/Extras/properties.svg';
export { ReactComponent as pug } from '../../../../svgs/ext/Extras/pug.svg';
export { ReactComponent as pvk } from '../../../../svgs/ext/Extras/pvk.svg';
export { ReactComponent as pyproject } from '../../../../svgs/ext/Extras/pyproject.svg';
export { ReactComponent as qt } from '../../../../svgs/ext/Extras/qt.svg';
export { ReactComponent as quarkus } from '../../../../svgs/ext/Extras/quarkus.svg';
export { ReactComponent as quasar } from '../../../../svgs/ext/Extras/quasar.svg';
export { ReactComponent as razor } from '../../../../svgs/ext/Extras/razor.svg';
export { ReactComponent as rb } from '../../../../svgs/ext/Extras/rb.svg';
export { ReactComponent as reactjs } from '../../../../svgs/ext/Extras/reactjs.svg';
export { ReactComponent as reactts } from '../../../../svgs/ext/Extras/reactts.svg';
export { ReactComponent as readme } from '../../../../svgs/ext/Extras/readme.svg';
export { ReactComponent as redis } from '../../../../svgs/ext/Extras/redis.svg';
export { ReactComponent as rego } from '../../../../svgs/ext/Extras/rego.svg';
export { ReactComponent as remix } from '../../../../svgs/ext/Extras/remix.svg';
export { ReactComponent as rescript } from '../../../../svgs/ext/Extras/rescript.svg';
export { ReactComponent as rjson } from '../../../../svgs/ext/Extras/rjson.svg';
export { ReactComponent as robots } from '../../../../svgs/ext/Extras/robots.svg';
export { ReactComponent as rollup } from '../../../../svgs/ext/Extras/rollup.svg';
export { ReactComponent as rome } from '../../../../svgs/ext/Extras/rome.svg';
export { ReactComponent as rs } from '../../../../svgs/ext/Extras/rs.svg';
export { ReactComponent as rustfmt } from '../../../../svgs/ext/Extras/rustfmt.svg';
export { ReactComponent as sails } from '../../../../svgs/ext/Extras/sails.svg';
export { ReactComponent as sass } from '../../../../svgs/ext/Extras/sass.svg';
export { ReactComponent as scala } from '../../../../svgs/ext/Extras/scala.svg';
export { ReactComponent as scss } from '../../../../svgs/ext/Extras/scss.svg';
export { ReactComponent as sentinel } from '../../../../svgs/ext/Extras/sentinel.svg';
export { ReactComponent as sequelize } from '../../../../svgs/ext/Extras/sequelize.svg';
export { ReactComponent as sh } from '../../../../svgs/ext/Extras/sh.svg';
export { ReactComponent as slim } from '../../../../svgs/ext/Extras/slim.svg';
export { ReactComponent as sln } from '../../../../svgs/ext/Extras/sln.svg';
export { ReactComponent as smarty } from '../../../../svgs/ext/Extras/smarty.svg';
export { ReactComponent as sol } from '../../../../svgs/ext/Extras/sol.svg';
export { ReactComponent as spc } from '../../../../svgs/ext/Extras/spc.svg';
export { ReactComponent as sql } from '../../../../svgs/ext/Extras/sql.svg';
export { ReactComponent as sqlite } from '../../../../svgs/ext/Extras/sqlite.svg';
export { ReactComponent as storybook } from '../../../../svgs/ext/Extras/storybook.svg';
export { ReactComponent as stylelint } from '../../../../svgs/ext/Extras/stylelint.svg';
export { ReactComponent as stylus } from '../../../../svgs/ext/Extras/stylus.svg';
export { ReactComponent as suo } from '../../../../svgs/ext/Extras/suo.svg';
export { ReactComponent as svelte } from '../../../../svgs/ext/Extras/svelte.svg';
export { ReactComponent as svelteconfig } from '../../../../svgs/ext/Extras/svelteconfig.svg';
export { ReactComponent as svg } from '../../../../svgs/ext/Extras/svg.svg';
export { ReactComponent as swift } from '../../../../svgs/ext/Extras/swift.svg';
export { ReactComponent as symfony } from '../../../../svgs/ext/Extras/symfony.svg';
export { ReactComponent as tailwind } from '../../../../svgs/ext/Extras/tailwind.svg';
export { ReactComponent as tauri } from '../../../../svgs/ext/Extras/tauri.svg';
export { ReactComponent as taze } from '../../../../svgs/ext/Extras/taze.svg';
export { ReactComponent as terrafile } from '../../../../svgs/ext/Extras/terrafile.svg';
export { ReactComponent as terraform } from '../../../../svgs/ext/Extras/terraform.svg';
export { ReactComponent as terraformvars } from '../../../../svgs/ext/Extras/terraformvars.svg';
export { ReactComponent as terraformversion } from '../../../../svgs/ext/Extras/terraformversion.svg';
export { ReactComponent as testjs } from '../../../../svgs/ext/Extras/testjs.svg';
export { ReactComponent as testts } from '../../../../svgs/ext/Extras/testts.svg';
export { ReactComponent as tmpl } from '../../../../svgs/ext/Extras/tmpl.svg';
export { ReactComponent as todo } from '../../../../svgs/ext/Extras/todo.svg';
export { ReactComponent as toml } from '../../../../svgs/ext/Extras/toml.svg';
export { ReactComponent as toolversions } from '../../../../svgs/ext/Extras/toolversions.svg';
export { ReactComponent as tox } from '../../../../svgs/ext/Extras/tox.svg';
export { ReactComponent as travis } from '../../../../svgs/ext/Extras/travis.svg';
export { ReactComponent as tres } from '../../../../svgs/ext/Extras/tres.svg';
export { ReactComponent as tscn } from '../../../../svgs/ext/Extras/tscn.svg';
export { ReactComponent as tsconfig } from '../../../../svgs/ext/Extras/tsconfig.svg';
export { ReactComponent as tsx } from '../../../../svgs/ext/Extras/tsx.svg';
export { ReactComponent as turbo } from '../../../../svgs/ext/Extras/turbo.svg';
export { ReactComponent as twig } from '../../../../svgs/ext/Extras/twig.svg';
export { ReactComponent as typescriptdef } from '../../../../svgs/ext/Extras/typescriptdef.svg';
export { ReactComponent as ui } from '../../../../svgs/ext/Extras/ui.svg';
export { ReactComponent as unocss } from '../../../../svgs/ext/Extras/unocss.svg';
export { ReactComponent as user } from '../../../../svgs/ext/Extras/user.svg';
export { ReactComponent as v } from '../../../../svgs/ext/Extras/v.svg';
export { ReactComponent as vercel } from '../../../../svgs/ext/Extras/vercel.svg';
export { ReactComponent as version } from '../../../../svgs/ext/Extras/version.svg';
export { ReactComponent as vhd } from '../../../../svgs/ext/Extras/vhd.svg';
export { ReactComponent as vhdl } from '../../../../svgs/ext/Extras/vhdl.svg';
export { ReactComponent as video } from '../../../../svgs/ext/Extras/video.svg';
export { ReactComponent as vite } from '../../../../svgs/ext/Extras/vite.svg';
export { ReactComponent as viteenv } from '../../../../svgs/ext/Extras/viteenv.svg';
export { ReactComponent as vitest } from '../../../../svgs/ext/Extras/vitest.svg';
export { ReactComponent as vmod } from '../../../../svgs/ext/Extras/vmod.svg';
export { ReactComponent as vscode } from '../../../../svgs/ext/Extras/vscode.svg';
export { ReactComponent as wasm } from '../../../../svgs/ext/Extras/wasm.svg';
export { ReactComponent as webpack } from '../../../../svgs/ext/Extras/webpack.svg';
export { ReactComponent as windi } from '../../../../svgs/ext/Extras/windi.svg';
export { ReactComponent as xmake } from '../../../../svgs/ext/Extras/xmake.svg';
export { ReactComponent as xml } from '../../../../svgs/ext/Extras/xml.svg';
export { ReactComponent as yaml } from '../../../../svgs/ext/Extras/yaml.svg';
export { ReactComponent as yarn } from '../../../../svgs/ext/Extras/yarn.svg';
export { ReactComponent as yarnerror } from '../../../../svgs/ext/Extras/yarnerror.svg';
export { ReactComponent as zig } from '../../../../svgs/ext/Extras/zig.svg';
export { ReactComponent as zip } from '../../../../svgs/ext/Extras/zip.svg';

View file

@ -0,0 +1,11 @@
/*
* This file exports a object which contains Different Kinds of Icons.
*/
import { type FC as FunctionComponent, type SVGProps } from 'react';
import * as Code from './Code';
import * as Extras from './Extras';
export const LayeredIcons: Partial<
Record<string, Record<string, FunctionComponent<SVGProps<SVGSVGElement>>>>
> = { Code, Extras };

View file

@ -53,13 +53,13 @@ export const getIcon = (
(extension && extension in icons
? extension
: // 2. If in light mode, check if the specific kind in light exists.
!isDark && lightKind in icons
? lightKind
: // 3. Check if a general kind icon exists.
kind in icons
? kind
: // 4. Default to the document (or document light) icon.
document) as keyof typeof icons
!isDark && lightKind in icons
? lightKind
: // 3. Check if a general kind icon exists.
kind in icons
? kind
: // 4. Default to the document (or document light) icon.
document) as keyof typeof icons
];
};

View file

@ -0,0 +1,6 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
export { default as fda } from '../../videos/fda.mp4';

View file

@ -9,7 +9,7 @@
* The generated index files will have the name `index.ts` and will be located in the root of each asset folder.
*/
import fs from 'node:fs/promises';
import { dirname, join } from 'node:path';
import { dirname, join, relative } from 'node:path';
import { fileURLToPath } from 'node:url';
import prettier from 'prettier';
@ -28,19 +28,9 @@ const __dirname = dirname(__filename);
prettier.resolveConfig(join(__dirname, '..', '..', '..', '.prettierrc.js')).then((options) =>
Promise.all(
assetFolders.map(async (folder) => {
const indexFilePath = join(__dirname, '..', folder, 'index.ts');
const indexFilePath = join(__dirname, '..', 'react', folder, 'index.ts');
const assetsFolderPath = join(__dirname, '..', folder);
if (
await fs.access(indexFilePath).then(
() => true,
() => false
)
) {
// Delete the index file if it already exists.
await fs.unlink(indexFilePath);
}
const fileNames = await fs.readdir(assetsFolderPath);
// Generate the import statements for each asset.
@ -48,19 +38,19 @@ prettier.resolveConfig(join(__dirname, '..', '..', '..', '.prettierrc.js')).then
.filter((fileName) => fileName !== 'index.ts' && !/(^|\/)\.[^\/\.]/g.test(fileName))
.map((fileName) => {
const variableName = fileName.split('.')[0].replace(/-/g, '');
if (folder.startsWith('svgs')) {
return `import { ReactComponent as ${variableName} } from './${fileName}';`;
}
return `import ${variableName} from './${fileName}';`;
const relativePath = relative(
join(indexFilePath, '../'),
join(assetsFolderPath, fileName)
);
if (folder.startsWith('svgs'))
return `export { ReactComponent as ${variableName} } from '${relativePath}';`;
return `export { default as ${variableName} } from '${relativePath}';`;
})
.join('\n');
// Generate the export statements for each asset.
const assetExports = fileNames
.filter((fileName) => fileName !== 'index.ts' && !/(^|\/)\.[^\/\.]/g.test(fileName))
.map((fileName) => `${fileName.split('.')[0].replace(/-/g, '')}`)
.join(',\n');
// Generate the index file content.
const indexFileContent = await prettier.format(
`
@ -69,15 +59,54 @@ prettier.resolveConfig(join(__dirname, '..', '..', '..', '.prettierrc.js')).then
* To regenerate this file, run: pnpm assets gen
*/
${assetImports}
export {
${assetExports}
};`,
${assetImports}`,
{ ...options, parser: 'typescript' }
);
// Write the index file.
await fs.mkdir(join(indexFilePath, '../'), { recursive: true });
await fs.writeFile(indexFilePath, indexFileContent);
})
)
);
prettier.resolveConfig(join(__dirname, '..', '..', '..', '.prettierrc.js')).then((options) =>
Promise.all(
assetFolders.map(async (folder) => {
const indexFilePath = join(__dirname, '..', 'solid', folder, 'index.ts');
const assetsFolderPath = join(__dirname, '..', folder);
const fileNames = await fs.readdir(assetsFolderPath);
// Generate the import statements for each asset.
const assetImports = fileNames
.filter((fileName) => fileName !== 'index.ts' && !/(^|\/)\.[^\/\.]/g.test(fileName))
.map((fileName) => {
const variableName = fileName.split('.')[0].replace(/-/g, '');
const relativePath = relative(
join(indexFilePath, '../'),
join(assetsFolderPath, fileName)
);
return `export { default as ${variableName} } from '${relativePath}';`;
})
.join('\n');
// Generate the index file content.
const indexFileContent = await prettier.format(
`
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
${assetImports}`,
{ ...options, parser: 'typescript' }
);
// Write the index file.
await fs.mkdir(join(indexFilePath, '../'), { recursive: true });
await fs.writeFile(indexFilePath, indexFileContent);
})
)

View file

@ -0,0 +1,174 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
export { default as Album20 } from '../../icons/Album-20.png';
export { default as Album } from '../../icons/Album.png';
export { default as Album_Light } from '../../icons/Album_Light.png';
export { default as Alias20 } from '../../icons/Alias-20.png';
export { default as Alias } from '../../icons/Alias.png';
export { default as Alias_Light } from '../../icons/Alias_Light.png';
export { default as AmazonS3 } from '../../icons/AmazonS3.png';
export { default as Application } from '../../icons/Application.png';
export { default as Application_Light } from '../../icons/Application_Light.png';
export { default as Archive20 } from '../../icons/Archive-20.png';
export { default as Archive } from '../../icons/Archive.png';
export { default as Archive_Light } from '../../icons/Archive_Light.png';
export { default as Audio20 } from '../../icons/Audio-20.png';
export { default as Audio } from '../../icons/Audio.png';
export { default as Audio_Light } from '../../icons/Audio_Light.png';
export { default as BackBlaze } from '../../icons/BackBlaze.png';
export { default as Ball } from '../../icons/Ball.png';
export { default as Book20 } from '../../icons/Book-20.png';
export { default as Book } from '../../icons/Book.png';
export { default as BookBlue } from '../../icons/BookBlue.png';
export { default as Book_Light } from '../../icons/Book_Light.png';
export { default as Box } from '../../icons/Box.png';
export { default as Code20 } from '../../icons/Code-20.png';
export { default as Collection20 } from '../../icons/Collection-20.png';
export { default as Collection } from '../../icons/Collection.png';
export { default as Collection_Light } from '../../icons/Collection_Light.png';
export { default as Config20 } from '../../icons/Config-20.png';
export { default as DAV } from '../../icons/DAV.png';
export { default as Database20 } from '../../icons/Database-20.png';
export { default as Database } from '../../icons/Database.png';
export { default as Database_Light } from '../../icons/Database_Light.png';
export { default as DeleteLocation } from '../../icons/DeleteLocation.png';
export { default as Document20 } from '../../icons/Document-20.png';
export { default as Document } from '../../icons/Document.png';
export { default as Document_Light } from '../../icons/Document_Light.png';
export { default as Document_doc } from '../../icons/Document_doc.png';
export { default as Document_doc_Light } from '../../icons/Document_doc_Light.png';
export { default as Document_pdf } from '../../icons/Document_pdf.png';
export { default as Document_pdf_Light } from '../../icons/Document_pdf_Light.png';
export { default as Document_xls } from '../../icons/Document_xls.png';
export { default as Document_xls_Light } from '../../icons/Document_xls_Light.png';
export { default as Dotfile20 } from '../../icons/Dotfile-20.png';
export { default as DriveAmazonS3 } from '../../icons/Drive-AmazonS3.png';
export { default as DriveAmazonS3_Light } from '../../icons/Drive-AmazonS3_Light.png';
export { default as DriveBackBlaze } from '../../icons/Drive-BackBlaze.png';
export { default as DriveBackBlaze_Light } from '../../icons/Drive-BackBlaze_Light.png';
export { default as DriveBox } from '../../icons/Drive-Box.png';
export { default as DriveDAV } from '../../icons/Drive-DAV.png';
export { default as DriveDAV_Light } from '../../icons/Drive-DAV_Light.png';
export { default as DriveDarker } from '../../icons/Drive-Darker.png';
export { default as DriveDropbox } from '../../icons/Drive-Dropbox.png';
export { default as DriveDropbox_Light } from '../../icons/Drive-Dropbox_Light.png';
export { default as DriveGoogleDrive } from '../../icons/Drive-GoogleDrive.png';
export { default as DriveGoogleDrive_Light } from '../../icons/Drive-GoogleDrive_Light.png';
export { default as DriveMega } from '../../icons/Drive-Mega.png';
export { default as DriveMega_Light } from '../../icons/Drive-Mega_Light.png';
export { default as DriveOneDrive } from '../../icons/Drive-OneDrive.png';
export { default as DriveOneDrive_Light } from '../../icons/Drive-OneDrive_Light.png';
export { default as DriveOpenStack } from '../../icons/Drive-OpenStack.png';
export { default as DriveOpenStack_Light } from '../../icons/Drive-OpenStack_Light.png';
export { default as DrivePCloud } from '../../icons/Drive-PCloud.png';
export { default as DrivePCloud_Light } from '../../icons/Drive-PCloud_Light.png';
export { default as Drivebox_Light } from '../../icons/Drive-box_Light.png';
export { default as Drive } from '../../icons/Drive.png';
export { default as Drive_Light } from '../../icons/Drive_Light.png';
export { default as Dropbox } from '../../icons/Dropbox.png';
export { default as Encrypted20 } from '../../icons/Encrypted-20.png';
export { default as Encrypted } from '../../icons/Encrypted.png';
export { default as Encrypted_Light } from '../../icons/Encrypted_Light.png';
export { default as Entity } from '../../icons/Entity.png';
export { default as Entity_Light } from '../../icons/Entity_Light.png';
export { default as Executable20 } from '../../icons/Executable-20.png';
export { default as Executable } from '../../icons/Executable.png';
export { default as Executable_Light } from '../../icons/Executable_Light.png';
export { default as Executable_Light_old } from '../../icons/Executable_Light_old.png';
export { default as Executable_old } from '../../icons/Executable_old.png';
export { default as Face_Light } from '../../icons/Face_Light.png';
export { default as Folder20 } from '../../icons/Folder-20.png';
export { default as Folder } from '../../icons/Folder.png';
export { default as FolderGrey } from '../../icons/FolderGrey.png';
export { default as FolderGrey_Light } from '../../icons/FolderGrey_Light.png';
export { default as FolderNoSpace } from '../../icons/FolderNoSpace.png';
export { default as FolderNoSpace_Light } from '../../icons/FolderNoSpace_Light.png';
export { default as Folder_Light } from '../../icons/Folder_Light.png';
export { default as Font20 } from '../../icons/Font-20.png';
export { default as Game } from '../../icons/Game.png';
export { default as Game_Light } from '../../icons/Game_Light.png';
export { default as Globe } from '../../icons/Globe.png';
export { default as GlobeAlt } from '../../icons/GlobeAlt.png';
export { default as Globe_Light } from '../../icons/Globe_Light.png';
export { default as GoogleDrive } from '../../icons/GoogleDrive.png';
export { default as HDD } from '../../icons/HDD.png';
export { default as HDD_Light } from '../../icons/HDD_Light.png';
export { default as Heart } from '../../icons/Heart.png';
export { default as Heart_Light } from '../../icons/Heart_Light.png';
export { default as Home } from '../../icons/Home.png';
export { default as Home_Light } from '../../icons/Home_Light.png';
export { default as Image20 } from '../../icons/Image-20.png';
export { default as Image } from '../../icons/Image.png';
export { default as Image_Light } from '../../icons/Image_Light.png';
export { default as Key20 } from '../../icons/Key-20.png';
export { default as Key } from '../../icons/Key.png';
export { default as Key_Light } from '../../icons/Key_Light.png';
export { default as Keys } from '../../icons/Keys.png';
export { default as Keys_Light } from '../../icons/Keys_Light.png';
export { default as Laptop } from '../../icons/Laptop.png';
export { default as Laptop_Light } from '../../icons/Laptop_Light.png';
export { default as Link20 } from '../../icons/Link-20.png';
export { default as Link } from '../../icons/Link.png';
export { default as Link_Light } from '../../icons/Link_Light.png';
export { default as Lock } from '../../icons/Lock.png';
export { default as Lock_Light } from '../../icons/Lock_Light.png';
export { default as Mega } from '../../icons/Mega.png';
export { default as Mesh20 } from '../../icons/Mesh-20.png';
export { default as Mesh } from '../../icons/Mesh.png';
export { default as Mesh_Light } from '../../icons/Mesh_Light.png';
export { default as Mobile } from '../../icons/Mobile.png';
export { default as Mobile_Light } from '../../icons/Mobile_Light.png';
export { default as MoveLocation } from '../../icons/MoveLocation.png';
export { default as MoveLocation_Light } from '../../icons/MoveLocation_Light.png';
export { default as Movie } from '../../icons/Movie.png';
export { default as Movie_Light } from '../../icons/Movie_Light.png';
export { default as NewLocation } from '../../icons/NewLocation.png';
export { default as Node } from '../../icons/Node.png';
export { default as Node_Light } from '../../icons/Node_Light.png';
export { default as OneDrive } from '../../icons/OneDrive.png';
export { default as OpenStack } from '../../icons/OpenStack.png';
export { default as PCloud } from '../../icons/PCloud.png';
export { default as Package20 } from '../../icons/Package-20.png';
export { default as Package } from '../../icons/Package.png';
export { default as Package_Light } from '../../icons/Package_Light.png';
export { default as SD } from '../../icons/SD.png';
export { default as SD_Light } from '../../icons/SD_Light.png';
export { default as Scrapbook } from '../../icons/Scrapbook.png';
export { default as Scrapbook_Light } from '../../icons/Scrapbook_Light.png';
export { default as Screenshot20 } from '../../icons/Screenshot-20.png';
export { default as Screenshot } from '../../icons/Screenshot.png';
export { default as ScreenshotAlt } from '../../icons/ScreenshotAlt.png';
export { default as Screenshot_Light } from '../../icons/Screenshot_Light.png';
export { default as Server } from '../../icons/Server.png';
export { default as Server_Light } from '../../icons/Server_Light.png';
export { default as Spacedrop1 } from '../../icons/Spacedrop-1.png';
export { default as Spacedrop } from '../../icons/Spacedrop.png';
export { default as Tablet } from '../../icons/Tablet.png';
export { default as Tablet_Light } from '../../icons/Tablet_Light.png';
export { default as Tags } from '../../icons/Tags.png';
export { default as Tags_Light } from '../../icons/Tags_Light.png';
export { default as Terminal } from '../../icons/Terminal.png';
export { default as Terminal_Light } from '../../icons/Terminal_Light.png';
export { default as Text20 } from '../../icons/Text-20.png';
export { default as Text } from '../../icons/Text.png';
export { default as TextAlt } from '../../icons/TextAlt.png';
export { default as TextAlt_Light } from '../../icons/TextAlt_Light.png';
export { default as Text_Light } from '../../icons/Text_Light.png';
export { default as Text_txt } from '../../icons/Text_txt.png';
export { default as TexturedMesh } from '../../icons/TexturedMesh.png';
export { default as TexturedMesh_Light } from '../../icons/TexturedMesh_Light.png';
export { default as Trash } from '../../icons/Trash.png';
export { default as Trash_Light } from '../../icons/Trash_Light.png';
export { default as Undefined } from '../../icons/Undefined.png';
export { default as Undefined_Light } from '../../icons/Undefined_Light.png';
export { default as Unknown20 } from '../../icons/Unknown-20.png';
export { default as Video20 } from '../../icons/Video-20.png';
export { default as Video } from '../../icons/Video.png';
export { default as Video_Light } from '../../icons/Video_Light.png';
export { default as WebPageArchive20 } from '../../icons/WebPageArchive-20.png';
export { default as Widget20 } from '../../icons/Widget-20.png';
export { default as Widget } from '../../icons/Widget.png';
export { default as Widget_Light } from '../../icons/Widget_Light.png';

View file

@ -0,0 +1,16 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
export { default as AlphaBg } from '../../images/AlphaBg.png';
export { default as AlphaBg_Light } from '../../images/AlphaBg_Light.png';
export { default as AppLogo } from '../../images/AppLogo.png';
export { default as Ball } from '../../images/Ball.png';
export { default as BloomOne } from '../../images/BloomOne.png';
export { default as BloomThree } from '../../images/BloomThree.png';
export { default as BloomTwo } from '../../images/BloomTwo.png';
export { default as Dropbox } from '../../images/Dropbox.png';
export { default as GoogleDrive } from '../../images/GoogleDrive.png';
export { default as Mega } from '../../images/Mega.png';
export { default as iCloud } from '../../images/iCloud.png';

View file

@ -0,0 +1,16 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
export { default as Academia } from '../../../svgs/brands/Academia.svg';
export { default as Apple } from '../../../svgs/brands/Apple.svg';
export { default as Discord } from '../../../svgs/brands/Discord.svg';
export { default as Docker } from '../../../svgs/brands/Docker.svg';
export { default as Dribbble } from '../../../svgs/brands/Dribbble.svg';
export { default as Github } from '../../../svgs/brands/Github.svg';
export { default as Gitlab } from '../../../svgs/brands/Gitlab.svg';
export { default as Instagram } from '../../../svgs/brands/Instagram.svg';
export { default as Opencollective } from '../../../svgs/brands/Opencollective.svg';
export { default as Twitch } from '../../../svgs/brands/Twitch.svg';
export { default as Twitter } from '../../../svgs/brands/Twitter.svg';

View file

@ -0,0 +1,22 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
export { default as angular } from '../../../../svgs/ext/Code/angular.svg';
export { default as bun } from '../../../../svgs/ext/Code/bun.svg';
export { default as c } from '../../../../svgs/ext/Code/c.svg';
export { default as cmake } from '../../../../svgs/ext/Code/cmake.svg';
export { default as cpp } from '../../../../svgs/ext/Code/cpp.svg';
export { default as csharp } from '../../../../svgs/ext/Code/csharp.svg';
export { default as css } from '../../../../svgs/ext/Code/css.svg';
export { default as dartlang } from '../../../../svgs/ext/Code/dartlang.svg';
export { default as go } from '../../../../svgs/ext/Code/go.svg';
export { default as html } from '../../../../svgs/ext/Code/html.svg';
export { default as java } from '../../../../svgs/ext/Code/java.svg';
export { default as js } from '../../../../svgs/ext/Code/js.svg';
export { default as kotlin } from '../../../../svgs/ext/Code/kotlin.svg';
export { default as php } from '../../../../svgs/ext/Code/php.svg';
export { default as py } from '../../../../svgs/ext/Code/py.svg';
export { default as ts } from '../../../../svgs/ext/Code/ts.svg';
export { default as vue } from '../../../../svgs/ext/Code/vue.svg';

View file

@ -0,0 +1,289 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
export { default as ace } from '../../../../svgs/ext/Extras/ace.svg';
export { default as acemanifest } from '../../../../svgs/ext/Extras/acemanifest.svg';
export { default as adoc } from '../../../../svgs/ext/Extras/adoc.svg';
export { default as adonis } from '../../../../svgs/ext/Extras/adonis.svg';
export { default as adonisconfig } from '../../../../svgs/ext/Extras/adonisconfig.svg';
export { default as afdesign } from '../../../../svgs/ext/Extras/afdesign.svg';
export { default as afphoto } from '../../../../svgs/ext/Extras/afphoto.svg';
export { default as afpub } from '../../../../svgs/ext/Extras/afpub.svg';
export { default as ai } from '../../../../svgs/ext/Extras/ai.svg';
export { default as air } from '../../../../svgs/ext/Extras/air.svg';
export { default as anim } from '../../../../svgs/ext/Extras/anim.svg';
export { default as astro } from '../../../../svgs/ext/Extras/astro.svg';
export { default as astroconfig } from '../../../../svgs/ext/Extras/astroconfig.svg';
export { default as atomizer } from '../../../../svgs/ext/Extras/atomizer.svg';
export { default as azure } from '../../../../svgs/ext/Extras/azure.svg';
export { default as babel } from '../../../../svgs/ext/Extras/babel.svg';
export { default as bat } from '../../../../svgs/ext/Extras/bat.svg';
export { default as bicep } from '../../../../svgs/ext/Extras/bicep.svg';
export { default as bicepparam } from '../../../../svgs/ext/Extras/bicepparam.svg';
export { default as binary } from '../../../../svgs/ext/Extras/binary.svg';
export { default as blade } from '../../../../svgs/ext/Extras/blade.svg';
export { default as brotli } from '../../../../svgs/ext/Extras/brotli.svg';
export { default as browserslist } from '../../../../svgs/ext/Extras/browserslist.svg';
export { default as bsconfig } from '../../../../svgs/ext/Extras/bsconfig.svg';
export { default as bundler } from '../../../../svgs/ext/Extras/bundler.svg';
export { default as cargo } from '../../../../svgs/ext/Extras/cargo.svg';
export { default as cargolock } from '../../../../svgs/ext/Extras/cargolock.svg';
export { default as cert } from '../../../../svgs/ext/Extras/cert.svg';
export { default as cheader } from '../../../../svgs/ext/Extras/cheader.svg';
export { default as civet } from '../../../../svgs/ext/Extras/civet.svg';
export { default as cli } from '../../../../svgs/ext/Extras/cli.svg';
export { default as clojure } from '../../../../svgs/ext/Extras/clojure.svg';
export { default as codeworkspace } from '../../../../svgs/ext/Extras/codeworkspace.svg';
export { default as commitlint } from '../../../../svgs/ext/Extras/commitlint.svg';
export { default as compodoc } from '../../../../svgs/ext/Extras/compodoc.svg';
export { default as composer } from '../../../../svgs/ext/Extras/composer.svg';
export { default as composerlock } from '../../../../svgs/ext/Extras/composerlock.svg';
export { default as conan } from '../../../../svgs/ext/Extras/conan.svg';
export { default as conf } from '../../../../svgs/ext/Extras/conf.svg';
export { default as crystal } from '../../../../svgs/ext/Extras/crystal.svg';
export { default as cshtml } from '../../../../svgs/ext/Extras/cshtml.svg';
export { default as csproj } from '../../../../svgs/ext/Extras/csproj.svg';
export { default as cssmap } from '../../../../svgs/ext/Extras/cssmap.svg';
export { default as csv } from '../../../../svgs/ext/Extras/csv.svg';
export { default as cucumber } from '../../../../svgs/ext/Extras/cucumber.svg';
export { default as cypress } from '../../../../svgs/ext/Extras/cypress.svg';
export { default as cypressjs } from '../../../../svgs/ext/Extras/cypressjs.svg';
export { default as cypressts } from '../../../../svgs/ext/Extras/cypressts.svg';
export { default as d } from '../../../../svgs/ext/Extras/d.svg';
export { default as diff } from '../../../../svgs/ext/Extras/diff.svg';
export { default as docker } from '../../../../svgs/ext/Extras/docker.svg';
export { default as dockerdebug } from '../../../../svgs/ext/Extras/dockerdebug.svg';
export { default as dockerignore } from '../../../../svgs/ext/Extras/dockerignore.svg';
export { default as drawio } from '../../../../svgs/ext/Extras/drawio.svg';
export { default as drizzle } from '../../../../svgs/ext/Extras/drizzle.svg';
export { default as dsstore } from '../../../../svgs/ext/Extras/dsstore.svg';
export { default as dune } from '../../../../svgs/ext/Extras/dune.svg';
export { default as duneproject } from '../../../../svgs/ext/Extras/duneproject.svg';
export { default as edge } from '../../../../svgs/ext/Extras/edge.svg';
export { default as editorconfig } from '../../../../svgs/ext/Extras/editorconfig.svg';
export { default as eex } from '../../../../svgs/ext/Extras/eex.svg';
export { default as elixir } from '../../../../svgs/ext/Extras/elixir.svg';
export { default as elm } from '../../../../svgs/ext/Extras/elm.svg';
export { default as env } from '../../../../svgs/ext/Extras/env.svg';
export { default as erb } from '../../../../svgs/ext/Extras/erb.svg';
export { default as erlang } from '../../../../svgs/ext/Extras/erlang.svg';
export { default as esbuild } from '../../../../svgs/ext/Extras/esbuild.svg';
export { default as eslint } from '../../../../svgs/ext/Extras/eslint.svg';
export { default as exs } from '../../../../svgs/ext/Extras/exs.svg';
export { default as exx } from '../../../../svgs/ext/Extras/exx.svg';
export { default as farm } from '../../../../svgs/ext/Extras/farm.svg';
export { default as figma } from '../../../../svgs/ext/Extras/figma.svg';
export { default as flakelock } from '../../../../svgs/ext/Extras/flakelock.svg';
export { default as flutter } from '../../../../svgs/ext/Extras/flutter.svg';
export { default as flutterlock } from '../../../../svgs/ext/Extras/flutterlock.svg';
export { default as flutterpackage } from '../../../../svgs/ext/Extras/flutterpackage.svg';
export { default as fonteot } from '../../../../svgs/ext/Extras/fonteot.svg';
export { default as fontotf } from '../../../../svgs/ext/Extras/fontotf.svg';
export { default as fontttf } from '../../../../svgs/ext/Extras/fontttf.svg';
export { default as fontwoff } from '../../../../svgs/ext/Extras/fontwoff.svg';
export { default as fontwoff2 } from '../../../../svgs/ext/Extras/fontwoff2.svg';
export { default as freemarker } from '../../../../svgs/ext/Extras/freemarker.svg';
export { default as fsharp } from '../../../../svgs/ext/Extras/fsharp.svg';
export { default as gbl } from '../../../../svgs/ext/Extras/gbl.svg';
export { default as git } from '../../../../svgs/ext/Extras/git.svg';
export { default as go_package } from '../../../../svgs/ext/Extras/go_package.svg';
export { default as godot } from '../../../../svgs/ext/Extras/godot.svg';
export { default as gradle } from '../../../../svgs/ext/Extras/gradle.svg';
export { default as gradlebat } from '../../../../svgs/ext/Extras/gradlebat.svg';
export { default as gradlekotlin } from '../../../../svgs/ext/Extras/gradlekotlin.svg';
export { default as grain } from '../../../../svgs/ext/Extras/grain.svg';
export { default as graphql } from '../../../../svgs/ext/Extras/graphql.svg';
export { default as groovy } from '../../../../svgs/ext/Extras/groovy.svg';
export { default as grunt } from '../../../../svgs/ext/Extras/grunt.svg';
export { default as gulp } from '../../../../svgs/ext/Extras/gulp.svg';
export { default as h } from '../../../../svgs/ext/Extras/h.svg';
export { default as haml } from '../../../../svgs/ext/Extras/haml.svg';
export { default as handlebars } from '../../../../svgs/ext/Extras/handlebars.svg';
export { default as hardhat } from '../../../../svgs/ext/Extras/hardhat.svg';
export { default as hashicorp } from '../../../../svgs/ext/Extras/hashicorp.svg';
export { default as haskell } from '../../../../svgs/ext/Extras/haskell.svg';
export { default as haxe } from '../../../../svgs/ext/Extras/haxe.svg';
export { default as haxeml } from '../../../../svgs/ext/Extras/haxeml.svg';
export { default as hpp } from '../../../../svgs/ext/Extras/hpp.svg';
export { default as htaccess } from '../../../../svgs/ext/Extras/htaccess.svg';
export { default as imba } from '../../../../svgs/ext/Extras/imba.svg';
export { default as info } from '../../../../svgs/ext/Extras/info.svg';
export { default as ipynb } from '../../../../svgs/ext/Extras/ipynb.svg';
export { default as jar } from '../../../../svgs/ext/Extras/jar.svg';
export { default as jenkins } from '../../../../svgs/ext/Extras/jenkins.svg';
export { default as jest } from '../../../../svgs/ext/Extras/jest.svg';
export { default as jinja } from '../../../../svgs/ext/Extras/jinja.svg';
export { default as jsmap } from '../../../../svgs/ext/Extras/jsmap.svg';
export { default as json } from '../../../../svgs/ext/Extras/json.svg';
export { default as jsp } from '../../../../svgs/ext/Extras/jsp.svg';
export { default as julia } from '../../../../svgs/ext/Extras/julia.svg';
export { default as karma } from '../../../../svgs/ext/Extras/karma.svg';
export { default as key } from '../../../../svgs/ext/Extras/key.svg';
export { default as knex } from '../../../../svgs/ext/Extras/knex.svg';
export { default as kotlins } from '../../../../svgs/ext/Extras/kotlins.svg';
export { default as krita } from '../../../../svgs/ext/Extras/krita.svg';
export { default as latex } from '../../../../svgs/ext/Extras/latex.svg';
export { default as launch } from '../../../../svgs/ext/Extras/launch.svg';
export { default as less } from '../../../../svgs/ext/Extras/less.svg';
export { default as license } from '../../../../svgs/ext/Extras/license.svg';
export { default as light_editorconfig } from '../../../../svgs/ext/Extras/light_editorconfig.svg';
export { default as liquid } from '../../../../svgs/ext/Extras/liquid.svg';
export { default as llvm } from '../../../../svgs/ext/Extras/llvm.svg';
export { default as log } from '../../../../svgs/ext/Extras/log.svg';
export { default as lua } from '../../../../svgs/ext/Extras/lua.svg';
export { default as m } from '../../../../svgs/ext/Extras/m.svg';
export { default as makefile } from '../../../../svgs/ext/Extras/makefile.svg';
export { default as manifest } from '../../../../svgs/ext/Extras/manifest.svg';
export { default as markdown } from '../../../../svgs/ext/Extras/markdown.svg';
export { default as markdownx } from '../../../../svgs/ext/Extras/markdownx.svg';
export { default as maven } from '../../../../svgs/ext/Extras/maven.svg';
export { default as mesh } from '../../../../svgs/ext/Extras/mesh.svg';
export { default as mgcb } from '../../../../svgs/ext/Extras/mgcb.svg';
export { default as mint } from '../../../../svgs/ext/Extras/mint.svg';
export { default as mix } from '../../../../svgs/ext/Extras/mix.svg';
export { default as mixlock } from '../../../../svgs/ext/Extras/mixlock.svg';
export { default as mjml } from '../../../../svgs/ext/Extras/mjml.svg';
export { default as motoko } from '../../../../svgs/ext/Extras/motoko.svg';
export { default as mov } from '../../../../svgs/ext/Extras/mov.svg';
export { default as mp4 } from '../../../../svgs/ext/Extras/mp4.svg';
export { default as mtl } from '../../../../svgs/ext/Extras/mtl.svg';
export { default as mustache } from '../../../../svgs/ext/Extras/mustache.svg';
export { default as neon } from '../../../../svgs/ext/Extras/neon.svg';
export { default as nestjs } from '../../../../svgs/ext/Extras/nestjs.svg';
export { default as nestjscontroller } from '../../../../svgs/ext/Extras/nestjscontroller.svg';
export { default as nestjsdecorator } from '../../../../svgs/ext/Extras/nestjsdecorator.svg';
export { default as nestjsfilter } from '../../../../svgs/ext/Extras/nestjsfilter.svg';
export { default as nestjsguard } from '../../../../svgs/ext/Extras/nestjsguard.svg';
export { default as nestjsmodule } from '../../../../svgs/ext/Extras/nestjsmodule.svg';
export { default as nestjsservice } from '../../../../svgs/ext/Extras/nestjsservice.svg';
export { default as netlify } from '../../../../svgs/ext/Extras/netlify.svg';
export { default as nextconfig } from '../../../../svgs/ext/Extras/nextconfig.svg';
export { default as nextron } from '../../../../svgs/ext/Extras/nextron.svg';
export { default as nginx } from '../../../../svgs/ext/Extras/nginx.svg';
export { default as nim } from '../../../../svgs/ext/Extras/nim.svg';
export { default as nix } from '../../../../svgs/ext/Extras/nix.svg';
export { default as njk } from '../../../../svgs/ext/Extras/njk.svg';
export { default as nodemon } from '../../../../svgs/ext/Extras/nodemon.svg';
export { default as npm } from '../../../../svgs/ext/Extras/npm.svg';
export { default as npmlock } from '../../../../svgs/ext/Extras/npmlock.svg';
export { default as nuxt } from '../../../../svgs/ext/Extras/nuxt.svg';
export { default as nvim } from '../../../../svgs/ext/Extras/nvim.svg';
export { default as nvm } from '../../../../svgs/ext/Extras/nvm.svg';
export { default as nx } from '../../../../svgs/ext/Extras/nx.svg';
export { default as obj } from '../../../../svgs/ext/Extras/obj.svg';
export { default as ocaml } from '../../../../svgs/ext/Extras/ocaml.svg';
export { default as ocamli } from '../../../../svgs/ext/Extras/ocamli.svg';
export { default as ocamll } from '../../../../svgs/ext/Extras/ocamll.svg';
export { default as ocamly } from '../../../../svgs/ext/Extras/ocamly.svg';
export { default as opengl } from '../../../../svgs/ext/Extras/opengl.svg';
export { default as parcel } from '../../../../svgs/ext/Extras/parcel.svg';
export { default as perl } from '../../../../svgs/ext/Extras/perl.svg';
export { default as perlm } from '../../../../svgs/ext/Extras/perlm.svg';
export { default as pfx } from '../../../../svgs/ext/Extras/pfx.svg';
export { default as photoshop } from '../../../../svgs/ext/Extras/photoshop.svg';
export { default as playright } from '../../../../svgs/ext/Extras/playright.svg';
export { default as pnpm } from '../../../../svgs/ext/Extras/pnpm.svg';
export { default as pnpmlock } from '../../../../svgs/ext/Extras/pnpmlock.svg';
export { default as poetry } from '../../../../svgs/ext/Extras/poetry.svg';
export { default as poetrylock } from '../../../../svgs/ext/Extras/poetrylock.svg';
export { default as postcssconfig } from '../../../../svgs/ext/Extras/postcssconfig.svg';
export { default as powershell } from '../../../../svgs/ext/Extras/powershell.svg';
export { default as powershelldata } from '../../../../svgs/ext/Extras/powershelldata.svg';
export { default as powershellmodule } from '../../../../svgs/ext/Extras/powershellmodule.svg';
export { default as prettier } from '../../../../svgs/ext/Extras/prettier.svg';
export { default as prettierignore } from '../../../../svgs/ext/Extras/prettierignore.svg';
export { default as prisma } from '../../../../svgs/ext/Extras/prisma.svg';
export { default as prolog } from '../../../../svgs/ext/Extras/prolog.svg';
export { default as properties } from '../../../../svgs/ext/Extras/properties.svg';
export { default as pug } from '../../../../svgs/ext/Extras/pug.svg';
export { default as pvk } from '../../../../svgs/ext/Extras/pvk.svg';
export { default as pyproject } from '../../../../svgs/ext/Extras/pyproject.svg';
export { default as qt } from '../../../../svgs/ext/Extras/qt.svg';
export { default as quarkus } from '../../../../svgs/ext/Extras/quarkus.svg';
export { default as quasar } from '../../../../svgs/ext/Extras/quasar.svg';
export { default as razor } from '../../../../svgs/ext/Extras/razor.svg';
export { default as rb } from '../../../../svgs/ext/Extras/rb.svg';
export { default as reactjs } from '../../../../svgs/ext/Extras/reactjs.svg';
export { default as reactts } from '../../../../svgs/ext/Extras/reactts.svg';
export { default as readme } from '../../../../svgs/ext/Extras/readme.svg';
export { default as redis } from '../../../../svgs/ext/Extras/redis.svg';
export { default as rego } from '../../../../svgs/ext/Extras/rego.svg';
export { default as remix } from '../../../../svgs/ext/Extras/remix.svg';
export { default as rescript } from '../../../../svgs/ext/Extras/rescript.svg';
export { default as rjson } from '../../../../svgs/ext/Extras/rjson.svg';
export { default as robots } from '../../../../svgs/ext/Extras/robots.svg';
export { default as rollup } from '../../../../svgs/ext/Extras/rollup.svg';
export { default as rome } from '../../../../svgs/ext/Extras/rome.svg';
export { default as rs } from '../../../../svgs/ext/Extras/rs.svg';
export { default as rustfmt } from '../../../../svgs/ext/Extras/rustfmt.svg';
export { default as sails } from '../../../../svgs/ext/Extras/sails.svg';
export { default as sass } from '../../../../svgs/ext/Extras/sass.svg';
export { default as scala } from '../../../../svgs/ext/Extras/scala.svg';
export { default as scss } from '../../../../svgs/ext/Extras/scss.svg';
export { default as sentinel } from '../../../../svgs/ext/Extras/sentinel.svg';
export { default as sequelize } from '../../../../svgs/ext/Extras/sequelize.svg';
export { default as sh } from '../../../../svgs/ext/Extras/sh.svg';
export { default as slim } from '../../../../svgs/ext/Extras/slim.svg';
export { default as sln } from '../../../../svgs/ext/Extras/sln.svg';
export { default as smarty } from '../../../../svgs/ext/Extras/smarty.svg';
export { default as sol } from '../../../../svgs/ext/Extras/sol.svg';
export { default as spc } from '../../../../svgs/ext/Extras/spc.svg';
export { default as sql } from '../../../../svgs/ext/Extras/sql.svg';
export { default as sqlite } from '../../../../svgs/ext/Extras/sqlite.svg';
export { default as storybook } from '../../../../svgs/ext/Extras/storybook.svg';
export { default as stylelint } from '../../../../svgs/ext/Extras/stylelint.svg';
export { default as stylus } from '../../../../svgs/ext/Extras/stylus.svg';
export { default as suo } from '../../../../svgs/ext/Extras/suo.svg';
export { default as svelte } from '../../../../svgs/ext/Extras/svelte.svg';
export { default as svelteconfig } from '../../../../svgs/ext/Extras/svelteconfig.svg';
export { default as svg } from '../../../../svgs/ext/Extras/svg.svg';
export { default as swift } from '../../../../svgs/ext/Extras/swift.svg';
export { default as symfony } from '../../../../svgs/ext/Extras/symfony.svg';
export { default as tailwind } from '../../../../svgs/ext/Extras/tailwind.svg';
export { default as tauri } from '../../../../svgs/ext/Extras/tauri.svg';
export { default as taze } from '../../../../svgs/ext/Extras/taze.svg';
export { default as terrafile } from '../../../../svgs/ext/Extras/terrafile.svg';
export { default as terraform } from '../../../../svgs/ext/Extras/terraform.svg';
export { default as terraformvars } from '../../../../svgs/ext/Extras/terraformvars.svg';
export { default as terraformversion } from '../../../../svgs/ext/Extras/terraformversion.svg';
export { default as testjs } from '../../../../svgs/ext/Extras/testjs.svg';
export { default as testts } from '../../../../svgs/ext/Extras/testts.svg';
export { default as tmpl } from '../../../../svgs/ext/Extras/tmpl.svg';
export { default as todo } from '../../../../svgs/ext/Extras/todo.svg';
export { default as toml } from '../../../../svgs/ext/Extras/toml.svg';
export { default as toolversions } from '../../../../svgs/ext/Extras/toolversions.svg';
export { default as tox } from '../../../../svgs/ext/Extras/tox.svg';
export { default as travis } from '../../../../svgs/ext/Extras/travis.svg';
export { default as tres } from '../../../../svgs/ext/Extras/tres.svg';
export { default as tscn } from '../../../../svgs/ext/Extras/tscn.svg';
export { default as tsconfig } from '../../../../svgs/ext/Extras/tsconfig.svg';
export { default as tsx } from '../../../../svgs/ext/Extras/tsx.svg';
export { default as turbo } from '../../../../svgs/ext/Extras/turbo.svg';
export { default as twig } from '../../../../svgs/ext/Extras/twig.svg';
export { default as typescriptdef } from '../../../../svgs/ext/Extras/typescriptdef.svg';
export { default as ui } from '../../../../svgs/ext/Extras/ui.svg';
export { default as unocss } from '../../../../svgs/ext/Extras/unocss.svg';
export { default as user } from '../../../../svgs/ext/Extras/user.svg';
export { default as v } from '../../../../svgs/ext/Extras/v.svg';
export { default as vercel } from '../../../../svgs/ext/Extras/vercel.svg';
export { default as version } from '../../../../svgs/ext/Extras/version.svg';
export { default as vhd } from '../../../../svgs/ext/Extras/vhd.svg';
export { default as vhdl } from '../../../../svgs/ext/Extras/vhdl.svg';
export { default as video } from '../../../../svgs/ext/Extras/video.svg';
export { default as vite } from '../../../../svgs/ext/Extras/vite.svg';
export { default as viteenv } from '../../../../svgs/ext/Extras/viteenv.svg';
export { default as vitest } from '../../../../svgs/ext/Extras/vitest.svg';
export { default as vmod } from '../../../../svgs/ext/Extras/vmod.svg';
export { default as vscode } from '../../../../svgs/ext/Extras/vscode.svg';
export { default as wasm } from '../../../../svgs/ext/Extras/wasm.svg';
export { default as webpack } from '../../../../svgs/ext/Extras/webpack.svg';
export { default as windi } from '../../../../svgs/ext/Extras/windi.svg';
export { default as xmake } from '../../../../svgs/ext/Extras/xmake.svg';
export { default as xml } from '../../../../svgs/ext/Extras/xml.svg';
export { default as yaml } from '../../../../svgs/ext/Extras/yaml.svg';
export { default as yarn } from '../../../../svgs/ext/Extras/yarn.svg';
export { default as yarnerror } from '../../../../svgs/ext/Extras/yarnerror.svg';
export { default as zig } from '../../../../svgs/ext/Extras/zig.svg';
export { default as zip } from '../../../../svgs/ext/Extras/zip.svg';

View file

@ -0,0 +1,11 @@
/*
* This file exports a object which contains Different Kinds of Icons.
*/
import { Component, ComponentProps } from 'solid-js';
import * as Code from './Code';
import * as Extras from './Extras';
export const LayeredIcons: Partial<
Record<string, Record<string, Component<ComponentProps<'svg'>>>>
> = { Code, Extras };

View file

@ -0,0 +1,73 @@
import * as icons from '../icons';
import { LayeredIcons } from '../svgs/ext';
// Define a type for icon names. This filters out any names with underscores in them.
// The use of 'never' is to make sure that icon types with underscores are not included.
export type IconTypes<K = keyof typeof icons> = K extends `${string}_${string}` ? never : K;
// Create a record of icon names that don't contain underscores.
export const iconNames = Object.fromEntries(
Object.keys(icons)
.filter((key) => !key.includes('_')) // Filter out any keys with underscores
.map((key) => [key, key]) // Map key to [key, key] format
) as Record<IconTypes, string>;
export const getIconByName = (name: IconTypes, isDark?: boolean) => {
let _name = name;
if (!isDark) _name = (name + '_Light') as IconTypes;
return icons[name];
};
/**
* Gets the appropriate icon based on the given criteria.
*
* @param kind - The type of the document.
* @param isDark - If true, returns the dark mode version of the icon.
* @param extension - The file extension (if any).
* @param isDir - If true, the request is for a directory/folder icon.
*/
export const getIcon = (
kind: string,
isDark?: boolean,
extension?: string | null,
isDir?: boolean
) => {
// If the request is for a directory/folder, return the appropriate version.
if (isDir) return icons[isDark ? 'Folder' : 'Folder_Light'];
// Default document icon.
let document: Extract<keyof typeof icons, 'Document' | 'Document_Light'> = 'Document';
// Modify the extension based on kind and theme (dark/light).
if (extension) extension = `${kind}_${extension.toLowerCase()}`;
if (!isDark) {
document = 'Document_Light';
if (extension) extension += '_Light';
}
const lightKind = kind + '_Light';
// Select the icon based on the given parameters.
return icons[
// 1. Check if the specific extension icon exists.
(extension && extension in icons
? extension
: // 2. If in light mode, check if the specific kind in light exists.
!isDark && lightKind in icons
? lightKind
: // 3. Check if a general kind icon exists.
kind in icons
? kind
: // 4. Default to the document (or document light) icon.
document) as keyof typeof icons
];
};
export const getLayeredIcon = (kind: string, extension?: string | null) => {
const iconKind =
LayeredIcons[
// Check if specific kind exists.
kind && kind in LayeredIcons ? kind : 'Extras'
];
return extension ? iconKind?.[extension] || LayeredIcons['Extras']?.[extension] : null;
};

View file

@ -0,0 +1,6 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
export { default as fda } from '../../videos/fda.mp4';

View file

@ -1,42 +0,0 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
import { ReactComponent as angular } from './angular.svg';
import { ReactComponent as bun } from './bun.svg';
import { ReactComponent as c } from './c.svg';
import { ReactComponent as cmake } from './cmake.svg';
import { ReactComponent as cpp } from './cpp.svg';
import { ReactComponent as csharp } from './csharp.svg';
import { ReactComponent as css } from './css.svg';
import { ReactComponent as dartlang } from './dartlang.svg';
import { ReactComponent as go } from './go.svg';
import { ReactComponent as html } from './html.svg';
import { ReactComponent as java } from './java.svg';
import { ReactComponent as js } from './js.svg';
import { ReactComponent as kotlin } from './kotlin.svg';
import { ReactComponent as php } from './php.svg';
import { ReactComponent as py } from './py.svg';
import { ReactComponent as ts } from './ts.svg';
import { ReactComponent as vue } from './vue.svg';
export {
angular,
bun,
c,
cmake,
cpp,
csharp,
css,
dartlang,
go,
html,
java,
js,
kotlin,
php,
py,
ts,
vue
};

View file

@ -1,576 +0,0 @@
/*
* This file was automatically generated by a script.
* To regenerate this file, run: pnpm assets gen
*/
import { ReactComponent as ace } from './ace.svg';
import { ReactComponent as acemanifest } from './acemanifest.svg';
import { ReactComponent as adoc } from './adoc.svg';
import { ReactComponent as adonis } from './adonis.svg';
import { ReactComponent as adonisconfig } from './adonisconfig.svg';
import { ReactComponent as afdesign } from './afdesign.svg';
import { ReactComponent as afphoto } from './afphoto.svg';
import { ReactComponent as afpub } from './afpub.svg';
import { ReactComponent as ai } from './ai.svg';
import { ReactComponent as air } from './air.svg';
import { ReactComponent as anim } from './anim.svg';
import { ReactComponent as astro } from './astro.svg';
import { ReactComponent as astroconfig } from './astroconfig.svg';
import { ReactComponent as atomizer } from './atomizer.svg';
import { ReactComponent as azure } from './azure.svg';
import { ReactComponent as babel } from './babel.svg';
import { ReactComponent as bat } from './bat.svg';
import { ReactComponent as bicep } from './bicep.svg';
import { ReactComponent as bicepparam } from './bicepparam.svg';
import { ReactComponent as binary } from './binary.svg';
import { ReactComponent as blade } from './blade.svg';
import { ReactComponent as brotli } from './brotli.svg';
import { ReactComponent as browserslist } from './browserslist.svg';
import { ReactComponent as bsconfig } from './bsconfig.svg';
import { ReactComponent as bundler } from './bundler.svg';
import { ReactComponent as cargo } from './cargo.svg';
import { ReactComponent as cargolock } from './cargolock.svg';
import { ReactComponent as cert } from './cert.svg';
import { ReactComponent as cheader } from './cheader.svg';
import { ReactComponent as civet } from './civet.svg';
import { ReactComponent as cli } from './cli.svg';
import { ReactComponent as clojure } from './clojure.svg';
import { ReactComponent as codeworkspace } from './codeworkspace.svg';
import { ReactComponent as commitlint } from './commitlint.svg';
import { ReactComponent as compodoc } from './compodoc.svg';
import { ReactComponent as composer } from './composer.svg';
import { ReactComponent as composerlock } from './composerlock.svg';
import { ReactComponent as conan } from './conan.svg';
import { ReactComponent as conf } from './conf.svg';
import { ReactComponent as crystal } from './crystal.svg';
import { ReactComponent as cshtml } from './cshtml.svg';
import { ReactComponent as csproj } from './csproj.svg';
import { ReactComponent as cssmap } from './cssmap.svg';
import { ReactComponent as csv } from './csv.svg';
import { ReactComponent as cucumber } from './cucumber.svg';
import { ReactComponent as cypress } from './cypress.svg';
import { ReactComponent as cypressjs } from './cypressjs.svg';
import { ReactComponent as cypressts } from './cypressts.svg';
import { ReactComponent as d } from './d.svg';
import { ReactComponent as diff } from './diff.svg';
import { ReactComponent as docker } from './docker.svg';
import { ReactComponent as dockerdebug } from './dockerdebug.svg';
import { ReactComponent as dockerignore } from './dockerignore.svg';
import { ReactComponent as drawio } from './drawio.svg';
import { ReactComponent as drizzle } from './drizzle.svg';
import { ReactComponent as dsstore } from './dsstore.svg';
import { ReactComponent as dune } from './dune.svg';
import { ReactComponent as duneproject } from './duneproject.svg';
import { ReactComponent as edge } from './edge.svg';
import { ReactComponent as editorconfig } from './editorconfig.svg';
import { ReactComponent as eex } from './eex.svg';
import { ReactComponent as elixir } from './elixir.svg';
import { ReactComponent as elm } from './elm.svg';
import { ReactComponent as env } from './env.svg';
import { ReactComponent as erb } from './erb.svg';
import { ReactComponent as erlang } from './erlang.svg';
import { ReactComponent as esbuild } from './esbuild.svg';
import { ReactComponent as eslint } from './eslint.svg';
import { ReactComponent as exs } from './exs.svg';
import { ReactComponent as exx } from './exx.svg';
import { ReactComponent as farm } from './farm.svg';
import { ReactComponent as figma } from './figma.svg';
import { ReactComponent as flakelock } from './flakelock.svg';
import { ReactComponent as flutter } from './flutter.svg';
import { ReactComponent as flutterlock } from './flutterlock.svg';
import { ReactComponent as flutterpackage } from './flutterpackage.svg';
import { ReactComponent as fonteot } from './fonteot.svg';
import { ReactComponent as fontotf } from './fontotf.svg';
import { ReactComponent as fontttf } from './fontttf.svg';
import { ReactComponent as fontwoff } from './fontwoff.svg';
import { ReactComponent as fontwoff2 } from './fontwoff2.svg';
import { ReactComponent as freemarker } from './freemarker.svg';
import { ReactComponent as fsharp } from './fsharp.svg';
import { ReactComponent as gbl } from './gbl.svg';
import { ReactComponent as git } from './git.svg';
import { ReactComponent as go_package } from './go_package.svg';
import { ReactComponent as godot } from './godot.svg';
import { ReactComponent as gradle } from './gradle.svg';
import { ReactComponent as gradlebat } from './gradlebat.svg';
import { ReactComponent as gradlekotlin } from './gradlekotlin.svg';
import { ReactComponent as grain } from './grain.svg';
import { ReactComponent as graphql } from './graphql.svg';
import { ReactComponent as groovy } from './groovy.svg';
import { ReactComponent as grunt } from './grunt.svg';
import { ReactComponent as gulp } from './gulp.svg';
import { ReactComponent as h } from './h.svg';
import { ReactComponent as haml } from './haml.svg';
import { ReactComponent as handlebars } from './handlebars.svg';
import { ReactComponent as hardhat } from './hardhat.svg';
import { ReactComponent as hashicorp } from './hashicorp.svg';
import { ReactComponent as haskell } from './haskell.svg';
import { ReactComponent as haxe } from './haxe.svg';
import { ReactComponent as haxeml } from './haxeml.svg';
import { ReactComponent as hpp } from './hpp.svg';
import { ReactComponent as htaccess } from './htaccess.svg';
import { ReactComponent as imba } from './imba.svg';
import { ReactComponent as info } from './info.svg';
import { ReactComponent as ipynb } from './ipynb.svg';
import { ReactComponent as jar } from './jar.svg';
import { ReactComponent as jenkins } from './jenkins.svg';
import { ReactComponent as jest } from './jest.svg';
import { ReactComponent as jinja } from './jinja.svg';
import { ReactComponent as jsmap } from './jsmap.svg';
import { ReactComponent as json } from './json.svg';
import { ReactComponent as jsp } from './jsp.svg';
import { ReactComponent as julia } from './julia.svg';
import { ReactComponent as karma } from './karma.svg';
import { ReactComponent as key } from './key.svg';
import { ReactComponent as knex } from './knex.svg';
import { ReactComponent as kotlins } from './kotlins.svg';
import { ReactComponent as krita } from './krita.svg';
import { ReactComponent as latex } from './latex.svg';
import { ReactComponent as launch } from './launch.svg';
import { ReactComponent as less } from './less.svg';
import { ReactComponent as license } from './license.svg';
import { ReactComponent as light_editorconfig } from './light_editorconfig.svg';
import { ReactComponent as liquid } from './liquid.svg';
import { ReactComponent as llvm } from './llvm.svg';
import { ReactComponent as log } from './log.svg';
import { ReactComponent as lua } from './lua.svg';
import { ReactComponent as m } from './m.svg';
import { ReactComponent as makefile } from './makefile.svg';
import { ReactComponent as manifest } from './manifest.svg';
import { ReactComponent as markdown } from './markdown.svg';
import { ReactComponent as markdownx } from './markdownx.svg';
import { ReactComponent as maven } from './maven.svg';
import { ReactComponent as mesh } from './mesh.svg';
import { ReactComponent as mgcb } from './mgcb.svg';
import { ReactComponent as mint } from './mint.svg';
import { ReactComponent as mix } from './mix.svg';
import { ReactComponent as mixlock } from './mixlock.svg';
import { ReactComponent as mjml } from './mjml.svg';
import { ReactComponent as motoko } from './motoko.svg';
import { ReactComponent as mov } from './mov.svg';
import { ReactComponent as mp4 } from './mp4.svg';
import { ReactComponent as mtl } from './mtl.svg';
import { ReactComponent as mustache } from './mustache.svg';
import { ReactComponent as neon } from './neon.svg';
import { ReactComponent as nestjs } from './nestjs.svg';
import { ReactComponent as nestjscontroller } from './nestjscontroller.svg';
import { ReactComponent as nestjsdecorator } from './nestjsdecorator.svg';
import { ReactComponent as nestjsfilter } from './nestjsfilter.svg';
import { ReactComponent as nestjsguard } from './nestjsguard.svg';
import { ReactComponent as nestjsmodule } from './nestjsmodule.svg';
import { ReactComponent as nestjsservice } from './nestjsservice.svg';
import { ReactComponent as netlify } from './netlify.svg';
import { ReactComponent as nextconfig } from './nextconfig.svg';
import { ReactComponent as nextron } from './nextron.svg';
import { ReactComponent as nginx } from './nginx.svg';
import { ReactComponent as nim } from './nim.svg';
import { ReactComponent as nix } from './nix.svg';
import { ReactComponent as njk } from './njk.svg';
import { ReactComponent as nodemon } from './nodemon.svg';
import { ReactComponent as npm } from './npm.svg';
import { ReactComponent as npmlock } from './npmlock.svg';
import { ReactComponent as nuxt } from './nuxt.svg';
import { ReactComponent as nvim } from './nvim.svg';
import { ReactComponent as nvm } from './nvm.svg';
import { ReactComponent as nx } from './nx.svg';
import { ReactComponent as obj } from './obj.svg';
import { ReactComponent as ocaml } from './ocaml.svg';
import { ReactComponent as ocamli } from './ocamli.svg';
import { ReactComponent as ocamll } from './ocamll.svg';
import { ReactComponent as ocamly } from './ocamly.svg';
import { ReactComponent as opengl } from './opengl.svg';
import { ReactComponent as parcel } from './parcel.svg';
import { ReactComponent as perl } from './perl.svg';
import { ReactComponent as perlm } from './perlm.svg';
import { ReactComponent as pfx } from './pfx.svg';
import { ReactComponent as photoshop } from './photoshop.svg';
import { ReactComponent as playright } from './playright.svg';
import { ReactComponent as pnpm } from './pnpm.svg';
import { ReactComponent as pnpmlock } from './pnpmlock.svg';
import { ReactComponent as poetry } from './poetry.svg';
import { ReactComponent as poetrylock } from './poetrylock.svg';
import { ReactComponent as postcssconfig } from './postcssconfig.svg';
import { ReactComponent as powershell } from './powershell.svg';
import { ReactComponent as powershelldata } from './powershelldata.svg';
import { ReactComponent as powershellmodule } from './powershellmodule.svg';
import { ReactComponent as prettier } from './prettier.svg';
import { ReactComponent as prettierignore } from './prettierignore.svg';
import { ReactComponent as prisma } from './prisma.svg';
import { ReactComponent as prolog } from './prolog.svg';
import { ReactComponent as properties } from './properties.svg';
import { ReactComponent as pug } from './pug.svg';
import { ReactComponent as pvk } from './pvk.svg';
import { ReactComponent as pyproject } from './pyproject.svg';
import { ReactComponent as qt } from './qt.svg';
import { ReactComponent as quarkus } from './quarkus.svg';
import { ReactComponent as quasar } from './quasar.svg';
import { ReactComponent as razor } from './razor.svg';
import { ReactComponent as rb } from './rb.svg';
import { ReactComponent as reactjs } from './reactjs.svg';
import { ReactComponent as reactts } from './reactts.svg';
import { ReactComponent as readme } from './readme.svg';
import { ReactComponent as redis } from './redis.svg';
import { ReactComponent as rego } from './rego.svg';
import { ReactComponent as remix } from './remix.svg';
import { ReactComponent as rescript } from './rescript.svg';
import { ReactComponent as rjson } from './rjson.svg';
import { ReactComponent as robots } from './robots.svg';
import { ReactComponent as rollup } from './rollup.svg';
import { ReactComponent as rome } from './rome.svg';
import { ReactComponent as rs } from './rs.svg';
import { ReactComponent as rustfmt } from './rustfmt.svg';
import { ReactComponent as sails } from './sails.svg';
import { ReactComponent as sass } from './sass.svg';
import { ReactComponent as scala } from './scala.svg';
import { ReactComponent as scss } from './scss.svg';
import { ReactComponent as sentinel } from './sentinel.svg';
import { ReactComponent as sequelize } from './sequelize.svg';
import { ReactComponent as sh } from './sh.svg';
import { ReactComponent as slim } from './slim.svg';
import { ReactComponent as sln } from './sln.svg';
import { ReactComponent as smarty } from './smarty.svg';
import { ReactComponent as sol } from './sol.svg';
import { ReactComponent as spc } from './spc.svg';
import { ReactComponent as sql } from './sql.svg';
import { ReactComponent as sqlite } from './sqlite.svg';
import { ReactComponent as storybook } from './storybook.svg';
import { ReactComponent as stylelint } from './stylelint.svg';
import { ReactComponent as stylus } from './stylus.svg';
import { ReactComponent as suo } from './suo.svg';
import { ReactComponent as svelte } from './svelte.svg';
import { ReactComponent as svelteconfig } from './svelteconfig.svg';
import { ReactComponent as svg } from './svg.svg';
import { ReactComponent as swift } from './swift.svg';
import { ReactComponent as symfony } from './symfony.svg';
import { ReactComponent as tailwind } from './tailwind.svg';
import { ReactComponent as tauri } from './tauri.svg';
import { ReactComponent as taze } from './taze.svg';
import { ReactComponent as terrafile } from './terrafile.svg';
import { ReactComponent as terraform } from './terraform.svg';
import { ReactComponent as terraformvars } from './terraformvars.svg';
import { ReactComponent as terraformversion } from './terraformversion.svg';
import { ReactComponent as testjs } from './testjs.svg';
import { ReactComponent as testts } from './testts.svg';
import { ReactComponent as tmpl } from './tmpl.svg';
import { ReactComponent as todo } from './todo.svg';
import { ReactComponent as toml } from './toml.svg';
import { ReactComponent as toolversions } from './toolversions.svg';
import { ReactComponent as tox } from './tox.svg';
import { ReactComponent as travis } from './travis.svg';
import { ReactComponent as tres } from './tres.svg';
import { ReactComponent as tscn } from './tscn.svg';
import { ReactComponent as tsconfig } from './tsconfig.svg';
import { ReactComponent as tsx } from './tsx.svg';
import { ReactComponent as turbo } from './turbo.svg';
import { ReactComponent as twig } from './twig.svg';
import { ReactComponent as typescriptdef } from './typescriptdef.svg';
import { ReactComponent as ui } from './ui.svg';
import { ReactComponent as unocss } from './unocss.svg';
import { ReactComponent as user } from './user.svg';
import { ReactComponent as v } from './v.svg';
import { ReactComponent as vercel } from './vercel.svg';
import { ReactComponent as version } from './version.svg';
import { ReactComponent as vhd } from './vhd.svg';
import { ReactComponent as vhdl } from './vhdl.svg';
import { ReactComponent as video } from './video.svg';
import { ReactComponent as vite } from './vite.svg';
import { ReactComponent as viteenv } from './viteenv.svg';
import { ReactComponent as vitest } from './vitest.svg';
import { ReactComponent as vmod } from './vmod.svg';
import { ReactComponent as vscode } from './vscode.svg';
import { ReactComponent as wasm } from './wasm.svg';
import { ReactComponent as webpack } from './webpack.svg';
import { ReactComponent as windi } from './windi.svg';
import { ReactComponent as xmake } from './xmake.svg';
import { ReactComponent as xml } from './xml.svg';
import { ReactComponent as yaml } from './yaml.svg';
import { ReactComponent as yarn } from './yarn.svg';
import { ReactComponent as yarnerror } from './yarnerror.svg';
import { ReactComponent as zig } from './zig.svg';
import { ReactComponent as zip } from './zip.svg';
export {
ace,
acemanifest,
adoc,
adonis,
adonisconfig,
afdesign,
afphoto,
afpub,
ai,
air,
anim,
astro,
astroconfig,
atomizer,
azure,
babel,
bat,
bicep,
bicepparam,
binary,
blade,
brotli,
browserslist,
bsconfig,
bundler,
cargo,
cargolock,
cert,
cheader,
civet,
cli,
clojure,
codeworkspace,
commitlint,
compodoc,
composer,
composerlock,
conan,
conf,
crystal,
cshtml,
csproj,
cssmap,
csv,
cucumber,
cypress,
cypressjs,
cypressts,
d,
diff,
docker,
dockerdebug,
dockerignore,
drawio,
drizzle,
dsstore,
dune,
duneproject,
edge,
editorconfig,
eex,
elixir,
elm,
env,
erb,
erlang,
esbuild,
eslint,
exs,
exx,
farm,
figma,
flakelock,
flutter,
flutterlock,
flutterpackage,
fonteot,
fontotf,
fontttf,
fontwoff,
fontwoff2,
freemarker,
fsharp,
gbl,
git,
go_package,
godot,
gradle,
gradlebat,
gradlekotlin,
grain,
graphql,
groovy,
grunt,
gulp,
h,
haml,
handlebars,
hardhat,
hashicorp,
haskell,
haxe,
haxeml,
hpp,
htaccess,
imba,
info,
ipynb,
jar,
jenkins,
jest,
jinja,
jsmap,
json,
jsp,
julia,
karma,
key,
knex,
kotlins,
krita,
latex,
launch,
less,
license,
light_editorconfig,
liquid,
llvm,
log,
lua,
m,
makefile,
manifest,
markdown,
markdownx,
maven,
mesh,
mgcb,
mint,
mix,
mixlock,
mjml,
motoko,
mov,
mp4,
mtl,
mustache,
neon,
nestjs,
nestjscontroller,
nestjsdecorator,
nestjsfilter,
nestjsguard,
nestjsmodule,
nestjsservice,
netlify,
nextconfig,
nextron,
nginx,
nim,
nix,
njk,
nodemon,
npm,
npmlock,
nuxt,
nvim,
nvm,
nx,
obj,
ocaml,
ocamli,
ocamll,
ocamly,
opengl,
parcel,
perl,
perlm,
pfx,
photoshop,
playright,
pnpm,
pnpmlock,
poetry,
poetrylock,
postcssconfig,
powershell,
powershelldata,
powershellmodule,
prettier,
prettierignore,
prisma,
prolog,
properties,
pug,
pvk,
pyproject,
qt,
quarkus,
quasar,
razor,
rb,
reactjs,
reactts,
readme,
redis,
rego,
remix,
rescript,
rjson,
robots,
rollup,
rome,
rs,
rustfmt,
sails,
sass,
scala,
scss,
sentinel,
sequelize,
sh,
slim,
sln,
smarty,
sol,
spc,
sql,
sqlite,
storybook,
stylelint,
stylus,
suo,
svelte,
svelteconfig,
svg,
swift,
symfony,
tailwind,
tauri,
taze,
terrafile,
terraform,
terraformvars,
terraformversion,
testjs,
testts,
tmpl,
todo,
toml,
toolversions,
tox,
travis,
tres,
tscn,
tsconfig,
tsx,
turbo,
twig,
typescriptdef,
ui,
unocss,
user,
v,
vercel,
version,
vhd,
vhdl,
video,
vite,
viteenv,
vitest,
vmod,
vscode,
wasm,
webpack,
windi,
xmake,
xml,
yaml,
yarn,
yarnerror,
zig,
zip
};

View file

@ -1,3 +0,0 @@
import Fda from './fda.mp4';
export { Fda };

View file

@ -5,6 +5,7 @@
"exports": {
"./*": "./*",
"./vite": "./vite",
"./vite-solid": "./vite-solid",
"./vite/relativeAliasResolver": "./vite/relativeAliasResolver"
},
"scripts": {
@ -23,7 +24,13 @@
"eslint-plugin-tailwindcss": "^3.13.0",
"eslint-utils": "^3.0.0",
"regexpp": "^3.2.0",
"svgo": "^3.1.0",
"vite-plugin-html": "^3.2.0",
"vite-plugin-svgr": "^3.3.0"
},
"dependencies": {
"vite-plugin-solid": "^2.8.0",
"vite-plugin-solid-svg": "^0.7.0",
"vite-tsconfig-paths": "^4.2.2"
}
}

View file

@ -0,0 +1,23 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"display": "Default",
"compilerOptions": {
"strict": true,
"jsx": "preserve",
"jsxImportSource": "solid-js",
"esModuleInterop": true,
"skipLibCheck": true,
"preserveWatchOutput": true,
"forceConsistentCasingInFileNames": true,
"allowSyntheticDefaultImports": true,
"noUncheckedIndexedAccess": true,
"composite": true,
"declaration": true,
"emitDeclarationOnly": true,
"moduleResolution": "node",
"resolveJsonModule": true,
"module": "ESNext",
"target": "ESNext",
"types": ["vite/client"]
}
}

View file

@ -0,0 +1,21 @@
import { defineConfig } from 'vite';
import { createHtmlPlugin } from 'vite-plugin-html';
import solid from 'vite-plugin-solid';
import svg from 'vite-plugin-solid-svg';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [
tsconfigPaths(),
solid(),
svg({ svgo: { enabled: true } }),
createHtmlPlugin({ minify: true })
],
css: { modules: { localsConvention: 'camelCaseOnly' } },
root: 'src',
build: {
sourcemap: true,
outDir: '../dist',
assetsDir: '.'
}
});

View file

@ -0,0 +1,82 @@
// BE REALLY DAMN CAREFUL MODIFYING THIS FILE: https://github.com/spacedriveapp/spacedrive/pull/1353
import fs from 'fs/promises';
import path from 'path';
import { Alias } from 'vite';
const projectPath = path.resolve(__dirname, '../../../');
const pkgJsonCache = new Map();
// /src/ or \src\, depending on platform
const SRC_DIR_PATH = `${path.sep}src${path.sep}`;
const resolver: Alias = {
find: /^(~\/.+)/,
replacement: '$1',
async customResolver(source, importer) {
let root: null | string = null;
if (importer) importer = path.normalize(importer);
// source is the path imported on typescript, which always use / as path separator
const [_, sourcePath] = source.split('~/');
const relativeImporter = importer?.replace(projectPath, '');
if (relativeImporter && relativeImporter.includes(SRC_DIR_PATH)) {
const [pkg] = relativeImporter.split(SRC_DIR_PATH);
root = path.join(projectPath, pkg, 'src');
} else if (importer) {
const pathObj = path.parse(importer);
let parent = pathObj.dir;
while (parent !== pathObj.root) {
parent = path.dirname(parent);
let hasPkgJson = pkgJsonCache.get(parent);
if (hasPkgJson === undefined)
try {
await fs.stat(path.join(parent, 'package.json'));
pkgJsonCache.set(parent, (hasPkgJson = true));
} catch {
pkgJsonCache.set(parent, (hasPkgJson = false));
}
if (hasPkgJson) {
root = parent;
break;
}
}
if (root === null)
throw new Error(`Failed to resolve import path ${source} in file ${importer}`);
} else {
throw new Error(`Failed to resolve import path ${source} in file ${importer}`);
}
const absolutePath = path.join(root, sourcePath);
const folderItems = await fs.readdir(path.join(absolutePath, '..'));
// sourcePath is derived from the path imported on typescript, which always use / as path separator
const item = folderItems.find((i) => i.startsWith(sourcePath.split('/').at(-1)!))!;
const fullPath = absolutePath + path.extname(item);
const stats = await fs.stat(fullPath);
if (stats.isDirectory()) {
const directoryItems = await fs.readdir(absolutePath + path.extname(item));
const indexFile = directoryItems.find((i) => i.startsWith('index'));
if (!indexFile)
throw new Error(`Failed to resolve import path ${source} in file ${importer}`);
return path.join(absolutePath, indexFile);
} else {
return fullPath;
}
}
};
export default resolver;

View file

@ -0,0 +1,7 @@
module.exports = {
extends: [require.resolve('@sd/config/eslint/web.js')],
parserOptions: {
tsconfigRootDir: __dirname,
project: './tsconfig.json'
}
};

View file

@ -0,0 +1,54 @@
{
"name": "@sd/ui-solid",
"version": "0.0.0",
"license": "GPL-3.0-only",
"main": "src/index.ts",
"types": "src/index.ts",
"type": "module",
"sideEffects": false,
"exports": {
".": "./src/index.ts",
"./src/forms": "./src/forms/index.ts",
"./postcss": "./style/postcss.config.js",
"./tailwind": "./style/tailwind.js",
"./style": "./style/index.js",
"./style/style.scss": "./style/style.scss",
"./package.json": "./package.json"
},
"scripts": {
"lint": "eslint src --cache",
"typecheck": "tsc -b",
"storybook": "storybook dev -p 6006",
"build-storybook": "storybook build"
},
"dependencies": {
"@modular-forms/solid": "^0.20.0",
"@sd/assets": "workspace:*",
"@solid-primitives/debounce": "^1.3.0",
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"phosphor-solid": "^1.1.5",
"solid-js": "^1.8.7",
"solid-spring": "^0.0.7",
"solid-toast": "^0.5.0",
"zod": "~3.22.4"
},
"devDependencies": {
"@babel/core": "^7.23.2",
"@kobalte/tailwindcss": "^0.9.0",
"@sd/config": "workspace:*",
"@tailwindcss/forms": "^0.5.6",
"@tailwindcss/typography": "^0.5.10",
"@types/node": "~18.17.19",
"@types/react": "^18.2.34",
"@types/react-dom": "^18.2.14",
"autoprefixer": "^10.4.16",
"postcss": "^8.4.31",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"sass": "^1.69.5",
"tailwindcss": "^3.3.5",
"tailwindcss-animate": "^1.0.7",
"typescript": "^5.2.2"
}
}

View file

@ -0,0 +1,3 @@
module.exports = {
plugins: [require('tailwindcss'), require('autoprefixer')]
};

View file

@ -0,0 +1,66 @@
import { ComponentProps, For } from 'solid-js';
import { Meta } from 'storybook-solidjs';
import { Button } from './Button';
export default {
title: 'Button',
component: Button,
argTypes: {},
parameters: { backgrounds: { default: 'dark' } },
args: { children: 'Button' }
} satisfies Meta<ComponentProps<typeof Button>>;
type ButtonVariant = NonNullable<ComponentProps<typeof Button>['variant']>;
export const AllVariants = () => {
const buttonVariants: ButtonVariant[] = [
'accent',
'default',
'colored',
'dotted',
'gray',
'outline',
'subtle'
];
return (
<div class="h-screen w-full bg-app p-10">
<h1 class="text-[20px] font-bold text-white">Buttons</h1>
<div class="mb-6 ml-[90px] mt-5 flex flex-col gap-8 text-sm">
<div class="ml-[100px] grid w-full max-w-[850px] grid-cols-9 items-center gap-6">
<For each={buttonVariants}>
{(variant) => <p class="text-white/80">{variant}</p>}
</For>
</div>
<div class="grid w-full max-w-[850px] grid-cols-9 items-center gap-6">
<h1 class="text-[14px] font-bold text-white">Regular</h1>
<For each={buttonVariants}>
{(variant) => <Button variant={variant}>Button</Button>}
</For>
</div>
<div class="grid w-full max-w-[850px] grid-cols-9 items-center gap-6">
<h1 class="text-[14px] font-bold text-white">Hovered</h1>
<For each={buttonVariants}>
{(variant) => (
<Button class="sb-pseudo--hover" variant={variant}>
Button
</Button>
)}
</For>
</div>
<div class="grid w-full max-w-[850px] grid-cols-9 items-center gap-6">
<h1 class="text-[14px] font-bold text-white">Focused</h1>
<For each={buttonVariants}>
{(variant) => (
<Button class="sb-pseudo--focus" variant={variant}>
Button
</Button>
)}
</For>
</div>
</div>
</div>
);
};

View file

@ -0,0 +1,116 @@
import { cva, cx, VariantProps } from 'class-variance-authority';
import { ComponentProps, JSX, splitProps } from 'solid-js';
export interface ButtonBaseProps extends VariantProps<typeof buttonStyles> {}
export type ButtonProps = ButtonBaseProps & ComponentProps<'button'> & { href?: undefined };
export type LinkButtonProps = ButtonBaseProps & ComponentProps<'a'> & { href?: string };
type Button = {
(props: ButtonProps): JSX.Element;
(props: LinkButtonProps): JSX.Element;
};
const hasHref = (props: ButtonProps | LinkButtonProps): props is LinkButtonProps => 'href' in props;
export const buttonStyles = cva(
[
'cursor-default items-center rounded-md border outline-none transition-colors duration-100',
'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-70',
'focus:ring-none focus:ring-offset-none cursor-pointer ring-offset-app-box'
],
{
variants: {
size: {
icon: '!p-1',
lg: 'text-md px-3 py-1.5 font-medium',
md: 'px-2.5 py-1.5 text-sm font-medium',
sm: 'px-2 py-1 text-sm font-medium',
xs: 'px-1.5 py-0.5 text-xs font-normal'
},
variant: {
default: [
'bg-transparent hover:bg-app-hover active:bg-app-selected',
'border-transparent hover:border-app-line active:border-app-line'
],
subtle: [
'border-transparent hover:border-app-line/50 active:border-app-line active:bg-app-box/30'
],
outline: [
'border-sidebar-line/60 hover:border-sidebar-line active:border-sidebar-line/30'
],
dotted: [
`rounded border border-dashed border-sidebar-line/70 text-center text-xs font-medium text-ink-faint transition hover:border-sidebar-line hover:bg-sidebar-selected/5`
],
gray: [
'bg-app-button hover:bg-app-hover focus:bg-app-selected',
'border-app-line hover:border-app-line focus:ring-1 focus:ring-accent'
],
accent: [
'border border-accent bg-accent text-white shadow-md shadow-app-shade/10 hover:bg-accent-faint focus:outline-none',
'focus:ring-1 focus:ring-accent focus:ring-offset-2 focus:ring-offset-app-selected'
],
colored: ['text-white shadow-sm hover:bg-opacity-90 active:bg-opacity-100'],
bare: ''
},
rounding: {
none: 'rounded-none',
left: 'rounded-l-md rounded-r-none',
right: 'rounded-l-none rounded-r-md',
both: 'rounded-md'
}
},
defaultVariants: {
size: 'sm',
variant: 'default'
}
}
);
export function Button(props: ButtonProps | LinkButtonProps) {
const [_, otherProps] = splitProps(props, ['size', 'variant', 'rounding', 'class']);
const buttonClasses = () =>
buttonStyles({
size: props.size,
variant: props.variant,
rounding: props.rounding,
class: props.class
});
return (
<>
{hasHref(props) ? (
<a
{...(otherProps as any)}
class={cx(buttonClasses, 'inline-block no-underline')}
/>
) : (
<button {...(otherProps as any)} type="button" class={buttonClasses()} />
)}
</>
);
}
export function ButtonLink(props: LinkButtonProps) {
const [_, otherProps] = splitProps(props, ['size', 'variant', 'rounding', 'class']);
const buttonClasses = () =>
buttonStyles({
size: props.size,
variant: props.variant,
rounding: props.rounding
});
return (
<a
{...otherProps}
class={cx(
buttonClasses(),
'no-underline disabled:cursor-not-allowed disabled:opacity-50',
props.class
)}
/>
);
}

View file

@ -0,0 +1 @@
export * from './Button';

View file

@ -0,0 +1,117 @@
:root {
--dark-hue: 235; //300, 295
--light-hue: 235;
// global
--color-black: 0, 0%, 0%;
--color-white: 0, 0%, 100%;
// accent theme colors
--color-accent: 208, 100%, 57%;
--color-accent-faint: 208, 100%, 64%;
--color-accent-deep: 208, 100%, 47%;
// text
--color-ink: var(--dark-hue), 0%, 100%;
--color-ink-dull: var(--dark-hue), 10%, 70%;
--color-ink-faint: var(--dark-hue), 10%, 55%;
// sidebar
--color-sidebar: var(--dark-hue), 15%, 7%;
--color-sidebar-box: var(--dark-hue), 15%, 16%;
--color-sidebar-line: var(--dark-hue), 15%, 23%;
--color-sidebar-ink: var(--dark-hue), 0%, 100%;
--color-sidebar-ink-dull: var(--dark-hue), 10%, 70%;
--color-sidebar-ink-faint: var(--dark-hue), 10%, 55%;
--color-sidebar-divider: var(--dark-hue), 15%, 17%;
--color-sidebar-button: var(--dark-hue), 15%, 18%;
--color-sidebar-selected: var(--dark-hue), 15%, 24%;
--color-sidebar-shade: var(--dark-hue), 15%, 23%;
// main
--color-app: var(--dark-hue), 15%, 13%;
--color-app-box: var(--dark-hue), 15%, 18%;
--color-app-dark-box: var(--dark-hue), 15%, 15%;
--color-app-darker-box: var(--dark-hue), 16%, 11%;
--color-app-light-box: var(--dark-hue), 15%, 34%;
--color-app-overlay: var(--dark-hue), 15%, 17%;
--color-app-input: var(--dark-hue), 15%, 20%;
--color-app-focus: var(--dark-hue), 15%, 10%;
--color-app-line: var(--dark-hue), 15%, 23%;
--color-app-divider: var(--dark-hue), 15%, 5%;
--color-app-button: var(--dark-hue), 15%, 23%;
--color-app-hover: var(--dark-hue), 15%, 25%;
--color-app-selected: var(--dark-hue), 15%, 26%;
--color-app-selected-item: var(--dark-hue), 15%, 18%;
--color-app-active: var(--dark-hue), 15%, 30%;
--color-app-shade: var(--dark-hue), 15%, 0%;
--color-app-frame: var(--dark-hue), 15%, 25%;
--color-app-slider: var(--dark-hue), 15%, 20%;
--color-app-explorer-scrollbar: var(--dark-hue), 20%, 25%;
// menu
--color-menu: var(--dark-hue), 25%, 5%;
--color-menu-line: var(--dark-hue), 15%, 11%;
--color-menu-ink: var(--dark-hue), 5%, 100%;
--color-menu-faint: var(--dark-hue), 5%, 80%;
--color-menu-hover: var(--dark-hue), 15%, 30%;
--color-menu-selected: var(--dark-hue), 5%, 30%;
--color-menu-shade: var(--dark-hue), 5%, 0%;
}
.vanilla-theme {
// global
--color-black: 0, 0%, 0%;
--color-white: 0, 0%, 100%;
// accent theme colors
--color-accent: 208, 100%, 57%;
--color-accent-faint: 208, 100%, 67%;
--color-accent-deep: 208, 100%, 47%;
// text
--color-ink: var(--light-hue), 5%, 20%;
--color-ink-dull: var(--light-hue), 5%, 30%;
--color-ink-faint: var(--light-hue), 5%, 40%;
// sidebar
--color-sidebar: var(--light-hue), 5%, 96%;
--color-sidebar-box: var(--light-hue), 5%, 100%;
--color-sidebar-line: var(--light-hue), 10%, 85%;
--color-sidebar-ink: var(--light-hue), 5%, 20%;
--color-sidebar-ink-dull: var(--light-hue), 5%, 30%;
--color-sidebar-ink-faint: var(--light-hue), 5%, 40%;
--color-sidebar-divider: var(--light-hue), 15%, 93%;
--color-sidebar-button: var(--light-hue), 15%, 100%;
--color-sidebar-selected: var(--light-hue), 10%, 80%;
--color-sidebar-shade: var(--light-hue), 15%, 100%;
// main
--color-app: var(--light-hue), 5%, 100%;
--color-app-box: var(--light-hue), 5%, 98%;
--color-app-dark-box: var(--light-hue), 5%, 97%;
--color-app-darker-box: var(--light-hue), 5%, 95%;
--color-app-light-box: var(--light-hue), 5%, 100%;
--color-app-overlay: var(--light-hue), 5%, 100%;
--color-app-overlay-shade: var(--light-hue), 15%, 95%;
--color-app-input: var(--light-hue), 5%, 100%;
--color-app-focus: var(--light-hue), 5%, 98%;
--color-app-line: var(--light-hue), 5%, 90%;
--color-app-button: var(--light-hue), 5%, 100%;
--color-app-divider: var(--light-hue), 5%, 80%;
--color-app-selected: var(--light-hue), 5%, 93%;
--color-app-selected-item: var(--light-hue), 5%, 96%;
--color-app-hover: var(--light-hue), 5%, 97%;
--color-app-active: var(--light-hue), 5%, 87%;
--color-app-shade: var(--light-hue), 15%, 50%;
--color-app-frame: 0, 0%, 100%;
--color-app-slider: var(--light-hue), 5%, 95%;
--color-app-explorer-scrollbar: var(--light-hue), 5%, 75%;
// menu
--color-menu: var(--light-hue), 5%, 100%;
--color-menu-line: var(--light-hue), 5%, 95%;
--color-menu-ink: var(--light-hue), 5%, 20%;
--color-menu-faint: var(--light-hue), 5%, 80%;
--color-menu-hover: var(--light-hue), 15%, 20%;
--color-menu-selected: var(--light-hue), 5%, 30%;
--color-menu-shade: var(--light-hue), 5%, 0%;
// --color-menu: var(--light-hue), 16%, 99%;
// --color-menu-line: var(--light-hue), 5%, 90%;
// --color-menu-ink: var(--light-hue), 5%, 30%;
// --color-menu-faint: var(--light-hue), 5%, 80%;
// --color-menu-hover: var(--light-hue), 15%, 20%;
// --color-menu-selected: var(--light-hue), 5%, 30%;
// --color-menu-shade: var(--light-hue), 5%, 0%;
}

View file

@ -0,0 +1 @@
import './style.scss';

View file

@ -0,0 +1 @@
module.exports = require('../postcss.config');

View file

@ -0,0 +1,65 @@
@import './colors.scss';
@tailwind base;
@tailwind components;
@tailwind utilities;
@tailwind variants;
@layer utilities {
/* Hide scrollbar for Chrome, Safari and Opera */
.no-scrollbar::-webkit-scrollbar {
display: none;
}
/* Hide scrollbar for IE, Edge and Firefox */
.no-scrollbar {
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
}
}
.html {
background: #404040;
}
.backdrop-blur {
backdrop-filter: blur(18px);
-webkit-backdrop-filter: blur(18px);
}
.navbar-blur {
backdrop-filter: blur(28px);
-webkit-backdrop-filter: blur(28px);
}
.top-bar-blur {
@apply border-app-line/50;
backdrop-filter: saturate(120%) blur(18px);
}
.inset-center {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.inset-center-blur {
position: absolute;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
}
.mask-fade-out {
// -webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1));
mask-image: linear-gradient(to top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 50px);
}
.cool-shadow {
box-shadow: rgb(0 0 0 / 9%) 0px 3px 12px;
}
// Without this Tauri displays button differently to web
[type='button'] {
-webkit-appearance: none;
}

View file

@ -0,0 +1,213 @@
const defaultTheme = require('tailwindcss/defaultTheme');
function alpha(variableName) {
// some tailwind magic to allow us to specify opacity with CSS variables (eg: bg-app/80)
// https://tailwindcss.com/docs/customizing-colors#using-css-variables
return `hsla(var(${variableName}), <alpha-value>)`;
}
module.exports = function (app, options) {
let config = {
content: [
`../../apps/${app}/src/**/*.{ts,tsx,html,stories.tsx}`,
'../../packages/*/src/**/*.{ts,tsx,html,stories.tsx}',
'../../interface/**/*.{ts,tsx,html,stories.tsx}'
],
darkMode: 'class',
theme: {
screens: {
xs: '475px',
sm: '650px',
md: '868px',
lg: '1024px',
xl: '1280px',
...defaultTheme.screens
},
fontSize: {
'tiny': '.65rem',
'xs': '.75rem',
'sm': '.80rem',
'base': '1rem',
'lg': '1.125rem',
'xl': '1.25rem',
'2xl': '1.5rem',
'3xl': '1.875rem',
'4xl': '2.25rem',
'5xl': '3rem',
'6xl': '4rem',
'7xl': '5rem'
},
extend: {
colors: {
accent: {
DEFAULT: alpha('--color-accent'),
faint: alpha('--color-accent-faint'),
deep: alpha('--color-accent-deep')
},
ink: {
DEFAULT: alpha('--color-ink'),
dull: alpha('--color-ink-dull'),
faint: alpha('--color-ink-faint')
},
sidebar: {
DEFAULT: alpha('--color-sidebar'),
box: alpha('--color-sidebar-box'),
line: alpha('--color-sidebar-line'),
ink: alpha('--color-sidebar-ink'),
inkFaint: alpha('--color-sidebar-ink-faint'),
inkDull: alpha('--color-sidebar-ink-dull'),
divider: alpha('--color-sidebar-divider'),
button: alpha('--color-sidebar-button'),
selected: alpha('--color-sidebar-selected'),
shade: alpha('--color-sidebar-shade')
},
app: {
DEFAULT: alpha('--color-app'),
box: alpha('--color-app-box'),
darkBox: alpha('--color-app-dark-box'),
darkerBox: alpha('--color-app-darker-box'),
lightBox: alpha('--color-app-light-box'),
overlay: alpha('--color-app-overlay'),
input: alpha('--color-app-input'),
focus: alpha('--color-app-focus'),
line: alpha('--color-app-line'),
divider: alpha('--color-app-divider'),
button: alpha('--color-app-button'),
selected: alpha('--color-app-selected'),
selectedItem: alpha('--color-app-selected-item'),
hover: alpha('--color-app-hover'),
active: alpha('--color-app-active'),
shade: alpha('--color-app-shade'),
frame: alpha('--color-app-frame'),
slider: alpha('--color-app-slider'),
explorerScrollbar: alpha('--color-app-explorer-scrollbar')
},
menu: {
DEFAULT: alpha('--color-menu'),
line: alpha('--color-menu-line'),
hover: alpha('--color-menu-hover'),
selected: alpha('--color-menu-selected'),
shade: alpha('--color-menu-shade'),
ink: alpha('--color-menu-ink'),
faint: alpha('--color-menu-faint')
},
// legacy support
primary: {
DEFAULT: '#2599FF',
50: '#FFFFFF',
100: '#F1F8FF',
200: '#BEE1FF',
300: '#8BC9FF',
400: '#58B1FF',
500: '#2599FF',
600: '#0081F1',
700: '#0065BE',
800: '#004A8B',
900: '#002F58'
},
gray: {
DEFAULT: '#505468',
50: '#F1F1F4',
100: '#E8E9ED',
150: '#E0E1E6',
200: '#D8DAE3',
250: '#D2D4DC',
300: '#C0C2CE',
350: '#A6AABF',
400: '#9196A8',
450: '#71758A',
500: '#303544',
550: '#20222d',
600: '#171720',
650: '#121219',
700: '#121317',
750: '#0D0E11',
800: '#0C0C0F',
850: '#08090D',
900: '#060609',
950: '#030303'
}
},
extend: {
transitionTimingFunction: {
'css': 'ease',
'css-in': 'ease-in',
'css-out': 'ease-out',
'css-in-out': 'ease-in-out',
'in-sine': 'cubic-bezier(0.12, 0, 0.39, 0)',
'out-sine': 'cubic-bezier(0.61, 1, 0.88, 1)',
'in-out-sine': 'cubic-bezier(0.37, 0, 0.63, 1)',
'in-quad': 'cubic-bezier(0.11, 0, 0.5, 0)',
'out-quad': 'cubic-bezier(0.5, 1, 0.89, 1)',
'in-out-quad': 'cubic-bezier(0.45, 0, 0.55, 1)',
'in-cubic': 'cubic-bezier(0.32, 0, 0.67, 0)',
'out-cubic': 'cubic-bezier(0.33, 1, 0.68, 1)',
'in-out-cubic': 'cubic-bezier(0.65, 0, 0.35, 1)',
'in-quart': 'cubic-bezier(0.5, 0, 0.75, 0)',
'out-quart': 'cubic-bezier(0.25, 1, 0.5, 1)',
'in-out-quart': 'cubic-bezier(0.76, 0, 0.24, 1)',
'in-quint': 'cubic-bezier(0.64, 0, 0.78, 0)',
'out-quint': 'cubic-bezier(0.22, 1, 0.36, 1)',
'in-out-quint': 'cubic-bezier(0.83, 0, 0.17, 1)',
'in-expo': 'cubic-bezier(0.7, 0, 0.84, 0)',
'out-expo': 'cubic-bezier(0.16, 1, 0.3, 1)',
'in-out-expo': 'cubic-bezier(0.87, 0, 0.13, 1)',
'in-circ': 'cubic-bezier(0.55, 0, 1, 0.45)',
'out-circ': 'cubic-bezier(0, 0.55, 0.45, 1)',
'in-out-circ': 'cubic-bezier(0.85, 0, 0.15, 1)',
'in-back': 'cubic-bezier(0.36, 0, 0.66, -0.56)',
'out-back': 'cubic-bezier(0.34, 1.56, 0.64, 1)',
'in-out-back': 'cubic-bezier(0.68, -0.6, 0.32, 1.6)'
}
}
}
},
plugins: [
require('@tailwindcss/forms'),
require('tailwindcss-animate'),
require('@headlessui/tailwindcss'),
require('tailwindcss-radix')(),
require('@tailwindcss/typography')
]
};
return config;
};
// primary: {
// DEFAULT: '#2599FF',
// 50: '#FFFFFF',
// 100: '#F1F8FF',
// 200: '#BEE1FF',
// 300: '#8BC9FF',
// 400: '#58B1FF',
// 500: '#2599FF',
// 600: '#0081F1',
// 700: '#0065BE',
// 800: '#004A8B',
// 900: '#002F58'
// },
// gray: {
// DEFAULT: '#505468',
// 50: '#F1F1F4',
// 100: '#E8E9ED',
// 150: '#E0E1E6',
// 200: '#D8DAE3',
// 250: '#D2D4DC',
// 300: '#C0C2CE',
// 350: '#A6AABF',
// 400: '#9196A8',
// 450: '#71758A',
// 500: '#303544',
// 550: '#20222d',
// 600: '#171720',
// 650: '#121219',
// 700: '#121317',
// 750: '#0D0E11',
// 800: '#0C0C0F',
// 850: '#08090D',
// 900: '#060609',
// 950: '#030303'
// }
// },
// fontFamily: { sans: ['Inter', ...defaultTheme.fontFamily.sans] }

View file

@ -0,0 +1,4 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
@tailwind variants;

View file

@ -0,0 +1,5 @@
// const colors = require('tailwindcss/colors');
// const plugin = require('tailwindcss/plugin');
// const defaultTheme = require('tailwindcss/defaultTheme');
module.exports = require('./style/tailwind')('web');

View file

@ -0,0 +1,8 @@
{
"extends": "../config/solid.tsconfig.json",
"compilerOptions": {
"rootDir": "src",
"declarationDir": "dist"
},
"include": ["src"]
}

File diff suppressed because it is too large Load diff