├── .editorconfig ├── .env.example ├── .gitattributes ├── .gitignore ├── README.md ├── app ├── Actions │ └── RetrieveReleases.php ├── Console │ └── Commands │ │ └── DeleteLivewireTemporaryUpload.php ├── Enums │ ├── Example.php │ └── Examples │ │ ├── V1 │ │ ├── Alpine.php │ │ ├── Command.php │ │ ├── Configuration.php │ │ ├── Contribution.php │ │ ├── Form │ │ │ ├── Checkbox.php │ │ │ ├── Color.php │ │ │ ├── Date.php │ │ │ ├── Input.php │ │ │ ├── Number.php │ │ │ ├── Password.php │ │ │ ├── Pin.php │ │ │ ├── Radio.php │ │ │ ├── Range.php │ │ │ ├── Select.php │ │ │ ├── Tag.php │ │ │ ├── Textarea.php │ │ │ ├── Time.php │ │ │ ├── Toggle.php │ │ │ └── Upload.php │ │ ├── Helpers │ │ │ ├── DarkTheme.php │ │ │ └── DebugMode.php │ │ ├── Installation.php │ │ ├── Interactions │ │ │ ├── Dialog.php │ │ │ └── Toast.php │ │ ├── Personalization │ │ │ ├── Color.php │ │ │ ├── Deep.php │ │ │ └── Soft.php │ │ ├── SummerRelease.php │ │ ├── Translation.php │ │ ├── Troubleshooting.php │ │ ├── Ui │ │ │ ├── Alert.php │ │ │ ├── Avatar.php │ │ │ ├── Badge.php │ │ │ ├── Banner.php │ │ │ ├── Boolean.php │ │ │ ├── Button.php │ │ │ ├── Card.php │ │ │ ├── Clipboard.php │ │ │ ├── Dropdown.php │ │ │ ├── Error.php │ │ │ ├── Icon.php │ │ │ ├── Link.php │ │ │ ├── Loading.php │ │ │ ├── Modal.php │ │ │ ├── Progress.php │ │ │ ├── Rating.php │ │ │ ├── Reaction.php │ │ │ ├── Slide.php │ │ │ ├── Stats.php │ │ │ ├── Step.php │ │ │ ├── Tab.php │ │ │ ├── Table.php │ │ │ ├── ThemeSwitch.php │ │ │ └── Tooltip.php │ │ ├── Updates.php │ │ ├── Welcome.php │ │ └── WithoutLivewire.php │ │ └── V2 │ │ ├── Alpine.php │ │ ├── Command.php │ │ ├── ComponentPrefix.php │ │ ├── Configuration.php │ │ ├── Contribution.php │ │ ├── Form │ │ ├── Checkbox.php │ │ ├── Color.php │ │ ├── Currency.php │ │ ├── Date.php │ │ ├── Input.php │ │ ├── Number.php │ │ ├── Password.php │ │ ├── Pin.php │ │ ├── Radio.php │ │ ├── Range.php │ │ ├── Select.php │ │ ├── Tag.php │ │ ├── Textarea.php │ │ ├── Time.php │ │ ├── Toggle.php │ │ └── Upload.php │ │ ├── Helpers │ │ ├── DarkTheme.php │ │ ├── DebugMode.php │ │ └── EnvBar.php │ │ ├── Installation.php │ │ ├── Interactions │ │ ├── Dialog.php │ │ └── Toast.php │ │ ├── Personalization │ │ ├── Color.php │ │ ├── Deep.php │ │ └── Soft.php │ │ ├── StarterKit.php │ │ ├── Translation.php │ │ ├── Troubleshooting.php │ │ ├── Ui │ │ ├── Alert.php │ │ ├── Avatar.php │ │ ├── Badge.php │ │ ├── Banner.php │ │ ├── Boolean.php │ │ ├── Button.php │ │ ├── Card.php │ │ ├── Carousel.php │ │ ├── Clipboard.php │ │ ├── Dropdown.php │ │ ├── Environment.php │ │ ├── Error.php │ │ ├── Icon.php │ │ ├── KeyValue.php │ │ ├── Layout.php │ │ ├── Link.php │ │ ├── Loading.php │ │ ├── Modal.php │ │ ├── Progress.php │ │ ├── Rating.php │ │ ├── Reaction.php │ │ ├── Signature.php │ │ ├── Slide.php │ │ ├── Stats.php │ │ ├── Step.php │ │ ├── Tab.php │ │ ├── Table.php │ │ ├── ThemeSwitch.php │ │ └── Tooltip.php │ │ ├── Updates.php │ │ ├── UpgradeGuide.php │ │ ├── Welcome.php │ │ └── WithoutLivewire.php ├── Exceptions │ └── Handler.php ├── Http │ ├── Controllers │ │ └── PageController.php │ └── Middleware │ │ └── ShareVersionVariable.php ├── Models │ └── User.php ├── Providers │ ├── AppServiceProvider.php │ └── VoltServiceProvider.php ├── Traits │ └── VersionDiscovery.php ├── View │ └── Components │ │ └── Layout.php └── helpers.php ├── artisan ├── arts └── tallstackui.svg ├── bootstrap ├── app.php ├── cache │ └── .gitignore └── providers.php ├── composer.json ├── composer.lock ├── config ├── livewire.php ├── services.php └── torchlight.php ├── contents ├── v1.yaml └── v2.yaml ├── database ├── .gitignore ├── factories │ └── UserFactory.php ├── migrations │ ├── 2014_10_12_000000_create_users_table.php │ ├── 2014_10_12_100000_create_password_reset_tokens_table.php │ ├── 2019_08_19_000000_create_failed_jobs_table.php │ └── 2019_12_14_000001_create_personal_access_tokens_table.php └── seeders │ ├── CreateUserSeeder.php │ └── DatabaseSeeder.php ├── ide.json ├── package-lock.json ├── package.json ├── phpunit.xml ├── pint.json ├── public ├── .htaccess ├── assets │ ├── demo │ │ ├── laravel.png │ │ ├── livewire.png │ │ └── tallstackui.png │ ├── images │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon.png │ │ ├── araxis.png │ │ ├── background.svg │ │ ├── env-bar.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon.ico │ │ ├── find-component-output.png │ │ ├── og.png │ │ ├── site.webmanifest │ │ └── wallpapers │ │ │ ├── 1.jpg │ │ │ ├── 2.jpg │ │ │ ├── 3.jpg │ │ │ └── 4.jpg │ └── videos │ │ └── tsui-starter-kit-preview.mp4 ├── favicon.ico ├── index.php └── robots.txt ├── resources ├── css │ ├── app.css │ ├── search.css │ └── torchlight.css ├── js │ ├── app.js │ ├── bootstrap.js │ └── modules │ │ └── clipboard.js └── views │ ├── components │ ├── available-configuration.blade.php │ ├── back-to-top.blade.php │ ├── block.blade.php │ ├── code.blade.php │ ├── copy-code.blade.php │ ├── custom-table │ │ ├── index.blade.php │ │ ├── tbody.blade.php │ │ ├── td.blade.php │ │ ├── th.blade.php │ │ ├── thead.blade.php │ │ └── tr.blade.php │ ├── github.blade.php │ ├── google-analytics.blade.php │ ├── internals-warning.blade.php │ ├── layout │ │ ├── banner.blade.php │ │ ├── header.blade.php │ │ ├── menu-badge-new.blade.php │ │ ├── navigation │ │ │ ├── link.blade.php │ │ │ ├── version.blade.php │ │ │ └── version │ │ │ │ ├── v1.blade.php │ │ │ │ └── v2.blade.php │ │ └── sidebar │ │ │ ├── index │ │ │ ├── index.blade.php │ │ │ └── item.blade.php │ │ │ ├── left.blade.php │ │ │ └── right.blade.php │ ├── old-version-warning.blade.php │ ├── on-this-page.blade.php │ ├── outdated-contente-tooltip.blade.php │ ├── preview.blade.php │ ├── section.blade.php │ ├── separator.blade.php │ ├── svg │ │ ├── banner.blade.php │ │ ├── sponsors │ │ │ ├── araxis.blade.php │ │ │ ├── dothnews.blade.php │ │ │ └── jb.blade.php │ │ ├── tallstackui-light.blade.php │ │ └── tallstackui.blade.php │ ├── top-bar.blade.php │ ├── v2-beta-warning.blade.php │ └── warning.blade.php │ ├── documentation │ ├── v1 │ │ ├── command.blade.php │ │ ├── configuration.blade.php │ │ ├── contribution.blade.php │ │ ├── faq.blade.php │ │ ├── form │ │ │ ├── checkbox.blade.php │ │ │ ├── color.blade.php │ │ │ ├── date.blade.php │ │ │ ├── input.blade.php │ │ │ ├── number.blade.php │ │ │ ├── password.blade.php │ │ │ ├── pin.blade.php │ │ │ ├── radio.blade.php │ │ │ ├── range.blade.php │ │ │ ├── select.blade.php │ │ │ ├── tag.blade.php │ │ │ ├── textarea.blade.php │ │ │ ├── time.blade.php │ │ │ ├── toggle.blade.php │ │ │ └── upload.blade.php │ │ ├── getting-started.blade.php │ │ ├── helpers │ │ │ ├── dark-theme.blade.php │ │ │ └── debug-mode.blade.php │ │ ├── installation.blade.php │ │ ├── integrations │ │ │ └── alpine.blade.php │ │ ├── interactions │ │ │ ├── dialog.blade.php │ │ │ └── toast.blade.php │ │ ├── internal │ │ │ ├── error.blade.php │ │ │ ├── floating.blade.php │ │ │ ├── hint.blade.php │ │ │ ├── label.blade.php │ │ │ └── wrapper.blade.php │ │ ├── personalization │ │ │ ├── color.blade.php │ │ │ ├── concept.blade.php │ │ │ ├── deep.blade.php │ │ │ └── soft.blade.php │ │ ├── summer-release.blade.php │ │ ├── translation.blade.php │ │ ├── troubleshooting.blade.php │ │ ├── ui │ │ │ ├── alert.blade.php │ │ │ ├── avatar.blade.php │ │ │ ├── badge.blade.php │ │ │ ├── banner.blade.php │ │ │ ├── boolean.blade.php │ │ │ ├── button.blade.php │ │ │ ├── card.blade.php │ │ │ ├── clipboard.blade.php │ │ │ ├── dropdown.blade.php │ │ │ ├── error.blade.php │ │ │ ├── icon.blade.php │ │ │ ├── link.blade.php │ │ │ ├── loading.blade.php │ │ │ ├── modal.blade.php │ │ │ ├── progress.blade.php │ │ │ ├── rating.blade.php │ │ │ ├── reaction.blade.php │ │ │ ├── slide.blade.php │ │ │ ├── stats.blade.php │ │ │ ├── step.blade.php │ │ │ ├── tab.blade.php │ │ │ ├── table.blade.php │ │ │ ├── theme-switch.blade.php │ │ │ └── tooltip.blade.php │ │ ├── updates.blade.php │ │ └── without-livewire.blade.php │ └── v2 │ │ ├── alpine.blade.php │ │ ├── command.blade.php │ │ ├── component-prefix.blade.php │ │ ├── configuration.blade.php │ │ ├── contribution.blade.php │ │ ├── documentation.blade.php │ │ ├── form │ │ ├── checkbox.blade.php │ │ ├── color.blade.php │ │ ├── currency.blade.php │ │ ├── date.blade.php │ │ ├── input.blade.php │ │ ├── number.blade.php │ │ ├── password.blade.php │ │ ├── pin.blade.php │ │ ├── radio.blade.php │ │ ├── range.blade.php │ │ ├── select.blade.php │ │ ├── tag.blade.php │ │ ├── textarea.blade.php │ │ ├── time.blade.php │ │ ├── toggle.blade.php │ │ └── upload.blade.php │ │ ├── helpers │ │ ├── dark-theme.blade.php │ │ ├── debug-mode.blade.php │ │ └── env-bar.blade.php │ │ ├── installation.blade.php │ │ ├── integrations │ │ └── alpine.blade.php │ │ ├── interactions │ │ ├── dialog.blade.php │ │ └── toast.blade.php │ │ ├── internal │ │ ├── error.blade.php │ │ ├── floating.blade.php │ │ ├── hint.blade.php │ │ ├── label.blade.php │ │ └── wrapper.blade.php │ │ ├── personalization │ │ ├── color.blade.php │ │ ├── concept.blade.php │ │ ├── deep.blade.php │ │ └── soft.blade.php │ │ ├── starter-kit.blade.php │ │ ├── translation.blade.php │ │ ├── troubleshooting.blade.php │ │ ├── ui │ │ ├── alert.blade.php │ │ ├── avatar.blade.php │ │ ├── badge.blade.php │ │ ├── banner.blade.php │ │ ├── boolean.blade.php │ │ ├── button.blade.php │ │ ├── card.blade.php │ │ ├── carousel.blade.php │ │ ├── clipboard.blade.php │ │ ├── dropdown.blade.php │ │ ├── environment.blade.php │ │ ├── error.blade.php │ │ ├── icon.blade.php │ │ ├── key-value.blade.php │ │ ├── layout.blade.php │ │ ├── link.blade.php │ │ ├── loading.blade.php │ │ ├── modal.blade.php │ │ ├── progress.blade.php │ │ ├── rating.blade.php │ │ ├── reaction.blade.php │ │ ├── signature.blade.php │ │ ├── slide.blade.php │ │ ├── stats.blade.php │ │ ├── step.blade.php │ │ ├── tab.blade.php │ │ ├── table.blade.php │ │ ├── theme-switch.blade.php │ │ └── tooltip.blade.php │ │ ├── upgrade-guide.blade.php │ │ └── without-livewire.blade.php │ ├── layouts │ └── app.blade.php │ ├── livewire │ ├── documentation-settings.blade.php │ ├── documentation │ │ ├── form │ │ │ ├── currency.blade.php │ │ │ ├── pin.blade.php │ │ │ └── upload │ │ │ │ ├── static.blade.php │ │ │ │ └── upload.blade.php │ │ ├── helpers │ │ │ └── debug.blade.php │ │ ├── interactions │ │ │ ├── banner │ │ │ │ └── examples.blade.php │ │ │ ├── dialog │ │ │ │ ├── confirmation.blade.php │ │ │ │ ├── events.blade.php │ │ │ │ └── examples.blade.php │ │ │ └── toast │ │ │ │ ├── confirmation.blade.php │ │ │ │ ├── events.blade.php │ │ │ │ ├── examples.blade.php │ │ │ │ ├── expandable.blade.php │ │ │ │ ├── persistent.blade.php │ │ │ │ ├── position.blade.php │ │ │ │ └── timeout.blade.php │ │ ├── modal │ │ │ ├── customentangle.blade.php │ │ │ └── entangle.blade.php │ │ ├── releases.blade.php │ │ ├── slide │ │ │ ├── customentangle.blade.php │ │ │ └── entangle.blade.php │ │ └── ui │ │ │ ├── boolean.blade.php │ │ │ ├── button.blade.php │ │ │ ├── errors.blade.php │ │ │ ├── key-value.blade.php │ │ │ ├── loading.blade.php │ │ │ ├── rating.blade.php │ │ │ ├── reaction.blade.php │ │ │ ├── signature.blade.php │ │ │ ├── step.blade.php │ │ │ ├── table.blade.php │ │ │ └── tabs.blade.php │ ├── personalization.blade.php │ ├── version-selector.blade.php │ └── welcome │ │ ├── form.blade.php │ │ └── table.blade.php │ └── welcome.blade.php ├── routes ├── api.php ├── console.php └── web.php ├── storage ├── app │ ├── .gitignore │ └── public │ │ └── .gitignore ├── framework │ ├── .gitignore │ ├── cache │ │ ├── .gitignore │ │ └── data │ │ │ └── .gitignore │ ├── sessions │ │ └── .gitignore │ ├── testing │ │ └── .gitignore │ └── views │ │ └── .gitignore └── logs │ └── .gitignore ├── tests ├── CreatesApplication.php ├── Feature │ └── StructureTest.php ├── Pest.php └── TestCase.php └── vite.config.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_size = 4 7 | indent_style = space 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.{yml,yaml}] 15 | indent_size = 2 16 | 17 | [docker-compose.yml] 18 | indent_size = 4 19 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | APP_NAME="TallStackUI, TALL Stack Components." 2 | APP_ENV=local 3 | APP_KEY= 4 | APP_DEBUG=true 5 | APP_TIMEZONE=UTC 6 | APP_URL=http://localhost 7 | 8 | APP_LOCALE=en 9 | APP_FALLBACK_LOCALE=en 10 | APP_FAKER_LOCALE=en_US 11 | 12 | APP_MAINTENANCE_DRIVER=file 13 | APP_MAINTENANCE_STORE=database 14 | 15 | BCRYPT_ROUNDS=12 16 | 17 | LOG_CHANNEL=stack 18 | LOG_STACK=single 19 | LOG_DEPRECATIONS_CHANNEL=null 20 | LOG_LEVEL=debug 21 | 22 | DB_CONNECTION=sqlite 23 | # DB_HOST=127.0.0.1 24 | # DB_PORT=3306 25 | # DB_DATABASE=laravel 26 | # DB_USERNAME=root 27 | # DB_PASSWORD= 28 | 29 | SESSION_DRIVER=file 30 | SESSION_LIFETIME=120 31 | SESSION_ENCRYPT=false 32 | SESSION_PATH=/ 33 | SESSION_DOMAIN=null 34 | 35 | BROADCAST_CONNECTION=log 36 | FILESYSTEM_DISK=local 37 | QUEUE_CONNECTION=database 38 | 39 | CACHE_STORE=file 40 | CACHE_PREFIX= 41 | 42 | MEMCACHED_HOST=127.0.0.1 43 | 44 | REDIS_CLIENT=phpredis 45 | REDIS_HOST=127.0.0.1 46 | REDIS_PASSWORD=null 47 | REDIS_PORT=6379 48 | 49 | MAIL_MAILER=log 50 | MAIL_HOST=127.0.0.1 51 | MAIL_PORT=2525 52 | MAIL_USERNAME=null 53 | MAIL_PASSWORD=null 54 | MAIL_ENCRYPTION=null 55 | MAIL_FROM_ADDRESS="hello@example.com" 56 | MAIL_FROM_NAME="${APP_NAME}" 57 | 58 | AWS_ACCESS_KEY_ID= 59 | AWS_SECRET_ACCESS_KEY= 60 | AWS_DEFAULT_REGION=us-east-1 61 | AWS_BUCKET= 62 | AWS_USE_PATH_STYLE_ENDPOINT=false 63 | 64 | VITE_APP_NAME="${APP_NAME}" 65 | 66 | # Customs 67 | 68 | TORCHLIGHT_TOKEN= 69 | 70 | GITHUB_TOKEN= 71 | 72 | TALLSTACKUI_AVOID_LAYOUT_REGISTRATION=true 73 | 74 | ALGOLIA_APP_ID= 75 | ALGOLIA_SECRET= 76 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | 3 | *.blade.php diff=html 4 | *.css diff=css 5 | *.html diff=html 6 | *.md diff=markdown 7 | *.php diff=php 8 | 9 | /.github export-ignore 10 | CHANGELOG.md export-ignore 11 | .styleci.yml export-ignore 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.phpunit.cache 2 | /node_modules 3 | /public/build 4 | /public/hot 5 | /public/storage 6 | /storage/*.key 7 | /vendor 8 | .env 9 | .env.backup 10 | .env.production 11 | .phpunit.result.cache 12 | Homestead.json 13 | Homestead.yaml 14 | auth.json 15 | npm-debug.log 16 | yarn-error.log 17 | /.fleet 18 | /.idea 19 | /.vscode 20 | Envoy.blade.php 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TallStackUi 2 | 3 |

