@reni-corp/reni-2c-ui 0.4.11 → 0.4.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/elements/Callout.vue.d.ts +47 -0
- package/dist/components/elements/Callout.vue.d.ts.map +1 -0
- package/dist/components/elements/CheckBox.vue.d.ts.map +1 -1
- package/dist/components/elements/ComboBox.vue.d.ts +3 -3
- package/dist/components/elements/ComboBox.vue.d.ts.map +1 -1
- package/dist/components/elements/Icon.vue.d.ts +2 -2
- package/dist/components/elements/Icon.vue.d.ts.map +1 -1
- package/dist/components/elements/Image.vue.d.ts +2 -2
- package/dist/components/elements/Image.vue.d.ts.map +1 -1
- package/dist/components/elements/Label.vue.d.ts +2 -2
- package/dist/components/elements/Label.vue.d.ts.map +1 -1
- package/dist/components/elements/Pagination.vue.d.ts.map +1 -1
- package/dist/components/elements/SelectBox.vue.d.ts +1 -1
- package/dist/components/elements/SelectBox.vue.d.ts.map +1 -1
- package/dist/components/elements/SpinButton.vue.d.ts.map +1 -1
- package/dist/components/elements/Switch.vue.d.ts +19 -0
- package/dist/components/elements/Switch.vue.d.ts.map +1 -0
- package/dist/components/elements/Text.vue.d.ts +1 -1
- package/dist/components/elements/Text.vue.d.ts.map +1 -1
- package/dist/components/elements/TextArea.vue.d.ts +35 -0
- package/dist/components/elements/TextArea.vue.d.ts.map +1 -0
- package/dist/components/elements/TextField.vue.d.ts +1 -1
- package/dist/components/elements/TextField.vue.d.ts.map +1 -1
- package/dist/components/elements/ToolChip.vue.d.ts +1 -1
- package/dist/components/elements/ToolChip.vue.d.ts.map +1 -1
- package/dist/components/features/CategoryBanner.vue.d.ts +1 -1
- package/dist/components/features/CategoryBanner.vue.d.ts.map +1 -1
- package/dist/components/features/ImageGrid.vue.d.ts +1 -1
- package/dist/components/features/ImageGrid.vue.d.ts.map +1 -1
- package/dist/components/features/ProductList.vue.d.ts +3 -0
- package/dist/components/features/ProductList.vue.d.ts.map +1 -1
- package/dist/components/features/ProductListItem.vue.d.ts +21 -1
- package/dist/components/features/ProductListItem.vue.d.ts.map +1 -1
- package/dist/components/features/SnsLink.vue.d.ts +1 -1
- package/dist/components/features/SnsLink.vue.d.ts.map +1 -1
- package/dist/components/foundation/AppBar.vue.d.ts +10 -1
- package/dist/components/foundation/AppBar.vue.d.ts.map +1 -1
- package/dist/components/foundation/AppBottomBar.vue.d.ts +23 -0
- package/dist/components/foundation/AppBottomBar.vue.d.ts.map +1 -0
- package/dist/components/foundation/AppFooter.vue.d.ts +1 -1
- package/dist/components/foundation/AppFooter.vue.d.ts.map +1 -1
- package/dist/components/interactive/Disclosure.vue.d.ts +4 -4
- package/dist/components/interactive/Disclosure.vue.d.ts.map +1 -1
- package/dist/components/interactive/Tab.vue.d.ts +2 -2
- package/dist/components/interactive/Tab.vue.d.ts.map +1 -1
- package/dist/components/layouts/List.vue.d.ts +1 -1
- package/dist/components/layouts/List.vue.d.ts.map +1 -1
- package/dist/components/renderless/ItemFilter.vue.d.ts +1 -1
- package/dist/components/renderless/ItemFilter.vue.d.ts.map +1 -1
- package/dist/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +7537 -10611
- package/dist/placeholder-1200x400.svg +4 -0
- package/dist/placeholder-1200x600.svg +4 -0
- package/dist/placeholder-400x400.svg +4 -0
- package/dist/placeholder-600x600.svg +4 -0
- package/dist/placeholder-800x450.svg +4 -0
- package/dist/placeholder-800x600.svg +4 -0
- package/dist/script.es.js +8009 -11085
- package/dist/script.umd.js +20 -588
- package/dist/style.css +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/package.json +6 -9
- package/src/stories/AppBar.stories.ts +8 -8
- package/src/stories/AppBottomBar.stories.ts +443 -0
- package/src/stories/AppLayout.stories.ts +17 -27
- package/src/stories/Banner.stories.ts +5 -5
- package/src/stories/Callout.stories.ts +286 -0
- package/src/stories/Card.stories.ts +5 -5
- package/src/stories/ComboBox.stories.ts +1 -1
- package/src/stories/Disclosure.stories.ts +1 -1
- package/src/stories/Drawer.stories.ts +2 -2
- package/src/stories/Hero.stories.ts +5 -5
- package/src/stories/Icon.stories.ts +10 -88
- package/src/stories/Image.stories.ts +5 -1
- package/src/stories/Label.stories.ts +2 -1
- package/src/stories/List.stories.ts +4 -4
- package/src/stories/Modal.stories.ts +3 -3
- package/src/stories/ProductList.stories.ts +71 -5
- package/src/stories/Tab.stories.ts +1 -1
- package/src/stories/TabGroup.stories.ts +5 -5
- package/src/stories/Tabs.stories.ts +13 -4
- package/src/stories/compositions/DomainMixedHome.stories.ts +217 -0
- package/src/stories/compositions/EventPage.stories.ts +2 -2
- package/src/stories/compositions/TicketPage.stories.ts +300 -0
- package/src/stories/compositions/TopPage.stories.ts +8 -8
- package/src/stories/SnsLink.stories.ts +0 -259
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composition Story: 整理券ページ
|
|
3
|
+
*
|
|
4
|
+
* イベント物販の整理券発行画面を模した構成。
|
|
5
|
+
* AppFrame をルートに、AppBar・AppBody・AppBottomBar の3層を組み、
|
|
6
|
+
* AppBottomBar に「ページ固有CTA + グローバルタブ」を Stack するパターンの実例。
|
|
7
|
+
*/
|
|
8
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite'
|
|
9
|
+
import AppFrame from '@/components/foundation/AppFrame.vue'
|
|
10
|
+
import AppBar from '@/components/foundation/AppBar.vue'
|
|
11
|
+
import AppBody from '@/components/foundation/AppBody.vue'
|
|
12
|
+
import AppBottomBar from '@/components/foundation/AppBottomBar.vue'
|
|
13
|
+
import Tabs from '@/components/interactive/Tabs.vue'
|
|
14
|
+
import Tab from '@/components/interactive/Tab.vue'
|
|
15
|
+
import Button from '@/components/elements/Button.vue'
|
|
16
|
+
import Label from '@/components/elements/Label.vue'
|
|
17
|
+
import Text from '@/components/elements/Text.vue'
|
|
18
|
+
import Icon from '@/components/elements/Icon.vue'
|
|
19
|
+
import Divider from '@/components/elements/Divider.vue'
|
|
20
|
+
import Callout from '@/components/elements/Callout.vue'
|
|
21
|
+
import AnnounceBar from '@/components/features/AnnounceBar.vue'
|
|
22
|
+
import Stack from '@/components/layouts/Stack.vue'
|
|
23
|
+
import Card from '@/components/layouts/Card.vue'
|
|
24
|
+
|
|
25
|
+
const meta: Meta = {
|
|
26
|
+
title: 'Example/整理券ページ',
|
|
27
|
+
parameters: {
|
|
28
|
+
layout: 'fullscreen',
|
|
29
|
+
},
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export default meta
|
|
33
|
+
type Story = StoryObj
|
|
34
|
+
|
|
35
|
+
export const 受付中: Story = {
|
|
36
|
+
render: () => ({
|
|
37
|
+
components: {
|
|
38
|
+
'rn-app-frame': AppFrame,
|
|
39
|
+
'rn-app-bar': AppBar,
|
|
40
|
+
'rn-app-body': AppBody,
|
|
41
|
+
'rn-app-bottom-bar': AppBottomBar,
|
|
42
|
+
'rn-tabs': Tabs,
|
|
43
|
+
'rn-tab': Tab,
|
|
44
|
+
'rn-button': Button,
|
|
45
|
+
'rn-label': Label,
|
|
46
|
+
'rn-text': Text,
|
|
47
|
+
'rn-icon': Icon,
|
|
48
|
+
'rn-divider': Divider,
|
|
49
|
+
'rn-callout': Callout,
|
|
50
|
+
'rn-stack': Stack,
|
|
51
|
+
'rn-card': Card,
|
|
52
|
+
},
|
|
53
|
+
setup() {
|
|
54
|
+
// 店舗配下の画面。AppBar 左端から店舗横断ホームへ戻れるようにする
|
|
55
|
+
const home = { title: 'すべての店舗トップ', action: () => {} }
|
|
56
|
+
return { home }
|
|
57
|
+
},
|
|
58
|
+
template: /* html */ `
|
|
59
|
+
<rn-app-frame>
|
|
60
|
+
<rn-app-bar title="KIRITO OFFICIAL GOODS STORE" :home="home" />
|
|
61
|
+
|
|
62
|
+
<rn-app-body>
|
|
63
|
+
<rn-card>
|
|
64
|
+
<rn-stack direction="vertical" gap="lg" horizontalReSize="fill">
|
|
65
|
+
<!-- ステータス + 整理券名(近接グルーピング) -->
|
|
66
|
+
<rn-stack direction="vertical" gap="sm" horizontalReSize="fill">
|
|
67
|
+
<rn-stack horizontalReSize="fill">
|
|
68
|
+
<rn-label variant="outline" color="success">受付中</rn-label>
|
|
69
|
+
</rn-stack>
|
|
70
|
+
<rn-text size="title" weight="bold">
|
|
71
|
+
RENI Official Store ドームツアー2025 整理券
|
|
72
|
+
</rn-text>
|
|
73
|
+
</rn-stack>
|
|
74
|
+
|
|
75
|
+
<!-- 開催情報 -->
|
|
76
|
+
<rn-stack direction="vertical" gap="sm" horizontalReSize="fill">
|
|
77
|
+
<rn-stack gap="sm" verticalAlign="center">
|
|
78
|
+
<rn-icon icon="calendar-outline" color="subtle" />
|
|
79
|
+
<rn-text size="body" color="subtle">
|
|
80
|
+
2025年12月14日15:00 - 21:00
|
|
81
|
+
</rn-text>
|
|
82
|
+
</rn-stack>
|
|
83
|
+
<rn-stack gap="sm" verticalAlign="center">
|
|
84
|
+
<rn-icon icon="location-dot-outline" color="subtle" />
|
|
85
|
+
<rn-text size="body" color="subtle">
|
|
86
|
+
苗場スキー場 オフィシャルグッズ売り場
|
|
87
|
+
</rn-text>
|
|
88
|
+
</rn-stack>
|
|
89
|
+
</rn-stack>
|
|
90
|
+
|
|
91
|
+
<!-- 注意事項: 案内系 Callout と同じデフォルトのテイスト(白背景+枠線+グレー info アイコン) -->
|
|
92
|
+
<rn-callout title="注意事項">
|
|
93
|
+
※ このデバイスで取得できるのは1枚のみです。<br />
|
|
94
|
+
※ 発行後のキャンセル・変更はできません。
|
|
95
|
+
</rn-callout>
|
|
96
|
+
|
|
97
|
+
<!-- 発行ボタン: 受付中のため活性 -->
|
|
98
|
+
<rn-button block color="default">整理券を発行</rn-button>
|
|
99
|
+
</rn-stack>
|
|
100
|
+
</rn-card>
|
|
101
|
+
</rn-app-body>
|
|
102
|
+
|
|
103
|
+
<rn-app-bottom-bar>
|
|
104
|
+
<rn-tabs variant="icon" :isStretched="true">
|
|
105
|
+
<rn-tab icon="ticket-outline" label="整理券" :active="true" />
|
|
106
|
+
<rn-tab icon="tote-bag-outline" label="オーダーシート" />
|
|
107
|
+
</rn-tabs>
|
|
108
|
+
</rn-app-bottom-bar>
|
|
109
|
+
</rn-app-frame>
|
|
110
|
+
`,
|
|
111
|
+
}),
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export const 受付開始前: Story = {
|
|
115
|
+
render: () => ({
|
|
116
|
+
components: {
|
|
117
|
+
'rn-app-frame': AppFrame,
|
|
118
|
+
'rn-app-bar': AppBar,
|
|
119
|
+
'rn-app-body': AppBody,
|
|
120
|
+
'rn-app-bottom-bar': AppBottomBar,
|
|
121
|
+
'rn-tabs': Tabs,
|
|
122
|
+
'rn-tab': Tab,
|
|
123
|
+
'rn-button': Button,
|
|
124
|
+
'rn-label': Label,
|
|
125
|
+
'rn-text': Text,
|
|
126
|
+
'rn-icon': Icon,
|
|
127
|
+
'rn-divider': Divider,
|
|
128
|
+
'rn-callout': Callout,
|
|
129
|
+
'rn-stack': Stack,
|
|
130
|
+
'rn-card': Card,
|
|
131
|
+
},
|
|
132
|
+
setup() {
|
|
133
|
+
// 店舗配下の画面。AppBar 左端から店舗横断ホームへ戻れるようにする
|
|
134
|
+
const home = { title: 'すべての店舗トップ', action: () => {} }
|
|
135
|
+
return { home }
|
|
136
|
+
},
|
|
137
|
+
template: /* html */ `
|
|
138
|
+
<rn-app-frame>
|
|
139
|
+
<rn-app-bar title="KIRITO OFFICIAL GOODS STORE" :home="home" />
|
|
140
|
+
|
|
141
|
+
<rn-app-body>
|
|
142
|
+
<rn-card>
|
|
143
|
+
<rn-stack direction="vertical" gap="lg" horizontalReSize="fill">
|
|
144
|
+
<!-- ステータス + 整理券名(近接グルーピング) -->
|
|
145
|
+
<rn-stack direction="vertical" gap="sm" horizontalReSize="fill">
|
|
146
|
+
<rn-stack horizontalReSize="fill">
|
|
147
|
+
<rn-label variant="solid" color="subtle">受付開始前</rn-label>
|
|
148
|
+
</rn-stack>
|
|
149
|
+
<rn-text size="title" weight="bold">
|
|
150
|
+
RENI Official Store ドームツアー2025 整理券
|
|
151
|
+
</rn-text>
|
|
152
|
+
</rn-stack>
|
|
153
|
+
|
|
154
|
+
<!-- 開催情報 -->
|
|
155
|
+
<rn-stack direction="vertical" gap="sm" horizontalReSize="fill">
|
|
156
|
+
<rn-stack gap="sm" verticalAlign="center">
|
|
157
|
+
<rn-icon icon="calendar-outline" color="subtle" />
|
|
158
|
+
<rn-text size="body" color="subtle">
|
|
159
|
+
2025年12月14日15:00 - 21:00
|
|
160
|
+
</rn-text>
|
|
161
|
+
</rn-stack>
|
|
162
|
+
<rn-stack gap="sm" verticalAlign="center">
|
|
163
|
+
<rn-icon icon="location-dot-outline" color="subtle" />
|
|
164
|
+
<rn-text size="body" color="subtle">
|
|
165
|
+
苗場スキー場 オフィシャルグッズ売り場
|
|
166
|
+
</rn-text>
|
|
167
|
+
</rn-stack>
|
|
168
|
+
</rn-stack>
|
|
169
|
+
|
|
170
|
+
<!-- 注意事項: 案内系 Callout と同じデフォルトのテイスト(白背景+枠線+グレー info アイコン) -->
|
|
171
|
+
<rn-callout title="注意事項">
|
|
172
|
+
※ このデバイスで取得できるのは1枚のみです。<br />
|
|
173
|
+
※ 発行後のキャンセル・変更はできません。
|
|
174
|
+
</rn-callout>
|
|
175
|
+
|
|
176
|
+
<!-- 発行ボタン: 受付開始前のため非活性 -->
|
|
177
|
+
<rn-button block disabled>現在発行していません</rn-button>
|
|
178
|
+
</rn-stack>
|
|
179
|
+
</rn-card>
|
|
180
|
+
</rn-app-body>
|
|
181
|
+
|
|
182
|
+
<rn-app-bottom-bar>
|
|
183
|
+
<rn-tabs variant="icon" :isStretched="true">
|
|
184
|
+
<rn-tab icon="ticket-outline" label="整理券" :active="true" />
|
|
185
|
+
<rn-tab icon="tote-bag-outline" label="オーダーシート" />
|
|
186
|
+
</rn-tabs>
|
|
187
|
+
</rn-app-bottom-bar>
|
|
188
|
+
</rn-app-frame>
|
|
189
|
+
`,
|
|
190
|
+
}),
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
export const 呼び出し待ち: Story = {
|
|
194
|
+
render: () => ({
|
|
195
|
+
components: {
|
|
196
|
+
'rn-app-frame': AppFrame,
|
|
197
|
+
'rn-app-bar': AppBar,
|
|
198
|
+
'rn-app-body': AppBody,
|
|
199
|
+
'rn-app-bottom-bar': AppBottomBar,
|
|
200
|
+
'rn-tabs': Tabs,
|
|
201
|
+
'rn-tab': Tab,
|
|
202
|
+
'rn-button': Button,
|
|
203
|
+
'rn-label': Label,
|
|
204
|
+
'rn-text': Text,
|
|
205
|
+
'rn-callout': Callout,
|
|
206
|
+
'rn-announce-bar': AnnounceBar,
|
|
207
|
+
'rn-stack': Stack,
|
|
208
|
+
'rn-card': Card,
|
|
209
|
+
},
|
|
210
|
+
setup() {
|
|
211
|
+
// 店舗配下の画面。AppBar 左端から店舗横断ホームへ戻れるようにする
|
|
212
|
+
const home = { title: 'すべての店舗トップ', action: () => {} }
|
|
213
|
+
return { home }
|
|
214
|
+
},
|
|
215
|
+
template: /* html */ `
|
|
216
|
+
<rn-app-frame>
|
|
217
|
+
<rn-app-bar title="KIRITO OFFICIAL GOODS STORE" :home="home" />
|
|
218
|
+
|
|
219
|
+
<rn-app-body>
|
|
220
|
+
<rn-card>
|
|
221
|
+
<rn-stack direction="vertical" gap="lg" horizontalReSize="fill">
|
|
222
|
+
<rn-text size="title" weight="bold">
|
|
223
|
+
東京ドーム 公演前物販 A ゲート 整理券
|
|
224
|
+
</rn-text>
|
|
225
|
+
|
|
226
|
+
<!-- 整理番号: 画面の主役。caption ラベル + 巨大な番号を中央に -->
|
|
227
|
+
<rn-stack
|
|
228
|
+
direction="vertical"
|
|
229
|
+
horizontalAlign="center"
|
|
230
|
+
horizontalReSize="fill"
|
|
231
|
+
>
|
|
232
|
+
<rn-text size="subtitle" color="subtle">あなたの整理番号</rn-text>
|
|
233
|
+
<!-- 整理番号は画面の主役。headline をさらに拡大して視認性を最大化 -->
|
|
234
|
+
<rn-text
|
|
235
|
+
size="headline"
|
|
236
|
+
weight="bold"
|
|
237
|
+
fontType="accent"
|
|
238
|
+
style="font-size: 7rem; line-height: 1.1;"
|
|
239
|
+
>
|
|
240
|
+
150
|
|
241
|
+
</rn-text>
|
|
242
|
+
<rn-label size="lg" color="success" variant="solid">
|
|
243
|
+
呼び出し待ち
|
|
244
|
+
</rn-label>
|
|
245
|
+
</rn-stack>
|
|
246
|
+
|
|
247
|
+
<!-- 現在の呼び出し範囲: 数値を強調 -->
|
|
248
|
+
<rn-stack
|
|
249
|
+
gap="xs"
|
|
250
|
+
horizontalAlign="center"
|
|
251
|
+
verticalAlign="baseline"
|
|
252
|
+
horizontalReSize="fill"
|
|
253
|
+
>
|
|
254
|
+
<rn-text size="subtitle">現在</rn-text>
|
|
255
|
+
<rn-text size="subtitle" weight="bold">30〜90</rn-text>
|
|
256
|
+
<rn-text size="subtitle">番を呼び出し中</rn-text>
|
|
257
|
+
</rn-stack>
|
|
258
|
+
|
|
259
|
+
<!-- 案内系の Callout は関連が近いため gap を詰めてグルーピング -->
|
|
260
|
+
<rn-stack direction="vertical" horizontalReSize="fill">
|
|
261
|
+
<!-- 自動切り替えの案内 -->
|
|
262
|
+
<rn-callout
|
|
263
|
+
message="お呼び出し時、この画面は自動で切り替わります。"
|
|
264
|
+
/>
|
|
265
|
+
|
|
266
|
+
<!-- 通知設定への導線: action スロットに CTA -->
|
|
267
|
+
<rn-callout
|
|
268
|
+
color="warning"
|
|
269
|
+
variant="tonal"
|
|
270
|
+
icon="bell-outline"
|
|
271
|
+
title="お呼び出し通知を設定"
|
|
272
|
+
message="メールでお呼び出しの通知を受け取れます。"
|
|
273
|
+
>
|
|
274
|
+
<template #action>
|
|
275
|
+
<rn-button color="warning" size="sm">設定する</rn-button>
|
|
276
|
+
</template>
|
|
277
|
+
</rn-callout>
|
|
278
|
+
</rn-stack>
|
|
279
|
+
</rn-stack>
|
|
280
|
+
</rn-card>
|
|
281
|
+
</rn-app-body>
|
|
282
|
+
|
|
283
|
+
<rn-app-bottom-bar>
|
|
284
|
+
<!-- タブ上に常駐する案内バー。オーダーシートの事前作成を訴求 -->
|
|
285
|
+
<!-- info(default): 本文とタブ帯の境界に置く帯。ベタ塗りでゾーンの区切りを明確にする -->
|
|
286
|
+
<rn-announce-bar
|
|
287
|
+
color="info"
|
|
288
|
+
title="オーダーシートを作成しましょう"
|
|
289
|
+
subtitle="事前に作成するとスムーズにお会計ができます"
|
|
290
|
+
url="#"
|
|
291
|
+
/>
|
|
292
|
+
<rn-tabs variant="icon" :isStretched="true">
|
|
293
|
+
<rn-tab icon="ticket-outline" label="整理券" :active="true" />
|
|
294
|
+
<rn-tab icon="tote-bag-outline" label="オーダーシート" />
|
|
295
|
+
</rn-tabs>
|
|
296
|
+
</rn-app-bottom-bar>
|
|
297
|
+
</rn-app-frame>
|
|
298
|
+
`,
|
|
299
|
+
}),
|
|
300
|
+
}
|
|
@@ -33,37 +33,37 @@ const mockProducts = [
|
|
|
33
33
|
product_id: '1',
|
|
34
34
|
title: 'オリジナルTシャツ',
|
|
35
35
|
price_sale: 3980,
|
|
36
|
-
img_urls: ['
|
|
36
|
+
img_urls: ['/placeholder-400x400.svg'],
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
product_id: '2',
|
|
40
40
|
title: 'アクリルキーホルダー',
|
|
41
41
|
price_sale: 1200,
|
|
42
|
-
img_urls: ['
|
|
42
|
+
img_urls: ['/placeholder-400x400.svg'],
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
product_id: '3',
|
|
46
46
|
title: 'トートバッグ',
|
|
47
47
|
price_sale: 2500,
|
|
48
|
-
img_urls: ['
|
|
48
|
+
img_urls: ['/placeholder-400x400.svg'],
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
product_id: '4',
|
|
52
52
|
title: 'ステッカーセット',
|
|
53
53
|
price_sale: 800,
|
|
54
|
-
img_urls: ['
|
|
54
|
+
img_urls: ['/placeholder-400x400.svg'],
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
product_id: '5',
|
|
58
58
|
title: 'マグカップ',
|
|
59
59
|
price_sale: 1800,
|
|
60
|
-
img_urls: ['
|
|
60
|
+
img_urls: ['/placeholder-400x400.svg'],
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
product_id: '6',
|
|
64
64
|
title: 'ポスター A2',
|
|
65
65
|
price_sale: 1500,
|
|
66
|
-
img_urls: ['
|
|
66
|
+
img_urls: ['/placeholder-400x400.svg'],
|
|
67
67
|
},
|
|
68
68
|
]
|
|
69
69
|
|
|
@@ -94,7 +94,7 @@ export const トップページ: Story = {
|
|
|
94
94
|
|
|
95
95
|
<rn-hero
|
|
96
96
|
layout="overlay"
|
|
97
|
-
media="
|
|
97
|
+
media="/placeholder-1200x600.svg"
|
|
98
98
|
eyebrow="NEW ARRIVAL"
|
|
99
99
|
title="Spring Collection 2025"
|
|
100
100
|
subtitle="新作アイテムが続々入荷"
|
|
@@ -129,7 +129,7 @@ export const トップページ: Story = {
|
|
|
129
129
|
</div>
|
|
130
130
|
|
|
131
131
|
<rn-banner
|
|
132
|
-
imageUrl="
|
|
132
|
+
imageUrl="/placeholder-1200x400.svg"
|
|
133
133
|
title="コラボレーション企画"
|
|
134
134
|
description="人気クリエイター × ブランドの限定コラボアイテム"
|
|
135
135
|
variant="overlay"
|
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/vue3-vite'
|
|
2
|
-
import SnsLink, { SnsLinkProps } from '@/components/features/SnsLink.vue'
|
|
3
|
-
import { ColorOptions, SNSOptions } from '@/constants'
|
|
4
|
-
import { Color } from '@/types'
|
|
5
|
-
|
|
6
|
-
const meta: Meta<typeof SnsLink> = {
|
|
7
|
-
title: 'Features/SnsLink',
|
|
8
|
-
component: SnsLink,
|
|
9
|
-
tags: ['autodocs'],
|
|
10
|
-
argTypes: {
|
|
11
|
-
type: {
|
|
12
|
-
control: 'select',
|
|
13
|
-
options: Object.keys(SNSOptions),
|
|
14
|
-
},
|
|
15
|
-
href: {
|
|
16
|
-
control: 'text',
|
|
17
|
-
},
|
|
18
|
-
color: {
|
|
19
|
-
control: 'select',
|
|
20
|
-
options: Object.keys(ColorOptions) as Color[],
|
|
21
|
-
},
|
|
22
|
-
size: {
|
|
23
|
-
control: 'select',
|
|
24
|
-
options: ['xs', 'sm', 'md', 'lg', 'xl'],
|
|
25
|
-
},
|
|
26
|
-
target: {
|
|
27
|
-
control: 'select',
|
|
28
|
-
options: ['_blank', '_self'],
|
|
29
|
-
},
|
|
30
|
-
variant: {
|
|
31
|
-
control: 'select',
|
|
32
|
-
options: ['icon', 'label'],
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
args: {
|
|
36
|
-
type: 'x-twitter',
|
|
37
|
-
href: '#',
|
|
38
|
-
color: 'default',
|
|
39
|
-
size: 'md',
|
|
40
|
-
target: '_blank',
|
|
41
|
-
variant: 'icon',
|
|
42
|
-
},
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export default meta
|
|
46
|
-
type StoryArgs = SnsLinkProps
|
|
47
|
-
type Story = StoryObj<StoryArgs>
|
|
48
|
-
type OverridesStory = Omit<Story, 'argTypes'> & {
|
|
49
|
-
argTypes?: Record<string, any>
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export const 基本: OverridesStory = {
|
|
53
|
-
args: {},
|
|
54
|
-
argTypes: {
|
|
55
|
-
default: { table: { disable: true } },
|
|
56
|
-
},
|
|
57
|
-
render: (args: StoryArgs) => ({
|
|
58
|
-
components: { 'rn-sns-link': SnsLink },
|
|
59
|
-
setup() {
|
|
60
|
-
return { args }
|
|
61
|
-
},
|
|
62
|
-
template: /* html */ `
|
|
63
|
-
<div class='sb-canvas'>
|
|
64
|
-
<rn-sns-link
|
|
65
|
-
:type="args.type"
|
|
66
|
-
:href="args.href"
|
|
67
|
-
:color="args.color"
|
|
68
|
-
:size="args.size"
|
|
69
|
-
:target="args.target"
|
|
70
|
-
:variant="args.variant"
|
|
71
|
-
/>
|
|
72
|
-
</div>
|
|
73
|
-
`,
|
|
74
|
-
}),
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export const アイコン一覧: OverridesStory = {
|
|
78
|
-
args: {
|
|
79
|
-
variant: 'icon',
|
|
80
|
-
size: 'lg',
|
|
81
|
-
},
|
|
82
|
-
argTypes: {
|
|
83
|
-
default: { table: { disable: true } },
|
|
84
|
-
},
|
|
85
|
-
render: (args: StoryArgs) => ({
|
|
86
|
-
components: { 'rn-sns-link': SnsLink },
|
|
87
|
-
setup() {
|
|
88
|
-
return { args }
|
|
89
|
-
},
|
|
90
|
-
template: /* html */ `
|
|
91
|
-
<div class='sb-canvas' style='display: flex; gap: 16px; align-items: center;'>
|
|
92
|
-
<rn-sns-link
|
|
93
|
-
type="x-twitter"
|
|
94
|
-
href="#"
|
|
95
|
-
:size="args.size"
|
|
96
|
-
:variant="args.variant"
|
|
97
|
-
/>
|
|
98
|
-
<rn-sns-link
|
|
99
|
-
type="youtube"
|
|
100
|
-
href="#"
|
|
101
|
-
:size="args.size"
|
|
102
|
-
:variant="args.variant"
|
|
103
|
-
/>
|
|
104
|
-
<rn-sns-link
|
|
105
|
-
type="instagram"
|
|
106
|
-
href="#"
|
|
107
|
-
:size="args.size"
|
|
108
|
-
:variant="args.variant"
|
|
109
|
-
/>
|
|
110
|
-
<rn-sns-link
|
|
111
|
-
type="tiktok"
|
|
112
|
-
href="#"
|
|
113
|
-
:size="args.size"
|
|
114
|
-
:variant="args.variant"
|
|
115
|
-
/>
|
|
116
|
-
<rn-sns-link
|
|
117
|
-
type="facebook"
|
|
118
|
-
href="#"
|
|
119
|
-
:size="args.size"
|
|
120
|
-
:variant="args.variant"
|
|
121
|
-
/>
|
|
122
|
-
<rn-sns-link
|
|
123
|
-
type="line"
|
|
124
|
-
href="#"
|
|
125
|
-
:size="args.size"
|
|
126
|
-
:variant="args.variant"
|
|
127
|
-
/>
|
|
128
|
-
<rn-sns-link
|
|
129
|
-
type="pixiv"
|
|
130
|
-
href="#"
|
|
131
|
-
:size="args.size"
|
|
132
|
-
:variant="args.variant"
|
|
133
|
-
/>
|
|
134
|
-
<rn-sns-link
|
|
135
|
-
type="twitch"
|
|
136
|
-
href="#"
|
|
137
|
-
:size="args.size"
|
|
138
|
-
:variant="args.variant"
|
|
139
|
-
/>
|
|
140
|
-
<rn-sns-link
|
|
141
|
-
type="spotify"
|
|
142
|
-
href="#"
|
|
143
|
-
:size="args.size"
|
|
144
|
-
:variant="args.variant"
|
|
145
|
-
/>
|
|
146
|
-
<rn-sns-link
|
|
147
|
-
type="nicovideo"
|
|
148
|
-
href="#"
|
|
149
|
-
:size="args.size"
|
|
150
|
-
:variant="args.variant"
|
|
151
|
-
/>
|
|
152
|
-
<rn-sns-link
|
|
153
|
-
type="music_line"
|
|
154
|
-
href="#"
|
|
155
|
-
:size="args.size"
|
|
156
|
-
:variant="args.variant"
|
|
157
|
-
/>
|
|
158
|
-
<rn-sns-link
|
|
159
|
-
type="music_apple"
|
|
160
|
-
href="#"
|
|
161
|
-
:size="args.size"
|
|
162
|
-
:variant="args.variant"
|
|
163
|
-
/>
|
|
164
|
-
</div>
|
|
165
|
-
`,
|
|
166
|
-
}),
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
export const ラベル付き: OverridesStory = {
|
|
170
|
-
args: {
|
|
171
|
-
variant: 'label',
|
|
172
|
-
size: 'md',
|
|
173
|
-
},
|
|
174
|
-
argTypes: {
|
|
175
|
-
default: { table: { disable: true } },
|
|
176
|
-
},
|
|
177
|
-
render: (args: StoryArgs) => ({
|
|
178
|
-
components: { 'rn-sns-link': SnsLink },
|
|
179
|
-
setup() {
|
|
180
|
-
return { args }
|
|
181
|
-
},
|
|
182
|
-
template: /* html */ `
|
|
183
|
-
<div class='sb-canvas' style='display: flex; flex-direction: column; gap: 12px;'>
|
|
184
|
-
<rn-sns-link
|
|
185
|
-
type="x-twitter"
|
|
186
|
-
href="#"
|
|
187
|
-
:size="args.size"
|
|
188
|
-
:variant="args.variant"
|
|
189
|
-
/>
|
|
190
|
-
<rn-sns-link
|
|
191
|
-
type="youtube"
|
|
192
|
-
href="#"
|
|
193
|
-
:size="args.size"
|
|
194
|
-
:variant="args.variant"
|
|
195
|
-
/>
|
|
196
|
-
<rn-sns-link
|
|
197
|
-
type="instagram"
|
|
198
|
-
href="#"
|
|
199
|
-
:size="args.size"
|
|
200
|
-
:variant="args.variant"
|
|
201
|
-
/>
|
|
202
|
-
<rn-sns-link
|
|
203
|
-
type="tiktok"
|
|
204
|
-
href="#"
|
|
205
|
-
:size="args.size"
|
|
206
|
-
:variant="args.variant"
|
|
207
|
-
/>
|
|
208
|
-
<rn-sns-link
|
|
209
|
-
type="facebook"
|
|
210
|
-
href="#"
|
|
211
|
-
:size="args.size"
|
|
212
|
-
:variant="args.variant"
|
|
213
|
-
/>
|
|
214
|
-
<rn-sns-link
|
|
215
|
-
type="line"
|
|
216
|
-
href="#"
|
|
217
|
-
:size="args.size"
|
|
218
|
-
:variant="args.variant"
|
|
219
|
-
/>
|
|
220
|
-
<rn-sns-link
|
|
221
|
-
type="pixiv"
|
|
222
|
-
href="#"
|
|
223
|
-
:size="args.size"
|
|
224
|
-
:variant="args.variant"
|
|
225
|
-
/>
|
|
226
|
-
<rn-sns-link
|
|
227
|
-
type="twitch"
|
|
228
|
-
href="#"
|
|
229
|
-
:size="args.size"
|
|
230
|
-
:variant="args.variant"
|
|
231
|
-
/>
|
|
232
|
-
<rn-sns-link
|
|
233
|
-
type="spotify"
|
|
234
|
-
href="#"
|
|
235
|
-
:size="args.size"
|
|
236
|
-
:variant="args.variant"
|
|
237
|
-
/>
|
|
238
|
-
<rn-sns-link
|
|
239
|
-
type="nicovideo"
|
|
240
|
-
href="#"
|
|
241
|
-
:size="args.size"
|
|
242
|
-
:variant="args.variant"
|
|
243
|
-
/>
|
|
244
|
-
<rn-sns-link
|
|
245
|
-
type="music_line"
|
|
246
|
-
href="#"
|
|
247
|
-
:size="args.size"
|
|
248
|
-
:variant="args.variant"
|
|
249
|
-
/>
|
|
250
|
-
<rn-sns-link
|
|
251
|
-
type="music_apple"
|
|
252
|
-
href="#"
|
|
253
|
-
:size="args.size"
|
|
254
|
-
:variant="args.variant"
|
|
255
|
-
/>
|
|
256
|
-
</div>
|
|
257
|
-
`,
|
|
258
|
-
}),
|
|
259
|
-
}
|