ð¯ Toast 以å€ã®ãããã Radix UI ã³ã³ããŒãã³ãïŒïŒã³ãŒãäŸïŒ
æçš¿æ¥: 2025幎05æ13æ¥
Radix UI ã¯ãã¢ã¯ã»ã·ããªãã£ã«åªããäœã¬ãã« UI ã³ã³ããŒãã³ããæäŸããã©ã€ãã©ãªã§ãããã¶ã€ã³ã«çžãããããšãªããTailwind CSS ãªã©ãšèªç±ã«çµã¿åãããŠãèªåã®ã¢ããªã«æé©ãªã¹ã¿ã€ã«ã§äœ¿ããã®ãç¹åŸŽã§ãã
ç¹ã« Toast
ã³ã³ããŒãã³ãã¯æåã§ããããã以å€ã«ãå®çšçã§æ¡åŒµæ§ã®é«ãã³ã³ããŒãã³ããæ°å€ãååšããŸããæ¬èšäºã§ã¯ãå®éã®ã¢ããªã«ãããã«å°å
¥ã§ãã Radix UI ã®ããããã³ã³ããŒãã³ã3éžãã玹ä»ããŸãã
â ç¹åŸŽ
ã¢ã¯ã»ã·ãã«ãªã¢ãŒãã«
ãã©ãŒã«ã¹ãã©ããã ESC ã¯ããŒãºãªã©èªå察å¿
ãµã³ãã«ã³ãŒãïŒ
import * as Dialog from "@radix-ui/react-dialog";
export function ExampleDialog() {
return (
<Dialog.Root>
<Dialog.Trigger className="btn">èšå®ãéã</Dialog.Trigger>
<Dialog.Portal>
<Dialog.Overlay className="fixed inset-0 bg-black/50" />
<Dialog.Content className="fixed top-1/2 left-1/2 bg-white p-6 rounded shadow transform -translate-x-1/2 -translate-y-1/2">
<Dialog.Title className="text-lg font-bold">èšå®</Dialog.Title>
<Dialog.Description>ããã§ã¢ããªã®èšå®ã倿Žã§ããŸã</Dialog.Description>
<button className="mt-4 btn">ä¿å</button>
<Dialog.Close className="absolute top-2 right-2">Ã</Dialog.Close>
</Dialog.Content>
</Dialog.Portal>
</Dialog.Root>
);
}
â ç¹åŸŽ
ã³ã³ããã¹ãã¡ãã¥ãŒãã¢ã«ãŠã³ãã¡ãã¥ãŒãªã©ã«äŸ¿å©
ããŒããŒãæäœã«å¯Ÿå¿
ãµã³ãã«ã³ãŒãïŒ
import * as DropdownMenu from "@radix-ui/react-dropdown-menu";
export function UserMenu() {
return (
<DropdownMenu.Root>
<DropdownMenu.Trigger className="btn">ã¡ãã¥ãŒ</DropdownMenu.Trigger>
<DropdownMenu.Content className="bg-white p-2 shadow rounded">
<DropdownMenu.Item className="p-2 hover:bg-gray-100">ãããã£ãŒã«</DropdownMenu.Item>
<DropdownMenu.Item className="p-2 hover:bg-gray-100">èšå®</DropdownMenu.Item>
<DropdownMenu.Separator className="my-1 border-t" />
<DropdownMenu.Item className="p-2 text-red-500 hover:bg-red-100">ãã°ã¢ãŠã</DropdownMenu.Item>
</DropdownMenu.Content>
</DropdownMenu.Root>
);
}
â ç¹åŸŽ
ããŒãåãæ¿ããéç¥ãªã³ãªããªã©ã«æé©
ãã¶ã€ã³ãèªç±ã«ã«ã¹ã¿ãã€ãºå¯èœ
ãµã³ãã«ã³ãŒãïŒ
import * as Switch from "@radix-ui/react-switch";
export function NotificationSwitch() {
return (
<label className="flex items-center space-x-2">
<span>éç¥</span>
<Switch.Root className="w-10 h-6 bg-gray-300 rounded-full relative">
<Switch.Thumb className="block w-4 h-4 bg-white rounded-full translate-x-1 transition-transform data-[state=checked]:translate-x-5" />
</Switch.Root>
</label>
);
}
Radix UI ã®åŒ·åãã¯
Toast
ã«éããã以äžã®ãã㪠ã¢ã¯ã»ã·ãã«ã§æè»ãª UI ã³ã³ããŒãã³ããæã£ãŠããŸãïŒ
Dialog
: ãã©ãŒã ãèšå®çšã®ã¢ãŒãã«
DropdownMenu
: ããã²ãŒã·ã§ã³ããŠãŒã¶ãŒã¡ãã¥ãŒ
Switch
: ãã°ã«ã§èšå®å€æŽã«äŸ¿å©ããã㯠WAI-ARIA ã«æºæ ããããŒããŒãæäœã«ãå®å šå¯Ÿå¿ãTailwind CSS ãšçµã¿åãããã°ããã¶ã€ã³ãçµ±äžãããããªããŸãã
Radix UI ãå°å ¥ããããšã§ãã¢ããªã® UI å質ãäžæ®µéåŒãäžããããããšã¯ééããããŸããã
Webã«ããããã¶ã€ã³ã®ã³ã
ãªãªãžãã«ã¢ããªå¥®éèš
èªåæ ç±å€§éžã-æè¬ãäŒããããšæããæžããŸãã-
å人éçºã®ã¢ãããŒã·ã§ã³ç¶æ(TAã®ãããã)
ãŸãããã粟ç¥ã®æ³šæç¹
ã¿ããªçé¢ç®éããïŒãŸãããã粟ç¥ã®ããã
å®è£ ã§ããã¬ãã«ã®ç²åºŠã«ã¿ã¹ã¯ãåè§£ããæ¹æ³
å人éçºã®ã¢ããªéçºã§GitHub Projectsã䜿ã£ããã±ããç®¡çæ¹æ³
ã13ç« ãå®åäœéšèª²é¡ã®ææ³
Codex䜿ã£ãŠã¿ãå ±å
ð ãã°ã€ã³ç¶æ ã®ä¿åæ¹æ³ãåãæ¿ãããããã°ã¢ãŠãã§ããªããªã£ã話
ð ãã°ã€ã³ç¶æ ã®ä¿æããŠãŒã¶ãŒãéžã¹ãããã«ãã話ãLernova éçºèšã