4 | 5 |

6 | Packagist Downloads 7 | Laravel v10.x 8 | PHP 8.1 9 | Livewire v3.x 10 |

11 | 12 | ## Introduction 13 | 14 | [TallStackUi](https://tallstackui.com/) is a powerful suite of Blade components for TALL Stack apps. 15 | 16 | ## Documentation 17 | 18 | [Visit our website to see the documentation](https://tallstackui.com/docs) 19 | 20 | ## Need Help? 21 | 22 | 🐞 If you spot a bug, please [submit a detailed issue.](https://github.com/tallstackui/tallstackui/issues/new/choose) 23 | 24 | 💬 If you love chatting, [we have a Discord server dedicated to the TallStackUI community.](https://discord.gg/sfr66WXh4A) 25 | 26 | ## Contributing 27 | 28 | Thank you for wanting to be part of our team! 👋 [Click here to learn more.](https://tallstackui.com/docs/contribution) 29 | -------------------------------------------------------------------------------- /app/Actions/RetrieveReleases.php: -------------------------------------------------------------------------------- 1 | get('services.github.token'); 14 | 15 | if (! $token) { 16 | return collect(); 17 | } 18 | 19 | if ($cache = Cache::get('releases')) { 20 | return $cache; 21 | } 22 | 23 | $response = Http::withToken($token)->get('https://api.github.com/repos/tallstackui/tallstackui/releases'); 24 | 25 | if ($response->failed()) { 26 | return collect(); 27 | } 28 | 29 | return Cache::remember( 30 | 'releases', 31 | now()->addDay(), 32 | fn () => $response->collect() 33 | ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/Console/Commands/DeleteLivewireTemporaryUpload.php: -------------------------------------------------------------------------------- 1 | isProduction()) { 19 | return; 20 | } 21 | 22 | $this->components->info('The temporary upload folder of Livewire has been deleted.'); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Alpine.php: -------------------------------------------------------------------------------- 1 | 12 | 13 | 17 | 18 | 22 | 23 | 30 | HTML; 31 | } 32 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Command.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const PICKER = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const SELECTABLE = <<<'HTML' 20 | 21 | HTML; 22 | 23 | public const CUSTOM = <<<'HTML' 24 | 25 | HTML; 26 | 27 | public const EVENTS = <<<'HTML' 28 | 29 | HTML; 30 | 31 | public const INVALIDATE = <<<'HTML' 32 | 33 | HTML; 34 | 35 | public const PERSONALIZATION = <<<'HTML' 36 | TallStackUi::personalize() 37 | ->form('color') 38 | ->block('block', 'classes'); 39 | HTML; 40 | } 41 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Form/Input.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const ASTERISK = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const ICONS = <<<'HTML' 20 | 21 | 22 | HTML; 23 | 24 | public const PREFIX_SUFFIX = <<<'HTML' 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | Prefix 33 | 34 | 35 | Suffix 36 | 37 | 38 | HTML; 39 | 40 | public const INVALIDATE = <<<'HTML' 41 | 42 | HTML; 43 | 44 | public const PERSONALIZATION = <<<'HTML' 45 | TallStackUi::personalize() 46 | ->form('input') 47 | ->block('block', 'classes'); 48 | HTML; 49 | } 50 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Form/Number.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const MIN_MAX = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const CENTRALIZED = <<<'HTML' 20 | 21 | HTML; 22 | 23 | public const SELECTABLE = <<<'HTML' 24 | 25 | HTML; 26 | 27 | public const DELAY = <<<'HTML' 28 | 29 | HTML; 30 | 31 | public const ICON = <<<'HTML' 32 | 33 | HTML; 34 | 35 | public const INVALIDATE = <<<'HTML' 36 | 37 | HTML; 38 | 39 | public const PERSONALIZATION = <<<'HTML' 40 | TallStackUi::personalize() 41 | ->form('number') 42 | ->block('block', 'classes'); 43 | HTML; 44 | } 45 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Form/Password.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const ASTERISK = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const CAPS_LOCK = <<<'HTML' 20 | 21 | 22 | 23 | 24 | HTML; 25 | 26 | public const FORMAT_VALIDATOR = <<<'HTML' 27 | 28 | 29 | 31 | 32 | 34 | 35 | 36 | HTML; 37 | 38 | public const PASSWORD_GENERATOR = <<<'HTML' 39 | 40 | HTML; 41 | 42 | public const EVENTS = <<<'HTML' 43 | 48 | HTML; 49 | 50 | public const INVALIDATE = <<<'HTML' 51 | 55 | HTML; 56 | 57 | public const PERSONALIZATION = <<<'HTML' 58 | TallStackUi::personalize() 59 | ->form('password') 60 | ->block('block', 'classes'); 61 | HTML; 62 | } 63 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Form/Pin.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const PREFIX = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const CLEAR = <<<'HTML' 20 | 21 | HTML; 22 | 23 | public const MASKS = <<<'HTML' 24 | 25 | 26 | 27 | HTML; 28 | 29 | public const EVENTS = <<<'HTML' 30 | 31 | 32 | 33 | HTML; 34 | 35 | public const INVALIDATE = <<<'HTML' 36 | 37 | HTML; 38 | 39 | public const PERSONALIZATION = <<<'HTML' 40 | TallStackUi::personalize() 41 | ->form('pin') 42 | ->block('block', 'classes'); 43 | HTML; 44 | } 45 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Form/Range.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const SIZES = <<<'HTML' 16 | 17 | 18 | 19 | HTML; 20 | 21 | public const COLORS = <<<'HTML' 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | HTML; 49 | 50 | public const INVALIDATE = <<<'HTML' 51 | 52 | HTML; 53 | 54 | public const PERSONALIZATION = <<<'HTML' 55 | TallStackUi::personalize() 56 | ->form('range') 57 | ->block('block', 'classes'); 58 | HTML; 59 | } 60 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Form/Tag.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const LIMIT = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const PREFIX = <<<'HTML' 20 | 21 | HTML; 22 | 23 | public const EVENTS = <<<'HTML' 24 | 28 | 29 | 33 | HTML; 34 | 35 | public const INVALIDATE = <<<'HTML' 36 | 37 | HTML; 38 | 39 | public const PERSONALIZATION = <<<'HTML' 40 | TallStackUi::personalize() 41 | ->form('tag') 42 | ->block('block', 'classes'); 43 | HTML; 44 | } 45 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Form/Textarea.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const ASTERISK = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const RESIZE = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const RESIZE_AUTO = <<<'HTML' 20 | 21 | HTML; 22 | 23 | public const LABEL_HINT = <<<'HTML' 24 | 25 | HTML; 26 | 27 | public const COUNT = <<<'HTML' 28 | 29 | 30 | 31 | 32 | 33 | HTML; 34 | 35 | public const INVALIDATE = <<<'HTML' 36 | 37 | HTML; 38 | 39 | public const PERSONALIZATION = <<<'HTML' 40 | TallStackUi::personalize() 41 | ->form('textarea') 42 | ->block('block', 'classes'); 43 | HTML; 44 | } 45 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Form/Time.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const FORMATS = <<<'HTML' 16 | 17 | 18 | 19 | 20 | 21 | HTML; 22 | 23 | public const MIN_MAX = <<<'HTML' 24 | 25 | 26 | 27 | 28 | 29 | HTML; 30 | 31 | public const REQUIRED = <<<'HTML' 32 | 33 | HTML; 34 | 35 | public const HELPER = <<<'HTML' 36 | 37 | HTML; 38 | 39 | public const STEP = <<<'HTML' 40 | 41 | HTML; 42 | 43 | public const FOOTER_SLOT = <<<'HTML' 44 | 45 | 46 | Footer Slot 47 | 48 | 49 | HTML; 50 | 51 | public const EVENTS = <<<'HTML' 52 | 55 | HTML; 56 | 57 | public const INVALIDATE = <<<'HTML' 58 | 59 | HTML; 60 | 61 | public const PERSONALIZATION = <<<'HTML' 62 | TallStackUi::personalize() 63 | ->form('time') 64 | ->block('block', 'classes'); 65 | HTML; 66 | } 67 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Helpers/DarkTheme.php: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | HTML; 22 | 23 | public const CUSTOMIZED = <<<'HTML' 24 | 27 | 28 | 29 | HTML; 30 | 31 | public const INITIALIZE_AS_TRUE = <<<'HTML' 32 | 35 | 36 | 37 | HTML; 38 | 39 | public const BUTTON = <<<'HTML' 40 | Light / Dark Mode 41 | HTML; 42 | 43 | public const ASSETS = <<<'HTML' 44 | npm run build && php artisan optimize:clear 45 | HTML; 46 | 47 | public const EXAMPLE = <<<'HTML' 48 |

Hello World

