Skip to content

Commit 016c220

Browse files
committed
feat: enhanced our theme customizer, now we have more preview components
1 parent 4f929db commit 016c220

File tree

6 files changed

+249
-157
lines changed

6 files changed

+249
-157
lines changed

app/pages/about/page.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import {
2626
} from '@tabler/icons-react';
2727

2828
import { PageHeader, Surface } from '@/components';
29-
import classes from '@/layout/Guest/HeaderNav/HeaderNav.module.css';
3029
import { PATH_DASHBOARD, PATH_GITHUB } from '@/routes';
3130

3231
const items = [
@@ -104,7 +103,6 @@ function Pricing() {
104103
href={PATH_GITHUB.repo}
105104
variant="filled"
106105
leftSection={<IconBrandGithub size={16} />}
107-
className={classes.link}
108106
rel="noopener noreferrer"
109107
>
110108
Give us a star

components/PageHeader/PageHeader.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@ import {
44
ActionIcon,
55
Breadcrumbs,
66
BreadcrumbsProps,
7-
Button,
87
Divider,
98
Flex,
10-
Paper,
119
PaperProps,
1210
Stack,
1311
Text,
@@ -16,9 +14,10 @@ import {
1614
useMantineTheme,
1715
} from '@mantine/core';
1816
import { useColorScheme } from '@mantine/hooks';
19-
import { IconPlus, IconRefresh } from '@tabler/icons-react';
17+
import { IconRefresh } from '@tabler/icons-react';
2018

2119
import { FilterDateMenu, Surface } from '@/components';
20+
import { useAuth } from '@/hooks/useAuth';
2221

2322
type PageHeaderProps = {
2423
title: string;
@@ -37,6 +36,7 @@ const PageHeader = (props: PageHeaderProps) => {
3736
actionContent,
3837
...others
3938
} = props;
39+
const { user } = useAuth();
4040

4141
const theme = useMantineTheme();
4242
const colorScheme = useColorScheme();
@@ -98,7 +98,7 @@ const PageHeader = (props: PageHeaderProps) => {
9898
>
9999
<Stack gap={4}>
100100
<Title order={3}>{title}</Title>
101-
<Text>Welcome back, Kelvin!</Text>
101+
<Text>Welcome back, {user?.userName}!</Text>
102102
</Stack>
103103
{renderActions()}
104104
</Flex>
Lines changed: 65 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
import React, { useEffect } from 'react';
1+
'use client';
2+
3+
import { useEffect } from 'react';
24

35
import {
46
Badge,
@@ -13,17 +15,16 @@ import {
1315
useMantineColorScheme,
1416
} from '@mantine/core';
1517
import {
16-
IconComponents,
1718
IconDeviceFloppy,
1819
IconLayout,
1920
IconPalette,
2021
IconRefresh,
21-
IconTypography,
2222
IconX,
2323
} from '@tabler/icons-react';
2424

2525
import { useThemeCustomizer } from '@/contexts/theme-customizer';
2626

27+
import { ThemePreviewCanvas } from './components/ThemePreviewCanvas';
2728
import { AppearanceTab } from './tabs/AppearanceTab';
2829
import { LayoutTab } from './tabs/LayoutTab';
2930

@@ -98,95 +99,75 @@ export default function ThemeCustomizerDrawer({
9899
</Group>
99100
}
100101
position="right"
101-
size="md"
102+
size="100%"
102103
padding="md"
103104
closeButtonProps={{
104105
icon: <IconX size={16} />,
105106
}}
106107
>
107-
<Stack h="100%" gap={0}>
108-
<Text fz="sm" c="dimmed" mb="md">
109-
Explore different styles according to your preferences. Changes are
110-
previewed in real-time.
111-
</Text>
112-
113-
<ScrollArea style={{ flex: 1 }} offsetScrollbars>
114-
<Tabs defaultValue="layout">
115-
<Tabs.List>
116-
<Tabs.Tab value="layout" leftSection={<IconLayout size={16} />}>
117-
Layout
118-
</Tabs.Tab>
119-
<Tabs.Tab
120-
value="appearance"
121-
leftSection={<IconPalette size={16} />}
122-
>
123-
Appearance
124-
</Tabs.Tab>
125-
<Tabs.Tab
126-
value="typography"
127-
leftSection={<IconTypography size={16} />}
128-
disabled
108+
<Group grow align="start" h="100%" gap="xl" wrap="nowrap">
109+
{/* Customization Controls */}
110+
<Box w={360} style={{ minWidth: 320 }}>
111+
<Stack gap="sm">
112+
<Text fz="sm" c="dimmed">
113+
Explore different styles. Changes are previewed in real-time.
114+
</Text>
115+
<ScrollArea h="calc(100vh - 180px)" offsetScrollbars>
116+
<Tabs defaultValue="layout">
117+
<Tabs.List grow>
118+
<Tabs.Tab
119+
value="layout"
120+
leftSection={<IconLayout size={16} />}
121+
>
122+
Layout
123+
</Tabs.Tab>
124+
<Tabs.Tab
125+
value="appearance"
126+
leftSection={<IconPalette size={16} />}
127+
>
128+
Appearance
129+
</Tabs.Tab>
130+
{/* Add more tabs here */}
131+
</Tabs.List>
132+
133+
<Tabs.Panel value="layout" pt="md">
134+
<LayoutTab
135+
config={previewConfig}
136+
onConfigUpdate={updateConfig}
137+
/>
138+
</Tabs.Panel>
139+
140+
<Tabs.Panel value="appearance" pt="md">
141+
<AppearanceTab
142+
config={previewConfig}
143+
onConfigUpdate={updateConfig}
144+
/>
145+
</Tabs.Panel>
146+
</Tabs>
147+
</ScrollArea>
148+
<Group justify="space-between">
149+
<Button
150+
variant="subtle"
151+
leftSection={<IconRefresh size={16} />}
152+
onClick={handleReset}
153+
disabled={!hasUnsavedChanges}
129154
>
130-
Typography
131-
</Tabs.Tab>
132-
<Tabs.Tab
133-
value="components"
134-
leftSection={<IconComponents size={16} />}
135-
disabled
155+
Reset
156+
</Button>
157+
<Button
158+
leftSection={<IconDeviceFloppy size={16} />}
159+
onClick={handleApply}
160+
disabled={!hasUnsavedChanges}
136161
>
137-
Components
138-
</Tabs.Tab>
139-
</Tabs.List>
140-
141-
<Tabs.Panel value="layout" pt="md">
142-
<LayoutTab config={previewConfig} onConfigUpdate={updateConfig} />
143-
</Tabs.Panel>
144-
145-
<Tabs.Panel value="appearance" pt="md">
146-
<AppearanceTab
147-
config={previewConfig}
148-
onConfigUpdate={updateConfig}
149-
/>
150-
</Tabs.Panel>
151-
152-
<Tabs.Panel value="typography" pt="md">
153-
<Stack align="center" mt="xl">
154-
<Text c="dimmed" size="sm">
155-
Typography customization coming soon
156-
</Text>
157-
</Stack>
158-
</Tabs.Panel>
159-
160-
<Tabs.Panel value="components" pt="md">
161-
<Stack align="center" mt="xl">
162-
<Text c="dimmed" size="sm">
163-
Component customization coming soon
164-
</Text>
165-
</Stack>
166-
</Tabs.Panel>
167-
</Tabs>
168-
</ScrollArea>
169-
170-
<Box pt="md">
171-
<Group justify="space-between">
172-
<Button
173-
variant="subtle"
174-
leftSection={<IconRefresh size={16} />}
175-
onClick={handleReset}
176-
disabled={!hasUnsavedChanges}
177-
>
178-
Reset
179-
</Button>
180-
<Button
181-
leftSection={<IconDeviceFloppy size={16} />}
182-
onClick={handleApply}
183-
disabled={!hasUnsavedChanges}
184-
>
185-
Save Changes
186-
</Button>
187-
</Group>
162+
Save Changes
163+
</Button>
164+
</Group>
165+
</Stack>
188166
</Box>
189-
</Stack>
167+
168+
{/* Preview Canvas */}
169+
<ThemePreviewCanvas config={previewConfig} />
170+
</Group>
190171
</Drawer>
191172
);
192173
}

0 commit comments

Comments
 (0)