Lint using tsc; fix type errors

This commit is contained in:
Gilbert 2024-04-11 18:10:39 -05:00
parent f8d706233e
commit 2274e8d145
233 changed files with 613 additions and 3545 deletions

View File

@ -4,15 +4,15 @@
"workspaces": [ "workspaces": [
"packages/*" "packages/*"
], ],
"dependencies": {},
"devDependencies": { "devDependencies": {
"depcheck": "^1.4.2",
"husky": "^8.0.3", "husky": "^8.0.3",
"lerna": "^8.0.0", "lerna": "^8.0.0",
"depcheck": "^1.4.2" "patch-package": "^8.0.0"
}, },
"scripts": { "scripts": {
"prepare": "husky install", "prepare": "husky install",
"build": "lerna run build --stream", "build": "lerna run build --stream",
"lint": "lerna run lint --stream -- --max-warnings=0" "lint": "lerna run lint --stream"
} }
} }

View File

@ -10,6 +10,7 @@
"@types/debug": "^4.1.5", "@types/debug": "^4.1.5",
"@types/express": "^4.17.21", "@types/express": "^4.17.21",
"@types/node": "^20.11.0", "@types/node": "^20.11.0",
"@types/semver": "^7.5.8",
"apollo-server-core": "^3.13.0", "apollo-server-core": "^3.13.0",
"apollo-server-express": "^3.13.0", "apollo-server-express": "^3.13.0",
"cors": "^2.8.5", "cors": "^2.8.5",
@ -37,6 +38,7 @@
"build": "yarn clean && tsc && yarn copy-assets", "build": "yarn clean && tsc && yarn copy-assets",
"format": "prettier --write .", "format": "prettier --write .",
"format:check": "prettier --check .", "format:check": "prettier --check .",
"lint": "tsc --noEmit",
"test:registry:init": "DEBUG=snowball:* ts-node ./test/initialize-registry.ts", "test:registry:init": "DEBUG=snowball:* ts-node ./test/initialize-registry.ts",
"test:registry:publish-deploy-records": "DEBUG=snowball:* ts-node ./test/publish-deploy-records.ts", "test:registry:publish-deploy-records": "DEBUG=snowball:* ts-node ./test/publish-deploy-records.ts",
"test:db:load:fixtures": "DEBUG=snowball:* ts-node ./test/initialize-db.ts", "test:db:load:fixtures": "DEBUG=snowball:* ts-node ./test/initialize-db.ts",
@ -50,4 +52,4 @@
"prettier": "^3.1.1", "prettier": "^3.1.1",
"workspace": "^0.0.1-preview.1" "workspace": "^0.0.1-preview.1"
} }
} }

View File

@ -15,4 +15,4 @@ module.exports = {
{ allowConstantExport: true }, { allowConstantExport: true },
], ],
}, },
} };

View File

@ -22,7 +22,7 @@ export default {
project: ['./tsconfig.json', './tsconfig.node.json'], project: ['./tsconfig.json', './tsconfig.node.json'],
tsconfigRootDir: __dirname, tsconfigRootDir: __dirname,
}, },
} };
``` ```
- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` - Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked`

View File

@ -6,23 +6,9 @@
<meta name="description" content="snowball tools dashboard" /> <meta name="description" content="snowball tools dashboard" />
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/favicon.ico" />
<link rel="apple-touch-icon" href="/logo192.png" /> <link rel="apple-touch-icon" href="/logo192.png" />
<link <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
rel="apple-touch-icon" <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
sizes="180x180" <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
href="/apple-touch-icon.png"
/>
<link
rel="icon"
type="image/png"
sizes="32x32"
href="/favicon-32x32.png"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="/favicon-16x16.png"
/>
<link rel="manifest" href="/site.webmanifest" /> <link rel="manifest" href="/site.webmanifest" />
<meta name="msapplication-TileColor" content="#2d89ef" /> <meta name="msapplication-TileColor" content="#2d89ef" />
<meta name="theme-color" content="#ffffff" /> <meta name="theme-color" content="#ffffff" />

View File

@ -6,12 +6,12 @@
"scripts": { "scripts": {
"dev": "vite --port 3000", "dev": "vite --port 3000",
"build": "tsc && vite build", "build": "tsc && vite build",
"lint": "tsc --noEmit",
"preview": "vite preview" "preview": "vite preview"
}, },
"dependencies": { "dependencies": {
"@fontsource-variable/jetbrains-mono": "^5.0.19", "@fontsource-variable/jetbrains-mono": "^5.0.19",
"@fontsource/inter": "^5.0.16", "@fontsource/inter": "^5.0.16",
"@material-tailwind/react": "^2.1.7",
"@radix-ui/react-avatar": "^1.0.4", "@radix-ui/react-avatar": "^1.0.4",
"@radix-ui/react-checkbox": "^1.0.4", "@radix-ui/react-checkbox": "^1.0.4",
"@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-dialog": "^1.0.5",
@ -25,6 +25,7 @@
"@snowballtools/auth-lit": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/auth-lit", "@snowballtools/auth-lit": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/auth-lit",
"@snowballtools/js-sdk": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/js-sdk", "@snowballtools/js-sdk": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/js-sdk",
"@snowballtools/link-lit-alchemy-light": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/link-lit-alchemy-light", "@snowballtools/link-lit-alchemy-light": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/link-lit-alchemy-light",
"@snowballtools/material-tailwind-react-fork": "^2.1.10",
"@snowballtools/smartwallet-alchemy-light": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/smartwallet-alchemy-light", "@snowballtools/smartwallet-alchemy-light": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/smartwallet-alchemy-light",
"@snowballtools/types": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/types", "@snowballtools/types": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/types",
"@snowballtools/utils": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/utils", "@snowballtools/utils": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/utils",
@ -34,7 +35,7 @@
"@testing-library/user-event": "^13.5.0", "@testing-library/user-event": "^13.5.0",
"@types/jest": "^27.5.2", "@types/jest": "^27.5.2",
"@types/node": "^16.18.68", "@types/node": "^16.18.68",
"@types/react": "^18.2.42", "@types/react": "^18.2.77",
"@types/react-dom": "^18.2.17", "@types/react-dom": "^18.2.17",
"@walletconnect/ethereum-provider": "^2.12.2", "@walletconnect/ethereum-provider": "^2.12.2",
"@web3modal/siwe": "^4.0.5", "@web3modal/siwe": "^4.0.5",
@ -79,4 +80,4 @@
"typescript": "^5.3.3", "typescript": "^5.3.3",
"vite": "^5.2.0" "vite": "^5.2.0"
} }
} }

View File

@ -3,4 +3,4 @@ export default {
tailwindcss: {}, tailwindcss: {},
autoprefixer: {}, autoprefixer: {},
}, },
} };

View File

@ -1,4 +1,3 @@
import React from 'react';
import { render, screen } from '@testing-library/react'; import { render, screen } from '@testing-library/react';
import App from './App'; import App from './App';

View File

@ -1,51 +1,50 @@
import React from "react"; import { createBrowserRouter, RouterProvider } from 'react-router-dom';
import { createBrowserRouter, RouterProvider } from "react-router-dom";
import Projects from "./pages/org-slug"; import Projects from './pages/org-slug';
import Settings from "./pages/org-slug/Settings"; import Settings from './pages/org-slug/Settings';
import { import {
projectsRoutesWithSearch, projectsRoutesWithSearch,
projectsRoutesWithoutSearch, projectsRoutesWithoutSearch,
} from "./pages/org-slug/projects/routes"; } from './pages/org-slug/projects/routes';
import ProjectSearchLayout from "./layouts/ProjectSearch"; import ProjectSearchLayout from './layouts/ProjectSearch';
import Index from "./pages"; import Index from './pages';
import Login from "./pages/Login"; import Login from './pages/Login';
import { DashboardLayout } from "./pages/org-slug/layout"; import { DashboardLayout } from './pages/org-slug/layout';
const router = createBrowserRouter([ const router = createBrowserRouter([
{ {
path: ":orgSlug", path: ':orgSlug',
element: <DashboardLayout />, element: <DashboardLayout />,
children: [ children: [
{ {
element: <ProjectSearchLayout />, element: <ProjectSearchLayout />,
children: [ children: [
{ {
path: "", path: '',
element: <Projects />, element: <Projects />,
}, },
{ {
path: "projects", path: 'projects',
children: projectsRoutesWithSearch, children: projectsRoutesWithSearch,
}, },
], ],
}, },
{ {
path: "settings", path: 'settings',
element: <Settings />, element: <Settings />,
}, },
{ {
path: "projects", path: 'projects',
children: projectsRoutesWithoutSearch, children: projectsRoutesWithoutSearch,
}, },
], ],
}, },
{ {
path: "/", path: '/',
element: <Index />, element: <Index />,
}, },
{ {
path: "/login", path: '/login',
element: <Login />, element: <Login />,
}, },
]); ]);

View File

