11import type { Meta , StoryObj } from "@storybook/react-vite" ;
22import { Button } from "@/components/ui/button" ;
3- import { ChevronRight , Trash , Trash2 } from "lucide-react" ;
4- import * as React from "react" ;
3+ import { Trash2 } from "lucide-react" ;
54
65const meta = {
76 title : "Components/Button" ,
@@ -14,16 +13,12 @@ const meta = {
1413 disabled : {
1514 control : "boolean" ,
1615 } ,
16+ danger : {
17+ control : "boolean" ,
18+ } ,
1719 variant : {
1820 control : "select" ,
19- options : [
20- "primary" ,
21- "critical" ,
22- "outline" ,
23- "ghost" ,
24- "link" ,
25- "criticalInverse" ,
26- ] ,
21+ options : [ "primary" , "outline" , "link" ] ,
2722 } ,
2823
2924 size : {
@@ -41,10 +36,11 @@ export const Default: Story = {
4136 variant : "primary" ,
4237 size : "regular" ,
4338 disabled : false ,
39+ danger : false ,
4440 } ,
4541 render : ( args ) => (
4642 < div
47- className = { `p-6 ${ args . variant === "criticalInverse" ? " bg-red-700" : "bg- white" } flex justify-center items-center rounded-lg p-10 shadow-sm gap-4` }
43+ className = { `bg-white flex justify-center items-center rounded-lg p-10 shadow-sm gap-4` }
4844 >
4945 < Button { ...args } > Save</ Button >
5046 < Button { ...args } >
@@ -71,7 +67,8 @@ export const AllVariants: Story = {
7167 </ div >
7268 </ div >
7369
74- { [ "primary" , "critical" , "outline" , "ghost" ] . map ( ( variant ) => (
70+ { /* normal variants */ }
71+ { ( [ "primary" , "outline" , "link" ] as const ) . map ( ( variant ) => (
7572 < div className = "flex gap-3 items-center py-3 " >
7673 < div className = "w-30" > { variant } </ div >
7774 < div key = { variant } className = "flex gap-3 items-center w-100" >
@@ -110,6 +107,57 @@ export const AllVariants: Story = {
110107 </ div >
111108 </ div >
112109 ) ) }
110+
111+ { /* danger variants */ }
112+ < div className = "flex items-center gap-3 py-3 border-b border-gray-200 mt-8 mb-4" >
113+ < div className = "w-30" > Variant (danger)</ div >
114+ < div className = "min-w-100 text-sm font-medium text-gray-600" >
115+ Without icon
116+ </ div >
117+ < div className = "min-w-100 text-sm font-medium text-gray-600" >
118+ With icon
119+ </ div >
120+ </ div >
121+ { ( [ "primary" , "outline" , "link" ] as const ) . map ( ( variant ) => (
122+ < div className = "flex gap-3 items-center py-3 " >
123+ < div className = "w-30" > { variant } </ div >
124+ < div
125+ key = { `danger-${ variant } ` }
126+ className = "flex gap-3 items-center w-100"
127+ >
128+ < Button variant = { variant } danger >
129+ Button
130+ </ Button >
131+ < Button variant = { variant } danger disabled >
132+ Button
133+ </ Button >
134+ < Button variant = { variant } size = "small" danger >
135+ Button
136+ </ Button >
137+ < Button variant = { variant } size = "small" danger disabled >
138+ Button
139+ </ Button >
140+ </ div >
141+
142+ < div
143+ key = { `danger-icons-${ variant } ` }
144+ className = "flex gap-3 items-center w-100"
145+ >
146+ < Button variant = { variant } danger >
147+ < Trash2 /> Button
148+ </ Button >
149+ < Button variant = { variant } danger disabled >
150+ < Trash2 /> Button
151+ </ Button >
152+ < Button variant = { variant } danger size = "small" >
153+ < Trash2 /> Button
154+ </ Button >
155+ < Button variant = { variant } danger size = "small" disabled >
156+ < Trash2 /> Button
157+ </ Button >
158+ </ div >
159+ </ div >
160+ ) ) }
113161 </ div >
114162 </ div >
115163 ) ,
0 commit comments