From eb11298d24c67c0cc6ab644b29cb9167536e04b0 Mon Sep 17 00:00:00 2001 From: salam Date: Tue, 3 Feb 2026 10:57:50 +0100 Subject: [PATCH] design wip --- .../Resources/Events/Tables/EventsTable.php | 1 - app/Filament/Tables/Columns/TooltipOdds.php | 18 +- app/Livewire/AlarmBookmaker.php | 2 +- app/Livewire/ComparingBookmakerMenu.php | 2 +- app/Livewire/MapperLeft.php | 14 +- app/Livewire/MapperRight.php | 16 +- app/Livewire/MultilineBookmaker.php | 17 +- app/Livewire/SportSwitcher.php | 11 + app/Livewire/TopMenuItems.php | 6 +- composer.json | 3 +- composer.lock | 198 +++++++++++++++--- .../better-options/better-options.css | 1 + .../components/better-checkbox.js | 140 +++++++++++++ resources/css/filament/admin/theme.css | 20 ++ .../views/components/sport-header.blade.php | 19 ++ .../events/widgets/alarm-widget.blade.php | 5 +- .../tables/columns/column-odds.blade.php | 6 +- .../views/livewire/alarm-bookmaker.blade.php | 4 + .../comparing-bookmaker-menu.blade.php | 5 + .../livewire/multiline-bookmaker.blade.php | 4 + .../views/livewire/partner-programm.blade.php | 3 - .../views/livewire/top-menu-items.blade.php | 4 +- 22 files changed, 418 insertions(+), 81 deletions(-) create mode 100644 public/css/tonegabes/better-options/better-options.css create mode 100644 public/js/tonegabes/better-options/components/better-checkbox.js create mode 100644 resources/views/components/sport-header.blade.php delete mode 100644 resources/views/livewire/partner-programm.blade.php diff --git a/app/Filament/Resources/Events/Tables/EventsTable.php b/app/Filament/Resources/Events/Tables/EventsTable.php index a0b9e54c..54a5caab 100644 --- a/app/Filament/Resources/Events/Tables/EventsTable.php +++ b/app/Filament/Resources/Events/Tables/EventsTable.php @@ -147,7 +147,6 @@ class EventsTable ->visible(fn () => in_array('odds_totals_q1', self::$bettype_settings)) ->verticalAlignment(VerticalAlignment::Start) ->alignCenter() - ->width(250) ->label('Totals Q1'), TooltipOdds::make('points_q1')->bettype('odds_points_q1')->label('')->visible(fn () => in_array('odds_points_q1', self::$bettype_settings)), diff --git a/app/Filament/Tables/Columns/TooltipOdds.php b/app/Filament/Tables/Columns/TooltipOdds.php index b3319fa7..ac725c6d 100644 --- a/app/Filament/Tables/Columns/TooltipOdds.php +++ b/app/Filament/Tables/Columns/TooltipOdds.php @@ -195,9 +195,9 @@ class TooltipOdds extends Column public function getFlags($flags) { if ($flags) { - return '
✓
'; + return '
✓
'; } else { - return '
⚠
'; + return '
⚠
'; } } @@ -208,9 +208,9 @@ class TooltipOdds extends Column public function legend() { - $part = '
'; - $part .= '
Highest
'; - $part .= '
Lowest
'; + $part = '
'; + $part .= '
Highest
'; + $part .= '
Lowest
'; $part .= '
'; return $part; @@ -270,15 +270,15 @@ class TooltipOdds extends Column if ($this->size > $this->two_cols_break) { if ($columns == 6) { - $part = '
'; + $part = '
'; } else { - $part = '
'; + $part = '
'; } } else { if ($columns == 6) { - $part = '
'; + $part = '
'; } else { - $part = '
'; + $part = '
'; } } $part .= '
'.$title.'
'; diff --git a/app/Livewire/AlarmBookmaker.php b/app/Livewire/AlarmBookmaker.php index 07984949..30198d1b 100644 --- a/app/Livewire/AlarmBookmaker.php +++ b/app/Livewire/AlarmBookmaker.php @@ -29,7 +29,7 @@ class AlarmBookmaker extends Component implements HasActions, HasSchemas, HasTab use InteractsWithTable; protected $listeners = [ - 'reload_alarm_bookmaker' => '$refresh', + 'refreshlarmBookmaker' => '$refresh', ]; public static $default_filter; diff --git a/app/Livewire/ComparingBookmakerMenu.php b/app/Livewire/ComparingBookmakerMenu.php index 38c22913..73ed0b55 100644 --- a/app/Livewire/ComparingBookmakerMenu.php +++ b/app/Livewire/ComparingBookmakerMenu.php @@ -34,7 +34,7 @@ class ComparingBookmakerMenu extends Component implements HasActions, HasSchemas public $user; protected $listeners = [ - 'refresh_comparing_bookmaker' => '$refresh', + 'refreshComparingBookmakerMenu' => '$refresh', ]; public function table(Table $table): Table diff --git a/app/Livewire/MapperLeft.php b/app/Livewire/MapperLeft.php index 0bc6ee69..92b57931 100644 --- a/app/Livewire/MapperLeft.php +++ b/app/Livewire/MapperLeft.php @@ -45,7 +45,7 @@ class MapperLeft extends Component implements HasActions, HasSchemas, HasTable public $user; protected $listeners = [ - 'reload_data_left' => '$refresh', + 'refreshMapperLeft' => '$refresh', ]; public function removeTableFilter(string $filterName, ?string $field = null, bool $shouldTriggerUpdatedFiltersHook = true): void @@ -62,7 +62,7 @@ class MapperLeft extends Component implements HasActions, HasSchemas, HasTable $this->search_left = ''; } - $this->dispatch('reload_data_left'); + $this->dispatch('refreshMapperLeft'); } public function table(Table $table): Table @@ -152,7 +152,7 @@ class MapperLeft extends Component implements HasActions, HasSchemas, HasTable ->persistFiltersInSession() ->deferFilters(false) ->toolbarActions([ - Action::make('reload_data_left') + Action::make('refreshMapperLeft') ->hiddenLabel() ->icon('phosphor-x') ->color('danger') @@ -162,7 +162,7 @@ class MapperLeft extends Component implements HasActions, HasSchemas, HasTable $this->tableSearch = ''; // Clears the main search bar $livewire->fill(['tableSearch' => '']); $livewire->resetTableFiltersForm(); // Clears all filters - $this->dispatch('reload_data_left'); + $this->dispatch('refreshMapperLeft'); }), ]); } @@ -177,7 +177,7 @@ class MapperLeft extends Component implements HasActions, HasSchemas, HasTable { $this->search_left = $str; - $this->dispatch('reload_data_left'); + $this->dispatch('refreshMapperLeft'); } public function leftAction(): Action @@ -196,8 +196,8 @@ class MapperLeft extends Component implements HasActions, HasSchemas, HasTable StoreMapped::store($arguments, $this->elements_swopped); $this->search_right = ''; $this->search_left = ''; - $this->dispatch('reload_data_left'); - $this->dispatch('reload_data_right'); + $this->dispatch('refreshMapperLeft'); + $this->dispatch('refreshMapperRight'); }) ->closeModalByEscaping(false) diff --git a/app/Livewire/MapperRight.php b/app/Livewire/MapperRight.php index 05047312..9f2a58f1 100644 --- a/app/Livewire/MapperRight.php +++ b/app/Livewire/MapperRight.php @@ -42,7 +42,7 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable public $search_right = false; protected $listeners = [ - 'reload_data_right' => '$refresh', + 'refreshMapperRight' => '$refresh', ]; public $user; @@ -61,7 +61,7 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable $this->search_right = ''; } - $this->dispatch('reload_data_right'); + $this->dispatch('refreshMapperRight'); } public function table(Table $table): Table @@ -165,7 +165,7 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable ->filtersFormColumns(3) ->deferFilters(false) ->toolbarActions([ - Action::make('reload_data_right') + Action::make('refreshMapperRight') ->hiddenLabel() ->icon('phosphor-x') ->color('danger') @@ -175,8 +175,8 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable $this->tableSearch = ''; // Clears the main search bar $livewire->fill(['tableSearch' => '']); $livewire->resetTableFiltersForm(); // Clears all filters - $this->dispatch('reload_data_right'); - $this->dispatch('reload_data_left'); + $this->dispatch('refreshMapperRight'); + $this->dispatch('refreshMapperLeft'); }), ]); } @@ -191,7 +191,7 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable { $this->search_right = $str; - $this->dispatch('reload_data_right'); + $this->dispatch('refreshMapperRight'); } public function rightAction(): Action @@ -209,8 +209,8 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable StoreMapped::store($arguments, $this->elements_swopped); $this->search_right = ''; $this->search_left = ''; - $this->dispatch('reload_data_left'); - $this->dispatch('reload_data_right'); + $this->dispatch('refreshMapperLeft'); + $this->dispatch('refreshMapperRight'); }) ->closeModalByEscaping(false) ->modalCloseButton(false) diff --git a/app/Livewire/MultilineBookmaker.php b/app/Livewire/MultilineBookmaker.php index d70cf583..1a32a6a8 100644 --- a/app/Livewire/MultilineBookmaker.php +++ b/app/Livewire/MultilineBookmaker.php @@ -6,7 +6,6 @@ use App\Filament\Tables\Columns\BookmakerIcon; use App\Models\Bookmaker; use App\Models\MultilineClient; use App\Models\MultilineSetting; -use App\Models\User; use Filament\Actions\Concerns\InteractsWithActions; use Filament\Actions\Contracts\HasActions; use Filament\Forms\Components\Radio; @@ -32,18 +31,13 @@ class MultilineBookmaker extends Component implements HasActions, HasSchemas, Ha use InteractsWithTable; protected $listeners = [ - 'reload_bookmaker_multiline' => '$refresh', + 'refreshMultilineBookmaker' => '$refresh', ]; - public $user; - public function table(Table $table): Table { - - $this->user = User::getUser(); - return $table - ->query(MultilineClient::query()->where('client_bookmaker_id', $this->user->bookmaker_id)->where('sport_id', $this->user->sport_id)) + ->query(MultilineClient::query()->where('client_bookmaker_id', auth()->user()->bookmaker_id)->where('sport_id', auth()->user()->sport_id)) ->paginated(false) ->columns([ IconColumn::make('sport.icon') @@ -62,7 +56,7 @@ class MultilineBookmaker extends Component implements HasActions, HasSchemas, Ha $table = MultilineSetting::where('id', $livewire->tableFilters['multiline_setting_id'])->value('table'); $bookies = DB::table($table) - ->where('sport_id', $this->user->sport_id) + ->where('sport_id', auth()->user()->sport_id) ->groupBy('bookmaker_id')->pluck('bookmaker_id'); $res = Bookmaker::whereIn('id', $bookies)->pluck('name', 'id'); @@ -81,12 +75,13 @@ class MultilineBookmaker extends Component implements HasActions, HasSchemas, Ha Filter::make('multiline_setting_id') ->schema([ Radio::make('multiline_setting_id') + ->extraAttributes(['id' => 'multiline_setting']) ->inline() - ->default(1) + ->default(fn ($record) => MultilineSetting::where('sport_id', auth()->user()->sport_id)->pluck('id')->first()) ->columnSpan(6) ->columnSpanFull() ->hiddenLabel() - ->options(fn () => MultilineSetting::where('sport_id', $this->user->sport_id)->orderBy('name')->pluck('name', 'id')), + ->options(fn () => MultilineSetting::where('sport_id', auth()->user()->sport_id)->orderBy('name')->pluck('name', 'id')), ]) ->query(function (Builder $query, array $data): Builder { return $query diff --git a/app/Livewire/SportSwitcher.php b/app/Livewire/SportSwitcher.php index 35bfde92..6f7b5977 100644 --- a/app/Livewire/SportSwitcher.php +++ b/app/Livewire/SportSwitcher.php @@ -48,6 +48,17 @@ class SportSwitcher extends Component $this->dispatch('filterClearFilter'); $this->dispatch('refreshSportSwitcher'); + + $this->dispatch('refreshMultilineBookmaker'); + + $this->dispatch('refreshComparingBookmakerMenu'); + + $this->dispatch('refreshMapperLeft'); + + $this->dispatch('refreshMapperRight'); + + $this->dispatch('refreshlarmBookmaker'); + } public function render() diff --git a/app/Livewire/TopMenuItems.php b/app/Livewire/TopMenuItems.php index 691f7a4d..b352cc64 100644 --- a/app/Livewire/TopMenuItems.php +++ b/app/Livewire/TopMenuItems.php @@ -13,8 +13,8 @@ class TopMenuItems extends Component public $current = ''; protected $listeners = [ - 'reload_data_left' => '$refresh', - 'reload_data_right' => '$refresh', + 'refreshMapperLeft' => '$refresh', + 'refreshMapperRight' => '$refresh', ]; protected string $sport = ''; @@ -50,6 +50,6 @@ class TopMenuItems extends Component { User::where('id', auth()->user()->id)->update(['provider_id' => $provider_id]); - $this->dispatch('reload_data_right'); + $this->dispatch('refreshMapperRight'); } } diff --git a/composer.json b/composer.json index fe213890..40be5dc5 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,8 @@ "laravel/framework": "^12.0", "laravel/tinker": "^2.10.1", "outhebox/blade-flags": "^1.5", - "swisnl/filament-backgrounds": "^2.0" + "swisnl/filament-backgrounds": "^2.0", + "tonegabes/filament-better-options": "^1.2" }, "require-dev": { "barryvdh/laravel-debugbar": "^3.16", diff --git a/composer.lock b/composer.lock index 39ec3de7..926a4c70 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "872a298c0c1cebe00cac20f0cb2539f7", + "content-hash": "b1f96a36e577a5a502013fb033525720", "packages": [ { "name": "agencetwogether/hookshelper", @@ -543,16 +543,16 @@ }, { "name": "brick/math", - "version": "0.14.3", + "version": "0.14.4", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "6af96b11de3f7d99730c118c200418c48274edb4" + "reference": "a8b53e6cc4d3a336543f042a4dfa0e3f2f2356a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/6af96b11de3f7d99730c118c200418c48274edb4", - "reference": "6af96b11de3f7d99730c118c200418c48274edb4", + "url": "https://api.github.com/repos/brick/math/zipball/a8b53e6cc4d3a336543f042a4dfa0e3f2f2356a4", + "reference": "a8b53e6cc4d3a336543f042a4dfa0e3f2f2356a4", "shasum": "" }, "require": { @@ -591,7 +591,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.14.3" + "source": "https://github.com/brick/math/tree/0.14.4" }, "funding": [ { @@ -599,7 +599,7 @@ "type": "github" } ], - "time": "2026-02-01T15:18:05+00:00" + "time": "2026-02-02T16:57:31+00:00" }, { "name": "carbonphp/carbon-doctrine-types", @@ -2616,23 +2616,23 @@ }, { "name": "jaybizzle/crawler-detect", - "version": "v1.3.6", + "version": "v1.3.7", "source": { "type": "git", "url": "https://github.com/JayBizzle/Crawler-Detect.git", - "reference": "61f2ef1ad2d0ae922c265931cb0a8032a1ed2813" + "reference": "7f7a45b5d5df9c95ba6b2008544e6cf8e66de6f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/61f2ef1ad2d0ae922c265931cb0a8032a1ed2813", - "reference": "61f2ef1ad2d0ae922c265931cb0a8032a1ed2813", + "url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/7f7a45b5d5df9c95ba6b2008544e6cf8e66de6f5", + "reference": "7f7a45b5d5df9c95ba6b2008544e6cf8e66de6f5", "shasum": "" }, "require": { "php": ">=7.1.0" }, "require-dev": { - "phpunit/phpunit": "^4.8|^5.5|^6.5|^9.4" + "phpunit/phpunit": "^4.8|^5.5|^6.5|^7.5|^8.5|^9.4" }, "type": "library", "autoload": { @@ -2662,9 +2662,9 @@ ], "support": { "issues": "https://github.com/JayBizzle/Crawler-Detect/issues", - "source": "https://github.com/JayBizzle/Crawler-Detect/tree/v1.3.6" + "source": "https://github.com/JayBizzle/Crawler-Detect/tree/v1.3.7" }, - "time": "2025-09-30T16:22:43+00:00" + "time": "2026-02-02T19:15:54+00:00" }, { "name": "jenssegers/agent", @@ -4029,16 +4029,16 @@ }, { "name": "livewire/livewire", - "version": "v3.7.6", + "version": "v3.7.8", "source": { "type": "git", "url": "https://github.com/livewire/livewire.git", - "reference": "276ac156f6ae414990784854a2673e3d23c68b24" + "reference": "06ec7e8cd61bb01739b8f26396db6fe73b7e0607" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/livewire/zipball/276ac156f6ae414990784854a2673e3d23c68b24", - "reference": "276ac156f6ae414990784854a2673e3d23c68b24", + "url": "https://api.github.com/repos/livewire/livewire/zipball/06ec7e8cd61bb01739b8f26396db6fe73b7e0607", + "reference": "06ec7e8cd61bb01739b8f26396db6fe73b7e0607", "shasum": "" }, "require": { @@ -4093,7 +4093,7 @@ "description": "A front-end framework for Laravel.", "support": { "issues": "https://github.com/livewire/livewire/issues", - "source": "https://github.com/livewire/livewire/tree/v3.7.6" + "source": "https://github.com/livewire/livewire/tree/v3.7.8" }, "funding": [ { @@ -4101,7 +4101,7 @@ "type": "github" } ], - "time": "2026-01-23T05:41:38+00:00" + "time": "2026-02-03T02:57:56+00:00" }, { "name": "masterminds/html5", @@ -9054,6 +9054,136 @@ }, "time": "2025-12-02T11:56:42+00:00" }, + { + "name": "tonegabes/filament-better-options", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/tonegabes/filament-better-options.git", + "reference": "6314bdf052108e19970f6f3e6885e05bb8801b5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tonegabes/filament-better-options/zipball/6314bdf052108e19970f6f3e6885e05bb8801b5f", + "reference": "6314bdf052108e19970f6f3e6885e05bb8801b5f", + "shasum": "" + }, + "require": { + "filament/forms": "^4.0", + "php": "^8.3", + "spatie/laravel-package-tools": "^1.15.0", + "tonegabes/filament-phosphor-icons": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.86", + "larastan/larastan": "^3.0", + "laravel/pint": "^1.0", + "phpstan/phpstan-deprecation-rules": "^2.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "ToneGabes\\BetterOptions\\BetterOptionsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "ToneGabes\\BetterOptions\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tone Gabes", + "email": "tonegabes@gmail.com", + "homepage": "https://tonegabes.com", + "role": "Developer" + } + ], + "description": "Filament form components for better radio and checkbox options.", + "homepage": "https://github.com/tonegabes/filament-better-options", + "keywords": [ + "Forms", + "checkbox", + "filament", + "laravel", + "php", + "plugin", + "tonegabes" + ], + "support": { + "issues": "https://github.com/tonegabes/filament-better-options/issues", + "source": "https://github.com/tonegabes/filament-better-options" + }, + "time": "2025-10-22T19:20:56+00:00" + }, + { + "name": "tonegabes/filament-phosphor-icons", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/tonegabes/filament-phosphor-icons.git", + "reference": "f654722dee534ccddd005e667a73e8e64cb412cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tonegabes/filament-phosphor-icons/zipball/f654722dee534ccddd005e667a73e8e64cb412cc", + "reference": "f654722dee534ccddd005e667a73e8e64cb412cc", + "shasum": "" + }, + "require": { + "codeat3/blade-phosphor-icons": "^2.3", + "filament/filament": "^4.0", + "php": "^8.1" + }, + "require-dev": { + "laravel/pint": "^1.22" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "ToneGabes\\Filament\\Icons\\PhosphorIconsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "ToneGabes\\Filament\\Icons\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tone Gabes", + "email": "tonegabes@gmail.com", + "homepage": "https://tonegabes.com", + "role": "Developer" + } + ], + "description": "Phosphor Icons Pack ready for Filament 4", + "keywords": [ + "Iconset", + "Phosphor", + "filament", + "icons", + "laravel", + "library" + ], + "support": { + "issues": "https://github.com/tonegabes/filament-phosphor-icons/issues", + "source": "https://github.com/tonegabes/filament-phosphor-icons/tree/1.2.1" + }, + "time": "2025-09-12T18:24:34+00:00" + }, { "name": "ueberdosis/tiptap-php", "version": "2.1.0", @@ -11270,28 +11400,28 @@ }, { "name": "phpunit/php-file-iterator", - "version": "5.1.0", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6" + "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/118cfaaa8bc5aef3287bf315b6060b1174754af6", - "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/2f3a64888c814fc235386b7387dd5b5ed92ad903", + "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^11.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -11319,15 +11449,27 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.0" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.1" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", + "type": "tidelift" } ], - "time": "2024-08-27T05:02:59+00:00" + "time": "2026-02-02T13:52:54+00:00" }, { "name": "phpunit/php-invoker", diff --git a/public/css/tonegabes/better-options/better-options.css b/public/css/tonegabes/better-options/better-options.css new file mode 100644 index 00000000..c964c54f --- /dev/null +++ b/public/css/tonegabes/better-options/better-options.css @@ -0,0 +1 @@ +/*! tailwindcss v4.1.15 | MIT License | https://tailwindcss.com */@layer theme, base, components, utilities;@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-300:oklch(80.8% 0.114 19.571);--color-red-500:oklch(63.7% 0.237 25.331);--color-sky-400:oklch(74.6% 0.16 232.661);--color-gray-50:oklch(98.5% 0.002 247.839);--color-gray-100:oklch(96.7% 0.003 264.542);--color-gray-200:oklch(92.8% 0.006 264.531);--color-gray-300:oklch(87.2% 0.01 258.338);--color-gray-400:oklch(70.7% 0.022 261.325);--color-gray-500:oklch(55.1% 0.027 264.364);--color-gray-600:oklch(44.6% 0.03 256.802);--color-gray-700:oklch(37.3% 0.034 259.733);--color-gray-800:oklch(27.8% 0.033 256.848);--color-gray-900:oklch(21% 0.034 264.665);--color-gray-950:oklch(13% 0.028 261.692);--color-black:#000;--color-white:#fff;--spacing:0.25rem;--breakpoint-sm:40rem;--breakpoint-md:48rem;--breakpoint-lg:64rem;--breakpoint-xl:80rem;--breakpoint-2xl:96rem;--container-3xs:16rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:0.75rem;--text-xs--line-height:calc(1 / 0.75);--text-sm:0.875rem;--text-sm--line-height:calc(1.25 / 0.875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-thin:100;--font-weight-extralight:200;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tighter:-0.05em;--tracking-tight:-0.025em;--leading-loose:2;--radius-md:0.375rem;--radius-lg:0.5rem;--radius-xl:0.75rem;--ease-in:cubic-bezier(0.4,0,1,1);--ease-out:cubic-bezier(0,0,0.2,1);--ease-in-out:cubic-bezier(0.4,0,0.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(0.4,0,0.6,1) infinite;--default-transition-duration:150ms;--default-transition-timing-function:cubic-bezier(0.4,0,0.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary-50:var(--color-primary-50);--color-primary-100:var(--color-primary-100);--color-primary-200:var(--color-primary-200);--color-primary-300:var(--color-primary-300);--color-primary-400:var(--color-primary-400);--color-primary-500:var(--color-primary-500);--color-primary-600:var(--color-primary-600);--color-primary-700:var(--color-primary-700);--color-primary-800:var(--color-primary-800);--color-primary-900:var(--color-primary-900);--color-primary-950:var(--color-primary-950)}}@layer base{*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}::file-selector-button,button,input,optgroup,select,textarea{background-color:transparent;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::placeholder{color:currentcolor;@supports (color:color-mix(in lab,red,red)){&{color:color-mix(in oklab,currentcolor 50%,transparent)}}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}::file-selector-button,button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.static{position:static}.hidden{display:none}.select-all{-webkit-user-select:all;user-select:all}}.fi-fo-checkbox-list{display:flex;flex-direction:column;& .fi-fo-checkbox-list-search-input-wrp{margin-bottom:calc(var(--spacing) * 4)}& .fi-fo-checkbox-actions{margin-bottom:calc(var(--spacing) * 2)}& .fi-fo-checkbox-options{border-color:var(--color-gray-200);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;display:flex;flex-direction:column;--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,rgba(0,0,0,.05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);:where(&>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse))}:where(&>:not(:last-child)){border-color:var(--color-gray-200)}@media (prefers-color-scheme:dark){:where(&>:not(:last-child)){border-color:var(--color-gray-800)}}@media (prefers-color-scheme:dark){border-color:var(--color-gray-800)}& .fi-fo-checkbox-option:first-child{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}& .fi-fo-checkbox-option:last-child{border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}& .fi-fo-checkbox-option{align-items:center;cursor:pointer;display:flex;gap:calc(var(--spacing) * 3);padding:calc(var(--spacing) * 4);&:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-primary-500)}& .fi-fo-checkbox-option__indicator{flex-shrink:0;height:calc(var(--spacing) * 5);width:calc(var(--spacing) * 5);fill:var(--color-gray-400);transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));--tw-duration:400ms;transition-duration:.4s;--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}& .fi-fo-checkbox-option__icon{color:var(--color-gray-400);flex-shrink:0;height:calc(var(--spacing) * 10);width:calc(var(--spacing) * 10);@media (prefers-color-scheme:dark){color:var(--color-gray-700)}}& .fi-checkbox-input{flex-shrink:0}& .fi-fo-checkbox-option__content{align-items:center;display:flex;flex-grow:1;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));& .fi-fo-checkbox-option__header{display:flex;flex-direction:column;flex-grow:1}& .fi-fo-checkbox-option__label{overflow:hidden;--tw-font-weight:var(--font-weight-medium);color:var(--color-gray-950);font-weight:var(--font-weight-medium);overflow-wrap:break-word;@media (prefers-color-scheme:dark){color:var(--color-white)}}& .fi-fo-checkbox-option__description{color:var(--color-gray-500);@media (prefers-color-scheme:dark){color:var(--color-gray-400)}}& .fi-fo-checkbox-option__extra{--tw-font-weight:var(--font-weight-medium);color:var(--color-gray-900);font-weight:var(--font-weight-medium);@media (prefers-color-scheme:dark){color:var(--color-gray-50)}}}&.fi-invalid{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-red-300);& .fi-fo-checkbox-option__indicator{fill:var(--color-red-500)}}&.is-selected{background-color:var(--color-primary-500);@supports (color:color-mix(in lab,red,red)){&{background-color:color-mix(in oklab,var(--color-primary-500) 10%,transparent)}}--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-primary-500);& .fi-fo-checkbox-option__indicator{fill:var(--color-primary-500)}& .fi-fo-checkbox-option__icon{color:var(--color-primary-500)}}}}& .fi-fo-checkbox-list-no-search-results-message{color:var(--color-gray-500);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));@media (prefers-color-scheme:dark){color:var(--color-gray-400)}}}.fi-fo-checkbox-card{display:grid;& .fi-fo-checkbox-list-search-input-wrp{margin-bottom:calc(var(--spacing) * 4)}& .fi-fo-checkbox-actions{margin-bottom:calc(var(--spacing) * 2)}& .fi-fo-checkbox-options{gap:calc(var(--spacing) * 2);&.fi-grid-direction-col{&>.fi-fo-checkbox-option{break-inside:avoid}}& .fi-fo-checkbox-option{border-color:var(--color-gray-200);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;cursor:pointer;display:flex;gap:calc(var(--spacing) * 3);padding:calc(var(--spacing) * 4);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,rgba(0,0,0,.05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));--tw-duration:200ms;transition-duration:.2s;--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out);@media (prefers-color-scheme:dark){border-color:var(--color-gray-800)}&:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-primary-500)}&:hover:not(.is-selected){background-color:var(--color-gray-50);scale:1.02;transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);@media (prefers-color-scheme:dark){background-color:color-mix(in srgb,#fff 5%,transparent);@supports (color:color-mix(in lab,red,red)){&{background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}}}& .fi-fo-checkbox-option__indicator{flex-shrink:0;height:calc(var(--spacing) * 5);margin-top:calc(var(--spacing) * 1);width:calc(var(--spacing) * 5);fill:var(--color-gray-400);transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));--tw-duration:400ms;transition-duration:.4s;--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}& .fi-fo-checkbox-option__icon{color:var(--color-gray-400);flex-shrink:0;height:calc(var(--spacing) * 10);margin-top:calc(var(--spacing) * 1);width:calc(var(--spacing) * 10);@media (prefers-color-scheme:dark){color:var(--color-gray-700)}}& .fi-checkbox-input{flex-shrink:0;margin-top:calc(var(--spacing) * 1)}& .fi-fo-checkbox-option__content{display:grid;flex-grow:1;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6);& .fi-fo-checkbox-option__header{display:flex;flex-direction:column;flex-grow:1}& .fi-fo-checkbox-option__label{overflow:hidden;--tw-font-weight:var(--font-weight-medium);color:var(--color-gray-950);font-weight:var(--font-weight-medium);overflow-wrap:break-word;@media (prefers-color-scheme:dark){color:var(--color-white)}}& .fi-fo-checkbox-option__description{color:var(--color-gray-500);@media (prefers-color-scheme:dark){color:var(--color-gray-400)}}& .fi-fo-checkbox-option__extra{margin-top:calc(var(--spacing) * 4);--tw-font-weight:var(--font-weight-medium);color:var(--color-gray-900);font-weight:var(--font-weight-medium);@media (prefers-color-scheme:dark){color:var(--color-gray-50)}}}&.is-centered{align-items:center;& .fi-fo-checkbox-option__content{align-items:center;display:flex;gap:calc(var(--spacing) * 2)}& .fi-fo-checkbox-option__extra,& .fi-fo-checkbox-option__icon,& .fi-fo-checkbox-option__indicator{margin-top:calc(var(--spacing) * 0)}}&.fi-invalid{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-red-300);& .fi-fo-checkbox-option__indicator{fill:var(--color-red-500)}}&.is-selected{background-color:var(--color-primary-500);@supports (color:color-mix(in lab,red,red)){&{background-color:color-mix(in oklab,var(--color-primary-500) 10%,transparent)}}--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-primary-500);& .fi-fo-checkbox-option__indicator{fill:var(--color-primary-500)}& .fi-fo-checkbox-option__icon{color:var(--color-primary-500)}}}}& .fi-fo-checkbox-list-no-search-results-message{color:var(--color-gray-500);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));@media (prefers-color-scheme:dark){color:var(--color-gray-400)}}}.fi-fo-radio-list{border-color:var(--color-gray-200);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;display:flex;flex-direction:column;--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,rgba(0,0,0,.05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);:where(&>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse))}:where(&>:not(:last-child)){border-color:var(--color-gray-200)}@media (prefers-color-scheme:dark){:where(&>:not(:last-child)){border-color:var(--color-gray-800)}}@media (prefers-color-scheme:dark){border-color:var(--color-gray-800)}& .fi-grid-direction-col{& .fi-fo-radio-item{break-inside:avoid}}& .fi-fo-radio-item:first-child{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}& .fi-fo-radio-item:last-child{border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}& .fi-fo-radio-item{align-items:center;cursor:pointer;display:flex;gap:calc(var(--spacing) * 4);justify-content:space-between;padding:calc(var(--spacing) * 4);&:hover{@media (hover:hover){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}&:hover{@media (hover:hover){--tw-ring-color:var(--color-primary-500)}}& .fi-fo-radio-item__icon{flex-shrink:0;height:calc(var(--spacing) * 10);width:calc(var(--spacing) * 10);fill:var(--color-gray-400);@media (prefers-color-scheme:dark){fill:color-mix(in srgb,#fff 30%,transparent);@supports (color:color-mix(in lab,red,red)){&{fill:color-mix(in oklab,var(--color-white) 30%,transparent)}}}}& .fi-fo-radio-item__content{align-items:center;display:flex;flex-grow:1;gap:calc(var(--spacing) * 4)}& .fi-fo-radio-item__label{--tw-font-weight:var(--font-weight-medium);color:var(--color-gray-900);font-weight:var(--font-weight-medium);@media (prefers-color-scheme:dark){color:var(--color-gray-50)}}& .fi-fo-radio-item__description{margin-top:calc(var(--spacing) * -1);--tw-font-weight:var(--font-weight-normal);color:var(--color-gray-500);font-weight:var(--font-weight-normal);@media (prefers-color-scheme:dark){color:var(--color-gray-400)}}& .fi-fo-radio-item__extra{--tw-font-weight:var(--font-weight-medium);color:var(--color-black);font-weight:var(--font-weight-medium);@media (prefers-color-scheme:dark){color:var(--color-white)}}& .fi-fo-radio-item__indicator{flex-shrink:0;height:calc(var(--spacing) * 5);width:calc(var(--spacing) * 5);fill:var(--color-gray-400);transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));--tw-duration:400ms;transition-duration:.4s;--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}& .is-indicator-partially-hidden{opacity:0;&:is(:where(.group\/radio-item):hover *){@media (hover:hover){opacity:30%}}}& .fi-radio-input{flex-shrink:0}&.fi-invalid{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-red-300);& .fi-fo-radio-item__indicator{fill:var(--color-red-500)}}&.is-selected{background-color:var(--color-primary-500);@supports (color:color-mix(in lab,red,red)){&{background-color:color-mix(in oklab,var(--color-primary-500) 10%,transparent)}}--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-primary-500);& .fi-fo-radio-item__icon,& .fi-fo-radio-item__indicator{fill:var(--color-primary-500)}& .fi-fo-radio-item__indicator,& .is-indicator-partially-hidden{opacity:100%}}}}.fi-fo-radio-cards{display:grid;gap:calc(var(--spacing) * 3);&>.fi-grid-direction-col{&>.fi-fo-radio-card{break-inside:avoid}}& .fi-fo-radio-card{border-color:var(--color-gray-200);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;cursor:pointer;display:flex;gap:calc(var(--spacing) * 4);padding:calc(var(--spacing) * 4);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,rgba(0,0,0,.05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));--tw-duration:200ms;transition-duration:.2s;--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out);@media (prefers-color-scheme:dark){border-color:var(--color-gray-800)}&:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-primary-500)}&:hover:not(.is-selected){background-color:var(--color-gray-50);scale:1.02;transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);@media (prefers-color-scheme:dark){background-color:color-mix(in srgb,#fff 5%,transparent);@supports (color:color-mix(in lab,red,red)){&{background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}}}& .fi-fo-radio-card__indicator{flex-shrink:0;height:calc(var(--spacing) * 5);margin-top:calc(var(--spacing) * 1);width:calc(var(--spacing) * 5);fill:var(--color-gray-400);transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));--tw-duration:400ms;transition-duration:.4s;--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}& .fi-fo-radio-card__icon{flex-shrink:0;height:calc(var(--spacing) * 10);width:calc(var(--spacing) * 10);fill:var(--color-gray-400);@media (prefers-color-scheme:dark){fill:color-mix(in srgb,#fff 30%,transparent);@supports (color:color-mix(in lab,red,red)){&{fill:color-mix(in oklab,var(--color-white) 30%,transparent)}}}}& .fi-fo-radio-card__content{display:flex;flex-direction:column;flex-grow:1;gap:calc(var(--spacing) * 4);& .fi-fo-radio-card__label{--tw-font-weight:var(--font-weight-medium);color:var(--color-gray-900);font-weight:var(--font-weight-medium);@media (prefers-color-scheme:dark){color:var(--color-gray-50)}}& .fi-fo-radio-card__description{--tw-font-weight:var(--font-weight-normal);color:var(--color-gray-500);font-weight:var(--font-weight-normal);@media (prefers-color-scheme:dark){color:var(--color-gray-400)}}& .fi-fo-radio-card__extra{--tw-font-weight:var(--font-weight-medium);color:var(--color-gray-900);font-weight:var(--font-weight-medium);@media (prefers-color-scheme:dark){color:var(--color-gray-50)}}}& .is-indicator-partially-hidden{opacity:0;&:is(:where(.group\/radio-card):hover *){@media (hover:hover){opacity:30%}}}& .fi-radio-input{flex-shrink:0;margin-top:calc(var(--spacing) * 2)}&.is-centered{align-items:center;& .fi-radio-input{margin:calc(var(--spacing) * 0)}& .fi-fo-radio-card__indicator{margin-top:calc(var(--spacing) * 0)}& .fi-fo-radio-card__content{align-items:center;flex-direction:row}& .fi-fo-radio-card__header{flex-grow:1}}&.fi-invalid{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-red-300);& .fi-fo-radio-card__indicator{fill:var(--color-red-500)}}&.is-selected{background-color:var(--color-primary-500);scale:1.01;transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);@supports (color:color-mix(in lab,red,red)){&{background-color:color-mix(in oklab,var(--color-primary-500) 10%,transparent)}}--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-primary-500);& .fi-fo-radio-card__icon{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));--tw-duration:200ms;transition-duration:.2s}& .fi-fo-radio-card__icon,& .fi-fo-radio-card__indicator{fill:var(--color-primary-500)}& .fi-fo-radio-card__indicator,& .is-indicator-partially-hidden{opacity:100%}}&:has(input:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-primary-500);--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}}}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-leading{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(1turn)}}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial;--tw-font-weight:initial;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-leading:initial}}} \ No newline at end of file diff --git a/public/js/tonegabes/better-options/components/better-checkbox.js b/public/js/tonegabes/better-options/components/better-checkbox.js new file mode 100644 index 00000000..131ab300 --- /dev/null +++ b/public/js/tonegabes/better-options/components/better-checkbox.js @@ -0,0 +1,140 @@ +export default function checkboxListFormComponent({ livewireId }) { + return { + areAllCheckboxesChecked: false, + checkboxListOptions: [], + search: "", + visibleCheckboxListOptions: [], + + // Cache selectors for better performance + selectors: { + option: ".fi-fo-checkbox-option", + label: ".fi-fo-checkbox-option__label", + description: ".fi-fo-checkbox-option__description", + checkbox: "input[type=checkbox]", + checkedOrDisabled: + "input[type=checkbox]:checked, input[type=checkbox]:disabled", + }, + + init() { + this.cacheElements(); + this.bindEvents(); + + this.$nextTick(() => { + this.checkIfAllCheckboxesAreChecked(); + }); + }, + + cacheElements() { + this.checkboxListOptions = Array.from( + this.$root.querySelectorAll(this.selectors.option) + ); + this.updateVisibleCheckboxListOptions(); + }, + + bindEvents() { + // Livewire hook for updates + Livewire.hook("commit", ({ component, succeed }) => { + succeed(() => { + this.$nextTick(() => { + if (component.id !== livewireId) { + return; + } + this.cacheElements(); + this.checkIfAllCheckboxesAreChecked(); + }); + }); + }); + + // Debounced search watcher + this.$watch( + "search", + this.debounce(() => { + this.updateVisibleCheckboxListOptions(); + this.checkIfAllCheckboxesAreChecked(); + }, 150) + ); + }, + + // Simple debounce implementation + debounce(func, wait) { + let timeout; + return function executedFunction(...args) { + const later = () => { + clearTimeout(timeout); + func(...args); + }; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + }; + }, + + isFoundInSearch(checkboxItem) { + if (!this.search || this.search.trim() === "") { + return true; + } + + const searchTerm = this.search.toLowerCase(); + + // Cache elements to avoid repeated queries + const labelElement = checkboxItem.querySelector(this.selectors.label); + const descriptionElement = checkboxItem.querySelector( + this.selectors.description + ); + + const labelText = labelElement?.innerText?.toLowerCase() || ""; + const descriptionText = + descriptionElement?.innerText?.toLowerCase() || ""; + + return ( + labelText.includes(searchTerm) || descriptionText.includes(searchTerm) + ); + }, + + checkIfAllCheckboxesAreChecked() { + if (this.visibleCheckboxListOptions.length === 0) { + this.areAllCheckboxesChecked = false; + return; + } + + this.areAllCheckboxesChecked = + this.visibleCheckboxListOptions.length === + this.visibleCheckboxListOptions.filter((checkboxLabel) => + checkboxLabel.querySelector(this.selectors.checkedOrDisabled) + ).length; + }, + + toggleAllCheckboxes() { + this.checkIfAllCheckboxesAreChecked(); + const shouldCheck = !this.areAllCheckboxesChecked; + + // Batch DOM operations for better performance + const checkboxesToUpdate = []; + + this.visibleCheckboxListOptions.forEach((checkboxLabel) => { + const checkbox = checkboxLabel.querySelector(this.selectors.checkbox); + if (checkbox && !checkbox.disabled) { + checkboxesToUpdate.push(checkbox); + } + }); + + // Update all checkboxes at once + checkboxesToUpdate.forEach((checkbox) => { + checkbox.checked = shouldCheck; + checkbox.dispatchEvent(new Event("change")); + }); + + this.areAllCheckboxesChecked = shouldCheck; + }, + + updateVisibleCheckboxListOptions() { + if (!this.search || this.search.trim() === "") { + this.visibleCheckboxListOptions = [...this.checkboxListOptions]; + return; + } + + this.visibleCheckboxListOptions = this.checkboxListOptions.filter( + (checkboxListItem) => this.isFoundInSearch(checkboxListItem) + ); + }, + }; +} diff --git a/resources/css/filament/admin/theme.css b/resources/css/filament/admin/theme.css index aa553767..06fc05a6 100644 --- a/resources/css/filament/admin/theme.css +++ b/resources/css/filament/admin/theme.css @@ -19,6 +19,13 @@ button[wire\:click="resetTableFiltersForm"] { /* background-color: #0f172b; */ } +/* stripes in popups */ +@layer utilities { + .striped div:nth-child(even) { + @apply bg-gray-100 + } +} + /* .fi-ta-header-toolbar { @apply flex-row-reverse; } */ @@ -62,6 +69,19 @@ button[wire\:click="resetTableFiltersForm"] { } } +/* Styling Radio Boxes */ +#multiline_setting { + @apply !grid grid-cols-3 gap-5 mb-4 +} + +#multiline_setting input { + @apply checked:border-blue-500 +} + +#multiline_setting .fi-fo-radio-label { + @apply p-3 border border-gray-700 rounded-xl cursor-pointer has-checked:bg-blue-50 has-checked:text-blue-900 has-checked:ring-blue-200 dark:has-checked:bg-blue-950 dark:has-checked:text-blue-200 dark:has-checked:ring-blue-900 +} + #mapper_right .fi-ta-filter-indicators button, #mapper_left .fi-ta-filter-indicators button { display: none; diff --git a/resources/views/components/sport-header.blade.php b/resources/views/components/sport-header.blade.php new file mode 100644 index 00000000..365706ce --- /dev/null +++ b/resources/views/components/sport-header.blade.php @@ -0,0 +1,19 @@ +
+ @switch(auth()->user()->sport_id) + @case(1) + + @break + @case(1) + + @break + @case(3) + + @break + @case(4) + + @break + @default + + @endswitch +

{{ $slot }}

+
\ No newline at end of file diff --git a/resources/views/filament/resources/events/widgets/alarm-widget.blade.php b/resources/views/filament/resources/events/widgets/alarm-widget.blade.php index 6471c109..5d90a645 100644 --- a/resources/views/filament/resources/events/widgets/alarm-widget.blade.php +++ b/resources/views/filament/resources/events/widgets/alarm-widget.blade.php @@ -1,6 +1,5 @@ -
-
{{ $title }}
+
+
{{ $title }}
@if ($red)
diff --git a/resources/views/filament/tables/columns/column-odds.blade.php b/resources/views/filament/tables/columns/column-odds.blade.php index 4e6a67f8..3079ffe9 100644 --- a/resources/views/filament/tables/columns/column-odds.blade.php +++ b/resources/views/filament/tables/columns/column-odds.blade.php @@ -12,11 +12,9 @@ @endphp @if ($getColumns() == 2) -
+
@else -
+
@endif diff --git a/resources/views/livewire/alarm-bookmaker.blade.php b/resources/views/livewire/alarm-bookmaker.blade.php index c3fedc4a..af4e2de8 100644 --- a/resources/views/livewire/alarm-bookmaker.blade.php +++ b/resources/views/livewire/alarm-bookmaker.blade.php @@ -1,3 +1,7 @@
+ + {{ auth()->user()->sport->name }} Alarm Configuration + + {{ $this->table }}
diff --git a/resources/views/livewire/comparing-bookmaker-menu.blade.php b/resources/views/livewire/comparing-bookmaker-menu.blade.php index 68bcdf74..26399ea4 100644 --- a/resources/views/livewire/comparing-bookmaker-menu.blade.php +++ b/resources/views/livewire/comparing-bookmaker-menu.blade.php @@ -1,3 +1,8 @@
+ + + {{ auth()->user()->sport->name }} Comparing Bookmaker + + {{ $this->table }}
diff --git a/resources/views/livewire/multiline-bookmaker.blade.php b/resources/views/livewire/multiline-bookmaker.blade.php index c3fedc4a..0f82126e 100644 --- a/resources/views/livewire/multiline-bookmaker.blade.php +++ b/resources/views/livewire/multiline-bookmaker.blade.php @@ -1,3 +1,7 @@
+ + {{ auth()->user()->sport->name }} Multiline Configuration + + {{ $this->table }}
diff --git a/resources/views/livewire/partner-programm.blade.php b/resources/views/livewire/partner-programm.blade.php deleted file mode 100644 index ad9a90f6..00000000 --- a/resources/views/livewire/partner-programm.blade.php +++ /dev/null @@ -1,3 +0,0 @@ -
- {{-- To attain knowledge, add things every day; To attain wisdom, subtract things every day. --}} -
diff --git a/resources/views/livewire/top-menu-items.blade.php b/resources/views/livewire/top-menu-items.blade.php index fdb4efd6..8bf9e81c 100644 --- a/resources/views/livewire/top-menu-items.blade.php +++ b/resources/views/livewire/top-menu-items.blade.php @@ -72,7 +72,9 @@
-
Event Mapper
+ + {{ auth()->user()->sport->name }} Event Mapper + @php if (!auth()->user()->provider_id) { auth()->user()->provider_id = 2;