forked from cerc-io/snowballtools-base
Lint using tsc; fix type errors
This commit is contained in:
parent
f8d706233e
commit
2274e8d145
@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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",
|
||||||
|
@ -15,4 +15,4 @@ module.exports = {
|
|||||||
{ allowConstantExport: true },
|
{ allowConstantExport: true },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
};
|
||||||
|
@ -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`
|
||||||
|
@ -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" />
|
||||||
|
@ -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",
|
||||||
|
@ -3,4 +3,4 @@ export default {
|
|||||||
tailwindcss: {},
|
tailwindcss: {},
|
||||||
autoprefixer: {},
|
autoprefixer: {},
|
||||||
},
|
},
|
||||||
}
|
};
|
||||||
|
@ -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';
|
||||||
|
|
||||||
|
@ -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 />,
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
@ -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,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
@ -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>
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import React from 'react';
|
|
||||||
import {
|
import {
|
||||||
default as ReactDropdown,
|
default as ReactDropdown,
|
||||||
Option as ReactDropdownOption,
|
Option as ReactDropdownOption,
|
||||||
|
@ -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
|
||||||
|
@ -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" />;
|
||||||
};
|
};
|
||||||
|
@ -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';
|
||||||
|
|
||||||
|
@ -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}
|
||||||
|
@ -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';
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import React from 'react';
|
|
||||||
import * as CSS from 'csstype';
|
import * as CSS from 'csstype';
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -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 {}
|
||||||
|
|
||||||
|
@ -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 {
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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 {}
|
||||||
|
|
||||||
|
@ -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 {
|
||||||
|
@ -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;
|
||||||
|
@ -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>
|
||||||
|
@ -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';
|
||||||
|
@ -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';
|
||||||
|
@ -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'> {}
|
||||||
|
@ -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';
|
||||||
|
@ -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',
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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}
|
||||||
|
@ -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);
|
||||||
|
@ -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,
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import React, { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
import {
|
import {
|
||||||
Deployment,
|
Deployment,
|
||||||
DeploymentStatus,
|
DeploymentStatus,
|
||||||
|
@ -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';
|
||||||
|
@ -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>
|
||||||
|
@ -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',
|
||||||
|
@ -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';
|
||||||
|
@ -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 {
|
||||||
|
@ -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';
|
||||||
|
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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 project’s
|
Deleting your project is irreversible. Enter your project’s
|
||||||
name
|
name
|
||||||
<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>
|
||||||
|
@ -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, they’ll show up here.
|
Once you add them, they’ll show up here.
|
||||||
</Typography>
|
</Typography>
|
||||||
</Card>
|
</Card>
|
||||||
|
@ -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>
|
||||||
) : (
|
) : (
|
||||||
|
@ -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't find this branch in the connected Git repository.
|
We couldn'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>
|
||||||
|
@ -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>
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
import React from 'react';
|
import { GitSelect } from '../../../../types/types';
|
||||||
|
|
||||||
import { GitSelect } from '../../../../types';
|
|
||||||
|
|
||||||
const GitSelectionSection = ({
|
const GitSelectionSection = ({
|
||||||
gitSelectionHandler,
|
gitSelectionHandler,
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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';
|
||||||
|
@ -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';
|
||||||
|
@ -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';
|
||||||
|
|
||||||
|
@ -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';
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import React, {
|
import {
|
||||||
ComponentPropsWithRef,
|
ComponentPropsWithRef,
|
||||||
MouseEvent,
|
MouseEvent,
|
||||||
ReactNode,
|
ReactNode,
|
||||||
|
@ -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';
|
||||||
|
|
||||||
|
@ -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';
|
||||||
|
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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
|
||||||
|
@ -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) => {
|
||||||
|
@ -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';
|
||||||
|
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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) => {
|
||||||
|
@ -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
Loading…
Reference in New Issue
Block a user