styled explorer top bar

This commit is contained in:
Jamie Pine 2022-10-21 23:21:22 -07:00
parent 2f105e9bb6
commit da344f954c
13 changed files with 163 additions and 159 deletions

View file

@ -0,0 +1,3 @@
<svg width="32" height="21" viewBox="0 0 32 21" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.4833 20.6496C15.2826 20.8018 14.0268 20.4168 13.1047 19.4947L1.18723 7.57729C-0.395744 5.99431 -0.395744 3.42781 1.18723 1.84484C2.7702 0.261866 5.3367 0.261864 6.91968 1.84484L15.9965 10.9217L25.0803 1.83789C26.6633 0.254917 29.2298 0.254917 30.8128 1.83789C32.3957 3.42086 32.3957 5.98737 30.8128 7.57034L18.8953 19.4878C18.2195 20.1636 17.3646 20.5508 16.4833 20.6496Z" fill="currentColor"/>
</svg>

After

Width:  |  Height:  |  Size: 559 B

View file

@ -26,49 +26,48 @@ import { Tooltip } from '../tooltip/Tooltip';
import { ExplorerOptionsPanel } from './ExplorerOptionsPanel';
export interface TopBarButtonProps {
icon: React.ComponentType<IconProps>;
group?: boolean;
children: React.ReactNode;
rounding?: 'none' | 'left' | 'right' | 'both';
active?: boolean;
left?: boolean;
right?: boolean;
className?: string;
onClick?: () => void;
}
// export const TopBarIcon = (icon: any) => tw(icon)`m-0.5 w-5 h-5 text-ink-dull`;
const topBarButtonStyle = cva(
'mr-[1px] flex py-0.5 px-0.5 text-md font-medium rounded-md transition-colors duration-100 outline-none hover:bg-app-selected',
'border-none text-ink-dull hover:text-ink mr-[1px] flex py-0.5 px-0.5 text-md font-medium transition-colors duration-100 outline-none hover:bg-app-selected radix-state-open:bg-app-selected',
{
variants: {
active: {
true: 'bg-app-selected',
false: 'bg-transparent'
},
group: {
true: 'rounded-l-none rounded-r-none'
},
left: {
true: 'rounded-l-md'
},
right: {
true: 'rounded-r-md'
rounding: {
none: 'rounded-none',
left: 'rounded-l-md rounded-r-none',
right: 'rounded-r-md rounded-l-none',
both: 'rounded-md'
}
},
defaultVariants: {
active: false,
rounding: 'both'
}
}
);
const TOP_BAR_ICON_STYLE = 'm-0.5 w-5 h-5 text-ink-dull';
const TopBarButton = forwardRef<HTMLButtonElement, TopBarButtonProps>(
({ icon: Icon, left, right, group, active, className, ...props }, ref) => {
({ rounding, active, className, ...props }, ref) => {
return (
<Button
{...props}
ref={ref}
className={clsx(
'border-none',
topBarButtonStyle({ left, right, group, active }),
className
)}
className={clsx(topBarButtonStyle({ rounding, active }), className)}
>
<Icon weight={'regular'} className="m-0.5 w-5 h-5 text-ink-dull" />
{props.children}
</Button>
);
}
@ -203,10 +202,6 @@ export const TopBar: React.FC<TopBarProps> = (props) => {
<>
<div
data-tauri-drag-region
// Backdrop blur was removed
// but the explorer still resides under the top bar
// in case you wanna turn it back on
// honestly its just work to revert
className={clsx(
'flex h-[2.95rem] -mt-0.5 max-w z-10 pl-3 flex-shrink-0 items-center border-transparent border-b app-background overflow-hidden transition-[background-color] transition-[border-color] duration-250 ease-out',
props.showSeparator && 'top-bar-blur'
@ -214,10 +209,14 @@ export const TopBar: React.FC<TopBarProps> = (props) => {
>
<div className="flex">
<Tooltip label="Navigate back">
<TopBarButton icon={ChevronLeftIcon} onClick={() => navigate(-1)} />
<TopBarButton onClick={() => navigate(-1)}>
<ChevronLeftIcon className={TOP_BAR_ICON_STYLE} />
</TopBarButton>
</Tooltip>
<Tooltip label="Navigate forward">
<TopBarButton icon={ChevronRightIcon} onClick={() => navigate(1)} />
<TopBarButton onClick={() => navigate(1)}>
<ChevronRightIcon className={TOP_BAR_ICON_STYLE} />
</TopBarButton>
</Tooltip>
</div>
@ -231,30 +230,31 @@ export const TopBar: React.FC<TopBarProps> = (props) => {
<div className="flex mx-8">
<Tooltip label="Grid view">
<TopBarButton
group
left
rounding="left"
active={store.layoutMode === 'grid'}
icon={SquaresFour}
onClick={() => (getExplorerStore().layoutMode = 'grid')}
/>
>
<SquaresFour className={TOP_BAR_ICON_STYLE} />
</TopBarButton>
</Tooltip>
<Tooltip label="List view">
<TopBarButton
group
rounding="none"
active={store.layoutMode === 'list'}
icon={Rows}
onClick={() => (getExplorerStore().layoutMode = 'list')}
/>
>
<Rows className={TOP_BAR_ICON_STYLE} />
</TopBarButton>
</Tooltip>
<Tooltip label="Media view">
<TopBarButton
group
right
rounding="right"
active={store.layoutMode === 'media'}
icon={MonitorPlay}
onClick={() => (getExplorerStore().layoutMode = 'media')}
/>
>
<MonitorPlay className={TOP_BAR_ICON_STYLE} />
</TopBarButton>
</Tooltip>
</div>
@ -265,23 +265,32 @@ export const TopBar: React.FC<TopBarProps> = (props) => {
className="focus:outline-none"
trigger={
// <Tooltip label="Major Key Alert">
<TopBarButton icon={Key} />
<TopBarButton>
<Key className={TOP_BAR_ICON_STYLE} />
</TopBarButton>
// </Tooltip>
}
>
<div className="block w-[350px]">
<KeyManager />
<KeyManager className={TOP_BAR_ICON_STYLE} />
</div>
</OverlayPanel>
<Tooltip label="Tag Assign Mode">
<TopBarButton
onClick={() => (getExplorerStore().tagAssignMode = !store.tagAssignMode)}
active={store.tagAssignMode}
icon={store.tagAssignMode ? TagIconSolid : TagIcon}
/>
>
{store.tagAssignMode ? (
<TagIconSolid className={TOP_BAR_ICON_STYLE} />
) : (
<TagIcon className={TOP_BAR_ICON_STYLE} />
)}
</TopBarButton>
</Tooltip>
<Tooltip label="Refresh">
<TopBarButton icon={ArrowsClockwise} />
<TopBarButton>
<ArrowsClockwise className={TOP_BAR_ICON_STYLE} />
</TopBarButton>
</Tooltip>
</div>
</div>
@ -290,7 +299,9 @@ export const TopBar: React.FC<TopBarProps> = (props) => {
className="focus:outline-none"
trigger={
// <Tooltip label="Major Key Alert">
<TopBarButton icon={List} className="my-2" />
<TopBarButton className="my-2">
<List className={TOP_BAR_ICON_STYLE} />
</TopBarButton>
// </Tooltip>
}
>
@ -302,8 +313,13 @@ export const TopBar: React.FC<TopBarProps> = (props) => {
active={store.showInspector}
onClick={() => (getExplorerStore().showInspector = !store.showInspector)}
className="my-2"
icon={SidebarSimple}
/>
>
{store.showInspector ? (
<SidebarSimple className={TOP_BAR_ICON_STYLE} />
) : (
<SidebarSimple className={TOP_BAR_ICON_STYLE} />
)}
</TopBarButton>
{/* <Dropdown
// className="absolute block h-6 w-44 top-2 right-4"
align="right"

View file

@ -11,7 +11,7 @@ export function KeyMounter() {
const ref = useRef<HTMLInputElement>(null);
const [showKey, setShowKey] = useState(false);
const [toggle, setToggle] = useState(false);
const [toggle, setToggle] = useState(true);
const [key, setKey] = useState('');
const [encryptionAlgo, setEncryptionAlgo] = useState('XChaCha20Poly1305');
@ -58,20 +58,8 @@ export function KeyMounter() {
checked={toggle}
onCheckedChange={setToggle}
/>
<Switch
className="bg-app-selected"
size="md"
checked={toggle}
onCheckedChange={setToggle}
/>
<Switch
className="bg-app-selected"
size="lg"
checked={toggle}
onCheckedChange={setToggle}
/>
</div>
<span className="ml-3 mt-[1px] font-medium text-xs">Sync with Library</span>
<span className="ml-3 text-xs font-medium">Sync with Library</span>
<Tooltip label="This key will be mounted on all devices running your Library">
<InformationCircleIcon className="w-4 h-4 ml-1.5 text-ink-faint" />
</Tooltip>

View file

@ -1,20 +1,16 @@
import { CogIcon, LockClosedIcon, PhotoIcon } from '@heroicons/react/24/outline';
import { CogIcon, LockClosedIcon } from '@heroicons/react/24/outline';
import { PlusIcon } from '@heroicons/react/24/solid';
import { useCurrentLibrary, useLibraryMutation, useLibraryQuery, usePlatform } from '@sd/client';
import { LocationCreateArgs } from '@sd/client';
import { Button, CategoryHeading, Dropdown, OverlayPanel, cva } from '@sd/ui';
import { restyle } from '@sd/ui';
import { tw } from '@sd/ui';
import clsx from 'clsx';
import {
CheckCircle,
CirclesFour,
Hexagon,
Planet,
ShareNetwork,
WaveTriangle
} from 'phosphor-react';
import { PropsWithChildren, forwardRef } from 'react';
LocationCreateArgs,
useCurrentLibrary,
useLibraryMutation,
useLibraryQuery,
usePlatform
} from '@sd/client';
import { Button, CategoryHeading, Dropdown, OverlayPanel, cva, tw } from '@sd/ui';
import clsx from 'clsx';
import { CheckCircle, CirclesFour, Planet, ShareNetwork } from 'phosphor-react';
import { PropsWithChildren } from 'react';
import { NavLink, NavLinkProps, useNavigate } from 'react-router-dom';
import { useOperatingSystem } from '../../hooks/useOperatingSystem';
@ -178,7 +174,7 @@ export function Sidebar() {
variant="gray"
className={clsx(
`w-full mb-1 mt-1 -mr-0.5 shadow-xs rounded`,
`!bg-sidebar-box !border-sidebar-line hover:!border-sidebar-selected !text-ink`,
`bg-sidebar-button border-sidebar-line active:bg-sidebar-button hover:!border-sidebar-selected text-ink`,
(library === null || isLoadingLibraries) && '!text-ink-faint',
macOnly(os, '!bg-opacity-80 !border-opacity-40')
)}

View file

@ -14,7 +14,8 @@ body {
.has-blur-effects {
.app-background {
// adjust macOS blur intensity here
@apply bg-app/[0.88];
// @apply bg-app/[0.88];
@apply bg-app;
}
}

View file

@ -18,6 +18,7 @@
},
"dependencies": {
"@headlessui/react": "^1.7.3",
"@headlessui/tailwindcss": "^0.1.1",
"@heroicons/react": "^2.0.12",
"@radix-ui/react-context-menu": "^1.0.0",
"@radix-ui/react-dialog": "^1.0.0",

View file

@ -1,5 +1,5 @@
import { Menu, Transition } from '@headlessui/react';
import { ChevronDownIcon } from '@heroicons/react/24/solid';
import { ReactComponent as CaretDown } from '@sd/assets/svgs/caret.svg';
import { VariantProps, cva } from 'class-variance-authority';
import clsx from 'clsx';
import { Fragment, PropsWithChildren } from 'react';
@ -11,7 +11,7 @@ import { tw } from './utils';
export const Section = tw.div`px-1 py-1 space-y-[2px]`;
const itemStyles = cva(
'text-sm group flex grow shrink-0 rounded items-center w-full whitespace-nowrap px-2 py-1 mb-[2px] disabled:opacity-50 disabled:cursor-not-allowed',
'text-sm group flex grow shrink-0 rounded items-center w-full whitespace-nowrap px-2 py-1 mb-[2px] disabled:opacity-50 disabled:cursor-not-allowed',
{
variants: {
selected: {
@ -21,19 +21,13 @@ const itemStyles = cva(
},
active: {
true: ''
// false: 'text-gray-900 dark:text-gray-200'
}
}
}
);
const itemIconStyles = cva('mr-2 w-4 h-4', {
variants: {
// active: {
// // true: 'dark:text-ink-dull'
// // false: 'text-gray-600 dark:text-gray-200'
// }
}
variants: {}
});
type DropdownItemProps =
@ -69,7 +63,10 @@ export const Button = ({ children, className, ...props }: UI.ButtonProps) => {
<UI.Button size="sm" {...props} className={clsx('flex text-left', className)}>
{children}
<span className="flex-grow" />
<ChevronDownIcon className="w-5 h-5" aria-hidden="true" />
<CaretDown
className="w-[10px] text-ink-dull transition-transform ui-open:rotate-180"
aria-hidden="true"
/>
</UI.Button>
);
};
@ -99,7 +96,7 @@ export const Root = (props: PropsWithChildren<DropdownRootProps>) => {
>
<Menu.Items
className={clsx(
'absolute z-50 min-w-fit w-full border divide-y divide-app-border/50 rounded shadow-xl top-full ring-1 ring-black ring-opacity-5 focus:outline-none bg-app-box border-app-border',
'absolute z-50 min-w-fit w-full border divide-y divide-app-line/50 rounded shadow-xl top-full ring-1 ring-black ring-opacity-5 focus:outline-none bg-app-box border-app-border',
props.itemsClassName,
{ 'left-0': props.align === 'left' },
{ 'right-0': props.align === 'right' }

View file

@ -29,7 +29,7 @@ export function Select(props: PropsWithChildren<SelectProps>) {
</span>
<SelectPrimitive.Icon>
<ChevronDouble className="w-3 h-3 mr-0.5 text-gray-300" />
<ChevronDouble className="w-3 h-3 mr-0.5 text-ink-dull" />
</SelectPrimitive.Icon>
</SelectPrimitive.Trigger>

View file

@ -34,7 +34,7 @@ const thumbStyles = cva(
{
variants: {
size: {
sm: 'w-[12px] h-[12px] radix-state-checked:translate-x-[15px]',
sm: 'w-[12px] h-[12px] radix-state-checked:translate-x-[14px]',
md: 'w-[19px] h-[19px] radix-state-checked:translate-x-[20px]',
lg: 'w-6 h-6 radix-state-checked:translate-x-[23px]'
}

View file

@ -13,5 +13,5 @@ export const List = tw(TabsPrimitive.TabsList)`
`;
export const Trigger = tw(TabsPrimitive.TabsTrigger)`
px-1.5 py-0.5 rounded text-sm font-medium radix-state-active:bg-accent radix-state-active:text-white
px-2 py-0.5 rounded-full text-sm font-medium radix-state-active:bg-app-selected
`;

View file

@ -53,15 +53,15 @@
--color-sidebar: 230, 15%, 7%;
--color-sidebar-box: 230, 15%, 13%;
--color-sidebar-line: 230, 15%, 23%;
--color-sidebar-divider: 230, 15%, 23%;
--color-sidebar-button: 230, 15%, 23%;
--color-sidebar-selected: 230, 15%, 16%;
--color-sidebar-divider: 230, 15%, 17%;
--color-sidebar-button: 230, 15%, 17%;
--color-sidebar-selected: 230, 15%, 22%;
--color-sidebar-separator: 230, 15%, 23%;
--color-sidebar-shade: 230, 15%, 23%;
// main
--color-app: 230, 15%, 13%;
--color-app-box: 230, 15%, 20%;
--color-app-overlay: 230, 14%, 17%;
--color-app-overlay: 230, 15%, 14%;
--color-app-input: 230, 15%, 20%;
--color-app-focus: 230, 15%, 10%;
--color-app-line: 230, 15%, 26%;

View file

@ -107,10 +107,11 @@ module.exports = function (app, options) {
},
plugins: [
require('@tailwindcss/forms'),
plugin(({ addVariant }) => {
addVariant('open', '&[data-state="open"]');
addVariant('closed', '&[data-state="closed"]');
}),
// plugin(({ addVariant }) => {
// addVariant('open', '&[data-state="open"]');
// addVariant('closed', '&[data-state="closed"]');
// }),
require('@headlessui/tailwindcss'),
require('tailwindcss-radix')()
]
};

View file

@ -518,6 +518,7 @@ importers:
specifiers:
'@babel/core': ^7.19.3
'@headlessui/react': ^1.7.3
'@headlessui/tailwindcss': ^0.1.1
'@heroicons/react': ^2.0.12
'@radix-ui/react-context-menu': ^1.0.0
'@radix-ui/react-dialog': ^1.0.0
@ -565,6 +566,7 @@ importers:
typescript: ^4.8.4
dependencies:
'@headlessui/react': 1.7.3_biqbaboplfbrettd7655fr4n2y
'@headlessui/tailwindcss': 0.1.1_xkowlklhtk6sfvtndbucb3hfiy
'@heroicons/react': 2.0.12_react@18.2.0
'@radix-ui/react-context-menu': 1.0.0_rj7ozvcq3uehdlnj3cbwzbi5ce
'@radix-ui/react-dialog': 1.0.2_rj7ozvcq3uehdlnj3cbwzbi5ce
@ -610,7 +612,7 @@ importers:
storybook: 6.5.12_yalvw3r2waubxycyb7k7qsruca
storybook-tailwind-dark-mode: 1.0.15_biqbaboplfbrettd7655fr4n2y
style-loader: 3.3.1
tailwindcss: 3.1.8_postcss@8.4.18
tailwindcss: 3.1.8
typescript: 4.8.4
packages:
@ -2148,8 +2150,8 @@ packages:
'@cspell/dict-docker': 1.1.1
'@cspell/dict-dotnet': 2.0.1
'@cspell/dict-elixir': 2.0.1
'@cspell/dict-en-gb': 1.1.33
'@cspell/dict-en_us': 2.3.3
'@cspell/dict-en-gb': 1.1.33
'@cspell/dict-filetypes': 2.1.1
'@cspell/dict-fonts': 2.1.0
'@cspell/dict-fullstack': 2.0.6
@ -2940,6 +2942,17 @@ packages:
react-dom: 18.2.0_react@18.2.0
dev: false
/@headlessui/tailwindcss/0.1.1_xkowlklhtk6sfvtndbucb3hfiy:
resolution: {integrity: sha512-MJbc/MG1iVDow0IQYdsZNVY2xiTa2fDpXLF01xIAyNH6M+Ks0c6X0k3x6PqAvwvKWKEFhS0MlMzrDUVTU6cXDA==}
engines: {node: '>=10'}
dependencies:
tailwindcss: 0.0.0-insiders.fe08e91_xkowlklhtk6sfvtndbucb3hfiy
transitivePeerDependencies:
- autoprefixer
- postcss
- ts-node
dev: false
/@heroicons/react/2.0.12_react@18.2.0:
resolution: {integrity: sha512-FZxKh3i9aKIDxyALTgIpSF2t6V6/eZfF5mRu41QlwkX3Oxzecdm1u6dpft6PQGxIBwO7TKYWaMAYYL8mp/EaOg==}
peerDependencies:
@ -6650,7 +6663,7 @@ packages:
tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1'
dependencies:
mini-svg-data-uri: 1.4.4
tailwindcss: 3.1.8_postcss@8.4.18
tailwindcss: 3.1.8
dev: false
/@tailwindcss/line-clamp/0.4.2:
@ -6664,7 +6677,7 @@ packages:
peerDependencies:
tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1'
dependencies:
tailwindcss: 3.1.8_postcss@8.4.18
tailwindcss: 3.1.8
dev: true
/@tailwindcss/typography/0.5.7:
@ -6687,7 +6700,7 @@ packages:
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
postcss-selector-parser: 6.0.10
tailwindcss: 3.1.8_postcss@8.4.18
tailwindcss: 3.1.8
dev: true
/@tanstack/match-sorter-utils/8.5.14:
@ -7254,7 +7267,6 @@ packages:
/@types/parse-json/4.0.0:
resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==}
dev: true
/@types/parse5/5.0.3:
resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==}
@ -8510,7 +8522,6 @@ packages:
picocolors: 1.0.0
postcss: 8.4.18
postcss-value-parser: 4.2.0
dev: true
/autoprefixer/9.8.8:
resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==}
@ -9428,7 +9439,6 @@ packages:
/callsites/3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
dev: true
/camel-case/4.1.2:
resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
@ -10142,7 +10152,6 @@ packages:
parse-json: 5.2.0
path-type: 4.0.0
yaml: 1.10.2
dev: true
/cp-file/7.0.0:
resolution: {integrity: sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==}
@ -13776,7 +13785,6 @@ packages:
dependencies:
parent-module: 1.0.1
resolve-from: 4.0.0
dev: true
/import-lazy/2.1.0:
resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==}
@ -14750,7 +14758,6 @@ packages:
/json-parse-even-better-errors/2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
dev: true
/json-schema-deref-sync/0.13.0:
resolution: {integrity: sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==}
@ -16369,6 +16376,11 @@ packages:
define-property: 0.2.5
kind-of: 3.2.2
/object-hash/2.2.0:
resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
engines: {node: '>= 6'}
dev: false
/object-hash/3.0.0:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
@ -16802,7 +16814,6 @@ packages:
engines: {node: '>=6'}
dependencies:
callsites: 3.1.0
dev: true
/parent-module/2.0.0:
resolution: {integrity: sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==}
@ -16873,7 +16884,6 @@ packages:
error-ex: 1.3.2
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
dev: true
/parse-png/2.1.0:
resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==}
@ -17192,16 +17202,6 @@ packages:
postcss: 7.0.39
dev: true
/postcss-import/14.1.0:
resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==}
engines: {node: '>=10.0.0'}
peerDependencies:
postcss: ^8.0.0
dependencies:
postcss-value-parser: 4.2.0
read-cache: 1.0.0
resolve: 1.22.1
/postcss-import/14.1.0_postcss@8.4.18:
resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==}
engines: {node: '>=10.0.0'}
@ -17213,14 +17213,6 @@ packages:
read-cache: 1.0.0
resolve: 1.22.1
/postcss-js/4.0.0:
resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==}
engines: {node: ^12 || ^14 || >= 16}
peerDependencies:
postcss: ^8.3.3
dependencies:
camelcase-css: 2.0.1
/postcss-js/4.0.0_postcss@8.4.18:
resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==}
engines: {node: ^12 || ^14 || >= 16}
@ -17230,21 +17222,6 @@ packages:
camelcase-css: 2.0.1
postcss: 8.4.18
/postcss-load-config/3.1.4:
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
engines: {node: '>= 10'}
peerDependencies:
postcss: '>=8.0.9'
ts-node: '>=9.0.0'
peerDependenciesMeta:
postcss:
optional: true
ts-node:
optional: true
dependencies:
lilconfig: 2.0.6
yaml: 1.10.2
/postcss-load-config/3.1.4_postcss@8.4.18:
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
engines: {node: '>= 10'}
@ -17378,14 +17355,6 @@ packages:
postcss: 8.4.18
dev: true
/postcss-nested/5.0.6:
resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.2.14
dependencies:
postcss-selector-parser: 6.0.10
/postcss-nested/5.0.6_postcss@8.4.18:
resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==}
engines: {node: '>=12.0'}
@ -18793,7 +18762,6 @@ packages:
/resolve-from/4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
dev: true
/resolve-from/5.0.0:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
@ -20182,12 +20150,44 @@ packages:
resolution: {integrity: sha512-32gv65ommaEMPKRS9yPmbvc6QcV+LsAqtSe1RFindBctVpS6+SbmkfcdecW/zgRvHW7KeAgl3iyzq2ZmRqsdZQ==}
dev: false
/tailwindcss/0.0.0-insiders.fe08e91_xkowlklhtk6sfvtndbucb3hfiy:
resolution: {integrity: sha512-W8rB1l3I1xEHJGnPGXqzeuq81F+AKGH+sn3c1jiH+Ydp7vyn/KhNr7niwe5e2MA538NUhtqlGL2wOeJlvXD2pw==}
engines: {node: '>=12.13.0'}
hasBin: true
peerDependencies:
autoprefixer: ^10.0.2
postcss: ^8.0.9
dependencies:
arg: 5.0.2
autoprefixer: 10.4.12_postcss@8.4.18
chalk: 4.1.2
chokidar: 3.5.3
color-name: 1.1.4
cosmiconfig: 7.0.1
detective: 5.2.1
didyoumean: 1.2.2
dlv: 1.1.3
fast-glob: 3.2.12
glob-parent: 6.0.2
is-glob: 4.0.3
normalize-path: 3.0.0
object-hash: 2.2.0
postcss: 8.4.18
postcss-js: 4.0.0_postcss@8.4.18
postcss-load-config: 3.1.4_postcss@8.4.18
postcss-nested: 5.0.6_postcss@8.4.18
postcss-selector-parser: 6.0.10
postcss-value-parser: 4.2.0
quick-lru: 5.1.1
resolve: 1.22.1
transitivePeerDependencies:
- ts-node
dev: false
/tailwindcss/3.1.8:
resolution: {integrity: sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==}
engines: {node: '>=12.13.0'}
hasBin: true
peerDependencies:
postcss: ^8.0.9
dependencies:
arg: 5.0.2
chokidar: 3.5.3
@ -20203,10 +20203,10 @@ packages:
object-hash: 3.0.0
picocolors: 1.0.0
postcss: 8.4.18
postcss-import: 14.1.0
postcss-js: 4.0.0
postcss-load-config: 3.1.4
postcss-nested: 5.0.6
postcss-import: 14.1.0_postcss@8.4.18
postcss-js: 4.0.0_postcss@8.4.18
postcss-load-config: 3.1.4_postcss@8.4.18
postcss-nested: 5.0.6_postcss@8.4.18
postcss-selector-parser: 6.0.10
postcss-value-parser: 4.2.0
quick-lru: 5.1.1
@ -20245,6 +20245,7 @@ packages:
resolve: 1.22.1
transitivePeerDependencies:
- ts-node
dev: true
/tapable/1.1.3:
resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==}