Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions app/Http/Controllers/ToolController.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,60 @@ public function index(): View
'route' => 'tools.regex',
'icon' => 'regex',
],
[
'name' => 'Base Converter',
'description' => 'Convert between binary, octal, decimal, and hex',
'route' => 'tools.base-converter',
'icon' => 'calculator',
],
[
'name' => 'Slug Generator',
'description' => 'Convert text to URL-friendly slugs',
'route' => 'tools.slug-generator',
'icon' => 'slug',
],
[
'name' => 'Color Picker',
'description' => 'Pick colors and convert between HEX, RGB, HSL, CMYK',
'route' => 'tools.color-picker',
'icon' => 'color',
],
[
'name' => 'QR Code Generator',
'description' => 'Generate QR codes for URLs, text, and more',
'route' => 'tools.qr-code',
'icon' => 'qrcode',
],
[
'name' => 'HTML Entity Encoder',
'description' => 'Encode/decode HTML entities and special characters',
'route' => 'tools.html-entity',
'icon' => 'html-entity',
],
[
'name' => 'Text Case Converter',
'description' => 'Convert text to camelCase, snake_case, and more',
'route' => 'tools.text-case',
'icon' => 'text-case',
],
[
'name' => 'Password Generator',
'description' => 'Generate secure random passwords',
'route' => 'tools.password',
'icon' => 'key',
],
[
'name' => 'Lorem Ipsum Generator',
'description' => 'Generate placeholder text for designs',
'route' => 'tools.lorem',
'icon' => 'text',
],
[
'name' => 'Cron Parser',
'description' => 'Parse and explain cron expressions',
'route' => 'tools.cron',
'icon' => 'clock',
],
];

return view('home', compact('tools'));
Expand Down Expand Up @@ -134,4 +188,49 @@ public function regex(): View
{
return view('tools.regex');
}

public function baseConverter(): View
{
return view('tools.base-converter');
}

public function slugGenerator(): View
{
return view('tools.slug-generator');
}

public function colorPicker(): View
{
return view('tools.color-picker');
}

public function qrCode(): View
{
return view('tools.qr-code');
}

public function htmlEntity(): View
{
return view('tools.html-entity');
}

public function textCase(): View
{
return view('tools.text-case');
}

public function password(): View
{
return view('tools.password-generator');
}

public function lorem(): View
{
return view('tools.lorem-ipsum');
}

public function cron(): View
{
return view('tools.cron-parser');
}
}
47 changes: 47 additions & 0 deletions resources/views/home.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,53 @@
<circle cx="12" cy="12" r="4" stroke-width="2"/>
</svg>
@break

@case('calculator')
<svg class="w-6 h-6 text-indigo-600 dark:text-indigo-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 7h6m0 10v-3m-3 3h.01M9 17h.01M9 14h.01M12 14h.01M15 11h.01M12 11h.01M9 11h.01M7 21h10a2 2 0 002-2V5a2 2 0 00-2-2H7a2 2 0 00-2 2v14a2 2 0 002 2z"/>
</svg>
@break
@case('slug')
<svg class="w-6 h-6 text-indigo-600 dark:text-indigo-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"/>
</svg>
@break
@case('color')
<svg class="w-6 h-6 text-indigo-600 dark:text-indigo-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 21a4 4 0 01-4-4V5a2 2 0 012-2h4a2 2 0 012 2v12a4 4 0 01-4 4zm0 0h12a2 2 0 002-2v-4a2 2 0 00-2-2h-2.343M11 7.343l1.657-1.657a2 2 0 012.828 0l2.829 2.829a2 2 0 010 2.828l-8.486 8.485M7 17h.01"/>
</svg>
@break
@case('qrcode')
<svg class="w-6 h-6 text-indigo-600 dark:text-indigo-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v1m6 11h2m-6 0h-2v4m0-11v3m0 0h.01M12 12h4.01M16 20h2M4 12h4m12 0h.01M5 8h2a1 1 0 001-1V5a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1zm12 0h2a1 1 0 001-1V5a1 1 0 00-1-1h-2a1 1 0 00-1 1v2a1 1 0 001 1zM5 20h2a1 1 0 001-1v-2a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1z"/>
</svg>
@break
@case('html-entity')
<svg class="w-6 h-6 text-indigo-600 dark:text-indigo-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"/>
</svg>
@break
@case('text-case')
<svg class="w-6 h-6 text-indigo-600 dark:text-indigo-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 3v5a1 1 0 001 1h5"/>
</svg>
@break
@case('key')
<svg class="w-6 h-6 text-indigo-600 dark:text-indigo-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"/>
</svg>
@break
@case('text')
<svg class="w-6 h-6 text-indigo-600 dark:text-indigo-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16m-7 6h7"/>
</svg>
@break
@case('clock')
<svg class="w-6 h-6 text-indigo-600 dark:text-indigo-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/>
</svg>
@break
@endswitch
</div>
<div class="flex-1 min-w-0">
Expand Down
Loading