@reni-corp/reni-2c-ui 0.4.11 → 0.4.13
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/AnnounceBar.vue.d.ts +2 -0
- package/dist/components/features/AnnounceBar.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/SwipeConfirm.vue.d.ts +38 -0
- package/dist/components/interactive/SwipeConfirm.vue.d.ts.map +1 -0
- 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/composables.es.js +1 -1
- package/dist/{index-D7ldGb8i.js → index-DRqJOqUR.js} +27 -27
- package/dist/index.d.ts +14 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +7710 -10757
- 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 +8631 -11683
- package/dist/script.umd.js +17 -597
- package/dist/style.css +1 -1
- package/dist/{useAppDialogGuidance-Bs1h3YmP.js → useAppDialogGuidance-CVHevNgf.js} +71 -70
- package/dist/utils.d.ts.map +1 -1
- package/dist/valueObjects-XKjx9Hu_.js +66 -0
- package/dist/valueObjects.es.js +1 -1
- package/package.json +10 -13
- package/src/stories/AnnounceBar.stories.ts +52 -1
- 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/SwipeConfirm.stories.ts +144 -0
- 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/dist/valueObjects-CvF0zaqR.js +0 -71
- package/src/stories/SnsLink.stories.ts +0 -259
|
@@ -110,15 +110,15 @@ const generateMockProducts = (count: number) => {
|
|
|
110
110
|
product_code: `ZMY-DESIGN3-${String(i).padStart(3, '0')}`,
|
|
111
111
|
title: `ZUTOMAYO 商品 ${i}`,
|
|
112
112
|
title2: `THE WORLD IS CHANGING ${i}`,
|
|
113
|
-
price_sale:
|
|
113
|
+
price_sale: 1000 + (i * 1234) % 8000,
|
|
114
114
|
price_prefix_freeword: '', // 空文字(CurrencyValueで円記号が自動追加される)
|
|
115
115
|
slide: 1,
|
|
116
116
|
product_url: `https://example.com/products/product_${i}`,
|
|
117
117
|
img_urls: [
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
`/placeholder-400x400.svg`,
|
|
119
|
+
`/placeholder-400x400.svg`,
|
|
120
|
+
`/placeholder-400x400.svg`,
|
|
121
|
+
`/placeholder-400x400.svg`,
|
|
122
122
|
],
|
|
123
123
|
label_urls: labelUrls,
|
|
124
124
|
label_texts: labelTexts,
|
|
@@ -151,6 +151,45 @@ export const 基本リスト: Story = {
|
|
|
151
151
|
}),
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
+
export const NEWバッジ: Story = {
|
|
155
|
+
args: {
|
|
156
|
+
displayMode: 'list',
|
|
157
|
+
promotedLabelIds: ['NEW'],
|
|
158
|
+
data: (() => {
|
|
159
|
+
const products = generateMockProducts(8)
|
|
160
|
+
// 一部の商品に NEW ラベルを追加
|
|
161
|
+
products[0].label_texts = [
|
|
162
|
+
{ id: 'NEW', text: 'NEW' },
|
|
163
|
+
...products[0].label_texts,
|
|
164
|
+
]
|
|
165
|
+
products[2].label_texts = [
|
|
166
|
+
{ id: 'NEW', text: 'NEW' },
|
|
167
|
+
...products[2].label_texts,
|
|
168
|
+
]
|
|
169
|
+
products[5].label_texts = [
|
|
170
|
+
{ id: 'NEW', text: 'NEW' },
|
|
171
|
+
...products[5].label_texts,
|
|
172
|
+
]
|
|
173
|
+
return products
|
|
174
|
+
})(),
|
|
175
|
+
},
|
|
176
|
+
render: (args: StoryArgs) => ({
|
|
177
|
+
components: {
|
|
178
|
+
'rn-product-list': ProductList,
|
|
179
|
+
},
|
|
180
|
+
setup() {
|
|
181
|
+
return { args }
|
|
182
|
+
},
|
|
183
|
+
template: `
|
|
184
|
+
<div class="sb-canvas" style="padding: 20px;">
|
|
185
|
+
<h3>NEWバッジ(promotedLabelIds)</h3>
|
|
186
|
+
<p>label_texts に id: "NEW" を持つ商品に上部バッジが表示されます</p>
|
|
187
|
+
<rn-product-list v-bind="args" />
|
|
188
|
+
</div>
|
|
189
|
+
`,
|
|
190
|
+
}),
|
|
191
|
+
}
|
|
192
|
+
|
|
154
193
|
export const カルーセル: Story = {
|
|
155
194
|
args: {
|
|
156
195
|
displayMode: 'carousel',
|
|
@@ -173,6 +212,33 @@ export const カルーセル: Story = {
|
|
|
173
212
|
}),
|
|
174
213
|
}
|
|
175
214
|
|
|
215
|
+
export const カルーセル_ナビ非表示: Story = {
|
|
216
|
+
args: {
|
|
217
|
+
displayMode: 'carousel',
|
|
218
|
+
paginationType: 'bullets',
|
|
219
|
+
pcRows: 1,
|
|
220
|
+
pcColumns: 4,
|
|
221
|
+
spRows: 1,
|
|
222
|
+
spColumns: 2,
|
|
223
|
+
data: generateMockProducts(4),
|
|
224
|
+
},
|
|
225
|
+
render: (args: StoryArgs) => ({
|
|
226
|
+
components: {
|
|
227
|
+
'rn-product-list': ProductList,
|
|
228
|
+
},
|
|
229
|
+
setup() {
|
|
230
|
+
return { args }
|
|
231
|
+
},
|
|
232
|
+
template: `
|
|
233
|
+
<div class="sb-canvas" style="padding: 20px;">
|
|
234
|
+
<h3>カルーセル(ナビ非表示)</h3>
|
|
235
|
+
<p>アイテム数が1ページに収まる場合、左右の矢印が非表示になります</p>
|
|
236
|
+
<rn-product-list v-bind="args" />
|
|
237
|
+
</div>
|
|
238
|
+
`,
|
|
239
|
+
}),
|
|
240
|
+
}
|
|
241
|
+
|
|
176
242
|
export const カルーセルピーク: Story = {
|
|
177
243
|
args: {
|
|
178
244
|
displayMode: 'carousel-peek',
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { ref } from 'vue'
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite'
|
|
3
|
+
import SwipeConfirm, {
|
|
4
|
+
type SwipeConfirmProps,
|
|
5
|
+
} from '@/components/interactive/SwipeConfirm.vue'
|
|
6
|
+
import { Color } from '@/types'
|
|
7
|
+
import { ColorOptions } from '@/constants'
|
|
8
|
+
|
|
9
|
+
const meta: Meta<typeof SwipeConfirm> = {
|
|
10
|
+
title: 'Interactive/SwipeConfirm',
|
|
11
|
+
component: SwipeConfirm,
|
|
12
|
+
tags: ['autodocs'],
|
|
13
|
+
parameters: {
|
|
14
|
+
docs: {
|
|
15
|
+
description: {
|
|
16
|
+
component:
|
|
17
|
+
'ハンドルを最後までスライドさせると確定するスワイプ確定バー。決済確定・申込確定・入場処理など、誤タップを避けたい「取り消しにくい確定操作」に利用する。確定は一方向(解除は親が v-model で制御)。',
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
argTypes: {
|
|
22
|
+
color: {
|
|
23
|
+
control: 'select',
|
|
24
|
+
options: Object.keys(ColorOptions) as Color[],
|
|
25
|
+
description: '確定時の塗り色',
|
|
26
|
+
},
|
|
27
|
+
label: { control: 'text', description: '未確定時のラベル' },
|
|
28
|
+
confirmedLabel: { control: 'text', description: '確定後のラベル' },
|
|
29
|
+
threshold: {
|
|
30
|
+
control: { type: 'range', min: 0.1, max: 1, step: 0.05 },
|
|
31
|
+
description: '確定とみなすドラッグ割合',
|
|
32
|
+
},
|
|
33
|
+
disabled: { control: 'boolean' },
|
|
34
|
+
reversed: { control: 'boolean', description: '180° 回転(向かい側操作向け)' },
|
|
35
|
+
},
|
|
36
|
+
args: {
|
|
37
|
+
label: 'スワイプでチェックイン',
|
|
38
|
+
confirmedLabel: '入場済み',
|
|
39
|
+
color: 'success',
|
|
40
|
+
threshold: 0.9,
|
|
41
|
+
disabled: false,
|
|
42
|
+
reversed: false,
|
|
43
|
+
},
|
|
44
|
+
render: (args) => ({
|
|
45
|
+
components: { 'rn-swipe-confirm': SwipeConfirm },
|
|
46
|
+
setup() {
|
|
47
|
+
const confirmed = ref(false)
|
|
48
|
+
return { args, confirmed }
|
|
49
|
+
},
|
|
50
|
+
template: /* html */ `
|
|
51
|
+
<div class='sb-canvas' style='max-width: 360px;'>
|
|
52
|
+
<rn-swipe-confirm
|
|
53
|
+
v-model:confirmed='confirmed'
|
|
54
|
+
:label='args.label'
|
|
55
|
+
:confirmedLabel='args.confirmedLabel'
|
|
56
|
+
:color='args.color'
|
|
57
|
+
:threshold='args.threshold'
|
|
58
|
+
:disabled='args.disabled'
|
|
59
|
+
:reversed='args.reversed'
|
|
60
|
+
@confirm="() => {}"
|
|
61
|
+
/>
|
|
62
|
+
<p style='margin-top: 24px;'>confirmed:{{ confirmed }}</p>
|
|
63
|
+
</div>
|
|
64
|
+
`,
|
|
65
|
+
}),
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export default meta
|
|
69
|
+
type StoryArgs = SwipeConfirmProps
|
|
70
|
+
type Story = StoryObj<StoryArgs>
|
|
71
|
+
|
|
72
|
+
export const 基本: Story = {
|
|
73
|
+
args: {},
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export const 確定済み: Story = {
|
|
77
|
+
render: (args) => ({
|
|
78
|
+
components: { 'rn-swipe-confirm': SwipeConfirm },
|
|
79
|
+
setup() {
|
|
80
|
+
const confirmed = ref(true)
|
|
81
|
+
return { args, confirmed }
|
|
82
|
+
},
|
|
83
|
+
template: /* html */ `
|
|
84
|
+
<div class='sb-canvas' style='max-width: 360px;'>
|
|
85
|
+
<rn-swipe-confirm
|
|
86
|
+
v-model:confirmed='confirmed'
|
|
87
|
+
:label='args.label'
|
|
88
|
+
:confirmedLabel='args.confirmedLabel'
|
|
89
|
+
:color='args.color'
|
|
90
|
+
/>
|
|
91
|
+
</div>
|
|
92
|
+
`,
|
|
93
|
+
}),
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export const 無効: Story = {
|
|
97
|
+
args: { disabled: true },
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export const 反転: Story = {
|
|
101
|
+
args: { reversed: true },
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export const 一覧: Story = {
|
|
105
|
+
render: () => ({
|
|
106
|
+
components: { 'rn-swipe-confirm': SwipeConfirm },
|
|
107
|
+
setup() {
|
|
108
|
+
const a = ref(false)
|
|
109
|
+
const b = ref(true)
|
|
110
|
+
const c = ref(false)
|
|
111
|
+
const d = ref(false)
|
|
112
|
+
return { a, b, c, d }
|
|
113
|
+
},
|
|
114
|
+
template: /* html */ `
|
|
115
|
+
<div
|
|
116
|
+
class='sb-canvas'
|
|
117
|
+
style='display: flex; flex-direction: column; gap: 24px; max-width: 360px;'
|
|
118
|
+
>
|
|
119
|
+
<rn-swipe-confirm
|
|
120
|
+
v-model:confirmed='a'
|
|
121
|
+
label='スワイプでチェックイン'
|
|
122
|
+
confirmedLabel='入場済み'
|
|
123
|
+
/>
|
|
124
|
+
<rn-swipe-confirm
|
|
125
|
+
v-model:confirmed='b'
|
|
126
|
+
label='スワイプでチェックイン'
|
|
127
|
+
confirmedLabel='入場済み'
|
|
128
|
+
/>
|
|
129
|
+
<rn-swipe-confirm
|
|
130
|
+
v-model:confirmed='c'
|
|
131
|
+
label='スワイプで決済確定'
|
|
132
|
+
confirmedLabel='決済完了'
|
|
133
|
+
color='primary'
|
|
134
|
+
/>
|
|
135
|
+
<rn-swipe-confirm
|
|
136
|
+
v-model:confirmed='d'
|
|
137
|
+
label='無効状態'
|
|
138
|
+
confirmedLabel='確定済み'
|
|
139
|
+
disabled
|
|
140
|
+
/>
|
|
141
|
+
</div>
|
|
142
|
+
`,
|
|
143
|
+
}),
|
|
144
|
+
}
|
|
@@ -47,11 +47,11 @@ type OverridesStory = Omit<Story, 'argTypes'> & {
|
|
|
47
47
|
|
|
48
48
|
const tabLabels = ['ホーム', 'カテゴリ', 'お気に入り', 'カート', 'マイページ']
|
|
49
49
|
const tabIcons: string[] = [
|
|
50
|
-
'
|
|
51
|
-
'
|
|
52
|
-
'
|
|
53
|
-
'
|
|
54
|
-
'
|
|
50
|
+
'home-outline',
|
|
51
|
+
'bars-outline',
|
|
52
|
+
'star-outline',
|
|
53
|
+
'cart-shopping-outline',
|
|
54
|
+
'user-outline',
|
|
55
55
|
]
|
|
56
56
|
|
|
57
57
|
export const Inline: OverridesStory = {
|
|
@@ -94,7 +94,7 @@ export const WithIconLabel: OverridesStory = {
|
|
|
94
94
|
<rn-tab
|
|
95
95
|
v-for="(_value, index) in new Array(5)"
|
|
96
96
|
:active="slotProps.currentIndex === index"
|
|
97
|
-
:icon="'check'"
|
|
97
|
+
:icon="'check-outline'"
|
|
98
98
|
:label="'Tab ' + index"
|
|
99
99
|
@click=handleVisible(index)
|
|
100
100
|
/>
|
|
@@ -107,6 +107,14 @@ export const WithIconLabel: OverridesStory = {
|
|
|
107
107
|
export const Bottom: OverridesStory = {
|
|
108
108
|
args: {},
|
|
109
109
|
argTypes: {},
|
|
110
|
+
parameters: {
|
|
111
|
+
docs: {
|
|
112
|
+
description: {
|
|
113
|
+
story:
|
|
114
|
+
'variant="icon" でボトムナビゲーション用のスタイルになります。実際のアプリでは AppBottomBar に入れて下端固定で使います。',
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
},
|
|
110
118
|
render: (args: TabsProps) => ({
|
|
111
119
|
components: { 'rn-tabs': Tabs, 'rn-tab': Tab },
|
|
112
120
|
setup() {
|
|
@@ -120,13 +128,14 @@ export const Bottom: OverridesStory = {
|
|
|
120
128
|
<div class='sb-canvas'>
|
|
121
129
|
<rn-tabs
|
|
122
130
|
:modelValue=current
|
|
123
|
-
variant="
|
|
131
|
+
variant="icon"
|
|
132
|
+
:isStretched="true"
|
|
124
133
|
v-slot=slotProps
|
|
125
134
|
>
|
|
126
135
|
<rn-tab
|
|
127
136
|
v-for="(_value, index) in new Array(4)"
|
|
128
137
|
:active="slotProps.currentIndex === index"
|
|
129
|
-
:icon="'check'"
|
|
138
|
+
:icon="'check-outline'"
|
|
130
139
|
:label="'Tab ' + index"
|
|
131
140
|
@click=handleVisible(index)
|
|
132
141
|
/>
|
|
@@ -158,7 +167,7 @@ export const Stretched: OverridesStory = {
|
|
|
158
167
|
<rn-tab
|
|
159
168
|
v-for="(_value, index) in new Array(5)"
|
|
160
169
|
:active="slotProps.currentIndex === index"
|
|
161
|
-
:icon="'check'"
|
|
170
|
+
:icon="'check-outline'"
|
|
162
171
|
:label="'Tab ' + index"
|
|
163
172
|
@click=handleVisible(index)
|
|
164
173
|
/>
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composition Story: ドメイン機能混合ホーム
|
|
3
|
+
*
|
|
4
|
+
* イベント物販アプリのホーム画面を模した構成。
|
|
5
|
+
* 整理券・オーダーシートという複数ドメイン機能を 1 画面に混在させて一覧する。
|
|
6
|
+
*
|
|
7
|
+
* 構成のポイント:
|
|
8
|
+
* - 「呼び出し中」ヒーローカード: Card に data-dark 属性 + success 背景を与え、
|
|
9
|
+
* ダークサーフェスのトークン切り替え(テキスト・Divider が白系に反転)を活用する実例
|
|
10
|
+
* - 待機中カード: Progress による呼び出し待ち人数の可視化
|
|
11
|
+
*/
|
|
12
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite'
|
|
13
|
+
import AppFrame from '@/components/foundation/AppFrame.vue'
|
|
14
|
+
import AppBar from '@/components/foundation/AppBar.vue'
|
|
15
|
+
import AppBody from '@/components/foundation/AppBody.vue'
|
|
16
|
+
import Button from '@/components/elements/Button.vue'
|
|
17
|
+
import Label from '@/components/elements/Label.vue'
|
|
18
|
+
import Text from '@/components/elements/Text.vue'
|
|
19
|
+
import Icon from '@/components/elements/Icon.vue'
|
|
20
|
+
import Divider from '@/components/elements/Divider.vue'
|
|
21
|
+
import Progress from '@/components/elements/Progress.vue'
|
|
22
|
+
import Stack from '@/components/layouts/Stack.vue'
|
|
23
|
+
import Card from '@/components/layouts/Card.vue'
|
|
24
|
+
import Page from '@/components/layouts/Page.vue'
|
|
25
|
+
|
|
26
|
+
const meta: Meta = {
|
|
27
|
+
title: 'Example/ホーム',
|
|
28
|
+
parameters: {
|
|
29
|
+
layout: 'fullscreen',
|
|
30
|
+
},
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export default meta
|
|
34
|
+
type Story = StoryObj
|
|
35
|
+
|
|
36
|
+
export const ドメイン機能混合: Story = {
|
|
37
|
+
render: () => ({
|
|
38
|
+
components: {
|
|
39
|
+
'rn-app-frame': AppFrame,
|
|
40
|
+
'rn-app-bar': AppBar,
|
|
41
|
+
'rn-app-body': AppBody,
|
|
42
|
+
'rn-button': Button,
|
|
43
|
+
'rn-label': Label,
|
|
44
|
+
'rn-text': Text,
|
|
45
|
+
'rn-icon': Icon,
|
|
46
|
+
'rn-divider': Divider,
|
|
47
|
+
'rn-progress': Progress,
|
|
48
|
+
'rn-stack': Stack,
|
|
49
|
+
'rn-card': Card,
|
|
50
|
+
'rn-page': Page,
|
|
51
|
+
},
|
|
52
|
+
template: /* html */ `
|
|
53
|
+
<rn-app-frame>
|
|
54
|
+
<rn-app-bar title="ホーム" />
|
|
55
|
+
|
|
56
|
+
<rn-app-body>
|
|
57
|
+
<rn-page>
|
|
58
|
+
<template #body>
|
|
59
|
+
<rn-stack direction="vertical" gap="md" horizontalReSize="fill">
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
<!-- 呼び出し中: ダークサーフェス(data-dark + success 背景) -->
|
|
63
|
+
<rn-card
|
|
64
|
+
:elevation="true"
|
|
65
|
+
data-dark
|
|
66
|
+
style="background: var(--rn-success); border: none;"
|
|
67
|
+
>
|
|
68
|
+
<rn-stack direction="vertical" gap="md" horizontalReSize="fill">
|
|
69
|
+
<rn-stack
|
|
70
|
+
direction="horizontal"
|
|
71
|
+
horizontalAlign="between"
|
|
72
|
+
verticalAlign="center"
|
|
73
|
+
horizontalReSize="fill"
|
|
74
|
+
>
|
|
75
|
+
<rn-label variant="outline">呼び出し中</rn-label>
|
|
76
|
+
</rn-stack>
|
|
77
|
+
|
|
78
|
+
<rn-stack direction="vertical" gap="xs" horizontalReSize="fill">
|
|
79
|
+
<rn-text size="subtitle" weight="bold">RENI Official Store</rn-text>
|
|
80
|
+
<rn-text size="headline" weight="bold" fontType="accent">
|
|
81
|
+
142
|
|
82
|
+
</rn-text>
|
|
83
|
+
<rn-text color="subtle">
|
|
84
|
+
ただいまお呼び出し中です。入場口へお越しください。
|
|
85
|
+
</rn-text>
|
|
86
|
+
</rn-stack>
|
|
87
|
+
|
|
88
|
+
<!-- data-dark 配下では --rn-text-primary が白に反転し、
|
|
89
|
+
light ボタン(白背景)の文字が見えなくなるため明示的に戻す -->
|
|
90
|
+
<rn-button
|
|
91
|
+
block
|
|
92
|
+
color="light"
|
|
93
|
+
withArrow
|
|
94
|
+
style="--rn-text-primary: var(--rn-grey-800);"
|
|
95
|
+
>
|
|
96
|
+
受け取りへ進む
|
|
97
|
+
</rn-button>
|
|
98
|
+
|
|
99
|
+
<rn-divider />
|
|
100
|
+
|
|
101
|
+
<rn-stack
|
|
102
|
+
direction="horizontal"
|
|
103
|
+
horizontalAlign="between"
|
|
104
|
+
verticalAlign="center"
|
|
105
|
+
horizontalReSize="fill"
|
|
106
|
+
>
|
|
107
|
+
<rn-stack gap="xs" verticalAlign="center">
|
|
108
|
+
<rn-icon icon="clipboard-outline" color="inherit" />
|
|
109
|
+
<rn-text size="body" weight="bold">
|
|
110
|
+
オーダーシート
|
|
111
|
+
</rn-text>
|
|
112
|
+
</rn-stack>
|
|
113
|
+
<rn-stack gap="xs" verticalAlign="center">
|
|
114
|
+
<rn-text size="body" weight="bold">4点 · ¥8,400</rn-text>
|
|
115
|
+
<rn-icon icon="chevron-right-outline" color="inherit" />
|
|
116
|
+
</rn-stack>
|
|
117
|
+
</rn-stack>
|
|
118
|
+
</rn-stack>
|
|
119
|
+
</rn-card>
|
|
120
|
+
|
|
121
|
+
<!-- 呼び出し待ち: Progress で待ち状況を可視化 -->
|
|
122
|
+
<rn-card :elevation="false">
|
|
123
|
+
<rn-stack direction="vertical" gap="md" horizontalReSize="fill">
|
|
124
|
+
<rn-stack gap="sm" verticalAlign="center" direction="vertical">
|
|
125
|
+
<rn-text size="subtitle" weight="bold">Sampleストア A</rn-text>
|
|
126
|
+
<rn-text size="caption" color="subtle">
|
|
127
|
+
幕張メッセ 9-11 ホール · 物販
|
|
128
|
+
</rn-text>
|
|
129
|
+
</rn-stack>
|
|
130
|
+
|
|
131
|
+
<rn-divider />
|
|
132
|
+
|
|
133
|
+
<rn-stack
|
|
134
|
+
direction="horizontal"
|
|
135
|
+
horizontalAlign="between"
|
|
136
|
+
verticalAlign="center"
|
|
137
|
+
horizontalReSize="fill"
|
|
138
|
+
>
|
|
139
|
+
<rn-text size="caption" color="subtle">マイ整理券</rn-text>
|
|
140
|
+
<rn-label size="sm" color="success">呼び出し待ち</rn-label>
|
|
141
|
+
</rn-stack>
|
|
142
|
+
|
|
143
|
+
<rn-stack
|
|
144
|
+
direction="horizontal"
|
|
145
|
+
horizontalAlign="between"
|
|
146
|
+
verticalAlign="center"
|
|
147
|
+
horizontalReSize="fill"
|
|
148
|
+
>
|
|
149
|
+
<rn-text size="headline" weight="bold" fontType="accent">
|
|
150
|
+
C-124
|
|
151
|
+
</rn-text>
|
|
152
|
+
<rn-icon icon="chevron-right-outline" color="subtle" />
|
|
153
|
+
</rn-stack>
|
|
154
|
+
|
|
155
|
+
<rn-stack gap="sm" verticalAlign="center" horizontalReSize="fill">
|
|
156
|
+
<div style="flex: 1;">
|
|
157
|
+
<rn-progress :value="6" :max="12" color="success" />
|
|
158
|
+
</div>
|
|
159
|
+
<rn-text size="caption" color="subtle">あと 6人</rn-text>
|
|
160
|
+
</rn-stack>
|
|
161
|
+
|
|
162
|
+
<rn-divider />
|
|
163
|
+
|
|
164
|
+
<rn-stack
|
|
165
|
+
direction="horizontal"
|
|
166
|
+
horizontalAlign="between"
|
|
167
|
+
verticalAlign="center"
|
|
168
|
+
horizontalReSize="fill"
|
|
169
|
+
>
|
|
170
|
+
<rn-stack gap="xs" verticalAlign="center">
|
|
171
|
+
<rn-icon icon="plus-outline" color="success" />
|
|
172
|
+
<rn-text size="body" weight="bold" color="success">
|
|
173
|
+
オーダーシートを作成
|
|
174
|
+
</rn-text>
|
|
175
|
+
</rn-stack>
|
|
176
|
+
<rn-text size="caption" color="subtle">
|
|
177
|
+
待ち時間に注文を準備
|
|
178
|
+
</rn-text>
|
|
179
|
+
</rn-stack>
|
|
180
|
+
</rn-stack>
|
|
181
|
+
</rn-card>
|
|
182
|
+
|
|
183
|
+
<!-- オーダーシートのみ -->
|
|
184
|
+
<rn-card :elevation="false">
|
|
185
|
+
<rn-stack direction="vertical" gap="md" horizontalReSize="fill">
|
|
186
|
+
<rn-stack gap="sm" verticalAlign="center" direction="vertical">
|
|
187
|
+
<rn-text size="subtitle" weight="bold">Sampleストア B</rn-text>
|
|
188
|
+
<rn-text size="caption" color="subtle">
|
|
189
|
+
渋谷 PARCO 4F · 期間限定
|
|
190
|
+
</rn-text>
|
|
191
|
+
</rn-stack>
|
|
192
|
+
|
|
193
|
+
<rn-divider />
|
|
194
|
+
|
|
195
|
+
<rn-stack
|
|
196
|
+
direction="horizontal"
|
|
197
|
+
horizontalAlign="between"
|
|
198
|
+
verticalAlign="center"
|
|
199
|
+
horizontalReSize="fill"
|
|
200
|
+
>
|
|
201
|
+
<rn-text size="body" color="subtle">オーダーシート</rn-text>
|
|
202
|
+
<rn-stack gap="xs" verticalAlign="center">
|
|
203
|
+
<rn-text size="body" weight="bold">4点 · ¥8,400</rn-text>
|
|
204
|
+
<rn-icon icon="chevron-right-outline" color="subtle" />
|
|
205
|
+
</rn-stack>
|
|
206
|
+
</rn-stack>
|
|
207
|
+
</rn-stack>
|
|
208
|
+
</rn-card>
|
|
209
|
+
|
|
210
|
+
</rn-stack>
|
|
211
|
+
</template>
|
|
212
|
+
</rn-page>
|
|
213
|
+
</rn-app-body>
|
|
214
|
+
</rn-app-frame>
|
|
215
|
+
`,
|
|
216
|
+
}),
|
|
217
|
+
}
|
|
@@ -116,14 +116,14 @@ export const イベント一覧: Story = {
|
|
|
116
116
|
:active="slotProps.currentIndex === 0"
|
|
117
117
|
@click="handleTabChange(0)"
|
|
118
118
|
>
|
|
119
|
-
<rn-icon icon="calendar" />
|
|
119
|
+
<rn-icon icon="calendar-outline" />
|
|
120
120
|
開催予定
|
|
121
121
|
</rn-tab>
|
|
122
122
|
<rn-tab
|
|
123
123
|
:active="slotProps.currentIndex === 1"
|
|
124
124
|
@click="handleTabChange(1)"
|
|
125
125
|
>
|
|
126
|
-
<rn-icon icon="check-
|
|
126
|
+
<rn-icon icon="circle-check-outline" />
|
|
127
127
|
開催済み
|
|
128
128
|
</rn-tab>
|
|
129
129
|
</rn-tabs>
|