Layout updates

This commit is contained in:
Bill 2021-12-09 00:36:35 -05:00
parent 6bf2bebd7c
commit 2c8f6ac0c1
11 changed files with 59 additions and 19 deletions

1
.prettierignore Normal file
View File

@ -0,0 +1 @@
*.scss

View File

@ -7,11 +7,12 @@ export interface ButtonProps extends FlexProps
{ {
variant?: ColorVariantType; variant?: ColorVariantType;
size?: ButtonSizeType; size?: ButtonSizeType;
disabled?: boolean;
} }
export const Button: FC<ButtonProps> = props => export const Button: FC<ButtonProps> = props =>
{ {
const { variant = 'primary', size = null, classNames = [], ...rest } = props; const { variant = 'primary', size = null, disabled = false, classNames = [], ...rest } = props;
const getClassNames = useMemo(() => const getClassNames = useMemo(() =>
{ {
@ -21,10 +22,12 @@ export const Button: FC<ButtonProps> = props =>
if(size) newClassNames.push('btn-' + size); if(size) newClassNames.push('btn-' + size);
if(disabled) newClassNames.push('disabled');
if(classNames.length) newClassNames.push(...classNames); if(classNames.length) newClassNames.push(...classNames);
return newClassNames; return newClassNames;
}, [ variant, size, classNames ]); }, [ variant, size, disabled, classNames ]);
return <Flex center classNames={ getClassNames } { ...rest } />; return <Flex center classNames={ getClassNames } { ...rest } />;
} }

View File

