Skip to content

Commit

Permalink
FeaturePanel: Update typography and design
Browse files Browse the repository at this point in the history
  • Loading branch information
jvaclavik committed Jan 30, 2025
1 parent f490feb commit c7e133c
Show file tree
Hide file tree
Showing 25 changed files with 227 additions and 174 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ const Title = styled.div`
const PhotosContainer = styled.div`
display: flex;
flex-direction: row;
gap: 4px;
gap: 8px;
align-items: center;
`;

const PhotosTitle = styled.div`
Expand Down Expand Up @@ -100,15 +101,18 @@ export const ClimbingCragDialogHeader = ({ onClose }) => {
<Title>
<Typography
noWrap
variant="h6"
variant="h5"
component="div"
onClick={handleOnClick}
fontFamily={'Piazzolla'}
>
{label}
</Typography>
{photoPaths?.length > 1 && (
<PhotosContainer>
<PhotosTitle>Photos:</PhotosTitle>
<Typography variant="caption" color="secondary">
Photos
</Typography>
<PhotoLinks>
{photoPaths.map((photo, index) => (
<ItemContainer key={photo}>
Expand Down
82 changes: 45 additions & 37 deletions src/components/FeaturePanel/Climbing/ClimbingGuideInfo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,18 @@ import {
Stack,
Typography,
useTheme,
Paper,
} from '@mui/material';
import { useFeatureContext } from '../../utils/FeatureContext';
import { t } from '../../../services/intl';
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
import ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';
import { LogoOpenClimbing } from '../../../assets/LogoOpenClimbing';
import styled from '@emotion/styled';

const Container = styled.div`
margin-bottom: 8px;
`;

export const ClimbingGuideInfo = () => {
const { persistShowHomepage } = useFeatureContext();
Expand All @@ -23,44 +29,46 @@ export const ClimbingGuideInfo = () => {
};

return (
<Accordion
disableGutters
elevation={0}
square
sx={{
borderBottom: `solid 1px ${theme.palette.divider}`,
marginBottom: 2,
}}
>
<AccordionSummary expandIcon={<ExpandMoreIcon color="secondary" />}>
<Stack direction="row" alignItems="center" gap={1}>
<LogoOpenClimbing width={24} />
<Typography color="secondary" variant="caption">
<strong>openclimbing.org:</strong> {t('climbing.guideinfo.title')}
<Container>
<Accordion
disableGutters
elevation={0}
square
sx={{
borderBottom: `solid 1px ${theme.palette.divider}`,
background: 'rgba(0, 0, 0, 0.1)',
}}
>
<AccordionSummary expandIcon={<ExpandMoreIcon color="secondary" />}>
<Stack direction="row" alignItems="center" gap={1}>
<LogoOpenClimbing width={24} />
<Typography color="secondary" variant="caption">
<strong>openclimbing.org:</strong> {t('climbing.guideinfo.title')}
</Typography>
</Stack>
</AccordionSummary>
<AccordionDetails>
<Typography variant="body2">
{t('climbing.guideinfo.description')}
</Typography>
</Stack>
</AccordionSummary>
<AccordionDetails>
<Typography variant="body2">
{t('climbing.guideinfo.description')}
</Typography>
<Stack
direction="row"
justifyContent="flex-end"
alignItems="center"
mt={1}
>
<Button
variant="text"
color="primary"
endIcon={<ArrowForwardIosIcon />}
sx={{ alignSelf: 'flex-end' }}
onClick={handleClick}
<Stack
direction="row"
justifyContent="flex-end"
alignItems="center"
mt={1}
>
{t('climbing.guideinfo.button')}
</Button>
</Stack>
</AccordionDetails>
</Accordion>
<Button
variant="text"
color="primary"
endIcon={<ArrowForwardIosIcon />}
sx={{ alignSelf: 'flex-end' }}
onClick={handleClick}
>
{t('climbing.guideinfo.button')}
</Button>
</Stack>
</AccordionDetails>
</Accordion>
</Container>
);
};
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import { ClimbingGuideInfo } from './ClimbingGuideInfo';
import { useFeatureContext } from '../../utils/FeatureContext';
import { climbingTagValues } from './utils/climbingTagValues';
import { PROJECT_ID } from '../../../services/project';
import { useMobileMode } from '../../helpers';

export const FeaturePanelClimbingGuideInfo = () => {
const { feature } = useFeatureContext();
const isOpenClimbing = PROJECT_ID === 'openclimbing';
const isMobileMode = useMobileMode();

const isClimbing = climbingTagValues.includes(feature.tags.climbing);

if (!isClimbing) {
if (!isOpenClimbing || isMobileMode) {
return null;
}

Expand Down
19 changes: 10 additions & 9 deletions src/components/FeaturePanel/Climbing/PanelLabel.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import React from 'react';
import styled from '@emotion/styled';
import { ContentContainer } from './ContentContainer';
import { Box } from '@mui/material';

type PanelLabelProps = {
children: React.ReactNode;
addition?: React.ReactNode;
border?: boolean;
};

export const Container = styled.div<{ $border: boolean }>`
export const Container = styled.div`
padding: 20px 10px 4px;
`;

Expand All @@ -17,25 +18,25 @@ export const InnerContainer = styled.div`
justify-content: space-between;
align-items: center;
`;
export const Title = styled.div`
export const Title = styled.h3`
margin: 0;
align-self: center;
font-weight: bold;
font-size: 12px;
text-transform: uppercase;
color: ${({ theme }) => theme.palette.secondary.main};
`;
export const Addition = styled.div`
color: ${({ theme }) => theme.palette.secondary.main};
`;

export const PanelLabel = ({
children,
addition,
border = true,
}: PanelLabelProps) => (
<Container $border={border}>
export const PanelLabel = ({ children, addition }: PanelLabelProps) => (
<Box ml={2} mr={2} mt={4}>
<ContentContainer>
<InnerContainer>
<Title>{children}</Title>
<Addition>{addition}</Addition>
</InnerContainer>
</ContentContainer>
</Container>
</Box>
);
85 changes: 41 additions & 44 deletions src/components/FeaturePanel/CragsInArea.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import styled from '@emotion/styled';
import { Box } from '@mui/material';
import { Box, Chip } from '@mui/material';
import React from 'react';
import Router from 'next/router';
import ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';
Expand All @@ -16,29 +16,25 @@ import { intl, t } from '../../services/intl';
import Link from 'next/link';
import { naturalSort } from './Climbing/utils/array';
import { PanelLabel } from './Climbing/PanelLabel';
import { PROJECT_ID } from '../../services/project';

const isOpenClimbing = PROJECT_ID === 'openclimbing';

const ArrowIcon = styled(ArrowForwardIosIcon)`
opacity: 0.2;
margin-left: 12px;
`;

const HeadingRow = styled.div`
display: flex;
flex-direction: row;
align-items: center;
padding: 0 12px;
`;

const Container = styled.div`
overflow: auto;
flex-direction: column;
display: flex;
gap: 8px;
justify-content: space-between;
cursor: pointer;
border-radius: 8px;
padding: 12px 0;
background-color: ${({ theme }) => theme.palette.background.elevation};
//border-radius: 8px;
padding: 0 0 20px 0;
//background-color: ${({ theme }) => theme.palette.background.elevation};
&:hover {
${ArrowIcon} {
opacity: 1;
Expand All @@ -49,58 +45,60 @@ const Container = styled.div`
const CragList = styled.div`
display: flex;
flex-direction: column;
gap: 12px;
gap: 20px;
margin-top: 12px;
`;

const StyledLink = styled(Link)`
text-decoration: none !important;
`;

const Content = styled.div`
flex: 1;
const Name = styled.div`
overflow: hidden;
text-overflow: ellipsis;
`;

const CragName = styled.div`
padding: 0;
const CragName = styled.h2`
font-weight: 900;
font-size: 20px;
margin: 0;
font-size: 28px;
line-height: 1.2;
${isOpenClimbing && `font-family: 'Piazzolla', sans-serif;`}
color: ${({ theme }) => theme.palette.primary.main};
`;

const Attributes = styled.div`
display: flex;
flex-direction: row;
gap: 8px;
align-items: center;
justify-content: space-between;
`;

const NumberOfRoutes = styled.div`
font-size: 13px;
color: ${({ theme }) => theme.palette.secondary.main};
const StyledLink = styled(Link)`
text-decoration: none !important;
&:hover ${Name} {
text-decoration: underline;
}
`;

const Header = ({
imagesCount,
label,
routesCount,
}: {
label: string;
routesCount: number;
imagesCount: number;
}) => (
<HeadingRow>
<Content>
<CragName>{label}</CragName>{' '}
<Attributes>
{routesCount > 0 && (
<NumberOfRoutes>{routesCount} routes </NumberOfRoutes>
)}
{imagesCount > 0 && (
<NumberOfRoutes>{imagesCount} photos</NumberOfRoutes>
)}
</Attributes>
</Content>
<ArrowIcon color="primary" />
</HeadingRow>
<Box ml={2} mr={2}>
<CragName>
<Name>{label}</Name>
{routesCount && (
<Chip
size="small"
variant="outlined"
label={
<>
<strong>{routesCount}</strong> {t('featurepanel.routes')}
</>
}
sx={{ position: 'relative', top: 2, fontWeight: 'normal' }}
/>
)}
</CragName>{' '}
</Box>
);

const Gallery = ({ images }) => {
Expand Down Expand Up @@ -143,7 +141,6 @@ const CragItem = ({ feature }: { feature: Feature }) => {
<Header
label={getLabel(feature)}
routesCount={feature.members?.length}
imagesCount={images.length}
/>
{images.length ? <Gallery images={images} /> : null}
</Container>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,9 @@ export const MembersEditor = () => {
>
<Stack direction="row" spacing={2} alignItems="center">
<Typography variant="button">{getSectionName()}</Typography>
{membersLength && <Chip size="small" label={membersLength} />}
{membersLength && (
<Chip size="small" label={membersLength} variant="outlined" />
)}
</Stack>
</AccordionSummary>
<AccordionDetails>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ export const ParentsEditor = () => {
>
<Stack direction="row" spacing={2} alignItems="center">
<Typography variant="button">{getSectionName()}</Typography>
<Chip size="small" label={parents.length} />
<Chip size="small" label={parents.length} variant="outlined" />
</Stack>
</AccordionSummary>
<AccordionDetails>
Expand Down
Loading

0 comments on commit c7e133c

Please sign in to comment.