@reni-corp/reni-2c-ui 0.3.291 → 0.4.1

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.
Files changed (242) hide show
  1. package/README.md +131 -0
  2. package/dist/__tests__/helpers/assert-contract.d.ts +9 -0
  3. package/dist/__tests__/helpers/assert-contract.d.ts.map +1 -0
  4. package/dist/__tests__/helpers/contract-helpers.d.ts +45 -0
  5. package/dist/__tests__/helpers/contract-helpers.d.ts.map +1 -0
  6. package/dist/__tests__/setup.d.ts +1 -0
  7. package/dist/__tests__/setup.d.ts.map +1 -0
  8. package/dist/components/elements/Alert.vue.d.ts +14 -36
  9. package/dist/components/elements/Alert.vue.d.ts.map +1 -1
  10. package/dist/components/elements/Button.vue.d.ts +13 -41
  11. package/dist/components/elements/Button.vue.d.ts.map +1 -1
  12. package/dist/components/elements/CheckBox.vue.d.ts +11 -60
  13. package/dist/components/elements/CheckBox.vue.d.ts.map +1 -1
  14. package/dist/components/elements/ComboBox.vue.d.ts +34 -116
  15. package/dist/components/elements/ComboBox.vue.d.ts.map +1 -1
  16. package/dist/components/elements/DescriptionList.vue.d.ts +12 -27
  17. package/dist/components/elements/DescriptionList.vue.d.ts.map +1 -1
  18. package/dist/components/elements/Divider.vue.d.ts +3 -27
  19. package/dist/components/elements/Divider.vue.d.ts.map +1 -1
  20. package/dist/components/elements/Html.vue.d.ts +2 -32
  21. package/dist/components/elements/Html.vue.d.ts.map +1 -1
  22. package/dist/components/elements/Icon.vue.d.ts +4 -28
  23. package/dist/components/elements/Icon.vue.d.ts.map +1 -1
  24. package/dist/components/elements/Image.vue.d.ts +19 -43
  25. package/dist/components/elements/Image.vue.d.ts.map +1 -1
  26. package/dist/components/elements/Label.vue.d.ts +13 -33
  27. package/dist/components/elements/Label.vue.d.ts.map +1 -1
  28. package/dist/components/elements/PasswordField.vue.d.ts +13 -151
  29. package/dist/components/elements/PasswordField.vue.d.ts.map +1 -1
  30. package/dist/components/elements/Progress.vue.d.ts +3 -31
  31. package/dist/components/elements/Progress.vue.d.ts.map +1 -1
  32. package/dist/components/elements/RadioButton.vue.d.ts +17 -28
  33. package/dist/components/elements/RadioButton.vue.d.ts.map +1 -1
  34. package/dist/components/elements/RadioButtonGroup.vue.d.ts +26 -75
  35. package/dist/components/elements/RadioButtonGroup.vue.d.ts.map +1 -1
  36. package/dist/components/elements/SelectBox.vue.d.ts +30 -121
  37. package/dist/components/elements/SelectBox.vue.d.ts.map +1 -1
  38. package/dist/components/elements/SkeletonLoader.vue.d.ts +2 -24
  39. package/dist/components/elements/SkeletonLoader.vue.d.ts.map +1 -1
  40. package/dist/components/elements/SpinButton.vue.d.ts +23 -52
  41. package/dist/components/elements/SpinButton.vue.d.ts.map +1 -1
  42. package/dist/components/elements/Spinner.vue.d.ts +3 -27
  43. package/dist/components/elements/Spinner.vue.d.ts.map +1 -1
  44. package/dist/components/elements/Text.vue.d.ts +12 -34
  45. package/dist/components/elements/Text.vue.d.ts.map +1 -1
  46. package/dist/components/elements/TextField.vue.d.ts +23 -146
  47. package/dist/components/elements/TextField.vue.d.ts.map +1 -1
  48. package/dist/components/elements/ToolChip.vue.d.ts +11 -33
  49. package/dist/components/elements/ToolChip.vue.d.ts.map +1 -1
  50. package/dist/components/features/AnnounceBar.vue.d.ts +11 -29
  51. package/dist/components/features/AnnounceBar.vue.d.ts.map +1 -1
  52. package/dist/components/features/AnnounceBarCollection.vue.d.ts +10 -34
  53. package/dist/components/features/AnnounceBarCollection.vue.d.ts.map +1 -1
  54. package/dist/components/features/Banner.vue.d.ts +22 -0
  55. package/dist/components/features/Banner.vue.d.ts.map +1 -0
  56. package/dist/components/features/BrandLogo.vue.d.ts +2 -24
  57. package/dist/components/features/BrandLogo.vue.d.ts.map +1 -1
  58. package/dist/components/features/CategoryBanner.vue.d.ts +3 -30
  59. package/dist/components/features/CategoryBanner.vue.d.ts.map +1 -1
  60. package/dist/components/features/FloatingBanner.vue.d.ts +3 -21
  61. package/dist/components/features/FloatingBanner.vue.d.ts.map +1 -1
  62. package/dist/components/features/Hero.vue.d.ts +32 -52
  63. package/dist/components/features/Hero.vue.d.ts.map +1 -1
  64. package/dist/components/features/ImageGrid.vue.d.ts +3 -30
  65. package/dist/components/features/ImageGrid.vue.d.ts.map +1 -1
  66. package/dist/components/features/LinkList.vue.d.ts +3 -28
  67. package/dist/components/features/LinkList.vue.d.ts.map +1 -1
  68. package/dist/components/features/Marquee.vue.d.ts +19 -49
  69. package/dist/components/features/Marquee.vue.d.ts.map +1 -1
  70. package/dist/components/features/MediaContent.vue.d.ts +14 -36
  71. package/dist/components/features/MediaContent.vue.d.ts.map +1 -1
  72. package/dist/components/features/ProductLabels.vue.d.ts +1 -19
  73. package/dist/components/features/ProductLabels.vue.d.ts.map +1 -1
  74. package/dist/components/features/ProductList.vue.d.ts +63 -88
  75. package/dist/components/features/ProductList.vue.d.ts.map +1 -1
  76. package/dist/components/features/ProductListItem.vue.d.ts +7 -35
  77. package/dist/components/features/ProductListItem.vue.d.ts.map +1 -1
  78. package/dist/components/features/ProductPurchase.vue.d.ts +12 -43
  79. package/dist/components/features/ProductPurchase.vue.d.ts.map +1 -1
  80. package/dist/components/features/Schedule.vue.d.ts +11 -29
  81. package/dist/components/features/Schedule.vue.d.ts.map +1 -1
  82. package/dist/components/features/ScheduleDateItem.vue.d.ts +2 -26
  83. package/dist/components/features/ScheduleDateItem.vue.d.ts.map +1 -1
  84. package/dist/components/features/ScheduleDelivery.vue.d.ts +10 -26
  85. package/dist/components/features/ScheduleDelivery.vue.d.ts.map +1 -1
  86. package/dist/components/features/ScheduleDeliveryItem.vue.d.ts +2 -24
  87. package/dist/components/features/ScheduleDeliveryItem.vue.d.ts.map +1 -1
  88. package/dist/components/features/SchedulePeriod.vue.d.ts +2 -26
  89. package/dist/components/features/SchedulePeriod.vue.d.ts.map +1 -1
  90. package/dist/components/features/SchedulePickup.vue.d.ts +10 -26
  91. package/dist/components/features/SchedulePickup.vue.d.ts.map +1 -1
  92. package/dist/components/features/SchedulePickupItem.vue.d.ts +2 -24
  93. package/dist/components/features/SchedulePickupItem.vue.d.ts.map +1 -1
  94. package/dist/components/features/Schedules.vue.d.ts +10 -22
  95. package/dist/components/features/Schedules.vue.d.ts.map +1 -1
  96. package/dist/components/features/SnsLink.vue.d.ts +3 -29
  97. package/dist/components/features/SnsLink.vue.d.ts.map +1 -1
  98. package/dist/components/foundation/AppBar.vue.d.ts +15 -40
  99. package/dist/components/foundation/AppBar.vue.d.ts.map +1 -1
  100. package/dist/components/foundation/AppBody.vue.d.ts +9 -4
  101. package/dist/components/foundation/AppBody.vue.d.ts.map +1 -1
  102. package/dist/components/foundation/AppFooter.vue.d.ts +13 -35
  103. package/dist/components/foundation/AppFooter.vue.d.ts.map +1 -1
  104. package/dist/components/foundation/AppFrame.vue.d.ts +10 -5
  105. package/dist/components/foundation/AppFrame.vue.d.ts.map +1 -1
  106. package/dist/components/interactive/Dialog.vue.d.ts +18 -40
  107. package/dist/components/interactive/Dialog.vue.d.ts.map +1 -1
  108. package/dist/components/interactive/Disclosure.vue.d.ts +22 -37
  109. package/dist/components/interactive/Disclosure.vue.d.ts.map +1 -1
  110. package/dist/components/interactive/DropDown.vue.d.ts +20 -34
  111. package/dist/components/interactive/DropDown.vue.d.ts.map +1 -1
  112. package/dist/components/interactive/Gallery.vue.d.ts +2 -34
  113. package/dist/components/interactive/Gallery.vue.d.ts.map +1 -1
  114. package/dist/components/interactive/Lightbox.vue.d.ts +32 -0
  115. package/dist/components/interactive/Lightbox.vue.d.ts.map +1 -0
  116. package/dist/components/interactive/Modal.vue.d.ts +15 -33
  117. package/dist/components/interactive/Modal.vue.d.ts.map +1 -1
  118. package/dist/components/interactive/Notification.vue.d.ts +5 -35
  119. package/dist/components/interactive/Notification.vue.d.ts.map +1 -1
  120. package/dist/components/interactive/Slider.vue.d.ts +32 -28
  121. package/dist/components/interactive/Slider.vue.d.ts.map +1 -1
  122. package/dist/components/interactive/Tab.vue.d.ts +17 -25
  123. package/dist/components/interactive/Tab.vue.d.ts.map +1 -1
  124. package/dist/components/interactive/TabGroup.vue.d.ts +25 -0
  125. package/dist/components/interactive/TabGroup.vue.d.ts.map +1 -0
  126. package/dist/components/interactive/TabPanel.vue.d.ts +9 -3
  127. package/dist/components/interactive/TabPanel.vue.d.ts.map +1 -1
  128. package/dist/components/interactive/TabPanels.vue.d.ts +27 -32
  129. package/dist/components/interactive/TabPanels.vue.d.ts.map +1 -1
  130. package/dist/components/interactive/Tabs.vue.d.ts +31 -31
  131. package/dist/components/interactive/Tabs.vue.d.ts.map +1 -1
  132. package/dist/components/layouts/Card.vue.d.ts +12 -30
  133. package/dist/components/layouts/Card.vue.d.ts.map +1 -1
  134. package/dist/components/layouts/Grid.vue.d.ts +11 -32
  135. package/dist/components/layouts/Grid.vue.d.ts.map +1 -1
  136. package/dist/components/layouts/List.vue.d.ts +28 -42
  137. package/dist/components/layouts/List.vue.d.ts.map +1 -1
  138. package/dist/components/layouts/Page.vue.d.ts +33 -62
  139. package/dist/components/layouts/Page.vue.d.ts.map +1 -1
  140. package/dist/components/layouts/Section.vue.d.ts +22 -41
  141. package/dist/components/layouts/Section.vue.d.ts.map +1 -1
  142. package/dist/components/layouts/Stack.vue.d.ts +12 -40
  143. package/dist/components/layouts/Stack.vue.d.ts.map +1 -1
  144. package/dist/components/navigation/BottomBar.vue.d.ts +10 -26
  145. package/dist/components/navigation/BottomBar.vue.d.ts.map +1 -1
  146. package/dist/components/navigation/Drawer.vue.d.ts +14 -32
  147. package/dist/components/navigation/Drawer.vue.d.ts.map +1 -1
  148. package/dist/components/renderless/DataProvider.vue.d.ts +19 -42
  149. package/dist/components/renderless/DataProvider.vue.d.ts.map +1 -1
  150. package/dist/components/renderless/Form.vue.d.ts +22 -43
  151. package/dist/components/renderless/Form.vue.d.ts.map +1 -1
  152. package/dist/components/renderless/OptionGroupSwitchController.vue.d.ts +20 -43
  153. package/dist/components/renderless/OptionGroupSwitchController.vue.d.ts.map +1 -1
  154. package/dist/composable/useAppNotifications.d.ts +0 -1
  155. package/dist/composable/useToolChip.d.ts +0 -1
  156. package/dist/composables.d.ts +0 -1
  157. package/dist/composables.es.js +5 -6
  158. package/dist/contexts/tabGroup.d.ts +17 -0
  159. package/dist/contexts/tabGroup.d.ts.map +1 -0
  160. package/dist/directives/auto-scale.d.ts +0 -1
  161. package/dist/directives/glitch.d.ts +0 -1
  162. package/dist/{index-a725a791.js → index-D7ldGb8i.js} +18 -30
  163. package/dist/index.d.ts +8 -11
  164. package/dist/index.d.ts.map +1 -1
  165. package/dist/index.es.js +6795 -6735
  166. package/dist/script.es.js +8571 -8506
  167. package/dist/script.umd.js +28 -28
  168. package/dist/style.css +1 -1
  169. package/dist/types.d.ts +0 -1
  170. package/dist/{composables-93778bb4.js → useAppDialogGuidance-Bs1h3YmP.js} +1060 -1044
  171. package/dist/utils.d.ts +46 -1
  172. package/dist/utils.d.ts.map +1 -1
  173. package/dist/validation.d.ts +0 -1
  174. package/dist/valueObjects/CurrencyValue.d.ts +0 -1
  175. package/dist/valueObjects/NumberValue.d.ts +0 -1
  176. package/dist/{valueObjects-e0ea7f1b.js → valueObjects-CvF0zaqR.js} +1 -1
  177. package/dist/valueObjects.es.js +1 -1
  178. package/package.json +29 -28
  179. package/src/stories/Alert.stories.ts +1 -1
  180. package/src/stories/AnnounceBar.stories.ts +1 -1
  181. package/src/stories/AnnounceBarCollection.stories.ts +135 -0
  182. package/src/stories/AppBar.stories.ts +6 -2
  183. package/src/stories/AppFooter.stories.ts +1 -1
  184. package/src/stories/AppFrame.stories.ts +1 -1
  185. package/src/stories/AppLayout.stories.ts +5 -16
  186. package/src/stories/Banner.stories.ts +235 -0
  187. package/src/stories/Button.stories.ts +1 -1
  188. package/src/stories/Card.stories.ts +1 -1
  189. package/src/stories/CheckBox.stories.ts +84 -22
  190. package/src/stories/ComboBox.stories.ts +62 -2
  191. package/src/stories/Dialog.stories.ts +1 -1
  192. package/src/stories/Disclosure.stories.ts +1 -1
  193. package/src/stories/Divider.stories.ts +1 -1
  194. package/src/stories/Drawer.stories.ts +1 -1
  195. package/src/stories/DropDown.stories.ts +1 -1
  196. package/src/stories/FloatingBanner.stories.ts +1 -1
  197. package/src/stories/Form.stories.ts +96 -1
  198. package/src/stories/Gallery.stories.ts +1 -1
  199. package/src/stories/Grid.stories.ts +1 -1
  200. package/src/stories/Hero.stories.ts +175 -26
  201. package/src/stories/Html.stories.ts +69 -1
  202. package/src/stories/Icon.stories.ts +1 -1
  203. package/src/stories/Image.stories.ts +1 -1
  204. package/src/stories/Label.stories.ts +97 -4
  205. package/src/stories/Lightbox.stories.ts +231 -0
  206. package/src/stories/List.stories.ts +62 -15
  207. package/src/stories/Modal.stories.ts +1 -1
  208. package/src/stories/Notification.stories.ts +1 -1
  209. package/src/stories/Page.stories.ts +36 -1
  210. package/src/stories/PasswordField.stories.ts +1 -1
  211. package/src/stories/ProductList.stories.ts +65 -3
  212. package/src/stories/ProductPurchase.stories.ts +2 -2
  213. package/src/stories/Progress.stories.ts +1 -1
  214. package/src/stories/Radio.stories.ts +130 -12
  215. package/src/stories/Section.stories.ts +29 -4
  216. package/src/stories/SelectBox.stories.ts +56 -1
  217. package/src/stories/SkeletonLoader.stories.ts +1 -1
  218. package/src/stories/Slider.stories.ts +365 -7
  219. package/src/stories/SnsLink.stories.ts +1 -1
  220. package/src/stories/SpinButton.stories.ts +1 -1
  221. package/src/stories/Spinner.stories.ts +1 -1
  222. package/src/stories/Stack.stories.ts +1 -1
  223. package/src/stories/Switch.stories.ts +1 -1
  224. package/src/stories/Tab.stories.ts +28 -11
  225. package/src/stories/TabGroup.stories.ts +290 -0
  226. package/src/stories/TabPanels.stories.ts +1 -1
  227. package/src/stories/Tabs.stories.ts +104 -3
  228. package/src/stories/Text.stories.ts +24 -1
  229. package/src/stories/TextArea.stories.ts +78 -1
  230. package/src/stories/TextField.stories.ts +75 -2
  231. package/src/stories/ToolChip.stories.ts +1 -1
  232. package/src/stories/compositions/EventPage.stories.ts +184 -0
  233. package/src/stories/compositions/FormPage.stories.ts +222 -0
  234. package/src/stories/compositions/TopPage.stories.ts +164 -0
  235. package/dist/components/features/CarouselBanner.vue.d.ts +0 -36
  236. package/dist/components/features/CarouselBanner.vue.d.ts.map +0 -1
  237. package/dist/components/features/VariationSelector.vue.d.ts +0 -39
  238. package/dist/components/features/VariationSelector.vue.d.ts.map +0 -1
  239. package/src/stories/Carousel.stories.ts +0 -62
  240. package/src/stories/CarouselBanner.stories.ts +0 -103
  241. package/src/stories/ProductLabels.stories.ts +0 -65
  242. package/src/stories/SoldStacker.stories.ts +0 -68
