11import preview from "#.storybook/preview" ;
2+ import { createSignal , onCleanup } from "solid-js" ;
23
34import { User } from "../../src/ts/components/common/User" ;
45
@@ -16,14 +17,69 @@ const meta = preview.meta({
1617 } ,
1718} ) ;
1819
20+ // oxlint-disable-next-line no-unused-vars
21+ function SpinnerCycleUser ( props : {
22+ data : Record < string , unknown > ;
23+ } ) : ReturnType < typeof User > {
24+ const [ showSpinner , setShowSpinner ] = createSignal ( false ) ;
25+ const interval = setInterval ( ( ) => {
26+ setShowSpinner ( ( prev ) => ! prev ) ;
27+ } , 2000 ) ;
28+ onCleanup ( ( ) => clearInterval ( interval ) ) ;
29+ //@ts -expect-error - just for testing, ignore type issues
30+ return < User user = { { ...props . data } } showSpinner = { showSpinner ( ) } /> ;
31+ }
32+
1933export const Default = meta . story ( {
20- args : {
21- user : {
34+ // args: {
35+ // user: {
36+ // uid: "user123",
37+ // name: "monkeytyper",
38+ // discordId: undefined,
39+ // discordAvatar: undefined,
40+ // },
41+ // },
42+
43+ render : ( ) => {
44+ const data = {
2245 uid : "user123" ,
2346 name : "monkeytyper" ,
24- discordId : undefined ,
25- discordAvatar : undefined ,
26- } ,
47+ discordId : "102819690287489024" ,
48+ discordAvatar : "a_af6c0b8ad26fdd6bcb86ed7bb40ee6e5" ,
49+ isPremium : true ,
50+ banned : true ,
51+ } ;
52+ return (
53+ < div class = "grid grid-cols-[auto_1fr] place-items-start gap-4 [--themable-button-text:var(--sub-color)]" >
54+ < div class = "text-sub" > With avatar:</ div >
55+ < User user = { { ...data } } />
56+ < div class = "text-sub" > No avatar:</ div >
57+ < User user = { { ...data } } showAvatar = { false } />
58+ < div class = "text-sub" > Avatar fallback:</ div >
59+ < User user = { { ...data , discordAvatar : "" } } />
60+ < div class = "text-sub" > Avatar fallback with color:</ div >
61+ < User
62+ user = { { ...data , discordAvatar : "" } }
63+ avatarFallback = "user-circle"
64+ avatarColor = "sub"
65+ />
66+ < div class = "text-sub" > Flag color:</ div >
67+ < User user = { { ...data } } flagsColor = "sub" />
68+ < div class = "text-sub" > Hide name on small screen:</ div >
69+ < User user = { { ...data } } hideNameOnSmallScreens = { true } />
70+ < div class = "text-sub" > Level:</ div >
71+ < User user = { { ...data } } level = { 10 } />
72+ < div class = "text-sub" > Level no flags:</ div >
73+ < User
74+ user = { { ...data , isPremium : undefined , banned : undefined } }
75+ level = { 10 }
76+ />
77+ < div class = "text-sub" > Show spinner (cycling):</ div >
78+ < SpinnerCycleUser data = { data } />
79+ < div class = "text-sub" > Show notification bubble:</ div >
80+ < User user = { { ...data } } showNotificationBubble = { true } />
81+ </ div >
82+ ) ;
2783 } ,
2884} ) ;
2985
0 commit comments