@ -17,7 +17,9 @@ export const Grid: FC<GridProps> = props =>
const getClassNames = useMemo(() => const getClassNames = useMemo(() =>
{ {
const newClassNames: string[] = [ 'h-100' ]; const newClassNames: string[] = [];
if(!grow) newClassNames.push('h-100');
if(inline) newClassNames.push('inline-grid'); if(inline) newClassNames.push('inline-grid');
else newClassNames.push('grid'); else newClassNames.push('grid');
@ -27,7 +29,7 @@ export const Grid: FC<GridProps> = props =>
if(classNames.length) newClassNames.push(...classNames); if(classNames.length) newClassNames.push(...classNames);
return newClassNames; return newClassNames;
}, [ inline, gap, classNames ]); }, [ grow, inline, gap, classNames ]);
const getStyle = useMemo(() => const getStyle = useMemo(() =>
{ {

View File

@ -1,19 +1,22 @@
import { FC, useMemo } from 'react'; import { FC, useMemo } from 'react';
import { Base, BaseProps } from './Base'; import { Base, BaseProps } from './Base';
import { ColorVariantType } from './types/ColorVariantType'; import { ColorVariantType } from './types/ColorVariantType';
import { FontSizeType } from './types/FontSizeType';
import { FontWeightType } from './types/FontWeightType'; import { FontWeightType } from './types/FontWeightType';
export interface TextProps extends BaseProps<HTMLDivElement> export interface TextProps extends BaseProps<HTMLDivElement>
{ {
variant?: ColorVariantType; variant?: ColorVariantType;
fontWeight?: FontWeightType; fontWeight?: FontWeightType;
fontSize?: FontSizeType;
underline?: boolean; underline?: boolean;
truncate?: boolean;
center?: boolean; center?: boolean;
} }
export const Text: FC<TextProps> = props => export const Text: FC<TextProps> = props =>
{ {
const { variant = 'black', fontWeight = null, underline = false, center = false, ...rest } = props; const { variant = 'black', fontWeight = null, fontSize = 0, underline = false, truncate = false, center = false, ...rest } = props;
const getClassNames = useMemo(() => const getClassNames = useMemo(() =>
{ {
@ -23,12 +26,16 @@ export const Text: FC<TextProps> = props =>
if(fontWeight) newClassNames.push('fw-' + fontWeight); if(fontWeight) newClassNames.push('fw-' + fontWeight);
if(fontSize) newClassNames.push('fs-' + fontSize);
if(underline) newClassNames.push('text-decoration-underline'); if(underline) newClassNames.push('text-decoration-underline');
if(truncate) newClassNames.push('text-truncate');
if(center) newClassNames.push('text-center'); if(center) newClassNames.push('text-center');
return newClassNames; return newClassNames;
}, [ variant, fontWeight, underline, center ]); }, [ variant, fontWeight, fontSize, underline, truncate, center ]);
return <Base classNames={ getClassNames } { ...rest } />; return <Base classNames={ getClassNames } { ...rest } />;
} }

View File

@ -0,0 +1 @@
export type FontSizeType = 1 | 2 | 3 | 4 | 5;

View File

@ -1,4 +1,3 @@
@import url('https://fonts.googleapis.com/css2?family=Ubuntu+Condensed:wght@300;400;500&display=swap');
@import './assets/styles'; @import './assets/styles';
html, html,

View File

@ -1,3 +1,4 @@
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { FC, MouseEvent, useCallback } from 'react'; import { FC, MouseEvent, useCallback } from 'react';
import { useNitroCardContext } from '../context/NitroCardContext'; import { useNitroCardContext } from '../context/NitroCardContext';
import { NitroCardHeaderViewProps } from './NitroCardHeaderView.types'; import { NitroCardHeaderViewProps } from './NitroCardHeaderView.types';
@ -21,7 +22,7 @@ export const NitroCardHeaderView: FC<NitroCardHeaderViewProps> = props =>
<div className="d-flex justify-content-center align-items-center w-100 position-relative"> <div className="d-flex justify-content-center align-items-center w-100 position-relative">
<div className="h5 text-shadow header-text">{ headerText }</div> <div className="h5 text-shadow header-text">{ headerText }</div>
<div className="position-absolute header-close" onMouseDownCapture={ onMouseDown } onClick={ onCloseClick }> <div className="position-absolute header-close" onMouseDownCapture={ onMouseDown } onClick={ onCloseClick }>
<i className="fas fa-times" /> <FontAwesomeIcon icon="times" />
</div> </div>
</div> </div>
</div> </div>
@ -35,7 +36,7 @@ export const NitroCardHeaderView: FC<NitroCardHeaderViewProps> = props =>
<div className="d-flex justify-content-center align-items-center w-100 position-relative"> <div className="d-flex justify-content-center align-items-center w-100 position-relative">
<div className="h4 text-shadow header-text">{ headerText }</div> <div className="h4 text-shadow header-text">{ headerText }</div>
<div className="position-absolute header-close" onMouseDownCapture={ onMouseDown } onClick={ onCloseClick }> <div className="position-absolute header-close" onMouseDownCapture={ onMouseDown } onClick={ onCloseClick }>
<i className="fas fa-times" /> <FontAwesomeIcon icon="times" />
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,19 +1,30 @@
import { FC } from 'react'; import { FC, useMemo } from 'react';
import { Base } from '../../../../common/Base';
import { LimitedEditionStyledNumberView } from '../styled-number/LimitedEditionStyledNumberView'; import { LimitedEditionStyledNumberView } from '../styled-number/LimitedEditionStyledNumberView';
import { LimitedEditionCompactPlateViewProps } from './LimitedEditionCompactPlateView.types'; import { LimitedEditionCompactPlateViewProps } from './LimitedEditionCompactPlateView.types';
export const LimitedEditionCompactPlateView: FC<LimitedEditionCompactPlateViewProps> = props => export const LimitedEditionCompactPlateView: FC<LimitedEditionCompactPlateViewProps> = props =>
{ {
const { uniqueNumber = 0, uniqueSeries = 0 } = props; const { uniqueNumber = 0, uniqueSeries = 0, classNames = [], children = null, ...rest } = props;
const getClassNames = useMemo(() =>
{
const newClassNames: string[] = [ 'unique-compact-plate', 'z-index-1' ];
if(classNames.length) newClassNames.push(...classNames);
return newClassNames;
}, [ classNames ]);
return ( return (
<div className="unique-compact-plate" style={ { zIndex: 1 } }> <Base classNames={ getClassNames } { ...rest }>
<div> <div>
<LimitedEditionStyledNumberView value={ uniqueNumber } /> <LimitedEditionStyledNumberView value={ uniqueNumber } />
</div> </div>
<div> <div>
<LimitedEditionStyledNumberView value={ uniqueSeries } /> <LimitedEditionStyledNumberView value={ uniqueSeries } />
</div> </div>
</div> { children }
</Base>
); );
} }

View File

@ -1,4 +1,6 @@
export interface LimitedEditionCompactPlateViewProps import { BaseProps } from '../../../../common/Base';
export interface LimitedEditionCompactPlateViewProps extends BaseProps<HTMLDivElement>
{ {
uniqueNumber: number; uniqueNumber: number;
uniqueSeries: number; uniqueSeries: number;

View File

@ -1,13 +1,24 @@
import { FC } from 'react'; import { FC, useMemo } from 'react';
import { Base } from '../../../common/Base';
import { RarityLevelViewProps } from './RarityLevelView.types'; import { RarityLevelViewProps } from './RarityLevelView.types';
export const RarityLevelView: FC<RarityLevelViewProps> = props => export const RarityLevelView: FC<RarityLevelViewProps> = props =>
{ {
const { level = 0 } = props; const { level = 0, classNames = [], children = null, ...rest } = props;
const getClassNames = useMemo(() =>
{
const newClassNames: string[] = [ 'nitro-rarity-level' ];
if(classNames.length) newClassNames.push(...classNames);
return newClassNames;
}, [ classNames ]);
return ( return (
<div className="nitro-rarity-level"> <Base classNames={ getClassNames } { ...rest }>
<div>{ level }</div> <div>{ level }</div>
</div> { children }
</Base>
); );
} }

View File

@ -1,4 +1,6 @@
export interface RarityLevelViewProps import { BaseProps } from '../../../common/Base';
export interface RarityLevelViewProps extends BaseProps<HTMLDivElement>
{ {
level: number; level: number;
} }