@reni-corp/reni-2c-ui 0.3.27 → 0.3.29

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 (101) hide show
  1. package/README.md +139 -16
  2. package/dist/components/elements/Alert.vue.d.ts +21 -3
  3. package/dist/components/elements/Alert.vue.d.ts.map +1 -1
  4. package/dist/components/elements/CheckBox.vue.d.ts +42 -2
  5. package/dist/components/elements/CheckBox.vue.d.ts.map +1 -1
  6. package/dist/components/elements/ComboBox.vue.d.ts +153 -0
  7. package/dist/components/elements/ComboBox.vue.d.ts.map +1 -0
  8. package/dist/components/elements/Icon.vue.d.ts.map +1 -1
  9. package/dist/components/elements/PasswordField.vue.d.ts +75 -25
  10. package/dist/components/elements/PasswordField.vue.d.ts.map +1 -1
  11. package/dist/components/elements/Progress.vue.d.ts +45 -0
  12. package/dist/components/elements/Progress.vue.d.ts.map +1 -0
  13. package/dist/components/elements/SelectBox.vue.d.ts +30 -10
  14. package/dist/components/elements/SelectBox.vue.d.ts.map +1 -1
  15. package/dist/components/elements/SkeletonLoader.vue.d.ts +30 -0
  16. package/dist/components/elements/SkeletonLoader.vue.d.ts.map +1 -0
  17. package/dist/components/elements/SpinButton.vue.d.ts +4 -2
  18. package/dist/components/elements/SpinButton.vue.d.ts.map +1 -1
  19. package/dist/components/elements/TextField.vue.d.ts +21 -6
  20. package/dist/components/elements/TextField.vue.d.ts.map +1 -1
  21. package/dist/components/features/ProductList.vue.d.ts +4 -0
  22. package/dist/components/features/ProductList.vue.d.ts.map +1 -1
  23. package/dist/components/features/ProductListItem.vue.d.ts +4 -0
  24. package/dist/components/features/ProductListItem.vue.d.ts.map +1 -1
  25. package/dist/components/features/ProductPurchase.vue.d.ts +102 -0
  26. package/dist/components/features/ProductPurchase.vue.d.ts.map +1 -0
  27. package/dist/components/foundation/AppBar.vue.d.ts +28 -3
  28. package/dist/components/foundation/AppBar.vue.d.ts.map +1 -1
  29. package/dist/components/foundation/AppFooter.vue.d.ts +51 -1
  30. package/dist/components/foundation/AppFooter.vue.d.ts.map +1 -1
  31. package/dist/components/interactive/Disclosure.vue.d.ts +54 -0
  32. package/dist/components/interactive/Disclosure.vue.d.ts.map +1 -0
  33. package/dist/components/layouts/Page.vue.d.ts +2 -0
  34. package/dist/components/layouts/Page.vue.d.ts.map +1 -1
  35. package/dist/components/renderless/Form.vue.d.ts +27 -1
  36. package/dist/components/renderless/Form.vue.d.ts.map +1 -1
  37. package/dist/index.d.ts +11 -3
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.es.js +7442 -6048
  40. package/dist/script.es.js +8881 -7489
  41. package/dist/script.umd.js +26 -26
  42. package/dist/style.css +1 -1
  43. package/dist/types.d.ts +7 -0
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/utils.d.ts.map +1 -1
  46. package/package.json +22 -13
  47. package/src/stories/Alert.stories.ts +260 -0
  48. package/src/stories/AnnounceBar.stories.ts +138 -0
  49. package/src/stories/AppBar.stories.ts +277 -0
  50. package/src/stories/AppFooter.stories.ts +274 -0
  51. package/src/stories/AppFrame.stories.ts +46 -0
  52. package/src/stories/AppLayout.stories.ts +870 -0
  53. package/src/stories/Button.stories.ts +101 -0
  54. package/src/stories/Card.stories.ts +152 -0
  55. package/src/stories/Carousel.stories.ts +62 -0
  56. package/src/stories/CarouselBanner.stories.ts +103 -0
  57. package/src/stories/CheckBox.stories.ts +76 -0
  58. package/src/stories/ComboBox.stories.ts +524 -0
  59. package/src/stories/Dialog.stories.ts +174 -0
  60. package/src/stories/Disclosure.stories.ts +217 -0
  61. package/src/stories/Divider.stories.ts +68 -0
  62. package/src/stories/Drawer.stories.ts +135 -0
  63. package/src/stories/DropDown.stories.ts +195 -0
  64. package/src/stories/FloatingBanner.stories.ts +79 -0
  65. package/src/stories/Form.stories.ts +704 -0
  66. package/src/stories/Gallery.stories.ts +78 -0
  67. package/src/stories/Grid.stories.ts +357 -0
  68. package/src/stories/Hero.stories.ts +52 -0
  69. package/src/stories/Html.stories.ts +178 -0
  70. package/src/stories/Icon.stories.ts +176 -0
  71. package/src/stories/Image.stories.ts +613 -0
  72. package/src/stories/Label.stories.ts +54 -0
  73. package/src/stories/List.stories.ts +112 -0
  74. package/src/stories/Modal.stories.ts +123 -0
  75. package/src/stories/Notification.stories.ts +82 -0
  76. package/src/stories/Page.stories.ts +414 -0
  77. package/src/stories/PasswordField.stories.ts +304 -0
  78. package/src/stories/ProductLabels.stories.ts +65 -0
  79. package/src/stories/ProductList.stories.ts +679 -0
  80. package/src/stories/ProductPurchase.stories.ts +807 -0
  81. package/src/stories/Progress.stories.ts +192 -0
  82. package/src/stories/Radio.stories.ts +81 -0
  83. package/src/stories/Section.stories.ts +244 -0
  84. package/src/stories/SelectBox.stories.ts +377 -0
  85. package/src/stories/SkeletonLoader.stories.ts +170 -0
  86. package/src/stories/Slider.stories.ts +79 -0
  87. package/src/stories/SnsLink.stories.ts +259 -0
  88. package/src/stories/SoldStacker.stories.ts +68 -0
  89. package/src/stories/SpinButton.stories.ts +134 -0
  90. package/src/stories/Spinner.stories.ts +58 -0
  91. package/src/stories/Stack.stories.ts +104 -0
  92. package/src/stories/Switch.stories.ts +68 -0
  93. package/src/stories/Tab.stories.ts +52 -0
  94. package/src/stories/TabPanels.stories.ts +67 -0
  95. package/src/stories/Tabs.stories.ts +68 -0
  96. package/src/stories/Text.stories.ts +69 -0
  97. package/src/stories/TextArea.stories.ts +78 -0
  98. package/src/stories/TextField.stories.ts +97 -0
  99. package/src/stories/ToolChip.stories.ts +125 -0
  100. package/dist/components/elements/SkeltonLoader.vue.d.ts +0 -7
  101. package/dist/components/elements/SkeltonLoader.vue.d.ts.map +0 -1
