From e8cd469ee415a904e9aa4bc8f532b76e24c53470 Mon Sep 17 00:00:00 2001
From: "Rodrigo Rodriguez (Pragmatismo)"
Date: Sun, 30 Mar 2025 19:39:59 -0300
Subject: [PATCH] refactor: update component exports to named exports and
enhance UI structure
---
README.md | 11 -
{src-tauri => src-rust}/.gitignore | 0
{src-tauri => src-rust}/Cargo.lock | 0
{src-tauri => src-rust}/Cargo.toml | 0
{src-tauri => src-rust}/build.rs | 0
.../capabilities/default.json | 0
{src-tauri => src-rust}/icons/128x128.png | Bin
{src-tauri => src-rust}/icons/128x128@2x.png | Bin
{src-tauri => src-rust}/icons/32x32.png | Bin
.../icons/Square107x107Logo.png | Bin
.../icons/Square142x142Logo.png | Bin
.../icons/Square150x150Logo.png | Bin
.../icons/Square284x284Logo.png | Bin
.../icons/Square30x30Logo.png | Bin
.../icons/Square310x310Logo.png | Bin
.../icons/Square44x44Logo.png | Bin
.../icons/Square71x71Logo.png | Bin
.../icons/Square89x89Logo.png | Bin
{src-tauri => src-rust}/icons/StoreLogo.png | Bin
{src-tauri => src-rust}/icons/icon.icns | Bin
{src-tauri => src-rust}/icons/icon.ico | Bin
{src-tauri => src-rust}/icons/icon.png | Bin
{src-tauri => src-rust}/src/drive.rs | 0
{src-tauri => src-rust}/src/lib.rs | 0
{src-tauri => src-rust}/src/main.rs | 0
{src-tauri => src-rust}/src/sync.rs | 0
{src-tauri => src-rust}/tauri.conf.json | 0
src/settings/account/account-form.tsx | 107 ++++-----
src/settings/account/page.tsx | 20 +-
src/settings/appearance/appearance-form.tsx | 91 ++++----
src/settings/appearance/page.tsx | 20 +-
src/settings/components/sidebar-nav.tsx | 27 +--
src/settings/display/display-form.tsx | 46 ++--
src/settings/display/page.tsx | 17 +-
src/settings/index.tsx | 17 +-
src/settings/layout.tsx | 43 ++--
.../notifications/notifications-form.tsx | 211 +++++++++---------
src/settings/notifications/page.tsx | 17 +-
src/settings/profile-form.tsx | 95 +++-----
vite.config.ts | 4 +-
40 files changed, 325 insertions(+), 401 deletions(-)
rename {src-tauri => src-rust}/.gitignore (100%)
rename {src-tauri => src-rust}/Cargo.lock (100%)
rename {src-tauri => src-rust}/Cargo.toml (100%)
rename {src-tauri => src-rust}/build.rs (100%)
rename {src-tauri => src-rust}/capabilities/default.json (100%)
rename {src-tauri => src-rust}/icons/128x128.png (100%)
rename {src-tauri => src-rust}/icons/128x128@2x.png (100%)
rename {src-tauri => src-rust}/icons/32x32.png (100%)
rename {src-tauri => src-rust}/icons/Square107x107Logo.png (100%)
rename {src-tauri => src-rust}/icons/Square142x142Logo.png (100%)
rename {src-tauri => src-rust}/icons/Square150x150Logo.png (100%)
rename {src-tauri => src-rust}/icons/Square284x284Logo.png (100%)
rename {src-tauri => src-rust}/icons/Square30x30Logo.png (100%)
rename {src-tauri => src-rust}/icons/Square310x310Logo.png (100%)
rename {src-tauri => src-rust}/icons/Square44x44Logo.png (100%)
rename {src-tauri => src-rust}/icons/Square71x71Logo.png (100%)
rename {src-tauri => src-rust}/icons/Square89x89Logo.png (100%)
rename {src-tauri => src-rust}/icons/StoreLogo.png (100%)
rename {src-tauri => src-rust}/icons/icon.icns (100%)
rename {src-tauri => src-rust}/icons/icon.ico (100%)
rename {src-tauri => src-rust}/icons/icon.png (100%)
rename {src-tauri => src-rust}/src/drive.rs (100%)
rename {src-tauri => src-rust}/src/lib.rs (100%)
rename {src-tauri => src-rust}/src/main.rs (100%)
rename {src-tauri => src-rust}/src/sync.rs (100%)
rename {src-tauri => src-rust}/tauri.conf.json (100%)
diff --git a/README.md b/README.md
index c856e75..e69de29 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +0,0 @@
-# Tauri + React + Typescript
-
-This template should help get you started developing with Tauri, React and Typescript in Vite.
-
-## Recommended IDE Setup
-
-- [VS Code](https://code.visualstudio.com/) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer)
-
-
-
-upx --best --lzma /home/rodriguez/Sources/my-tauri-app/src-tauri/target/release/my-tauri-app
diff --git a/src-tauri/.gitignore b/src-rust/.gitignore
similarity index 100%
rename from src-tauri/.gitignore
rename to src-rust/.gitignore
diff --git a/src-tauri/Cargo.lock b/src-rust/Cargo.lock
similarity index 100%
rename from src-tauri/Cargo.lock
rename to src-rust/Cargo.lock
diff --git a/src-tauri/Cargo.toml b/src-rust/Cargo.toml
similarity index 100%
rename from src-tauri/Cargo.toml
rename to src-rust/Cargo.toml
diff --git a/src-tauri/build.rs b/src-rust/build.rs
similarity index 100%
rename from src-tauri/build.rs
rename to src-rust/build.rs
diff --git a/src-tauri/capabilities/default.json b/src-rust/capabilities/default.json
similarity index 100%
rename from src-tauri/capabilities/default.json
rename to src-rust/capabilities/default.json
diff --git a/src-tauri/icons/128x128.png b/src-rust/icons/128x128.png
similarity index 100%
rename from src-tauri/icons/128x128.png
rename to src-rust/icons/128x128.png
diff --git a/src-tauri/icons/128x128@2x.png b/src-rust/icons/128x128@2x.png
similarity index 100%
rename from src-tauri/icons/128x128@2x.png
rename to src-rust/icons/128x128@2x.png
diff --git a/src-tauri/icons/32x32.png b/src-rust/icons/32x32.png
similarity index 100%
rename from src-tauri/icons/32x32.png
rename to src-rust/icons/32x32.png
diff --git a/src-tauri/icons/Square107x107Logo.png b/src-rust/icons/Square107x107Logo.png
similarity index 100%
rename from src-tauri/icons/Square107x107Logo.png
rename to src-rust/icons/Square107x107Logo.png
diff --git a/src-tauri/icons/Square142x142Logo.png b/src-rust/icons/Square142x142Logo.png
similarity index 100%
rename from src-tauri/icons/Square142x142Logo.png
rename to src-rust/icons/Square142x142Logo.png
diff --git a/src-tauri/icons/Square150x150Logo.png b/src-rust/icons/Square150x150Logo.png
similarity index 100%
rename from src-tauri/icons/Square150x150Logo.png
rename to src-rust/icons/Square150x150Logo.png
diff --git a/src-tauri/icons/Square284x284Logo.png b/src-rust/icons/Square284x284Logo.png
similarity index 100%
rename from src-tauri/icons/Square284x284Logo.png
rename to src-rust/icons/Square284x284Logo.png
diff --git a/src-tauri/icons/Square30x30Logo.png b/src-rust/icons/Square30x30Logo.png
similarity index 100%
rename from src-tauri/icons/Square30x30Logo.png
rename to src-rust/icons/Square30x30Logo.png
diff --git a/src-tauri/icons/Square310x310Logo.png b/src-rust/icons/Square310x310Logo.png
similarity index 100%
rename from src-tauri/icons/Square310x310Logo.png
rename to src-rust/icons/Square310x310Logo.png
diff --git a/src-tauri/icons/Square44x44Logo.png b/src-rust/icons/Square44x44Logo.png
similarity index 100%
rename from src-tauri/icons/Square44x44Logo.png
rename to src-rust/icons/Square44x44Logo.png
diff --git a/src-tauri/icons/Square71x71Logo.png b/src-rust/icons/Square71x71Logo.png
similarity index 100%
rename from src-tauri/icons/Square71x71Logo.png
rename to src-rust/icons/Square71x71Logo.png
diff --git a/src-tauri/icons/Square89x89Logo.png b/src-rust/icons/Square89x89Logo.png
similarity index 100%
rename from src-tauri/icons/Square89x89Logo.png
rename to src-rust/icons/Square89x89Logo.png
diff --git a/src-tauri/icons/StoreLogo.png b/src-rust/icons/StoreLogo.png
similarity index 100%
rename from src-tauri/icons/StoreLogo.png
rename to src-rust/icons/StoreLogo.png
diff --git a/src-tauri/icons/icon.icns b/src-rust/icons/icon.icns
similarity index 100%
rename from src-tauri/icons/icon.icns
rename to src-rust/icons/icon.icns
diff --git a/src-tauri/icons/icon.ico b/src-rust/icons/icon.ico
similarity index 100%
rename from src-tauri/icons/icon.ico
rename to src-rust/icons/icon.ico
diff --git a/src-tauri/icons/icon.png b/src-rust/icons/icon.png
similarity index 100%
rename from src-tauri/icons/icon.png
rename to src-rust/icons/icon.png
diff --git a/src-tauri/src/drive.rs b/src-rust/src/drive.rs
similarity index 100%
rename from src-tauri/src/drive.rs
rename to src-rust/src/drive.rs
diff --git a/src-tauri/src/lib.rs b/src-rust/src/lib.rs
similarity index 100%
rename from src-tauri/src/lib.rs
rename to src-rust/src/lib.rs
diff --git a/src-tauri/src/main.rs b/src-rust/src/main.rs
similarity index 100%
rename from src-tauri/src/main.rs
rename to src-rust/src/main.rs
diff --git a/src-tauri/src/sync.rs b/src-rust/src/sync.rs
similarity index 100%
rename from src-tauri/src/sync.rs
rename to src-rust/src/sync.rs
diff --git a/src-tauri/tauri.conf.json b/src-rust/tauri.conf.json
similarity index 100%
rename from src-tauri/tauri.conf.json
rename to src-rust/tauri.conf.json
diff --git a/src/settings/account/account-form.tsx b/src/settings/account/account-form.tsx
index 22e71d2..4463157 100644
--- a/src/settings/account/account-form.tsx
+++ b/src/settings/account/account-form.tsx
@@ -1,10 +1,7 @@
import React, { useState } from 'react';
-import { View, Text, TouchableOpacity } from 'react-native';
import { useForm, Controller } from 'react-hook-form';
import { z } from 'zod';
import { zodResolver } from '@hookform/resolvers/zod';
-import DateTimePicker from '@react-native-community/datetimepicker';
-import { Picker } from '@react-native-picker/picker';
const accountFormSchema = z.object({
name: z
@@ -55,28 +52,23 @@ export function AccountForm() {
};
return (
-
+
)}
/>
@@ -84,36 +76,32 @@ export function AccountForm() {
control={control}
name="dob"
render={({ field: { onChange, value } }) => (
-
- Date of birth
- setShowDatePicker(true)}
+
+
Date of birth
+
setShowDatePicker(true)}
>
- {value.toDateString()}
-
+ {value.toDateString()}
+
{showDatePicker && (
-
{
+ {
setShowDatePicker(false);
- if (selectedDate) {
- onChange(selectedDate);
+ if (e.target.value) {
+ onChange(new Date(e.target.value));
}
}}
+ className="mt-1 p-1 border rounded"
/>
)}
-
+
Your date of birth is used to calculate your age.
-
-
+
+
)}
/>
@@ -121,35 +109,32 @@ export function AccountForm() {
control={control}
name="language"
render={({ field: { onChange, value } }) => (
-
- Language
-
+ Language
+ onChange(e.target.value)}
>
{languages.map((language) => (
-
+
+ {language.label}
+
))}
-
-
+
+
This is the language that will be used in the dashboard.
-
-
+
+
)}
/>
-
- Update account
-
-
+ Update account
+
+
);
}
diff --git a/src/settings/account/page.tsx b/src/settings/account/page.tsx
index 69022a1..3a8c664 100644
--- a/src/settings/account/page.tsx
+++ b/src/settings/account/page.tsx
@@ -1,19 +1,17 @@
import React from 'react';
-import { View, Text } from 'react-native';
import { AccountForm } from './account-form';
export default function SettingsAccountPage() {
return (
-
-
- Account
-
- Update your account settings. Set your preferred language and
- timezone.
-
-
-
+
+
+
Account
+
+ Update your account settings. Set your preferred language and timezone.
+
+
+
-
+
);
}
diff --git a/src/settings/appearance/appearance-form.tsx b/src/settings/appearance/appearance-form.tsx
index 853640f..f7cac53 100644
--- a/src/settings/appearance/appearance-form.tsx
+++ b/src/settings/appearance/appearance-form.tsx
@@ -1,6 +1,4 @@
import React from 'react';
-import { View, Text, TouchableOpacity } from 'react-native';
-import { Picker } from '@react-native-picker/picker';
import { useForm, Controller } from 'react-hook-form';
import { z } from 'zod';
import { zodResolver } from '@hookform/resolvers/zod';
@@ -32,75 +30,64 @@ export function AppearanceForm() {
};
return (
-
-
- Font
+
+
+
Font
(
- onChange(e.target.value)}
>
-
-
-
-
+ Inter
+ Manrope
+ System
+
)}
/>
-
+
Set the font you want to use in the dashboard.
-
-
+
+
-
- Theme
-
+
+
Theme
+
Select the theme for the dashboard.
-
+
(
-
- onChange('light')}
+
+ onChange('light')}
>
- Light
-
- onChange('dark')}
+ Light
+
+ onChange('dark')}
>
- Dark
-
-
+ Dark
+
+
)}
/>
-
+
-
- Update preferences
-
-
+ Update preferences
+
+
);
}
diff --git a/src/settings/appearance/page.tsx b/src/settings/appearance/page.tsx
index 37aac20..9776295 100644
--- a/src/settings/appearance/page.tsx
+++ b/src/settings/appearance/page.tsx
@@ -1,19 +1,17 @@
import React from 'react';
-import { View, Text } from 'react-native';
import { AppearanceForm } from './appearance-form';
export default function SettingsAppearancePage() {
return (
-
-
- Appearance
-
- Customize the appearance of the app. Automatically switch between day
- and night themes.
-
-
-
+
+
+
Appearance
+
+ Customize the appearance of the app. Automatically switch between day and night themes.
+
+
+
-
+
);
}
diff --git a/src/settings/components/sidebar-nav.tsx b/src/settings/components/sidebar-nav.tsx
index bb87d63..97ae613 100644
--- a/src/settings/components/sidebar-nav.tsx
+++ b/src/settings/components/sidebar-nav.tsx
@@ -1,6 +1,5 @@
import React from 'react';
-import { View, Text, TouchableOpacity } from 'react-native';
-import { useNavigation, useRoute } from '@react-navigation/native';
+import { useNavigate, useLocation } from 'react-router-dom';
interface SidebarNavProps {
items: {
@@ -10,24 +9,22 @@ interface SidebarNavProps {
}
export function SidebarNav({ items }: SidebarNavProps) {
- const navigation = useNavigation();
- const route = useRoute();
+ const navigate = useNavigate();
+ const location = useLocation();
return (
-
+
{items.map((item) => (
- navigation.navigate(item.href)}
- style={{
- padding: 8,
- backgroundColor: route.name === item.href ? '#f0f0f0' : 'transparent',
- borderRadius: 4,
- }}
+ onClick={() => navigate(item.href)}
+ className={`px-3 py-2 rounded-md text-sm font-medium ${
+ location.pathname === item.href ? 'bg-gray-100' : 'hover:bg-gray-50'
+ }`}
>
- {item.title}
-
+ {item.title}
+
))}
-
+
);
}
diff --git a/src/settings/display/display-form.tsx b/src/settings/display/display-form.tsx
index 2166e9a..b9a8324 100644
--- a/src/settings/display/display-form.tsx
+++ b/src/settings/display/display-form.tsx
@@ -1,5 +1,4 @@
import React from 'react';
-import { View, Text, Switch, TouchableOpacity } from 'react-native';
import { useForm, Controller } from 'react-hook-form';
import { z } from 'zod';
import { zodResolver } from '@hookform/resolvers/zod';
@@ -36,44 +35,43 @@ export function DisplayForm() {
};
return (
-
- Sidebar
-
+
+
Sidebar
+
Select the items you want to display in the sidebar.
-
+
{items.map((item) => (
(
-
- {
- const updatedValue = checked
+
+ {
+ const updatedValue = e.target.checked
? [...field.value, item.id]
: field.value?.filter((value) => value !== item.id);
field.onChange(updatedValue);
}}
+ className="h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500"
/>
- {item.label}
-
+
+ {item.label}
+
+
)}
/>
))}
-
- Update display
-
-
+ Update display
+
+
);
}
diff --git a/src/settings/display/page.tsx b/src/settings/display/page.tsx
index 09ed036..a4da4ad 100644
--- a/src/settings/display/page.tsx
+++ b/src/settings/display/page.tsx
@@ -1,18 +1,17 @@
import React from 'react';
-import { View, Text } from 'react-native';
import { DisplayForm } from './display-form';
export default function SettingsDisplayPage() {
return (
-
-
- Display
-
+
+
+
Display
+
Turn items on or off to control what's displayed in the app.
-
-
-
+
+
+
-
+
);
}
diff --git a/src/settings/index.tsx b/src/settings/index.tsx
index 8d0bde9..4121c82 100644
--- a/src/settings/index.tsx
+++ b/src/settings/index.tsx
@@ -1,18 +1,17 @@
import React from 'react';
-import { View, Text } from 'react-native';
import { ProfileForm } from './profile-form';
export default function SettingsProfilePage() {
return (
-
-
- Profile
-
+
+
+
Profile
+
This is how others will see you on the site.
-
-
-
+
+
+
-
+
);
}
diff --git a/src/settings/layout.tsx b/src/settings/layout.tsx
index 0658a41..56ac808 100644
--- a/src/settings/layout.tsx
+++ b/src/settings/layout.tsx
@@ -1,48 +1,47 @@
import React from 'react';
-import { View, Text, ScrollView } from 'react-native';
import { SidebarNav } from './components/sidebar-nav';
const sidebarNavItems = [
{
title: "Profile",
- href: "/setttings",
+ href: "/settings",
},
{
title: "Account",
- href: "/setttings/account",
+ href: "/settings/account",
},
{
title: "Appearance",
- href: "/setttings/appearance",
+ href: "/settings/appearance",
},
{
title: "Notifications",
- href: "/setttings/notifications",
+ href: "/settings/notifications",
},
{
title: "Display",
- href: "/setttings/display",
+ href: "/settings/display",
},
];
-export default function SettingsLayout({ children }) {
+export default function SettingsLayout({ children }: { children: React.ReactNode }) {
return (
-
-
-
- Settings
-
+
+
+
+
Settings
+
Manage your account settings and set e-mail preferences.
-
-
-
-
-
+
+
+
+
+
-
- {children}
-
-
-
+
+
{children}
+
+
+
);
}
diff --git a/src/settings/notifications/notifications-form.tsx b/src/settings/notifications/notifications-form.tsx
index 74a000c..394c22c 100644
--- a/src/settings/notifications/notifications-form.tsx
+++ b/src/settings/notifications/notifications-form.tsx
@@ -1,5 +1,4 @@
import React from 'react';
-import { View, Text, Switch, TouchableOpacity } from 'react-native';
import { useForm, Controller } from 'react-hook-form';
import { z } from 'zod';
import { zodResolver } from '@hookform/resolvers/zod';
@@ -35,145 +34,145 @@ export function NotificationsForm() {
};
return (
-
-
- Notify me about...
+
-
- Email Notifications
+
+
Email Notifications
(
-
-
- Communication emails
- Receive emails about your account activity.
-
-
-
+ render={({ field: { onChange, value } }) => (
+
+
+
Communication emails
+
+ Receive emails about your account activity.
+
+
+
onChange(e.target.checked)}
+ className="h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500"
+ />
+
)}
/>
(
-
-
- Marketing emails
- Receive emails about new products, features, and more.
-
-
-
+
+
+
Marketing emails
+
+ Receive emails about new products, features, and more.
+
+
+
onChange(e.target.checked)}
+ className="h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500"
+ />
+
)}
/>
(
-
-
- Social emails
- Receive emails for friend requests, follows, and more.
-
-
-
+
+
+
Social emails
+
+ Receive emails for friend requests, follows, and more.
+
+
+
onChange(e.target.checked)}
+ className="h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500"
+ />
+
)}
/>
(
-
-
- Security emails
- Receive emails about your account activity and security.
-
-
-
+
+
+
Security emails
+
+ Receive emails about your account activity and security.
+
+
+
+
)}
/>
-
+
-
- Update notifications
-
-
+ Update notifications
+
+
);
}
diff --git a/src/settings/notifications/page.tsx b/src/settings/notifications/page.tsx
index a56b493..6aa2c25 100644
--- a/src/settings/notifications/page.tsx
+++ b/src/settings/notifications/page.tsx
@@ -1,18 +1,17 @@
import React from 'react';
-import { View, Text } from 'react-native';
import { NotificationsForm } from './notifications-form';
export default function SettingsNotificationsPage() {
return (
-
-
- Notifications
-
+
+
+
Notifications
+
Configure how you receive notifications.
-
-
-
+
+
+
-
+
);
}
diff --git a/src/settings/profile-form.tsx b/src/settings/profile-form.tsx
index 06e1749..c83dd3e 100644
--- a/src/settings/profile-form.tsx
+++ b/src/settings/profile-form.tsx
@@ -1,5 +1,4 @@
import React from 'react';
-import { View, Text, TextInput, TouchableOpacity } from 'react-native';
import { useForm, Controller } from 'react-hook-form';
import { z } from 'zod';
import { zodResolver } from '@hookform/resolvers/zod';
@@ -38,30 +37,25 @@ export function ProfileForm() {
};
return (
-
+
)}
/>
@@ -69,26 +63,21 @@ export function ProfileForm() {
control={control}
name="email"
render={({ field: { onChange, onBlur, value }, fieldState: { error } }) => (
-
- Email
-
+ Email
+ onChange(e.target.value)}
value={value}
placeholder="Enter email"
- keyboardType="email-address"
+ type="email"
/>
- {error && {error.message} }
-
+ {error && {error.message}
}
+
You can manage verified email addresses in your email settings.
-
-
+
+
)}
/>
@@ -96,42 +85,30 @@ export function ProfileForm() {
control={control}
name="bio"
render={({ field: { onChange, onBlur, value }, fieldState: { error } }) => (
-
- Bio
-
+ Bio
+
+
+
)}
/>
-
- Update profile
-
-
+ Update profile
+
+
);
}
diff --git a/vite.config.ts b/vite.config.ts
index f74d1b2..a915432 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -25,8 +25,8 @@ export default defineConfig(async () => ({
}
: undefined,
watch: {
- // 3. tell vite to ignore watching `src-tauri`
- ignored: ["**/src-tauri/**"],
+ // 3. tell vite to ignore watching `src-rust`
+ ignored: ["**/src-rust/**"],
},
},
}));