From ece632f7bba7ea31c8eba35b29a2a85d064f044a Mon Sep 17 00:00:00 2001 From: Shahrad Elahi Date: Sat, 4 Nov 2023 04:49:47 +0330 Subject: [PATCH] add `shadcn` the `form` component --- web/.prettierrc | 16 ++-- web/bun.lockb | Bin 99501 -> 101547 bytes web/components.json | 2 +- web/package.json | 5 +- .../lib/components/ui/button/button.svelte | 5 +- web/src/lib/components/ui/button/index.ts | 9 +- .../components/ui/checkbox/checkbox.svelte | 34 +++++++ web/src/lib/components/ui/checkbox/index.ts | 6 ++ .../lib/components/ui/form/form-button.svelte | 10 +++ .../components/ui/form/form-checkbox.svelte | 27 ++++++ .../ui/form/form-description.svelte | 16 ++++ .../lib/components/ui/form/form-input.svelte | 28 ++++++ .../lib/components/ui/form/form-item.svelte | 12 +++ .../lib/components/ui/form/form-label.svelte | 21 +++++ .../ui/form/form-native-select.svelte | 24 +++++ .../ui/form/form-radio-group.svelte | 22 +++++ .../ui/form/form-select-trigger.svelte | 17 ++++ .../lib/components/ui/form/form-select.svelte | 20 +++++ .../lib/components/ui/form/form-switch.svelte | 25 ++++++ .../components/ui/form/form-textarea.svelte | 32 +++++++ .../components/ui/form/form-validation.svelte | 14 +++ web/src/lib/components/ui/form/index.ts | 85 ++++++++++++++++++ web/src/lib/components/ui/input/index.ts | 25 ++++++ web/src/lib/components/ui/input/input.svelte | 33 +++++++ web/src/lib/components/ui/label/index.ts | 7 ++ web/src/lib/components/ui/label/label.svelte | 21 +++++ .../lib/components/ui/radio-group/index.ts | 15 ++++ .../ui/radio-group/radio-group-item.svelte | 28 ++++++ .../ui/radio-group/radio-group.svelte | 18 ++++ web/src/lib/components/ui/select/index.ts | 33 +++++++ .../ui/select/select-content.svelte | 36 ++++++++ .../components/ui/select/select-item.svelte | 38 ++++++++ .../components/ui/select/select-label.svelte | 16 ++++ .../ui/select/select-separator.svelte | 14 +++ .../ui/select/select-trigger.svelte | 27 ++++++ .../lib/components/ui/select/select.svelte | 12 +++ web/src/lib/components/ui/switch/index.ts | 7 ++ .../lib/components/ui/switch/switch.svelte | 25 ++++++ web/src/lib/components/ui/textarea/index.ts | 28 ++++++ .../components/ui/textarea/textarea.svelte | 31 +++++++ 40 files changed, 830 insertions(+), 14 deletions(-) create mode 100644 web/src/lib/components/ui/checkbox/checkbox.svelte create mode 100644 web/src/lib/components/ui/checkbox/index.ts create mode 100644 web/src/lib/components/ui/form/form-button.svelte create mode 100644 web/src/lib/components/ui/form/form-checkbox.svelte create mode 100644 web/src/lib/components/ui/form/form-description.svelte create mode 100644 web/src/lib/components/ui/form/form-input.svelte create mode 100644 web/src/lib/components/ui/form/form-item.svelte create mode 100644 web/src/lib/components/ui/form/form-label.svelte create mode 100644 web/src/lib/components/ui/form/form-native-select.svelte create mode 100644 web/src/lib/components/ui/form/form-radio-group.svelte create mode 100644 web/src/lib/components/ui/form/form-select-trigger.svelte create mode 100644 web/src/lib/components/ui/form/form-select.svelte create mode 100644 web/src/lib/components/ui/form/form-switch.svelte create mode 100644 web/src/lib/components/ui/form/form-textarea.svelte create mode 100644 web/src/lib/components/ui/form/form-validation.svelte create mode 100644 web/src/lib/components/ui/form/index.ts create mode 100644 web/src/lib/components/ui/input/index.ts create mode 100644 web/src/lib/components/ui/input/input.svelte create mode 100644 web/src/lib/components/ui/label/index.ts create mode 100644 web/src/lib/components/ui/label/label.svelte create mode 100644 web/src/lib/components/ui/radio-group/index.ts create mode 100644 web/src/lib/components/ui/radio-group/radio-group-item.svelte create mode 100644 web/src/lib/components/ui/radio-group/radio-group.svelte create mode 100644 web/src/lib/components/ui/select/index.ts create mode 100644 web/src/lib/components/ui/select/select-content.svelte create mode 100644 web/src/lib/components/ui/select/select-item.svelte create mode 100644 web/src/lib/components/ui/select/select-label.svelte create mode 100644 web/src/lib/components/ui/select/select-separator.svelte create mode 100644 web/src/lib/components/ui/select/select-trigger.svelte create mode 100644 web/src/lib/components/ui/select/select.svelte create mode 100644 web/src/lib/components/ui/switch/index.ts create mode 100644 web/src/lib/components/ui/switch/switch.svelte create mode 100644 web/src/lib/components/ui/textarea/index.ts create mode 100644 web/src/lib/components/ui/textarea/textarea.svelte diff --git a/web/.prettierrc b/web/.prettierrc index 7ff36ad..c8756c1 100644 --- a/web/.prettierrc +++ b/web/.prettierrc @@ -1,20 +1,22 @@ { "useTabs": false, + "semi": true, "singleQuote": true, "trailingComma": "all", "printWidth": 100, - "plugins": [ - "prettier-plugin-svelte" - ], - "pluginSearchDirs": [ - "." - ], + "jsxBracketSameLine": true, "overrides": [ { "files": "*.svelte", "options": { - "parser": "svelte" + "parser": "svelte", + "plugins": [ + "prettier-plugin-svelte" + ] } } + ], + "pluginSearchDirs": [ + "." ] } diff --git a/web/bun.lockb b/web/bun.lockb index 56eee7232251249e3fd12a34ceba44e5d666be10..cbb3c040df10c66437d25bf083eee5c50ffd2d3f 100644 GIT binary patch delta 16768 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 delta 15786 zcmeHud3Y4X)_zxq3F$!ggd}8ugpdH)$Ucye8Fom9u;|4R7a+?310j1@L`=e_L0Mvn zg~(z61q8wpARwS1Zsdv(6nDAe?o~wOdI4qm-qVZW`+eN+_k7!b_Vc`b>YO@Nb?Vfq zs-B*%ZO^#xsB>SD(7SL&(793DmY)f*Zh7-u&a@dvSK0!zmVIox+_l#O$9s>N)@31+ z=xSH*=oVYaG)9tUIrCL<6YhSJR5J^-187B6L3v(MV9mo+FLY z`SGA$P@XAkg{KsisI}c{CrQ4LmlPK`srFgrd8MUuBztijrByl9Y+ssRQTX4k~{hJmnWuR5&XNBS(y$IQ4)(KFmeh11@b%)eqQq4GYlH{f2G+YD02ZDbA`Q+qP zy52Iq{6}ya)t6tMSKzFWq%jx~D*rSnne`ngxUkZp0W3RyK5K+(gResCfU(EYl8VbM&oUz(yD zS}?U_x~q_XBl{~Qoiy8$ICBfmb3lPc{&^^q#RfebqVXOWHEL)T^2t*bGo3}1h>;Iv)l~ws+9!^)8y;v{@CXPm+ovwDQwt<*ED)@YI(t zK|Avcrm*UWNUcP1UU7-5P?AoAC%Y>1^7HfZi=0QnQwv9WND@Y@W+!+IY0XSmrL&?^ zl14^rEmXRS=Tu;q5nvqhIz_EPJqt|`sK6oqjKC`b+p z0VOvUl~k3Id{=LcF9oIif~k2FNYe5ctwJh46CN#eI!oi7Wkm~hc@-$REDH5eT#><4 zuDqnEsH#+woE7<1uA=HfX+wh6v*n=Vo4KImW0x);r}KmK{6t-D*5&S?2&kH0;Vi=H3Mj2EO*Y9PC>4Az*RmIMWo7-%Df_1Mdgh08Lk;lxU_D#rtk#{(rn}_ zOyL=4!BDFQLCv5P@sq0%j5(UJHz*C`ciEDJP^h7rsk?{mO)q)8<78Wf7{)dl-}=1#HY=Cs_$dG)N2es z?KQ$9yMEs%=UNwB;6MA`%Uu~SJPvHJ6SNv`Ak225kx3ccM&fmt$_zBz( zaV5YeUvlF)0an(B*9E8?vMxBSUa8_WK#;y#`659zw8x@F*ofODrluzmbQXPfC7WP{Y6Wb*7V z8(YNd!feVx4DTptwo^6RbH!|97M^XkDP`W8AJiP>C2-U_Yzed|*TEqqYJB)uvqhfh z!*jx{%ClG-6E&3p3*2y`3*3c;+X|Ux)_8DamddfUysoQF`2w;GwUi&6V@Bv{-DpKK z_kp9KXsn3K^OE1zVJTI_Jh)5kMEf4dJ=w zOl1%jcnT7kqiW>|a8w2%6KPRi1D62KM14?x0f*&fU~jlZ z$pA-oU}O;kGr`dWfxlub%3*M1l|ojrDxMu{Q}*E5gvK7>jh24|M+1dG1=k%nf{_i)I0Zm<3xNKkj$(ReGnbWZKCa+Q>{!Z6T^ zM;#gtI0{aj1x^p47>j8i!ZslkwU;r0F&QM zl_L-g(i%q3Zh;%hPY%eGhs5xfK~{Nn4EG#tRX&U{CLk@F-mzM*+o>~R7&tNmJwyB~ z1V_UI&TKJ#08VSJUmVX#w8{(P_!5xU;&@A<)wCBwhvpJ9P1lebuBHa`!Op3s>X6cM z-}yrpjA7ICCLpEdZbV8e@gq{XYT15ChHO4kqg7ceQd(|TxJIjmev4>j8zDtEQfEK&K7WsV}_v~j?++mS6el$j@;B*r)noD&~8-$bK;5#fYA=nbg zY3f=o-!+iujJC?>2J$5!(Svx)Xsfar&C)c%h7e>?E`XycgrOf~kz)t*C1b2|`C#5M z#;RPw^dE;j##=)z%D5rgsAeq*X`_0eR&x?rE_qA3;cQq1obtvNT?J=7LY`;K;Gs=D@*G%%EdfEdB~E zRUM&Q!}*fFRwWZ_w!Uv-v04O9i|6|87E?30bb73kFO1-x8CE4S+ZawPh>8OoEuFBT zhedueo3~_G<>VahnQ4`4a(GUrRe1+hlULy+_};@VNz=foj|8T2a5=Ph%ctzT<*tnC zAW8j|CCQ+{Kqnv`Xb&KW)a!QY1_>sF!~pbArHE$rx)XIr4#Gvfh*G%$DyPzEssLf2 z8h{~EuRBpP5Cf)Ow^K3*E>p{+c&sr9b8S#j{=B}R&_N>wU5>L+bPNK2B?*L z^!z)~cF4O=&%d2g`3H14XthL&lK?Ux51{Kmqf|kGs-;mXR|pVw>U1(FUAI%ppQ1`N zO8is_yNn5m8F~g$$|we?p;DbM1C@BtxNg;ysH7XN+o=cmhgGRYsg`*F(MNPSQL42@ z=kG*GzZM`mAE1jU@e9abc+{6x05kv`pp2&gx`-0LQm0RY(nXXSUPTNpqSWoR#NZ-I z<<=2{izxBy0V>x3cmmtdzM8Qe3@PjY==$HF)X+|~HjPpT_W;yRlP+&k{jUp1VZWY1 zlxEgpohM2KkLWy6YTy-}CrbH8fpFk+fcWzOT|}w=uXOq?C|%V?f+!XEj-0Jcqx}CNM|4&u=?7hPN3n${GU_!|9`U~ zn*2RdzgW-0|m*u6p6m9bMbmX~w*wdxR*>`lCQN@Hs&Id4MjW zG?V_^(Zk6txHO8D?cWRjXZ)W#`ky;GV(b6EUad#M*cvfhrD z|H^X?-fNi`pYfcX&Ep5beF&~ggPm1#SA&Dq@ME~w^3V+qHlLT_zJQ;=eIbw7=)iv` zb8uhGTXBDs_uk}SkMUaE>-a~wFX2hgJJ{pA4)-VcdEA%selIxKGG34Sa{fK;EBL_8 z4pz^f!Tm{o33tx3w>a2SyaD%>{Mr@=4-sDc!L4>C_|~ls{uVf|7wzmBUc1b}XRq?& zUoW%cKd_|b4z`BZ;l7ri$9)~|x5B~J^LpH$3+_CRIEeo3MsE+=@xNm$xbMKFy<}%!^V*ltzdh(JxNmvVA@r{ay**@? zznAzIhwkB5!45ramw%A>lZWr&TlS*AU@u5~(2;xiz5CFlu(ON2OrVSV(ImJ_JYp5P z2yW3TJG;zV!A)&Olh4@Mue|mdbnyV11b2lep&M_38~UuBUE}r7qKgO71i0V%z%}UN zOK|BLJG;Rzf%_2LxV3h6i#M!A7Z1Uu>+CXPTwZ?C%z)GJ>%F=z9F4 zm2|AYGz)Jlyqnl@OpF13?G*iEA1Su!#;YCNOpDD}12{WAMa?w6aGBav`^Nq3$+tVQ zM85k>n30&sef>I;qNnkRi9M>R@$J=YnDHe?3tr}+y&8HdFuv+Yz?*RVT2^Jo7amoR z;n$2R)4uj7ln%x<-F$ViO!doGqMB~Llgv!-;+>%{%(JPj8s8lJ)SuscHGxEY@99KS zZ!3O+qlfL)9`d(aJ%UaRY^y&Vwsb^Wop{pe;i1NN0R=^_glQGpF9P)&0nSd{PgQ!k z@W78ZEj1OOUa0m5*5v!{Q%Rl&^sn5CWKnKn*6N$LvT>vZu76FTaM}fzHI{ZqU+n)JVF9$;|As3_q)NT5m z7y@(#@Rz961?UQN10sO#KqL?i^aOeXF#sZv{(Dhh(x`4jT}Qzm16~7O2i^e4jc)-h zbGr+sRd%#)Xec%ItT-^X{05(cumGOdafZlaX1EvE-zSy2*@C$Gm_y_PSK<|d)0eW}z1NaNTZ@}lkexMmR z2x=|)0ea^%3G!TkUJ_&g_*;Vh5TXA~ z=uaB;?}Ic@S`=cT{}t%hz&Aj5@R7hPNFN4v0=t0iKp{{LlmesKBsdm|G{NoyMnO0P z7ywv+ZvlFh<^-((1_FbCy+9B!6PO0{hYr1BdkN{gK|gfI4Ogm{Izh8!u;is5fiD3H z^H|^u;5;xM_$wd-2xI94KoLaq?V;v@9oTZY`eCH!0;D@1r~$~XM*#9B$*Td%tJOi% zf~LpoKmqU?Z~%A`ppiNbOaPt$XxhCB90QI5&`vBszz-gc}@ILS!a0X}v-W4}|(G^mm>`#He0q20vfiD0wrG_!h zi?4yN05T^9falct@&oAKf$xCt0m}atps=|CTnBy!egm!nR{rp8ys32S6Jh4JR$@MrF6a-UN)YRG!kLM@ATO+5~AXO{LWh*URbR zWj|KZURF6tr24bN!ZUy+viTx2faQkdG1Oaye36A}{=5emWvg|s^;Bqb!JLSq(+c0kdb zt0#&~7dQUJm&IrnNe;0zkma%|;*&s@!pekC5E^_)^bTUVVYH_xC^g&cI(`1J3BRZf zCQ*aSL_O)P65Bw+UVt9ezNCEGkq2|We*=0cnqj-eu>=+>t_HErVTYha<|me%dZs>j zUK+HL(h{h;6C%D78h=;hbwZ`*MOkN*d8!jj4Ku!-e>SN3@0}MNo{ln!2`LH5Sg*yG zRA#0K4u++V!oh*4`|o25=8k#1*CVQ4QbIqhnxZ-wCK_M;-&Oa1W7m6gJfQ%;BqU)! z6HUP^R@v#MJ-=!C><7U@Sg!ofc4ABjOO|i76VLTyA!1DkI`YR!fLDGptvPq07j*>v zuwb7Mts&^ac<}=YhZ!ICpTBvsu~(`W9*m%;wizQDLRqj|qBK-2Ph*|B!cOBfz@+Sg z4&CdTnvRrGDT!(mJ(*13fPeH z{;2iOU$f|X@SN)3T&4|8m~l8D_Uy*;*6Dj5XwzFHE_Y^A*bZ@j7^)p8E@iMlcQxF` ziLGI*mVG2*&9KP$;6Ll~(cLY+X;V>yMeF9%Vj?LRCjesljJSUF{y+*NQa~8372FJ4 zjW6~eFMMkE;g3)J4GI+4uywjPj~Wn2Ay{UkMdIb%WJRv=4_hKH^e1>(ma5pIMZIqrF~OH+|8K ziBrt;zMZvhC#uuuRbNrx9|4pq4G})w;h-hrSOki~VzrV`rqc@^^SpcoHgnlM;z4R!3t_ReJL@7}?;^H$XCYz6 zX@se!-`A&qU$sp)96bvYe?y@(7l2G{tOub>Db=!?}&N9~)I`)OF-cl<@7thIoDwrG4;yB}z=_ z!$Qo)hyMGwf7o~7!{M*V469};IWZ(!ypsg0qVU5En$wI!7vKDB|6)|{ajrH^;~d9b z8(NzA^z4$h9OJ}Cx4sKToh@D%-j?Ht)&jPy{&;zG+>|+if5h69XpxWz%Vt8u6C>nq ze{=ozk1x(`)2N9S`H3vqT&HX7EZj0-)1=?GwrTKau?uy`>!U>rG}&#gG8?B&eAg}F zEwyL7;G^Vz329hlw)7MusmJ?zipfbBRfT6M^Cm|z8)uz_GBUH#tD(TtfynmUHmq;!+wjExj1^s7i&M<>riGr{l5Crz9$w(r8R3X$CVD`L z%oOKPg%)9*g@zf@w1wC>WfOBV zC#qzl|J}$**B({W85t;!rL%5k<0#MMbI0rU?0GR+HA3C>Pi2bhXi)w*Q*^Sh82Ot_ zG01}cUC9(PEo^c(zy9hkhMM_!M5VQ2eN;_c>>_7=Ad5v#nAjc5f_e-?vO6-3lR`xu z4^{0Pak>S~(3+2_mzX6|`?8VRMiwfUW{EXm<+)kn?|rd)v_0V!^+V&@6JD~u?R8E0 zryG0pce-44P{PXpf9PUd{h(Vt_{~G-#`WhR;CJJ%h!VHV?#ug=(+o z0VMI5ffGZbGy~CRoFGbhvf!a(YoD7Zv&uo*TTT6tQO)q96U5x0*mAYn6k5Dj4H7S- ztiC>Ik7Oz4|5#JgV6CR3gT(-BJ!a!HQgg`bpPoK_^DERyLz$E!ogXYJGvN&FVbE;6 zwk%n7%IA^CMhagxa)=g6`YvWRjux%lurWCAuv?v4RVqEa7%D#R z55Ha>D#D}L5YzRc*nGsiSUe?U4-?lhiR4qmM5h>*9B7B1hzi#5fi%R>v}bd2)_ujAbDnM{=~sIZ>2? zd3JE9Xcvbl(^ciecJXi)OZN28-+I1f5eKr^ma6HfTvF)VU&S7F_sDk@ z_n|l4qTx~2RScNR+KJo(=GW{hVB0-}n9DARDP?Rz^TLN&y&@JDvkBt!$65Pk^I{fY z60`G}-ISbAIpra7sRWOPU*$8K@GoOw%|S)1Om6 - import { cn } from '$lib/utils'; - import { buttonVariants, type Events, type Props } from '.'; + import { Button as ButtonPrimitive } from 'bits-ui'; + import { cn } from '$lib/utils'; + import { buttonVariants, type Props, type Events } from '.'; type $$Props = Props; type $$Events = Events; diff --git a/web/src/lib/components/ui/button/index.ts b/web/src/lib/components/ui/button/index.ts index 82a3929..f274c25 100644 --- a/web/src/lib/components/ui/button/index.ts +++ b/web/src/lib/components/ui/button/index.ts @@ -7,9 +7,12 @@ const buttonVariants = tv({ variants: { variant: { default: 'bg-primary text-primary-foreground hover:bg-primary/90', - destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90', - outline: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground', - secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80', + destructive: + 'bg-destructive text-destructive-foreground hover:bg-destructive/90', + outline: + 'border border-input bg-background hover:bg-accent hover:text-accent-foreground', + secondary: + 'bg-secondary text-secondary-foreground hover:bg-secondary/80', ghost: 'hover:bg-accent hover:text-accent-foreground', link: 'text-primary underline-offset-4 hover:underline', }, diff --git a/web/src/lib/components/ui/checkbox/checkbox.svelte b/web/src/lib/components/ui/checkbox/checkbox.svelte new file mode 100644 index 0000000..9ec0eb1 --- /dev/null +++ b/web/src/lib/components/ui/checkbox/checkbox.svelte @@ -0,0 +1,34 @@ + + + + + {#if isChecked} + + {:else if isIndeterminate} + + {/if} + + diff --git a/web/src/lib/components/ui/checkbox/index.ts b/web/src/lib/components/ui/checkbox/index.ts new file mode 100644 index 0000000..ba3b7d7 --- /dev/null +++ b/web/src/lib/components/ui/checkbox/index.ts @@ -0,0 +1,6 @@ +import Root from './checkbox.svelte'; +export { + Root, + // + Root as Checkbox, +}; diff --git a/web/src/lib/components/ui/form/form-button.svelte b/web/src/lib/components/ui/form/form-button.svelte new file mode 100644 index 0000000..f72c768 --- /dev/null +++ b/web/src/lib/components/ui/form/form-button.svelte @@ -0,0 +1,10 @@ + + + + + diff --git a/web/src/lib/components/ui/form/form-checkbox.svelte b/web/src/lib/components/ui/form/form-checkbox.svelte new file mode 100644 index 0000000..9d57bf1 --- /dev/null +++ b/web/src/lib/components/ui/form/form-checkbox.svelte @@ -0,0 +1,27 @@ + + + { + onCheckedChange?.(v); + setValue(v); + }} + {...$$restProps} + on:click + on:keydown +/> + diff --git a/web/src/lib/components/ui/form/form-description.svelte b/web/src/lib/components/ui/form/form-description.svelte new file mode 100644 index 0000000..792d80a --- /dev/null +++ b/web/src/lib/components/ui/form/form-description.svelte @@ -0,0 +1,16 @@ + + + + + diff --git a/web/src/lib/components/ui/form/form-input.svelte b/web/src/lib/components/ui/form/form-input.svelte new file mode 100644 index 0000000..b7edb33 --- /dev/null +++ b/web/src/lib/components/ui/form/form-input.svelte @@ -0,0 +1,28 @@ + + + diff --git a/web/src/lib/components/ui/form/form-item.svelte b/web/src/lib/components/ui/form/form-item.svelte new file mode 100644 index 0000000..9605359 --- /dev/null +++ b/web/src/lib/components/ui/form/form-item.svelte @@ -0,0 +1,12 @@ + + +
+ +
diff --git a/web/src/lib/components/ui/form/form-label.svelte b/web/src/lib/components/ui/form/form-label.svelte new file mode 100644 index 0000000..55b281d --- /dev/null +++ b/web/src/lib/components/ui/form/form-label.svelte @@ -0,0 +1,21 @@ + + + diff --git a/web/src/lib/components/ui/form/form-native-select.svelte b/web/src/lib/components/ui/form/form-native-select.svelte new file mode 100644 index 0000000..4115ebe --- /dev/null +++ b/web/src/lib/components/ui/form/form-native-select.svelte @@ -0,0 +1,24 @@ + + + + + + diff --git a/web/src/lib/components/ui/form/form-radio-group.svelte b/web/src/lib/components/ui/form/form-radio-group.svelte new file mode 100644 index 0000000..bc69c50 --- /dev/null +++ b/web/src/lib/components/ui/form/form-radio-group.svelte @@ -0,0 +1,22 @@ + + + { + onValueChange?.(v); + setValue(v); + }} + {...$$restProps} +> + + + diff --git a/web/src/lib/components/ui/form/form-select-trigger.svelte b/web/src/lib/components/ui/form/form-select-trigger.svelte new file mode 100644 index 0000000..b4b1d9d --- /dev/null +++ b/web/src/lib/components/ui/form/form-select-trigger.svelte @@ -0,0 +1,17 @@ + + + + + + diff --git a/web/src/lib/components/ui/form/form-select.svelte b/web/src/lib/components/ui/form/form-select.svelte new file mode 100644 index 0000000..dc5aef5 --- /dev/null +++ b/web/src/lib/components/ui/form/form-select.svelte @@ -0,0 +1,20 @@ + + + { + onSelectedChange?.(v); + setValue(v ? v.value : undefined); + }} + {...$$restProps} +> + + + diff --git a/web/src/lib/components/ui/form/form-switch.svelte b/web/src/lib/components/ui/form/form-switch.svelte new file mode 100644 index 0000000..958ac41 --- /dev/null +++ b/web/src/lib/components/ui/form/form-switch.svelte @@ -0,0 +1,25 @@ + + + { + onCheckedChange?.(v); + setValue(v); + }} + {...$$restProps} + on:click + on:keydown +/> + diff --git a/web/src/lib/components/ui/form/form-textarea.svelte b/web/src/lib/components/ui/form/form-textarea.svelte new file mode 100644 index 0000000..4b4a481 --- /dev/null +++ b/web/src/lib/components/ui/form/form-textarea.svelte @@ -0,0 +1,32 @@ + + +