Compare commits

...

96 Commits

Author SHA1 Message Date
github-actions[bot] eada8cbf93 ci(changesets): version packages (#4440)
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
2025-01-05 10:09:56 -03:00
winches da7003e649 feat: add button open in stackblitz (#4461)
* feat: add button open in stackblitz

* feat: add button open in stackblitz

* fix: multiple react

* feat: add stackblitz button code preview

* feat: add stackblitz button code preview
2025-01-05 09:34:53 -03:00
աӄա b2e924fe19 fix(use-aria-link): onclick deprecation warning for Button as Link (#4497) 2025-01-05 09:33:15 -03:00
Ryo Matsukawa 33e0418d08 fix(popover): correct position logic (#4498)
* fix(popover): invalid placement logic

* chore(select): add story with popover position

* chore: add changeset

* chore: add pattern of popover story

* chore: fix changeset
2025-01-05 09:32:30 -03:00
աӄա 0c45fed420 fix(autocomplete): missing popover props except content (#4496) 2025-01-05 07:48:30 -03:00
Peterl561 a43b156801 fix(navbar): hide overlay when menu is closed (#4490) 2025-01-03 23:16:46 -03:00
Junior Garcia ef916ead52 chore: new canary version 2025-01-03 18:48:56 -03:00
աӄա 5d0fc9f786 fix(use-image): set status after hydrated (#4486)
* fix(use-image): set status after hydrated

* fix(use-image): use useSafeLayoutEffect instead
2025-01-03 11:23:42 -03:00
Tsuki 0eb96f6e5e feat(docs): nextUI with laravel (#4432)
* chore(docs): support laravel route

* feat(docs): add laravel.mdx

* chore(docs): update laravel.mdx

* chore(docs): update laravel.mdx

* Update apps/docs/config/routes.json

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
2025-01-02 16:20:56 -03:00
Peterl561 0401f2548f fix(autocomplete): validate prop not working after hovering (#4452)
* fix(autocomplete): validate prop not working after hovering

* test(autocomplete): validate prop function should work after hover

* chore(changeset): fixed autocomplete validate not working after hover

* chore(autocomplete): minor comment change
2025-01-02 16:17:42 -03:00
աӄա 7c2bc4a18e fix(autocomplete): clear autocomplete value when pressing clear button (#4458) 2025-01-02 16:13:29 -03:00
Vincentius Roger Kuswara 16c57ece64 fix+feat(select, listbox): bug on dataset with "sections", add support for scrollshadow (#4462)
* fix: add custom function to calculate rowHeight for dataset with sections

* fix: scroll shadow is now working in virtualized components

* chore: add changeset

* fix: to pass test cases use function call instead of function component
2025-01-02 16:12:39 -03:00
աӄա e7ff6730d7 fix(use-image): cached image flickering issue (#4442)
* feat(use-image): add test case

* feat(use-image): include `@nextui-org/react-utils`

* feat(react-utils): add useIsHydrated

* fix(use-image): cached image flickering issue

* fix(use-image): ensure status is set after hydrated

* chore(use-image): remove unneccessary code
2025-01-02 16:10:13 -03:00
աӄա d92468aa1e fix(deps): bump @tanstack/react-virtual to support react 19 peer dep (#4463) 2024-12-30 17:14:45 -03:00
Ryo Matsukawa fb46df2430 fix(popover): correct initial animation direction to match fallback placement (#4460)
* fix(popover): correct initial animation direction to match fallback placement

* fix: type error

* chore: add changeset
2024-12-30 09:08:09 -03:00
winches 4f0ef5818b fix: clipboard get the different unicode whitespace (#4392)
* fix: clipboard get the different unicode whitespace

* fix: clipboard get the different unicode whitespace

* fix(snippet): incorrect MultiLine story

* fix: nbsp in editor

* fix: rename

* fix: md

* feat: optimization

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>
2024-12-28 11:01:59 +08:00
աӄա a83388aaf4 fix(alert): mark description optional & revise styles when only children is provided (#4447)
* fix(alert): mark description as optional and update description

* fix(theme): alignment when only children is provided

* feat(changeset): add changeset
2024-12-27 08:51:57 -03:00
Ethan ab9ad9b6b2 docs(input): update type prop to include "file" (#4444) 2024-12-26 10:33:23 +08:00
Junior Garcia 388b2ed001 Merge pull request #4438 from nextui-org/fix/eslint 2024-12-24 09:19:18 -03:00
WK Wong 07780a75a2 fix(drawer): use a top-level type-only import instead of inline type specifiers 2024-12-24 17:40:22 +08:00
Junior Garcia 413bcd7653 Merge branch 'main' into canary 2024-12-23 22:15:32 -03:00
Junior Garcia 14e12ebf5e Merge branch 'canary' of github.com:nextui-org/nextui into canary 2024-12-23 22:15:07 -03:00
Junior Garcia 54eec6ce50 Merge pull request #4436 from nextui-org/canary
v.2.6.10
2024-12-23 22:14:24 -03:00
Junior Garcia 9d948e748c Merge branch 'main' into canary 2024-12-23 22:13:10 -03:00
github-actions[bot] 05807d80f5 ci(changesets): version packages (#4435)
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
2024-12-23 22:01:42 -03:00
Junior Garcia 6430bc0084 fix: navbar release 2024-12-23 21:55:39 -03:00
github-actions[bot] 1bf66bc26e ci(changesets): version packages (#4326)
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
2024-12-23 21:39:13 -03:00
Omar Shehab f8f6bfea5a chore(drawer): export drawer children props (#4310)
* export Drawer children props

* Fix eslint

* fix: add changeset for drawer props export

* fix: remove useDisclosure export for `@nextui-org/react` not to fail

* remove useDisclosureProps

* Import props as types
2024-12-23 09:11:19 -03:00
աӄա 5cd1c63dc8 fix(docs): i18n version in date-related components (#4430) 2024-12-22 12:38:51 -03:00
Maharshi Alpesh 5f388fc68c fix: virtual keyboard on mobile should be based on the allowed keys (#4411)
* fix: virtual keyboard on mobile should be based on the allowed keys

* chore: applying junior's suggestions

* chore: add inputmode prop, update changeset

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
2024-12-22 11:27:48 -03:00
Maharshi Alpesh de0e2776fe fix: navbar state change (#4406) 2024-12-22 11:20:51 -03:00
Maharshi Alpesh 885c9b3862 chore: update framework installations (#4410)
* chore: update framework installations

* chore: adding the nextui cli link
2024-12-22 11:19:17 -03:00
EReguero b5943db1fd fix: listbox-section props (#4369) 2024-12-22 11:06:13 -03:00
Peterl561 93c9df15d9 fix(input-otp): form validation hook missing behavior prop (#4417)
* fix(input-otp): form validation hook missing behavior

* test(input-otp): isRequired form test

* chore(changeset): fixed input-otp isRequired error message
2024-12-22 10:11:54 -03:00
Peterl561 f7e1b17c40 fix(select): remove input from hidden-select (#4427)
* fix(select): use select missing commitValidation call

* fix(select): remove hidden input from hidden-select

* test(select): updated validation tests

* chore(changeset): fix native validation behavior for select
2024-12-22 10:09:42 -03:00
աӄա c0e3dab5e8 fix(calendar): invalid prop ref supplied to React.Fragment (#4428)
* fix(calendar): remove unnecessary fragment

* feat(changeset): add changeset
2024-12-22 09:41:53 -03:00
Junior Garcia 7b38e04fee chore: hide pro image on mobile 2024-12-20 10:43:02 -03:00
Junior Garcia db58cbebd7 chore: hide pro image on mobile 2024-12-20 10:37:59 -03:00
Junior Garcia 97565057bb chore: hide pro image on mobile 2024-12-20 10:28:39 -03:00
Maharshi Alpesh c1baa746b2 fix: replacing the light mode bg in to nextui-pro section (#4355)
* fix: replacing the light mode bg and adding bg to nextui-pro section on mobile

* fix: making the transitions smoother

* chore: removing the bg on mobile devices

* fix: pro section and improvements

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
2024-12-20 10:05:43 -03:00
Junior Garcia 5494fa2d7b Merge branch 'main' into canary 2024-12-19 10:59:07 -03:00
Maharshi Alpesh 7b7408cdac feat(docs): nextUI pro callout (#4391)
* feat: adding a callout for nextui-pro

* chore: changing the position of callout

* chore: putting back the callout to toc

* chore: adjustments

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
2024-12-19 09:27:11 -03:00
Ryo Matsukawa d152b36b5d chore: add shouldBlockScroll stories (#4351)
* chore: add `shouldBlockScroll` stories

* chore: add shouldBlockScroll for argtypes

* chore: add shouldBlockScroll story for navbar

* chore: remove unnecessary props
2024-12-19 12:32:08 +08:00
Junior Garcia e753317b0e Merge branch 'main' into canary 2024-12-18 16:43:35 -03:00
Peterl561 f11659e9cb docs(switch): custom style example wrong margins (#4389) 2024-12-18 16:40:55 -03:00
Junior Garcia 0cb730b474 chore: posthog ingest removed (#4398) 2024-12-18 16:16:24 -03:00
Maharshi Alpesh afe0b527ce fix: input in card becomes invisible on hover and make date-input and time-input consistent (#4394) 2024-12-18 11:08:54 -03:00
Junior Garcia e15ef62b6c fix: icon wrapper border on alert component (#4383) 2024-12-17 12:20:27 -03:00
աӄա d9a55d0360 refactor(docs): use onPress event instead (#4353) 2024-12-17 11:17:11 -03:00
աӄա fa38828345 refactor: use onPress event instead (component-wise) (#4354)
* refactor: use onPress event instead

* chore(changeset): add changeset

* refactor(button): remove duplicate test case

* refactor(link): remove duplicate test case

* chore: add back onClick test case

* chore(menu): keep onClick test case

* chore: keep the original order
2024-12-17 11:16:10 -03:00
աӄա 5946e90335 fix(alert): slots & variantProps import (#4365) 2024-12-17 11:15:50 -03:00
աӄա 9e8a656665 fix(input): label placement with file input type (#4366) 2024-12-17 11:15:13 -03:00
Peterl561 00fc0a0f85 docs(input): form validation examples (#4368)
* docs(forms): minor typos

* docs(input): form validation examples
2024-12-17 11:14:14 -03:00
Maharshi Alpesh 2f55ecb4b2 fix(input-otp): filter disallowed characters from value prop (#4338)
* fix: input should filter away disallowed characters from value prop

* chore(changeset): add space

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>
2024-12-16 19:44:04 +08:00
Peterl561 e546124e1d fix(theme): menu overflow use clip (#4373)
* fix(theme): menu overflow use clip
fixes listbox section sticky not working

* chore(changeset): fix listbox section sticky not working

* chore(changeset): add issue number

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>
2024-12-16 19:43:36 +08:00
Junior Garcia 8d53e8bf7a Merge branch 'main' into canary 2024-12-13 15:47:24 -03:00
Junior Garcia 384382a719 fix: modal scroll 2024-12-13 15:47:04 -03:00
Junior Garcia fd86056e24 Merge branch 'main' into canary 2024-12-12 10:16:05 -03:00
Junior Garcia c9da5d482c fix: re-renders (#4349) 2024-12-12 10:15:33 -03:00
Junior Garcia a697439b83 Merge branch 'main' of github.com:nextui-org/nextui into canary 2024-12-12 09:24:17 -03:00
Peterl561 8e1ace580c docs(form): form guide link typo (#4339) 2024-12-12 09:13:50 -03:00
Vincentius Roger Kuswara 47b7d3eaeb feat(docs): preserve scrolling position when navigating to new page (#4294)
* feat: preserve scrolling position

* fix: add debounce and make scrollViewPortRef optional
2024-12-12 09:13:24 -03:00
Peterl561 c8a576e1f7 fix(docs): horizontal scroll triggering intersection observer (#4341) 2024-12-12 09:11:16 -03:00
OwLu0905 68d5b274ca docs(blog): v2.6.0 link typo (#4342) 2024-12-12 09:10:25 -03:00
刘佳闻 77206bc625 fix(shared-utils): process?.env will not transform to env by transcompiler (#4327)
* Fix (console.ts): process?.env will not transform to env by transcompiler

* chore(changeset): add changeset

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>
2024-12-12 13:07:44 +08:00
Junior Garcia 2fb6efa4d3 Merge pull request #4334 from nextui-org/fix/eng-1711
* fix(switch): bump `@nextui-org/theme` in peerDependencies

* fix(checkbox): bump `@nextui-org/theme` in peerDependencies

* fix(radio): bump `@nextui-org/theme` in peerDependencies

* chore(changeset): update packages
2024-12-11 14:54:35 -03:00
WK Wong 111178338d chore(changeset): update packages 2024-12-11 23:51:19 +08:00
WK Wong ea304d1be7 fix(radio): bump @nextui-org/theme in peerDependencies 2024-12-11 23:50:34 +08:00
WK Wong d481cc0f98 fix(checkbox): bump @nextui-org/theme in peerDependencies 2024-12-11 23:50:26 +08:00
WK Wong 0b117e59b2 fix(switch): bump @nextui-org/theme in peerDependencies 2024-12-11 23:47:19 +08:00
Maxim Shlyamov 76a72a9d1c fix(system-rsc): extendVariants typescript type (#4291)
* fix: ReactElement type

* fix: extendVariants forwardRef return type

* feat: add changeset

* chore(changeset): change to patch

---------

Co-authored-by: աӄա <wingkwong.code@gmail.com>
2024-12-11 12:36:10 +08:00
Junior Garcia 053c1a703c v.2.6.8 (#4324)
* ci: when build fail will exit the release process (#4319)

* fix: on click event on interactive elements (#4322)

* chore: deprecated style added to api table

* ci(changesets): version packages (#4323)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

---------

Co-authored-by: winches <329487092@qq.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-12-10 19:01:00 -03:00
Junior Garcia 31ab5085f1 Merge branch 'canary' of github.com:nextui-org/nextui into canary 2024-12-10 18:59:54 -03:00
Junior Garcia c0c57e0b02 Merge branch 'main' of github.com:nextui-org/nextui into canary 2024-12-10 18:59:36 -03:00
github-actions[bot] 85893b5440 ci(changesets): version packages (#4323)
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
2024-12-10 18:12:33 -03:00
Junior Garcia 720a8dd726 chore: deprecated style added to api table 2024-12-10 18:12:04 -03:00
Junior Garcia 78c09280e3 fix: on click event on interactive elements (#4322) 2024-12-10 18:01:39 -03:00
winches a289ff8a67 ci: when build fail will exit the release process (#4319) 2024-12-10 12:33:09 -03:00
Junior Garcia 3f119d9b30 Merge pull request #4318 from nextui-org/canary
v2.6.7
2024-12-10 11:50:02 -03:00
Junior Garcia 2b1eb1b4f0 chore: merged with main 2024-12-10 11:49:30 -03:00
Junior Garcia c93e3796ff chore: update release workflow 2024-12-10 11:40:17 -03:00
github-actions[bot] cc5f98dd40 ci(changesets): version packages (#4316)
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
2024-12-10 11:29:21 -03:00
Junior Garcia 2b3863d309 chore: update release workflow 2024-12-10 11:29:03 -03:00
Junior Garcia 5598806216 fix: build (#4314) 2024-12-10 11:21:47 -03:00
Junior Garcia 2a4dd3b90b v2.6.6 (#4313)
* fix(input): ensure clear button is not focusable when disabled (#3774)

* fix(input): ensure clear button is not focusable when disabled

* test(input): add test to ensure clear button is not focusable when disabled

* chore: add changeset for clear button focus fix when input is disabled

* fix(input): update clear button to use button element

* test(input): add focus test when disabled

and update tests for clear button using button element

* test(input): replace querySelector with getByRole for clear button

* fix(input): set tabIndex to -1 for clear button

* test(input): ensure clear button is not focusable

* fix(image): add missing `w` to `getWrapperProps` dependency (#3802)

* fix(image): add missing `w` to `getWrapperProps` dependency

* chore(changeset): add changeset

* fix(autocomplete): popover should remain open after clicking clear button (#3788)

* fix: add state.open() so that dropdown is not closed

* chore: add changeset

* chore(autocomplete): add testcases for keeping lisbox open when clearButton is clicked

* chore: update changeset

* chore(autocomplete): change the docs for test cases

* chore(changeset): update changeset message and add issue number

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* refactor(docs): example of blurred card (#3741)

* docs(card): adding info regarding the gradient for blurred card

* chore(nit): adding example

* chore(docs): revise content for card isBlurred example

* chore(docs): revise isBlurred note

---------

Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(docs): replace twitter logo/links with x logo/links (#3815)

* fix(docs): replace Twitter logo/links with X logo/links

* docs: update twitter references to x

* docs: update changeset for twitter to x changes

* docs: update twitter references to x

* docs: update twitter references to x

* chore(docs): undo .sponsorsrc since it's generated

* refactor(docs): remove unnecessary classes

* chore(docs): undo .sponsorsrc since it's generated

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(date-picker): adding props from calendarProps to getCalendarProps (#3773)

* fix(date-picker): adding props from calendarProps to the getCalendarProps

* chore(date-picker): adding the changeset

* chore(changeset): add issue number

---------

Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* feat(autocomplete): automatically focus first non-disabled item (#2186)

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* docs(accordion): add overflow to custom motion example (#3793)

* fix(docs): typos in dark mode page (#3823)

* fix(theme): fullWidth in input and select (#3768)

* fix(input): fixing the fullWidth functionality

* chore(changeset): add issue number

* chore(changeset): revise changeset message

---------

Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(autocomplete): exit animation on popover close (#3845)

* fix(autocomplete): exit animation on popover close

* refactor(autocomplete): getListBoxProps

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* refactor(theme): replace the use of RTL-specific styles with logical properties (#3868)

* chore(rtl): remove the usages of rtl

* chore(changeset): adding the changeset

* chore(changeset): update changeset message

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(select): label placement discrepancy in Select (#3853)

* fix(select): label placement incorrect in case of multiline

* chore(select): adding the changeset

* chore(select): adding the tests

* chore(select): code imrovement, wkw's suggestions

* chore(changeset): update changeset message

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(theme): label placement in select and input (#3869)

* fix(theme): fix the label placement

* chore(changeset): adding the changeset

* chore(select): adding comments

* fix(docs): avoid translating the code block (#3878)

* docs(Codeblock): avoid code be translated

* fix(docs): lint issue

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(listbox): change listBoxItem key to optional (#3883)

* fix(listbox): listBoxItem key to optional

* chore: add defaultSelectedKeys test for numeric keys and ids

* chore: add changeset

* chore: comment out section prompts in PR template (#3884)

* chore(test): update testing libraries and refactor (#3886)

* fix(theme): show margin only with label in Switch component (#3861)

* fix(switch): removed right margin in wrapper #3791

* feat(changeset): added changeset

* fix(switch): removed me-2 in wrapper

* fix(switch): added ms-2 to label

* chore(changeset): correct package and message

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(theme): removed pseudo cancel btn from input (#3912)

* fix(theme): removed pseudo cancel btn from input

* chore(changeset): adding the changeset

* fix(input): conditionally hiding the webkit search

* chore(changeset): revise changeset message

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* refactor(docs): dx improvement in accordion (#3856)

* refactor: improve dx for writing a docs component (#2544)

* refactor: improve dx for write a docs component

Signed-off-by: Innei <i@innei.in>

* refactor(docs): switch to contentlayer2

* chore(docs): rename to avoid conflict

* refactor(docs): switch to next-contentlayer2

* refactor(docs): revise docs lib

* chore(deps): bump docs related dependencies

* fix(use-aria-multiselect): type issue due to ts version bump

---------

Signed-off-by: Innei <i@innei.in>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* refactor(docs): accordion codes

* feat(docs): declare module `*.jsx?raw`

* feat(docs): include `**/*.jsx`

* fix(docs): incorrect content

* chore(docs): add new lines

* refactor(docs): lint

---------

Signed-off-by: Innei <i@innei.in>
Co-authored-by: Innei <tukon479@gmail.com>

* fix(docs): typos in hero section (#3928)

* fix(theme): support RTL for breadcrumbs (#3927)

* fix(breadcrumbs): added separator rotation for RTL #2486

* chore(changeset): added changeset

* fix(docs): removed unused import and merged classNames in dropdown (#3936)

* fix(breadcrumbs): added separator rotation for RTL #2486

* chore(changeset): added changeset

* fix(docs): removed unused Link import and merged classnames in dropdown

* fix: avatar filter disableAnimation to dom prop (#3946)

* feat: add git hook to auto update dependencies (#3365)

* feat: add git hook to auto update dependencies

* feat: update color

* fix: prevent test matcher warning (#3893)

* fix: prevent test matcher warning

* chore: add node types

* chore: update Jest related packages

* chore: run pnpm install

* fix(tabs): correct inert value for true condition (#3978)

* Alert component (#3982)

* feat(alert): began the work on alert component

* fix(readme): making correction

* chore(deps): change to 2.0.0

* chore(docs): update README.md

* feat(theme): init alert tv

* chore(alert): update package.json

* feat(alert): init alert storybook structure

* chore(changeset): add changeset

* chore(changeset): change to minor

* chore(alert): revise alert package.json

* feat(alert): init test structure

* chore(deps): pnpm-lock.yaml

* feat(alert): initailized theme and basic structure

* feat(alert): completed use-alert.ts and alert.tsx

* feat(alert): remove innerWrapper, replace helperWrapper with mainWrapper, adding isCloseable prop

* feat(alert): adding isCloseable prop to baseWrapper dependency

* feat(alert): setting the default value of isCloseable prop to true

* feat(alert): moving CloseIcon inside the button

* feat(alert): updated package.json

* feat(alert): default variant and default story

* feat(alert): adding color and radius stories

* feat(alert): completed the styling

* feat(alert): add stories for isCloseable prop and restyle other stories

* feat(alert): correcting ref type

* feat(alert): add test cases

* feat(alert): remove startContent and endContent props

* feat(alert): make styling more accurate

* feat(alert): fixed default props

* feat(alert): fixed theme docs

* feat(alert): add logic for icons

* feat(alert): begin to add docs

* chore(alert): implement the changes suggested in code review

* feat(alert): add onclose prop to alert

* feat(alert): add test cases

* docs(alert): add onClose  event

* feat(docs): add alert to routes.json

* fix(alert): correct the text colors

* docs(alert): fix imports and syntax errors

* chore(alert): implement the changes suggested in code review

* chore(alert): lint the code and change isCloseable to isClosable

* chore(alert): lint the code

* chore(alert): run pnpm  i

* fix(alert): fix the logic for close button and add test case

* docs(alert): fix docs, change isCloseable to isClosable and change docs for isClosable property

* chore(alert): add the support for RTL, refactor the code and fix the typos

* docs(alert): grammer issues fix

* fix(alert): replace rtl with ms

* chore(alert): custom style and custom implementation, remove isClosable={false}, refactor, fix typos

* chore(alert): linting and implement coderabbit suggestions

* chore(alert): refactor and typos fix

* chore(alert): add import for closeIcon

* chore(alert): add props for closeIcon

* chore(alert): refactor fixes

* chore(alert): implement ryo-manba's suggestion on close Icon

* chore(alert): make alert more responsive

* chore(alert): fix grammer issues suggested by coderabbit

* fix(alert): add max-w property to make alert responsive

* chore(alert): improve responsiveness  and refactor alertIcon

* chore(alert): add missing dependency to useMemo

* chore(alert): implement coderabbit's suggestions

* chore(alert): update docs and refactor

* chore(alert): refactor alertIcon and implement coderabbit's suggestion

* chore: fixes

---------

Co-authored-by: Abhinav Agarwal <abhinavagrawal700@gmail.com>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>
Co-authored-by: Abhinav Agarwal <78839973+abhinav700@users.noreply.github.com>

* Feat/add draggable modal (#3983)

* feat(hooks): add use-draggable hook

* feat(components): [modal] export use-draggable

* docs(components): [modal] add draggable modal

* feat(components): [modal] add ref prop for modal-header

* chore(components): [modal] add draggable modal for storybook

* chore: add changeset for draggable modal

* docs(hooks): [use-draggable] fix typo

* chore: upper changeset

* chore(components): [modal] add overflow draggable modal to sb

* test(components): [modal] add draggable modal tests

* build: update pnpm-lock

* chore(changeset): include issue number

* feat(hooks): [use-draggable] set user-select to none when during the dragging

* docs(components): [modal] update code demo title

* docs(components): [modal] condense description for draggable overflow

* feat(hooks): [use-draggable] change version to 0.1.0

* refactor(hooks): [use-draggable] use use-move implement use-draggable

* feat(hooks): [use-draggable] remove repeated user-select

* test(components): [modal] update test case to use-draggable base use-move

* docs(components): [modal] update draggable examples

* fix(hooks): [use-draggable] fix mobile device touchmove event conflict

* refactor(hooks): [use-draggable] remove drag ref prop

* refactor(hooks): [use-draggable] draggable2is-disabled overflow2can-overflow

* test(components): [modal] add draggble disable test

* chore(hooks): [use-draggable] add commant for body touchmove

* Update packages/hooks/use-draggable/src/index.ts

Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>

* fix(hooks): [use-draggable] import use-callback

* test(components): [modal] add mobile-sized test for draggable

* chore(hooks): [use-draggable] add use-callback for func

* chore(hooks): [use-draggable] update version to 2.0.0

* chore: fix typo

* Update .changeset/soft-apricots-sleep.md

* fix: pnpm lock

* fix: build

* chore: add updated moadl

---------

Co-authored-by: wzc520pyfm <1528857653@qq.com>
Co-authored-by: աɨռɢӄաօռɢ <wingkwong.code@gmail.com>
Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>

* chore: upgrade react-aria / React 19 & Next.js 15 support (#3732)

* chore: upgrade react-aria

* chore: add changeset

* chore: fix type error

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* feat(date-picker): add selectorButtonPlacement property (#3248)

* feat(date-picker): add selectorButtonPlacement property

* chore: update changeset

* Update .changeset/neat-donkeys-accept.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* feat: add tab ref (#3974)

* feat: add tab ref

* feat: add changeset

* feat: pre-release workflow (#2910)

* feat(workflow): pre-release

* feat(workflow): exit pre-release

* chore(workflow): update version & publish commands

* fix(workflow): add missing attributes and use schangeset:beta cmd

* feat(root): add changeset:beta

* fix(workflows): revise pre-release logic

* fix(workflows): add missing run

* fix(workflows): use changeset:exit with version instead

* feat(root): add changeset:exit cmd

* refactor(workflows): add pths, id, and format

* feat(workflows): enter pre-release mode

* chore(workflows): remove pre.json only

* refactor(workflows): remove enter-pre-release-mode

* fix(workflows): incorrect url

* refactor(root): remove unused exit command

* refactor(workflows): add comments

* feat(changeset): change to main branch as baseBranch

* feat(root): add changeset:canary

* refactor(workflows): remove unused workflow

* feat(workflow): support canary pre-release mode

* refactor(docs): change to canary

* feat(popover): added control for closing popover on scroll (#3595)

* fix(navbar): fixed the height when style h-full

* fix(navbar): fixed the height when style h-full

* docs(changeset): resolved extra file

* feat(popover): added control for closing popover on scroll

* update(changeset):  correction

* feat(popover): removed extra story

* refactor(test): corrected test for both true and false values of shouldCloseOnScroll

* refactor(docs): added shouldCloseOnScroll prop

* chore(changeset): change to minor

---------

Co-authored-by: աӄա <wingkwong.code@gmail.com>

* feat: add month and year pickers to DateRangePicker and RangeCalendar (#3302)

* feat: add month and year pickers to DateRangePicker and RangeCalendar

* chore: update docs

* Update .changeset/kind-cobras-travel.md

* chore: react package version

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* chore(deps): bump tailwind-merge version (#3657)

* chore(deps): bump tailwind-merge versions

* chore(theme): adopt latest extendTailwindMerge

* chore(changeset): add changeset

* chore(changeset): change to minor

* Update .changeset/grumpy-mayflies-rhyme.md

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* feat: added drawer component (#3986)

Signed-off-by: The1111mp <The1111mp@outlook.com>
Co-authored-by: The1111mp <The1111mp@outlook.com>

* refactor: optimisations (#3523)

* refactor: replace lodash with native approaches

* refactor(deps): update framer-motion versions

* feat(utilities): add @nextui-org/dom-animation

* refactor(components): load domAnimation dynamically

* refactor(deps): add @nextui-org/dom-animation

* fix(utilities): relocate index.ts

* feat(changeset): framer motion optimization

* chore(deps): bump framer-motion version

* fix(docs): conflict issue

* refactor(hooks): remove the unnecessary this aliasing

* refactor(utilities): remove the unnecessary this aliasing

* chore(docs): remove {} so that it won't be true all the time

* chore(dom-animation): end with new line

* refactor(hooks): use debounce from `@nextui-org/shared-utils`

* chore(deps): add `@nextui-org/shared-utils`

* refactor: move mapKeys logic to `@nextui-org/shared-utils`

* refactor: use `get` from `@nextui-org/shared-utils`

* refactor(docs): use `get` from `@nextui-org/shared-utils`

* refactor(shared-utils): mapKeys

* chore(deps): bump framer-motion version

* chore(deps): remove lodash

* refactor(docs): use intersectionBy from shared-utils

* feat(shared-utils): add intersectionBy

* chore(dom-animation): remove extra blank line

* refactor(shared-utils): revise intersectionBy

* fix(modal): add willChange

* refactor(shared-utils): add comments

* fix: build & tests

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* feat(hooks): use-theme hook (#3169)

* feat(docs): update dark mode content

* feat(hooks): @nextui-org/use-theme

* chore(docs): revise ThemeSwitcher code

* refactor(hooks): simplify useTheme and support custom theme names

* feat(hooks): add use-theme test cases

* feat(changeset): add changeset

* refactor(hooks): make localStorageMock globally and clear before each test

* fix(docs): typo

* fix(hooks): coderabbitai comments

* chore(hooks): remove unnecessary +

* chore(changeset): change to minor

* feat(hooks): handle system theme

* chore(hooks): add EOL

* refactor(hooks): add default theme

* refactor(hooks): revise useTheme

* refactor(hooks): resolve pr comments

* refactor(hooks): resolve pr comments

* refactor(hooks): resolve pr comments

* refactor(hooks): remove unused theme in dependency array

* chore(docs): typos

* refactor(hooks): mark system as key for system theme

* chore: merged with canary

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* Fix/avatar flashing (#3987)

* fix(use-image): cached image flashing

* chore: merged with canary

---------

Co-authored-by: Rakha Kanz Kautsar <rkkautsar@gmail.com>

* refactor(menu): Use `useMenu` and `useMenuItem` from RA (#3261)

* refactor(menu): use useMenu from react-aria instead

* refactor(menu): use useMenuItem from react-aria instead

* feat(changeset): add changeset

* chore: merged with canary

* fix: dropdown tests

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix(theme): added stripe color gradients for progress (#3938)

* fix(breadcrumbs): added separator rotation for RTL #2486

* chore(changeset): added changeset

* fix(docs): removed unused Link import and merged classnames in dropdown

* fix(theme):added stripe color gradients for progress #1933

* refactor(theme): added stripe-size and createStripeGradient

* chore: add all minor releases

* fix(docs): invalid canary storybook link (#4030)

* fix(use-image): image ReferenceError in SSR (#4122)

* fix(use-image): image ReferenceError in SSR

* fix(use-image): sync with beta

* fix(use-image): sync with beta

* chore(use-image): remove unnecessary comments

* fix(docs): buildLocation expects an object  (#4118)

* fix(docs): routing.mdx

* Delete .changeset/pre.json

* chore(docs): update yarn installation command (#4132)

There is no `-g` flag in yarn. `global` is a command which must immediately follow yarn. 

Source: https://classic.yarnpkg.com/lang/en/docs/cli/global/

* chore: upgrade storybook 8 (#4124)

* feat: upgrade storybook8

* chore: upgrade storybook and vite

* chore: remove @mdx-js/react optimizeDep

* chore: add @mdx-js/react optimizeDep

* fix: format

* docs: add forms guide (#3822)

* v2.5.0 [BETA] (#4164)

* chore(pre-release): enter pre-release mode

* fix(theme): apply tw nested group (#3909)

* chore(changset): add changeset

* fix(theme): apply nested group to table

* chore(docs): update table bottomContent code

* fix: changeset

* fix: changeset

* fix: changeset

* fix: changeset

* fix: changeset

* fix: pkg versions

* fix: changeset

* fix: drawer peer dep

* chore: update plop components tempalte

* ci(changesets): version packages (beta) (#3988)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: pre-release workflow

* chore: debug log added

* chore: force pre-release

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* chore: beta1 (#3990)

* ci(changesets): version packages (beta) (#3991)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(use-image): image ReferenceError in SSR (#3993)

* fix(input): fixed a sliding issue caused by the helper wrapper (#3966)

* If it is false and there is an error message or description it will create a div

* Update packages/components/input/src/input.tsx

* Update packages/components/select/src/select.tsx

* Update packages/components/input/src/textarea.tsx

* add changeset

* changeset update

* ci(changesets): version packages (beta) (#3995)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: image loading in the server (#3996)

* fix: lock file

* chore: force release

* chore: force release 2

* ci(changesets): version packages (beta) (#3997)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: image load on next.js (#3998)

* ci(changesets): version packages (beta) (#3999)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: element.ref was removed in React 19 warning (#4003)

* ci(changesets): version packages (beta) (#4004)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: react 19 as peer dep (#4008)

* ci(changesets): version packages (beta) (#4009)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Beta/react 19 support (#4010)

* fix: react 19 as peer dep

* fix: react 19 as peer dep

* chore: support framer-motion alpha version

* ci(changesets): version packages (beta) (#4011)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(theme): making select and input themes consistent (#3881)

* ci(changesets): version packages (beta) (#4012)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: support inert value with boolean type for react 19 (#4039)

* ci(changesets): version packages (beta) (#4041)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: alert design improved (#4054)

* ci(changesets): version packages (beta) (#4056)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: drawer improvements (#4057)

* ci(changesets): version packages (beta) (#4058)

* feat: alert styles improved (#4071)

* ci(changesets): version packages (beta) (#4072)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: alert styles improved (#4073)

* ci(changesets): version packages (beta) (#4074)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: add number of stars and credits

* chore: fix build

* chore: improve navabr colors

* chore: new changeset (#4083)

* ci(changesets): version packages (beta) (#4084)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore: pnpm cleaned (#4086)

* ci(changesets): version packages (beta) (#4087)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore: custom runnner added

* chore: custom runner test (#4091)

* Beta/custom runner (#4092)

* chore: custom runner test

* chore: custom runner test

* chore: remove 2 from older changeset

* ci(changesets): version packages (beta) (#4093)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: new demo added to alert

* Feat/virtualization for autocomplete (#4094)

* feat: add react-window virtualization for autocomplete

* fix: wrong imports and wrong sizing

* fix: update pnpm lock

* chore: add test cases for large dataset (1000 and 10000 items)

* chore: move virtualized-listbox to listbox components folder, implement isVirtualized conditional

* feat: implement dynamic listboxheight n item height, add story

* chore: rename props, remove unnecessary line changes

* fix: maxHeight style 256px for default, conditional usage of virtualizer

* feat: migrate to tan-stack virtual. (todo: fix scroll shadow)

* feat: virtualization support

---------

Co-authored-by: Vincentius Roger Kuswara <vincentiusrkuswara@gmail.com>

* ci(changesets): version packages (beta) (#4095)

* feat: small fixes

* feat: add reducedMotion setting to Provider (#3470)

* feat: add reducedMotion setting to Provider

* chore: refactor reducedMotion story

* Update .changeset/pretty-parrots-guess.md

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* ci(changesets): version packages (beta) (#4106)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: move circular-progress tv to progress (#3321)

* fix: remove circular-progress tv to progress

* docs: changeset

* chore(changeset): update changeset message

* Update .changeset/angry-maps-serve.md

---------

Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix: label placement when the select has a placeholder or description (#4126)

* ci(changesets): version packages (beta) (#4107)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(deps): add missing `framer-motion` in `peerDependencies` (#4140)

* fix(theme): add truncate class to the list item to avoid overflow the wrapper (#4105)

* fix(docs): invalid canary storybook link (#4030)

* fix: menu item hidden overflow text

* feat: changeset

* Merge branch 'beta/release-next' into fix/menu-item-hidden

* fix: truncate list item

* feat: update changeset

* fix(menu): omit internal props

---------

Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* feat(table): add isKeyboardNavigationDisabled prop to the table (#3735)

Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>

* feat: add form component (#3036)

* chore: add support validationBehavior aria

* chore: add validationBehavior to Provider

* chore: add autocomplete validation test

* chore: add checkbox validation test

* fix(input): require condition

* docs: add description of validationBehavior props

* chore: add support validationBehavior props for date components

* docs(dates): add description of validationBehavior props

* chore: add changeset

* chore: format

* chore: fix test

* fix: select validationBehavior is not support yet

* fix: select validationBehavior not supported yet

* feat: add form component with input support

* feat: add support form context

* chore: wip add support for  form server errors

* chore: add support checkbox server validation

* chore: add support radio server validation

* chore: update pnpm-lock.yaml

* chore: add support input server validation

* chore: add support autocomplete server validation

* chore(form): add server validation stories

* chore: fix test

* chore: add date-picker validation test

* chore: update form stories

* chore: add changeset

* chore: update react-aria version

* chore: add pnpm-lock.yaml

* chore: update react-aria version

* chore: add comment

* chore: update react-aria version

* chore: fix change set

* chore: export form component in the main package

* chore: upgrade react-aria

* chore: fixed internationalized/date version

* fix: build error

* chore: upgrade docs react-aria version

* fix: remove comment

* fix: debug setting

* chore(docs): update sponsor (#3904)

* chore(docs): remove Scrumbuiss

* chore(docs): remove Scrumbuiss logo

* chore(docs): replace va by posthog (#4123)

* chore(changeset): change to patch

* refactor: react-aria-components remove to decrease package size, logic moved to the form package

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* docs: add forms guide (#4155)

Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>

* chore: routes updated

* ci(changesets): version packages (beta) (#4151)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore: fix indentation

* fix(changeset): package not be found

* ci(changesets): version packages (beta) (#4158)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(select): controlled isInvalid prop (#4082)

* fix(select): controlled isInvalid prop

* chore: add changeset

* Merge branch 'beta/release-next' into pr/4082

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* ci(changesets): version packages (beta) (#4159)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore(changeset): bump all versions

* ci(changesets): version packages (beta) (#4160)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(deps): missing peer / dev dependency for framer-motion (#4161)

* fix(system): align `navigate` function parameters with `@react-aria` (#4163)

* fix: menu item classNames not work (#4156)

* fix: menu item classNames not work

* feat: changeset

* docs: update

* feat: merge classes utility added

* Update .changeset/brave-trains-wave.md

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* chore(docs): remove incorrect info

* ci(changesets): version packages (beta) (#4162)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* refactor(docs): overall dx (#4055)

* refactor(docs): revise code block (#3922)

* refactor(docs): revise code block

* chore(docs): resolve pr comments

* refactor(docs): autocomplete dx (#3934)

* feat(docs): add *.js?raw module

* feat(docs): change to react-jsx and add **/*.js

* chore(root): include js and jsx

* refactor(docs): autocomplete dx

* chore(docs): rollback overrides

* chore(autocomplete): lint

* fix(autocomplete): incorrect import path

* fix(docs): autocomplete dx

* chore(docs): remove highlightedLines

* refactor(docs): breadcrumbs dx (#3968)

* refactor(docs): breadcrumbs dx

* fix(docs): export issue

* chore(docs): use preserve for jsx

* fix(docs): support multiline import

* fix(docs): support multiple export

* chore(docs): add back export

* refactor(docs): avatar dx (#3951)

* refactor(docs): badge dx (#3960)

* refactor(docs): badge dx

* chore(docs): incorrect import path

* refactor(docs): button dx (#3981)

* refactor(docs): calendar dx (#4022)

* refactor(docs): calendar dx

* fix(docs): incorrect import path

* refactor(docs): switch dx (#4037)

* refactor(docs): switch dx

* chore(docs): remove highlightedLines

* refactor(docs): tooltip (#4035)

* refactor(docs): usage dx (#4036)

* refactor(docs): circular-progress dx (#4029)

* refactor(docs): chip-dx (#4028)

* refactor(docs): checkbox-group dx (#4027)

* refactor(docs): checkbox dx (#4024)

* refactor(docs): checkbox dx

* fix(docs): incorrect import path

* refactor(docs): card dx (#4023)

* refactor(docs): skeleton dx (#4042)

* refactor(docs): spacer dx (#4043)

* refactor(docs): snippet dx (#4044)

* refactor(docs): scroll-shadow dx (#4045)

* refactor(docs): code dx (#4046)

* refactor(docs): kbd dx (#4047)

* refactor(docs): link dx (#4048)

* refactor(docs): progress dx (#4049)

* refactor(docs): divider dx (#4050)

* refactor(docs): listbox dx (#4051)

* refactor(docs): listbox dx

* fix(docs): import path

* fix(docs): import path

* chore(docs): remove highlightedLines

* fix(docs): indentation

* chore(docs): replace the props of autocomplete from value to key (#4129)

* refactor(docs): alert dx (#4108)

* refactor(docs): alert dx

* refactor(docs): alert dx

* refactor(docs): image dx (#4061)

* refactor(docs): textarea dx (#4063)

* refactor(docs): spinner dx (#4088)

* refactor(docs): radio-group dx (#4064)

* refactor(docs): pagination dx (#4062)

* refactor(docs): pagination dx

* refactor(docs): pagination dx

* refactor(docs): time-input dx (#4065)

* refactor(docs): time-input dx

* refactor(docs): time-input dx

* refactor(docs): slider dx (#4066)

* refactor(docs): slider dx

* refactor(docs): slider dx

* refactor(docs): move SliderValue to type

* refactor(docs): slider dx

* refactor(docs): make icon code collapsible

* refactor(docs): specify versions for date packages (#4138)

* refactor(docs): specify versions for date packages

* fix(docs): correct RA i18n version

* chore(deps): sync version from package

* refactor(docs): tabs dx (#4067)

* refactor(docs): tab dx

* refactor(docs): tabs dx

* refactor(docs): input dx (#4102)

* refactor(docs): input dx

* refactor(docs): input dx

* refactor(docs): navbar dx (#4076)

* refactor(docs): navbar dx

* refactor(docs): navbar dx

* refactor(docs): navbar dx

* refactor(docs): modal dx (#4077)

* refactor(docs): modal dx

* refactor(docs): modal dx

* refactor(docs): select dx (#4078)

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): table dx (#4079)

* refactor(docs): table dx

* fix(docs): import path

* refactor(docs): table dx

* refactor(docs): table dx

* refactor(docs): popover dx (#4090)

* refactor(docs): range-calendar dx (#4089)

* refactor(docs): range-calendar dx

* fix(docs): import path

* refactor(docs): date input dx (#4100)

* refactor(docs): dropdown dx (#4101)

* refactor(docs): dropdown dx

* refactor(docs): remove highlightedLines

* refactor(docs): dropdown dx

* refactor(docs): dropdown dx

* refactor(docs): date-picker dx (#4103)

* refactor(docs): date-picker dx

* fix(docs): import paths

* refactor(docs): date-range-picker dx (#4104)

* refactor(docs): date-range-picker dx

* fix(docs): date-range-picker dx

* refactor(docs): drawer dx (#4109)

* refactor(docs): drawer dx

* fix(docs): indentation

* refactor(docs): make icon collapsible

---------

Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>

* feat(input-otp): introduce input OTP component (#4052)

* feat(input-otp): adding the functionality

* fix(input-otp): making the use of input-otp library

* Update .changeset/spotty-flies-jump.md

* chore(input-otp): nits

* feat: improvements and fixes added

* refactor: input-otp docs improvements

* fix: changeset

* fix: build

---------

Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* ci(changesets): version packages (beta) (#4169)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* refactor(theme): revise label font size for lg (#4141)

* refactor(theme): revise label font size for lg

* chore(changeset): add changeset

* refactor(theme): revise label font size for lg

* fix(docs): typecheck errors (#4171)

* fix(docs): remove duplicate import

* fix(docs): update type for onChange in range-calendar page

* fix(docs): add missing `@react-types/calendar`

* fix(docs): broken syntax

* fix(docs): typecheck issues

* fix(docs): add missing `@react-types/datepicker`

* fix(docs): typecheck issues

* fix: missing li tag when href is specified (#4168)

* fix(items): items in list should wrapped in li in case of a

* chore: adding the tests

* Feat/textarea add clear button (#4172)

* feat(components): add clear button to the textarea component

* docs(textarea): add test and changeset

* feat(textarea): modify the changeset file

* feat(textarea): add clear button to textarea

* feat(textarea): add isClearable prop to textarea

* docs(textarea): add documentation to textarea

* docs(textarea): add documentation to textarea

* feat(textarea): replace the textarea component clear icon and modify its location

* feat(textarea): revise the clear button position

* feat(textarea): revise the clear button structure

* feat(textarea): revise the styles of clear button and textarea

* feat(textarea): revise the styles of RTL case

* feat(textarea): change the rtl to pe

* feat(textarea): delete the px classname

* chore(changeset): update package and message

* test(textarea): add test case

* feat(textarea): change the clear button structure

* feat(textarea): optimized code

* chore(textarea): update the changeset file

* docs(textarea): add slots doc to textarea

* chore(textarea): update peerDevpeerDependencies version

* chore(textarea): add usecallback dep

* Update .changeset/five-adults-protect.md

* chore(pre-release): enter pre-release mode

* feat(textarea): modify the clear button icon

* fix(theme): apply tw nested group (#3909)

* chore(changset): add changeset

* fix(theme): apply nested group to table

* chore(docs): update table bottomContent code

* fix: changeset

* fix: changeset

* fix: changeset

* fix: changeset

* fix: changeset

* fix: pkg versions

* fix: changeset

* fix: drawer peer dep

* chore: update plop components tempalte

* ci(changesets): version packages (beta) (#3988)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: pre-release workflow

* chore: debug log added

* chore: force pre-release

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* chore: beta1 (#3990)

* ci(changesets): version packages (beta) (#3991)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(use-image): image ReferenceError in SSR (#3993)

* fix(input): fixed a sliding issue caused by the helper wrapper (#3966)

* If it is false and there is an error message or description it will create a div

* Update packages/components/input/src/input.tsx

* Update packages/components/select/src/select.tsx

* Update packages/components/input/src/textarea.tsx

* add changeset

* changeset update

* ci(changesets): version packages (beta) (#3995)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: image loading in the server (#3996)

* fix: lock file

* chore: force release

* chore: force release 2

* ci(changesets): version packages (beta) (#3997)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: image load on next.js (#3998)

* ci(changesets): version packages (beta) (#3999)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: element.ref was removed in React 19 warning (#4003)

* ci(changesets): version packages (beta) (#4004)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: react 19 as peer dep (#4008)

* ci(changesets): version packages (beta) (#4009)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Beta/react 19 support (#4010)

* fix: react 19 as peer dep

* fix: react 19 as peer dep

* chore: support framer-motion alpha version

* ci(changesets): version packages (beta) (#4011)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(theme): making select and input themes consistent (#3881)

* ci(changesets): version packages (beta) (#4012)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(textarea): fix clearButton display

* fix: support inert value with boolean type for react 19 (#4039)

* ci(changesets): version packages (beta) (#4041)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: alert design improved (#4054)

* ci(changesets): version packages (beta) (#4056)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: drawer improvements (#4057)

* ci(changesets): version packages (beta) (#4058)

* feat: alert styles improved (#4071)

* ci(changesets): version packages (beta) (#4072)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: alert styles improved (#4073)

* ci(changesets): version packages (beta) (#4074)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: add number of stars and credits

* chore: fix build

* chore: improve navabr colors

* chore: new changeset (#4083)

* ci(changesets): version packages (beta) (#4084)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore: pnpm cleaned (#4086)

* ci(changesets): version packages (beta) (#4087)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore: custom runnner added

* chore: custom runner test (#4091)

* Beta/custom runner (#4092)

* chore: custom runner test

* chore: custom runner test

* chore: remove 2 from older changeset

* ci(changesets): version packages (beta) (#4093)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: new demo added to alert

* Feat/virtualization for autocomplete (#4094)

* feat: add react-window virtualization for autocomplete

* fix: wrong imports and wrong sizing

* fix: update pnpm lock

* chore: add test cases for large dataset (1000 and 10000 items)

* chore: move virtualized-listbox to listbox components folder, implement isVirtualized conditional

* feat: implement dynamic listboxheight n item height, add story

* chore: rename props, remove unnecessary line changes

* fix: maxHeight style 256px for default, conditional usage of virtualizer

* feat: migrate to tan-stack virtual. (todo: fix scroll shadow)

* feat: virtualization support

---------

Co-authored-by: Vincentius Roger Kuswara <vincentiusrkuswara@gmail.com>

* ci(changesets): version packages (beta) (#4095)

* feat: small fixes

* feat: add reducedMotion setting to Provider (#3470)

* feat: add reducedMotion setting to Provider

* chore: refactor reducedMotion story

* Update .changeset/pretty-parrots-guess.md

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* ci(changesets): version packages (beta) (#4106)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: move circular-progress tv to progress (#3321)

* fix: remove circular-progress tv to progress

* docs: changeset

* chore(changeset): update changeset message

* Update .changeset/angry-maps-serve.md

---------

Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix: label placement when the select has a placeholder or description (#4126)

* ci(changesets): version packages (beta) (#4107)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(deps): add missing `framer-motion` in `peerDependencies` (#4140)

* fix(theme): add truncate class to the list item to avoid overflow the wrapper (#4105)

* fix(docs): invalid canary storybook link (#4030)

* fix: menu item hidden overflow text

* feat: changeset

* Merge branch 'beta/release-next' into fix/menu-item-hidden

* fix: truncate list item

* feat: update changeset

* fix(menu): omit internal props

---------

Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* Update apps/docs/content/docs/components/textarea.mdx

* feat(table): add isKeyboardNavigationDisabled prop to the table (#3735)

Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>

* feat: add form component (#3036)

* chore: add support validationBehavior aria

* chore: add validationBehavior to Provider

* chore: add autocomplete validation test

* chore: add checkbox validation test

* fix(input): require condition

* docs: add description of validationBehavior props

* chore: add support validationBehavior props for date components

* docs(dates): add description of validationBehavior props

* chore: add changeset

* chore: format

* chore: fix test

* fix: select validationBehavior is not support yet

* fix: select validationBehavior not supported yet

* feat: add form component with input support

* feat: add support form context

* chore: wip add support for  form server errors

* chore: add support checkbox server validation

* chore: add support radio server validation

* chore: update pnpm-lock.yaml

* chore: add support input server validation

* chore: add support autocomplete server validation

* chore(form): add server validation stories

* chore: fix test

* chore: add date-picker validation test

* chore: update form stories

* chore: add changeset

* chore: update react-aria version

* chore: add pnpm-lock.yaml

* chore: update react-aria version

* chore: add comment

* chore: update react-aria version

* chore: fix change set

* chore: export form component in the main package

* chore: upgrade react-aria

* chore: fixed internationalized/date version

* fix: build error

* chore: upgrade docs react-aria version

* fix: remove comment

* fix: debug setting

* chore(docs): update sponsor (#3904)

* chore(docs): remove Scrumbuiss

* chore(docs): remove Scrumbuiss logo

* chore(docs): replace va by posthog (#4123)

* chore(changeset): change to patch

* refactor: react-aria-components remove to decrease package size, logic moved to the form package

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* docs: add forms guide (#4155)

Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>

* chore: routes updated

* ci(changesets): version packages (beta) (#4151)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore: fix indentation

* fix(changeset): package not be found

* ci(changesets): version packages (beta) (#4158)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(select): controlled isInvalid prop (#4082)

* fix(select): controlled isInvalid prop

* chore: add changeset

* Merge branch 'beta/release-next' into pr/4082

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* ci(changesets): version packages (beta) (#4159)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore(changeset): bump all versions

* ci(changesets): version packages (beta) (#4160)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(deps): missing peer / dev dependency for framer-motion (#4161)

* fix(system): align `navigate` function parameters with `@react-aria` (#4163)

* fix: menu item classNames not work (#4156)

* fix: menu item classNames not work

* feat: changeset

* docs: update

* feat: merge classes utility added

* Update .changeset/brave-trains-wave.md

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* chore(docs): remove incorrect info

* ci(changesets): version packages (beta) (#4162)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* refactor(docs): overall dx (#4055)

* refactor(docs): revise code block (#3922)

* refactor(docs): revise code block

* chore(docs): resolve pr comments

* refactor(docs): autocomplete dx (#3934)

* feat(docs): add *.js?raw module

* feat(docs): change to react-jsx and add **/*.js

* chore(root): include js and jsx

* refactor(docs): autocomplete dx

* chore(docs): rollback overrides

* chore(autocomplete): lint

* fix(autocomplete): incorrect import path

* fix(docs): autocomplete dx

* chore(docs): remove highlightedLines

* refactor(docs): breadcrumbs dx (#3968)

* refactor(docs): breadcrumbs dx

* fix(docs): export issue

* chore(docs): use preserve for jsx

* fix(docs): support multiline import

* fix(docs): support multiple export

* chore(docs): add back export

* refactor(docs): avatar dx (#3951)

* refactor(docs): badge dx (#3960)

* refactor(docs): badge dx

* chore(docs): incorrect import path

* refactor(docs): button dx (#3981)

* refactor(docs): calendar dx (#4022)

* refactor(docs): calendar dx

* fix(docs): incorrect import path

* refactor(docs): switch dx (#4037)

* refactor(docs): switch dx

* chore(docs): remove highlightedLines

* refactor(docs): tooltip (#4035)

* refactor(docs): usage dx (#4036)

* refactor(docs): circular-progress dx (#4029)

* refactor(docs): chip-dx (#4028)

* refactor(docs): checkbox-group dx (#4027)

* refactor(docs): checkbox dx (#4024)

* refactor(docs): checkbox dx

* fix(docs): incorrect import path

* refactor(docs): card dx (#4023)

* refactor(docs): skeleton dx (#4042)

* refactor(docs): spacer dx (#4043)

* refactor(docs): snippet dx (#4044)

* refactor(docs): scroll-shadow dx (#4045)

* refactor(docs): code dx (#4046)

* refactor(docs): kbd dx (#4047)

* refactor(docs): link dx (#4048)

* refactor(docs): progress dx (#4049)

* refactor(docs): divider dx (#4050)

* refactor(docs): listbox dx (#4051)

* refactor(docs): listbox dx

* fix(docs): import path

* fix(docs): import path

* chore(docs): remove highlightedLines

* fix(docs): indentation

* chore(docs): replace the props of autocomplete from value to key (#4129)

* refactor(docs): alert dx (#4108)

* refactor(docs): alert dx

* refactor(docs): alert dx

* refactor(docs): image dx (#4061)

* refactor(docs): textarea dx (#4063)

* refactor(docs): spinner dx (#4088)

* refactor(docs): radio-group dx (#4064)

* refactor(docs): pagination dx (#4062)

* refactor(docs): pagination dx

* refactor(docs): pagination dx

* refactor(docs): time-input dx (#4065)

* refactor(docs): time-input dx

* refactor(docs): time-input dx

* refactor(docs): slider dx (#4066)

* refactor(docs): slider dx

* refactor(docs): slider dx

* refactor(docs): move SliderValue to type

* refactor(docs): slider dx

* refactor(docs): make icon code collapsible

* refactor(docs): specify versions for date packages (#4138)

* refactor(docs): specify versions for date packages

* fix(docs): correct RA i18n version

* chore(deps): sync version from package

* refactor(docs): tabs dx (#4067)

* refactor(docs): tab dx

* refactor(docs): tabs dx

* refactor(docs): input dx (#4102)

* refactor(docs): input dx

* refactor(docs): input dx

* refactor(docs): navbar dx (#4076)

* refactor(docs): navbar dx

* refactor(docs): navbar dx

* refactor(docs): navbar dx

* refactor(docs): modal dx (#4077)

* refactor(docs): modal dx

* refactor(docs): modal dx

* refactor(docs): select dx (#4078)

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): table dx (#4079)

* refactor(docs): table dx

* fix(docs): import path

* refactor(docs): table dx

* refactor(docs): table dx

* refactor(docs): popover dx (#4090)

* refactor(docs): range-calendar dx (#4089)

* refactor(docs): range-calendar dx

* fix(docs): import path

* refactor(docs): date input dx (#4100)

* refactor(docs): dropdown dx (#4101)

* refactor(docs): dropdown dx

* refactor(docs): remove highlightedLines

* refactor(docs): dropdown dx

* refactor(docs): dropdown dx

* refactor(docs): date-picker dx (#4103)

* refactor(docs): date-picker dx

* fix(docs): import paths

* refactor(docs): date-range-picker dx (#4104)

* refactor(docs): date-range-picker dx

* fix(docs): date-range-picker dx

* refactor(docs): drawer dx (#4109)

* refactor(docs): drawer dx

* fix(docs): indentation

* refactor(docs): make icon collapsible

---------

Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>

* Merge branch 'beta/release-next' into pr/3477

* refactor(docs): apply new structure to doc

* feat(input-otp): introduce input OTP component (#4052)

* feat(input-otp): adding the functionality

* fix(input-otp): making the use of input-otp library

* Update .changeset/spotty-flies-jump.md

* chore(input-otp): nits

* feat: improvements and fixes added

* refactor: input-otp docs improvements

* fix: changeset

* fix: build

---------

Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* ci(changesets): version packages (beta) (#4169)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* refactor(theme): revise label font size for lg (#4141)

* refactor(theme): revise label font size for lg

* chore(changeset): add changeset

* refactor(theme): revise label font size for lg

* fix(docs): typecheck errors (#4171)

* fix(docs): remove duplicate import

* fix(docs): update type for onChange in range-calendar page

* fix(docs): add missing `@react-types/calendar`

* fix(docs): broken syntax

* fix(docs): typecheck issues

* fix(docs): add missing `@react-types/datepicker`

* fix(docs): typecheck issues

* fix: missing li tag when href is specified (#4168)

* fix(items): items in list should wrapped in li in case of a

* chore: adding the tests

* fix: textarea issues with the clear button

* chore: adjust clear button position

---------

Co-authored-by: doki- <1335902682@qq.com>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Mustafa Balcı <19329346+mstfblci@users.noreply.github.com>
Co-authored-by: Maharshi Alpesh <maharshialpesh@gmail.com>
Co-authored-by: Vincentius Roger Kuswara <vincentiusrkuswara@gmail.com>
Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>
Co-authored-by: winches <329487092@qq.com>
Co-authored-by: Tianen Pang <32772271+tianenpang@users.noreply.github.com>
Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: chirokas <157580465+chirokas@users.noreply.github.com>

* ci(changesets): version packages (beta) (#4170)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* docs: sync api from nextui-cli v0.3.5 (#4173)

Co-authored-by: GitHub Action <action@github.com>

* ci(changesets): exit pre-release mode

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Mustafa Balcı <19329346+mstfblci@users.noreply.github.com>
Co-authored-by: Maharshi Alpesh <maharshialpesh@gmail.com>
Co-authored-by: Vincentius Roger Kuswara <vincentiusrkuswara@gmail.com>
Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>
Co-authored-by: winches <329487092@qq.com>
Co-authored-by: Tianen Pang <32772271+tianenpang@users.noreply.github.com>
Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: chirokas <157580465+chirokas@users.noreply.github.com>
Co-authored-by: doki- <1335902682@qq.com>
Co-authored-by: GitHub Action <action@github.com>

* fix: pre release workflow on protected branches (#4174)

* chore(pre-release): enter pre-release mode (#4175)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix: input otp peer deps (#4176)

* chore: update workflows

* chore: pre release workflow modified (#4177)

* chore: canary versions (#4178)

* fix: pre-release workflow (#4179)

* chore: merged with beta branch

* chore: workflow updated

* ci(changesets): version packages

* fix: changeset get github info

* chore: force canary to release (#4180)

* Feat/canary release (#4181)

* chore: force canary to release

* feat: canary release

* ci(changesets): version packages

* ci(changesets): version packages

* fix: exit pre-release mode

* fix: exit pre-release mode

* fix: exit pre-release mode

* fix: exit pre-release mode

* fix: exit pre-release mode

* chore: exit pre release mode

* fix(workflows): release & pre-release flow (#4184)

* chore: revert exit and enter pre release changes

* chore: canary release test (#4185)

* chore: update exit and enter workflows

* chore: update workflow name

* fix: exit pre-release mode

* fix: exit pre-release mode

* chore: delete pre file

* chore: remove duplicate changesets

* chore: base branch change to canary, changeset config

* refactor: beta tags manually deleted (#4187)

* fix: install

* fix: peer deps (#4188)

* Fix/peer deps (#4189)

* fix: peer deps

* fix: tests

* fix: routes

* chore(docs): revise defaultShowFlagList (#4193)

* chore(docs): add Example to defaultShowFlagList

* chore(docs): revise defaultShowFlagList

* feat: documentation improvements (#4195)

* feat: documentation improvements

* fix: alert api

* Feat/doc improvements (#4196)

* feat: documentation improvements

* fix: alert api

* fix: copy button

* fix: return in card demo

* Fix/react core pkg (#4204)

* fix: double use client tag import in react core package

* fix: double use client

* chore: restore postbuild script

* docs: optimize code fold (#4202)

* docs: optimize code fold

* fix: code review

* fix(input): teaxtarea label squish (#4197)

* fix(input): teaxtarea label squish

* chore(changeset): add changeset for textarea label fix

* chore: remove customer runner

* chore: rename changeset

* chore: increase timeout

* chore: change get info pkg version

* chore: new changeset

* chore: single chnageset

* chore: consolidated changeset

* chore: consolidated changeset

* Update release.yaml (#4205)

* chore: consolidated changeset

* fix: forwardRef render functions not using ref (#4198)

* fix: forwardRef render functions not using ref

* fix: changelog

* fix: review

* fix: forwardRef render functions not using ref

* docs: update changeset

* feat(listbox): virtualization (#4206)

* fix: should not export list item internal variables type

* feat: changeset

* fix: type error

* fix: code block type error

* feat: virtualization feature, docs for listbox

* chore: update routes.json

* fix: fix code-demo for typecheck

* chore: rollback for files

* chore: props omitted in the component itself

* fix: menu item types

* fix: tupecheck

---------

Co-authored-by: winches <329487092@qq.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* feat(select): virtualization (#4203)

* fix: should not export list item internal variables type

* feat: changeset

* feat: integrate virtualized listbox to select component, add more props

* feat: update docs for select component

* feat: update docs to include API for virtualization

* fix: update docs to follow the newest format

* fix: update test for disable virtualization, add test for virtualized version

* fix: fix typo

* fix: type error

* fix: code block type error

* chore: update docs to use raw jsx instead of template literal

* fix: fix code-demo for typecheck

* chore: rollback for files

* fix: types

* chore: remove caret version on tanstack virtual pkg

* fix: pnpm lock file

* fix: virtualization examples

* fix: number of items

---------

Co-authored-by: winches <329487092@qq.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* chore: adjust code colors

* fix: collection based components ref (#4207)

* chore: documentation adjustments

* Update data-slot for the error message in the select. (#4214)

* Update data-slot for the error message in the select.

All components use the `data-slot="error-message"` attribute, except for the select component. I observed this behavior when a test in my application started failing.

* refactor(select): refactors the data-slots attribute for the error message

* fix(docs): types for classNames and itemClasses (#4209)

* feat: documentation improvements

* chore: more improvements to the docs, routing updated, acccordiong font size change

* feat: forms doc in progress

* fix(touch): fixing the selection functionality on touch (#4220)

* fix(touch): fixing the selection functionality on touch

* fix: radio, checkbox & switch interactions

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* chore(docs): remove non-existing attribute (#4221)

* fix(select): hideEmptyContent API (#4219)

* fix(select): hideEmptyContent API

* test(select): hideEmptyContent tests

* docs(select): hideEmptyContent API

* chore(select): hideEmptyContent storybook

* chore(changeset): add hideEmptyContent API to select

* refactor(select): hideEmptyContent nitpick

* test(select): hideEmptyContent UI assertions

* fix(select): hideEmptyContent default false

* docs(select): hideEmptyContent default false

* fix(pagination): cursor position when hidden on init (#4222)

* fix(pagination): cusor position when hidden on init

* test(pagination): cursor intersection observer

* chore(changeset): pagination cursor position fix

* refactor(pagination): minor nitpicks
- check for null ref in usePagination
- restore original IntersectionObserver in test

* fix: form fixes and improvements (#4224)

* chore: form in progress

* chore: main demo addded to forms, checkbox validation fixed

* chore: forms docs improved

* fix(deps): bump `@react-aria/utils` version (#4226)

* fix(deps): bump `@react-aria/utils` version

* chore(changeset): add changeset

* feat: forms doc completed

* chore: form component doc created

* chore: forms doc improved

* chore: doc improvements

* chore: alert doc improved

* feat: nextjs 15 migration in progress

* feat: nextjs 15 migration [docs] (#4228)

* feat: nextjs 15 migration in progress

* feat: next 15 downgraded to next 14

* fix: migration errors

* feat: codeblog is now rendered only when visible, this made a huge performance improvement

* fix: remove folding

* feat: v2.6.0 blog

* feat: Adding nextui pro section on the landing page (#4227)

* feat: adding nextui pro section on the landing page

* chore(nits): nits

* fix: remove pro image on mobile

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix(docs): prevent scrolling up on pressing theme change switch (#4233)

* chore: improve v2.6.0 blog

* chore: small improvements

* chore: improve blog

* ci(changesets): version packages (#4186)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix: snippet release (#4235)

* ci(changesets): version packages (#4236)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* chore: v2.6.2

* ci(changesets): version packages (#4237)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix: draggable modal demo

* fix: v2.6 blog

* chore: adjust blog

* chore: release notes link updated

* fix: v2.6.0 (#4247)

* fix: v2.6.0

* chore: update framer motion version

* ci(changesets): version packages (#4248)

* fix(deps): incorrect peerDependencies for theme and system package (#4255)

* fix(deps): incorrect peerDependencies for theme and system package

* chore(changeset): add changeset

* ci(changesets): version packages (#4261)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* chore: adjust doc

* chore: update search meta objects

* fix: ref in form component (#4279)

* fix(dropdown): unnecessary ref in dropdown (#4278)

* fix: missing react-types package added (#4264)

* fix: missing react-types package added

* chore: react types version increased

* chore(deps): sync with upstream RA versions (#4258)

* chore(deps): sync with upstream RA versions

* chore(changeset): add changeset

* chore(form): remove caret

* chore(deps): pnpm-lock.yaml

* fix(tooltip): type 'null' is not assignable to type 'PlacementAxis'

* fix(deps): bump `@internationalized/date`

* chore(deps): sync `@react-types` versions

* fix(input): follow RAC typing in useTextField

* fix(popover): typecheck error

* fix: typecheck errors

* fix: typecheck errors

* fix(docs): bump RA versions

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* ci(changesets): version packages (#4280)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix: reverting pr4168 (#4286)

* Revert "chore: adding the tests"

This reverts commit bd28852a484fb9f6a7dd18b8fc75fe1dae6d2779.

* Revert "fix(items): items in list should wrapped in li in case of a"

This reverts commit 57fb87abb0c3775bf408aef80f0afc8fb1ca9265.

* chore: adding the changeset

* fix(input-otp): autofocus (#4296)

* fix: autofocus the input-otp when auto-focus prop is passed

* fix: adding marcus' suggestions

* fix(dropdown): correct initial animation direction to match fallback placement (#4288)

* fix(dropdown): correct initial animation direction

* chore: add changeset

* fix: typo

* refactor: button & card ripple (#4284)

* chore: update use-button.ts

* chore: update use-ripple.ts

* chore: update use-card.ts

* chore: add changeset

* fix: radio, checkbox, switch touch and selection behavior (#4311)

* fix: radio, checkbox, switch touch and selection behavior

* Update .changeset/violet-tools-refuse.md

* fix: switch toggle on tables

* ci(changesets): version packages (#4298)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* chore: update docs

---------

Signed-off-by: Innei <i@innei.in>
Signed-off-by: The1111mp <The1111mp@outlook.com>
Co-authored-by: ryoon <ryoon50@gmail.com>
Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: Abhinav Agarwal <78839973+abhinav700@users.noreply.github.com>
Co-authored-by: Maharshi Alpesh <maharshialpesh@gmail.com>
Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: David Gonzalez <dgonzalez1992@outlook.com>
Co-authored-by: Julie Saia <76669473+juliesaia@users.noreply.github.com>
Co-authored-by: Alex Nguyen <dev@alexnguyen.co.nz>
Co-authored-by: max <hi.max@foxmail.com>
Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>
Co-authored-by: Shrinidhi Upadhyaya <shrinidhiupadhyaya1195@gmail.com>
Co-authored-by: Anuj Sharma <52837557+sanuj21@users.noreply.github.com>
Co-authored-by: Innei <tukon479@gmail.com>
Co-authored-by: Jeff. <jeffreysfu@gmail.com>
Co-authored-by: winches <329487092@qq.com>
Co-authored-by: Abhinav Agarwal <abhinavagrawal700@gmail.com>
Co-authored-by: wzc520pyfm <1528857653@qq.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Abhinandan <abhinandanverma551@gmail.com>
Co-authored-by: The1111mp <The1111mp@outlook.com>
Co-authored-by: Rakha Kanz Kautsar <rkkautsar@gmail.com>
Co-authored-by: Can Rau <cansrau@gmail.com>
Co-authored-by: Azpekt <65199167+AzpektDev@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Mustafa Balcı <19329346+mstfblci@users.noreply.github.com>
Co-authored-by: Vincentius Roger Kuswara <vincentiusrkuswara@gmail.com>
Co-authored-by: Tianen Pang <32772271+tianenpang@users.noreply.github.com>
Co-authored-by: chirokas <157580465+chirokas@users.noreply.github.com>
Co-authored-by: doki- <1335902682@qq.com>
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Peterl561 <76144929+Peterl561@users.noreply.github.com>
Co-authored-by: Julio Barrios <juliobarmi@gmail.com>
Co-authored-by: Tsuki <76603360+sudongyuer@users.noreply.github.com>
2024-12-10 11:01:31 -03:00
Junior Garcia f64b2c37ea chore: update docs 2024-12-10 10:59:26 -03:00
github-actions[bot] 10ea739986 ci(changesets): version packages (#4298)
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
2024-12-10 10:50:29 -03:00
Junior Garcia 03abf1daf4 fix: radio, checkbox, switch touch and selection behavior (#4311)
* fix: radio, checkbox, switch touch and selection behavior

* Update .changeset/violet-tools-refuse.md

* fix: switch toggle on tables
2024-12-10 10:26:09 -03:00
Tsuki dfefdd6250 refactor: button & card ripple (#4284)
* chore: update use-button.ts

* chore: update use-ripple.ts

* chore: update use-card.ts

* chore: add changeset
2024-12-10 10:25:52 -03:00
Ryo Matsukawa aa5ea19a3c fix(dropdown): correct initial animation direction to match fallback placement (#4288)
* fix(dropdown): correct initial animation direction

* chore: add changeset

* fix: typo
2024-12-10 10:07:50 -03:00
Maharshi Alpesh 1485eca48f fix(input-otp): autofocus (#4296)
* fix: autofocus the input-otp when auto-focus prop is passed

* fix: adding marcus' suggestions
2024-12-09 23:56:53 +08:00
Maharshi Alpesh 11eae5cc80 fix: reverting pr4168 (#4286)
* Revert "chore: adding the tests"

This reverts commit bd28852a484fb9f6a7dd18b8fc75fe1dae6d2779.

* Revert "fix(items): items in list should wrapped in li in case of a"

This reverts commit 57fb87abb0c3775bf408aef80f0afc8fb1ca9265.

* chore: adding the changeset
2024-12-09 22:49:07 +08:00
Junior Garcia 3d782a27de Merge branch 'canary' of github.com:nextui-org/nextui into canary 2024-12-09 08:12:01 -03:00
Junior Garcia 84dbcefe27 Merge branch 'main' of github.com:nextui-org/nextui into canary 2024-12-08 09:56:23 -03:00
Junior Garcia c949b48f0b v.2.6.5 (#4282)
* fix(input): ensure clear button is not focusable when disabled (#3774)

* fix(input): ensure clear button is not focusable when disabled

* test(input): add test to ensure clear button is not focusable when disabled

* chore: add changeset for clear button focus fix when input is disabled

* fix(input): update clear button to use button element

* test(input): add focus test when disabled

and update tests for clear button using button element

* test(input): replace querySelector with getByRole for clear button

* fix(input): set tabIndex to -1 for clear button

* test(input): ensure clear button is not focusable

* fix(image): add missing `w` to `getWrapperProps` dependency (#3802)

* fix(image): add missing `w` to `getWrapperProps` dependency

* chore(changeset): add changeset

* fix(autocomplete): popover should remain open after clicking clear button (#3788)

* fix: add state.open() so that dropdown is not closed

* chore: add changeset

* chore(autocomplete): add testcases for keeping lisbox open when clearButton is clicked

* chore: update changeset

* chore(autocomplete): change the docs for test cases

* chore(changeset): update changeset message and add issue number

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* refactor(docs): example of blurred card (#3741)

* docs(card): adding info regarding the gradient for blurred card

* chore(nit): adding example

* chore(docs): revise content for card isBlurred example

* chore(docs): revise isBlurred note

---------

Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(docs): replace twitter logo/links with x logo/links (#3815)

* fix(docs): replace Twitter logo/links with X logo/links

* docs: update twitter references to x

* docs: update changeset for twitter to x changes

* docs: update twitter references to x

* docs: update twitter references to x

* chore(docs): undo .sponsorsrc since it's generated

* refactor(docs): remove unnecessary classes

* chore(docs): undo .sponsorsrc since it's generated

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(date-picker): adding props from calendarProps to getCalendarProps (#3773)

* fix(date-picker): adding props from calendarProps to the getCalendarProps

* chore(date-picker): adding the changeset

* chore(changeset): add issue number

---------

Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* feat(autocomplete): automatically focus first non-disabled item (#2186)

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* docs(accordion): add overflow to custom motion example (#3793)

* fix(docs): typos in dark mode page (#3823)

* fix(theme): fullWidth in input and select (#3768)

* fix(input): fixing the fullWidth functionality

* chore(changeset): add issue number

* chore(changeset): revise changeset message

---------

Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(autocomplete): exit animation on popover close (#3845)

* fix(autocomplete): exit animation on popover close

* refactor(autocomplete): getListBoxProps

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* refactor(theme): replace the use of RTL-specific styles with logical properties (#3868)

* chore(rtl): remove the usages of rtl

* chore(changeset): adding the changeset

* chore(changeset): update changeset message

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(select): label placement discrepancy in Select (#3853)

* fix(select): label placement incorrect in case of multiline

* chore(select): adding the changeset

* chore(select): adding the tests

* chore(select): code imrovement, wkw's suggestions

* chore(changeset): update changeset message

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(theme): label placement in select and input (#3869)

* fix(theme): fix the label placement

* chore(changeset): adding the changeset

* chore(select): adding comments

* fix(docs): avoid translating the code block (#3878)

* docs(Codeblock): avoid code be translated

* fix(docs): lint issue

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(listbox): change listBoxItem key to optional (#3883)

* fix(listbox): listBoxItem key to optional

* chore: add defaultSelectedKeys test for numeric keys and ids

* chore: add changeset

* chore: comment out section prompts in PR template (#3884)

* chore(test): update testing libraries and refactor (#3886)

* fix(theme): show margin only with label in Switch component (#3861)

* fix(switch): removed right margin in wrapper #3791

* feat(changeset): added changeset

* fix(switch): removed me-2 in wrapper

* fix(switch): added ms-2 to label

* chore(changeset): correct package and message

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(theme): removed pseudo cancel btn from input (#3912)

* fix(theme): removed pseudo cancel btn from input

* chore(changeset): adding the changeset

* fix(input): conditionally hiding the webkit search

* chore(changeset): revise changeset message

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* refactor(docs): dx improvement in accordion (#3856)

* refactor: improve dx for writing a docs component (#2544)

* refactor: improve dx for write a docs component

Signed-off-by: Innei <i@innei.in>

* refactor(docs): switch to contentlayer2

* chore(docs): rename to avoid conflict

* refactor(docs): switch to next-contentlayer2

* refactor(docs): revise docs lib

* chore(deps): bump docs related dependencies

* fix(use-aria-multiselect): type issue due to ts version bump

---------

Signed-off-by: Innei <i@innei.in>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* refactor(docs): accordion codes

* feat(docs): declare module `*.jsx?raw`

* feat(docs): include `**/*.jsx`

* fix(docs): incorrect content

* chore(docs): add new lines

* refactor(docs): lint

---------

Signed-off-by: Innei <i@innei.in>
Co-authored-by: Innei <tukon479@gmail.com>

* fix(docs): typos in hero section (#3928)

* fix(theme): support RTL for breadcrumbs (#3927)

* fix(breadcrumbs): added separator rotation for RTL #2486

* chore(changeset): added changeset

* fix(docs): removed unused import and merged classNames in dropdown (#3936)

* fix(breadcrumbs): added separator rotation for RTL #2486

* chore(changeset): added changeset

* fix(docs): removed unused Link import and merged classnames in dropdown

* fix: avatar filter disableAnimation to dom prop (#3946)

* feat: add git hook to auto update dependencies (#3365)

* feat: add git hook to auto update dependencies

* feat: update color

* fix: prevent test matcher warning (#3893)

* fix: prevent test matcher warning

* chore: add node types

* chore: update Jest related packages

* chore: run pnpm install

* fix(tabs): correct inert value for true condition (#3978)

* Alert component (#3982)

* feat(alert): began the work on alert component

* fix(readme): making correction

* chore(deps): change to 2.0.0

* chore(docs): update README.md

* feat(theme): init alert tv

* chore(alert): update package.json

* feat(alert): init alert storybook structure

* chore(changeset): add changeset

* chore(changeset): change to minor

* chore(alert): revise alert package.json

* feat(alert): init test structure

* chore(deps): pnpm-lock.yaml

* feat(alert): initailized theme and basic structure

* feat(alert): completed use-alert.ts and alert.tsx

* feat(alert): remove innerWrapper, replace helperWrapper with mainWrapper, adding isCloseable prop

* feat(alert): adding isCloseable prop to baseWrapper dependency

* feat(alert): setting the default value of isCloseable prop to true

* feat(alert): moving CloseIcon inside the button

* feat(alert): updated package.json

* feat(alert): default variant and default story

* feat(alert): adding color and radius stories

* feat(alert): completed the styling

* feat(alert): add stories for isCloseable prop and restyle other stories

* feat(alert): correcting ref type

* feat(alert): add test cases

* feat(alert): remove startContent and endContent props

* feat(alert): make styling more accurate

* feat(alert): fixed default props

* feat(alert): fixed theme docs

* feat(alert): add logic for icons

* feat(alert): begin to add docs

* chore(alert): implement the changes suggested in code review

* feat(alert): add onclose prop to alert

* feat(alert): add test cases

* docs(alert): add onClose  event

* feat(docs): add alert to routes.json

* fix(alert): correct the text colors

* docs(alert): fix imports and syntax errors

* chore(alert): implement the changes suggested in code review

* chore(alert): lint the code and change isCloseable to isClosable

* chore(alert): lint the code

* chore(alert): run pnpm  i

* fix(alert): fix the logic for close button and add test case

* docs(alert): fix docs, change isCloseable to isClosable and change docs for isClosable property

* chore(alert): add the support for RTL, refactor the code and fix the typos

* docs(alert): grammer issues fix

* fix(alert): replace rtl with ms

* chore(alert): custom style and custom implementation, remove isClosable={false}, refactor, fix typos

* chore(alert): linting and implement coderabbit suggestions

* chore(alert): refactor and typos fix

* chore(alert): add import for closeIcon

* chore(alert): add props for closeIcon

* chore(alert): refactor fixes

* chore(alert): implement ryo-manba's suggestion on close Icon

* chore(alert): make alert more responsive

* chore(alert): fix grammer issues suggested by coderabbit

* fix(alert): add max-w property to make alert responsive

* chore(alert): improve responsiveness  and refactor alertIcon

* chore(alert): add missing dependency to useMemo

* chore(alert): implement coderabbit's suggestions

* chore(alert): update docs and refactor

* chore(alert): refactor alertIcon and implement coderabbit's suggestion

* chore: fixes

---------

Co-authored-by: Abhinav Agarwal <abhinavagrawal700@gmail.com>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>
Co-authored-by: Abhinav Agarwal <78839973+abhinav700@users.noreply.github.com>

* Feat/add draggable modal (#3983)

* feat(hooks): add use-draggable hook

* feat(components): [modal] export use-draggable

* docs(components): [modal] add draggable modal

* feat(components): [modal] add ref prop for modal-header

* chore(components): [modal] add draggable modal for storybook

* chore: add changeset for draggable modal

* docs(hooks): [use-draggable] fix typo

* chore: upper changeset

* chore(components): [modal] add overflow draggable modal to sb

* test(components): [modal] add draggable modal tests

* build: update pnpm-lock

* chore(changeset): include issue number

* feat(hooks): [use-draggable] set user-select to none when during the dragging

* docs(components): [modal] update code demo title

* docs(components): [modal] condense description for draggable overflow

* feat(hooks): [use-draggable] change version to 0.1.0

* refactor(hooks): [use-draggable] use use-move implement use-draggable

* feat(hooks): [use-draggable] remove repeated user-select

* test(components): [modal] update test case to use-draggable base use-move

* docs(components): [modal] update draggable examples

* fix(hooks): [use-draggable] fix mobile device touchmove event conflict

* refactor(hooks): [use-draggable] remove drag ref prop

* refactor(hooks): [use-draggable] draggable2is-disabled overflow2can-overflow

* test(components): [modal] add draggble disable test

* chore(hooks): [use-draggable] add commant for body touchmove

* Update packages/hooks/use-draggable/src/index.ts

Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>

* fix(hooks): [use-draggable] import use-callback

* test(components): [modal] add mobile-sized test for draggable

* chore(hooks): [use-draggable] add use-callback for func

* chore(hooks): [use-draggable] update version to 2.0.0

* chore: fix typo

* Update .changeset/soft-apricots-sleep.md

* fix: pnpm lock

* fix: build

* chore: add updated moadl

---------

Co-authored-by: wzc520pyfm <1528857653@qq.com>
Co-authored-by: աɨռɢӄաօռɢ <wingkwong.code@gmail.com>
Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>

* chore: upgrade react-aria / React 19 & Next.js 15 support (#3732)

* chore: upgrade react-aria

* chore: add changeset

* chore: fix type error

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* feat(date-picker): add selectorButtonPlacement property (#3248)

* feat(date-picker): add selectorButtonPlacement property

* chore: update changeset

* Update .changeset/neat-donkeys-accept.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* feat: add tab ref (#3974)

* feat: add tab ref

* feat: add changeset

* feat: pre-release workflow (#2910)

* feat(workflow): pre-release

* feat(workflow): exit pre-release

* chore(workflow): update version & publish commands

* fix(workflow): add missing attributes and use schangeset:beta cmd

* feat(root): add changeset:beta

* fix(workflows): revise pre-release logic

* fix(workflows): add missing run

* fix(workflows): use changeset:exit with version instead

* feat(root): add changeset:exit cmd

* refactor(workflows): add pths, id, and format

* feat(workflows): enter pre-release mode

* chore(workflows): remove pre.json only

* refactor(workflows): remove enter-pre-release-mode

* fix(workflows): incorrect url

* refactor(root): remove unused exit command

* refactor(workflows): add comments

* feat(changeset): change to main branch as baseBranch

* feat(root): add changeset:canary

* refactor(workflows): remove unused workflow

* feat(workflow): support canary pre-release mode

* refactor(docs): change to canary

* feat(popover): added control for closing popover on scroll (#3595)

* fix(navbar): fixed the height when style h-full

* fix(navbar): fixed the height when style h-full

* docs(changeset): resolved extra file

* feat(popover): added control for closing popover on scroll

* update(changeset):  correction

* feat(popover): removed extra story

* refactor(test): corrected test for both true and false values of shouldCloseOnScroll

* refactor(docs): added shouldCloseOnScroll prop

* chore(changeset): change to minor

---------

Co-authored-by: աӄա <wingkwong.code@gmail.com>

* feat: add month and year pickers to DateRangePicker and RangeCalendar (#3302)

* feat: add month and year pickers to DateRangePicker and RangeCalendar

* chore: update docs

* Update .changeset/kind-cobras-travel.md

* chore: react package version

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* chore(deps): bump tailwind-merge version (#3657)

* chore(deps): bump tailwind-merge versions

* chore(theme): adopt latest extendTailwindMerge

* chore(changeset): add changeset

* chore(changeset): change to minor

* Update .changeset/grumpy-mayflies-rhyme.md

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* feat: added drawer component (#3986)

Signed-off-by: The1111mp <The1111mp@outlook.com>
Co-authored-by: The1111mp <The1111mp@outlook.com>

* refactor: optimisations (#3523)

* refactor: replace lodash with native approaches

* refactor(deps): update framer-motion versions

* feat(utilities): add @nextui-org/dom-animation

* refactor(components): load domAnimation dynamically

* refactor(deps): add @nextui-org/dom-animation

* fix(utilities): relocate index.ts

* feat(changeset): framer motion optimization

* chore(deps): bump framer-motion version

* fix(docs): conflict issue

* refactor(hooks): remove the unnecessary this aliasing

* refactor(utilities): remove the unnecessary this aliasing

* chore(docs): remove {} so that it won't be true all the time

* chore(dom-animation): end with new line

* refactor(hooks): use debounce from `@nextui-org/shared-utils`

* chore(deps): add `@nextui-org/shared-utils`

* refactor: move mapKeys logic to `@nextui-org/shared-utils`

* refactor: use `get` from `@nextui-org/shared-utils`

* refactor(docs): use `get` from `@nextui-org/shared-utils`

* refactor(shared-utils): mapKeys

* chore(deps): bump framer-motion version

* chore(deps): remove lodash

* refactor(docs): use intersectionBy from shared-utils

* feat(shared-utils): add intersectionBy

* chore(dom-animation): remove extra blank line

* refactor(shared-utils): revise intersectionBy

* fix(modal): add willChange

* refactor(shared-utils): add comments

* fix: build & tests

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* feat(hooks): use-theme hook (#3169)

* feat(docs): update dark mode content

* feat(hooks): @nextui-org/use-theme

* chore(docs): revise ThemeSwitcher code

* refactor(hooks): simplify useTheme and support custom theme names

* feat(hooks): add use-theme test cases

* feat(changeset): add changeset

* refactor(hooks): make localStorageMock globally and clear before each test

* fix(docs): typo

* fix(hooks): coderabbitai comments

* chore(hooks): remove unnecessary +

* chore(changeset): change to minor

* feat(hooks): handle system theme

* chore(hooks): add EOL

* refactor(hooks): add default theme

* refactor(hooks): revise useTheme

* refactor(hooks): resolve pr comments

* refactor(hooks): resolve pr comments

* refactor(hooks): resolve pr comments

* refactor(hooks): remove unused theme in dependency array

* chore(docs): typos

* refactor(hooks): mark system as key for system theme

* chore: merged with canary

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* Fix/avatar flashing (#3987)

* fix(use-image): cached image flashing

* chore: merged with canary

---------

Co-authored-by: Rakha Kanz Kautsar <rkkautsar@gmail.com>

* refactor(menu): Use `useMenu` and `useMenuItem` from RA (#3261)

* refactor(menu): use useMenu from react-aria instead

* refactor(menu): use useMenuItem from react-aria instead

* feat(changeset): add changeset

* chore: merged with canary

* fix: dropdown tests

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix(theme): added stripe color gradients for progress (#3938)

* fix(breadcrumbs): added separator rotation for RTL #2486

* chore(changeset): added changeset

* fix(docs): removed unused Link import and merged classnames in dropdown

* fix(theme):added stripe color gradients for progress #1933

* refactor(theme): added stripe-size and createStripeGradient

* chore: add all minor releases

* fix(docs): invalid canary storybook link (#4030)

* fix(use-image): image ReferenceError in SSR (#4122)

* fix(use-image): image ReferenceError in SSR

* fix(use-image): sync with beta

* fix(use-image): sync with beta

* chore(use-image): remove unnecessary comments

* fix(docs): buildLocation expects an object  (#4118)

* fix(docs): routing.mdx

* Delete .changeset/pre.json

* chore(docs): update yarn installation command (#4132)

There is no `-g` flag in yarn. `global` is a command which must immediately follow yarn. 

Source: https://classic.yarnpkg.com/lang/en/docs/cli/global/

* chore: upgrade storybook 8 (#4124)

* feat: upgrade storybook8

* chore: upgrade storybook and vite

* chore: remove @mdx-js/react optimizeDep

* chore: add @mdx-js/react optimizeDep

* fix: format

* docs: add forms guide (#3822)

* v2.5.0 [BETA] (#4164)

* chore(pre-release): enter pre-release mode

* fix(theme): apply tw nested group (#3909)

* chore(changset): add changeset

* fix(theme): apply nested group to table

* chore(docs): update table bottomContent code

* fix: changeset

* fix: changeset

* fix: changeset

* fix: changeset

* fix: changeset

* fix: pkg versions

* fix: changeset

* fix: drawer peer dep

* chore: update plop components tempalte

* ci(changesets): version packages (beta) (#3988)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: pre-release workflow

* chore: debug log added

* chore: force pre-release

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* chore: beta1 (#3990)

* ci(changesets): version packages (beta) (#3991)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(use-image): image ReferenceError in SSR (#3993)

* fix(input): fixed a sliding issue caused by the helper wrapper (#3966)

* If it is false and there is an error message or description it will create a div

* Update packages/components/input/src/input.tsx

* Update packages/components/select/src/select.tsx

* Update packages/components/input/src/textarea.tsx

* add changeset

* changeset update

* ci(changesets): version packages (beta) (#3995)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: image loading in the server (#3996)

* fix: lock file

* chore: force release

* chore: force release 2

* ci(changesets): version packages (beta) (#3997)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: image load on next.js (#3998)

* ci(changesets): version packages (beta) (#3999)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: element.ref was removed in React 19 warning (#4003)

* ci(changesets): version packages (beta) (#4004)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: react 19 as peer dep (#4008)

* ci(changesets): version packages (beta) (#4009)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Beta/react 19 support (#4010)

* fix: react 19 as peer dep

* fix: react 19 as peer dep

* chore: support framer-motion alpha version

* ci(changesets): version packages (beta) (#4011)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(theme): making select and input themes consistent (#3881)

* ci(changesets): version packages (beta) (#4012)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: support inert value with boolean type for react 19 (#4039)

* ci(changesets): version packages (beta) (#4041)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: alert design improved (#4054)

* ci(changesets): version packages (beta) (#4056)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: drawer improvements (#4057)

* ci(changesets): version packages (beta) (#4058)

* feat: alert styles improved (#4071)

* ci(changesets): version packages (beta) (#4072)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: alert styles improved (#4073)

* ci(changesets): version packages (beta) (#4074)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: add number of stars and credits

* chore: fix build

* chore: improve navabr colors

* chore: new changeset (#4083)

* ci(changesets): version packages (beta) (#4084)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore: pnpm cleaned (#4086)

* ci(changesets): version packages (beta) (#4087)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore: custom runnner added

* chore: custom runner test (#4091)

* Beta/custom runner (#4092)

* chore: custom runner test

* chore: custom runner test

* chore: remove 2 from older changeset

* ci(changesets): version packages (beta) (#4093)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: new demo added to alert

* Feat/virtualization for autocomplete (#4094)

* feat: add react-window virtualization for autocomplete

* fix: wrong imports and wrong sizing

* fix: update pnpm lock

* chore: add test cases for large dataset (1000 and 10000 items)

* chore: move virtualized-listbox to listbox components folder, implement isVirtualized conditional

* feat: implement dynamic listboxheight n item height, add story

* chore: rename props, remove unnecessary line changes

* fix: maxHeight style 256px for default, conditional usage of virtualizer

* feat: migrate to tan-stack virtual. (todo: fix scroll shadow)

* feat: virtualization support

---------

Co-authored-by: Vincentius Roger Kuswara <vincentiusrkuswara@gmail.com>

* ci(changesets): version packages (beta) (#4095)

* feat: small fixes

* feat: add reducedMotion setting to Provider (#3470)

* feat: add reducedMotion setting to Provider

* chore: refactor reducedMotion story

* Update .changeset/pretty-parrots-guess.md

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* ci(changesets): version packages (beta) (#4106)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: move circular-progress tv to progress (#3321)

* fix: remove circular-progress tv to progress

* docs: changeset

* chore(changeset): update changeset message

* Update .changeset/angry-maps-serve.md

---------

Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix: label placement when the select has a placeholder or description (#4126)

* ci(changesets): version packages (beta) (#4107)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(deps): add missing `framer-motion` in `peerDependencies` (#4140)

* fix(theme): add truncate class to the list item to avoid overflow the wrapper (#4105)

* fix(docs): invalid canary storybook link (#4030)

* fix: menu item hidden overflow text

* feat: changeset

* Merge branch 'beta/release-next' into fix/menu-item-hidden

* fix: truncate list item

* feat: update changeset

* fix(menu): omit internal props

---------

Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* feat(table): add isKeyboardNavigationDisabled prop to the table (#3735)

Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>

* feat: add form component (#3036)

* chore: add support validationBehavior aria

* chore: add validationBehavior to Provider

* chore: add autocomplete validation test

* chore: add checkbox validation test

* fix(input): require condition

* docs: add description of validationBehavior props

* chore: add support validationBehavior props for date components

* docs(dates): add description of validationBehavior props

* chore: add changeset

* chore: format

* chore: fix test

* fix: select validationBehavior is not support yet

* fix: select validationBehavior not supported yet

* feat: add form component with input support

* feat: add support form context

* chore: wip add support for  form server errors

* chore: add support checkbox server validation

* chore: add support radio server validation

* chore: update pnpm-lock.yaml

* chore: add support input server validation

* chore: add support autocomplete server validation

* chore(form): add server validation stories

* chore: fix test

* chore: add date-picker validation test

* chore: update form stories

* chore: add changeset

* chore: update react-aria version

* chore: add pnpm-lock.yaml

* chore: update react-aria version

* chore: add comment

* chore: update react-aria version

* chore: fix change set

* chore: export form component in the main package

* chore: upgrade react-aria

* chore: fixed internationalized/date version

* fix: build error

* chore: upgrade docs react-aria version

* fix: remove comment

* fix: debug setting

* chore(docs): update sponsor (#3904)

* chore(docs): remove Scrumbuiss

* chore(docs): remove Scrumbuiss logo

* chore(docs): replace va by posthog (#4123)

* chore(changeset): change to patch

* refactor: react-aria-components remove to decrease package size, logic moved to the form package

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* docs: add forms guide (#4155)

Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>

* chore: routes updated

* ci(changesets): version packages (beta) (#4151)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore: fix indentation

* fix(changeset): package not be found

* ci(changesets): version packages (beta) (#4158)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(select): controlled isInvalid prop (#4082)

* fix(select): controlled isInvalid prop

* chore: add changeset

* Merge branch 'beta/release-next' into pr/4082

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* ci(changesets): version packages (beta) (#4159)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore(changeset): bump all versions

* ci(changesets): version packages (beta) (#4160)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(deps): missing peer / dev dependency for framer-motion (#4161)

* fix(system): align `navigate` function parameters with `@react-aria` (#4163)

* fix: menu item classNames not work (#4156)

* fix: menu item classNames not work

* feat: changeset

* docs: update

* feat: merge classes utility added

* Update .changeset/brave-trains-wave.md

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* chore(docs): remove incorrect info

* ci(changesets): version packages (beta) (#4162)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* refactor(docs): overall dx (#4055)

* refactor(docs): revise code block (#3922)

* refactor(docs): revise code block

* chore(docs): resolve pr comments

* refactor(docs): autocomplete dx (#3934)

* feat(docs): add *.js?raw module

* feat(docs): change to react-jsx and add **/*.js

* chore(root): include js and jsx

* refactor(docs): autocomplete dx

* chore(docs): rollback overrides

* chore(autocomplete): lint

* fix(autocomplete): incorrect import path

* fix(docs): autocomplete dx

* chore(docs): remove highlightedLines

* refactor(docs): breadcrumbs dx (#3968)

* refactor(docs): breadcrumbs dx

* fix(docs): export issue

* chore(docs): use preserve for jsx

* fix(docs): support multiline import

* fix(docs): support multiple export

* chore(docs): add back export

* refactor(docs): avatar dx (#3951)

* refactor(docs): badge dx (#3960)

* refactor(docs): badge dx

* chore(docs): incorrect import path

* refactor(docs): button dx (#3981)

* refactor(docs): calendar dx (#4022)

* refactor(docs): calendar dx

* fix(docs): incorrect import path

* refactor(docs): switch dx (#4037)

* refactor(docs): switch dx

* chore(docs): remove highlightedLines

* refactor(docs): tooltip (#4035)

* refactor(docs): usage dx (#4036)

* refactor(docs): circular-progress dx (#4029)

* refactor(docs): chip-dx (#4028)

* refactor(docs): checkbox-group dx (#4027)

* refactor(docs): checkbox dx (#4024)

* refactor(docs): checkbox dx

* fix(docs): incorrect import path

* refactor(docs): card dx (#4023)

* refactor(docs): skeleton dx (#4042)

* refactor(docs): spacer dx (#4043)

* refactor(docs): snippet dx (#4044)

* refactor(docs): scroll-shadow dx (#4045)

* refactor(docs): code dx (#4046)

* refactor(docs): kbd dx (#4047)

* refactor(docs): link dx (#4048)

* refactor(docs): progress dx (#4049)

* refactor(docs): divider dx (#4050)

* refactor(docs): listbox dx (#4051)

* refactor(docs): listbox dx

* fix(docs): import path

* fix(docs): import path

* chore(docs): remove highlightedLines

* fix(docs): indentation

* chore(docs): replace the props of autocomplete from value to key (#4129)

* refactor(docs): alert dx (#4108)

* refactor(docs): alert dx

* refactor(docs): alert dx

* refactor(docs): image dx (#4061)

* refactor(docs): textarea dx (#4063)

* refactor(docs): spinner dx (#4088)

* refactor(docs): radio-group dx (#4064)

* refactor(docs): pagination dx (#4062)

* refactor(docs): pagination dx

* refactor(docs): pagination dx

* refactor(docs): time-input dx (#4065)

* refactor(docs): time-input dx

* refactor(docs): time-input dx

* refactor(docs): slider dx (#4066)

* refactor(docs): slider dx

* refactor(docs): slider dx

* refactor(docs): move SliderValue to type

* refactor(docs): slider dx

* refactor(docs): make icon code collapsible

* refactor(docs): specify versions for date packages (#4138)

* refactor(docs): specify versions for date packages

* fix(docs): correct RA i18n version

* chore(deps): sync version from package

* refactor(docs): tabs dx (#4067)

* refactor(docs): tab dx

* refactor(docs): tabs dx

* refactor(docs): input dx (#4102)

* refactor(docs): input dx

* refactor(docs): input dx

* refactor(docs): navbar dx (#4076)

* refactor(docs): navbar dx

* refactor(docs): navbar dx

* refactor(docs): navbar dx

* refactor(docs): modal dx (#4077)

* refactor(docs): modal dx

* refactor(docs): modal dx

* refactor(docs): select dx (#4078)

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): table dx (#4079)

* refactor(docs): table dx

* fix(docs): import path

* refactor(docs): table dx

* refactor(docs): table dx

* refactor(docs): popover dx (#4090)

* refactor(docs): range-calendar dx (#4089)

* refactor(docs): range-calendar dx

* fix(docs): import path

* refactor(docs): date input dx (#4100)

* refactor(docs): dropdown dx (#4101)

* refactor(docs): dropdown dx

* refactor(docs): remove highlightedLines

* refactor(docs): dropdown dx

* refactor(docs): dropdown dx

* refactor(docs): date-picker dx (#4103)

* refactor(docs): date-picker dx

* fix(docs): import paths

* refactor(docs): date-range-picker dx (#4104)

* refactor(docs): date-range-picker dx

* fix(docs): date-range-picker dx

* refactor(docs): drawer dx (#4109)

* refactor(docs): drawer dx

* fix(docs): indentation

* refactor(docs): make icon collapsible

---------

Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>

* feat(input-otp): introduce input OTP component (#4052)

* feat(input-otp): adding the functionality

* fix(input-otp): making the use of input-otp library

* Update .changeset/spotty-flies-jump.md

* chore(input-otp): nits

* feat: improvements and fixes added

* refactor: input-otp docs improvements

* fix: changeset

* fix: build

---------

Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* ci(changesets): version packages (beta) (#4169)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* refactor(theme): revise label font size for lg (#4141)

* refactor(theme): revise label font size for lg

* chore(changeset): add changeset

* refactor(theme): revise label font size for lg

* fix(docs): typecheck errors (#4171)

* fix(docs): remove duplicate import

* fix(docs): update type for onChange in range-calendar page

* fix(docs): add missing `@react-types/calendar`

* fix(docs): broken syntax

* fix(docs): typecheck issues

* fix(docs): add missing `@react-types/datepicker`

* fix(docs): typecheck issues

* fix: missing li tag when href is specified (#4168)

* fix(items): items in list should wrapped in li in case of a

* chore: adding the tests

* Feat/textarea add clear button (#4172)

* feat(components): add clear button to the textarea component

* docs(textarea): add test and changeset

* feat(textarea): modify the changeset file

* feat(textarea): add clear button to textarea

* feat(textarea): add isClearable prop to textarea

* docs(textarea): add documentation to textarea

* docs(textarea): add documentation to textarea

* feat(textarea): replace the textarea component clear icon and modify its location

* feat(textarea): revise the clear button position

* feat(textarea): revise the clear button structure

* feat(textarea): revise the styles of clear button and textarea

* feat(textarea): revise the styles of RTL case

* feat(textarea): change the rtl to pe

* feat(textarea): delete the px classname

* chore(changeset): update package and message

* test(textarea): add test case

* feat(textarea): change the clear button structure

* feat(textarea): optimized code

* chore(textarea): update the changeset file

* docs(textarea): add slots doc to textarea

* chore(textarea): update peerDevpeerDependencies version

* chore(textarea): add usecallback dep

* Update .changeset/five-adults-protect.md

* chore(pre-release): enter pre-release mode

* feat(textarea): modify the clear button icon

* fix(theme): apply tw nested group (#3909)

* chore(changset): add changeset

* fix(theme): apply nested group to table

* chore(docs): update table bottomContent code

* fix: changeset

* fix: changeset

* fix: changeset

* fix: changeset

* fix: changeset

* fix: pkg versions

* fix: changeset

* fix: drawer peer dep

* chore: update plop components tempalte

* ci(changesets): version packages (beta) (#3988)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: pre-release workflow

* chore: debug log added

* chore: force pre-release

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* ci(changesets): version packages (beta)

* chore: beta1 (#3990)

* ci(changesets): version packages (beta) (#3991)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(use-image): image ReferenceError in SSR (#3993)

* fix(input): fixed a sliding issue caused by the helper wrapper (#3966)

* If it is false and there is an error message or description it will create a div

* Update packages/components/input/src/input.tsx

* Update packages/components/select/src/select.tsx

* Update packages/components/input/src/textarea.tsx

* add changeset

* changeset update

* ci(changesets): version packages (beta) (#3995)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: image loading in the server (#3996)

* fix: lock file

* chore: force release

* chore: force release 2

* ci(changesets): version packages (beta) (#3997)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: image load on next.js (#3998)

* ci(changesets): version packages (beta) (#3999)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: element.ref was removed in React 19 warning (#4003)

* ci(changesets): version packages (beta) (#4004)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: react 19 as peer dep (#4008)

* ci(changesets): version packages (beta) (#4009)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Beta/react 19 support (#4010)

* fix: react 19 as peer dep

* fix: react 19 as peer dep

* chore: support framer-motion alpha version

* ci(changesets): version packages (beta) (#4011)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(theme): making select and input themes consistent (#3881)

* ci(changesets): version packages (beta) (#4012)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(textarea): fix clearButton display

* fix: support inert value with boolean type for react 19 (#4039)

* ci(changesets): version packages (beta) (#4041)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: alert design improved (#4054)

* ci(changesets): version packages (beta) (#4056)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: drawer improvements (#4057)

* ci(changesets): version packages (beta) (#4058)

* feat: alert styles improved (#4071)

* ci(changesets): version packages (beta) (#4072)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: alert styles improved (#4073)

* ci(changesets): version packages (beta) (#4074)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: add number of stars and credits

* chore: fix build

* chore: improve navabr colors

* chore: new changeset (#4083)

* ci(changesets): version packages (beta) (#4084)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore: pnpm cleaned (#4086)

* ci(changesets): version packages (beta) (#4087)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore: custom runnner added

* chore: custom runner test (#4091)

* Beta/custom runner (#4092)

* chore: custom runner test

* chore: custom runner test

* chore: remove 2 from older changeset

* ci(changesets): version packages (beta) (#4093)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* feat: new demo added to alert

* Feat/virtualization for autocomplete (#4094)

* feat: add react-window virtualization for autocomplete

* fix: wrong imports and wrong sizing

* fix: update pnpm lock

* chore: add test cases for large dataset (1000 and 10000 items)

* chore: move virtualized-listbox to listbox components folder, implement isVirtualized conditional

* feat: implement dynamic listboxheight n item height, add story

* chore: rename props, remove unnecessary line changes

* fix: maxHeight style 256px for default, conditional usage of virtualizer

* feat: migrate to tan-stack virtual. (todo: fix scroll shadow)

* feat: virtualization support

---------

Co-authored-by: Vincentius Roger Kuswara <vincentiusrkuswara@gmail.com>

* ci(changesets): version packages (beta) (#4095)

* feat: small fixes

* feat: add reducedMotion setting to Provider (#3470)

* feat: add reducedMotion setting to Provider

* chore: refactor reducedMotion story

* Update .changeset/pretty-parrots-guess.md

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* ci(changesets): version packages (beta) (#4106)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: move circular-progress tv to progress (#3321)

* fix: remove circular-progress tv to progress

* docs: changeset

* chore(changeset): update changeset message

* Update .changeset/angry-maps-serve.md

---------

Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix: label placement when the select has a placeholder or description (#4126)

* ci(changesets): version packages (beta) (#4107)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(deps): add missing `framer-motion` in `peerDependencies` (#4140)

* fix(theme): add truncate class to the list item to avoid overflow the wrapper (#4105)

* fix(docs): invalid canary storybook link (#4030)

* fix: menu item hidden overflow text

* feat: changeset

* Merge branch 'beta/release-next' into fix/menu-item-hidden

* fix: truncate list item

* feat: update changeset

* fix(menu): omit internal props

---------

Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* Update apps/docs/content/docs/components/textarea.mdx

* feat(table): add isKeyboardNavigationDisabled prop to the table (#3735)

Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>

* feat: add form component (#3036)

* chore: add support validationBehavior aria

* chore: add validationBehavior to Provider

* chore: add autocomplete validation test

* chore: add checkbox validation test

* fix(input): require condition

* docs: add description of validationBehavior props

* chore: add support validationBehavior props for date components

* docs(dates): add description of validationBehavior props

* chore: add changeset

* chore: format

* chore: fix test

* fix: select validationBehavior is not support yet

* fix: select validationBehavior not supported yet

* feat: add form component with input support

* feat: add support form context

* chore: wip add support for  form server errors

* chore: add support checkbox server validation

* chore: add support radio server validation

* chore: update pnpm-lock.yaml

* chore: add support input server validation

* chore: add support autocomplete server validation

* chore(form): add server validation stories

* chore: fix test

* chore: add date-picker validation test

* chore: update form stories

* chore: add changeset

* chore: update react-aria version

* chore: add pnpm-lock.yaml

* chore: update react-aria version

* chore: add comment

* chore: update react-aria version

* chore: fix change set

* chore: export form component in the main package

* chore: upgrade react-aria

* chore: fixed internationalized/date version

* fix: build error

* chore: upgrade docs react-aria version

* fix: remove comment

* fix: debug setting

* chore(docs): update sponsor (#3904)

* chore(docs): remove Scrumbuiss

* chore(docs): remove Scrumbuiss logo

* chore(docs): replace va by posthog (#4123)

* chore(changeset): change to patch

* refactor: react-aria-components remove to decrease package size, logic moved to the form package

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* docs: add forms guide (#4155)

Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>

* chore: routes updated

* ci(changesets): version packages (beta) (#4151)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore: fix indentation

* fix(changeset): package not be found

* ci(changesets): version packages (beta) (#4158)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(select): controlled isInvalid prop (#4082)

* fix(select): controlled isInvalid prop

* chore: add changeset

* Merge branch 'beta/release-next' into pr/4082

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* ci(changesets): version packages (beta) (#4159)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore(changeset): bump all versions

* ci(changesets): version packages (beta) (#4160)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(deps): missing peer / dev dependency for framer-motion (#4161)

* fix(system): align `navigate` function parameters with `@react-aria` (#4163)

* fix: menu item classNames not work (#4156)

* fix: menu item classNames not work

* feat: changeset

* docs: update

* feat: merge classes utility added

* Update .changeset/brave-trains-wave.md

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* chore(docs): remove incorrect info

* ci(changesets): version packages (beta) (#4162)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* refactor(docs): overall dx (#4055)

* refactor(docs): revise code block (#3922)

* refactor(docs): revise code block

* chore(docs): resolve pr comments

* refactor(docs): autocomplete dx (#3934)

* feat(docs): add *.js?raw module

* feat(docs): change to react-jsx and add **/*.js

* chore(root): include js and jsx

* refactor(docs): autocomplete dx

* chore(docs): rollback overrides

* chore(autocomplete): lint

* fix(autocomplete): incorrect import path

* fix(docs): autocomplete dx

* chore(docs): remove highlightedLines

* refactor(docs): breadcrumbs dx (#3968)

* refactor(docs): breadcrumbs dx

* fix(docs): export issue

* chore(docs): use preserve for jsx

* fix(docs): support multiline import

* fix(docs): support multiple export

* chore(docs): add back export

* refactor(docs): avatar dx (#3951)

* refactor(docs): badge dx (#3960)

* refactor(docs): badge dx

* chore(docs): incorrect import path

* refactor(docs): button dx (#3981)

* refactor(docs): calendar dx (#4022)

* refactor(docs): calendar dx

* fix(docs): incorrect import path

* refactor(docs): switch dx (#4037)

* refactor(docs): switch dx

* chore(docs): remove highlightedLines

* refactor(docs): tooltip (#4035)

* refactor(docs): usage dx (#4036)

* refactor(docs): circular-progress dx (#4029)

* refactor(docs): chip-dx (#4028)

* refactor(docs): checkbox-group dx (#4027)

* refactor(docs): checkbox dx (#4024)

* refactor(docs): checkbox dx

* fix(docs): incorrect import path

* refactor(docs): card dx (#4023)

* refactor(docs): skeleton dx (#4042)

* refactor(docs): spacer dx (#4043)

* refactor(docs): snippet dx (#4044)

* refactor(docs): scroll-shadow dx (#4045)

* refactor(docs): code dx (#4046)

* refactor(docs): kbd dx (#4047)

* refactor(docs): link dx (#4048)

* refactor(docs): progress dx (#4049)

* refactor(docs): divider dx (#4050)

* refactor(docs): listbox dx (#4051)

* refactor(docs): listbox dx

* fix(docs): import path

* fix(docs): import path

* chore(docs): remove highlightedLines

* fix(docs): indentation

* chore(docs): replace the props of autocomplete from value to key (#4129)

* refactor(docs): alert dx (#4108)

* refactor(docs): alert dx

* refactor(docs): alert dx

* refactor(docs): image dx (#4061)

* refactor(docs): textarea dx (#4063)

* refactor(docs): spinner dx (#4088)

* refactor(docs): radio-group dx (#4064)

* refactor(docs): pagination dx (#4062)

* refactor(docs): pagination dx

* refactor(docs): pagination dx

* refactor(docs): time-input dx (#4065)

* refactor(docs): time-input dx

* refactor(docs): time-input dx

* refactor(docs): slider dx (#4066)

* refactor(docs): slider dx

* refactor(docs): slider dx

* refactor(docs): move SliderValue to type

* refactor(docs): slider dx

* refactor(docs): make icon code collapsible

* refactor(docs): specify versions for date packages (#4138)

* refactor(docs): specify versions for date packages

* fix(docs): correct RA i18n version

* chore(deps): sync version from package

* refactor(docs): tabs dx (#4067)

* refactor(docs): tab dx

* refactor(docs): tabs dx

* refactor(docs): input dx (#4102)

* refactor(docs): input dx

* refactor(docs): input dx

* refactor(docs): navbar dx (#4076)

* refactor(docs): navbar dx

* refactor(docs): navbar dx

* refactor(docs): navbar dx

* refactor(docs): modal dx (#4077)

* refactor(docs): modal dx

* refactor(docs): modal dx

* refactor(docs): select dx (#4078)

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): select dx

* refactor(docs): table dx (#4079)

* refactor(docs): table dx

* fix(docs): import path

* refactor(docs): table dx

* refactor(docs): table dx

* refactor(docs): popover dx (#4090)

* refactor(docs): range-calendar dx (#4089)

* refactor(docs): range-calendar dx

* fix(docs): import path

* refactor(docs): date input dx (#4100)

* refactor(docs): dropdown dx (#4101)

* refactor(docs): dropdown dx

* refactor(docs): remove highlightedLines

* refactor(docs): dropdown dx

* refactor(docs): dropdown dx

* refactor(docs): date-picker dx (#4103)

* refactor(docs): date-picker dx

* fix(docs): import paths

* refactor(docs): date-range-picker dx (#4104)

* refactor(docs): date-range-picker dx

* fix(docs): date-range-picker dx

* refactor(docs): drawer dx (#4109)

* refactor(docs): drawer dx

* fix(docs): indentation

* refactor(docs): make icon collapsible

---------

Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>

* Merge branch 'beta/release-next' into pr/3477

* refactor(docs): apply new structure to doc

* feat(input-otp): introduce input OTP component (#4052)

* feat(input-otp): adding the functionality

* fix(input-otp): making the use of input-otp library

* Update .changeset/spotty-flies-jump.md

* chore(input-otp): nits

* feat: improvements and fixes added

* refactor: input-otp docs improvements

* fix: changeset

* fix: build

---------

Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* ci(changesets): version packages (beta) (#4169)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* refactor(theme): revise label font size for lg (#4141)

* refactor(theme): revise label font size for lg

* chore(changeset): add changeset

* refactor(theme): revise label font size for lg

* fix(docs): typecheck errors (#4171)

* fix(docs): remove duplicate import

* fix(docs): update type for onChange in range-calendar page

* fix(docs): add missing `@react-types/calendar`

* fix(docs): broken syntax

* fix(docs): typecheck issues

* fix(docs): add missing `@react-types/datepicker`

* fix(docs): typecheck issues

* fix: missing li tag when href is specified (#4168)

* fix(items): items in list should wrapped in li in case of a

* chore: adding the tests

* fix: textarea issues with the clear button

* chore: adjust clear button position

---------

Co-authored-by: doki- <1335902682@qq.com>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Mustafa Balcı <19329346+mstfblci@users.noreply.github.com>
Co-authored-by: Maharshi Alpesh <maharshialpesh@gmail.com>
Co-authored-by: Vincentius Roger Kuswara <vincentiusrkuswara@gmail.com>
Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>
Co-authored-by: winches <329487092@qq.com>
Co-authored-by: Tianen Pang <32772271+tianenpang@users.noreply.github.com>
Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: chirokas <157580465+chirokas@users.noreply.github.com>

* ci(changesets): version packages (beta) (#4170)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* docs: sync api from nextui-cli v0.3.5 (#4173)

Co-authored-by: GitHub Action <action@github.com>

* ci(changesets): exit pre-release mode

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Mustafa Balcı <19329346+mstfblci@users.noreply.github.com>
Co-authored-by: Maharshi Alpesh <maharshialpesh@gmail.com>
Co-authored-by: Vincentius Roger Kuswara <vincentiusrkuswara@gmail.com>
Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>
Co-authored-by: winches <329487092@qq.com>
Co-authored-by: Tianen Pang <32772271+tianenpang@users.noreply.github.com>
Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: chirokas <157580465+chirokas@users.noreply.github.com>
Co-authored-by: doki- <1335902682@qq.com>
Co-authored-by: GitHub Action <action@github.com>

* fix: pre release workflow on protected branches (#4174)

* chore(pre-release): enter pre-release mode (#4175)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix: input otp peer deps (#4176)

* chore: update workflows

* chore: pre release workflow modified (#4177)

* chore: canary versions (#4178)

* fix: pre-release workflow (#4179)

* chore: merged with beta branch

* chore: workflow updated

* ci(changesets): version packages

* fix: changeset get github info

* chore: force canary to release (#4180)

* Feat/canary release (#4181)

* chore: force canary to release

* feat: canary release

* ci(changesets): version packages

* ci(changesets): version packages

* fix: exit pre-release mode

* fix: exit pre-release mode

* fix: exit pre-release mode

* fix: exit pre-release mode

* fix: exit pre-release mode

* chore: exit pre release mode

* fix(workflows): release & pre-release flow (#4184)

* chore: revert exit and enter pre release changes

* chore: canary release test (#4185)

* chore: update exit and enter workflows

* chore: update workflow name

* fix: exit pre-release mode

* fix: exit pre-release mode

* chore: delete pre file

* chore: remove duplicate changesets

* chore: base branch change to canary, changeset config

* refactor: beta tags manually deleted (#4187)

* fix: install

* fix: peer deps (#4188)

* Fix/peer deps (#4189)

* fix: peer deps

* fix: tests

* fix: routes

* chore(docs): revise defaultShowFlagList (#4193)

* chore(docs): add Example to defaultShowFlagList

* chore(docs): revise defaultShowFlagList

* feat: documentation improvements (#4195)

* feat: documentation improvements

* fix: alert api

* Feat/doc improvements (#4196)

* feat: documentation improvements

* fix: alert api

* fix: copy button

* fix: return in card demo

* Fix/react core pkg (#4204)

* fix: double use client tag import in react core package

* fix: double use client

* chore: restore postbuild script

* docs: optimize code fold (#4202)

* docs: optimize code fold

* fix: code review

* fix(input): teaxtarea label squish (#4197)

* fix(input): teaxtarea label squish

* chore(changeset): add changeset for textarea label fix

* chore: remove customer runner

* chore: rename changeset

* chore: increase timeout

* chore: change get info pkg version

* chore: new changeset

* chore: single chnageset

* chore: consolidated changeset

* chore: consolidated changeset

* Update release.yaml (#4205)

* chore: consolidated changeset

* fix: forwardRef render functions not using ref (#4198)

* fix: forwardRef render functions not using ref

* fix: changelog

* fix: review

* fix: forwardRef render functions not using ref

* docs: update changeset

* feat(listbox): virtualization (#4206)

* fix: should not export list item internal variables type

* feat: changeset

* fix: type error

* fix: code block type error

* feat: virtualization feature, docs for listbox

* chore: update routes.json

* fix: fix code-demo for typecheck

* chore: rollback for files

* chore: props omitted in the component itself

* fix: menu item types

* fix: tupecheck

---------

Co-authored-by: winches <329487092@qq.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* feat(select): virtualization (#4203)

* fix: should not export list item internal variables type

* feat: changeset

* feat: integrate virtualized listbox to select component, add more props

* feat: update docs for select component

* feat: update docs to include API for virtualization

* fix: update docs to follow the newest format

* fix: update test for disable virtualization, add test for virtualized version

* fix: fix typo

* fix: type error

* fix: code block type error

* chore: update docs to use raw jsx instead of template literal

* fix: fix code-demo for typecheck

* chore: rollback for files

* fix: types

* chore: remove caret version on tanstack virtual pkg

* fix: pnpm lock file

* fix: virtualization examples

* fix: number of items

---------

Co-authored-by: winches <329487092@qq.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* chore: adjust code colors

* fix: collection based components ref (#4207)

* chore: documentation adjustments

* Update data-slot for the error message in the select. (#4214)

* Update data-slot for the error message in the select.

All components use the `data-slot="error-message"` attribute, except for the select component. I observed this behavior when a test in my application started failing.

* refactor(select): refactors the data-slots attribute for the error message

* fix(docs): types for classNames and itemClasses (#4209)

* feat: documentation improvements

* chore: more improvements to the docs, routing updated, acccordiong font size change

* feat: forms doc in progress

* fix(touch): fixing the selection functionality on touch (#4220)

* fix(touch): fixing the selection functionality on touch

* fix: radio, checkbox & switch interactions

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* chore(docs): remove non-existing attribute (#4221)

* fix(select): hideEmptyContent API (#4219)

* fix(select): hideEmptyContent API

* test(select): hideEmptyContent tests

* docs(select): hideEmptyContent API

* chore(select): hideEmptyContent storybook

* chore(changeset): add hideEmptyContent API to select

* refactor(select): hideEmptyContent nitpick

* test(select): hideEmptyContent UI assertions

* fix(select): hideEmptyContent default false

* docs(select): hideEmptyContent default false

* fix(pagination): cursor position when hidden on init (#4222)

* fix(pagination): cusor position when hidden on init

* test(pagination): cursor intersection observer

* chore(changeset): pagination cursor position fix

* refactor(pagination): minor nitpicks
- check for null ref in usePagination
- restore original IntersectionObserver in test

* fix: form fixes and improvements (#4224)

* chore: form in progress

* chore: main demo addded to forms, checkbox validation fixed

* chore: forms docs improved

* fix(deps): bump `@react-aria/utils` version (#4226)

* fix(deps): bump `@react-aria/utils` version

* chore(changeset): add changeset

* feat: forms doc completed

* chore: form component doc created

* chore: forms doc improved

* chore: doc improvements

* chore: alert doc improved

* feat: nextjs 15 migration in progress

* feat: nextjs 15 migration [docs] (#4228)

* feat: nextjs 15 migration in progress

* feat: next 15 downgraded to next 14

* fix: migration errors

* feat: codeblog is now rendered only when visible, this made a huge performance improvement

* fix: remove folding

* feat: v2.6.0 blog

* feat: Adding nextui pro section on the landing page (#4227)

* feat: adding nextui pro section on the landing page

* chore(nits): nits

* fix: remove pro image on mobile

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix(docs): prevent scrolling up on pressing theme change switch (#4233)

* chore: improve v2.6.0 blog

* chore: small improvements

* chore: improve blog

* ci(changesets): version packages (#4186)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix: snippet release (#4235)

* ci(changesets): version packages (#4236)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* chore: v2.6.2

* ci(changesets): version packages (#4237)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix: draggable modal demo

* fix: v2.6 blog

* chore: adjust blog

* chore: release notes link updated

* fix: v2.6.0 (#4247)

* fix: v2.6.0

* chore: update framer motion version

* ci(changesets): version packages (#4248)

* fix(deps): incorrect peerDependencies for theme and system package (#4255)

* fix(deps): incorrect peerDependencies for theme and system package

* chore(changeset): add changeset

* ci(changesets): version packages (#4261)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* chore: adjust doc

* chore: update search meta objects

* fix: ref in form component (#4279)

* fix(dropdown): unnecessary ref in dropdown (#4278)

* fix: missing react-types package added (#4264)

* fix: missing react-types package added

* chore: react types version increased

* chore(deps): sync with upstream RA versions (#4258)

* chore(deps): sync with upstream RA versions

* chore(changeset): add changeset

* chore(form): remove caret

* chore(deps): pnpm-lock.yaml

* fix(tooltip): type 'null' is not assignable to type 'PlacementAxis'

* fix(deps): bump `@internationalized/date`

* chore(deps): sync `@react-types` versions

* fix(input): follow RAC typing in useTextField

* fix(popover): typecheck error

* fix: typecheck errors

* fix: typecheck errors

* fix(docs): bump RA versions

---------

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* ci(changesets): version packages (#4280)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

---------

Signed-off-by: Innei <i@innei.in>
Signed-off-by: The1111mp <The1111mp@outlook.com>
Co-authored-by: ryoon <ryoon50@gmail.com>
Co-authored-by: աӄա <wingkwong.code@gmail.com>
Co-authored-by: Abhinav Agarwal <78839973+abhinav700@users.noreply.github.com>
Co-authored-by: Maharshi Alpesh <maharshialpesh@gmail.com>
Co-authored-by: Maharshi Alpesh <maharshialpesh@Maharshi-Book.local>
Co-authored-by: David Gonzalez <dgonzalez1992@outlook.com>
Co-authored-by: Julie Saia <76669473+juliesaia@users.noreply.github.com>
Co-authored-by: Alex Nguyen <dev@alexnguyen.co.nz>
Co-authored-by: max <hi.max@foxmail.com>
Co-authored-by: Ryo Matsukawa <76232929+ryo-manba@users.noreply.github.com>
Co-authored-by: Shrinidhi Upadhyaya <shrinidhiupadhyaya1195@gmail.com>
Co-authored-by: Anuj Sharma <52837557+sanuj21@users.noreply.github.com>
Co-authored-by: Innei <tukon479@gmail.com>
Co-authored-by: Jeff. <jeffreysfu@gmail.com>
Co-authored-by: winches <329487092@qq.com>
Co-authored-by: Abhinav Agarwal <abhinavagrawal700@gmail.com>
Co-authored-by: wzc520pyfm <1528857653@qq.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Abhinandan <abhinandanverma551@gmail.com>
Co-authored-by: The1111mp <The1111mp@outlook.com>
Co-authored-by: Rakha Kanz Kautsar <rkkautsar@gmail.com>
Co-authored-by: Can Rau <cansrau@gmail.com>
Co-authored-by: Azpekt <65199167+AzpektDev@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Mustafa Balcı <19329346+mstfblci@users.noreply.github.com>
Co-authored-by: Vincentius Roger Kuswara <vincentiusrkuswara@gmail.com>
Co-authored-by: Tianen Pang <32772271+tianenpang@users.noreply.github.com>
Co-authored-by: chirokas <157580465+chirokas@users.noreply.github.com>
Co-authored-by: doki- <1335902682@qq.com>
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Peterl561 <76144929+Peterl561@users.noreply.github.com>
Co-authored-by: Julio Barrios <juliobarmi@gmail.com>
2024-12-08 09:56:13 -03:00
աӄա 05d07929a6 fix(docs): identifier 'colors' has already been declared (#4276) 2024-12-08 08:53:59 -03:00
311 changed files with 5256 additions and 2534 deletions
+11 -2
View File
@@ -27,9 +27,18 @@ jobs:
run: pnpm test
- name: Build
run: pnpm build
id: build
continue-on-error: false
# Custom turbo build failure information
run: |
pnpm build || {
echo "Turbo build failed with exit code $?"
exit 1
}
- name: Create Release Pull Request or Publish to NPM
# Run only if the build is successful
if: steps.build.outcome == 'success'
id: changesets
uses: changesets/action@v1
with:
@@ -43,7 +52,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create canary release
if: steps.changesets.outputs.published != 'true'
if: steps.build.outcome == 'success' && steps.changesets.outputs.published != 'true'
timeout-minutes: 15
run: |
git checkout canary
+10 -2
View File
@@ -16,13 +16,21 @@ export default function DocsLayout({children}: DocsLayoutProps) {
aria-hidden="true"
className="fixed hidden dark:md:block dark:opacity-70 -bottom-[40%] -left-[20%] z-0"
>
<Image removeWrapper alt="docs left background" src="/gradients/docs-left.png" />
<Image
removeWrapper
alt="docs left background"
src="https://heroui-assets.nyc3.cdn.digitaloceanspaces.com/images/docs-left.png"
/>
</div>
<div
aria-hidden="true"
className="fixed hidden dark:md:block dark:opacity-70 -top-[80%] -right-[60%] 2xl:-top-[60%] 2xl:-right-[45%] z-0 rotate-12"
>
<Image removeWrapper alt="docs right background" src="/gradients/docs-right.png" />
<Image
removeWrapper
alt="docs right background"
src="https://heroui-assets.nyc3.cdn.digitaloceanspaces.com/images/docs-right.png"
/>
</div>
<ScriptProviders />
+1
View File
@@ -83,6 +83,7 @@ export default async function DocPage({params}: DocPageProps) {
if (!doc) {
notFound();
}
const editUrl = `${GITHUB_URL}/${REPO_NAME}/edit/${TAG}${CONTENT_PATH}${currentRoute?.path}`;
return (
+12 -4
View File
@@ -21,15 +21,23 @@ export default function DocsLayout({children}: DocsLayoutProps) {
</main>
<div
aria-hidden="true"
className="fixed hidden dark:md:block dark:opacity-70 -bottom-[40%] -left-[20%] z-0"
className="fixed hidden dark:md:block dark:opacity-100 -bottom-[30%] -left-[30%] z-0"
>
<Image removeWrapper alt="docs left background" src="/gradients/docs-left.png" />
<Image
removeWrapper
alt="docs left background"
src="https://heroui-assets.nyc3.cdn.digitaloceanspaces.com/images/docs-left.png"
/>
</div>
<div
aria-hidden="true"
className="fixed hidden dark:md:block dark:opacity-70 -top-[80%] -right-[60%] 2xl:-top-[60%] 2xl:-right-[45%] z-0 rotate-12"
className="fixed hidden dark:md:block dark:opacity-70 -top-[50%] -right-[60%] 2xl:-top-[60%] 2xl:-right-[45%] z-0 rotate-12"
>
<Image removeWrapper alt="docs right background" src="/gradients/docs-right.png" />
<Image
removeWrapper
alt="docs right background"
src="https://heroui-assets.nyc3.cdn.digitaloceanspaces.com/images/docs-right.png"
/>
</div>
<ScriptProviders />
@@ -58,7 +58,7 @@ export default function Page() {
</p>
</ModalBody>
<ModalFooter>
<Button color="danger" variant="light" onClick={onClose}>
<Button color="danger" variant="light" onPress={onClose}>
Close
</Button>
<Button color="primary" onPress={onClose}>
@@ -1,16 +1,6 @@
"use client";
import {
Navbar,
NavbarBrand,
NavbarContent,
NavbarItem,
Link as NextUiLink,
LinkProps,
Button,
} from "@nextui-org/react";
const Link = (props: LinkProps) => <NextUiLink {...props} onClick={(e) => e.preventDefault()} />;
import {Navbar, NavbarBrand, NavbarContent, NavbarItem, Link, Button} from "@nextui-org/react";
const AcmeLogo = () => (
<svg fill="none" height="36" viewBox="0 0 32 32" width="36">
@@ -9,13 +9,10 @@ import {
NavbarMenuItem,
NavbarMenuToggle,
Button,
Link as NextUiLink,
LinkProps,
Link,
} from "@nextui-org/react";
import React from "react";
const Link = (props: LinkProps) => <NextUiLink {...props} onClick={(e) => e.preventDefault()} />;
const AcmeLogo = () => (
<svg fill="none" height="36" viewBox="0 0 32 32" width="36">
<path
@@ -1,16 +1,6 @@
"use client";
import {
Navbar,
NavbarBrand,
NavbarContent,
NavbarItem,
Link as NextUiLink,
LinkProps,
Button,
} from "@nextui-org/react";
const Link = (props: LinkProps) => <NextUiLink {...props} onClick={(e) => e.preventDefault()} />;
import {Navbar, NavbarBrand, NavbarContent, NavbarItem, Link, Button} from "@nextui-org/react";
const AcmeLogo = () => (
<svg fill="none" height="36" viewBox="0 0 32 32" width="36">
@@ -6,16 +6,13 @@ import {
NavbarContent,
NavbarItem,
Button,
Link as NextUiLink,
LinkProps,
Link,
NavbarMenu,
NavbarMenuItem,
NavbarMenuToggle,
} from "@nextui-org/react";
import React from "react";
const Link = (props: LinkProps) => <NextUiLink {...props} onClick={(e) => e.preventDefault()} />;
const AcmeLogo = () => (
<svg fill="none" height="36" viewBox="0 0 32 32" width="36">
<path
@@ -1,16 +1,6 @@
"use client";
import {
Navbar,
NavbarBrand,
NavbarContent,
NavbarItem,
Link as NextUiLink,
LinkProps,
Button,
} from "@nextui-org/react";
const Link = (props: LinkProps) => <NextUiLink {...props} onClick={(e) => e.preventDefault()} />;
import {Navbar, NavbarBrand, NavbarContent, NavbarItem, Link, Button} from "@nextui-org/react";
const AcmeLogo = () => (
<svg fill="none" height="36" viewBox="0 0 32 32" width="36">
@@ -1,16 +1,6 @@
"use client";
import {
Navbar,
NavbarBrand,
NavbarContent,
NavbarItem,
Link as NextUiLink,
LinkProps,
Button,
} from "@nextui-org/react";
const Link = (props: LinkProps) => <NextUiLink {...props} onClick={(e) => e.preventDefault()} />;
import {Navbar, NavbarBrand, NavbarContent, NavbarItem, Link, Button} from "@nextui-org/react";
const AcmeLogo = () => (
<svg fill="none" height="36" viewBox="0 0 32 32" width="36">
+1 -11
View File
@@ -1,16 +1,6 @@
"use client";
import {
Navbar,
NavbarBrand,
NavbarContent,
NavbarItem,
Link as NextUiLink,
LinkProps,
Button,
} from "@nextui-org/react";
const Link = (props: LinkProps) => <NextUiLink {...props} onClick={(e) => e.preventDefault()} />;
import {Navbar, NavbarBrand, NavbarContent, NavbarItem, Link, Button} from "@nextui-org/react";
const AcmeLogo = () => (
<svg fill="none" height="36" viewBox="0 0 32 32" width="36">
+1 -11
View File
@@ -1,16 +1,6 @@
"use client";
import {
Navbar,
NavbarBrand,
NavbarContent,
NavbarItem,
Link as NextUiLink,
LinkProps,
Button,
} from "@nextui-org/react";
const Link = (props: LinkProps) => <NextUiLink {...props} onClick={(e) => e.preventDefault()} />;
import {Navbar, NavbarBrand, NavbarContent, NavbarItem, Link, Button} from "@nextui-org/react";
const AcmeLogo = () => (
<svg fill="none" height="36" viewBox="0 0 32 32" width="36">
@@ -5,8 +5,7 @@ import {
NavbarBrand,
NavbarContent,
NavbarItem,
Link as NextUiLink,
LinkProps,
Link,
DropdownItem,
DropdownTrigger,
Dropdown,
@@ -14,8 +13,6 @@ import {
Avatar,
} from "@nextui-org/react";
const Link = (props: LinkProps) => <NextUiLink {...props} onClick={(e) => e.preventDefault()} />;
const AcmeLogo = () => (
<svg fill="none" height="36" viewBox="0 0 32 32" width="36">
<path
@@ -5,8 +5,7 @@ import {
NavbarBrand,
NavbarContent,
NavbarItem,
Link as NextUiLink,
LinkProps,
Link,
Button,
DropdownItem,
DropdownTrigger,
@@ -15,8 +14,6 @@ import {
} from "@nextui-org/react";
import {ChevronDown, Lock, Activity, Flash, Server, TagUser, Scale} from "@nextui-org/shared-icons";
const Link = (props: LinkProps) => <NextUiLink {...props} onClick={(e) => e.preventDefault()} />;
const AcmeLogo = () => (
<svg fill="none" height="36" viewBox="0 0 32 32" width="36">
<path
@@ -5,8 +5,7 @@ import {
NavbarBrand,
NavbarContent,
NavbarItem,
Link as NextUiLink,
LinkProps,
Link,
Button,
NavbarMenuToggle,
NavbarMenu,
@@ -14,8 +13,6 @@ import {
} from "@nextui-org/react";
import React from "react";
const Link = (props: LinkProps) => <NextUiLink {...props} onClick={(e) => e.preventDefault()} />;
const AcmeLogo = () => (
<svg fill="none" height="36" viewBox="0 0 32 32" width="36">
<path
@@ -5,8 +5,7 @@ import {
NavbarBrand,
NavbarContent,
NavbarItem,
Link as NextUiLink,
LinkProps,
Link,
Input,
DropdownItem,
DropdownTrigger,
@@ -15,8 +14,6 @@ import {
Avatar,
} from "@nextui-org/react";
const Link = (props: LinkProps) => <NextUiLink {...props} onClick={(e) => e.preventDefault()} />;
import {SearchLinearIcon} from "@/components/icons";
const AcmeLogo = () => (
+10 -2
View File
@@ -36,13 +36,21 @@ export default function FigmaPage() {
aria-hidden="true"
className="fixed hidden dark:md:block dark:opacity-70 -bottom-[40%] -left-[20%] z-0"
>
<Image removeWrapper alt="docs left background" src="/gradients/docs-left.png" />
<Image
removeWrapper
alt="docs left background"
src="https://heroui-assets.nyc3.cdn.digitaloceanspaces.com/images/docs-left.png"
/>
</div>
<div
aria-hidden="true"
className="fixed hidden dark:md:block dark:opacity-70 -top-[80%] -right-[60%] 2xl:-top-[60%] 2xl:-right-[45%] z-0 rotate-12"
>
<Image removeWrapper alt="docs right background" src="/gradients/docs-right.png" />
<Image
removeWrapper
alt="docs right background"
src="https://heroui-assets.nyc3.cdn.digitaloceanspaces.com/images/docs-right.png "
/>
</div>
<ScriptProviders />
+1 -1
View File
@@ -13,7 +13,7 @@ import {Community} from "@/components/marketing/community";
import Support from "@/components/marketing/support";
import landingContent from "@/content/landing";
import {Sponsors} from "@/components/marketing/sponsors";
import {NextUIProSection} from "@/components/marketing/nextui-pro-section";
import {NextUIProSection} from "@/components/marketing/nextui-pro-section/nextui-pro-section";
export default async function Home() {
return (
+19 -18
View File
@@ -18,27 +18,28 @@ export interface ProvidersProps {
themeProps?: ThemeProviderProps;
}
const ProviderWrapper = ({children}: {children: ReactNode}) => {
useEffect(() => {
// Initialize PostHog only once when the app starts
if (typeof window !== "undefined" && __PROD__ && !posthog.isFeatureEnabled("capture")) {
posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY!, {
api_host: "/ingest",
person_profiles: "identified_only",
ui_host: process.env.NEXT_PUBLIC_POSTHOG_HOST,
});
}
}, []);
if (__PROD__) {
return <PostHogProvider client={posthog}>{children}</PostHogProvider>;
}
return children;
};
export function Providers({children, themeProps}: ProvidersProps) {
const router = useRouter();
const ProviderWrapper = ({children}: {children: ReactNode}) => {
useEffect(() => {
if (typeof window !== "undefined" && __PROD__) {
posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY!, {
api_host: "/ingest",
person_profiles: "identified_only",
ui_host: process.env.NEXT_PUBLIC_POSTHOG_HOST,
});
}
}, []);
if (__PROD__) {
return <PostHogProvider client={posthog}>{children}</PostHogProvider>;
}
return children;
};
return (
<ProviderWrapper>
<NextUIProvider navigate={router.push}>
+23 -29
View File
@@ -1,7 +1,8 @@
import {FC} from "react";
import {Button, ButtonProps} from "@nextui-org/react";
import {ButtonProps} from "@nextui-org/react";
import {useClipboard} from "@nextui-org/use-clipboard";
import {clsx} from "@nextui-org/shared-utils";
import {memo} from "react";
import {PreviewButton} from "./preview-button";
import {CheckLinearIcon, CopyLinearIcon} from "@/components/icons";
@@ -9,35 +10,28 @@ export interface CopyButtonProps extends ButtonProps {
value?: string;
}
export const CopyButton: FC<CopyButtonProps> = ({value, className, ...buttonProps}) => {
export const CopyButton = memo<CopyButtonProps>(({value, className, ...buttonProps}) => {
const {copy, copied} = useClipboard();
const icon = copied ? (
<CheckLinearIcon
className="opacity-0 scale-50 data-[visible=true]:opacity-100 data-[visible=true]:scale-100 transition-transform-opacity"
data-visible={copied}
size={16}
/>
) : (
<CopyLinearIcon
className="opacity-0 scale-50 data-[visible=true]:opacity-100 data-[visible=true]:scale-100 transition-transform-opacity"
data-visible={!copied}
size={16}
/>
);
const handleCopy = () => {
copy(value);
};
return (
<Button
isIconOnly
className={clsx(
"absolute z-50 right-3 text-zinc-300 top-8 border-1 border-transparent bg-transparent before:bg-white/10 before:content-[''] before:block before:z-[-1] before:absolute before:inset-0 before:backdrop-blur-md before:backdrop-saturate-100 before:rounded-lg",
className,
)}
size="sm"
variant="bordered"
onPress={handleCopy}
{...buttonProps}
>
<CheckLinearIcon
className="absolute opacity-0 scale-50 data-[visible=true]:opacity-100 data-[visible=true]:scale-100 transition-transform-opacity"
data-visible={copied}
size={16}
/>
<CopyLinearIcon
className="absolute opacity-0 scale-50 data-[visible=true]:opacity-100 data-[visible=true]:scale-100 transition-transform-opacity"
data-visible={!copied}
size={16}
/>
</Button>
);
};
return <PreviewButton className={className} icon={icon} onPress={handleCopy} {...buttonProps} />;
});
CopyButton.displayName = "CopyButton";
@@ -10,6 +10,8 @@ import {SandpackFiles} from "@codesandbox/sandpack-react/types";
import {BgGridContainer} from "@/components/bg-grid-container";
import {GradientBox, GradientBoxProps} from "@/components/gradient-box";
import {CopyButton} from "@/components/copy-button";
import {StackblitzButton} from "@/components/stackblitz-button";
import {PreviewButton} from "@/components/preview-button";
export interface ReactLiveDemoProps {
code: string;
@@ -21,6 +23,7 @@ export interface ReactLiveDemoProps {
className?: string;
gradientColor?: GradientBoxProps["color"];
overflow?: "auto" | "visible" | "hidden";
typescriptStrict?: boolean;
}
// 🚨 Do not pass react-hook-form to scope, it will break the live preview since
@@ -49,11 +52,18 @@ export const ReactLiveDemo: React.FC<ReactLiveDemoProps> = ({
height,
className,
noInline,
typescriptStrict = false,
}) => {
const content = (
<>
{files?.[DEFAULT_FILE] && (
<div className="absolute top-[-28px] right-[-8px] z-50">
<div className="absolute top-[-26px] right-[3px] z-50 flex items-center">
<StackblitzButton
button={<PreviewButton icon={undefined} />}
className="before:hidden opacity-0 group-hover/code-demo:opacity-100 transition-opacity text-zinc-400"
files={files}
typescriptStrict={typescriptStrict}
/>
<CopyButton
className="before:hidden opacity-0 group-hover/code-demo:opacity-100 transition-opacity text-zinc-400"
value={files?.[DEFAULT_FILE] as string}
@@ -99,6 +99,10 @@ const CodeBlockHighlight = ({
ref={intersectionRef}
style={{
height: isVisible ? "auto" : `${height}px`,
// due to display: contents on the scrollable child element, this div will also scroll
// this causes the intersection observer to trigger if scrolled far enough horizontally
// set the width to fit-content to prevent this div from going off screen
width: "fit-content",
}}
>
{isVisible ? (
@@ -99,10 +99,10 @@ export const PackageManagers = ({
})}
</Tabs>
{showGlobalInstallWarning && (
<Blockquote className="my-2 text-small" color="warning">
<Blockquote className="my-2 text-base md:text-small" color="warning">
The above command is for individual installation only. You may skip this step if{" "}
<Code className="px-1 py-0.5 text-tiny font-mono">@nextui-org/react</Code> is already
installed globally.
<Code className="px-1 py-0.5 text-small md:text-tiny font-mono">@nextui-org/react</Code>{" "}
is already installed globally.
</Blockquote>
)}
</>
@@ -0,0 +1,46 @@
"use client";
import {usePostHog} from "posthog-js/react";
import NextLink from "next/link";
export const NextUIProCallout = () => {
const posthog = usePostHog();
const handleClick = () => {
posthog.capture("NextUI Pro Banner", {
action: "click",
category: "nextui-callout",
});
};
return (
<div className="relative w-full max-w-[12rem] flex flex-col items-center border border-default/60 hover:border-default/90 rounded-xl py-6 px-2 cursor-pointer">
<div>
<p className="leading-[1.025] tracking-tight text-center text-large font-semibold">
Ship&nbsp;
<span className="bg-clip-text text-transparent bg-gradient-to-b from-[#5EA2EF] to-[#0072F5]">
faster
</span>
<br />
with beautiful
<br />
components
</p>
<p className="text-center text-xs mt-2 px-3 font-medium text-default-500 dark:text-default-400 leading-tight">
Discover 210+ stunning components by NextUI
</p>
</div>
<div className="mt-3 w-fit flex group items-center text-foreground hover:shadow-sm relative overflow-hidden rounded-full p-[2px]">
<span className="absolute inset-[-1000%] bg-[conic-gradient(from_90deg_at_50%_50%,#338EF7_0%,#F54180_50%,#338EF7_100%)]" />
<div className="inline-flex h-full w-full cursor-pointer items-center justify-center rounded-full bg-background transition-background p-2.5 text-xs font-medium hover:font-semibold text-foreground backdrop-blur-3xl">
Explore Components
</div>
</div>
<NextLink
className="absolute inset-0 z-[1]"
href="https://nextui.pro/components?utm_source=nextui.org&utm_medium=callout"
onClick={handleClick}
/>
</div>
);
};
+29 -5
View File
@@ -1,16 +1,15 @@
"use client";
import {FC, useEffect, useState} from "react";
import {FC, useEffect, useState, useRef, useMemo, useLayoutEffect} from "react";
import {usePostHog} from "posthog-js/react";
import {ChevronIcon} from "@nextui-org/shared-icons";
import {CollectionBase, Expandable, MultipleSelection, Node, ItemProps} from "@react-types/shared";
import {BaseItem} from "@nextui-org/aria-utils";
import React, {useRef, useMemo} from "react";
import {useFocusRing} from "@react-aria/focus";
import {TreeState, useTreeState} from "@react-stately/tree";
import {useSelectableCollection} from "@react-aria/selection";
import {usePress} from "@react-aria/interactions";
import {clsx, dataAttr} from "@nextui-org/shared-utils";
import {clsx, dataAttr, debounce, isEmpty} from "@nextui-org/shared-utils";
import {
SpacerProps,
Spacer,
@@ -19,7 +18,6 @@ import {
dataFocusVisibleClasses,
} from "@nextui-org/react";
import Link from "next/link";
import {isEmpty} from "@nextui-org/shared-utils";
import {usePathname, useRouter} from "next/navigation";
import {ScrollArea} from "../scroll-area";
@@ -243,6 +241,8 @@ function Tree<T extends object>(props: CollectionBase<T> & Expandable & Multiple
let ref = useRef<HTMLDivElement>(null);
const scrollViewPortRef = useRef<HTMLDivElement>(null);
let keyboardDelegate = useMemo(
// @ts-expect-error
() => new TreeKeyboardDelegate(state.collection, state.disabledKeys),
@@ -255,12 +255,36 @@ function Tree<T extends object>(props: CollectionBase<T> & Expandable & Multiple
keyboardDelegate,
});
/* Handle scroll preservation */
useLayoutEffect(() => {
if (typeof window !== "undefined") {
const savedPosition = sessionStorage.getItem("docsSidebarScrollPosition");
if (savedPosition && scrollViewPortRef.current) {
scrollViewPortRef.current.scrollTop = Number(savedPosition);
}
}
}, []);
const handleScroll = () => {
if (typeof window !== "undefined" && scrollViewPortRef.current) {
sessionStorage.setItem(
"docsSidebarScrollPosition",
scrollViewPortRef.current.scrollTop.toString(),
);
}
};
const debouncedHandleScroll = debounce(handleScroll, 200);
return (
<ScrollArea
ref={ref}
className="h-full max-w-[90%] lg:max-h-[calc(100vh_-_64px)]"
role="tree"
{...collectionProps}
scrollViewPortRef={scrollViewPortRef}
onScroll={debouncedHandleScroll}
>
{[...state.collection].map((item) => {
if (item.type === "section") {
@@ -317,7 +341,7 @@ export const DocsSidebar: FC<DocsSidebarProps> = ({routes, slug, tag, className}
)}
</Tree>
);
}, [routes]);
}, [routes, slug, tag]);
return (
<div
+59 -57
View File
@@ -6,6 +6,8 @@ import {Divider, Spacer} from "@nextui-org/react";
import {ChevronCircleTopLinearIcon} from "@nextui-org/shared-icons";
import scrollIntoView from "scroll-into-view-if-needed";
import {NextUIProCallout} from "./nextui-pro-callout";
import {Heading} from "@/libs/docs/utils";
import {useScrollSpy} from "@/hooks/use-scroll-spy";
import {useScrollPosition} from "@/hooks/use-scroll-position";
@@ -65,64 +67,64 @@ export const DocsToc: FC<DocsTocProps> = ({headings}) => {
}, []);
return (
<div
ref={tocRef}
className={clsx(
"fixed w-full max-w-[12rem] flex flex-col gap-4 text-left pb-28 h-[calc(100vh-121px)] scrollbar-hide overflow-y-scroll",
isProBannerVisible ? "top-32" : "top-20",
)}
style={{
WebkitMaskImage: `linear-gradient(to top, transparent 0%, #000 100px, #000 ${
scrollPosition > 30 ? "90%" : "100%"
}, transparent 100%)`,
}}
>
<p className="text-sm font-medium">On this page</p>
<ul className="scrollbar-hide flex flex-col gap-2">
{headings.map(
(heading, i) =>
heading.level > 1 && (
<li
key={i}
className={clsx(
"transition-colors",
"font-normal",
"flex items-center text-tiny font-normal text-default-500 dark:text-default-300",
"data-[active=true]:text-foreground",
"dark:data-[active=true]:text-foreground",
"before:content-['']",
"before:opacity-0",
"data-[active=true]:before:opacity-100",
"before:transition-opacity",
"before:-ml-3",
"before:absolute",
"before:bg-default-400",
"before:w-1",
"before:h-1",
"before:rounded-full",
paddingLeftByLevel[heading.level],
)}
data-active={activeId == heading.id}
>
<a href={`#${heading.id}`}>{heading.text}</a>
</li>
),
)}
<li
className="mt-2 opacity-0 data-[visible=true]:opacity-100 transition-opacity"
data-visible={activeIndex >= 2}
>
<Divider />
<Spacer y={2} />
<a
className="flex gap-2 items-center text-tiny text-default-500 dark:text-foreground/30 hover:text-foreground/80 pl-4 transition-opacity"
href={`#${firstId}`}
<div className={clsx("fixed", isProBannerVisible ? "top-32" : "top-20")}>
<div
ref={tocRef}
className="w-full max-w-[12rem] max-h-[calc(100vh-500px)] flex flex-col gap-4 text-left pb-16 scrollbar-hide overflow-y-scroll"
style={{
WebkitMaskImage: `linear-gradient(to top, transparent 0%, #000 100px, #000 ${
scrollPosition > 30 ? "90%" : "100%"
}, transparent 100%)`,
}}
>
<p className="text-sm font-medium">On this page</p>
<ul className="scrollbar-hide flex flex-col gap-2">
{headings.map(
(heading, i) =>
heading.level > 1 && (
<li
key={i}
className={clsx(
"transition-colors",
"font-normal",
"flex items-center text-tiny font-normal text-default-500 dark:text-default-300",
"data-[active=true]:text-foreground",
"dark:data-[active=true]:text-foreground",
"before:content-['']",
"before:opacity-0",
"data-[active=true]:before:opacity-100",
"before:transition-opacity",
"before:-ml-3",
"before:absolute",
"before:bg-default-400",
"before:w-1",
"before:h-1",
"before:rounded-full",
paddingLeftByLevel[heading.level],
)}
data-active={activeId == heading.id}
>
<a href={`#${heading.id}`}>{heading.text}</a>
</li>
),
)}
<li
className="mt-2 opacity-0 data-[visible=true]:opacity-100 transition-opacity"
data-visible={activeIndex >= 2}
>
Back to top
<ChevronCircleTopLinearIcon />
</a>
</li>
</ul>
<Divider />
<Spacer y={2} />
<a
className="flex gap-2 items-center text-tiny text-default-500 dark:text-foreground/30 hover:text-foreground/80 pl-4 transition-opacity"
href={`#${firstId}`}
>
Back to top
<ChevronCircleTopLinearIcon />
</a>
</li>
</ul>
</div>
<NextUIProCallout />
</div>
);
};
+18
View File
@@ -423,6 +423,23 @@ const CodeSandboxIcon: React.FC<IconSvgProps> = ({width = "1em", height = "1em",
);
};
const StackblitzIcon: React.FC<IconSvgProps> = ({...props}) => {
return (
<svg
height={16}
viewBox="0 0 1024 1024"
width={16}
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<path
d="M848 359.3H627.7L825.8 109c4.1-5.3.4-13-6.3-13H436c-2.8 0-5.5 1.5-6.9 4L170 547.5c-3.1 5.3.7 12 6.9 12h174.4l-89.4 357.6c-1.9 7.8 7.5 13.3 13.3 7.7L853.5 373c5.2-4.9 1.7-13.7-5.5-13.7M378.2 732.5l60.3-241H281.1l189.6-327.4h224.6L487 427.4h211z"
fill="currentColor"
/>
</svg>
);
};
const JavascriptIcon: React.FC<IconSvgProps> = ({width = "1em", height = "1em", ...props}) => {
return (
<svg
@@ -470,6 +487,7 @@ export {
NewNextJSIcon,
StorybookIcon,
CodeSandboxIcon,
StackblitzIcon,
JavascriptIcon,
TypescriptIcon,
BunIcon,
@@ -72,7 +72,7 @@ export const InstallBanner = () => {
href="/docs/guide/installation"
radius="full"
size="md"
onClick={() => {
onPress={() => {
posthog.capture("InstallBanner - Get Started", {
action: "press",
category: "landing-page",
@@ -91,7 +91,7 @@ export const InstallBanner = () => {
size="md"
startContent={<GithubIcon />}
variant="bordered"
onClick={() => {
onPress={() => {
posthog.capture("InstallBanner - Github", {
action: "press",
category: "landing-page",
+14 -8
View File
@@ -9,6 +9,7 @@ import {cn} from "@nextui-org/react";
interface MarqueeProps {
className?: string;
wrapperClassName?: string;
reverse?: boolean;
shadow?: boolean;
duration?: number;
@@ -20,6 +21,7 @@ interface MarqueeProps {
export const Marquee = ({
className,
wrapperClassName,
reverse,
duration = 40,
shadow = false,
@@ -59,14 +61,18 @@ export const Marquee = ({
}}
>
<div
className={cn("flex w-max items-stretch gap-[--gap]", {
"flex-col": vertical,
"h-full": vertical,
"animate-scrolling-banner": !vertical,
"animate-scrolling-banner-vertical": vertical,
"[animation-direction:reverse]": reverse,
"hover:[animation-play-state:paused]": pauseOnHover,
})}
className={cn(
"flex w-max items-stretch gap-[--gap]",
{
"flex-col": vertical,
"h-full": vertical,
"animate-scrolling-banner": !vertical,
"animate-scrolling-banner-vertical": vertical,
"[animation-direction:reverse]": reverse,
"hover:[animation-play-state:paused]": pauseOnHover,
},
wrapperClassName,
)}
>
{Children.map(children, (child) =>
child && typeof child === "object" && "type" in child ? cloneElement(child) : child,
@@ -1,182 +0,0 @@
"use client";
import {Button, Chip} from "@nextui-org/react";
import {useEffect, useState} from "react";
import {useTheme} from "next-themes";
import {sectionWrapper, title, titleWrapper, subtitle} from "../primitives";
import Marquee from "./marquee";
import {useIsMobile} from "@/hooks/use-media-query";
export const NextUIProSection = () => {
const [mounted, setMounted] = useState(false);
useEffect(() => {
setMounted(true);
}, []);
const isMobile = useIsMobile();
const {theme} = useTheme();
const isDarkMode = theme === "dark";
let imgSrc: string;
if (isDarkMode) {
imgSrc = isMobile
? "/images/nextuipro-section-background@mobile.webp"
: "/images/nextuipro-section-background.webp";
} else {
imgSrc = isMobile
? "/images/nextuipro-section-background-light@mobile.webp"
: "/images/nextuipro-section-background-light.webp";
}
const mobileClassName: string = isDarkMode
? "h-full w-full bg-[radial-gradient(at_40%_80%,_rgba(255,255,255,_0)_5%,_rgba(0,0,0,_0.8)_50%,_rgba(0,0,0,1)_100%)]"
: "h-full w-full bg-[radial-gradient(at_40%_80%,_rgba(0,0,0,_0)_5%,_rgba(255,255,255,_0.8)_50%,_rgba(255,255,255,1)_100%)]";
const webClassName: string = isDarkMode
? "h-full w-full bg-[radial-gradient(at_80%_50%,_rgba(255,255,255,_0)_20%,_rgba(0,0,0,_0.8)_40%,_rgba(0,0,0,1)_100%)]"
: "h-full w-full bg-[radial-gradient(at_80%_50%,_rgba(0,0,0,_0)_20%,_rgba(255,255,255,_0.9)_40%,_rgba(255,255,255,1)_100%)]";
if (!mounted) return null;
const CheckmarkIcon = () => (
<svg fill="none" height="11" viewBox="0 0 13 11" width="13" xmlns="http://www.w3.org/2000/svg">
<path
d="M1 6.4L4.14286 10L12 1"
stroke="#006FEE"
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
/>
</svg>
);
return (
<section className={sectionWrapper({class: "mt-16 lg:mt-44 overflow-hidden"})}>
<div className="flex flex-col gap-8 min-h-[480px]">
<div className="z-30 flex w-screen h-full flex-col items-start justify-center leading-8 pt-4">
<Chip
classNames={{
base: "ml-0.5 transition-colors bg-gradient-to-br from-cyan-600 to-blue-600",
content: "text-tiny font-semibold",
}}
color="primary"
size="sm"
>
PRO
</Chip>
<div className={titleWrapper({class: "mt-2 inline md:block"})}>
<h1 className={title({size: "lg", class: "[text-shadow:_0_3px_0_rgb(0_0_0_/_10%)]"})}>
Ship&nbsp;
</h1>
<h1
className={title({
size: "lg",
color: "blue",
class: "[text-shadow:_0_3px_0_rgb(0_0_0_/_10%)]",
})}
>
faster&nbsp;
</h1>
<h1 className={title({size: "lg", class: "[text-shadow:_0_3px_0_rgb(0_0_0_/_10%)]"})}>
with&nbsp;
</h1>
<div className="flex flex-col sm:flex-row">
<h1 className={title({size: "lg", class: "[text-shadow:_0_3px_0_rgb(0_0_0_/_10%)]"})}>
beautiful&nbsp;
</h1>
<h1 className={title({size: "lg", class: "[text-shadow:_0_3px_0_rgb(0_0_0_/_10%)]"})}>
components
</h1>
</div>
</div>
<p className={subtitle({class: "pr-12 text-foreground-500"})}>
Premade templates of over 210+ beautiful and responsive components, professionally
created by the team behind NextUI.
</p>
<div className="mt-4 text-foreground-600 font-medium">
<div className="flex gap-x-4 items-center">
<CheckmarkIcon />
210+ Components
</div>
<div className="flex gap-x-4 items-center">
<CheckmarkIcon />
Lifetime Access
</div>
<div className="flex gap-x-4 items-center">
<CheckmarkIcon />
Free Updates
</div>
<div className="flex gap-x-4 items-center">
<CheckmarkIcon />
Figma Files Included
</div>
</div>
<div className="mt-4">
<Button
as={"a"}
className="px-6 flex items-center"
color="primary"
href="https://nextui.pro?utm_source=nextui.org&utm_medium=nextui-homepage-section"
rel="noopener noreferrer"
target="_blank"
>
Explore NextUI Pro
<svg
fill="none"
height="21"
viewBox="0 0 20 21"
width="20"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M12.0254 5.44189L17.0837 10.5002L12.0254 15.5586"
stroke="white"
strokeLinecap="round"
strokeLinejoin="round"
strokeMiterlimit="10"
strokeWidth="1.5"
/>
<path
d="M2.91602 10.5H16.941"
stroke="white"
strokeLinecap="round"
strokeLinejoin="round"
strokeMiterlimit="10"
strokeWidth="1.5"
/>
</svg>
</Button>
</div>
</div>
<div className="overflow-hidden">
<Marquee
vertical
className="h-78 hidden md:flex w-screen mt-4 md:absolute md:top-0 md:inset-0 isolate md:max-h-dvh"
duration={isMobile ? 240 : 60}
>
<img
alt="Hero Background"
className="w-full"
height={3255}
loading="lazy"
src={imgSrc}
width={1920}
/>
</Marquee>
<div className="absolute md:hidden inset-0 pointer-events-none top-0 z-20">
<div className={mobileClassName} />
</div>
<div className="absolute hidden md:block md:inset-0 md:pointer-events-none md:top-0 md:z-20">
<div className={webClassName} />
</div>
</div>
</div>
</section>
);
};
@@ -0,0 +1 @@
export {NextUIProSection} from "./nextui-pro-section";
@@ -0,0 +1,32 @@
import {Button} from "@nextui-org/react";
export const NextUIProButton = () => (
<Button
as={"a"}
className="px-6 flex items-center"
color="primary"
href="https://nextui.pro?utm_source=nextui.org&utm_medium=nextui-homepage-section"
rel="noopener noreferrer"
target="_blank"
>
Explore NextUI Pro
<svg fill="none" height="21" viewBox="0 0 20 21" width="20" xmlns="http://www.w3.org/2000/svg">
<path
d="M12.0254 5.44189L17.0837 10.5002L12.0254 15.5586"
stroke="white"
strokeLinecap="round"
strokeLinejoin="round"
strokeMiterlimit="10"
strokeWidth="1.5"
/>
<path
d="M2.91602 10.5H16.941"
stroke="white"
strokeLinecap="round"
strokeLinejoin="round"
strokeMiterlimit="10"
strokeWidth="1.5"
/>
</svg>
</Button>
);
@@ -0,0 +1,14 @@
import {Chip} from "@nextui-org/react";
export const NextUIProChip = () => (
<Chip
classNames={{
base: "ml-0.5 transition-colors bg-gradient-to-br from-cyan-600 to-blue-600",
content: "text-tiny font-semibold",
}}
color="primary"
size="sm"
>
PRO
</Chip>
);
@@ -0,0 +1,32 @@
"use client";
import {useTheme} from "next-themes";
import NextImage from "next/image";
import {useEffect, useState} from "react";
export const NextUIProImage = () => {
const [mounted, setMounted] = useState(false);
const {theme} = useTheme();
const isDarkMode = theme === "dark";
useEffect(() => {
setMounted(true);
}, []);
let imgSrc = isDarkMode
? "https://heroui-assets.nyc3.cdn.digitaloceanspaces.com/images/nextuipro-section-background.webp"
: "https://heroui-assets.nyc3.cdn.digitaloceanspaces.com/images/nextuipro-section-background-light.webp";
if (!mounted) return null;
return (
<NextImage
alt="Hero Background"
className="opacity-0 animate-fadeIn"
height={3255}
quality={100}
src={imgSrc}
width={1920}
/>
);
};
@@ -0,0 +1,105 @@
import {memo} from "react";
import clsx from "clsx";
import {sectionWrapper, title, titleWrapper, subtitle} from "../../primitives";
import Marquee from "../marquee";
import {NextUIProButton} from "./nextui-pro-button";
import {NextUIProChip} from "./nextui-pro-chip";
import {NextUIProImage} from "./nextui-pro-image";
const CheckmarkIcon = memo(() => (
<svg fill="none" height="11" viewBox="0 0 13 11" width="13" xmlns="http://www.w3.org/2000/svg">
<path
d="M1 6.4L4.14286 10L12 1"
stroke="#006FEE"
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
/>
</svg>
));
CheckmarkIcon.displayName = "CheckmarkIcon";
export const NextUIProSection = () => {
return (
<section
className={sectionWrapper({
class: "flex-row items-end relative mt-16 lg:mt-44 overflow-hidden",
})}
>
<div className="flex min-h-[480px]">
<div className="w-full w-full relative z-30 flex h-full flex-col items-start justify-center leading-8 pt-4">
<NextUIProChip />
<div className={titleWrapper({class: "mt-2 inline md:block"})}>
<h1 className={title({size: "lg", class: "[text-shadow:_0_3px_0_rgb(0_0_0_/_10%)]"})}>
Ship&nbsp;
</h1>
<h1
className={title({
size: "lg",
color: "blue",
class: "[text-shadow:_0_3px_0_rgb(0_0_0_/_10%)]",
})}
>
faster&nbsp;
</h1>
<h1 className={title({size: "lg", class: "[text-shadow:_0_3px_0_rgb(0_0_0_/_10%)]"})}>
with&nbsp;
</h1>
<div className="flex flex-col sm:flex-row">
<h1 className={title({size: "lg", class: "[text-shadow:_0_3px_0_rgb(0_0_0_/_10%)]"})}>
beautiful&nbsp;
</h1>
<h1 className={title({size: "lg", class: "[text-shadow:_0_3px_0_rgb(0_0_0_/_10%)]"})}>
components
</h1>
</div>
</div>
<p className={subtitle({class: "pr-12 text-foreground-500"})}>
Premade templates of over 210+ beautiful and responsive components, professionally
created by the team behind NextUI.
</p>
<ul className="mt-4 text-foreground-600 font-medium">
<li className="flex gap-x-4 items-center">
<CheckmarkIcon />
210+ Components
</li>
<li className="flex gap-x-4 items-center">
<CheckmarkIcon />
Lifetime Access
</li>
<li className="flex gap-x-4 items-center">
<CheckmarkIcon />
Free Updates
</li>
<li className="flex gap-x-4 items-center">
<CheckmarkIcon />
Figma Files Included
</li>
</ul>
<div className="mt-4">
<NextUIProButton />
</div>
</div>
</div>
<div className="hidden md:block w-screen">
<Marquee
vertical
className="hidden md:block relative flex overflow-visible items-center min-h-[480px]"
duration={90}
wrapperClassName="absolute md:top-24 -left-[47%] w-[1000px]"
>
<NextUIProImage />
</Marquee>
<div
className={clsx(
"absolute inset-0 pointer-events-none z-20 bg-white dark:bg-black",
"[-webkit-mask-image:radial-gradient(at_70%_50%,_rgba(255,255,255,0)_20%,_rgba(255,255,255,0.8)_40%,_rgba(0,0,0,1)_60%)]",
)}
/>
</div>
</section>
);
};
@@ -17,7 +17,7 @@ export const SponsorItem = ({name, href, logo}: Sponsor) => {
isExternal
className="flex flex-col items-center justify-center"
href={href}
onClick={() => {
onPress={() => {
posthog.capture("Hero - Sponsors", {
name,
action: "click",
+18 -4
View File
@@ -198,16 +198,27 @@ const Link = ({href, children}: {href?: string; children?: React.ReactNode}) =>
disableAnimation={true}
href={href}
{...externalProps}
onClick={handleClick}
onPress={handleClick}
>
{children}
</Components.Link>
);
};
const InlineCodeChip = ({children}: {children?: React.ReactNode}) => {
const InlineCodeChip = ({
children,
className,
}: {
children?: React.ReactNode;
className?: string;
}) => {
return (
<InlineCode className="before:hidden after:hidden text-tiny rounded-md text-default-600 bg-default-100 dark:bg-default-100/80 px-1.5 py-0.5">
<InlineCode
className={clsx(
"before:hidden after:hidden text-tiny rounded-md text-default-600 bg-default-100 dark:bg-default-100/80 px-1.5 py-0.5",
className,
)}
>
{children}
</InlineCode>
);
@@ -218,6 +229,7 @@ interface APITableProps {
attribute: string;
type: string;
description: string;
deprecated?: boolean;
default?: string;
}[];
}
@@ -237,7 +249,9 @@ export const APITable: React.FC<APITableProps> = ({data}) => {
{data.map((item, index) => (
<TableRow key={index} className="[&>td]:px-2 [&>td]:py-1.5 [&>td]:first:pt-4">
<TableCell className="flex items-center gap-1 font-mono text-small whitespace-nowrap">
<InlineCodeChip>{item.attribute}</InlineCodeChip>
<InlineCodeChip className={item.deprecated ? "line-through" : ""}>
{item.attribute}
</InlineCodeChip>
{item.description && (
<>
{/* Desktop tooltip */}
+64 -57
View File
@@ -1,6 +1,6 @@
"use client";
import {useRef, useState, FC, ReactNode, Key} from "react";
import {useRef, useState, FC, ReactNode, Key, useMemo, useCallback} from "react";
import {
link,
Navbar as NextUINavbar,
@@ -94,6 +94,31 @@ export const Navbar: FC<NavbarProps> = ({children, routes, mobileRoutes = [], sl
"/docs/guide/upgrade-to-v2",
];
const navLinkClasses = clsx(
link({color: "foreground"}),
"data-[active=true]:text-primary data-[active=true]:font-semibold",
);
const handleVersionChange = useCallback((key: Key) => {
if (key === "v1") {
const newWindow = window.open("https://v1.nextui.org", "_blank", "noopener,noreferrer");
if (newWindow) newWindow.opener = null;
}
}, []);
const handlePressNavbarItem = useCallback(
(name: string, url: string) => {
posthog.capture("NavbarItem", {
name,
action: "press",
category: "navbar",
data: url,
});
},
[posthog],
);
const searchButton = (
<Button
aria-label="Quick search"
@@ -120,32 +145,47 @@ export const Navbar: FC<NavbarProps> = ({children, routes, mobileRoutes = [], sl
</Button>
);
const versionDropdown = useMemo(() => {
return ref.current ? (
<Dropdown placement="bottom-start" portalContainer={ref.current}>
<AnimatePresence>
{isMounted && (
<motion.div animate={{opacity: 1}} exit={{opacity: 0}} initial={{opacity: 0}}>
<DropdownTrigger>
<Button
className="min-w-[74px] max-w-[74px] hidden font-medium text-default-500 text-xs h-6 w-[74px] py-1 min-w-fit sm:flex gap-0.5 bg-default-400/20 dark:bg-default-500/20"
endContent={<ChevronDownIcon className="text-tiny" />}
radius="full"
size="sm"
variant="flat"
>
v{currentVersion}
</Button>
</DropdownTrigger>
</motion.div>
)}
</AnimatePresence>
<DropdownMenu
aria-label="NextUI versions"
defaultSelectedKeys={["v2"]}
selectionMode="single"
onAction={handleVersionChange}
>
<DropdownItem key="v2">v{currentVersion}</DropdownItem>
<DropdownItem key="v1" endContent={<LinkIcon />}>
v1.0.0
</DropdownItem>
</DropdownMenu>
</Dropdown>
) : (
<div className="w-[74px]" />
);
}, [ref.current, isMounted]);
if (pathname.includes("/examples")) {
return null;
}
const navLinkClasses = clsx(
link({color: "foreground"}),
"data-[active=true]:text-primary data-[active=true]:font-semibold",
);
const handleVersionChange = (key: Key) => {
if (key === "v1") {
const newWindow = window.open("https://v1.nextui.org", "_blank", "noopener,noreferrer");
if (newWindow) newWindow.opener = null;
}
};
const handlePressNavbarItem = (name: string, url: string) => {
posthog.capture("NavbarItem", {
name,
action: "press",
category: "navbar",
data: url,
});
};
return (
<NextUINavbar
ref={ref}
@@ -172,40 +212,7 @@ export const Navbar: FC<NavbarProps> = ({children, routes, mobileRoutes = [], sl
<SmallLogo className="w-6 h-6 md:hidden" />
<LargeLogo className="h-5 md:h-6" />
</NextLink>
{ref.current ? (
<Dropdown placement="bottom-start" portalContainer={ref.current}>
<AnimatePresence>
{isMounted && (
<motion.div animate={{opacity: 1}} exit={{opacity: 0}} initial={{opacity: 0}}>
<DropdownTrigger>
<Button
className="min-w-[74px] max-w-[74px] hidden font-medium text-default-500 text-xs h-6 w-[74px] py-1 min-w-fit sm:flex gap-0.5 bg-default-400/20 dark:bg-default-500/20"
endContent={<ChevronDownIcon className="text-tiny" />}
radius="full"
size="sm"
variant="flat"
>
v{currentVersion}
</Button>
</DropdownTrigger>
</motion.div>
)}
</AnimatePresence>
<DropdownMenu
aria-label="NextUI versions"
defaultSelectedKeys={["v2"]}
selectionMode="single"
onAction={handleVersionChange}
>
<DropdownItem key="v2">v{currentVersion}</DropdownItem>
<DropdownItem key="v1" endContent={<LinkIcon />}>
v1.0.0
</DropdownItem>
</DropdownMenu>
</Dropdown>
) : (
<div className="w-[74px]" />
)}
{versionDropdown}
<Chip
as={NextLink}
className="hidden sm:flex bg-primary-100/50 border-1 hover:bg-primary-100/80 border-primary-200/50 cursor-pointer"
+31
View File
@@ -0,0 +1,31 @@
import {forwardRef} from "react";
import {Button, ButtonProps} from "@nextui-org/react";
import {clsx} from "@nextui-org/shared-utils";
export interface PreviewButtonProps extends ButtonProps {
icon: React.ReactNode;
}
export const PreviewButton = forwardRef<HTMLButtonElement | null, PreviewButtonProps>(
(props, ref) => {
const {icon, className, ...buttonProps} = props;
return (
<Button
ref={ref}
isIconOnly
className={clsx(
"relative z-50 text-zinc-300 top-8 border-1 border-transparent bg-transparent before:bg-white/10 before:content-[''] before:block before:z-[-1] before:absolute before:inset-0 before:backdrop-blur-md before:backdrop-saturate-100 before:rounded-lg",
className,
)}
size="sm"
variant="light"
{...buttonProps}
>
{icon}
</Button>
);
},
);
PreviewButton.displayName = "PreviewButton";
@@ -23,7 +23,7 @@ export const CopyButton = ({code: codeProp}: {code?: string}) => {
content={copied ? "Copied!" : "Copy"}
radius="md"
>
<Button isIconOnly size="sm" title="Copy Code" variant="light" onClick={copyHandler}>
<Button isIconOnly size="sm" title="Copy Code" variant="light" onPress={copyHandler}>
<CopyLinearIcon className="text-white dark:text-zinc-500" height={16} width={16} />
</Button>
</Tooltip>
@@ -3,6 +3,8 @@
import {FC, useRef} from "react";
import {SandpackProvider, SandpackLayout, SandpackPreview} from "@codesandbox/sandpack-react";
import {StackblitzButton} from "../stackblitz-button";
import {SandpackCodeViewer} from "./code-viewer";
import {nextuiTheme} from "./theme";
import {UseSandpackProps, useSandpack} from "./use-sandpack";
@@ -72,6 +74,18 @@ export const Sandpack: FC<SandpackProps> = ({
{showReportBug && <BugReportButton />}
{showCopyCode && <CopyButton />}
{!showPreview && showOpenInCodeSandbox && <CodeSandboxButton />}
{!showPreview && showOpenInCodeSandbox && (
<StackblitzButton
isIconOnly
as="span"
className="dark:text-zinc-500 text-white"
files={files}
size="sm"
title="Open in Stackblitz"
typescriptStrict={typescriptStrict}
variant="light"
/>
)}
</div>
{hasTypescript && sandpackTemplate && (
<LanguageSelector template={sandpackTemplate} onChange={setCurrentTemplate} />
+11 -3
View File
@@ -6,15 +6,23 @@ import {cn} from "@nextui-org/react";
const ScrollArea = React.forwardRef<
React.ElementRef<typeof ScrollAreaPrimitive.Root>,
React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>
React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> & {
scrollViewPortRef?: React.RefObject<HTMLDivElement>;
}
>(({className, children, ...props}, ref) => {
const {onScroll, scrollViewPortRef, ...restProps} = props;
return (
<ScrollAreaPrimitive.Root
ref={ref}
className={cn("relative overflow-hidden", className)}
{...props}
{...restProps}
>
<ScrollAreaPrimitive.Viewport className="h-full w-full rounded-[inherit] pb-28">
<ScrollAreaPrimitive.Viewport
ref={scrollViewPortRef}
className="h-full w-full rounded-[inherit] pb-28"
onScroll={onScroll}
>
{children}
</ScrollAreaPrimitive.Viewport>
<ScrollBar />
@@ -0,0 +1,58 @@
import React, {forwardRef} from "react";
import stackblitzSdk from "@stackblitz/sdk";
import {SandpackFiles} from "@codesandbox/sandpack-react/types";
import {StackblitzIcon} from "./icons";
import {useStackblitz} from "@/hooks/use-stackblitz";
import {Tooltip} from "@/../../packages/components/tooltip/src";
import {Button, ButtonProps} from "@/../../packages/components/button/src";
export interface StackblitzButtonProps extends ButtonProps {
files: SandpackFiles;
typescriptStrict?: boolean;
className?: string;
button?: React.ReactElement;
icon?: React.ReactNode;
}
export const StackblitzButton = forwardRef<HTMLButtonElement, StackblitzButtonProps>(
(props, ref) => {
const {
files,
typescriptStrict = false,
className,
button = <Button />,
icon = (
<StackblitzIcon
data-visible
className="opacity-0 data-[visible=true]:opacity-100 transition-transform-opacity"
/>
),
...rest
} = props;
const {stackblitzPrefillConfig, entryFile} = useStackblitz({
files,
typescriptStrict,
});
return (
<Tooltip closeDelay={0} content="Open in Stackblitz">
{React.cloneElement(button, {
ref,
className,
icon,
onPress: () => {
stackblitzSdk.openProject(stackblitzPrefillConfig, {
openFile: [entryFile],
});
},
children: icon,
...rest,
})}
</Tooltip>
);
},
);
StackblitzButton.displayName = "StackblitzButton";
+4 -4
View File
@@ -1,6 +1,6 @@
{
"stars": { "raw": 22226, "formatted": "22.2K" },
"forks": 1566,
"subscribers": 83,
"openIssues": 406
"stars": { "raw": 22380, "formatted": "22.4K" },
"forks": 1580,
"subscribers": 85,
"openIssues": 428
}
+8 -1
View File
@@ -81,6 +81,13 @@
"title": "Astro",
"keywords": "astro, nextui",
"path": "/docs/frameworks/astro.mdx"
},
{
"key": "laravel",
"title": "Laravel",
"keywords": "laravel, nextui",
"path": "/docs/frameworks/laravel.mdx",
"newPost": true
}
]
},
@@ -515,4 +522,4 @@
]
}
]
}
}
+3 -3
View File
@@ -87,7 +87,7 @@ NextUI version **v2.6.0** comes with 4 new components **Form**, **Drawer**, **In
## Form Component
Built on [React Aria's Form](https://react-spectrum.adobe.com/react-aria/forms.html#forms) component, the [Form](/docs/components/forms) component provides accessible form handling with built-in submission, validation and error management.
Built on [React Aria's Form](https://react-spectrum.adobe.com/react-aria/forms.html#forms) component, the [Form](/docs/components/form) component provides accessible form handling with built-in submission, validation and error management.
<Spacer y={4} />
@@ -313,7 +313,7 @@ function Example() {
- **Form Libraries Support**: Supports popular form libraries like `react-hook-form` and `formik`
- **Accessibility**: Built-in accessibility features including ARIA attributes and keyboard navigation
Check out our [Forms documentation](/docs/components/forms) for a deep dive into all the features and capabilities.
Check out our [Forms documentation](/docs/components/form) for a deep dive into all the features and capabilities.
<Spacer y={4} />
@@ -566,7 +566,7 @@ declare module "@react-types/shared" {
- **Improved Base Path Support**: Better handling of base paths through the new `useHref` prop in `NextUIProvider`
- **Framework-specific Optimizations**: Built-in support for Next.js (both App and Pages Router), React Router, Remix, and TanStack Router
See the [Routing documentation](/docs/guides/routing) for more details.
See the [Routing documentation](/docs/guide/routing) for more details.
<Spacer y={4} />
@@ -0,0 +1,40 @@
import {Button, Form, Input} from "@nextui-org/react";
export default function App() {
const [submitted, setSubmitted] = React.useState(null);
const onSubmit = (e) => {
e.preventDefault();
const data = Object.fromEntries(new FormData(e.currentTarget));
setSubmitted(data);
};
return (
<Form className="w-full max-w-xs" validationBehavior="native" onSubmit={onSubmit}>
<Input
isRequired
errorMessage={({validationDetails, validationErrors}) => {
if (validationDetails.typeMismatch) {
return "Please enter a valid email address";
}
return validationErrors;
}}
label="Email"
labelPlacement="outside"
name="email"
placeholder="Enter your email"
type="email"
/>
<Button color="primary" type="submit">
Submit
</Button>
{submitted && (
<div className="text-small text-default-500">
You submitted: <code>{JSON.stringify(submitted)}</code>
</div>
)}
</Form>
);
}
@@ -0,0 +1,9 @@
import App from "./built-in-validation.raw.jsx?raw";
const react = {
"/App.jsx": App,
};
export default {
...react,
};
@@ -0,0 +1,40 @@
import {Button, Form, Input} from "@nextui-org/react";
export default function App() {
const [submitted, setSubmitted] = React.useState(null);
const onSubmit = (e) => {
e.preventDefault();
const data = Object.fromEntries(new FormData(e.currentTarget));
setSubmitted(data);
};
return (
<Form className="w-full max-w-xs" validationBehavior="native" onSubmit={onSubmit}>
<Input
isRequired
label="Username"
labelPlacement="outside"
name="username"
placeholder="Enter your username"
type="text"
validate={(value) => {
if (value.length < 3) {
return "Username must be at least 3 characters long";
}
return value === "admin" ? "Nice try!" : null;
}}
/>
<Button color="primary" type="submit">
Submit
</Button>
{submitted && (
<div className="text-small text-default-500">
You submitted: <code>{JSON.stringify(submitted)}</code>
</div>
)}
</Form>
);
}
@@ -0,0 +1,9 @@
import App from "./custom-validation.raw.jsx?raw";
const react = {
"/App.jsx": App,
};
export default {
...react,
};
@@ -14,6 +14,10 @@ import startEndContent from "./start-end-content";
import errorMessage from "./error-message";
import regexValidation from "./regex-validation";
import controlled from "./controlled";
import builtInValidation from "./built-in-validation";
import customValidation from "./custom-validation";
import realTimeValidation from "./real-time-validation";
import serverValidation from "./server-validation";
import customStyles from "./custom-styles";
import customImpl from "./custom-impl";
@@ -34,6 +38,10 @@ export const inputContent = {
errorMessage,
regexValidation,
controlled,
builtInValidation,
customValidation,
realTimeValidation,
serverValidation,
customStyles,
customImpl,
};
@@ -0,0 +1,53 @@
import {Button, Form, Input} from "@nextui-org/react";
export default function App() {
const [submitted, setSubmitted] = React.useState(null);
const [password, setPassword] = React.useState("");
const errors = [];
const onSubmit = (e) => {
e.preventDefault();
const data = Object.fromEntries(new FormData(e.currentTarget));
setSubmitted(data);
};
if (password.length < 4) {
errors.push("Password must be 4 characters or more.");
}
if ((password.match(/[A-Z]/g) || []).length < 1) {
errors.push("Password must include at least 1 upper case letter");
}
if ((password.match(/[^a-z0-9]/gi) || []).length < 1) {
errors.push("Password must include at least 1 symbol.");
}
return (
<Form className="w-full max-w-xs" validationBehavior="native" onSubmit={onSubmit}>
<Input
errorMessage={() => (
<ul>
{errors.map((error, i) => (
<li key={i}>{error}</li>
))}
</ul>
)}
isInvalid={errors.length > 0}
label="Password"
labelPlacement="outside"
name="password"
placeholder="Enter your password"
value={password}
onValueChange={setPassword}
/>
<Button color="primary" type="submit">
Submit
</Button>
{submitted && (
<div className="text-small text-default-500">
You submitted: <code>{JSON.stringify(submitted)}</code>
</div>
)}
</Form>
);
}
@@ -0,0 +1,9 @@
import App from "./real-time-validation.raw.jsx?raw";
const react = {
"/App.jsx": App,
};
export default {
...react,
};
@@ -0,0 +1,49 @@
import {Button, Form, Input} from "@nextui-org/react";
export default function App() {
const [isLoading, setIsLoading] = React.useState(false);
const [errors, setErrors] = React.useState({});
const onSubmit = async (e) => {
e.preventDefault();
setIsLoading(true);
const data = Object.fromEntries(new FormData(e.currentTarget));
const result = await callServer(data);
setErrors(result.errors);
setIsLoading(false);
};
return (
<Form
className="w-full max-w-xs"
validationBehavior="native"
validationErrors={errors}
onSubmit={onSubmit}
>
<Input
isRequired
isDisabled={isLoading}
label="Username"
labelPlacement="outside"
name="username"
placeholder="Enter your username"
/>
<Button color="primary" isLoading={isLoading} type="submit">
Submit
</Button>
</Form>
);
}
// Fake server used in this example.
async function callServer(_) {
await new Promise((resolve) => setTimeout(resolve, 500));
return {
errors: {
username: "Sorry, this username is taken.",
},
};
}
@@ -0,0 +1,9 @@
import App from "./server-validation.raw.jsx?raw";
const react = {
"/App.jsx": App,
};
export default {
...react,
};
@@ -11,8 +11,9 @@ import {
export default function App() {
const {isOpen, onOpen, onOpenChange} = useDisclosure();
const targetRef = React.useRef(null);
const {moveProps} = useDraggable({targetRef, canOverflow: true});
const {moveProps} = useDraggable({targetRef, canOverflow: true, isDisabled: !isOpen});
return (
<>
@@ -14,10 +14,10 @@ export default function App() {
"w-6 h-6 border-2 shadow-lg",
"group-data-[hover=true]:border-primary",
//selected
"group-data-[selected=true]:ml-6",
"group-data-[selected=true]:ms-6",
// pressed
"group-data-[pressed=true]:w-7",
"group-data-[selected]:group-data-[pressed]:ml-4",
"group-data-[selected]:group-data-[pressed]:ms-4",
),
}}
>
@@ -9,11 +9,11 @@ import {
Radio,
} from "@nextui-org/react";
const colors = ["default", "primary", "secondary", "success", "warning", "danger"];
export default function App() {
const [selectedColor, setSelectedColor] = React.useState("default");
const colors = ["default", "primary", "secondary", "success", "warning", "danger"];
return (
<div className="flex flex-col gap-3">
<Table
@@ -9,11 +9,11 @@ import {
Radio,
} from "@nextui-org/react";
const colors = ["default", "primary", "secondary", "success", "warning", "danger"];
export default function App() {
const [selectedColor, setSelectedColor] = React.useState("default");
const colors = ["default", "primary", "secondary", "success", "warning", "danger"];
return (
<div className="flex flex-col gap-3">
<Table
@@ -9,11 +9,11 @@ import {
Radio,
} from "@nextui-org/react";
const colors = ["default", "primary", "secondary", "success", "warning", "danger"];
export default function App() {
const [selectedColor, setSelectedColor] = React.useState("default");
const colors = ["default", "primary", "secondary", "success", "warning", "danger"];
return (
<div className="flex flex-col gap-3">
<Table
@@ -306,6 +306,7 @@ building buttons that work well across devices and interaction methods.
},
{
attribute: "onClick",
deprecated: true,
type: "MouseEventHandler",
description: "The native button click event handler (Deprecated) use onPress instead.",
default: "-"
@@ -85,6 +85,7 @@ The `isIndeterminate` prop sets a `Checkbox` to an indeterminate state, overridi
- **base**: Checkbox wrapper, it handles alignment, placement, and general appearance.
- **wrapper**: An inner container that includes styles for relative positioning, flex properties, overflow handling and managing hover and selected states.
- **hiddenInput**: The hidden input element that is used to handle the checkbox state.
- **icon**: Icon within the checkbox, controlling size, visibility, and changes when checked.
- **label**: The text associated with the checkbox.
@@ -129,9 +129,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
}}
/>
@@ -177,9 +177,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
}}
/>
@@ -144,9 +144,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
}}
/>
@@ -192,9 +192,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
}}
/>
@@ -214,9 +214,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
}}
/>
@@ -246,9 +246,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
}}
/>
@@ -161,9 +161,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
}}
/>
@@ -209,9 +209,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
}}
/>
@@ -231,9 +231,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
}}
/>
@@ -256,9 +256,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
}}
/>
@@ -276,9 +276,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.2",
npm: "npm install @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
yarn: "yarn add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
pnpm: "pnpm add @internationalized/date@3.6.0 @react-aria/i18n@3.12.4",
}}
/>
@@ -772,6 +772,7 @@ you to customize each item individually.
},
{
attribute: "onClick",
deprecated: true,
type: "MouseEventHandler",
description: "The native button click event handler (**Deprecated**) use **onPress** instead.",
default: "-"
+1 -1
View File
@@ -67,7 +67,7 @@ The `onSubmit` event will be triggered when a user submits the form with the `En
<CodeDemo title="Validation" files={formContent.serverValidation} />
See the [Forms](/docs/guides/forms) guide to learn more about form validation, including client-side validation, and integration with other frameworks and libraries.
See the [Forms](/docs/guide/forms) guide to learn more about form validation, including client-side validation, and integration with other frameworks and libraries.
### Validation Behavior
@@ -303,6 +303,12 @@ You can customize the styles of the `InputOtp` component using the `classNames`
description: "Allows to set custom class names for the Input slots.",
default: "-"
},
{
attribute: "autoFocus",
type: "boolean",
description: "Whether the element should receive focus on render.",
default: "false"
},
{
attribute: "textAlign",
type: "left | center | right",
@@ -125,6 +125,43 @@ You can use the `value` and `onValueChange` properties to control the input valu
> **Note**: NextUI `Input` also supports native events like `onChange`, useful for form libraries
> such as [Formik](https://formik.org/) and [React Hook Form](https://react-hook-form.com/).
### With Form
`Input` can be used with a `Form` component to leverage form state management. By default, `Form` components use `validationBehavior="aria"`, which will not block form submission if any inputs are invalid. For more on form and validation behaviors, see the [Forms](/docs/guide/forms) guide.
#### Built-in Validation
`Input` supports the following [native HTML constraints](https://developer.mozilla.org/docs/Web/HTML/Constraint_validation):
- `isRequired` indicates that a field must have a value before the form can be submitted.
- `minLength` and `maxLength` specify the minimum and length of text input.
- `pattern` provides a custom regular expression that a text input must conform to.
- `type="email"` and `type="url"` provide built-in validation for email addresses and URLs.
When using native validation, error messages can be customized by passing a function to `errorMessage` and checking the [ValidityState](https://developer.mozilla.org/docs/Web/API/ValidityState) of `validationDetails`.
<CodeDemo title="Built-in Validation" files={inputContent.builtInValidation} />
#### Custom Validation
In addition to built-in constraints, you can provide a function to the `validate` property for custom validation.
<CodeDemo title="Custom Validation" files={inputContent.customValidation} />
#### Realtime Validation
If you want to display validation errors while the user is typing, you can control the field value and use the `isInvalid` prop along with the `errorMessage` prop.
<CodeDemo title="Realtime Validation" files={inputContent.realTimeValidation} />
#### Server Validation
Client-side validation provides immediate feedback, but you should also validate data on the server to ensure accuracy and security.
NextUI allows you to display server-side validation errors by using the `validationErrors` prop in the `Form` component.
This prop should be an object where each key is the field `name` and the value is the error message.
<CodeDemo title="Server Validation" files={inputContent.serverValidation} />
## Slots
- **base**: Input wrapper, it handles alignment, placement, and general appearance.
@@ -274,6 +311,30 @@ In case you need to customize the input even further, you can use the `useInput`
description: "Whether to use native HTML form validation or ARIA validation. When wrapped in a Form component, the default is `aria`. Otherwise, the default is `native`.",
default: "native"
},
{
attribute: "minLength",
type: "number",
description: "The minimum length of the text input.",
default: "-"
},
{
attribute: "maxLength",
type: "number",
description: "The maximum length of the text input.",
default: "-"
},
{
attribute: "pattern",
type: "string",
description: "A regular expression that the input value is checked against.",
default: "-"
},
{
attribute: "type",
type: "text | email | url | password | tel | search | file",
description: "The type of the input.",
default: "text"
},
{
attribute: "startContent",
type: "ReactNode",
@@ -275,6 +275,7 @@ In case you need to customize the link even further, you can use the `useLink` h
},
{
attribute: "onClick",
deprecated: true,
type: "MouseEventHandler",
description: "The native link click event handler (Deprecated) use onPress instead.",
default: "-"
@@ -657,6 +657,7 @@ You can customize the `Listbox` items style by using the `itemClasses` prop and
},
{
attribute: "onClick",
deprecated: true,
type: "MouseEventHandler",
description: "The native button click event handler (Deprecated) use onPress instead.",
default: "-"
@@ -83,6 +83,7 @@ You can use the `value` and `onValueChange` properties to control the radio inpu
- Radio Slots
- **base**: Radio root wrapper, it wraps all elements.
- **wrapper**: Radio wrapper, it wraps the control element.
- **hiddenInput**: The hidden input element that is used to handle the radio state.
- **labelWrapper**: Label and description wrapper.
- **label**: Label slot for the radio.
- **control**: Control element, it is the circle element.
@@ -376,7 +376,6 @@ the popover and listbox components.
- Keyboard support for opening the listbox using the arrow keys, including automatically focusing the first or last item accordingly.
- Typeahead to allow selecting options by typing text, even without opening the listbox.
- Browser autofill integration via a hidden native `<select>` element.
- Support for mobile form navigation via software keyboard.
- Mobile screen reader listbox dismissal support.
<Spacer y={4} />
@@ -79,6 +79,7 @@ You can also add icons to start and end of the switch by using `startContent` an
- **base**: Base slot for the switch. It is the main wrapper.
- **wrapper**: The wrapper of the start icon, end icon and thumb.
- **hiddenInput**: The hidden input element that is used to handle the switch state.
- **thumb**: The thumb element of the switch. It is the circle element.
- **label**: The label slot of the switch.
- **startContent**: The icon slot at the start of the switch.
@@ -0,0 +1,238 @@
---
title: Laravel
description: How to use NextUI with Laravel
---
# Laravel
Requirements:
- [Laravel 11](https://laravel.com/)
- [PHP v8.2](https://www.php.net/)
- [React 18](https://reactjs.org/) or later
- [Tailwind CSS 3.4](https://tailwindcss.com/docs/guides/vite#react) or later
- [Framer Motion 11.9](https://www.framer.com/motion/) or later
------
<CarbonAd/>
To use NextUI in your Laravel project, you need to follow the following steps:
### Using NextUI + Laravel template
If you are starting a new project, you can run one of the following commands to create a Laravel project pre-configured with NextUI:
<PackageManagers
commands={{
npm: 'npx create-laravel@latest --template https://github.com/nextui-org/laravel-template',
yarn: 'yarn create laravel --template https://github.com/nextui-org/laravel-template',
pnpm: 'pnpm create laravel --template https://github.com/nextui-org/laravel-template',
bun: 'bunx create-laravel@latest --template https://github.com/nextui-org/laravel-template',
}}
/>
### Automatic Installation
You can add individual components using the CLI. For example, to add a button component:
```codeBlock bash
nextui add button
```
This command adds the Button component to your project and manages all related dependencies.
You can also add multiple components at once:
```codeBlock bash
nextui add button input
```
Or you can add the main library `@nextui-org/react` by running the following command:
```codeBlock bash
nextui add --all
```
If you leave out the component name, the CLI will prompt you to select the components you want to add.
```codeBlock bash
? Which components would you like to add? - Space to select. Return to submit
Instructions:
↑/↓: Highlight option
←/→/[space]: Toggle selection
[a,b,c]/delete: Filter choices
enter/return: Complete answer
Filtered results for: Enter something to filter
◯ accordion
◯ autocomplete
◯ avatar
◯ badge
◯ breadcrumbs
◉ button
◯ card
◯ checkbox
◯ chip
◯ code
```
You still need to add the provider to your app manually (we are working on automating this step).
```jsx {3,7,9}
// app/providers.tsx
import {NextUIProvider} from '@nextui-org/react'
export function Providers({children}: { children: React.ReactNode }) {
return (
<NextUIProvider>
{children}
</NextUIProvider>
)
}
```
<Spacer y={4} />
```jsx {8,23,25}
// app.tsx or app.jsx
import '../css/app.css';
import './bootstrap';
import { createInertiaApp } from '@inertiajs/react';
import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers';
import { createRoot } from 'react-dom/client';
import {NextUIProvider} from "@nextui-org/react";
const appName = import.meta.env.VITE_APP_NAME || 'Laravel';
createInertiaApp({
title: (title) => `${title} - ${appName}`,
resolve: (name) =>
resolvePageComponent(
`./Pages/${name}.tsx`,
import.meta.glob('./Pages/**/*.tsx'),
),
setup({ el, App, props }) {
const root = createRoot(el);
root.render(
<NextUIProvider>
<App {...props} />
</NextUIProvider>
);
},
progress: {
color: '#4B5563',
},
});
```
### Manual Installation
<Steps>
### Add dependencies
In your Laravel project, run one of the following command to install NextUI:
<PackageManagers
commands={{
npm: 'npm i @nextui-org/react framer-motion',
yarn: 'yarn add @nextui-org/react framer-motion',
pnpm: 'pnpm add @nextui-org/react framer-motion',
bun: "bun add @nextui-org/react framer-motion"
}}
/>
### Hoisted Dependencies Setup
<Blockquote color="primary">
**Note**: This step is only for those who use `pnpm` to install. If you install NextUI using other package managers, you may skip this step.
</Blockquote>
If you are using pnpm, you need to add the following line to your `.npmrc` file to hoist our packages to the root `node_modules`.
```bash
public-hoist-pattern[]=*@nextui-org/*
```
After modifying the `.npmrc` file, you need to run `pnpm install` again to ensure that the dependencies are installed correctly.
### Tailwind CSS Setup
NextUI is built on top of Tailwind CSS, so you need to install Tailwind CSS first. You can follow the official
[installation guide](https://tailwindcss.com/docs/guides/vite#react) to install Tailwind CSS. Then you need to add
the following code to your `tailwind.config.js` file:
<Blockquote color="primary">
**Note**: If you are using pnpm and monorepo architecture, please make sure you are pointing to the ROOT `node_modules`
</Blockquote>
```js {2,8,13-14}
// tailwind.config.js
const { nextui } = require("@nextui-org/react");
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
// ...
"./node_modules/@nextui-org/theme/dist/**/*.{js,ts,jsx,tsx}"
],
theme: {
extend: {},
},
darkMode: "class",
plugins: [nextui()]
}
```
### Provider Setup
After installing NextUI, you need to set up the `NextUIProvider` at the `root` of your application.
Go to the src directory and inside `app.jsx` or `app.tsx`, wrap `NextUIProvider` around App:
```jsx {8,23,25}
// app.tsx or app.jsx
import '../css/app.css';
import './bootstrap';
import { createInertiaApp } from '@inertiajs/react';
import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers';
import { createRoot } from 'react-dom/client';
import {NextUIProvider} from "@nextui-org/react";
const appName = import.meta.env.VITE_APP_NAME || 'Laravel';
createInertiaApp({
title: (title) => `${title} - ${appName}`,
resolve: (name) =>
resolvePageComponent(
`./Pages/${name}.tsx`,
import.meta.glob('./Pages/**/*.tsx'),
),
setup({ el, App, props }) {
const root = createRoot(el);
root.render(
<NextUIProvider>
<App {...props} />
</NextUIProvider>
);
},
progress: {
color: '#4B5563',
},
});
```
</Steps>
<Blockquote
color="warning"
>
Version 2 is only compatible with React 18 or later. If you are using React 17 or earlier, please use <Link href="https://v1.nextui.org/docs/getting-started" isExternal>version 1 of NextUI</Link>.
</Blockquote>
+14 -8
View File
@@ -27,18 +27,23 @@ directly in your React Server Components (RSC).
### NextUI CLI (recommended)
If you are starting a new project, you can use the NextUI CLI to create a new project with NextUI pre-configured:
```bash
npm install -g nextui-cli
```
<Spacer y={4}/>
If you are starting a new project, you can use the [NextUI CLI](https://nextui.org/docs/guide/cli) to create a new project with NextUI pre-configured:
```bash
nextui init -t app
```
or
<PackageManagers
commands={{
npm: 'npx nextui-cli@latest init -t app',
yarn: 'yarn dlx nextui-cli@latest init -t app',
pnpm: 'pnpm dlx nextui-cli@latest init -t app',
bun: "bunx nextui-cli@latest init -t app"
}}
/>
### create-next-app
If you are starting a new project, you can run one of the following commands to create a Next.js project pre-configured with NextUI:
@@ -47,7 +52,8 @@ If you are starting a new project, you can run one of the following commands to
commands={{
npm: 'npx create-next-app -e https://github.com/nextui-org/next-app-template',
yarn: 'yarn create next-app -e https://github.com/nextui-org/next-app-template',
pnpm: 'pnpm create next-app -e https://github.com/nextui-org/next-app-template'
pnpm: 'pnpm create next-app -e https://github.com/nextui-org/next-app-template',
bun: 'bunx create-next-app -e https://github.com/nextui-org/next-app-template'
}}
/>
+101 -1
View File
@@ -17,9 +17,109 @@ Requirements:
To use NextUI in your Remix project, you need to follow the following steps:
### Using NextUI + Remix template
If you are starting a new project, you can run one of the following commands to create a Remix project pre-configured with NextUI:
<PackageManagers
commands={{
npm: 'npx create-remix@latest --template https://github.com/nextui-org/remix-template',
yarn: 'yarn create remix --template https://github.com/nextui-org/remix-template',
pnpm: 'pnpm create remix --template https://github.com/nextui-org/remix-template',
bun: 'bunx create-remix@latest --template https://github.com/nextui-org/remix-template',
}}
/>
### Automatic Installation
You can add individual components using the CLI. For example, to add a button component:
```codeBlock bash
nextui add button
```
This command adds the Button component to your project and manages all related dependencies.
You can also add multiple components at once:
```codeBlock bash
nextui add button input
```
Or you can add the main library `@nextui-org/react` by running the following command:
```codeBlock bash
nextui add --all
```
If you leave out the component name, the CLI will prompt you to select the components you want to add.
```codeBlock bash
? Which components would you like to add? - Space to select. Return to submit
Instructions:
↑/↓: Highlight option
←/→/[space]: Toggle selection
[a,b,c]/delete: Filter choices
enter/return: Complete answer
Filtered results for: Enter something to filter
◯ accordion
◯ autocomplete
◯ avatar
◯ badge
◯ breadcrumbs
◉ button
◯ card
◯ checkbox
◯ chip
◯ code
```
You still need to add the provider to your app manually (we are working on automating this step).
```jsx {3,7,9}
// app/providers.tsx
import {NextUIProvider} from '@nextui-org/react'
export function Providers({children}: { children: React.ReactNode }) {
return (
<NextUIProvider>
{children}
</NextUIProvider>
)
}
```
<Spacer y={4} />
```jsx {6,10,12,14}
// app/layout.tsx
// globals.css includes @tailwind directives
// adjust the path if necessary
import "@/styles/globals.css";
import {Providers} from "./providers";
export default function RootLayout({children}: { children: React.ReactNode }) {
return (
<html lang="en" className='dark'>
<body>
<Providers>
{children}
</Providers>
</body>
</html>
);
}
```
### Manual Installation
<Steps>
### Installation
### Add dependencies
In your Remix project, run one of the following command to install NextUI:
+120 -1
View File
@@ -18,9 +18,128 @@ Requirements:
To use NextUI in your Vite project, you need to follow the following steps:
### NextUI CLI (recommended)
If you are starting a new project, you can use the [NextUI CLI](https://nextui.org/docs/guide/cli) to create a new project with NextUI pre-configured:
```bash
nextui init -t vite
```
or
<PackageManagers
commands={{
npm: 'npx nextui-cli@latest init -t vite',
yarn: 'yarn dlx nextui-cli@latest init -t vite',
pnpm: 'pnpm dlx nextui-cli@latest init -t vite',
bun: "bunx nextui-cli@latest init -t vite"
}}
/>
### Using NextUI + Vite template
If you are starting a new project, you can run one of the following commands to create a Vite project pre-configured with NextUI:
<PackageManagers
commands={{
npm: 'npx degit https://github.com/nextui-org/vite-template my-vite-app',
yarn: 'yarn dlx degit https://github.com/nextui-org/vite-template my-vite-app',
pnpm: 'pnpm dlx degit https://github.com/nextui-org/vite-template my-vite-app',
bun: 'bunx degit https://github.com/nextui-org/vite-template my-vite-app',
}}
/>
### Automatic Installation
You can add individual components using the CLI. For example, to add a button component:
```codeBlock bash
nextui add button
```
This command adds the Button component to your project and manages all related dependencies.
You can also add multiple components at once:
```codeBlock bash
nextui add button input
```
Or you can add the main library `@nextui-org/react` by running the following command:
```codeBlock bash
nextui add --all
```
If you leave out the component name, the CLI will prompt you to select the components you want to add.
```codeBlock bash
? Which components would you like to add? - Space to select. Return to submit
Instructions:
↑/↓: Highlight option
←/→/[space]: Toggle selection
[a,b,c]/delete: Filter choices
enter/return: Complete answer
Filtered results for: Enter something to filter
◯ accordion
◯ autocomplete
◯ avatar
◯ badge
◯ breadcrumbs
◉ button
◯ card
◯ checkbox
◯ chip
◯ code
```
You still need to add the provider to your app manually (we are working on automating this step).
```jsx {3,7,9}
// app/providers.tsx
import {NextUIProvider} from '@nextui-org/react'
export function Providers({children}: { children: React.ReactNode }) {
return (
<NextUIProvider>
{children}
</NextUIProvider>
)
}
```
<Spacer y={4} />
```jsx {6,10,12,14}
// app/layout.tsx
// globals.css includes @tailwind directives
// adjust the path if necessary
import "@/styles/globals.css";
import {Providers} from "./providers";
export default function RootLayout({children}: { children: React.ReactNode }) {
return (
<html lang="en" className='dark'>
<body>
<Providers>
{children}
</Providers>
</body>
</html>
);
}
```
### Manual Installation
<Steps>
### Installation
### Add dependencies
In your Vite React project, run one of the following command to install NextUI:
+3 -3
View File
@@ -36,7 +36,7 @@ Most fields should have a visible label. In rare exceptions, the `aria-label` or
## Submitting data
How you submit form data depends on your framework, application, and server. By default,**HTML** forms are submitted via a full-page refresh in the browser.
How you submit form data depends on your framework, application, and server. By default, **HTML** forms are submitted via a full-page refresh in the browser.
You can call `preventDefault` in the `onSubmit` event to handle form data submission via an API.
Frameworks like [Next.js](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations#forms), [Remix](https://remix.run/docs/en/main/guides/forms), and [React Router](https://reactrouter.com/en/main/route/form-submission) provide their own ways to handle form submission.
@@ -196,7 +196,7 @@ NextUI supports native HTML constraint validation and allows for custom validati
#### Built-in validation
NextUI form components support [native HTML validation](https://developer.mozilla.org/docs/Web/HTML/Constraint_validation) attributes like `isRequired` and `minLength`.
These constraints are checked by the browser when the user commits changes (e.g., onBlur) or submits the form.
These constraints are checked by the browser when the user commits changes (e.g., on blur) or submits the form.
You can display validation errors with custom styles instead of the browser's default UI.
```tsx {10}
@@ -235,7 +235,7 @@ Supported constraints include:
- `minValue` and `maxValue` specify the minimum and maximum value in a date picker or number field.
- `minLength` and `maxLength` specify the minimum and length of text input.
- `pattern` provides a custom regular expression that a text input must conform to.
- `type="email"` and `type="url"` provide builtin validation for email addresses and URLs.
- `type="email"` and `type="url"` provide built-in validation for email addresses and URLs.
See each component's documentation for more details on the supported validation props.
@@ -9,7 +9,7 @@ Welcome to the NextUI documentation!
<NextImage
priority
src="https://nextui.org/nextui-banner.png"
src="https://heroui-assets.nyc3.cdn.digitaloceanspaces.com/images/nextui-banner.jpeg"
quality={100}
width={700}
height={350}
+88
View File
@@ -0,0 +1,88 @@
import {Project} from "@stackblitz/sdk";
import {SandpackFiles} from "@codesandbox/sandpack-react/types";
import {mapKeys, omit} from "@/../../packages/utilities/shared-utils/src";
import {useSandpack} from "@/components/sandpack/use-sandpack";
export interface UseSandpackProps {
files: SandpackFiles;
typescriptStrict?: boolean;
}
const viteConfig = `import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react()],
});
`;
function transformSandpackFiles(files: SandpackFiles) {
return Object.fromEntries(
Object.entries(files).map(([key, value]) => [
key,
typeof value === "string" ? value : value.code,
]),
);
}
export function useStackblitz(props: UseSandpackProps) {
const {files, typescriptStrict = false} = props;
const {
customSetup,
files: filesData,
entryFile,
} = useSandpack({
files: transformSandpackFiles(files),
typescriptStrict,
});
const transformFiles = mapKeys(filesData, (_, key) => key.replace(/^\//, ""));
const dependencies = {...customSetup.dependencies, ...customSetup.devDependencies};
const packageJson = `{
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"react": "18.3.1",
"react-dom": "18.3.1",
${Object.entries(omit(dependencies as any, ["react", "react-dom"]))
.map(([key, value]) => `"${key}": "${value}"`)
.join(",\n ")}
},
"devDependencies": {
"@vitejs/plugin-react": "4.3.4",
"vite": "6.0.6",
"autoprefixer": "10.4.20",
"postcss": "8.4.49",
"tailwindcss": "3.4.17"
},
"main": "/index.jsx"
}`;
const stackblitzPrefillConfig: Project = {
files: {
...transformSandpackFiles(transformFiles),
"vite.config.js": viteConfig,
"package.json": packageJson,
},
dependencies,
title: "NextUI",
template: "node",
};
const findEntryFile = Object.keys(stackblitzPrefillConfig.files).find((key) =>
key.includes("App"),
);
return {
entryFile: findEntryFile ?? entryFile,
stackblitzPrefillConfig,
};
}
+4 -16
View File
@@ -34,24 +34,12 @@ const nextConfig = {
protocol: "https",
hostname: "nextui.org",
},
{
protocol: "https",
hostname: "heroui-assets.nyc3.cdn.digitaloceanspaces.com",
},
],
},
rewrites: async () => {
return [
{
destination: "https://us-assets.i.posthog.com/static/:path*",
source: "/ingest/static/:path*",
},
{
destination: "https://us.i.posthog.com/:path*",
source: "/ingest/:path*",
},
{
destination: "https://us.i.posthog.com/decide",
source: "/ingest/decide",
},
];
},
};
module.exports = withContentlayer(nextConfig);
+4 -2
View File
@@ -52,8 +52,10 @@
"@react-stately/layout": "4.1.0",
"@react-stately/tree": "3.8.6",
"@rehooks/local-storage": "^2.4.5",
"@tanstack/react-virtual": "3.10.9",
"@stackblitz/sdk": "^1.11.0",
"@tanstack/react-virtual": "3.11.2",
"canvas-confetti": "^1.9.2",
"clsx": "^1.2.1",
"cmdk": "^0.2.0",
"color2k": "2.0.3",
"contentlayer2": "0.5.3",
@@ -72,7 +74,7 @@
"next-themes": "0.4.3",
"nprogress": "^0.2.0",
"parse-numeric-range": "1.2.0",
"posthog-js": "1.184.1",
"posthog-js": "1.197.0",
"prism-react-renderer": "^1.2.1",
"querystring": "^0.2.1",
"react": "18.2.0",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 404 KiB

After

Width:  |  Height:  |  Size: 262 KiB

+1 -1
View File
@@ -91,7 +91,7 @@ z-index: 0;
}
.step:before {
@apply absolute w-7 h-7 bg-default-100 rounded-full font-medium text-center text-base inline-flex items-center justify-center -indent-px;
@apply absolute w-7 h-7 border-1 border-default-200 bg-default-100 rounded-full font-semibold text-center text-base inline-flex items-center justify-center -indent-px;
@apply ml-[-41px];
content: counter(step);
}
+5
View File
@@ -327,6 +327,10 @@ module.exports = {
from: {transform: "translateY(0)"},
to: {transform: "translateY(calc(-50% - var(--gap)/2))"},
},
fadeIn: {
"0%": { opacity: 0 },
"100%": { opacity: 1 },
},
},
animation: {
heartbeat: "heartbeat 1s ease-in-out infinite",
@@ -336,6 +340,7 @@ module.exports = {
"text-gradient": "text-gradient 4s linear 0s infinite normal forwards running",
"scrolling-banner": "scrolling-banner var(--duration) linear infinite",
"scrolling-banner-vertical": "scrolling-banner-vertical var(--duration) linear infinite",
fadeIn: "fadeIn 0.5s ease-in-out forwards",
},
maxWidth: {
"8xl": "90rem", // 1440px
@@ -1,5 +1,33 @@
# @nextui-org/accordion
## 2.2.7
### Patch Changes
- Updated dependencies [[`e7ff673`](https://github.com/nextui-org/nextui/commit/e7ff6730d7e891f1e9e3ca232b1faaebc5aedef2)]:
- @nextui-org/react-utils@2.1.3
- @nextui-org/divider@2.2.5
- @nextui-org/aria-utils@2.2.7
- @nextui-org/framer-utils@2.1.6
## 2.2.6
### Patch Changes
- Updated dependencies [[`77206bc`](https://github.com/nextui-org/nextui/commit/77206bc62596894d038b9715e40b361fec286c10), [`5f388fc`](https://github.com/nextui-org/nextui/commit/5f388fc68c7db7f852432e73386686d919d44d31)]:
- @nextui-org/shared-utils@2.1.2
- @nextui-org/divider@2.2.5
- @nextui-org/aria-utils@2.2.6
- @nextui-org/framer-utils@2.1.5
- @nextui-org/react-utils@2.1.2
## 2.2.5
### Patch Changes
- Updated dependencies [[`78c0928`](https://github.com/nextui-org/nextui/commit/78c09280e30113bd648057ad64ad6198d1e5d58f)]:
- @nextui-org/aria-utils@2.2.5
## 2.2.4
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@nextui-org/accordion",
"version": "2.2.4",
"version": "2.2.7",
"description": "Collapse display a list of high-level options that can expand/collapse to reveal more information.",
"keywords": [
"react",
+46
View File
@@ -1,5 +1,51 @@
# @nextui-org/alert
## 2.2.9
### Patch Changes
- [#4447](https://github.com/nextui-org/nextui/pull/4447) [`a83388a`](https://github.com/nextui-org/nextui/commit/a83388aaf4521f0ed8dfed99a54998156df1868b) Thanks [@wingkwong](https://github.com/wingkwong)! - mark description prop as optional (#4445)
- Updated dependencies [[`e7ff673`](https://github.com/nextui-org/nextui/commit/e7ff6730d7e891f1e9e3ca232b1faaebc5aedef2)]:
- @nextui-org/react-utils@2.1.3
- @nextui-org/button@2.2.9
## 2.2.8
### Patch Changes
- [#4383](https://github.com/nextui-org/nextui/pull/4383) [`e15ef62`](https://github.com/nextui-org/nextui/commit/e15ef62b6ccabc5aef2790c6f97d7457f204be92) Thanks [@jrgarciadev](https://github.com/jrgarciadev)! - Fix #4382 `hideIconWrapper` property wasn't removing the borded on `Alert` component
- [#4365](https://github.com/nextui-org/nextui/pull/4365) [`5946e90`](https://github.com/nextui-org/nextui/commit/5946e90335c713e361e09927ab459445d707d7e4) Thanks [@wingkwong](https://github.com/wingkwong)! - fix alert slots & variantProps import (#4336)
- [#4354](https://github.com/nextui-org/nextui/pull/4354) [`fa38828`](https://github.com/nextui-org/nextui/commit/fa388283458602cd8e128486323472498a145fa2) Thanks [@wingkwong](https://github.com/wingkwong)! - replace decrepate onClick in Alert
- Updated dependencies [[`77206bc`](https://github.com/nextui-org/nextui/commit/77206bc62596894d038b9715e40b361fec286c10), [`5f388fc`](https://github.com/nextui-org/nextui/commit/5f388fc68c7db7f852432e73386686d919d44d31)]:
- @nextui-org/shared-utils@2.1.2
- @nextui-org/button@2.2.8
- @nextui-org/react-utils@2.1.2
## 2.2.7
### Patch Changes
- Updated dependencies [[`78c0928`](https://github.com/nextui-org/nextui/commit/78c09280e30113bd648057ad64ad6198d1e5d58f)]:
- @nextui-org/button@2.2.7
## 2.2.6
### Patch Changes
- Updated dependencies [[`5598806`](https://github.com/nextui-org/nextui/commit/5598806216166dc9fff36cafd9112412486b747f)]:
- @nextui-org/button@2.2.6
## 2.2.5
### Patch Changes
- Updated dependencies [[`dfefdd6`](https://github.com/nextui-org/nextui/commit/dfefdd6250eb81ae653e611a8dff12b2ae29a09c)]:
- @nextui-org/button@2.2.5
## 2.2.4
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@nextui-org/alert",
"version": "2.2.4",
"version": "2.2.9",
"description": "Alerts are temporary notifications that provide concise feedback about an action or event.",
"keywords": [
"alert"
+2 -2
View File
@@ -24,7 +24,7 @@ const iconMap = {
export type AlertColor = keyof typeof iconMap;
export interface AlertProps extends Omit<UseAlertProps, "hasDescription"> {}
export interface AlertProps extends Omit<UseAlertProps, "hasContent"> {}
const Alert = forwardRef<"div", AlertProps>((props, ref) => {
const {
@@ -73,7 +73,7 @@ const Alert = forwardRef<"div", AlertProps>((props, ref) => {
aria-label="Close"
radius="full"
variant="light"
onClick={handleClose}
onPress={handleClose}
{...(getCloseButtonProps() as ButtonProps)}
>
<CloseIcon height={20} width={20} />
+4 -5
View File
@@ -1,9 +1,8 @@
import type {ButtonProps} from "@nextui-org/button";
import type {AlertSlots, AlertVariantProps, SlotsToClasses} from "@nextui-org/theme";
import {HTMLNextUIProps, mapPropsVariants, PropGetter} from "@nextui-org/system";
import {AlertSlots, SlotsToClasses} from "@nextui-org/theme";
import {filterDOMProps, ReactRef, useDOMRef} from "@nextui-org/react-utils";
import {AlertVariantProps} from "@nextui-org/theme/src/components/alert";
import {ReactNode, useCallback, useMemo} from "react";
import {mergeProps} from "@react-aria/utils";
import {alert} from "@nextui-org/theme";
@@ -20,9 +19,9 @@ interface Props extends HTMLNextUIProps<"div"> {
*/
title?: string;
/**
* Main body of the alert message
* description of the alert message
*/
description: ReactNode;
description?: ReactNode;
/**
* Icon to be displayed in the alert - overrides the default icon
*/
@@ -125,7 +124,7 @@ export function useAlert(originalProps: UseAlertProps) {
}, [setIsVisible, onClose]);
const slots = useMemo(
() => alert({hasDescription: !isEmpty(description), ...variantProps}),
() => alert({hasContent: !isEmpty(description) || !isEmpty(children), ...variantProps}),
[description, objectToDeps(variantProps)],
);
@@ -189,7 +189,7 @@ const CustomStylesTemplate = (args) => {
color={color}
title="The documents you requested are ready to be viewed"
>
<div className="flex items-center gap-1 mt-3">
<div className="flex items-center gap-1">
<Button
className="bg-background text-default-700 font-medium border-1 shadow-small"
size="sm"
@@ -226,6 +226,14 @@ export const WithDescription = {
},
};
export const WithoutIconWrapper = {
render: Template,
args: {
...defaultProps,
hideIconWrapper: true,
},
};
export const Color = {
render: ColorTemplate,
args: {
@@ -1,5 +1,83 @@
# @nextui-org/autocomplete
## 2.3.9
### Patch Changes
- [#4458](https://github.com/nextui-org/nextui/pull/4458) [`7c2bc4a`](https://github.com/nextui-org/nextui/commit/7c2bc4a18ef01424c7ff464cad3401dd6596e7b3) Thanks [@wingkwong](https://github.com/wingkwong)! - clear autocomplete value when pressing clear button (#4402)
- [#4452](https://github.com/nextui-org/nextui/pull/4452) [`0401f25`](https://github.com/nextui-org/nextui/commit/0401f2548f525fc4194186b54f563cb91c6ccd0c) Thanks [@Peterl561](https://github.com/Peterl561)! - fixed autocomplete validate prop not working after hovering when validation behavior is native
- [#4462](https://github.com/nextui-org/nextui/pull/4462) [`16c57ec`](https://github.com/nextui-org/nextui/commit/16c57ece6467d755645f109b8de810c9063e5665) Thanks [@vinroger](https://github.com/vinroger)! - add support for dataset with section, add support for scrollshadow
- [#4496](https://github.com/nextui-org/nextui/pull/4496) [`0c45fed`](https://github.com/nextui-org/nextui/commit/0c45fed420747b41a4d2a7bb07e9582f6f609287) Thanks [@wingkwong](https://github.com/wingkwong)! - fix missing popover props except content (#4484)
- Updated dependencies [[`d92468a`](https://github.com/nextui-org/nextui/commit/d92468aa1e35d5022c071b5d2674f5bfb6408001), [`33e0418`](https://github.com/nextui-org/nextui/commit/33e0418d08c29f829b00ee3bc41972dfce6a3370), [`16c57ec`](https://github.com/nextui-org/nextui/commit/16c57ece6467d755645f109b8de810c9063e5665), [`e7ff673`](https://github.com/nextui-org/nextui/commit/e7ff6730d7e891f1e9e3ca232b1faaebc5aedef2), [`fb46df2`](https://github.com/nextui-org/nextui/commit/fb46df2430f95cddef0c25fce4639c2078b34f62)]:
- @nextui-org/listbox@2.3.9
- @nextui-org/popover@2.3.9
- @nextui-org/react-utils@2.1.3
- @nextui-org/button@2.2.9
- @nextui-org/form@2.1.8
- @nextui-org/input@2.4.8
- @nextui-org/scroll-shadow@2.3.5
- @nextui-org/spinner@2.2.6
- @nextui-org/aria-utils@2.2.7
## 2.3.8
### Patch Changes
- Updated dependencies [[`b5943db`](https://github.com/nextui-org/nextui/commit/b5943db1fdad3cacba54e10ef828bc24c740f01b), [`9e8a656`](https://github.com/nextui-org/nextui/commit/9e8a656665464152c4d226fa520fc4219eca0a8d), [`77206bc`](https://github.com/nextui-org/nextui/commit/77206bc62596894d038b9715e40b361fec286c10), [`5f388fc`](https://github.com/nextui-org/nextui/commit/5f388fc68c7db7f852432e73386686d919d44d31)]:
- @nextui-org/listbox@2.3.8
- @nextui-org/input@2.4.7
- @nextui-org/shared-utils@2.1.2
- @nextui-org/popover@2.3.8
- @nextui-org/button@2.2.8
- @nextui-org/form@2.1.7
- @nextui-org/scroll-shadow@2.3.4
- @nextui-org/spinner@2.2.5
- @nextui-org/use-aria-button@2.2.4
- @nextui-org/aria-utils@2.2.6
- @nextui-org/react-utils@2.1.2
## 2.3.7
### Patch Changes
- Updated dependencies [[`78c0928`](https://github.com/nextui-org/nextui/commit/78c09280e30113bd648057ad64ad6198d1e5d58f)]:
- @nextui-org/use-aria-button@2.2.3
- @nextui-org/aria-utils@2.2.5
- @nextui-org/listbox@2.3.7
- @nextui-org/button@2.2.7
- @nextui-org/popover@2.3.7
- @nextui-org/form@2.1.6
## 2.3.6
### Patch Changes
- Updated dependencies [[`5598806`](https://github.com/nextui-org/nextui/commit/5598806216166dc9fff36cafd9112412486b747f)]:
- @nextui-org/button@2.2.6
- @nextui-org/listbox@2.3.6
- @nextui-org/form@2.1.6
- @nextui-org/popover@2.3.6
- @nextui-org/input@2.4.6
- @nextui-org/scroll-shadow@2.3.3
- @nextui-org/spinner@2.2.4
## 2.3.5
### Patch Changes
- Updated dependencies [[`11eae5c`](https://github.com/nextui-org/nextui/commit/11eae5cc808e10db07b509f4e06d30441bb1937a), [`dfefdd6`](https://github.com/nextui-org/nextui/commit/dfefdd6250eb81ae653e611a8dff12b2ae29a09c)]:
- @nextui-org/listbox@2.3.5
- @nextui-org/button@2.2.5
- @nextui-org/form@2.1.5
- @nextui-org/popover@2.3.5
- @nextui-org/input@2.4.5
- @nextui-org/scroll-shadow@2.3.3
- @nextui-org/spinner@2.2.4
## 2.3.4
### Patch Changes
@@ -235,6 +235,49 @@ describe("Autocomplete", () => {
expect(autocomplete).toHaveFocus();
});
it("should clear arbitrary value after clicking clear button", async () => {
const wrapper = render(
<Autocomplete aria-label="Favorite Animal" data-testid="autocomplete" label="Favorite Animal">
<AutocompleteItem key="penguin" value="penguin">
Penguin
</AutocompleteItem>
<AutocompleteItem key="zebra" value="zebra">
Zebra
</AutocompleteItem>
<AutocompleteItem key="shark" value="shark">
Shark
</AutocompleteItem>
</Autocomplete>,
);
const autocomplete = wrapper.getByTestId("autocomplete");
// open the select listbox
await user.click(autocomplete);
// assert that the autocomplete listbox is open
expect(autocomplete).toHaveAttribute("aria-expanded", "true");
await user.keyboard("pe");
const {container} = wrapper;
const clearButton = container.querySelector(
"[data-slot='inner-wrapper'] button:nth-of-type(1)",
)!;
expect(clearButton).not.toBeNull();
// click the clear button
await user.click(clearButton);
// assert that the input has empty value
expect(autocomplete).toHaveValue("");
// assert that input is focused
expect(autocomplete).toHaveFocus();
});
it("should keep the ListBox open after clicking clear button", async () => {
const wrapper = render(
<Autocomplete aria-label="Favorite Animal" data-testid="autocomplete" label="Favorite Animal">
@@ -739,6 +782,60 @@ describe("Autocomplete", () => {
expect(input).not.toHaveAttribute("aria-describedby");
expect(input.validity.valid).toBe(true);
});
// this test is to cover a case where hovering over the combobox causes the validation from use-input to overwrite the validation from use-autocomplete if not handled properly
// this causes the first form submit after initial render to always succeed even if the validate function returns an error
it("should work with validate after hovering", async () => {
const onSubmit = jest.fn((e) => {
e.preventDefault();
});
const {getByTestId, findByRole} = render(
<Form validationBehavior="native" onSubmit={onSubmit}>
<AutocompleteExample
data-testid="combobox"
name="animal"
validate={(value) => {
if (!value?.selectedKey) {
return "Please select an animal";
}
}}
validationBehavior="native"
/>
<button data-testid="submit" type="submit">
Submit
</button>
</Form>,
);
const combobox = getByTestId("combobox") as HTMLInputElement;
const submit = getByTestId("submit");
expect(combobox).not.toHaveAttribute("aria-describedby");
expect(combobox.validity.valid).toBe(false);
await user.hover(combobox);
await user.click(submit);
expect(onSubmit).toHaveBeenCalledTimes(0);
expect(combobox).toHaveAttribute("aria-describedby");
expect(
document.getElementById(combobox.getAttribute("aria-describedby")!),
).toHaveTextContent("Please select an animal");
await user.click(combobox);
await user.keyboard("pe");
const listbox = await findByRole("listbox");
const items = within(listbox).getAllByRole("option");
await user.click(items[0]);
expect(combobox).toHaveAttribute("aria-describedby");
await user.click(submit);
expect(onSubmit).toHaveBeenCalledTimes(1);
expect(combobox).not.toHaveAttribute("aria-describedby");
});
});
describe("validationBehavior=aria", () => {
@@ -1,6 +1,6 @@
{
"name": "@nextui-org/autocomplete",
"version": "2.3.4",
"version": "2.3.9",
"description": "An autocomplete combines a text input with a listbox, allowing users to filter a list of options to items matching a query.",
"keywords": [
"autocomplete"
@@ -418,13 +418,9 @@ export function useAutocomplete<T extends object>(originalProps: UseAutocomplete
onPress: (e: PressEvent) => {
slotsProps.clearButtonProps?.onPress?.(e);
if (state.selectedItem) {
state.setInputValue("");
state.setSelectedKey(null);
} else {
if (allowsCustomValue) {
state.setInputValue("");
}
}
state.setInputValue("");
state.open();
},
"data-visible": !!state.selectedItem || state.inputValue?.length > 0,
@@ -433,12 +429,19 @@ export function useAutocomplete<T extends object>(originalProps: UseAutocomplete
}),
} as ButtonProps);
// prevent use-input's useFormValidation hook from overwriting use-autocomplete's useFormValidation hook when there are uncommitted validation errors
// see https://github.com/nextui-org/nextui/pull/4452
const hasUncommittedValidation =
validationBehavior === "native" &&
state.displayValidation.isInvalid === false &&
state.realtimeValidation.isInvalid === true;
const getInputProps = () =>
({
...otherProps,
...inputProps,
...slotsProps.inputProps,
isInvalid,
isInvalid: hasUncommittedValidation ? undefined : isInvalid,
validationBehavior,
errorMessage:
typeof errorMessage === "function"
@@ -461,6 +464,7 @@ export function useAutocomplete<T extends object>(originalProps: UseAutocomplete
itemHeight,
}
: undefined,
scrollShadowProps: slotsProps.scrollShadowProps,
...mergeProps(slotsProps.listboxProps, listBoxProps, {
shouldHighlightOnFocus: true,
}),
@@ -478,6 +482,7 @@ export function useAutocomplete<T extends object>(originalProps: UseAutocomplete
triggerType: "listbox",
...popoverProps,
classNames: {
...slotsProps.popoverProps?.classNames,
content: slots.popoverContent({
class: clsx(
classNames?.popoverContent,

Some files were not shown because too many files have changed in this diff Show More