mirror of
https://github.com/nextui-org/nextui.git
synced 2025-12-08 19:26:11 +00:00
* chore: org name change (#4596) * chore: update brand name (#4600) * fix(calendar): function components cannot be given refs (#4614) * docs(modal): fix small typos and add clarifying language (#4629) * chore(deps): bump RA versions (#4611) * chore(deps): bump RA versions * chore(deps): bump @internationalized/date * chore(docs): update RA versions * chore(docs): update versions * chore(docs): use string type * chore(deps): update @react-types versions * refactor(docs): undo version change since they will be removed in another PR * feat: tailwind variants upgrade (#4386) * feat: tailwind variants upgrade * chore: restore npmrc * chore: adjust pkgs * fix: versions * fix: lock file * chore(changeset): update package name * chore(deps): use fixed version * fix(test): incorrect package name --------- Co-authored-by: աӄա <wingkwong.code@gmail.com> * feat: add fn win alt keys (#4638) * feat: add new keys * feat: add new keys * chore: update docs & storybook as well --------- Co-authored-by: WK Wong <wingkwong.code@gmail.com> * fix(use-image): load images after props change (#4523) * fix(use-image): load image after props change * chore(changeset): add changeset * refactor(use-image): remove unused props * feat(use-image): add test case * fix(use-image): apply useCallback to load & remove status check * chore(changeset): update package name * feat: global labelPlacement prop (#4346) * feat: adding the support for labelPlacement globally * chore: reafctoring * chore: updating the dependency * chore(changeset): update package name * chore: adding Marcus's suggestions --------- Co-authored-by: աӄա <wingkwong.code@gmail.com> * fix(form): use native as default validation behavior (#4425) * fix(form): use native as default validation behavior * docs(form): delete explicit validationBehavior=native * test(form): adjusted form test validation behaviors * chore(form): adjusted stories with forms * chore(changeset): changed form default validation behavior to native * chore(changeset): removed packages with only test changes * chore(changeset): change to patch * chore(changeset): update package name * refactor(docs): update package name * refactor(docs): update to heroui --------- Co-authored-by: աӄա <wingkwong.code@gmail.com> * feat(spinner): new spinner variants (#4555) * refactor(spinner): add default variant * feature(spinner): add gradient variant * feature(spinner): add dots variant * feature(spinner): add dots-blink variant * feature(spinner): add spinner-bars * chore(spinner): add variants storybook * chore: adding variants to docs * chore: simplyfying the styles and modifying docs * chore: nits * chore: updating the dots and dots-blink animation * chore: nits * chore: adding Marcus' suggestions * chore: adding Marcus's suggestions * chore: adding junior's suggestions --------- Co-authored-by: Maharshi Alpesh <maharshialpesh@gmail.com> * fix: rename wrapper to tab wrapper (#4636) * fix: rename wrapper to tab wrapper * docs: update * docs: update * docs: update * fix: rename wrapper to tab wrapper * refactor: remove feature request from issue template (#4661) * refactor(.github): remove feature request template * refactor(.github): add a link to redirect to discussion (feature request category) * docs(table): include TS examples to show Selection type usage (#4793) * fix(listbox): unexpected scrollShadow on virtualized listbox (#4784) * fix(listbox): add scroll height & scroll top to listbox * fix(use-data-scroll-overflow): handle scrollHeight & scrollTop in virtualization * chore(changeset): add changeset * refactor(theme): replace left & right by start & end to support RTL (#4782) * fix(date-picker): deprecate dateInputClassNames (#4780) * chore(date-picker): add missing slots comments * fix(date-picker): remove dateInputClassNames * fix(date-picker): use classNames instead of dateInputClassNames * chore(docs): add missing attributes * fix(date-picker): use classNames instead of dateInputClassNames * feat(changeset): add changeset * fix(docs): broken type * refactor(navbar): remove dropdown menu width (#4757) * refactor: remove dropdown menu width * refactor: shorter description * refactor: rename instances of NextUI to Hero UI (#4645) * docs: use the correct org for `img.shields.io` license in README * docs: update opencollective org name * docs: use correct org name in site footer * docs: update image urls for heroui pro sections * docs: update laravel installation keywords in route config * docs: add `heroui` tag to `Introducing HeroUI` blog post * fix: use correct names in `plop/components/src` templates * chore: add empty changeset * fix: revert image urls back to `nextuipro.nyc3.cdn.digitaloceanspaces...` * chore: undo footer change * chore: update incorrect brand name * chore(docs): nextui -> heroui --------- Co-authored-by: աӄա <wingkwong.code@gmail.com> * fix(input): missing clear button with file input type (#4599) * fix(theme): sync with input theme on labelPlacement (#4597) * fix(theme): sync with input theme on labelPlacement * chore(select): revise width for labelPlacement * chore(changeset): add changeset * test(input): input interaction tests (#4579) * test(input): user interaction tests * test(input): missing act wrappers --------- Co-authored-by: WK Wong <wingkwong.code@gmail.com> * fix(calendar): rtl navigation (#4565) * fix(calendar): rtl navigation * chore(changeset): fixed reverse behavior of NextButton and PrevButton in the RTL calendar * chore(changeset): update package name * refactor(calendar): prefer isRTL and use className in theme package instead * chore(changeset): add theme package as well * chore(calendar): add min theme package to 2.4.7 --------- Co-authored-by: աӄա <wingkwong.code@gmail.com> * refactor: remove unnecessary className passing to tv and make naming consistent (#4558) * refactor: remove unnecessary className passing to tv * refactor(button): move styles to getButtonProps * refactor: rename classNames to styles to keep the naming consistent * fix: deprecation warning triggered by internal onClick (#4557) * fix(use-aria-link): onClick deprecation warning * fix(use-aria-button): onClick deprecation warning * feat(changeset): add changeset * fix(use-aria-button): incorrect prop name * chore(changeset): update package name * ci: add pkg pr new (#4540) * ci: add pkg pr new * ci: add pkg pr new * chore(workflow): update repo name --------- Co-authored-by: աӄա <wingkwong.code@gmail.com> * chore(docs): remove shouldBlockScroll prop in Tooltip page (#4539) * fix(use-pagination): controlled page after delay (#4536) * fix(use-pagination): add page to dependency for scrollTo * feat(changeset): add changeset * chore(changeset): update package name * fix(tooltip): accessing element.ref was removed in React 19 issue (#4531) * fix(tooltip): accessing element.ref was removed in React 19 issue * chore(changeset): update package name * fix: correctly dismissable default value (#4524) * fix: correctly dismissable default value * fix: correctly dismissable default value * chore(changeset): update package name --------- Co-authored-by: աӄա <wingkwong.code@gmail.com> * fix(theme): input height in innerWrapper in Select (#4512) * fix(select): fix input height #4321 * chore(select): changed package name in changeset to theme * chore(select): updated changeset message * chore(changeset): update package name --------- Co-authored-by: աӄա <wingkwong.code@gmail.com> * fix: inert value in next15 (#4491) * feat: add post install * feat: add postinstall * feat: add postinstall * fix: type * fix: type * fix: next version * chore(changeset): update package name --------- Co-authored-by: աӄա <wingkwong.code@gmail.com> * refactor: remove cursor-hit in hiddenInputClasses (#4474) * refactor: remove cursor-hit in hiddenInputClasses * Create lazy-ants-exercise.md * chore(changeset): update package name --------- Co-authored-by: աӄա <wingkwong.code@gmail.com> * feat(table): virtualization (#4285) * feat: baseline virtualization for table * merge branch canary * fix: table layout * fix: calc header height w layouteffect to offset padding * Merge branch 'canary' into feat/eng-1633-virtualization-for-table * chore: remove unused files and comments * chore: add missing package * feat: add shouldVirtualize conditional to render virtualized-table * feat: update docs for table * feat: use wrapper to support theme styles * chore: add changeset * chore(changeset): update package name * chore(deps): pnpm-lock.yaml * fix(table): outdated package name * chore(changeset): add issue number * fix(deps): keep the version consistent with other components * fix(table): incorrect displayName * refactor(table): use VirtualizedTemplate * chore(deps): bump `@tanstack/react-virtua` * chore(deps): typecheck issue * fix(table): do not use any type * chore: remove auto virtualization --------- Co-authored-by: աӄա <wingkwong.code@gmail.com> Co-authored-by: Junior Garcia <jrgarciadev@gmail.com> * feat(toast): introduce Toast component (#4437) * feat: initial commit * chore: adding the animation * chore: nits * chore: fixes and adding draft1 of stories * chore: adding the docs draft * chore: adding the swiping interaction for toast removal * chore: adding the tests * fix: improving the progress bar logix * chore: refactoring and refining the animations * fix: making the animations compatible with the positons * chore: fixing the styles * chore: modifying the animations * chore: improving the animations * chore: adding the decorator to the story-book * chore: fixing the animations and positions * fix: handle expand region on touch * feat: adding the promises support * chore: updating the styles * chore: improving styles * chore: styles correction * fix: adding junior's suggestions * chore: correcting styles * fix: fixing the timer behavior * chore: adding the spinner to the toast * chore: full width for mobile * chore: modifying styles * chore: fixing the positions on smaller devices * chore: adding story with description * chore: adding credits for sonner * fix: adding junior's suggestions * chore: adding the exit animation * fix: adding junior's suggestions * chore: improving the swipe animations * fix: fixing the swipe animations on touch * chore: adding tests * chore: adding swipe threshild and initial position variable * fix: fixing autoclose in timeout * chore: modifying the docs * chore: fixing the conflict * chore: adding marcus' suggestions * chore: adding the bottom animations * chore: modying docs * chore: removing nextui references * chore: adding info about the provider * chore: updating the docs * chore: versions in package.json * chore: nits * chore: adding junior's suggestions * chore: nits * fix: applying junior's suggestions * chore: adding junior's suggestions * chore: using domMax * fix: adding Marcus's suggestions * chore: add global toast props and custom close icon * chore: adding the defaultTimout provider prop * chore: modifying defaultTimeout * chore: nits * fix: adding Marcus' suggestions * chore: fixing bg * chore(deps): bump RA deps * fix: fixing the color discrepancy due to the timer * chore: moving the kapan ai to the left side * refactor(toast): update author * chore: nit * chore: improvements * chore: updating the solid variant --------- Co-authored-by: Junior Garcia <jrgarciadev@gmail.com> Co-authored-by: WK Wong <wingkwong.code@gmail.com> * fix(docs): correct Tab usage example (#4821) * chore(docs): add note itemHeight for virtualization (#4822) * chore(docs): add note itemHeight for virtualization * fix: format * fix(docs): fix horizontal scrolling example in scroll-shadow (#4820) * refactor: update author in package.json (#4800) * feat(button): export PressEvent for onPress event typing (#4819) * fix(docs): failed to install dependencies in StackBlitz (#4639) * chore(Docs): remove step 2 from "Using use-theme-hook" (#4797) * fix(docs): incorrect code Modal placement (#4652) * docs: update DatePicker example to remove "time" label as time selection is not supported in this example (#4443) * feat(button): export PressEvent for onPress event typing * revert unnecessary changes * chore: format --------- Co-authored-by: աӄա <wingkwong.code@gmail.com> Co-authored-by: Praharsh Bhatt <30700808+praharshbhatt@users.noreply.github.com> * fix(listbox): pass missing press events to usePress (#4812) * fix(listbox): pass missing press events to usePress * feat(listbox): add test case for press event * chore(changeset): add changeset * fix(checkbox): inherit stroke in CheckboxIcon (#4811) * fix: `SelectItem`, `ListboxItem`, and `AutocompleteItem` not to accept `value` props (#4653) * fix(select): `SelectItem` does not accept value props * refactor: do not use the index as `key` * Update .changeset/light-hairs-draw.md * chore: remove unnecessary `value` props * chore: update changeset * refactor: remove unnecessary value prop --------- Co-authored-by: WK Wong <wingkwong.code@gmail.com> * fix: pkg package scope (#4823) * fix: pkg package scope * fix: pkg package scope * fix: pkg package scope * fix(theme): border radius in Table when isMultiSelectable (#4808) * fix(theme): border radius in Table when isMultiSelectable * chore(theme): added changeset (#4807) * chore: removing the kapa ai for toast doc page (#4833) * fix(accordion): add data-slot attributes to accordion (#4832) * fix(accordion): add data-slot attributes to accordion * chore --------- Co-authored-by: Hovannes Markarian <hovannes.markarian@socrate.fr> Co-authored-by: աӄա <wingkwong.code@gmail.com> * chore(docs): update versions (#4836) * docs(themes): adding theme generator (#4626) * chore: adding xylish's contributions + modifying styles * chore: nextui to heroui * chore: colors in theme generator * chore: radiuses, disable-opacity * chore: fixing the configuration box styles * chore: adding the showcase elemtents * chore: modifying styles * chore: adding the fonts * chore: adding the scaling * chore: removing the calendar * feat: adding the border-width * chore: modifying style for mobile * chore: modifying the styles * chore: removing the NextUI references + small bug fix * chore: adding coderabits reviews * fix: borderWidth not getting applied on breadcrumbs and input * chore: rebasing * chore: modifying the styles * chore: updating the styles for the smaller devices * chore: refactoring * chore: improvements * chore: making the fonts workable * chore: making the fonts workable * chore: modifying the swatch according to the theme * chore: adding the default selected template * chore: modifying mobile styles * chore: fixing the popover * chore: nit * fix: fixing the select styles * chore: modifying the mobile styles * chore: modifying the styles * fix: adding junior's suggestions * fix: fixing the breadcrumb * fix: adding junior's suggestions * feat: introduce NumberInput (#4475) * feat(number-field): init structure * feat(deps): add `@nextui-org/button` & `@react-types/button` * feat(theme): export number-field * feat(number-field): storybook init structure * feat(number-field): add NumberFieldHorizontalStepper * feat(number-field): add NumberFieldHorizontalStepper * feat(theme): init number field theme * feat(number-field): number-field draft * refactor(number-field): revise stepper icons * feat(shared-icons): add ChevronLeftIcon * feat(theme): stepperButton styles * feat(theme): number-field styles * fix(number-field): label layout * feat(number-field): vertical stepper wrapper * feat(number-field): use-number-field (wip) * feat(number-field): add data-direction * feat(theme): center the text if it is horizontal stepper * feat(number-field): add HorizontalStepper * feat(number-field): add HideStepper * chore(number-field): revise minValue & defaultValue * feat(docs): init number field structure * fix(theme): outside-left styles * refactor(theme): remove labelPlacement styles * refactor(number-field): remove labelContent logic * refactor(number-field): remove labelPlacement args * feat(number-field): helper text * feat(number-field): revise number field stories * feat(number-field): description * refactor(number-field): revise number field stories * feat(theme): numberFieldLabelClasses * fix(number-field): incorrect button props * fix(number-field): typing issue on stepper buttons * chore(number-field): add aria-label * refactor(number-field): merge props * fix(number-field): pass originalProps instead * chore(number-field): revise Required story args * feat(number-field): add WithStepValue & WithWheelDisabled & revise stories * chore(number-field): add label to Required * feat(docs): number-field doc page * fix(number-field): typing issue * fix(number-field): test cases * fix(number-field): user.keyboard & defaultValue * fix(number-field): should work with defaultValues * chore(number-field): add type: number * chore(number-field): remove hidden related code * fix(number-field): numeric value * chore(changeset): add changeset * feat(deps): add "@nextui-org/number-field" to docs * feat(react): export `@nextui-org/number-field` * feat(changeset): add @nextui-org/react * feat(docs): number-field examples * chore(number-field): use text instead * refactor(number-field): remove unnecessary filled-within * fix(number-field): test case * chore(number-field): remove aria-label for stepper buttons * feat(docs): add incrementAriaLabel & decrementAriaLabel to NumberField * chore(number-field): reorder WithFormatOptions * fix(deps): update number-field's peerDependencies & dependencies * feat(number-field): hidden input for holding numeric vaule * fix(docs): number field title * feat(docs): add format options to number field * chore(docs): revise number field content * chore(number-field): add type to useDOMRef * fix(number-field): clear button * fix(theme): clear button styles * refactor(theme): stepper button styles * chore(number-field): accept stepperButton class * fix(theme): helper wrapper padding * feat(deps): add `@react-aria/i18n` * fix(number-field): use locale from `@react-aria/i18n` * fix(deps): dependency order * fix(docs): incorrect command * chore(docs): remove type=number * chore(theme): add padding to stepper wrapper * fix(number-field): avoid resetting value * fix(number-field): storybook * chore(docs): remove custom impl * chore(docs): update docs code & content * chore(number-field): migrate to heroui * chore(number-field): migrate to heroui * chore(number-field): migrate to heroui * chore: rename to number input * fix(number-input): incorrect import * chore(docs): rename to number input * chore: change to number input * refactor(number-input): change label to amount * fix(docs): use heroui commands * chore(changeset): update package name * refactor(number-input): remove steps * refactor: remove helper text * feat(number-input): label placement * refactor(number-input): rename stepper * fix(theme): isClearable * feat(docs): add label placements * refactor(docs): update number-input content * fix(docs): incorrect file * feat(docs): add lablePlacement * refactor(docs): remove labelPlacement & startContent * refactor(docs): remove helperText * refactor(docs): remove helperText * refactor(docs): revise description * feat(number-input): add data-slot for stepper-wrapper * fix(number-input): test cases * fix(docs): unexpected change * refactor(number-input): update outdated info * fix(docs): coderabbitai comments * refactor: remove validationState * fix(docs): typo * chore(deps): remove unnecessary dep * chore(deps): bump RA versions * chore(number-input): apply latest labelPlacement change * refactor(number-input): update author * refactor(number-input): revise stepper wrapper alignment * refactor(number-input): stepper button styles * chore(number-input): add disableRipple * fix(theme): increase stepper button click area * fix(number-input): sync latest validationBehavior changes * fix(number-input): pass validationBehavior to useAriaNumberInput * chore(docs): add import react * chore(number-input): remove HorizontalStepper story * chore(number-input): enable ripple * fix(number-input): remove number type * refactor(theme): follow input clear button styles * feat(theme): add color for stepperButton * fix(theme): revise stepperButton size for outside & outside-left cases * fix(number-input): typo * chore(docs): update description for wheel * chore(theme): change opacity when pressed * chore(number-input): add disableRipple * Update .changeset/witty-flies-reflect.md * fix(theme): add hover opacity effect --------- Co-authored-by: Junior Garcia <jrgarciadev@gmail.com> * chore(docs): revised tags in doc routes for 2.7.0 (#4777) * chore(docs): remove last version update tags * chore(docs): add updated tag for 2.7.0 * chore(docs): updated table * chore(docs): update search meta * chore(docs): update github info * Merge branch 'canary' into docs/eng-2003 * chore(docs): update routes.json * chore(docs): update meta info * chore: improve theme builder * v2.7.0 * chore: v2.7.0 combined changeset * fix: changeset * fix: peer deps * feat: toast api improved * chore: toast styles improved * fix: toast styles * chore: toast width style changed * fix: changeset release * fix: changeset peerdeps * chore: toast styles improved * refactor(pagination): rtl (#4843) * refactor(pagination): rtl * chore(changeset): add changeset * feat: new spinner variant * fix(docs): popover shouldBlockScroll default value (#4851) * fix(select): select scroll content will close immediately when popover on click (#4849) * chore(select): update select deps * fix(select): select scroll content will close immediately when popover on click * chore(select): add .changeset file * chore(changeset): add issue number --------- Co-authored-by: աӄա <wingkwong.code@gmail.com> * feat(calendar): add firstDayOfWeek (#4852) * feat(calendar): add firstDayOfWeek * feat(docs): add firstDayOfWeek in Calendar docs * feat(calendar): add firstDayOfWeek to range calendar * feat(docs): add firstDayOfWeek to API table * feat: add firstDayOfWeek to date picker & date range picker * feat(docs): add firstDayOfWeek * feat(changeset): add changeset * feat: add firstDayOfWeek option in storybook * feat(docs): export firstDayOfWeek * chore(docs): update title * chore: spinner variants updated * feat: v2.7.0 blog * ci(changesets): version packages (#4601) Co-authored-by: Junior Garcia <jrgarciadev@gmail.com> * chore: manual release --------- Co-authored-by: աӄա <wingkwong.code@gmail.com> Co-authored-by: millmason <jmsoper@protonmail.com> Co-authored-by: winches <329487092@qq.com> Co-authored-by: Maharshi Alpesh <maharshialpesh@gmail.com> Co-authored-by: Peterl561 <76144929+Peterl561@users.noreply.github.com> Co-authored-by: Paul Ebose <49006567+plbstl@users.noreply.github.com> Co-authored-by: Zarin <thesharifi.maruf@gmail.com> Co-authored-by: Shrinidhi Upadhyaya <shrinidhiupadhyaya1195@gmail.com> Co-authored-by: Avan <layouwen@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: Praharsh Bhatt <30700808+praharshbhatt@users.noreply.github.com> Co-authored-by: Adrian Szarapow <63786007+Adee1499@users.noreply.github.com> Co-authored-by: Hova25 <75216176+Hova25@users.noreply.github.com> Co-authored-by: Hovannes Markarian <hovannes.markarian@socrate.fr> Co-authored-by: Tsuki <76603360+sudongyuer@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
562 lines
17 KiB
TypeScript
562 lines
17 KiB
TypeScript
"use client";
|
|
|
|
import {
|
|
RadioGroup,
|
|
Radio,
|
|
Button,
|
|
Accordion,
|
|
Tabs,
|
|
Textarea,
|
|
Input,
|
|
Tab,
|
|
Avatar,
|
|
Select,
|
|
SelectItem,
|
|
AccordionItem,
|
|
Pagination,
|
|
extendVariants,
|
|
PaginationItem,
|
|
} from "@heroui/react";
|
|
import {useFilter} from "@react-aria/i18n";
|
|
import {useEffect, useMemo, useRef, useState} from "react";
|
|
import {useSearchParams} from "next/navigation";
|
|
|
|
import {SearchLinearIcon} from "@/components/icons";
|
|
|
|
const MyRadioGroup = () => {
|
|
const [radio, setRadio] = useState("1");
|
|
|
|
return (
|
|
<RadioGroup value={radio} onValueChange={setRadio}>
|
|
<Radio value="1">Radio 1</Radio>
|
|
<Radio value="2">Radio 2</Radio>
|
|
<Radio value="3">Radio 3</Radio>
|
|
<Radio value="4">Radio 4</Radio>
|
|
<Radio value="5">Radio 5</Radio>
|
|
<Radio value="6">Radio 6</Radio>
|
|
<Radio value="7">Radio 7</Radio>
|
|
<Radio value="8">Radio 8</Radio>
|
|
<Radio value="9">Radio 9</Radio>
|
|
<Radio value="10">Radio 10</Radio>
|
|
<Radio value="11">Radio 11</Radio>
|
|
<Radio value="12">Radio 12</Radio>
|
|
<Radio value="13">Radio 13</Radio>
|
|
<Radio value="14">Radio 14</Radio>
|
|
<Radio value="15">Radio 15</Radio>
|
|
<Radio value="16">Radio 16</Radio>
|
|
<Radio value="17">Radio 17</Radio>
|
|
<Radio value="18">Radio 18</Radio>
|
|
<Radio value="19">Radio 19</Radio>
|
|
<Radio value="20">Radio 20</Radio>
|
|
<Radio value="21">Radio 21</Radio>
|
|
<Radio value="22">Radio 22</Radio>
|
|
<Radio value="23">Radio 23</Radio>
|
|
<Radio value="24">Radio 24</Radio>
|
|
<Radio value="25">Radio 25</Radio>
|
|
<Radio value="26">Radio 26</Radio>
|
|
<Radio value="27">Radio 27</Radio>
|
|
<Radio value="28">Radio 28</Radio>
|
|
<Radio value="29">Radio 29</Radio>
|
|
<Radio value="30">Radio 30</Radio>
|
|
<Radio value="31">Radio 31</Radio>
|
|
<Radio value="32">Radio 32</Radio>
|
|
<Radio value="33">Radio 33</Radio>
|
|
<Radio value="34">Radio 34</Radio>
|
|
<Radio value="35">Radio 35</Radio>
|
|
<Radio value="36">Radio 36</Radio>
|
|
<Radio value="37">Radio 37</Radio>
|
|
<Radio value="38">Radio 38</Radio>
|
|
<Radio value="39">Radio 39</Radio>
|
|
<Radio value="40">Radio 40</Radio>
|
|
<Radio value="41">Radio 41</Radio>
|
|
<Radio value="42">Radio 42</Radio>
|
|
<Radio value="43">Radio 43</Radio>
|
|
<Radio value="44">Radio 44</Radio>
|
|
<Radio value="45">Radio 45</Radio>
|
|
<Radio value="46">Radio 46</Radio>
|
|
<Radio value="47">Radio 47</Radio>
|
|
<Radio value="48">Radio 48</Radio>
|
|
<Radio value="49">Radio 49</Radio>
|
|
<Radio value="50">Radio 50</Radio>
|
|
<Radio value="51">Radio 51</Radio>
|
|
<Radio value="52">Radio 52</Radio>
|
|
<Radio value="53">Radio 53</Radio>
|
|
<Radio value="54">Radio 54</Radio>
|
|
<Radio value="55">Radio 55</Radio>
|
|
<Radio value="56">Radio 56</Radio>
|
|
<Radio value="57">Radio 57</Radio>
|
|
<Radio value="58">Radio 58</Radio>
|
|
<Radio value="59">Radio 59</Radio>
|
|
<Radio value="60">Radio 60</Radio>
|
|
<Radio value="61">Radio 61</Radio>
|
|
<Radio value="62">Radio 62</Radio>
|
|
</RadioGroup>
|
|
);
|
|
};
|
|
|
|
const MyInput = extendVariants(Input, {
|
|
variants: {
|
|
color: {
|
|
stone: {
|
|
inputWrapper: [
|
|
"bg-zinc-100",
|
|
"border",
|
|
"shadow",
|
|
"transition-colors",
|
|
"focus-within:bg-zinc-100",
|
|
"data-[hover=true]:border-zinc-600",
|
|
"data-[hover=true]:bg-zinc-100",
|
|
"group-data-[focus=true]:border-zinc-600",
|
|
// dark theme
|
|
"dark:bg-zinc-900",
|
|
"dark:border-zinc-800",
|
|
"dark:data-[hover=true]:bg-zinc-900",
|
|
"dark:focus-within:bg-zinc-900",
|
|
],
|
|
input: [
|
|
"text-zinc-800",
|
|
"placeholder:text-zinc-600",
|
|
// dark theme
|
|
"dark:text-zinc-400",
|
|
"dark:placeholder:text-zinc-600",
|
|
],
|
|
},
|
|
},
|
|
size: {
|
|
xs: {
|
|
inputWrapper: "h-6 min-h-6 px-1",
|
|
input: "text-tiny",
|
|
},
|
|
md: {
|
|
inputWrapper: "h-10 min-h-10",
|
|
input: "text-small",
|
|
},
|
|
xl: {
|
|
inputWrapper: "h-14 min-h-14",
|
|
input: "text-medium",
|
|
},
|
|
},
|
|
radius: {
|
|
xs: {
|
|
inputWrapper: "rounded",
|
|
},
|
|
sm: {
|
|
inputWrapper: "rounded-[4px]",
|
|
},
|
|
},
|
|
textSize: {
|
|
base: {
|
|
input: "text-base",
|
|
},
|
|
},
|
|
removeLabel: {
|
|
true: {
|
|
label: "hidden",
|
|
},
|
|
false: {},
|
|
},
|
|
},
|
|
defaultVariants: {
|
|
color: "stone",
|
|
textSize: "base",
|
|
removeLabel: true,
|
|
},
|
|
});
|
|
|
|
const MyButton2 = extendVariants(Button, {
|
|
variants: {
|
|
color: {
|
|
foreground:
|
|
"bg-foreground text-background data-[hover=true]:bg-foreground/90 data-[pressed=true]:bg-foreground/80",
|
|
},
|
|
isScalable: {
|
|
true: "scale-125",
|
|
false: "",
|
|
},
|
|
size: {
|
|
xl: "size--xl",
|
|
"2xl": "size--2xl",
|
|
},
|
|
mySize: {
|
|
lg: "px-12 py-6 text-lg",
|
|
xl: "px-12 py-6 text-xl",
|
|
},
|
|
},
|
|
defaultVariants: {
|
|
color: "foreground",
|
|
},
|
|
});
|
|
|
|
const usersData = [
|
|
{
|
|
id: 1,
|
|
name: "Tony Reichert",
|
|
role: "CEO",
|
|
team: "Management",
|
|
status: "active",
|
|
age: "29",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/male/1.png",
|
|
email: "tony.reichert@example.com",
|
|
},
|
|
{
|
|
id: 2,
|
|
name: "Zoey Lang",
|
|
role: "Tech Lead",
|
|
team: "Development",
|
|
status: "paused",
|
|
age: "25",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/female/1.png",
|
|
email: "zoey.lang@example.com",
|
|
},
|
|
{
|
|
id: 3,
|
|
name: "Jane Fisher",
|
|
role: "Sr. Dev",
|
|
team: "Development",
|
|
status: "active",
|
|
age: "22",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/female/2.png",
|
|
email: "jane.fisher@example.com",
|
|
},
|
|
{
|
|
id: 4,
|
|
name: "William Howard",
|
|
role: "C.M.",
|
|
team: "Marketing",
|
|
status: "vacation",
|
|
age: "28",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/male/2.png",
|
|
email: "william.howard@example.com",
|
|
},
|
|
{
|
|
id: 5,
|
|
name: "Kristen Copper",
|
|
role: "S. Manager",
|
|
team: "Sales",
|
|
status: "active",
|
|
age: "24",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/female/3.png",
|
|
email: "kristen.cooper@example.com",
|
|
},
|
|
{
|
|
id: 6,
|
|
name: "Brian Kim",
|
|
role: "P. Manager",
|
|
team: "Management",
|
|
age: "29",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/male/3.png",
|
|
email: "brian.kim@example.com",
|
|
status: "active",
|
|
},
|
|
{
|
|
id: 7,
|
|
name: "Michael Hunt",
|
|
role: "Designer",
|
|
team: "Design",
|
|
status: "paused",
|
|
age: "27",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/male/4.png",
|
|
email: "michael.hunt@example.com",
|
|
},
|
|
{
|
|
id: 8,
|
|
name: "Samantha Brooks",
|
|
role: "HR Manager",
|
|
team: "HR",
|
|
status: "active",
|
|
age: "31",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/female/4.png",
|
|
email: "samantha.brooks@example.com",
|
|
},
|
|
{
|
|
id: 9,
|
|
name: "Frank Harrison",
|
|
role: "F. Manager",
|
|
team: "Finance",
|
|
status: "vacation",
|
|
age: "33",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/male/5.png",
|
|
email: "frank.harrison@example.com",
|
|
},
|
|
{
|
|
id: 10,
|
|
name: "Emma Adams",
|
|
role: "Ops Manager",
|
|
team: "Operations",
|
|
status: "active",
|
|
age: "35",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/female/5.png",
|
|
email: "emma.adams@example.com",
|
|
},
|
|
{
|
|
id: 11,
|
|
name: "Brandon Stevens",
|
|
role: "Jr. Dev",
|
|
team: "Development",
|
|
status: "active",
|
|
age: "22",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/male/7.png",
|
|
email: "brandon.stevens@example.com",
|
|
},
|
|
{
|
|
id: 12,
|
|
name: "Megan Richards",
|
|
role: "P. Manager",
|
|
team: "Product",
|
|
status: "paused",
|
|
age: "28",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/female/7.png",
|
|
email: "megan.richards@example.com",
|
|
},
|
|
{
|
|
id: 13,
|
|
name: "Oliver Scott",
|
|
role: "S. Manager",
|
|
team: "Security",
|
|
status: "active",
|
|
age: "37",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/male/8.png",
|
|
email: "oliver.scott@example.com",
|
|
},
|
|
{
|
|
id: 14,
|
|
name: "Grace Allen",
|
|
role: "M. Specialist",
|
|
team: "Marketing",
|
|
status: "active",
|
|
age: "30",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/female/8.png",
|
|
email: "grace.allen@example.com",
|
|
},
|
|
{
|
|
id: 15,
|
|
name: "Noah Carter",
|
|
role: "IT Specialist",
|
|
team: "I. Technology",
|
|
status: "paused",
|
|
age: "31",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/male/9.png",
|
|
email: "noah.carter@example.com",
|
|
},
|
|
{
|
|
id: 16,
|
|
name: "Ava Perez",
|
|
role: "Manager",
|
|
team: "Sales",
|
|
status: "active",
|
|
age: "29",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/female/9.png",
|
|
email: "ava.perez@example.com",
|
|
},
|
|
{
|
|
id: 17,
|
|
name: "Liam Johnson",
|
|
role: "Data Analyst",
|
|
team: "Analysis",
|
|
status: "active",
|
|
age: "28",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/male/11.png",
|
|
email: "liam.johnson@example.com",
|
|
},
|
|
{
|
|
id: 18,
|
|
name: "Sophia Taylor",
|
|
role: "QA Analyst",
|
|
team: "Testing",
|
|
status: "active",
|
|
age: "27",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/female/11.png",
|
|
email: "sophia.taylor@example.com",
|
|
},
|
|
{
|
|
id: 19,
|
|
name: "Lucas Harris",
|
|
role: "Administrator",
|
|
team: "Information Technology",
|
|
status: "paused",
|
|
age: "32",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/male/12.png",
|
|
email: "lucas.harris@example.com",
|
|
},
|
|
{
|
|
id: 20,
|
|
name: "Mia Robinson",
|
|
role: "Coordinator",
|
|
team: "Operations",
|
|
status: "active",
|
|
age: "26",
|
|
avatar: "https://d2u8k2ocievbld.cloudfront.net/memojis/female/12.png",
|
|
email: "mia.robinson@example.com",
|
|
},
|
|
];
|
|
|
|
export default function HeroUIPerf() {
|
|
const [textA, setTextA] = useState<string>("");
|
|
const [textB, setTextB] = useState<string>("");
|
|
const [textC, setTextC] = useState<string>("");
|
|
const [isOpen, setIsOpen] = useState<boolean>(false);
|
|
const [inputValue, setInputValue] = useState<string>();
|
|
const [selectedKey, setSelectedKey] = useState<string>("");
|
|
|
|
const searchParams = useSearchParams();
|
|
|
|
const page = Number(searchParams.get("page"));
|
|
|
|
let {startsWith} = useFilter({sensitivity: "base"});
|
|
|
|
const filteredItems = inputValue
|
|
? usersData.filter((item) => startsWith(item.name, inputValue))
|
|
: usersData;
|
|
|
|
const inputRef = useRef<HTMLInputElement>(null);
|
|
|
|
useEffect(() => {
|
|
isOpen && inputRef?.current?.focus();
|
|
}, [isOpen]);
|
|
|
|
const handleSelectionChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
|
|
setSelectedKey(e.target.value);
|
|
};
|
|
|
|
const topContent = useMemo(() => {
|
|
return (
|
|
<Input
|
|
ref={inputRef}
|
|
isClearable
|
|
aria-activedescendant={selectedKey}
|
|
aria-expanded={isOpen}
|
|
aria-label="Search user"
|
|
autoComplete="off"
|
|
autoCorrect="off"
|
|
className="z-10 sticky top-1"
|
|
placeholder="Search..."
|
|
spellCheck="false"
|
|
startContent={<SearchLinearIcon className="text-default-400" size={18} strokeWidth="2" />}
|
|
type="text"
|
|
onValueChange={setInputValue}
|
|
/>
|
|
);
|
|
}, [inputRef, selectedKey, isOpen]);
|
|
|
|
return (
|
|
<div className="w-full p-24 gap-4 flex flex-col">
|
|
<Select
|
|
classNames={{
|
|
base: "max-w-xs",
|
|
listboxWrapper: "scroll-pb-6 scroll-pt-28",
|
|
}}
|
|
items={filteredItems}
|
|
label="Assigned to"
|
|
labelPlacement="outside"
|
|
listboxProps={{
|
|
topContent,
|
|
variant: "flat",
|
|
classNames: {
|
|
base: [
|
|
"before:content-[''] before:rounded-t-medium before:fixed before:w-full before:h-14 before:z-10",
|
|
"before:top-0 before:left-0 before:bg-gradient-to-b before:from-default-50",
|
|
],
|
|
},
|
|
}}
|
|
placeholder="Select a user"
|
|
selectedKeys={[selectedKey]}
|
|
showScrollIndicators={false}
|
|
variant="flat"
|
|
onChange={handleSelectionChange}
|
|
onOpenChange={setIsOpen}
|
|
>
|
|
{(item) => (
|
|
<SelectItem key={item.id} textValue={item.name}>
|
|
<div className="flex gap-2 items-center">
|
|
<Avatar alt={item.name} className="flex-shrink-0" size="sm" src={item.avatar} />
|
|
<div className="flex flex-col">
|
|
<span className="text-small">{item.name}</span>
|
|
<span className="text-tiny text-default-400">{item.email}</span>
|
|
</div>
|
|
</div>
|
|
</SelectItem>
|
|
)}
|
|
</Select>
|
|
|
|
<Accordion>
|
|
<AccordionItem key="1" aria-label="Accordion 1" title="Accordion 1">
|
|
Non est aliqua tempor occaecat laborum. Lorem culpa minim irure mollit. Est qui
|
|
reprehenderit commodo magna proident anim ipsum ex. Mollit id amet officia nisi excepteur
|
|
eu. Commodo elit commodo nisi nisi aute eu aliquip aliquip voluptate exercitation ullamco
|
|
ipsum eiusmod veniam. Magna in laborum anim amet anim ex elit aliqua nostrud mollit.
|
|
Pariatur ullamco cillum proident aliqua nostrud. Labore ea veniam cillum duis veniam in
|
|
cupidatat voluptate eu officia. Ut laborum sunt nostrud magna. Ex magna esse cillum enim
|
|
incididunt pariatur qui veniam dolor. Exercitation id culpa et enim mollit duis duis
|
|
aliquip. Magna ullamco est cupidatat laboris irure pariatur aliquip duis aute cillum.
|
|
Officia irure do laboris ea nisi sunt reprehenderit laboris irure. Ex eiusmod in duis
|
|
veniam excepteur. Sunt et et laboris culpa. Mollit excepteur occaecat elit anim officia.
|
|
Laborum commodo proident cupidatat pariatur eu veniam id qui do culpa. Quis consectetur
|
|
adipisicing anim ex ea velit excepteur. Deserunt laboris ex aute sunt laborum tempor ea
|
|
enim dolore ut in. Id aliqua Lorem exercitation qui velit nostrud anim reprehenderit enim.
|
|
Nisi elit fugiat deserunt elit. Sit excepteur ipsum enim excepteur irure irure sint veniam
|
|
elit consequat ea id. Lorem ea qui sunt enim occaecat excepteur officia ex consequat
|
|
nostrud. Tempor sint Lorem est culpa do.
|
|
</AccordionItem>
|
|
<AccordionItem key="2" aria-label="Accordion 2" title="Accordion 2">
|
|
Non est aliqua tempor occaecat laborum. Lorem culpa minim irure mollit. Est qui
|
|
reprehenderit commodo magna proident anim ipsum ex. Mollit id amet officia nisi excepteur
|
|
eu. Commodo elit commodo nisi nisi aute eu aliquip aliquip voluptate exercitation ullamco
|
|
ipsum eiusmod veniam. Magna in laborum anim amet anim ex elit aliqua nostrud mollit.
|
|
Pariatur ullamco cillum proident aliqua nostrud. Labore ea veniam cillum duis veniam in
|
|
cupidatat voluptate eu officia. Ut laborum sunt nostrud magna. Ex magna esse cillum enim
|
|
</AccordionItem>
|
|
<AccordionItem key="3" aria-label="Accordion 3" title="Accordion 3">
|
|
Non est aliqua tempor occaecat laborum. Lorem culpa minim irure mollit. Est qui
|
|
reprehenderit commodo magna proident anim ipsum ex. Mollit id amet officia nisi excepteur
|
|
eu. Commodo elit commodo nisi nisi aute eu aliquip aliquip voluptate exercitation ullamco
|
|
ipsum eiusmod veniam. Magna in laborum anim amet anim ex elit aliqua nostrud mollit.
|
|
Pariatur ullamco cillum proident aliqua nostrud. Labore ea veniam cillum duis veniam in
|
|
</AccordionItem>
|
|
</Accordion>
|
|
<Tabs classNames={{panel: "flex flex-col gap-5"}} variant="underlined">
|
|
<Tab title="Test 1">
|
|
<Textarea defaultValue="ASdasd" label="Default value (uncontrolled)" />
|
|
<Input label="Text B Tab 1" value={textB} onValueChange={setTextB} />
|
|
<Textarea label="Text C Tab 1" value={textC} onValueChange={setTextC} />
|
|
</Tab>
|
|
<Tab title="Test 2">
|
|
<Textarea label="Text B Tab 2" value={textB} onValueChange={setTextB} />
|
|
<Textarea label="Text C Tab 2" value={textC} onValueChange={setTextC} />
|
|
</Tab>
|
|
<Tab title="Test 3">
|
|
<Textarea label="Text B Tab 3" value={textB} onValueChange={setTextB} />
|
|
<Textarea label="Text C Tab 3" value={textC} onValueChange={setTextC} />
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
<h2>Outside</h2>
|
|
<Textarea label="Text A" placeholder="Text A" value={textA} onValueChange={setTextA} />
|
|
<Textarea label="Text B" placeholder="Text B" value={textB} onValueChange={setTextB} />
|
|
<Textarea label="Text C" placeholder="Text C" value={textC} onValueChange={setTextC} />
|
|
|
|
<MyRadioGroup />
|
|
|
|
<MyInput
|
|
isClearable
|
|
placeholder="Search..."
|
|
radius="md"
|
|
size="md"
|
|
startContent={<SearchLinearIcon className="text-zinc-500" size={16} />}
|
|
/>
|
|
|
|
<Button>Click Me!</Button>
|
|
|
|
<MyButton2 color="primary">Press Me!</MyButton2>
|
|
|
|
<Pagination
|
|
showControls
|
|
initialPage={page ?? 1}
|
|
renderItem={({page, ...itemProps}) => {
|
|
return <PaginationItem href={`/examples/perf?page=${page}`} {...itemProps} />;
|
|
}}
|
|
total={10}
|
|
/>
|
|
</div>
|
|
);
|
|
}
|