From 79c7ab2a1b721685a982ae43d91bfba9ecbd17ea Mon Sep 17 00:00:00 2001 From: "Irsyad A. Panjaitan" Date: Thu, 26 Dec 2024 15:38:22 +0700 Subject: [PATCH 1/2] sync --- CHANGELOG.md | 241 +++++----------------- bun.lockb | Bin 289775 -> 303315 bytes composer.lock | 153 +++++--------- package.json | 12 +- resources/js/components/ui/avatar.tsx | 10 +- resources/js/components/ui/button.tsx | 73 ++++--- resources/js/components/ui/card.tsx | 6 +- resources/js/components/ui/checkbox.tsx | 3 +- resources/js/components/ui/container.tsx | 1 + resources/js/components/ui/dialog.tsx | 45 ++-- resources/js/components/ui/dropdown.tsx | 25 ++- resources/js/components/ui/field.tsx | 37 ++-- resources/js/components/ui/form.tsx | 10 +- resources/js/components/ui/heading.tsx | 3 +- resources/js/components/ui/index.ts | 3 + resources/js/components/ui/keyboard.tsx | 7 +- resources/js/components/ui/link.tsx | 11 +- resources/js/components/ui/list-box.tsx | 19 +- resources/js/components/ui/menu.tsx | 52 ++--- resources/js/components/ui/modal.tsx | 18 +- resources/js/components/ui/navbar.tsx | 89 ++++---- resources/js/components/ui/pagination.tsx | 53 ++--- resources/js/components/ui/popover.tsx | 53 +++-- resources/js/components/ui/primitive.tsx | 6 +- resources/js/components/ui/select.tsx | 36 ++-- resources/js/components/ui/separator.tsx | 5 +- resources/js/components/ui/sheet.tsx | 30 +-- resources/js/components/ui/table.tsx | 42 ++-- resources/js/components/ui/text-field.tsx | 3 +- resources/js/components/ui/toast.tsx | 5 +- resources/js/layouts/app-navbar.tsx | 64 +++--- resources/js/pages/home.tsx | 4 +- 32 files changed, 501 insertions(+), 618 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8a538e..3fd2397 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,418 +4,275 @@ ## [1.3.6](https://github.com/justdlabs/inertia.ts/compare/1.3.7...v1.3.6) (2024-12-17) - ### Bug Fixes -* add config ([12f123c](https://github.com/justdlabs/inertia.ts/commit/12f123c1f4313188ae10d9956b346c8f806681a9)) -* deps ([bf0bcf0](https://github.com/justdlabs/inertia.ts/commit/bf0bcf08d7557dbc49f4be54267f82bf722e8669)) -* fix deps ([ed112da](https://github.com/justdlabs/inertia.ts/commit/ed112dafc0c94771b83103fe45ac36dcb52d473c)) -* fix deps ([22316a2](https://github.com/justdlabs/inertia.ts/commit/22316a2726db6c8b798be65d3da3504e27efee39)) - - +- add config ([12f123c](https://github.com/justdlabs/inertia.ts/commit/12f123c1f4313188ae10d9956b346c8f806681a9)) +- deps ([bf0bcf0](https://github.com/justdlabs/inertia.ts/commit/bf0bcf08d7557dbc49f4be54267f82bf722e8669)) +- fix deps ([ed112da](https://github.com/justdlabs/inertia.ts/commit/ed112dafc0c94771b83103fe45ac36dcb52d473c)) +- fix deps ([22316a2](https://github.com/justdlabs/inertia.ts/commit/22316a2726db6c8b798be65d3da3504e27efee39)) ## [1.3.7](https://github.com/justdlabs/inertia.ts/compare/1.3.6...1.3.7) (2024-12-17) - ### Bug Fixes -* fix ([72de2e7](https://github.com/justdlabs/inertia.ts/commit/72de2e7f864d9f828d4ae097563396ef96710033)) - - +- fix ([72de2e7](https://github.com/justdlabs/inertia.ts/commit/72de2e7f864d9f828d4ae097563396ef96710033)) ## [1.3.6](https://github.com/justdlabs/inertia.ts/compare/1.3.5...1.3.6) (2024-12-17) - ### Bug Fixes -* bump to beta 8 of tailwindcss ([163a8e3](https://github.com/justdlabs/inertia.ts/commit/163a8e3d503cb0f2f2d4772ada0853e5398d1acb)) -* sync ([73709ec](https://github.com/justdlabs/inertia.ts/commit/73709ec8f4650c8e618e23ed7d516d54bb0e8448)) - - +- bump to beta 8 of tailwindcss ([163a8e3](https://github.com/justdlabs/inertia.ts/commit/163a8e3d503cb0f2f2d4772ada0853e5398d1acb)) +- sync ([73709ec](https://github.com/justdlabs/inertia.ts/commit/73709ec8f4650c8e618e23ed7d516d54bb0e8448)) ## [1.3.5](https://github.com/justdlabs/inertia.ts/compare/1.3.4...1.3.5) (2024-12-16) - ### Bug Fixes -* add bun to actions ([61be853](https://github.com/justdlabs/inertia.ts/commit/61be85394c620cf504e25cd553e7bedfc2f4f7a9)) - - +- add bun to actions ([61be853](https://github.com/justdlabs/inertia.ts/commit/61be85394c620cf504e25cd553e7bedfc2f4f7a9)) ## [1.3.4](https://github.com/justdlabs/inertia.ts/compare/1.3.3...1.3.4) (2024-12-16) - ### Bug Fixes -* fix actions ([47e3a74](https://github.com/justdlabs/inertia.ts/commit/47e3a745e3668ed145d341d381948369bae4cab1)) - - +- fix actions ([47e3a74](https://github.com/justdlabs/inertia.ts/commit/47e3a745e3668ed145d341d381948369bae4cab1)) ## [1.3.3](https://github.com/justdlabs/inertia.ts/compare/1.3.2...1.3.3) (2024-12-16) - ### Bug Fixes -* input error should not use cn from primitive ([cb816f7](https://github.com/justdlabs/inertia.ts/commit/cb816f7caf6a11f9c7f1d38b8f7e8012bc7aec21)) - - +- input error should not use cn from primitive ([cb816f7](https://github.com/justdlabs/inertia.ts/commit/cb816f7caf6a11f9c7f1d38b8f7e8012bc7aec21)) ## [1.3.2](https://github.com/justdlabs/inertia.ts/compare/1.3.1...1.3.2) (2024-12-16) - ### Bug Fixes -* fix actions to use legacy ([0b691e5](https://github.com/justdlabs/inertia.ts/commit/0b691e538fd53ef7ddd6f35a866f9b6ea6a7f2b0)) - - +- fix actions to use legacy ([0b691e5](https://github.com/justdlabs/inertia.ts/commit/0b691e538fd53ef7ddd6f35a866f9b6ea6a7f2b0)) ## [1.3.1](https://github.com/justdlabs/inertia.ts/compare/1.3.0...1.3.1) (2024-12-16) - - # [1.3.0](https://github.com/justdlabs/inertia.ts/compare/1.2.0...1.3.0) (2024-12-16) - ### Bug Fixes -* little thing ([d7a113c](https://github.com/justdlabs/inertia.ts/commit/d7a113c59f7f29a1103e19c9d71b82296d5758d5)) - +- little thing ([d7a113c](https://github.com/justdlabs/inertia.ts/commit/d7a113c59f7f29a1103e19c9d71b82296d5758d5)) ### Features -* upgrade to react 19 and tailwindcss beta 7 ([afb1cdc](https://github.com/justdlabs/inertia.ts/commit/afb1cdcd98b06126cdb233cb5f6cc2861767c995)) - - +- upgrade to react 19 and tailwindcss beta 7 ([afb1cdc](https://github.com/justdlabs/inertia.ts/commit/afb1cdcd98b06126cdb233cb5f6cc2861767c995)) # [1.2.0](https://github.com/justdlabs/inertia.ts/compare/1.1.8...1.2.0) (2024-12-14) - ### Features -* upgrade to inertia v2 ([fee9000](https://github.com/justdlabs/inertia.ts/commit/fee9000a614d5bfaddda6b39ac8eba392d667443)) - - +- upgrade to inertia v2 ([fee9000](https://github.com/justdlabs/inertia.ts/commit/fee9000a614d5bfaddda6b39ac8eba392d667443)) ## [1.1.8](https://github.com/justdlabs/inertia.ts/compare/1.1.7...1.1.8) (2024-11-20) - ### Bug Fixes -* make it better ([a2c9f43](https://github.com/justdlabs/inertia.ts/commit/a2c9f43a1ee4b8db22bff2dbea5b1de847103303)) - - +- make it better ([a2c9f43](https://github.com/justdlabs/inertia.ts/commit/a2c9f43a1ee4b8db22bff2dbea5b1de847103303)) ## [1.1.7](https://github.com/justdlabs/inertia.ts/compare/1.1.6...1.1.7) (2024-11-18) - ### Bug Fixes -* upgrade icons ([1606bf0](https://github.com/justdlabs/inertia.ts/commit/1606bf09cfa65ba464a0b42b9d7f0dd2b4c8d9c9)) - - +- upgrade icons ([1606bf0](https://github.com/justdlabs/inertia.ts/commit/1606bf09cfa65ba464a0b42b9d7f0dd2b4c8d9c9)) ## [1.1.6](https://github.com/justdlabs/inertia.ts/compare/1.1.5...1.1.6) (2024-11-18) - ### Bug Fixes -* syncing ([1d8f16e](https://github.com/justdlabs/inertia.ts/commit/1d8f16eedeafbc623f69833910740ae36bad2f74)) - - +- syncing ([1d8f16e](https://github.com/justdlabs/inertia.ts/commit/1d8f16eedeafbc623f69833910740ae36bad2f74)) ## [1.1.5](https://github.com/justdlabs/inertia.ts/compare/1.1.4...1.1.5) (2024-11-18) - ### Bug Fixes -* formatting ([fecdd87](https://github.com/justdlabs/inertia.ts/commit/fecdd8733d0a6fdcdd0e8317199fdea2110ba0e4)) -* upgrade ([3f13735](https://github.com/justdlabs/inertia.ts/commit/3f137357d3052ec02fa637af347d282ddf604e9b)) - - +- formatting ([fecdd87](https://github.com/justdlabs/inertia.ts/commit/fecdd8733d0a6fdcdd0e8317199fdea2110ba0e4)) +- upgrade ([3f13735](https://github.com/justdlabs/inertia.ts/commit/3f137357d3052ec02fa637af347d282ddf604e9b)) ## [1.1.4](https://github.com/justdlabs/inertia.ts/compare/1.1.3...1.1.4) (2024-10-26) - ### Bug Fixes -* bump ([f18e3da](https://github.com/justdlabs/inertia.ts/commit/f18e3daa3948c628cda5da5dd8f6bef5454e70af)) - - +- bump ([f18e3da](https://github.com/justdlabs/inertia.ts/commit/f18e3daa3948c628cda5da5dd8f6bef5454e70af)) ## [1.1.3](https://github.com/justdlabs/inertia.ts/compare/1.1.2...1.1.3) (2024-10-26) - ### Bug Fixes -* **app-navbar:** remove max-w-2xl ([1c92708](https://github.com/justdlabs/inertia.ts/commit/1c92708413feda1fc39c02d7b8c0b72b9c59f454)) -* sync navbar ([ebaa12d](https://github.com/justdlabs/inertia.ts/commit/ebaa12df839f89fa79d123379bf9bd45ab646b25)) - - +- **app-navbar:** remove max-w-2xl ([1c92708](https://github.com/justdlabs/inertia.ts/commit/1c92708413feda1fc39c02d7b8c0b72b9c59f454)) +- sync navbar ([ebaa12d](https://github.com/justdlabs/inertia.ts/commit/ebaa12df839f89fa79d123379bf9bd45ab646b25)) ## [1.1.2](https://github.com/justdlabs/inertia.ts/compare/1.1.1...1.1.2) (2024-10-24) - ### Bug Fixes -* fix the navbar ([26859f4](https://github.com/justdlabs/inertia.ts/commit/26859f44dafa5519f46cb88235c3362b8c426548)) - - +- fix the navbar ([26859f4](https://github.com/justdlabs/inertia.ts/commit/26859f44dafa5519f46cb88235c3362b8c426548)) ## [1.1.1](https://github.com/justdlabs/inertia.ts/compare/1.1.0...1.1.1) (2024-10-22) - - # [1.1.0](https://github.com/justdlabs/inertia.ts/compare/1.0.34...1.1.0) (2024-10-22) - ### Bug Fixes -* bump ([9cd9ba5](https://github.com/justdlabs/inertia.ts/commit/9cd9ba563d2107e603e2f68e46aa120a7a02454b)) - +- bump ([9cd9ba5](https://github.com/justdlabs/inertia.ts/commit/9cd9ba563d2107e603e2f68e46aa120a7a02454b)) ### Features -* sync justd ([5ccf885](https://github.com/justdlabs/inertia.ts/commit/5ccf885ca9f09e85e004acc07b006a7b500c1c7c)) - - +- sync justd ([5ccf885](https://github.com/justdlabs/inertia.ts/commit/5ccf885ca9f09e85e004acc07b006a7b500c1c7c)) ## [1.0.34](https://github.com/justdlabs/inertia.ts/compare/1.0.33...1.0.34) (2024-10-17) - ### Bug Fixes -* add flash message to page props ([5693438](https://github.com/justdlabs/inertia.ts/commit/5693438f098252f157fc3edc8f8d285e7a7fe479)) - - +- add flash message to page props ([5693438](https://github.com/justdlabs/inertia.ts/commit/5693438f098252f157fc3edc8f8d285e7a7fe479)) ## [1.0.33](https://github.com/justdlabs/inertia.ts/compare/1.0.32...1.0.33) (2024-10-17) - ### Bug Fixes -* improve the global.d.ts file ([626f55c](https://github.com/justdlabs/inertia.ts/commit/626f55cfc4a5e6f3a17d04db1e95ee37025d0f83)) - - +- improve the global.d.ts file ([626f55c](https://github.com/justdlabs/inertia.ts/commit/626f55cfc4a5e6f3a17d04db1e95ee37025d0f83)) ## [1.0.32](https://github.com/justdlabs/inertia.ts/compare/1.0.31...1.0.32) (2024-10-16) - ### Bug Fixes -* fix routing ssr ([829693d](https://github.com/justdlabs/inertia.ts/commit/829693d03508e0f483c157e988c5350cd04dd39b)) - - +- fix routing ssr ([829693d](https://github.com/justdlabs/inertia.ts/commit/829693d03508e0f483c157e988c5350cd04dd39b)) ## [1.0.31](https://github.com/justdlabs/inertia.ts/compare/1.0.30...1.0.31) (2024-10-16) - ### Bug Fixes -* add run to composer.json ([ad00c97](https://github.com/justdlabs/inertia.ts/commit/ad00c975d4cb8ee502fb03c920cd2b1122adb9f9)) - - +- add run to composer.json ([ad00c97](https://github.com/justdlabs/inertia.ts/commit/ad00c975d4cb8ee502fb03c920cd2b1122adb9f9)) ## [1.0.30](https://github.com/justdlabs/inertia.ts/compare/1.0.29...1.0.30) (2024-10-16) - ### Bug Fixes -* fix app.tsx ([bacb103](https://github.com/justdlabs/inertia.ts/commit/bacb103bf0293d4ddaf68391a55b5337bdc59674)) - - +- fix app.tsx ([bacb103](https://github.com/justdlabs/inertia.ts/commit/bacb103bf0293d4ddaf68391a55b5337bdc59674)) ## [1.0.29](https://github.com/justdlabs/inertia.ts/compare/1.0.28...1.0.29) (2024-10-16) - ### Bug Fixes -* add ziggy location to inertia middleware ([a40dbc6](https://github.com/justdlabs/inertia.ts/commit/a40dbc68fe0650f9f6b8756067932521e45f805b)) - - +- add ziggy location to inertia middleware ([a40dbc6](https://github.com/justdlabs/inertia.ts/commit/a40dbc68fe0650f9f6b8756067932521e45f805b)) ## [1.0.28](https://github.com/justdlabs/inertia.ts/compare/1.0.27...1.0.28) (2024-10-14) - ### Bug Fixes -* fix prettier ([0d32de2](https://github.com/justdlabs/inertia.ts/commit/0d32de2abe4d90fddf448997df697f037bca945b)) - - +- fix prettier ([0d32de2](https://github.com/justdlabs/inertia.ts/commit/0d32de2abe4d90fddf448997df697f037bca945b)) ## [1.0.27](https://github.com/justdlabs/inertia.ts/compare/1.0.26...1.0.27) (2024-10-14) - ### Bug Fixes -* fix providers ([a8fdfb9](https://github.com/justdlabs/inertia.ts/commit/a8fdfb9af7549f1aa448b2e942cca2d6d44c8dfb)) - - +- fix providers ([a8fdfb9](https://github.com/justdlabs/inertia.ts/commit/a8fdfb9af7549f1aa448b2e942cca2d6d44c8dfb)) ## [1.0.26](https://github.com/justdlabs/inertia.ts/compare/1.0.25...1.0.26) (2024-10-13) - ### Bug Fixes -* bumping vendor ([d992964](https://github.com/justdlabs/inertia.ts/commit/d99296422ce7d4bbc8707fc3c505cf0ff6976ed1)) - - +- bumping vendor ([d992964](https://github.com/justdlabs/inertia.ts/commit/d99296422ce7d4bbc8707fc3c505cf0ff6976ed1)) ## [1.0.25](https://github.com/justdlabs/inertia.ts/compare/1.0.24...1.0.25) (2024-10-13) - ### Bug Fixes -* update to latest justd components ([a7aa011](https://github.com/justdlabs/inertia.ts/commit/a7aa011b5b3d4f22d09c0bf06a0c293897ff3c15)) - - +- update to latest justd components ([a7aa011](https://github.com/justdlabs/inertia.ts/commit/a7aa011b5b3d4f22d09c0bf06a0c293897ff3c15)) ## [1.0.24](https://github.com/justdlabs/inertia.ts/compare/1.0.23...1.0.24) (2024-10-08) - ### Bug Fixes -* lfg ([c2cd08f](https://github.com/justdlabs/inertia.ts/commit/c2cd08fcf3872fecc789b10b45c9822639a36a71)) - - +- lfg ([c2cd08f](https://github.com/justdlabs/inertia.ts/commit/c2cd08fcf3872fecc789b10b45c9822639a36a71)) ## [1.0.23](https://github.com/justdlabs/inertia.ts/compare/1.0.22...1.0.23) (2024-10-07) - ### Bug Fixes -* fix t ([9d444ba](https://github.com/justdlabs/inertia.ts/commit/9d444bae7133801275e48fce4688642815755242)) -* upgrade the rac to latest version and sync justd ([9484b63](https://github.com/justdlabs/inertia.ts/commit/9484b63031af882983e33733d0c78adefdb95803)) - - +- fix t ([9d444ba](https://github.com/justdlabs/inertia.ts/commit/9d444bae7133801275e48fce4688642815755242)) +- upgrade the rac to latest version and sync justd ([9484b63](https://github.com/justdlabs/inertia.ts/commit/9484b63031af882983e33733d0c78adefdb95803)) ## [1.0.22](https://github.com/justdlabs/inertia.ts/compare/1.0.21...1.0.22) (2024-09-16) - - ## [1.0.21](https://github.com/justdlabs/inertia.ts/compare/1.0.20...1.0.21) (2024-09-16) - ### Bug Fixes -* fix touch target not being installed ([172d58e](https://github.com/justdlabs/inertia.ts/commit/172d58e58b0bc1c103bd9f3ae4a87bbb774e6dc7)) - - +- fix touch target not being installed ([172d58e](https://github.com/justdlabs/inertia.ts/commit/172d58e58b0bc1c103bd9f3ae4a87bbb774e6dc7)) ## [1.0.20](https://github.com/justdlabs/inertia.ts/compare/1.0.19...1.0.20) (2024-09-16) - ### Bug Fixes -* bump packages ([9a9c2d1](https://github.com/justdlabs/inertia.ts/commit/9a9c2d15ef9cbccb9f104760c2ea9bb2aa9ee03f)) -* refactor all components ([11ea304](https://github.com/justdlabs/inertia.ts/commit/11ea304cba7b5b80c669fd967ed48b47fc339efa)) - - +- bump packages ([9a9c2d1](https://github.com/justdlabs/inertia.ts/commit/9a9c2d15ef9cbccb9f104760c2ea9bb2aa9ee03f)) +- refactor all components ([11ea304](https://github.com/justdlabs/inertia.ts/commit/11ea304cba7b5b80c669fd967ed48b47fc339efa)) ## [1.0.19](https://github.com/justdlabs/inertia.ts/compare/1.0.18...1.0.19) (2024-09-12) - - ## [1.0.18](https://github.com/justdlabs/inertia.ts/compare/1.0.17...1.0.18) (2024-09-09) - - ## [1.0.17](https://github.com/justdlabs/inertia.ts/compare/1.0.16...1.0.17) (2024-09-07) - ### Bug Fixes -* move theme switcher to menu sub ([cac009d](https://github.com/justdlabs/inertia.ts/commit/cac009d266be9c5586ecf1446f3e6859af2e237e)) - - +- move theme switcher to menu sub ([cac009d](https://github.com/justdlabs/inertia.ts/commit/cac009d266be9c5586ecf1446f3e6859af2e237e)) ## [1.0.16](https://github.com/justdlabs/inertia.ts/compare/1.0.15...1.0.16) (2024-09-06) - ### Bug Fixes -* bump ([049a347](https://github.com/justdlabs/inertia.ts/commit/049a347323942bccbd54e3b7081a315a49436d40)) - - +- bump ([049a347](https://github.com/justdlabs/inertia.ts/commit/049a347323942bccbd54e3b7081a315a49436d40)) ## [1.0.15](https://github.com/justdlabs/inertia.ts/compare/1.0.14...1.0.15) (2024-09-01) - - ## [1.0.14](https://github.com/justdlabs/inertia.ts/compare/1.0.13...1.0.14) (2024-08-22) - - ## [1.0.13](https://github.com/justdlabs/inertia.ts/compare/1.0.12...1.0.13) (2024-08-13) - ### Bug Fixes -* fix cmd installation ([4472e9f](https://github.com/justdlabs/inertia.ts/commit/4472e9f599976968594ce3ef1825a186f89910ca)) - - +- fix cmd installation ([4472e9f](https://github.com/justdlabs/inertia.ts/commit/4472e9f599976968594ce3ef1825a186f89910ca)) ## [1.0.12](https://github.com/justdlabs/inertia.ts/compare/1.0.11...1.0.12) (2024-08-13) - ### Bug Fixes -* bump ([9fb1857](https://github.com/justdlabs/inertia.ts/commit/9fb1857d1ca0947d8376787d5f4bdf09c3a8f7d1)) -* bump again ([e42a8d3](https://github.com/justdlabs/inertia.ts/commit/e42a8d361270f1232901067b3fa35869e17ee12b)) - - +- bump ([9fb1857](https://github.com/justdlabs/inertia.ts/commit/9fb1857d1ca0947d8376787d5f4bdf09c3a8f7d1)) +- bump again ([e42a8d3](https://github.com/justdlabs/inertia.ts/commit/e42a8d361270f1232901067b3fa35869e17ee12b)) ## [1.0.11](https://github.com/justdlabs/inertia.ts/compare/1.0.10...1.0.11) (2024-08-13) - ### Bug Fixes -* sync ([46772c9](https://github.com/justdlabs/inertia.ts/commit/46772c90832ca53facd6225fc02d529d12d99b2f)) -* sync latest justd components ([5506cb3](https://github.com/justdlabs/inertia.ts/commit/5506cb3501c97a42d0705af3ebf6df53cff11175)) - - +- sync ([46772c9](https://github.com/justdlabs/inertia.ts/commit/46772c90832ca53facd6225fc02d529d12d99b2f)) +- sync latest justd components ([5506cb3](https://github.com/justdlabs/inertia.ts/commit/5506cb3501c97a42d0705af3ebf6df53cff11175)) ## [1.0.10](https://github.com/justdlabs/inertia.ts/compare/1.0.9...1.0.10) (2024-08-11) - - ## [1.0.9](https://github.com/justdlabs/inertia.ts/compare/1.0.8...1.0.9) (2024-08-10) - - ## [1.0.8](https://github.com/justdlabs/inertia.ts/compare/1.0.7...1.0.8) (2024-08-10) - - ## [1.0.7](https://github.com/justdlabs/inertia.ts/compare/1.0.6...1.0.7) (2024-08-08) - - ## [1.0.6](https://github.com/justdlabs/inertia.ts/compare/1.0.5...1.0.6) (2024-08-07) - - ## [1.0.5](https://github.com/justdlabs/inertia.ts/compare/1.0.4...1.0.5) (2024-08-07) - - ## [1.0.4](https://github.com/justdlabs/inertia.ts/compare/1.0.3...1.0.4) (2024-08-06) - - ## [1.0.3](https://github.com/justdlabs/inertia.ts/compare/1.0.2...1.0.3) (2024-08-05) - - ## [1.0.2](https://github.com/justdlabs/inertia.ts/compare/1.0.1...1.0.2) (2024-08-04) - - ## [1.0.1](https://github.com/justdlabs/inertia.ts/compare/ac5b3945c2cb5576a908939a2b9420b9db05d411...1.0.1) (2024-08-04) - ### Bug Fixes -* make all automate ([ac5b394](https://github.com/justdlabs/inertia.ts/commit/ac5b3945c2cb5576a908939a2b9420b9db05d411)) +- make all automate ([ac5b394](https://github.com/justdlabs/inertia.ts/commit/ac5b3945c2cb5576a908939a2b9420b9db05d411)) ## 1.3.7 (2024-12-17) diff --git a/bun.lockb b/bun.lockb index bd4a019da57ce2e888278105f4b6374935d12f45..44142ddf33232bd1a3600ffecfd882868c94b64f 100755 GIT binary patch delta 62179 zcmeFad0bBU|Nnno7Z+U-Vvt?dEFoKwu7s!v*>{pCO0-O6yUJQwn}b&dV<-D$8DTK? zYJ||(#=h@kFvH9kzsKXe&gI>E#`pdGe7?W$_xAn%G1twb=Xu^=`}6fWuX8%;^x~rZ z`NO3bG^$rW|KYazvy$qa$nSWiP@|dejx3$FYiW_rXRqgt^YZ)5b6)$Eg?0Q~PwiXH za6dma?kA5fC3U*eI$c65*fOxSVLyW{qwx9cS!rviZi#Tv z=}e%*^q{a?D(Q3;Vg2!ixsO)R>Fi;X;Inpr_{CwPqryUmqeCYu>vU)^At)>=jvf3$ zD<2PwtO>(3>jR6X5-L@b^*52eC7}Wi$|J#`*|h39T`Bl~!m=ZQj&hhUVQavT!Ivtq zhv75*DlCWBsisbcz9e|S+QQyLd3N9=GO_+An$3V^{t>k~K#MM6830Ef4a*S*)REQ< z%Lv>omP^nXElmTQf2O#cI%9U534`7Ahi z0>B39Y8iHD4PMafD$RCjsM8@x2`yk*K{Z&8#1@tfe&a0tb+D{&5iBG5wt?(GD(a!{ z-dN_Z3v1zsKf?ig_EfV!!ZPFjCNg7;RpAm@F{C4O?G5BtdJCS1TETE3IY2kHJ~- zarkP7VcBqwhxC_gem7X=+hUgK$r|_ZlpT!G{NY+Y4+{=Tqrix^vS0(vub|nYn*9YG z;)w2P_JU?xwUgzKX&qh%%c%*Ehz^YytJAe?FQ;ZNY;o}Iu#7-&y^M%uYX>=k=-|kx z;7FY=$6Hp|yraxm50;@j49yHYL z;C7*FhjNVEBXHDfNoeXP8~6ep;p&bIj*1BTJXrU6XPvGZ{4iMdcnBPr{@eSlvP3`M(zv^fr@p^Vhn*?mRzIDtI_!6_j<72<8xM;OC!r54 z^EHR%c2^#j+uggqI$c%RE3gd9K3LXM74@^XqeG)Z+1nk1<;sl?92Yn|EZCy!JVeIV zWRSzN8zz_f&qHOr^I_S*Zdg{h1eW_~0&E4?AT8Yomh;mHwjykKSWa|tSWIMslU{Zt zc7%-gKG>4nUrQp240u&!u!a2ty`-HrQg$dFmgzB(Va}r?LdTAV&n3KXlw3J3Au`<& zmb+5uSaqPfEl6iM54c>~QNiJ#a|JKg{Kz0QWPt)l%ast0lHs9I(bfw3fV1Z*D8QAn zYmBVWIZReK0hS$gfaOVVjie5~1N<@Zs2rbF=m_gstXc1|vfN_Wawa6q#sM>oh=_I` z7a1|GTZA&zRL8P-oQ%|6ShiDtytEeh#o_OV&r{`VSQftwPCHw(pTn~HaLoq6vL0*s zoG3X%*7AR8r)R>rm~nv|K$RF-aa2ffSlH+&-7@&BI5IdWBqB6YH!4h?yWKyRGvE!& zj{N&n>k>xADidt$)E|loWO6CQhf6amB4`Y{qT2wU<5~{Oem0(<dB16?{F1Os`SQ{vBNytV+)c_tNBP)!EavmEP9;};@AUhHq7aYVm4M>#h z#2=QIJ1_!gR9AC}{}|WN_r7`O=>W%lxsLjpjLl&*lZP;Ye6E?3yau!9XKN1V`(}%t!p$ zu(gN7Pyt6^JvXiA+~Y4~$66_}qQ1z-sp_iP$T*xg_*kdtuTx>2DrU5J(kO9KdP`8DH%Vb4i;9L^zm&=(Nr1?wXGr)Dek^>qU7!^Gp9g7T(i3%MVuPcHM zRbo0;fF10pP@JXXa8hhuAsc=U%c*O=QX5H>a}qs9f|W~vnOapddQ zYik>pBW%7w<}ZqLmJ14X4jnr(LRU)bNMvwyq$M69Dg?j+7t?jR+OS{1(l5G6o)o`q zlpPrf%c*(^&a>?%eA=%z%MPD~ @iMdtrb^S8qCq}qpiInWiboQk)>I%RgL+7?}g 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�tqM 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 BID7yA delta 56166 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 diff --git a/composer.lock b/composer.lock index 5901433..d4c87ba 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "77fadc747a2eb7ff8fc31cb8520fb04d", + "content-hash": "8e818d0458333ec1a467d9486c82218c", "packages": [ { "name": "amphp/amp", @@ -209,16 +209,16 @@ }, { "name": "amphp/dns", - "version": "v2.2.0", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/amphp/dns.git", - "reference": "758266b0ea7470e2e42cd098493bc6d6c7100cf7" + "reference": "166c43737cef1b77782c648a9d9ed11ee0c9859f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/dns/zipball/758266b0ea7470e2e42cd098493bc6d6c7100cf7", - "reference": "758266b0ea7470e2e42cd098493bc6d6c7100cf7", + "url": "https://api.github.com/repos/amphp/dns/zipball/166c43737cef1b77782c648a9d9ed11ee0c9859f", + "reference": "166c43737cef1b77782c648a9d9ed11ee0c9859f", "shasum": "" }, "require": { @@ -226,9 +226,10 @@ "amphp/byte-stream": "^2", "amphp/cache": "^2", "amphp/parser": "^1", - "amphp/windows-registry": "^1.0.1", + "amphp/process": "^2", "daverandom/libdns": "^2.0.2", "ext-filter": "*", + "ext-json": "*", "php": ">=8.1", "revolt/event-loop": "^1 || ^0.2" }, @@ -274,7 +275,7 @@ "keywords": ["amp", "amphp", "async", "client", "dns", "resolve"], "support": { "issues": "https://github.com/amphp/dns/issues", - "source": "https://github.com/amphp/dns/tree/v2.2.0" + "source": "https://github.com/amphp/dns/tree/v2.3.0" }, "funding": [ { @@ -282,20 +283,20 @@ "type": "github" } ], - "time": "2024-06-02T19:54:12+00:00" + "time": "2024-12-21T01:15:34+00:00" }, { "name": "amphp/parallel", - "version": "v2.3.0", + "version": "v2.3.1", "source": { "type": "git", "url": "https://github.com/amphp/parallel.git", - "reference": "9777db1460d1535bc2a843840684fb1205225b87" + "reference": "5113111de02796a782f5d90767455e7391cca190" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/parallel/zipball/9777db1460d1535bc2a843840684fb1205225b87", - "reference": "9777db1460d1535bc2a843840684fb1205225b87", + "url": "https://api.github.com/repos/amphp/parallel/zipball/5113111de02796a782f5d90767455e7391cca190", + "reference": "5113111de02796a782f5d90767455e7391cca190", "shasum": "" }, "require": { @@ -350,7 +351,7 @@ "keywords": ["async", "asynchronous", "concurrent", "multi-processing", "multi-threading"], "support": { "issues": "https://github.com/amphp/parallel/issues", - "source": "https://github.com/amphp/parallel/tree/v2.3.0" + "source": "https://github.com/amphp/parallel/tree/v2.3.1" }, "funding": [ { @@ -358,7 +359,7 @@ "type": "github" } ], - "time": "2024-09-14T19:16:14+00:00" + "time": "2024-12-21T01:56:09+00:00" }, { "name": "amphp/parser", @@ -721,56 +722,6 @@ ], "time": "2024-08-03T19:31:26+00:00" }, - { - "name": "amphp/windows-registry", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/amphp/windows-registry.git", - "reference": "0d569e8f256cca974e3842b6e78b4e434bf98306" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/windows-registry/zipball/0d569e8f256cca974e3842b6e78b4e434bf98306", - "reference": "0d569e8f256cca974e3842b6e78b4e434bf98306", - "shasum": "" - }, - "require": { - "amphp/byte-stream": "^2", - "amphp/process": "^2", - "php": ">=8.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "^2", - "psalm/phar": "^5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Amp\\WindowsRegistry\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], - "authors": [ - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "Windows Registry Reader.", - "support": { - "issues": "https://github.com/amphp/windows-registry/issues", - "source": "https://github.com/amphp/windows-registry/tree/v1.0.1" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2024-01-30T23:01:51+00:00" - }, { "name": "brick/math", "version": "0.12.1", @@ -1928,16 +1879,16 @@ }, { "name": "laravel/framework", - "version": "v11.35.1", + "version": "v11.36.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "dcfa130ede1a6fa4343dc113410963e791ad34fb" + "reference": "df06f5163f4550641fdf349ebc04916a61135a64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/dcfa130ede1a6fa4343dc113410963e791ad34fb", - "reference": "dcfa130ede1a6fa4343dc113410963e791ad34fb", + "url": "https://api.github.com/repos/laravel/framework/zipball/df06f5163f4550641fdf349ebc04916a61135a64", + "reference": "df06f5163f4550641fdf349ebc04916a61135a64", "shasum": "" }, "require": { @@ -1958,7 +1909,7 @@ "guzzlehttp/uri-template": "^1.0", "laravel/prompts": "^0.1.18|^0.2.0|^0.3.0", "laravel/serializable-closure": "^1.3|^2.0", - "league/commonmark": "^2.2.1", + "league/commonmark": "^2.6", "league/flysystem": "^3.25.1", "league/flysystem-local": "^3.25.1", "league/uri": "^7.5.1", @@ -1973,7 +1924,7 @@ "symfony/console": "^7.0.3", "symfony/error-handler": "^7.0.3", "symfony/finder": "^7.0.3", - "symfony/http-foundation": "^7.0.3", + "symfony/http-foundation": "^7.2.0", "symfony/http-kernel": "^7.0.3", "symfony/mailer": "^7.0.3", "symfony/mime": "^7.0.3", @@ -2134,7 +2085,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-12-12T18:25:58+00:00" + "time": "2024-12-17T22:32:08+00:00" }, { "name": "laravel/prompts", @@ -2193,16 +2144,16 @@ }, { "name": "laravel/sanctum", - "version": "v4.0.6", + "version": "v4.0.7", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "9e069e36d90b1e1f41886efa0fe9800a6b354694" + "reference": "698064236a46df016e64a7eb059b1414e0b281df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/9e069e36d90b1e1f41886efa0fe9800a6b354694", - "reference": "9e069e36d90b1e1f41886efa0fe9800a6b354694", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/698064236a46df016e64a7eb059b1414e0b281df", + "reference": "698064236a46df016e64a7eb059b1414e0b281df", "shasum": "" }, "require": { @@ -2245,20 +2196,20 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2024-11-26T21:18:33+00:00" + "time": "2024-12-11T16:40:21+00:00" }, { "name": "laravel/serializable-closure", - "version": "v2.0.0", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "0d8d3d8086984996df86596a86dea60398093a81" + "reference": "613b2d4998f85564d40497e05e89cb6d9bd1cbe8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/0d8d3d8086984996df86596a86dea60398093a81", - "reference": "0d8d3d8086984996df86596a86dea60398093a81", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/613b2d4998f85564d40497e05e89cb6d9bd1cbe8", + "reference": "613b2d4998f85564d40497e05e89cb6d9bd1cbe8", "shasum": "" }, "require": { @@ -2300,7 +2251,7 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2024-11-19T01:38:44+00:00" + "time": "2024-12-16T15:26:28+00:00" }, { "name": "laravel/tinker", @@ -2972,16 +2923,16 @@ }, { "name": "nesbot/carbon", - "version": "3.8.2", + "version": "3.8.3", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "e1268cdbc486d97ce23fef2c666dc3c6b6de9947" + "reference": "f01cfa96468f4c38325f507ab81a4f1d2cd93cfe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e1268cdbc486d97ce23fef2c666dc3c6b6de9947", - "reference": "e1268cdbc486d97ce23fef2c666dc3c6b6de9947", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/f01cfa96468f4c38325f507ab81a4f1d2cd93cfe", + "reference": "f01cfa96468f4c38325f507ab81a4f1d2cd93cfe", "shasum": "" }, "require": { @@ -3011,15 +2962,15 @@ "bin": ["bin/carbon"], "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.x-dev", - "dev-2.x": "2.x-dev" - }, "laravel": { "providers": ["Carbon\\Laravel\\ServiceProvider"] }, "phpstan": { "includes": ["extension.neon"] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" } }, "autoload": { @@ -3062,7 +3013,7 @@ "type": "tidelift" } ], - "time": "2024-11-07T17:46:48+00:00" + "time": "2024-12-21T18:03:19+00:00" }, { "name": "nette/schema", @@ -6804,31 +6755,33 @@ }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "v2.2.7", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" + "reference": "0d72ac1c00084279c1816675284073c5a337c20d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", - "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d", + "reference": "0d72ac1c00084279c1816675284073c5a337c20d", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^8.5.21 || ^9.5.10" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -6849,9 +6802,9 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0" }, - "time": "2023-12-08T13:03:43+00:00" + "time": "2024-12-21T16:25:41+00:00" }, { "name": "vlucas/phpdotenv", diff --git a/package.json b/package.json index 0135711..d993cff 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,8 @@ "@commitlint/config-conventional": "^19.6.0", "@inertiajs/react": "^2.0.0", "@release-it/bumper": "^6.0.1", - "@release-it/conventional-changelog": "^9.0.3", - "@types/react": "^19.0.1", + "@release-it/conventional-changelog": "^9.0.4", + "@types/react": "^19.0.2", "@types/react-dom": "^19.0.2", "@vitejs/plugin-react": "^4.3.4", "autoprefixer": "^10.4.20", @@ -24,7 +24,7 @@ "prettier": "^3.4.2", "prettier-plugin-organize-imports": "^4.1.0", "prettier-plugin-tailwindcss": "^0.6.9", - "release-it": "^17.10.0", + "release-it": "^17.11.0", "tailwindcss": "^4.0.0-beta.8", "typescript": "^5.7.2", "vite-plugin-watch": "^0.3.1" @@ -33,16 +33,16 @@ "@tailwindcss/vite": "^4.0.0-beta.8", "@types/node": "^22.10.2", "clsx": "^2.1.1", - "justd-icons": "^1.10.4", + "justd-icons": "^1.10.8", "motion": "^11.15.0", "react": "^19.0.0", "react-aria-components": "^1.5.0", "react-dom": "^19.0.0", "sonner": "^1.7.1", - "tailwind-merge": "^2.5.5", + "tailwind-merge": "^2.6.0", "tailwind-variants": "^0.3.0", "tailwindcss-animate": "^1.0.7", - "vite": "^6.0.3" + "vite": "^6.0.6" }, "version": "1.3.7" } diff --git a/resources/js/components/ui/avatar.tsx b/resources/js/components/ui/avatar.tsx index a471e43..70da228 100644 --- a/resources/js/components/ui/avatar.tsx +++ b/resources/js/components/ui/avatar.tsx @@ -1,9 +1,9 @@ -import { tv } from 'tailwind-variants'; +import { type VariantProps, tv } from 'tailwind-variants'; const avatar = tv({ base: [ 'inline-grid shrink-0 align-middle [--avatar-radius:20%] [--ring-opacity:20%] *:col-start-1 *:row-start-1', - 'outline-1 -outline-offset-1 outline-fg/(--ring-opacity)' + '-outline-offset-1 outline-1 outline-fg/(--ring-opacity)' ], variants: { shape: { @@ -11,6 +11,7 @@ const avatar = tv({ circle: 'rounded-full *:rounded-full' }, size: { + 'extra-small': 'size-5 *:size-5', small: 'size-6 *:size-6', medium: 'size-8 *:size-8', large: 'size-10 *:size-10', @@ -19,10 +20,8 @@ const avatar = tv({ } }); -interface AvatarProps { +interface AvatarProps extends VariantProps { src?: string | null; - shape?: 'square' | 'circle'; - size?: 'small' | 'medium' | 'large' | 'extra-large'; initials?: string; alt?: string; className?: string; @@ -57,3 +56,4 @@ const Avatar = ({ }; export { Avatar }; +export type { AvatarProps }; diff --git a/resources/js/components/ui/button.tsx b/resources/js/components/ui/button.tsx index ce03017..57409d0 100644 --- a/resources/js/components/ui/button.tsx +++ b/resources/js/components/ui/button.tsx @@ -10,67 +10,65 @@ import { focusButtonStyles } from './primitive'; const buttonStyles = tv({ extend: focusButtonStyles, base: [ - 'kbt32x before:absolute after:absolute box-border relative no-underline isolate inline-flex items-center justify-center gap-x-2 border font-medium', + 'kbt32x relative flex items-center justify-center gap-x-2 border font-medium', 'forced-colors:[--button-icon:ButtonText] forced-colors:data-hovered:[--button-icon:ButtonText]', - '*:data-[slot=icon]:-mx-0.5 *:data-[slot=icon]:my-1 *:data-[slot=icon]:size-4 *:data-[slot=icon]:shrink-0 *:data-[slot=icon]:text-(--button-icon)' + '*:data-[slot=icon]:-mx-0.5 *:data-[slot=icon]:my-1 *:data-[slot=icon]:size-4 *:data-[slot=icon]:shrink-0 *:data-[slot=icon]:text-current/60' ], variants: { intent: { primary: [ - 'text-primary-fg [--button-bg:var(--color-primary)] [--button-border:var(--color-primary)] [--button-hover-overlay:var(--color-primary-fg)]/10', - '[--button-icon:var(--color-primary-fg)]/60 data-pressed:[--button-icon:var(--color-primary-fg)]/80 data-hovered:[--button-icon:var(--color-primary-fg)]/80' + 'outline-primary [--btn-bg:theme(--color-primary/95%)] [--btn-border:var(--color-primary)] [--btn-fg:var(--color-primary-fg)] dark:[--btn-bg:theme(--color-primary/90%)]', + '[--btn-bg-hovered:theme(--color-primary/87%)] [--btn-border-hovered:theme(--color-primary/87%)] dark:[--btn-bg-hovered:theme(--color-primary)] dark:[--btn-border-hovered:theme(--color-primary)]', + 'inset-shadow-primary-fg/20 data-hovered:inset-shadow-primary-fg/25 data-pressed:inset-shadow-primary-fg/20' ], secondary: [ - 'text-secondary-fg [--button-bg:var(--color-secondary)] dark:[--button-bg:var(--color-secondary)] [--button-border:var(--color-secondary-fg)]/10 [--button-hover-overlay:color-mix(in_oklab,var(--color-secondary)_95%,white_5%)] data-data-pressed:[--button-border:var(--color-secondary-fg)]/15 data-hovered:[--button-border:var(--color-secondary-fg)]/15', - '[--button-icon:var(--color-secondary-fg)]/60 data-pressed:[--button-icon:var(--color-secondary-fg)] data-hovered:[--button-icon:var(--color-secondary-fg)]' + '[--btn-bg:theme(--color-secondary/95%)] [--btn-border:theme(--color-secondary-fg/10%)] [--btn-fg:var(--color-secondary-fg)] dark:[--btn-bg:theme(--color-secondary/85%)] dark:[--btn-border:theme(--color-secondary-fg/7%)]', + '[--btn-bg-hovered:color-mix(in_oklab,var(--color-secondary)_60%,white_20%)] dark:[--btn-bg-hovered:color-mix(in_oklab,var(--color-secondary)_96%,white_4%)]', + 'inset-shadow-white/15 data-hovered:inset-shadow-white/20 data-pressed:inset-shadow-white/15' ], warning: [ - 'text-warning-fg outline-warning [--button-bg:var(--color-warning)] [--button-border:var(--color-warning)] [--button-hover-overlay:color-mix(in_oklab,var(--color-warning)_90%,white_10%)]', - '[--button-icon:var(--color-warning-fg)]/60 data-pressed:[--button-icon:var(--color-warning-fg)]/80 data-hovered:[--button-icon:var(--color-warning-fg)]/80' + '[--btn-warning:theme(--color-warning/97%)]', + '[--btn-warning-hovered:color-mix(in_oklab,var(--color-warning)_85%,white_15%)]', + 'dark:[--btn-warning-hovered:color-mix(in_oklab,var(--color-warning)_90%,white_10%)]', + 'outline-warning [--btn-bg:var(--btn-warning)] [--btn-border:var(--btn-warning)] [--btn-fg:var(--color-warning-fg)]', + '[--btn-bg-hovered:var(--btn-warning-hovered)] [--btn-border-hovered:var(--btn-warning-hovered)]', + 'inset-shadow-white/25 data-hovered:inset-shadow-white/30 data-pressed:inset-shadow-white/25' ], danger: [ - 'text-danger-fg outline-danger [--button-bg:var(--color-danger)] [--button-border:var(--color-danger)] [--button-hover-overlay:var(--color-danger-fg)]/10', - '[--button-icon:var(--color-white)]/60 data-pressed:[--button-icon:var(--color-danger-fg)]/80 data-hovered:[--button-icon:var(--color-danger-fg)]/80' + 'outline-danger [--btn-bg:var(--color-danger)] [--btn-border:var(--color-danger)] [--btn-fg:var(--color-danger-fg)] dark:[--btn-bg:var(--color-danger)]', + '[--btn-danger-hovered:color-mix(in_oklab,var(--color-danger)_93%,white_7%)]', + 'dark:[--btn-danger-hovered:color-mix(in_oklab,var(--color-danger)_96%,white_4%)]', + '[--btn-bg-hovered:var(--btn-danger-hovered)] [--btn-border-hovered:var(--btn-danger-hovered)]', + 'inset-shadow-danger-fg/30 data-hovered:inset-shadow-danger-fg/35 data-pressed:inset-shadow-danger-fg/30' ] }, appearance: { solid: [ - 'border-transparent bg-(--button-border)', - 'before:inset-0 before:-z-10 before:bg-(--button-bg) before:shadow-sm data-disabled:before:shadow-none', - 'after:shadow-[shadow:inset_0_1px_theme(--color-white/15%)] data-pressed:after:bg-(--button-hover-overlay) data-hovered:after:bg-(--button-hover-overlay) data-disabled:after:shadow-none after:inset-0 after:-z-10', - 'dark:after:-inset-px dark:before:hidden dark:border-white/5 dark:bg-(--button-bg)' + 'inset-ring-0 dark:inset-ring dark:border-0', + 'inset-ring-(--btn-border) inset-shadow-2xs border-(--btn-border) bg-(--btn-bg) text-(--btn-fg)', + 'data-hovered:bg-(--btn-bg-hovered) data-hovered:ring-(--btn-border-hovered) data-hovered:*:data-[slot=icon]:text-current/90', + 'data-pressed:border-(--btn-border) data-pressed:bg-(--btn-bg) data-pressed:*:data-[slot=icon]:text-current' ], - outline: [ - 'border-border data-hovered:border-secondary-fg/10 data-pressed:border-secondary-fg/10 data-hovered:bg-secondary/90 text-secondary-fg', - '[--button-icon:var(--color-secondary-fg)]/50 data-hovered:[--button-icon:var(--color-fg)]', - 'data-pressed:bg-secondary/90 data-pressed:[--button-icon:var(--color-secondary-fg)]' - ], - plain: [ - 'border-transparent text-secondary-fg [--button-icon:var(--color-secondary-fg)]/50', - 'data-hovered:[--button-icon:var(--color-secondary-fg)] data-hovered:bg-secondary', - 'data-pressed:[--button-icon:var(--color-secondary-fg)] data-pressed:bg-secondary' - ] + outline: ['border data-hovered:bg-secondary data-pressed:bg-secondary'], + plain: ['border-transparent data-hovered:bg-secondary data-pressed:bg-secondary'] }, size: { - 'extra-small': - 'h-8 px-[calc(calc(var(--spacing)*3)-1px)] py-[calc(calc(var(--spacing)*1)-1px)] text-xs/4 lg:text-[0.800rem]/4', - small: 'h-9 px-[calc(calc(var(--spacing)*4)-1px)] py-[calc(calc(var(--spacing)*1.5)-1px)] text-sm/5 sm:text-sm/5', - medium: 'h-10 px-[calc(calc(var(--spacing)*4)-1px)] py-[calc(calc(var(--spacing)*2)-1px)] text-base sm:text-sm/6', - large: - 'h-10 *:data-[slot=icon]:mx-[-3px] sm:h-11 px-[calc(calc(var(--spacing)*4)-1px)] sm:px-[calc(calc(var(--spacing)*5)-1px)] py-[calc(calc(var(--spacing)*2.5)-1px)] text-base lg:text-base/7 sm:*:data-[slot=icon]:size-5', + 'extra-small': 'h-8 px-[calc(var(--spacing)*2.7)] text-xs/4 lg:text-[0.800rem]/4', + small: 'h-9 px-3.5 text-sm/5 sm:text-sm/5', + medium: 'h-10 px-4 text-base sm:text-sm/6', + large: 'h-11 px-4.5 text-base *:data-[slot=icon]:mx-[-1.5px] sm:*:data-[slot=icon]:size-5 lg:text-base/7', 'square-petite': 'size-9 shrink-0 **:data-[slot=icon]:text-current' }, shape: { - square: - 'rounded-lg before:rounded-[calc(var(--radius-lg)-1px)] after:rounded-[calc(var(--radius-lg)-1px)] dark:after:rounded-lg', - circle: 'rounded-full before:rounded-full after:rounded-full' + square: 'rounded-lg', + circle: 'rounded-full' }, isDisabled: { - false: 'forced-colors:data-disabled:text-[GrayText] cursor-pointer', - true: 'cursor-default opacity-60 forced-colors:data-disabled:text-[GrayText]' + false: 'cursor-pointer forced-colors:data-disabled:text-[GrayText]', + true: 'inset-shadow-none cursor-default border-0 opacity-50 ring-0 dark:inset-ring-0 forced-colors:data-disabled:text-[GrayText]' }, isPending: { - true: 'cursor-default' + true: 'cursor-default opacity-50' } }, defaultVariants: { @@ -110,4 +108,5 @@ const Button = ({ className, intent, appearance, size, shape, ref, ...props }: B ); }; -export { Button, ButtonPrimitive, buttonStyles, type ButtonProps }; +export { Button, ButtonPrimitive, buttonStyles }; +export type { ButtonProps }; diff --git a/resources/js/components/ui/card.tsx b/resources/js/components/ui/card.tsx index b451d5d..4c9c8f8 100644 --- a/resources/js/components/ui/card.tsx +++ b/resources/js/components/ui/card.tsx @@ -5,13 +5,13 @@ import { Heading } from './heading'; const card = tv({ slots: { root: [ - 'xrkr rounded-lg bg-bg xkd2 has-[table]:**:data-[slot=card-footer]:border-t **:data-[slot=table-header]:bg-muted/50 has-[table]:overflow-hidden border text-fg shadow-xs **:[table]:overflow-hidden' + 'xrkr xkd2 rounded-lg border bg-bg text-fg shadow-xs has-[table]:overflow-hidden **:data-[slot=table-header]:bg-muted/50 has-[table]:**:data-[slot=card-footer]:border-t **:[table]:overflow-hidden' ], header: 'flex flex-col gap-y-1 px-6 py-5', - title: 'sm:leading-6 leading-none font-semibold tracking-tight', + title: 'font-semibold leading-none tracking-tight sm:leading-6', description: 'text-muted-fg text-sm', content: - 'px-6 pb-6 has-[[data-slot=table-header]]:bg-muted/40 has-[table]:p-0 [&:has(table)+[data-slot=card-footer]]:py-5 has-[table]:border-t **:data-[slot=table-cell]:px-6 **:data-[slot=table-column]:px-6', + 'px-6 pb-6 has-[table]:border-t has-[[data-slot=table-header]]:bg-muted/40 has-[table]:p-0 **:data-[slot=table-cell]:px-6 **:data-[slot=table-column]:px-6 [&:has(table)+[data-slot=card-footer]]:py-5', footer: 'flex items-center p-6 pt-0' } }); diff --git a/resources/js/components/ui/checkbox.tsx b/resources/js/components/ui/checkbox.tsx index 0a74758..dc8a554 100644 --- a/resources/js/components/ui/checkbox.tsx +++ b/resources/js/components/ui/checkbox.tsx @@ -42,7 +42,7 @@ const checkboxStyles = tv({ }); const boxStyles = tv({ - base: 'flex size-4 *:data-[slot=icon]:size-3 shrink-0 items-center justify-center rounded border border-input text-bg transition', + base: 'flex size-4 shrink-0 items-center justify-center rounded border border-input text-bg transition *:data-[slot=icon]:size-3', variants: { isSelected: { false: 'bg-muted', @@ -101,3 +101,4 @@ const Checkbox = ({ className, ...props }: CheckboxProps) => { }; export { Checkbox, CheckboxGroup }; +export type { CheckboxGroupProps, CheckboxProps }; diff --git a/resources/js/components/ui/container.tsx b/resources/js/components/ui/container.tsx index 50e5e0f..c8caf97 100644 --- a/resources/js/components/ui/container.tsx +++ b/resources/js/components/ui/container.tsx @@ -23,3 +23,4 @@ const Container = ({ className, intent, ref, ...props }: ContainerProps) => ( ); export { Container }; +export type { ContainerProps }; diff --git a/resources/js/components/ui/dialog.tsx b/resources/js/components/ui/dialog.tsx index 6fe27f3..0cb67f4 100644 --- a/resources/js/components/ui/dialog.tsx +++ b/resources/js/components/ui/dialog.tsx @@ -11,18 +11,18 @@ import { Button, type ButtonProps } from './button'; const dialogStyles = tv({ slots: { root: [ - 'relative peer group/dialog flex max-h-[inherit] not-has-data-[slot=dialog-body]:**:data-[slot=dialog-header]:pb-0 [&::-webkit-scrollbar]:size-0.5 [scrollbar-width:thin] flex-col overflow-hidden outline-hidden' + 'peer group/dialog relative flex max-h-[inherit] flex-col overflow-hidden outline-hidden [scrollbar-width:thin] not-has-data-[slot=dialog-body]:**:data-[slot=dialog-header]:pb-0 [&::-webkit-scrollbar]:size-0.5' ], - header: 'relative flex flex-col gap-0.5 sm:gap-1 p-4 sm:p-6', - description: 'text-sm text-muted-fg', + header: 'relative flex flex-col gap-0.5 p-4 sm:gap-1 sm:p-6', + description: 'text-muted-fg text-sm', body: [ 'has-[input]:pb-1', - 'flex flex-1 isolate flex-col overflow-auto px-4 sm:px-6', + 'isolate flex flex-1 flex-col overflow-auto px-4 sm:px-6', 'max-h-[calc(var(--visual-viewport-height)-var(--visual-viewport-vertical-padding)-var(--dialog-header-height,0px)-var(--dialog-footer-height,0px))]' ], - footer: 'mt-auto flex isolate flex-col-reverse justify-between gap-3 sm:flex-row p-4 sm:p-6', + footer: 'isolate mt-auto flex flex-col-reverse justify-between gap-3 p-4 sm:flex-row sm:p-6', closeIndicator: - 'close absolute right-1 top-1 sm:right-2 sm:top-2 data-focused:outline-hidden data-focused:bg-secondary data-hovered:bg-secondary grid place-content-center rounded-xl sm:rounded-md data-focus-visible:ring-1 data-focus-visible:ring-primary size-8 sm:size-7 z-50' + 'close absolute top-1 right-1 z-50 grid size-8 place-content-center rounded-xl data-focused:bg-secondary data-hovered:bg-secondary data-focused:outline-hidden data-focus-visible:ring-1 data-focus-visible:ring-primary sm:top-2 sm:right-2 sm:size-7 sm:rounded-md' } }); @@ -79,23 +79,26 @@ const titleStyles = tv({ } }); -interface TitleProps extends Omit { +interface DialogTitleProps extends Omit { level?: 1 | 2 | 3 | 4; + ref?: React.Ref; } - -const Title = ({ level = 2, className, ...props }: TitleProps) => ( - +const Title = ({ level = 2, className, ref, ...props }: DialogTitleProps) => ( + ); -const Description = ({ className, ...props }: React.HTMLAttributes) => ( -
+type DialogDescriptionProps = React.ComponentProps<'div'>; +const Description = ({ className, ref, ...props }: DialogDescriptionProps) => ( +
); -const Body = ({ className, ...props }: React.HTMLAttributes) => ( -
+type DialogBodyProps = React.ComponentProps<'div'>; +const Body = ({ className, ref, ...props }: DialogBodyProps) => ( +
); -const Footer = ({ className, ...props }: React.HTMLAttributes) => { +type DialogFooterProps = React.ComponentProps<'div'>; +const Footer = ({ className, ...props }: DialogFooterProps) => { const footerRef = useRef(null); useEffect(() => { @@ -119,8 +122,8 @@ const Footer = ({ className, ...props }: React.HTMLAttributes) = return
; }; -const Close = ({ className, appearance = 'outline', ...props }: ButtonProps) => { - return ); @@ -84,7 +85,7 @@ interface MenuContentProps extends Omit, respectScreen?: boolean; } -const Content = ({ +const MenuContent = ({ className, showArrow = false, popoverClassName, @@ -129,7 +130,7 @@ const Item = ({ className, isDanger = false, children, ...props }: MenuItemProps {(values) => ( <> {typeof children === 'function' ? children(values) : children} - {values.hasSubmenu && } + {values.hasSubmenu && } )} @@ -151,17 +152,21 @@ const MenuHeader = ({ className, separator = false, ...props }: MenuHeaderProps) /> ); -const MenuSeparator = ({ className, ...props }: SeparatorProps) => ( - +interface MenuSeparatorProps extends SeparatorProps { + ref?: React.Ref; +} + +const MenuSeparator = ({ className, ref, ...props }: MenuSeparatorProps) => ( + ); -const Checkbox = ({ className, children, ...props }: MenuItemProps) => ( +const MenuItemCheckbox = ({ className, children, ...props }: MenuItemProps) => ( {(values) => ( <> {typeof children === 'function' ? children(values) : children} {values.isSelected && ( - + )} @@ -170,7 +175,7 @@ const Checkbox = ({ className, children, ...props }: MenuItemProps) => ( ); -const Radio = ({ children, ...props }: MenuItemProps) => ( +const MenuItemRadio = ({ children, ...props }: MenuItemProps) => ( {(values) => ( <> @@ -191,13 +196,13 @@ const Radio = ({ children, ...props }: MenuItemProps) => ( const { section, header } = dropdownSectionStyles(); -interface SectionProps extends MenuSectionProps { +interface MenuSectionProps extends MenuSectionPrimitiveProps { + ref?: React.Ref; title?: string; } - -const Section = ({ className, ...props }: SectionProps) => { +const Section = ({ className, ref, ...props }: MenuSectionProps) => { return ( - + {'title' in props &&
{props.title}
} {props.children}
@@ -205,17 +210,18 @@ const Section = ({ className, ...props }: SectionProps) => }; Menu.Primitive = MenuPrimitive; -Menu.Content = Content; +Menu.Content = MenuContent; Menu.Header = MenuHeader; Menu.Item = Item; -Menu.Content = Content; +Menu.Content = MenuContent; Menu.Keyboard = Keyboard; -Menu.Checkbox = Checkbox; -Menu.Radio = Radio; +Menu.Checkbox = MenuItemCheckbox; +Menu.Radio = MenuItemRadio; Menu.Section = Section; Menu.Separator = MenuSeparator; -Menu.Trigger = Trigger; +Menu.Trigger = MenuTrigger; Menu.ItemDetails = DropdownItemDetails; Menu.Submenu = SubMenu; -export { Menu, type MenuContentProps }; +export { Menu }; +export type { MenuContentProps, MenuItemProps, MenuProps, MenuSectionProps, MenuSeparatorProps, MenuTriggerProps }; diff --git a/resources/js/components/ui/modal.tsx b/resources/js/components/ui/modal.tsx index 3bb46d4..b0c7a58 100644 --- a/resources/js/components/ui/modal.tsx +++ b/resources/js/components/ui/modal.tsx @@ -6,33 +6,33 @@ import { Dialog } from './dialog'; const overlay = tv({ base: [ - 'fixed left-0 top-0 isolate z-50 h-(--visual-viewport-height) w-full', - 'flex justify-end items-end sm:justify-center sm:items-center text-center bg-fg/15 dark:bg-bg/40', + 'fixed top-0 left-0 isolate z-50 h-(--visual-viewport-height) w-full', + 'flex items-end justify-end bg-fg/15 text-center sm:items-center sm:justify-center dark:bg-bg/40', '[--visual-viewport-vertical-padding:16px] sm:[--visual-viewport-vertical-padding:32px]' ], variants: { isBlurred: { - true: 'supports-backdrop-filter:backdrop-blur supports-backdrop-filter:bg-bg/15 bg-bg dark:supports-backdrop-filter:bg-bg/40' + true: 'bg-bg supports-backdrop-filter:bg-bg/15 supports-backdrop-filter:backdrop-blur dark:supports-backdrop-filter:bg-bg/40' }, isEntering: { - true: 'ease-out animate-in duration-200 fade-in' + true: 'fade-in animate-in duration-200 ease-out' }, isExiting: { - true: 'duration-150 ease-in animate-out fade-out' + true: 'fade-out animate-out duration-150 ease-in' } } }); const content = tv({ base: [ - 'max-h-full w-full rounded-t-2xl ring-1 ring-fg/5 bg-overlay text-overlay-fg text-left align-middle shadow-lg', - 'dark:ring-border sm:rounded-2xl overflow-hidden' + 'max-h-full w-full rounded-t-2xl bg-overlay text-left align-middle text-overlay-fg shadow-lg ring-1 ring-fg/5', + 'overflow-hidden sm:rounded-2xl dark:ring-border' ], variants: { isEntering: { - true: ['animate-in ease-out fade-in duration-200 slide-in-from-bottom', 'sm:zoom-in-95 sm:slide-in-from-bottom-0'] + true: ['fade-in slide-in-from-bottom animate-in duration-200 ease-out', 'sm:zoom-in-95 sm:slide-in-from-bottom-0'] }, isExiting: { - true: ['duration-150 ease-in animate-out slide-out-to-bottom sm:slide-out-to-bottom-0 sm:zoom-out-95'] + true: ['slide-out-to-bottom sm:slide-out-to-bottom-0 sm:zoom-out-95 animate-out duration-150 ease-in'] }, size: { xs: 'sm:max-w-xs', diff --git a/resources/js/components/ui/navbar.tsx b/resources/js/components/ui/navbar.tsx index ac8cdce..4025809 100644 --- a/resources/js/components/ui/navbar.tsx +++ b/resources/js/components/ui/navbar.tsx @@ -4,11 +4,11 @@ import { IconHamburger } from 'justd-icons'; import { LayoutGroup, motion } from 'motion/react'; import type { LinkProps } from 'react-aria-components'; import { Link, composeRenderProps } from 'react-aria-components'; -import { tv } from 'tailwind-variants'; +import { type VariantProps, tv } from 'tailwind-variants'; import { cn } from '@/utils/classes'; import { useMediaQuery } from '@/utils/use-media-query'; -import { Button } from './button'; +import { Button, type ButtonProps } from './button'; import { composeTailwindRenderProps } from './primitive'; import { Sheet } from './sheet'; @@ -36,19 +36,19 @@ function useNavbar() { return context; } -interface NavbarProviderProps extends React.ComponentProps<'header'>, NavbarOptions { +interface NavbarProps extends React.ComponentProps<'header'>, NavbarOptions { defaultOpen?: boolean; isOpen?: boolean; onOpenChange?: (open: boolean) => void; } const navbarStyles = tv({ - base: 'relative @container isolate flex w-full flex-col', + base: '@container relative isolate flex w-full flex-col', variants: { intent: { - floating: 'pt-2 px-2.5', + floating: 'px-2.5 pt-2', navbar: '', - inset: 'bg-bg min-h-svh' + inset: 'min-h-svh bg-navbar dark:bg-bg' } } }); @@ -63,8 +63,8 @@ const Navbar = ({ isSticky = false, intent = 'navbar', ...props -}: NavbarProviderProps) => { - const isCompact = useMediaQuery('(max-width: 768px)'); +}: NavbarProps) => { + const isCompact = useMediaQuery('(max-width: 765px)'); const [_open, _setOpen] = useState(defaultOpen); const open = openProp ?? _open; @@ -106,32 +106,32 @@ const Navbar = ({ const navStyles = tv({ base: [ - 'hidden h-(--navbar-height) [--navbar-height:3.5rem] px-4 group peer md:flex items-center w-full', - '[&>div]:max-w-[1680px] md:[&>div]:flex [&>div]:items-center [&>div]:w-full [&>div]:mx-auto' + 'group peer @md:flex hidden h-(--navbar-height) w-full items-center px-4 [--navbar-height:3.5rem]', + '[&>div]:mx-auto @md:[&>div]:flex [&>div]:w-full [&>div]:max-w-[1680px] [&>div]:items-center' ], variants: { isSticky: { - true: 'sticky z-40 top-0' + true: 'sticky top-0 z-40' }, intent: { floating: - 'bg-navbar text-navbar-fg w-full max-w-7xl 2xl:max-w-(--breakpoint-2xl) mx-auto border rounded-xl md:px-4', - navbar: 'bg-navbar text-navbar-fg border-b md:px-6', + 'mx-auto w-full max-w-7xl rounded-xl border bg-navbar @md:px-4 text-navbar-fg 2xl:max-w-(--breakpoint-2xl)', + navbar: 'border-b bg-navbar @md:px-6 text-navbar-fg', inset: [ - 'mx-auto dark:md:px-6', - '2xl:[&>div]:max-w-(--breakpoint-2xl) md:[&>div]:flex [&>div]:items-center [&>div]:w-full [&>div]:mx-auto' + 'mx-auto @md:px-6', + '[&>div]:mx-auto @md:[&>div]:flex [&>div]:w-full [&>div]:items-center 2xl:[&>div]:max-w-(--breakpoint-2xl)' ] } } }); -interface NavbarProps extends React.ComponentProps<'div'> { +interface NavbarNavProps extends React.ComponentProps<'div'> { intent?: 'navbar' | 'floating' | 'inset'; isSticky?: boolean; side?: 'left' | 'right'; } -const Nav = ({ className, ...props }: NavbarProps) => { +const NavbarNav = ({ className, ref, ...props }: NavbarNavProps) => { const { isCompact, side, intent, isSticky, open, setOpen } = useNavbar(); if (isCompact) { @@ -146,23 +146,27 @@ const Nav = ({ className, ...props }: NavbarProps) => { }} isFloat={intent === 'floating'} > - {props.children} + {props.children} ); } return ( -
+
{props.children}
); }; -const Trigger = ({ className, onPress, ...props }: React.ComponentProps) => { +interface NavbarTriggerProps extends ButtonProps { + ref?: React.RefObject; +} +const NavbarTrigger = ({ className, onPress, ref, ...props }: NavbarTriggerProps) => { const { toggleNavbar } = useNavbar(); return ( ); @@ -107,7 +98,8 @@ const Trigger = ({ className, ...props }: TriggerProps) => { Select.OptionDetails = DropdownItemDetails; Select.Option = DropdownItem; Select.Section = DropdownSection; -Select.Trigger = Trigger; +Select.Trigger = SelectTrigger; Select.List = List; export { Select }; +export type { SelectProps, SelectTriggerProps }; diff --git a/resources/js/components/ui/separator.tsx b/resources/js/components/ui/separator.tsx index 39791b8..6974706 100644 --- a/resources/js/components/ui/separator.tsx +++ b/resources/js/components/ui/separator.tsx @@ -2,7 +2,7 @@ import { Separator as Divider, type SeparatorProps as DividerProps } from 'react import { tv } from 'tailwind-variants'; const separatorStyles = tv({ - base: 'bg-border shrink-0 forced-colors:bg-[ButtonBorder]', + base: 'shrink-0 bg-border forced-colors:bg-[ButtonBorder]', variants: { orientation: { horizontal: 'h-px w-full', @@ -16,7 +16,7 @@ const separatorStyles = tv({ interface SeparatorProps extends DividerProps { className?: string; - ref?: React.RefObject; + ref?: React.RefObject; } const Separator = ({ className, ref, ...props }: SeparatorProps) => { @@ -33,3 +33,4 @@ const Separator = ({ className, ref, ...props }: SeparatorProps) => { }; export { Separator }; +export type { SeparatorProps }; diff --git a/resources/js/components/ui/sheet.tsx b/resources/js/components/ui/sheet.tsx index 1b6de66..b75e519 100644 --- a/resources/js/components/ui/sheet.tsx +++ b/resources/js/components/ui/sheet.tsx @@ -6,17 +6,17 @@ import { Dialog } from './dialog'; const overlayStyles = tv({ base: [ - 'fixed top-0 left-0 w-full bg-fg/15 dark:bg-bg/40 h-(--visual-viewport-height) isolate z-50 flex items-center justify-center p-4' + 'fixed top-0 left-0 isolate z-50 flex h-(--visual-viewport-height) w-full items-center justify-center bg-fg/15 p-4 dark:bg-bg/40' ], variants: { isBlurred: { - true: 'backdrop-blur bg-bg/15 dark:bg-bg/40' + true: 'bg-bg/15 backdrop-blur dark:bg-bg/40' }, isEntering: { - true: 'animate-in fade-in duration-300 ease-out' + true: 'fade-in animate-in duration-300 ease-out' }, isExiting: { - true: 'animate-out fade-out duration-200 ease-in' + true: 'fade-out animate-out duration-200 ease-in' } } }); @@ -38,21 +38,21 @@ const generateCompoundVariants = (sides: Array) => { }; const contentStyles = tv({ - base: 'fixed z-50 grid gap-4 bg-overlay border-fg/5 dark:border-border text-overlay-fg shadow-lg transition ease-in-out', + base: 'fixed z-50 grid gap-4 border-fg/5 bg-overlay text-overlay-fg shadow-lg transition ease-in-out dark:border-border', variants: { isEntering: { - true: 'duration-300 animate-in ' + true: 'animate-in duration-300 ' }, isExiting: { - true: 'duration-200 animate-out' + true: 'animate-out duration-200' }, side: { - top: 'inset-x-0 top-0 rounded-b-2xl border-b data-entering:slide-in-from-top data-exiting:slide-out-to-top', + top: 'data-entering:slide-in-from-top data-exiting:slide-out-to-top inset-x-0 top-0 rounded-b-2xl border-b', bottom: - 'inset-x-0 bottom-0 rounded-t-2xl border-t data-entering:slide-in-from-bottom data-exiting:slide-out-to-bottom', - left: 'inset-y-0 left-0 h-auto w-[18rem] sm:w-[19rem] sm:w-3/4 overflow-y-auto border-r data-entering:slide-in-from-left data-exiting:slide-out-to-left sm:max-w-xs', + 'data-entering:slide-in-from-bottom data-exiting:slide-out-to-bottom inset-x-0 bottom-0 rounded-t-2xl border-t', + left: 'data-entering:slide-in-from-left data-exiting:slide-out-to-left inset-y-0 left-0 h-auto w-[18rem] overflow-y-auto border-r sm:w-3/4 sm:w-[19rem] sm:max-w-xs', right: - 'inset-y-0 right-0 h-auto w-[18rem] sm:w-[19rem] sm:w-3/4 overflow-y-auto border-l data-entering:slide-in-from-right data-exiting:slide-out-to-right sm:max-w-xs' + 'data-entering:slide-in-from-right data-exiting:slide-out-to-right inset-y-0 right-0 h-auto w-[18rem] overflow-y-auto border-l sm:w-3/4 sm:w-[19rem] sm:max-w-xs' }, isFloat: { false: 'border-fg/20 dark:border-border', @@ -62,7 +62,8 @@ const contentStyles = tv({ compoundVariants: generateCompoundVariants(['top', 'bottom', 'left', 'right']) }); -const Sheet = (props: DialogTriggerProps) => { +type SheetProps = DialogTriggerProps; +const Sheet = (props: SheetProps) => { return ; }; @@ -83,7 +84,7 @@ interface SheetContentProps }; } -const Content = ({ +const SheetContent = ({ classNames, isBlurred = false, isDismissable = true, @@ -133,7 +134,7 @@ const Content = ({ Sheet.Trigger = Dialog.Trigger; Sheet.Footer = Dialog.Footer; -Sheet.Content = Content; +Sheet.Content = SheetContent; Sheet.Header = Dialog.Header; Sheet.Title = Dialog.Title; Sheet.Description = Dialog.Description; @@ -141,3 +142,4 @@ Sheet.Body = Dialog.Body; Sheet.Close = Dialog.Close; export { Sheet }; +export type { SheetContentProps, SheetProps, Sides }; diff --git a/resources/js/components/ui/table.tsx b/resources/js/components/ui/table.tsx index 62c61ff..e9ac6f7 100644 --- a/resources/js/components/ui/table.tsx +++ b/resources/js/components/ui/table.tsx @@ -5,9 +5,9 @@ import type { CellProps, ColumnProps, ColumnResizerProps, + TableHeaderProps as HeaderProps, RowProps, TableBodyProps, - TableHeaderProps, TableProps as TablePrimitiveProps } from 'react-aria-components'; import { @@ -31,14 +31,14 @@ import { Checkbox } from './checkbox'; const table = tv({ slots: { - root: 'min-w-full table **:data-drop-target:border **:data-drop-target:border-primary w-full caption-bottom border-spacing-0 text-sm outline-hidden', - header: 'border-b x32', - row: 'tr group relative cursor-default border-b text-fg/70 outline-hidden ring-primary data-focused:ring-0 data-focus-visible:ring-1 data-selected:bg-subtle data-selected:data-hovered:bg-subtle/50 dark:data-selected:data-hovered:bg-subtle/60', + root: 'table w-full min-w-full caption-bottom border-spacing-0 text-sm outline-hidden **:data-drop-target:border **:data-drop-target:border-primary', + header: 'x32 border-b', + row: 'tr group relative cursor-default border-b text-fg/70 outline-hidden ring-primary data-selected:data-hovered:bg-subtle/50 data-selected:bg-subtle data-focus-visible:ring-1 data-focused:ring-0 dark:data-selected:data-hovered:bg-subtle/60', cellIcon: - 'flex-none rounded bg-secondary text-fg *:data-[slot=icon]:shrink-0 *:data-[slot=icon]:size-3.5 *:data-[slot=icon]:transition-transform *:data-[slot=icon]:duration-200 size-[1.15rem] grid place-content-center shrink-0', + 'grid size-[1.15rem] flex-none shrink-0 place-content-center rounded bg-secondary text-fg *:data-[slot=icon]:size-3.5 *:data-[slot=icon]:shrink-0 *:data-[slot=icon]:transition-transform *:data-[slot=icon]:duration-200', columnResizer: [ - 'touch-none absolute [&[data-resizing]>div]:bg-primary right-0 top-0 bottom-0 w-px px-1 grid place-content-center', - 'data-[resizable-direction=both]:cursor-ew-resize &[data-resizable-direction=left]:cursor-e-resize &[data-resizable-direction=right]:cursor-w-resize' + 'absolute top-0 right-0 bottom-0 grid w-px touch-none place-content-center px-1 [&[data-resizing]>div]:bg-primary', + '&[data-resizable-direction=left]:cursor-e-resize &[data-resizable-direction=right]:cursor-w-resize data-[resizable-direction=both]:cursor-ew-resize' ] } }); @@ -58,7 +58,7 @@ const useTableContext = () => React.useContext(TableContext); const Table = ({ children, className, ...props }: TableProps) => ( -
+
{props.allowResize ? ( @@ -84,7 +84,7 @@ const ColumnResizer = ({ className, ...props }: ColumnResizerProps) => ( }) )} > -
+
); @@ -97,7 +97,7 @@ interface TableCellProps extends CellProps { } const cellStyles = tv({ - base: 'whitespace-nowrap group px-3 py-3 outline-hidden', + base: 'group whitespace-nowrap px-3 py-3 outline-hidden', variants: { allowResize: { true: 'overflow-hidden truncate' @@ -114,7 +114,7 @@ const TableCell = ({ children, className, ...props }: TableCellProps) => { }; const columnStyles = tv({ - base: 'whitespace-nowrap relative allows-sorting:cursor-pointer px-3 py-3 text-left data-dragging:cursor-grabbing font-medium outline-hidden [&:has([slot=selection])]:pr-0', + base: 'relative allows-sorting:cursor-pointer whitespace-nowrap px-3 py-3 text-left font-medium outline-hidden data-dragging:cursor-grabbing [&:has([slot=selection])]:pr-0', variants: { isResizable: { true: 'overflow-hidden truncate' @@ -154,17 +154,18 @@ const TableColumn = ({ isResizable = false, className, ...props }: TableColumnPr ); }; -interface HeaderProps extends TableHeaderProps { +interface TableHeaderProps extends HeaderProps { className?: string; + ref?: React.Ref; } -const Header = ({ children, className, columns, ...props }: HeaderProps) => { +const Header = ({ children, ref, className, columns, ...props }: TableHeaderProps) => { const { selectionBehavior, selectionMode, allowsDragging } = useTableOptions(); return ( - + {allowsDragging && } {selectionBehavior === 'toggle' && ( - {selectionMode === 'multiple' && } + {selectionMode === 'multiple' && } )} {children} @@ -173,12 +174,14 @@ const Header = ({ children, className, columns, ...props }: He interface TableRowProps extends RowProps { className?: string; + ref?: React.Ref; } -const TableRow = ({ children, className, columns, id, ...props }: TableRowProps) => { +const TableRow = ({ children, className, columns, id, ref, ...props }: TableRowProps) => { const { selectionBehavior, allowsDragging } = useTableOptions(); return ( ({ children, className, columns, id, ...props })} > {allowsDragging && ( - - @@ -200,7 +203,7 @@ const TableRow = ({ children, className, columns, id, ...props @@ -217,3 +220,4 @@ Table.Header = Header; Table.Row = TableRow; export { Table }; +export type { TableBodyProps, TableCellProps, TableColumnProps, TableProps, TableRowProps }; diff --git a/resources/js/components/ui/text-field.tsx b/resources/js/components/ui/text-field.tsx index 208d646..cb57321 100644 --- a/resources/js/components/ui/text-field.tsx +++ b/resources/js/components/ui/text-field.tsx @@ -97,4 +97,5 @@ const TextField = ({ ); }; -export { TextField, TextFieldPrimitive, type TextFieldProps }; +export { TextField }; +export type { TextFieldProps }; diff --git a/resources/js/components/ui/toast.tsx b/resources/js/components/ui/toast.tsx index 1fba629..ea0958c 100644 --- a/resources/js/components/ui/toast.tsx +++ b/resources/js/components/ui/toast.tsx @@ -34,8 +34,8 @@ const Toast = ({ ...props }: ToasterProps) => { 'has-data-description:**:data-title:font-medium [&:has([data-description])_[data-title]]:text-base!', 'has-data-[slot=icon]:**:data-content:pl-0', 'has-data-button:*:data-content:mb-10', - 'has-data-button:**:data-close-button:hidden! w-full flex p-4 rounded-xl', - 'backdrop-blur-3xl inset-ring-1 inset-ring-current/10' + 'has-data-button:**:data-close-button:hidden! flex w-full rounded-xl p-4', + 'inset-ring-1 inset-ring-current/10 backdrop-blur-3xl' ), icon: 'absolute top-[0.2rem] [--toast-icon-margin-end:7px] *:data-[slot=icon]:text-fg *:data-[slot=icon]:size-4.5 **:data-[slot=icon]:text-current', title: '', @@ -69,3 +69,4 @@ const Toast = ({ ...props }: ToasterProps) => { }; export { Toast }; +export type { ToasterProps }; diff --git a/resources/js/layouts/app-navbar.tsx b/resources/js/layouts/app-navbar.tsx index fb20869..a008762 100644 --- a/resources/js/layouts/app-navbar.tsx +++ b/resources/js/layouts/app-navbar.tsx @@ -2,7 +2,16 @@ import { PagePropsData } from '@/types'; import { usePage } from '@inertiajs/react'; import { useTheme } from 'components/theme-provider'; import { ThemeSwitcher } from 'components/theme-switcher'; -import { IconBrandJustd, IconBrandLaravel, IconChevronDown, IconColorSwatch, IconSettings } from 'justd-icons'; +import { + IconArrowUpRight, + IconBrandJustd, + IconBrandLaravel, + IconChevronDown, + IconColors, + IconColorSwatch, + IconPackage, + IconSettings +} from 'justd-icons'; import React from 'react'; import { Selection } from 'react-aria-components'; import { Avatar, Button, Menu, Navbar, Separator } from 'ui'; @@ -17,30 +26,6 @@ const navigations = [ name: 'About', textValue: 'About', href: '/about' - }, - { - name: 'Github', - textValue: 'Github Repository', - href: 'https://github.com/irsyadadl/inertia.ts', - className: 'justify-between' - }, - { - name: 'Components', - textValue: 'Just D. Components', - href: 'https://getjustd.com', - className: 'justify-between' - }, - { - name: 'Colors', - textValue: 'Just D. Colors', - href: 'https://getjustd.com/colors', - className: 'justify-between' - }, - { - name: 'Templates', - textValue: 'Next.js Template', - href: 'https://irsyad.co/s', - className: 'justify-between' } ]; @@ -61,7 +46,36 @@ export function AppNavbar({ children, ...props }: React.ComponentProps ))} + + + Resources... + + + + + + Components + + + + + Icons + + + + + Themes + + + + + Colors + + + + + {!auth.user && } {auth.user ? ( diff --git a/resources/js/pages/home.tsx b/resources/js/pages/home.tsx index 57e4a16..0cfa79f 100644 --- a/resources/js/pages/home.tsx +++ b/resources/js/pages/home.tsx @@ -14,11 +14,11 @@ import { Card, Container, Grid, Link } from 'ui'; const items = [ { - name: 'Just D.', + name: 'Justd', url: 'https://getjustd.com', icon: IconBrandJustd, description: - ' Just D. is a chill set of React components, built on top of React Aria Components, all about keeping the web accessible.' + ' Justd is a chill set of React components, built on top of React Aria Components, all about keeping the web accessible.' }, { name: 'Inertia.ts', From 45bb84b2e765d4752c25c495d0cd4a961b4aca7c Mon Sep 17 00:00:00 2001 From: "Irsyad A. Panjaitan" Date: Thu, 26 Dec 2024 15:38:42 +0700 Subject: [PATCH 2/2] chore: release v1.3.8 --- CHANGELOG.md | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fd2397..42fbcaa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Changelog +## [1.3.8](https://github.com/justdlabs/inertia.ts/compare/v1.3.7...v1.3.8) (2024-12-26) + ## [1.3.7](https://github.com/justdlabs/inertia.ts/compare/v1.3.6...v1.3.7) (2024-12-17) ## [1.3.6](https://github.com/justdlabs/inertia.ts/compare/1.3.7...v1.3.6) (2024-12-17) diff --git a/package.json b/package.json index d993cff..1004132 100644 --- a/package.json +++ b/package.json @@ -44,5 +44,5 @@ "tailwindcss-animate": "^1.0.7", "vite": "^6.0.6" }, - "version": "1.3.7" + "version": "1.3.8" }