nextui/apps/docs/content/components/dropdown/custom-items-styles.ts
Junior Garcia baec55029d
Feat/select component (#1313)
* chore(root): menu and select components in progress

* chore(root): merged with main

* feat(menu): stories created

* feat(dropdown): menu migrated to menu component

* feat(select): base implementation in progress

* feat(select): listbox implemented

* feat(select): scroll overflow and auto scroll added

* feat(select): colors & variants improved, inside placement complete, outside pending

* feat(scroll-shadow): new component in progress

* feat(select): scroll shadow integrated

* fix(select): popover implementation, more scroll shadow stories added

* feat(listbox): custom styles example added to stories

* chore(listbox): overflow hidden removed

* feat(select): variants and styles completed

* chore(select): description story added

* feat(select): more stories added

* fix(select): dynamic collections inference, styles improved, more stories added

* fix(select): auto scroll to selected item, scroll padding added

* chore(select): scroll behavior changed to nearest

* feat(select): custom item story added

* fix(select): autoscroll fixed

* feat(select): multi select support added

* feat(select): more examples added, clean-package modified to remove dev packages

* chore(modal): useImperativeHandle removed

* feat(select): render value story improved

* feat(docs): listbox & scroll shadow docs done

* feat(docs): select documentation in progress

* fix: select aria label (#1425)

* feat(docs): more examples added

* feat(docs): select multiple added, storybook favicon changed

* fix: added value to aria label of select (#1431)

* feat(select): more examples added, storybook favicon changed

* fix(popover): dialog role removed

* feat(select): api added, async loading exampled added

* fix: fixed list box on click not working with sr click (#1439)

* feat(select): async items loading support added and documented

* feat(root): input styles updated to be as the select ones

* chore(root): listbox and scroll shadow readme updated

* feat(select): ts examples added, banner updated

* fix(popover): voiceover closes when focusing an item fixed

* chore(select): focus scope removed

* fix(popover): free solo popover added to use without a trigger

* feat(select): blog post added

* chore(docs): search meta generated, multi controlled onchange example fixed

* chore(root): changeset added

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-08-21 12:28:01 +00:00

133 lines
3.7 KiB
TypeScript

const PlusIcon = `export const PlusIcon = (props) => (
<svg
aria-hidden="true"
fill="none"
focusable="false"
height="1em"
role="presentation"
viewBox="0 0 24 24"
width="1em"
{...props}
>
<g
fill="none"
stroke="currentColor"
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={1.5}
>
<path d="M6 12h12" />
<path d="M12 18V6" />
</g>
</svg>
);`;
const App = `import {Dropdown, DropdownTrigger, DropdownMenu, DropdownSection, DropdownItem, Button, User} from "@nextui-org/react";
import {PlusIcon} from "./PlusIcon.jsx";
export default function App() {
return (
<Dropdown
showArrow
radius="sm"
classNames={{
base: "p-0 border-small border-divider bg-background",
arrow: "bg-default-200",
}}
>
<DropdownTrigger>
<Button variant="ghost" disableRipple>Open Menu</Button>
</DropdownTrigger>
<DropdownMenu
aria-label="Custom item styles"
disabledKeys={["profile"]}
className="p-3"
itemClasses={{
base: [
"rounded-md",
"text-default-500",
"transition-opacity",
"data-[hover=true]:text-foreground",
"data-[hover=true]:bg-default-100",
"dark:data-[hover=true]:bg-default-50",
"data-[selectable=true]:focus:bg-default-50",
"data-[pressed=true]:opacity-70",
"data-[focus-visible=true]:ring-default-500",
],
}}
>
<DropdownSection aria-label="Profile & Actions" showDivider>
<DropdownItem
isReadOnly
key="profile"
className="h-14 gap-2"
className="opacity-100"
>
<User
name="Junior Garcia"
description="@jrgarciadev"
classNames={{
name: "text-default-600",
description: "text-default-500",
}}
avatarProps={{
size: "sm",
src: "https://avatars.githubusercontent.com/u/30373425?v=4",
}}
/>
</DropdownItem>
<DropdownItem key="dashboard">
Dashboard
</DropdownItem>
<DropdownItem key="settings">Settings</DropdownItem>
<DropdownItem
key="new_project"
endContent={<PlusIcon className="text-large" />}
>
New Project
</DropdownItem>
</DropdownSection>
<DropdownSection aria-label="Preferences" showDivider>
<DropdownItem key="quick_search" shortcut="⌘K">
Quick search
</DropdownItem>
<DropdownItem
isReadOnly
key="theme"
className="cursor-default"
endContent={
<select
className="z-10 outline-none w-16 py-0.5 rounded-md text-tiny group-data-[hover=true]:border-default-500 border-small border-default-300 dark:border-default-200 bg-transparent text-default-500"
id="theme"
name="theme"
>
<option>System</option>
<option>Dark</option>
<option>Light</option>
</select>
}
>
Theme
</DropdownItem>
</DropdownSection>
<DropdownSection aria-label="Help & Feedback">
<DropdownItem key="help_and_feedback">
Help & Feedback
</DropdownItem>
<DropdownItem key="logout">Log Out</DropdownItem>
</DropdownSection>
</DropdownMenu>
</Dropdown>
);
}`;
const react = {
"/App.jsx": App,
"/PlusIcon.jsx": PlusIcon,
};
export default {
...react,
};