From 0ea06e10991cc42833957345ba1bb1093be73afa Mon Sep 17 00:00:00 2001 From: escobarjonatan Date: Tue, 12 Nov 2024 18:28:59 -0600 Subject: [PATCH 1/2] STUD-375: Reactor client config flags with launch darkly feature flags --- apps/marketplace/src/modules/content/types.ts | 5 +- apps/studio/src/modules/content/types.ts | 3 ++ .../src/pages/home/library/ViewDetails.tsx | 12 ++--- apps/studio/src/pages/home/wallet/Wallet.tsx | 12 ++--- docs/launch-darkly-feature-flags.md | 46 +++++++++++++++---- 5 files changed, 50 insertions(+), 28 deletions(-) diff --git a/apps/marketplace/src/modules/content/types.ts b/apps/marketplace/src/modules/content/types.ts index 88c48615..ed58ff42 100644 --- a/apps/marketplace/src/modules/content/types.ts +++ b/apps/marketplace/src/modules/content/types.ts @@ -1,4 +1,7 @@ -// eslint-disable-next-line +/** + * @deprecated Use Launch Darkly feature flags instead. + */ +// eslint-disable-next-line @typescript-eslint/no-empty-interface interface FeatureFlags { // When a feature flag is added it will have the following format: // readonly exampleFlag: boolean; diff --git a/apps/studio/src/modules/content/types.ts b/apps/studio/src/modules/content/types.ts index 77265e6f..9195c0bb 100644 --- a/apps/studio/src/modules/content/types.ts +++ b/apps/studio/src/modules/content/types.ts @@ -24,6 +24,9 @@ export interface Country { readonly state?: State[]; } +/** + * @deprecated Use Launch Darkly feature flags instead. + */ interface FeatureFlags { readonly claimWalletRoyaltiesEnabled: boolean; readonly manageMarketplaceSalesEnabled: boolean; diff --git a/apps/studio/src/pages/home/library/ViewDetails.tsx b/apps/studio/src/pages/home/library/ViewDetails.tsx index bf0e8323..23857c8a 100644 --- a/apps/studio/src/pages/home/library/ViewDetails.tsx +++ b/apps/studio/src/pages/home/library/ViewDetails.tsx @@ -8,6 +8,7 @@ import { Button, ProfileImage, Tooltip } from "@newm-web/elements"; import theme from "@newm-web/theme"; import { resizeCloudinaryImage } from "@newm-web/utils"; import { MintingStatus } from "@newm-web/types"; +import { useFlags } from "launchdarkly-react-client-sdk"; import MintSong from "./MintSong"; import SongInfo from "./SongInfo"; import { SongRouteParams } from "./types"; @@ -19,7 +20,6 @@ import { useGetSongQuery, useHasSongAccess, } from "../../../modules/song"; -import { useGetStudioClientConfigQuery } from "../../../modules/content"; interface TabPanelProps { children: ReactNode; @@ -70,8 +70,7 @@ const ViewDetails: FunctionComponent = () => { isLoading, } = useGetSongQuery(songId); - const { data: clientConfig, isLoading: isClientConfigLoading } = - useGetStudioClientConfigQuery(); + const { webStudioManageMarketplaceSales } = useFlags(); const hasAccess = useHasSongAccess(songId); const isSongMintedOrReleased = [ @@ -79,13 +78,8 @@ const ViewDetails: FunctionComponent = () => { MintingStatus.Released, ].includes(mintingStatus); - const isManageMarketplaceSalesEnabled = - clientConfig?.featureFlags?.manageMarketplaceSalesEnabled ?? false; - const shouldRenderMarketplaceTab = - !isClientConfigLoading && - isSongMintedOrReleased && - isManageMarketplaceSalesEnabled; + isSongMintedOrReleased && webStudioManageMarketplaceSales; const handleChange = (event: SyntheticEvent, nextTab: number) => { setTab(nextTab); diff --git a/apps/studio/src/pages/home/wallet/Wallet.tsx b/apps/studio/src/pages/home/wallet/Wallet.tsx index 2311366f..81fb7f96 100644 --- a/apps/studio/src/pages/home/wallet/Wallet.tsx +++ b/apps/studio/src/pages/home/wallet/Wallet.tsx @@ -33,6 +33,7 @@ import { convertNewmiesToUsd, } from "@newm-web/utils"; import { EarningsInProgress } from "@newm-web/types"; +import { useFlags } from "launchdarkly-react-client-sdk"; import Portfolio from "./portfolio/Portfolio"; import Transactions from "./transactions/Transactions"; import { LegacyPortfolio, LegacyUnclaimedRoyalties } from "./legacyWallet"; @@ -40,7 +41,6 @@ import { useGetAdaUsdConversionRateQuery, useGetNewmUsdConversionRateQuery, } from "../../../modules/crypto"; -import { useGetStudioClientConfigQuery } from "../../../modules/content"; import { setIsConnectWalletModalOpen } from "../../../modules/ui"; import { useAppDispatch, useAppSelector } from "../../../common"; import { DisconnectWalletButton } from "../../../components"; @@ -89,8 +89,7 @@ const Wallet: FunctionComponent = () => { const [earningsInProgress, setEarningsInProgress] = useState(); const { wallet } = useConnectWallet(); - const { data: clientConfig, isLoading: isClientConfigLoading } = - useGetStudioClientConfigQuery(); + const { webStudioClaimWalletEarnings } = useFlags(); const { walletAddress = "" } = useAppSelector(selectWallet); const { data: earningsData, @@ -112,8 +111,6 @@ const Wallet: FunctionComponent = () => { const preConvertedUsdPrice = newmUsdConversionRate?.usdPrice ?? 0; const { earnings = [], amountCborHex = "" } = earningsData || {}; - const isClaimWalletRoyaltiesEnabled = - clientConfig?.featureFlags?.claimWalletRoyaltiesEnabled ?? false; const unclaimedEarnings = earnings?.filter((earning) => !earning.claimed) || []; const unclaimedEarningsInNewmies = @@ -189,11 +186,8 @@ const Wallet: FunctionComponent = () => { }; }, [handleSaleEndPending]); - // Don't show any content until client config has loaded - if (isClientConfigLoading) return; - // Current State of the Wallet Page - if (!isClaimWalletRoyaltiesEnabled) { + if (!webStudioClaimWalletEarnings) { return ( diff --git a/docs/launch-darkly-feature-flags.md b/docs/launch-darkly-feature-flags.md index e99e47d2..fd8ed7bf 100644 --- a/docs/launch-darkly-feature-flags.md +++ b/docs/launch-darkly-feature-flags.md @@ -1,26 +1,26 @@ -# Feature Flag Naming Conventions for LaunchDarkly +# Feature Flag Naming Conventions and Usage for LaunchDarkly We use LaunchDarkly (LD) as our feature flag solution to manage and control feature releases across different applications in our NX monorepo. To maintain consistency and clarity, all feature flags should adhere to a standard naming convention. ## Naming Format ``` -platform + appName + flagName +platform + app-name + flag-name ``` ### Naming Rules -- **Format**: Use camelCase. +- **Format**: Use kebab-case. - **Platform**: For our use case the most common one we will use is `web`, but it applies for other NEWM platforms like `server` or `mobile`. - **App Names**: At the time of writing our current apps are `studio`, `marketplace`, `wallet`, and `tools`. -- **Flag Name**: Clearly describe the feature being controlled, using camelCase. +- **Flag Name**: Clearly describe the feature being controlled, using kebab-case. ## Examples for LaunchDarkly Feature Flags -- `webStudioMaintenanceMode` -- `webMarketplaceRoyaltyClaiming` -- `webWalletMultipleConnections` -- `webToolsInternationalCurrency` +- `web-studio-maintenance-mode` +- `web-marketplace-royalty-claiming` +- `web-wallet-multiple-connections` +- `web-tools-international-currency` ## Why Use This Convention? @@ -35,6 +35,34 @@ platform + appName + flagName - **Keep the flag name concise but meaningful**, avoiding ambiguity. - **Avoid using the word `new`** as this is relative. - **Avoid prefixes like `is` or `has`** unless necessary: Although common in coding, they can add unnecessary length to flag names. -- **Use camelCase** for readability and adherence to standard naming conventions. +- **Use kebab-case** for readability and adherence to standard naming conventions. By following these guidelines, we can ensure effective and scalable feature flag management across our monorepo and different NEWM platforms with LaunchDarkly. + +## Usage + +To access a feature flag in your React app using the `useFlags` hook: + +**LD Flag Name**: `web-marketplace-launch-banner` + +```javascript +import { useFlags } from "launchdarkly-react-client-sdk"; + +const MyComponent = () => { + const { webMarketplaceLaunchBanner } = useFlags(); + + return ( +
+ {webMarketplaceLaunchBanner ? ( +

The launch banner feature is enabled!

+ ) : ( +

The launch banner feature is disabled.

+ )} +
+ ); +}; + +export default MyComponent; +``` + +Note that even though the flag name in LD is `kebab-case`, we are able to access it `camelCase` in our app. From 4c3f5cdbde8e3f1eaf09e46b2a656e4793dcfaa6 Mon Sep 17 00:00:00 2001 From: escobarjonatan Date: Wed, 13 Nov 2024 18:36:01 -0600 Subject: [PATCH 2/2] MRKT-170: Update apps favicons and metadata & MRKT-160: Adjust tooltip location for sale item page (#799) * MRKT-170: Update apps favicons and metadata * MRKT-160: Adjust tooltip location for sale item page * MRKT-160: Update export file name --- apps/marketplace/public/.gitkeep | 0 .../public/android-chrome-192x192.png | Bin 0 -> 3447 bytes .../public/android-chrome-512x512.png | Bin 0 -> 9714 bytes apps/marketplace/public/apple-touch-icon.png | Bin 0 -> 2152 bytes apps/marketplace/public/browserconfig.xml | 9 ++ apps/marketplace/public/favicon-16x16.png | Bin 0 -> 655 bytes apps/marketplace/public/favicon-32x32.png | Bin 0 -> 948 bytes apps/marketplace/public/favicon-dark.ico | Bin 0 -> 15086 bytes apps/marketplace/public/favicon-light.ico | Bin 0 -> 15086 bytes apps/marketplace/public/manifest.json | 20 +++++ apps/marketplace/public/mstile-150x150.png | Bin 0 -> 2827 bytes apps/marketplace/public/safari-pinned-tab.svg | 81 ++++++++++++++++++ apps/marketplace/src/app/layout.tsx | 2 + apps/marketplace/src/components/Sale.tsx | 71 ++++++++------- apps/mobile-wallet-connector/public/.gitkeep | 0 .../public/android-chrome-192x192.png | Bin 0 -> 3447 bytes .../public/android-chrome-512x512.png | Bin 0 -> 9714 bytes .../public/apple-touch-icon.png | Bin 0 -> 2152 bytes .../public/browserconfig.xml | 9 ++ .../public/favicon-16x16.png | Bin 0 -> 655 bytes .../public/favicon-32x32.png | Bin 0 -> 948 bytes .../public/favicon-dark.ico | Bin 0 -> 15086 bytes .../public/favicon-light.ico | Bin 0 -> 15086 bytes .../public/manifest.json | 20 +++++ .../public/mstile-150x150.png | Bin 0 -> 2827 bytes .../public/safari-pinned-tab.svg | 81 ++++++++++++++++++ .../src/app/layout.tsx | 2 + apps/tools/public/.gitkeep | 0 apps/tools/public/android-chrome-192x192.png | Bin 0 -> 3447 bytes apps/tools/public/android-chrome-512x512.png | Bin 0 -> 9714 bytes apps/tools/public/apple-touch-icon.png | Bin 0 -> 2152 bytes apps/tools/public/browserconfig.xml | 9 ++ apps/tools/public/favicon-16x16.png | Bin 0 -> 655 bytes apps/tools/public/favicon-32x32.png | Bin 0 -> 948 bytes apps/tools/public/favicon-dark.ico | Bin 0 -> 15086 bytes apps/tools/public/favicon-light.ico | Bin 0 -> 15086 bytes apps/tools/public/manifest.json | 20 +++++ apps/tools/public/mstile-150x150.png | Bin 0 -> 2827 bytes apps/tools/public/safari-pinned-tab.svg | 81 ++++++++++++++++++ apps/tools/src/app/layout.tsx | 2 + packages/elements/src/index.ts | 1 + packages/elements/src/lib/Favicon.tsx | 44 ++++++++++ 42 files changed, 416 insertions(+), 36 deletions(-) delete mode 100644 apps/marketplace/public/.gitkeep create mode 100644 apps/marketplace/public/android-chrome-192x192.png create mode 100644 apps/marketplace/public/android-chrome-512x512.png create mode 100644 apps/marketplace/public/apple-touch-icon.png create mode 100644 apps/marketplace/public/browserconfig.xml create mode 100644 apps/marketplace/public/favicon-16x16.png create mode 100644 apps/marketplace/public/favicon-32x32.png create mode 100644 apps/marketplace/public/favicon-dark.ico create mode 100644 apps/marketplace/public/favicon-light.ico create mode 100644 apps/marketplace/public/manifest.json create mode 100644 apps/marketplace/public/mstile-150x150.png create mode 100644 apps/marketplace/public/safari-pinned-tab.svg delete mode 100644 apps/mobile-wallet-connector/public/.gitkeep create mode 100644 apps/mobile-wallet-connector/public/android-chrome-192x192.png create mode 100644 apps/mobile-wallet-connector/public/android-chrome-512x512.png create mode 100644 apps/mobile-wallet-connector/public/apple-touch-icon.png create mode 100644 apps/mobile-wallet-connector/public/browserconfig.xml create mode 100644 apps/mobile-wallet-connector/public/favicon-16x16.png create mode 100644 apps/mobile-wallet-connector/public/favicon-32x32.png create mode 100644 apps/mobile-wallet-connector/public/favicon-dark.ico create mode 100644 apps/mobile-wallet-connector/public/favicon-light.ico create mode 100644 apps/mobile-wallet-connector/public/manifest.json create mode 100644 apps/mobile-wallet-connector/public/mstile-150x150.png create mode 100644 apps/mobile-wallet-connector/public/safari-pinned-tab.svg delete mode 100644 apps/tools/public/.gitkeep create mode 100644 apps/tools/public/android-chrome-192x192.png create mode 100644 apps/tools/public/android-chrome-512x512.png create mode 100644 apps/tools/public/apple-touch-icon.png create mode 100644 apps/tools/public/browserconfig.xml create mode 100644 apps/tools/public/favicon-16x16.png create mode 100644 apps/tools/public/favicon-32x32.png create mode 100644 apps/tools/public/favicon-dark.ico create mode 100644 apps/tools/public/favicon-light.ico create mode 100644 apps/tools/public/manifest.json create mode 100644 apps/tools/public/mstile-150x150.png create mode 100644 apps/tools/public/safari-pinned-tab.svg create mode 100644 packages/elements/src/lib/Favicon.tsx diff --git a/apps/marketplace/public/.gitkeep b/apps/marketplace/public/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/marketplace/public/android-chrome-192x192.png b/apps/marketplace/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..a1de19e6416d5e9656fb79b938aacb040d4b0b87 GIT binary patch literal 3447 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 F{{U6I5cmK9 literal 0 HcmV?d00001 diff --git a/apps/marketplace/public/android-chrome-512x512.png b/apps/marketplace/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5950699d047bf875902178b17e06dd90b82b1c GIT binary patch literal 9714 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 literal 0 HcmV?d00001 diff --git a/apps/marketplace/public/apple-touch-icon.png b/apps/marketplace/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bb565a9313a7361c787d2943f132f39e352e8648 GIT binary patch literal 2152 zcmZ`)c{tR27ynr%j7BE=l4cZFjTnr)D49iu$-WPYjNKqJxTwn;MvP@dmQbiDZ4*)R8 z0|1%O!WNqgyaNAqf+-F-Ov)JO;AKKoGYb=;MUi6=8BJ8sIGo2o%y4M?-zUBn{<5=k zlI*j>8w)b|$B5P|!Q`)ZCYTPxW5mXYzeY})0iK+H+o*+?Xh>B$ zAT%8Mo`fTwK1XQOrzjI_NQ50M2R=VPKeM}jbzorsAiJ=2p0aUub$^DE1>nv8zrD15 z2WK|EcE>anq*Xk^b)=gFuD(Fa4Ah20#y>c}_etM2YM9oQwogj!r?$ge_`^~u(oE?&s`kOtg-(Ai=+I}LGka#%iXbW#i2fM zu2MFL8LOYx{OF8mLSACA=ez6t1_PsXW&x6tK;!JpLvd$n{Rw#*z3N9GU23AQ12T3M z;!%mT#H?gYZyNr3Dy&wGdfFeI*Kl(#hptV>bfq@q;H-s~0xcqi8{GQ`?hIDm%drhv zi$tZGod#pIFQ}v{TU@*eK$5dT`G20#ZB%nCbm8OebwLH4gqUbZ#$xxblrk*!R*( z;(w;o1^YAXtXoh@U=rJfC{8Rc)yD+wnzb3v!i;lC*7a&BkTq)f(s_E^X-*Ib-r z_;pavir&3YMIhn94Q;di0eoWL)irv4V{)hDa9Pm)A)TnsyaBuyMH`7%c+UclP-E84oo#y=ylLBrGqY8sQBO)M!3=) z`y|kKJj6^UmLb~=T)d7V1-AsJ zX;^08(H8Z!U=f&pNuXy~_j|Puh)Vuq)A#KXap8#T0Pv^vvp%tiedPi52M?>AGgM*? z)rE~754D8cS{3m77DNmV_ChM2p zae<fugQV>D@Q(dPSbXmKv2z7>`J3 z7}RD`N>n+anZya=i;&iCu7jz9-vka;S)cU7oflP;w_g&9Z8MkFq*3J5!@)46y9HN@ z7dV^Jq}64m(V*Ceii{d7Z|iXDj#p`5}v7 z@>|1Ud3o?q%znplanG3U-ss#d7UxY)byL=JSS%?dC^R1>@IYBg?oiyq$*JcuxrS~v z*7E92hGHNpeA)IN46}1G?9*%&lUtg_`zuwbCeBonC)L})E6ke*fHqQF=NwZ1oR+S= zmX3k8jsZ#!fkYZ0k==+x)c**`AtZmFsDBpJN0{E>37n$sovF5-k+9IP5Fh^_Zx}Ty z)Enj>O7#MO-wWr~j|$&#R8xCv#TqdCYzqjS64me$l{h6q$dVM0fZ^g$T_k~1we~R9 n$I&<41Ko< + + + + + #603cba + + + diff --git a/apps/marketplace/public/favicon-16x16.png b/apps/marketplace/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..f8efc107575cb53256cee8b6fdb95bd9918293e4 GIT binary patch literal 655 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{XiaP zfk$L91B0G22s2hJwJ!q-vX^-Jy0Sm#a%u?tQT{YgtWD$wVZjER^FG? zGvDRWwC~p6#hy3Us})RX&@$zyTf=(dvcI(anw_an)>{`I*krm|V)c2yZi$Y}o@}+O zIZRPo+|O9%NcC5&wr_0nezYXItb1a!v%Zf{F^G_~^h-g3V=ACHEg&yj3zcvE~< zLc8V5rc(l|zZCgR6xfiLbTBnKZ0`1?%abubp_%%e&y!CJMOag|UYKdz^NlIc#s#S7PDv)9@ zGB7gMHL%n*Gz~E{wlXrdGO^G$Ft9Q(FiP&fi=rVnKP5A*61N6tJM%=KhVZJ8h?1bh za)pAT{ItxRRE3htf>edff|6tghKf0lKk;xBhG}S=@;`mX^Jx$Rvog0{GPkg@u=ivU zW?==F29v`n%*vZX6i(l`a^lFDBQi(WPd9ih@X}*=B`#R<$;oso&g literal 0 HcmV?d00001 diff --git a/apps/marketplace/public/favicon-32x32.png b/apps/marketplace/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..10473173738ec945ed38159d8716a36dcfadbdd8 GIT binary patch literal 948 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 DXx?Lj literal 0 HcmV?d00001 diff --git a/apps/marketplace/public/favicon-light.ico b/apps/marketplace/public/favicon-light.ico new file mode 100644 index 0000000000000000000000000000000000000000..64b74e05775661c2485c2fe8d8b6fdcdb163c5a0 GIT binary patch literal 15086 zcmeI3cZd{A5Qo>C^~{*?%+G{pdS(>y4X7$|O zP4=ZvpI$n2=pbOwF@dpe-MT^JPntAIOli}mO_Cu)hM@K)x|uU)mJuUHNb%yuJ+(KD zq3SYb%qUy8ZZ$!&=cC%GGCA-!Yt~H8oH-Md_;cmTCA)X;mV5W^NwH$ZVvhfP`t*?> zKYqyV+qYv5e~A($Qxn%!D6Vf?Ud4`UAjm@ zLW1!<9TqKGWXql8mOtnS==A5$pAW)C#s2;KC2!umHvY0@%le(is>7BoTkLNGHeKIP z?B(4Pl%@Z7m` z+jpkqxW6C|YuBzVj~+b=BxV0zwrrU#FX0*4gn!PQIkrqvZ79*VzkT}_G$wU@`}VcZ z<>bJ>bLUQ3y?S*J9V#9?cp%lPRde`i!hhq&4JlWyoL?K-Aq(90GCCfzVDsk9M!MXG zbzbo7c7NpC2kJNsiX5a*;5a(}IiH6N84}b+^=aC)sl0yu+K3U|Xxp}J#&_Z1Hx6J` za?e$Ig2F?o<3DuhkgfCU@AYS71KxWMQ{%-Hdz%|I?>W<>SYX z(xy!tV;g-A6)RS>b#5b2m&!=-vo1NObR6m#{Lh{}v+o62vScx~QEgQ@YSbv<4ECBL z!OwnZ*s!51uJYx}+d4D%GKDX(vQVKya_rbKukgdN{{#*?d-m)gS*YWK|NZ;-57|a< zubw-0>?r7>UQ$x|fBpJ(dw(jLrjk2l&YU?t^Ina?9boO+wO-&SiT~(0g9Z%>8<)c8 zrL0q@j=gshn?zFhf8f9Y+wS27M^f9MXHB0zJu&!U^B*0jRjXD}<-MA7e0;oZX9+cl zaQVM{`EoxUN70H_*{@$e`TqU8>lDJlkB)=R9xbe&t zd`jIn#2o_v7`AeJGi%nY2^p(GoC)K3r4KFqQH%`@d|A3}7W=nu=Qw=$upd614lxki zXG@kW>6t#h)}u#{I(k2}bl*}q^sx=XD|o2m3iX^^^zofNeE3lAS+O7~O`o`cB}=d{Ec`nZNEgB94T8*t&IV zzrBEcs6~qw!d$|Uf7rx&_3Gtk_tbrO_+S)$?8f-U*=x{Qv0{ZEW_SX>^q7pq4=MxV7#9> zWDl~B$$|Q3p#IIePL8=NoXBQmAp25f)4Eda)5;XR4?j;ueslLv)r6e_vqZd=9Xo~f zzh;K?!>UW_o{XfgO_TfHxN+kIU0B~c=;r!wg^@bi(ucmtV&XlB6-KwB9l9C+*T8$# zPnEPG7MDJa8#gxgC(eV|GvbEO1Bjbd_u^3fiM1w9fH)WQ)XJ4BJ7*O!RA30zpE>vF z(Zi0b$G^_~OP#gEOygtWZeqfJ@!~~0HV6FxeU^CBQ>RYZx*jEovmJQ_uT1k-agyA% zs#K|B>tY)>ZnR@N(cOsAAl3+4dVlm$ep3>wNW1~OhleWmfOt912e6~#ako?a*JBsw z&Yf$^XmsJBLx(!LA@e3~O(psS_Sa*NSSR?^)OV-kJOU$0?@t}r-1IIr263+VHue6@ jleIW(*f3B2X6{$~kI&e#V{IO(u_GwIN6?r38&Ucf=2@nX literal 0 HcmV?d00001 diff --git a/apps/marketplace/public/manifest.json b/apps/marketplace/public/manifest.json new file mode 100644 index 00000000..714fa503 --- /dev/null +++ b/apps/marketplace/public/manifest.json @@ -0,0 +1,20 @@ +{ + "short_name": "Marketplace", + "name": "NEWM Marketplace", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#000000" +} diff --git a/apps/marketplace/public/mstile-150x150.png b/apps/marketplace/public/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..78c5d80fa6cd70e0e1c8d6970b7d3ae8cfe6c03e GIT binary patch literal 2827 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 JH5NWM{{{mE9FPD2 literal 0 HcmV?d00001 diff --git a/apps/marketplace/public/safari-pinned-tab.svg b/apps/marketplace/public/safari-pinned-tab.svg new file mode 100644 index 00000000..08ac188e --- /dev/null +++ b/apps/marketplace/public/safari-pinned-tab.svg @@ -0,0 +1,81 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + diff --git a/apps/marketplace/src/app/layout.tsx b/apps/marketplace/src/app/layout.tsx index 96211695..3f057bac 100644 --- a/apps/marketplace/src/app/layout.tsx +++ b/apps/marketplace/src/app/layout.tsx @@ -13,6 +13,7 @@ import { StyledComponentsRegistry, UnsupportedBrowserBanner, } from "@newm-web/components"; +import { Favicon } from "@newm-web/elements"; import { Footer, Header, PingEarningsInProgressWrapper } from "../components"; import store from "../store"; import Toast from "../components/Toast"; @@ -30,6 +31,7 @@ const RootLayout: FunctionComponent = ({ children }) => { NEWM Marketplace + = ({ - - - The number of Stream Tokens correlates with the - percentage of streaming royalties you can acquire. - For example, 1 Stream Token equates to{ " " } - { `${getPercentageOfTotalStreamTokens(1)}` }% of the - track's total streaming royalties. For - information on what constitutes a streaming royalty, - please refer to the{ " " } - - - stream token contract - - - . - - } - > - - - - - - + + + The number of Stream Tokens correlates with the + percentage of streaming royalties you can + acquire. For example, 1 Stream Token equates to{ " " } + { `${getPercentageOfTotalStreamTokens(1)}` }% of + the track's total streaming royalties. For + information on what constitutes a streaming + royalty, please refer to the{ " " } + + + stream token contract + + + . + + } + > + + + + + 06^5{xRn!R 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 F{{U6I5cmK9 literal 0 HcmV?d00001 diff --git a/apps/mobile-wallet-connector/public/android-chrome-512x512.png b/apps/mobile-wallet-connector/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5950699d047bf875902178b17e06dd90b82b1c GIT binary patch literal 9714 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 literal 0 HcmV?d00001 diff --git a/apps/mobile-wallet-connector/public/apple-touch-icon.png b/apps/mobile-wallet-connector/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bb565a9313a7361c787d2943f132f39e352e8648 GIT binary patch literal 2152 zcmZ`)c{tR27ynr%j7BE=l4cZFjTnr)D49iu$-WPYjNKqJxTwn;MvP@dmQbiDZ4*)R8 z0|1%O!WNqgyaNAqf+-F-Ov)JO;AKKoGYb=;MUi6=8BJ8sIGo2o%y4M?-zUBn{<5=k zlI*j>8w)b|$B5P|!Q`)ZCYTPxW5mXYzeY})0iK+H+o*+?Xh>B$ zAT%8Mo`fTwK1XQOrzjI_NQ50M2R=VPKeM}jbzorsAiJ=2p0aUub$^DE1>nv8zrD15 z2WK|EcE>anq*Xk^b)=gFuD(Fa4Ah20#y>c}_etM2YM9oQwogj!r?$ge_`^~u(oE?&s`kOtg-(Ai=+I}LGka#%iXbW#i2fM zu2MFL8LOYx{OF8mLSACA=ez6t1_PsXW&x6tK;!JpLvd$n{Rw#*z3N9GU23AQ12T3M z;!%mT#H?gYZyNr3Dy&wGdfFeI*Kl(#hptV>bfq@q;H-s~0xcqi8{GQ`?hIDm%drhv zi$tZGod#pIFQ}v{TU@*eK$5dT`G20#ZB%nCbm8OebwLH4gqUbZ#$xxblrk*!R*( z;(w;o1^YAXtXoh@U=rJfC{8Rc)yD+wnzb3v!i;lC*7a&BkTq)f(s_E^X-*Ib-r z_;pavir&3YMIhn94Q;di0eoWL)irv4V{)hDa9Pm)A)TnsyaBuyMH`7%c+UclP-E84oo#y=ylLBrGqY8sQBO)M!3=) z`y|kKJj6^UmLb~=T)d7V1-AsJ zX;^08(H8Z!U=f&pNuXy~_j|Puh)Vuq)A#KXap8#T0Pv^vvp%tiedPi52M?>AGgM*? z)rE~754D8cS{3m77DNmV_ChM2p zae<fugQV>D@Q(dPSbXmKv2z7>`J3 z7}RD`N>n+anZya=i;&iCu7jz9-vka;S)cU7oflP;w_g&9Z8MkFq*3J5!@)46y9HN@ z7dV^Jq}64m(V*Ceii{d7Z|iXDj#p`5}v7 z@>|1Ud3o?q%znplanG3U-ss#d7UxY)byL=JSS%?dC^R1>@IYBg?oiyq$*JcuxrS~v z*7E92hGHNpeA)IN46}1G?9*%&lUtg_`zuwbCeBonC)L})E6ke*fHqQF=NwZ1oR+S= zmX3k8jsZ#!fkYZ0k==+x)c**`AtZmFsDBpJN0{E>37n$sovF5-k+9IP5Fh^_Zx}Ty z)Enj>O7#MO-wWr~j|$&#R8xCv#TqdCYzqjS64me$l{h6q$dVM0fZ^g$T_k~1we~R9 n$I&<41Ko< + + + + + #603cba + + + diff --git a/apps/mobile-wallet-connector/public/favicon-16x16.png b/apps/mobile-wallet-connector/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..f8efc107575cb53256cee8b6fdb95bd9918293e4 GIT binary patch literal 655 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{XiaP zfk$L91B0G22s2hJwJ!q-vX^-Jy0Sm#a%u?tQT{YgtWD$wVZjER^FG? zGvDRWwC~p6#hy3Us})RX&@$zyTf=(dvcI(anw_an)>{`I*krm|V)c2yZi$Y}o@}+O zIZRPo+|O9%NcC5&wr_0nezYXItb1a!v%Zf{F^G_~^h-g3V=ACHEg&yj3zcvE~< zLc8V5rc(l|zZCgR6xfiLbTBnKZ0`1?%abubp_%%e&y!CJMOag|UYKdz^NlIc#s#S7PDv)9@ zGB7gMHL%n*Gz~E{wlXrdGO^G$Ft9Q(FiP&fi=rVnKP5A*61N6tJM%=KhVZJ8h?1bh za)pAT{ItxRRE3htf>edff|6tghKf0lKk;xBhG}S=@;`mX^Jx$Rvog0{GPkg@u=ivU zW?==F29v`n%*vZX6i(l`a^lFDBQi(WPd9ih@X}*=B`#R<$;oso&g literal 0 HcmV?d00001 diff --git a/apps/mobile-wallet-connector/public/favicon-32x32.png b/apps/mobile-wallet-connector/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..10473173738ec945ed38159d8716a36dcfadbdd8 GIT binary patch literal 948 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 DXx?Lj literal 0 HcmV?d00001 diff --git a/apps/mobile-wallet-connector/public/favicon-light.ico b/apps/mobile-wallet-connector/public/favicon-light.ico new file mode 100644 index 0000000000000000000000000000000000000000..64b74e05775661c2485c2fe8d8b6fdcdb163c5a0 GIT binary patch literal 15086 zcmeI3cZd{A5Qo>C^~{*?%+G{pdS(>y4X7$|O zP4=ZvpI$n2=pbOwF@dpe-MT^JPntAIOli}mO_Cu)hM@K)x|uU)mJuUHNb%yuJ+(KD zq3SYb%qUy8ZZ$!&=cC%GGCA-!Yt~H8oH-Md_;cmTCA)X;mV5W^NwH$ZVvhfP`t*?> zKYqyV+qYv5e~A($Qxn%!D6Vf?Ud4`UAjm@ zLW1!<9TqKGWXql8mOtnS==A5$pAW)C#s2;KC2!umHvY0@%le(is>7BoTkLNGHeKIP z?B(4Pl%@Z7m` z+jpkqxW6C|YuBzVj~+b=BxV0zwrrU#FX0*4gn!PQIkrqvZ79*VzkT}_G$wU@`}VcZ z<>bJ>bLUQ3y?S*J9V#9?cp%lPRde`i!hhq&4JlWyoL?K-Aq(90GCCfzVDsk9M!MXG zbzbo7c7NpC2kJNsiX5a*;5a(}IiH6N84}b+^=aC)sl0yu+K3U|Xxp}J#&_Z1Hx6J` za?e$Ig2F?o<3DuhkgfCU@AYS71KxWMQ{%-Hdz%|I?>W<>SYX z(xy!tV;g-A6)RS>b#5b2m&!=-vo1NObR6m#{Lh{}v+o62vScx~QEgQ@YSbv<4ECBL z!OwnZ*s!51uJYx}+d4D%GKDX(vQVKya_rbKukgdN{{#*?d-m)gS*YWK|NZ;-57|a< zubw-0>?r7>UQ$x|fBpJ(dw(jLrjk2l&YU?t^Ina?9boO+wO-&SiT~(0g9Z%>8<)c8 zrL0q@j=gshn?zFhf8f9Y+wS27M^f9MXHB0zJu&!U^B*0jRjXD}<-MA7e0;oZX9+cl zaQVM{`EoxUN70H_*{@$e`TqU8>lDJlkB)=R9xbe&t zd`jIn#2o_v7`AeJGi%nY2^p(GoC)K3r4KFqQH%`@d|A3}7W=nu=Qw=$upd614lxki zXG@kW>6t#h)}u#{I(k2}bl*}q^sx=XD|o2m3iX^^^zofNeE3lAS+O7~O`o`cB}=d{Ec`nZNEgB94T8*t&IV zzrBEcs6~qw!d$|Uf7rx&_3Gtk_tbrO_+S)$?8f-U*=x{Qv0{ZEW_SX>^q7pq4=MxV7#9> zWDl~B$$|Q3p#IIePL8=NoXBQmAp25f)4Eda)5;XR4?j;ueslLv)r6e_vqZd=9Xo~f zzh;K?!>UW_o{XfgO_TfHxN+kIU0B~c=;r!wg^@bi(ucmtV&XlB6-KwB9l9C+*T8$# zPnEPG7MDJa8#gxgC(eV|GvbEO1Bjbd_u^3fiM1w9fH)WQ)XJ4BJ7*O!RA30zpE>vF z(Zi0b$G^_~OP#gEOygtWZeqfJ@!~~0HV6FxeU^CBQ>RYZx*jEovmJQ_uT1k-agyA% zs#K|B>tY)>ZnR@N(cOsAAl3+4dVlm$ep3>wNW1~OhleWmfOt912e6~#ako?a*JBsw z&Yf$^XmsJBLx(!LA@e3~O(psS_Sa*NSSR?^)OV-kJOU$0?@t}r-1IIr263+VHue6@ jleIW(*f3B2X6{$~kI&e#V{IO(u_GwIN6?r38&Ucf=2@nX literal 0 HcmV?d00001 diff --git a/apps/mobile-wallet-connector/public/manifest.json b/apps/mobile-wallet-connector/public/manifest.json new file mode 100644 index 00000000..47a55bd1 --- /dev/null +++ b/apps/mobile-wallet-connector/public/manifest.json @@ -0,0 +1,20 @@ +{ + "short_name": "Mobile Wallet Connector", + "name": "NEWM Mobile Wallet Connector", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#000000" +} diff --git a/apps/mobile-wallet-connector/public/mstile-150x150.png b/apps/mobile-wallet-connector/public/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..78c5d80fa6cd70e0e1c8d6970b7d3ae8cfe6c03e GIT binary patch literal 2827 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 JH5NWM{{{mE9FPD2 literal 0 HcmV?d00001 diff --git a/apps/mobile-wallet-connector/public/safari-pinned-tab.svg b/apps/mobile-wallet-connector/public/safari-pinned-tab.svg new file mode 100644 index 00000000..08ac188e --- /dev/null +++ b/apps/mobile-wallet-connector/public/safari-pinned-tab.svg @@ -0,0 +1,81 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + diff --git a/apps/mobile-wallet-connector/src/app/layout.tsx b/apps/mobile-wallet-connector/src/app/layout.tsx index d07bfba0..44f2f312 100644 --- a/apps/mobile-wallet-connector/src/app/layout.tsx +++ b/apps/mobile-wallet-connector/src/app/layout.tsx @@ -12,6 +12,7 @@ import { UnsupportedBrowserBanner, } from "@newm-web/components"; import "global.css"; +import { Favicon } from "@newm-web/elements"; import store from "../store"; import { ConnectWallet, Toast } from "../components"; @@ -31,6 +32,7 @@ const RootLayout: FunctionComponent = ({ children }) => { content="Connect your wallet to the NEWM mobile app." name="description" /> + 06^5{xRn!R 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 F{{U6I5cmK9 literal 0 HcmV?d00001 diff --git a/apps/tools/public/android-chrome-512x512.png b/apps/tools/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5950699d047bf875902178b17e06dd90b82b1c GIT binary patch literal 9714 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 literal 0 HcmV?d00001 diff --git a/apps/tools/public/apple-touch-icon.png b/apps/tools/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bb565a9313a7361c787d2943f132f39e352e8648 GIT binary patch literal 2152 zcmZ`)c{tR27ynr%j7BE=l4cZFjTnr)D49iu$-WPYjNKqJxTwn;MvP@dmQbiDZ4*)R8 z0|1%O!WNqgyaNAqf+-F-Ov)JO;AKKoGYb=;MUi6=8BJ8sIGo2o%y4M?-zUBn{<5=k zlI*j>8w)b|$B5P|!Q`)ZCYTPxW5mXYzeY})0iK+H+o*+?Xh>B$ zAT%8Mo`fTwK1XQOrzjI_NQ50M2R=VPKeM}jbzorsAiJ=2p0aUub$^DE1>nv8zrD15 z2WK|EcE>anq*Xk^b)=gFuD(Fa4Ah20#y>c}_etM2YM9oQwogj!r?$ge_`^~u(oE?&s`kOtg-(Ai=+I}LGka#%iXbW#i2fM zu2MFL8LOYx{OF8mLSACA=ez6t1_PsXW&x6tK;!JpLvd$n{Rw#*z3N9GU23AQ12T3M z;!%mT#H?gYZyNr3Dy&wGdfFeI*Kl(#hptV>bfq@q;H-s~0xcqi8{GQ`?hIDm%drhv zi$tZGod#pIFQ}v{TU@*eK$5dT`G20#ZB%nCbm8OebwLH4gqUbZ#$xxblrk*!R*( z;(w;o1^YAXtXoh@U=rJfC{8Rc)yD+wnzb3v!i;lC*7a&BkTq)f(s_E^X-*Ib-r z_;pavir&3YMIhn94Q;di0eoWL)irv4V{)hDa9Pm)A)TnsyaBuyMH`7%c+UclP-E84oo#y=ylLBrGqY8sQBO)M!3=) z`y|kKJj6^UmLb~=T)d7V1-AsJ zX;^08(H8Z!U=f&pNuXy~_j|Puh)Vuq)A#KXap8#T0Pv^vvp%tiedPi52M?>AGgM*? z)rE~754D8cS{3m77DNmV_ChM2p zae<fugQV>D@Q(dPSbXmKv2z7>`J3 z7}RD`N>n+anZya=i;&iCu7jz9-vka;S)cU7oflP;w_g&9Z8MkFq*3J5!@)46y9HN@ z7dV^Jq}64m(V*Ceii{d7Z|iXDj#p`5}v7 z@>|1Ud3o?q%znplanG3U-ss#d7UxY)byL=JSS%?dC^R1>@IYBg?oiyq$*JcuxrS~v z*7E92hGHNpeA)IN46}1G?9*%&lUtg_`zuwbCeBonC)L})E6ke*fHqQF=NwZ1oR+S= zmX3k8jsZ#!fkYZ0k==+x)c**`AtZmFsDBpJN0{E>37n$sovF5-k+9IP5Fh^_Zx}Ty z)Enj>O7#MO-wWr~j|$&#R8xCv#TqdCYzqjS64me$l{h6q$dVM0fZ^g$T_k~1we~R9 n$I&<41Ko< + + + + + #603cba + + + diff --git a/apps/tools/public/favicon-16x16.png b/apps/tools/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..f8efc107575cb53256cee8b6fdb95bd9918293e4 GIT binary patch literal 655 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{XiaP zfk$L91B0G22s2hJwJ!q-vX^-Jy0Sm#a%u?tQT{YgtWD$wVZjER^FG? zGvDRWwC~p6#hy3Us})RX&@$zyTf=(dvcI(anw_an)>{`I*krm|V)c2yZi$Y}o@}+O zIZRPo+|O9%NcC5&wr_0nezYXItb1a!v%Zf{F^G_~^h-g3V=ACHEg&yj3zcvE~< zLc8V5rc(l|zZCgR6xfiLbTBnKZ0`1?%abubp_%%e&y!CJMOag|UYKdz^NlIc#s#S7PDv)9@ zGB7gMHL%n*Gz~E{wlXrdGO^G$Ft9Q(FiP&fi=rVnKP5A*61N6tJM%=KhVZJ8h?1bh za)pAT{ItxRRE3htf>edff|6tghKf0lKk;xBhG}S=@;`mX^Jx$Rvog0{GPkg@u=ivU zW?==F29v`n%*vZX6i(l`a^lFDBQi(WPd9ih@X}*=B`#R<$;oso&g literal 0 HcmV?d00001 diff --git a/apps/tools/public/favicon-32x32.png b/apps/tools/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..10473173738ec945ed38159d8716a36dcfadbdd8 GIT binary patch literal 948 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 DXx?Lj literal 0 HcmV?d00001 diff --git a/apps/tools/public/favicon-light.ico b/apps/tools/public/favicon-light.ico new file mode 100644 index 0000000000000000000000000000000000000000..64b74e05775661c2485c2fe8d8b6fdcdb163c5a0 GIT binary patch literal 15086 zcmeI3cZd{A5Qo>C^~{*?%+G{pdS(>y4X7$|O zP4=ZvpI$n2=pbOwF@dpe-MT^JPntAIOli}mO_Cu)hM@K)x|uU)mJuUHNb%yuJ+(KD zq3SYb%qUy8ZZ$!&=cC%GGCA-!Yt~H8oH-Md_;cmTCA)X;mV5W^NwH$ZVvhfP`t*?> zKYqyV+qYv5e~A($Qxn%!D6Vf?Ud4`UAjm@ zLW1!<9TqKGWXql8mOtnS==A5$pAW)C#s2;KC2!umHvY0@%le(is>7BoTkLNGHeKIP z?B(4Pl%@Z7m` z+jpkqxW6C|YuBzVj~+b=BxV0zwrrU#FX0*4gn!PQIkrqvZ79*VzkT}_G$wU@`}VcZ z<>bJ>bLUQ3y?S*J9V#9?cp%lPRde`i!hhq&4JlWyoL?K-Aq(90GCCfzVDsk9M!MXG zbzbo7c7NpC2kJNsiX5a*;5a(}IiH6N84}b+^=aC)sl0yu+K3U|Xxp}J#&_Z1Hx6J` za?e$Ig2F?o<3DuhkgfCU@AYS71KxWMQ{%-Hdz%|I?>W<>SYX z(xy!tV;g-A6)RS>b#5b2m&!=-vo1NObR6m#{Lh{}v+o62vScx~QEgQ@YSbv<4ECBL z!OwnZ*s!51uJYx}+d4D%GKDX(vQVKya_rbKukgdN{{#*?d-m)gS*YWK|NZ;-57|a< zubw-0>?r7>UQ$x|fBpJ(dw(jLrjk2l&YU?t^Ina?9boO+wO-&SiT~(0g9Z%>8<)c8 zrL0q@j=gshn?zFhf8f9Y+wS27M^f9MXHB0zJu&!U^B*0jRjXD}<-MA7e0;oZX9+cl zaQVM{`EoxUN70H_*{@$e`TqU8>lDJlkB)=R9xbe&t zd`jIn#2o_v7`AeJGi%nY2^p(GoC)K3r4KFqQH%`@d|A3}7W=nu=Qw=$upd614lxki zXG@kW>6t#h)}u#{I(k2}bl*}q^sx=XD|o2m3iX^^^zofNeE3lAS+O7~O`o`cB}=d{Ec`nZNEgB94T8*t&IV zzrBEcs6~qw!d$|Uf7rx&_3Gtk_tbrO_+S)$?8f-U*=x{Qv0{ZEW_SX>^q7pq4=MxV7#9> zWDl~B$$|Q3p#IIePL8=NoXBQmAp25f)4Eda)5;XR4?j;ueslLv)r6e_vqZd=9Xo~f zzh;K?!>UW_o{XfgO_TfHxN+kIU0B~c=;r!wg^@bi(ucmtV&XlB6-KwB9l9C+*T8$# zPnEPG7MDJa8#gxgC(eV|GvbEO1Bjbd_u^3fiM1w9fH)WQ)XJ4BJ7*O!RA30zpE>vF z(Zi0b$G^_~OP#gEOygtWZeqfJ@!~~0HV6FxeU^CBQ>RYZx*jEovmJQ_uT1k-agyA% zs#K|B>tY)>ZnR@N(cOsAAl3+4dVlm$ep3>wNW1~OhleWmfOt912e6~#ako?a*JBsw z&Yf$^XmsJBLx(!LA@e3~O(psS_Sa*NSSR?^)OV-kJOU$0?@t}r-1IIr263+VHue6@ jleIW(*f3B2X6{$~kI&e#V{IO(u_GwIN6?r38&Ucf=2@nX literal 0 HcmV?d00001 diff --git a/apps/tools/public/manifest.json b/apps/tools/public/manifest.json new file mode 100644 index 00000000..28e14b9c --- /dev/null +++ b/apps/tools/public/manifest.json @@ -0,0 +1,20 @@ +{ + "short_name": "Tools", + "name": "NEWM Tools", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#000000" +} diff --git a/apps/tools/public/mstile-150x150.png b/apps/tools/public/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..78c5d80fa6cd70e0e1c8d6970b7d3ae8cfe6c03e GIT binary patch literal 2827 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 JH5NWM{{{mE9FPD2 literal 0 HcmV?d00001 diff --git a/apps/tools/public/safari-pinned-tab.svg b/apps/tools/public/safari-pinned-tab.svg new file mode 100644 index 00000000..08ac188e --- /dev/null +++ b/apps/tools/public/safari-pinned-tab.svg @@ -0,0 +1,81 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + diff --git a/apps/tools/src/app/layout.tsx b/apps/tools/src/app/layout.tsx index b2545489..4ab1911a 100644 --- a/apps/tools/src/app/layout.tsx +++ b/apps/tools/src/app/layout.tsx @@ -10,6 +10,7 @@ import { } from "@newm-web/components"; import theme from "@newm-web/theme"; import "global.css"; +import { Favicon } from "@newm-web/elements"; interface RootLayoutProps { readonly children: ReactNode; @@ -27,6 +28,7 @@ const RootLayout: FunctionComponent = ({ children }) => { content="Elevate your NEWM music experience with these set of tools." name="description" /> + { + return ( + <> + + + + + + + + + ); +}; + +export default Favicon;