diff --git a/layers/assets/css/base/_reset.css b/layers/assets/css/base/_reset.css
index 4f597a2..291e700 100644
--- a/layers/assets/css/base/_reset.css
+++ b/layers/assets/css/base/_reset.css
@@ -12,6 +12,11 @@
@apply outline-none;
}
+ img {
+ border: none;
+ outline: none;
+ }
+
/* 라이트 테마 색상 */
[data-theme='light'] {
body {
diff --git a/layers/assets/css/components/_modal.css b/layers/assets/css/components/_modal.css
index bf0a141..6f53704 100644
--- a/layers/assets/css/components/_modal.css
+++ b/layers/assets/css/components/_modal.css
@@ -1,7 +1,7 @@
/* Button Size Classes */
@layer components {
.modal-wrap {
- @apply fixed inset-0 flex p-5 z-[500];
+ @apply fixed inset-0 flex p-5 z-[800];
}
.modal-wrap.dimmed {
diff --git a/layers/components/atoms/Button/ScrollTop.vue b/layers/components/atoms/Button/ScrollTop.vue
new file mode 100644
index 0000000..fdec15d
--- /dev/null
+++ b/layers/components/atoms/Button/ScrollTop.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
diff --git a/layers/components/atoms/Img.vue b/layers/components/atoms/Img.vue
index c736199..8ec9a47 100644
--- a/layers/components/atoms/Img.vue
+++ b/layers/components/atoms/Img.vue
@@ -10,25 +10,25 @@ interface Props {
const props = withDefaults(defineProps(), {
objectFit: 'contain',
+ alt: 'image',
})
const imagePaths = computed(() => {
if (!props.resourcesData?.res_path) return null
- const pcPath =
+ const pc =
props.resourcesData.res_path.path_pc ?? props.resourcesData.res_path.path_mo
- const moPath =
+ const mo =
props.resourcesData.res_path.path_mo ?? props.resourcesData.res_path.path_pc
-
return {
- pc: pcPath ? getResolvedHost(pcPath) : '',
- mo: moPath ? getResolvedHost(moPath) : '',
+ pc: pc ? getResolvedHost(pc) : '',
+ mo: mo ? getResolvedHost(mo) : '',
}
})
-
+
{
/>
-
-
diff --git a/layers/components/atoms/icons/ShareLine.vue b/layers/components/atoms/icons/ShareLine.vue
new file mode 100644
index 0000000..5f4822b
--- /dev/null
+++ b/layers/components/atoms/icons/ShareLine.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
diff --git a/layers/components/atoms/icons/TopLine.vue b/layers/components/atoms/icons/TopLine.vue
new file mode 100644
index 0000000..b3b7a6e
--- /dev/null
+++ b/layers/components/atoms/icons/TopLine.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
diff --git a/layers/components/blocks/UtileContainer.vue b/layers/components/blocks/UtileContainer.vue
new file mode 100644
index 0000000..2c78430
--- /dev/null
+++ b/layers/components/blocks/UtileContainer.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
diff --git a/layers/components/blocks/loading/Local.vue b/layers/components/blocks/loading/Local.vue
index 4eea746..87b8a6f 100644
--- a/layers/components/blocks/loading/Local.vue
+++ b/layers/components/blocks/loading/Local.vue
@@ -25,16 +25,13 @@ const canTeleport = (localId: string) => {
diff --git a/layers/templates/GrBoard01/index.vue b/layers/templates/GrBoard01/index.vue
new file mode 100644
index 0000000..b4f5b11
--- /dev/null
+++ b/layers/templates/GrBoard01/index.vue
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
diff --git a/layers/templates/GrContents01/index.vue b/layers/templates/GrContents01/index.vue
index a6e98b9..114ace8 100644
--- a/layers/templates/GrContents01/index.vue
+++ b/layers/templates/GrContents01/index.vue
@@ -1,10 +1,7 @@
@@ -59,51 +44,15 @@ const onArrowClick = (direction, targetIndex) => {
:resources-data="subTitleData"
class="title-sm mt-2 mx-[20px] sm:mx-[40px]"
/>
-
-
-
+
{
diff --git a/layers/templates/GrDetail01/index.vue b/layers/templates/GrDetail01/index.vue
index 651d74d..b6abd52 100644
--- a/layers/templates/GrDetail01/index.vue
+++ b/layers/templates/GrDetail01/index.vue
@@ -115,7 +115,7 @@ const handleSplideMove = (_splide: SplideType, newIndex: number) => {