@ -1,37 +1,37 @@
export default [ export default [
{ {
id: "1", id: '1',
name: "Progressive Web App (PWA)", name: 'Progressive Web App (PWA)',
icon: "pwa", icon: 'pwa',
repoFullName: `${import.meta.env.VITE_GITHUB_PWA_TEMPLATE_REPO}`, repoFullName: `${import.meta.env.VITE_GITHUB_PWA_TEMPLATE_REPO}`,
isComingSoon: false, isComingSoon: false,
}, },
{ {
id: "2", id: '2',
name: "Image Upload PWA", name: 'Image Upload PWA',
icon: "pwa", icon: 'pwa',
repoFullName: `${import.meta.env.VITE_GITHUB_IMAGE_UPLOAD_PWA_TEMPLATE_REPO}`, repoFullName: `${import.meta.env.VITE_GITHUB_IMAGE_UPLOAD_PWA_TEMPLATE_REPO}`,
isComingSoon: false, isComingSoon: false,
}, },
{ {
id: "3", id: '3',
name: "Kotlin", name: 'Kotlin',
icon: "kotlin", icon: 'kotlin',
repoFullName: "", repoFullName: '',
isComingSoon: true, isComingSoon: true,
}, },
{ {
id: "4", id: '4',
name: "React Native", name: 'React Native',
icon: "react-native", icon: 'react-native',
repoFullName: "", repoFullName: '',
isComingSoon: true, isComingSoon: true,
}, },
{ {
id: "5", id: '5',
name: "Swift", name: 'Swift',
icon: "swift", icon: 'swift',
repoFullName: "", repoFullName: '',
isComingSoon: true, isComingSoon: true,
}, },
]; ];

View File