49 |
Hello World
50 | HTML; 51 | } 52 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Helpers/DebugMode.php: -------------------------------------------------------------------------------- 1 | [ 15 | 'status' => env('TALLSTACKUI_DEBUG_MODE', false), 16 | /* 17 | |---------------------------------------------------------------------- 18 | | You can control in which environments the debug mode is enabled. 19 | |---------------------------------------------------------------------- 20 | */ 21 | 'environments' => [ 22 | 'local', 23 | 'sandbox', 24 | 'staging', 25 | ], 26 | /* 27 | |---------------------------------------------------------------------- 28 | | You can ignore debug mode for certain specific components 29 | | by setting the exact component name in this array. 30 | |---------------------------------------------------------------------- 31 | */ 32 | 'ignore' => [ 33 | // 34 | ], 35 | ], 36 | 37 | // ... 38 | HTML; 39 | } 40 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Personalization/Color.php: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | HTML; 14 | } 15 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Ui/Card.php: -------------------------------------------------------------------------------- 1 | 9 | TallStackUi 10 | 11 | HTML; 12 | 13 | public const HEADER = <<<'HTML' 14 | 15 | 16 | TallStackUi 17 | 18 | TallStackUi 19 | 20 | 21 | 22 | 23 | 24 | TallStackUi 25 | 26 | HTML; 27 | 28 | public const FOOTER = <<<'HTML' 29 | 30 | TallStackUi 31 | 32 | TallStackUi 33 | 34 | 35 | 36 | 37 | 38 | 39 | TallStackUi 40 | 41 | HTML; 42 | 43 | public const PERSONALIZATION = <<<'HTML' 44 | TallStackUi::personalize() 45 | ->card() 46 | ->block('block', 'classes'); 47 | HTML; 48 | } 49 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Ui/Clipboard.php: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | TallStackUI 14 | 15 | HTML; 16 | 17 | public const LEFT = <<<'HTML' 18 | 19 | HTML; 20 | 21 | public const LABEL_HINT = <<<'HTML' 22 | 23 | HTML; 24 | 25 | public const SECRET = <<<'HTML' 26 | 27 | HTML; 28 | 29 | public const EVENTS = <<<'HTML' 30 | 31 | TallStackUi 32 | 33 | HTML; 34 | 35 | public const ICON = <<<'HTML' 36 | 37 | 38 | 39 | 40 | 41 | TallStackUI 42 | 43 | HTML; 44 | 45 | public const DIFFERENT_ICONS = <<<'HTML' 46 | 49 | HTML; 50 | 51 | public const PERSONALIZATION = <<<'HTML' 52 | TallStackUi::personalize() 53 | ->clipboard() 54 | ->block('block', 'classes'); 55 | HTML; 56 | } 57 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Ui/Error.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const SPECIFIC = <<<'HTML' 12 | 13 | 14 | 15 | 16 | 17 | HTML; 18 | 19 | public const CUSTOMIZED = <<<'HTML' 20 | 21 | HTML; 22 | 23 | public const CLOSE = <<<'HTML' 24 | 25 | HTML; 26 | 27 | public const SLOT = <<<'HTML' 28 | 29 | 30 | 31 | 32 | 33 | 34 |
35 |

36 | Footer Slot 37 |

38 |
39 |
40 |
41 | HTML; 42 | 43 | public const COLORS = <<<'HTML' 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | HTML; 73 | 74 | public const EVENTS = <<<'HTML' 75 | 76 | HTML; 77 | 78 | public const PERSONALIZATION = <<<'HTML' 79 | TallStackUi::personalize() 80 | ->dropdown('errors') 81 | ->block('block', 'classes'); 82 | HTML; 83 | } 84 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Ui/Loading.php: -------------------------------------------------------------------------------- 1 | {{-- [tl! remove] --}} 9 | 10 | {{-- [tl! add] --}} 11 | HTML; 12 | 13 | public const USAGE = <<<'HTML' 14 | 15 | 16 |
17 | {{-- [tl! highlight] --}} 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | HTML; 28 | 29 | public const BASIC = <<<'HTML' 30 | 31 | HTML; 32 | 33 | public const TEXT = <<<'HTML' 34 | 35 |
36 | 37 | Loading ... 38 |
39 |
40 | HTML; 41 | 42 | public const TARGET_DELAY = <<<'HTML' 43 | 44 | 45 | 46 | 47 | 48 | HTML; 49 | 50 | public const PERSONALIZATION = <<<'HTML' 51 | TallStackUi::personalize() 52 | ->loading() 53 | ->block('block', 'classes'); 54 | HTML; 55 | } 56 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Ui/Reaction.php: -------------------------------------------------------------------------------- 1 | 23 | HTML; 24 | 25 | public const BASIC = <<<'HTML' 26 | 27 | HTML; 28 | 29 | public const ANIMATED = <<<'HTML' 30 | 31 | HTML; 32 | 33 | public const POSITION = <<<'HTML' 34 | 35 | 36 | 37 | HTML; 38 | 39 | public const QUANTITY = <<<'HTML' 40 | 41 | HTML; 42 | 43 | public const QUANTITY_BIND = <<<'HTML' 44 | 45 | 46 | 47 | HTML; 48 | 49 | public const ONLY = <<<'HTML' 50 | 72 | 73 | 74 | HTML; 75 | 76 | public const SLOT = <<<'HTML' 77 | 78 | React to the TallStackUI 79 | 80 | HTML; 81 | 82 | public const EVENTS = <<<'HTML' 83 | 84 | HTML; 85 | 86 | public const PERSONALIZATION = <<<'HTML' 87 | TallStackUi::personalize() 88 | ->reaction() 89 | ->block('block', 'classes'); 90 | HTML; 91 | } 92 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Ui/ThemeSwitch.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const SIZES = <<<'HTML' 12 | 13 | 14 | 15 | 16 | 17 | HTML; 18 | 19 | public const ICONS = <<<'HTML' 20 | 21 | HTML; 22 | 23 | public const PERSONALIZATION = <<<'HTML' 24 | TallStackUi::personalize() 25 | ->themeSwitch() 26 | ->block('block', 'classes'); 27 | HTML; 28 | } 29 | -------------------------------------------------------------------------------- /app/Enums/Examples/V1/Updates.php: -------------------------------------------------------------------------------- 1 | badge() // [tl! highlight] 17 | // Pointing the block... 18 | ->block('wrapper.class') // [tl! highlight] 19 | // Personalizing! 20 | ->replace('rounded-md', 'rounded-sm') // [tl! highlight] 21 | // Sequentially we can... 22 | ->and() // [tl! highlight] 23 | // Personalize other components! 24 | ->avatar() 25 | ->block('content.text.class') 26 | ->prepend('text-2xl'); 27 | } 28 | } 29 | HTML; 30 | } 31 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Alpine.php: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | @livewireStyles 14 | @vite(['resources/css/app.css', 'resources/js/app.js']) 15 | 16 | 17 | 18 | 19 | @livewireScripts {{-- [tl! focus, highlight] --}} 20 | 21 | 22 | HTML; 23 | 24 | public const INPUT = <<<'HTML' 25 | 29 | 30 | 34 | 35 | 36 | 37 | 41 | 42 | 49 | HTML; 50 | } 51 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Command.php: -------------------------------------------------------------------------------- 1 | ' 23 | */ 24 | 'prefix' => env('TALLSTACKUI_PREFIX'), // [tl! remove] 25 | 'prefix' => 'ts-', // [tl! add] 26 | 27 | // ... 28 | HTML; 29 | 30 | public const PUBLISH = <<<'HTML' 31 | php artisan vendor:publish --tag=tallstackui.config 32 | HTML; 33 | 34 | public const ENVIRONMENT = <<<'HTML' 35 | TALLSTACKUI_PREFIX="ts-" 36 | HTML; 37 | 38 | public const COMMAND = <<<'HTML' 39 | php artisan tallstackui:setup-prefix 40 | HTML; 41 | 42 | public const EXAMPLES = <<<'HTML' 43 | 44 | 45 | {{-- [tl! remove] --}} 46 | {{-- [tl! add] --}} 47 | 48 | {{-- [tl! remove] --}} 49 | {{-- [tl! add] --}} 50 | 51 | 52 | 53 | {{-- [tl! remove] --}} 54 | {{-- [tl! add] --}} 55 | 56 | {{-- [tl! remove] --}} 57 | {{-- [tl! add] --}} 58 | HTML; 59 | } 60 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Configuration.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const PICKER = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const SELECTABLE = <<<'HTML' 20 | 21 | HTML; 22 | 23 | public const CUSTOM = <<<'HTML' 24 | 25 | HTML; 26 | 27 | public const CLEARABLE = <<<'HTML' 28 | 29 | HTML; 30 | 31 | public const EVENTS = <<<'HTML' 32 | 33 | HTML; 34 | 35 | public const PERSONALIZATION = <<<'HTML' 36 | TallStackUi::personalize() 37 | ->form('color') 38 | ->block('block', 'classes'); 39 | HTML; 40 | } 41 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Form/Currency.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const CLEARABLE = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const DIFFERENT_CURRENCIES = <<<'HTML' 20 | 21 | 22 | 23 | 24 | 25 | 26 | HTML; 27 | 28 | public const INTL_OPTIONS = <<<'HTML' 29 | // [tl! highlight] 30 | 31 | new Intl.NumberFormat(this.locale, { 32 | minimumFractionDigits: decimals, // [tl! highlight:1] 33 | maximumFractionDigits: precision, 34 | }).format(number); 35 | HTML; 36 | 37 | public const SYMBOLS = <<<'HTML' 38 | 39 | 40 | 41 | 42 | 43 | HTML; 44 | 45 | public const CUSTOM_SYMBOLS = <<<'HTML' 46 | 47 | 48 | 49 | HTML; 50 | 51 | public const MUTATE = <<<'HTML' 52 | 53 | HTML; 54 | 55 | public const PERSONALIZATION = <<<'HTML' 56 | TallStackUi::personalize() 57 | ->form('currency') 58 | ->block('block', 'classes'); 59 | HTML; 60 | } 61 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Form/Input.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const LABEL_RAW_HTML = <<<'HTML' 16 | 17 | 18 | Name 19 | 20 | 21 | HTML; 22 | 23 | public const ASTERISK = <<<'HTML' 24 | 25 | HTML; 26 | 27 | public const ICONS = <<<'HTML' 28 | 29 | 30 | HTML; 31 | 32 | public const PREFIX_SUFFIX = <<<'HTML' 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | Prefix 41 | 42 | 43 | Suffix 44 | 45 | 46 | HTML; 47 | 48 | public const CLEARABLE = <<<'HTML' 49 | 50 | HTML; 51 | 52 | public const INVALIDATE = <<<'HTML' 53 | 54 | HTML; 55 | 56 | public const PERSONALIZATION = <<<'HTML' 57 | TallStackUi::personalize() 58 | ->form('input') 59 | ->block('block', 'classes'); 60 | HTML; 61 | } 62 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Form/Number.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const STEP = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const STEP_DECIMAL = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const LABEL_HINT = <<<'HTML' 20 | 21 | HTML; 22 | 23 | public const MIN_MAX = <<<'HTML' 24 | 25 | HTML; 26 | 27 | public const CENTRALIZED = <<<'HTML' 28 | 29 | HTML; 30 | 31 | public const SELECTABLE = <<<'HTML' 32 | 33 | HTML; 34 | 35 | public const DELAY = <<<'HTML' 36 | 37 | HTML; 38 | 39 | public const ICON = <<<'HTML' 40 | 41 | HTML; 42 | 43 | public const PERSONALIZATION = <<<'HTML' 44 | TallStackUi::personalize() 45 | ->form('number') 46 | ->block('block', 'classes'); 47 | HTML; 48 | } 49 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Form/Password.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const ASTERISK = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const CAPS_LOCK = <<<'HTML' 20 | 21 | 22 | 23 | 24 | HTML; 25 | 26 | public const FORMAT_VALIDATOR = <<<'HTML' 27 | 28 | HTML; 29 | 30 | public const FORMAT_VALIDATOR_WITHOUT_RULES = <<<'HTML' 31 | 32 | HTML; 33 | 34 | public const PASSWORD_GENERATOR = <<<'HTML' 35 | 36 | HTML; 37 | 38 | public const PASSWORD_GENERATOR_WITHOUT_RULES = <<<'HTML' 39 | 40 | HTML; 41 | 42 | public const ALGORITHM = <<<'HTML' 43 | 50 | HTML; 51 | 52 | public const TYPING_ONLY = <<<'HTML' 53 | 54 | HTML; 55 | 56 | public const EVENTS = <<<'HTML' 57 | 62 | HTML; 63 | 64 | public const PERSONALIZATION = <<<'HTML' 65 | TallStackUi::personalize() 66 | ->form('password') 67 | ->block('block', 'classes'); 68 | HTML; 69 | } 70 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Form/Pin.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const PREFIX = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const CLEAR = <<<'HTML' 20 | 21 | HTML; 22 | 23 | public const MASKS = <<<'HTML' 24 | 25 | 26 | 27 | HTML; 28 | 29 | public const EVENTS = <<<'HTML' 30 | 31 | 32 | 33 | HTML; 34 | 35 | public const PERSONALIZATION = <<<'HTML' 36 | TallStackUi::personalize() 37 | ->form('pin') 38 | ->block('block', 'classes'); 39 | HTML; 40 | } 41 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Form/Range.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const SIZES = <<<'HTML' 16 | 17 | 18 | 19 | HTML; 20 | 21 | public const COLORS = <<<'HTML' 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | HTML; 48 | 49 | public const PERSONALIZATION = <<<'HTML' 50 | TallStackUi::personalize() 51 | ->form('range') 52 | ->block('block', 'classes'); 53 | HTML; 54 | } 55 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Form/Tag.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const LIMIT = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const PREFIX = <<<'HTML' 20 | 21 | HTML; 22 | 23 | public const EVENTS = <<<'HTML' 24 | 28 | 29 | 33 | HTML; 34 | 35 | public const PERSONALIZATION = <<<'HTML' 36 | TallStackUi::personalize() 37 | ->form('tag') 38 | ->block('block', 'classes'); 39 | HTML; 40 | } 41 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Form/Textarea.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const ASTERISK = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const RESIZE = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const RESIZE_AUTO = <<<'HTML' 20 | 21 | HTML; 22 | 23 | public const LABEL_HINT = <<<'HTML' 24 | 25 | HTML; 26 | 27 | public const COUNT = <<<'HTML' 28 |
29 | 30 | 31 | 32 | 33 |
34 | HTML; 35 | 36 | public const PERSONALIZATION = <<<'HTML' 37 | TallStackUi::personalize() 38 | ->form('textarea') 39 | ->block('block', 'classes'); 40 | HTML; 41 | } 42 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Form/Time.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const FORMATS = <<<'HTML' 16 | 17 | 18 | 19 | 20 | 21 | HTML; 22 | 23 | public const MIN_MAX = <<<'HTML' 24 | 25 | 26 | 27 | 28 | 29 | HTML; 30 | 31 | public const REQUIRED = <<<'HTML' 32 | 33 | HTML; 34 | 35 | public const HELPER = <<<'HTML' 36 | 37 | HTML; 38 | 39 | public const STEP = <<<'HTML' 40 | 41 | HTML; 42 | 43 | public const FOOTER_SLOT = <<<'HTML' 44 | 45 | 46 | Footer Slot 47 | 48 | 49 | HTML; 50 | 51 | public const EVENTS = <<<'HTML' 52 | 55 | HTML; 56 | 57 | public const PERSONALIZATION = <<<'HTML' 58 | TallStackUi::personalize() 59 | ->form('time') 60 | ->block('block', 'classes'); 61 | HTML; 62 | } 63 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Helpers/DarkTheme.php: -------------------------------------------------------------------------------- 1 | {{-- [tl! highlight] --}} 21 | 22 | 23 | HTML; 24 | 25 | public const BODY = <<<'HTML' 26 | {{-- [tl! highlight] --}} 27 | 28 | 29 | HTML; 30 | 31 | public const CUSTOMIZED = <<<'HTML' 32 | {{-- [tl! highlight] --}} 33 | 34 | 35 | HTML; 36 | 37 | public const DARK = <<<'HTML' 38 | {{-- [tl! highlight] --}} 39 | 40 | 41 | HTML; 42 | 43 | public const BUTTON = <<<'HTML' 44 | Light / Dark Mode 45 | HTML; 46 | 47 | public const ASSETS = <<<'HTML' 48 | npm run build && php artisan optimize:clear 49 | HTML; 50 | 51 | public const EXAMPLE = <<<'HTML' 52 |

Hello World

