mirror of
https://github.com/iib0011/omni-tools.git
synced 2025-09-16 20:49:30 +02:00
feat: make responsive
This commit is contained in:
29
.idea/workspace.xml
generated
29
.idea/workspace.xml
generated
@@ -4,10 +4,13 @@
|
|||||||
<option name="autoReloadType" value="SELECTIVE" />
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="b30e2810-c4c1-4aad-b134-794e52cc1c7d" name="Changes" comment="fix: generate numbers">
|
<list default="true" id="b30e2810-c4c1-4aad-b134-794e52cc1c7d" name="Changes" comment="fix: merging branches">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/components/ToolLayout.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/ToolLayout.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/components/Hero.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/Hero.tsx" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/components/Navbar/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/Navbar/index.tsx" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/pages/home/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/home/index.tsx" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/pages/number/generate/meta.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/number/generate/meta.ts" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/pages/number/generate/meta.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/number/generate/meta.ts" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/pages/tools-by-category/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools-by-category/index.tsx" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@@ -195,14 +198,6 @@
|
|||||||
<workItem from="1719339559458" duration="303000" />
|
<workItem from="1719339559458" duration="303000" />
|
||||||
<workItem from="1719340295244" duration="772000" />
|
<workItem from="1719340295244" duration="772000" />
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00011" summary="chore: output selector">
|
|
||||||
<option name="closed" value="true" />
|
|
||||||
<created>1718999826771</created>
|
|
||||||
<option name="number" value="00011" />
|
|
||||||
<option name="presentableId" value="LOCAL-00011" />
|
|
||||||
<option name="project" value="LOCAL" />
|
|
||||||
<updated>1718999826771</updated>
|
|
||||||
</task>
|
|
||||||
<task id="LOCAL-00012" summary="feat: text split">
|
<task id="LOCAL-00012" summary="feat: text split">
|
||||||
<option name="closed" value="true" />
|
<option name="closed" value="true" />
|
||||||
<created>1719003559965</created>
|
<created>1719003559965</created>
|
||||||
@@ -587,7 +582,15 @@
|
|||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1719349760930</updated>
|
<updated>1719349760930</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="60" />
|
<task id="LOCAL-00060" summary="fix: merging branches">
|
||||||
|
<option name="closed" value="true" />
|
||||||
|
<created>1719350066784</created>
|
||||||
|
<option name="number" value="00060" />
|
||||||
|
<option name="presentableId" value="LOCAL-00060" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1719350066784</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="61" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="TypeScriptGeneratedFilesManager">
|
<component name="TypeScriptGeneratedFilesManager">
|
||||||
@@ -608,7 +611,6 @@
|
|||||||
<option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
|
<option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
|
||||||
<option name="CHECK_NEW_TODO" value="false" />
|
<option name="CHECK_NEW_TODO" value="false" />
|
||||||
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
|
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
|
||||||
<MESSAGE value="fix: join text service" />
|
|
||||||
<MESSAGE value="test: join service" />
|
<MESSAGE value="test: join service" />
|
||||||
<MESSAGE value="feat: result copy and download" />
|
<MESSAGE value="feat: result copy and download" />
|
||||||
<MESSAGE value="feat: contributors graph" />
|
<MESSAGE value="feat: contributors graph" />
|
||||||
@@ -633,7 +635,8 @@
|
|||||||
<MESSAGE value="feat: create transparent png" />
|
<MESSAGE value="feat: create transparent png" />
|
||||||
<MESSAGE value="fix: ToolFileInput.tsx" />
|
<MESSAGE value="fix: ToolFileInput.tsx" />
|
||||||
<MESSAGE value="fix: generate numbers" />
|
<MESSAGE value="fix: generate numbers" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="fix: generate numbers" />
|
<MESSAGE value="fix: merging branches" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value="fix: merging branches" />
|
||||||
</component>
|
</component>
|
||||||
<component name="XSLT-Support.FileAssociations.UIState">
|
<component name="XSLT-Support.FileAssociations.UIState">
|
||||||
<expand />
|
<expand />
|
||||||
|
@@ -33,14 +33,24 @@ export default function Hero() {
|
|||||||
setFilteredTools(filterTools(tools, newInputValue));
|
setFilteredTools(filterTools(tools, newInputValue));
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
<Box width={'60%'}>
|
<Box width={{ xs: '90%', md: '80%', lg: '60%' }}>
|
||||||
<Stack mb={1} direction={'row'} spacing={1}>
|
<Stack mb={1} direction={'row'} spacing={1} justifyContent={'center'}>
|
||||||
<Typography fontSize={30}>Transform Your Workflow with </Typography>
|
<Typography sx={{ textAlign: 'center' }} fontSize={{ xs: 25, md: 30 }}>
|
||||||
<Typography fontSize={30} color={'primary'}>
|
Transform Your Workflow with{' '}
|
||||||
|
<Typography
|
||||||
|
fontSize={{ xs: 25, md: 30 }}
|
||||||
|
display={'inline'}
|
||||||
|
color={'primary'}
|
||||||
|
>
|
||||||
Omni Tools
|
Omni Tools
|
||||||
</Typography>
|
</Typography>
|
||||||
|
</Typography>
|
||||||
</Stack>
|
</Stack>
|
||||||
<Typography fontSize={20} mb={2}>
|
<Typography
|
||||||
|
sx={{ textAlign: 'center' }}
|
||||||
|
fontSize={{ xs: 15, md: 20 }}
|
||||||
|
mb={2}
|
||||||
|
>
|
||||||
Boost your productivity with Omni Tools, the ultimate toolkit for
|
Boost your productivity with Omni Tools, the ultimate toolkit for
|
||||||
getting things done quickly! Access thousands of user-friendly utilities
|
getting things done quickly! Access thousands of user-friendly utilities
|
||||||
for editing images, text, lists, and data, all directly from your
|
for editing images, text, lists, and data, all directly from your
|
||||||
@@ -76,7 +86,14 @@ export default function Hero() {
|
|||||||
/>
|
/>
|
||||||
<Grid container spacing={2} mt={2}>
|
<Grid container spacing={2} mt={2}>
|
||||||
{exampleTools.map((tool) => (
|
{exampleTools.map((tool) => (
|
||||||
<Grid onClick={() => navigate(tool.url)} item xs={4} key={tool.label}>
|
<Grid
|
||||||
|
onClick={() => navigate(tool.url)}
|
||||||
|
item
|
||||||
|
xs={12}
|
||||||
|
md={6}
|
||||||
|
lg={4}
|
||||||
|
key={tool.label}
|
||||||
|
>
|
||||||
<Box
|
<Box
|
||||||
sx={{
|
sx={{
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
|
@@ -1,15 +1,57 @@
|
|||||||
import React from 'react';
|
import React, { useState } from 'react';
|
||||||
import AppBar from '@mui/material/AppBar';
|
import AppBar from '@mui/material/AppBar';
|
||||||
import Toolbar from '@mui/material/Toolbar';
|
import Toolbar from '@mui/material/Toolbar';
|
||||||
import Typography from '@mui/material/Typography';
|
import Typography from '@mui/material/Typography';
|
||||||
import Button from '@mui/material/Button';
|
import Button from '@mui/material/Button';
|
||||||
import IconButton from '@mui/material/IconButton';
|
import IconButton from '@mui/material/IconButton';
|
||||||
|
import MenuIcon from '@mui/icons-material/Menu';
|
||||||
import { Link, useNavigate } from 'react-router-dom';
|
import { Link, useNavigate } from 'react-router-dom';
|
||||||
import githubIcon from '@assets/github-mark.png'; // Adjust the path to your GitHub icon
|
import githubIcon from '@assets/github-mark.png'; // Adjust the path to your GitHub icon
|
||||||
import { Stack } from '@mui/material';
|
import {
|
||||||
|
Stack,
|
||||||
|
Drawer,
|
||||||
|
List,
|
||||||
|
ListItem,
|
||||||
|
ListItemText,
|
||||||
|
ListItemButton
|
||||||
|
} from '@mui/material';
|
||||||
|
import useMediaQuery from '@mui/material/useMediaQuery';
|
||||||
|
import { useTheme } from '@mui/material/styles';
|
||||||
|
|
||||||
const Navbar: React.FC = () => {
|
const Navbar: React.FC = () => {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
const theme = useTheme();
|
||||||
|
const isMobile = useMediaQuery(theme.breakpoints.down('md'));
|
||||||
|
const [drawerOpen, setDrawerOpen] = useState(false);
|
||||||
|
|
||||||
|
const toggleDrawer = (open: boolean) => () => {
|
||||||
|
setDrawerOpen(open);
|
||||||
|
};
|
||||||
|
|
||||||
|
const drawerList = (
|
||||||
|
<List>
|
||||||
|
<ListItemButton onClick={() => navigate('/features')}>
|
||||||
|
<ListItemText primary="Features" />
|
||||||
|
</ListItemButton>
|
||||||
|
<ListItemButton onClick={() => navigate('/about-us')}>
|
||||||
|
<ListItemText primary="About Us" />
|
||||||
|
</ListItemButton>
|
||||||
|
<ListItemButton
|
||||||
|
component="a"
|
||||||
|
href="https://github.com/iib0011/omni-tools"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
src={githubIcon}
|
||||||
|
alt="GitHub"
|
||||||
|
style={{ height: '24px', marginRight: '8px' }}
|
||||||
|
/>
|
||||||
|
<Typography variant="button">Star us</Typography>
|
||||||
|
</ListItemButton>
|
||||||
|
</List>
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<AppBar
|
<AppBar
|
||||||
position="static"
|
position="static"
|
||||||
@@ -24,6 +66,20 @@ const Navbar: React.FC = () => {
|
|||||||
>
|
>
|
||||||
OmniTools
|
OmniTools
|
||||||
</Typography>
|
</Typography>
|
||||||
|
{isMobile ? (
|
||||||
|
<>
|
||||||
|
<IconButton color="inherit" onClick={toggleDrawer(true)}>
|
||||||
|
<MenuIcon />
|
||||||
|
</IconButton>
|
||||||
|
<Drawer
|
||||||
|
anchor="right"
|
||||||
|
open={drawerOpen}
|
||||||
|
onClose={toggleDrawer(false)}
|
||||||
|
>
|
||||||
|
{drawerList}
|
||||||
|
</Drawer>
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
<Stack direction={'row'}>
|
<Stack direction={'row'}>
|
||||||
<Button color="inherit">
|
<Button color="inherit">
|
||||||
<Link
|
<Link
|
||||||
@@ -55,6 +111,7 @@ const Navbar: React.FC = () => {
|
|||||||
<Typography variant="button">Star us</Typography>
|
<Typography variant="button">Star us</Typography>
|
||||||
</IconButton>
|
</IconButton>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
)}
|
||||||
</Toolbar>
|
</Toolbar>
|
||||||
</AppBar>
|
</AppBar>
|
||||||
);
|
);
|
||||||
|
@@ -11,7 +11,7 @@ export default function Home() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Box
|
<Box
|
||||||
padding={5}
|
padding={{ xs: 1, md: 3, lg: 5 }}
|
||||||
display={'flex'}
|
display={'flex'}
|
||||||
flexDirection={'column'}
|
flexDirection={'column'}
|
||||||
alignItems={'center'}
|
alignItems={'center'}
|
||||||
@@ -21,7 +21,7 @@ export default function Home() {
|
|||||||
<Hero />
|
<Hero />
|
||||||
<Grid width={'80%'} container mt={2} spacing={2}>
|
<Grid width={'80%'} container mt={2} spacing={2}>
|
||||||
{getToolsByCategory().map((category) => (
|
{getToolsByCategory().map((category) => (
|
||||||
<Grid key={category.type} item xs={6}>
|
<Grid key={category.type} item xs={12} md={6}>
|
||||||
<Card>
|
<Card>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Link
|
<Link
|
||||||
@@ -31,20 +31,22 @@ export default function Home() {
|
|||||||
{category.title}
|
{category.title}
|
||||||
</Link>
|
</Link>
|
||||||
<Typography sx={{ mt: 2 }}>{category.description}</Typography>
|
<Typography sx={{ mt: 2 }}>{category.description}</Typography>
|
||||||
<Stack
|
<Grid mt={1} container spacing={2}>
|
||||||
mt={2}
|
<Grid item xs={12} md={6}>
|
||||||
direction={'row'}
|
|
||||||
justifyContent={'space-between'}
|
|
||||||
>
|
|
||||||
<Button
|
<Button
|
||||||
|
fullWidth
|
||||||
onClick={() => navigate('/categories/' + category.type)}
|
onClick={() => navigate('/categories/' + category.type)}
|
||||||
variant={'contained'}
|
variant={'contained'}
|
||||||
>{`See all ${category.title}`}</Button>
|
>{`See all ${category.title}`}</Button>
|
||||||
|
</Grid>
|
||||||
|
<Grid item xs={12} md={6}>
|
||||||
<Button
|
<Button
|
||||||
|
fullWidth
|
||||||
onClick={() => navigate(category.example.path)}
|
onClick={() => navigate(category.example.path)}
|
||||||
variant={'outlined'}
|
variant={'outlined'}
|
||||||
>{`Try ${category.example.title}`}</Button>
|
>{`Try ${category.example.title}`}</Button>
|
||||||
</Stack>
|
</Grid>
|
||||||
|
</Grid>
|
||||||
</CardContent>
|
</CardContent>
|
||||||
</Card>
|
</Card>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@@ -3,7 +3,7 @@ import { lazy } from 'react';
|
|||||||
// import image from '@assets/text.png';
|
// import image from '@assets/text.png';
|
||||||
|
|
||||||
export const tool = defineTool('number', {
|
export const tool = defineTool('number', {
|
||||||
name: 'Generate',
|
name: 'Generate numbers',
|
||||||
path: 'generate',
|
path: 'generate',
|
||||||
shortDescription: 'Quickly calculate a list of integers in your browser',
|
shortDescription: 'Quickly calculate a list of integers in your browser',
|
||||||
// image,
|
// image,
|
||||||
|
@@ -23,7 +23,7 @@ export default function Home() {
|
|||||||
return (
|
return (
|
||||||
<Box>
|
<Box>
|
||||||
<Box
|
<Box
|
||||||
padding={5}
|
padding={{ xs: 1, md: 3, lg: 5 }}
|
||||||
display={'flex'}
|
display={'flex'}
|
||||||
flexDirection={'column'}
|
flexDirection={'column'}
|
||||||
alignItems={'center'}
|
alignItems={'center'}
|
||||||
@@ -33,7 +33,7 @@ export default function Home() {
|
|||||||
<Hero />
|
<Hero />
|
||||||
</Box>
|
</Box>
|
||||||
<Divider sx={{ borderColor: theme.palette.primary.main }} />
|
<Divider sx={{ borderColor: theme.palette.primary.main }} />
|
||||||
<Box width={'100%'} mt={3} ml={7} padding={3}>
|
<Box width={'100%'} mt={3} ml={{ xs: 1, md: 2, lg: 3 }} padding={3}>
|
||||||
<Typography
|
<Typography
|
||||||
fontSize={22}
|
fontSize={22}
|
||||||
color={theme.palette.primary.main}
|
color={theme.palette.primary.main}
|
||||||
@@ -42,7 +42,7 @@ export default function Home() {
|
|||||||
{getToolsByCategory()
|
{getToolsByCategory()
|
||||||
.find(({ type }) => type === categoryName)
|
.find(({ type }) => type === categoryName)
|
||||||
?.tools?.map((tool) => (
|
?.tools?.map((tool) => (
|
||||||
<Grid item xs={12} md={4} key={tool.path}>
|
<Grid item xs={12} md={6} lg={4} key={tool.path}>
|
||||||
<Stack
|
<Stack
|
||||||
sx={{
|
sx={{
|
||||||
cursor: 'pointer',
|
cursor: 'pointer',
|
||||||
|
Reference in New Issue
Block a user