11import type { Meta , StoryObj } from "@storybook/react-vite" ;
22import { Button } from "@/components/ui/button" ;
3- import { Trash2 } from "lucide-react" ;
3+ import { Trash2 , Play } from "lucide-react" ;
4+ import { Badge } from "@/components/ui/badge" ;
45
56const meta = {
67 title : "Components/Button" ,
@@ -18,7 +19,7 @@ const meta = {
1819 } ,
1920 variant : {
2021 control : "select" ,
21- options : [ "primary" , "outline" , "link" ] ,
22+ options : [ "primary" , "outline" , "link" , "ghost" ] ,
2223 } ,
2324
2425 size : {
@@ -53,115 +54,50 @@ export const Default: Story = {
5354
5455export const AllVariants : Story = {
5556 render : ( ) => (
56- < div className = "p-6 min-h-screen" >
57- < div className = " rounded-lg p-6 shadow-sm" >
57+ < div className = "p-6 min-h-screen flex justify-center items-center " >
58+ < div className = " rounded-lg p-6 shadow-sm w-280 " >
5859 { /* Header */ }
59- < div className = "flex items-center gap-3 py-3 border-b border-gray-200 mb-4" >
60- < div className = "w-30" > Variant</ div >
61- < div className = "min-w-100 text-sm font-medium text-gray-600" >
62- { " " }
63- Without icon{ " " }
64- </ div >
65- < div className = "min-w-100 text-sm font-medium text-gray-600" >
66- With icon
67- </ div >
68- </ div >
6960
70- { /* normal variants */ }
71- { ( [ "primary" , "outline" , "link" ] as const ) . map ( ( variant ) => (
72- < div className = "flex gap-3 items-center py-3 " >
73- < div className = "w-30" > { variant } </ div >
74- < div key = { variant } className = "flex gap-3 items-center w-100" >
75- < Button variant = { variant } > Button </ Button >
76- < Button variant = { variant } disabled >
77- { " " }
78- Button{ " " }
79- </ Button >
80- < Button variant = { variant } size = "small" >
81- { " " }
82- Button{ " " }
83- </ Button >
84- < Button variant = { variant } size = "small" disabled >
85- { " " }
86- Button{ " " }
87- </ Button >
88- </ div >
61+ < div className = "flex items-center mb-4 justify-between" >
62+ < div className = "w-40 text-center" > Variants</ div >
63+ < div className = "w-70 text-center text-sm text-text-secondary" > Danger: < Badge variant = "outline" className = "text-xs" > false</ Badge > </ div >
64+ < div className = "w-70 text-center text-sm text-text-secondary" > Danger: < Badge variant = "outline" className = "text-xs" > true</ Badge > </ div >
65+ < div className = "w-70 text-center text-sm text-text-secondary" > Disabled: < Badge variant = "outline" className = "text-xs" > true</ Badge > </ div >
66+ </ div >
8967
90- < div key = { variant } className = "flex gap-3 items-center w-100" >
91- < Button variant = { variant } >
92- { " " }
93- < Trash2 /> Button{ " " }
94- </ Button >
95- < Button variant = { variant } disabled >
96- { " " }
97- < Trash2 /> Button{ " " }
98- </ Button >
99- < Button variant = { variant } size = "small" >
100- { " " }
101- < Trash2 /> Button{ " " }
102- </ Button >
103- < Button variant = { variant } size = "small" disabled >
104- { " " }
105- < Trash2 /> Button{ " " }
106- </ Button >
107- </ div >
68+ { ( [ "regular" , "small" ] as const ) . map ( ( size ) => (
69+ < div className = " items-center gap-3 py-3 border-gray-l00 border-t border-border-separator" key = { size } >
70+ { ( [ "primary" , "outline" , "ghost" , "link" ] as const ) . map ( ( variant ) => (
71+ < div key = { variant } className = "flex gap-3 items-center py-2 justify-between" >
72+ < div className = "w-40 text-sm text-text-secondary" >
73+ < div className = "flex mb-1" > < div className = "w-15" > Variant:</ div > < Badge variant = "outline" className = "text-xs" > { variant } </ Badge > </ div >
74+ < div className = "flex" > < div className = "w-15" > Size:</ div > < Badge variant = "outline" className = "text-xs" > { size } </ Badge > </ div >
75+ </ div >
76+ < div className = "w-70 flex gap-3 justify-center" >
77+ < Button size = { size } variant = { variant } > Button </ Button >
78+ < Button size = { size } variant = { variant } > < Play /> Button </ Button >
79+ < Button size = { size } variant = { variant } > < Play /> </ Button >
80+ </ div >
81+ < div className = "w-70 flex gap-3 justify-center" >
82+ < Button size = { size } variant = { variant } danger > Button </ Button >
83+ < Button size = { size } variant = { variant } danger > < Play /> Button </ Button >
84+ < Button size = { size } variant = { variant } danger > < Play /> </ Button >
85+ </ div >
86+ < div className = "w-70 flex gap-3 justify-center" >
87+ < Button size = { size } variant = { variant } disabled > Button </ Button >
88+ < Button size = { size } variant = { variant } disabled > < Play /> Button </ Button >
89+ < Button size = { size } variant = { variant } disabled > < Play /> </ Button >
90+ </ div >
91+ </ div >
92+ ) ) }
10893 </ div >
10994 ) ) }
11095
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 >
14196
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- ) ) }
16197 </ div >
16298 </ div >
16399 ) ,
164100 parameters : {
165- layout : "fullscreen " ,
101+ layout : "centered " ,
166102 } ,
167103} ;
0 commit comments