diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index e53e315..7ff8002 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -5,7 +5,11 @@
-
+
+
+
+
+
@@ -33,12 +37,12 @@
"assignee": "iib0011"
}
}
- {
- "selectedUrlAndAccountId": {
- "url": "https://github.com/iib0011/omni-tools",
- "accountId": "59b4836a-7ded-49a0-a358-5e8d81d0d44b"
+
+}]]>
{
"isMigrated": true
}
@@ -57,46 +61,47 @@
- {
- "keyToString": {
- "ASKED_ADD_EXTERNAL_FILES": "true",
- "ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
- "Docker.Dockerfile build.executor": "Run",
- "Docker.Dockerfile.executor": "Run",
- "Playwright.JoinText Component.executor": "Run",
- "Playwright.JoinText Component.should merge text pieces with specified join character.executor": "Run",
- "RunOnceActivity.OpenProjectViewOnStart": "true",
- "RunOnceActivity.ShowReadmeOnStart": "true",
- "Vitest.compute function (1).executor": "Run",
- "Vitest.compute function.executor": "Run",
- "Vitest.mergeText.executor": "Run",
- "Vitest.mergeText.should merge lines and preserve blank lines when deleteBlankLines is false.executor": "Run",
- "Vitest.mergeText.should merge lines, preserve blank lines and trailing spaces when both deleteBlankLines and deleteTrailingSpaces are false.executor": "Run",
- "git-widget-placeholder": "main",
- "ignore.virus.scanning.warn.message": "true",
- "kotlin-language-version-configured": "true",
- "last_opened_file_path": "C:/Users/HP/IdeaProjects/omni-tools/src/components/options",
- "node.js.detected.package.eslint": "true",
- "node.js.detected.package.tslint": "true",
- "node.js.selected.package.eslint": "(autodetect)",
- "node.js.selected.package.tslint": "(autodetect)",
- "nodejs_package_manager_path": "npm",
- "npm.dev.executor": "Run",
- "npm.lint.executor": "Run",
- "npm.prebuild.executor": "Run",
- "npm.script:create:tool.executor": "Run",
- "npm.test.executor": "Run",
- "npm.test:e2e.executor": "Run",
- "npm.test:e2e:run.executor": "Run",
- "prettierjs.PrettierConfiguration.Package": "C:\\Users\\HP\\IdeaProjects\\omni-tools\\node_modules\\prettier",
- "project.structure.last.edited": "Problems",
- "project.structure.proportion": "0.0",
- "project.structure.side.proportion": "0.2",
- "settings.editor.selected.configurable": "settings.typescriptcompiler",
- "ts.external.directory.path": "C:\\Users\\HP\\IdeaProjects\\omni-tools\\node_modules\\typescript\\lib",
- "vue.rearranger.settings.migration": "true"
+
+}]]>
-
+
@@ -187,8 +192,8 @@
-
+
@@ -198,8 +203,8 @@
-
-
+
+
@@ -244,6 +249,7 @@
+
diff --git a/README.md b/README.md
index eb70e6a..5b32147 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,9 @@
# OmniTools
-Welcome to **OmniTools**, an open-source alternative to OnlineTools.com.
+Welcome to **OmniTools**, a self hosted alternative to OnlineTools.com.
This project offers a variety of online tools to help with everyday tasks,
all available for free and open for community contributions. Please don't forget to star the repo to support us.
-Here is the [live](https://omnitools.netlify.app/) website.
+Here is the [demo](https://omnitools.netlify.app/) website.

@@ -76,20 +76,27 @@ npm run test
npm run test:e2e
```
-### Contributors
-
-
-
-
-
[//]: # (
)
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
-## Contact
+## 🤝 Looking to contribute?
-For any questions or suggestions, feel free to open an issue or contact us at:
+We welcome contributions! You can help by:
-Email: ibracool99@gmail.com
+- ✅ Reporting bugs
+- ✅ Suggesting new features
+- ✅ Improving documentation
+- ✅ Submitting pull requests
+
+Check CONTRIBUTING.md inside each subproject for details.
+
+You can also join our [Discord server](https://discord.gg/A6eMSNwg)
+
+### Contributors
+
+
+
+
diff --git a/src/components/Hero.tsx b/src/components/Hero.tsx
index 72545f6..c8d5b51 100644
--- a/src/components/Hero.tsx
+++ b/src/components/Hero.tsx
@@ -39,7 +39,7 @@ export default function Hero() {
- Transform Your Workflow with{' '}
+ Get Things Done Quickly with{' '}
{
const toggleDrawer = (open: boolean) => () => {
setDrawerOpen(open);
};
+ const navItems: { label: string; path: string }[] = [
+ // { label: 'Features', path: '/features' }
+ // { label: 'About Us', path: '/about-us' }
+ ];
const drawerList = (
- navigate('/features')}>
-
-
- navigate('/about-us')}>
-
-
-
-
- Star us
-
+ {navItems.map((navItem) => (
+ navigate(navItem.path)}>
+
+
+ ))}
+
);
@@ -59,15 +57,27 @@ const Navbar: React.FC = () => {
navigate('/')}
- fontSize={20}
- sx={{ cursor: 'pointer' }}
+ fontSize={25}
+ sx={{
+ cursor: 'pointer',
+ fontWeight: 600,
+ textShadow: '1px 1px 2px rgba(0,0,0,0.2)'
+ }}
color={'primary'}
>
OmniTools
{isMobile ? (
<>
-
+
{
>
) : (
-
-
+ ))}
+
)}
diff --git a/src/components/input/ToolFileInput.tsx b/src/components/input/ToolFileInput.tsx
index 67ba26c..9f13675 100644
--- a/src/components/input/ToolFileInput.tsx
+++ b/src/components/input/ToolFileInput.tsx
@@ -38,6 +38,14 @@ export default function ToolFileInput({
});
}
};
+ const handlePaste = (event: ClipboardEvent) => {
+ const clipboardItems = event.clipboardData?.items ?? [];
+ const item = clipboardItems[0];
+ if (item.type.includes('image')) {
+ const file = item.getAsFile();
+ onChange(file!);
+ }
+ };
useEffect(() => {
if (value) {
const objectUrl = URL.createObjectURL(value);
@@ -57,6 +65,15 @@ export default function ToolFileInput({
const handleImportClick = () => {
fileInputRef.current?.click();
};
+
+ useEffect(() => {
+ window.addEventListener('paste', handlePaste);
+
+ return () => {
+ window.removeEventListener('paste', handlePaste);
+ };
+ }, [handlePaste]);
+
return (