@@ -0,0 +1,304 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import PasswordField, {
3
+ type PasswordFieldProps,
4
+ } from '@/components/elements/PasswordField.vue'
5
+ import Stack from '@/components/layouts/Stack.vue'
6
+ import { ref } from 'vue'
7
+
8
+ const meta: Meta<typeof PasswordField> = {
9
+ title: 'Elements/PasswordField',
10
+ component: PasswordField,
11
+ tags: ['autodocs'],
12
+ argTypes: {
13
+ label: {
14
+ control: 'text',
15
+ description: 'ラベルテキスト',
16
+ },
17
+ disabled: {
18
+ control: 'boolean',
19
+ description: '無効状態',
20
+ },
21
+ showStrengthIndicator: {
22
+ control: 'boolean',
23
+ description: 'パスワード強度インジケーターの表示',
24
+ },
25
+ requireStrongPassword: {
26
+ control: 'boolean',
27
+ description: '強いパスワードを必須にする',
28
+ },
29
+ customErrorMessage: {
30
+ control: 'text',
31
+ description: 'カスタムエラーメッセージ',
32
+ },
33
+ },
34
+ args: {
35
+ label: 'パスワード',
36
+ disabled: false,
37
+ showStrengthIndicator: false,
38
+ requireStrongPassword: false,
39
+ customErrorMessage: '',
40
+ },
41
+ }
42
+
43
+ export default meta
44
+ type StoryArgs = PasswordFieldProps & { modelValue?: string }
45
+ type Story = StoryObj<StoryArgs>
46
+ type OverridesStory = Omit<Story, 'argTypes'> & {
47
+ argTypes?: Record<string, any>
48
+ }
49
+
50
+ export const 基本: OverridesStory = {
51
+ args: {
52
+ label: 'パスワード',
53
+ },
54
+ render: (args: StoryArgs) => ({
55
+ components: { 'rn-password-field': PasswordField },
56
+ setup() {
57
+ const password = ref('')
58
+
59
+ const handleInput = (value: string) => {
60
+ console.log('パスワード入力:', value)
61
+ }
62
+
63
+ return { args, password, handleInput }
64
+ },
65
+ template: /* html */ `
66
+ <div class='sb-canvas'>
67
+ <rn-password-field
68
+ v-model="password"
69
+ :label="args.label"
70
+ :disabled="args.disabled"
71
+ :show-strength-indicator="args.showStrengthIndicator"
72
+ :require-strong-password="args.requireStrongPassword"
73
+ :custom-error-message="args.customErrorMessage"
74
+ @update:modelValue="handleInput"
75
+ />
76
+ <div style="margin-top: 16px;">
77
+ <p>入力値: {{ password }}</p>
78
+ </div>
79
+ </div>
80
+ `,
81
+ }),
82
+ }
83
+
84
+ export const 強度インジケーター: OverridesStory = {
85
+ args: {
86
+ label: 'パスワード(強度表示あり)',
87
+ showStrengthIndicator: true,
88
+ },
89
+ argTypes: {
90
+ label: { control: { disable: true } },
91
+ showStrengthIndicator: { control: { disable: true } },
92
+ },
93
+ render: (args: StoryArgs) => ({
94
+ components: { 'rn-password-field': PasswordField, 'rn-stack': Stack },
95
+ setup() {
96
+ const password = ref('')
97
+
98
+ return { args, password }
99
+ },
100
+ template: /* html */ `
101
+ <div class='sb-canvas'>
102
+ <rn-stack direction="vertical" gap="md">
103
+ <div>
104
+ <p>パスワードを入力すると強度が表示されます:</p>
105
+ <ul>
106
+ <li>8文字以上</li>
107
+ <li>英字と数字を含む</li>
108
+ <li>特殊文字を含む</li>
109
+ <li>大文字と小文字を含む</li>
110
+ </ul>
111
+ </div>
112
+ <rn-password-field
113
+ v-model="password"
114
+ :label="args.label"
115
+ :show-strength-indicator="args.showStrengthIndicator"
116
+ />
117
+ <div>
118
+ <p><strong>現在の入力:</strong> {{ password || '(未入力)' }}</p>
119
+ </div>
120
+ </rn-stack>
121
+ </div>
122
+ `,
123
+ }),
124
+ }
125
+
126
+ export const 強いパスワード必須: OverridesStory = {
127
+ args: {
128
+ label: 'パスワード(強い強度必須)',
129
+ showStrengthIndicator: true,
130
+ requireStrongPassword: true,
131
+ },
132
+ argTypes: {
133
+ label: { control: { disable: true } },
134
+ showStrengthIndicator: { control: { disable: true } },
135
+ requireStrongPassword: { control: { disable: true } },
136
+ },
137
+ render: (args: StoryArgs) => ({
138
+ components: { 'rn-password-field': PasswordField, 'rn-stack': Stack },
139
+ setup() {
140
+ const password = ref('')
141
+
142
+ return { args, password }
143
+ },
144
+ template: /* html */ `
145
+ <div class='sb-canvas'>
146
+ <rn-stack direction="vertical" gap="md">
147
+ <div>
148
+ <p><strong>強いパスワードが必須です。</strong></p>
149
+ <p>以下の条件をすべて満たす必要があります:</p>
150
+ <ul>
151
+ <li>8文字以上</li>
152
+ <li>英字と数字を含む</li>
153
+ <li>特殊文字を含む</li>
154
+ <li>大文字と小文字を含む</li>
155
+ </ul>
156
+ <p>例: <code>MyP@ssw0rd123</code></p>
157
+ </div>
158
+ <rn-password-field
159
+ v-model="password"
160
+ :label="args.label"
161
+ :show-strength-indicator="args.showStrengthIndicator"
162
+ :require-strong-password="args.requireStrongPassword"
163
+ />
164
+ <div>
165
+ <p><strong>現在の入力:</strong> {{ password || '(未入力)' }}</p>
166
+ </div>
167
+ </rn-stack>
168
+ </div>
169
+ `,
170
+ }),
171
+ }
172
+
173
+ export const カスタムエラーメッセージ: OverridesStory = {
174
+ args: {
175
+ label: 'パスワード',
176
+ showStrengthIndicator: true,
177
+ requireStrongPassword: true,
178
+ customErrorMessage:
179
+ 'セキュリティのため、より強力なパスワードを設定してください。',
180
+ },
181
+ argTypes: {
182
+ label: { control: { disable: true } },
183
+ showStrengthIndicator: { control: { disable: true } },
184
+ requireStrongPassword: { control: { disable: true } },
185
+ customErrorMessage: { control: { disable: true } },
186
+ },
187
+ render: (args: StoryArgs) => ({
188
+ components: { 'rn-password-field': PasswordField, 'rn-stack': Stack },
189
+ setup() {
190
+ const password = ref('')
191
+
192
+ return { args, password }
193
+ },
194
+ template: /* html */ `
195
+ <div class='sb-canvas'>
196
+ <rn-stack direction="vertical" gap="md">
197
+ <div>
198
+ <p>カスタムエラーメッセージの例:</p>
199
+ <p>弱いパスワードを入力するとカスタムメッセージが表示されます。</p>
200
+ </div>
201
+ <rn-password-field
202
+ v-model="password"
203
+ :label="args.label"
204
+ :show-strength-indicator="args.showStrengthIndicator"
205
+ :require-strong-password="args.requireStrongPassword"
206
+ :custom-error-message="args.customErrorMessage"
207
+ />
208
+ <div>
209
+ <p><strong>現在の入力:</strong> {{ password || '(未入力)' }}</p>
210
+ </div>
211
+ </rn-stack>
212
+ </div>
213
+ `,
214
+ }),
215
+ }
216
+
217
+ export const 無効状態: OverridesStory = {
218
+ args: {
219
+ label: 'パスワード(無効)',
220
+ disabled: true,
221
+ },
222
+ argTypes: {
223
+ label: { control: { disable: true } },
224
+ disabled: { control: { disable: true } },
225
+ },
226
+ render: (args: StoryArgs) => ({
227
+ components: { 'rn-password-field': PasswordField, 'rn-stack': Stack },
228
+ setup() {
229
+ const password = ref('sample123')
230
+
231
+ return { args, password }
232
+ },
233
+ template: /* html */ `
234
+ <div class='sb-canvas'>
235
+ <rn-stack direction="vertical" gap="md">
236
+ <div>
237
+ <p>このパスワードフィールドは無効状態です。入力や表示切り替えができません。</p>
238
+ </div>
239
+ <rn-password-field
240
+ v-model="password"
241
+ :label="args.label"
242
+ :disabled="args.disabled"
243
+ />
244
+ </rn-stack>
245
+ </div>
246
+ `,
247
+ }),
248
+ }
249
+
250
+ export const 比較例: OverridesStory = {
251
+ args: {},
252
+ argTypes: {
253
+ label: { control: { disable: true } },
254
+ disabled: { control: { disable: true } },
255
+ showStrengthIndicator: { control: { disable: true } },
256
+ requireStrongPassword: { control: { disable: true } },
257
+ },
258
+ render: (args: StoryArgs) => ({
259
+ components: { 'rn-password-field': PasswordField, 'rn-stack': Stack },
260
+ setup() {
261
+ const basicPassword = ref('')
262
+ const strengthPassword = ref('')
263
+ const requiredPassword = ref('')
264
+
265
+ return { args, basicPassword, strengthPassword, requiredPassword }
266
+ },
267
+ template: /* html */ `
268
+ <div class='sb-canvas'>
269
+ <rn-stack direction="vertical" gap="lg">
270
+ <div>
271
+ <h3>パスワードフィールドの比較</h3>
272
+ </div>
273
+
274
+ <rn-stack direction="vertical" gap="xs">
275
+ <h4>基本タイプ</h4>
276
+ <rn-password-field
277
+ v-model="basicPassword"
278
+ label="基本パスワード"
279
+ />
280
+ </rn-stack>
281
+
282
+ <rn-stack direction="vertical" gap="xs">
283
+ <h4>強度インジケーター付き</h4>
284
+ <rn-password-field
285
+ v-model="strengthPassword"
286
+ label="強度表示パスワード"
287
+ :show-strength-indicator="true"
288
+ />
289
+ </rn-stack>
290
+
291
+ <rn-stack direction="vertical" gap="xs">
292
+ <h4>強いパスワード必須</h4>
293
+ <rn-password-field
294
+ v-model="requiredPassword"
295
+ label="強力パスワード必須"
296
+ :show-strength-indicator="true"
297
+ :require-strong-password="true"
298
+ />
299
+ </rn-stack>
300
+ </rn-stack>
301
+ </div>
302
+ `,
303
+ }),
304
+ }
@@ -0,0 +1,65 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import ProductLabels, {
3
+ type ProductLabelsProps,
4
+ } from '@/components/features/ProductLabels.vue'
5
+
6
+ const meta: Meta<typeof ProductLabels> = {
7
+ title: 'Features/ProductLabels',
8
+ component: ProductLabels,
9
+ tags: ['autodocs'],
10
+ parameters: {
11
+ docs: {
12
+ description: {
13
+ component: 'プロダクトラベル用コンポーネント',
14
+ },
15
+ },
16
+ },
17
+ argTypes: {
18
+ labelUrls: [
19
+ {
20
+ control: 'text',
21
+ },
22
+ ],
23
+ soldLabelUrl: {
24
+ control: 'text',
25
+ },
26
+ },
27
+ args: {
28
+ labelUrls: [
29
+ 'https://reni-ec-pro.s3-ap-northeast-1.amazonaws.com/banner/63/d1270251298665d51cf9f298a3343257dd4559e4_sp.jpg',
30
+ 'https://reni-ec-pro.s3-ap-northeast-1.amazonaws.com/banner/63/d1270251298665d51cf9f298a3343257dd4559e4_sp.jpg',
31
+ ],
32
+ soldLabelUrl:
33
+ 'https://reni-ec-pro.s3-ap-northeast-1.amazonaws.com/banner/63/d1270251298665d51cf9f298a3343257dd4559e4_sp.jpg',
34
+ },
35
+ render: (args) => ({
36
+ components: { 'rn-product-labels': ProductLabels },
37
+ setup() {
38
+ return { args }
39
+ },
40
+ template: /* html */ `
41
+ <div class='sb-canvas'>
42
+ <div style='height: 100px'>
43
+ <rn-product-labels
44
+ :labelUrls=args.labelUrls
45
+ :soldLabelUrl=args.soldLabelUrl
46
+ />
47
+ </div>
48
+ </div>
49
+ `,
50
+ }),
51
+ }
52
+
53
+ export default meta
54
+ type StoryArgs = ProductLabelsProps
55
+ type Story = StoryObj<StoryArgs>
56
+ type OverridesStory = Omit<Story, 'argTypes'> & {
57
+ argTypes?: Record<string, any>
58
+ }
59
+
60
+ export const 基本: OverridesStory = {
61
+ args: {},
62
+ argTypes: {
63
+ default: { table: { disable: true } },
64
+ },
65
+ }