@@ -0,0 +1,235 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3-vite'
2
+ import Banner from '@/components/features/Banner.vue'
3
+
4
+ const meta: Meta<typeof Banner> = {
5
+ title: 'Features/Banner',
6
+ component: Banner,
7
+ tags: ['autodocs'],
8
+ argTypes: {
9
+ imageUrl: { control: 'text' },
10
+ title: { control: 'text' },
11
+ description: { control: 'text' },
12
+ linkUrl: { control: 'text' },
13
+ variant: {
14
+ control: 'select',
15
+ options: ['default', 'overlay'],
16
+ },
17
+ overlayColor: { control: 'color' },
18
+ overlayPosition: {
19
+ control: 'select',
20
+ options: ['full', 'bottom', 'top'],
21
+ },
22
+ contentHorizontalAlign: {
23
+ control: 'select',
24
+ options: ['left', 'center', 'right'],
25
+ },
26
+ contentVerticalAlign: {
27
+ control: 'select',
28
+ options: ['top', 'center', 'bottom'],
29
+ },
30
+ aspectRatio: {
31
+ control: 'select',
32
+ options: ['16/9', '4/3', '1/1', '3/4', '9/16'],
33
+ },
34
+ },
35
+ args: {
36
+ imageUrl: 'https://placehold.co/800x450',
37
+ title: 'Spring Collection',
38
+ description: '新しいスタイルをあなたに',
39
+ linkUrl: '',
40
+ variant: 'default',
41
+ overlayColor: 'rgba(0, 0, 0, 0.3)',
42
+ overlayPosition: 'full',
43
+ contentHorizontalAlign: 'left',
44
+ contentVerticalAlign: 'bottom',
45
+ aspectRatio: '16/9',
46
+ },
47
+ }
48
+
49
+ export default meta
50
+ type Story = StoryObj<typeof meta>
51
+
52
+ export const 基本: Story = {
53
+ render: (args) => ({
54
+ components: { 'rn-banner': Banner },
55
+ setup() {
56
+ return { args }
57
+ },
58
+ template: `
59
+ <div style="max-width: 400px;">
60
+ <rn-banner v-bind="args" />
61
+ </div>
62
+ `,
63
+ }),
64
+ }
65
+
66
+ export const オーバーレイ_全面: Story = {
67
+ args: {
68
+ variant: 'overlay',
69
+ overlayPosition: 'full',
70
+ overlayColor: 'rgba(0, 0, 0, 0.4)',
71
+ },
72
+ render: (args) => ({
73
+ components: { 'rn-banner': Banner },
74
+ setup() {
75
+ return { args }
76
+ },
77
+ template: `
78
+ <div style="max-width: 400px;">
79
+ <rn-banner v-bind="args" />
80
+ </div>
81
+ `,
82
+ }),
83
+ }
84
+
85
+ export const オーバーレイ_下グラデーション: Story = {
86
+ args: {
87
+ variant: 'overlay',
88
+ overlayPosition: 'bottom',
89
+ overlayColor: 'rgba(0, 0, 0, 0.7)',
90
+ },
91
+ render: (args) => ({
92
+ components: { 'rn-banner': Banner },
93
+ setup() {
94
+ return { args }
95
+ },
96
+ template: `
97
+ <div style="max-width: 400px;">
98
+ <rn-banner v-bind="args" />
99
+ </div>
100
+ `,
101
+ }),
102
+ }
103
+
104
+ export const オーバーレイ_上グラデーション: Story = {
105
+ args: {
106
+ variant: 'overlay',
107
+ overlayPosition: 'top',
108
+ overlayColor: 'rgba(0, 0, 0, 0.7)',
109
+ },
110
+ render: (args) => ({
111
+ components: { 'rn-banner': Banner },
112
+ setup() {
113
+ return { args }
114
+ },
115
+ template: `
116
+ <div style="max-width: 400px;">
117
+ <rn-banner v-bind="args" />
118
+ </div>
119
+ `,
120
+ }),
121
+ }
122
+
123
+ export const オーバーレイ_中央揃え: Story = {
124
+ args: {
125
+ variant: 'overlay',
126
+ overlayPosition: 'full',
127
+ overlayColor: 'rgba(0, 0, 0, 0.5)',
128
+ contentHorizontalAlign: 'center',
129
+ contentVerticalAlign: 'center',
130
+ },
131
+ render: (args) => ({
132
+ components: { 'rn-banner': Banner },
133
+ setup() {
134
+ return { args }
135
+ },
136
+ template: `
137
+ <div style="max-width: 400px;">
138
+ <rn-banner v-bind="args" />
139
+ </div>
140
+ `,
141
+ }),
142
+ }
143
+
144
+ export const 画像のみ: Story = {
145
+ args: {
146
+ title: undefined,
147
+ description: undefined,
148
+ },
149
+ render: (args) => ({
150
+ components: { 'rn-banner': Banner },
151
+ setup() {
152
+ return { args }
153
+ },
154
+ template: `
155
+ <div style="max-width: 400px;">
156
+ <rn-banner v-bind="args" />
157
+ </div>
158
+ `,
159
+ }),
160
+ }
161
+
162
+ export const リンク付き: Story = {
163
+ args: {
164
+ linkUrl: 'https://example.com',
165
+ },
166
+ render: (args) => ({
167
+ components: { 'rn-banner': Banner },
168
+ setup() {
169
+ return { args }
170
+ },
171
+ template: `
172
+ <div style="max-width: 400px;">
173
+ <rn-banner v-bind="args" />
174
+ </div>
175
+ `,
176
+ }),
177
+ }
178
+
179
+ export const 正方形: Story = {
180
+ args: {
181
+ aspectRatio: '1/1',
182
+ imageUrl: 'https://placehold.co/600x600',
183
+ },
184
+ render: (args) => ({
185
+ components: { 'rn-banner': Banner },
186
+ setup() {
187
+ return { args }
188
+ },
189
+ template: `
190
+ <div style="max-width: 400px;">
191
+ <rn-banner v-bind="args" />
192
+ </div>
193
+ `,
194
+ }),
195
+ }
196
+
197
+ export const スライダー内使用例: Story = {
198
+ render: () => ({
199
+ components: { 'rn-banner': Banner },
200
+ setup() {
201
+ const banners = [
202
+ {
203
+ imageUrl: 'https://placehold.co/800x450/e74c3c/fff',
204
+ title: 'Sale',
205
+ description: '最大50%OFF',
206
+ },
207
+ {
208
+ imageUrl: 'https://placehold.co/800x450/3498db/fff',
209
+ title: 'New Arrival',
210
+ description: '新作入荷',
211
+ },
212
+ {
213
+ imageUrl: 'https://placehold.co/800x450/2ecc71/fff',
214
+ title: 'Limited',
215
+ description: '期間限定',
216
+ },
217
+ ]
218
+ return { banners }
219
+ },
220
+ template: `
221
+ <div style="display: flex; gap: 16px; max-width: 900px;">
222
+ <rn-banner
223
+ v-for="(banner, i) in banners"
224
+ :key="i"
225
+ :image-url="banner.imageUrl"
226
+ :title="banner.title"
227
+ :description="banner.description"
228
+ variant="overlay"
229
+ overlay-position="bottom"
230
+ overlay-color="rgba(0, 0, 0, 0.7)"
231
+ />
232
+ </div>
233
+ `,
234
+ }),
235
+ }
@@ -1,4 +1,4 @@
1
- import type { Meta, StoryObj } from '@storybook/vue3'
1
+ import type { Meta, StoryObj } from '@storybook/vue3-vite'
2
2
  import Button, { ButtonProps } from '@/components/elements/Button.vue'
