diff --git a/packages/interface/src/AppLayout.tsx b/packages/interface/src/AppLayout.tsx index b8a571070..d2830ccc0 100644 --- a/packages/interface/src/AppLayout.tsx +++ b/packages/interface/src/AppLayout.tsx @@ -20,9 +20,9 @@ export function AppLayout() {
{ // TODO: allow this on some UI text at least / disable default browser context menu @@ -31,7 +31,7 @@ export function AppLayout() { }} > -
+
diff --git a/packages/interface/src/components/explorer/Explorer.tsx b/packages/interface/src/components/explorer/Explorer.tsx index bf8a811b5..5e36de09e 100644 --- a/packages/interface/src/components/explorer/Explorer.tsx +++ b/packages/interface/src/components/explorer/Explorer.tsx @@ -35,10 +35,10 @@ export default function Explorer(props: Props) { return (
-
+
-
+
{props.data && ( {children}
; + return
{children}
; } function SubHeading({ children }: PropsWithChildren) { - return
{children}
; + return
{children}
; } export function ExplorerOptionsPanel() { diff --git a/packages/interface/src/components/explorer/ExplorerTopBar.tsx b/packages/interface/src/components/explorer/ExplorerTopBar.tsx index bb9d51160..87056a220 100644 --- a/packages/interface/src/components/explorer/ExplorerTopBar.tsx +++ b/packages/interface/src/components/explorer/ExplorerTopBar.tsx @@ -51,17 +51,16 @@ const TopBarButton = forwardRef( {...props} ref={ref} className={clsx( - 'mr-[1px] flex py-0.5 px-0.5 text-md font-medium hover:bg-gray-150 dark:transparent dark:hover:bg-gray-550 rounded-md open:dark:bg-gray-550 transition-colors duration-100 outline-none !cursor-normal', + 'mr-[1px] flex py-0.5 px-0.5 text-md font-medium rounded-md open:bg-selected transition-colors duration-100 outline-none !cursor-normal', { 'rounded-r-none rounded-l-none': group && !left && !right, 'rounded-r-none': group && left, - 'rounded-l-none': group && right, - 'dark:bg-gray-550': active + 'rounded-l-none': group && right }, className )} > - + ); } @@ -95,7 +94,7 @@ const SearchBar = forwardRef((props, forwardedRe else if (forwardedRef) forwardedRef.current = el; }} placeholder="Search" - className="peer w-32 h-[30px] focus:w-52 text-sm p-3 rounded-lg outline-none focus:ring-2 placeholder-gray-400 dark:placeholder-gray-450 bg-[#F6F2F6] border border-gray-50 shadow dark:shadow-gray-900/30 dark:bg-gray-600/70 dark:border-gray-550 focus:ring-gray-100 dark:focus:ring-gray-550 dark:focus:bg-gray-800 transition-all" + className="peer w-32 h-[30px] focus:w-52 text-sm p-3 rounded-lg outline-none focus:ring-2 border shadow transition-all bg-app-input border-app-border" {...searchField} /> @@ -219,7 +218,7 @@ export const TopBar: React.FC = (props) => { // 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-bg overflow-hidden rounded-tl-md transition-[background-color] transition-[border-color] duration-250 ease-out', + '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 rounded-tl-md transition-[background-color] transition-[border-color] duration-250 ease-out', props.showSeparator && 'top-bar-blur' )} > diff --git a/packages/interface/src/components/explorer/FileItem.tsx b/packages/interface/src/components/explorer/FileItem.tsx index b6372c02a..38e57e004 100644 --- a/packages/interface/src/components/explorer/FileItem.tsx +++ b/packages/interface/src/components/explorer/FileItem.tsx @@ -40,7 +40,7 @@ function FileItem({ data, selected, index, ...rest }: Props) { className={clsx( 'border-2 border-transparent rounded-lg text-center mb-1 active:translate-y-[1px]', { - 'bg-gray-50 dark:bg-gray-750/50': selected + 'bg-app-selected/30': selected } )} > @@ -51,15 +51,15 @@ function FileItem({ data, selected, index, ...rest }: Props) { > {data?.extension && isVid && ( -
+
{data.extension}
)} @@ -68,9 +68,9 @@ function FileItem({ data, selected, index, ...rest }: Props) {
diff --git a/packages/interface/src/components/explorer/FileRow.tsx b/packages/interface/src/components/explorer/FileRow.tsx index 16abf00d8..5f1832559 100644 --- a/packages/interface/src/components/explorer/FileRow.tsx +++ b/packages/interface/src/components/explorer/FileRow.tsx @@ -16,7 +16,7 @@ function FileRow({ data, index, selected, ...props }: Props) { {...props} className={clsx( 'table-body-row mr-2 flex w-full flex-row rounded-lg border-2', - selected ? 'border-primary-500' : 'border-transparent', + selected ? 'border-accent' : 'border-transparent', index % 2 == 0 && 'bg-[#00000006] dark:bg-[#00000030]' )} > diff --git a/packages/interface/src/components/explorer/FileThumb.tsx b/packages/interface/src/components/explorer/FileThumb.tsx index 58dab5b8d..02c799b3b 100644 --- a/packages/interface/src/components/explorer/FileThumb.tsx +++ b/packages/interface/src/components/explorer/FileThumb.tsx @@ -78,11 +78,11 @@ export default function FileThumb({ data, ...props }: Props) { > @@ -103,8 +103,9 @@ export default function FileThumb({ data, ...props }: Props) { // PEEL width="28%" height="28%" - className="absolute top-0 right-0 -translate-x-[35%] z-0 pointer-events-none fill-gray-50 dark:fill-gray-500" - viewBox="0 0 41 41" + className="absolute top-0 right-0 -translate-x-[40%] z-0 pointer-events-none fill-app-selected" + viewBox="0 0 40 40" + style={{ filter: 'drop-shadow(-3px 1px 1px rgb(0 0 0 / 0.05))' }} > diff --git a/packages/interface/src/components/explorer/Inspector.tsx b/packages/interface/src/components/explorer/Inspector.tsx index 8ae3c2feb..13e4497d9 100644 --- a/packages/interface/src/components/explorer/Inspector.tsx +++ b/packages/interface/src/components/explorer/Inspector.tsx @@ -67,7 +67,7 @@ export const Inspector = (props: Props) => { data={props.data} />
-
+

{props.data?.name} {props.data?.extension && `.${props.data.extension}`} diff --git a/packages/interface/src/components/explorer/inspector/Divider.tsx b/packages/interface/src/components/explorer/inspector/Divider.tsx index ee4e79b3a..1f8a5827d 100644 --- a/packages/interface/src/components/explorer/inspector/Divider.tsx +++ b/packages/interface/src/components/explorer/inspector/Divider.tsx @@ -1 +1 @@ -export const Divider = () =>
; +export const Divider = () =>
; diff --git a/packages/interface/src/components/explorer/inspector/MetaItem.tsx b/packages/interface/src/components/explorer/inspector/MetaItem.tsx index cf94656db..9fbaa81ff 100644 --- a/packages/interface/src/components/explorer/inspector/MetaItem.tsx +++ b/packages/interface/src/components/explorer/inspector/MetaItem.tsx @@ -8,7 +8,7 @@ export const MetaItem = (props: MetaItemProps) => {
{!!props.title &&
{props.title}
} {typeof props.value === 'string' ? ( -

{props.value}

+

{props.value}

) : ( props.value )} diff --git a/packages/interface/src/components/key/Key.tsx b/packages/interface/src/components/key/Key.tsx index 63d185384..2d3600e9c 100644 --- a/packages/interface/src/components/key/Key.tsx +++ b/packages/interface/src/components/key/Key.tsx @@ -49,11 +49,7 @@ export const Key: React.FC<{ data: Key; index: number }> = ({ data, index }) =>
diff --git a/packages/interface/src/components/layout/Sidebar.tsx b/packages/interface/src/components/layout/Sidebar.tsx index f3083219a..fe73467bc 100644 --- a/packages/interface/src/components/layout/Sidebar.tsx +++ b/packages/interface/src/components/layout/Sidebar.tsx @@ -2,10 +2,18 @@ import { CogIcon, LockClosedIcon, PhotoIcon } 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 } from '@sd/ui'; +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, Planet, WaveTriangle } from 'phosphor-react'; +import { + CheckCircle, + CirclesFour, + Hexagon, + Planet, + ShareNetwork, + WaveTriangle +} from 'phosphor-react'; import { PropsWithChildren, forwardRef } from 'react'; import { NavLink, NavLinkProps, useNavigate } from 'react-router-dom'; @@ -16,18 +24,21 @@ import { JobsManager } from '../jobs/JobManager'; import RunningJobsWidget from '../jobs/RunningJobsWidget'; import { MacTrafficLights } from '../os/TrafficLights'; +const sidebarItemClass = cva( + 'max-w mb-[2px] rounded px-2 py-1 gap-0.5 flex flex-row flex-grow items-center font-medium truncate text-sm', + { + variants: { + isActive: { + true: 'bg-sidebar-selected/60' + } + } + } +); + export const SidebarLink = (props: PropsWithChildren) => ( {({ isActive }) => ( - + {props.children} )} @@ -58,6 +69,8 @@ function WindowControls() { return null; } +const SidebarCategoryHeading = tw(CategoryHeading)`mt-5 mb-1 ml-1`; + function LibraryScopedSection() { const os = useOperatingSystem(); const platform = usePlatform(); @@ -68,7 +81,7 @@ function LibraryScopedSection() { return ( <>
- Locations + Locations {locations?.map((location) => { return (
@@ -79,12 +92,8 @@ function LibraryScopedSection() { }} > {({ isActive }) => ( - -
+ +
@@ -114,7 +123,7 @@ function LibraryScopedSection() { }); }} className={clsx( - 'w-full px-2 py-1.5 mt-1 text-xs font-bold text-center text-ink-faint border border-dashed rounded border-sidebar-box cursor-normal transition' + 'w-full px-2 py-1.5 mt-1 text-xs font-bold text-center text-ink-faint border border-dashed rounded border-sidebar-border cursor-normal transition' // os === 'macOS' // ? 'dark:text-gray-450 dark:border-gray-450 hover:dark:border-gray-400 dark:border-opacity-60' // : 'dark:text-gray-450 dark:border-gray-550 hover:dark:border-gray-500' @@ -126,15 +135,15 @@ function LibraryScopedSection() {
{tags?.length ? (
- Tags -
+ Tags +
{tags?.slice(0, 6).map((tag, index) => (
- {tag.name} + {tag.name} ))}
@@ -151,44 +160,41 @@ export function Sidebar() { const os = useOperatingSystem(); const { library, libraries, isLoading: isLoadingLibraries, switchLibrary } = useCurrentLibrary(); - const itemStyles = macOnly(os, 'dark:hover:bg-gray-550 dark:hover:bg-opacity-50'); + // const itemStyles = macOnly(os, 'dark:hover:bg-gray-550 dark:hover:bg-opacity-50'); return (
- {/* this shouldn't default to "My Library", it is only this way for landing demo */} - + {isLoadingLibraries ? 'Loading...' : library ? library.config.name : ' '} } // to support the transparent sidebar on macOS we use slightly adjusted styles - itemsClassName={macOnly(os, 'dark:bg-gray-800 dark:divide-gray-600')} + // itemsClassName={macOnly(os, 'bg-app/60')} > {libraries?.map((lib) => ( switchLibrary(lib.uuid)} @@ -198,19 +204,13 @@ export function Sidebar() { ))} - + Library Settings - - Add Library - + Add Library - alert('TODO: Not implemented yet!')} - > + alert('TODO: Not implemented yet!')}> Lock @@ -220,14 +220,14 @@ export function Sidebar() { Overview + + + Nodes + Spaces - - - Photos -
{library && } diff --git a/packages/interface/src/components/primitive/Listbox.tsx b/packages/interface/src/components/primitive/Listbox.tsx index 7ad85b66b..30e33ea16 100644 --- a/packages/interface/src/components/primitive/Listbox.tsx +++ b/packages/interface/src/components/primitive/Listbox.tsx @@ -55,7 +55,7 @@ export default function Listbox(props: { options: ListboxOption[]; className?: s className={({ active }) => `cursor-default select-none relative rounded m-1 py-2 pl-8 pr-4 dark:text-white focus:outline-none ${ active - ? 'text-primary-900 bg-primary-600' + ? 'text-accent bg-accent' : 'text-gray-900 dark:hover:bg-gray-600 dark:hover:bg-opacity-20' }` } diff --git a/packages/interface/src/components/primitive/ProgressBar.tsx b/packages/interface/src/components/primitive/ProgressBar.tsx index afdfdf8f9..6c8e310b2 100644 --- a/packages/interface/src/components/primitive/ProgressBar.tsx +++ b/packages/interface/src/components/primitive/ProgressBar.tsx @@ -14,7 +14,7 @@ const ProgressBar = (props: Props) => { > ); diff --git a/packages/interface/src/components/primitive/Slider.tsx b/packages/interface/src/components/primitive/Slider.tsx index da054c9a7..a6fb03ea0 100644 --- a/packages/interface/src/components/primitive/Slider.tsx +++ b/packages/interface/src/components/primitive/Slider.tsx @@ -7,10 +7,10 @@ const Slider = (props: SliderPrimitive.SliderProps) => ( className={clsx('relative flex items-center w-full h-6 select-none', props.className)} > - + diff --git a/packages/interface/src/components/primitive/Toasts.tsx b/packages/interface/src/components/primitive/Toasts.tsx index 495f998ce..9f81018a4 100644 --- a/packages/interface/src/components/primitive/Toasts.tsx +++ b/packages/interface/src/components/primitive/Toasts.tsx @@ -23,7 +23,7 @@ export function Toasts() { 'radix-swipe-end:animate-toast-swipe-out', 'translate-x-radix-toast-swipe-move-x', 'radix-swipe-cancel:translate-x-0 radix-swipe-cancel:duration-200 radix-swipe-cancel:ease-[ease]', - 'focus:outline-none focus-visible:ring focus-visible:ring-primary focus-visible:ring-opacity-75 border-white/10 border-2 shadow-2xl' + 'focus:outline-none focus-visible:ring focus-visible:ring-accent focus-visible:ring-opacity-75 border-white/10 border-2 shadow-2xl' )} >
@@ -45,7 +45,7 @@ export function Toasts() { {toast.actionButton && ( { e.preventDefault(); toast.actionButton?.onClick(); @@ -57,7 +57,7 @@ export function Toasts() { )}
- + Dismiss
diff --git a/packages/interface/src/components/primitive/Toggle.tsx b/packages/interface/src/components/primitive/Toggle.tsx index 960c1fcbf..38d697d18 100644 --- a/packages/interface/src/components/primitive/Toggle.tsx +++ b/packages/interface/src/components/primitive/Toggle.tsx @@ -19,7 +19,7 @@ export const Toggle: React.FC = (props) => { 'transition relative flex-shrink-0 inline-flex items-center h-6 w-11 rounded-full bg-gray-200 dark:bg-gray-550', props.className, { - '!bg-primary-500 dark:!bg-primary-500': isEnabled, + '!bg-accent dark:!bg-accent': isEnabled, 'h-[20px] w-[35px]': size === 'sm', 'h-8 w-[55px]': size === 'md' } diff --git a/packages/interface/src/components/primitive/Variants.tsx b/packages/interface/src/components/primitive/Variants.tsx deleted file mode 100644 index 79274e336..000000000 --- a/packages/interface/src/components/primitive/Variants.tsx +++ /dev/null @@ -1,31 +0,0 @@ -interface StyleState { - active: string[]; - hover: string[]; - normal: string[]; -} - -interface Variant { - base: string; - light: StyleState; - dark: StyleState; -} - -function tw(variant: Variant): string { - return `${variant.base} ${variant.light}`; -} - -const variants: Record = { - default: tw({ - base: 'shadow-sm', - light: { - normal: ['bg-gray-50', 'border-gray-100', 'text-gray-700'], - hover: ['bg-gray-100', 'border-gray-200', 'text-gray-900'], - active: ['bg-gray-50', 'border-gray-200', 'text-gray-600'] - }, - dark: { - normal: ['bg-gray-800 ', 'border-gray-100', ' text-gray-200'], - active: ['bg-gray-700 ', 'border-gray-200 ', 'text-white'], - hover: ['bg-gray-700 ', 'border-gray-600 ', 'text-white'] - } - }) -}; diff --git a/packages/interface/src/screens/Debug.tsx b/packages/interface/src/screens/Debug.tsx index b43e4ce97..fb1432863 100644 --- a/packages/interface/src/screens/Debug.tsx +++ b/packages/interface/src/screens/Debug.tsx @@ -16,7 +16,7 @@ export default function DebugScreen() { // }); const { mutate: identifyFiles } = useLibraryMutation('jobs.identifyUniqueFiles'); return ( -
+

Developer Debugger

diff --git a/packages/interface/src/screens/Overview.tsx b/packages/interface/src/screens/Overview.tsx index 48ddb216b..70d3a4e89 100644 --- a/packages/interface/src/screens/Overview.tsx +++ b/packages/interface/src/screens/Overview.tsx @@ -92,7 +92,7 @@ const StatItem: React.FC = (props) => { return (
@@ -139,7 +139,7 @@ export default function OverviewScreen() { console.log(overviewStats); return ( -
+
{/* PAGE */} @@ -165,7 +165,7 @@ export default function OverviewScreen() {
- {}} @@ -191,7 +191,7 @@ export default function OverviewScreen() {
- + */}
diff --git a/packages/interface/src/screens/Photos.tsx b/packages/interface/src/screens/Photos.tsx index 164e682f1..8dcb87d85 100644 --- a/packages/interface/src/screens/Photos.tsx +++ b/packages/interface/src/screens/Photos.tsx @@ -1,8 +1,8 @@ export default function PhotosScreen() { return ( -
+
-

+

Note: This is a pre-alpha build of Spacedrive, many features are yet to be functional.

diff --git a/packages/interface/src/screens/settings/Settings.tsx b/packages/interface/src/screens/settings/Settings.tsx index 85d79c299..055442ffa 100644 --- a/packages/interface/src/screens/settings/Settings.tsx +++ b/packages/interface/src/screens/settings/Settings.tsx @@ -5,7 +5,7 @@ import { SettingsSidebar } from '../../components/settings/SettingsSidebar'; export default function SettingsScreen() { return ( -
+
diff --git a/packages/interface/src/screens/settings/client/GeneralSettings.tsx b/packages/interface/src/screens/settings/client/GeneralSettings.tsx index 10eb8df31..293a2a44f 100644 --- a/packages/interface/src/screens/settings/client/GeneralSettings.tsx +++ b/packages/interface/src/screens/settings/client/GeneralSettings.tsx @@ -28,7 +28,7 @@ export default function GeneralSettings() { Connected Node
0 Peers - Running + Running
diff --git a/packages/interface/src/screens/settings/node/P2PSettings.tsx b/packages/interface/src/screens/settings/node/P2PSettings.tsx index 9f5b4249d..0fdcf86bc 100644 --- a/packages/interface/src/screens/settings/node/P2PSettings.tsx +++ b/packages/interface/src/screens/settings/node/P2PSettings.tsx @@ -28,7 +28,7 @@ export default function P2PSettings() { diff --git a/packages/interface/src/style.scss b/packages/interface/src/style.scss index 2bde52fa2..074fb2da2 100644 --- a/packages/interface/src/style.scss +++ b/packages/interface/src/style.scss @@ -4,15 +4,15 @@ button { } body { - font-family: 'InterVariable', sans-serif; + // font-family: 'InterVariable', sans-serif; } -.app-bg { +.app-background { @apply bg-app; } .has-blur-effects { - .app-bg { + .app-background { @apply bg-app/90; } } diff --git a/packages/ui/src/Button.tsx b/packages/ui/src/Button.tsx index 668651b34..d2e68b39d 100644 --- a/packages/ui/src/Button.tsx +++ b/packages/ui/src/Button.tsx @@ -41,7 +41,7 @@ const styles = cva( }, size: { md: 'py-1 px-3 text-md font-medium', - sm: 'py-1 px-2 text-xs font-medium' + sm: 'py-1 px-2 text-sm font-medium' }, justify: { left: 'justify-left', @@ -49,17 +49,13 @@ const styles = cva( }, variant: { default: [ - 'bg-gray-50 shadow-sm hover:bg-gray-100 active:bg-gray-50 dark:bg-transparent', - 'dark:active:bg-gray-600 dark:hover:bg-gray-550 dark:active:opacity-80', - 'border-gray-100 hover:border-gray-200 active:border-gray-200', - 'dark:border-transparent dark:active:border-gray-600 dark:hover:border-gray-500', - 'text-gray-700 hover:text-gray-900 active:text-gray-600', - 'dark:text-gray-200 dark:active:text-white dark:hover:text-white' + 'bg-app-button bg-transparent active:bg-app-selected hover:bg-app-hover', + 'border-transparent hover:border-app-border active:border-app-border' ], gray: [ - 'bg-gray-100 shadow-sm hover:bg-gray-200 active:bg-gray-100 dark:bg-gray-500 dark:hover:bg-gray-500 dark:bg-opacity-80 dark:hover:bg-opacity-100 dark:active:opacity-80', - 'border-gray-200 hover:border-gray-300 active:border-gray-200 dark:border-gray-500 dark:hover:border-gray-500', - 'text-gray-700 hover:text-gray-900 active:text-gray-600 dark:text-gray-200 dark:active:text-white dark:hover:text-white' + 'bg-gray-100 shadow-sm hover:bg-gray-200 active:bg-gray-100', + 'border-gray-200 hover:border-app-border active:border-gray-200', + 'text-gray-700 hover:text-gray-900 active:text-gray-600' ], primary: [ 'bg-primary-600 text-white shadow-sm active:bg-primary-600 hover:bg-primary border-primary-500 hover:border-primary-500 active:border-primary-700' diff --git a/packages/ui/src/Dropdown.tsx b/packages/ui/src/Dropdown.tsx index b99f1a26b..e3f18b71a 100644 --- a/packages/ui/src/Dropdown.tsx +++ b/packages/ui/src/Dropdown.tsx @@ -11,11 +11,13 @@ 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] dark:hover:bg-gray-650 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: { - true: 'bg-gray-300 dark:bg-primary dark:hover:bg-primary' + true: 'bg-app-selected hover:bg-app-selected', + undefined: 'hover:bg-app-selected/50', + false: 'hover:bg-app-selected/50' }, active: { true: '' @@ -27,10 +29,10 @@ const itemStyles = cva( const itemIconStyles = cva('mr-2 w-4 h-4', { variants: { - active: { - true: 'dark:text-gray-100', - false: 'text-gray-600 dark:text-gray-200' - } + // active: { + // // true: 'dark:text-ink-dull' + // // false: 'text-gray-600 dark:text-gray-200' + // } } }); @@ -62,15 +64,12 @@ export const Item = ({ to, className, icon: Icon, children, ...props }: Dropdown ); }; -export const Button = ({ children, ...props }: UI.ButtonProps) => { +export const Button = ({ children, className, ...props }: UI.ButtonProps) => { return ( - + {children} -
-