@ -1,4 +1,4 @@
import React, { useCallback, useMemo, useState } from 'react'; import { useCallback, useMemo, useState } from 'react';
import { format } from 'date-fns'; import { format } from 'date-fns';
import { import {
DayPicker, DayPicker,
@ -12,7 +12,7 @@ import {
Popover, Popover,
PopoverContent, PopoverContent,
PopoverHandler, PopoverHandler,
} from '@material-tailwind/react'; } from '@snowballtools/material-tailwind-react-fork';
import HorizontalLine from './HorizontalLine'; import HorizontalLine from './HorizontalLine';
@ -120,14 +120,11 @@ const DatePicker = ({
handler={(value) => setIsOpen(value)} handler={(value) => setIsOpen(value)}
> >
<PopoverHandler> <PopoverHandler>
<Input <Input onChange={() => null} value={inputValue} />
onChange={() => null}
value={inputValue}
crossOrigin={undefined}
/>
</PopoverHandler> </PopoverHandler>
{/* TODO: Figure out what placeholder is for */} {/* TODO: Figure out what placeholder is for */}
<PopoverContent placeholder={''}> {/* @ts-ignore */}
<PopoverContent>
{mode === 'single' && ( {mode === 'single' && (
<DayPicker <DayPicker
mode="single" mode="single"
@ -152,7 +149,6 @@ const DatePicker = ({
className="rounded-full mr-2" className="rounded-full mr-2"
variant="outlined" variant="outlined"
onClick={() => setIsOpen(false)} onClick={() => setIsOpen(false)}
placeholder={''}
> >
Cancel Cancel
</Button> </Button>
@ -162,7 +158,6 @@ const DatePicker = ({
className="rounded-full" className="rounded-full"
color="gray" color="gray"
onClick={() => handleRangeSelect()} onClick={() => handleRangeSelect()}
placeholder={''}
> >
Select Select
</Button> </Button>

View File

@ -1,4 +1,3 @@
import React from 'react';
import { import {
default as ReactDropdown, default as ReactDropdown,
Option as ReactDropdownOption, Option as ReactDropdownOption,

View File

@ -1,5 +1,5 @@
import { Duration } from 'luxon'; import { Duration } from 'luxon';
import React, { ComponentPropsWithoutRef } from 'react'; import { ComponentPropsWithoutRef } from 'react';
import { cn } from 'utils/classnames'; import { cn } from 'utils/classnames';
export interface FormatMilliSecondProps export interface FormatMilliSecondProps

View File

@ -1,5 +1,3 @@
import React from 'react';
const HorizontalLine = () => { const HorizontalLine = () => {
return <hr className="h-px bg-gray-100 border-0" />; return <hr className="h-px bg-gray-100 border-0" />;
}; };

View File

@ -1,4 +1,3 @@
import React from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import { Heading } from './shared/Heading'; import { Heading } from './shared/Heading';

View File

@ -1,9 +1,8 @@
import React from "react"; import { StepperNav } from './VerticalStepper';
import { StepperNav } from "./VerticalStepper";
const COLOR_COMPLETED = "#059669"; const COLOR_COMPLETED = '#059669';
const COLOR_ACTIVE = "#CFE6FC"; const COLOR_ACTIVE = '#CFE6FC';
const COLOR_NOT_STARTED = "#F1F5F9"; const COLOR_NOT_STARTED = '#F1F5F9';
interface StepperValue { interface StepperValue {
step: number; step: number;
@ -25,8 +24,8 @@ const Stepper = ({ activeStep, stepperValues }: StepperProps) => {
<div <div
className={`text-sm ${ className={`text-sm ${
activeStep === stepperValue.step activeStep === stepperValue.step
? "text-black font-semibold" ? 'text-black font-semibold'
: "text-gray-600" : 'text-gray-600'
}`} }`}
> >
{stepperValue.label} {stepperValue.label}

View File

@ -1,4 +1,3 @@
import React from 'react';
import { useStopwatch } from 'react-timer-hook'; import { useStopwatch } from 'react-timer-hook';
import FormatMillisecond, { FormatMilliSecondProps } from './FormatMilliSecond'; import FormatMillisecond, { FormatMilliSecondProps } from './FormatMilliSecond';

View File

@ -1,4 +1,3 @@
import React from 'react';
import * as CSS from 'csstype'; import * as CSS from 'csstype';
// //

View File

@ -1,7 +1,6 @@
import ConfirmDialog, { import ConfirmDialog, {
ConfirmDialogProps, ConfirmDialogProps,
} from 'components/shared/ConfirmDialog'; } from 'components/shared/ConfirmDialog';
import React from 'react';
interface CancelDeploymentDialogProps extends ConfirmDialogProps {} interface CancelDeploymentDialogProps extends ConfirmDialogProps {}

View File

@ -2,7 +2,7 @@ import ConfirmDialog, {
ConfirmDialogProps, ConfirmDialogProps,
} from 'components/shared/ConfirmDialog'; } from 'components/shared/ConfirmDialog';
import { Deployment, Domain } from 'gql-client'; import { Deployment, Domain } from 'gql-client';
import React from 'react';
import DeploymentDialogBodyCard from 'components/projects/project/deployments/DeploymentDialogBodyCard'; import DeploymentDialogBodyCard from 'components/projects/project/deployments/DeploymentDialogBodyCard';
import { Button } from 'components/shared/Button'; import { Button } from 'components/shared/Button';
import { import {

View File

@ -1,7 +1,6 @@
import ConfirmDialog, { import ConfirmDialog, {
ConfirmDialogProps, ConfirmDialogProps,
} from 'components/shared/ConfirmDialog'; } from 'components/shared/ConfirmDialog';
import React from 'react';
interface DeleteDomainDialogProps extends ConfirmDialogProps { interface DeleteDomainDialogProps extends ConfirmDialogProps {
projectName: string; projectName: string;

View File

@ -1,7 +1,6 @@
import ConfirmDialog, { import ConfirmDialog, {
ConfirmDialogProps, ConfirmDialogProps,
} from 'components/shared/ConfirmDialog'; } from 'components/shared/ConfirmDialog';
import React from 'react';
interface DeleteVariableDialogProps extends ConfirmDialogProps { interface DeleteVariableDialogProps extends ConfirmDialogProps {
variableKey: string; variableKey: string;

View File

@ -1,7 +1,6 @@
import ConfirmDialog, { import ConfirmDialog, {
ConfirmDialogProps, ConfirmDialogProps,
} from 'components/shared/ConfirmDialog'; } from 'components/shared/ConfirmDialog';
import React from 'react';
interface DeleteWebhookDialogProps extends ConfirmDialogProps { interface DeleteWebhookDialogProps extends ConfirmDialogProps {
webhookUrl: string; webhookUrl: string;

View File

@ -1,7 +1,6 @@
import ConfirmDialog, { import ConfirmDialog, {
ConfirmDialogProps, ConfirmDialogProps,
} from 'components/shared/ConfirmDialog'; } from 'components/shared/ConfirmDialog';
import React from 'react';
interface DisconnectRepositoryDialogProps extends ConfirmDialogProps {} interface DisconnectRepositoryDialogProps extends ConfirmDialogProps {}

View File

@ -1,7 +1,7 @@
import ConfirmDialog, { import ConfirmDialog, {
ConfirmDialogProps, ConfirmDialogProps,
} from 'components/shared/ConfirmDialog'; } from 'components/shared/ConfirmDialog';
import React from 'react';
import { formatAddress } from 'utils/format'; import { formatAddress } from 'utils/format';
interface RemoveMemberDialogProps extends ConfirmDialogProps { interface RemoveMemberDialogProps extends ConfirmDialogProps {

View File

@ -1,7 +1,6 @@
import ConfirmDialog, { import ConfirmDialog, {
ConfirmDialogProps, ConfirmDialogProps,
} from 'components/shared/ConfirmDialog'; } from 'components/shared/ConfirmDialog';
import React from 'react';
interface TransferProjectDialogProps extends ConfirmDialogProps { interface TransferProjectDialogProps extends ConfirmDialogProps {
projectName: string; projectName: string;

View File

@ -3,12 +3,8 @@ import {
MenuHandler, MenuHandler,
MenuItem, MenuItem,
MenuList, MenuList,
} from '@material-tailwind/react'; } from '@snowballtools/material-tailwind-react-fork';
import React, { import { ComponentPropsWithoutRef, MouseEvent, useCallback } from 'react';
ComponentPropsWithoutRef,
MouseEvent,
useCallback,
} from 'react';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { Project } from 'gql-client'; import { Project } from 'gql-client';
import { Avatar } from 'components/shared/Avatar'; import { Avatar } from 'components/shared/Avatar';
@ -95,11 +91,9 @@ export const ProjectCard = ({
<HorizontalDotIcon /> <HorizontalDotIcon />
</Button> </Button>
</MenuHandler> </MenuHandler>
<MenuList placeholder={''}> <MenuList>
<MenuItem placeholder={''}>Project settings</MenuItem> <MenuItem>Project settings</MenuItem>
<MenuItem className="text-red-500" placeholder={''}> <MenuItem className="text-red-500">Delete project</MenuItem>
Delete project
</MenuItem>
</MenuList> </MenuList>
</Menu> </Menu>
</div> </div>

View File

@ -1,4 +1,4 @@
import React, { useCallback, useEffect, useState } from 'react'; import { useCallback, useEffect, useState } from 'react';
import { useCombobox } from 'downshift'; import { useCombobox } from 'downshift';
import { Project } from 'gql-client'; import { Project } from 'gql-client';
import { useDebounce } from 'usehooks-ts'; import { useDebounce } from 'usehooks-ts';

View File

@ -1,4 +1,4 @@
import React, { useCallback, useEffect, useState } from 'react'; import { useCallback, useEffect, useState } from 'react';
import * as Dialog from '@radix-ui/react-dialog'; import * as Dialog from '@radix-ui/react-dialog';
import { Button } from 'components/shared/Button'; import { Button } from 'components/shared/Button';
import { CrossIcon, SearchIcon } from 'components/shared/CustomIcon'; import { CrossIcon, SearchIcon } from 'components/shared/CustomIcon';

View File

@ -1,5 +1,5 @@
import { InfoRoundFilledIcon } from 'components/shared/CustomIcon'; import { InfoRoundFilledIcon } from 'components/shared/CustomIcon';
import React, { ComponentPropsWithoutRef } from 'react'; import { ComponentPropsWithoutRef } from 'react';
import { cn } from 'utils/classnames'; import { cn } from 'utils/classnames';
interface ProjectSearchBarEmptyProps extends ComponentPropsWithoutRef<'div'> {} interface ProjectSearchBarEmptyProps extends ComponentPropsWithoutRef<'div'> {}

View File

@ -1,7 +1,7 @@
import { Avatar } from 'components/shared/Avatar'; import { Avatar } from 'components/shared/Avatar';
import { Overwrite, UseComboboxGetItemPropsReturnValue } from 'downshift'; import { Overwrite, UseComboboxGetItemPropsReturnValue } from 'downshift';
import { Project } from 'gql-client'; import { Project } from 'gql-client';
import React, { ComponentPropsWithoutRef, forwardRef } from 'react'; import { ComponentPropsWithoutRef, forwardRef } from 'react';
import { OmitCommon } from 'types/common'; import { OmitCommon } from 'types/common';
import { cn } from 'utils/classnames'; import { cn } from 'utils/classnames';
import { getInitials } from 'utils/geInitials'; import { getInitials } from 'utils/geInitials';

View File

@ -1,21 +1,21 @@
import React from "react"; import React from 'react';
import OauthPopup from "react-oauth-popup"; import OauthPopup from 'react-oauth-popup';
import { useGQLClient } from "../../../context/GQLClientContext"; import { useGQLClient } from '../../../context/GQLClientContext';
import { Button } from "../../shared/Button"; import { Button } from '../../shared/Button';
import { import {
GitIcon, GitIcon,
EllipsesIcon, EllipsesIcon,
SnowballIcon, SnowballIcon,
GithubIcon, GithubIcon,
GitTeaIcon, GitTeaIcon,
} from "../../shared/CustomIcon"; } from '../../shared/CustomIcon';
import { useToast } from "../../shared/Toast"; import { useToast } from '../../shared/Toast';
import { IconWithFrame } from "../../shared/IconWithFrame"; import { IconWithFrame } from '../../shared/IconWithFrame';
import { Heading } from "../../shared/Heading"; import { Heading } from '../../shared/Heading';
import { MockConnectGitCard } from "./MockConnectGitCard"; import { MockConnectGitCard } from './MockConnectGitCard';
const SCOPES = "repo user"; const SCOPES = 'repo user';
const GITHUB_OAUTH_URL = `https://github.com/login/oauth/authorize?client_id=${ const GITHUB_OAUTH_URL = `https://github.com/login/oauth/authorize?client_id=${
import.meta.env.VITE_GITHUB_CLIENT_ID import.meta.env.VITE_GITHUB_CLIENT_ID
}&scope=${encodeURIComponent(SCOPES)}`; }&scope=${encodeURIComponent(SCOPES)}`;
@ -39,9 +39,9 @@ const ConnectAccount: React.FC<ConnectAccountInterface> = ({
onToken(token); onToken(token);
toast({ toast({
onDismiss: dismiss, onDismiss: dismiss,
id: "connected-to-github", id: 'connected-to-github',
title: "The Git account is connected.", title: 'The Git account is connected.',
variant: "success", variant: 'success',
}); });
}; };

View File

@ -1,6 +1,6 @@
import React from "react"; import React from 'react';
import { Tabs } from "components/shared/Tabs"; import { Tabs } from 'components/shared/Tabs';
const ConnectAccountTabPanel: React.FC = () => { const ConnectAccountTabPanel: React.FC = () => {
return ( return (
@ -11,8 +11,8 @@ const ConnectAccountTabPanel: React.FC = () => {
> >
<Tabs.List> <Tabs.List>
{[ {[
{ title: "Import a repository" }, { title: 'Import a repository' },
{ title: "Start with a template" }, { title: 'Start with a template' },
].map(({ title }, index) => ( ].map(({ title }, index) => (
<Tabs.Trigger value={title} key={index}> <Tabs.Trigger value={title} key={index}>
{title} {title}

View File

@ -1,17 +1,17 @@
import React, { useCallback, useEffect } from "react"; import React, { useCallback, useEffect } from 'react';
import { useNavigate, useParams, useSearchParams } from "react-router-dom"; import { useNavigate, useParams, useSearchParams } from 'react-router-dom';
import { DeployStep, DeployStatus } from "./DeployStep"; import { DeployStep, DeployStatus } from './DeployStep';
import { Stopwatch, setStopWatchOffset } from "../../StopWatch"; import { Stopwatch, setStopWatchOffset } from '../../StopWatch';
import { Heading } from "../../shared/Heading"; import { Heading } from '../../shared/Heading';
import { Button } from "../../shared/Button"; import { Button } from '../../shared/Button';
import { ClockOutlineIcon, WarningIcon } from "../../shared/CustomIcon"; import { ClockOutlineIcon, WarningIcon } from '../../shared/CustomIcon';
import { CancelDeploymentDialog } from "../../projects/Dialog/CancelDeploymentDialog"; import { CancelDeploymentDialog } from '../../projects/Dialog/CancelDeploymentDialog';
const TIMEOUT_DURATION = 5000; const TIMEOUT_DURATION = 5000;
const Deploy = () => { const Deploy = () => {
const [searchParams] = useSearchParams(); const [searchParams] = useSearchParams();
const projectId = searchParams.get("projectId"); const projectId = searchParams.get('projectId');
const [open, setOpen] = React.useState(false); const [open, setOpen] = React.useState(false);
const handleOpen = () => setOpen(!open); const handleOpen = () => setOpen(!open);

View File

@ -1,11 +1,11 @@
import React, { useState } from "react"; import { useState } from 'react';
import { Collapse } from "@material-tailwind/react"; import { Collapse } from '@snowballtools/material-tailwind-react-fork';
import { Stopwatch, setStopWatchOffset } from "../../StopWatch"; import { Stopwatch, setStopWatchOffset } from '../../StopWatch';
import FormatMillisecond from "../../FormatMilliSecond"; import FormatMillisecond from '../../FormatMilliSecond';
import processLogs from "../../../assets/process-logs.json"; import processLogs from '../../../assets/process-logs.json';
import { cn } from "utils/classnames"; import { cn } from 'utils/classnames';
import { import {
CheckRoundFilledIcon, CheckRoundFilledIcon,
ClockOutlineIcon, ClockOutlineIcon,
@ -13,15 +13,15 @@ import {
LoaderIcon, LoaderIcon,
MinusCircleIcon, MinusCircleIcon,
PlusIcon, PlusIcon,
} from "components/shared/CustomIcon"; } from 'components/shared/CustomIcon';
import { Button } from "components/shared/Button"; import { Button } from 'components/shared/Button';
import { useToast } from "components/shared/Toast"; import { useToast } from 'components/shared/Toast';
import { useIntersectionObserver } from "usehooks-ts"; import { useIntersectionObserver } from 'usehooks-ts';
enum DeployStatus { enum DeployStatus {
PROCESSING = "progress", PROCESSING = 'progress',
COMPLETE = "complete", COMPLETE = 'complete',
NOT_STARTED = "notStarted", NOT_STARTED = 'notStarted',
} }
interface DeployStepsProps { interface DeployStepsProps {
@ -52,8 +52,8 @@ const DeployStep = ({
{/* Collapisble trigger */} {/* Collapisble trigger */}
<button <button
className={cn( className={cn(
"flex justify-between w-full py-5 gap-2", 'flex justify-between w-full py-5 gap-2',
disableCollapse && "cursor-auto", disableCollapse && 'cursor-auto',
)} )}
tabIndex={disableCollapse ? -1 : undefined} tabIndex={disableCollapse ? -1 : undefined}
onClick={() => { onClick={() => {
@ -62,7 +62,7 @@ const DeployStep = ({
} }
}} }}
> >
<div className={cn("grow flex items-center gap-3")}> <div className={cn('grow flex items-center gap-3')}>
{/* Icon */} {/* Icon */}
<div className="w-6 h-6 grid place-content-center"> <div className="w-6 h-6 grid place-content-center">
{status === DeployStatus.NOT_STARTED && ( {status === DeployStatus.NOT_STARTED && (
@ -84,8 +84,8 @@ const DeployStep = ({
{/* Title */} {/* Title */}
<span <span
className={cn( className={cn(
"text-left text-sm md:text-base", 'text-left text-sm md:text-base',
status === DeployStatus.PROCESSING && "text-elements-link", status === DeployStatus.PROCESSING && 'text-elements-link',
)} )}
> >
{title} {title}
@ -107,7 +107,7 @@ const DeployStep = ({
size={15} size={15}
/> />
</div> </div>
<FormatMillisecond time={Number(processTime)} />{" "} <FormatMillisecond time={Number(processTime)} />{' '}
</div> </div>
)} )}
</button> </button>
@ -133,15 +133,15 @@ const DeployStep = ({
)} )}
{/* Copy log button */} {/* Copy log button */}
<div className={cn("sticky bottom-4 left-1/2 flex justify-center")}> <div className={cn('sticky bottom-4 left-1/2 flex justify-center')}>
<Button <Button
size="xs" size="xs"
onClick={() => { onClick={() => {
navigator.clipboard.writeText(processLogs.join("\n")); navigator.clipboard.writeText(processLogs.join('\n'));
toast({ toast({
title: "Logs copied", title: 'Logs copied',
variant: "success", variant: 'success',
id: "logs", id: 'logs',
onDismiss: dismiss, onDismiss: dismiss,
}); });
}} }}

View File

@ -1,10 +1,10 @@
import React, { useCallback, useState } from 'react'; import React, { useCallback, useState } from 'react';
import { useNavigate, useParams } from 'react-router-dom'; import { useNavigate, useParams } from 'react-router-dom';
import { Spinner } from '@material-tailwind/react'; import { Spinner } from '@snowballtools/material-tailwind-react-fork';
import { relativeTimeISO } from 'utils/time'; import { relativeTimeISO } from 'utils/time';
import { GitRepositoryDetails } from 'types'; import { GitRepositoryDetails } from '../../../../types/types';
import { useGQLClient } from 'context/GQLClientContext'; import { useGQLClient } from 'context/GQLClientContext';
import { import {
ArrowRightCircleIcon, ArrowRightCircleIcon,

View File

@ -1,9 +1,9 @@
import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useCallback, useEffect, useMemo, useState } from 'react';
import assert from 'assert'; import assert from 'assert';
import { useDebounce } from 'usehooks-ts'; import { useDebounce } from 'usehooks-ts';
import { ProjectRepoCard } from 'components/projects/create/ProjectRepoCard'; import { ProjectRepoCard } from 'components/projects/create/ProjectRepoCard';
import { GitOrgDetails, GitRepositoryDetails } from 'types'; import { GitOrgDetails, GitRepositoryDetails } from '../../../../types/types';
import { import {
ChevronGrabberHorizontal, ChevronGrabberHorizontal,
GithubIcon, GithubIcon,

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CopyBlock, atomOneLight } from 'react-code-blocks'; import { CopyBlock, atomOneLight } from 'react-code-blocks';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
@ -8,7 +7,7 @@ import {
DialogHeader, DialogHeader,
DialogBody, DialogBody,
DialogFooter, DialogFooter,
} from '@material-tailwind/react'; } from '@snowballtools/material-tailwind-react-fork';
interface AssignDomainProps { interface AssignDomainProps {
open: boolean; open: boolean;
@ -17,9 +16,9 @@ interface AssignDomainProps {
const AssignDomainDialog = ({ open, handleOpen }: AssignDomainProps) => { const AssignDomainDialog = ({ open, handleOpen }: AssignDomainProps) => {
return ( return (
<Dialog open={open} handler={handleOpen} placeholder={''}> <Dialog open={open} handler={handleOpen}>
<DialogHeader placeholder={''}>Assign Domain</DialogHeader> <DialogHeader>Assign Domain</DialogHeader>
<DialogBody placeholder={''}> <DialogBody>
In order to assign a domain to your production deployments, configure it In order to assign a domain to your production deployments, configure it
in the{' '} in the{' '}
{/* TODO: Fix selection of project settings tab on navigation to domains */} {/* TODO: Fix selection of project settings tab on navigation to domains */}
@ -36,13 +35,12 @@ const AssignDomainDialog = ({ open, handleOpen }: AssignDomainProps) => {
theme={atomOneLight} theme={atomOneLight}
/> />
</DialogBody> </DialogBody>
<DialogFooter className="flex justify-start" placeholder={''}> <DialogFooter className="flex justify-start">
<Button <Button
className="rounded-3xl" className="rounded-3xl"
variant="gradient" variant="gradient"
color="blue" color="blue"
onClick={handleOpen} onClick={handleOpen}
placeholder={''}
> >
<span>Okay</span> <span>Okay</span>
</Button> </Button>

View File

@ -1,4 +1,4 @@
import React, { useCallback } from 'react'; import { useCallback } from 'react';
import { import {
Deployment, Deployment,
DeploymentStatus, DeploymentStatus,

View File

@ -1,4 +1,3 @@
import React from 'react';
import { Deployment } from 'gql-client'; import { Deployment } from 'gql-client';
import { relativeTimeMs } from 'utils/time'; import { relativeTimeMs } from 'utils/time';

View File

@ -1,4 +1,4 @@
import React, { useState } from 'react'; import { useState } from 'react';
import toast from 'react-hot-toast'; import toast from 'react-hot-toast';
import { Deployment, Domain, Environment, Project } from 'gql-client'; import { Deployment, Domain, Environment, Project } from 'gql-client';
import { Button } from 'components/shared/Button'; import { Button } from 'components/shared/Button';
@ -15,7 +15,7 @@ import {
MenuHandler, MenuHandler,
MenuItem, MenuItem,
MenuList, MenuList,
} from '@material-tailwind/react'; } from '@snowballtools/material-tailwind-react-fork';
import { ComponentPropsWithRef } from 'react'; import { ComponentPropsWithRef } from 'react';
import AssignDomainDialog from './AssignDomainDialog'; import AssignDomainDialog from './AssignDomainDialog';
import { useGQLClient } from 'context/GQLClientContext'; import { useGQLClient } from 'context/GQLClientContext';
@ -96,11 +96,10 @@ export const DeploymentMenu = ({
aria-label="Toggle Menu" aria-label="Toggle Menu"
/> />
</MenuHandler> </MenuHandler>
<MenuList className="text-elements-high-em" placeholder={''}> <MenuList className="text-elements-high-em">
<MenuItem <MenuItem
className="hover:bg-base-bg-emphasized" className="hover:bg-base-bg-emphasized"
disabled={!Boolean(deployment.url)} disabled={!Boolean(deployment.url)}
placeholder={''}
> >
<a <a
className="flex items-center gap-3" className="flex items-center gap-3"
@ -114,7 +113,6 @@ export const DeploymentMenu = ({
<MenuItem <MenuItem
className="hover:bg-base-bg-emphasized flex items-center gap-3" className="hover:bg-base-bg-emphasized flex items-center gap-3"
onClick={() => setAssignDomainDialog(!assignDomainDialog)} onClick={() => setAssignDomainDialog(!assignDomainDialog)}
placeholder={''}
> >
<GlobeIcon /> Assign domain <GlobeIcon /> Assign domain
</MenuItem> </MenuItem>
@ -122,7 +120,6 @@ export const DeploymentMenu = ({
className="hover:bg-base-bg-emphasized flex items-center gap-3" className="hover:bg-base-bg-emphasized flex items-center gap-3"
onClick={() => setChangeToProduction(!changeToProduction)} onClick={() => setChangeToProduction(!changeToProduction)}
disabled={!(deployment.environment !== Environment.Production)} disabled={!(deployment.environment !== Environment.Production)}
placeholder={''}
> >
<RocketIcon /> Change to production <RocketIcon /> Change to production
</MenuItem> </MenuItem>
@ -136,7 +133,6 @@ export const DeploymentMenu = ({
deployment.isCurrent deployment.isCurrent
) )
} }
placeholder={''}
> >
<RefreshIcon /> Redeploy to production <RefreshIcon /> Redeploy to production
</MenuItem> </MenuItem>
@ -148,7 +144,6 @@ export const DeploymentMenu = ({
deployment.environment !== Environment.Production || deployment.environment !== Environment.Production ||
!Boolean(currentDeployment) !Boolean(currentDeployment)
} }
placeholder={''}
> >
<UndoIcon /> Rollback to this version <UndoIcon /> Rollback to this version
</MenuItem> </MenuItem>

View File

@ -1,4 +1,4 @@
import React, { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { Input } from 'components/shared/Input'; import { Input } from 'components/shared/Input';
import { import {
@ -10,8 +10,8 @@ import {
WarningTriangleIcon, WarningTriangleIcon,
} from 'components/shared/CustomIcon'; } from 'components/shared/CustomIcon';
import { DatePicker } from 'components/shared/DatePicker'; import { DatePicker } from 'components/shared/DatePicker';
import { Value } from 'react-calendar/dist/cjs/shared/types';
import { Select, SelectOption } from 'components/shared/Select'; import { Select, SelectOption } from 'components/shared/Select';
import { Value } from 'types/vendor';
export enum StatusOptions { export enum StatusOptions {
ALL_STATUS = 'All status', ALL_STATUS = 'All status',

View File

@ -1,6 +1,4 @@
import React from 'react'; import { GitCommitWithBranch } from '../../../../../types/types';
import { GitCommitWithBranch } from 'types';
import { Heading } from 'components/shared/Heading'; import { Heading } from 'components/shared/Heading';
import ActivityCard from './ActivityCard'; import ActivityCard from './ActivityCard';
import { Button } from 'components/shared/Button'; import { Button } from 'components/shared/Button';

View File

@ -1,6 +1,5 @@
import React from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import { GitCommitWithBranch } from '../../../../../types'; import { GitCommitWithBranch } from '../../../../../types/types';
import { Avatar } from 'components/shared/Avatar'; import { Avatar } from 'components/shared/Avatar';
import { Button } from 'components/shared/Button'; import { Button } from 'components/shared/Button';
import { import {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { PropsWithChildren } from 'react'; import { PropsWithChildren } from 'react';
import { cloneElement } from 'utils/cloneElement'; import { cloneElement } from 'utils/cloneElement';

View File

@ -1,9 +1,12 @@
import React from 'react';
import { UseFormRegister } from 'react-hook-form'; import { UseFormRegister } from 'react-hook-form';
import { Typography, Input, IconButton } from '@material-tailwind/react'; import {
Typography,
Input,
IconButton,
} from '@snowballtools/material-tailwind-react-fork';
import { EnvironmentVariablesFormValues } from '../../../../types'; import { EnvironmentVariablesFormValues } from '../../../../types/types';
interface AddEnvironmentVariableRowProps { interface AddEnvironmentVariableRowProps {
onDelete: () => void; onDelete: () => void;
@ -21,22 +24,16 @@ const AddEnvironmentVariableRow = ({
return ( return (
<div className="flex gap-1 p-2"> <div className="flex gap-1 p-2">
<div> <div>
<Typography variant="small" placeholder={''}> <Typography variant="small">Key</Typography>
Key
</Typography>
<Input <Input
crossOrigin={undefined}
{...register(`variables.${index}.key`, { {...register(`variables.${index}.key`, {
required: 'Key field cannot be empty', required: 'Key field cannot be empty',
})} })}
/> />
</div> </div>
<div> <div>
<Typography variant="small" placeholder={''}> <Typography variant="small">Value</Typography>
Value
</Typography>
<Input <Input
crossOrigin={undefined}
{...register(`variables.${index}.value`, { {...register(`variables.${index}.value`, {
required: 'Value field cannot be empty', required: 'Value field cannot be empty',
})} })}
@ -47,7 +44,6 @@ const AddEnvironmentVariableRow = ({
size="sm" size="sm"
onClick={() => onDelete()} onClick={() => onDelete()}
disabled={isDeleteDisabled} disabled={isDeleteDisabled}
placeholder={''}
> >
{'>'} {'>'}
</IconButton> </IconButton>

View File

@ -1,4 +1,4 @@
import React, { useCallback } from 'react'; import { useCallback } from 'react';
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
import { AddProjectMemberInput, Permission } from 'gql-client'; import { AddProjectMemberInput, Permission } from 'gql-client';
@ -11,7 +11,7 @@ import {
Input, Input,
Typography, Typography,
Checkbox, Checkbox,
} from '@material-tailwind/react'; } from '@snowballtools/material-tailwind-react-fork';
interface AddMemberDialogProp { interface AddMemberDialogProp {
open: boolean; open: boolean;
@ -61,59 +61,46 @@ const AddMemberDialog = ({
}, []); }, []);
return ( return (
<Dialog open={open} handler={handleOpen} placeholder={''}> <Dialog open={open} handler={handleOpen}>
<DialogHeader className="flex justify-between" placeholder={''}> <DialogHeader className="flex justify-between">
<div>Add member</div> <div>Add member</div>
<Button <Button
variant="outlined" variant="outlined"
onClick={handleOpen} onClick={handleOpen}
className="mr-1 rounded-3xl" className="mr-1 rounded-3xl"
placeholder={''}
> >
X X
</Button> </Button>
</DialogHeader> </DialogHeader>
<form onSubmit={handleSubmit(submitHandler)}> <form onSubmit={handleSubmit(submitHandler)}>
<DialogBody className="flex flex-col gap-2 p-4" placeholder={''}> <DialogBody className="flex flex-col gap-2 p-4">
<Typography variant="small" placeholder={''}> <Typography variant="small">
We will send an invitation link to this email address. We will send an invitation link to this email address.
</Typography> </Typography>
<Typography variant="small" placeholder={''}> <Typography variant="small">Email address</Typography>
Email address
</Typography>
<Input <Input
type="email" type="email"
crossOrigin={undefined}
{...register('emailAddress', { {...register('emailAddress', {
required: 'email field cannot be empty', required: 'email field cannot be empty',
})} })}
/> />
<Typography variant="small" placeholder={''}> <Typography variant="small">Permissions</Typography>
Permissions <Typography variant="small">
</Typography>
<Typography variant="small" placeholder={''}>
You can change this later if required. You can change this later if required.
</Typography> </Typography>
<Checkbox <Checkbox
crossOrigin={undefined}
label={Permission.View} label={Permission.View}
{...register(`permissions.view`)} {...register(`permissions.view`)}
color="blue" color="blue"
/> />
<Checkbox <Checkbox
crossOrigin={undefined}
label={Permission.Edit} label={Permission.Edit}
{...register(`permissions.edit`)} {...register(`permissions.edit`)}
color="blue" color="blue"
/> />
</DialogBody> </DialogBody>
<DialogFooter className="flex justify-start" placeholder={''}> <DialogFooter className="flex justify-start">
<Button <Button variant="outlined" onClick={handleOpen} className="mr-1">
variant="outlined"
onClick={handleOpen}
className="mr-1"
placeholder={''}
>
Cancel Cancel
</Button> </Button>
<Button <Button
@ -121,7 +108,6 @@ const AddMemberDialog = ({
color="blue" color="blue"
type="submit" type="submit"
disabled={!isValid} disabled={!isValid}
placeholder={''}
> >
Send invite Send invite
</Button> </Button>

View File

@ -1,4 +1,4 @@
import React, { useCallback } from 'react'; import { useCallback } from 'react';
import { useNavigate, useParams } from 'react-router-dom'; import { useNavigate, useParams } from 'react-router-dom';
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
import toast from 'react-hot-toast'; import toast from 'react-hot-toast';
@ -12,7 +12,7 @@ import {
DialogFooter, DialogFooter,
Input, Input,
Typography, Typography,
} from '@material-tailwind/react'; } from '@snowballtools/material-tailwind-react-fork';
import { useGQLClient } from '../../../../context/GQLClientContext'; import { useGQLClient } from '../../../../context/GQLClientContext';
interface DeleteProjectDialogProp { interface DeleteProjectDialogProp {
@ -53,21 +53,20 @@ const DeleteProjectDialog = ({
}, [client, project, handleOpen]); }, [client, project, handleOpen]);
return ( return (
<Dialog open={open} handler={handleOpen} placeholder={''}> <Dialog open={open} handler={handleOpen}>
<DialogHeader className="flex justify-between" placeholder={''}> <DialogHeader className="flex justify-between">
<div>Delete project?</div> <div>Delete project?</div>
<Button <Button
variant="outlined" variant="outlined"
onClick={handleOpen} onClick={handleOpen}
className="mr-1 rounded-3xl" className="mr-1 rounded-3xl"
placeholder={''}
> >
X X
</Button> </Button>
</DialogHeader> </DialogHeader>
<form onSubmit={handleSubmit(deleteProjectHandler)}> <form onSubmit={handleSubmit(deleteProjectHandler)}>
<DialogBody className="flex flex-col gap-2" placeholder={''}> <DialogBody className="flex flex-col gap-2">
<Typography variant="paragraph" placeholder={''}> <Typography variant="paragraph">
Deleting your project is irreversible. Enter your projects Deleting your project is irreversible. Enter your projects
name&nbsp; name&nbsp;
<span className="bg-blue-100 text-blue-700">({project.name})</span> <span className="bg-blue-100 text-blue-700">({project.name})</span>
@ -75,23 +74,17 @@ const DeleteProjectDialog = ({
</Typography> </Typography>
<Input <Input
id="input" id="input"
crossOrigin={undefined}
{...register('projectName', { {...register('projectName', {
required: 'Project name is required', required: 'Project name is required',
validate: (value) => value === project.name, validate: (value) => value === project.name,
})} })}
/> />
<Typography variant="small" color="red" placeholder={''}> <Typography variant="small" color="red">
^ Deleting your project is irreversible. ^ Deleting your project is irreversible.
</Typography> </Typography>
</DialogBody> </DialogBody>
<DialogFooter className="flex justify-start" placeholder={''}> <DialogFooter className="flex justify-start">
<Button <Button variant="outlined" onClick={handleOpen} className="mr-1">
variant="outlined"
onClick={handleOpen}
className="mr-1"
placeholder={''}
>
Cancel Cancel
</Button> </Button>
<Button <Button
@ -99,7 +92,6 @@ const DeleteProjectDialog = ({
color="red" color="red"
type="submit" type="submit"
disabled={!isValid} disabled={!isValid}
placeholder={''}
> >
Yes, Delete project Yes, Delete project
</Button> </Button>

View File

@ -1,5 +1,9 @@
import React, { useState } from 'react'; import { useState } from 'react';
import { Card, Collapse, Typography } from '@material-tailwind/react'; import {
Card,
Collapse,
Typography,
} from '@snowballtools/material-tailwind-react-fork';
import EditEnvironmentVariableRow from './EditEnvironmentVariableRow'; import EditEnvironmentVariableRow from './EditEnvironmentVariableRow';
import { Environment, EnvironmentVariable } from 'gql-client'; import { Environment, EnvironmentVariable } from 'gql-client';
@ -29,11 +33,11 @@ const DisplayEnvironmentVariables = ({
</div> </div>
<Collapse open={openCollapse}> <Collapse open={openCollapse}>
{variables.length === 0 ? ( {variables.length === 0 ? (
<Card className="bg-gray-300 flex items-center p-4" placeholder={''}> <Card className="bg-gray-300 flex items-center p-4">
<Typography variant="small" className="text-black" placeholder={''}> <Typography variant="small" className="text-black">
No environment variables added yet. No environment variables added yet.
</Typography> </Typography>
<Typography variant="small" placeholder={''}> <Typography variant="small">
Once you add them, theyll show up here. Once you add them, theyll show up here.
</Typography> </Typography>
</Card> </Card>

View File

@ -1,4 +1,4 @@
import React, { useState } from 'react'; import { useState } from 'react';
import toast from 'react-hot-toast'; import toast from 'react-hot-toast';
import { Domain, DomainStatus, Project } from 'gql-client'; import { Domain, DomainStatus, Project } from 'gql-client';
@ -10,7 +10,7 @@ import {
MenuList, MenuList,
MenuItem, MenuItem,
Card, Card,
} from '@material-tailwind/react'; } from '@snowballtools/material-tailwind-react-fork';
import EditDomainDialog from './EditDomainDialog'; import EditDomainDialog from './EditDomainDialog';
import { useGQLClient } from 'context/GQLClientContext'; import { useGQLClient } from 'context/GQLClientContext';
@ -68,7 +68,7 @@ const DomainCard = ({
<> <>
<div className="flex justify-between py-3"> <div className="flex justify-between py-3">
<div className="flex justify-start gap-1"> <div className="flex justify-start gap-1">
<Typography variant="h6" placeholder={''}> <Typography variant="h6">
<i>^</i> {domain.name} <i>^</i> {domain.name}
</Typography> </Typography>
<Chip <Chip
@ -97,20 +97,18 @@ const DomainCard = ({
<MenuHandler> <MenuHandler>
<button className="border-2 rounded-full w-8 h-8">...</button> <button className="border-2 rounded-full w-8 h-8">...</button>
</MenuHandler> </MenuHandler>
<MenuList placeholder={''}> <MenuList>
<MenuItem <MenuItem
className="text-black" className="text-black"
onClick={() => { onClick={() => {
setEditDialogOpen((preVal) => !preVal); setEditDialogOpen((preVal) => !preVal);
}} }}
placeholder={''}
> >
^ Edit domain ^ Edit domain
</MenuItem> </MenuItem>
<MenuItem <MenuItem
className="text-red-500" className="text-red-500"
onClick={() => setDeleteDialogOpen((preVal) => !preVal)} onClick={() => setDeleteDialogOpen((preVal) => !preVal)}
placeholder={''}
> >
^ Delete domain ^ Delete domain
</MenuItem> </MenuItem>
@ -130,21 +128,15 @@ const DomainCard = ({
/> />
</div> </div>
<Typography variant="small" placeholder={''}> <Typography variant="small">Production</Typography>
Production
</Typography>
{domain.status === DomainStatus.Pending && ( {domain.status === DomainStatus.Pending && (
<Card className="bg-gray-200 p-4 text-sm" placeholder={''}> <Card className="bg-gray-200 p-4 text-sm">
{refreshStatus === RefreshStatus.IDLE ? ( {refreshStatus === RefreshStatus.IDLE ? (
<Typography variant="small" placeholder={''}> <Typography variant="small">
^ Add these records to your domain and refresh to check ^ Add these records to your domain and refresh to check
</Typography> </Typography>
) : refreshStatus === RefreshStatus.CHECKING ? ( ) : refreshStatus === RefreshStatus.CHECKING ? (
<Typography <Typography variant="small" className="text-blue-500">
variant="small"
className="text-blue-500"
placeholder={''}
>
^ Checking records for {domain.name} ^ Checking records for {domain.name}
</Typography> </Typography>
) : ( ) : (

View File

@ -1,4 +1,4 @@
import React, { useCallback, useEffect, useMemo } from 'react'; import { useCallback, useEffect, useMemo } from 'react';
import { Controller, useForm, SubmitHandler } from 'react-hook-form'; import { Controller, useForm, SubmitHandler } from 'react-hook-form';
import toast from 'react-hot-toast'; import toast from 'react-hot-toast';
import { Domain } from 'gql-client'; import { Domain } from 'gql-client';
@ -13,7 +13,7 @@ import {
Typography, Typography,
Select, Select,
Option, Option,
} from '@material-tailwind/react'; } from '@snowballtools/material-tailwind-react-fork';
import { useGQLClient } from '../../../../context/GQLClientContext'; import { useGQLClient } from '../../../../context/GQLClientContext';
@ -122,32 +122,27 @@ const EditDomainDialog = ({
}, [domain]); }, [domain]);
return ( return (
<Dialog open={open} handler={handleOpen} placeholder={''}> <Dialog open={open} handler={handleOpen}>
<DialogHeader className="flex justify-between" placeholder={''}> <DialogHeader className="flex justify-between">
<div>Edit domain</div> <div>Edit domain</div>
<Button <Button
variant="outlined" variant="outlined"
onClick={handleOpen} onClick={handleOpen}
className="mr-1 rounded-3xl" className="mr-1 rounded-3xl"
placeholder={''}
> >
X X
</Button> </Button>
</DialogHeader> </DialogHeader>
<form onSubmit={handleSubmit(updateDomainHandler)}> <form onSubmit={handleSubmit(updateDomainHandler)}>
<DialogBody className="flex flex-col gap-2 p-4" placeholder={''}> <DialogBody className="flex flex-col gap-2 p-4">
<Typography variant="small" placeholder={''}> <Typography variant="small">Domain name</Typography>
Domain name <Input {...register('name')} />
</Typography> <Typography variant="small">Redirect to</Typography>
<Input crossOrigin={undefined} {...register('name')} />
<Typography variant="small" placeholder={''}>
Redirect to
</Typography>
<Controller <Controller
name="redirectedTo" name="redirectedTo"
control={control} control={control}
render={({ field }) => ( render={({ field }) => (
<Select {...field} disabled={isDisableDropdown} placeholder={''}> <Select {...field} disabled={isDisableDropdown}>
{redirectOptions.map((option, key) => ( {redirectOptions.map((option, key) => (
<Option key={key} value={option}> <Option key={key} value={option}>
^ {option} ^ {option}
@ -159,18 +154,15 @@ const EditDomainDialog = ({
{isDisableDropdown && ( {isDisableDropdown && (
<div className="flex p-2 gap-2 text-black bg-gray-300 rounded-lg"> <div className="flex p-2 gap-2 text-black bg-gray-300 rounded-lg">
<div>^</div> <div>^</div>
<Typography variant="small" placeholder={''}> <Typography variant="small">
Domain {domainRedirectedFrom ? domainRedirectedFrom.name : ''} Domain {domainRedirectedFrom ? domainRedirectedFrom.name : ''}
redirects to this domain so you can not redirect this doman redirects to this domain so you can not redirect this doman
further. further.
</Typography> </Typography>
</div> </div>
)} )}
<Typography variant="small" placeholder={''}> <Typography variant="small">Git branch</Typography>
Git branch
</Typography>
<Input <Input
crossOrigin={undefined}
{...register('branch', { {...register('branch', {
validate: (value) => validate: (value) =>
Boolean(branches.length) ? branches.includes(value) : true, Boolean(branches.length) ? branches.includes(value) : true,
@ -181,22 +173,13 @@ const EditDomainDialog = ({
} }
/> />
{!isValid && ( {!isValid && (
<Typography <Typography variant="small" className="text-red-500">
variant="small"
className="text-red-500"
placeholder={''}
>
We couldn&apos;t find this branch in the connected Git repository. We couldn&apos;t find this branch in the connected Git repository.
</Typography> </Typography>
)} )}
</DialogBody> </DialogBody>
<DialogFooter className="flex justify-start" placeholder={''}> <DialogFooter className="flex justify-start">
<Button <Button variant="outlined" onClick={handleOpen} className="mr-1">
variant="outlined"
onClick={handleOpen}
className="mr-1"
placeholder={''}
>
Cancel Cancel
</Button> </Button>
<Button <Button
@ -204,7 +187,6 @@ const EditDomainDialog = ({
color="blue" color="blue"
type="submit" type="submit"
disabled={!isDirty} disabled={!isDirty}
placeholder={''}
> >
Save changes Save changes
</Button> </Button>

View File

@ -1,9 +1,13 @@
import React, { useCallback, useEffect, useState } from 'react'; import { useCallback, useEffect, useState } from 'react';
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
import toast from 'react-hot-toast'; import toast from 'react-hot-toast';
import { EnvironmentVariable } from 'gql-client'; import { EnvironmentVariable } from 'gql-client';
import { IconButton, Input, Typography } from '@material-tailwind/react'; import {
IconButton,
Input,
Typography,
} from '@snowballtools/material-tailwind-react-fork';
import { useGQLClient } from 'context/GQLClientContext'; import { useGQLClient } from 'context/GQLClientContext';
import { DeleteVariableDialog } from 'components/projects/Dialog/DeleteVariableDialog'; import { DeleteVariableDialog } from 'components/projects/Dialog/DeleteVariableDialog';
@ -84,21 +88,12 @@ const EditEnvironmentVariableRow = ({
<> <>
<div className="flex gap-1 p-2"> <div className="flex gap-1 p-2">
<div> <div>
<Typography variant="small" placeholder={''}> <Typography variant="small">Key</Typography>
Key <Input disabled={!edit} {...register(`key`)} />
</Typography>
<Input
crossOrigin={undefined}
disabled={!edit}
{...register(`key`)}
/>
</div> </div>
<div> <div>
<Typography variant="small" placeholder={''}> <Typography variant="small">Value</Typography>
Value
</Typography>
<Input <Input
crossOrigin={undefined}
disabled={!edit} disabled={!edit}
type={showPassword ? 'text' : 'password'} type={showPassword ? 'text' : 'password'}
icon={ icon={
@ -118,7 +113,6 @@ const EditEnvironmentVariableRow = ({
<IconButton <IconButton
onClick={handleSubmit(updateEnvironmentVariableHandler)} onClick={handleSubmit(updateEnvironmentVariableHandler)}
size="sm" size="sm"
placeholder={''}
> >
{'S'} {'S'}
</IconButton> </IconButton>
@ -130,7 +124,6 @@ const EditEnvironmentVariableRow = ({
reset(); reset();
setEdit((preVal) => !preVal); setEdit((preVal) => !preVal);
}} }}
placeholder={''}
> >
{'C'} {'C'}
</IconButton> </IconButton>
@ -144,7 +137,6 @@ const EditEnvironmentVariableRow = ({
onClick={() => { onClick={() => {
setEdit((preVal) => !preVal); setEdit((preVal) => !preVal);
}} }}
placeholder={''}
> >
{'E'} {'E'}
</IconButton> </IconButton>
@ -153,7 +145,6 @@ const EditEnvironmentVariableRow = ({
<IconButton <IconButton
size="sm" size="sm"
onClick={() => setDeleteDialogOpen((preVal) => !preVal)} onClick={() => setDeleteDialogOpen((preVal) => !preVal)}
placeholder={''}
> >
{'D'} {'D'}
</IconButton> </IconButton>

View File

@ -1,6 +1,4 @@
import React from 'react'; import { GitSelect } from '../../../../types/types';
import { GitSelect } from '../../../../types';
const GitSelectionSection = ({ const GitSelectionSection = ({
gitSelectionHandler, gitSelectionHandler,

View File

@ -1,4 +1,4 @@
import React, { useCallback, useState } from 'react'; import { useCallback, useState } from 'react';
import { Permission, User } from 'gql-client'; import { Permission, User } from 'gql-client';
import { import {
@ -7,7 +7,7 @@ import {
Chip, Chip,
IconButton, IconButton,
Tooltip, Tooltip,
} from '@material-tailwind/react'; } from '@snowballtools/material-tailwind-react-fork';
import { formatAddress } from 'utils/format'; import { formatAddress } from 'utils/format';
import { RemoveMemberDialog } from 'components/projects/Dialog/RemoveMemberDialog'; import { RemoveMemberDialog } from 'components/projects/Dialog/RemoveMemberDialog';
@ -103,7 +103,6 @@ const MemberCard = ({
selected={(_, index) => ( selected={(_, index) => (
<span>{DROPDOWN_OPTIONS[index!]?.label}</span> <span>{DROPDOWN_OPTIONS[index!]?.label}</span>
)} )}
placeholder={''}
> >
{DROPDOWN_OPTIONS.map((permission, key) => ( {DROPDOWN_OPTIONS.map((permission, key) => (
<Option key={key} value={permission.value}> <Option key={key} value={permission.value}>
@ -132,7 +131,6 @@ const MemberCard = ({
onClick={() => { onClick={() => {
setRemoveMemberDialogOpen((prevVal) => !prevVal); setRemoveMemberDialogOpen((prevVal) => !prevVal);
}} }}
placeholder={''}
> >
D D
</IconButton> </IconButton>

View File

@ -1,8 +1,11 @@
import React, { useState } from 'react'; import { useState } from 'react';
import { Button, Typography } from '@material-tailwind/react'; import {
Button,
Typography,
} from '@snowballtools/material-tailwind-react-fork';
import { GitRepositoryDetails } from 'types'; import { GitRepositoryDetails } from '../../../../types/types';
import { DisconnectRepositoryDialog } from 'components/projects/Dialog/DisconnectRepositoryDialog'; import { DisconnectRepositoryDialog } from 'components/projects/Dialog/DisconnectRepositoryDialog';
const RepoConnectedSection = ({ const RepoConnectedSection = ({
@ -17,19 +20,14 @@ const RepoConnectedSection = ({
<div className="flex gap-4"> <div className="flex gap-4">
<div>^</div> <div>^</div>
<div className="grow"> <div className="grow">
<Typography variant="small" placeholder={''}> <Typography variant="small">{linkedRepo.full_name}</Typography>
{linkedRepo.full_name} <Typography variant="small">Connected just now</Typography>
</Typography>
<Typography variant="small" placeholder={''}>
Connected just now
</Typography>
</div> </div>
<div> <div>
<Button <Button
onClick={() => setDisconnectRepoDialogOpen(true)} onClick={() => setDisconnectRepoDialogOpen(true)}
variant="outlined" variant="outlined"
size="sm" size="sm"
placeholder={''}
> >
^ Disconnect ^ Disconnect
</Button> </Button>

View File

@ -1,4 +1,4 @@
import React, { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
@ -8,7 +8,7 @@ import {
Button, Button,
Input, Input,
Alert, Alert,
} from '@material-tailwind/react'; } from '@snowballtools/material-tailwind-react-fork';
const SetupDomain = () => { const SetupDomain = () => {
const { const {
@ -54,23 +54,18 @@ const SetupDomain = () => {
className="flex flex-col gap-6 w-full" className="flex flex-col gap-6 w-full"
> >
<div> <div>
<Typography variant="h5" placeholder={''}> <Typography variant="h5">Setup domain name</Typography>
Setup domain name <Typography variant="small">
</Typography>
<Typography variant="small" placeholder={''}>
Add your domain and setup redirects Add your domain and setup redirects
</Typography> </Typography>
</div> </div>
<div className="w-auto"> <div className="w-auto">
<Typography variant="small" placeholder={''}> <Typography variant="small">Domain name</Typography>
Domain name
</Typography>
<Input <Input
type="text" type="text"
variant="outlined" variant="outlined"
size="lg" size="lg"
crossOrigin={undefined}
className="w-full" className="w-full"
{...register('domainName', { {...register('domainName', {
required: true, required: true,
@ -80,18 +75,16 @@ const SetupDomain = () => {
{isValid && ( {isValid && (
<div> <div>
<Typography placeholder={''}>Primary domain</Typography> <Typography>Primary domain</Typography>
<div className="flex flex-col gap-3"> <div className="flex flex-col gap-3">
<Radio <Radio
label={domainStr} label={domainStr}
crossOrigin={undefined}
{...register('isWWW')} {...register('isWWW')}
value="false" value="false"
type="radio" type="radio"
/> />
<Radio <Radio
label={`www.${domainStr}`} label={`www.${domainStr}`}
crossOrigin={undefined}
{...register('isWWW')} {...register('isWWW')}
value="true" value="true"
type="radio" type="radio"
@ -112,7 +105,6 @@ const SetupDomain = () => {
className="w-fit" className="w-fit"
color={isValid ? 'blue' : 'gray'} color={isValid ? 'blue' : 'gray'}
type="submit" type="submit"
placeholder={''}
> >
<i>^</i> Next <i>^</i> Next
</Button> </Button>

View File

@ -1,7 +1,7 @@
import React, { useState } from 'react'; import { useState } from 'react';
import toast from 'react-hot-toast'; import toast from 'react-hot-toast';
import { Button } from '@material-tailwind/react'; import { Button } from '@snowballtools/material-tailwind-react-fork';
import { DeleteWebhookDialog } from 'components/projects/Dialog/DeleteWebhookDialog'; import { DeleteWebhookDialog } from 'components/projects/Dialog/DeleteWebhookDialog';
@ -22,7 +22,6 @@ const WebhookCard = ({ webhookUrl, onDelete }: WebhookCardProps) => {
navigator.clipboard.writeText(webhookUrl); navigator.clipboard.writeText(webhookUrl);
toast.success('Copied to clipboard'); toast.success('Copied to clipboard');
}} }}
placeholder={''}
> >
C C
</Button> </Button>
@ -32,7 +31,6 @@ const WebhookCard = ({ webhookUrl, onDelete }: WebhookCardProps) => {
onClick={() => { onClick={() => {
setDeleteDialogOpen(true); setDeleteDialogOpen(true);
}} }}
placeholder={''}
> >
X X
</Button> </Button>

View File

@ -1,6 +1,9 @@
// https://github.com/creativetimofficial/material-tailwind/issues/419#issuecomment-1760474312 // https://github.com/creativetimofficial/material-tailwind/issues/419#issuecomment-1760474312
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { Select, SelectProps } from '@material-tailwind/react'; import {
Select,
SelectProps,
} from '@snowballtools/material-tailwind-react-fork';
// TODO: Use correct type for ref // TODO: Use correct type for ref
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
@ -9,7 +12,7 @@ const AsyncSelect = React.forwardRef((props: SelectProps, ref: any) => {
useEffect(() => setKey((preVal) => preVal + 1), [props]); useEffect(() => setKey((preVal) => preVal + 1), [props]);
return <Select key={key} ref={ref} {...props} placeholder={''} />; return <Select key={key} ref={ref} {...props} />;
}); });
AsyncSelect.displayName = 'AsyncSelect'; AsyncSelect.displayName = 'AsyncSelect';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { type ComponentPropsWithoutRef, type ComponentProps } from 'react'; import { type ComponentPropsWithoutRef, type ComponentProps } from 'react';
import { avatarTheme, type AvatarVariants } from './Avatar.theme'; import { avatarTheme, type AvatarVariants } from './Avatar.theme';
import * as PrimitiveAvatar from '@radix-ui/react-avatar'; import * as PrimitiveAvatar from '@radix-ui/react-avatar';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { ComponentPropsWithoutRef } from 'react'; import { ComponentPropsWithoutRef } from 'react';
import { BadgeTheme, badgeTheme } from './Badge.theme'; import { BadgeTheme, badgeTheme } from './Badge.theme';

View File

@ -1,4 +1,4 @@
import React, { forwardRef, useCallback } from 'react'; import { forwardRef, useCallback } from 'react';
import type { ComponentPropsWithoutRef, ReactNode } from 'react'; import type { ComponentPropsWithoutRef, ReactNode } from 'react';
import { buttonTheme } from './Button.theme'; import { buttonTheme } from './Button.theme';

View File

@ -1,4 +1,4 @@
import React, { import {
ComponentPropsWithRef, ComponentPropsWithRef,
MouseEvent, MouseEvent,
ReactNode, ReactNode,

View File

@ -1,4 +1,3 @@
import React from 'react';
import * as CheckboxRadix from '@radix-ui/react-checkbox'; import * as CheckboxRadix from '@radix-ui/react-checkbox';
import { type CheckboxProps as CheckboxRadixProps } from '@radix-ui/react-checkbox'; import { type CheckboxProps as CheckboxRadixProps } from '@radix-ui/react-checkbox';

View File

@ -1,4 +1,4 @@
import React, { ReactNode } from 'react'; import { ReactNode } from 'react';
import { Modal, ModalProps } from './Modal'; import { Modal, ModalProps } from './Modal';
import { Button, ButtonOrLinkProps } from './Button'; import { Button, ButtonOrLinkProps } from './Button';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const ArrowLeftCircleFilledIcon = (props: CustomIconProps) => { export const ArrowLeftCircleFilledIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const ArrowRightCircleFilledIcon = (props: CustomIconProps) => { export const ArrowRightCircleFilledIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const ArrowRightCircleIcon = (props: CustomIconProps) => { export const ArrowRightCircleIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const BranchIcon = (props: CustomIconProps) => { export const BranchIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const BranchStrokeIcon = (props: CustomIconProps) => { export const BranchStrokeIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const BuildingIcon = (props: CustomIconProps) => { export const BuildingIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const CalendarDaysIcon = (props: CustomIconProps) => { export const CalendarDaysIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const CalendarIcon = (props: CustomIconProps) => { export const CalendarIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const CheckIcon = (props: CustomIconProps) => { export const CheckIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const CheckRadioIcon = (props: CustomIconProps) => { export const CheckRadioIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const CheckRadioOutlineIcon = (props: CustomIconProps) => { export const CheckRadioOutlineIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const CheckRoundFilledIcon = (props: CustomIconProps) => { export const CheckRoundFilledIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const ChevronDoubleDownIcon = (props: CustomIconProps) => { export const ChevronDoubleDownIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const ChevronDownIcon = (props: CustomIconProps) => { export const ChevronDownIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const ChevronGrabberHorizontal = (props: CustomIconProps) => { export const ChevronGrabberHorizontal = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const ChevronLeft = (props: CustomIconProps) => { export const ChevronLeft = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const ChevronRight = (props: CustomIconProps) => { export const ChevronRight = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const ChevronUpDown = (props: CustomIconProps) => { export const ChevronUpDown = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const CirclePlaceholderOnIcon = (props: CustomIconProps) => { export const CirclePlaceholderOnIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const ClockIcon = (props: CustomIconProps) => { export const ClockIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const ClockOutlineIcon = (props: CustomIconProps) => { export const ClockOutlineIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const CommitIcon = (props: CustomIconProps) => { export const CommitIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const CopyIcon = (props: CustomIconProps) => { export const CopyIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const CrossCircleIcon = (props: CustomIconProps) => { export const CrossCircleIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const CrossIcon = (props: CustomIconProps) => { export const CrossIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const CursorBoxIcon = (props: CustomIconProps) => { export const CursorBoxIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,4 @@
import React, { ComponentPropsWithoutRef } from 'react'; import { ComponentPropsWithoutRef } from 'react';
export interface CustomIconProps extends ComponentPropsWithoutRef<'svg'> { export interface CustomIconProps extends ComponentPropsWithoutRef<'svg'> {
size?: number | string; // width and height will both be set as the same value size?: number | string; // width and height will both be set as the same value

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const EllipseIcon: React.FC<CustomIconProps> = (props) => { export const EllipseIcon: React.FC<CustomIconProps> = (props) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
import { EllipseIcon } from './EllipseIcon'; import { EllipseIcon } from './EllipseIcon';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const FolderIcon = (props: CustomIconProps) => { export const FolderIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const GitHubLogo = (props: CustomIconProps) => { export const GitHubLogo = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const GitIcon: React.FC<CustomIconProps> = (props) => { export const GitIcon: React.FC<CustomIconProps> = (props) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const GitTeaIcon: React.FC<CustomIconProps> = (props) => { export const GitTeaIcon: React.FC<CustomIconProps> = (props) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const GithubIcon: React.FC<CustomIconProps> = (props) => { export const GithubIcon: React.FC<CustomIconProps> = (props) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const GithubStrokeIcon = (props: CustomIconProps) => { export const GithubStrokeIcon = (props: CustomIconProps) => {

View File

@ -1,4 +1,3 @@
import React from 'react';
import { CustomIcon, CustomIconProps } from './CustomIcon'; import { CustomIcon, CustomIconProps } from './CustomIcon';
export const GlobeIcon = (props: CustomIconProps) => { export const GlobeIcon = (props: CustomIconProps) => {

Some files were not shown because too many files have changed in this diff Show More