Fix download page copy, add link to server source code, show download link on phone-web

This commit is contained in:
Bojan Mojsilovic 2023-07-12 17:03:34 +02:00
parent 699141db66
commit 6ca7e2e0fb
7 changed files with 69 additions and 12 deletions

View File

@ -119,6 +119,12 @@
} }
} }
@media only screen and (max-width: 720px) {
.hiddenOnSmallScreens {
display: none
}
}
.bubble { .bubble {
position: absolute; position: absolute;
text-align: center; text-align: center;

View File

@ -3,7 +3,13 @@ import { Component, Show } from 'solid-js';
import styles from './NavLink.module.scss'; import styles from './NavLink.module.scss';
const NavLink: Component<{ to: string, label: string, icon: string, bubble?: () => number}> = (props) => { const NavLink: Component<{
to: string,
label: string,
icon: string,
bubble?: () => number,
hiddenOnSmallScreens?: boolean,
}> = (props) => {
const navigate = useNavigate(); const navigate = useNavigate();
const location = useLocation(); const location = useLocation();
@ -34,7 +40,7 @@ const NavLink: Component<{ to: string, label: string, icon: string, bubble?: ()
} }
return ( return (
<button class={styles.navLink} onClick={onClick}> <button class={`${styles.navLink} ${props.hiddenOnSmallScreens ? styles.hiddenOnSmallScreens : ''}`} onClick={onClick}>
<Show when={props.bubble && props.bubble() > 0}> <Show when={props.bubble && props.bubble() > 0}>
<div class={`${styles.bubble} ${bubbleClass()}`}> <div class={`${styles.bubble} ${bubbleClass()}`}>
<div>{props.bubble && props.bubble() < 100 ? props.bubble() : '99+'}</div> <div>{props.bubble && props.bubble() < 100 ? props.bubble() : '99+'}</div>

View File

@ -29,10 +29,6 @@
> button { > button {
margin-bottom: 0px; margin-bottom: 0px;
} }
button:nth-child(n+5) {
display: none;
}
} }
.callToAction { .callToAction {

View File

@ -39,6 +39,7 @@ const NavMenu: Component = () => {
label: intl.formatMessage(t.notifications), label: intl.formatMessage(t.notifications),
icon: 'notificationsIcon', icon: 'notificationsIcon',
bubble: () => notifications?.notificationCount || 0, bubble: () => notifications?.notificationCount || 0,
hiddenOnSmallScreens: true,
}, },
{ {
to: '/downloads', to: '/downloads',
@ -50,11 +51,13 @@ const NavMenu: Component = () => {
to: '/settings', to: '/settings',
label: intl.formatMessage(t.settings), label: intl.formatMessage(t.settings),
icon: 'settingsIcon', icon: 'settingsIcon',
hiddenOnSmallScreens: true,
}, },
{ {
to: '/help', to: '/help',
label: intl.formatMessage(t.help), label: intl.formatMessage(t.help),
icon: 'helpIcon', icon: 'helpIcon',
hiddenOnSmallScreens: true,
}, },
]; ];
@ -62,8 +65,14 @@ const NavMenu: Component = () => {
<div class={styles.navMenu}> <div class={styles.navMenu}>
<nav class={styles.sideNav}> <nav class={styles.sideNav}>
<For each={links}> <For each={links}>
{({ to, label, icon, bubble }) => { {({ to, label, icon, bubble, hiddenOnSmallScreens }) => {
return <NavLink to={to} label={label} icon={icon} bubble={bubble}/> return <NavLink
to={to}
label={label}
icon={icon}
bubble={bubble}
hiddenOnSmallScreens={hiddenOnSmallScreens}
/>
} }
} }
</For> </For>

View File

@ -13,7 +13,7 @@
} }
} }
.callToAction, .callToActionAndroid { .callToAction, .callToActionAndroid, .callToActionIOS {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
@ -38,7 +38,7 @@
} }
} }
.callToActionAndroid { .callToActionAndroid, .callToActionIOS {
display: none; display: none;
} }
@ -180,6 +180,10 @@
display: none; display: none;
} }
.callToAction {
display: none;
}
.linkHolder { .linkHolder {
margin-top: 20px; margin-top: 20px;
flex-direction: column; flex-direction: column;
@ -202,6 +206,9 @@
} }
.appStore { .appStore {
.callToActionIOS {
display: flex;
}
>a { >a {
width: 188px; width: 188px;
height: 63px; height: 63px;
@ -210,6 +217,7 @@
.playStore { .playStore {
margin-top: 77px; margin-top: 77px;
margin-bottom: 250px;
width: 100% !important; width: 100% !important;
.callToActionAndroid { .callToActionAndroid {
display: flex; display: flex;

View File

@ -88,6 +88,13 @@ const Downloads: Component = () => {
label={intl.formatMessage(t.links.cachingService)} label={intl.formatMessage(t.links.cachingService)}
href='https://github.com/PrimalHQ/primal-caching-service' href='https://github.com/PrimalHQ/primal-caching-service'
/> />
<ExternalLink
darkIcon={gitHubLight}
lightIcon={gitHubDark}
label={intl.formatMessage(t.links.primalServer)}
href='https://github.com/PrimalHQ/primal-server'
/>
</div> </div>
</div> </div>
</StickySidebar> </StickySidebar>
@ -139,6 +146,16 @@ const Downloads: Component = () => {
<div class={styles.linkHolder}> <div class={styles.linkHolder}>
<div class={styles.appStore}> <div class={styles.appStore}>
<div>{intl.formatMessage(t.appStoreCaption)}</div> <div>{intl.formatMessage(t.appStoreCaption)}</div>
<div class={styles.callToActionIOS}>
<div class={styles.ctaTitle}>
{intl.formatMessage(t.callToActionIOSTitle)}
</div>
<div class={styles.ctaDescription}>
{intl.formatMessage(t.callToActionIOSDescription)}
</div>
</div>
<a <a
href='https://testflight.apple.com/join/Is4tmDDR' href='https://testflight.apple.com/join/Is4tmDDR'
target='_blank' target='_blank'

View File

@ -87,14 +87,24 @@ export const downloads = {
}, },
callToActionTitle: { callToActionTitle: {
id: 'downloads.ctaTitle', id: 'downloads.ctaTitle',
defaultMessage: 'Primal iOS TestFlight is Here!', defaultMessage: 'Primal Mobile Apps are Here!',
description: 'Title for the downloads\' page call-to-action', description: 'Title for the downloads\' page call-to-action',
}, },
callToActionDescription: { callToActionDescription: {
id: 'downloads.ctaDescription', id: 'downloads.ctaDescription',
defaultMessage: 'The app features easy onboarding, fast & snappy UI, ability to explore Nostr, and create & manage custom feeds', defaultMessage: 'The iOS app is in public TestFlight and ready to be used as a daily driver. The Android app is in alpha, but developing quickly!',
description: 'Description for the downloads\' page call-to-action', description: 'Description for the downloads\' page call-to-action',
}, },
callToActionIOSTitle: {
id: 'downloads.ctaAndroidTitle',
defaultMessage: 'Primal iOS TestFlight',
description: 'Title for the iOS downloads\' page call-to-action',
},
callToActionIOSDescription: {
id: 'downloads.ctaAndroidDescription',
defaultMessage: 'The app features easy onboarding, fast & snappy UI, ability to explore Nostr, and create & manage custom feeds',
description: 'Description for the iOS downloads\' page call-to-action',
},
callToActionAndroidTitle: { callToActionAndroidTitle: {
id: 'downloads.ctaAndroidTitle', id: 'downloads.ctaAndroidTitle',
defaultMessage: 'Primal Android Alpha', defaultMessage: 'Primal Android Alpha',
@ -146,6 +156,11 @@ export const downloads = {
defaultMessage: 'Primal Caching Service', defaultMessage: 'Primal Caching Service',
description: 'Label for the link to the caching service', description: 'Label for the link to the caching service',
}, },
primalServer: {
id: 'downloads.primalServer',
defaultMessage: 'Primal Server',
description: 'Label for the link to the primal server',
},
}, },
}; };