Initial commit

This commit is contained in:
hackerESQ
2024-08-01 13:53:10 -05:00
commit 1984bff865
142 changed files with 17783 additions and 0 deletions
@@ -0,0 +1,19 @@
<a href="{{ route('dashboard') }}">
<svg id="Layer_1" class="fill-current" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2175.97 336.95" {{ $attributes }}>
<path class="text-inherit" d="M.34,23.63l67.11.08-.34,307.46L0,331.1Z"/>
<path class="text-inherit" d="M334.22,331.47,268,331.4l.18-157.46c0-25.44-11.8-40.37-34.17-40.39-19.3,0-35.1,11.36-42.58,29.34l-.19,168.42L125,331.24l.28-247.82,51.76.06,13.13,23.26h1.75c14.94-18,40.83-29.34,66.71-29.31,48.24.06,75.85,26.84,75.78,82.55Z"/>
<path class="text-inherit" d="M459.81,202.22c9.17,32.47,12.66,47.83,16.15,67.13h1.75c2.66-18.42,6.18-34.64,15-67.09L524.85,83.87l66.23.07L512.73,331.67l-74.12-.08L354.67,83.68l71.49.08Z"/>
<path class="text-inherit" d="M807.5,309.2c-19.31,15.76-43.45,27.58-90.82,27.53-78.07-.09-117.94-44-117.84-129.53.09-80.26,44.88-128,116.37-127.94,63.17.07,99.53,40,99.46,100.55a300.65,300.65,0,0,1-3.12,44.3l-147.82-.17c.84,39,18.36,60.55,60.47,60.6,26.75,0,45.19-12.67,54.41-22.31ZM665.1,180.08l87.28.1V173.6c0-28.95-12.23-44.31-39-44.34C683.58,129.23,666,151.14,665.1,180.08Z"/>
<path class="text-inherit" d="M841.89,156.6c0-40.36,34.73-76.72,92.19-76.66,44.74,0,73.23,15.87,89.44,34.75l-42.59,41.62c-8.76-10.09-25.85-23.27-48.66-23.3-14.91,0-24.57,7.87-24.59,19.27,0,37.29,116.65,24.26,116.56,107.16,0,32.89-26,77.16-97.9,77.08-54.39-.06-87.26-22.9-100.84-37.39L865,253.56c11,12.73,35.05,30.74,64.88,30.77,20.61,0,28.52-9.62,28.53-21C958.48,227.34,841.79,239.06,841.89,156.6Z"/>
<path class="text-inherit" d="M1063.27,252.9l.14-118-31.58,0,0-41.23,32-13.12,22.87-58.31,42.11,0-.08,62.29,61.85.07-.06,50.44-61.84-.07-.14,119.74c0,17.1,9.63,25.89,25.85,25.91,10.53,0,24.13-3.49,33.79-10.93l17,49.58c-8.34,6.13-27.65,15.32-68.88,15.28C1093.89,334.52,1063.21,313,1063.27,252.9Z"/>
<path class="text-primary" d="M2175.77,332.71l-66.23-.07.18-157.47c0-25.44-11.8-40.36-34.17-40.39-19.3,0-35.1,11.37-42.58,29.34l-.19,168.43-66.23-.07.28-247.82,51.76.06L2031.72,108h1.75c14.94-18,40.83-29.34,66.71-29.31,48.24,0,75.85,26.84,75.79,82.54Z"/>
<path class="text-primary" d="M1924.39,84.6l-65.23-.07L1859,247.87h.1c28.85,0,50.32,21.55,50.29,51a47,47,0,0,1-13.95,33.55l29.69,0,.26-225.58Z"/>
<path class="text-primary" d="M1223.65,0,1289,.07l-.11,95.62h1.76c9.66-6.57,27.65-13.56,48.26-13.54,56.14.06,97.78,30.81,97.68,122C1436.5,279.64,1392.14,337,1309.68,337c-40.79,0-65.35-6.21-86.39-15.88Zm147.14,209.38c.06-55.26-19.22-72.83-47.73-72.86-15.35,0-27.2,6.11-33.35,13.12l-.15,131.15c7.46,2.64,15.79,3.52,25,3.53C1349.65,284.36,1370.73,262,1370.79,209.38Z"/>
<path class="text-primary" d="M1624.37,147.38c-8.77-1.76-19.73-2.21-28.5-2.22-20.62,0-43.44,7.85-57.92,19.67l-.19,168-65.79-.07.27-247.82L1524,85l13.56,36.42h1.75c10.12-24.11,31.63-41.63,64.09-41.6a103.79,103.79,0,0,1,21,2.22Z"/>
<path class="text-primary" d="M1815.15,163l-.11,99.13c0,14,5.24,20.18,17.09,20.19h7l-.05,45.62c-10.53,6.56-21.94,8.31-32.9,8.29-23.69,0-37.27-11.44-44.71-26.8h-1.76c-9.22,12.27-27.66,27.6-63.19,27.56-48.25-.06-73.21-33-73.17-68.51.06-57,51.41-83.28,129.48-79.24l0-19.3c0-27.63-15.31-36-35.49-36-23.68,0-36.42,13.56-42.57,28l-46.9-34.71c9.67-13.58,34.27-46.45,89.1-46.39C1780.16,80.89,1815.22,102.86,1815.15,163Zm-62.36,71c-43.42-3.12-64.92,6.94-65,28.43,0,14,9.63,24.14,26.73,24.16,16.23,0,30.71-7.43,38.18-17.51Z"/>
</svg>
</a>
@@ -0,0 +1,18 @@
<a href="/">
<svg class="w-32 fill-current" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1244.31 573.74">
<path class="text-inherit" d="M.34,1.42l67.11.07L67.11,309,0,308.88Z"/>
<path class="text-inherit" d="M334.22,230.65,279.15,309.2l-11.16,0,.18-157.46c0-25.44-11.8-40.36-34.17-40.39-19.3,0-35.1,11.36-42.58,29.34l-.19,168.43L125,309l.28-247.81,51.76,0,13.13,23.27h1.75c14.94-18,40.83-29.34,66.71-29.31,48.24.05,75.85,26.84,75.78,82.54Z"/>
<path class="text-inherit" d="M459.81,180c9.17,32.47,12.66,47.82,16.15,67.12h1.75c2.66-18.42,6.18-34.65,15-67.1L524.85,61.65l66.23.08L512.73,309.46l-74.12-.09L354.67,61.46l71.49.08Z"/>
<path class="text-inherit" d="M807.5,287c-19.31,15.77-43.45,27.58-90.82,27.53-78.07-.09-117.94-44-117.84-129.52.09-80.27,44.88-128,116.37-128,63.17.07,99.53,40,99.46,100.56a300.44,300.44,0,0,1-3.12,44.29l-147.82-.16c.84,39,18.36,60.55,60.47,60.59,26.75,0,45.19-12.67,54.41-22.3ZM665.1,157.87l87.28.1v-6.58c0-28.95-12.23-44.32-39-44.35C683.58,107,666,128.92,665.1,157.87Z"/>
<path class="text-inherit" d="M841.89,134.38c0-40.35,34.73-76.72,92.19-76.65,44.74.05,73.23,15.87,89.44,34.75L980.93,134.1c-8.76-10.1-25.85-23.28-48.66-23.3-14.91,0-24.57,7.86-24.59,19.27,0,37.28,116.65,24.25,116.56,107.15,0,32.9-26,77.17-97.9,77.09-54.39-.06-87.26-22.91-100.84-37.4L865,231.34c11,12.73,35.05,30.74,64.88,30.78,20.61,0,28.52-9.62,28.53-21C958.48,205.13,841.79,216.84,841.89,134.38Z"/>
<path class="text-inherit" d="M1063.27,230.69l.14-118-31.58,0,0-41.23,32-13.12L1086.78,0l42.11.05-.08,62.28,61.85.07-.06,50.44-61.84-.07-.14,119.74c0,17.11,9.63,25.89,25.85,25.91,10.53,0,24.13-3.48,33.79-10.93l17,49.59c-8.34,6.13-27.65,15.32-68.88,15.27C1093.89,312.3,1063.21,290.78,1063.27,230.69Z"/>
<path class="text-primary" d="M1244.11,569.49l-66.23-.07.18-157.46c0-25.44-11.8-40.37-34.17-40.39-19.3,0-35.1,11.36-42.58,29.34l-.18,168.42-66.23-.07.27-247.82,51.76.06,13.13,23.26h1.76c14.93-18,40.82-29.35,66.7-29.32,48.25.06,75.85,26.84,75.79,82.55Z"/>
<path class="text-primary" d="M992.73,321.39l-65.23-.08-.18,163.35h.1c28.85,0,50.32,21.56,50.29,51a47,47,0,0,1-14,33.55l29.69,0,.26-225.58Z"/>
<path class="text-primary" d="M292,308.65l51.38-71.83,14,0-.1,95.62H359c9.66-6.57,27.65-13.57,48.26-13.55C463.4,319,505,349.75,504.93,441c-.09,75.44-44.45,132.85-126.91,132.76-40.79,0-65.35-6.22-86.39-15.89ZM439.13,446.17c.06-55.27-19.22-72.83-47.73-72.87-15.35,0-27.2,6.11-33.35,13.13l-.15,131.14c7.46,2.64,15.79,3.53,25,3.54C418,521.15,439.07,498.8,439.13,446.17Z"/>
<path class="text-primary" d="M692.71,384.17c-8.77-1.77-19.73-2.22-28.5-2.23-20.62,0-43.43,7.85-57.92,19.68l-.19,168-65.79-.08.28-247.81,51.75,0,13.56,36.42h1.75c10.12-24.12,31.63-41.64,64.09-41.6a103.09,103.09,0,0,1,21,2.22Z"/>
<path class="text-primary" d="M883.49,399.73l-.11,99.13c0,14,5.24,20.18,17.09,20.2h7l-.05,45.62c-10.53,6.57-21.94,8.31-32.9,8.3-23.69,0-37.27-11.45-44.71-26.81h-1.75c-9.23,12.27-27.67,27.6-63.2,27.56-48.24-.05-73.21-33-73.17-68.5.07-57,51.41-83.28,129.48-79.25l0-19.3c0-27.63-15.31-36-35.48-36-23.69,0-36.42,13.55-42.58,28L696.25,364c9.66-13.59,34.26-46.46,89.09-46.4C848.5,317.67,883.56,339.64,883.49,399.73Zm-62.36,71c-43.42-3.12-64.92,6.95-64.94,28.44,0,14,9.62,24.13,26.72,24.15,16.23,0,30.71-7.42,38.18-17.5Z"/>
</svg>
</a>
@@ -0,0 +1,9 @@
<div class="min-h-screen flex flex-col sm:justify-center items-center pt-6 sm:pt-0 bg-gray-100 dark:bg-gray-900">
<div>
{{ $logo }}
</div>
<div class="w-full sm:max-w-md mt-6 px-6 py-4 bg-white dark:bg-gray-800 shadow-md overflow-hidden sm:rounded-lg">
{{ $slot }}
</div>
</div>
@@ -0,0 +1,17 @@
@props(['id' => null, 'maxWidth' => null])
<x-modal :id="$id" :maxWidth="$maxWidth" {{ $attributes }}>
<div class="px-6 py-4">
<div class="text-lg font-medium text-gray-900 dark:text-gray-100">
{{ $title }}
</div>
<div class="mt-4 text-sm text-gray-600 dark:text-gray-400">
{{ $content }}
</div>
</div>
<div class="flex flex-row justify-end px-6 py-4 text-end">
{{ $footer }}
</div>
</x-modal>
@@ -0,0 +1,10 @@
@props(['on'])
<div x-data="{ shown: false, timeout: null }"
x-init="@this.on('{{ $on }}', () => { clearTimeout(timeout); shown = true; timeout = setTimeout(() => { shown = false }, 2000); })"
x-show.transition.out.opacity.duration.1500ms="shown"
x-transition:leave.opacity.duration.1500ms
style="display: none;"
{{ $attributes->merge(['class' => 'text-sm text-gray-600 dark:text-gray-400']) }}>
{{ $slot->isEmpty() ? 'Saved.' : $slot }}
</div>
@@ -0,0 +1,12 @@
<div {{ $attributes->merge(['class' => 'md:grid md:grid-cols-3 md:gap-6']) }}>
<x-forms.section-title>
<x-slot name="title">{{ $title }}</x-slot>
<x-slot name="description">{{ $description }}</x-slot>
</x-forms.section-title>
<div class="mt-5 md:mt-0 md:col-span-2">
<div class="px-4 py-5 sm:p-6 bg-white dark:bg-gray-800 shadow sm:rounded-lg">
{{ $content }}
</div>
</div>
</div>
@@ -0,0 +1,48 @@
@props(['title' => __('Confirm Password'), 'content' => __('For your security, please confirm your password to continue.'), 'button' => __('Confirm')])
@php
$confirmableId = md5($attributes->wire('then'));
@endphp
<span
{{ $attributes->wire('then') }}
x-data
x-ref="span"
x-on:click="$wire.startConfirmingPassword('{{ $confirmableId }}')"
x-on:password-confirmed.window="setTimeout(() => $event.detail.id === '{{ $confirmableId }}' && $refs.span.dispatchEvent(new CustomEvent('then', { bubbles: false })), 250);"
>
{{ $slot }}
</span>
@once
<x-dialog-modal wire:model.live="confirmingPassword">
<x-slot name="title">
{{ $title }}
</x-slot>
<x-slot name="content">
{{ $content }}
<div class="mt-4" x-data="{}" x-on:confirming-password.window="setTimeout(() => $refs.confirmable_password.focus(), 250)">
<x-input type="password" class="mt-1 block w-3/4" placeholder="{{ __('Password') }}" autocomplete="current-password"
x-ref="confirmable_password"
wire:model="confirmablePassword"
wire:keydown.enter="confirmPassword"
error-field="confirmable_password"
/>
</div>
</x-slot>
<x-slot name="footer">
<x-button class="btn-outline" wire:click="stopConfirmingPassword" wire:loading.attr="disabled">
{{ __('Cancel') }}
</x-button>
<x-button type="submit" class="ms-3" dusk="confirm-password-button" wire:click="confirmPassword" wire:loading.attr="disabled">
{{ $button }}
</x-button>
</x-slot>
</x-dialog-modal>
@endonce
@@ -0,0 +1,24 @@
@props(['submit'])
<div {{ $attributes->merge(['class' => 'md:grid md:grid-cols-3 md:gap-6']) }}>
<x-forms.section-title>
<x-slot name="title">{{ $title }}</x-slot>
<x-slot name="description">{{ $description }}</x-slot>
</x-forms.section-title>
<div class="mt-5 md:mt-0 md:col-span-2">
<form wire:submit="{{ $submit }}">
<div class="px-4 py-5 bg-white dark:bg-gray-800 sm:p-6 shadow {{ isset($actions) ? 'sm:rounded-tl-md sm:rounded-tr-md' : 'sm:rounded-md' }}">
<div class="grid grid-cols-6 gap-6">
{{ $form }}
</div>
</div>
@if (isset($actions))
<div class="flex items-center justify-end px-4 py-3 bg-gray-50 dark:bg-gray-800 text-end sm:px-6 shadow sm:rounded-bl-md sm:rounded-br-md">
{{ $actions }}
</div>
@endif
</form>
</div>
</div>
@@ -0,0 +1,13 @@
<div class="md:col-span-1 flex justify-between">
<div class="px-4 sm:px-0">
<h3 class="text-lg font-medium text-gray-900 dark:text-gray-100">{{ $title }}</h3>
<p class="mt-1 text-sm text-gray-600 dark:text-gray-400">
{{ $description }}
</p>
</div>
<div class="px-4 sm:px-0">
{{ $aside ?? '' }}
</div>
</div>
@@ -0,0 +1,40 @@
<div class="bg-base-100 border-base-300 border-b sticky top-0 z-10">
<div class="flex justify-between items-center px-6 py-5 mx-auto">
<div class="flex-1 flex items-center">
<label for="main-drawer" class="lg:hidden mr-3">
<x-icon name="o-bars-3" class="cursor-pointer" />
</label>
<x-application-logo style="height:1.3em" />
</div>
<div class="flex flex-grow gap-4 w-50">
<x-spotlight
shortcut="slash"
search-text="{{ __('Search holdings, portfolios, or anything else...') }}"
no-results-text="{{ __('Darn! Nothing found for that search.') }}"
/>
<x-button
icon="o-magnifying-glass"
@click.stop="$dispatch('mary-search-open')"
class="btn-sm"
>
<x-slot:label>
@lang('Press :key to search', ['key' => '<kbd class="kbd kbd-sm">/</kbd>'])
</x-slot:label>
</x-button>
</div>
<div class="flex items-center gap-4">
<x-theme-toggle
title="{{ __('Toggle Theme') }}"
class="btn-circle btn-ghost btn-sm"
darkTheme="dark" lightTheme="nord"
/>
</div>
</div>
</div>
@@ -0,0 +1,45 @@
<x-menu activate-by-route>
<x-menu-item title="{{ __('Dashboard') }}" icon="o-home" link="{{ @route('dashboard') }}" />
<x-menu-sub title="{{ __('Portfolios') }}" icon="o-document-duplicate">
@foreach (auth()->user()->portfolios as $portfolio)
<x-menu-item title="{{ $portfolio->title }}" icon="o-document" link="{{ route('portfolio.show', ['portfolio' => $portfolio->id ]) }}" />
@endforeach
<x-menu-item title="{{ __('Create Portfolio') }}" icon="o-document-plus" link="{{ @route('portfolio.create') }}" />
</x-menu-sub>
<x-menu-item title="{{ __('Transactions') }}" icon="o-banknotes" link="####" />
<x-menu-item title="{{ __('Reporting') }}" icon="o-chart-bar-square" link="####" />
</x-menu>
</div>
<div class="p-4">
<x-menu-separator />
@php
$user = auth()->user();
@endphp
<x-list-item :item="$user" avatar="profile_photo_url" value="name" sub-value="email" no-separator no-hover class="-mx-2 !-my-2 rounded">
<x-slot:actions>
<x-dropdown>
<x-slot:trigger>
<x-button icon="o-cog-6-tooth" class="btn-circle btn-ghost btn-xs" />
</x-slot:trigger>
<x-menu-item title="{{ __('Manage Profile') }}" icon="o-user" link="{{ @route('profile.show') }}" />
<x-menu-item title="{{ __('Import / Export Data') }}" icon="o-cloud-arrow-down" link="{{ @route('profile.show') }}" />
<x-menu-separator />
<x-menu-item title="{{ __('Logout') }}" icon="o-power" onclick="event.preventDefault(); document.getElementById('logout').submit();" />
<form id="logout" action="{{ route('logout') }}" method="POST" style="display: none;">
{{ csrf_field() }}
</form>
</x-dropdown>
</x-slot:actions>
</x-list-item>
@@ -0,0 +1,6 @@
<div class="hidden sm:block">
<div {{ $attributes->merge(['class' => 'py-8']) }}>
<div class="border-t border-gray-200 dark:border-gray-700"></div>
</div>
</div>