diff --git a/CHANGELOG.md b/CHANGELOG.md index f55a5d1..4274879 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,12 @@ # Changelog -## [1.3.13](https://github.com/justdlabs/inertia.ts/compare/v1.3.12...v1.3.13) (2025-01-18) +## [1.3.14](https://github.com/justdlabs/inertia.ts/compare/v1.3.13...v1.3.14) (2025-01-21) +## [1.3.13](https://github.com/justdlabs/inertia.ts/compare/v1.3.12...v1.3.13) (2025-01-18) ### Bug Fixes -* fix navbar ([9530797](https://github.com/justdlabs/inertia.ts/commit/953079745aacaea85dc86f61e92a6e7a1da2100c)) +- fix navbar ([9530797](https://github.com/justdlabs/inertia.ts/commit/953079745aacaea85dc86f61e92a6e7a1da2100c)) ## [1.3.12](https://github.com/justdlabs/inertia.ts/compare/v1.3.11...v1.3.12) (2025-01-18) diff --git a/bun.lockb b/bun.lockb index 9d949b7..cd2b7db 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/composer.lock b/composer.lock index a997073..2fa2f06 100644 --- a/composer.lock +++ b/composer.lock @@ -209,16 +209,16 @@ }, { "name": "amphp/dns", - "version": "v2.3.0", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/amphp/dns.git", - "reference": "166c43737cef1b77782c648a9d9ed11ee0c9859f" + "reference": "78eb3db5fc69bf2fc0cb503c4fcba667bc223c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/dns/zipball/166c43737cef1b77782c648a9d9ed11ee0c9859f", - "reference": "166c43737cef1b77782c648a9d9ed11ee0c9859f", + "url": "https://api.github.com/repos/amphp/dns/zipball/78eb3db5fc69bf2fc0cb503c4fcba667bc223c71", + "reference": "78eb3db5fc69bf2fc0cb503c4fcba667bc223c71", "shasum": "" }, "require": { @@ -275,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.3.0" + "source": "https://github.com/amphp/dns/tree/v2.4.0" }, "funding": [ { @@ -283,7 +283,7 @@ "type": "github" } ], - "time": "2024-12-21T01:15:34+00:00" + "time": "2025-01-19T15:43:40+00:00" }, { "name": "amphp/parallel", @@ -418,16 +418,16 @@ }, { "name": "amphp/pipeline", - "version": "v1.2.1", + "version": "v1.2.2", "source": { "type": "git", "url": "https://github.com/amphp/pipeline.git", - "reference": "66c095673aa5b6e689e63b52d19e577459129ab3" + "reference": "97cbf289f4d8877acfe58dd90ed5a4370a43caa4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/pipeline/zipball/66c095673aa5b6e689e63b52d19e577459129ab3", - "reference": "66c095673aa5b6e689e63b52d19e577459129ab3", + "url": "https://api.github.com/repos/amphp/pipeline/zipball/97cbf289f4d8877acfe58dd90ed5a4370a43caa4", + "reference": "97cbf289f4d8877acfe58dd90ed5a4370a43caa4", "shasum": "" }, "require": { @@ -464,7 +464,7 @@ "keywords": ["amp", "amphp", "async", "io", "iterator", "non-blocking"], "support": { "issues": "https://github.com/amphp/pipeline/issues", - "source": "https://github.com/amphp/pipeline/tree/v1.2.1" + "source": "https://github.com/amphp/pipeline/tree/v1.2.2" }, "funding": [ { @@ -472,7 +472,7 @@ "type": "github" } ], - "time": "2024-07-04T00:56:47+00:00" + "time": "2025-01-19T15:42:46+00:00" }, { "name": "amphp/process", @@ -4367,16 +4367,16 @@ }, { "name": "spatie/laravel-package-tools", - "version": "1.18.0", + "version": "1.18.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "8332205b90d17164913244f4a8e13ab7e6761d29" + "reference": "d41c44a7eab604c3eb0cad93210612d4c1429c20" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/8332205b90d17164913244f4a8e13ab7e6761d29", - "reference": "8332205b90d17164913244f4a8e13ab7e6761d29", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/d41c44a7eab604c3eb0cad93210612d4c1429c20", + "reference": "d41c44a7eab604c3eb0cad93210612d4c1429c20", "shasum": "" }, "require": { @@ -4410,7 +4410,7 @@ "keywords": ["laravel-package-tools", "spatie"], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.18.0" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.18.2" }, "funding": [ { @@ -4418,7 +4418,7 @@ "type": "github" } ], - "time": "2024-12-30T13:13:39+00:00" + "time": "2025-01-20T14:14:17+00:00" }, { "name": "spatie/laravel-typescript-transformer", diff --git a/package.json b/package.json index d5a047a..2da7914 100644 --- a/package.json +++ b/package.json @@ -33,16 +33,16 @@ "@tailwindcss/vite": "^4.0.0-beta.9", "@types/node": "^22.10.7", "clsx": "^2.1.1", - "justd-icons": "^1.10.20", - "motion": "^11.18.1", + "justd-icons": "^1.10.21", + "motion": "^12.0.0", "react": "^19.0.0", "react-aria-components": "^1.6.0", "react-dom": "^19.0.0", "sonner": "^1.7.2", "tailwind-merge": "^2.6.0", - "tailwind-variants": "^0.3.0", + "tailwind-variants": "^0.3.1", "tailwindcss-animate": "^1.0.7", - "vite": "^6.0.7" + "vite": "^6.0.11" }, - "version": "1.3.13" + "version": "1.3.14" } diff --git a/resources/css/app.css b/resources/css/app.css index 92c4ae4..c42577a 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -4,7 +4,7 @@ @variant dark (&:is(.dark *)); @theme { - --font-sans: var(--font-sans), ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', + --font-sans: 'var(--font-sans)', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; --font-mono: var(--font-mono), ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; diff --git a/resources/js/components/ui/button.tsx b/resources/js/components/ui/button.tsx index 548d411..3071c13 100644 --- a/resources/js/components/ui/button.tsx +++ b/resources/js/components/ui/button.tsx @@ -36,7 +36,7 @@ const buttonStyles = tv({ 'inset-shadow-white/25 data-hovered:inset-shadow-white/30 data-pressed:inset-shadow-white/25' ], danger: [ - 'outline-danger [--btn-bg:var(--color-danger)] [--btn-border:var(--color-danger)] [--btn-fg:var(--color-danger-fg)] dark:[--btn-bg:var(--color-danger)]', + 'outline-danger [--btn-bg:theme(--color-danger/95%)] [--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)]', diff --git a/resources/js/components/ui/dialog.tsx b/resources/js/components/ui/dialog.tsx index 0cb67f4..7f9219c 100644 --- a/resources/js/components/ui/dialog.tsx +++ b/resources/js/components/ui/dialog.tsx @@ -11,12 +11,12 @@ import { Button, type ButtonProps } from './button'; const dialogStyles = tv({ slots: { root: [ - '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' + 'peer/dialog group/dialog relative flex max-h-[inherit] flex-col overflow-hidden outline-hidden [scrollbar-width:thin] [&::-webkit-scrollbar]:size-0.5' ], - header: 'relative flex flex-col gap-0.5 p-4 sm:gap-1 sm:p-6', + header: + 'relative flex flex-col gap-0.5 p-4 sm:gap-1 sm:p-6 [&[data-slot=dialog-header]:has(+[data-slot=dialog-footer])]:pb-0', description: 'text-muted-fg text-sm', body: [ - 'has-[input]:pb-1', '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))]' ], diff --git a/resources/js/components/ui/dropdown.tsx b/resources/js/components/ui/dropdown.tsx index 7264ea3..a2b3458 100644 --- a/resources/js/components/ui/dropdown.tsx +++ b/resources/js/components/ui/dropdown.tsx @@ -23,7 +23,8 @@ const dropdownItemStyles = tv({ '**:data-[slot=avatar]:*:mr-2 **:data-[slot=avatar]:*:size-6 **:data-[slot=avatar]:mr-2 **:data-[slot=avatar]:size-6 sm:**:data-[slot=avatar]:*:size-5 sm:**:data-[slot=avatar]:size-5', 'data-danger:**:data-[slot=icon]:text-danger/70 **:data-[slot=icon]:size-4 **:data-[slot=icon]:shrink-0 **:data-[slot=icon]:text-muted-fg data-focused:data-danger:**:data-[slot=icon]:text-danger-fg', 'data-[slot=menu-radio]:*:data-[slot=icon]:size-3 *:data-[slot=icon]:mr-2', - 'forced-colors:**:data-[slot=icon]:text-[CanvasText] forced-colors:group-data-focused:**:data-[slot=icon]:text-[Canvas] ' + 'forced-colors:**:data-[slot=icon]:text-[CanvasText] forced-colors:group-data-focused:**:data-[slot=icon]:text-[Canvas] ', + '[&>[slot=label]+[data-slot=icon]]:absolute [&>[slot=label]+[data-slot=icon]]:right-0' ], variants: { isDisabled: { diff --git a/resources/js/components/ui/link.tsx b/resources/js/components/ui/link.tsx index 0b1fe99..4fe65c2 100644 --- a/resources/js/components/ui/link.tsx +++ b/resources/js/components/ui/link.tsx @@ -5,7 +5,7 @@ import { focusButtonStyles } from './primitive'; const linkStyles = tv({ extend: focusButtonStyles, - base: 'rounded transition-[color,_opacity] data-disabled:cursor-default data-disabled:opacity-60 forced-colors:data-disabled:text-[GrayText]', + base: 'transition-[color,_opacity] data-disabled:cursor-default data-disabled:opacity-60 forced-colors:data-disabled:text-[GrayText]', variants: { intent: { unstyled: 'text-current', diff --git a/resources/js/components/ui/loader.tsx b/resources/js/components/ui/loader.tsx index f06d867..7a5056f 100644 --- a/resources/js/components/ui/loader.tsx +++ b/resources/js/components/ui/loader.tsx @@ -168,7 +168,7 @@ const LOADERS = { spin: Spin }; -const DEFAULT_SPINNER = 'ring'; +const DEFAULT_SPINNER = 'spin'; interface LoaderProps extends Omit, 'display' | 'opacity' | 'intent'>, diff --git a/resources/js/components/ui/menu.tsx b/resources/js/components/ui/menu.tsx index 639d066..48dc403 100644 --- a/resources/js/components/ui/menu.tsx +++ b/resources/js/components/ui/menu.tsx @@ -100,10 +100,7 @@ const MenuContent = ({ respectScreen={respectScreen} showArrow={showArrow} className={popover({ - className: cn([ - showArrow && 'data-[placement=left]:mt-[-0.38rem] data-[placement=right]:mt-[-0.38rem]', - popoverClassName - ]) + className: popoverClassName })} {...props} > diff --git a/resources/js/components/ui/modal.tsx b/resources/js/components/ui/modal.tsx index 96e7434..bed58cc 100644 --- a/resources/js/components/ui/modal.tsx +++ b/resources/js/components/ui/modal.tsx @@ -47,7 +47,7 @@ const content = tv({ } }, defaultVariants: { - size: 'xl' + size: 'lg' } }); @@ -102,7 +102,6 @@ const ModalContent = ({ className }) )} - {...props} > {(values) => ( diff --git a/resources/js/components/ui/popover.tsx b/resources/js/components/ui/popover.tsx index 8f354c4..9de920b 100644 --- a/resources/js/components/ui/popover.tsx +++ b/resources/js/components/ui/popover.tsx @@ -16,6 +16,7 @@ import { } from 'react-aria-components'; import { tv } from 'tailwind-variants'; +import { cn } from '@/utils/classes'; import { useMediaQuery } from '@/utils/use-media-query'; import { twMerge } from 'tailwind-merge'; import type { DialogBodyProps, DialogFooterProps, DialogHeaderProps, DialogTitleProps } from './dialog'; @@ -35,33 +36,34 @@ const Header = ({ className, ...props }: DialogHeaderProps) => ( ); const Footer = ({ className, ...props }: DialogFooterProps) => ( - + ); const Body = ({ className, ref, ...props }: DialogBodyProps) => ( - + ); const content = tv({ base: [ - 'max-w-xs rounded-xl border bg-overlay bg-clip-padding text-overlay-fg shadow-xs transition-transform [scrollbar-width:thin] peer-not-has-[data=dialog-header]:p-4 sm:max-w-3xl sm:text-sm dark:backdrop-saturate-200 forced-colors:bg-[Canvas] [&::-webkit-scrollbar]:size-0.5' + 'peer/popover-content max-w-xs rounded-xl border bg-overlay bg-clip-padding text-overlay-fg shadow-xs transition-transform [scrollbar-width:thin] sm:max-w-3xl sm:text-sm dark:backdrop-saturate-200 forced-colors:bg-[Canvas] [&::-webkit-scrollbar]:size-0.5' ], variants: { - isPicker: { true: 'max-h-72 min-w-(--trigger-width) overflow-y-auto p-0', false: 'min-w-80' }, + isPicker: { + true: 'max-h-72 min-w-(--trigger-width) overflow-y-auto', + false: 'min-w-80' + }, isMenu: { - true: { - true: 'p-0' - } + true: 'p-0' }, isEntering: { true: [ - 'fade-in animate-in duration-100 ease-out', + 'fade-in animate-in duration-150 ease-out', 'data-[placement=left]:slide-in-from-right-1 data-[placement=right]:slide-in-from-left-1 data-[placement=top]:slide-in-from-bottom-1 data-[placement=bottom]:slide-in-from-top-1' ] }, isExiting: { true: [ - 'fade-out animate-out duration-50 ease-in', + 'fade-out animate-out duration-100 ease-in', 'data-[placement=left]:slide-out-to-right-1 data-[placement=right]:slide-out-to-left-1 data-[placement=top]:slide-out-to-bottom-1 data-[placement=bottom]:slide-out-to-top-1' ] } @@ -75,7 +77,7 @@ const drawer = tv({ variants: { isMenu: { true: 'rounded-t-xl p-0 [&_[role=dialog]]:*:not-has-[[data-slot=dialog-body]]:px-1', - false: 'rounded-t-2xl py-4' + false: 'rounded-t-2xl' }, isEntering: { true: [ @@ -129,11 +131,7 @@ const PopoverContent = ({ drawer({ ...renderProps, isMenu, className }) )} > - + {children} @@ -161,7 +159,9 @@ const PopoverContent = ({ )} - {children} + + {children} + ); }; diff --git a/resources/js/components/ui/text-field.tsx b/resources/js/components/ui/text-field.tsx index cb57321..ea1fc3c 100644 --- a/resources/js/components/ui/text-field.tsx +++ b/resources/js/components/ui/text-field.tsx @@ -59,40 +59,46 @@ const TextField = ({ {...props} className={composeTailwindRenderProps(className, 'group flex flex-col gap-y-1.5')} > - {label && } - [data-slot=suffix]>button]:mr-[calc(var(--spacing)*-1.15)] [&>[data-slot=suffix]>button]:rounded-md [&>[data-slot=suffix]>button]:data-focus-visible:outline-1 [&>[data-slot=suffix]>button]:data-focus-visible:outline-offset-1', - '[&>[data-slot=prefix]>button]:mr-[calc(var(--spacing)*-1.15)] [&>[data-slot=prefix]>button]:rounded-md [&>[data-slot=prefix]>button]:data-focus-visible:outline-1 [&>[data-slot=prefix]>button]:data-focus-visible:outline-offset-1' - )} - data-loading={isPending ? 'true' : undefined} - > - {prefix ? ( - - {prefix} - - ) : null} - - {isRevealable ? ( - + {label && } + [data-slot=suffix]>button]:mr-[calc(var(--spacing)*-1.7)] [&>[data-slot=suffix]>button]:data-focus-visible:outline-1 [&>[data-slot=suffix]>button]:data-focus-visible:outline-offset-1', + '[&>[data-slot=prefix]>button]:ml-[calc(var(--spacing)*-1.7)] [&>[data-slot=prefix]>button]:data-focus-visible:outline-1 [&>[data-slot=prefix]>button]:data-focus-visible:outline-offset-1' + )} + data-loading={isPending ? 'true' : undefined} > - {isPasswordVisible ? : } - - ) : isPending ? ( - - ) : suffix ? ( - {suffix} - ) : null} - - {description && {description}} - {errorMessage} + {prefix ? ( + + {prefix} + + ) : null} + + {isRevealable ? ( + + {isPasswordVisible ? : } + + ) : isPending ? ( + + ) : suffix ? ( + {suffix} + ) : null} + + {description && {description}} + {errorMessage} + + ) : ( + props.children + )} ); };