53 | HTML; 54 | } 55 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Helpers/DebugMode.php: -------------------------------------------------------------------------------- 1 | [ 22 | 'status' => env('TALLSTACKUI_DEBUG_MODE', false), 23 | 24 | /* 25 | |---------------------------------------------------------------------- 26 | | Controls the environments where the debug mode can be enabled. 27 | |---------------------------------------------------------------------- 28 | */ 29 | 'environments' => [ 30 | 'local', 31 | 'sandbox', 32 | 'staging', 33 | ], 34 | 35 | /* 36 | |---------------------------------------------------------------------- 37 | | Ignore debug mode for specific components. 38 | |---------------------------------------------------------------------- 39 | */ 40 | 'ignore' => [ 41 | // Components\Alert::class, 42 | // Components\Avatar::class 43 | ], 44 | ], 45 | 46 | // ... 47 | HTML; 48 | } 49 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Helpers/EnvBar.php: -------------------------------------------------------------------------------- 1 | email, [ 28 | 'admin@my-app.com', 29 | 'jhon.doe@my-app.com' 30 | ]); 31 | }); 32 | } 33 | } 34 | HTML; 35 | 36 | public const COLORS = <<<'HTML' 37 | // ... 38 | 39 | 'environments' => [ 40 | 'local' => 'green', 41 | 'staging' => 'yellow', 42 | 'sandbox' => 'orange', 43 | // 'production' => 'red', 44 | ], 45 | 46 | // ... 47 | HTML; 48 | 49 | public const IGNORES = <<<'HTML' 50 | // ... 51 | 52 | 'ignore_on' => [ 53 | 'pulse.*', 54 | 'horizon.*', 55 | 'telescope.*', 56 | ], 57 | 58 | // ... 59 | HTML; 60 | 61 | public const LINKS = <<<'HTML' 62 | ENVBAR_LINKS="https://google.com.br,https://github.com" 63 | HTML; 64 | 65 | public const LABELS = <<<'HTML' 66 | ENVBAR_LINKS="Google|https://google.com.br,GitHub|https://github.com" 67 | HTML; 68 | 69 | public const FLUSH = <<<'HTML' 70 | php artisan envbar:flush 71 | HTML; 72 | 73 | public const SHOW = <<<'HTML' 74 | php artisan envbar:show 75 | HTML; 76 | } 77 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Personalization/Deep.php: -------------------------------------------------------------------------------- 1 | [ 20 | // ... 21 | 22 | 'input' => Components\Form\Input::class, // [tl! remove] 23 | 'input' => \App\View\Components\Input::class, // [tl! add] 24 | 25 | // ... 26 | ], 27 | HTML; 28 | 29 | public const EXTENDS = <<<'HTML' 30 | namespace App\View\Components; 31 | 32 | use Illuminate\Contracts\View\View; 33 | 34 | class Input extends \TallStackUi\View\Components\Form\Input // [tl! highlight] 35 | { 36 | // 37 | } 38 | HTML; 39 | 40 | public const CUSTOMIZATION = <<<'HTML' 41 | namespace App\View\Components; 42 | 43 | use Illuminate\Contracts\View\View; 44 | 45 | class Input extends \TallStackUi\View\Components\Form\Input 46 | { 47 | public function personalization(): array // [tl! focus:3] 48 | { 49 | return [/* ... */]; 50 | } 51 | } 52 | HTML; 53 | 54 | public const TAILWINDCSS_V3 = <<<'HTML' 55 | content: [ 56 | './app/View/Components/**/*.php', // [tl! highlight] 57 | ], 58 | HTML; 59 | 60 | public const TAILWINDCSS_V4 = <<<'HTML' 61 | @source '../../app/View/Components/**/*.php'; 62 | HTML; 63 | 64 | public const VIEWS = <<<'HTML' 65 | php artisan vendor:publish --tag=tallstackui.views 66 | HTML; 67 | } 68 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/StarterKit.php: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 14 | 15 | HTML; 16 | } 17 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Ui/Clipboard.php: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | TallStackUI 14 | 15 | HTML; 16 | 17 | public const LEFT = <<<'HTML' 18 | 19 | HTML; 20 | 21 | public const LABEL_HINT = <<<'HTML' 22 | 23 | HTML; 24 | 25 | public const SECRET = <<<'HTML' 26 | 27 | HTML; 28 | 29 | public const EVENTS = <<<'HTML' 30 | 31 | TallStackUi 32 | 33 | HTML; 34 | 35 | public const ICON = <<<'HTML' 36 | 37 | 38 | 39 | 40 | 41 | TallStackUI 42 | 43 | HTML; 44 | 45 | public const DIFFERENT_ICONS = <<<'HTML' 46 | 49 | HTML; 50 | 51 | public const PERSONALIZATION = <<<'HTML' 52 | TallStackUi::personalize() 53 | ->clipboard() 54 | ->block('block', 'classes'); 55 | HTML; 56 | } 57 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Ui/Environment.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const ROUND = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const SQUARE = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const SIZES = <<<'HTML' 20 | 21 | 22 | 23 | 24 | HTML; 25 | 26 | public const WITHOUT_BRANCH = <<<'HTML' 27 | 28 | HTML; 29 | 30 | public const BRANCH_ALGORITHM = <<<'HTML' 31 | use Illuminate\Support\Facades\File; 32 | 33 | private function branch(): ?string 34 | { 35 | // ... 36 | 37 | if (($branch = rescue(fn () => File::get(base_path('.git/HEAD')), report: false)) === null) { 38 | return null; 39 | } 40 | 41 | $string = str($branch); 42 | 43 | if (! $string->contains('ref: refs/heads/')) { 44 | return null; 45 | } 46 | 47 | return $string->replace('ref: refs/heads/', '')->trim()->value(); 48 | } 49 | HTML; 50 | 51 | public const CUSTOM_ALGORITHM = <<<'HTML' 52 | use Illuminate\Support\ServiceProvider; 53 | 54 | class AppServiceProvider extends ServiceProvider 55 | { 56 | public function register(): void 57 | { 58 | // ... 59 | 60 | $this->app->bind('tallstackui::environment::branch', function () { 61 | return 'logic goes here'; 62 | }); 63 | } 64 | } 65 | HTML; 66 | 67 | public const PERSONALIZATION = <<<'HTML' 68 | TallStackUi::personalize() 69 | ->environment() 70 | ->block('block', 'classes'); 71 | HTML; 72 | } 73 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Ui/Error.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const SPECIFIC = <<<'HTML' 12 | 13 | 14 | 15 | 16 | 17 | HTML; 18 | 19 | public const CUSTOMIZED = <<<'HTML' 20 | 21 | HTML; 22 | 23 | public const CLOSE = <<<'HTML' 24 | 25 | HTML; 26 | 27 | public const SLOT = <<<'HTML' 28 | 29 | 30 | 31 | 32 | 33 | 34 |
35 |

36 | Footer Slot 37 |

38 |
39 |
40 |
41 | HTML; 42 | 43 | public const COLORS = <<<'HTML' 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | HTML; 72 | 73 | public const EVENTS = <<<'HTML' 74 | 75 | HTML; 76 | 77 | public const PERSONALIZATION = <<<'HTML' 78 | TallStackUi::personalize() 79 | ->dropdown('errors') 80 | ->block('block', 'classes'); 81 | HTML; 82 | } 83 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Ui/Loading.php: -------------------------------------------------------------------------------- 1 | {{-- [tl! remove] --}} 9 | 10 | {{-- [tl! add] --}} 11 | HTML; 12 | 13 | public const USAGE = <<<'HTML' 14 | 15 | 16 |
17 | {{-- [tl! highlight] --}} 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | HTML; 28 | 29 | public const BASIC = <<<'HTML' 30 | 31 | HTML; 32 | 33 | public const TEXT = <<<'HTML' 34 | 35 |
36 | 37 | Loading ... 38 |
39 |
40 | HTML; 41 | 42 | public const TARGET_DELAY = <<<'HTML' 43 | 44 | 45 | 46 | 47 | 48 | HTML; 49 | 50 | public const PERSONALIZATION = <<<'HTML' 51 | TallStackUi::personalize() 52 | ->loading() 53 | ->block('block', 'classes'); 54 | HTML; 55 | } 56 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Ui/Reaction.php: -------------------------------------------------------------------------------- 1 | 23 | HTML; 24 | 25 | public const BASIC = <<<'HTML' 26 | 27 | HTML; 28 | 29 | public const ANIMATED = <<<'HTML' 30 | 31 | HTML; 32 | 33 | public const POSITION = <<<'HTML' 34 | 35 | 36 | 37 | HTML; 38 | 39 | public const QUANTITY = <<<'HTML' 40 | 41 | HTML; 42 | 43 | public const QUANTITY_BIND = <<<'HTML' 44 | 45 | 46 | 47 | HTML; 48 | 49 | public const ONLY = <<<'HTML' 50 | 72 | 73 | 74 | HTML; 75 | 76 | public const SLOT = <<<'HTML' 77 | 78 | React to the TallStackUI 79 | 80 | HTML; 81 | 82 | public const EVENTS = <<<'HTML' 83 | 84 | HTML; 85 | 86 | public const PERSONALIZATION = <<<'HTML' 87 | TallStackUi::personalize() 88 | ->reaction() 89 | ->block('block', 'classes'); 90 | HTML; 91 | } 92 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Ui/Signature.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const LABEL_HINT = <<<'HTML' 12 | 13 | HTML; 14 | 15 | public const PEN = <<<'HTML' 16 | 17 | HTML; 18 | 19 | public const BACKGROUND = <<<'HTML' 20 | 21 | HTML; 22 | 23 | public const LINE = <<<'HTML' 24 | 25 | HTML; 26 | 27 | public const HEIGHT = <<<'HTML' 28 | 29 | HTML; 30 | 31 | public const CLEARABLE = <<<'HTML' 32 | 33 | HTML; 34 | 35 | public const EXPORTABLE = <<<'HTML' 36 | 37 | 38 | 39 | 40 | HTML; 41 | 42 | public const EVENT = <<<'HTML' 43 | 44 | 45 | 46 | HTML; 47 | 48 | public const PERSONALIZATION = <<<'HTML' 49 | TallStackUi::personalize() 50 | ->signature() 51 | ->block('block', 'classes'); 52 | HTML; 53 | } 54 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Ui/ThemeSwitch.php: -------------------------------------------------------------------------------- 1 | 9 | HTML; 10 | 11 | public const SIZES = <<<'HTML' 12 | 13 | 14 | 15 | 16 | 17 | HTML; 18 | 19 | public const ICONS = <<<'HTML' 20 | 21 | HTML; 22 | 23 | public const PERSONALIZATION = <<<'HTML' 24 | TallStackUi::personalize() 25 | ->themeSwitch() 26 | ->block('block', 'classes'); 27 | HTML; 28 | } 29 | -------------------------------------------------------------------------------- /app/Enums/Examples/V2/Updates.php: -------------------------------------------------------------------------------- 1 | badge() // [tl! highlight] 17 | // Pointing the block... 18 | ->block('wrapper.class') // [tl! highlight] 19 | // Personalizing! 20 | ->replace('rounded-md', 'rounded-sm') // [tl! highlight] 21 | // Sequentially we can... 22 | ->and() // [tl! highlight] 23 | // Personalize other components! 24 | ->avatar() 25 | ->block('content.text.class') 26 | ->prepend('text-2xl'); 27 | } 28 | } 29 | HTML; 30 | } 31 | -------------------------------------------------------------------------------- /app/Exceptions/Handler.php: -------------------------------------------------------------------------------- 1 | reportable(function (Throwable $e) { 19 | // 20 | }); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/Http/Middleware/ShareVersionVariable.php: -------------------------------------------------------------------------------- 1 | current()); 18 | 19 | return $next($request); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/Models/User.php: -------------------------------------------------------------------------------- 1 | 'datetime', 26 | ]; 27 | } 28 | -------------------------------------------------------------------------------- /app/Providers/AppServiceProvider.php: -------------------------------------------------------------------------------- 1 | configureScheme(); 15 | 16 | $this->configureSharedVariables(); 17 | 18 | $this->configurePersonalization(); 19 | } 20 | 21 | private function configureSharedVariables(): void 22 | { 23 | View::share('discord', 'https://discord.gg/sfr66WXh4A'); 24 | 25 | View::share('issues', 'https://github.com/tallstackui/tallstackui/issues/new?assignees=devajmeireles&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D%3A+'); 26 | } 27 | 28 | private function configureScheme(): void 29 | { 30 | URL::forceHttps($this->app->isProduction() || str_contains(config('app.url'), 'ngrok')); 31 | } 32 | 33 | private function configurePersonalization(): void 34 | { 35 | TallStackUi::personalize('alert') 36 | ->scope('circle') 37 | ->block('wrapper') 38 | ->replace('rounded-lg', 'rounded-full'); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/Providers/VoltServiceProvider.php: -------------------------------------------------------------------------------- 1 | parameter('version'))->after('docs/') 27 | ->before('/') 28 | ->value(); 29 | 30 | return $version ?: LATEST_VERSION; 31 | } 32 | 33 | /** 34 | * Get the current route URI. 35 | */ 36 | public function uri(): string 37 | { 38 | return Route::getCurrentRoute()->uri(); 39 | } 40 | 41 | /** 42 | * Get the cache key for the current route. 43 | */ 44 | public function cacheKey(): string 45 | { 46 | return $this->current().'-'.$this->uri(); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/View/Components/Layout.php: -------------------------------------------------------------------------------- 1 | filter(fn (mixed $value) => is_string($value)) 18 | ->filter(fn (string $value) => str_contains($value, 'mapWithKeys(function (string $value, string $key) use ($prefix) { 20 | $value = preg_replace_callback('/(<\/?x-(?!slot:))([^>]*>)/', function (array $matches) use ($prefix) { 21 | return "{$matches[1]}{$prefix}{$matches[2]}"; 22 | }, $value); 23 | 24 | return [$key => $value]; 25 | }) 26 | ->toArray(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /artisan: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | make(Illuminate\Contracts\Console\Kernel::class); 34 | 35 | $status = $kernel->handle( 36 | $input = new Symfony\Component\Console\Input\ArgvInput, 37 | new Symfony\Component\Console\Output\ConsoleOutput 38 | ); 39 | 40 | /* 41 | |-------------------------------------------------------------------------- 42 | | Shutdown The Application 43 | |-------------------------------------------------------------------------- 44 | | 45 | | Once Artisan has finished running, we will fire off the shutdown events 46 | | so that any final work may be done by the application before we shut 47 | | down the process. This is the last thing to happen to the request. 48 | | 49 | */ 50 | 51 | $kernel->terminate($input, $status); 52 | 53 | exit($status); 54 | -------------------------------------------------------------------------------- /bootstrap/app.php: -------------------------------------------------------------------------------- 1 | withRouting( 10 | web: __DIR__.'/../routes/web.php', 11 | api: __DIR__.'/../routes/api.php', 12 | commands: __DIR__.'/../routes/console.php', 13 | health: '/up', 14 | ) 15 | ->withMiddleware(function (Middleware $middleware) { 16 | $middleware->append(RenderTorchlight::class); 17 | }) 18 | ->withExceptions(function (Exceptions $exceptions) { 19 | // 20 | })->create(); 21 | -------------------------------------------------------------------------------- /bootstrap/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /bootstrap/providers.php: -------------------------------------------------------------------------------- 1 | [ 18 | 'domain' => env('MAILGUN_DOMAIN'), 19 | 'secret' => env('MAILGUN_SECRET'), 20 | 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), 21 | 'scheme' => 'https', 22 | ], 23 | 24 | 'postmark' => [ 25 | 'token' => env('POSTMARK_TOKEN'), 26 | ], 27 | 28 | 'ses' => [ 29 | 'key' => env('AWS_ACCESS_KEY_ID'), 30 | 'secret' => env('AWS_SECRET_ACCESS_KEY'), 31 | 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), 32 | ], 33 | 34 | 'github' => [ 35 | 'token' => env('GITHUB_TOKEN'), 36 | ], 37 | 38 | 'algolia' => [ 39 | 'id' => env('ALGOLIA_APP_ID'), 40 | 'secret' => env('ALGOLIA_SECRET'), 41 | ], 42 | ]; 43 | -------------------------------------------------------------------------------- /database/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite* 2 | -------------------------------------------------------------------------------- /database/factories/UserFactory.php: -------------------------------------------------------------------------------- 1 | fake()->name(), 14 | 'email' => fake()->unique()->safeEmail(), 15 | 'email_verified_at' => now(), 16 | 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 17 | 'remember_token' => Str::random(10), 18 | ]; 19 | } 20 | 21 | public function unverified(): static 22 | { 23 | return $this->state(fn (array $attributes) => [ 24 | 'email_verified_at' => null, 25 | ]); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /database/migrations/2014_10_12_000000_create_users_table.php: -------------------------------------------------------------------------------- 1 | id(); 13 | $table->string('name'); 14 | $table->string('username'); 15 | $table->string('email')->unique(); 16 | $table->timestamp('email_verified_at')->nullable(); 17 | $table->string('password'); 18 | $table->rememberToken(); 19 | $table->timestamps(); 20 | }); 21 | } 22 | 23 | public function down(): void 24 | { 25 | Schema::dropIfExists('users'); 26 | } 27 | }; 28 | -------------------------------------------------------------------------------- /database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php: -------------------------------------------------------------------------------- 1 | string('email')->primary(); 13 | $table->string('token'); 14 | $table->timestamp('created_at')->nullable(); 15 | }); 16 | } 17 | 18 | public function down(): void 19 | { 20 | Schema::dropIfExists('password_reset_tokens'); 21 | } 22 | }; 23 | -------------------------------------------------------------------------------- /database/migrations/2019_08_19_000000_create_failed_jobs_table.php: -------------------------------------------------------------------------------- 1 | id(); 13 | $table->string('uuid')->unique(); 14 | $table->text('connection'); 15 | $table->text('queue'); 16 | $table->longText('payload'); 17 | $table->longText('exception'); 18 | $table->timestamp('failed_at')->useCurrent(); 19 | }); 20 | } 21 | 22 | public function down(): void 23 | { 24 | Schema::dropIfExists('failed_jobs'); 25 | } 26 | }; 27 | -------------------------------------------------------------------------------- /database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php: -------------------------------------------------------------------------------- 1 | id(); 13 | $table->morphs('tokenable'); 14 | $table->string('name'); 15 | $table->string('token', 64)->unique(); 16 | $table->text('abilities')->nullable(); 17 | $table->timestamp('last_used_at')->nullable(); 18 | $table->timestamp('expires_at')->nullable(); 19 | $table->timestamps(); 20 | }); 21 | } 22 | 23 | public function down(): void 24 | { 25 | Schema::dropIfExists('personal_access_tokens'); 26 | } 27 | }; 28 | -------------------------------------------------------------------------------- /database/seeders/CreateUserSeeder.php: -------------------------------------------------------------------------------- 1 | 'Taylor Otwell', 'username' => 'taylorotwell', 'email' => 'taylor@laravel.com', 'password' => bcrypt('password')]); 13 | User::create(['name' => 'Nuno Maduro', 'username' => 'nunomaduro', 'email' => 'nuno@laravel.com', 'password' => bcrypt('password')]); 14 | User::create(['name' => 'Dries Vints', 'username' => 'jbrooksuk', 'email' => 'dries@laravel.com', 'password' => bcrypt('password')]); 15 | User::create(['name' => 'Jess Archer', 'username' => 'jessarcher', 'email' => 'jess@laravel.com', 'password' => bcrypt('password')]); 16 | User::create(['name' => 'James Brooks', 'username' => 'jbrooksuk', 'email' => 'james@laravel.com', 'password' => bcrypt('password')]); 17 | User::create(['name' => 'Mohamed Said', 'username' => 'themsaid', 'email' => 'mohamed@laravel.com', 'password' => bcrypt('password')]); 18 | User::create(['name' => 'Tim MacDonald', 'username' => 'timacdonald', 'email' => 'tim@laravel.com', 'password' => bcrypt('password')]); 19 | User::create(['name' => 'Joe Dixon', 'username' => 'joedixon', 'email' => 'joe@laravel.com', 'password' => bcrypt('password')]); 20 | User::create(['name' => 'Mior Muhammad Zaki Mior Khairuddin', 'username' => 'crynobone', 'email' => 'mior@laravel.com', 'password' => bcrypt('password')]); 21 | User::create(['name' => 'Guus Leeuw', 'username' => 'phpguus', 'email' => 'guus@laravel.com', 'password' => bcrypt('password')]); 22 | User::create(['name' => 'Christoph Rumpel', 'username' => 'christophrumpel', 'email' => 'christoph@laravel.com', 'password' => bcrypt('password')]); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /database/seeders/DatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | call(CreateUserSeeder::class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "type": "module", 4 | "scripts": { 5 | "build": "vite build", 6 | "dev": "vite" 7 | }, 8 | "dependencies": { 9 | "@tailwindcss/forms": "^0.5.10", 10 | "@tailwindcss/vite": "^4.0.7", 11 | "autoprefixer": "^10.4.20", 12 | "axios": "^1.7.4", 13 | "concurrently": "^9.0.1", 14 | "laravel-vite-plugin": "^1.0", 15 | "tailwindcss": "^4.0.7", 16 | "vite": "^6.0", 17 | "@docsearch/css": "^3.5.2", 18 | "@docsearch/js": "^3.5.2", 19 | "clipboard": "^2.0.11" 20 | }, 21 | "optionalDependencies": { 22 | "@rollup/rollup-linux-x64-gnu": "4.9.5", 23 | "@tailwindcss/oxide-linux-x64-gnu": "^4.0.1", 24 | "lightningcss-linux-x64-gnu": "^1.29.1" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | tests/Feature 10 | 11 | 12 | 13 | 14 | app 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /pint.json: -------------------------------------------------------------------------------- 1 | { 2 | "preset": "laravel", 3 | "rules": { 4 | "ordered_class_elements": true 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options -MultiViews -Indexes 4 | 5 | 6 | RewriteEngine On 7 | 8 | # Handle Authorization Header 9 | RewriteCond %{HTTP:Authorization} . 10 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 11 | 12 | # Redirect Trailing Slashes If Not A Folder... 13 | RewriteCond %{REQUEST_FILENAME} !-d 14 | RewriteCond %{REQUEST_URI} (.+)/$ 15 | RewriteRule ^ %1 [L,R=301] 16 | 17 | # Send Requests To Front Controller... 18 | RewriteCond %{REQUEST_FILENAME} !-d 19 | RewriteCond %{REQUEST_FILENAME} !-f 20 | RewriteRule ^ index.php [L] 21 | 22 | -------------------------------------------------------------------------------- /public/assets/demo/laravel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/demo/laravel.png -------------------------------------------------------------------------------- /public/assets/demo/livewire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/demo/livewire.png -------------------------------------------------------------------------------- /public/assets/demo/tallstackui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/demo/tallstackui.png -------------------------------------------------------------------------------- /public/assets/images/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/images/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/assets/images/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/images/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/assets/images/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/images/apple-touch-icon.png -------------------------------------------------------------------------------- /public/assets/images/araxis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/images/araxis.png -------------------------------------------------------------------------------- /public/assets/images/env-bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/images/env-bar.png -------------------------------------------------------------------------------- /public/assets/images/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/images/favicon-16x16.png -------------------------------------------------------------------------------- /public/assets/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/images/favicon-32x32.png -------------------------------------------------------------------------------- /public/assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/images/favicon.ico -------------------------------------------------------------------------------- /public/assets/images/find-component-output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/images/find-component-output.png -------------------------------------------------------------------------------- /public/assets/images/og.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/images/og.png -------------------------------------------------------------------------------- /public/assets/images/site.webmanifest: -------------------------------------------------------------------------------- 1 | {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} -------------------------------------------------------------------------------- /public/assets/images/wallpapers/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/images/wallpapers/1.jpg -------------------------------------------------------------------------------- /public/assets/images/wallpapers/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/images/wallpapers/2.jpg -------------------------------------------------------------------------------- /public/assets/images/wallpapers/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/images/wallpapers/3.jpg -------------------------------------------------------------------------------- /public/assets/images/wallpapers/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/images/wallpapers/4.jpg -------------------------------------------------------------------------------- /public/assets/videos/tsui-starter-kit-preview.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/assets/videos/tsui-starter-kit-preview.mp4 -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tallstackui/website/1010058ca89e3f2b9946b2a09704cff8c6f8fe43/public/favicon.ico -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | handleRequest(Request::capture()); 21 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /resources/css/app.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss"; 2 | @import './search.css'; 3 | @import './torchlight.css'; 4 | @import '@docsearch/css/dist/style.css'; 5 | @import '../../vendor/tallstackui/tallstackui/css/v4.css'; 6 | 7 | [x-cloak] { display: none !important; } 8 | 9 | @plugin '@tailwindcss/forms'; 10 | 11 | @source '../../vendor/tallstackui/tallstackui/**/*.php'; 12 | @source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php'; 13 | @source '../../vendor/livewire/flux-pro/stubs/**/*.blade.php'; 14 | @source '../../vendor/livewire/flux/stubs/**/*.blade.php'; 15 | @source '../views'; 16 | 17 | .bg-dots-darker { 18 | background-image: url("data:image/svg+xml,%3Csvg width='30' height='30' viewBox='0 0 30 30' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.22676 0C1.91374 0 2.45351 0.539773 2.45351 1.22676C2.45351 1.91374 1.91374 2.45351 1.22676 2.45351C0.539773 2.45351 0 1.91374 0 1.22676C0 0.539773 0.539773 0 1.22676 0Z' fill='rgba(131,24,67,0.15)'/%3E%3C/svg%3E"); 19 | } 20 | 21 | .bg-dots-white { 22 | background-image: url("data:image/svg+xml,%3Csvg width='30' height='30' viewBox='0 0 30 30' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.22676 0C1.91374 0 2.45351 0.539773 2.45351 1.22676C2.45351 1.91374 1.91374 2.45351 1.22676 2.45351C0.539773 2.45351 0 1.91374 0 1.22676C0 0.539773 0.539773 0 1.22676 0Z' fill='rgba(255,255,255,0.07)'/%3E%3C/svg%3E"); 23 | } 24 | -------------------------------------------------------------------------------- /resources/css/torchlight.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss"; 2 | 3 | @layer utility { 4 | pre { 5 | @apply my-2 overflow-x-auto; 6 | } 7 | 8 | pre code.torchlight { 9 | @apply block p-4 min-w-max; 10 | } 11 | 12 | pre code.torchlight .line { 13 | @apply px-2; 14 | } 15 | 16 | pre code.torchlight .line-number, 17 | pre code.torchlight .summary-caret { 18 | @apply mr-2; 19 | } 20 | 21 | .torchlight.has-focus-lines .line:not(.line-focus) { 22 | transition: filter 0.35s, opacity 0.35s; 23 | filter: blur(.095rem); 24 | opacity: .65; 25 | } 26 | 27 | .torchlight.has-focus-lines:hover .line:not(.line-focus) { 28 | filter: blur(0px); 29 | opacity: 1; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /resources/js/app.js: -------------------------------------------------------------------------------- 1 | import './bootstrap'; 2 | import clipboard from "./modules/clipboard"; 3 | import docsearch from '@docsearch/js'; 4 | 5 | /* clipboard */ 6 | document.addEventListener('alpine:init', () => { 7 | window.Alpine.data('clipboard', clipboard) 8 | }); 9 | 10 | /* algolia */ 11 | docsearch({ 12 | appId: window.algolia_app_id, 13 | apiKey: window.algolia_search_key, 14 | indexName: 'tallstackui', 15 | container: '#docsearch', 16 | insights: true, 17 | debug: false, 18 | searchParameters: { 19 | facetFilters: ['version:' + window.version], 20 | }, 21 | }); 22 | -------------------------------------------------------------------------------- /resources/js/bootstrap.js: -------------------------------------------------------------------------------- 1 | /** 2 | * We'll load the axios HTTP library which allows us to easily issue requests 3 | * to our Laravel back-end. This library automatically handles sending the 4 | * CSRF token as a header based on the value of the "XSRF" token cookie. 5 | */ 6 | 7 | import axios from 'axios'; 8 | window.axios = axios; 9 | 10 | window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 11 | 12 | /** 13 | * Echo exposes an expressive API for subscribing to channels and listening 14 | * for events that are broadcast by Laravel. Echo and event broadcasting 15 | * allows your team to easily build robust real-time web applications. 16 | */ 17 | 18 | // import Echo from 'laravel-echo'; 19 | 20 | // import Pusher from 'pusher-js'; 21 | // window.Pusher = Pusher; 22 | 23 | // window.Echo = new Echo({ 24 | // broadcaster: 'pusher', 25 | // key: import.meta.env.VITE_PUSHER_APP_KEY, 26 | // cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', 27 | // wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, 28 | // wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, 29 | // wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, 30 | // forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', 31 | // enabledTransports: ['ws', 'wss'], 32 | // }); 33 | -------------------------------------------------------------------------------- /resources/js/modules/clipboard.js: -------------------------------------------------------------------------------- 1 | import ClipboardJS from "clipboard/dist/clipboard"; 2 | 3 | export default (text = null, hash = null) => ({ 4 | text: text, 5 | notification: false, 6 | copy() { 7 | if (!text || !hash) { 8 | return; 9 | } 10 | 11 | const clipboard = new ClipboardJS(`[data-ref="${hash}"]`, { 12 | text: () => this.text 13 | }); 14 | 15 | clipboard.on('success', (event) => { 16 | this.notification = true; 17 | 18 | event.clearSelection(); 19 | 20 | setTimeout(() => this.notification = false, 3000); 21 | }); 22 | 23 | clipboard.on('error', () => alert('Failed to copy!')); 24 | }, 25 | raw(text, hash) { 26 | const clipboard = new ClipboardJS(`[data-ref="${hash}"]`, { 27 | text: () => text 28 | }); 29 | 30 | clipboard.on('success', (event) => { 31 | this.notification = true; 32 | 33 | event.clearSelection(); 34 | 35 | setTimeout(() => this.notification = false, 3000); 36 | }); 37 | 38 | clipboard.on('error', () => alert('Failed to copy!')); 39 | } 40 | }) 41 | -------------------------------------------------------------------------------- /resources/views/components/available-configuration.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | This component contains settings available in the configuration file. Click here to learn more. 4 |
5 |
6 | -------------------------------------------------------------------------------- /resources/views/components/back-to-top.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 8 |
9 | -------------------------------------------------------------------------------- /resources/views/components/block.blade.php: -------------------------------------------------------------------------------- 1 | @props(['pink' => null, 'xs' => null]) 2 | 3 | merge([ 4 | 'class' => 'rounded p-1 font-semibold', 5 | ])->class([ 6 | 'bg-gray-300 text-gray-600 dark:bg-gray-800/80 dark:text-white' => ! $pink, 7 | 'bg-pink-200 text-pink-600' => $pink, 8 | 'text-xs' => $xs, 9 | ]) }}>{{ $slot }} 10 | -------------------------------------------------------------------------------- /resources/views/components/code.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'contents' => null, 3 | 'language' => 'php', 4 | 'disableCopy' => null, 5 | 'personalization' => false, 6 | ]) 7 | 8 | @php 9 | $contents ??= $slot->toHtml(); 10 | $margin = $personalization ? 'mt-4' : null; 11 | @endphp 12 | 13 |
14 | @if (!$disableCopy) 15 |
16 | 17 |
18 | @endif 19 |
class(['overflow-auto custom-scrollbar rounded-lg bg-[#292D3E]']) }}>
20 |
21 | -------------------------------------------------------------------------------- /resources/views/components/copy-code.blade.php: -------------------------------------------------------------------------------- 1 | @props(['contents' => null, 'text' => false, 'margin' => null]) 2 | 3 | @php($hash = is_string($contents) ? md5($contents) : md5(json_encode($contents))) 4 | 5 |
6 | 15 |
16 | -------------------------------------------------------------------------------- /resources/views/components/custom-table/index.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 3 | {{ $slot }} 4 |
5 |
6 | -------------------------------------------------------------------------------- /resources/views/components/custom-table/tbody.blade.php: -------------------------------------------------------------------------------- 1 | merge(['class' => 'divide-y divide-gray-200 bg-white dark:bg-gray-800 dark:divide-gray-700/50']) }}> 2 | {{ $slot }} 3 | 4 | -------------------------------------------------------------------------------- /resources/views/components/custom-table/td.blade.php: -------------------------------------------------------------------------------- 1 | @props(['first' => null, 'buttons' => null]) 2 | 3 | class([ 4 | 'whitespace-nowrap py-4 text-sm', 5 | 'pl-4 pr-3 font-medium text-gray-900 dark:text-gray-400 sm:pl-6' => $first, 6 | 'px-3 text-gray-500 dark:text-gray-300' => ! $buttons, 7 | 'relative pl-3 pr-4 text-right font-medium sm:pr-6' => $buttons 8 | ]) }}> 9 | {{ $slot }} 10 | 11 | -------------------------------------------------------------------------------- /resources/views/components/custom-table/th.blade.php: -------------------------------------------------------------------------------- 1 | @props(['first' => null, 'label' => null, 'column' => null, 'sort' => null, 'direction' => null]) 2 | 3 | class([ 4 | 'py-3.5 text-left text-sm font-semibold text-gray-900 dark:text-gray-300', 5 | 'px-3' => ! $first, 6 | 'pl-4 pr-3 sm:pl-6' => $first, 7 | ]) }}> 8 | 10 | 11 | {{ $label ?? $slot }} 12 | 13 | 14 | @if ($sort === $column && $direction === 'asc') 15 | 16 | @elseif ($sort === $column && $direction === 'desc') 17 | 18 | @endif 19 | 20 | @if ($sort !== $column) 21 | 22 | @endif 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /resources/views/components/custom-table/thead.blade.php: -------------------------------------------------------------------------------- 1 | 2 | {{ $slot }} 3 | 4 | -------------------------------------------------------------------------------- /resources/views/components/custom-table/tr.blade.php: -------------------------------------------------------------------------------- 1 | 2 | {{ $slot }} 3 | 4 | -------------------------------------------------------------------------------- /resources/views/components/github.blade.php: -------------------------------------------------------------------------------- 1 | @props(['repository' => false]) 2 | 3 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /resources/views/components/google-analytics.blade.php: -------------------------------------------------------------------------------- 1 | @env('production') 2 | 3 | 4 | 11 | @endenv 12 | -------------------------------------------------------------------------------- /resources/views/components/internals-warning.blade.php: -------------------------------------------------------------------------------- 1 | 2 |

