diff --git a/components/SelectTableField/index.scss b/components/SelectTableField/index.scss index 2bfba89c..e69de29b 100644 --- a/components/SelectTableField/index.scss +++ b/components/SelectTableField/index.scss @@ -1,116 +0,0 @@ -.TableField { - align-items: center; - display: grid; - gap: $unit-2x; - grid-template-columns: 1fr auto; - - @include breakpoint(phone) { - align-items: flex-start; - display: flex; - flex-direction: column; - } - - .Left { - display: flex; - flex-direction: row; - gap: $unit; - width: 100%; - - .Info { - display: flex; - flex-direction: column; - flex-grow: 1; - justify-content: center; - gap: $unit-half; - } - - .Image { - display: none; - - .preview { - $diameter: $unit-5x; - width: $diameter; - height: $diameter; - - img { - width: $diameter; - height: $diameter; - } - } - - @include breakpoint(phone) { - display: block; - } - } - - label { - color: var(--text-tertiary); - font-size: $font-regular; - } - - p { - color: var(--text-secondary); - font-size: $font-small; - line-height: 1.1; - max-width: 300px; - - &.jp { - max-width: 270px; - } - } - } - - .Right { - display: flex; - flex-direction: row; - gap: $unit-2x; - width: 100%; - - @include breakpoint(phone) { - .Image { - display: none; - } - } - - .SelectTrigger { - width: 100%; - } - } - - .preview { - $diameter: $unit * 6; - background-color: $grey-90; - border-radius: 999px; - height: $diameter; - width: $diameter; - - img { - height: $diameter; - width: $diameter; - } - - &.fire { - background: $fire-bg-20; - } - - &.water { - background: $water-bg-20; - } - - &.wind { - background: $wind-bg-20; - } - - &.earth { - background: $earth-bg-20; - } - - &.dark { - background: $dark-bg-10; - } - - &.light { - background: $light-bg-20; - } - } -} diff --git a/components/SelectTableField/index.tsx b/components/SelectTableField/index.tsx index 20edfa96..1b0682dd 100644 --- a/components/SelectTableField/index.tsx +++ b/components/SelectTableField/index.tsx @@ -1,6 +1,7 @@ import classNames from 'classnames' import { useEffect, useState } from 'react' import Select from '~components/Select' +import TableField from '~components/TableField' import './index.scss' @@ -27,46 +28,27 @@ const SelectTableField = (props: Props) => { if (props.value) setValue(props.value) }, [props.value]) - const image = () => { - return props.imageSrc && props.imageSrc.length > 0 ? ( -
- {props.imageAlt} -
- ) : ( - '' - ) - } - return ( -
-
-
-

{props.label}

-

{props.description}

-
-
{image()}
-
- -
-
{image()}
- -
-
+ + + ) } diff --git a/components/TableField/index.scss b/components/TableField/index.scss new file mode 100644 index 00000000..b837ed9f --- /dev/null +++ b/components/TableField/index.scss @@ -0,0 +1,119 @@ +.TableField { + align-items: center; + display: grid; + gap: $unit-2x; + grid-template-columns: 1fr auto; + justify-content: space-between; + width: 100%; + + @include breakpoint(phone) { + align-items: flex-start; + display: flex; + flex-direction: column; + } + + .Left { + display: flex; + flex-direction: row; + gap: $unit; + width: 100%; + + .Info { + display: flex; + flex-direction: column; + flex-grow: 1; + justify-content: center; + gap: $unit-half; + } + + .Image { + display: none; + + .preview { + $diameter: $unit-5x; + width: $diameter; + height: $diameter; + + img { + width: $diameter; + height: $diameter; + } + } + + @include breakpoint(phone) { + display: block; + } + } + + label { + color: var(--text-tertiary); + font-size: $font-regular; + } + + p { + color: var(--text-secondary); + font-size: $font-small; + line-height: 1.1; + max-width: 300px; + + &.jp { + max-width: 270px; + } + } + } + + .Right { + align-items: center; + display: flex; + flex-direction: row; + gap: $unit-2x; + width: 100%; + + @include breakpoint(phone) { + .Image { + display: none; + } + } + + .SelectTrigger { + width: 100%; + } + } + + .preview { + $diameter: $unit * 6; + background-color: $grey-90; + border-radius: 999px; + height: $diameter; + width: $diameter; + + img { + height: $diameter; + width: $diameter; + } + + &.fire { + background: $fire-bg-20; + } + + &.water { + background: $water-bg-20; + } + + &.wind { + background: $wind-bg-20; + } + + &.earth { + background: $earth-bg-20; + } + + &.dark { + background: $dark-bg-10; + } + + &.light { + background: $light-bg-20; + } + } +} diff --git a/components/TableField/index.tsx b/components/TableField/index.tsx new file mode 100644 index 00000000..3b53aac9 --- /dev/null +++ b/components/TableField/index.tsx @@ -0,0 +1,48 @@ +import classNames from 'classnames' +import './index.scss' + +interface Props { + name: string + label: string + description?: string + className?: string + imageAlt?: string + imageClass?: string + imageSrc?: string[] + children: React.ReactNode +} + +const TableField = (props: Props) => { + const image = () => { + return props.imageSrc && props.imageSrc.length > 0 ? ( +
+ {props.imageAlt} +
+ ) : ( + '' + ) + } + + return ( +
+
+
+

{props.label}

+

{props.description}

+
+
{image()}
+
+ +
+
{image()}
+ {props.children} +
+
+ ) +} + +export default TableField