3
3
  import Stack from '@/components/layouts/Stack.vue'
4
4
 
@@ -1,4 +1,4 @@
1
- import type { Meta, StoryObj } from '@storybook/vue3'
1
+ import type { Meta, StoryObj } from '@storybook/vue3-vite'
2
2
  import Card, { CardProps } from '@/components/layouts/Card.vue'
3
3
  import Stack from '@/components/layouts/Stack.vue'
4
4
  import Button from '@/components/elements/Button.vue'
@@ -1,10 +1,10 @@
1
1
  import { ref } from 'vue'
2
- import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import type { Meta, StoryObj } from '@storybook/vue3-vite'
3
3
  import CheckBox, {
4
4
  type CheckBoxProps,
5
5
  } from '@/components/elements/CheckBox.vue'
6
- import { StatusColorOptions } from '@/constants'
7
- import { StatusColor } from '@/types'
6
+ import { ColorOptions } from '@/constants'
7
+ import { Color } from '@/types'
8
8
 
9
9
  const meta: Meta<typeof CheckBox> = {
10
10
  title: 'Elements/CheckBox',
@@ -23,17 +23,42 @@ const meta: Meta<typeof CheckBox> = {
23
23
  },
24
24
  color: {
25
25
  control: 'select',
26
- options: Object.keys(StatusColorOptions) as StatusColor[],
26
+ options: Object.keys(ColorOptions) as Color[],
27
27
  },
28
28
  disabled: {
29
29
  control: 'boolean',
30
30
  },
31
+ required: {
32
+ control: 'boolean',
33
+ },
31
34
  },
