Skip to content

Commit 402dcbe

Browse files
authored
feat: sold out after party (#969)
1 parent 832d54f commit 402dcbe

File tree

6 files changed

+32
-4
lines changed

6 files changed

+32
-4
lines changed

app/pages/ticket/index.vue

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ const { signIn, status, data } = useAuth();
3030
const { t, locale } = useI18n();
3131
const localeRoute = useLocaleRoute();
3232
33+
const isSoldOutAfterParty = __FEATURE_SOLD_OUT_AFTER_PARTY__;
34+
const isSoldOutEarlyBirdAfterParty = __FEATURE_SOLD_OUT_EARLY_BIRD_AFTER_PARTY__;
35+
3336
const isLoading = ref(false);
3437
3538
async function handleClockGoogleSignIn() {
@@ -109,17 +112,19 @@ useSeoMeta({
109112
<span class="ticket-badge-price">
110113
<!-- eslint-disable-next-line @intlify/vue-i18n/no-raw-text -->
111114
<span class="ticket-badge-price-type">{{ t('ticket.early') }}</span>
112-
<span class="ticket-badge-price-value">
115+
<span class="ticket-badge-price-value" :class="{ 'sold-out': isSoldOutEarlyBirdAfterParty }">
113116
<span class="ticket-badge-price-unit" :class="locale">{{ t("ticket.priceUnit") }}</span>{{ (Number(t('ticket.afterPartyTicket.earlyPrice'))).toLocaleString() }}
114117
</span>
118+
<span v-if="isSoldOutEarlyBirdAfterParty" class="sold-out-label">{{ t('ticket.soldOut') }}</span>
115119
</span>
116120

117121
<span class="ticket-badge-price">
118122
<!-- eslint-disable-next-line @intlify/vue-i18n/no-raw-text -->
119123
<span class="ticket-badge-price-type">{{ t('ticket.standard') }}</span>
120-
<span class="ticket-badge-price-value">
124+
<span class="ticket-badge-price-value" :class="{ 'sold-out': isSoldOutAfterParty }">
121125
<span class="ticket-badge-price-unit" :class="locale">{{ t("ticket.priceUnit") }}</span>{{ (Number(t('ticket.afterPartyTicket.standardPrice'))).toLocaleString() }}
122126
</span>
127+
<span v-if="isSoldOutAfterParty" class="sold-out-label">{{ t('ticket.soldOut') }}</span>
123128
</span>
124129
</div>
125130
</div>
@@ -369,6 +374,10 @@ useSeoMeta({
369374
font-weight: 700;
370375
line-height: 1;
371376
377+
&.sold-out {
378+
text-decoration: line-through;
379+
}
380+
372381
.ticket-badge-price-unit {
373382
font-size: 1.75rem;
374383
@@ -378,6 +387,15 @@ useSeoMeta({
378387
}
379388
}
380389
}
390+
391+
.sold-out-label {
392+
color: var(--color-sub);
393+
background-color: var(--color-base);
394+
font-size: 11px;
395+
padding: 0 0.375rem;
396+
border-radius: 4px;
397+
margin-left: -8px;
398+
}
381399
}
382400
}
383401
}

features.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,8 @@
11
/** defined by ViteConfig.define on nuxt.config.ts */
22
const __FEATURE_TIMETABLE__: boolean;
3+
4+
/** defined by ViteConfig.define on nuxt.config.ts */
5+
const __FEATURE_SOLD_OUT_AFTER_PARTY__: boolean;
6+
7+
/** defined by ViteConfig.define on nuxt.config.ts */
8+
const __FEATURE_SOLD_OUT_EARLY_BIRD_AFTER_PARTY__: boolean;

i18n/en/index.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ ticket:
5656
attention1: "※ A general ticket is also required to participate in Vue Fes Japan."
5757
attention2: "※ Please see the {about} for details."
5858
about: "Individual Sponsor section"
59+
soldOut: "SOLD OUT"
5960
buy: "Buy Tickets"
6061

6162
nameBadge:

i18n/ja/index.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ ticket:
5656
attention1: "※ Vue Fes Japan へのご参加には、一般チケットも必要となります。"
5757
attention2: "※ 詳しくは{about}をご覧ください。"
5858
about: "個人スポンサーについて"
59+
soldOut: "SOLD OUT"
5960
buy: "チケットを購入する"
6061

6162
nameBadge:

nuxt.config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ export default defineNuxtConfig({
108108
vite: {
109109
define: {
110110
__FEATURE_TIMETABLE__: process.env.FEATURE_TIMETABLE || false, // ?
111+
__FEATURE_SOLD_OUT_AFTER_PARTY__: !["0", undefined].includes(process.env.FEATURE_SOLD_OUT_AFTER_PARTY),
112+
__FEATURE_SOLD_OUT_EARLY_BIRD_AFTER_PARTY__: !["0", undefined].includes(process.env.FEATURE_SOLD_OUT_EARLY_BIRD_AFTER_PARTY),
111113
},
112114
css: {
113115
transformer: "lightningcss",

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
]
3232
},
3333
"scripts": {
34-
"build": "cross-env NODE_OPTIONS='--max-old-space-size=4096' nuxt build",
35-
"dev": "cross-env FEATURE_TIMETABLE=0 nuxt dev",
34+
"build": "cross-env NODE_OPTIONS='--max-old-space-size=4096' FEATURE_SOLD_OUT_AFTER_PARTY=1 FEATURE_SOLD_OUT_EARLY_BIRD_AFTER_PARTY=1 nuxt build",
35+
"dev": "cross-env FEATURE_TIMETABLE=0 FEATURE_SOLD_OUT_AFTER_PARTY=1 FEATURE_SOLD_OUT_EARLY_BIRD_AFTER_PARTY=1 nuxt dev",
3636
"generate": "nuxt generate",
3737
"preview": "nuxt preview",
3838
"check": "nuxi typecheck",

0 commit comments

Comments
 (0)