Compare commits

..

No commits in common. "f1db0119de0687c13066099e792679b9adbb758a" and "bbbb800524bd834179fe2c12ee516d0df04905cf" have entirely different histories.

13 changed files with 54 additions and 151 deletions

BIN
bun.lockb

Binary file not shown.

View File

@ -31,8 +31,8 @@
"@types/chroma-js": "^2.4.4",
"@types/events": "^3.0.3",
"@types/ramda": "^0.30.1",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"@types/react": "^18.2.15",
"@types/react-dom": "^18.2.7",
"@vitejs/plugin-react": "^4.2.1",
"typescript": "^5.2.2",
"vite": "^5.3.1"

View File

@ -1,26 +0,0 @@
import { Spacer } from "@/foundations";
import { flex, mq } from "@/style-predefines";
import { css } from "@emotion/react";
import styled from "@emotion/styled";
import chroma from "chroma-js";
const NavigationContainer = styled.div(
({ theme }) => css`
height: 100%;
width: ${theme.spacings.xxs * 36}px;
padding-top: ${theme.spacings.xxs * 24}px;
background-color: ${chroma(theme.backgroundColor.light).darken(0.3).hex()};
${flex(theme, "column", "flex-start", "stretch", "sm")}
${mq.dark} {
background-color: ${chroma(theme.backgroundColor.dark).brighten(0.3).hex()};
}
`
);
export function NavigationBar() {
return (
<NavigationContainer>
<Spacer />
</NavigationContainer>
);
}

View File

@ -1,17 +0,0 @@
import { css } from "@emotion/react";
import styled from "@emotion/styled";
const Handler = styled.div(
({ theme }) => css`
position: fixed;
top: 0;
left: 0;
right: 0;
height: ${theme.spacings.xxs * 24}px;
z-index: 1;
`
);
export function WindowMoveHandler() {
return <Handler data-tauri-drag-region />;
}

View File

@ -0,0 +1,17 @@
import { css } from "@emotion/react";
import styled from "@emotion/styled";
const Handler = styled.div(({ theme }) =>
css({
position: "fixed",
top: 0,
left: 0,
right: 0,
height: theme.spacings.xxs * 24,
zIndex: 1,
})
);
export function WindowMoveHandler() {
return <Handler data-tauri-drag-region />;
}

View File

@ -1,2 +1 @@
export { NavigationBar } from "./NavigationBar";
export { WindowMoveHandler } from "./WindowMoveHandler";
export { WindowMoveHandler } from "./WindowMoveHandler/WindowMoveHandler";

View File

@ -1,42 +0,0 @@
import { flex } from "@/style-predefines";
import { css, useTheme } from "@emotion/react";
import styled from "@emotion/styled";
import { __, always, cond, includes, T } from "ramda";
import { PropsWithChildren } from "react";
type AvatarProps = {
size?: "xs" | "sm" | "md" | "lg" | "xl" | "xxl";
square?: boolean;
bgColor?: string;
};
const AvatarContainer = styled("div")<AvatarProps>(({ theme, size, square }) => {
const radiusSize = cond([
[includes(__, ["xs", "sm", "md"]), always("xxs")],
[T, always("xs")],
])(size);
return css`
height: ${theme.spacings[size]};
width: ${theme.spacings[size]};
border-radius: ${theme.radius[square ? "none" : radiusSize]};
overflow: hidden;
${flex(theme, "row", "center", "center")}
.child {
overflow: hidden;
}
`;
});
export function Avatar({
size = "md",
square = false,
bgColor,
children,
}: PropsWithChildren<AvatarProps>) {
const theme = useTheme();
return (
<AvatarContainer size={size} square={square}>
<div className="child">{children}</div>
</AvatarContainer>
);
}

View File

@ -1,10 +0,0 @@
import { css } from "@emotion/react";
import styled from "@emotion/styled";
export const Spacer = styled.div(
() => css`
flex-grow: 1;
flex-shrink: 0;
align-self: stretch;
`
);

View File

@ -1 +0,0 @@
export { Spacer } from "./Spacer";

View File

@ -1,33 +1,21 @@
import { css, Theme } from "@emotion/react";
import { css } from "@emotion/react";
import { mq } from "./style-predefines";
export const globalStyle = (theme: Theme) => css`
:root {
color-scheme: light dark;
font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
font-size: 0.625;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-text-size-adjust: 100%;
color: ${theme.foregroundColor.light};
background-color: ${theme.backgroundColor.light};
overflow: hidden;
height: 100vh;
width: 100vw;
${mq.dark} {
color: ${theme.foregroundColor.dark};
background-color: ${theme.backgroundColor.dark};
}
}
body {
height: inherit;
width: inherit;
overflow: hidden;
#root {
height: inherit;
width: inherit;
}
}
`;
export const globalStyle = (theme) =>
css({
[":root"]: {
colorScheme: "light dark",
fontFamily: "Inter, Avenir, Helvetica, Arial, sans-serif",
fontSize: 0.625,
fontSynthesis: "none",
textRendering: "optimizeLegibility",
WebkitFontSmoothing: "antialiased",
MozOsxFontSmoothing: "grayscale",
WebkitTextSizeAdjust: "100%",
backgroundColor: theme.backgroundColor.light,
overflow: "hidden",
[mq.dark]: {
backgroundColor: theme.backgroundColor.dark,
},
},
});

View File

@ -1,27 +1,22 @@
import { NavigationBar, WindowMoveHandler } from "@/components";
import { WindowMoveHandler } from "@/components";
import { flex } from "@/style-predefines";
import { css } from "@emotion/react";
import styled from "@emotion/styled";
const LayoutContainer = styled.div(
({ theme }) => css`
height: 100%;
width: 100%;
overflow: hidden;
${flex(theme, "row", "flex-start", "stretch")}
.main-content {
flex-grow: 1;
overflow: hidden;
}
`
const LayoutContainer = styled.div(({ theme }) =>
css({
height: "100vh",
width: "100vw",
paddingTop: theme.spacings.xxs * 24,
...flex(theme, "row", "flex-start", "stretch"),
overflow: "hidden",
})
);
export function MainLayout() {
return (
<LayoutContainer>
<WindowMoveHandler />
<NavigationBar />
<div className="main-content">Main Content</div>
</LayoutContainer>
);
}

View File

@ -35,8 +35,8 @@ export function flex(
direction: Property.FlexDirection = "row",
justify: Property.JustifyContent = "flex-start",
align: Property.AlignItems = "start",
gap: MeasureUnit = "none",
wrap: Property.FlexWrap = "nowrap"
wrap: Property.FlexWrap = "nowrap",
gap: MeasureUnit = "none"
) {
return css({
display: "flex",

View File

@ -24,12 +24,12 @@ export const theme: Partial<Theme> = {
white: "#ffffff",
black: "#000000",
foregroundColor: {
light: chroma.hsl(0, 0, 0.12).hex(),
dark: chroma.hsl(0, 0, 0.82).hex(),
light: chroma.hsl(0, 0, 0.06).hex(),
dark: chroma.hsl(0, 0, 0.88).hex(),
},
backgroundColor: {
light: chroma.hsl(0, 0, 0.94).hex(),
dark: chroma.hsl(0, 0, 0.098).hex(),
light: chroma.hsl(0, 0, 0.96).hex(),
dark: chroma.hsl(0, 0, 0.18).hex(),
},
successColor: {
light: colors.green[5],