feat: GA/SA 추가, 이미지 추가
@@ -5,6 +5,14 @@ import LoadingLocal from '#layers/components/blocks/loading/Local.vue'
|
||||
import type { GameDataMetaTag, GameDataValue } from '#layers/types/api/gameData'
|
||||
|
||||
const nuxtApp = useNuxtApp()
|
||||
const { gtag, initialize } = useGtag()
|
||||
const { gaId } = useGoogleAnalyticsId()
|
||||
initialize(gaId.value)
|
||||
gtag('event', 'screen_view', {
|
||||
app_name: 'My App',
|
||||
screen_name: 'Home'
|
||||
})
|
||||
|
||||
|
||||
const gameDataStore = useGameDataStore()
|
||||
const { setGameData } = gameDataStore
|
||||
|
||||
272
layers/composables/useAnalytics.ts
Normal file
@@ -0,0 +1,272 @@
|
||||
import * as amplitude from '@amplitude/analytics-browser'
|
||||
import type { AnalyticsDetailType } from '../types/AnalyticsType'
|
||||
import type { IdentityInfo, ActionInfo, MarketingInfo } from '../types/Stove81Plug'
|
||||
|
||||
declare const svcLog: any
|
||||
declare const twq: any
|
||||
declare const ttq: any
|
||||
|
||||
// target에 {XX1, XX2}와 같은 형태가 포함되어 있을 경우 options.clickItem으로부터 값 추출하여 세팅
|
||||
const findValueFromOption = (target: string, { options = {} }: any) => {
|
||||
if (target.includes('{') && target.includes('}')) {
|
||||
const strTargetClickItem = target.substring(target.indexOf('{') + 1, target.indexOf('}'))
|
||||
|
||||
const arrTargetClickItem = strTargetClickItem.split(',')
|
||||
const arrTargetClickItemValue = []
|
||||
|
||||
for (let targetClickItem of arrTargetClickItem) {
|
||||
targetClickItem = targetClickItem.trim()
|
||||
arrTargetClickItemValue.push(options.clickItem[targetClickItem])
|
||||
}
|
||||
target = target.replaceAll(`{${strTargetClickItem}}`, arrTargetClickItemValue.join(','))
|
||||
}
|
||||
return target
|
||||
}
|
||||
|
||||
/**
|
||||
* Google Analytics 전송
|
||||
*
|
||||
* @param {AnalyticsDetailType} analytics
|
||||
* @param {object} options
|
||||
*/
|
||||
const sendGA = (analytics: AnalyticsDetailType, { options = {} }: any) => {
|
||||
try {
|
||||
const { gtag } = useGtag()
|
||||
|
||||
const eventName = findValueFromOption(analytics.event || '', { options })
|
||||
const eventCategory = findValueFromOption(analytics.eventCategory || '', { options })
|
||||
const eventLocale = analytics.eventLocale || ''
|
||||
|
||||
// GA 클릭 이벤트 명 뒤에 언어 값 추가 노출되도록 개발. ex) GNB_자유게시판_KO
|
||||
const eventLabel = `${eventCategory}_${eventLocale}`
|
||||
|
||||
gtag('set', 'cookie_domain', `${window?.location?.hostname || ''}`) // env 값으로 설정 시 쿠키 생성 안 돼서 window.location.hostname으로 설정
|
||||
gtag('set', 'cookie_expires', '0') // 0으로 설정 시 쿠키가 Session 기반 쿠키로 전환
|
||||
gtag('event', `${eventName}`, {
|
||||
event_category: eventLabel
|
||||
})
|
||||
} catch (e) {
|
||||
console.error('[Exception] useAnalytics.sendGA: ', e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Stove Analytics(81 Plug) 전송
|
||||
*
|
||||
* @param {AnalyticsDetailType} analytics
|
||||
* @param {string} mcode
|
||||
* @param {object} options
|
||||
*/
|
||||
const sendSA = (analytics: AnalyticsDetailType, { mcode = '', options = {} }: any) => {
|
||||
try {
|
||||
const runtimeConfig = useRuntimeConfig()
|
||||
const gameNo = runtimeConfig.public.stoveGameNo
|
||||
|
||||
const device = useDevice()
|
||||
const deviceType = device.isDesktop ? 'pcweb' : 'mobileweb'
|
||||
|
||||
const country = `${csrGetCountry()}`
|
||||
const memberNo = `${csrGetStoveMemberNo()}`
|
||||
|
||||
const actionType = analytics.actionType || ''
|
||||
const logSourceType = analytics.logSourceType || ''
|
||||
const viewArea = analytics.viewArea || ''
|
||||
const viewType = analytics.viewType || ''
|
||||
const clickArea = analytics.clickArea || ''
|
||||
const clickSarea = findValueFromOption(analytics.clickSarea || '', { options })
|
||||
const eventLocale = analytics.eventLocale || ''
|
||||
|
||||
const identityInfo: IdentityInfo = {
|
||||
app_id: 'stove',
|
||||
log_source_type: logSourceType,
|
||||
country,
|
||||
locale: eventLocale,
|
||||
lang_cd: eventLocale,
|
||||
member_no: memberNo,
|
||||
channeling_cd: 'SO'
|
||||
}
|
||||
|
||||
const marketingInfo: MarketingInfo = {
|
||||
marketing_code: mcode || '',
|
||||
device_type: deviceType,
|
||||
media_type: '',
|
||||
media_page: ''
|
||||
}
|
||||
|
||||
let actionParam = {}
|
||||
|
||||
if (actionType === 'view') {
|
||||
actionParam = {
|
||||
view_area: viewArea,
|
||||
view_type: viewType,
|
||||
view_info: {
|
||||
game_no: gameNo,
|
||||
lang_cd: eventLocale,
|
||||
...options?.viewInfo
|
||||
}
|
||||
}
|
||||
} else if (actionType === 'click') {
|
||||
actionParam = {
|
||||
click_area: clickArea,
|
||||
click_sarea: clickSarea,
|
||||
click_item: {
|
||||
game_no: gameNo,
|
||||
lang_cd: eventLocale,
|
||||
...options?.clickItem
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const actionInfo: ActionInfo = {
|
||||
action_type: actionType,
|
||||
action_param: actionParam,
|
||||
marketing_info: marketingInfo
|
||||
}
|
||||
|
||||
const amplitudeActionInfo = {
|
||||
...actionInfo,
|
||||
url: `${location?.href || ''}`,
|
||||
agent: `${navigator?.userAgent || ''}`
|
||||
}
|
||||
|
||||
const amplitudeActionParams: {
|
||||
event_type: string
|
||||
event_properties: ActionInfo & { url: string; agent: string }
|
||||
} = {
|
||||
event_type: actionType,
|
||||
event_properties: amplitudeActionInfo
|
||||
}
|
||||
|
||||
svcLog.identity(identityInfo)
|
||||
svcLog.action(actionInfo, {}, {}) // 81plug warning log 제거를 위해 2번째 인자부터 빈 객체 세팅
|
||||
amplitude.track(amplitudeActionParams)
|
||||
} catch (e) {
|
||||
console.error('[Exception] useAnalytics.sendSA: ', e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 기본 로그 일괄 전송
|
||||
*
|
||||
* @param {string} locale
|
||||
* @param {AnalyticsDetailType} analytics
|
||||
*/
|
||||
const sendLog = (locale: string, analytics: AnalyticsDetailType) => {
|
||||
// 언어 코드 대문자 변환
|
||||
analytics.eventLocale = locale.toUpperCase()
|
||||
|
||||
if (analytics) {
|
||||
// GA 전송 : eventCategory 유무로 판별
|
||||
if (analytics.eventCategory && analytics.eventCategory !== '') {
|
||||
sendGA(analytics, { options: analytics.options })
|
||||
}
|
||||
// SA 전송 : actionType, logSourceType 유무로 판별
|
||||
if (
|
||||
analytics.actionType &&
|
||||
analytics.actionType !== '' &&
|
||||
analytics.logSourceType &&
|
||||
analytics.logSourceType !== ''
|
||||
) {
|
||||
sendSA(analytics, { mcode: analytics.mcode, options: analytics.options })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Google Analytics 전송 (기본 이벤트만 전송)
|
||||
*
|
||||
* @param {string} gaEventName
|
||||
*/
|
||||
const sendGAEventOnly = (gaEventName: string) => {
|
||||
try {
|
||||
const { gtag } = useGtag()
|
||||
|
||||
gtag('set', 'cookie_domain', `${window?.location?.hostname || ''}`) // env 값으로 설정 시 쿠키 생성 안 돼서 window.location.hostname으로 설정
|
||||
gtag('set', 'cookie_expires', '0') // 0으로 설정 시 쿠키가 Session 기반 쿠키로 전환
|
||||
gtag('event', `${gaEventName}`)
|
||||
} catch (e) {
|
||||
console.error('[Exception] useAnalytics.sendGAEventOnly: ', e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 메타 픽셀 전송
|
||||
*
|
||||
* @param {string} fbEventName
|
||||
* @description 수집 대상 페이지에 useHead({ meta: [loadMetaPixelMeta()] }) 선언
|
||||
*/
|
||||
const sendMetaPixel = (fbEventName: string) => {
|
||||
try {
|
||||
const { $fbq } = useNuxtApp()
|
||||
if (typeof $fbq === 'function') {
|
||||
$fbq('trackCustom', fbEventName)
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('[Exception] useAnalytics.sendMetaPixel: ', e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* X(트위터) 픽셀 전송
|
||||
*
|
||||
* @param {string} twEventName
|
||||
* @description 수집 대상 페이지에 useHead({ script: [loadTwitterPixelScript()] }) 선언
|
||||
*/
|
||||
const sendTwitterPixel = (twEventName: string) => {
|
||||
try {
|
||||
twq('event', twEventName, {})
|
||||
} catch (e) {
|
||||
console.error('[Exception] useAnalytics.sendTwitterPixel: ', e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 틱톡 픽셀 전송
|
||||
*
|
||||
* @param {string} ttEventName
|
||||
* @description 수집 대상 페이지에 onMounted(() => { loadTikTokPixelScript() }) 선언
|
||||
*/
|
||||
const sendTiktokPixel = (ttEventName: string) => {
|
||||
try {
|
||||
ttq.track(ttEventName)
|
||||
} catch (e) {
|
||||
console.error('[Exception] useAnalytics.sendTiktokPixel: ', e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 마케팅 인텔리전스 팀 요청 마케팅 스크립트 일괄 전송
|
||||
*
|
||||
* @param {string} gaEventName
|
||||
* @param {string} fbEventName
|
||||
* @param {string} twEventName
|
||||
* @param {string} ttEventName
|
||||
*/
|
||||
const sendMarketingScript = ({
|
||||
gaEventName,
|
||||
fbEventName,
|
||||
twEventName,
|
||||
ttEventName
|
||||
}: {
|
||||
gaEventName?: string
|
||||
fbEventName?: string
|
||||
twEventName?: string
|
||||
ttEventName?: string
|
||||
}) => {
|
||||
if (gaEventName) {
|
||||
sendGAEventOnly(gaEventName)
|
||||
}
|
||||
if (fbEventName) {
|
||||
sendMetaPixel(fbEventName)
|
||||
}
|
||||
if (twEventName) {
|
||||
sendTwitterPixel(twEventName)
|
||||
}
|
||||
if (ttEventName) {
|
||||
sendTiktokPixel(ttEventName)
|
||||
}
|
||||
}
|
||||
|
||||
export default () => {
|
||||
return { sendGA, sendSA, sendLog, sendMarketingScript }
|
||||
}
|
||||
19
layers/composables/useGoogleAnalyticsId.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
export const useGoogleAnalyticsId = () => {
|
||||
const nuxtApp = useNuxtApp()
|
||||
|
||||
// SSR에서 context에서 가져오기
|
||||
const getGAIdFromServer = () => {
|
||||
return import.meta.server
|
||||
? (nuxtApp.ssrContext?.event.context.googleAnalyticsId ?? null)
|
||||
: null
|
||||
}
|
||||
|
||||
// useState로 SSR/CSR 상태 동기화
|
||||
const gaId = useState<string | null>('googleAnalyticsId', () => {
|
||||
return getGAIdFromServer()
|
||||
})
|
||||
|
||||
return {
|
||||
gaId
|
||||
}
|
||||
}
|
||||
@@ -9,5 +9,5 @@ export default defineNuxtConfig({
|
||||
components: {
|
||||
dirs: ['components'],
|
||||
global: true,
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
41
layers/plugins/amplitude.client.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import * as amplitude from '@amplitude/analytics-browser'
|
||||
|
||||
// Nuxt 플러그인 정의
|
||||
export default defineNuxtPlugin((nuxtApp) => {
|
||||
// const { memberNo } = useAnalytics() as { memberNo: string }
|
||||
const memberNo = csrGetStoveMemberNo()
|
||||
|
||||
// Amplitude 초기화
|
||||
amplitude.init('6bfa2705264260f060e02493ecf882ad', {
|
||||
// 원하는 설정을 여기에 추가하세요
|
||||
defaultTracking: {
|
||||
attribution: false, // 기본 추적 설정: 속성 추적 비활성화
|
||||
pageViews: true, // 페이지 뷰 추적 활성화
|
||||
sessions: false, // 세션 추적 비활성화
|
||||
formInteractions: false, // 폼 상호작용 추적 비활성화
|
||||
fileDownloads: false // 파일 다운로드 추적 비활성화
|
||||
},
|
||||
autocapture: {
|
||||
attribution: true
|
||||
}
|
||||
})
|
||||
|
||||
// Identify 이벤트 생성 및 설정
|
||||
const identifyEvent = new amplitude.Identify()
|
||||
identifyEvent.set('member_no', memberNo)
|
||||
|
||||
// Identify 이벤트 전송 및 사용자 ID 설정
|
||||
amplitude.identify(identifyEvent)
|
||||
amplitude.setUserId(`${memberNo}`)
|
||||
|
||||
;(window as any).amplitude = amplitude // amplitude 객체 전역으로 설정(Stove GNB에서 사용)
|
||||
|
||||
// 페이지가 숨겨질 때 이벤트 리스너 추가
|
||||
window.addEventListener('pagehide', () => {
|
||||
amplitude.setTransport('beacon') // 전송 방식 설정
|
||||
amplitude.flush() // Amplitude 데이터 전송
|
||||
})
|
||||
|
||||
// Nuxt 앱에 amplitude 인스턴스 제공
|
||||
nuxtApp.provide('amplitude', amplitude)
|
||||
})
|
||||
42
layers/plugins/global-tracking.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import type { AnalyticsDetailType } from '../types/AnalyticsType'
|
||||
|
||||
export default defineNuxtPlugin((nuxtApp) => {
|
||||
// 공통 함수 정의
|
||||
const createEventHandler = (eventName: string, sendFunction: Function) => {
|
||||
return (el: any, binding: any) => {
|
||||
const eventHandler = (event: Event) => {
|
||||
const bindingValue = binding.value
|
||||
if (bindingValue) {
|
||||
sendFunction(bindingValue)
|
||||
}
|
||||
// 기존의 @click 핸들러 호출
|
||||
if (typeof binding.value === 'function') {
|
||||
binding.value(event)
|
||||
}
|
||||
}
|
||||
|
||||
el.addEventListener(eventName, eventHandler)
|
||||
el[`__${eventName}EventHandler__`] = eventHandler
|
||||
}
|
||||
}
|
||||
|
||||
const removeEventHandler = (eventName: string) => {
|
||||
return (el: any) => {
|
||||
if (el[`__${eventName}EventHandler__`]) {
|
||||
el.removeEventListener(eventName, el[`__${eventName}EventHandler__`])
|
||||
delete el[`__${eventName}EventHandler__`]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// analytics
|
||||
nuxtApp.vueApp.directive('analytics', {
|
||||
mounted: createEventHandler('click', (bindingValue: AnalyticsDetailType) => {
|
||||
const { sendLog } = useAnalytics()
|
||||
const i18n = nuxtApp.$i18n as { locale: { value: string } }
|
||||
|
||||
sendLog(i18n.locale.value, bindingValue)
|
||||
}),
|
||||
beforeUnmount: removeEventHandler('click')
|
||||
})
|
||||
})
|
||||
@@ -60,6 +60,13 @@ export default defineEventHandler(async event => {
|
||||
query: queryParams,
|
||||
})
|
||||
|
||||
const gaId = (response as any).value?.ga_code
|
||||
|
||||
if (gaId) {
|
||||
// 환경변수에 동적 설정
|
||||
event.context.googleAnalyticsId = gaId
|
||||
}
|
||||
|
||||
// 타입 단언을 사용하여 response의 타입 오류를 해결
|
||||
const res = response as { code?: number; value?: unknown }
|
||||
|
||||
|
||||
84
layers/types/AnalyticsType.ts
Normal file
@@ -0,0 +1,84 @@
|
||||
interface AnalyticsMetaType {
|
||||
gameId: string
|
||||
metaNo: number
|
||||
metaType?: string
|
||||
metaCode?: string
|
||||
metaValue?: number
|
||||
metaName?: string
|
||||
metaOption?: string
|
||||
metaDesc?: string
|
||||
refMetaNo?: number
|
||||
sort?: number
|
||||
status?: boolean
|
||||
}
|
||||
|
||||
interface AnalyticsType {
|
||||
analyticsNo: number
|
||||
gameId: string
|
||||
analyticsType?: AnalyticsMetaType
|
||||
analyticsVersion?: AnalyticsMetaType
|
||||
analyticsCode?: string
|
||||
analyticsName?: string
|
||||
analyticsDesc?: string
|
||||
sort?: number
|
||||
status?: boolean
|
||||
}
|
||||
|
||||
interface AnalyticsDetailType extends AnalyticsType {
|
||||
detailNo: number
|
||||
// analyticsNo in AnalyticsType
|
||||
sbNo?: string
|
||||
areaNo?: string
|
||||
event?: string
|
||||
eventCategory?: string
|
||||
actionType?: string
|
||||
areaNm?: string
|
||||
clickAreaNm?: string
|
||||
logSourceType?: string
|
||||
// View -----
|
||||
viewArea?: string
|
||||
viewType?: string
|
||||
viewInfo?: string
|
||||
// Click -----
|
||||
clickArea?: string
|
||||
clickSarea?: string
|
||||
gameNo?: string // Y/N
|
||||
langCd?: string // Y/N
|
||||
locale?: string // Y/N
|
||||
memberNo?: string // Y/N
|
||||
country?: string // Y/N
|
||||
description?: string
|
||||
clickItem?: string
|
||||
opinion?: string
|
||||
devOption?: string
|
||||
// 가공 -----
|
||||
arrViewInfo?: String[]
|
||||
mapClickItem?: Map<String, Object>
|
||||
eventLocale?: string
|
||||
// 옵션 -----
|
||||
mcode?: string
|
||||
options?: object
|
||||
}
|
||||
|
||||
// [API] Req / Res -----
|
||||
interface ReqGetAnalytics {
|
||||
baseApiUrl: string
|
||||
fileName?: string
|
||||
}
|
||||
|
||||
interface ResGetAnalytics {
|
||||
code: number
|
||||
message: string
|
||||
value?: {
|
||||
analyticsDetail?: AnalyticsDetailType
|
||||
}
|
||||
}
|
||||
|
||||
export type {
|
||||
AnalyticsType,
|
||||
AnalyticsDetailType,
|
||||
AnalyticsMetaType,
|
||||
// [API] Req / Res -----
|
||||
ReqGetAnalytics,
|
||||
ResGetAnalytics
|
||||
}
|
||||
38
layers/types/Stove81Plug.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
export interface IdentityInfo {
|
||||
app_id: string
|
||||
log_source_type: string
|
||||
country: string
|
||||
locale: string
|
||||
lang_cd: string
|
||||
member_no: string
|
||||
channeling_cd: string
|
||||
}
|
||||
|
||||
export interface ClickItem {
|
||||
game_no: string
|
||||
}
|
||||
|
||||
export interface ActionParam {
|
||||
click_area?: string
|
||||
click_sarea?: string
|
||||
click_item?: ClickItem
|
||||
view_area?: string
|
||||
view_type?: string
|
||||
view_info?: {
|
||||
game_no: string
|
||||
lang_cd: string
|
||||
}
|
||||
}
|
||||
|
||||
export interface MarketingInfo {
|
||||
marketing_code: string
|
||||
device_type: string
|
||||
media_type: string
|
||||
media_page: string
|
||||
}
|
||||
|
||||
export interface ActionInfo {
|
||||
action_type: string
|
||||
action_param: ActionParam
|
||||
marketing_info?: MarketingInfo
|
||||
}
|
||||
@@ -29,6 +29,8 @@ export default defineNuxtConfig({
|
||||
'@nuxtjs/i18n',
|
||||
'@pinia/nuxt',
|
||||
'@nuxtjs/tailwindcss',
|
||||
'nuxt-gtag',
|
||||
'@nuxtjs/device',
|
||||
],
|
||||
imports: {
|
||||
dirs: [
|
||||
|
||||
@@ -19,12 +19,16 @@
|
||||
"check": "pnpm typecheck && pnpm lint && pnpm format:check"
|
||||
},
|
||||
"dependencies": {
|
||||
"@amplitude/analytics-browser": "^2.24.0",
|
||||
"@amplitude/analytics-node": "^1.5.9",
|
||||
"@nuxtjs/device": "^3.2.4",
|
||||
"@nuxtjs/i18n": "^10.0.6",
|
||||
"@pinia/nuxt": "^0.6.1",
|
||||
"@vueuse/core": "^13.6.0",
|
||||
"@vueuse/nuxt": "^13.6.0",
|
||||
"h3": "^1.15.4",
|
||||
"nuxt": "^4.0.3",
|
||||
"nuxt-gtag": "^4.0.0",
|
||||
"pinia": "^2.3.1",
|
||||
"vue": "^3.5.0",
|
||||
"vue-dompurify-html": "^5.3.0"
|
||||
|
||||
165
pnpm-lock.yaml
generated
@@ -8,6 +8,15 @@ importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
'@amplitude/analytics-browser':
|
||||
specifier: ^2.24.0
|
||||
version: 2.24.0
|
||||
'@amplitude/analytics-node':
|
||||
specifier: ^1.5.9
|
||||
version: 1.5.9
|
||||
'@nuxtjs/device':
|
||||
specifier: ^3.2.4
|
||||
version: 3.2.4
|
||||
'@nuxtjs/i18n':
|
||||
specifier: ^10.0.6
|
||||
version: 10.0.6(@vue/compiler-dom@3.5.21)(db0@0.3.2)(eslint@9.35.0(jiti@2.5.1))(ioredis@5.7.0)(magicast@0.3.5)(rollup@4.50.0)(vue@3.5.21(typescript@5.9.2))
|
||||
@@ -26,6 +35,9 @@ importers:
|
||||
nuxt:
|
||||
specifier: ^4.0.3
|
||||
version: 4.1.1(@parcel/watcher@2.5.1)(@types/node@24.3.1)(@vue/compiler-sfc@3.5.21)(db0@0.3.2)(eslint@9.35.0(jiti@2.5.1))(ioredis@5.7.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.50.0)(terser@5.44.0)(typescript@5.9.2)(vite@7.1.4(@types/node@24.3.1)(jiti@2.5.1)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.0.7(typescript@5.9.2))(yaml@2.8.1)
|
||||
nuxt-gtag:
|
||||
specifier: ^4.0.0
|
||||
version: 4.0.0(magicast@0.3.5)
|
||||
pinia:
|
||||
specifier: ^2.3.1
|
||||
version: 2.3.1(typescript@5.9.2)(vue@3.5.21(typescript@5.9.2))
|
||||
@@ -97,6 +109,48 @@ packages:
|
||||
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
'@amplitude/analytics-browser@2.24.0':
|
||||
resolution: {integrity: sha512-tlr5V3WjIf+Lv9AMVPs5OBbDo6n9VWz2sKXap86jYlKgnZz6++AEYHVw88rC9i+OdXeqMOvhxgIK6hT2N/1M2A==}
|
||||
|
||||
'@amplitude/analytics-client-common@2.3.41':
|
||||
resolution: {integrity: sha512-yIzPSsf0DZQEU9TAR2ugfNtWRhuoGi+554qBBH/H3AzY/2TI3peuXmnmah8/cK/HdHg4dyln08/scRGL83Z8lg==}
|
||||
|
||||
'@amplitude/analytics-connector@1.6.4':
|
||||
resolution: {integrity: sha512-SpIv0IQMNIq6SH3UqFGiaZyGSc7PBZwRdq7lvP0pBxW8i4Ny+8zwI0pV+VMfMHQwWY3wdIbWw5WQphNjpdq1/Q==}
|
||||
|
||||
'@amplitude/analytics-core@1.2.8':
|
||||
resolution: {integrity: sha512-Krxpr5uvS3HmmjvpYqPfbMbs2kcZZu09L+6KwQnPiofWRzoXWIM217fRfy6aSD/QrAoPGbZjvtVitw9cB7Cx+A==}
|
||||
|
||||
'@amplitude/analytics-core@2.24.0':
|
||||
resolution: {integrity: sha512-hYjVIme2tpW+dgDVVAbgrpjTosgrAg2m3M5/kgXEObnitw36BPnwKL6d8EyJPsx5O+bRal5E0txIsu39I4LM2w==}
|
||||
|
||||
'@amplitude/analytics-node@1.5.9':
|
||||
resolution: {integrity: sha512-BTB7zrUOGhM8NRCYFdNas+9eIJtMitK0KZ55N+qnSc2HbiJBvGjx/pfnAdSeHpbts6jQ8075YIuCEIQw077RJA==}
|
||||
|
||||
'@amplitude/analytics-remote-config@0.4.1':
|
||||
resolution: {integrity: sha512-BYl6kQ9qjztrCACsugpxO+foLaQIC0aSEzoXEAb/gwOzInmqkyyI+Ub+aWTBih4xgB/lhWlOcidWHAmNiTJTNw==}
|
||||
|
||||
'@amplitude/analytics-remote-config@0.6.3':
|
||||
resolution: {integrity: sha512-icE0ogCzdHAtQi9jiOFQUmKrvWQc5YEO6bLZUfQXCT/yTTNXppWnT1zHMKzXa3SMDosfrLwU/X8sro1PTI+jZQ==}
|
||||
|
||||
'@amplitude/analytics-types@1.4.0':
|
||||
resolution: {integrity: sha512-RiMPHBqdrJ8ktTqG+Wzj2htnN/PCG9jGZG0SXtTFnWwVvcAJYbYm55/nrP1TTyrx1OlLhvF2VG3lVUP/xGAU8w==}
|
||||
|
||||
'@amplitude/analytics-types@2.10.0':
|
||||
resolution: {integrity: sha512-WP8eEbJh10MmFVnxkHjg92i5DBxBFsRvSZxjDQPXEGL8ZP+i7rSsleiH2K3VrwoKksYfZ/1eAqrZvevAmjSlig==}
|
||||
|
||||
'@amplitude/plugin-autocapture-browser@1.12.2':
|
||||
resolution: {integrity: sha512-Rs/GyQv8OsllNb1EzFvHYtys+2INkMEuy9aSMfJjN+/Hke87en9tVSTi+lQLe1aTCz5y+4fZ5V1+GOG65Xh5CA==}
|
||||
|
||||
'@amplitude/plugin-network-capture-browser@1.6.0':
|
||||
resolution: {integrity: sha512-KlnRkhchrbDMIEG+P+IuWg6c985rp2IbODVCrzNzHaX/DIN/N+xhPOh+ZZYoSKUsD2q70z6471A84lvB8CmZ3A==}
|
||||
|
||||
'@amplitude/plugin-page-view-tracking-browser@2.3.47':
|
||||
resolution: {integrity: sha512-rJSNt8DZUb0L6wKp6IHVur6qad4WreR7OnLnOdCou3Tv30F6x7KXQbW+pBJmuXDZkInkibeG7tAExRaXW80JUA==}
|
||||
|
||||
'@amplitude/plugin-web-vitals-browser@0.1.0-frustrationanalytics.0':
|
||||
resolution: {integrity: sha512-xv4sje6/D8r+SgNFTA22FJ5PhtdhN+VSydvs63Frll+qWlyQwaZ1IgDbPyqjzryEkldHRPD7GUaQual+geoIYg==}
|
||||
|
||||
'@antfu/install-pkg@1.1.0':
|
||||
resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==}
|
||||
|
||||
@@ -666,6 +720,9 @@ packages:
|
||||
peerDependencies:
|
||||
vue: ^3.3.4
|
||||
|
||||
'@nuxtjs/device@3.2.4':
|
||||
resolution: {integrity: sha512-jIvN6QeodBNrUrL/1FCHk4bebsiLsGHlJd8c/m2ksLrGY4IZ0npA8IYhDTdYV92epGxoe8+3iZOzCjav+6TshQ==}
|
||||
|
||||
'@nuxtjs/i18n@10.0.6':
|
||||
resolution: {integrity: sha512-SQqJP6NDlmaoLzs7A74cx0Q3W4Vc+JSBlu3AN0q9+Q07Nvba5osab99GJEQ+PGnjaRwBFh35braUA2hRz9bdSA==}
|
||||
engines: {node: '>=20.11.1'}
|
||||
@@ -3378,6 +3435,9 @@ packages:
|
||||
nuxt-define@1.0.0:
|
||||
resolution: {integrity: sha512-CYZ2WjU+KCyCDVzjYUM4eEpMF0rkPmkpiFrybTqqQCRpUbPt2h3snswWIpFPXTi+osRCY6Og0W/XLAQgDL4FfQ==}
|
||||
|
||||
nuxt-gtag@4.0.0:
|
||||
resolution: {integrity: sha512-7Mz8d3Cbrp2WsskJmzTsxO5lYpX7oVLsmsMQPInM+r0/8aGM1LnDnQYdFtTO+j7fsVhMuCa+XZyNrH43EKNfHA==}
|
||||
|
||||
nuxt@4.1.1:
|
||||
resolution: {integrity: sha512-xLDbWgz3ggAfUjcbmTzmLLPWOEB61thnjnqyasZlYyh/Ty2EDT1qvOiM9HT+9ycBxElI2DmyYewY8WOPRxWMiQ==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
@@ -3964,6 +4024,9 @@ packages:
|
||||
run-parallel@1.2.0:
|
||||
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
|
||||
|
||||
rxjs@7.8.2:
|
||||
resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
|
||||
|
||||
safe-buffer@5.1.2:
|
||||
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
|
||||
|
||||
@@ -4618,6 +4681,9 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
web-vitals@5.1.0:
|
||||
resolution: {integrity: sha512-ArI3kx5jI0atlTtmV0fWU3fjpLmq/nD3Zr1iFFlJLaqa5wLBkUSzINwBPySCX/8jRyjlmy1Volw1kz1g9XE4Jg==}
|
||||
|
||||
webidl-conversions@3.0.1:
|
||||
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
|
||||
|
||||
@@ -4726,6 +4792,83 @@ snapshots:
|
||||
|
||||
'@alloc/quick-lru@5.2.0': {}
|
||||
|
||||
'@amplitude/analytics-browser@2.24.0':
|
||||
dependencies:
|
||||
'@amplitude/analytics-core': 2.24.0
|
||||
'@amplitude/analytics-remote-config': 0.4.1
|
||||
'@amplitude/plugin-autocapture-browser': 1.12.2
|
||||
'@amplitude/plugin-network-capture-browser': 1.6.0
|
||||
'@amplitude/plugin-page-view-tracking-browser': 2.3.47
|
||||
'@amplitude/plugin-web-vitals-browser': 0.1.0-frustrationanalytics.0
|
||||
tslib: 2.8.1
|
||||
|
||||
'@amplitude/analytics-client-common@2.3.41':
|
||||
dependencies:
|
||||
'@amplitude/analytics-connector': 1.6.4
|
||||
'@amplitude/analytics-core': 2.24.0
|
||||
'@amplitude/analytics-types': 2.10.0
|
||||
tslib: 2.8.1
|
||||
|
||||
'@amplitude/analytics-connector@1.6.4': {}
|
||||
|
||||
'@amplitude/analytics-core@1.2.8':
|
||||
dependencies:
|
||||
'@amplitude/analytics-types': 1.4.0
|
||||
tslib: 2.8.1
|
||||
|
||||
'@amplitude/analytics-core@2.24.0':
|
||||
dependencies:
|
||||
'@amplitude/analytics-connector': 1.6.4
|
||||
tslib: 2.8.1
|
||||
|
||||
'@amplitude/analytics-node@1.5.9':
|
||||
dependencies:
|
||||
'@amplitude/analytics-core': 2.24.0
|
||||
tslib: 2.8.1
|
||||
|
||||
'@amplitude/analytics-remote-config@0.4.1':
|
||||
dependencies:
|
||||
'@amplitude/analytics-client-common': 2.3.41
|
||||
'@amplitude/analytics-core': 2.24.0
|
||||
'@amplitude/analytics-types': 2.10.0
|
||||
tslib: 2.8.1
|
||||
|
||||
'@amplitude/analytics-remote-config@0.6.3':
|
||||
dependencies:
|
||||
'@amplitude/analytics-core': 1.2.8
|
||||
'@amplitude/analytics-types': 1.4.0
|
||||
tslib: 2.8.1
|
||||
|
||||
'@amplitude/analytics-types@1.4.0': {}
|
||||
|
||||
'@amplitude/analytics-types@2.10.0': {}
|
||||
|
||||
'@amplitude/plugin-autocapture-browser@1.12.2':
|
||||
dependencies:
|
||||
'@amplitude/analytics-core': 2.24.0
|
||||
'@amplitude/analytics-remote-config': 0.6.3
|
||||
rxjs: 7.8.2
|
||||
tslib: 2.8.1
|
||||
|
||||
'@amplitude/plugin-network-capture-browser@1.6.0':
|
||||
dependencies:
|
||||
'@amplitude/analytics-core': 2.24.0
|
||||
rxjs: 7.8.2
|
||||
tslib: 2.8.1
|
||||
|
||||
'@amplitude/plugin-page-view-tracking-browser@2.3.47':
|
||||
dependencies:
|
||||
'@amplitude/analytics-client-common': 2.3.41
|
||||
'@amplitude/analytics-types': 2.10.0
|
||||
tslib: 2.8.1
|
||||
|
||||
'@amplitude/plugin-web-vitals-browser@0.1.0-frustrationanalytics.0':
|
||||
dependencies:
|
||||
'@amplitude/analytics-core': 2.24.0
|
||||
rxjs: 7.8.2
|
||||
tslib: 2.8.1
|
||||
web-vitals: 5.1.0
|
||||
|
||||
'@antfu/install-pkg@1.1.0':
|
||||
dependencies:
|
||||
package-manager-detector: 1.3.0
|
||||
@@ -5529,6 +5672,10 @@ snapshots:
|
||||
- vue-tsc
|
||||
- yaml
|
||||
|
||||
'@nuxtjs/device@3.2.4':
|
||||
dependencies:
|
||||
defu: 6.1.4
|
||||
|
||||
'@nuxtjs/i18n@10.0.6(@vue/compiler-dom@3.5.21)(db0@0.3.2)(eslint@9.35.0(jiti@2.5.1))(ioredis@5.7.0)(magicast@0.3.5)(rollup@4.50.0)(vue@3.5.21(typescript@5.9.2))':
|
||||
dependencies:
|
||||
'@intlify/core': 11.1.12
|
||||
@@ -8223,6 +8370,15 @@ snapshots:
|
||||
|
||||
nuxt-define@1.0.0: {}
|
||||
|
||||
nuxt-gtag@4.0.0(magicast@0.3.5):
|
||||
dependencies:
|
||||
'@nuxt/kit': 4.1.1(magicast@0.3.5)
|
||||
defu: 6.1.4
|
||||
pathe: 2.0.3
|
||||
ufo: 1.6.1
|
||||
transitivePeerDependencies:
|
||||
- magicast
|
||||
|
||||
nuxt@4.1.1(@parcel/watcher@2.5.1)(@types/node@24.3.1)(@vue/compiler-sfc@3.5.21)(db0@0.3.2)(eslint@9.35.0(jiti@2.5.1))(ioredis@5.7.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.50.0)(terser@5.44.0)(typescript@5.9.2)(vite@7.1.4(@types/node@24.3.1)(jiti@2.5.1)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.0.7(typescript@5.9.2))(yaml@2.8.1):
|
||||
dependencies:
|
||||
'@nuxt/cli': 3.28.0(magicast@0.3.5)
|
||||
@@ -8980,6 +9136,10 @@ snapshots:
|
||||
dependencies:
|
||||
queue-microtask: 1.2.3
|
||||
|
||||
rxjs@7.8.2:
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
|
||||
safe-buffer@5.1.2: {}
|
||||
|
||||
safe-buffer@5.2.1: {}
|
||||
@@ -9303,8 +9463,7 @@ snapshots:
|
||||
|
||||
ts-interface-checker@0.1.13: {}
|
||||
|
||||
tslib@2.8.1:
|
||||
optional: true
|
||||
tslib@2.8.1: {}
|
||||
|
||||
tsscmp@1.0.6: {}
|
||||
|
||||
@@ -9688,6 +9847,8 @@ snapshots:
|
||||
optionalDependencies:
|
||||
typescript: 5.9.2
|
||||
|
||||
web-vitals@5.1.0: {}
|
||||
|
||||
webidl-conversions@3.0.1: {}
|
||||
|
||||
webpack-virtual-modules@0.6.2: {}
|
||||
|
||||
|
Before Width: | Height: | Size: 415 KiB After Width: | Height: | Size: 415 KiB |
|
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB |
BIN
public/images/GR_DETAIL_01/common/bg02.jpg
Normal file
|
After Width: | Height: | Size: 415 KiB |
|
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB |
BIN
public/images/GR_DETAIL_01/common/bg03.jpg
Normal file
|
After Width: | Height: | Size: 415 KiB |
|
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB |
BIN
public/images/GR_DETAIL_01/common/bgVideo02.mp4
Normal file
BIN
public/images/GR_DETAIL_02/common/bg01.jpg
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
BIN
public/images/GR_DETAIL_02/common/bg01_m.jpg
Normal file
|
After Width: | Height: | Size: 870 KiB |
BIN
public/images/GR_DETAIL_02/common/bg01_thumb.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
public/images/GR_DETAIL_02/common/bg02.jpg
Normal file
|
After Width: | Height: | Size: 415 KiB |
BIN
public/images/GR_DETAIL_02/common/bg02_m.jpg
Normal file
|
After Width: | Height: | Size: 870 KiB |
BIN
public/images/GR_DETAIL_02/common/bg02_thumb.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
public/images/GR_DETAIL_02/common/bg03.jpg
Normal file
|
After Width: | Height: | Size: 415 KiB |
BIN
public/images/GR_DETAIL_02/common/bg03_m.jpg
Normal file
|
After Width: | Height: | Size: 870 KiB |
BIN
public/images/GR_DETAIL_02/common/bg03_thumb.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
public/images/GR_DETAIL_02/common/bgVideo01.mp4
Normal file
BIN
public/images/GR_DETAIL_02/common/bgVideo02.mp4
Normal file
BIN
public/images/GR_DETAIL_03/common/bg01.jpg
Normal file
|
After Width: | Height: | Size: 2.1 MiB |
BIN
public/images/GR_DETAIL_03/common/bg01_m.jpg
Normal file
|
After Width: | Height: | Size: 994 KiB |
BIN
public/images/GR_DETAIL_03/common/bg01_thumb.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/GR_DETAIL_03/common/bg02.jpg
Normal file
|
After Width: | Height: | Size: 415 KiB |
BIN
public/images/GR_DETAIL_03/common/bg02_m.jpg
Normal file
|
After Width: | Height: | Size: 870 KiB |
BIN
public/images/GR_DETAIL_03/common/bg02_thumb.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/GR_DETAIL_03/common/bg03.jpg
Normal file
|
After Width: | Height: | Size: 415 KiB |
BIN
public/images/GR_DETAIL_03/common/bg03_m.jpg
Normal file
|
After Width: | Height: | Size: 870 KiB |
BIN
public/images/GR_DETAIL_03/common/bg03_thumb.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/GR_DETAIL_03/common/bgVideo01.mp4
Normal file
BIN
public/images/GR_DETAIL_03/common/bgVideo02.mp4
Normal file
BIN
public/images/GR_GALLERY_01/ko/img_slide01.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
public/images/GR_GALLERY_01/ko/img_slide02.png
Normal file
|
After Width: | Height: | Size: 772 KiB |
BIN
public/images/GR_GALLERY_01/ko/img_slide03.png
Normal file
|
After Width: | Height: | Size: 176 KiB |
BIN
public/images/GR_GALLERY_01/zh-tw/img_slide01.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
public/images/GR_GALLERY_01/zh-tw/img_slide02.png
Normal file
|
After Width: | Height: | Size: 772 KiB |
BIN
public/images/GR_GALLERY_01/zh-tw/img_slide03.png
Normal file
|
After Width: | Height: | Size: 176 KiB |
BIN
public/images/GR_GALLERY_02/common/bg01.jpg
Normal file
|
After Width: | Height: | Size: 415 KiB |
|
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB |
BIN
public/images/GR_GALLERY_02/common/bgVideo01.mp4
Normal file
BIN
public/images/GR_GALLERY_02/ko/img_slide01.png
Normal file
|
After Width: | Height: | Size: 458 KiB |
BIN
public/images/GR_GALLERY_02/ko/img_slide02.png
Normal file
|
After Width: | Height: | Size: 458 KiB |
BIN
public/images/GR_GALLERY_02/ko/img_slide03.png
Normal file
|
After Width: | Height: | Size: 458 KiB |
BIN
public/images/GR_GALLERY_02/zh-tw/img_slide01.png
Normal file
|
After Width: | Height: | Size: 458 KiB |
BIN
public/images/GR_GALLERY_02/zh-tw/img_slide02.png
Normal file
|
After Width: | Height: | Size: 458 KiB |
BIN
public/images/GR_GALLERY_02/zh-tw/img_slide03.png
Normal file
|
After Width: | Height: | Size: 458 KiB |
BIN
public/images/GR_GALLERY_03/common/bg01.jpg
Normal file
|
After Width: | Height: | Size: 415 KiB |
BIN
public/images/GR_GALLERY_03/common/bg01_m.jpg
Normal file
|
After Width: | Height: | Size: 171 KiB |
BIN
public/images/GR_GALLERY_03/common/bgVideo01.mp4
Normal file
BIN
public/images/GR_GALLERY_03/ko/img_slide01.png
Normal file
|
After Width: | Height: | Size: 702 KiB |
BIN
public/images/GR_GALLERY_03/ko/img_slide02.png
Normal file
|
After Width: | Height: | Size: 702 KiB |
BIN
public/images/GR_GALLERY_03/ko/img_slide03.png
Normal file
|
After Width: | Height: | Size: 702 KiB |
BIN
public/images/GR_GALLERY_03/zh-tw/img_slide01.png
Normal file
|
After Width: | Height: | Size: 702 KiB |
BIN
public/images/GR_GALLERY_03/zh-tw/img_slide02.png
Normal file
|
After Width: | Height: | Size: 702 KiB |
BIN
public/images/GR_GALLERY_03/zh-tw/img_slide03.png
Normal file
|
After Width: | Height: | Size: 702 KiB |
|
Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 794 KiB |
|
Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 773 KiB |
|
Before Width: | Height: | Size: 415 KiB After Width: | Height: | Size: 1.5 MiB |
19
public/images/common/btn_logo-apple.svg
Normal file
@@ -0,0 +1,19 @@
|
||||
<svg width="126" height="40" viewBox="0 0 126 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_4430_8893)">
|
||||
<path d="M22.0265 8.77515C22.9737 7.57867 23.6003 5.90666 23.4254 4.25C22.0702 4.31136 20.4381 5.20105 19.4618 6.39753C18.5874 7.45595 17.8297 9.15864 18.0337 10.7846C19.5346 10.9073 21.0793 9.97163 22.0265 8.77515Z" fill="white"/>
|
||||
<path d="M24.1784 11.3853L23.8464 11.3574C22.5604 11.2572 21.3837 11.6296 20.3897 12.0069L19.3814 12.3981C18.917 12.5722 18.5149 12.6972 18.1869 12.6972C17.8232 12.6972 17.3973 12.5679 16.9256 12.3916L15.7142 11.9204C14.9662 11.6419 14.1546 11.4003 13.3246 11.4212C10.8217 11.4531 8.526 12.8727 7.23469 15.1216C4.63612 19.6354 6.56512 26.3024 9.09991 29.9708L9.53965 30.5946L9.84388 31.0098L10.1578 31.4174C11.1678 32.689 12.3337 33.7497 13.755 33.703C14.523 33.6702 15.0938 33.4589 15.6575 33.2216L16.1434 33.0155C16.8008 32.7416 17.5202 32.4909 18.5855 32.4909C19.511 32.4909 20.1636 32.6964 20.7491 32.9348L21.4811 33.246C22.0469 33.481 22.6338 33.6749 23.4478 33.6552C25.1351 33.6284 26.305 32.3637 27.3637 30.8914L27.6635 30.466L28.1083 29.8128C28.254 29.5914 28.3903 29.3714 28.5175 29.1552L28.76 28.7285C28.7984 28.6584 28.8359 28.5889 28.8723 28.5201L29.0796 28.1159C29.1123 28.0501 29.144 27.9851 29.1747 27.921L29.3482 27.5483L29.4998 27.2015L29.6302 26.8848L29.7873 26.4749L29.9 26.155L30 25.8398L29.8843 25.7918L29.5934 25.6516L29.2859 25.4809L29.0483 25.3338L28.7907 25.1589C27.6392 24.3393 26.0767 22.7067 26.0464 19.8746C26.0241 17.2734 27.512 15.6173 28.4644 14.8256L28.6993 14.6386C28.736 14.6106 28.7714 14.5843 28.8052 14.5597L29.0641 14.3809L29.2348 14.2763C28.0657 12.5643 26.4786 11.8661 25.2717 11.5719L24.9218 11.4951L24.5996 11.439L24.3097 11.3998C24.2644 11.3944 24.2206 11.3896 24.1784 11.3853Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M62.758 5.31069C63.9193 5.31077 64.889 5.76947 65.6646 6.68764C66.4422 7.60687 66.8302 8.81546 66.8303 10.3142C66.8303 11.9884 66.3775 13.312 65.4728 14.2835C64.6624 15.1483 63.6556 15.5805 62.4544 15.5806C61.1575 15.5806 60.2252 15.1148 59.6578 14.1832H59.617V19.3696H57.4295V8.75352C57.4295 7.70107 57.4021 6.62093 57.3487 5.51311H59.2726L59.3942 7.07294H59.4359C60.1654 5.89745 61.2725 5.31069 62.758 5.31069ZM62.0487 7.05164C61.509 7.05166 61.0183 7.23275 60.5803 7.58875C60.1414 7.94774 59.8544 8.41637 59.72 8.99677C59.6523 9.26741 59.618 9.48915 59.6179 9.6635V11.3059C59.618 12.0219 59.8376 12.6262 60.2766 13.1196C60.7158 13.6131 61.2865 13.8592 61.9883 13.8592C62.812 13.8591 63.4535 13.5414 63.9121 12.9075C64.3717 12.2724 64.601 11.4345 64.601 10.3941C64.601 9.43608 64.3858 8.64631 63.9529 8.02465C63.48 7.37623 62.8448 7.05164 62.0487 7.05164Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M74.0826 5.31069C75.2428 5.31076 76.2124 5.76946 76.9901 6.68764C77.7646 7.60686 78.153 8.81544 78.1531 10.3142C78.1531 11.9886 77.7007 13.3128 76.7947 14.2844C75.9853 15.1491 74.9785 15.5806 73.7772 15.5806C72.4805 15.5805 71.5487 15.1147 70.9824 14.1832H70.9416V19.3696H68.7541V8.75441C68.7541 7.7018 68.7266 6.62111 68.6733 5.51311H70.5971L70.7188 7.07383H70.7605C71.4889 5.89806 72.5959 5.31069 74.0826 5.31069ZM73.3723 7.05164C72.8316 7.05164 72.3422 7.23273 71.9031 7.58875C71.4641 7.94773 71.1781 8.41635 71.0437 8.99677C70.977 9.26763 70.9416 9.48997 70.9416 9.66438V11.3059C70.9416 12.0219 71.1615 12.6262 71.5985 13.1196C72.0377 13.612 72.6082 13.8592 73.312 13.8592C74.1357 13.8591 74.7772 13.5414 75.2358 12.9075C75.6954 12.2724 75.9247 11.4345 75.9247 10.3941C75.9247 9.43616 75.7086 8.64627 75.2757 8.02465C74.8028 7.37624 74.1695 7.05164 73.3723 7.05164Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M104.183 5.31247C105.627 5.31254 106.789 5.79161 107.667 6.75068C108.506 7.68122 108.925 8.88284 108.925 10.3551C108.925 11.8684 108.491 13.1113 107.627 14.0829C106.722 15.083 105.519 15.5815 104.02 15.5815C102.576 15.5815 101.426 15.1024 100.568 14.1441C99.7102 13.1859 99.2815 11.9763 99.2814 10.5184C99.2814 8.9928 99.7224 7.7427 100.608 6.7711C101.491 5.7985 102.684 5.31247 104.183 5.31247ZM104.105 6.91225C103.226 6.91225 102.557 7.30463 102.098 8.08946C101.705 8.73991 101.512 9.53127 101.512 10.4669C101.512 11.3747 101.706 12.1535 102.098 12.8018C102.571 13.5877 103.233 13.9799 104.085 13.9799C104.92 13.9799 105.576 13.5796 106.049 12.7814C106.452 12.1197 106.655 11.3329 106.655 10.4261C106.655 9.51811 106.461 8.7389 106.069 8.08946C105.61 7.30371 104.954 6.91231 104.105 6.91225Z" fill="white"/>
|
||||
<path d="M87.1898 1.50476C88.4321 1.50476 89.4644 1.72103 90.2882 2.15284L89.7413 3.9364C88.9719 3.51789 88.1021 3.30875 87.1286 3.30874C86.3591 3.30874 85.7581 3.49854 85.3272 3.87603C84.9631 4.21351 84.7804 4.62461 84.7804 5.11183C84.7804 5.65149 84.9885 6.09794 85.4071 6.44883C85.7714 6.77301 86.4329 7.12408 87.3931 7.50263C88.5678 7.97558 89.4304 8.52878 89.9854 9.16279C90.5384 9.79479 90.8146 10.5857 90.8146 11.5296C90.8146 12.691 90.4114 13.6357 89.6019 14.3652C88.7124 15.1624 87.4742 15.561 85.883 15.561C84.4139 15.561 83.2358 15.2778 82.3443 14.7105L82.8512 12.887C83.8115 13.4677 84.8655 13.7588 86.0135 13.7588C86.8372 13.7588 87.4785 13.5726 87.9391 13.2013C88.3977 12.8299 88.6262 12.3307 88.6262 11.709C88.6262 11.155 88.4375 10.6883 88.0589 10.3098C87.6824 9.93122 87.0533 9.57946 86.1751 9.25423C83.7847 8.36269 82.5903 7.05644 82.5902 5.3391C82.5902 4.21668 83.0091 3.296 83.8473 2.57987C84.6824 1.86276 85.7966 1.50479 87.1898 1.50476Z" fill="white"/>
|
||||
<path d="M95.6353 5.51044H98.0465V7.15373H95.6353V11.9344C95.6354 13.1499 96.0605 13.7571 96.9119 13.7571C97.3026 13.757 97.6268 13.7235 97.8832 13.6559L97.9435 15.3169C97.5126 15.4779 96.9452 15.5584 96.2425 15.5584C95.3789 15.5584 94.7039 15.2952 94.2166 14.7691C93.7313 14.2418 93.4869 13.3571 93.4869 12.1147V7.15196H92.0504V5.51044H93.4869V3.70735L95.6353 3.05927V5.51044Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M121.727 5.29294C123.146 5.29296 124.22 5.81967 124.95 6.8723C125.527 7.70842 125.818 8.74273 125.818 9.97067C125.818 10.3624 125.792 10.6926 125.737 10.9623H119.176C119.201 11.9348 119.518 12.6786 120.127 13.1916C120.68 13.6502 121.396 13.8805 122.274 13.8805C123.246 13.8805 124.132 13.7252 124.93 13.4144L125.272 14.9334C124.341 15.3397 123.241 15.5415 121.971 15.5415C120.445 15.5415 119.246 15.0924 118.374 14.1947C117.504 13.297 117.068 12.0911 117.068 10.5788C117.068 9.09424 117.474 7.85826 118.285 6.8723C119.135 5.81965 120.283 5.29294 121.727 5.29294ZM121.564 6.80927C120.849 6.8093 120.267 7.10571 119.823 7.70061C119.459 8.17349 119.243 8.74104 119.176 9.4016L123.732 9.40338C123.746 8.75496 123.604 8.194 123.308 7.72102C122.929 7.11271 122.347 6.80927 121.564 6.80927Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M55.527 15.3595H53.1966L51.9208 11.3485H47.4846L46.2683 15.3595H44L48.3954 1.7054H51.1103L55.527 15.3595ZM49.6525 3.52891C49.5181 4.10961 49.301 4.9673 49.0036 6.10082L47.8699 9.66616H51.5355L50.3814 6.10082C50.2593 5.73663 50.0308 4.87886 49.6934 3.52891H49.6525Z" fill="white"/>
|
||||
<path d="M115.488 5.31069C115.69 5.31069 115.873 5.32501 116.035 5.35064V7.43693C115.818 7.39695 115.588 7.3757 115.346 7.37568C114.576 7.37568 113.981 7.66664 113.562 8.24837C113.198 8.76133 113.015 9.4099 113.015 10.1926V15.3577H110.829L110.849 8.61325C110.849 7.47861 110.822 6.44552 110.768 5.51399H112.673L112.753 7.39787H112.813C113.044 6.75055 113.408 6.22892 113.907 5.83804C114.394 5.48616 114.921 5.31073 115.488 5.31069Z" fill="white"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_4430_8893">
|
||||
<rect width="126" height="40" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.5 KiB |
19
public/images/common/btn_logo-google.svg
Normal file
@@ -0,0 +1,19 @@
|
||||
<svg width="146" height="40" viewBox="0 0 146 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_4430_8891)">
|
||||
<g clip-path="url(#clip1_4430_8891)">
|
||||
<path d="M17.7529 19.34L5.04785 32.6225C5.46035 34.025 6.78035 35.0975 8.34785 35.0975C9.00785 35.0975 9.58535 34.9325 10.0804 34.6025L24.4354 26.435L17.7529 19.34Z" fill="#EA4335"/>
|
||||
<path d="M30.6224 17.0299L24.4349 13.4824L17.5049 19.5874L24.5174 26.4349L30.7049 22.9699C31.7774 22.3924 32.5199 21.2374 32.5199 19.9999C32.4374 18.7624 31.6949 17.6074 30.6224 17.0299Z" fill="#FBBC04"/>
|
||||
<path d="M5.04734 7.37756C4.96484 7.62506 4.96484 7.95506 4.96484 8.28506V31.7976C4.96484 32.1276 4.96484 32.3751 5.04734 32.7051L18.2473 19.7526L5.04734 7.37756Z" fill="#4285F4"/>
|
||||
<path d="M17.8354 20L24.4354 13.4825L10.1629 5.39747C9.66785 5.06747 9.00785 4.90247 8.34785 4.90247C6.78035 4.90247 5.37785 5.97497 5.04785 7.37747L17.8354 20Z" fill="#34A853"/>
|
||||
</g>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M44.0034 7.7563C44.0034 3.48096 47.7006 0 52.0994 0C54.5313 0 56.2616 0.928146 57.5673 2.13686L56.03 3.63103C55.0969 2.77955 53.8314 2.11891 52.0978 2.11891C48.8855 2.11891 46.3748 4.63257 46.3748 7.75467C46.3748 10.8768 48.8855 13.3937 52.0961 13.3937C54.1789 13.3937 55.3637 12.5814 56.124 11.8408C56.7466 11.2356 57.1545 10.3662 57.3122 9.1738H52.0994V7.05978H59.437C59.5142 7.43822 59.5544 7.89169 59.5544 8.38268C59.5544 9.96982 59.1063 11.9387 57.6647 13.3399C56.2616 14.759 54.4726 15.5159 52.0978 15.5159C47.6973 15.5159 44 12.0382 44 7.75956L44.0034 7.7563ZM65.4855 5.52483C62.6442 5.52483 60.3248 7.6258 60.3248 10.5179C60.3248 13.3953 62.6425 15.511 65.4855 15.511C68.3286 15.511 70.6429 13.3921 70.6429 10.5163C70.6429 7.62417 68.3269 5.5232 65.4855 5.52483ZM65.4855 13.547C63.9297 13.547 62.5854 12.2992 62.5854 10.5195C62.5854 8.72196 63.9281 7.49205 65.4855 7.49205C67.0413 7.49205 68.3839 8.72033 68.3839 10.5195C68.3839 12.2975 67.043 13.547 65.4855 13.547ZM76.7385 5.52483C73.8971 5.52483 71.5811 7.6258 71.5811 10.5179C71.5811 13.3953 73.8971 15.511 76.7385 15.511C79.5798 15.511 81.8959 13.3921 81.8959 10.5163C81.8959 7.62417 79.5815 5.5232 76.7385 5.52483ZM76.7385 13.547C75.1827 13.547 73.8384 12.2992 73.8384 10.5195C73.8384 8.72196 75.181 7.49205 76.7385 7.49205C78.2943 7.49205 79.6386 8.72033 79.6386 10.5195C79.6386 12.2975 78.2943 13.547 76.7385 13.547ZM90.5492 5.82824V6.64057H90.472C89.9668 6.05171 88.9934 5.5232 87.7682 5.5232C85.1988 5.5232 82.8408 7.71878 82.8408 10.5391C82.8408 13.3366 85.1971 15.5142 87.7682 15.5142C88.9934 15.5142 89.9668 14.9857 90.472 14.3806H90.5492V15.0983C90.5492 17.0084 89.4986 18.0312 87.8052 18.0312C86.4222 18.0312 85.5663 17.0655 85.2155 16.2548L83.2486 17.0492C83.8125 18.3721 85.3129 20 87.8035 20C90.4485 20 92.6873 18.4846 92.6873 14.7965V5.8266L90.5492 5.82824ZM87.9612 13.547C86.4055 13.547 85.0981 12.278 85.0981 10.5391C85.0981 8.78069 86.4038 7.49368 87.9612 7.49368C89.4986 7.49368 90.7052 8.77906 90.7052 10.5391C90.7069 12.278 89.5002 13.547 87.9612 13.547ZM94.2465 0.530136H96.5054V15.2108H94.2465V0.530136ZM102.697 13.547C101.549 13.547 100.73 13.0348 100.208 12.0349L107.079 9.27004L106.842 8.70239C106.416 7.58829 105.11 5.52483 102.443 5.52483C99.7966 5.52483 97.5963 7.54914 97.5963 10.5195C97.5963 13.317 99.7764 15.5126 102.697 15.5126C105.053 15.5126 106.416 14.1147 106.98 13.2991L105.228 12.1654C104.642 12.9989 103.843 13.5486 102.697 13.547ZM102.52 7.45453C103.415 7.45453 104.174 7.89006 104.427 8.51317L99.8318 10.3678C99.7747 8.43814 101.371 7.45453 102.52 7.45453ZM116.991 0.530136H111.59V15.2108H113.844V9.65011H116.992C119.491 9.65011 121.948 7.89169 121.948 5.08931C121.948 2.29182 119.493 0.531767 116.996 0.531767L116.991 0.530136ZM117.049 7.60623H113.844V2.57238H117.049C118.734 2.57238 119.694 3.93116 119.694 5.08931C119.694 6.22788 118.734 7.60623 117.049 7.60623ZM125.444 15.2108V0.530136H123.19V15.2108H125.444ZM135.569 15.1847V9.55713C135.569 6.95049 133.566 5.4971 130.979 5.4971C129.35 5.4971 127.66 6.19688 126.96 7.74488L128.96 8.55558C129.388 7.74488 130.184 7.479 131.021 7.479C132.186 7.479 133.371 8.1592 133.389 9.36954V9.52125C132.981 9.29451 132.109 8.95359 131.038 8.95359C128.881 8.95359 126.686 10.1052 126.686 12.2584C126.686 14.224 128.455 15.4881 130.437 15.4881C131.954 15.4881 132.788 14.8275 133.312 14.0543H133.389V15.188H135.568L135.569 15.1847ZM130.711 13.5438C129.972 13.5438 128.942 13.1849 128.942 12.2992C128.942 11.1655 130.226 10.7283 131.333 10.7283C132.325 10.7283 132.79 10.9355 133.394 11.2193C133.221 12.5373 132.075 13.5274 130.711 13.5438ZM143.496 5.81845L140.911 12.1817H140.834L138.152 5.81845H135.724L139.745 14.7149L137.451 19.6623H139.802L146 5.81845H143.496Z" fill="white"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_4430_8891">
|
||||
<rect width="146" height="40" fill="white"/>
|
||||
</clipPath>
|
||||
<clipPath id="clip1_4430_8891">
|
||||
<rect width="33" height="33" fill="white" transform="translate(1.5 3.5)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.8 KiB |
15
public/images/common/btn_logo-pc.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<svg width="112" height="40" viewBox="0 0 112 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_4430_8889)">
|
||||
<path d="M16.875 8.5475L31.5 6.5V19.4375H16.875V8.5475Z" fill="white"/>
|
||||
<path d="M15.75 8.705L4.5 10.28V19.4375H15.75V8.705Z" fill="white"/>
|
||||
<path d="M15.75 20.5625H4.5V29.72L15.75 31.295V20.5625Z" fill="white"/>
|
||||
<path d="M16.875 31.4525L31.5 33.5V20.5625H16.875V31.4525Z" fill="white"/>
|
||||
<path d="M62.0266 17.234C58.6966 17.234 56.1406 14.732 56.1406 10.412C56.1406 6.074 58.7506 3.5 62.1166 3.5C63.7726 3.5 65.0686 4.292 65.8786 5.174L64.7446 6.506C64.0426 5.804 63.2326 5.318 62.1526 5.318C59.8486 5.318 58.2826 7.244 58.2826 10.34C58.2826 13.49 59.7586 15.416 62.0986 15.416C63.3226 15.416 64.2406 14.876 65.0326 14.012L66.1486 15.326C65.0686 16.55 63.7546 17.234 62.0266 17.234Z" fill="white"/>
|
||||
<path d="M45.7275 3.75201H49.7415C52.6935 3.75201 54.7995 4.77802 54.7995 7.74802C54.7995 10.646 52.6935 11.978 49.8135 11.978H47.8155V17H45.7275V3.75201ZM49.6155 10.304C51.7935 10.304 52.7475 9.49401 52.7475 7.74802C52.7475 6.00202 51.6495 5.42601 49.5435 5.42601H47.8155V10.304H49.6155Z" fill="white"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_4430_8889">
|
||||
<rect width="112" height="40" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
4
public/images/common/ic-v2-logo-apple-fill.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M22.0265 6.77515C22.9737 5.57867 23.6003 3.90666 23.4254 2.25C22.0702 2.31136 20.4381 3.20105 19.4618 4.39753C18.5874 5.45595 17.8297 7.15864 18.0337 8.78462C19.5346 8.90734 21.0793 7.97163 22.0265 6.77515Z" fill="white"/>
|
||||
<path d="M24.1784 9.38534L23.8464 9.35745C22.5604 9.25719 21.3837 9.62957 20.3897 10.0069L19.3814 10.3981C18.917 10.5722 18.5149 10.6972 18.1869 10.6972C17.8232 10.6972 17.3973 10.5679 16.9256 10.3916L15.7142 9.92036C14.9662 9.64193 14.1546 9.40031 13.3246 9.42125C10.8217 9.45315 8.526 10.8727 7.23469 13.1216C4.63612 17.6354 6.56512 24.3024 9.09991 27.9708L9.53965 28.5946L9.84388 29.0098L10.1578 29.4174C11.1678 30.689 12.3337 31.7497 13.755 31.703C14.523 31.6702 15.0938 31.4589 15.6575 31.2216L16.1434 31.0155C16.8008 30.7416 17.5202 30.4909 18.5855 30.4909C19.511 30.4909 20.1636 30.6964 20.7491 30.9348L21.4811 31.246C22.0469 31.481 22.6338 31.6749 23.4478 31.6552C25.1351 31.6284 26.305 30.3637 27.3637 28.8914L27.6635 28.466L28.1083 27.8128C28.254 27.5914 28.3903 27.3714 28.5175 27.1552L28.76 26.7285C28.7984 26.6584 28.8359 26.5889 28.8723 26.5201L29.0796 26.1159C29.1123 26.0501 29.144 25.9851 29.1747 25.921L29.3482 25.5483L29.4998 25.2015L29.6302 24.8848L29.7873 24.4749L29.9 24.155L30 23.8398L29.8843 23.7918L29.5934 23.6516L29.2859 23.4809L29.0483 23.3338L28.7907 23.1589C27.6392 22.3393 26.0767 20.7067 26.0464 17.8746C26.0241 15.2734 27.512 13.6173 28.4644 12.8256L28.6993 12.6386C28.736 12.6106 28.7714 12.5843 28.8052 12.5597L29.0641 12.3809L29.2348 12.2763C28.0657 10.5643 26.4786 9.86607 25.2717 9.57188L24.9218 9.49514L24.5996 9.43898L24.3097 9.39975C24.2644 9.39442 24.2206 9.38964 24.1784 9.38534Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
13
public/images/common/ic-v2-logo-google-playstore-color.svg
Normal file
@@ -0,0 +1,13 @@
|
||||
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_3298_5174)">
|
||||
<path d="M17.7524 17.3401L5.04736 30.6226C5.45986 32.0251 6.77986 33.0976 8.34736 33.0976C9.00736 33.0976 9.58486 32.9326 10.0799 32.6026L24.4349 24.4351L17.7524 17.3401Z" fill="#EA4335"/>
|
||||
<path d="M30.6224 15.03L24.4349 11.4825L17.5049 17.5875L24.5174 24.435L30.7049 20.97C31.7774 20.3925 32.5199 19.2375 32.5199 18C32.4374 16.7625 31.6949 15.6075 30.6224 15.03Z" fill="#FBBC04"/>
|
||||
<path d="M5.04734 5.37769C4.96484 5.62519 4.96484 5.95519 4.96484 6.28519V29.7977C4.96484 30.1277 4.96484 30.3752 5.04734 30.7052L18.2473 17.7527L5.04734 5.37769Z" fill="#4285F4"/>
|
||||
<path d="M17.8349 18.0001L24.4349 11.4826L10.1624 3.39759C9.66736 3.06759 9.00736 2.90259 8.34736 2.90259C6.77986 2.90259 5.37736 3.97509 5.04736 5.37759L17.8349 18.0001Z" fill="#34A853"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_3298_5174">
|
||||
<rect width="33" height="33" fill="white" transform="translate(1.5 1.5)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
6
public/images/common/ic-v2-logo-window-fill.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M16.875 6.5475L31.5 4.5V17.4375H16.875V6.5475Z" fill="white"/>
|
||||
<path d="M15.75 6.705L4.5 8.28V17.4375H15.75V6.705Z" fill="white"/>
|
||||
<path d="M15.75 18.5625H4.5V27.72L15.75 29.295V18.5625Z" fill="white"/>
|
||||
<path d="M16.875 29.4525L31.5 31.5V18.5625H16.875V29.4525Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 390 B |