From b9aa79503c1aa8779ebd08190fc71d64fe93d0bf Mon Sep 17 00:00:00 2001 From: Grzegorz Gawrysiak Date: Sat, 5 May 2018 21:59:45 +0200 Subject: [PATCH] feat: add Chip component --- docs/assets/screenshots/chip-1.png | Bin 0 -> 5979 bytes docs/assets/screenshots/chip-2.png | Bin 0 -> 27310 bytes example/assets/avatar.jpg | Bin 0 -> 6264 bytes example/src/ChipExample.js | 56 +++ example/src/ExampleList.js | 2 + src/components/Chip.js | 121 ++++++ src/components/Icon.js | 2 +- src/components/__tests__/Chip.test.js | 31 ++ .../__tests__/__snapshots__/Chip.test.js.snap | 344 ++++++++++++++++++ src/index.js | 1 + 10 files changed, 556 insertions(+), 1 deletion(-) create mode 100644 docs/assets/screenshots/chip-1.png create mode 100644 docs/assets/screenshots/chip-2.png create mode 100644 example/assets/avatar.jpg create mode 100644 example/src/ChipExample.js create mode 100644 src/components/Chip.js create mode 100644 src/components/__tests__/Chip.test.js create mode 100644 src/components/__tests__/__snapshots__/Chip.test.js.snap diff --git a/docs/assets/screenshots/chip-1.png b/docs/assets/screenshots/chip-1.png new file mode 100644 index 0000000000000000000000000000000000000000..ff2213d330843d5b49941bef523fddc28b2aec8c GIT binary patch literal 5979 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 ZKmhIWv3awf9-;mT*HqP2sZoN3{|oAn3k3iG literal 0 HcmV?d00001 diff --git a/docs/assets/screenshots/chip-2.png b/docs/assets/screenshots/chip-2.png new file mode 100644 index 0000000000000000000000000000000000000000..e0b36c22b485cd62a68cb7c7a02426e0470c1c33 GIT binary patch literal 27310 zcmbTcbx>VFvoE@F4Q$+9f(LhZx8UyX?raFINgzOQcXxMpcPF?9_qX$%x>cuc-FNEU zxBgnSW=&7`uXTDRQdv>z6Cyq$008(TBQ35906>BO0ElgPSnwB)ne{&afQ`G1xQLn; z#MwHG%bF1oG{X_MlEZfE)8beKJm}B&_+WK4mAjmX2>bR9UAAaaQ=H2J09e6+DFMNh z-~k{2G(Z>t2_OYP0DxfP@WKE9H0ghaK^8Fo_442U`)}j_{qz4}`hOq(zn}HL@$%n^ z{SRyX-_QCVi2c97@{g7OKeL9N)z!b4MniP3O_lC#S6MM)N7Gr|lBks}_@Du{+2p`V z*v4l5|Du@x1;+nD+HQ@LK@`xwi+0kT4^i3#byJIlVaPEJ2bH|KD|#DWdhRssY!A&MzGzC_m+>N01=fQbr>UF6Wv zP)z4~Qebr(O7_}$67IM;Gj6{vDS*sz$H35V==|J%rHUTZF2PS6Z_1hWOLs6f1ki7v zh}@NyMzFI)BRps*x$VZwIEBdx2?_jbv$e3Gj<;#W+Ktuo%&T!KJ{f9|uDXX;1C?*UUI>dC*(akLcBzX=re8F_L)u@_vwz9gqLT^6g zP-q{|S)FC7_kF#^!G~$u#9)9%--*vf!(!{o<>9Fb)0Z#qfq|D_`zsmfvZg-Dq^jTQ zP!G3~E1u2tH8qoWubW>l(I5f$Fu?$LenCM=jVE6ppV^U-NCyXpSI-An4W9LQHtgt< zq9Uohyu3_#7{G!Wf}NwIrm`>q8jSPCg4n*($Cev!#m$YY06+h0O&^7U?D5&z{Pgs9 zYHI5BvadN%08bQadwVQlfH-r8fJ;ld?A_B-i5gvjJoO$>`x?RB&Q3ldA;HGZPHh;_ zUG%ME0OoN90MFg-eZ17+FX!y#Rcyw33@pj|qai;xHz!Mpj)(ex3U6wFe~bjc zdyOp0HBjB%-UY>FWDx1=>(f&D`}?P6WZa?G07%6*8+YG8@6hm|Vj9g?!d+RO>(kOL zF#KiVh(D5pEiEkA1qGP^@ONg_hHCm~;Q!#Cb1gNIn;IM4e0)v-c(1Hu!^05=hlk!{ zu-y_fqyR|43}0X0(<#S>P+ddArMtU^QW;0bDr{_Qs}W2}P?Gb;#>PA5710NVGNk4^ z;d|#-Mm>G~iqdWGEyI|sG)%)3$yYBsZsz|loT}0 z4d8``gzh#{e!Ho?92^Y$5~bFKUWa`0|9ip8aup^*t$6^GqCwJj`}z4jGS;P_kaYfODf~{>oI+X)3`))p@|sU`|FB|f>QeZ@X%6UPj6U9M+Y+$?7f{->5<|i1h zBtE7!>^khL3ls++b_M*XzK@5JZa8q`HRjC_e3iGwg&HLPAuWume8qwPsa&J12v&El z*J80ywS+WnLKG=(Xb%XI^J#lwsq;Cu06#uY~57Eb#_ zLymb%fW-541b|2mfN7DD^^Zrqbcoo&#$0XbH)GAwspvIg7XHKu^5V~It27n?QbN&0 zz%UFe{Dn&%g9&yp>5VzlpOa$1hGJ~7jFikf!|hyPtECO$_+|qJkoi=4EuO+6Mv_90 z3CD`!(4{3@vE{8dPZuczPE;aT+N_L^UAk&EU}RfZYy=d!mGo; z&;QN*5?R#lIgdL)tLAepDUd^&a)x9^*&+r$(XRM+D9em8^EdLoZW_GNnEt_FSQ-%s z7sjhnU)&#njGNuI8c{G1#SSs1v7 zlZCQeyY*(3<&!TYTn_7`ig=&h-(R14P*yxIHxYmdi;IigHKYPnOADY@P2OhrwJ&;` zg@uKqRhlA*Ro3t)%2|T`bg#Mxk*ZN3-{Gg~sry#)!IiM9Z)lKFP*C`j&g<}s z$aSb!1ESgHc=my2go=GyNfHWthvy13xw_gB<8j&sIo&X!i&F+CFutp)!N3?98X6AX z5efQvDFXz3ZsBY4+<(`Y_7Jc2vqfoE8ASG;qJgmVtC*=ON`i|e);qnfO+ZG*0+IAt zSek7uEiK!3e*2?Xm4=H(&NUTNAj{rx-Y>+7K{eNK2tvB4x5KPzSCzwj!qhjl_7 zH3QrT(^GnaQTkX+2mf@;%pjySrue zS%q}kDVnhzb&~8u$)B(k?vNm6q*nK)&fyM`52#yiIC@)n_%B?c^_pK&2m|5QlV4Na>hgM0s)E z`K-m<5tA9T$(_llD&i&+J}dn>TdB*vy}d1-8?lt1_X$0^xR^u_%vWi$TltAL*nhIw z;p_7D>>e?6| za0u)ep@YO2v$~uxuUuqrqk>iI?RhEO&bj01Jas?CYSFm!S#Ap5OO{satrKYS-<)9O zN}$r2je}`a8VuPXt#rO$Snoo3Lx(C*!RamL)En$5y8A2lYMUzDfN0E`654H@Zw?ef za-xh|H(Lb%8VLE`pY3QWL?@sq2CV;Qd2SinR|`uty(A##rwN5tJzxWT9nkH3cX_$B z9eumdVLZnUejG>gFjhCgU&&AhkxTqgz_=VrSqIcPan#i zl*1!*#M9}{Q!UjZdOWZw6!E4KR_}5-=N3!J>ydgMlfcGhi6V}--M#AIWbl!ymLRB-VKcg8YAP(jSkn#!h@M0u)O%}!({j0v)h-)gMcb9kVgD4l;f zmE@khxqJ}f(k4XRiOLf!vrr}#7v<@rDqJ7%R=|JYk}jfMaAp{WF174|y;=|8BTtSm zgj@GR!zseF0XS|}a0(PTPLJ|x?of!z&49Ws`|p(|@$>l6LGfir=v zG|yMKqZ@gmf1-Q*>J9Fbk(Ga3@ffa*zG59<-ktQQlw7E0G-&tgK1ItwMqk`YxL5le zjk3os#_w{lShZv(p|O{${sUjoaHtmDY2m>Mc%L z=ZT?mA7}Gxg>T1R0VCK9CCwO@ke(u+CAblnr-DPriP=||kwn}T@b=TD-_HRWj=b`Z z@!tG{H9sD)ynI6rMbloQf5dOpqKv+Apt$&2Sa>~~%{)zzY>dJP*8M#6U=YOo;+<)h zktYBQfuiv`1o9c@PPOM5smLBAEeBs>^Pg+Na=x3BQlM%jmM*Gz8WC-uK_BNPHa(&Y z9~<4^;>S$)caMnpiY|%<;?MT4&v&*0_3aQ33kH|-*4X|TdqB3mFM<~UUZ#HwG*j@j zp*}8Scp&03IEe%CJTxI4Je=pcA_z{Yf2vk;0x>lJioaP4>{RTDsKvA6Tyt)?*iAyb zPF{u5MM5N3cV0|R=1a6$=%AOb-``&DNDC@2&GjAojmv$e4yUrBMRB;kwf8muC(`r7 z5K8xP_nTB_wR71mXIH}K87*^hYA}+nnXPDhmT6STn!#D;WDpeV*SFO$7J#iFbJ*&%=ku@A+W<%W@>We* z9MNif!aS?9I~L5GvmR$X0B<12ukN|Jgmf+D){ygQyV!-v3_iH=!n)8KA|j#~PBioT zvlTnPtl)8APH~ z_36&-7CN*s5V8n*oIc+D!|3)JRWKxNuxrvd4DxGgROlecXA3_`#SxBNko-h##P@yr zTfq3Kc=-{hALUSz5HJ+YE<|fx+0)qASn5>N=(xocjzUCkK6dvx9F^o?C$tuQcg%r| zecH_ZzLsz7U?Pnwd2vyr(s5mT-LS>)iFHY^l70zJfscLPsbX!?@ct9Zuj>D}Ij_MI zHs}_Y_V>JFu%Z|;QJf3}S@*={#YWrg)>gc)q&;EypKtnjkDle0kRr{0@tixP_niN9 zSm^5L)RX1e0UdFe^tykjCUbCKqB$>bY{XWN%#)E%(?RT79nTj0-R^;cSWNN~=2)B??tm=uG%+y|K^V1*abD};;W651zeav| zeErZI{8=&m`}4C;31$SB2_{!Yv~-<=Q$bsa=lLpCLqkKkzPh8>AP;FGnx{%|DvG|I zZF*~-R6OhkFEO%@uWw1v{_1eD;O9_zJP1fPn&__JhP61h@~*C~ZLYAr?sA8Jk&+I5n-&8~+idtC1&Yzy=AiATM*>+~l8+QiRPVbVKc(j6pS)L4Y%dh*>f zX7=aHsCvSa;jY`Mq@gL;(&u~cKP1foJh>QL<@h^<+&HS8+`;Ln4axI}Nq}S1FwZ&e z{yx+Tn%plOb<#Y9MeCT=d({J~$^e@kzJXQi5ZBMJG9+Cr^9R#EdiSL1n;QtlAc&=L z^Yv-Hs&}MM9~$<&5SL5lj}YR5IRyBvi#|<01>Ro>i>;6%?ma?43scDeAb-HO1_3Z< zIXvJ(;e(2$(I9hWseXjqdNXaWZ8lXjeSP_;>6V2Xw6-|lDJ25aNNrfNkM0fVT9WJf2*a0>;3)F|TvaPVO*sI1dR-pkvLxB8(Z5}6wx?bo9$#kE zu9TNp0IpmTQJkP-inu@`21&G#dtc5XN+cH$0g47ALjLD4pGdQ%VK+RH62ptu+21~z zRP9Su8hikNs9EoUR-`x(gajLn%ihI2Dp52Yt`F<)Wv4hA>pisLFS@+{Bp!TC1jd>XcncY%V1-e0JB60MCN-f$Z z_sJE;NGD-&UlZyRX){vs0QFULy-h+JD%x@EK))ea0K2faX;^`eG^V@wmGlk zL!6Vh9nj^tcdeC$<{cs`m<8snpKziY0DMHo7dEO}v9e1RIPvLNHDaz_v9lQ4R~;Jt z!Y3+IG?z5CU#`VKC%wQA1=3bK z^9M+&1v%urbTx=#hHQ-m|C$I};5qchJ;y3<`rY|kv~FQ?N1D(3Ezj=!;U&(KkI6dQ zG+nXi`Uk)u&>Ji8h7_>l(h_re#|!WZ=D-~W^LY~tl9To8#(~_Ut{}~U<&Ym z*=PSB&NBX2%lv=u=@)*SZNMaKNGIK2fAIXC9e}(UXWx5aVhgwl1(_FGShS4|I8|}q zoGFI2h2!bF2B6W_MjuB?$s#<^I}#4Ds>=RJA8UHzgK=fOn0>yWLNMbp#m^rBPESdx$Ey$3gLzIICY`7R_0l! z*1kJ*A*Z`ew%}4k59G!?`AwP*djs5fEWv%{6+2GzHJ-!t7voT%R)xmd#YJxE>rYo= zK*sN1+n(<3cNj22-~|-b<>1#>Rz$=f_xJb#t+V&wPTF_X-SC=>5POu{NLEQmf9z*7 zWIWif$mWI2U-K5n8H5$+Ug`jH3gx-Z9pDAHg2Bz!@+I2<8E#ZirFAO$Ye0$&5l)^9 zw|HDw)C7Dm2%a2-R}5&eBluoN8vnil2~2E;>V;=zZN0-nZ9c>N8<2WkZTceL{IAeV7wW(Zm+5!}w>u$lcki&6ZTL{@iTrgjWJ3yJbhs?#J-QR#ZC zd-Q-w&(wD?-;+~QV+>o4mhf4gIrRZz8kiCQ7DP1qzHw$`W_eZ-D7wVGIp!ZlA$axn zeJjVbS|);JEMv%GQZYZqZlYaQwbfTv*7As`lgfx3)?4-OXM`s~BFItNuxvIX{0+Fx zTuShRciZW%4&eTHOcn(g{Hg~&Vsa8s4h3{TKQx-eSYt3=1Q{+l9y4izJ$WpJ{*p_8 z$KXt#SgJkJiq+b^3Lu>rrdxc=Q;o&R-MNPunF_hm)5AKv-^DVX&+thHuj$f1^v)-_ zwGu7okrge9S(9GmN<-k90xap_5)3aYD4@fTb?5v%rcMn451Cm^URgz08Lb~MW`scY z! zNZl+^?^IZbq+#|5BeM{rK})DdiYS8;hxfYK>-92;oIeucy$&n5-W}gqG?Q_V^@o__ z)L0;+B1mnt@Jr~;HPqF}Ac1PrKAaI%+#h0f#0@X_JsE1-*2b9pPz8> z2E|87bDe`?Bfl=W!+r$6uBvUQ^as(!LE~rhmapm3L1A2 zuwywh z0K{{7dyDqp*ILsqS?sW2PK4O)d>jEPi!$DYMHotPY$dgv}~~=g$+hT0f1^FE5joZ_)jMr1kjvuXh#w4)jI@IW9%37={BmcIa}FWlqi4 zrLH$5_41S{+f1Jeo_=urkPwG}Ktpa$A$L5)nwlawNOhj%dGKOoi;IsRy92RE2Jmq2 zC;wz)i;IhsriC!-elr%y!h(So1F!%AP%w~@(Fst3UZ)&!LLVUu{K6N-kPH?xDY=z6ycVm=sMe$ro&>JE z9D&t8^BhNt{mV5m{wSEv1-jVX&4sS|!cT}}ry2@x1OOkw8N!NUN%wVsi{Cmt>XFjR z5H!OUvCoZTE2UF@k2mke4GXePZ*B=pSa6w0bVab&Ukeh!BJX2%@p2oV=pfQ4(tLLaN3kfiFGn(j6&WZTB03I4 z8^+kU|2ZY-7k==XGH-8XpIZru81vT6sRSJpfQ$Pal#NxEK_psCya8#Ed+s9|BTvib zpc^v2bg_|>IbpRHS4e>CdQf_NJX90X!=jLHM=Bc;gbPV)InNq}1_LiDX;sDac(mc^ zb!AI}o~Jrt)9N6`RsSa)o=kNLr(Dx_+yW^soJX!=Ihx|1* zOli(RS}Y#0cHY>&*|7mmj-4{dKX{S)*k{r+5^8HUwUfVgoik6zLM5S#K($44@cDA# zhDC6k3~b+ekX<;%VQN9J;+P8{^FDcI zHdV#+Ok!s@FQ{0*2G@3)9j91>_p?;$S-I?DhawtHQddg!XMkt0xUGf2)oA zb4o({;QJpTgomFZQeK3N&gSk@xIKXzYnSpziOk3^HOvkPP_^S?$fAc3QUXF&A6T_=SyFsdy~7m9Coy``}qR zy_$!xwxJ`og0Z2FTZtJ)$(BgPtp3ulZ9($z6<=gVA>?TQW`oP$QJpnI@yb`dZ7|z4 zxC4p=ub;;zdJ+R0h8vUpTQB~0q(X>TaWuN7Zf*M~717lC;Tt17u>0Vn4I!l7Sn+Rj zYvUfcMx-5y84($&?S>pK3BgJ{Rb!NGzixy^=ieto=#dVmb`-F$uJ zk3|sxaQc6URvJtf%FR@lgyWrA7kmM+cmdF0>attYUFJS5x%6>ps>Xybx8|>Nhz#p8 z$|uzb5}v62m|lc|ZqMFqTQ#WJxLh;A_fc0Q2Gd1%g5#FZBWTiUrTvR73mpDFoc zn+CJ4Zd!R}`>%>Staip4_fW53DJ4U`OiX;(YWGi*JC^pQ{H2r%%3SR?T7=|GXL9gl zr_wE~e_&CDFy};FA7D37Dm(`Lx~iUh5==^WLQ5;Lv|_J^HyiuK@h7oNBifBRLZ)vF zwuES+k1G|NDk&rRg9qBGtI#-SJXmod;=jh{RoF=Ok#SX3xX3<0YooiS%ol?Ng;))E z-6L_`a9;w;s7na!@x>MXdsa7fV6Ehf4{oXQ0KXVDKZGi~<%xX)DQrqkH_CB-?UMZbpxZr1v&Rg_mSun~Xi(Qc3?MHk6Y^}SozCd#$tM*mcXxY<+Qi+c!w zqi&zFNx{)Q@!9t(WnQ#yYG9_EU?az{-aD$L;Rs=XUdFg0HgVd$j}k|2Wksnm>YD=0 zC@gN%$5a&;id8T(?S2nj9+>Nq3+ty<)o!o&9Vgewxu_-BGJZLc_*w9eA4)Vn2lza} z>owrME-O@exKlj0vgH6Drl&~ou7rOVE#4?=0bm3LimmTm?7N>2`Xb_b)xCm`%6)0< zI2u-E6HM9Oy}0f%reIfIrJD4W+(Nw<(F8GYk>?7#y)WW3wi}a^9r@c^J;Rl_5kDlN zGvo$ zn8sWYi-mFQ8koKbmV}uQ_KBLCXs@rv);oGp3MS+s=M^kzW%PFTl{eA*y57UyMKiWd z%~fUpOtSMj*3s#D0O#_By8)2A_3{3|(R2m##jB@t>jj?!;AO>8HoKatb7C#?9iIF8 zCG>)){>66hHgr;91 zvW8OT0+YwKc=awx2QTBOt+%>(2pYy}QUeN7@`GPXM~#{5XG6F#oy-{hKkDI?xnT&i zzZX>@?U-N$olSfY{VKRPWM|Lb)RHQSoX3YOOew4{4RPkkT}GQwilMSFH631Dh27g} zR3v*kCi$`(s^r7|U=G$;af_7S)0iR3W((AW+{fD1dm$9S;J!9Fls(IzuhA$+v_%C9 z6t1`m1S^!j>@+(`Wo?mcz9jvFcOHKDQ}fl)*hY`%1XsA!$O`m{Q%+GI{Tm zHj{5;%Wtfw>Sd86tkXU9m z`8R13u7P^7Xuzs$X+i{(m|i3DOo|)-qywL}#lv~iXa>f~xzW0-`GTCa9jn}(eZ?ZF zE+Hf1fH=j+4s`QS#v$Y;u9fxmh6+XpU42V;SNITSSA~7CzGHn?-@Ic?{vc`Q!S6)~ ztCI!gcg=LCw~;Om4w+B-a$+A{CQ)c)v(p{}X1>UkM$`5+^A5+nVx}C1(`&$0&X}lR zdWYu7mn?tS2Z?_gMR?i#diC%Ce4KC$aNX+d*&$y3=Xv3^Pp-pF&98sQmbJ7koUI{Z zjCC}4t2|ZbVQr>#q@pZcocN$SY(tS%uJ1)|6mePWgemPsx~FSwx!UEcEHs)5+Ejie!!6!Nv?`(2TD_F zaQychPeVE5xxYxF}cv zPmf0CU2XxP9zU~@uRYPCS#jQLHukn0mDh0wnJin@GYS-|kvrpG<8Jzg_ujf za4Sg9ad%s3$))k>9^xs;{_O`!h^oz-$%HT#o?)8WX#T*hunVi!=fCM7mcqv2X{`>y z?XxHN`nQ3s8BJaLGIc+fzH%Ve!z9K;Z?ZMtMQ`0p+Fe~;w0}W1MyADkW&u~ z&Q(`^Yb&qsY}Z<5n9zMqyz>ZEveTyb;dPv6`!}&{e}0^oz>ZYg)uT(@ju5cmmMCrlmHRXXBVFt4r%Y%Kjgb$=PGldK z7a_Tz-{NH~?nb!wdE^c8We<7cqV>L`)iz$cM`{|^QIJeAp-##U<)8acN1l8-?P!b9 zxe=uvh@de7U8_(hEyvcr1B=)Q2mEBpN6JBX`6AP>j&u{=o>lzo$jmRgaAkLvm6grs ze-OuP2?+Jm53}!Dru^f+`0XIA`hN%==aIb8pawqndEcaMm1m*KZaptHJ=^$Hd036?J~o+lYdCr z0IsGXw*Q_W;-q_07i9&chlUbMpow;|oTuyGcp*DuTC+p|jjZ6viq;%z*txd*XQ(7~ z)718eie(k`k8FQk(ndqYeVI641vw!8NZT$`-BCg(YJkPPg1tm`fCW(xYR9vH%X+|F z9ehdzO%#XUx_!fN0(7KFdq1Uj^sG+B!MPjXEiX?6!`!+M@B|Q_pehiamw^^qQF2mp ze?O-;Knbg=w~TX`5+hY!F<{5QRL!135%;yUHosCXy#lCdtF>;_e0ySxiV1+a>bUg3 zL^A%dcK3&n_Z+Tjf^X|d(cpPD*#+3TpQQWlt%n(|-t?fS=X>68GLmr&hPHB2QNW60 zss8sBS}Ok*ap?E6x~w-ln7Xak11?W^NQsak!TXxkn@iuVm(2H!XG6pfsmk`hqiv=p z(ompJ08YU2X+Fcor5-kHN5}8huO?p;QlbZDsQl!tjCR8twjOl1CV~O7;t*@!+ z0ZX{qr8Hi+b$K%^CHNDLe;dNMvrv$B%jdM>^;juzRs(U<_uSKcCln{lDaT`V%TeIw z_tYP7y5*#&r{{IN;hFMA`47C%*{Dlag-!~n_<%I9n|gM=Y!C%^Wdoc=*x=hKu5j3O z4+BNA9|X?~p+KJc|3K7oeP1auM#jCQ9b=gcBle|e&ziO-(8&-a7ih2RH_=&3B(4>@J?{x)rF(q0x#kgdkz`9{vvQ&^Zn8>#_zxmUGMLW}GMyd^C=LDYxJEGV= z2(3pPfqa_-+Www&8m+UoAz)Fj)5=(7$B|X2+e?cAsDy&Fz28-N>k+DGz!6$FwP z7J41G6zscOG9-Zo*I+lcsjf46bCNw}1idXy^k)Rw_Jw?qK_AG0Y@v6e7dsz_aN%27 z{N6vo*W)%SOn3g(Y{h>{gNKtN8vRS~;v2bJeAt@SJt%C`%Ie#ADm3KFU7ay13W;ug z>g%v~Kh0T-9P}O4$2ERk8Rd)N)S!{%TW%IJBcH$+ze#NWm2ki_Nnqm0yh(~~45=mI z`vkHn4hN#~XB!AY^J|e)PDC6Y9Nqii-irdr@CTmCPx5P7YES`U=L;8^wAjK zvchByAV|a##pi!@!tD{MKrdn^-lg;^M(E3*Bel~<=99*QpQwtb6OMLF2py z8*K>LZ$*POR+HA>culI|#L@3`Dbbs_5Z2RP5p*(>+6)tp2*^OOkjubs*i+lGbfGud z_GmAhltc<91MaDV1K7TuB=tdAs&RCw%>0lZP(cd?H@ZoPOwQ7f#t1*~EI)en4hAYWGu9Lu2)7{y)VD(cgk%b4nh(lGCfMDGLG&C*$fcePLNI& zp$}&W#U;|lw>GEB8=(%5-Fn;DYA~g6Ytt8ea24`2M0uhE{6N?GXfCz!`V3(=oh|Zh zh}hR|OTC5MyO)^Ksq0Twz($E2`qwwdyUW>1NYV+hui zGC`^9JQRujfac~68oCw7xU=2=CRDUBJMG_OFyO2rgYT7g+*UuzN@6I9D z3qi@IUpL()U)y)jw3!qK&Ae@<_GKW&3+Kk|Omwuv9+p|A<-9Mfn$Ueekw@NfWwPQ| z61C!;*v$;3bv>o&N;`CUC2)CTl;KuZZK`ADruTGY|FL`Hra$`}jTbs^-j~f>yZ+>f zL?!gN{q6On>Ya{5@T^bJ&T=#EciZBVWG&Xy73znRx|c1Vx;fpxs%*s_NMrbzadVf^ zYwE#IsS-!l?qenEP20wA8qOaG-asKOf9iTa?W){Uqc2Hquhb!Xas0SFLC|?OWCj2DO_lrsO8@coM(D%U zpTD@Y^qpV(x!<>a$XD+x%}Z0@OVc@|>`Tu1Y^|Ha?MiXk*IyPYSz`}ARS&Cm&jwkp z?ro1*A5SEqoDH$H&Odt#ZVKNzXm>m^ihSBoQ=y4TpUNokRyR)tnEuNdP}|S;UzehZ zw;xBzrve5Muwifhym99IjTyu`Ejz?jlH|ro@u281kiep#q?M^Oi9>0QVYl7!GqW}B zem;)LpDSeJBE89+7g1Lv6HU>OPk>ZKlL&u6Fb5nmKr1-4UP_~Xy#ra{T-jNF33lrNFtM8S=HKS&LJ6IAt`C{ZEM=ox#F$5 z;gu}6;lJvJ(xd{VMs(ikcBv=aV+r(%OG1N7SF-z8+`2(;D8J8(Nrc>*UB7hPb-A)={g2Ns=?B9>H9`sUvJ> zy{%-G92HKEtv}Q}76m?k=F8OV6?*LxQWm?!f#5H{Y2d1SOQ%ySpGx_w;Z9iPrYM1J zZdGwU`}731Y=VHJ@POe)@57e{T zk1*k@%?$e0N95abUAJ-#9~?hedwn<}lNshI+A#YzTOJ9CxM z4E+UI@;n#OnWU|(qBV6C!|0uVyI<;&HZvK;B#UPD>660oFB3PV?8g55g+fdzmv<53 z^xg34636sWtUqDktfLj%Z13sRk-5XsDy+4uSqOi~`j5HRWtWITlM6a?^ZVeY_j$*= z66bz~DFwz*nlycFk2ljc@nDHDR>i;B;Q-lRJp-nc`R`SA(wEj{rgG)~5?0Vsx#Ja?!Ok6m&LEPHYmzP##1QGZe>rXPC!O!s z?Cj4ZYw<>d@F?QjmY341=TiNyue=WA>3lbH^$fK2ckjjAa+h;3g8|u>c}%PpIa>zj zb&dLm?)PoicZMH#Ne{kSDe506KcP2Wrv%mmKi*zG2ZpzGe8PuZ7WR6tyC7TlO?1d) zv1&MKaQQi(P%s%ql%A!7RjyQhSfoA@8hyAz7 zzXmJt*8wh>vRePic4rSjEDa>@N2Dv$p`No%pdGM^8Dirq+U&9?_CM~+mffLbU9x4n z&eYgFGMiQjbQ1L>ARv1>DeN!u)}8*Ay0K=7D`K1UFI56og^RmC`PC`CL2#^3R<&MR5B`R<>EvFj zqWR@Cgk>-8+mC>SndXZ!dzHuhc_#91L9A+ab_y*{*N_t4nd0g_8-h}C>jSUrApQ|t#~82Obr`0f z%&Y0l2AS3Cm#kLiK!LrH#DxV8VxBwPgd?lFL+MqXzMbLT{wc z9C~!5E?$bj&W#@LD$9t;y$JYL%NJk}u8bHZEtEOS{_F3Xq%AHjJ(HSWU*n|guuK=j z(->~~E_|Mr33a%XJ^P~v{R+jQh-p=*P`ihr|&IvR4Aznyg?9gSw2C;3a9^4n! z$}c^U^2u`4R9SMC{3q+L%3r9Vf~djDGl)kyi^(E{HI;s+zbD zI@u#K=i{ZNwWiNsKK_2uMEtPMs>J=-few-WsV%CTF0sXMoX&akB_pa}@{TOCsxQ1z z>O?)Gjw_9Tra&z-sbQ9CK=p+TlFJua0v-&y(DGlc29kzcn%#~B!29Oqn?c3;ZaSN} z+h?*FUcnnSp}EBeuw}e7_*nibsCr7RYMH~Ba)Gyv7^lk@XcJo1Xc(Bg_n%nui-kYP z3|l47uFLYJ&8|Dt$$E)@N{OGT(8rut0qjq7uC;Zn<AGG%eD%8J@A1~zZ=b>MAdZY{oRvH)^slN_>{Y|S>9=bYsLPhNR z=NJEL_c#8>={|lZZ~oWW9#H7V7@%k_uhfl=ZhXUV9~fx9?>~GX5y-8Uhxwv@!a8;V4gdHsxE!GM?F)dW2q!SKCGWyt%jI1w_e8gHM6^$dIdM?ia|a=qPP^njH^HP#vZ6R+hdCt?ge= z`lcoka4GKf8d+y&S6=61{p)V5$@=Fkft$=tNG;v+I(`j{9@i`*9OFI^Ale&?M8rB27zMc z6lz$7n1zwFzqB`v1Dqop>WZ9m%%&Z8{*J2&CHo$9G!%+`nDiT|kN408BGhD;lWSw+ zA-k+rz}NKqN;Rda%CnUoam%ldQ<}SDt1O%@FcX9&k-O#rOE^qCup$U)+%)JJM#tKS zBamgTS7bIVKCe7`mDxu1_K*|cs~THiOpVo+CsU16p9m>TExqSlof_B_!#DPJxhrP0 z#_D}ih4L)jt$Pgq@(4-b+Xr7D=!sZ!fv=iQ6-r*_t3G*p=a1<&@pHQjyAEEpc;TT< z0|FI^yqPPib#Nyf-{Ieg=z8VB@lz?7HX4#7z=*5tg4gypoDQ&ObmJEp z)Ch%XEy6PGvDv4Jh82muot4bsZu@jZU{^*$GFIkhWnot>YpaxncrqiXR6LWP@hYpKwyJKB&(YBBBmpUm%cUiVv*Ab81yCYv; ze#LarQ{R=_-voJyOi|!APLiZo$cvYD?$tHjURG?Khax|98`TeM<0tEXG?nJDAhM1Y z@xlQ6^xwG#bGq9#9xheU@cn!!`B1Oq!^1oWq$K5N4J*TM(@%Kk9QEH82*4_&zR(P9 z%!+JHl4udKPkpd)ZI~`v`JtCaOf@<9X1gK`_^r(|F~Rv^^ilW$+z9 zl>}57<;e4FM<@ZTV4-f}$674Q!lGSKy^*7a?3T&UFj^VF!E1x~P!Ta5!8RSRHeuzV zQIb{BX5!+NO39k1Pi_!fR=`bazyeY0LD)>a?x1W@zvOdG(5W6>-wl`Z(OttIJepqz zK8c+@YpWQzKzkFcvu6q+tUhlW;#5+NDiw?8il>hh+Pkk#r46}u6Mz2vQpAFO?Tv1&WF9c@Gj{VxsH|M7Pq9tt5sG0 zMN^UG0xAb}Wm%F%8~69yM`Ipw>!AcMxdX9*d-R;u$`5YX5X>=%vz9iWD*?Ub!=ac~ zUT-1RxNcio= z9VY610#4EnWb5Wz^nl{bw>!QN**vvL?FqeK-#7REOfiS_9U@c_x2U;MLhAV<-_-|p z2@k|G$Td=1Z{AGO{8m>k8a_!xK9lJZk)P?qp!cgOzd~vAn=D9;gy+|#7z(Ew`&8XDwRnbu_>-$hOog-Oi2P|zE_v}wqKL_b$ciZtxuIfg9R*-}0CHEjDlAn*-TeyViZv1R<4WYQu;PGQg`c|nvQUA;3>a0v1V^pK4b6r%=QqI(w{ z->#;TuF~I#tcAqjq=f!Rnsn}+oeiya8-20dw|VYDlA`kEi&sKZ*w#->&q>O%iGvr@ z#~c&3! z9z7KJLBHwIZP(gwHg5>BOQ|4}*3Z3E^fFP2j^?l8VUZ2}6k`Tv;up9A^Ch8*(j4|Nk zETj~Ty>sGsHSHUq0b)HN2`=ZX1??7i#}Ua%D}+h6*zAzS4eEC5cC$l2$@>{(!@)YI z7~Ypu4$w^H`CdM8?5Uu^kS>%e5eO6xgH5Q^n;#4PM)qV@UR%> z3~or~sVG}(JnTE-(YxQNGZyH5O`ue^f6V&oTQ1gH)J?)~HYQU{k3d+pE5oKvhElZ{b*{Fag@SWDBU3YDcVpTk|9X*4LJmZgd@&;_gReN3LuRHPYJM|thhUSu}-&IT9 zY|uPx=qBphH3zgv-e{x1?v5s_wdDmY{lsxx3GEhoCwELN$WCcEj9-`4xRg1Nf8hfX zM)rtPxwO>oiYSvwV|Z^FSHq>_FT@#ojI8Hj1AROi_>J9hifw@Vx@I2xc6lseg61}l z#`J~nQiET{l)&Mg|NQ((Uo^)D=;9@FfDe0+UTjJO{;v~S&Uy;XAK?Ij4~JP-D(mzD zrr`M!C?H13X5LRqcW)U|3U7NMYf5adWkH)n{7!EJiQvF!jx@8$&2E3X=#A(>TAtZA z*uqwm#Az6kaq)HBySo^%XYsq-B@K{Ik!tx!A)64ltx;R`wt>~H$z6eqm zH*#(HCUQ0UJ9|;S^kM%?tANXjSDC{*H$_gj%%yIb4m!UoPHrn23X3x+&K2WZp0uCb zwX4dI*5n~Wz8E%XuqgcY_sn7>5?NCiGy3z(I42}aBNk8)#C4Ek z;`;y$4wFFdZD#2SqQ;c_*#*y-{tcGBHxcFA2VeR^oh3HAjy|3Ax zsj$B$uU3(RlFC13jZSkFO1EDS(eu(sT{n0PrF0+EhV#EGf6ag(gmj$2C#|jh!{|VZ zD|jmpV$V*F6RuLz8^tpY!kA8<`O6ERZI>hXGB$m~dK^eY80($%FtnibLJWS5@2_!M z+_}o1IFiiRX=Q=-*`3nAAyZ3`YW(U$RN8(a+8lWV7Ude>lFL69IO_=KSYNzji(BQA=-8RfyhgSHB^*l|S?Ry<_&O~IR>CY`N*J+0F(X5~>VSXI z!_eO>=eX<`^9F(zXk#jY=9L*TBMOc$(aAJ(tQe?8CDf|MmhV4sKv9t8?2Ak**e^6K zO%jq@j?rH~I6TN49IN;#HWH#4N1~OP6<*JH0LB(>KeN^NRFSxE#o&fTm+KE%3z-X1 z=*BAq7(JqTN%CfwoHQG$)+mzDm{iX1&Wcs5$7CZwr|_Bsr|j45;t~Nz!v}z@ILv2- z378Y8_zBVl-?Ef~N^Hxou>M4UYNq9w*{{8%@Z%(D3nnVntG&dcEqk=U=W#dcziZ`R zq@08aj28@B=c}4yD`n&L3>n<`o4uOt)k7qL7lRg@tvAa{+uR-9#cU~aG44cj{%$3< z%oF@rVzAxl{xP*rqaDdQ$Z@^$l9Og7$iSk2eB+dr)`;((r@z(1w(5hqvF(GP|CXTb z%u&=cGp_pm1BZALm7y*-520V|2+!gLxlOSmldF#MnYor@i&~Fl z0lkRo7vB!VYml>8m3t}^&Va^sxcL#)9wB9&4Q!vjymxX)Y#Q92@~oTKA1;+qCEq&u;w~>}-|& znWFMZA;6Yr`KDP)Q^O3edMkV|W6}2Wk3a3*P4qUykg~*i{N|6SY!j>UzA#6%%h#hN zitoJi83dmLbQo=JReT2{eBpjC+Ar-o-kf~aPl=3HVC^t{C{MZ3eDzE7O((=G)39g} z1L5_WmO0*21|AvdKwb15GBlL2k;vZG zd#)4l^Eas+4Oi+)^=Z-JDfsilt_K+B)u}m~@jBvT`+fZ9d}bmPJl1LsI1#t;#L#{%}&#l|mDfxFA5dw8EoFIJ;7iBt69*$4OcAacY>wiy* z!|y-SU#J9iCu#g4dZTsqI9_Gv6@Q~ZNps7k!;DLksZajP3>m-<&F3|h=bGBT+?|ZV z4m;Md+XE?vyR_?W{ByCJP^1?NuG4(PkmM=9k&d3fS!Bl_j17-(SJ`U=-cC5h^*@b3 z-C`z=JZyfYDpXVFQEj1C6|TB;T~@jmGq0}Q=qlxg*QVg?l~ADk@z6@qUKHPMQpEhOEQnz67#`q z{N|@;;U?apJLbL4u&g2LZa0lD_4SSj3t~1+fMC6BfrFiy)kqX56WdECzA)ZsT;#*L zMx1I0YnphZEZ`~LzVEBwF#elqdHC4)wxmdW$5P(yna!Sbair>&N*EDS45c)BA+a?T zBlME50`v<}v5}crILyBjXuIs_g-Vsvxa%}AF{&Zvb>BVkuiIxEDS~<{U|J5jF9=! zR=Ki(V1z+ytz!XysP#?2fj)!E@^taa@j4ZV%^9-Cc8=qlJuxNljGS@ZH*D?AT_>H; zo_!$h=A|8{2>s-sHMzrvsu`d4L@tM7m_Kp&N)64I$HJCkzo45rB(PAa^?>V$fD+Tx zjD*b9=yLs6g-`b#tum&5-sqeT@ey2_X9s6C zvLEYCe|U@;QpoGAG&^@EHFcS8e;=}PzR&hiV4J5RHqg^Ac8j0fXQC%CH4#g9c5#TQ z`{llvl~kSi#mzjuDNM$fzpmi=^A717A+%WQ0G+;0XS=8$wWea!x+?4U_nC$Z!k8w) zK9`AGC@Y$(6Ka_fVH8NlH+!is z?z>+s*L`@M!aJOr;Xrfk7Ce~NJ%tQ@f!O4VBGf*0(H#Az?Y_1i%N&TC#9L%gdK~X_ zx|0H-&8#!)@x9&mu-B!;Uk5}JME?BY=W*~;5JI~M=UlviMX_GJIuJH!{?b1}?VF}q zY}D6;G!YLxzGl!Ip{~H z$#5z7)GXR=p>x@uIk%s4*w~*Og!rH^+`($Og7H=X>>&Rz%w;jWi4``oTN?YSI^nSbCUf>?f|4u+wBhBW|E?iQOLiXV>2s`j4 zrpuk=GY6L|-eZeK?#;s=url#8&^NbHlZpJ5eePF+1DnH7E)++8l8}Ha%r)%wBo%Va zVOvik2MxePGDGr=&J<}W@iy=z?rLF*s-`-b%B9`yA;O{uZ{rBJmvn)pe`K&>ThWd0 z>46a+W|qInJGm|4Q#FzStr$YB4+7rjONL;uNvQR;-Ltx%u~tg#^w=C?xToGADz6d6 zcJG1)({X-igY!R;F6=FsrNV%e6<8&1B4?>^q6 z!aepvWyp0(t6#H}2AVD5F#)Y!lL^c-!LeXVx2r@?TR6ZH3sx+- z;TY3AP+evZ1u3hsDB{MO;gYvUT}P^|O`Vor`4>wq<(>iU#en=tqH}*xgf-nw@k~Qo z*Mc?8`X)muFT>xxCCfImv~0%~vc!wME4@TZN#EceGb5ADS4t>6t{9Hd$xE}4?I;BT6o}LpHJi_z(g@OJt;Wh5f|qfO3JHwg9u#>4hvv9nzI-YelBBJyOD4mB&VdIckOYl(!nY)^ z&7`2zGlL8OFc}%0zixvlA@(b$IQA5sxgY#I-PWC2m5M%=AJZ3fDUMicok8505|jJu zmuyJa!OIeJZ?lZ#nCB^TclJkzYTLN)Yj~-|YI`@kWDv4JLUIH$1i?X(ru1+&5ZUqZ z`R!L7>#NF?&9PZ;bkLmDseqVfDNg41|2n{`~8;7*O20KAH!Jcm)&Pua_Koa z3?olJAtFsad2t7`^!h}Iyz_V;t}jS!xfPbWu*xp%cP!S{B&>Ht(ljziq$NSXK}JXB zzJn52;qnR^0sl|{Nb|MOe8995L~%#{7;{qxjuPPTqF;CG0@~FW#`V)cGISux8Hkhw zbbfhpcRJ^W>g4ytz}t48h^BPBJnLy;u85uIw;_**RK%i4@avG79EvT9BZ7p~W|y3R0GKs;8x#nJ2M2*stu7b!iO;UL z8R9PfoOoekN5sJnw-r=!UiP5!-NLn8s`-Q5yusecYSTZjQSvh%5GefB_t-6b2+hjF z(_`zs2p1Ov!b%znfP0d3Q1wXAu6|r6=y(6hUfDKgC4R+~2fL{OYA0yI47J_2q&5QWN3Ja#d;x9ZKch2ygBJ3rXqH%d?M`^XV0QQr@m z&thTsgOC)GT{SwC<`?$H>lq()ZXY_`GKK^+R$yg))p zC>BA>`_`Ys#MJM%xvAg(XfMBsDw8g=^kpdVM3 zRr8baP|Sg_UH0C3B9$Aa&EHiFOom)grDfA62HsG>gvTsOzLU;gY^Yaxz2LzLClRXU z8&^fuoM^m`5`)9AaOGWlurT<4bM$zz>S5%;>r4n<(XwSo*cGAPmbA##19PBT) zr^n9+w^T0B*(~P2lyj4w zvl*siY-I+E>cJ$v>G<=TRPQS@$_0iV{4T@^0w$F$jG)h-wB9s5dIiJ^#FS7YU_Jmor6+eOL3goU zh1Q_C$M*GkqsqTW;zKa6lXLEDw31O)HxF>Sy~Y!XWn={~w;9D%bI{Ztov-ExMw)p# zjh^qbRkrzu6=ye%@}?S_IKUE-m)6-392|6<-cD4DI@+f+AzwJ~!;dDWT}!?1UJ*($ z^g0wx`MN@SUxSUDQu?GLeq6qX1D z@L7K$uanFn5xo>@m#Pln&-i-MU$KUYc=Kv%u8Ivp2nQ&-Gr4r``uj8SzUgrzOK*pe zR$-a^l{~QQY4%DNCs2(TN_#EQiZO%Z@|vI|WXgWrb@yKQ*wByssRKj0dhO%I^30|t z>Zl03KL74=l?an?d}4P)jXSn*4J`>eP#gjs#LGpLh~v%~{tBjxx8pQ@e5U57CNv6Y;Kdf21E98DFx1iq^89h5x#IuY4yjRb6ns-{hD0-NCOcl-__mSjeorTA{gNJjloZ(GWX>nrc7X~2B8fAj zw4>*z`K10yYj;O$8xq9|5Dyl6i3Z5qL-+6X8QU@#^n>O{c_jc@uv2s(K3%rtW&ql! zSQE9|K)c!xtw3F1g+vWTO9)*{3;JmEUnlzGS&f=Fz@&h>eO$@jW4wUbAf41Xs+3yT zB-8wyrM74yFr4CoiEgF@T#^fh)2jgRyUYT0I{}gawQoZQ#u20gCY9zw%a(sIJ5VA( zp=lWzsO<8471Rm0B2~>{=HPJDbucZfetOq&HgbRa;vR?QVOzTOk6Dfd7e(UU^I)v- zb^e|R#QIAToIoYo8MBhh?*hpTn0s#x4ksP0z|_VmTKR^^HbdX0hz&`QcHd{yPhMNbLqGDud5VEQFJVKI-Hr_>_?wTK4E}HajGbg+<84_CT)^{W^#^hVu_+5 z>(>i1cHor(2eHpNoy||DdfzXMEH}b1vBT4H>CYCi48(lG10L==Hj4c><*XYPLAaD2#H*K+s4Cb9WhK z73I8Cc}gn5btiiXiKenj1##pFfqr zcgFxwINc9n=ml2lT&nk}6lUNl`z@jaw;LZQf2IQ#pgzU}bc7n4t#((6qJ6;q<@J*+ zzs7(J7)T;oaj>6RzYql|sB+j^HT}Zn%L#D0{#9}4wKz$TsRG<}7Cc*y)eH7@S literal 0 HcmV?d00001 diff --git a/example/assets/avatar.jpg b/example/assets/avatar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..26f00d4f0c8d89b385e69a20453b8f6f10adb175 GIT binary patch literal 6264 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 literal 0 HcmV?d00001 diff --git a/example/src/ChipExample.js b/example/src/ChipExample.js new file mode 100644 index 0000000..1306d9e --- /dev/null +++ b/example/src/ChipExample.js @@ -0,0 +1,56 @@ +/* @flow */ + +import * as React from 'react'; +import { View, StyleSheet, Image } from 'react-native'; +import { Chip, withTheme } from 'react-native-paper'; +import type { Theme } from 'react-native-paper/types'; + +type Props = { + theme: Theme, +}; + +class ChipExample extends React.Component { + static title = 'Chip'; + + render() { + const { + theme: { + colors: { background }, + }, + } = this.props; + return ( + + + {}}>Simple Chip + {}}>Chip with delete button + Chip with icon + ( + + )} + onDelete={() => {}} + > + Chip with image + + + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + padding: 4, + }, + + row: { + flexDirection: 'row', + flexWrap: 'wrap', + }, +}); + +export default withTheme(ChipExample); diff --git a/example/src/ExampleList.js b/example/src/ExampleList.js index b8c3884..b322d33 100644 --- a/example/src/ExampleList.js +++ b/example/src/ExampleList.js @@ -7,6 +7,7 @@ import BottomNavigationExample from './BottomNavigationExample'; import ButtonExample from './ButtonExample'; import CardExample from './CardExample'; import CheckboxExample from './CheckboxExample'; +import ChipExample from './ChipExample'; import DialogExample from './DialogExample'; import DividerExample from './DividerExample'; import FABExample from './FABExample'; @@ -35,6 +36,7 @@ export const examples = { button: ButtonExample, card: CardExample, checkbox: CheckboxExample, + chip: ChipExample, dialog: DialogExample, divider: DividerExample, fab: FABExample, diff --git a/src/components/Chip.js b/src/components/Chip.js new file mode 100644 index 0000000..f2051fe --- /dev/null +++ b/src/components/Chip.js @@ -0,0 +1,121 @@ +/* @flow */ + +import * as React from 'react'; +import { View, StyleSheet, TouchableWithoutFeedback } from 'react-native'; +import color from 'color'; +import Icon from './Icon'; +import Text from './Typography/Text'; +import { black, white } from '../styles/colors'; +import withTheme from '../core/withTheme'; +import type { Theme } from '../types'; +import type { IconSource } from './Icon'; + +type Props = { + /** + * Text content of the `Chip`. + */ + children: React.Node, + /** + * Icon to display for the `Chip`. + */ + icon?: IconSource, + /** + * Function to execute on press. + */ + onPress?: () => mixed, + /** + * Function to execute on delete. The delete button appears only when this prop is specified. + */ + onDelete?: () => mixed, + style?: any, + /** + * @optional + */ + theme: Theme, +}; + +/** + * A Chip can be used to display entities in small blocks. + * + *
+ * + * + *
+ * + * ## Usage + * ```js + * import * as React from 'react'; + * import { Chip } from 'react-native-paper'; + * + * const MyComponent = () => ( + * {}}>Example Chip + * ); + * ``` + */ +class Chip extends React.Component { + render() { + const { children, icon, onPress, onDelete, style, theme } = this.props; + const { dark, colors } = theme; + + const backgroundColor = color(dark ? white : black) + .alpha(0.12) + .rgb() + .string(); + const textColor = dark + ? colors.text + : color(colors.text) + .alpha(0.87) + .rgb() + .string(); + const iconColor = color(colors.text) + .alpha(dark ? 0.7 : 0.54) + .rgb() + .string(); + + return ( + + + {icon ? : null} + + {children} + + {onDelete ? ( + + + + + + ) : null} + + + ); + } +} + +const styles = StyleSheet.create({ + content: { + borderRadius: 16, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-around', + margin: 4, + }, + delete: { + padding: 6, + }, + text: { + marginVertical: 8, + }, +}); + +export default withTheme(Chip); diff --git a/src/components/Icon.js b/src/components/Icon.js index 1632d9c..b6622c9 100644 --- a/src/components/Icon.js +++ b/src/components/Icon.js @@ -37,7 +37,7 @@ export type IconSource = type IconProps = { color: string, - size?: number, + size: number, }; type Props = IconProps & { diff --git a/src/components/__tests__/Chip.test.js b/src/components/__tests__/Chip.test.js new file mode 100644 index 0000000..0a1419b --- /dev/null +++ b/src/components/__tests__/Chip.test.js @@ -0,0 +1,31 @@ +/* @flow */ + +import * as React from 'react'; +import renderer from 'react-test-renderer'; +import Chip from '../Chip'; + +it('renders chip with onPress', () => { + const tree = renderer + .create( {}}>Example Chip) + .toJSON(); + + expect(tree).toMatchSnapshot(); +}); + +it('renders chip with icon', () => { + const tree = renderer.create(Example Chip).toJSON(); + + expect(tree).toMatchSnapshot(); +}); + +it('renders deletable chip', () => { + const tree = renderer + .create( + {}}> + Example Chip + + ) + .toJSON(); + + expect(tree).toMatchSnapshot(); +}); diff --git a/src/components/__tests__/__snapshots__/Chip.test.js.snap b/src/components/__tests__/__snapshots__/Chip.test.js.snap new file mode 100644 index 0000000..48ee801 --- /dev/null +++ b/src/components/__tests__/__snapshots__/Chip.test.js.snap @@ -0,0 +1,344 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders chip with icon 1`] = ` + + +  + + + Example Chip + + +`; + +exports[`renders chip with onPress 1`] = ` + + + Example Chip + + +`; + +exports[`renders deletable chip 1`] = ` + + +  + + + Example Chip + + + +  + + + +`; diff --git a/src/index.js b/src/index.js index 48e98a9..3171854 100644 --- a/src/index.js +++ b/src/index.js @@ -17,6 +17,7 @@ export { default as CardActions } from './components/Card/CardActions'; export { default as CardContent } from './components/Card/CardContent'; export { default as CardCover } from './components/Card/CardCover'; export { default as Checkbox } from './components/Checkbox'; +export { default as Chip } from './components/Chip'; export { default as Dialog } from './components/Dialog/Dialog'; export { default as DialogActions } from './components/Dialog/DialogActions'; export { default as DialogContent } from './components/Dialog/DialogContent';