32
35
  args: {
33
- label: '',
34
- color: 'info',
36
+ label: '利用規約に同意する',
37
+ color: 'default',
35
38
  disabled: false,
39
+ required: false,
36
40
  },
41
+ render: (args) => ({
42
+ components: { 'rn-checkbox': CheckBox },
43
+ setup() {
44
+ const checkedValue = ref(false)
45
+ return { args, checkedValue }
46
+ },
47
+ template: /* html */ `
48
+ <div class='sb-canvas'>
49
+ <rn-checkbox
50
+ :label=args.label
51
+ :color=args.color
52
+ :disabled=args.disabled
53
+ :required=args.required
54
+ v-model=checkedValue
55
+ />
56
+ <p style='margin-top: 24px;'>
57
+ 選択中:{{ checkedValue }}
58
+ </p>
59
+ </div>
60
+ `,
61
+ }),
37
62
  }
38
63
 
39
64
  export default meta
@@ -46,31 +71,68 @@ type OverridesStory = Omit<Story, 'argTypes'> & {
46
71
  export const 基本: OverridesStory = {
47
72
  args: {},
48
73
  argTypes: {},
74
+ }
75
+
76
+ export const 複数選択: OverridesStory = {
49
77
  render: (args) => ({
50
78
  components: { 'rn-checkbox': CheckBox },
51
79
  setup() {
52
- const selectedValues = ref<boolean[]>([])
53
- return { args, selectedValues }
80
+ const dog = ref(false)
81
+ const cat = ref(false)
82
+ const bird = ref(false)
83
+ return { args, dog, cat, bird }
54
84
  },
55
85
  template: /* html */ `
56
86
  <div class='sb-canvas'>
57
- <rn-checkbox
58
- label="dog"
59
- :color=args.color
60
- :disabled=args.disabled
61
- v-model=selectedValues
62
- />
63
- <rn-checkbox
64
- style='margin-top: 4px;'
65
- label="cat"
66
- :color=args.color
67
- :disabled=args.disabled
68
- v-model=selectedValues
69
- />
87
+ <rn-checkbox label="犬" :color=args.color v-model=dog />
88
+ <rn-checkbox label="" :color=args.color v-model=cat style='margin-top: 4px;' />
89
+ <rn-checkbox label="鳥" :color=args.color v-model=bird style='margin-top: 4px;' />
70
90
  <p style='margin-top: 24px;'>
71
- 選択中:{{ selectedValues.join(' ') }}
91
+ 選択中:{{ [dog && '犬', cat && '猫', bird && '鳥'].filter(Boolean).join(', ') || 'なし' }}
72
92
  </p>
73
93
  </div>
74
94
  `,
75
95
  }),
96
+ argTypes: {},
97
+ }
98
+
99
+ export const カラーバリエーション: OverridesStory = {
100
+ render: () => ({
101
+ components: { 'rn-checkbox': CheckBox },
102
+ setup() {
103
+ const colors = [
104
+ 'default',
105
+ 'primary',
106
+ 'secondary',
107
+ 'warning',
108
+ 'danger',
109
+ 'success',
110
+ 'info',
111
+ ]
112
+ const values = ref<Record<string, boolean>>(
113
+ Object.fromEntries(colors.map((c) => [c, true])),
114
+ )
115
+ return { colors, values }
116
+ },
117
+ template: /* html */ `
118
+ <div class='sb-canvas' style='display: flex; flex-direction: column; gap: 8px;'>
119
+ <rn-checkbox
120
+ v-for="color in colors"
121
+ :key="color"
122
+ :label="color"
123
+ :color="color"
124
+ v-model="values[color]"
125
+ />
126
+ </div>
127
+ `,
128
+ }),
129
+ argTypes: {},
130
+ }
131
+
132
+ export const 無効化: OverridesStory = {
133
+ args: {
134
+ label: '無効化されたチェックボックス',
135
+ disabled: true,
136
+ },
137
+ argTypes: {},
76
138
  }
@@ -1,5 +1,5 @@
1
1
  import { ref } from 'vue'
2
- import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import type { Meta, StoryObj } from '@storybook/vue3-vite'
3
3
  import ComboBox, {
4
4
  type ComboBoxProps,
5
5
  } from '@/components/elements/ComboBox.vue'
@@ -34,6 +34,11 @@ const meta: Meta<typeof ComboBox> = {
34
34
  control: 'text',
35
35
  description: 'ラベルテキスト',
36
36
  },
37
+ variant: {
38
+ control: 'select',
39
+ options: ['default', 'floating'],
40
+ description: 'ラベルのバリアント',
41
+ },
37
42
  itemTitle: {
38
43
  control: 'text',
39
44
  description: 'アイテムの表示名として使用するキー',
@@ -82,6 +87,7 @@ const meta: Meta<typeof ComboBox> = {
82
87
  args: {
83
88
  modelValue: [],
84
89
  label: 'お気に入りの果物',
90
+ variant: 'default',
85
91
  itemTitle: 'label',
86
92
  itemValue: 'value',
87
93
  returnObject: false,
@@ -126,6 +132,7 @@ export const 基本: OverridesStory = {
126
132
  <rn-comboBox
127
133
  v-model="selectedValues"
128
134
  :label="args.label"
135
+ :variant="args.variant"
129
136
  :itemTitle="args.itemTitle"
130
137
  :itemValue="args.itemValue"
131
138
  :returnObject="args.returnObject"
@@ -167,6 +174,7 @@ export const クリア可能: OverridesStory = {
167
174
  <rn-comboBox
168
175
  v-model="selectedValues"
169
176
  :label="args.label"
177
+ :variant="args.variant"
170
178
  :itemTitle="args.itemTitle"
171
179
  :itemValue="args.itemValue"
172
180
  :returnObject="args.returnObject"
@@ -209,6 +217,7 @@ export const 必須チェック: OverridesStory = {
209
217
  <rn-comboBox
210
218
  v-model="selectedValues"
211
219
  :label="args.label"
220
+ :variant="args.variant"
212
221
  :itemTitle="args.itemTitle"
213
222
  :itemValue="args.itemValue"
214
223
  :returnObject="args.returnObject"
@@ -250,6 +259,7 @@ export const returnObjectの場合: OverridesStory = {
250
259
  <rn-comboBox
251
260
  v-model="selectedValues"
252
261
  :label="args.label"
262
+ :variant="args.variant"
253
263
  :itemTitle="args.itemTitle"
254
264
  :itemValue="args.itemValue"
255
265
  :returnObject="args.returnObject"
@@ -290,6 +300,7 @@ export const アイコン付き: OverridesStory = {
290
300
  <rn-comboBox
291
301
  v-model="selectedValues"
292
302
  :label="args.label"
303
+ :variant="args.variant"
293
304
  :itemTitle="args.itemTitle"
294
305
  :itemValue="args.itemValue"
295
306
  :returnObject="args.returnObject"
@@ -347,6 +358,7 @@ export const キーボード操作: OverridesStory = {
347
358
  <rn-comboBox
348
359
  v-model="selectedValues"
349
360
  :label="args.label"
361
+ :variant="args.variant"
350
362
  :itemTitle="args.itemTitle"
351
363
  :itemValue="args.itemValue"
352
364
  :returnObject="args.returnObject"
@@ -367,6 +379,43 @@ export const キーボード操作: OverridesStory = {
367
379
  }),
368
380
  }
369
381
 
382
+ /**
383
+ * フローティングラベル
384
+ * - `variant: 'floating'` でラベルがフィールド内に表示され、フォーカスまたは値入力時に浮き上がる
385
+ */
386
+ export const フローティングラベル: OverridesStory = {
387
+ args: {
388
+ variant: 'floating',
389
+ label: 'お気に入りの果物',
390
+ placeholder: '検索または選択してください',
391
+ },
392
+ argTypes: {},
393
+ render: (args: StoryArgs) => ({
394
+ components: { 'rn-comboBox': ComboBox },
395
+ setup() {
396
+ const selectedValues = ref<string[]>([])
397
+ return { args, selectedValues }
398
+ },
399
+ template: /* html */ `
400
+ <div class='sb-canvas' style="min-height: 320px;">
401
+ <rn-comboBox
402
+ v-model="selectedValues"
403
+ :label="args.label"
404
+ :variant="args.variant"
405
+ :itemTitle="args.itemTitle"
406
+ :itemValue="args.itemValue"
407
+ :items="args.items"
408
+ :autocomplete="args.autocomplete"
409
+ :placeholder="args.placeholder"
410
+ />
411
+ <div style="margin-top: 16px;">
412
+ <strong>選択中:</strong> {{ selectedValues }}
413
+ </div>
414
+ </div>
415
+ `,
416
+ }),
417
+ }
418
+
370
419
  /**
371
420
  * 無効状態
372
421
  * - `disabled: true` で操作を無効化
@@ -388,6 +437,7 @@ export const 無効状態: OverridesStory = {
388
437
  <rn-comboBox
389
438
  v-model="selectedValues"
390
439
  :label="args.label"
440
+ :variant="args.variant"
391
441
  :itemTitle="args.itemTitle"
392
442
  :itemValue="args.itemValue"
393
443
  :returnObject="args.returnObject"
@@ -430,6 +480,7 @@ export const カスタム検索結果なし: OverridesStory = {
430
480
  <rn-comboBox
431
481
  v-model="selectedValues"
432
482
  :label="args.label"
483
+ :variant="args.variant"
433
484
  :itemTitle="args.itemTitle"
434
485
  :itemValue="args.itemValue"
435
486
  :returnObject="args.returnObject"
@@ -486,13 +537,22 @@ export const イベント: OverridesStory = {
486
537
  )
487
538
  }
488
539
 
489
- return { args, selectedValues, eventLog, onOpen, onClose, onSelect, onDeselect }
540
+ return {
541
+ args,
542
+ selectedValues,
543
+ eventLog,
544
+ onOpen,
545
+ onClose,
546
+ onSelect,
547
+ onDeselect,
548
+ }
490
549
  },
491
550
  template: /* html */ `
492
551
  <div class='sb-canvas' style="min-height: 400px;">
493
552
  <rn-comboBox
494
553
  v-model="selectedValues"
495
554
  :label="args.label"
555
+ :variant="args.variant"
496
556
  :itemTitle="args.itemTitle"
497
557
  :itemValue="args.itemValue"
498
558
  :returnObject="args.returnObject"
@@ -1,5 +1,5 @@
1
1
  import { ref } from 'vue'
2
- import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import type { Meta, StoryObj } from '@storybook/vue3-vite'
3
3
  import Dialog, { type DialogProps } from '@/components/interactive/Dialog.vue'
4
4
  import Button from '@/components/elements/Button.vue'
5
5
 
@@ -1,4 +1,4 @@
1
- import type { Meta, StoryObj } from '@storybook/vue3'
1
+ import type { Meta, StoryObj } from '@storybook/vue3-vite'
2
2
  import { ref } from 'vue'
3
3
  import Disclosure, {
4
4
  DisclosureProps,
@@ -1,4 +1,4 @@
1
- import type { Meta, StoryObj } from '@storybook/vue3'
1
+ import type { Meta, StoryObj } from '@storybook/vue3-vite'
2
2
  import Divider, { DividerProps } from '@/components/elements/Divider.vue'
3
3
 
4
4
  const meta: Meta<typeof Divider> = {
@@ -1,4 +1,4 @@
1
- import type { Meta, StoryObj } from '@storybook/vue3'
1
+ import type { Meta, StoryObj } from '@storybook/vue3-vite'
2
2
  import Drawer, { DrawerProps } from '@/components/navigation/Drawer.vue'
3
3
  import Button from '@/components/elements/Button.vue'
4
4
  import Icon from '@/components/elements/Icon.vue'
@@ -1,5 +1,5 @@
1
1
  import { ref } from 'vue'
2
- import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import type { Meta, StoryObj } from '@storybook/vue3-vite'
3
3
  import DropDown, {
4
4
  type DropdownProps,
5
5
  } from '@/components/interactive/DropDown.vue'
@@ -1,4 +1,4 @@
1
- import type { Meta, StoryObj } from '@storybook/vue3'
1
+ import type { Meta, StoryObj } from '@storybook/vue3-vite'
2
2
  import FloatingBanner, {
3
3
  type FloatingBannerProps,
4
4
  } from '@/components/features/FloatingBanner.vue'