Skip to content

Commit

Permalink
general ui tweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
electh committed Feb 1, 2025
1 parent ae975d2 commit 269f12e
Show file tree
Hide file tree
Showing 7 changed files with 89 additions and 75 deletions.
42 changes: 1 addition & 41 deletions src/components/Settings/Appearance.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,8 @@ import {
CircleDashed,
Clock,
LayoutList,
ListOrdered,
MonitorPlay,
Rss,
Square,
SquareCode,
Text,
} from "lucide-react";
import Theme from "./components/Theme";
Expand All @@ -31,10 +28,7 @@ export default function Appearance() {
showFavicon,
showTextPreview,
showReadingTime,
showLineNumbers,
forceDarkCodeTheme,
reduceMotion,
useNativeVideoPlayer,
} = useStore(settingsState);
const { t } = useTranslation();
return (
Expand Down Expand Up @@ -117,41 +111,7 @@ export default function Appearance() {
settingValue={showReadingTime}
/>
</ItemWrapper>
<ItemWrapper title={t("settings.appearance.videoPlayer")}>
<SwitchItem
label={t("settings.appearance.useNativeVideoPlayer")}
icon={
<SettingIcon variant="red">
<MonitorPlay />
</SettingIcon>
}
settingName="useNativeVideoPlayer"
settingValue={useNativeVideoPlayer}
/>
</ItemWrapper>
<ItemWrapper title={t("settings.appearance.codeBlock")}>
<SwitchItem
label={t("settings.appearance.showLineNumbers")}
icon={
<SettingIcon variant="default">
<ListOrdered />
</SettingIcon>
}
settingName="showLineNumbers"
settingValue={showLineNumbers}
/>
<Divider />
<SwitchItem
label={t("settings.appearance.forceDarkCodeTheme")}
icon={
<SettingIcon variant="default">
<SquareCode />
</SettingIcon>
}
settingName="forceDarkCodeTheme"
settingValue={forceDarkCodeTheme}
/>
</ItemWrapper>

<ItemWrapper title={t("settings.appearance.motion")}>
<SwitchItem
label={t("settings.appearance.reduceMotion")}
Expand Down
81 changes: 61 additions & 20 deletions src/components/Settings/Readability.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ import {
AlignLeft,
AlignStartVertical,
CaseSensitive,
ListOrdered,
MonitorPlay,
PanelTopDashed,
SquareCode,
Type,
UnfoldHorizontal,
UnfoldVertical,
Expand Down Expand Up @@ -33,6 +36,9 @@ export default function Readability() {
titleFontSize,
titleAlignType,
autoHideToolbar,
showLineNumbers,
forceDarkCodeTheme,
useNativeVideoPlayer,
} = useStore(settingsState);
const { t } = useTranslation();
const fontOptions = [
Expand Down Expand Up @@ -69,6 +75,36 @@ export default function Readability() {
];
return (
<>
<ItemWrapper title={t("settings.readability.articleTitle")}>
<GroupItem
label={t("settings.readability.titleAlign")}
icon={
<SettingIcon variant="green">
<AlignStartVertical />
</SettingIcon>
}
settingName="titleAlignType"
settingValue={titleAlignType}
options={[
{ value: "left", icon: <AlignLeft className="size-4" /> },
{ value: "center", icon: <AlignCenter className="size-4" /> },
]}
/>
<Divider />
<SliderItem
label={t("settings.readability.titleFontSize")}
icon={
<SettingIcon variant="purple">
<CaseSensitive />
</SettingIcon>
}
settingName="titleFontSize"
settingValue={titleFontSize}
max={3.0}
min={1.0}
step={0.2}
/>
</ItemWrapper>
<ItemWrapper title={t("settings.readability.text")}>
<SwitchItem
label={t("settings.readability.autoHideToolbar")}
Expand Down Expand Up @@ -146,34 +182,39 @@ export default function Readability() {
step={5}
/>
</ItemWrapper>
<ItemWrapper title={t("settings.readability.articleTitle")}>
<GroupItem
label={t("settings.readability.titleAlign")}
<ItemWrapper title={t("settings.appearance.videoPlayer")}>
<SwitchItem
label={t("settings.appearance.useNativeVideoPlayer")}
icon={
<SettingIcon variant="green">
<AlignStartVertical />
<SettingIcon variant="red">
<MonitorPlay />
</SettingIcon>
}
settingName="titleAlignType"
settingValue={titleAlignType}
options={[
{ value: "left", icon: <AlignLeft className="size-4" /> },
{ value: "center", icon: <AlignCenter className="size-4" /> },
]}
settingName="useNativeVideoPlayer"
settingValue={useNativeVideoPlayer}
/>
</ItemWrapper>
<ItemWrapper title={t("settings.appearance.codeBlock")}>
<SwitchItem
label={t("settings.appearance.showLineNumbers")}
icon={
<SettingIcon variant="default">
<ListOrdered />
</SettingIcon>
}
settingName="showLineNumbers"
settingValue={showLineNumbers}
/>
<Divider />
<SliderItem
label={t("settings.readability.titleFontSize")}
<SwitchItem
label={t("settings.appearance.forceDarkCodeTheme")}
icon={
<SettingIcon variant="purple">
<CaseSensitive />
<SettingIcon variant="default">
<SquareCode />
</SettingIcon>
}
settingName="titleFontSize"
settingValue={titleFontSize}
max={3.0}
min={1.0}
step={0.2}
settingName="forceDarkCodeTheme"
settingValue={forceDarkCodeTheme}
/>
</ItemWrapper>
<Button color="danger" variant="flat" onPress={resetSettings}>
Expand Down
4 changes: 2 additions & 2 deletions src/components/Settings/components/Language.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ export default function Language() {
<Dropdown>
<DropdownTrigger>
<Button
className="capitalize gap-1 pr-1.5 shadow-custom rounded-md h-7"
variant="flat"
className="capitalize gap-1 pr-1.5 rounded-md h-7 bg-content1 dark:bg-default !shadow-custom-cursor"
variant="solid"
size="sm"
endContent={<ChevronsUpDown className="size-4 shrink-0" />}
>
Expand Down
24 changes: 15 additions & 9 deletions src/components/Settings/components/Theme.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ export default function Theme() {

return (
<ItemWrapper title={t("settings.appearance.theme")}>
<div className={`flex justify-between items-center gap-2 ${bgColor} px-2 py-2.5`}>
<div
className={`flex justify-between items-center gap-2 ${bgColor} px-2 py-2.5`}
>
<div className="flex items-center gap-2">
<SettingIcon variant="blue">
<Paintbrush />
Expand All @@ -57,8 +59,8 @@ export default function Theme() {
<Dropdown>
<DropdownTrigger>
<Button
className="capitalize gap-1 pr-1.5 shadow-custom rounded-md h-7"
variant="flat"
className="capitalize gap-1 pr-1.5 rounded-md h-7 bg-content1 dark:bg-default !shadow-custom-cursor"
variant="solid"
size="sm"
endContent={<ChevronsUpDown className="size-4 shrink-0" />}
>
Expand All @@ -82,7 +84,9 @@ export default function Theme() {
</Dropdown>
</div>
<Divider />
<div className={`flex justify-between items-center gap-2 ${bgColor} px-2 py-2.5`}>
<div
className={`flex justify-between items-center gap-2 ${bgColor} px-2 py-2.5`}
>
<div className="flex items-center gap-2">
<SettingIcon variant="amber">
<Sun />
Expand All @@ -94,8 +98,8 @@ export default function Theme() {
<Dropdown>
<DropdownTrigger>
<Button
className="capitalize gap-1 pr-1.5 shadow-custom rounded-md h-7"
variant="flat"
className="capitalize gap-1 pr-1.5 rounded-md h-7 bg-content1 dark:bg-default !shadow-custom-cursor"
variant="solid"
size="sm"
endContent={<ChevronsUpDown className="size-4 shrink-0" />}
>
Expand Down Expand Up @@ -135,7 +139,9 @@ export default function Theme() {
</Dropdown>
</div>
<Divider />
<div className={`flex justify-between items-center gap-2 ${bgColor} px-2 py-2.5`}>
<div
className={`flex justify-between items-center gap-2 ${bgColor} px-2 py-2.5`}
>
<div className="flex items-center gap-2">
<SettingIcon variant="purple">
<MoonStar />
Expand All @@ -147,8 +153,8 @@ export default function Theme() {
<Dropdown>
<DropdownTrigger>
<Button
className="capitalize gap-1 pr-1.5 shadow-custom rounded-md h-7"
variant="flat"
className="capitalize gap-1 pr-1.5 rounded-md h-7 bg-content1 dark:bg-default !shadow-custom-cursor"
variant="solid"
size="sm"
endContent={<ChevronsUpDown className="size-4 shrink-0" />}
>
Expand Down
8 changes: 5 additions & 3 deletions src/components/ui/settingItem.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,8 @@ export function SelItem({ label, icon, settingName, settingValue, options }) {
<Dropdown>
<DropdownTrigger>
<Button
className="capitalize gap-1 pr-1.5 shadow-custom h-7 rounded-md"
variant="flat"
className="capitalize gap-1 pr-1.5 h-7 rounded-md bg-content1 dark:bg-default !shadow-custom-cursor"
variant="solid"
size="sm"
endContent={<ChevronsUpDown className="size-4 shrink-0" />}
>
Expand Down Expand Up @@ -146,7 +146,9 @@ export function SelItem({ label, icon, settingName, settingValue, options }) {

export function GroupItem({ label, icon, settingName, settingValue, options }) {
return (
<div className={`flex justify-between items-center gap-2 ${bgColor} px-2 h-12`}>
<div
className={`flex justify-between items-center gap-2 ${bgColor} px-2 h-12`}
>
<div className="flex items-center gap-2">
{icon}
<div className="text-sm text-foreground">{label}</div>
Expand Down
2 changes: 2 additions & 0 deletions src/index.css
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
--shadow-custom: 0 0 5px 0 rgba(0, 0, 0, 0.05),
0 2px 10px 0 rgba(0, 0, 0, 0.2), inset 0 0 1px 0 hsla(0, 0%, 100%, 0.15),
0 0 1px 0 rgba(255, 255, 255, 0.6);
--shadow-custom-sm: 0 1px 1px 0 rgba(0, 0, 0, 0.15), 0 1px 1px 0 rgba(0, 0, 0, 0.05);
--shadow-custom-button: 0 1px 2px 0 rgba(0, 0, 0, 0.15), inset 0 1px 1px 0 rgba(255, 255, 255, 0.3), inset 0 -1px 1px 0 rgba(255, 255, 255, 0.1);
--shadow-custom-inner: inset 0 0 2px 0 rgba(255, 255, 255, 0.15), inset 0 0 4px 0 rgba(0, 0, 0, 0.05), inset 0 0 2px 0 rgba(0, 0, 0, 0.05);
--shadow-custom-cursor: 0 3px 6px 0 rgba(0, 0, 0, 0.07), 0 0 0 1px rgba(0, 0, 0, 0.15), inset 0 -5px 1px -1px rgba(255, 255, 255, 0.01), inset 0 1px 1px 0 rgba(255, 255, 255, 0.15);
}
Expand Down
3 changes: 3 additions & 0 deletions src/stores/settingsStore.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ export const resetSettings = () => {
"titleFontSize",
"titleAlignType",
"autoHideToolbar",
"showLineNumbers",
"forceDarkCodeTheme",
"useNativeVideoPlayer",
];
const currentSettings = settingsState.get();
const newSettings = { ...currentSettings };
Expand Down

0 comments on commit 269f12e

Please sign in to comment.