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 ? (
-
-

-
- ) : (
- ''
- )
- }
-
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 ? (
+
+

+
+ ) : (
+ ''
+ )
+ }
+
+ return (
+
+
+
+
{props.label}
+
{props.description}
+
+
{image()}
+
+
+
+
{image()}
+ {props.children}
+
+
+ )
+}
+
+export default TableField