88 AvatarFallback ,
99 AvatarImage ,
1010 Badge ,
11+ Banner ,
1112 Breadcrumb ,
1213 BubbleChatClose ,
1314 BubbleChatPreview ,
@@ -30,6 +31,7 @@ import {
3031 Eye ,
3132 FolderCode ,
3233 FolderPlus ,
34+ FormField ,
3335 Hand ,
3436 HexSimple ,
3537 Input ,
@@ -64,6 +66,7 @@ import {
6466 PopoverTrigger ,
6567 Redo ,
6668 Rocket ,
69+ Skeleton ,
6770 Slider ,
6871 SModal ,
6972 SModalContent ,
@@ -228,6 +231,9 @@ export default function PlaygroundPage() {
228231 < VariantRow label = 'ghost' >
229232 < Button variant = 'ghost' > Ghost</ Button >
230233 </ VariantRow >
234+ < VariantRow label = 'subtle' >
235+ < Button variant = 'subtle' > Subtle</ Button >
236+ </ VariantRow >
231237 < VariantRow label = 'ghost-secondary' >
232238 < Button variant = 'ghost-secondary' > Ghost Secondary</ Button >
233239 </ VariantRow >
@@ -337,6 +343,9 @@ export default function PlaygroundPage() {
337343 < VariantRow label = 'gray' >
338344 < Badge variant = 'gray' > Gray</ Badge >
339345 </ VariantRow >
346+ < VariantRow label = 'pink' >
347+ < Badge variant = 'pink' > Pink</ Badge >
348+ </ VariantRow >
340349 < VariantRow label = 'gray-secondary' >
341350 < Badge variant = 'gray-secondary' > Gray Secondary</ Badge >
342351 </ VariantRow >
@@ -352,6 +361,18 @@ export default function PlaygroundPage() {
352361 < VariantRow label = 'default' >
353362 < Input placeholder = 'Enter text...' className = 'max-w-xs' />
354363 </ VariantRow >
364+ < VariantRow label = 'error' >
365+ < Input variant = 'error' placeholder = 'Invalid value' className = 'max-w-xs' />
366+ </ VariantRow >
367+ < VariantRow label = 'ghost' >
368+ < Input variant = 'ghost' placeholder = 'Inline edit...' className = 'max-w-xs' />
369+ </ VariantRow >
370+ < VariantRow label = 'size sm' >
371+ < Input size = 'sm' placeholder = 'Small input' className = 'max-w-xs' />
372+ </ VariantRow >
373+ < VariantRow label = 'size md' >
374+ < Input size = 'md' placeholder = 'Medium input' className = 'max-w-xs' />
375+ </ VariantRow >
355376 < VariantRow label = 'disabled' >
356377 < Input placeholder = 'Disabled' disabled className = 'max-w-xs' />
357378 </ VariantRow >
@@ -417,15 +438,85 @@ export default function PlaygroundPage() {
417438
418439 { /* Textarea */ }
419440 < Section title = 'Textarea' >
420- < Textarea placeholder = 'Enter your message...' className = 'max-w-md' rows = { 4 } />
441+ < VariantRow label = 'default' >
442+ < Textarea placeholder = 'Enter your message...' className = 'max-w-md' rows = { 3 } />
443+ </ VariantRow >
444+ < VariantRow label = 'error' >
445+ < Textarea
446+ variant = 'error'
447+ placeholder = 'Invalid content'
448+ className = 'max-w-md'
449+ rows = { 3 }
450+ />
451+ </ VariantRow >
452+ < VariantRow label = 'ghost' >
453+ < Textarea
454+ variant = 'ghost'
455+ placeholder = 'Inline edit...'
456+ className = 'max-w-md'
457+ rows = { 3 }
458+ />
459+ </ VariantRow >
421460 </ Section >
422461
423462 { /* Label */ }
424463 < Section title = 'Label' >
425- < div className = 'flex flex-col gap-2' >
426- < Label htmlFor = 'demo-input' > Label Text</ Label >
427- < Input id = 'demo-input' placeholder = 'Input with label' className = 'max-w-xs' />
428- </ div >
464+ < VariantRow label = 'default' >
465+ < Label > Label Text</ Label >
466+ </ VariantRow >
467+ < VariantRow label = 'required' >
468+ < Label required > Required Field</ Label >
469+ </ VariantRow >
470+ < VariantRow label = 'size sm' >
471+ < Label size = 'sm' > Small Label</ Label >
472+ </ VariantRow >
473+ < VariantRow label = 'size md' >
474+ < Label size = 'md' > Medium Label</ Label >
475+ </ VariantRow >
476+ < VariantRow label = 'size lg' >
477+ < Label size = 'lg' > Large Label</ Label >
478+ </ VariantRow >
479+ < VariantRow label = 'with input' >
480+ < div className = 'flex flex-col gap-2' >
481+ < Label htmlFor = 'demo-input' required >
482+ Email Address
483+ </ Label >
484+ < Input id = 'demo-input' placeholder = 'Input with label' className = 'max-w-xs' />
485+ </ div >
486+ </ VariantRow >
487+ </ Section >
488+
489+ { /* FormField */ }
490+ < Section title = 'FormField' >
491+ < VariantRow label = 'default' >
492+ < FormField label = 'Username' htmlFor = 'ff-user' >
493+ < Input id = 'ff-user' placeholder = 'Enter username' className = 'max-w-xs' />
494+ </ FormField >
495+ </ VariantRow >
496+ < VariantRow label = 'optional' >
497+ < FormField label = 'Bio' htmlFor = 'ff-bio' optional >
498+ < Textarea
499+ id = 'ff-bio'
500+ placeholder = 'Tell us about yourself'
501+ className = 'max-w-xs'
502+ rows = { 2 }
503+ />
504+ </ FormField >
505+ </ VariantRow >
506+ < VariantRow label = 'with error' >
507+ < FormField
508+ label = 'Email'
509+ htmlFor = 'ff-email'
510+ error = 'Please enter a valid email address'
511+ >
512+ < Input
513+ id = 'ff-email'
514+ variant = 'error'
515+ placeholder = 'Enter email'
516+ className = 'max-w-xs'
517+ />
518+ </ FormField >
519+ </ VariantRow >
429520 </ Section >
430521
431522 { /* Switch */ }
@@ -436,6 +527,22 @@ export default function PlaygroundPage() {
436527 { switchValue ? 'On' : 'Off' }
437528 </ span >
438529 </ VariantRow >
530+ < VariantRow label = 'size sm' >
531+ < Switch size = 'sm' />
532+ < span className = 'text-[var(--text-secondary)] text-sm' > Small</ span >
533+ </ VariantRow >
534+ < VariantRow label = 'size md' >
535+ < Switch size = 'md' />
536+ < span className = 'text-[var(--text-secondary)] text-sm' > Medium (default)</ span >
537+ </ VariantRow >
538+ < VariantRow label = 'size lg' >
539+ < Switch size = 'lg' />
540+ < span className = 'text-[var(--text-secondary)] text-sm' > Large</ span >
541+ </ VariantRow >
542+ < VariantRow label = 'disabled' >
543+ < Switch disabled />
544+ < Switch disabled checked />
545+ </ VariantRow >
439546 </ Section >
440547
441548 { /* Checkbox */ }
@@ -472,6 +579,18 @@ export default function PlaygroundPage() {
472579 </ div >
473580 < span className = 'text-[var(--text-secondary)] text-sm' > { sliderValue [ 0 ] } </ span >
474581 </ VariantRow >
582+ < VariantRow label = 'size sm' >
583+ < div className = 'w-48' >
584+ < Slider size = 'sm' value = { [ 50 ] } max = { 100 } step = { 1 } />
585+ </ div >
586+ < span className = 'text-[var(--text-secondary)] text-sm' > Small</ span >
587+ </ VariantRow >
588+ < VariantRow label = 'size lg' >
589+ < div className = 'w-48' >
590+ < Slider size = 'lg' value = { [ 70 ] } max = { 100 } step = { 1 } />
591+ </ div >
592+ < span className = 'text-[var(--text-secondary)] text-sm' > Large</ span >
593+ </ VariantRow >
475594 < VariantRow label = 'disabled' >
476595 < div className = 'w-48' >
477596 < Slider value = { [ 30 ] } disabled max = { 100 } step = { 1 } />
@@ -995,6 +1114,45 @@ export default function PlaygroundPage() {
9951114 </ VariantRow >
9961115 </ Section >
9971116
1117+ { /* Banner */ }
1118+ < Section title = 'Banner' >
1119+ < Banner text = 'Default informational banner' variant = 'default' />
1120+ < Banner text = 'Error: Something went wrong' variant = 'destructive' />
1121+ < Banner text = 'Warning: Please review before continuing' variant = 'warning' />
1122+ < Banner text = 'Info: A new version is available' variant = 'info' />
1123+ < Banner text = 'Success: Your changes have been saved' variant = 'success' />
1124+ < Banner
1125+ text = 'Banner with action'
1126+ variant = 'info'
1127+ actionLabel = 'Update now'
1128+ onAction = { ( ) => { } }
1129+ />
1130+ </ Section >
1131+
1132+ { /* Skeleton */ }
1133+ < Section title = 'Skeleton' >
1134+ < VariantRow label = 'line (default)' >
1135+ < Skeleton className = 'h-4 w-48' />
1136+ < Skeleton className = 'h-4 w-32' />
1137+ </ VariantRow >
1138+ < VariantRow label = 'circle' >
1139+ < Skeleton variant = 'circle' className = 'h-8 w-8' />
1140+ < Skeleton variant = 'circle' className = 'h-10 w-10' />
1141+ </ VariantRow >
1142+ < VariantRow label = 'rectangle' >
1143+ < Skeleton variant = 'rectangle' className = 'h-20 w-32' />
1144+ </ VariantRow >
1145+ < VariantRow label = 'composition' >
1146+ < div className = 'flex items-center gap-3' >
1147+ < Skeleton variant = 'circle' className = 'h-10 w-10' />
1148+ < div className = 'space-y-2' >
1149+ < Skeleton className = 'h-4 w-32' />
1150+ < Skeleton className = 'h-3 w-48' />
1151+ </ div >
1152+ </ div >
1153+ </ VariantRow >
1154+ </ Section >
1155+
9981156 { /* Icons */ }
9991157 < Section title = 'Icons' >
10001158 < div className = 'grid grid-cols-6 gap-4 sm:grid-cols-8 md:grid-cols-10' >
0 commit comments