3 | TallStackUI has several components that were created for internal use only. This documentation serves only to reflect the personalizable blocks of these components so that you can customize them using soft or deep personalization. 4 |

5 |
6 | -------------------------------------------------------------------------------- /resources/views/components/layout/banner.blade.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 | 6 |
7 |
8 |
9 |

10 | Powerful suite of Blade components for TALL Stack apps. 11 |

12 |
13 |
14 |
15 | -------------------------------------------------------------------------------- /resources/views/components/layout/header.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | 12 |
13 |
14 | 15 | 16 | 17 | 18 |
19 |
20 | -------------------------------------------------------------------------------- /resources/views/components/layout/menu-badge-new.blade.php: -------------------------------------------------------------------------------- 1 | 2 | NEW 3 | 4 | -------------------------------------------------------------------------------- /resources/views/components/layout/navigation/link.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'text' => null, 3 | 'href' => null, 4 | 'activated' => null, 5 | 'new' => false 6 | ]) 7 | 8 | @php 9 | use Illuminate\Support\Facades\Route; 10 | 11 | $sanitized = fn (string $text) => str($text)->remove(config('app.url')); 12 | 13 | $activated ??= $sanitized($href)->exactly($sanitized(request()->fullUrl())); 14 | @endphp 15 | 16 | class([ 17 | 'transition inline-flex items-center gap-x-2', 18 | 'text-gray-500 dark:text-gray-400' => ! $activated, 19 | 'text-pink-700 dark:text-pink-500' => $activated, 20 | ]) }} wire:navigate> 21 | @if ($activated) 22 | 24 | @endif 25 | {!! $text ?? $slot !!} 26 | @if ($new) 27 | 28 | NEW 29 | 30 | @endif 31 | 32 | -------------------------------------------------------------------------------- /resources/views/components/layout/navigation/version.blade.php: -------------------------------------------------------------------------------- 1 | 26 | -------------------------------------------------------------------------------- /resources/views/components/layout/sidebar/index/index.blade.php: -------------------------------------------------------------------------------- 1 | @props(['title', 'anchor']) 2 | 3 | @php($empty = $slot->isNotEmpty()) 4 | 5 |
  • 6 |

    {{ $title }}

    7 | @if ($slot->isNotEmpty()) 8 |
      9 | {{ $slot }} 10 |
    11 | @endif 12 |
  • 13 | -------------------------------------------------------------------------------- /resources/views/components/layout/sidebar/index/item.blade.php: -------------------------------------------------------------------------------- 1 | @props(['title', 'anchor']) 2 | 3 |
  • 4 | {{ $title }} 6 |
  • 7 | -------------------------------------------------------------------------------- /resources/views/components/layout/sidebar/right.blade.php: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /resources/views/components/old-version-warning.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | You are browsing the docs for an old version of TallStackUI. 4 | Consider upgrade your project to TallStackUI {{ LATEST_VERSION }}. 5 | 6 |
    7 | -------------------------------------------------------------------------------- /resources/views/components/outdated-contente-tooltip.blade.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /resources/views/components/preview.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'id' => uniqid(), 3 | 'contents' => null, 4 | 'title' => null, 5 | 'description' => null, 6 | 'anchor' => null, 7 | 'numbers' => false, 8 | 'background' => true, 9 | 'language' => 'php', 10 | 'disableCopy' => false, 11 | ]) 12 | 13 | @php($anchor ??= str($title)->slug()->lower()) 14 | 15 |
    16 |
    $background])> 17 | {{ $slot }} 18 |
    19 | @if ($contents) 20 |
    21 | 22 |
    23 | @endif 24 |
    25 | -------------------------------------------------------------------------------- /resources/views/components/separator.blade.php: -------------------------------------------------------------------------------- 1 | @props(['text' => null, 'dark' => false]) 2 | 3 |
    merge(['class' => 'relative py-4']) }}> 4 | 7 |
    8 | $dark])> 9 | {!! $text ?? $slot !!} 10 | 11 |
    12 |
    13 | -------------------------------------------------------------------------------- /resources/views/components/svg/sponsors/araxis.blade.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /resources/views/components/svg/sponsors/dothnews.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/views/components/top-bar.blade.php: -------------------------------------------------------------------------------- 1 | @if ($version === 'v2') 2 | 9 | @else 10 | 11 | WARNING! You are browsing the docs for an old version of TallStackUI! 12 | 13 | @endif 14 | -------------------------------------------------------------------------------- /resources/views/components/v2-beta-warning.blade.php: -------------------------------------------------------------------------------- 1 | 2 | {{ $slot->isEmpty() ? '2.x is in public beta while we gather community feedback.' : $slot }} 3 | 4 | -------------------------------------------------------------------------------- /resources/views/components/warning.blade.php: -------------------------------------------------------------------------------- 1 | @props(['text' => null]) 2 | 3 | @php($text ??= $slot->toHtml()) 4 | 5 |
    6 | 7 | {!! $text !!} 8 | 9 |
    10 | -------------------------------------------------------------------------------- /resources/views/documentation/v1/command.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | Commands 4 | 5 | 6 | TallStackUI available commands. 7 | 8 | 9 |

    10 | TallStackUI offers several useful commands to help during the development 11 | process of your projects that use TallStackUI. On this page we will list 12 | all the commands and their references for explanations or details. 13 |

    14 |
    15 | 16 |

    17 | Command to setup icons. See the details of the command and how to use it by clicking here. 18 | 19 |

    20 |
    21 | 22 |

    23 | Command to setup prefix. See the details of the command and how to use it by clicking here. 24 | 25 |

    26 |
    27 | 28 |

    29 | Command used to find component usages in all Blade files. 30 |

    31 | 32 |

    33 | After running the command, you will need to select the component 34 | you want to find usages for, and then the command will list all 35 | the files that use the selected component, and also the line number 36 | where the component is used. When any occurrence is found, the output 37 | will be similar to the following: 38 |

    39 |
    40 | Find Component Command Output 42 |
    43 |
    44 |
    45 | -------------------------------------------------------------------------------- /resources/views/documentation/v1/configuration.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | foreach (apply_prefix($__data) as $key => $value) $$key = $value; 3 | @endphp 4 | 5 | 6 | 7 | Configurations 8 | 9 | 10 | TallStackUI configurations. 11 | 12 | 13 |

    14 | TallStackUI offers a configuration file that allows you to control several things, in addition to 15 | listing all available components for possible personalization, something we will talk about later. 16 | Use this file to configure some things about certain components. 17 |

    18 |

    1. Run the following command to publish the configuration file:

    19 | 20 |
    21 | 22 |
    23 |

    24 | This will be a part of the file content 25 | 26 |

    27 |
    28 | 29 |
    30 |
    31 | -------------------------------------------------------------------------------- /resources/views/documentation/v1/getting-started.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | Get Started 4 | 5 | 6 |

    7 | This is the TallStackUI, a powerful suite of 30+ ready-to-use components for TALL Stack applications. 8 | TallStackUI is unlike anything you've ever seen, from its conception to construction and general 9 | availability. Beforehand we want to tell you a little about our motivation. 10 |

    11 |
    12 | 13 |

    14 | TallStackUI was created by AJ, 15 | a FullStack PHP developer for 10 years, passionate about the Laravel and Livewire ecosystem, especially the TALL Stack, 16 | a universe of possibilities with little time and effort. AJ is an active developer in the community, 17 | contributing to Laravel, Livewire, PestPHP and other open-source solutions. 18 |

    19 |

    20 | Because AJ has several SaaS applications, the motivation for creating TallStackUI was to avoid dependencies 21 | on libraries that over time became outdated, without improvements or new features, generating 22 | possible impacts on large projects that depend on everything working well. 23 |

    24 |

    25 | Feel invited to join our Discord server to interact with the community and get early access to news. 26 |

    27 |
    28 |
    29 | -------------------------------------------------------------------------------- /resources/views/documentation/v1/internal/error.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $personalization = <<<'HTML' 3 | TallStackUi::personalize() 4 | ->form('error') 5 | ->block('block', 'classes'); 6 | HTML; 7 | @endphp 8 | 9 | 10 | 11 | Error Component 12 | 13 | 14 | The generic error component used in form components. 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/views/documentation/v1/internal/floating.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $personalization = <<<'HTML' 3 | TallStackUi::personalize() 4 | ->floating() 5 | ->block('block', 'classes'); 6 | HTML; 7 | @endphp 8 | 9 | 10 | 11 | Floating Component 12 | 13 | 14 | The generic floating component used in: form date, form time, form 15 | password, form upload, form color, dropdown, and select styled. 16 | 17 | 18 | 19 | 20 | 21 | 22 |

    23 | Starting from version 1.34.0 you can individually personalize the floating of each component. 24 | Each component that uses floating has a special floating that allows individual 25 | soft personalization of that component's floating. Here is the list of components that use floating: 26 |

    27 | 36 |
    37 |
    38 | -------------------------------------------------------------------------------- /resources/views/documentation/v1/internal/hint.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $personalization = <<<'HTML' 3 | TallStackUi::personalize() 4 | ->form('hint') 5 | ->block('block', 'classes'); 6 | HTML; 7 | @endphp 8 | 9 | 10 | 11 | Hint Component 12 | 13 | 14 | The generic hint component used in form components. 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/views/documentation/v1/internal/label.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $personalization = <<<'HTML' 3 | TallStackUi::personalize() 4 | ->form('label') 5 | ->block('block', 'classes'); 6 | HTML; 7 | @endphp 8 | 9 | 10 | 11 | Label Component 12 | 13 | 14 | The generic label component used in form components. 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/views/documentation/v1/internal/wrapper.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $personalization['input'] = <<<'HTML' 3 | TallStackUi::personalize() 4 | ->wrapper('input') 5 | ->block('block', 'classes'); 6 | HTML; 7 | 8 | $personalization['radio'] = <<<'HTML' 9 | TallStackUi::personalize() 10 | ->wrapper('radio') 11 | ->block('block', 'classes'); 12 | HTML; 13 | @endphp 14 | 15 | 16 | 17 | Wrapper Component 18 | 19 | 20 | The generic wrapper component used to wrapper form components. 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /resources/views/documentation/v1/personalization/color.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | foreach (apply_prefix($__data) as $key => $value) $$key = $value; 3 | @endphp 4 | 5 | 6 | 7 | Colors 8 | 9 | 10 | The colors personalization. 11 | 12 | 13 |

    14 | All TallStackUI components are based on three custom colors: primary, secondary and dark. Additionally, 15 | all other colors are the original TailwindCSS colors. You can customize the primary, secondary, 16 | and colors to your liking by following the TailwindCSS custom color concept. 17 |

    18 |
    19 | 20 | If you are looking for how to create custom colors, use this guide. 21 | 22 | 23 |

    1. Open the TailwindCSS configuration file and enter the following content:

    24 | 25 | 26 |

    2. Rebuild your assets:

    27 | 28 |
    29 |
    30 | -------------------------------------------------------------------------------- /resources/views/documentation/v1/personalization/concept.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | foreach (apply_prefix($__data) as $key => $value) $$key = $value; 3 | @endphp 4 | 5 | 6 | 7 | Personalization Concepts 8 | 9 | 10 | TallStackUI personalization concepts. 11 | 12 | 13 |

    14 | TallStackUI offers two personalization approaches, one that we call "soft" because it is easy and simple, 15 | and another called "deep" because it actually involves overriding component classes, which will require 16 | more technical knowledge from you. As much as you are free to choose the option you want, 17 | we suggest you opt for soft personalization. 18 |

    19 |
    20 | 21 | 29 | 37 | 38 |
    39 | -------------------------------------------------------------------------------- /resources/views/documentation/v1/translation.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | foreach (apply_prefix($__data) as $key => $value) $$key = $value; 3 | @endphp 4 | 5 | 6 | 7 | Translations 8 | 9 | 10 | TallStackUI translations. 11 | 12 | 13 |

    14 | You are free to customize various texts that are in use in TallStackUI components. 15 |

    16 |

    1. Run the following command to publish the translations file:

    17 | 18 |

    This command will publish the TallStackUI translation files for the root path of your application.

    19 |
    20 | 21 |

    Didn't find the translation file for your language? Collaborate sending us a pull request!

    22 |
    23 |
    24 | -------------------------------------------------------------------------------- /resources/views/documentation/v1/ui/card.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | foreach (apply_prefix($__data) as $key => $value) $$key = $value; 3 | @endphp 4 | 5 | 6 | 7 | Card 8 | 9 | 10 | Card component. 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | TallStackUI 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | TallStackUI 27 | 28 | TallStackUI 29 | 30 | 31 | 32 | 33 | 34 | 35 | TallStackUI 36 | 37 | TallStackUI 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /resources/views/documentation/v1/ui/theme-switch.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | foreach (apply_prefix($__data) as $key => $value) $$key = $value; 3 | @endphp 4 | 5 | 6 | 7 | Theme Switch 8 | 9 | 1.20 10 | 11 | 12 | 13 | Theme switch components. 14 | 15 | 16 | 17 | 18 | 19 |

    20 | As TallStackUI offers a helper 21 | to manipulate the dark theme, starting from version 1.20, a simple 22 | toggle component was introduced with support for manipulating the dark theme state, activating 23 | or deactivating it with the respective sun and moon icons. 24 |

    25 | 26 | You should only use this component if are using the dark theme helper. 27 | 28 |
    29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
    37 | 38 | 39 | 40 | 41 | 42 |
    43 |
    44 |
    45 | 46 | 47 | 48 | 49 | 50 |
    51 | -------------------------------------------------------------------------------- /resources/views/documentation/v1/updates.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | foreach (apply_prefix($__data) as $key => $value) $$key = $value; 3 | @endphp 4 | 5 | 6 | 7 | Updates 8 | 9 | 10 | The TallStackUI update guide. 11 | 12 | 13 |

    14 | As TallStackUI is an actively developed and supported library, it is expected that there will 15 | be many updates. On this page you will find some information about how to update TallStackUI 16 | and also the list of releases, with markings for possible breaking changes that require your attention. 17 |

    18 |
    19 | 20 |

    21 | Updates are delivered daily, in favor of identifying and correcting problems, 22 | or weekly, regarding new content. The main suggestion is to update TallStackUI 23 | periodically. If after an update you notice that something is wrong, check 24 | the version you are on about the release list to identify if there were any 25 | breaking changes. 26 |

    27 |

    Updating all dependencies including TallStackUI:

    28 | 29 |

    Updating only TallStackUI:

    30 | 31 |
    32 | 33 | 34 | 35 |
    36 | -------------------------------------------------------------------------------- /resources/views/documentation/v2/alpine.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | AlpineJS 4 | 5 | 6 |
    7 |

    8 | All JavaScript in TallStackUI is actually code blocks based on AlpineJS, a lightweight framework created 9 | by the same creator of Livewire. For this reason, it is extremely important that AlpineJS is loaded on 10 | every page - for example, loaded by the layout of your application. If you do not load it, several 11 | TallStackUI components will not work, because they depend on AlpineJS-based code. 12 |

    13 |

    14 | At this point you might be thinking: "Livewire 3 delivers AlpineJS automatically! Why should I care about that?". 15 | Well, some inattentive people don't realize that Livewire 3 only delivers AlpineJS automatically when there are Livewire 16 | components on the page. In other words: imagine that you have a dropdown in your layout - offered by TallStackUI, but 17 | there are no Livewire components on the page. What will happen? The dropdown will not work! That's why we recommend "forced" 18 | loading of Livewire with the method below! 19 |

    20 | 21 |
    22 |
    23 |
    24 | -------------------------------------------------------------------------------- /resources/views/documentation/v2/configuration.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | foreach (apply_prefix($__data) as $key => $value) $$key = $value; 3 | @endphp 4 | 5 | 6 | 7 | Configurations 8 | 9 | 10 | TallStackUI configurations. 11 | 12 | 13 |
    14 |

    15 | TallStackUI offers a very complete configuration file that allows you to control many things 16 | related to the behavior of TallStackUI in general. Run the following command to publish the 17 | configuration file so you can get to know it and configure it according to your needs: 18 |

    19 | 20 |

    21 | The configuration file will be published to config/tallstackui.php. You need to keep in mind that your configuration file might be outdated after upgrading TallStackUI to a most recent version, 22 | so it is always important to check if there were updates in the configuration file to synchronize the changes with your published file. 23 |

    24 |
    25 |
    26 |
    27 | -------------------------------------------------------------------------------- /resources/views/documentation/v2/internal/error.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $personalization = <<<'HTML' 3 | TallStackUi::personalize() 4 | ->form('error') 5 | ->block('block', 'classes'); 6 | HTML; 7 | @endphp 8 | 9 | 10 | 11 | Error Component 12 | 13 | 14 | The generic error component used in form components. 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/views/documentation/v2/internal/floating.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $personalization = <<<'HTML' 3 | TallStackUi::personalize() 4 | ->floating() 5 | ->block('block', 'classes'); 6 | HTML; 7 | @endphp 8 | 9 | 10 | 11 | Floating Component 12 | 13 | 14 | The generic floating component used in: form date, form time, form 15 | password, form upload, form color, dropdown, and select styled. 16 | 17 | 18 | 19 | 20 | 21 | 22 |

    23 | You can individually personalize the floating of each component. Each component that uses floating has a special 24 | floating that allows individual soft personalization of that component's floating. Here is 25 | the list of components that use floating: 26 |

    27 | 36 |
    37 |
    38 | -------------------------------------------------------------------------------- /resources/views/documentation/v2/internal/hint.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $personalization = <<<'HTML' 3 | TallStackUi::personalize() 4 | ->form('hint') 5 | ->block('block', 'classes'); 6 | HTML; 7 | @endphp 8 | 9 | 10 | 11 | Hint Component 12 | 13 | 14 | The generic hint component used in form components. 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/views/documentation/v2/internal/label.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $personalization = <<<'HTML' 3 | TallStackUi::personalize() 4 | ->form('label') 5 | ->block('block', 'classes'); 6 | HTML; 7 | @endphp 8 | 9 | 10 | 11 | Label Component 12 | 13 | 14 | The generic label component used in form components. 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/views/documentation/v2/internal/wrapper.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $personalization['input'] = <<<'HTML' 3 | TallStackUi::personalize() 4 | ->wrapper('input') 5 | ->block('block', 'classes'); 6 | HTML; 7 | 8 | $personalization['radio'] = <<<'HTML' 9 | TallStackUi::personalize() 10 | ->wrapper('radio') 11 | ->block('block', 'classes'); 12 | HTML; 13 | @endphp 14 | 15 | 16 | 17 | Wrapper Component 18 | 19 | 20 | The generic wrapper component used to wrapper form components. 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /resources/views/documentation/v2/personalization/concept.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | Personalization Concepts 4 | 5 | 6 | TallStackUI personalization concepts. 7 | 8 | 9 |

    10 | TallStackUI offers two personalization approaches. One that we call soft because it is easy and simple, 11 | and another called deep because it actually involves overriding component classes, which will require 12 | more technical knowledge from you. As much as you are free to choose the option you want, we suggest you opt for soft whenever possible. 13 |

    14 |
    15 | 16 | 17 | 18 | Soft Personalization 19 | 20 | 21 | 22 | 23 | 24 | Deep Personalization 25 | 26 | 27 | 28 | 29 |
    30 | -------------------------------------------------------------------------------- /resources/views/documentation/v2/translation.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | foreach (apply_prefix($__data) as $key => $value) $$key = $value; 3 | @endphp 4 | 5 | 6 | 7 | Translations 8 | 9 | 10 | TallStackUI translations. 11 | 12 | 13 |
    14 |

    15 | You have the freedom to customize various texts that are used internally in TallStackUI components. 16 | While some texts can also be customized as placeholders in their respective components - such as: 17 | table and select.styled components, the general defaults are tied to translation files. 18 | Run the following command to publish the translation files: 19 |

    20 | 21 |

    22 | The translation files will be published to lang/vendor/tallstack-ui. 23 |

    24 |
    25 |
    26 | 27 | Didn't find the translation file for your language? 28 | Collaborate sending us a pull request adding your language! 29 | 30 |
    31 | -------------------------------------------------------------------------------- /resources/views/documentation/v2/ui/theme-switch.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | foreach (apply_prefix($__data) as $key => $value) $$key = $value; 3 | @endphp 4 | 5 | 6 | 7 | Theme Switch 8 | 9 | 10 | Theme switch component. 11 | 12 | 13 | 14 | 15 | 16 | You should only use this component if are using the dark theme helper. 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
    26 | 27 | 28 | 29 | 30 | 31 |
    32 |
    33 |
    34 | 35 | 36 | 37 | 38 | 39 |
    40 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation-settings.blade.php: -------------------------------------------------------------------------------- 1 | ['nullable', 'max:10'], 'tailwindcss' => ['boolean']]); 9 | 10 | mount(function (): void { 11 | $this->prefix = Cookie::get('prefix'); 12 | 13 | $this->tailwindcss = (bool) Cookie::get('tailwindcss'); 14 | }); 15 | 16 | $save = function (): void { 17 | $this->withValidator(function (\Illuminate\Validation\Validator $validator) { 18 | $validator->after(function ($validator) { 19 | if ($this->prefix && !preg_match('/^[A-Za-z-]+$/', $this->prefix)) { 20 | return $validator->errors()->add('prefix', 'The prefix must contain only letters and dashes.'); 21 | } 22 | }); 23 | })->validate(); 24 | 25 | Cookie::queue(blank($this->prefix) ? Cookie::forget('prefix'): Cookie::forever('prefix', $this->prefix)); 26 | Cookie::queue(Cookie::forever('tailwindcss', $this->tailwindcss)); 27 | 28 | $this->js(<< 34 | 35 |
    36 | 40 |

    41 | You can use this form to configure all configurable aspects of the TallStackUI docs. 42 |

    43 |
    44 | 45 | 46 | Component Prefix 47 | 48 | 49 | 50 | 51 | 52 | 53 | SAVE 54 | 55 | 56 |
    57 |
    58 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/form/currency.blade.php: -------------------------------------------------------------------------------- 1 | 6 | 7 |
    8 |
    9 | 10 | Value Binded: {{ $value }} 11 |
    12 |
    13 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/form/pin.blade.php: -------------------------------------------------------------------------------- 1 | 8 | 9 |
    10 | 11 |
    12 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/form/upload/static.blade.php: -------------------------------------------------------------------------------- 1 | photos = collect(File::allFiles(public_path('assets/demo')))->map(fn (SplFileInfo $file) => [ 18 | 'name' => $file->getFilename(), 19 | 'extension' => $file->getExtension(), 20 | 'size' => $file->getSize(), 21 | 'path' => $file->getPath(), 22 | 'url' => '/assets/demo/'.$file->getFilename(), 23 | ])->toArray(); 24 | } 25 | 26 | public function deleteUpload(array $contents): void 27 | { 28 | $this->dialog() 29 | ->error('Ooops!', 'This is a demonstration only 😜') 30 | ->send(); 31 | } 32 | } ?> 33 | 34 |
    35 | 42 |
    43 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/helpers/debug.blade.php: -------------------------------------------------------------------------------- 1 | set('tallstackui.debug.status', true); 11 | 12 | config()->set('tallstackui.debug.environments', ['local', 'production']); 13 | } 14 | 15 | public function rendered(): void 16 | { 17 | config()->set('tallstackui.debug.status', false); 18 | } 19 | } ?> 20 | 21 |
    22 | 23 |
    24 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/interactions/banner/examples.blade.php: -------------------------------------------------------------------------------- 1 | banner() 12 | ->close() 13 | ->success('This is a banner dispatched through Livewire. Will disappear in 5 seconds.') 14 | ->leave(5) 15 | ->send(); 16 | } 17 | } ?> 18 | 19 |
    20 | Send 21 |
    22 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/interactions/dialog/confirmation.blade.php: -------------------------------------------------------------------------------- 1 | dialog() 13 | ->question('Warning!', 'Are you sure?') 14 | ->confirm('Confirm', 'confirmed', 'Confirmed Successfully') 15 | ->cancel('Cancel', 'cancelled', 'Cancelled Successfully') 16 | ->send(); 17 | } 18 | 19 | public function confirmed(string $message): void 20 | { 21 | $this->dialog()->success('Success', $message)->send(); 22 | } 23 | 24 | public function cancelled(string $message): void 25 | { 26 | $this->dialog()->error('Cancelled', $message)->send(); 27 | } 28 | } ?> 29 | 30 |
    31 | Confirm 32 |
    33 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/interactions/dialog/events.blade.php: -------------------------------------------------------------------------------- 1 | events = true; 15 | 16 | $this->dialog() 17 | ->question('Warning!', 'Are you sure?') 18 | ->confirm('Confirm', 'confirmed', 'Confirmed Successfully') 19 | ->cancel('Cancel', 'cancelled', 'Cancelled Successfully') 20 | ->send(); 21 | } 22 | 23 | public function confirmed(string $message): void 24 | { 25 | $this->dialog()->success('Success', $message)->send(); 26 | 27 | $this->events = false; 28 | } 29 | 30 | public function cancelled(string $message): void 31 | { 32 | $this->dialog()->error('Cancelled', $message)->send(); 33 | 34 | $this->events = false; 35 | } 36 | } ?> 37 | 38 |
    41 | Confirm 42 |
    43 | 44 | 52 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/interactions/dialog/examples.blade.php: -------------------------------------------------------------------------------- 1 | dialog()->success('Success', 'This is a success message.')->send(); 12 | } 13 | 14 | public function error(): void 15 | { 16 | $this->dialog()->error('Error', 'This is an error message.')->send(); 17 | } 18 | 19 | public function warning(): void 20 | { 21 | $this->dialog()->warning('Warning', 'This is a warning message.')->send(); 22 | } 23 | 24 | public function info(): void 25 | { 26 | $this->dialog()->info('Info', 'This is an info message.')->send(); 27 | } 28 | } ?> 29 | 30 |
    31 | Success 32 | Error 33 | Warning 34 | Info 35 |
    36 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/interactions/toast/confirmation.blade.php: -------------------------------------------------------------------------------- 1 | toast() 13 | ->question('Warning!', 'Are you sure?') 14 | ->confirm('Confirm', 'confirmed', 'Confirmed Successfully') 15 | ->cancel('Cancel', 'cancelled', 'Cancelled Successfully') 16 | ->send(); 17 | } 18 | 19 | public function confirmed(string $message): void 20 | { 21 | $this->toast()->success('Success', $message)->send(); 22 | } 23 | 24 | public function cancelled(string $message): void 25 | { 26 | $this->toast()->error('Cancelled', $message)->send(); 27 | } 28 | } ?> 29 | 30 |
    31 | Confirm 32 |
    33 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/interactions/toast/events.blade.php: -------------------------------------------------------------------------------- 1 | toast() 13 | ->question('Warning!', 'Are you sure?') 14 | ->confirm('Confirm', 'confirmed', 'Confirmed Successfully') 15 | ->cancel('Cancel', 'cancelled', 'Cancelled Successfully') 16 | ->send(); 17 | } 18 | 19 | public function confirmed(string $message): void 20 | { 21 | $this->toast()->success('Success', $message)->send(); 22 | } 23 | 24 | public function cancelled(string $message): void 25 | { 26 | $this->toast()->error('Cancelled', $message)->send(); 27 | } 28 | } ?> 29 | 30 |
    33 | Confirm 34 |
    35 | 36 | 44 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/interactions/toast/examples.blade.php: -------------------------------------------------------------------------------- 1 | toast()->success('Success', 'This is a success message.')->send(); 12 | } 13 | 14 | public function error(): void 15 | { 16 | $this->toast()->error('Error', 'This is an error message.')->send(); 17 | } 18 | 19 | public function warning(): void 20 | { 21 | $this->toast()->warning('Warning', 'This is a warning message.')->send(); 22 | } 23 | 24 | public function info(): void 25 | { 26 | $this->toast()->info('Info', 'This is an info message.')->send(); 27 | } 28 | } ?> 29 | 30 |
    31 | Success 32 | Error 33 | Warning 34 | Info 35 |
    36 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/interactions/toast/expandable.blade.php: -------------------------------------------------------------------------------- 1 | toast() 12 | ->expandable() 13 | ->success('Success', 'When the description has more than 30 characters, the toast can be optionally expandable.') 14 | ->send(); 15 | } 16 | } ?> 17 | 18 |
    19 | Show Expandable 20 |
    21 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/interactions/toast/persistent.blade.php: -------------------------------------------------------------------------------- 1 | toast() 12 | ->persistent() 13 | ->success('Success', 'This is a persistent toast.') 14 | ->send(); 15 | } 16 | } ?> 17 | 18 |
    19 | Show Persistent 20 |
    21 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/interactions/toast/position.blade.php: -------------------------------------------------------------------------------- 1 | toast() 12 | ->position('bottom-left') 13 | ->success('Foo') 14 | ->send(); 15 | } 16 | 17 | public function bottomRight(): void 18 | { 19 | $this->toast() 20 | ->position('bottom-right') 21 | ->success('Foo') 22 | ->send(); 23 | } 24 | 25 | public function topRight(): void 26 | { 27 | $this->toast() 28 | ->position('top-right') 29 | ->success('Foo') 30 | ->send(); 31 | } 32 | 33 | public function topLeft(): void 34 | { 35 | $this->toast() 36 | ->position('top-left') 37 | ->success('Foo') 38 | ->send(); 39 | } 40 | } ?> 41 | 42 |
    43 | Bottom Left 44 | Bottom Right 45 | Top Left 46 | Top Right 47 |
    48 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/interactions/toast/timeout.blade.php: -------------------------------------------------------------------------------- 1 | toast() 12 | ->timeout(seconds: 10) 13 | ->success('Success', 'This is a success message.') 14 | ->send(); 15 | } 16 | } ?> 17 | 18 |
    19 | 10 seconds 20 |
    21 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/modal/customentangle.blade.php: -------------------------------------------------------------------------------- 1 | 8 | 9 |
    10 | 11 | TallStackUI 12 | 13 | 14 | Open Modal 15 | 16 |
    17 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/modal/entangle.blade.php: -------------------------------------------------------------------------------- 1 | 8 | 9 |
    10 | 11 | TallStackUI 12 | 13 | 14 | Open Modal 15 | 16 |
    17 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/releases.blade.php: -------------------------------------------------------------------------------- 1 | filter(fn (array $release) => $release['draft'] === false && $release['prerelease'] === false) 20 | ->when($this->breaking, fn (Collection $releases) => $releases->filter(fn($release) => str_contains($release['body'], 'Breaking Change'))) 21 | ->map(function (array $release) { 22 | return [ 23 | 'version' => $release['name'], 24 | 'body' => $release['body'], 25 | 'url' => $release['html_url'], 26 | 'date' => Carbon::parse($release['created_at'])->format('m/d/Y'), 27 | ]; 28 | }); 29 | 30 | return [ 31 | 'headers' => [ 32 | ['index' => 'version', 'label' => 'Version'], 33 | ['index' => 'date', 'label' => 'Date Released'], 34 | ['index' => 'action'] 35 | ], 36 | 'rows' => new LengthAwarePaginator($releases->forPage($this->getPage(), 10), $releases->count(), 10, $this->getPage()) 37 | ]; 38 | } 39 | } ?> 40 | 41 |
    42 |
    43 | 44 |
    45 | 46 | @interact('column_action', $row) 47 |
    48 | 49 | @if (str_contains($row['body'], 'Breaking Change')) 50 | Breaking Changes 51 | @endif 52 |
    53 | @endinteract 54 |
    55 |
    56 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/slide/customentangle.blade.php: -------------------------------------------------------------------------------- 1 | 8 | 9 |
    10 | 11 | TallStackUI 12 | 13 | 14 | Open Slide 15 | 16 |
    17 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/slide/entangle.blade.php: -------------------------------------------------------------------------------- 1 | 8 | 9 |
    10 | 11 | TallStackUI 12 | 13 | 14 | Open Slide 15 | 16 |
    17 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/ui/boolean.blade.php: -------------------------------------------------------------------------------- 1 | toast() 12 | ->success('Clicked!') 13 | ->send(); 14 | } 15 | } ?> 16 | 17 |
    18 | 19 |
    20 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/ui/button.blade.php: -------------------------------------------------------------------------------- 1 | 24 | 25 |
    26 | @if ($model === 1) 27 | @if ($type === 1) 28 | 29 | Basic 30 | 31 | @elseif ($type === 2) 32 | 33 | Loading Target 34 | 35 | @else 36 | 37 | Delay Control 38 | 39 | @endif 40 | @else 41 | @if ($type === 1) 42 | 43 | @elseif ($type === 2) 44 | 45 | @else 46 | 47 | @endif 48 | @endif 49 |
    50 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/ui/errors.blade.php: -------------------------------------------------------------------------------- 1 | addError('name', 'The name field is required.'); 16 | $this->addError('description', 'The description field is required.'); 17 | } 18 | } ?> 19 | 20 |
    21 | @if ($events) 22 | 23 | @else 24 | @if (!$slot) 25 | 26 | @else 27 | 28 | 29 |
    30 |

    31 | Footer Slot 32 |

    33 |
    34 |
    35 |
    36 | @endif 37 | @endif 38 |
    39 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/ui/key-value.blade.php: -------------------------------------------------------------------------------- 1 | 'php', 13 | 'value' => 'Laravel', 14 | ], 15 | [ 16 | 'key' => 'vuejs', 17 | 'value' => 'NuxtJS', 18 | ], 19 | ]; 20 | 21 | public array $empty = [ 22 | [ 23 | 'key' => '', 24 | 'value' => '', 25 | ], 26 | ]; 27 | 28 | public function deleted($index, $row) 29 | { 30 | $this->dialog() 31 | ->success('Deleted', "Key {$row[$index]['key']} deleted successfully.") 32 | ->send(); 33 | } 34 | } ?> 35 | 36 |
    37 | @if ($model === 1) 38 | 39 | @elseif ($model === 2) 40 | 41 | @elseif ($model === 3) 42 | 43 | @elseif ($model === 4) 44 | 45 | @elseif ($model === 5) 46 | 47 | @elseif ($model === 6) 48 | 49 | @elseif ($model === 7) 50 | 51 | @elseif ($model === 8) 52 | 53 | 54 | Header Slot 55 | 56 | 57 | @elseif ($model === 9) 58 | 62 | @endif 63 |
    64 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/ui/loading.blade.php: -------------------------------------------------------------------------------- 1 | 13 | 14 |
    15 | @if ($model === 0) 16 | 17 | 18 | 19 | Show Loading 20 | 21 | @elseif ($model === 1) 22 | 23 |
    24 | 25 | Loading ... 26 |
    27 |
    28 | 29 | 30 | Show Loading 31 | 32 | @elseif ($model === 2) 33 | 34 | 35 | 36 | Show Loading 37 | 38 | @endif 39 |
    40 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/ui/rating.blade.php: -------------------------------------------------------------------------------- 1 | 1, 'rate' => 3]); 6 | 7 | $evaluate = function () { 8 | // 9 | }; 10 | 11 | ?> 12 | 13 |
    14 | @if ($model === 1) 15 | 16 | @elseif ($model === 2) 17 | 18 | @elseif ($model === 3) 19 | 20 | 21 | @elseif ($model === 4) 22 | 23 | 24 | 25 | 26 | @elseif ($model === 5) 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | @elseif ($model === 6) 53 | 54 | @endif 55 |
    56 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/ui/reaction.blade.php: -------------------------------------------------------------------------------- 1 | toast() 16 | ->success('Success', 'You reacted with ' . $reaction) 17 | ->send(); 18 | 19 | $this->quantity++; 20 | } 21 | 22 | public function wow(string $reaction): void 23 | { 24 | $this->toast() 25 | ->success('🚀🚀🚀', 'TallStackUI is the best UI library!') 26 | ->send(); 27 | } 28 | } ?> 29 | 30 |
    31 | @if ($model === 1) 32 | 33 | @elseif ($model === 2) 34 | 35 | @elseif ($model === 3) 36 | 37 | @elseif ($model === 4) 38 | 39 | @elseif ($model === 5) 40 | 41 | @elseif ($model === 6) 42 | 43 | React to the TallStackUI 44 | 45 | @elseif ($model === 7) 46 | 47 | @endif 48 |
    49 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/ui/signature.blade.php: -------------------------------------------------------------------------------- 1 | 8 | 9 |
    10 | @if ($model === 1) 11 | 12 | @elseif ($model === 2) 13 | 14 | @elseif ($model === 3) 15 | 16 | @elseif ($model === 4) 17 | 18 | @elseif ($model === 5) 19 | 20 | @elseif ($model === 6) 21 | 22 | @elseif ($model === 7) 23 | 24 | @elseif ($model === 8) 25 | 26 | @elseif ($model === 9) 27 | 28 | @endif 29 |
    30 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/ui/step.blade.php: -------------------------------------------------------------------------------- 1 | 9 | 10 |
    11 | @if ($live) 12 | 13 | 16 | Step one... 17 | 18 | 21 | Step two... 22 | 23 | 26 | Step three... finished! 27 | 28 | 29 | @else 30 | 31 | 34 | Step one... 35 | 36 | 39 | Step two... 40 | 41 | 44 | Step three... finished! 45 | 46 | 47 | @endif 48 | 49 | @if ($live) 50 |
    51 |

    Selected: {{ $step }}

    52 |
    53 | @else 54 | Change to Step 3 55 | @endif 56 |
    57 | -------------------------------------------------------------------------------- /resources/views/livewire/documentation/ui/tabs.blade.php: -------------------------------------------------------------------------------- 1 | 8 | 9 |
    10 | @if ($live) 11 | 12 | 13 | Tab 1 14 | 15 | 16 | Tab 2 17 | 18 | 19 | Tab 3 20 | 21 | 22 | Tab 4 23 | 24 | 25 | Tab 5 26 | 27 | 28 | @else 29 | 30 | 31 | Tab 1 32 | 33 | 34 | Tab 2 35 | 36 | 37 | Tab 3 38 | 39 | 40 | Tab 4 41 | 42 | 43 | Tab 5 44 | 45 | 46 | @endif 47 | 48 |
    49 |

    Selected: {{ $tab }}

    50 |
    51 | 52 | @if (!$live) 53 | Change to Tab 5 54 | @endif 55 |
    56 | -------------------------------------------------------------------------------- /resources/views/livewire/version-selector.blade.php: -------------------------------------------------------------------------------- 1 | fn() => $this->current()]); 10 | 11 | $change = function (): void { 12 | if ($this->version === 'v2') { 13 | redirect()->away(route('documentation', ['v2', 'installation'])); 14 | } else { 15 | redirect()->away(route('documentation', ['v1', 'getting-started'])); 16 | } 17 | }; 18 | ?> 19 | 20 |
    21 | 25 |
    26 | -------------------------------------------------------------------------------- /resources/views/livewire/welcome/table.blade.php: -------------------------------------------------------------------------------- 1 | 'id', 19 | 'direction' => 'asc', 20 | ]; 21 | 22 | public function with(): array 23 | { 24 | return [ 25 | 'headers' => [ 26 | ['index' => 'id', 'label' => '#'], 27 | ['index' => 'name', 'label' => 'Member'], 28 | ['index' => 'action', 'label' => 'Send Notification', 'sortable' => false], 29 | ], 30 | 'rows' => User::query() 31 | ->when($this->search, fn (Builder $query) => $query->where('name', 'like', "%{$this->search}%")) 32 | ->orderBy(...array_values($this->sort)) 33 | ->paginate($this->quantity) 34 | ->withQueryString() 35 | ]; 36 | } 37 | 38 | public function notify(string $user): void 39 | { 40 | $this->toast() 41 | ->success("Done!", "{$user} will be notified! ✅") 42 | ->send(); 43 | } 44 | }; ?> 45 | 46 |
    47 | 55 | @interact('column_name', $user) 56 |
    57 | {{ $user->name }} 58 | {{ $user->name }} 59 |
    60 | @endinteract 61 | @interact('column_action', $user) 62 | 65 | @endinteract 66 |
    67 |
    68 | -------------------------------------------------------------------------------- /routes/api.php: -------------------------------------------------------------------------------- 1 | get('/users', function (Request $request) { 10 | $selected = json_decode($request->get('selected', ''), true); 11 | 12 | return User::query() 13 | ->when( 14 | $search = $request->get('search'), 15 | fn ($query) => $query->where('name', 'like', "%{$search}%") 16 | ) 17 | ->when(! $search && $selected, function (Builder $query) use ($selected) { 18 | $query->whereIn('id', $selected) 19 | ->orWhere(function (Builder $query) use ($selected) { 20 | $query->whereNotIn('id', $selected) 21 | ->orderBy('created_at'); 22 | }); 23 | }) 24 | ->limit(10) 25 | ->get() 26 | ->map(fn (User $user): array => [ 27 | 'label' => $user->name, 28 | 'value' => $user->id, 29 | 'image' => "https://unavatar.io/github/{$user->username}", 30 | ]); 31 | })->name('api.users'); 32 | -------------------------------------------------------------------------------- /routes/console.php: -------------------------------------------------------------------------------- 1 | everySecond(); 7 | -------------------------------------------------------------------------------- /routes/web.php: -------------------------------------------------------------------------------- 1 | name('issue'); 15 | 16 | Route::middleware(ShareVersionVariable::class) 17 | ->group(function () { 18 | Route::view('/', 'welcome', Example::Welcome->variables())->name('welcome'); 19 | Route::get('/docs/{version}/{main?}/{children?}', PageController::class)->name('documentation'); 20 | }); 21 | -------------------------------------------------------------------------------- /storage/app/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !public/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /storage/app/public/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/.gitignore: -------------------------------------------------------------------------------- 1 | compiled.php 2 | config.php 3 | down 4 | events.scanned.php 5 | maintenance.php 6 | routes.php 7 | routes.scanned.php 8 | schedule-* 9 | services.json 10 | -------------------------------------------------------------------------------- /storage/framework/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !data/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /storage/framework/cache/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/sessions/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/testing/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/views/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /tests/CreatesApplication.php: -------------------------------------------------------------------------------- 1 | make(Kernel::class)->bootstrap(); 18 | 19 | return $app; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /tests/Pest.php: -------------------------------------------------------------------------------- 1 | in('Feature'); 7 | -------------------------------------------------------------------------------- /tests/TestCase.php: -------------------------------------------------------------------------------- 1 |