From 876dd818dfa5d9f4cb83eea90c4e0fb0167ee555 Mon Sep 17 00:00:00 2001 From: Evgeniy Bilov Date: Fri, 15 Aug 2025 18:02:38 +0300 Subject: [PATCH 1/3] reorganize components --- .gitignore | 1 + .storybook/main.ts | 1 + .storybook/manager.ts | 7 +- dist/lib/components/cspr/cspr.d.ts | 4 +- favicon-16x16.png | Bin 452 -> 2100 bytes favicon-32x32.png | Bin 865 -> 2100 bytes favicon.ico | Bin 1248 -> 2100 bytes manifest.json | 8 +- package-lock.json | 1125 ++++++++++++++++- package.json | 3 +- src/01-Home.mdx | 2 +- .../accordion/accordion.stories.tsx | 31 + .../account-info-row.stories.tsx | 3 +- .../account-info-row/account-info-row.tsx | 4 +- src/lib/components/alert/alert.stories.tsx | 2 +- src/lib/components/avatar/avatar.stories.tsx | 2 +- src/lib/components/badge/badge.stories.tsx | 2 +- .../base-table/base-table.stories.tsx | 6 +- .../body-text/body-text.stories.tsx | 2 +- src/lib/components/button/button.stories.tsx | 2 +- .../caption-text/caption-text.stories.tsx | 2 +- .../cep18-token/cep18-token.stories.tsx | 3 +- .../components/cep18-token/cep18-token.tsx | 1 + .../components/checkbox/checkbox.stories.tsx | 2 +- .../circular-indicator.stories.tsx | 2 +- .../confirmation-window.stories.tsx | 1 + .../copy-hash/copy-hash.stories.tsx | 3 +- src/lib/components/copy-hash/copy-hash.tsx | 3 +- src/lib/components/copy/copy.stories.tsx | 32 + src/lib/components/copy/copy.tsx | 83 ++ src/lib/components/cspr/cspr.stories.tsx | 12 +- src/lib/components/cspr/cspr.tsx | 4 +- .../components/dropdown/dropdown.stories.tsx | 2 +- .../components/flex-box/flex-box.stories.tsx | 2 +- .../flex-column/flex-column.stories.tsx | 2 +- .../components/flex-row/flex-row.stories.tsx | 2 +- .../form-field/form-field.stories.tsx | 2 +- .../header-tab-menu-item.stories.tsx | 1 + .../header-text/header-text.stories.tsx | 2 +- src/lib/components/input/input.stories.tsx | 2 +- src/lib/components/label/label.stories.tsx | 2 +- .../modal-content-header.stories.tsx | 1 + .../multiline-text-row.stories.tsx | 3 +- .../multiselect-dropdown.spec.tsx | 11 + .../multiselect-dropdown.stories.tsx | 30 + .../multiselect-dropdown.tsx | 386 ++++++ .../multiselect-input.stories.tsx | 3 +- .../multiselect-input/multiselect-input.tsx | 1 + .../navigation/account/account.stories.tsx | 5 + .../products-menu.stories.tsx | 1 + .../dropdown-menu/dropdown-menu.stories.tsx | 2 +- .../navigation-banner.stories.tsx | 9 +- .../page-tile-header.stories.tsx | 2 +- .../page-tile-tabs-header.stories.tsx | 9 +- .../page-tile-tabs-header.tsx | 7 +- .../page-tile/page-tile.stories.tsx | 2 +- .../pagination/pagination.stories.tsx | 58 +- .../progress-line/progress-line.stories.tsx | 2 +- .../radio-button/radio-button.stories.tsx | 2 +- .../subtitle-text/subtitle-text.stories.tsx | 2 +- .../components/svg-icon/svg-icon.stories.tsx | 4 +- .../tab-menu-container.stories.tsx | 44 + .../tab-menu-container/tab-menu-container.tsx | 27 + .../components/tab-menu/tab-menu.stories.tsx | 27 +- .../table-data-header.stories.tsx | 6 +- src/lib/components/table/table.stories.tsx | 71 +- .../components/text-row/text-row.stories.tsx | 2 +- src/lib/components/text/text.stories.tsx | 2 +- .../components/textarea/textarea.stories.tsx | 2 +- src/lib/components/token/token.stories.tsx | 47 + src/lib/components/token/token.tsx | 34 + .../components/tooltip/tooltip.stories.tsx | 2 +- .../truncate-box/truncate-box.stories.tsx | 2 +- .../user-input-window.stories.tsx | 1 + src/lib/index.ts | 2 + src/lib/utils/formatters.stories.tsx | 2 +- src/static/favicon.ico | Bin 1248 -> 2100 bytes src/storybook-components.tsx | 65 - 78 files changed, 2016 insertions(+), 230 deletions(-) create mode 100644 src/lib/components/accordion/accordion.stories.tsx create mode 100644 src/lib/components/copy/copy.stories.tsx create mode 100644 src/lib/components/copy/copy.tsx create mode 100644 src/lib/components/multiselect-dropdown/multiselect-dropdown.spec.tsx create mode 100644 src/lib/components/multiselect-dropdown/multiselect-dropdown.stories.tsx create mode 100644 src/lib/components/multiselect-dropdown/multiselect-dropdown.tsx create mode 100644 src/lib/components/tab-menu-container/tab-menu-container.stories.tsx create mode 100644 src/lib/components/tab-menu-container/tab-menu-container.tsx create mode 100644 src/lib/components/token/token.stories.tsx create mode 100644 src/lib/components/token/token.tsx diff --git a/.gitignore b/.gitignore index 50ea6320..4da9fc9b 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ yarn-error.log* /src/stories/ *storybook.log +/dist/ diff --git a/.storybook/main.ts b/.storybook/main.ts index d6461f0a..4cc8f4e3 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -15,6 +15,7 @@ const config: StorybookConfig = { }, }, '@storybook/addon-themes', + '@storybook/addon-google-analytics', ], staticDirs: ['../src/static', '../src/lib/assets/fonts'], framework: { diff --git a/.storybook/manager.ts b/.storybook/manager.ts index 82740ee6..df70fd86 100644 --- a/.storybook/manager.ts +++ b/.storybook/manager.ts @@ -2,5 +2,8 @@ import { addons } from 'storybook/manager-api'; import yourTheme from './theme'; addons.setConfig({ - theme: yourTheme, -}); \ No newline at end of file + theme: yourTheme, +}); + +window.STORYBOOK_GA_ID = 'G-H4X1J4017T'; +window.STORYBOOK_REACT_GA_OPTIONS = {}; diff --git a/dist/lib/components/cspr/cspr.d.ts b/dist/lib/components/cspr/cspr.d.ts index 490ca67c..b5505192 100644 --- a/dist/lib/components/cspr/cspr.d.ts +++ b/dist/lib/components/cspr/cspr.d.ts @@ -4,6 +4,6 @@ export interface CsprProps { precisionCase?: PrecisionCase; hideCsprCurrency?: boolean; } -export declare function Cspr({ motes, precisionCase, hideCsprCurrency }: CsprProps): import("react/jsx-runtime").JSX.Element; -export default Cspr; +export declare function CSPR({ motes, precisionCase, hideCsprCurrency }: CsprProps): import("react/jsx-runtime").JSX.Element; +export default CSPR; //# sourceMappingURL=cspr.d.ts.map \ No newline at end of file diff --git a/favicon-16x16.png b/favicon-16x16.png index 8bc93a7dbb17d8b56a4cb44aeef9fbcab3904158..e9bed07a31e128364871c11e2bf3d2be91ce3958 100644 GIT binary patch delta 2072 zcmV+z2o*?cC?4H1U z>_hEn^5{&Y?gF4iQ2+>l_;aIghKV9lB)HsN?C!T<01C$%er0QT{t34W`V4#cVGV4$ zhJ*LGt+%%qr+dLV0tNRLx6ix6e|+3-QDf&&ASx&bsC_T-&-b{!wERf}FnLqKzgJKQ ziV&zU;jb4Cg6yHX1o&}L!9NXTMpl86p9J{w7C)ZgHihx10e(KOpjkpDWD}_Hf$LKU zBgifqye-t$yGzJ`4izl>=TJ`X{@tAJ5RZWB2b~9 z{8sDzr0)bd!H4tg+*Pnn0;RGV+FzjC|^}vcq7dwdMC%sYY%7i-tjaXLme*pPO@?l2v&Xq_s zD*w7AP-!wBAU_(JE*gs&#D?Z~N7d`@ID5sBZx|T!%pn(eJc)_Iv0Y_o{ipm*Ch$n( zX6qZ(Vbbi$lo+JLB?@w(3xjl6!<3<3)cEmtNC#~qp`GRBK*=|~g{Uz5Nn6PAq6>(w z1PfEaWiSqnr~y&Re`@ip%bZBGn9xLo8PK(?7VVw}Pk^dDr;0a(@vp6)Jk$x3!XVLp z^Wt=O-@&OEFNI2~@zOb0$Ko16(4d%*o4T8+gxTqE5o5v+wM$0^9&;j&({^AJb+$itBf-ZRU&UT6o;0-&lF)N)1L?aAoYuqV7{5e+&=15I3bBsBpxq8Gif& z>~UlBl#x`sb_;_jPbVUdG=xoe$J$!ggvQ%|H7JoF3sPrgtp&*tlXdrLI3>C%J!7~T z=;~1T7A?rU(NEqV>w|N$h%cmxHTWkJHE~xu>!NGp7!HTs7TpVf@F%KCM?Uyd6LUL2 z(s2zS6FgB5f0P7!H&YMv@hK~7l%1zc#pw`P857n;CaAM6?q5k;&wIO?jRol*JXsKb z@W!mnhV^8)otpeB4OD0VO$6(Ya>CI(W$q_q^7G8Xx=w_3aknKC37sJ6!5>&#P$eDj zd$5LIMccFB(#QwZIS;=%X7_XMaxiARcb@S*D{Tu8e_p8Ff7K7vG#e%c8;V{Cf{_^ZlO~Mq9ATS@U^{FPPCQv3lO@{dWp|RL zz#RXg33QYNg=)oN=&pJLsa`^{sDA7IOC}pf5CF-#@4gr81sWK8fdoN@xnyZ2wf}M(b4iwv;GcIf8~5pMm}B-Zu0gO?IgGq z^~w8MPt_7N!HGB*8YT(0e5j$Kod7NUaR0`p*8}5hN5|&pnFk;LH$;LBjob_^EkO!ls`iEI@5R0#%U%>P)7+{t$qvI?7>|Wz zf1?9u3@`K=pbNmY?JTXIoI`MM>oRo{M$NDsiX-hr;Qxk%g#5fSA0G<7jSin&2D%A@ zlJoP-hK~;k-|`*XOa!ELLwKn3^7C}I7GuPE6z6f2huL}vZWg?+3xWqyXe+qhI0;h6EjMh==NaAy;c0!6;N$vZY6!)2CvuUO%sEbeI?72BwzZr9@*&Bn*uXG5Gi= zjh4ARG({VOacCeu{)xlP+;(9Vf7p-Uq685bI!)s-bk)Q81(sdY<@mTZpA+1vYq7o zd{PP|ahY&on=Xb#a!x7!vK=!&9~;>g&qgQ{HmUoViiYMjngg%9e0(isl2*kh2gUn7 zhu$B0Mm_VehZ#b!{Kc&G?!JRF`C`|RG{_!L0{;O?{vr}!8Fpa+0000Fks5-uc~~4Gcu#I;Q3d;fAWLuJk#4q7VfP%zL1L22qzh3dX=IH#mGU zaaU=_$Rv>_#cs*v-p#Kq3_u-Yf4F~Y41~f>1bl7WV61_&2jGWsYEDf%mrTgudkL?I zf-y00!9*%L^{G_odf=vC3%uXy816IfTb}hBSW9?oM`gw*8crb?fVD(ZIx9DRpV7|} z+YeyMi&}ly@NE58pq{Tgfxc1d5;Frt4oqh3Nn_m&8OQ~#IlQ88R56W`aR~_C+o|nJ z_CUViUlE%2ElbEwr`Bdt;H{!n_!AsP_zIlUR*yDmA<)zZQ+L?&l(#m9f8p}Ed&)ug zl$nVX+hm-{vE!4Nc4{70n;6W9n47|~$H;!9a546!e*vEWt^@Dn8}$GH002ovPDHLk FV1k*;w5|XE diff --git a/favicon-32x32.png b/favicon-32x32.png index fabf52de4ecab323d6567f8b7919f09397f3a9dc..e9bed07a31e128364871c11e2bf3d2be91ce3958 100644 GIT binary patch delta 2072 zcmV+z2o*?cC?4H1U z>_hEn^5{&Y?gF4iQ2+>l_;aIghKV9lB)HsN?C!T<01C$%er0QT{t34W`V4#cVGV4$ zhJ*LGt+%%qr+dLV0tNRLx6ix6e|+3-QDf&&ASx&bsC_T-&-b{!wERf}FnLqKzgJKQ ziV&zU;jb4Cg6yHX1o&}L!9NXTMpl86p9J{w7C)ZgHihx10e(KOpjkpDWD}_Hf$LKU zBgifqye-t$yGzJ`4izl>=TJ`X{@tAJ5RZWB2b~9 z{8sDzr0)bd!H4tg+*Pnn0;RGV+FzjC|^}vcq7dwdMC%sYY%7i-tjaXLme*pPO@?l2v&Xq_s zD*w7AP-!wBAU_(JE*gs&#D?Z~N7d`@ID5sBZx|T!%pn(eJc)_Iv0Y_o{ipm*Ch$n( zX6qZ(Vbbi$lo+JLB?@w(3xjl6!<3<3)cEmtNC#~qp`GRBK*=|~g{Uz5Nn6PAq6>(w z1PfEaWiSqnr~y&Re`@ip%bZBGn9xLo8PK(?7VVw}Pk^dDr;0a(@vp6)Jk$x3!XVLp z^Wt=O-@&OEFNI2~@zOb0$Ko16(4d%*o4T8+gxTqE5o5v+wM$0^9&;j&({^AJb+$itBf-ZRU&UT6o;0-&lF)N)1L?aAoYuqV7{5e+&=15I3bBsBpxq8Gif& z>~UlBl#x`sb_;_jPbVUdG=xoe$J$!ggvQ%|H7JoF3sPrgtp&*tlXdrLI3>C%J!7~T z=;~1T7A?rU(NEqV>w|N$h%cmxHTWkJHE~xu>!NGp7!HTs7TpVf@F%KCM?Uyd6LUL2 z(s2zS6FgB5f0P7!H&YMv@hK~7l%1zc#pw`P857n;CaAM6?q5k;&wIO?jRol*JXsKb z@W!mnhV^8)otpeB4OD0VO$6(Ya>CI(W$q_q^7G8Xx=w_3aknKC37sJ6!5>&#P$eDj zd$5LIMccFB(#QwZIS;=%X7_XMaxiARcb@S*D{Tu8e_p8Ff7K7vG#e%c8;V{Cf{_^ZlO~Mq9ATS@U^{FPPCQv3lO@{dWp|RL zz#RXg33QYNg=)oN=&pJLsa`^{sDA7IOC}pf5CF-#@4gr81sWK8fdoN@xnyZ2wf}M(b4iwv;GcIf8~5pMm}B-Zu0gO?IgGq z^~w8MPt_7N!HGB*8YT(0e5j$Kod7NUaR0`p*8}5hN5|&pnFk;LH$;LBjob_^EkO!ls`iEI@5R0#%U%>P)7+{t$qvI?7>|Wz zf1?9u3@`K=pbNmY?JTXIoI`MM>oRo{M$NDsiX-hr;Qxk%g#5fSA0G<7jSin&2D%A@ zlJoP-hK~;k-|`*XOa!ELLwKn3^7C}I7GuPE6z6f2huL}vZWg?+3xWqyXe+qhI0;h6EjMh==NaAy;c0!6;N$vZY6!)2CvuUO%sEbeI?72BwzZr9@*&Bn*uXG5Gi= zjh4ARG({VOacCeu{)xlP+;(9Vf7p-Uq685bI!)s-bk)Q81(sdY<@mTZpA+1vYq7o zd{PP|ahY&on=Xb#a!x7!vK=!&9~;>g&qgQ{HmUoViiYMjngg%9e0(isl2*kh2gUn7 zhu$B0Mm_VehZ#b!{Kc&G?!JRF`C`|RG{_!L0{;O?{vr}!8Fpa+0000~bkg1a@7_wGA`El{{29>GE=~J1G>yo8p3+DFHKF@gg&%Q6 zvQXO=7`)TK<0l{;1`IbLR`_{@e~RefNya)dcykWS?}_t2@fh`xD109Wl=>q4>`rJ_5WrxEHqCD#KCTIMwl@FZ9yHSw+8YEADVNu1#GC_h zInKW_I+$46>z3$v=Ip1Ynp@l`Op~>Dx;SS`_?QSRFgrnW=7e;_*NnJ9f5i8);M2h0 zlbis~EOi4efEttb6M3Eu<=*W-y*@q8T;VLRI6*tu)T5N!3z+mbZ&_G{J7Ov`L~|s* z@|i;-=`69$o#v3;MHYB5Ks$^rIcri@HpgCOOvB9^O7a*Ggee%r!1A*QRmP{AkP8-j^!XC4k@?>ui-Fjue`(oCyEvjCT(U2x zXpQtYU-Ky_Mark?I$qs$NJ3_Qh1OVQfOap=SbLWxWrtnNE^}#^Uf{n8U`ud9G-H|1 zxkl*Xda;fb!1-x}R#+zPL33~Dwa003tr}&q5fq~I6!}_S6H(%bzxEZfw9nuQx@vw_ z0!S>R`wfK%QV?JGf8vklJafkb1p%B8yx;(}h43jz+GQ2;vV{4;dgEF+3#7NJZHaH; zMA9xhA6Crwec!l204D@*_=w7ZX_B>hcs`7nR!PfVku)MrH9hvVy=?RbetmC9?|#v^ z;Jw@EZ~Z$C1c{`7w5H`>E{#<$VKtn{I_``gC$7M4#Xp8@5-=0ss*+Iv0000o*?cC?4H1U z>_hEn^5{&Y?gF4iQ2+>l_;aIghKV9lB)HsN?C!T<01C$%er0QT{t34W`V4#cVGV4$ zhJ*LGt+%%qr+dLV0tNRLx6ix6e|+3-QDf&&ASx&bsC_T-&-b{!wERf}FnLqKzgJKQ ziV&zU;jb4Cg6yHX1o&}L!9NXTMpl86p9J{w7C)ZgHihx10e(KOpjkpDWD}_Hf$LKU zBgifqye-t$yGzJ`4izl>=TJ`X{@tAJ5RZWB2b~9 z{8sDzr0)bd!H4tg+*Pnn0;RGV+FzjC|^}vcq7dwdMC%sYY%7i-tjaXLme*pPO@?l2v&Xq_s zD*w7AP-!wBAU_(JE*gs&#D?Z~N7d`@ID5sBZx|T!%pn(eJc)_Iv0Y_o{ipm*Ch$n( zX6qZ(Vbbi$lo+JLB?@w(3xjl6!<3<3)cEmtNC#~qp`GRBK*=|~g{Uz5Nn6PAq6>(w z1PfEaWiSqnr~y&Re`@ip%bZBGn9xLo8PK(?7VVw}Pk^dDr;0a(@vp6)Jk$x3!XVLp z^Wt=O-@&OEFNI2~@zOb0$Ko16(4d%*o4T8+gxTqE5o5v+wM$0^9&;j&({^AJb+$itBf-ZRU&UT6o;0-&lF)N)1L?aAoYuqV7{5e+&=15I3bBsBpxq8Gif& z>~UlBl#x`sb_;_jPbVUdG=xoe$J$!ggvQ%|H7JoF3sPrgtp&*tlXdrLI3>C%J!7~T z=;~1T7A?rU(NEqV>w|N$h%cmxHTWkJHE~xu>!NGp7!HTs7TpVf@F%KCM?Uyd6LUL2 z(s2zS6FgB5f0P7!H&YMv@hK~7l%1zc#pw`P857n;CaAM6?q5k;&wIO?jRol*JXsKb z@W!mnhV^8)otpeB4OD0VO$6(Ya>CI(W$q_q^7G8Xx=w_3aknKC37sJ6!5>&#P$eDj zd$5LIMccFB(#QwZIS;=%X7_XMaxiARcb@S*D{Tu8e_p8Ff7K7vG#e%c8;V{Cf{_^ZlO~Mq9ATS@U^{FPPCQv3lO@{dWp|RL zz#RXg33QYNg=)oN=&pJLsa`^{sDA7IOC}pf5CF-#@4gr81sWK8fdoN@xnyZ2wf}M(b4iwv;GcIf8~5pMm}B-Zu0gO?IgGq z^~w8MPt_7N!HGB*8YT(0e5j$Kod7NUaR0`p*8}5hN5|&pnFk;LH$;LBjob_^EkO!ls`iEI@5R0#%U%>P)7+{t$qvI?7>|Wz zf1?9u3@`K=pbNmY?JTXIoI`MM>oRo{M$NDsiX-hr;Qxk%g#5fSA0G<7jSin&2D%A@ zlJoP-hK~;k-|`*XOa!ELLwKn3^7C}I7GuPE6z6f2huL}vZWg?+3xWqyXe+qhI0;h6EjMh==NaAy;c0!6;N$vZY6!)2CvuUO%sEbeI?72BwzZr9@*&Bn*uXG5Gi= zjh4ARG({VOacCeu{)xlP+;(9Vf7p-Uq685bI!)s-bk)Q81(sdY<@mTZpA+1vYq7o zd{PP|ahY&on=Xb#a!x7!vK=!&9~;>g&qgQ{HmUoViiYMjngg%9e0(isl2*kh2gUn7 zhu$B0Mm_VehZ#b!{Kc&G?!JRF`C`|RG{_!L0{;O?{vr}!8Fpa+00005a0vDfEif$PtS z__2g*uw`KUh5Sd1EzuF3Bp`4*1uovw?F^G4-)Gol?mRbW4nejg?d89NE;hp3UZ6oA z5%C`|De*Y=iPy8G`X-fg(%gq=!Bz&8%7|l3qB733ZyGvM>z?KmZxs#Ae`r)8{ow-B zBWSz=2@%Y{H+-{bvWuVuwCEOy0@h%ld)riWp;Wn!8UxB;#cRaD2Dn^>yYdzr6E78Q zE&>v`c#p|-zQT!Zyeg(tNL#*5v?p}nFrf85MKt6~GuO>IL$)z}>`sRPW;#|>;AX%= zJPSkvTe+^&SDDI%w&BQ@f1D+O-_H>jmFrZC#U6P5UE@rmvw;H440!Po@!+^lQiB&X zHDfq`s-ABV@s}TZj7O?>bziEWmcZ{h;$r1JlbaTqc@%w}MkNK!fH*=_*v5O~F$zb) z*H-_4G=<%lf4Mf^Df1kEBF}iC1JWP6Ek$pLxin_J1NC`TO{s$9e_YV^({fVmOl4iflNz6?uzQwpQ9^V3Y<#V<2<4OL8yH{BIj^iV=_u zY%n>P6}Sr5`Pk~*e|TBwC?`VOD*PcP#~*8j{W!yX7aB5RdWSzl`#cdA-vcFXAL$b2 zx^`mvlEm#RukM~Hq7kd21vMSFB@nEG$$NcSqa*f|j>bwS#DjX9%|Ivu=brs+qwUHG z*}yN-BOa@W4}e*ETho6pcF5GjaR44RD^4G5WX6b{!FHjJe+SC^nt40%SW9Nhdf*hh zf#*V<-H$h3&D^3DtjKaT1Nloti3hbwn_Q?YITux{lQ%U%Mw0uaRQmv z!_GmZKQ1$Ke_!bTv0JfS$fPgbGJs<%5`jpZ%iJi6D$&Y$F4PZN#kpG(h^G9&Z{&eV zGFz+@!uLR@^`Ny4>`CZUCzuOqqw0Ln)(y;)YHlTUwUpb((p5Es#$-f|h(os?5DE#4Fl*LQ7+TYLBxUh$!ZcQ~YE>ZmFkG zgujy6fDWiV#vKU7$Uk$v-_uqCuH~w_-^=5y;)f!qLkKT1m;slVikX@D$&IZV;vK{H cLqxz|6q_`sx3JPW^8f$<07*qoM6N<$g6Cs8+W-In diff --git a/manifest.json b/manifest.json index 3161052d..8c32d887 100644 --- a/manifest.json +++ b/manifest.json @@ -8,13 +8,13 @@ "type": "image/x-icon" }, { - "src": "favicon-16x16.png", - "type": "image/png", + "src": "favicon-16x16.svg", + "type": "image/svg", "sizes": "192x192" }, { - "src": "favicon-32x32.png", - "type": "image/png", + "src": "favicon-32x32.svg", + "type": "image/svg", "sizes": "512x512" } ], diff --git a/package-lock.json b/package-lock.json index bf78b8d6..ed09cf34 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,15 @@ { - "name": "@make-software/cspr.design", - "version": "2.0.0-beta1", + "name": "@make-software/cspr-design", + "version": "2.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@make-software/cspr.design", + "name": "@make-software/cspr-design", "version": "2.0.0", "dependencies": { "@formatjs/intl": "^3.1.6", + "@storybook/addon-google-analytics": "^6.2.9", "big.js": "^7.0.1", "copy-to-clipboard": "^3.3.3", "date-fns": "^4.1.0", @@ -20,7 +21,6 @@ "react-loading-skeleton": "^3.5.0", "react-modal": "^3.16.1", "reakit": "^1.3.11", - "remark-gfm": "^4.0.1", "styled-components": "^5.3.11", "web-vitals": "^4.2.4" }, @@ -42,6 +42,7 @@ "@vitejs/plugin-react": "^4.7.0", "babel-plugin-named-exports-order": "^0.0.2", "eslint-plugin-storybook": "^9.0.18", + "remark-gfm": "^4.0.1", "shx": "^0.4.0", "storybook": "^9.0.18", "typescript": "^5.8.3", @@ -383,6 +384,52 @@ "node": ">=6.9.0" } }, + "node_modules/@emotion/cache": { + "version": "10.0.29", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", + "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", + "license": "MIT", + "dependencies": { + "@emotion/sheet": "0.9.4", + "@emotion/stylis": "0.8.5", + "@emotion/utils": "0.11.3", + "@emotion/weak-memoize": "0.2.5" + } + }, + "node_modules/@emotion/core": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.3.1.tgz", + "integrity": "sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/cache": "^10.0.27", + "@emotion/css": "^10.0.27", + "@emotion/serialize": "^0.11.15", + "@emotion/sheet": "0.9.4", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "react": ">=16.3.0" + } + }, + "node_modules/@emotion/css": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz", + "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==", + "license": "MIT", + "dependencies": { + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3", + "babel-plugin-emotion": "^10.0.27" + } + }, + "node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "license": "MIT" + }, "node_modules/@emotion/is-prop-valid": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", @@ -398,6 +445,82 @@ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", "license": "MIT" }, + "node_modules/@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" + } + }, + "node_modules/@emotion/serialize/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "license": "MIT" + }, + "node_modules/@emotion/serialize/node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "license": "MIT" + }, + "node_modules/@emotion/sheet": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", + "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==", + "license": "MIT" + }, + "node_modules/@emotion/styled": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", + "license": "MIT", + "dependencies": { + "@emotion/styled-base": "^10.3.0", + "babel-plugin-emotion": "^10.0.27" + }, + "peerDependencies": { + "@emotion/core": "^10.0.27", + "react": ">=16.3.0" + } + }, + "node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" + } + }, + "node_modules/@emotion/styled-base/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/@emotion/styled-base/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "license": "MIT" + }, "node_modules/@emotion/stylis": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", @@ -410,6 +533,18 @@ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", "license": "MIT" }, + "node_modules/@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", + "license": "MIT" + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.8", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", @@ -1284,6 +1419,22 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@reach/router": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.4.tgz", + "integrity": "sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA==", + "license": "MIT", + "dependencies": { + "create-react-context": "0.3.0", + "invariant": "^2.2.3", + "prop-types": "^15.6.1", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": "15.x || 16.x || 16.4.0-alpha.0911da3", + "react-dom": "15.x || 16.x || 16.4.0-alpha.0911da3" + } + }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-beta.27", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", @@ -1761,6 +1912,32 @@ "storybook": "^9.1.0" } }, + "node_modules/@storybook/addon-google-analytics": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-google-analytics/-/addon-google-analytics-6.2.9.tgz", + "integrity": "sha512-L+cSXCWZ6y0QWd2gSeUGBfA6iVCirI/OF2TtlbeJkFshqtKlT2ypwtKaGHK9Euw1e0PbS0+RTUW31m96ofBhDg==", + "license": "MIT", + "dependencies": { + "@storybook/addons": "6.2.9", + "@storybook/core-events": "6.2.9", + "core-js": "^3.8.2", + "global": "^4.4.0", + "react-ga": "^2.7.0", + "regenerator-runtime": "^0.13.7" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/@storybook/addon-themes": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-9.1.0.tgz", @@ -1778,6 +1955,59 @@ "storybook": "^9.1.0" } }, + "node_modules/@storybook/addons": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.2.9.tgz", + "integrity": "sha512-GnmEKbJwiN1jncN9NSA8CuR1i2XAlasPcl/Zn0jkfV9WitQeczVcJCPw86SGH84AD+tTBCyF2i9UC0KaOV1YBQ==", + "license": "MIT", + "dependencies": { + "@storybook/api": "6.2.9", + "@storybook/channels": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/core-events": "6.2.9", + "@storybook/router": "6.2.9", + "@storybook/theming": "6.2.9", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/@storybook/api": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.2.9.tgz", + "integrity": "sha512-okkA3HAScE9tGnYBrjTOcgzT+L1lRHNoEh3ZfGgh1u/XNEyHGNkj4grvkd6nX7BzRcYQ/l2VkcKCqmOjUnSkVQ==", + "license": "MIT", + "dependencies": { + "@reach/router": "^1.3.4", + "@storybook/channels": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/core-events": "6.2.9", + "@storybook/csf": "0.0.1", + "@storybook/router": "6.2.9", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.2.9", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^5.1.0", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, "node_modules/@storybook/builder-vite": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-9.1.0.tgz", @@ -1797,6 +2027,45 @@ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" } }, + "node_modules/@storybook/channels": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.2.9.tgz", + "integrity": "sha512-6dC8Fb2ipNyOQXnUZMDeEUaJGH5DMLzyHlGLhVyDtrO5WR6bO8mQdkzf4+5dSKXgCBNX0BSkssXth4pDjn18rg==", + "license": "MIT", + "dependencies": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "node_modules/@storybook/client-logger": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.2.9.tgz", + "integrity": "sha512-IfOQZuvpjh66qBInQCJOb9S0dTGpzZ/Cxlcvokp+PYt95KztaWN3mPm+HaDQCeRsrWNe0Bpm1zuickcJ6dBOXg==", + "license": "MIT", + "dependencies": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "node_modules/@storybook/core-events": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.2.9.tgz", + "integrity": "sha512-xQmbX/oYQK1QsAGN8hriXX5SUKOoTUe3L4dVaVHxJqy7MReRWJpprJmCpbAPJzWS6WCbDFfCM5kVEexHLOzJlQ==", + "license": "MIT", + "dependencies": { + "core-js": "^3.8.2" + } + }, + "node_modules/@storybook/csf": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz", + "integrity": "sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15" + } + }, "node_modules/@storybook/csf-plugin": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-9.1.0.tgz", @@ -1911,6 +2180,153 @@ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" } }, + "node_modules/@storybook/router": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.2.9.tgz", + "integrity": "sha512-7Bn1OFoItCl8whXRT8N1qp1Lky7kzXJ3aslWp5E8HcM8rxh4OYXfbaeiyJEJxBTGC5zxgY+tAEXHFjsAviFROg==", + "license": "MIT", + "dependencies": { + "@reach/router": "^1.3.4", + "@storybook/client-logger": "6.2.9", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "ts-dedent": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/@storybook/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", + "license": "ISC", + "dependencies": { + "core-js": "^3.6.5", + "find-up": "^4.1.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/semver/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/semver/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/semver/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/semver/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/semver/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/theming": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.2.9.tgz", + "integrity": "sha512-183oJW7AD7Fhqg5NT4ct3GJntwteAb9jZnQ6yhf9JSdY+fk8OhxRbPf7ov0au2gYACcGrWDd9K5pYQsvWlP5gA==", + "license": "MIT", + "dependencies": { + "@emotion/core": "^10.1.1", + "@emotion/is-prop-valid": "^0.8.6", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.2.9", + "core-js": "^3.8.2", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/@storybook/theming/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/@storybook/theming/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "license": "MIT" + }, + "node_modules/@storybook/theming/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", @@ -2272,6 +2688,7 @@ "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/ms": "*" @@ -2318,6 +2735,12 @@ "@types/react": "*" } }, + "node_modules/@types/is-function": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.3.tgz", + "integrity": "sha512-/CLhCW79JUeLKznI6mbVieGbl4QU5Hfn+6udw1YHZoofASjbQ5zaP5LzAUZYDpRYEjS4/P+DhEgyJ/PQmGGTWw==", + "license": "MIT" + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -2360,6 +2783,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "*" @@ -2376,6 +2800,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, "license": "MIT" }, "node_modules/@types/node": { @@ -2388,18 +2813,31 @@ "undici-types": "~7.10.0" } }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, "node_modules/@types/prop-types": { "version": "15.7.15", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", - "dev": true, "license": "MIT" }, + "node_modules/@types/reach__router": { + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.15.tgz", + "integrity": "sha512-5WEHKGglRjq/Ae3F8UQxg+GYUIhTUEiyBT9GKPoOLU/vPTn8iZrRbdzxqvarOaGludIejJykHLMdOCdhgWqaxA==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/react": { "version": "18.3.23", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz", "integrity": "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==", - "dev": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -2456,6 +2894,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, "license": "MIT" }, "node_modules/@types/yargs": { @@ -2995,6 +3434,81 @@ "node": ">=4" } }, + "node_modules/babel-plugin-emotion": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz", + "integrity": "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/serialize": "^0.11.16", + "babel-plugin-macros": "^2.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^1.0.5", + "find-root": "^1.1.0", + "source-map": "^0.5.7" + } + }, + "node_modules/babel-plugin-emotion/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "license": "MIT" + }, + "node_modules/babel-plugin-emotion/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/babel-plugin-emotion/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/babel-plugin-emotion/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/babel-plugin-named-exports-order": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz", @@ -3030,10 +3544,17 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==", + "license": "MIT" + }, "node_modules/bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -3135,11 +3656,39 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -3192,6 +3741,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -3236,6 +3786,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -3324,6 +3875,17 @@ "toggle-selection": "^1.0.6" } }, + "node_modules/core-js": { + "version": "3.45.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.45.0.tgz", + "integrity": "sha512-c2KZL9lP4DjkN3hk/an4pWn5b5ZefhRJnAc42n6LJ19kSnbeRbdQZE5dSeE2LBol1OwJD3X1BQvFTAsa8ReeDA==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/cosmiconfig": { "version": "8.3.6", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", @@ -3351,6 +3913,20 @@ } } }, + "node_modules/create-react-context": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz", + "integrity": "sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==", + "license": "MIT", + "dependencies": { + "gud": "^1.0.0", + "warning": "^4.0.3" + }, + "peerDependencies": { + "prop-types": "^15.0.0", + "react": "^0.14.0 || ^15.0.0 || ^16.0.0" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -3397,7 +3973,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, "license": "MIT" }, "node_modules/date-fns": { @@ -3444,6 +4019,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "dev": true, "license": "MIT", "dependencies": { "character-entities": "^2.0.0" @@ -3463,6 +4039,12 @@ "node": ">=6" } }, + "node_modules/deep-object-diff": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.9.tgz", + "integrity": "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==", + "license": "MIT" + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -3477,6 +4059,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -3486,6 +4069,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, "license": "MIT", "dependencies": { "dequal": "^2.0.0" @@ -3525,6 +4109,11 @@ "dev": true, "license": "MIT" }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, "node_modules/dot-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", @@ -3552,6 +4141,20 @@ "react": ">=16.12.0" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -3573,6 +4176,21 @@ "dev": true, "license": "MIT" }, + "node_modules/emotion-theming": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emotion-theming/-/emotion-theming-10.3.0.tgz", + "integrity": "sha512-mXiD2Oj7N9b6+h/dC6oLf9hwxbtKHQjoIqtodEyL8CpkN4F3V4IK/BT4D0C7zSs4BBFOu4UlPJbvvBLa88SGEA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/weak-memoize": "0.2.5", + "hoist-non-react-statics": "^3.3.0" + }, + "peerDependencies": { + "@emotion/core": "^10.0.27", + "react": ">=16.3.0" + } + }, "node_modules/end-of-stream": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", @@ -3600,12 +4218,41 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/esbuild": { "version": "0.25.8", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", @@ -3875,6 +4522,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, "license": "MIT" }, "node_modules/facepaint": { @@ -3887,7 +4535,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, "license": "MIT" }, "node_modules/fast-glob": { @@ -3945,6 +4592,12 @@ "node": ">=8" } }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, "node_modules/find-up": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", @@ -4014,7 +4667,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4030,6 +4682,43 @@ "node": ">=6.9.0" } }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -4077,6 +4766,28 @@ "node": ">= 6" } }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "license": "MIT", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -4084,6 +4795,12 @@ "dev": true, "license": "ISC" }, + "node_modules/gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==", + "license": "MIT" + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4094,11 +4811,37 @@ "node": ">=8" } }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -4167,7 +4910,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -4222,18 +4964,25 @@ "tslib": "^2.8.0" } }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, "license": "MIT" }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -4281,6 +5030,12 @@ "node": ">=8" } }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "license": "MIT" + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -4308,6 +5063,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -4316,6 +5072,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -4326,6 +5100,23 @@ "node": ">=0.10.0" } }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -4346,6 +5137,15 @@ "dev": true, "license": "ISC" }, + "node_modules/isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -4505,7 +5305,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { @@ -4552,7 +5351,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, "license": "MIT" }, "node_modules/local-pkg": { @@ -4599,6 +5397,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -4654,20 +5453,37 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/map-or-similar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", + "license": "MIT" + }, "node_modules/markdown-table": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "dev": true, "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mdast-util-find-and-replace": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -4684,6 +5500,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -4696,6 +5513,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -4720,6 +5538,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "dev": true, "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", @@ -4739,6 +5558,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -4756,6 +5576,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -4773,6 +5594,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -4788,6 +5610,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -4805,6 +5628,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -4821,6 +5645,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -4835,6 +5660,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -4856,6 +5682,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0" @@ -4865,6 +5692,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/memoizerific": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", + "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", + "license": "MIT", + "dependencies": { + "map-or-similar": "^1.5.0" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -4879,6 +5715,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -4914,6 +5751,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -4948,6 +5786,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dev": true, "license": "MIT", "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", @@ -4968,6 +5807,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dev": true, "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", @@ -4984,6 +5824,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dev": true, "license": "MIT", "dependencies": { "devlop": "^1.0.0", @@ -5004,6 +5845,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "dev": true, "license": "MIT", "dependencies": { "devlop": "^1.0.0", @@ -5022,6 +5864,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "dev": true, "license": "MIT", "dependencies": { "devlop": "^1.0.0", @@ -5039,6 +5882,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dev": true, "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" @@ -5052,6 +5896,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "dev": true, "license": "MIT", "dependencies": { "devlop": "^1.0.0", @@ -5069,6 +5914,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5090,6 +5936,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5112,6 +5959,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5132,6 +5980,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5154,6 +6003,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5176,6 +6026,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5196,6 +6047,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5215,6 +6067,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5236,6 +6089,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5256,6 +6110,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5275,6 +6130,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5297,6 +6153,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5313,6 +6170,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5329,6 +6187,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5348,6 +6207,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5367,6 +6227,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5388,6 +6249,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5410,6 +6272,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5426,6 +6289,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5465,6 +6329,14 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -5632,6 +6504,18 @@ "node": ">=0.10.0" } }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5702,6 +6586,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -5713,7 +6606,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -5726,7 +6618,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -5772,7 +6663,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, "license": "MIT" }, "node_modules/path-scurry": { @@ -5803,7 +6693,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5857,6 +6746,18 @@ "pathe": "^2.0.3" } }, + "node_modules/polished": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", + "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.17.8" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -5935,6 +6836,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -5973,6 +6883,21 @@ "node": ">=6" } }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/quansync": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz", @@ -6075,6 +7000,16 @@ "react": "16.8 - 19" } }, + "node_modules/react-ga": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/react-ga/-/react-ga-2.7.0.tgz", + "integrity": "sha512-AjC7UOZMvygrWTc2hKxTDvlMXEtbmA0IgJjmkhgmQQ3RkXrWR11xEagLGFGaNyaPnmg24oaIiaNPnEoftUhfXA==", + "license": "Apache-2.0", + "peerDependencies": { + "prop-types": "^15.6.0", + "react": "^15.6.2 || ^16.0" + } + }, "node_modules/react-inlinesvg": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/react-inlinesvg/-/react-inlinesvg-4.2.0.tgz", @@ -6246,10 +7181,17 @@ "node": ">=8" } }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, "node_modules/remark-gfm": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -6268,6 +7210,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -6284,6 +7227,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -6309,7 +7253,6 @@ "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", @@ -6330,7 +7273,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -6411,6 +7353,23 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/scheduler": { "version": "0.26.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", @@ -6493,6 +7452,78 @@ "node": ">=18" } }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -6567,6 +7598,12 @@ "node": ">=10" } }, + "node_modules/store2": { + "version": "2.14.4", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.4.tgz", + "integrity": "sha512-srTItn1GOvyvOycgxjAnPA63FZNwy0PTyUBFMHRM+hVFltAeoh0LmNBz9SZqUS9mMqGk8rfyWyXn3GH5ReJ8Zw==", + "license": "MIT" + }, "node_modules/storybook": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/storybook/-/storybook-9.1.0.tgz", @@ -6840,7 +7877,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -6856,6 +7892,22 @@ "dev": true, "license": "MIT" }, + "node_modules/telejson": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-5.3.3.tgz", + "integrity": "sha512-PjqkJZpzEggA9TBpVtJi1LVptP7tYtXB6rEubwlHap76AMjzvOdKX41CxyaW7ahhzDU1aftXnMCx5kAPDZTQBA==", + "license": "MIT", + "dependencies": { + "@types/is-function": "^1.0.0", + "global": "^4.4.0", + "is-function": "^1.0.2", + "is-regex": "^1.1.2", + "is-symbol": "^1.0.3", + "isobject": "^4.0.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3" + } + }, "node_modules/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", @@ -6923,6 +7975,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -6946,7 +7999,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.10" @@ -7018,6 +8070,7 @@ "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -7037,6 +8090,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" @@ -7050,6 +8104,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" @@ -7063,6 +8118,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -7078,6 +8134,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -7153,10 +8210,17 @@ "punycode": "^2.1.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, "node_modules/vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -7171,6 +8235,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -7464,6 +8529,15 @@ "dev": true, "license": "ISC" }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, "node_modules/yocto-queue": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", @@ -7481,6 +8555,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, "license": "MIT", "funding": { "type": "github", diff --git a/package.json b/package.json index e9f1ddd8..618b1769 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ }, "dependencies": { "@formatjs/intl": "^3.1.6", + "@storybook/addon-google-analytics": "^6.2.9", "big.js": "^7.0.1", "copy-to-clipboard": "^3.3.3", "date-fns": "^4.1.0", @@ -93,9 +94,9 @@ "@types/react-modal": "^3.16.3", "@types/styled-components": "^5.1.34", "@vitejs/plugin-react": "^4.7.0", - "remark-gfm": "^4.0.1", "babel-plugin-named-exports-order": "^0.0.2", "eslint-plugin-storybook": "^9.0.18", + "remark-gfm": "^4.0.1", "shx": "^0.4.0", "storybook": "^9.0.18", "typescript": "^5.8.3", diff --git a/src/01-Home.mdx b/src/01-Home.mdx index d9dea0aa..13529a41 100644 --- a/src/01-Home.mdx +++ b/src/01-Home.mdx @@ -1,5 +1,5 @@ import {Meta} from '@storybook/addon-docs/blocks'; -import {MenuBlocks, StyledHeaderWrapper, StyledWrapper} from "./storybook-components.tsx"; +import {StyledHeaderWrapper, StyledWrapper} from "./storybook-components.tsx"; diff --git a/src/lib/components/accordion/accordion.stories.tsx b/src/lib/components/accordion/accordion.stories.tsx new file mode 100644 index 00000000..019b1631 --- /dev/null +++ b/src/lib/components/accordion/accordion.stories.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +import { Meta, StoryFn } from '@storybook/react'; +import FlexColumn from '../flex-column/flex-column'; +import Accordion from './accordion'; + +export default { + component: Accordion, + // tags: ['autodocs', '!dev'], + excludeStories: ['Primary'], + title: 'Components/Display/Accordion', + args: { + children: (render) => ( + <> +
Accordion
+
Accordion
+
Accordion
+
Accordion
+
Accordion
+ + ), + }, + argTypes: {}, +} as Meta; + +const Template: StoryFn = (args) => ( + + + +); + +export const Primary = Template.bind({}); diff --git a/src/lib/components/account-info-row/account-info-row.stories.tsx b/src/lib/components/account-info-row/account-info-row.stories.tsx index cab8ace9..5bc7b09a 100644 --- a/src/lib/components/account-info-row/account-info-row.stories.tsx +++ b/src/lib/components/account-info-row/account-info-row.stories.tsx @@ -5,8 +5,9 @@ import FlexColumn from '../flex-column/flex-column'; export default { component: AccountInfoRow, + excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], - title: 'Components/Forms and inputs/Account Info Row', + title: 'Components/Display/Account Info Row', parameters: { controls: { sort: 'requiredFirst', diff --git a/src/lib/components/account-info-row/account-info-row.tsx b/src/lib/components/account-info-row/account-info-row.tsx index 8c9e19b8..ad5ad42e 100644 --- a/src/lib/components/account-info-row/account-info-row.tsx +++ b/src/lib/components/account-info-row/account-info-row.tsx @@ -8,7 +8,7 @@ import { DEFAULT_PRECISION, formatHash } from '../../utils/formatters'; import { Tooltip } from '../tooltip/tooltip'; import { useMatchMedia } from '../../utils/match-media'; import { CopyHash } from '../copy-hash/copy-hash'; -import { Cspr } from '../cspr/cspr'; +import { CSPR } from '../cspr/cspr'; import { PrecisionCase } from '../../utils/currency'; import { HashLength } from '../../utils/formatters'; @@ -53,7 +53,7 @@ interface TickerProps { const Ticker = ({ ticker, cep18Config, ...props }: TickerProps) => { return ticker === 'CSPR' ? ( - + ) : ( ( @@ -35,7 +35,7 @@ export default { - diff --git a/src/lib/components/body-text/body-text.stories.tsx b/src/lib/components/body-text/body-text.stories.tsx index 18a5883a..5bd5e426 100644 --- a/src/lib/components/body-text/body-text.stories.tsx +++ b/src/lib/components/body-text/body-text.stories.tsx @@ -8,7 +8,7 @@ import TruncateBox from '../truncate-box/truncate-box'; export default { component: BodyText, - title: 'Components/Primitives/Body Text', + title: 'Components/Display/Body Text', // tags: ['autodocs', '!dev'], args: { size: 1, diff --git a/src/lib/components/button/button.stories.tsx b/src/lib/components/button/button.stories.tsx index b29ac737..b6d99da2 100644 --- a/src/lib/components/button/button.stories.tsx +++ b/src/lib/components/button/button.stories.tsx @@ -19,7 +19,7 @@ const Container = styled.div(({ theme }) => ({ export default { component: Button, - title: 'Components/Forms and inputs/Button', + title: 'Components/Form/Button', // tags: ['autodocs', '!dev'], argTypes: { height: '36', diff --git a/src/lib/components/caption-text/caption-text.stories.tsx b/src/lib/components/caption-text/caption-text.stories.tsx index 763fbe18..d8a8f67e 100644 --- a/src/lib/components/caption-text/caption-text.stories.tsx +++ b/src/lib/components/caption-text/caption-text.stories.tsx @@ -8,7 +8,7 @@ import TruncateBox from '../truncate-box/truncate-box'; export default { component: CaptionText, - title: 'Components/Primitives/Caption Text', + title: 'Components/Display/Caption Text', // tags: ['autodocs', '!dev'], args: { size: 1, diff --git a/src/lib/components/cep18-token/cep18-token.stories.tsx b/src/lib/components/cep18-token/cep18-token.stories.tsx index 5407947d..3e2bc621 100644 --- a/src/lib/components/cep18-token/cep18-token.stories.tsx +++ b/src/lib/components/cep18-token/cep18-token.stories.tsx @@ -6,7 +6,8 @@ import FlexColumn from '../flex-column/flex-column'; export default { component: CEP18Token, - title: 'Components/Primitives/CEP18Token', + title: 'Components/Display/CEP18Token', + excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], args: { motes: '50000123456789', diff --git a/src/lib/components/cep18-token/cep18-token.tsx b/src/lib/components/cep18-token/cep18-token.tsx index 9f3c2f22..3e8fadd2 100644 --- a/src/lib/components/cep18-token/cep18-token.tsx +++ b/src/lib/components/cep18-token/cep18-token.tsx @@ -13,6 +13,7 @@ export interface CEP18TokenProps { hideCurrency?: boolean; } +/** @deprecated */ export function CEP18Token({ motes, precision, decimals, ticker, hideCurrency }: CEP18TokenProps) { if (motes == null) { return <>{'N/A'}; diff --git a/src/lib/components/checkbox/checkbox.stories.tsx b/src/lib/components/checkbox/checkbox.stories.tsx index ecbcbe87..685353a2 100644 --- a/src/lib/components/checkbox/checkbox.stories.tsx +++ b/src/lib/components/checkbox/checkbox.stories.tsx @@ -6,7 +6,7 @@ import FlexColumn from '../flex-column/flex-column'; export default { component: Checkbox, - title: 'Components/Forms and inputs/Checkbox', + title: 'Components/Form/Checkbox', // tags: ['autodocs', '!dev'], args: { checked: true, diff --git a/src/lib/components/circular-indicator/circular-indicator.stories.tsx b/src/lib/components/circular-indicator/circular-indicator.stories.tsx index 76be682f..31f39c64 100644 --- a/src/lib/components/circular-indicator/circular-indicator.stories.tsx +++ b/src/lib/components/circular-indicator/circular-indicator.stories.tsx @@ -7,7 +7,7 @@ import BodyText from '../body-text/body-text'; export default { component: CircularIndicator, - title: 'Components/Status indicators/Circular Indicator', + title: 'Components/Display/Circular Indicator', // tags: ['autodocs', '!dev'], args: { size: 'medium', diff --git a/src/lib/components/confirmation-window/confirmation-window.stories.tsx b/src/lib/components/confirmation-window/confirmation-window.stories.tsx index 4a6b1cf8..0df3259e 100644 --- a/src/lib/components/confirmation-window/confirmation-window.stories.tsx +++ b/src/lib/components/confirmation-window/confirmation-window.stories.tsx @@ -11,6 +11,7 @@ export default { component: ConfirmationWindow, title: 'Components/Overlays and layering/Confirmation Window', // tags: ['autodocs', '!dev'], + excludeStories: ['Primary'], args: { isOpen: true, position: ModalPosition.TopRight, diff --git a/src/lib/components/copy-hash/copy-hash.stories.tsx b/src/lib/components/copy-hash/copy-hash.stories.tsx index 7440844c..40538418 100644 --- a/src/lib/components/copy-hash/copy-hash.stories.tsx +++ b/src/lib/components/copy-hash/copy-hash.stories.tsx @@ -6,7 +6,8 @@ import FlexColumn from '../flex-column/flex-column'; export default { component: CopyHash, - title: 'Components/Forms and inputs/Copy To Clipboard', + title: 'Components/Display/Copy To Clipboard', + excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], args: { value: 'some value', diff --git a/src/lib/components/copy-hash/copy-hash.tsx b/src/lib/components/copy-hash/copy-hash.tsx index f97948ec..c24c8d43 100644 --- a/src/lib/components/copy-hash/copy-hash.tsx +++ b/src/lib/components/copy-hash/copy-hash.tsx @@ -26,7 +26,7 @@ const StyledSvgIcon = styled(SvgIcon)<{ variation?: CopyHashColor }>( path: { fill: theme.styleguideColors[copyHashColorMapper[variation]], }, - }) + }), ); export interface CopyHashProps { @@ -38,6 +38,7 @@ export interface CopyHashProps { variation?: CopyHashColor; } +/** @deprecated use Copy component instead */ export const CopyHash = ({ value, label = 'Copy Public Key', diff --git a/src/lib/components/copy/copy.stories.tsx b/src/lib/components/copy/copy.stories.tsx new file mode 100644 index 00000000..a365a0b3 --- /dev/null +++ b/src/lib/components/copy/copy.stories.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { Meta, StoryFn } from '@storybook/react'; +import BodyText from '../body-text/body-text'; +import FlexColumn from '../flex-column/flex-column'; +import { Copy } from './copy'; + +export default { + component: Copy, + title: 'Components/Display/Copy', + // tags: ['autodocs', '!dev'], + args: { + value: 'some value', + label: 'Copy Public Key', + copiedLabel: 'Copied!', + minified: false, + }, + argTypes: { + value: { control: 'text', description: 'Value to copy' }, + }, +} as Meta; + +const Template: StoryFn = (args) => ( + + + + NOTE: Copy button allow you to copy value, which you can provide in + `value` property to clipboard + + +); + +export const Primary = Template.bind({}); diff --git a/src/lib/components/copy/copy.tsx b/src/lib/components/copy/copy.tsx new file mode 100644 index 00000000..b9360aa2 --- /dev/null +++ b/src/lib/components/copy/copy.tsx @@ -0,0 +1,83 @@ +import React, { useState } from 'react'; +import FlexRow from '../flex-row/flex-row'; +import BodyText from '../body-text/body-text'; +import styled from 'styled-components'; +import SvgIcon from '../svg-icon/svg-icon'; +import copy from 'copy-to-clipboard'; + +import SuccessIcon from '../../assets/icons/ic-success.svg'; +import CopyIcon from '../../assets/icons/ic-copy.svg'; + +type CopyColor = 'blue' | 'gray'; + +const copyColorMapper = { + blue: 'contentBlue', + gray: 'contentTertiary', +}; + +const SuccessIconWrapper = styled(SvgIcon)(({ theme }) => ({ + color: theme.styleguideColors.contentGreen, +})); + +const StyledSvgIcon = styled(SvgIcon)<{ variation?: CopyColor }>( + ({ theme, variation = 'blue' }) => + theme.withMedia({ + color: theme.styleguideColors[copyColorMapper[variation]], + path: { + fill: theme.styleguideColors[copyColorMapper[variation]], + }, + }), +); + +export interface CopyProps { + value: string; + styles?: React.CSSProperties; + label?: string; + copiedLabel?: string; + minified?: boolean; + variation?: CopyColor; +} + +export const Copy = ({ + value, + label = 'Copy Public Key', + copiedLabel = 'Copied!', + variation, + styles, + minified = false, +}: CopyProps) => { + const [isCopied, setIsCopied] = useState(false); + return ( + { + copy(value); + setIsCopied(true); + setTimeout(() => setIsCopied(false), 3000); + }} + > + {isCopied ? ( + + + {!minified && ( + + {copiedLabel} + + )} + + ) : ( + + + {!minified && ( + + {label} + + )} + + )} + + ); +}; + +export default Copy; diff --git a/src/lib/components/cspr/cspr.stories.tsx b/src/lib/components/cspr/cspr.stories.tsx index eae0b450..7e17b5ff 100644 --- a/src/lib/components/cspr/cspr.stories.tsx +++ b/src/lib/components/cspr/cspr.stories.tsx @@ -1,14 +1,14 @@ import React from 'react'; import { Meta, StoryFn } from '@storybook/react'; -import Cspr from './cspr'; +import CSPR from './cspr'; import FlexRow from '../flex-row/flex-row'; import FlexColumn from '../flex-column/flex-column'; import BodyText from '../body-text/body-text'; import { PrecisionCase } from '../../utils/currency'; export default { - component: Cspr, - title: 'Components/Primitives/Cspr', + component: CSPR, + title: 'Components/Display/CSPR', // tags: ['autodocs', '!dev'], args: { motes: '3000', @@ -32,12 +32,12 @@ export default { control: 'boolean', }, }, -} as Meta; +} as Meta; -const Template: StoryFn = (args) => ( +const Template: StoryFn = (args) => ( - + ); diff --git a/src/lib/components/cspr/cspr.tsx b/src/lib/components/cspr/cspr.tsx index f2c1f64b..b5ec29fe 100644 --- a/src/lib/components/cspr/cspr.tsx +++ b/src/lib/components/cspr/cspr.tsx @@ -12,7 +12,7 @@ export interface CsprProps { hideCsprCurrency?: boolean; } -export function Cspr({ motes, precisionCase, hideCsprCurrency }: CsprProps) { +export function CSPR({ motes, precisionCase, hideCsprCurrency }: CsprProps) { const precision = currencyPrecisionByCase(precisionCase); if (motes == null) { @@ -26,4 +26,4 @@ export function Cspr({ motes, precisionCase, hideCsprCurrency }: CsprProps) { return <>{hideCsprCurrency ? formattedCsprAmount : formattedText}; } -export default Cspr; +export default CSPR; diff --git a/src/lib/components/dropdown/dropdown.stories.tsx b/src/lib/components/dropdown/dropdown.stories.tsx index acda29a9..d12e0782 100644 --- a/src/lib/components/dropdown/dropdown.stories.tsx +++ b/src/lib/components/dropdown/dropdown.stories.tsx @@ -7,7 +7,7 @@ import SearchableDropdown from '../dropdown-with-search/searchable-dropdown'; export default { component: Dropdown, - title: 'Components/Forms and inputs/Dropdown', + title: 'Components/Form/Dropdown', // tags: ['autodocs', '!dev'], args: { value: { value: 'faucet', label: 'Faucet' }, diff --git a/src/lib/components/flex-box/flex-box.stories.tsx b/src/lib/components/flex-box/flex-box.stories.tsx index a46853b7..9fef5534 100644 --- a/src/lib/components/flex-box/flex-box.stories.tsx +++ b/src/lib/components/flex-box/flex-box.stories.tsx @@ -7,7 +7,7 @@ import styled from 'styled-components'; export default { component: FlexBox, - title: 'Components/Layout and structure/Flex Box', + title: 'Components/Layout/Flex Box', // tags: ['autodocs', '!dev'], args: { gap: 10, diff --git a/src/lib/components/flex-column/flex-column.stories.tsx b/src/lib/components/flex-column/flex-column.stories.tsx index 77c4bf45..dc5b8526 100644 --- a/src/lib/components/flex-column/flex-column.stories.tsx +++ b/src/lib/components/flex-column/flex-column.stories.tsx @@ -7,7 +7,7 @@ import styled from 'styled-components'; export default { component: FlexColumn, - title: 'Components/Layout and structure/Flex Column', + title: 'Components/Layout/Flex Column', // tags: ['autodocs', '!dev'], args: { itemsSpacing: 10, diff --git a/src/lib/components/flex-row/flex-row.stories.tsx b/src/lib/components/flex-row/flex-row.stories.tsx index 66028393..759a5200 100644 --- a/src/lib/components/flex-row/flex-row.stories.tsx +++ b/src/lib/components/flex-row/flex-row.stories.tsx @@ -7,7 +7,7 @@ import styled from 'styled-components'; export default { component: FlexRow, - title: 'Components/Layout and structure/Flex Row', + title: 'Components/Layout/Flex Row', // tags: ['autodocs', '!dev'], args: { itemsSpacing: 10, diff --git a/src/lib/components/form-field/form-field.stories.tsx b/src/lib/components/form-field/form-field.stories.tsx index 54ce0a97..4e986fc5 100644 --- a/src/lib/components/form-field/form-field.stories.tsx +++ b/src/lib/components/form-field/form-field.stories.tsx @@ -7,7 +7,7 @@ import Input from '../input/input'; export default { component: FormField, - title: 'Components/Forms and inputs/FormField', + title: 'Components/Form/FormField', // tags: ['autodocs', '!dev'], args: { id: 'form', diff --git a/src/lib/components/header-tab-menu-item/header-tab-menu-item.stories.tsx b/src/lib/components/header-tab-menu-item/header-tab-menu-item.stories.tsx index 908036e0..47274d9c 100644 --- a/src/lib/components/header-tab-menu-item/header-tab-menu-item.stories.tsx +++ b/src/lib/components/header-tab-menu-item/header-tab-menu-item.stories.tsx @@ -8,6 +8,7 @@ import TabMenu from '../tab-menu/tab-menu'; export default { component: HeaderTabMenuItem, title: 'Components/Navigation/Header Tab Menu Item', + excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], args: { active: false, diff --git a/src/lib/components/header-text/header-text.stories.tsx b/src/lib/components/header-text/header-text.stories.tsx index 47b6759c..7238444b 100644 --- a/src/lib/components/header-text/header-text.stories.tsx +++ b/src/lib/components/header-text/header-text.stories.tsx @@ -8,7 +8,7 @@ import TruncateBox from '../truncate-box/truncate-box'; export default { component: HeaderText, - title: 'Components/Primitives/Header Text', + title: 'Components/Display/Header Text', // tags: ['autodocs', '!dev'], args: { size: 1, diff --git a/src/lib/components/input/input.stories.tsx b/src/lib/components/input/input.stories.tsx index ddb4313c..5dd97f13 100644 --- a/src/lib/components/input/input.stories.tsx +++ b/src/lib/components/input/input.stories.tsx @@ -6,7 +6,7 @@ import FlexColumn from '../flex-column/flex-column'; export default { component: Input, - title: 'Components/Forms and inputs/Input', + title: 'Components/Form/Input', // tags: ['autodocs', '!dev'], args: { value: 'USA', diff --git a/src/lib/components/label/label.stories.tsx b/src/lib/components/label/label.stories.tsx index e3beb285..8376d24e 100644 --- a/src/lib/components/label/label.stories.tsx +++ b/src/lib/components/label/label.stories.tsx @@ -8,7 +8,7 @@ import BodyText from '../body-text/body-text'; export default { component: Label, - title: 'Components/Primitives/Label', + title: 'Components/Display/Label', // tags: ['autodocs', '!dev'], args: { size: 2, diff --git a/src/lib/components/modal-content-header/modal-content-header.stories.tsx b/src/lib/components/modal-content-header/modal-content-header.stories.tsx index 3bc8ab72..1f3ba921 100644 --- a/src/lib/components/modal-content-header/modal-content-header.stories.tsx +++ b/src/lib/components/modal-content-header/modal-content-header.stories.tsx @@ -7,6 +7,7 @@ import FlexColumn from '../flex-column/flex-column'; export default { component: ModalContentHeader, title: 'Components/Tooling/ModalContentHeader', + excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], args: { title: 'Choose a provider', diff --git a/src/lib/components/multiline-text-row/multiline-text-row.stories.tsx b/src/lib/components/multiline-text-row/multiline-text-row.stories.tsx index cf39bb08..edd8bef3 100644 --- a/src/lib/components/multiline-text-row/multiline-text-row.stories.tsx +++ b/src/lib/components/multiline-text-row/multiline-text-row.stories.tsx @@ -4,7 +4,8 @@ import { MultilineTextRow } from './multiline-text-row'; export default { component: MultilineTextRow, - title: 'Components/Forms and inputs/Multiline Text Row', + title: 'Components/Form/Multiline Text Row', + excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], args: { label: 'Message', diff --git a/src/lib/components/multiselect-dropdown/multiselect-dropdown.spec.tsx b/src/lib/components/multiselect-dropdown/multiselect-dropdown.spec.tsx new file mode 100644 index 00000000..946320e8 --- /dev/null +++ b/src/lib/components/multiselect-dropdown/multiselect-dropdown.spec.tsx @@ -0,0 +1,11 @@ +import React from 'react'; +import { render } from '@testing-library/react'; + +import { MultiselectDropdown } from './multiselect-dropdown'; + +describe('Dropdown', () => { + it('should render successfully', () => { + const { baseElement } = render(); + expect(baseElement).toBeTruthy(); + }); +}); diff --git a/src/lib/components/multiselect-dropdown/multiselect-dropdown.stories.tsx b/src/lib/components/multiselect-dropdown/multiselect-dropdown.stories.tsx new file mode 100644 index 00000000..68c84d71 --- /dev/null +++ b/src/lib/components/multiselect-dropdown/multiselect-dropdown.stories.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { Meta, StoryFn } from '@storybook/react'; +import FlexRow from '../flex-row/flex-row'; +import FlexColumn from '../flex-column/flex-column'; +import { MultiselectDropdown } from './multiselect-dropdown'; + +export default { + component: MultiselectDropdown, + title: 'Components/Form/Multiselect Dropdown', + // tags: ['autodocs', '!dev'], + args: { + items: [ + { value: '2022', label: 'CSPR 2022', chipLabel: 'CSPR 2022' }, + { value: '2023', label: 'CSPR 2023', chipLabel: 'CSPR 2023' }, + { value: '2024', label: 'CSPR 2024', chipLabel: 'CSPR 2024' }, + ], + }, +} as Meta; + +const Template: StoryFn = (args) => ( + <> + + + + + + +); + +export const Primary = Template.bind({}); diff --git a/src/lib/components/multiselect-dropdown/multiselect-dropdown.tsx b/src/lib/components/multiselect-dropdown/multiselect-dropdown.tsx new file mode 100644 index 00000000..af260c4b --- /dev/null +++ b/src/lib/components/multiselect-dropdown/multiselect-dropdown.tsx @@ -0,0 +1,386 @@ +import React, { useState, useEffect } from 'react'; +import styled from 'styled-components'; +import { useMultipleSelection, useCombobox } from 'downshift'; +import { useClickAndTouchAway } from '../../hooks/use-click-and-touch-away'; +import FlexRow from '../flex-row/flex-row'; +import FlexColumn from '../flex-column/flex-column'; +import BodyText from '../body-text/body-text'; +import { BaseProps } from '../../types'; +import SvgIcon from '../svg-icon/svg-icon'; +import Input from '../input/input'; +import { ArrowDownIcon, DeleteIcon, SearchIcon } from '../../icons-index'; + +const DropdownContainer = styled.div<{ disabled?: boolean }>( + ({ theme, disabled }) => ({ + outline: 'none', + + ...(disabled && { + opacity: '0.5', + pointerEvents: 'none', + }), + }), +); + +const MultiSelectContainer = styled(FlexRow)<{ isOpen: boolean }>( + ({ theme }) => ({ + borderRadius: theme.borderRadius.base, + padding: '8px', + background: theme.styleguideColors.fillSecondary, + ':hover, :active': { + svg: { + color: theme.styleguideColors.fillPrimaryRed, + }, + }, + }), +); + +const InputContainer = styled(FlexRow)(({ theme }) => ({ + width: '100%', +})); + +const StyledInput = styled(Input)(() => ({ + width: '100%', + border: 'none', + height: '24px', + '> div': { + padding: '0 8px', + }, +})); + +const DropdownIconWrapper = styled(FlexRow)(({ theme }) => ({ + paddingRight: '8px', + marginLeft: '8px', +})); + +const ArrowSvgIcon = styled(SvgIcon)(({ theme }) => ({ + path: { + fill: theme.styleguideColors.contentPrimary, + }, +})); + +const ClearSvgIcon = styled(SvgIcon)(({ theme }) => ({ + path: { + stroke: theme.styleguideColors.contentPrimary, + }, +})); + +const ChipItemContainer = styled.span(({ theme }) => ({ + borderRadius: theme.borderRadius.base, + cursor: 'pointer', + padding: '2px 8px', + background: theme.styleguideColors.fillTertiary, + color: theme.styleguideColors.contentPrimary, + wordBreak: 'break-word', +})); + +const ItemsContainer = styled.div<{ isOpen: boolean }>(({ theme, isOpen }) => ({ + display: isOpen ? 'inherit' : 'none', + marginTop: 4, + borderRadius: theme.borderRadius.base, + background: theme.styleguideColors.fillSecondary, + maxHeight: '250px', + overflowY: 'scroll', +})); + +const ItemsContainerEmpty = styled(FlexRow)(({ theme }) => ({ + padding: '32px 16px', + pointerEvents: 'none', + justifyContent: 'center', +})); + +const ItemContainer = styled(FlexRow)(({ theme }) => ({ + cursor: 'pointer', + minHeight: 36, + padding: '8px 16px', + wordBreak: 'break-word', + ':hover, :active': { + background: theme.styleguideColors.fillSecondaryBlueHover, + fontWeight: 600, + }, +})); + +const MultiSelectDeleteIcon = styled(SvgIcon)(({ theme }) => ({ + path: { + stroke: theme.styleguideColors.contentBlue, + }, + ':hover, :active': { + path: { + stroke: theme.styleguideColors.contentRed, + }, + }, +})); + +export type MultiSelectDropdownValue = { + label: string; + chipLabel?: string; + value: any; +}; + +export type MultiSelectDropdownEventValue = { + target: { + name?: string; + value: MultiSelectDropdownValue | null; + }; +}; + +export interface MultiSelectInputProps extends BaseProps { + value?: MultiSelectDropdownValue[]; + items: MultiSelectDropdownValue[]; + label?: string | JSX.Element; + placeholder?: string; + disabled?: boolean; + onAddItem?: (ev: MultiSelectDropdownEventValue) => void; + onSelectItem?: (ev: MultiSelectDropdownEventValue) => void; + onRemoveItem?: (ev: MultiSelectDropdownEventValue) => void; + onChangeInput?: (value: string) => void; +} + +const getChangeEvent = (value: any): MultiSelectDropdownEventValue => { + return { + target: { + name: undefined, + value, + }, + }; +}; + +export function MultiselectDropdown(props: MultiSelectInputProps) { + const { + items, + value, + label, + placeholder, + disabled = false, + onSelectItem, + onAddItem, + onRemoveItem, + onChangeInput, + } = props; + const [inputValue, setInputValue] = useState(''); + + const { + getSelectedItemProps, + getDropdownProps, + addSelectedItem, + removeSelectedItem, + selectedItems, + setSelectedItems, + reset, + } = useMultipleSelection({ + initialSelectedItems: value, + onSelectedItemsChange: (changes) => { + onSelectItem && onSelectItem(getChangeEvent(changes.selectedItems)); + }, + }); + + const inputValueItem = + inputValue?.length >= 3 + ? [ + { + id: inputValue, + label: inputValue, + value: inputValue, + chipLabel: inputValue, + }, + ] + : []; + + const itemsWithCustomInputValue = [...inputValueItem, ...items]; + + const { + isOpen, + getToggleButtonProps, + getLabelProps, + getMenuProps, + getInputProps, + getItemProps, + openMenu, + } = useCombobox({ + inputValue, + items: itemsWithCustomInputValue, + onStateChange: ({ inputValue, type, selectedItem: newSelectedItem }) => { + switch (type) { + case useCombobox.stateChangeTypes.InputChange: + setInputValue(inputValue || ''); + onChangeInput && onChangeInput(inputValue || ''); + break; + + case useCombobox.stateChangeTypes.InputKeyDownEnter: + case useCombobox.stateChangeTypes.ItemClick: + case useCombobox.stateChangeTypes.InputBlur: + const isAlreadySelected = selectedItems.some( + (i) => i.value === newSelectedItem?.value, + ); + + if (newSelectedItem) { + if (isAlreadySelected) { + setSelectedItems( + selectedItems.filter((i) => i.value !== newSelectedItem.value), + ); + onRemoveItem && onRemoveItem(getChangeEvent(newSelectedItem)); + } else { + addSelectedItem(newSelectedItem); + onAddItem && onAddItem(getChangeEvent(newSelectedItem)); + } + } + break; + case useCombobox.stateChangeTypes.FunctionCloseMenu: + handleClearInput(); + break; + default: + break; + } + }, + stateReducer: (state, actionAndChanges) => { + const { changes, type } = actionAndChanges; + switch (type) { + case useCombobox.stateChangeTypes.InputKeyDownEnter: + case useCombobox.stateChangeTypes.ItemClick: + return { + ...changes, + isOpen: state.isOpen, // keep the menu open after selection. + }; + default: + return changes; + } + }, + }); + + const { ref: outerClickRef } = useClickAndTouchAway({ + callback: () => { + if (isOpen) { + handleClearInput(); + } + }, + }); + + //Align resetting selected values if they were reset in parent + useEffect(() => { + if (!value || value.length < 1) { + reset(); + } + }, [value]); + + const handleClearInput = () => { + setInputValue(''); + onChangeInput && onChangeInput(''); + }; + + const handleClearAll = () => { + handleClearInput(); + onSelectItem && onSelectItem(getChangeEvent(null)); + reset(); + }; + + const showInput = isOpen || selectedItems.length === 0; + + return ( + + + {label && ( + + {label} + + )} +
+ + + {selectedItems.map((selectedItem, index) => ( + + + + {selectedItem?.chipLabel || selectedItem?.label} + { + event.preventDefault(); + event.stopPropagation(); + removeSelectedItem(selectedItem); + }} + size={14} + src={DeleteIcon} + /> + + + + ))} + {showInput ? ( + } + /> + ) : null} + + + {!!selectedItems.length && ( + + )} + + + + + {isOpen && + (!( + itemsWithCustomInputValue && itemsWithCustomInputValue.length + ) ? ( + + + No items found + + + ) : ( + itemsWithCustomInputValue.map( + (item: MultiSelectDropdownValue, index: number) => ( + + + {item.label} + + + ), + ) + ))} + +
+
+
+ ); +} + +export default MultiselectDropdown; diff --git a/src/lib/components/multiselect-input/multiselect-input.stories.tsx b/src/lib/components/multiselect-input/multiselect-input.stories.tsx index 7af8bca3..7ab3e94c 100644 --- a/src/lib/components/multiselect-input/multiselect-input.stories.tsx +++ b/src/lib/components/multiselect-input/multiselect-input.stories.tsx @@ -6,7 +6,8 @@ import MultiselectInput from './multiselect-input'; export default { component: MultiselectInput, - title: 'Components/Forms and inputs/Multiselect Input', + title: 'Components/Form/Multiselect Input', + excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], args: { items: [ diff --git a/src/lib/components/multiselect-input/multiselect-input.tsx b/src/lib/components/multiselect-input/multiselect-input.tsx index adc50ff4..c19d5880 100644 --- a/src/lib/components/multiselect-input/multiselect-input.tsx +++ b/src/lib/components/multiselect-input/multiselect-input.tsx @@ -144,6 +144,7 @@ const getChangeEvent = (value: any): MultiSelectDropdownEventValue => { }; }; +/** @deprecated use the new MultiselectDropdown component instead. */ export function MultiSelectInput(props: MultiSelectInputProps) { const { items, diff --git a/src/lib/components/navigation/account/account.stories.tsx b/src/lib/components/navigation/account/account.stories.tsx index 0c4dc522..631832b5 100644 --- a/src/lib/components/navigation/account/account.stories.tsx +++ b/src/lib/components/navigation/account/account.stories.tsx @@ -7,6 +7,11 @@ export default { component: Account, title: 'Components/Navigation/Account', // tags: ['autodocs', '!dev'], + excludeStories: [ + 'AccountWithPublicKey', + 'AccountWithHash', + 'WithCustomAvatar', + ], args: {}, argTypes: { hash: { diff --git a/src/lib/components/navigation/cspr-products-menu/products-menu.stories.tsx b/src/lib/components/navigation/cspr-products-menu/products-menu.stories.tsx index 6d14cb9f..f320904f 100644 --- a/src/lib/components/navigation/cspr-products-menu/products-menu.stories.tsx +++ b/src/lib/components/navigation/cspr-products-menu/products-menu.stories.tsx @@ -14,6 +14,7 @@ import { export default { component: ProductsMenu, title: 'Components/Navigation/Products Menu', + excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], args: { opened: true, diff --git a/src/lib/components/navigation/dropdown-menu/dropdown-menu.stories.tsx b/src/lib/components/navigation/dropdown-menu/dropdown-menu.stories.tsx index 4233d959..7155973e 100644 --- a/src/lib/components/navigation/dropdown-menu/dropdown-menu.stories.tsx +++ b/src/lib/components/navigation/dropdown-menu/dropdown-menu.stories.tsx @@ -28,7 +28,7 @@ const StyledFlexColumn = styled(FlexColumn)(({ theme }) => ({ export default { component: DropdownMenu, - title: 'Components/Navigation/Menu List', + title: 'Components/Navigation/Dropdown Menu', // tags: ['autodocs', '!dev'], args: { opened: true, diff --git a/src/lib/components/navigation/navigation-banner/navigation-banner.stories.tsx b/src/lib/components/navigation/navigation-banner/navigation-banner.stories.tsx index 218cfe22..95082e72 100644 --- a/src/lib/components/navigation/navigation-banner/navigation-banner.stories.tsx +++ b/src/lib/components/navigation/navigation-banner/navigation-banner.stories.tsx @@ -15,6 +15,7 @@ const StyledSvgIcon = styled(SvgIcon)(() => ({ export default { component: NavigationBanner, title: 'Components/Navigation/NavigationBanner', + excludeStories: ['Primary', 'BannerWithJSXNode', 'BannerWithLongText'], // tags: ['autodocs', '!dev'], args: { message: 'Call me maybe!', @@ -22,10 +23,6 @@ export default { }, } as Meta; -const Template: StoryFn = (args) => ( - -); - export const BannerWithJSXNode = () => ( ( /> ); +const Template: StoryFn = (args) => ( + +); + export const Primary = Template.bind({}); diff --git a/src/lib/components/page-tile-header/page-tile-header.stories.tsx b/src/lib/components/page-tile-header/page-tile-header.stories.tsx index 6ae52a79..d7368bf7 100644 --- a/src/lib/components/page-tile-header/page-tile-header.stories.tsx +++ b/src/lib/components/page-tile-header/page-tile-header.stories.tsx @@ -8,7 +8,7 @@ import PageTile from '../page-tile/page-tile'; export default { component: PageTileHeader, - title: 'Components/Layout and structure/PageTile Header', + title: 'Components/Layout/PageTile Header', // tags: ['autodocs', '!dev'], } as Meta; diff --git a/src/lib/components/page-tile-tabs-header/page-tile-tabs-header.stories.tsx b/src/lib/components/page-tile-tabs-header/page-tile-tabs-header.stories.tsx index 2243c924..0ce3d1ea 100644 --- a/src/lib/components/page-tile-tabs-header/page-tile-tabs-header.stories.tsx +++ b/src/lib/components/page-tile-tabs-header/page-tile-tabs-header.stories.tsx @@ -9,7 +9,8 @@ import TabMenuItem from '../tab-menu-item/tab-menu-item'; export default { component: PageTileTabsHeader, - title: 'Components/Layout and structure/PageTileTabsHeader', + title: 'Components/Layout/PageTileTabsHeader', + excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], } as Meta; @@ -28,6 +29,12 @@ const Template: StoryFn = () => ( {}}> Tab 3 + {}}> + Tab 4 + + {}}> + Tab 5 + diff --git a/src/lib/components/page-tile-tabs-header/page-tile-tabs-header.tsx b/src/lib/components/page-tile-tabs-header/page-tile-tabs-header.tsx index fda744a7..7d5e71e8 100644 --- a/src/lib/components/page-tile-tabs-header/page-tile-tabs-header.tsx +++ b/src/lib/components/page-tile-tabs-header/page-tile-tabs-header.tsx @@ -1,6 +1,6 @@ import React from 'react'; import styled from 'styled-components'; -import {BaseProps} from "../../types"; +import { BaseProps } from '../../types'; export interface Props extends BaseProps { tabsCount: number; @@ -14,11 +14,12 @@ const StyledWrapper = styled.div<{ childrenCount: number }>( justifyContent: childrenCount > 2 ? ['left', 'center'] : ['center'], padding: 16, overflowX: 'auto', - }) + }), ); +/** @deprecated use TabMenuContainer instead */ export const PageTileTabsHeader = ({ tabsCount, children }: Props) => { return {children}; }; -export default PageTileTabsHeader +export default PageTileTabsHeader; diff --git a/src/lib/components/page-tile/page-tile.stories.tsx b/src/lib/components/page-tile/page-tile.stories.tsx index 3f0168e9..9961244b 100644 --- a/src/lib/components/page-tile/page-tile.stories.tsx +++ b/src/lib/components/page-tile/page-tile.stories.tsx @@ -7,7 +7,7 @@ import BodyText from '../body-text/body-text'; export default { component: PageTile, - title: 'Components/Layout and structure/Page Tile', + title: 'Components/Layout/Page Tile', // tags: ['autodocs', '!dev'], args: { withPadding: true, diff --git a/src/lib/components/pagination/pagination.stories.tsx b/src/lib/components/pagination/pagination.stories.tsx index 1ec5c39d..12f737ff 100644 --- a/src/lib/components/pagination/pagination.stories.tsx +++ b/src/lib/components/pagination/pagination.stories.tsx @@ -1,11 +1,11 @@ import React, { useState } from 'react'; import { Meta, StoryFn } from '@storybook/react'; import { Pagination } from './pagination'; -import PageTile from "../page-tile/page-tile"; +import PageTile from '../page-tile/page-tile'; export default { component: Pagination, - title: 'Components/Table/Pagination', + title: 'Components/Display/Pagination', args: { itemCount: 50, pageCount: 5, @@ -13,35 +13,35 @@ export default { } as Meta; const Template: StoryFn = (args) => { - const [pagination, setPagination] = useState({ - currentPage: 1, - pageSize: 10, - }); + const [pagination, setPagination] = useState({ + currentPage: 1, + pageSize: 10, + }); - const handleCurrentPage = (page: number) => { - setPagination((prev) => ({ - ...prev, - currentPage: page, - })); - } - const handlePerPage = (pageSize: number) => { - setPagination((prev) => ({ - ...prev, - pageSize: pageSize, - })); - } + const handleCurrentPage = (page: number) => { + setPagination((prev) => ({ + ...prev, + currentPage: page, + })); + }; + const handlePerPage = (pageSize: number) => { + setPagination((prev) => ({ + ...prev, + pageSize: pageSize, + })); + }; return ( - - - + + + ); -} +}; export const Primary = Template.bind({}); diff --git a/src/lib/components/progress-line/progress-line.stories.tsx b/src/lib/components/progress-line/progress-line.stories.tsx index 1224a03c..16e330a2 100644 --- a/src/lib/components/progress-line/progress-line.stories.tsx +++ b/src/lib/components/progress-line/progress-line.stories.tsx @@ -8,7 +8,7 @@ import BodyText from '../body-text/body-text'; export default { component: ProgressLine, - title: 'Components/Messaging/Progress Line', + title: 'Components/Display/Progress Line', // tags: ['autodocs', '!dev'], args: { steps: ['one', 'two', 'three', 'four'], diff --git a/src/lib/components/radio-button/radio-button.stories.tsx b/src/lib/components/radio-button/radio-button.stories.tsx index ba338ef2..85c25594 100644 --- a/src/lib/components/radio-button/radio-button.stories.tsx +++ b/src/lib/components/radio-button/radio-button.stories.tsx @@ -7,7 +7,7 @@ import FlexColumn from '../flex-column/flex-column'; // TODO - check logic of RadioButton export default { component: RadioButton, - title: 'Components/Forms and inputs/RadioButton', + title: 'Components/Form/RadioButton', // tags: ['autodocs', '!dev'], args: { value: 'casper', diff --git a/src/lib/components/subtitle-text/subtitle-text.stories.tsx b/src/lib/components/subtitle-text/subtitle-text.stories.tsx index 56e9c822..9c6d8c6c 100644 --- a/src/lib/components/subtitle-text/subtitle-text.stories.tsx +++ b/src/lib/components/subtitle-text/subtitle-text.stories.tsx @@ -8,7 +8,7 @@ import SubtitleText from './subtitle-text'; export default { component: SubtitleText, - title: 'Components/Primitives/Subtitle Text', + title: 'Components/Display/Subtitle Text', // tags: ['autodocs', '!dev'], args: { size: 1, diff --git a/src/lib/components/svg-icon/svg-icon.stories.tsx b/src/lib/components/svg-icon/svg-icon.stories.tsx index 489c3a94..9f6f135f 100644 --- a/src/lib/components/svg-icon/svg-icon.stories.tsx +++ b/src/lib/components/svg-icon/svg-icon.stories.tsx @@ -1,13 +1,13 @@ import React from 'react'; import { Meta, StoryFn } from '@storybook/react'; import SvgIcon from '../svg-icon/svg-icon'; -import { FacebookIcon, Twitter_xIcon } from '../../icons-index'; +import { FacebookIcon } from '../../icons-index'; import SvgIconSocial from './svg-icon-social'; import FlexRow from '../flex-row/flex-row'; export default { component: SvgIcon, - title: 'Components/Image and icons/SvgIcon', + title: 'Components/Display/SvgIcon', // tags: ['autodocs', '!dev'], args: { src: FacebookIcon }, argTypes: { src: {} }, diff --git a/src/lib/components/tab-menu-container/tab-menu-container.stories.tsx b/src/lib/components/tab-menu-container/tab-menu-container.stories.tsx new file mode 100644 index 00000000..95a80cf2 --- /dev/null +++ b/src/lib/components/tab-menu-container/tab-menu-container.stories.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import { Meta, StoryFn } from '@storybook/react'; +import TabMenuContainer from './tab-menu-container'; +import FlexRow from '../flex-row/flex-row'; +import FlexColumn from '../flex-column/flex-column'; +import PageTile from '../page-tile/page-tile'; +import TabMenu from '../tab-menu/tab-menu'; +import TabMenuItem from '../tab-menu-item/tab-menu-item'; + +export default { + component: TabMenuContainer, + title: 'Components/Layout/TabMenuContainer', + // tags: ['autodocs', '!dev'], +} as Meta; + +const Template: StoryFn = () => ( + + + + + + {}}> + Tab 1 + + {}}> + Tab 2 + + {}}> + Tab 3 + + {}}> + Tab 4 + + {}}> + Tab 5 + + + + + + +); + +export const Primary = Template.bind({}); diff --git a/src/lib/components/tab-menu-container/tab-menu-container.tsx b/src/lib/components/tab-menu-container/tab-menu-container.tsx new file mode 100644 index 00000000..eabc7a63 --- /dev/null +++ b/src/lib/components/tab-menu-container/tab-menu-container.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import styled from 'styled-components'; +import { BaseProps } from '../../types'; + +export interface TabMenuContainerProps extends BaseProps { + tabsCount: number; +} + +const StyledWrapper = styled.div<{ childrenCount: number }>( + ({ theme, childrenCount }) => + theme.withMedia({ + display: 'flex', + flexGrow: 1, + justifyContent: childrenCount > 2 ? ['left', 'center'] : ['center'], + padding: 16, + overflowX: 'auto', + }), +); + +export const TabMenuContainer = ({ + tabsCount, + children, +}: TabMenuContainerProps) => { + return {children}; +}; + +export default TabMenuContainer; diff --git a/src/lib/components/tab-menu/tab-menu.stories.tsx b/src/lib/components/tab-menu/tab-menu.stories.tsx index 291b3c46..c77c3ae0 100644 --- a/src/lib/components/tab-menu/tab-menu.stories.tsx +++ b/src/lib/components/tab-menu/tab-menu.stories.tsx @@ -11,7 +11,7 @@ import PageTileTabsHeader from '../page-tile-tabs-header/page-tile-tabs-header'; export default { component: TabMenu, - title: 'Components/Layout and structure/Tab Menu', + title: 'Components/Layout/Tab Menu', // tags: ['autodocs', '!dev'], args: { active: true, @@ -29,24 +29,13 @@ export default { } as Meta; const Template: StoryFn = (args) => ( - - - - - - - Tab 1 - - Tab 2 - Tab 3 - - - - Tab1 Content - - - - + + + Tab 1 + + Tab 2 + Tab 3 + ); export const Primary = Template.bind({}); diff --git a/src/lib/components/table-data-header/table-data-header.stories.tsx b/src/lib/components/table-data-header/table-data-header.stories.tsx index 7667fcaa..f694ac80 100644 --- a/src/lib/components/table-data-header/table-data-header.stories.tsx +++ b/src/lib/components/table-data-header/table-data-header.stories.tsx @@ -1,12 +1,10 @@ import React from 'react'; import { Meta, StoryFn } from '@storybook/react'; -import TableDataHeader, { - TableDataHeaderProps, -} from './table-data-header'; +import TableDataHeader, { TableDataHeaderProps } from './table-data-header'; export default { component: TableDataHeader, - title: 'Components/Table/Table Data Header', + title: 'Components/Display/Table Data Header', } as Meta; const Template: StoryFn = ( diff --git a/src/lib/components/table/table.stories.tsx b/src/lib/components/table/table.stories.tsx index 0ff6a942..1dcde18e 100644 --- a/src/lib/components/table/table.stories.tsx +++ b/src/lib/components/table/table.stories.tsx @@ -7,13 +7,13 @@ import TableRow from '../table-row/table-row'; import TableData from '../table-data/table-data'; import BodyText from '../body-text/body-text'; import { PrecisionCase } from '../../utils/currency'; -import Cspr from '../cspr/cspr'; +import CSPR from '../cspr/cspr'; import PageTile from '../page-tile/page-tile'; -import FlexRow from "../flex-row/flex-row"; +import FlexRow from '../flex-row/flex-row'; export default { component: Table, - title: 'Components/Table/Table with pagination', + title: 'Components/Display/Table with pagination', args: { renderHeader: () => ( @@ -27,7 +27,7 @@ export default { Owner
), - renderPaginatedData: (data) => ( + renderPaginatedData: (data: any[]) => ( <> {data.map((data) => ( @@ -36,7 +36,7 @@ export default { - @@ -56,26 +56,52 @@ const getRandomBalance = () => { const min = 100000000000; const max = 10000000000000; return Math.floor(Math.random() * (max - min + 1)) + min; -} +}; const MOCKED_OWNERS = [ - "Alice","Bob","Charlie","Diana","Ethan","Fiona","Gabe","Hana","Ivan","Jules", - "Kira","Liam","Mona","Noah","Olga","Pavel","Quinn","Ravi","Sara","Tara", - "Uma","Vik","Walt","Xena","Yara","Zane" + 'Alice', + 'Bob', + 'Charlie', + 'Diana', + 'Ethan', + 'Fiona', + 'Gabe', + 'Hana', + 'Ivan', + 'Jules', + 'Kira', + 'Liam', + 'Mona', + 'Noah', + 'Olga', + 'Pavel', + 'Quinn', + 'Ravi', + 'Sara', + 'Tara', + 'Uma', + 'Vik', + 'Walt', + 'Xena', + 'Yara', + 'Zane', ]; const MOCK_DATA = Array.from({ length: 87 }, (_, i) => { const rank = i + 1; const owner = MOCKED_OWNERS[i % MOCKED_OWNERS.length]; - const csprName = `${owner.toLowerCase()}.cspr` + const csprName = `${owner.toLowerCase()}.cspr`; const motes = getRandomBalance(); return { rank, owner: csprName, motes }; }); const emulateGetTableDataRequest = (url: string) => { - const u = new URL(url, "https://example.local"); - const page = Math.max(parseInt(u.searchParams.get("page") || "1", 10), 1); - const pageSize = Math.max(parseInt(u.searchParams.get("page_size") || "10", 10), 1); + const u = new URL(url, 'https://example.local'); + const page = Math.max(parseInt(u.searchParams.get('page') || '1', 10), 1); + const pageSize = Math.max( + parseInt(u.searchParams.get('page_size') || '10', 10), + 1, + ); const items_count = MOCK_DATA.length; const page_count = Math.max(1, Math.ceil(items_count / pageSize)); @@ -89,18 +115,19 @@ const emulateGetTableDataRequest = (url: string) => { resolve({ data, page_count, items_count }); }, 400); }); -} +}; const Template: StoryFn = (args: TableProps) => { - const [data, setData] = useState(null) + const [data, setData] = useState(null); const [pagination, setPagination] = useState({ currentPage: 1, pageSize: 10, }); const requestPath = useMemo( - () => `/api/table?page=${pagination.currentPage}&page_size=${pagination.pageSize}`, - [pagination.currentPage, pagination.pageSize] + () => + `/api/table?page=${pagination.currentPage}&page_size=${pagination.pageSize}`, + [pagination.currentPage, pagination.pageSize], ); useEffect(() => { @@ -115,17 +142,19 @@ const Template: StoryFn = (args: TableProps) => { ...prev, currentPage: page, })); - } + }; const handlePerPage = (pageSize: number) => { setPagination((prev) => ({ ...prev, pageSize: pageSize, })); - } + }; return ( - - Emulated api request: {requestPath} + + + Emulated api request: {requestPath} + ; + +const Template: StoryFn = (args) => ( + + + + + +); + +export const Primary = Template.bind({}); diff --git a/src/lib/components/token/token.tsx b/src/lib/components/token/token.tsx new file mode 100644 index 00000000..f559ea73 --- /dev/null +++ b/src/lib/components/token/token.tsx @@ -0,0 +1,34 @@ +import React from 'react'; +import { formatNumber } from '../../utils/formatters'; +import { + currencyPrecisionByCase, + motesToCEP18Token, +} from '../../utils/currency'; + +export interface TokenProps { + amount?: string | null; + precision: number; + decimals: number; + ticker: string; + hideCurrency?: boolean; +} + +export function Token({ + amount, + precision, + decimals, + ticker, + hideCurrency, +}: TokenProps) { + if (amount == null) { + return <>{'N/A'}; + } + + const tokenAmount = motesToCEP18Token(amount, decimals); + const formattedTokenAmount = formatNumber(tokenAmount, { precision }); + const formattedText = formattedTokenAmount + ' ' + ticker; + + return <>{hideCurrency ? formattedTokenAmount : formattedText}; +} + +export default Token; diff --git a/src/lib/components/tooltip/tooltip.stories.tsx b/src/lib/components/tooltip/tooltip.stories.tsx index ee31bcb8..8bb9f551 100644 --- a/src/lib/components/tooltip/tooltip.stories.tsx +++ b/src/lib/components/tooltip/tooltip.stories.tsx @@ -8,7 +8,7 @@ import CaptionText from '../caption-text/caption-text'; export default { component: Tooltip, - title: 'Components/Overlays and layering/Tooltip', + title: 'Components/Display/Tooltip', // tags: ['autodocs', '!dev'], args: { title: diff --git a/src/lib/components/truncate-box/truncate-box.stories.tsx b/src/lib/components/truncate-box/truncate-box.stories.tsx index b7454ee4..8e181514 100644 --- a/src/lib/components/truncate-box/truncate-box.stories.tsx +++ b/src/lib/components/truncate-box/truncate-box.stories.tsx @@ -7,7 +7,7 @@ import BodyText from '../body-text/body-text'; export default { component: TruncateBox, - title: 'Components/Forms and inputs/Truncate Box', + title: 'Components/Display/Truncate Box', // tags: ['autodocs', '!dev'], args: { size: 1, diff --git a/src/lib/components/user-input-window/user-input-window.stories.tsx b/src/lib/components/user-input-window/user-input-window.stories.tsx index 6d2b8456..68c59181 100644 --- a/src/lib/components/user-input-window/user-input-window.stories.tsx +++ b/src/lib/components/user-input-window/user-input-window.stories.tsx @@ -12,6 +12,7 @@ import { HeaderMenuIcon, LockImageIcon, WarningIcon } from '../../icons-index'; export default { component: UserInputWindow, title: 'Components/Overlays and layering/User Input Window', + excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], parameters: { layout: 'fullscreen' }, argTypes: { diff --git a/src/lib/index.ts b/src/lib/index.ts index 64eaf6c1..b3471a43 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -4,6 +4,7 @@ export * from './components/body-text/body-text'; export * from './components/button/button'; export * from './components/badge/badge'; export * from './components/copy-hash/copy-hash'; +export * from './components/copy/copy'; export * from './components/caption-text/caption-text'; export * from './components/checkbox/checkbox'; export * from './components/circular-indicator/circular-indicator'; @@ -63,6 +64,7 @@ export * from './components/cep18-token/cep18-token'; export * from './components/cspr/cspr'; export * from './components/user-input-window/user-input-window'; export * from './components/multiline-text-row/multiline-text-row'; +export * from './components/multiselect-dropdown/multiselect-dropdown'; export * from './components/warning-message/warning-message'; export * from './components/modal-content-header/modal-content-header'; export * from './components/dropdown-with-search/searchable-dropdown'; diff --git a/src/lib/utils/formatters.stories.tsx b/src/lib/utils/formatters.stories.tsx index feb5e15c..55523d41 100644 --- a/src/lib/utils/formatters.stories.tsx +++ b/src/lib/utils/formatters.stories.tsx @@ -13,7 +13,7 @@ import { } from './formatters'; export default { - title: 'Components/Utils/Formatters', + title: 'Components/Format/Formatters', // tags: ['autodocs', '!dev'], args: {}, argTypes: {}, diff --git a/src/static/favicon.ico b/src/static/favicon.ico index 19e44bbe1bfbbd938161327aa2bea7deb3f804bb..e9bed07a31e128364871c11e2bf3d2be91ce3958 100644 GIT binary patch delta 2072 zcmV+z2o*?cC?4H1U z>_hEn^5{&Y?gF4iQ2+>l_;aIghKV9lB)HsN?C!T<01C$%er0QT{t34W`V4#cVGV4$ zhJ*LGt+%%qr+dLV0tNRLx6ix6e|+3-QDf&&ASx&bsC_T-&-b{!wERf}FnLqKzgJKQ ziV&zU;jb4Cg6yHX1o&}L!9NXTMpl86p9J{w7C)ZgHihx10e(KOpjkpDWD}_Hf$LKU zBgifqye-t$yGzJ`4izl>=TJ`X{@tAJ5RZWB2b~9 z{8sDzr0)bd!H4tg+*Pnn0;RGV+FzjC|^}vcq7dwdMC%sYY%7i-tjaXLme*pPO@?l2v&Xq_s zD*w7AP-!wBAU_(JE*gs&#D?Z~N7d`@ID5sBZx|T!%pn(eJc)_Iv0Y_o{ipm*Ch$n( zX6qZ(Vbbi$lo+JLB?@w(3xjl6!<3<3)cEmtNC#~qp`GRBK*=|~g{Uz5Nn6PAq6>(w z1PfEaWiSqnr~y&Re`@ip%bZBGn9xLo8PK(?7VVw}Pk^dDr;0a(@vp6)Jk$x3!XVLp z^Wt=O-@&OEFNI2~@zOb0$Ko16(4d%*o4T8+gxTqE5o5v+wM$0^9&;j&({^AJb+$itBf-ZRU&UT6o;0-&lF)N)1L?aAoYuqV7{5e+&=15I3bBsBpxq8Gif& z>~UlBl#x`sb_;_jPbVUdG=xoe$J$!ggvQ%|H7JoF3sPrgtp&*tlXdrLI3>C%J!7~T z=;~1T7A?rU(NEqV>w|N$h%cmxHTWkJHE~xu>!NGp7!HTs7TpVf@F%KCM?Uyd6LUL2 z(s2zS6FgB5f0P7!H&YMv@hK~7l%1zc#pw`P857n;CaAM6?q5k;&wIO?jRol*JXsKb z@W!mnhV^8)otpeB4OD0VO$6(Ya>CI(W$q_q^7G8Xx=w_3aknKC37sJ6!5>&#P$eDj zd$5LIMccFB(#QwZIS;=%X7_XMaxiARcb@S*D{Tu8e_p8Ff7K7vG#e%c8;V{Cf{_^ZlO~Mq9ATS@U^{FPPCQv3lO@{dWp|RL zz#RXg33QYNg=)oN=&pJLsa`^{sDA7IOC}pf5CF-#@4gr81sWK8fdoN@xnyZ2wf}M(b4iwv;GcIf8~5pMm}B-Zu0gO?IgGq z^~w8MPt_7N!HGB*8YT(0e5j$Kod7NUaR0`p*8}5hN5|&pnFk;LH$;LBjob_^EkO!ls`iEI@5R0#%U%>P)7+{t$qvI?7>|Wz zf1?9u3@`K=pbNmY?JTXIoI`MM>oRo{M$NDsiX-hr;Qxk%g#5fSA0G<7jSin&2D%A@ zlJoP-hK~;k-|`*XOa!ELLwKn3^7C}I7GuPE6z6f2huL}vZWg?+3xWqyXe+qhI0;h6EjMh==NaAy;c0!6;N$vZY6!)2CvuUO%sEbeI?72BwzZr9@*&Bn*uXG5Gi= zjh4ARG({VOacCeu{)xlP+;(9Vf7p-Uq685bI!)s-bk)Q81(sdY<@mTZpA+1vYq7o zd{PP|ahY&on=Xb#a!x7!vK=!&9~;>g&qgQ{HmUoViiYMjngg%9e0(isl2*kh2gUn7 zhu$B0Mm_VehZ#b!{Kc&G?!JRF`C`|RG{_!L0{;O?{vr}!8Fpa+00005a0vDfEif$PtS z__2g*uw`KUh5Sd1EzuF3Bp`4*1uovw?F^G4-)Gol?mRbW4nejg?d89NE;hp3UZ6oA z5%C`|De*Y=iPy8G`X-fg(%gq=!Bz&8%7|l3qB733ZyGvM>z?KmZxs#Ae`r)8{ow-B zBWSz=2@%Y{H+-{bvWuVuwCEOy0@h%ld)riWp;Wn!8UxB;#cRaD2Dn^>yYdzr6E78Q zE&>v`c#p|-zQT!Zyeg(tNL#*5v?p}nFrf85MKt6~GuO>IL$)z}>`sRPW;#|>;AX%= zJPSkvTe+^&SDDI%w&BQ@f1D+O-_H>jmFrZC#U6P5UE@rmvw;H440!Po@!+^lQiB&X zHDfq`s-ABV@s}TZj7O?>bziEWmcZ{h;$r1JlbaTqc@%w}MkNK!fH*=_*v5O~F$zb) z*H-_4G=<%lf4Mf^Df1kEBF}iC1JWP6Ek$pLxin_J1NC`TO{s$9e_YV^({fVmOl4iflNz6?uzQwpQ9^V3Y<#V<2<4OL8yH{BIj^iV=_u zY%n>P6}Sr5`Pk~*e|TBwC?`VOD*PcP#~*8j{W!yX7aB5RdWSzl`#cdA-vcFXAL$b2 zx^`mvlEm#RukM~Hq7kd21vMSFB@nEG$$NcSqa*f|j>bwS#DjX9%|Ivu=brs+qwUHG z*}yN-BOa@W4}e*ETho6pcF5GjaR44RD^4G5WX6b{!FHjJe+SC^nt40%SW9Nhdf*hh zf#*V<-H$h3&D^3DtjKaT1Nloti3hbwn_Q?YITux{lQ%U%Mw0uaRQmv z!_GmZKQ1$Ke_!bTv0JfS$fPgbGJs<%5`jpZ%iJi6D$&Y$F4PZN#kpG(h^G9&Z{&eV zGFz+@!uLR@^`Ny4>`CZUCzuOqqw0Ln)(y;)YHlTUwUpb((p5Es#$-f|h(os?5DE#4Fl*LQ7+TYLBxUh$!ZcQ~YE>ZmFkG zgujy6fDWiV#vKU7$Uk$v-_uqCuH~w_-^=5y;)f!qLkKT1m;slVikX@D$&IZV;vK{H cLqxz|6q_`sx3JPW^8f$<07*qoM6N<$g6Cs8+W-In diff --git a/src/storybook-components.tsx b/src/storybook-components.tsx index e0ad0549..5e6f2a87 100644 --- a/src/storybook-components.tsx +++ b/src/storybook-components.tsx @@ -1,38 +1,4 @@ import styled from 'styled-components'; -import FlexRow from './lib/components/flex-row/flex-row'; -import FlexColumn from './lib/components/flex-column/flex-column'; -import CsprDesignLogo from './static/cspr-design-logo.svg'; -import SvgIcon from './lib/components/svg-icon/svg-icon'; - -// @ts-ignore -const StyledCard = styled.div(() => ({ - display: 'flex', - flexDirection: 'column', - justifyContent: 'center', - width: '100px', - height: '100%', - minWidth: '200px', - minHeight: '200px', - overflow: 'hidden', - borderRadius: '12px', - backgroundColor: '#F2F3F5', - boxShadow: '0px 2px 4px rgba(143, 144, 152, 0.45)', -})); - -const StyledContainer = styled.div(({}) => ({ - display: 'flex', - flexDirection: 'row', - justifyContent: 'center', - alignItems: 'center', - padding: '16px', -})); - -const StyledCardText = styled.div(() => ({ - color: '#0B120E', - lineHeight: '24px', - fontWeight: 600, - fontFamily: 'Inter', -})); export const StyledHeaderWrapper = styled.span(({}) => ({ '& h1': { @@ -49,34 +15,3 @@ export const StyledWrapper = styled.div(({}) => ({ alignItems: 'center', color: '#fff !important', })); - -interface MenuBlockProps { - items: Array<{ label: string; link: string }>; -} - -export const MenuBlocks = ({ items }: MenuBlockProps) => { - return ( - - - {items.map((item) => { - return ( - - - - - - - {item.label} - - - - ); - })} - - - ); -}; From 7c11b9f07e53b1cc16327f3e1c22de85cd76acb4 Mon Sep 17 00:00:00 2001 From: Evgeniy Bilov Date: Fri, 15 Aug 2025 18:10:57 +0300 Subject: [PATCH 2/3] change GA tracking place --- .storybook/main.ts | 1 - .storybook/manager.ts | 3 - .storybook/preview.tsx | 36 +- package-lock.json | 1053 +--------------------------------------- package.json | 1 - 5 files changed, 52 insertions(+), 1042 deletions(-) diff --git a/.storybook/main.ts b/.storybook/main.ts index 4cc8f4e3..d6461f0a 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -15,7 +15,6 @@ const config: StorybookConfig = { }, }, '@storybook/addon-themes', - '@storybook/addon-google-analytics', ], staticDirs: ['../src/static', '../src/lib/assets/fonts'], framework: { diff --git a/.storybook/manager.ts b/.storybook/manager.ts index df70fd86..afe6c8c9 100644 --- a/.storybook/manager.ts +++ b/.storybook/manager.ts @@ -4,6 +4,3 @@ import yourTheme from './theme'; addons.setConfig({ theme: yourTheme, }); - -window.STORYBOOK_GA_ID = 'G-H4X1J4017T'; -window.STORYBOOK_REACT_GA_OPTIONS = {}; diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index 731460e9..f86cfc33 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useEffect } from 'react'; import 'react-loading-skeleton/dist/skeleton.css'; import type { Preview } from '@storybook/react-vite'; @@ -16,11 +16,35 @@ const GlobalStyles = createGlobalStyle` const preview: Preview = { // tags: ['autodocs'], // turn on when fix some components stories decorators: [ - (Story) => ( - - - - ), + (Story) => { + useEffect(() => { + // Google Analytics tracking code + const script = document.createElement('script'); + script.async = true; + script.src = 'https://www.googletagmanager.com/gtag/js?id=G-H4X1J4017T'; // Replace with your GA4 Measurement ID + document.head.appendChild(script); + + script.onload = () => { + window.dataLayer = window.dataLayer || []; + function gtag() { + dataLayer.push(arguments); + } + gtag('js', new Date()); + gtag('config', 'G-H4X1J4017T'); // Replace with your GA4 Measurement ID + }; + + return () => { + // Optional: Clean up the script if needed + document.head.removeChild(script); + }; + }, []); + + return ( + + + + ); + }, withThemeFromJSXProvider({ themes: { light: themeConfig.light, diff --git a/package-lock.json b/package-lock.json index ed09cf34..e947e79e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,6 @@ "version": "2.0.0", "dependencies": { "@formatjs/intl": "^3.1.6", - "@storybook/addon-google-analytics": "^6.2.9", "big.js": "^7.0.1", "copy-to-clipboard": "^3.3.3", "date-fns": "^4.1.0", @@ -384,52 +383,6 @@ "node": ">=6.9.0" } }, - "node_modules/@emotion/cache": { - "version": "10.0.29", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", - "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", - "license": "MIT", - "dependencies": { - "@emotion/sheet": "0.9.4", - "@emotion/stylis": "0.8.5", - "@emotion/utils": "0.11.3", - "@emotion/weak-memoize": "0.2.5" - } - }, - "node_modules/@emotion/core": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.3.1.tgz", - "integrity": "sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.5.5", - "@emotion/cache": "^10.0.27", - "@emotion/css": "^10.0.27", - "@emotion/serialize": "^0.11.15", - "@emotion/sheet": "0.9.4", - "@emotion/utils": "0.11.3" - }, - "peerDependencies": { - "react": ">=16.3.0" - } - }, - "node_modules/@emotion/css": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz", - "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==", - "license": "MIT", - "dependencies": { - "@emotion/serialize": "^0.11.15", - "@emotion/utils": "0.11.3", - "babel-plugin-emotion": "^10.0.27" - } - }, - "node_modules/@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", - "license": "MIT" - }, "node_modules/@emotion/is-prop-valid": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", @@ -445,82 +398,6 @@ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", "license": "MIT" }, - "node_modules/@emotion/serialize": { - "version": "0.11.16", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", - "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", - "license": "MIT", - "dependencies": { - "@emotion/hash": "0.8.0", - "@emotion/memoize": "0.7.4", - "@emotion/unitless": "0.7.5", - "@emotion/utils": "0.11.3", - "csstype": "^2.5.7" - } - }, - "node_modules/@emotion/serialize/node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", - "license": "MIT" - }, - "node_modules/@emotion/serialize/node_modules/csstype": { - "version": "2.6.21", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", - "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", - "license": "MIT" - }, - "node_modules/@emotion/sheet": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", - "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==", - "license": "MIT" - }, - "node_modules/@emotion/styled": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", - "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", - "license": "MIT", - "dependencies": { - "@emotion/styled-base": "^10.3.0", - "babel-plugin-emotion": "^10.0.27" - }, - "peerDependencies": { - "@emotion/core": "^10.0.27", - "react": ">=16.3.0" - } - }, - "node_modules/@emotion/styled-base": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", - "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.5.5", - "@emotion/is-prop-valid": "0.8.8", - "@emotion/serialize": "^0.11.15", - "@emotion/utils": "0.11.3" - }, - "peerDependencies": { - "@emotion/core": "^10.0.28", - "react": ">=16.3.0" - } - }, - "node_modules/@emotion/styled-base/node_modules/@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "license": "MIT", - "dependencies": { - "@emotion/memoize": "0.7.4" - } - }, - "node_modules/@emotion/styled-base/node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", - "license": "MIT" - }, "node_modules/@emotion/stylis": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", @@ -533,18 +410,6 @@ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", "license": "MIT" }, - "node_modules/@emotion/utils": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", - "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", - "license": "MIT" - }, - "node_modules/@emotion/weak-memoize": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", - "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", - "license": "MIT" - }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.8", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", @@ -1419,22 +1284,6 @@ "url": "https://opencollective.com/popperjs" } }, - "node_modules/@reach/router": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.4.tgz", - "integrity": "sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA==", - "license": "MIT", - "dependencies": { - "create-react-context": "0.3.0", - "invariant": "^2.2.3", - "prop-types": "^15.6.1", - "react-lifecycles-compat": "^3.0.4" - }, - "peerDependencies": { - "react": "15.x || 16.x || 16.4.0-alpha.0911da3", - "react-dom": "15.x || 16.x || 16.4.0-alpha.0911da3" - } - }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-beta.27", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", @@ -1912,32 +1761,6 @@ "storybook": "^9.1.0" } }, - "node_modules/@storybook/addon-google-analytics": { - "version": "6.2.9", - "resolved": "https://registry.npmjs.org/@storybook/addon-google-analytics/-/addon-google-analytics-6.2.9.tgz", - "integrity": "sha512-L+cSXCWZ6y0QWd2gSeUGBfA6iVCirI/OF2TtlbeJkFshqtKlT2ypwtKaGHK9Euw1e0PbS0+RTUW31m96ofBhDg==", - "license": "MIT", - "dependencies": { - "@storybook/addons": "6.2.9", - "@storybook/core-events": "6.2.9", - "core-js": "^3.8.2", - "global": "^4.4.0", - "react-ga": "^2.7.0", - "regenerator-runtime": "^0.13.7" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, "node_modules/@storybook/addon-themes": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-9.1.0.tgz", @@ -1955,59 +1778,6 @@ "storybook": "^9.1.0" } }, - "node_modules/@storybook/addons": { - "version": "6.2.9", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.2.9.tgz", - "integrity": "sha512-GnmEKbJwiN1jncN9NSA8CuR1i2XAlasPcl/Zn0jkfV9WitQeczVcJCPw86SGH84AD+tTBCyF2i9UC0KaOV1YBQ==", - "license": "MIT", - "dependencies": { - "@storybook/api": "6.2.9", - "@storybook/channels": "6.2.9", - "@storybook/client-logger": "6.2.9", - "@storybook/core-events": "6.2.9", - "@storybook/router": "6.2.9", - "@storybook/theming": "6.2.9", - "core-js": "^3.8.2", - "global": "^4.4.0", - "regenerator-runtime": "^0.13.7" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/@storybook/api": { - "version": "6.2.9", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.2.9.tgz", - "integrity": "sha512-okkA3HAScE9tGnYBrjTOcgzT+L1lRHNoEh3ZfGgh1u/XNEyHGNkj4grvkd6nX7BzRcYQ/l2VkcKCqmOjUnSkVQ==", - "license": "MIT", - "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/channels": "6.2.9", - "@storybook/client-logger": "6.2.9", - "@storybook/core-events": "6.2.9", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.2.9", - "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.2.9", - "@types/reach__router": "^1.3.7", - "core-js": "^3.8.2", - "fast-deep-equal": "^3.1.3", - "global": "^4.4.0", - "lodash": "^4.17.20", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "regenerator-runtime": "^0.13.7", - "store2": "^2.12.0", - "telejson": "^5.1.0", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, "node_modules/@storybook/builder-vite": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-9.1.0.tgz", @@ -2027,45 +1797,6 @@ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" } }, - "node_modules/@storybook/channels": { - "version": "6.2.9", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.2.9.tgz", - "integrity": "sha512-6dC8Fb2ipNyOQXnUZMDeEUaJGH5DMLzyHlGLhVyDtrO5WR6bO8mQdkzf4+5dSKXgCBNX0BSkssXth4pDjn18rg==", - "license": "MIT", - "dependencies": { - "core-js": "^3.8.2", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - } - }, - "node_modules/@storybook/client-logger": { - "version": "6.2.9", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.2.9.tgz", - "integrity": "sha512-IfOQZuvpjh66qBInQCJOb9S0dTGpzZ/Cxlcvokp+PYt95KztaWN3mPm+HaDQCeRsrWNe0Bpm1zuickcJ6dBOXg==", - "license": "MIT", - "dependencies": { - "core-js": "^3.8.2", - "global": "^4.4.0" - } - }, - "node_modules/@storybook/core-events": { - "version": "6.2.9", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.2.9.tgz", - "integrity": "sha512-xQmbX/oYQK1QsAGN8hriXX5SUKOoTUe3L4dVaVHxJqy7MReRWJpprJmCpbAPJzWS6WCbDFfCM5kVEexHLOzJlQ==", - "license": "MIT", - "dependencies": { - "core-js": "^3.8.2" - } - }, - "node_modules/@storybook/csf": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz", - "integrity": "sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==", - "license": "MIT", - "dependencies": { - "lodash": "^4.17.15" - } - }, "node_modules/@storybook/csf-plugin": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-9.1.0.tgz", @@ -2180,153 +1911,6 @@ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" } }, - "node_modules/@storybook/router": { - "version": "6.2.9", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.2.9.tgz", - "integrity": "sha512-7Bn1OFoItCl8whXRT8N1qp1Lky7kzXJ3aslWp5E8HcM8rxh4OYXfbaeiyJEJxBTGC5zxgY+tAEXHFjsAviFROg==", - "license": "MIT", - "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.2.9", - "@types/reach__router": "^1.3.7", - "core-js": "^3.8.2", - "fast-deep-equal": "^3.1.3", - "global": "^4.4.0", - "lodash": "^4.17.20", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "ts-dedent": "^2.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/@storybook/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", - "license": "ISC", - "dependencies": { - "core-js": "^3.6.5", - "find-up": "^4.1.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@storybook/semver/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/semver/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/semver/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/semver/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/semver/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/theming": { - "version": "6.2.9", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.2.9.tgz", - "integrity": "sha512-183oJW7AD7Fhqg5NT4ct3GJntwteAb9jZnQ6yhf9JSdY+fk8OhxRbPf7ov0au2gYACcGrWDd9K5pYQsvWlP5gA==", - "license": "MIT", - "dependencies": { - "@emotion/core": "^10.1.1", - "@emotion/is-prop-valid": "^0.8.6", - "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.2.9", - "core-js": "^3.8.2", - "deep-object-diff": "^1.1.0", - "emotion-theming": "^10.0.27", - "global": "^4.4.0", - "memoizerific": "^1.11.3", - "polished": "^4.0.5", - "resolve-from": "^5.0.0", - "ts-dedent": "^2.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/@storybook/theming/node_modules/@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "license": "MIT", - "dependencies": { - "@emotion/memoize": "0.7.4" - } - }, - "node_modules/@storybook/theming/node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", - "license": "MIT" - }, - "node_modules/@storybook/theming/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", @@ -2735,12 +2319,6 @@ "@types/react": "*" } }, - "node_modules/@types/is-function": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.3.tgz", - "integrity": "sha512-/CLhCW79JUeLKznI6mbVieGbl4QU5Hfn+6udw1YHZoofASjbQ5zaP5LzAUZYDpRYEjS4/P+DhEgyJ/PQmGGTWw==", - "license": "MIT" - }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -2813,31 +2391,18 @@ "undici-types": "~7.10.0" } }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "license": "MIT" - }, "node_modules/@types/prop-types": { "version": "15.7.15", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "dev": true, "license": "MIT" }, - "node_modules/@types/reach__router": { - "version": "1.3.15", - "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.15.tgz", - "integrity": "sha512-5WEHKGglRjq/Ae3F8UQxg+GYUIhTUEiyBT9GKPoOLU/vPTn8iZrRbdzxqvarOaGludIejJykHLMdOCdhgWqaxA==", - "license": "MIT", - "dependencies": { - "@types/react": "*" - } - }, "node_modules/@types/react": { "version": "18.3.23", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz", "integrity": "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==", + "dev": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -3434,81 +2999,6 @@ "node": ">=4" } }, - "node_modules/babel-plugin-emotion": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz", - "integrity": "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@emotion/hash": "0.8.0", - "@emotion/memoize": "0.7.4", - "@emotion/serialize": "^0.11.16", - "babel-plugin-macros": "^2.0.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^1.0.5", - "find-root": "^1.1.0", - "source-map": "^0.5.7" - } - }, - "node_modules/babel-plugin-emotion/node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", - "license": "MIT" - }, - "node_modules/babel-plugin-emotion/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "license": "MIT" - }, - "node_modules/babel-plugin-emotion/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/babel-plugin-emotion/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - } - }, - "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/babel-plugin-named-exports-order": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz", @@ -3544,12 +3034,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==", - "license": "MIT" - }, "node_modules/bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", @@ -3656,39 +3140,11 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -3875,17 +3331,6 @@ "toggle-selection": "^1.0.6" } }, - "node_modules/core-js": { - "version": "3.45.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.45.0.tgz", - "integrity": "sha512-c2KZL9lP4DjkN3hk/an4pWn5b5ZefhRJnAc42n6LJ19kSnbeRbdQZE5dSeE2LBol1OwJD3X1BQvFTAsa8ReeDA==", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/cosmiconfig": { "version": "8.3.6", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", @@ -3913,20 +3358,6 @@ } } }, - "node_modules/create-react-context": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz", - "integrity": "sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==", - "license": "MIT", - "dependencies": { - "gud": "^1.0.0", - "warning": "^4.0.3" - }, - "peerDependencies": { - "prop-types": "^15.0.0", - "react": "^0.14.0 || ^15.0.0 || ^16.0.0" - } - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -3973,6 +3404,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, "license": "MIT" }, "node_modules/date-fns": { @@ -4039,12 +3471,6 @@ "node": ">=6" } }, - "node_modules/deep-object-diff": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.9.tgz", - "integrity": "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==", - "license": "MIT" - }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -4109,11 +3535,6 @@ "dev": true, "license": "MIT" }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, "node_modules/dot-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", @@ -4141,20 +3562,6 @@ "react": ">=16.12.0" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -4174,22 +3581,7 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true, - "license": "MIT" - }, - "node_modules/emotion-theming": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emotion-theming/-/emotion-theming-10.3.0.tgz", - "integrity": "sha512-mXiD2Oj7N9b6+h/dC6oLf9hwxbtKHQjoIqtodEyL8CpkN4F3V4IK/BT4D0C7zSs4BBFOu4UlPJbvvBLa88SGEA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.5.5", - "@emotion/weak-memoize": "0.2.5", - "hoist-non-react-statics": "^3.3.0" - }, - "peerDependencies": { - "@emotion/core": "^10.0.27", - "react": ">=16.3.0" - } + "license": "MIT" }, "node_modules/end-of-stream": { "version": "1.4.5", @@ -4218,41 +3610,12 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/esbuild": { "version": "0.25.8", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", @@ -4535,6 +3898,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, "license": "MIT" }, "node_modules/fast-glob": { @@ -4592,12 +3956,6 @@ "node": ">=8" } }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "license": "MIT" - }, "node_modules/find-up": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", @@ -4667,6 +4025,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4682,43 +4041,6 @@ "node": ">=6.9.0" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -4766,28 +4088,6 @@ "node": ">= 6" } }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "license": "MIT", - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -4795,12 +4095,6 @@ "dev": true, "license": "ISC" }, - "node_modules/gud": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", - "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==", - "license": "MIT" - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4811,37 +4105,11 @@ "node": ">=8" } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -4910,6 +4178,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -4964,25 +4233,18 @@ "tslib": "^2.8.0" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, "license": "MIT" }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -5030,12 +4292,6 @@ "node": ">=8" } }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "license": "MIT" - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -5072,24 +4328,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -5100,23 +4338,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -5137,15 +4358,6 @@ "dev": true, "license": "ISC" }, - "node_modules/isobject": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -5305,6 +4517,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { @@ -5351,6 +4564,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, "license": "MIT" }, "node_modules/local-pkg": { @@ -5453,12 +4667,6 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "node_modules/map-or-similar": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", - "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", - "license": "MIT" - }, "node_modules/markdown-table": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", @@ -5470,15 +4678,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/mdast-util-find-and-replace": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", @@ -5692,15 +4891,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/memoizerific": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", - "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", - "license": "MIT", - "dependencies": { - "map-or-similar": "^1.5.0" - } - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -6329,14 +5519,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dependencies": { - "dom-walk": "^0.1.0" - } - }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -6504,18 +5686,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -6586,15 +5756,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -6606,6 +5767,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -6618,6 +5780,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -6663,6 +5826,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, "license": "MIT" }, "node_modules/path-scurry": { @@ -6693,6 +5857,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -6746,18 +5911,6 @@ "pathe": "^2.0.3" } }, - "node_modules/polished": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", - "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.17.8" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -6836,15 +5989,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -6883,21 +6027,6 @@ "node": ">=6" } }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/quansync": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz", @@ -7000,16 +6129,6 @@ "react": "16.8 - 19" } }, - "node_modules/react-ga": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/react-ga/-/react-ga-2.7.0.tgz", - "integrity": "sha512-AjC7UOZMvygrWTc2hKxTDvlMXEtbmA0IgJjmkhgmQQ3RkXrWR11xEagLGFGaNyaPnmg24oaIiaNPnEoftUhfXA==", - "license": "Apache-2.0", - "peerDependencies": { - "prop-types": "^15.6.0", - "react": "^15.6.2 || ^16.0" - } - }, "node_modules/react-inlinesvg": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/react-inlinesvg/-/react-inlinesvg-4.2.0.tgz", @@ -7181,12 +6300,6 @@ "node": ">=8" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "license": "MIT" - }, "node_modules/remark-gfm": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", @@ -7253,6 +6366,7 @@ "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", @@ -7273,6 +6387,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -7353,23 +6468,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/scheduler": { "version": "0.26.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", @@ -7452,78 +6550,6 @@ "node": ">=18" } }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -7598,12 +6624,6 @@ "node": ">=10" } }, - "node_modules/store2": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.4.tgz", - "integrity": "sha512-srTItn1GOvyvOycgxjAnPA63FZNwy0PTyUBFMHRM+hVFltAeoh0LmNBz9SZqUS9mMqGk8rfyWyXn3GH5ReJ8Zw==", - "license": "MIT" - }, "node_modules/storybook": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/storybook/-/storybook-9.1.0.tgz", @@ -7877,6 +6897,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -7892,22 +6913,6 @@ "dev": true, "license": "MIT" }, - "node_modules/telejson": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/telejson/-/telejson-5.3.3.tgz", - "integrity": "sha512-PjqkJZpzEggA9TBpVtJi1LVptP7tYtXB6rEubwlHap76AMjzvOdKX41CxyaW7ahhzDU1aftXnMCx5kAPDZTQBA==", - "license": "MIT", - "dependencies": { - "@types/is-function": "^1.0.0", - "global": "^4.4.0", - "is-function": "^1.0.2", - "is-regex": "^1.1.2", - "is-symbol": "^1.0.3", - "isobject": "^4.0.0", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3" - } - }, "node_modules/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", @@ -7999,6 +7004,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.10" @@ -8210,12 +7216,6 @@ "punycode": "^2.1.0" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, "node_modules/vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", @@ -8529,15 +7529,6 @@ "dev": true, "license": "ISC" }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, "node_modules/yocto-queue": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", diff --git a/package.json b/package.json index 618b1769..e5ee4024 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,6 @@ }, "dependencies": { "@formatjs/intl": "^3.1.6", - "@storybook/addon-google-analytics": "^6.2.9", "big.js": "^7.0.1", "copy-to-clipboard": "^3.3.3", "date-fns": "^4.1.0", From c193cebab1577d2a767a04dee7f6586eda007e9d Mon Sep 17 00:00:00 2001 From: Evgeniy Bilov Date: Fri, 15 Aug 2025 18:47:13 +0300 Subject: [PATCH 3/3] fix naming --- src/03-ColorPalette.mdx | 2 +- .../account-info-row.stories.tsx | 2 +- .../base-table/base-table.stories.tsx | 66 ------- src/lib/components/base-table/base-table.tsx | 70 ------- .../body-text/body-text.stories.tsx | 2 +- .../caption-text/caption-text.stories.tsx | 2 +- .../circular-indicator.stories.tsx | 2 +- .../components/flex-box/flex-box.stories.tsx | 2 +- .../flex-column/flex-column.stories.tsx | 2 +- .../components/flex-row/flex-row.stories.tsx | 2 +- .../header-tab-menu-item.stories.tsx | 2 +- .../header-text/header-text.stories.tsx | 2 +- .../multiline-text-row.stories.tsx | 2 +- .../multiselect-dropdown.stories.tsx | 2 +- .../multiselect-input.stories.tsx | 2 +- .../products-menu.stories.tsx | 2 +- .../dropdown-menu/dropdown-menu.stories.tsx | 2 +- .../main-menu/main-menu.stories.tsx | 2 +- .../page-tile-header.stories.tsx | 2 +- .../page-tile/page-tile.stories.tsx | 2 +- .../paginated-table.stories.tsx | 176 ++++++++++++++++++ .../paginated-table/paginated-table.tsx | 101 ++++++++++ .../table-error.tsx | 0 .../table-loader.tsx | 0 .../progress-line/progress-line.stories.tsx | 2 +- .../subtitle-text/subtitle-text.stories.tsx | 2 +- .../components/tab-menu/tab-menu.stories.tsx | 6 +- .../table-data-header.stories.tsx | 2 +- src/lib/components/table/table.stories.tsx | 132 ++----------- src/lib/components/table/table.tsx | 152 ++++++--------- .../components/text-row/text-row.stories.tsx | 3 +- src/lib/components/token/token.stories.tsx | 2 +- .../truncate-box/truncate-box.stories.tsx | 2 +- src/lib/index.ts | 9 +- 34 files changed, 379 insertions(+), 382 deletions(-) delete mode 100644 src/lib/components/base-table/base-table.stories.tsx delete mode 100644 src/lib/components/base-table/base-table.tsx create mode 100644 src/lib/components/paginated-table/paginated-table.stories.tsx create mode 100644 src/lib/components/paginated-table/paginated-table.tsx rename src/lib/components/{table => paginated-table}/table-error.tsx (100%) rename src/lib/components/{table => paginated-table}/table-loader.tsx (100%) diff --git a/src/03-ColorPalette.mdx b/src/03-ColorPalette.mdx index 64a30c95..81cdebc1 100644 --- a/src/03-ColorPalette.mdx +++ b/src/03-ColorPalette.mdx @@ -6,7 +6,7 @@ import {StyledHeaderWrapper, StyledWrapper} from "./storybook-components.tsx"; - # Palette of colors + # Color palette diff --git a/src/lib/components/account-info-row/account-info-row.stories.tsx b/src/lib/components/account-info-row/account-info-row.stories.tsx index 5bc7b09a..2b34d41e 100644 --- a/src/lib/components/account-info-row/account-info-row.stories.tsx +++ b/src/lib/components/account-info-row/account-info-row.stories.tsx @@ -7,7 +7,7 @@ export default { component: AccountInfoRow, excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], - title: 'Components/Display/Account Info Row', + title: 'Components/Display/AccountInfoRow', parameters: { controls: { sort: 'requiredFirst', diff --git a/src/lib/components/base-table/base-table.stories.tsx b/src/lib/components/base-table/base-table.stories.tsx deleted file mode 100644 index 05122d51..00000000 --- a/src/lib/components/base-table/base-table.stories.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import React from 'react'; -import { BaseTable, BaseTableProps } from './base-table'; -import { Meta, StoryFn } from '@storybook/react'; -import TableDataHeader from '../table-data-header/table-data-header'; -import TableRow from '../table-row/table-row'; -import TableData from '../table-data/table-data'; -import BodyText from '../body-text/body-text'; -import { PrecisionCase } from '../../utils/currency'; -import CSPR from '../cspr/cspr'; -import PageTile from '../page-tile/page-tile'; - -const mockedData = [ - { rank: 1, motes: '50000000000000', owner: 'konrad.cspr' }, - { rank: 2, motes: '482900000000000', owner: 'victoria.cspr' }, - { rank: 3, motes: '1000000', owner: 'ab.cspr' }, -]; - -export default { - component: BaseTable, - title: 'Components/Display/Base Table', - args: { - renderDataHeaders: () => ( - - Rank - Balance{' '} - Owner - - ), - renderData: () => ( - <> - {mockedData.map((data) => ( - - - {data.rank} - - - - - - - - {data.owner} - - - ))} - - ), - }, -} as Meta; - -const Template: StoryFn = (args: BaseTableProps) => { - return ( - - - - ); -}; - -export const Primary = Template.bind({}); diff --git a/src/lib/components/base-table/base-table.tsx b/src/lib/components/base-table/base-table.tsx deleted file mode 100644 index df322d2e..00000000 --- a/src/lib/components/base-table/base-table.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import React, { ReactNode } from 'react'; -import styled from 'styled-components'; -import TableHead from '../table-head/table-head'; -import TableBody from '../table-body/table-body'; -import BodyText from '../body-text/body-text'; - -export interface BaseTableProps { - renderHeader?: () => ReactNode; - renderDataHeaders?: () => ReactNode; - renderData?: () => ReactNode; - renderFooter?: () => ReactNode; - noData?: boolean; - noDataMessage?: string; - paddingBottom?: number; -} - -export const TableContainer = styled.div<{ paddingBottom?: number }>( - ({ theme, paddingBottom }) => ({ - overflowX: 'auto', - ...(paddingBottom && { paddingBottom }), - }), -); - -const StyledTable = styled.table(({ theme }) => ({ - width: '100%', - position: 'relative', - borderCollapse: 'collapse', -})); - -const NoDataContainer = styled.div(({ theme }) => ({ - position: 'absolute', - top: 0, - width: '100%', - height: '100%', - display: 'flex', - alignItems: 'center', - justifyContent: 'center', -})); - -export function BaseTable(props: BaseTableProps) { - const { - renderHeader, - renderDataHeaders, - renderData, - renderFooter, - noData, - noDataMessage, - paddingBottom, - } = props; - - return ( - <> - {renderHeader && renderHeader()} - - - {renderDataHeaders && {renderDataHeaders()}} - {renderData && {renderData()}} - - - {renderFooter && renderFooter()} - {noDataMessage && noData && ( - - {noDataMessage} - - )} - - ); -} - -export default BaseTable; diff --git a/src/lib/components/body-text/body-text.stories.tsx b/src/lib/components/body-text/body-text.stories.tsx index 5bd5e426..de2b2367 100644 --- a/src/lib/components/body-text/body-text.stories.tsx +++ b/src/lib/components/body-text/body-text.stories.tsx @@ -8,7 +8,7 @@ import TruncateBox from '../truncate-box/truncate-box'; export default { component: BodyText, - title: 'Components/Display/Body Text', + title: 'Components/Display/BodyText', // tags: ['autodocs', '!dev'], args: { size: 1, diff --git a/src/lib/components/caption-text/caption-text.stories.tsx b/src/lib/components/caption-text/caption-text.stories.tsx index d8a8f67e..62845aba 100644 --- a/src/lib/components/caption-text/caption-text.stories.tsx +++ b/src/lib/components/caption-text/caption-text.stories.tsx @@ -8,7 +8,7 @@ import TruncateBox from '../truncate-box/truncate-box'; export default { component: CaptionText, - title: 'Components/Display/Caption Text', + title: 'Components/Display/CaptionText', // tags: ['autodocs', '!dev'], args: { size: 1, diff --git a/src/lib/components/circular-indicator/circular-indicator.stories.tsx b/src/lib/components/circular-indicator/circular-indicator.stories.tsx index 31f39c64..39ce7c71 100644 --- a/src/lib/components/circular-indicator/circular-indicator.stories.tsx +++ b/src/lib/components/circular-indicator/circular-indicator.stories.tsx @@ -7,7 +7,7 @@ import BodyText from '../body-text/body-text'; export default { component: CircularIndicator, - title: 'Components/Display/Circular Indicator', + title: 'Components/Display/CircularIndicator', // tags: ['autodocs', '!dev'], args: { size: 'medium', diff --git a/src/lib/components/flex-box/flex-box.stories.tsx b/src/lib/components/flex-box/flex-box.stories.tsx index 9fef5534..7cf25641 100644 --- a/src/lib/components/flex-box/flex-box.stories.tsx +++ b/src/lib/components/flex-box/flex-box.stories.tsx @@ -7,7 +7,7 @@ import styled from 'styled-components'; export default { component: FlexBox, - title: 'Components/Layout/Flex Box', + title: 'Components/Layout/FlexBox', // tags: ['autodocs', '!dev'], args: { gap: 10, diff --git a/src/lib/components/flex-column/flex-column.stories.tsx b/src/lib/components/flex-column/flex-column.stories.tsx index dc5b8526..656eab22 100644 --- a/src/lib/components/flex-column/flex-column.stories.tsx +++ b/src/lib/components/flex-column/flex-column.stories.tsx @@ -7,7 +7,7 @@ import styled from 'styled-components'; export default { component: FlexColumn, - title: 'Components/Layout/Flex Column', + title: 'Components/Layout/FlexColumn', // tags: ['autodocs', '!dev'], args: { itemsSpacing: 10, diff --git a/src/lib/components/flex-row/flex-row.stories.tsx b/src/lib/components/flex-row/flex-row.stories.tsx index 759a5200..b6848893 100644 --- a/src/lib/components/flex-row/flex-row.stories.tsx +++ b/src/lib/components/flex-row/flex-row.stories.tsx @@ -7,7 +7,7 @@ import styled from 'styled-components'; export default { component: FlexRow, - title: 'Components/Layout/Flex Row', + title: 'Components/Layout/FlexRow', // tags: ['autodocs', '!dev'], args: { itemsSpacing: 10, diff --git a/src/lib/components/header-tab-menu-item/header-tab-menu-item.stories.tsx b/src/lib/components/header-tab-menu-item/header-tab-menu-item.stories.tsx index 47274d9c..fc693744 100644 --- a/src/lib/components/header-tab-menu-item/header-tab-menu-item.stories.tsx +++ b/src/lib/components/header-tab-menu-item/header-tab-menu-item.stories.tsx @@ -7,7 +7,7 @@ import TabMenu from '../tab-menu/tab-menu'; export default { component: HeaderTabMenuItem, - title: 'Components/Navigation/Header Tab Menu Item', + title: 'Components/Navigation/HeaderTabMenuItem', excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], args: { diff --git a/src/lib/components/header-text/header-text.stories.tsx b/src/lib/components/header-text/header-text.stories.tsx index 7238444b..d97b31e7 100644 --- a/src/lib/components/header-text/header-text.stories.tsx +++ b/src/lib/components/header-text/header-text.stories.tsx @@ -8,7 +8,7 @@ import TruncateBox from '../truncate-box/truncate-box'; export default { component: HeaderText, - title: 'Components/Display/Header Text', + title: 'Components/Display/HeaderText', // tags: ['autodocs', '!dev'], args: { size: 1, diff --git a/src/lib/components/multiline-text-row/multiline-text-row.stories.tsx b/src/lib/components/multiline-text-row/multiline-text-row.stories.tsx index edd8bef3..16d543eb 100644 --- a/src/lib/components/multiline-text-row/multiline-text-row.stories.tsx +++ b/src/lib/components/multiline-text-row/multiline-text-row.stories.tsx @@ -4,7 +4,7 @@ import { MultilineTextRow } from './multiline-text-row'; export default { component: MultilineTextRow, - title: 'Components/Form/Multiline Text Row', + title: 'Components/Form/MultilineTextRow', excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], args: { diff --git a/src/lib/components/multiselect-dropdown/multiselect-dropdown.stories.tsx b/src/lib/components/multiselect-dropdown/multiselect-dropdown.stories.tsx index 68c84d71..c8c5d1ff 100644 --- a/src/lib/components/multiselect-dropdown/multiselect-dropdown.stories.tsx +++ b/src/lib/components/multiselect-dropdown/multiselect-dropdown.stories.tsx @@ -6,7 +6,7 @@ import { MultiselectDropdown } from './multiselect-dropdown'; export default { component: MultiselectDropdown, - title: 'Components/Form/Multiselect Dropdown', + title: 'Components/Form/MultiselectDropdown', // tags: ['autodocs', '!dev'], args: { items: [ diff --git a/src/lib/components/multiselect-input/multiselect-input.stories.tsx b/src/lib/components/multiselect-input/multiselect-input.stories.tsx index 7ab3e94c..77ea872f 100644 --- a/src/lib/components/multiselect-input/multiselect-input.stories.tsx +++ b/src/lib/components/multiselect-input/multiselect-input.stories.tsx @@ -6,7 +6,7 @@ import MultiselectInput from './multiselect-input'; export default { component: MultiselectInput, - title: 'Components/Form/Multiselect Input', + title: 'Components/Form/MultiselectInput', excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], args: { diff --git a/src/lib/components/navigation/cspr-products-menu/products-menu.stories.tsx b/src/lib/components/navigation/cspr-products-menu/products-menu.stories.tsx index f320904f..7b708e3a 100644 --- a/src/lib/components/navigation/cspr-products-menu/products-menu.stories.tsx +++ b/src/lib/components/navigation/cspr-products-menu/products-menu.stories.tsx @@ -13,7 +13,7 @@ import { export default { component: ProductsMenu, - title: 'Components/Navigation/Products Menu', + title: 'Components/Navigation/ProductsMenu', excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], args: { diff --git a/src/lib/components/navigation/dropdown-menu/dropdown-menu.stories.tsx b/src/lib/components/navigation/dropdown-menu/dropdown-menu.stories.tsx index 7155973e..a7a5e238 100644 --- a/src/lib/components/navigation/dropdown-menu/dropdown-menu.stories.tsx +++ b/src/lib/components/navigation/dropdown-menu/dropdown-menu.stories.tsx @@ -28,7 +28,7 @@ const StyledFlexColumn = styled(FlexColumn)(({ theme }) => ({ export default { component: DropdownMenu, - title: 'Components/Navigation/Dropdown Menu', + title: 'Components/Navigation/DropdownMenu', // tags: ['autodocs', '!dev'], args: { opened: true, diff --git a/src/lib/components/navigation/main-menu/main-menu.stories.tsx b/src/lib/components/navigation/main-menu/main-menu.stories.tsx index 074b5fdb..e8467346 100644 --- a/src/lib/components/navigation/main-menu/main-menu.stories.tsx +++ b/src/lib/components/navigation/main-menu/main-menu.stories.tsx @@ -17,7 +17,7 @@ const Container = styled.div(({ theme }) => export default { component: MainMenuItem, - title: 'Components/Navigation/Main Menu', + title: 'Components/Navigation/MainMenu', // tags: ['autodocs', '!dev'], args: {}, argTypes: {}, diff --git a/src/lib/components/page-tile-header/page-tile-header.stories.tsx b/src/lib/components/page-tile-header/page-tile-header.stories.tsx index d7368bf7..978e1526 100644 --- a/src/lib/components/page-tile-header/page-tile-header.stories.tsx +++ b/src/lib/components/page-tile-header/page-tile-header.stories.tsx @@ -8,7 +8,7 @@ import PageTile from '../page-tile/page-tile'; export default { component: PageTileHeader, - title: 'Components/Layout/PageTile Header', + title: 'Components/Layout/PageTileHeader', // tags: ['autodocs', '!dev'], } as Meta; diff --git a/src/lib/components/page-tile/page-tile.stories.tsx b/src/lib/components/page-tile/page-tile.stories.tsx index 9961244b..d7d0ce98 100644 --- a/src/lib/components/page-tile/page-tile.stories.tsx +++ b/src/lib/components/page-tile/page-tile.stories.tsx @@ -7,7 +7,7 @@ import BodyText from '../body-text/body-text'; export default { component: PageTile, - title: 'Components/Layout/Page Tile', + title: 'Components/Layout/PageTile', // tags: ['autodocs', '!dev'], args: { withPadding: true, diff --git a/src/lib/components/paginated-table/paginated-table.stories.tsx b/src/lib/components/paginated-table/paginated-table.stories.tsx new file mode 100644 index 00000000..b22834dd --- /dev/null +++ b/src/lib/components/paginated-table/paginated-table.stories.tsx @@ -0,0 +1,176 @@ +import React, { useEffect, useMemo, useState } from 'react'; +import { PaginatedTable, PaginatedTableProps } from './paginated-table'; +import { Meta, StoryFn } from '@storybook/react'; +import HeaderText from '../header-text/header-text'; +import TableDataHeader from '../table-data-header/table-data-header'; +import TableRow from '../table-row/table-row'; +import TableData from '../table-data/table-data'; +import BodyText from '../body-text/body-text'; +import { PrecisionCase } from '../../utils/currency'; +import CSPR from '../cspr/cspr'; +import PageTile from '../page-tile/page-tile'; +import FlexRow from '../flex-row/flex-row'; + +export default { + component: PaginatedTable, + title: 'Components/Display/PaginatedTable', + args: { + renderHeader: () => ( + + Table with pagination + + ), + renderDataHeaders: () => ( + + Rank + Balance{' '} + Owner + + ), + renderPaginatedData: (data: any[]) => ( + <> + {data.map((data) => ( + + + {data.rank} + + + + + + + + {data.owner} + + + ))} + + ), + }, +} as Meta; + +const getRandomBalance = () => { + const min = 100000000000; + const max = 10000000000000; + return Math.floor(Math.random() * (max - min + 1)) + min; +}; + +const MOCKED_OWNERS = [ + 'Alice', + 'Bob', + 'Charlie', + 'Diana', + 'Ethan', + 'Fiona', + 'Gabe', + 'Hana', + 'Ivan', + 'Jules', + 'Kira', + 'Liam', + 'Mona', + 'Noah', + 'Olga', + 'Pavel', + 'Quinn', + 'Ravi', + 'Sara', + 'Tara', + 'Uma', + 'Vik', + 'Walt', + 'Xena', + 'Yara', + 'Zane', +]; + +const MOCK_DATA = Array.from({ length: 87 }, (_, i) => { + const rank = i + 1; + const owner = MOCKED_OWNERS[i % MOCKED_OWNERS.length]; + const csprName = `${owner.toLowerCase()}.cspr`; + const motes = getRandomBalance(); + return { rank, owner: csprName, motes }; +}); + +const emulateGetTableDataRequest = (url: string) => { + const u = new URL(url, 'https://example.local'); + const page = Math.max(parseInt(u.searchParams.get('page') || '1', 10), 1); + const pageSize = Math.max( + parseInt(u.searchParams.get('page_size') || '10', 10), + 1, + ); + + const items_count = MOCK_DATA.length; + const page_count = Math.max(1, Math.ceil(items_count / pageSize)); + + const start = (page - 1) * pageSize; + const end = start + pageSize; + const data = MOCK_DATA.slice(start, end); + + return new Promise((resolve) => { + setTimeout(() => { + resolve({ data, page_count, items_count }); + }, 400); + }); +}; + +const Template: StoryFn = ( + args: PaginatedTableProps, +) => { + const [data, setData] = useState(null); + const [pagination, setPagination] = useState({ + currentPage: 1, + pageSize: 10, + }); + + const requestPath = useMemo( + () => + `/api/table?page=${pagination.currentPage}&page_size=${pagination.pageSize}`, + [pagination.currentPage, pagination.pageSize], + ); + + useEffect(() => { + (async () => { + const res = await emulateGetTableDataRequest(requestPath); + setData(res); + })(); + }, [requestPath]); + + const handleCurrentPage = (page: number) => { + setPagination((prev) => ({ + ...prev, + currentPage: page, + })); + }; + const handlePerPage = (pageSize: number) => { + setPagination((prev) => ({ + ...prev, + pageSize: pageSize, + })); + }; + return ( + + + + Emulated api request: {requestPath} + + + args.renderPaginatedData(data?.data)} + itemCount={data?.items_count} + pageCount={data?.page_count} + currentPage={pagination.currentPage} + perPage={pagination.pageSize} + setCurrentPage={handleCurrentPage} + setPerPage={handlePerPage} + /> + + ); +}; + +export const Primary = Template.bind({}); diff --git a/src/lib/components/paginated-table/paginated-table.tsx b/src/lib/components/paginated-table/paginated-table.tsx new file mode 100644 index 00000000..27d51a0d --- /dev/null +++ b/src/lib/components/paginated-table/paginated-table.tsx @@ -0,0 +1,101 @@ +import React, { Children } from 'react'; + +import { Table } from '../table/table.tsx'; +import { Pagination } from '../pagination/pagination'; +import { TableRowType } from '../table-row/table-row'; +import { TableLoader } from './table-loader'; +import { TableError } from './table-error'; + +export enum OrderDirection { + ASC = 'ASC', + DESC = 'DESC', +} + +export interface ErrorResult { + code: string; + message: string; + description?: string | React.ReactElement; +} + +export interface SortingProps { + orderBy?: string | undefined; + orderDirection?: OrderDirection; + setOrder?: (orderBy: string | undefined, direction: OrderDirection) => void; + reverseSortingDirection?: boolean; +} + +export type RenderProps = { sortingProps: SortingProps }; + +export type PaginatedTableProps = { + data: null | Entity[]; + loading?: boolean; + error?: ErrorResult | null; + renderDataHeaders: (renderProps: RenderProps) => React.ReactElement; + renderPaginatedData: ( + paginatedData: Entity[], + renderProps?: RenderProps, + ) => React.ReactElement | React.ReactElement[]; + tableRowType?: TableRowType; + pageCount: number; + currentPage: number; + pageSize?: number; + itemCount?: number; + setPerPage?: (limit: number) => void; + setCurrentPage?: (page: number) => void; + hideRowsPerPage?: boolean; + totalRowsLabel?: string; +}; + +export const PaginatedTable = ({ + data, + loading, + error, + renderDataHeaders, + renderPaginatedData, + tableRowType = TableRowType.TextWithAvatar, + ...props +}: PaginatedTableProps) => { + const renderPaginationRow = () => !error && ; + + return ( +
renderPaginationRow()} + renderDataHeaders={() => + renderDataHeaders({ + sortingProps: null!, + }) + } + renderData={() => + (data == null && !error) || loading ? ( + + ) : error ? ( + + ) : data ? ( + renderPaginatedData(data, { + sortingProps: {}!, + }) + ) : ( + <> + ) + } + renderFooter={() => renderPaginationRow()} + {...props} + /> + ); +}; + +export default PaginatedTable; diff --git a/src/lib/components/table/table-error.tsx b/src/lib/components/paginated-table/table-error.tsx similarity index 100% rename from src/lib/components/table/table-error.tsx rename to src/lib/components/paginated-table/table-error.tsx diff --git a/src/lib/components/table/table-loader.tsx b/src/lib/components/paginated-table/table-loader.tsx similarity index 100% rename from src/lib/components/table/table-loader.tsx rename to src/lib/components/paginated-table/table-loader.tsx diff --git a/src/lib/components/progress-line/progress-line.stories.tsx b/src/lib/components/progress-line/progress-line.stories.tsx index 16e330a2..cd5ea4b8 100644 --- a/src/lib/components/progress-line/progress-line.stories.tsx +++ b/src/lib/components/progress-line/progress-line.stories.tsx @@ -8,7 +8,7 @@ import BodyText from '../body-text/body-text'; export default { component: ProgressLine, - title: 'Components/Display/Progress Line', + title: 'Components/Display/ProgressLine', // tags: ['autodocs', '!dev'], args: { steps: ['one', 'two', 'three', 'four'], diff --git a/src/lib/components/subtitle-text/subtitle-text.stories.tsx b/src/lib/components/subtitle-text/subtitle-text.stories.tsx index 9c6d8c6c..a9e98b25 100644 --- a/src/lib/components/subtitle-text/subtitle-text.stories.tsx +++ b/src/lib/components/subtitle-text/subtitle-text.stories.tsx @@ -8,7 +8,7 @@ import SubtitleText from './subtitle-text'; export default { component: SubtitleText, - title: 'Components/Display/Subtitle Text', + title: 'Components/Display/SubtitleText', // tags: ['autodocs', '!dev'], args: { size: 1, diff --git a/src/lib/components/tab-menu/tab-menu.stories.tsx b/src/lib/components/tab-menu/tab-menu.stories.tsx index c77c3ae0..5cd9c0f8 100644 --- a/src/lib/components/tab-menu/tab-menu.stories.tsx +++ b/src/lib/components/tab-menu/tab-menu.stories.tsx @@ -4,14 +4,10 @@ import FlexRow from '../flex-row/flex-row'; import FlexColumn from '../flex-column/flex-column'; import TabMenu from '../tab-menu/tab-menu'; import TabMenuItem from '../tab-menu-item/tab-menu-item'; -import BodyText from '../body-text/body-text'; -import TabContent from '../tab-content/tab-content'; -import PageTile from '../page-tile/page-tile'; -import PageTileTabsHeader from '../page-tile-tabs-header/page-tile-tabs-header'; export default { component: TabMenu, - title: 'Components/Layout/Tab Menu', + title: 'Components/Layout/TabMenu', // tags: ['autodocs', '!dev'], args: { active: true, diff --git a/src/lib/components/table-data-header/table-data-header.stories.tsx b/src/lib/components/table-data-header/table-data-header.stories.tsx index f694ac80..88b654ff 100644 --- a/src/lib/components/table-data-header/table-data-header.stories.tsx +++ b/src/lib/components/table-data-header/table-data-header.stories.tsx @@ -4,7 +4,7 @@ import TableDataHeader, { TableDataHeaderProps } from './table-data-header'; export default { component: TableDataHeader, - title: 'Components/Display/Table Data Header', + title: 'Components/Display/TableDataHeader', } as Meta; const Template: StoryFn = ( diff --git a/src/lib/components/table/table.stories.tsx b/src/lib/components/table/table.stories.tsx index 1dcde18e..31afd1c0 100644 --- a/src/lib/components/table/table.stories.tsx +++ b/src/lib/components/table/table.stories.tsx @@ -1,7 +1,6 @@ -import React, { useEffect, useMemo, useState } from 'react'; +import React from 'react'; import { Table, TableProps } from './table'; import { Meta, StoryFn } from '@storybook/react'; -import HeaderText from '../header-text/header-text'; import TableDataHeader from '../table-data-header/table-data-header'; import TableRow from '../table-row/table-row'; import TableData from '../table-data/table-data'; @@ -9,17 +8,17 @@ import BodyText from '../body-text/body-text'; import { PrecisionCase } from '../../utils/currency'; import CSPR from '../cspr/cspr'; import PageTile from '../page-tile/page-tile'; -import FlexRow from '../flex-row/flex-row'; + +const mockedData = [ + { rank: 1, motes: '50000000000000', owner: 'konrad.cspr' }, + { rank: 2, motes: '482900000000000', owner: 'victoria.cspr' }, + { rank: 3, motes: '1000000', owner: 'ab.cspr' }, +]; export default { component: Table, - title: 'Components/Display/Table with pagination', + title: 'Components/Display/Table', args: { - renderHeader: () => ( - - Table with pagination - - ), renderDataHeaders: () => ( Rank @@ -27,9 +26,9 @@ export default { Owner ), - renderPaginatedData: (data: any[]) => ( + renderData: () => ( <> - {data.map((data) => ( + {mockedData.map((data) => ( {data.rank} @@ -52,120 +51,13 @@ export default { }, } as Meta; -const getRandomBalance = () => { - const min = 100000000000; - const max = 10000000000000; - return Math.floor(Math.random() * (max - min + 1)) + min; -}; - -const MOCKED_OWNERS = [ - 'Alice', - 'Bob', - 'Charlie', - 'Diana', - 'Ethan', - 'Fiona', - 'Gabe', - 'Hana', - 'Ivan', - 'Jules', - 'Kira', - 'Liam', - 'Mona', - 'Noah', - 'Olga', - 'Pavel', - 'Quinn', - 'Ravi', - 'Sara', - 'Tara', - 'Uma', - 'Vik', - 'Walt', - 'Xena', - 'Yara', - 'Zane', -]; - -const MOCK_DATA = Array.from({ length: 87 }, (_, i) => { - const rank = i + 1; - const owner = MOCKED_OWNERS[i % MOCKED_OWNERS.length]; - const csprName = `${owner.toLowerCase()}.cspr`; - const motes = getRandomBalance(); - return { rank, owner: csprName, motes }; -}); - -const emulateGetTableDataRequest = (url: string) => { - const u = new URL(url, 'https://example.local'); - const page = Math.max(parseInt(u.searchParams.get('page') || '1', 10), 1); - const pageSize = Math.max( - parseInt(u.searchParams.get('page_size') || '10', 10), - 1, - ); - - const items_count = MOCK_DATA.length; - const page_count = Math.max(1, Math.ceil(items_count / pageSize)); - - const start = (page - 1) * pageSize; - const end = start + pageSize; - const data = MOCK_DATA.slice(start, end); - - return new Promise((resolve) => { - setTimeout(() => { - resolve({ data, page_count, items_count }); - }, 400); - }); -}; - const Template: StoryFn = (args: TableProps) => { - const [data, setData] = useState(null); - const [pagination, setPagination] = useState({ - currentPage: 1, - pageSize: 10, - }); - - const requestPath = useMemo( - () => - `/api/table?page=${pagination.currentPage}&page_size=${pagination.pageSize}`, - [pagination.currentPage, pagination.pageSize], - ); - - useEffect(() => { - (async () => { - const res = await emulateGetTableDataRequest(requestPath); - setData(res); - })(); - }, [requestPath]); - - const handleCurrentPage = (page: number) => { - setPagination((prev) => ({ - ...prev, - currentPage: page, - })); - }; - const handlePerPage = (pageSize: number) => { - setPagination((prev) => ({ - ...prev, - pageSize: pageSize, - })); - }; return ( - - - Emulated api request: {requestPath} - -
args.renderPaginatedData(data?.data)} - itemCount={data?.items_count} - pageCount={data?.page_count} - currentPage={pagination.currentPage} - perPage={pagination.pageSize} - setCurrentPage={handleCurrentPage} - setPerPage={handlePerPage} + renderData={args.renderData} + renderFooter={args.renderFooter} /> ); diff --git a/src/lib/components/table/table.tsx b/src/lib/components/table/table.tsx index 2d6382fa..cb3c49aa 100644 --- a/src/lib/components/table/table.tsx +++ b/src/lib/components/table/table.tsx @@ -1,104 +1,70 @@ -import React, { Children } from 'react'; +import React, { ReactNode } from 'react'; +import styled from 'styled-components'; +import TableHead from '../table-head/table-head'; +import TableBody from '../table-body/table-body'; +import BodyText from '../body-text/body-text'; -import { BaseTable } from '../base-table/base-table'; -import { Pagination } from '../pagination/pagination'; -import { TableRowType } from '../table-row/table-row'; -import { TableLoader } from './table-loader'; -import { TableError } from './table-error'; - -export enum OrderDirection { - ASC = 'ASC', - DESC = 'DESC', +export interface TableProps { + renderHeader?: () => ReactNode; + renderDataHeaders?: () => ReactNode; + renderData?: () => ReactNode; + renderFooter?: () => ReactNode; + noData?: boolean; + noDataMessage?: string; + paddingBottom?: number; } -export interface ErrorResult { - code: string; - message: string; - description?: string | React.ReactElement; -} +export const TableContainer = styled.div<{ paddingBottom?: number }>( + ({ theme, paddingBottom }) => ({ + overflowX: 'auto', + ...(paddingBottom && { paddingBottom }), + }), +); -export interface SortingProps { - orderBy?: string | undefined; - orderDirection?: OrderDirection; - setOrder?: (orderBy: string | undefined, direction: OrderDirection) => void; - reverseSortingDirection?: boolean; -} +const StyledTable = styled.table(({ theme }) => ({ + width: '100%', + position: 'relative', + borderCollapse: 'collapse', +})); -export type RenderProps = { sortingProps: SortingProps }; +const NoDataContainer = styled.div(({ theme }) => ({ + position: 'absolute', + top: 0, + width: '100%', + height: '100%', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', +})); -export type TableProps = { - data: null | Entity[]; - loading?: boolean; - error?: ErrorResult | null; - renderDataHeaders: (renderProps: RenderProps) => React.ReactElement; - renderPaginatedData: ( - paginatedData: Entity[], - renderProps?: RenderProps, - ) => React.ReactElement | React.ReactElement[]; - tableRowType?: TableRowType; - pageCount: number; - currentPage: number; - pageSize?: number; - itemCount?: number; - setPerPage?: (limit: number) => void; - setCurrentPage?: (page: number) => void; - hideRowsPerPage?: boolean; - totalRowsLabel?: string; -}; - -export const Table = ({ - data, - loading, - error, - renderDataHeaders, - renderPaginatedData, - tableRowType = TableRowType.TextWithAvatar, - ...props -}: TableProps) => { - const renderPaginationRow = () => - !error && ( - - ); +export function Table(props: TableProps) { + const { + renderHeader, + renderDataHeaders, + renderData, + renderFooter, + noData, + noDataMessage, + paddingBottom, + } = props; return ( - renderPaginationRow()} - renderDataHeaders={() => - renderDataHeaders({ - sortingProps: null!, - }) - } - renderData={() => - (data == null && !error) || loading ? ( - - ) : error ? ( - - ) : data ? ( - renderPaginatedData(data, { - sortingProps: {}!, - }) - ) : ( - <> - ) - } - renderFooter={() => renderPaginationRow()} - {...props} - /> + <> + {renderHeader && renderHeader()} + + + {renderDataHeaders && {renderDataHeaders()}} + {renderData && {renderData()}} + + + {renderFooter && renderFooter()} + {noDataMessage && noData && ( + + {noDataMessage} + + )} + ); -}; +} export default Table; diff --git a/src/lib/components/text-row/text-row.stories.tsx b/src/lib/components/text-row/text-row.stories.tsx index f77392f2..4e4998e4 100644 --- a/src/lib/components/text-row/text-row.stories.tsx +++ b/src/lib/components/text-row/text-row.stories.tsx @@ -9,7 +9,8 @@ import { InfoIcon } from '../../icons-index'; export default { component: TextRow, - title: 'Components/Form/Text Row', + title: 'Components/Form/TextRow', + excludeStories: ['Primary'], // tags: ['autodocs', '!dev'], args: { label: 'text row', diff --git a/src/lib/components/token/token.stories.tsx b/src/lib/components/token/token.stories.tsx index 7204f172..a1847ac1 100644 --- a/src/lib/components/token/token.stories.tsx +++ b/src/lib/components/token/token.stories.tsx @@ -6,7 +6,7 @@ import FlexColumn from '../flex-column/flex-column'; export default { component: Token, - title: 'Components/Display/CEP18Token', + title: 'Components/Display/Token', // tags: ['autodocs', '!dev'], args: { amount: '50000123456789', diff --git a/src/lib/components/truncate-box/truncate-box.stories.tsx b/src/lib/components/truncate-box/truncate-box.stories.tsx index 8e181514..f30ca593 100644 --- a/src/lib/components/truncate-box/truncate-box.stories.tsx +++ b/src/lib/components/truncate-box/truncate-box.stories.tsx @@ -7,7 +7,7 @@ import BodyText from '../body-text/body-text'; export default { component: TruncateBox, - title: 'Components/Display/Truncate Box', + title: 'Components/Display/TruncateBox', // tags: ['autodocs', '!dev'], args: { size: 1, diff --git a/src/lib/index.ts b/src/lib/index.ts index b3471a43..818ca5e0 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -35,11 +35,12 @@ export * from './components/table-body/table-body'; export * from './components/table-data/table-data'; export * from './components/table-head/table-head'; export * from './components/table-row/table-row'; -export * from './components/base-table/base-table'; -export * from './components/table-data-header/table-data-header'; export * from './components/table/table'; -export * from './components/table/table-error'; -export * from './components/table/table-loader'; +export * from './components/table-data-header/table-data-header'; +export * from './components/paginated-table/paginated-table'; +export * from './components/paginated-table/table-error'; +export * from './components/paginated-table/table-loader'; +export * from './components/pagination/pagination'; export * from './components/textarea/textarea'; export * from './components/truncate-box/truncate-box'; export * from './components/text/text';