chore: switch from heroicons to primer icons

This commit is contained in:
Aarnav Tale
2024-05-04 15:03:21 -04:00
parent 61ae161496
commit c6cdcf35eb
12 changed files with 1612 additions and 1471 deletions
+2 -2
View File
@@ -1,4 +1,4 @@
import { ClipboardIcon } from '@heroicons/react/24/outline' import { CopyIcon } from '@primer/octicons-react'
import { toast } from './Toaster' import { toast } from './Toaster'
@@ -28,7 +28,7 @@ export default function Attribute({ name, value, isCopyable }: Properties) {
<dd className='min-w-0 truncate px-2 py-1'> <dd className='min-w-0 truncate px-2 py-1'>
{value} {value}
</dd> </dd>
<ClipboardIcon className='text-gray-600 dark:text-gray-200 pr-2 w-max h-4'/> <CopyIcon className='text-gray-600 dark:text-gray-200 pr-2 w-max h-4'/>
</button> </button>
) : ( ) : (
<dd className='min-w-0 truncate px-2 py-1'> <dd className='min-w-0 truncate px-2 py-1'>
+3 -3
View File
@@ -1,4 +1,4 @@
import { ExclamationTriangleIcon } from '@heroicons/react/24/outline' import { AlertIcon } from '@primer/octicons-react'
import { isRouteErrorResponse, useRouteError } from '@remix-run/react' import { isRouteErrorResponse, useRouteError } from '@remix-run/react'
import { useState } from 'react' import { useState } from 'react'
@@ -23,7 +23,7 @@ export function ErrorPopup({ type = 'full' }: Properties) {
<Dialog> <Dialog>
<Dialog.Panel <Dialog.Panel
className={cn( className={cn(
type === 'embedded' ? 'pointer-events-none bg-transparent dark:bg-transparent' : '', type === 'embedded' ? 'pointer-events-none bg-transparent dark:bg-transparent' : ''
)} )}
control={open} control={open}
> >
@@ -33,7 +33,7 @@ export function ErrorPopup({ type = 'full' }: Properties) {
<Dialog.Title className='text-3xl mb-0'> <Dialog.Title className='text-3xl mb-0'>
{routing ? error.status : 'Error'} {routing ? error.status : 'Error'}
</Dialog.Title> </Dialog.Title>
<ExclamationTriangleIcon className='w-12 h-12 text-red-500'/> <AlertIcon className='w-12 h-12 text-red-500'/>
</div> </div>
<Dialog.Text className='mt-4 text-lg'> <Dialog.Text className='mt-4 text-lg'>
{routing ? ( {routing ? (
+2 -2
View File
@@ -1,4 +1,4 @@
import { InformationCircleIcon } from '@heroicons/react/24/outline' import { InfoIcon } from '@primer/octicons-react'
import clsx from 'clsx' import clsx from 'clsx'
import { type ReactNode } from 'react' import { type ReactNode } from 'react'
@@ -9,7 +9,7 @@ export default function Notice({ children }: { readonly children: ReactNode }) {
'bg-slate-400 dark:bg-slate-700' 'bg-slate-400 dark:bg-slate-700'
)} )}
> >
<InformationCircleIcon className='h-6 w-6 text-white'/> <InfoIcon className='h-6 w-6 text-white'/>
{children} {children}
</div> </div>
) )
+2 -2
View File
@@ -1,4 +1,4 @@
import { XMarkIcon } from '@heroicons/react/24/outline' import { XIcon } from '@primer/octicons-react'
import { type AriaToastProps, useToast, useToastRegion } from '@react-aria/toast' import { type AriaToastProps, useToast, useToastRegion } from '@react-aria/toast'
import { ToastQueue, type ToastState, useToastQueue } from '@react-stately/toast' import { ToastQueue, type ToastState, useToastQueue } from '@react-stately/toast'
import { type ReactNode, useRef } from 'react' import { type ReactNode, useRef } from 'react'
@@ -35,7 +35,7 @@ function Toast({ state, ...properties }: ToastProperties) {
'hover:bg-main-600 dark:hover:bg-main-700' 'hover:bg-main-600 dark:hover:bg-main-700'
)} )}
> >
<XMarkIcon className='w-4 h-4'/> <XIcon className='w-4 h-4'/>
</Button> </Button>
</div> </div>
) )
+4 -3
View File
@@ -1,10 +1,11 @@
import { BeakerIcon, CubeTransparentIcon, EyeIcon, PencilSquareIcon } from '@heroicons/react/24/outline' import { BeakerIcon, EyeIcon, IssueDraftIcon, PencilIcon } from '@primer/octicons-react'
import { type ActionFunctionArgs, json } from '@remix-run/node' import { type ActionFunctionArgs, json } from '@remix-run/node'
import { useLoaderData } from '@remix-run/react' import { useLoaderData } from '@remix-run/react'
import { useState } from 'react' import { useState } from 'react'
import { Tab, TabList, TabPanel, Tabs } from 'react-aria-components' import { Tab, TabList, TabPanel, Tabs } from 'react-aria-components'
import { ClientOnly } from 'remix-utils/client-only' import { ClientOnly } from 'remix-utils/client-only'
import Link from '~/components/Link'
import Notice from '~/components/Notice' import Notice from '~/components/Notice'
import { cn } from '~/utils/cn' import { cn } from '~/utils/cn'
import { getAcl, getContext, patchAcl } from '~/utils/config' import { getAcl, getContext, patchAcl } from '~/utils/config'
@@ -102,7 +103,7 @@ export default function Page() {
isSelected ? 'text-gray-900 dark:text-gray-100' : '' isSelected ? 'text-gray-900 dark:text-gray-100' : ''
)} )}
> >
<PencilSquareIcon className='w-5 h-5'/> <PencilIcon className='w-5 h-5'/>
<p>Edit file</p> <p>Edit file</p>
</Tab> </Tab>
<Tab <Tab
@@ -152,7 +153,7 @@ export default function Page() {
'p-16 flex flex-col items-center justify-center' 'p-16 flex flex-col items-center justify-center'
)} )}
> >
<CubeTransparentIcon className='w-24 h-24 text-gray-300 dark:text-gray-500'/> <IssueDraftIcon className='w-24 h-24 text-gray-300 dark:text-gray-500'/>
<p className='w-1/2 text-center mt-4'> <p className='w-1/2 text-center mt-4'>
The Preview rules is very much still a work in progress. The Preview rules is very much still a work in progress.
It is a bit complicated to implement right now but hopefully it will be available soon. It is a bit complicated to implement right now but hopefully it will be available soon.
+3 -3
View File
@@ -15,7 +15,7 @@ import {
verticalListSortingStrategy verticalListSortingStrategy
} from '@dnd-kit/sortable' } from '@dnd-kit/sortable'
import { CSS } from '@dnd-kit/utilities' import { CSS } from '@dnd-kit/utilities'
import { Bars3Icon, LockClosedIcon } from '@heroicons/react/24/outline' import { LockIcon, ThreeBarsIcon } from '@primer/octicons-react'
import { type FetcherWithComponents, useFetcher } from '@remix-run/react' import { type FetcherWithComponents, useFetcher } from '@remix-run/react'
import clsx from 'clsx' import clsx from 'clsx'
import { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
@@ -83,7 +83,7 @@ export default function Domains({ baseDomain, searchDomains, disabled }: Propert
{baseDomain ? ( {baseDomain ? (
<TableList.Item key='magic-dns-sd'> <TableList.Item key='magic-dns-sd'>
<p className='font-mono text-sm'>{baseDomain}</p> <p className='font-mono text-sm'>{baseDomain}</p>
<LockClosedIcon className='h-4 w-4'/> <LockIcon className='h-4 w-4'/>
</TableList.Item> </TableList.Item>
) : undefined} ) : undefined}
<SortableContext <SortableContext
@@ -190,7 +190,7 @@ function Domain({ domain, id, localDomains, isDrag, disabled, fetcher }: DomainP
> >
<p className='font-mono text-sm flex items-center gap-4'> <p className='font-mono text-sm flex items-center gap-4'>
{disabled ? undefined : ( {disabled ? undefined : (
<Bars3Icon <ThreeBarsIcon
className='h-4 w-4 text-gray-400 focus:outline-none' className='h-4 w-4 text-gray-400 focus:outline-none'
{...attributes} {...attributes}
{...listeners} {...listeners}
+4 -4
View File
@@ -1,5 +1,5 @@
/* eslint-disable react/hook-use-state */ /* eslint-disable react/hook-use-state */
import { ChevronDownIcon, ClipboardIcon, EllipsisHorizontalIcon } from '@heroicons/react/24/outline' import { ChevronDownIcon, CopyIcon, KebabHorizontalIcon } from '@primer/octicons-react'
import { type FetcherWithComponents, Link } from '@remix-run/react' import { type FetcherWithComponents, Link } from '@remix-run/react'
import { useState } from 'react' import { useState } from 'react'
@@ -96,7 +96,7 @@ export default function MachineRow({ machine, routes, fetcher, magic }: MachineP
}} }}
> >
{ip} {ip}
<ClipboardIcon className='w-3 h-3'/> <CopyIcon className='w-3 h-3'/>
</Menu.ItemButton> </Menu.ItemButton>
))} ))}
{magic ? ( {magic ? (
@@ -113,7 +113,7 @@ export default function MachineRow({ machine, routes, fetcher, magic }: MachineP
}} }}
> >
{machine.givenName}.{machine.user.name}.{magic} {machine.givenName}.{machine.user.name}.{magic}
<ClipboardIcon className='w-3 h-3'/> <CopyIcon className='w-3 h-3'/>
</Menu.ItemButton> </Menu.ItemButton>
) : undefined} ) : undefined}
</Menu.Items> </Menu.Items>
@@ -173,7 +173,7 @@ export default function MachineRow({ machine, routes, fetcher, magic }: MachineP
'group-hover:border-gray-200 dark:group-hover:border-zinc-700' 'group-hover:border-gray-200 dark:group-hover:border-zinc-700'
)} )}
> >
<EllipsisHorizontalIcon className='w-5'/> <KebabHorizontalIcon className='w-5'/>
</Menu.Button> </Menu.Button>
<Menu.Items> <Menu.Items>
<Menu.ItemButton control={renameState}> <Menu.ItemButton control={renameState}>
+2 -2
View File
@@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/no-non-null-assertion */
import { InformationCircleIcon } from '@heroicons/react/24/outline' import { InfoIcon } from '@primer/octicons-react'
import { type ActionFunctionArgs, json, type LoaderFunctionArgs } from '@remix-run/node' import { type ActionFunctionArgs, json, type LoaderFunctionArgs } from '@remix-run/node'
import { useFetcher, useLoaderData } from '@remix-run/react' import { useFetcher, useLoaderData } from '@remix-run/react'
import { Button, Tooltip, TooltipTrigger } from 'react-aria-components' import { Button, Tooltip, TooltipTrigger } from 'react-aria-components'
@@ -121,7 +121,7 @@ export default function Page() {
{data.magic ? ( {data.magic ? (
<TooltipTrigger delay={0}> <TooltipTrigger delay={0}>
<Button> <Button>
<InformationCircleIcon className='w-4 h-4 text-gray-400'/> <InfoIcon className='w-4 h-4'/>
</Button> </Button>
<Tooltip className={cn( <Tooltip className={cn(
'text-sm max-w-xs p-2 rounded-lg mb-2', 'text-sm max-w-xs p-2 rounded-lg mb-2',
+3 -3
View File
@@ -1,9 +1,9 @@
import { CubeTransparentIcon } from '@heroicons/react/24/outline' import { IssueDraftIcon } from '@primer/octicons-react'
export default function Page() { export default function Page() {
return ( return (
<div className='w-96 mx-auto flex flex-col justify-center items-center text-center'> <div className='w-96 mx-auto flex flex-col justify-center items-center text-center my-8'>
<CubeTransparentIcon className='w-32 h-32 text-gray-500'/> <IssueDraftIcon className='w-24 h-24 text-gray-300 dark:text-gray-500'/>
<p className='text-lg mt-8'> <p className='text-lg mt-8'>
The settings page is currently unavailable. The settings page is currently unavailable.
It will be available in a future release. It will be available in a future release.
+3 -4
View File
@@ -1,13 +1,12 @@
/* eslint-disable unicorn/filename-case */ /* eslint-disable unicorn/filename-case */
import { ClipboardIcon, UserIcon } from '@heroicons/react/24/outline' import { PersonIcon } from '@primer/octicons-react'
import { type LoaderFunctionArgs } from '@remix-run/node' import { type LoaderFunctionArgs } from '@remix-run/node'
import { useLoaderData } from '@remix-run/react' import { useLoaderData } from '@remix-run/react'
import { toast } from 'react-hot-toast/headless'
import Attribute from '~/components/Attribute' import Attribute from '~/components/Attribute'
import Card from '~/components/Card' import Card from '~/components/Card'
import StatusCircle from '~/components/StatusCircle' import StatusCircle from '~/components/StatusCircle'
import { type Machine, type User } from '~/types' import { type Machine } from '~/types'
import { pull } from '~/utils/headscale' import { pull } from '~/utils/headscale'
import { getSession } from '~/utils/sessions' import { getSession } from '~/utils/sessions'
import { useLiveData } from '~/utils/useLiveData' import { useLiveData } from '~/utils/useLiveData'
@@ -47,7 +46,7 @@ export default function Page() {
{data.map(user => ( {data.map(user => (
<Card key={user.id}> <Card key={user.id}>
<div className='flex items-center gap-4'> <div className='flex items-center gap-4'>
<UserIcon className='w-6 h-6'/> <PersonIcon className='w-6 h-6'/>
<span className='text-lg font-mono'> <span className='text-lg font-mono'>
{user.name} {user.name}
</span> </span>
+24 -24
View File
@@ -17,40 +17,40 @@
"@dnd-kit/modifiers": "^7.0.0", "@dnd-kit/modifiers": "^7.0.0",
"@dnd-kit/sortable": "^8.0.0", "@dnd-kit/sortable": "^8.0.0",
"@dnd-kit/utilities": "^3.2.2", "@dnd-kit/utilities": "^3.2.2",
"@heroicons/react": "^2.1.3", "@primer/octicons-react": "^19.9.0",
"@react-aria/toast": "3.0.0-beta.10", "@react-aria/toast": "3.0.0-beta.11",
"@react-stately/toast": "3.0.0-beta.2", "@react-stately/toast": "3.0.0-beta.2",
"@remix-run/node": "^2.8.1", "@remix-run/node": "^2.9.1",
"@remix-run/react": "^2.8.1", "@remix-run/react": "^2.9.1",
"@remix-run/serve": "^2.8.1", "@remix-run/serve": "^2.9.1",
"@uiw/codemirror-theme-github": "^4.21.25", "@uiw/codemirror-theme-github": "^4.22.0",
"@uiw/react-codemirror": "^4.21.25", "@uiw/react-codemirror": "^4.22.0",
"clsx": "^2.1.0", "clsx": "^2.1.1",
"isbot": "^4.1.0", "isbot": "^5.1.6",
"oauth4webapi": "^2.10.3", "oauth4webapi": "^2.10.4",
"react": "^18.2.0", "react": "^18.3.1",
"react-aria-components": "^1.1.1", "react-aria-components": "^1.2.0",
"react-codemirror-merge": "^4.21.25", "react-codemirror-merge": "^4.22.0",
"react-dom": "^18.2.0", "react-dom": "^18.3.1",
"remix-utils": "^7.6.0", "remix-utils": "^7.6.0",
"tailwind-merge": "^2.3.0", "tailwind-merge": "^2.3.0",
"tailwindcss-react-aria-components": "^1.1.1", "tailwindcss-react-aria-components": "^1.1.2",
"undici": "^6.10.2", "undici": "^6.15.0",
"usehooks-ts": "^3.0.2", "usehooks-ts": "^3.1.0",
"yaml": "^2.4.1" "yaml": "^2.4.2"
}, },
"devDependencies": { "devDependencies": {
"@remix-run/dev": "^2.8.1", "@remix-run/dev": "^2.9.1",
"@types/react": "^18.2.20", "@types/react": "^18.3.1",
"@types/react-dom": "^18.2.7", "@types/react-dom": "^18.3.0",
"autoprefixer": "^10.4.19", "autoprefixer": "^10.4.19",
"eslint": "^8.57.0", "eslint": "^8.57.0",
"eslint-config-tale": "^1.0.16", "eslint-config-tale": "^1.0.16",
"postcss": "^8.4.38", "postcss": "^8.4.38",
"tailwindcss": "^3.4.1", "tailwindcss": "^3.4.3",
"tailwindcss-animate": "^1.0.7", "tailwindcss-animate": "^1.0.7",
"typescript": "^5.1.6", "typescript": "^5.4.5",
"vite": "^5.1.0", "vite": "^5.2.11",
"vite-tsconfig-paths": "^4.2.1" "vite-tsconfig-paths": "^4.2.1"
}, },
"engines": { "engines": {
+1560 -1419
View File
File diff suppressed because it is too large Load Diff