@westpac/ui 0.4.0 → 0.5.0
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/CHANGELOG.md +6 -0
- package/dist/components/alert/alert.component.js +2 -1
- package/dist/components/alert/alert.styles.js +2 -2
- package/dist/components/compacta/compacta.component.js +4 -3
- package/dist/components/flexi-cell/flexi-cell.component.js +2 -2
- package/dist/components/flexi-cell/flexi-cell.styles.js +1 -1
- package/dist/components/flexi-cell/flexi-cell.types.d.ts +4 -0
- package/dist/components/flexi-cell/index.d.ts +1 -0
- package/dist/components/flexi-cell/index.js +1 -0
- package/dist/components/icon/index.d.ts +1 -0
- package/dist/components/icon/index.js +1 -0
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.js +3 -1
- package/dist/components/list/components/item/item.styles.js +1 -1
- package/dist/components/list/list.styles.js +1 -1
- package/dist/components/repeater/index.d.ts +2 -0
- package/dist/components/repeater/index.js +1 -0
- package/dist/components/repeater/repeater.component.d.ts +3 -0
- package/dist/components/repeater/repeater.component.js +141 -0
- package/dist/components/repeater/repeater.stories.d.ts +13 -0
- package/dist/components/repeater/repeater.stories.js +34 -0
- package/dist/components/repeater/repeater.styles.d.ts +39 -0
- package/dist/components/repeater/repeater.styles.js +31 -0
- package/dist/components/repeater/repeater.types.d.ts +19 -0
- package/dist/components/repeater/repeater.types.js +1 -0
- package/dist/components/repeater/repeater.utils.d.ts +2 -0
- package/dist/components/repeater/repeater.utils.js +2 -0
- package/dist/components/selector/components/index.d.ts +2 -0
- package/dist/components/selector/components/index.js +2 -0
- package/dist/components/selector/components/selector-checkbox-group/components/index.d.ts +1 -0
- package/dist/components/selector/components/selector-checkbox-group/components/index.js +1 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/index.d.ts +2 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/index.js +1 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.component.d.ts +12 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.component.js +67 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.styles.d.ts +59 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.styles.js +57 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.types.d.ts +10 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.types.js +1 -0
- package/dist/components/selector/components/selector-checkbox-group/index.d.ts +2 -0
- package/dist/components/selector/components/selector-checkbox-group/index.js +1 -0
- package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.component.d.ts +15 -0
- package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.component.js +49 -0
- package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.styles.d.ts +3 -0
- package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.styles.js +13 -0
- package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.types.d.ts +20 -0
- package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.types.js +1 -0
- package/dist/components/selector/components/selector-radio-group/components/index.d.ts +1 -0
- package/dist/components/selector/components/selector-radio-group/components/index.js +1 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/index.d.ts +2 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/index.js +1 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.component.d.ts +12 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.component.js +67 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.styles.d.ts +59 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.styles.js +57 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.types.d.ts +15 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.types.js +1 -0
- package/dist/components/selector/components/selector-radio-group/index.d.ts +2 -0
- package/dist/components/selector/components/selector-radio-group/index.js +1 -0
- package/dist/components/selector/components/selector-radio-group/selector-radio-group.component.d.ts +15 -0
- package/dist/components/selector/components/selector-radio-group/selector-radio-group.component.js +58 -0
- package/dist/components/selector/components/selector-radio-group/selector-radio-group.styles.d.ts +13 -0
- package/dist/components/selector/components/selector-radio-group/selector-radio-group.styles.js +18 -0
- package/dist/components/selector/components/selector-radio-group/selector-radio-group.types.d.ts +17 -0
- package/dist/components/selector/components/selector-radio-group/selector-radio-group.types.js +1 -0
- package/dist/components/selector/index.d.ts +2 -0
- package/dist/components/selector/index.js +1 -0
- package/dist/components/selector/selector.component.d.ts +30 -0
- package/dist/components/selector/selector.component.js +34 -0
- package/dist/components/selector/selector.stories.d.ts +57 -0
- package/dist/components/selector/selector.stories.js +515 -0
- package/dist/components/selector/selector.types.d.ts +20 -0
- package/dist/components/selector/selector.types.js +1 -0
- package/dist/css/westpac-ui.css +150 -0
- package/dist/css/westpac-ui.min.css +150 -0
- package/dist/utils/generateId.d.ts +1 -0
- package/dist/utils/generateId.js +6 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/package.json +7 -1
- package/src/components/alert/alert.component.tsx +1 -1
- package/src/components/alert/alert.styles.ts +2 -2
- package/src/components/compacta/compacta.component.tsx +4 -3
- package/src/components/flexi-cell/flexi-cell.component.tsx +2 -1
- package/src/components/flexi-cell/flexi-cell.styles.ts +1 -1
- package/src/components/flexi-cell/flexi-cell.types.ts +4 -0
- package/src/components/flexi-cell/index.ts +1 -0
- package/src/components/icon/index.ts +1 -0
- package/src/components/index.ts +3 -1
- package/src/components/list/components/item/item.styles.ts +1 -1
- package/src/components/list/list.styles.ts +1 -1
- package/src/components/repeater/index.ts +2 -0
- package/src/components/repeater/repeater.component.tsx +121 -0
- package/src/components/repeater/repeater.stories.tsx +49 -0
- package/src/components/repeater/repeater.styles.ts +27 -0
- package/src/components/repeater/repeater.types.ts +20 -0
- package/src/components/repeater/repeater.utils.tsx +3 -0
- package/src/components/selector/components/index.ts +2 -0
- package/src/components/selector/components/selector-checkbox-group/components/index.ts +1 -0
- package/src/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/index.ts +2 -0
- package/src/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.component.tsx +96 -0
- package/src/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.styles.ts +53 -0
- package/src/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.types.ts +15 -0
- package/src/components/selector/components/selector-checkbox-group/index.ts +2 -0
- package/src/components/selector/components/selector-checkbox-group/selector-checkbox-group.component.tsx +46 -0
- package/src/components/selector/components/selector-checkbox-group/selector-checkbox-group.styles.ts +9 -0
- package/src/components/selector/components/selector-checkbox-group/selector-checkbox-group.types.ts +25 -0
- package/src/components/selector/components/selector-radio-group/components/index.ts +1 -0
- package/src/components/selector/components/selector-radio-group/components/selector-radio-group-option/index.ts +2 -0
- package/src/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.component.tsx +90 -0
- package/src/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.styles.ts +53 -0
- package/src/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.types.ts +21 -0
- package/src/components/selector/components/selector-radio-group/index.ts +2 -0
- package/src/components/selector/components/selector-radio-group/selector-radio-group.component.tsx +48 -0
- package/src/components/selector/components/selector-radio-group/selector-radio-group.styles.ts +14 -0
- package/src/components/selector/components/selector-radio-group/selector-radio-group.types.ts +22 -0
- package/src/components/selector/index.ts +2 -0
- package/src/components/selector/selector.component.tsx +34 -0
- package/src/components/selector/selector.stories.tsx +621 -0
- package/src/components/selector/selector.types.ts +24 -0
- package/src/utils/generateId.ts +6 -0
- package/src/utils/index.ts +1 -0
|
@@ -0,0 +1,621 @@
|
|
|
1
|
+
import { type Meta, StoryFn, type StoryObj } from '@storybook/react';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
|
|
4
|
+
import { PersonIcon } from '../icon/index.js';
|
|
5
|
+
import { VisuallyHidden } from '../index.js';
|
|
6
|
+
import { BusPictogram, ChatPictogram, PizzaPictogram } from '../pictogram/index.js';
|
|
7
|
+
|
|
8
|
+
import { Selector } from './selector.component.js';
|
|
9
|
+
|
|
10
|
+
const HERE_IS_A_LABEL_A = 'Here is a label A';
|
|
11
|
+
const HERE_IS_A_LABEL_B = 'Here is a label B';
|
|
12
|
+
const HERE_IS_A_LABEL_C = 'Here is a label C';
|
|
13
|
+
|
|
14
|
+
const meta: Meta<typeof Selector> = {
|
|
15
|
+
title: 'Example/Selector',
|
|
16
|
+
component: Selector,
|
|
17
|
+
tags: ['autodocs'],
|
|
18
|
+
decorators: [(Story: StoryFn) => <Story />],
|
|
19
|
+
parameters: {
|
|
20
|
+
layout: 'padded',
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default meta;
|
|
25
|
+
type Story = StoryObj<typeof meta>;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* > Default usage example
|
|
29
|
+
*/
|
|
30
|
+
export const DefaultStory = () => {
|
|
31
|
+
return (
|
|
32
|
+
<Selector type="checkbox">
|
|
33
|
+
{[
|
|
34
|
+
{ key: 'A', disabled: false },
|
|
35
|
+
{ key: 'B', disabled: false },
|
|
36
|
+
{ key: 'C', disabled: false },
|
|
37
|
+
{ key: 'D', disabled: true },
|
|
38
|
+
].map(({ key, disabled }) => (
|
|
39
|
+
<Selector.Checkbox key={key} body value={key} isDisabled={disabled}>
|
|
40
|
+
<Selector.Label>Something {key}</Selector.Label>
|
|
41
|
+
</Selector.Checkbox>
|
|
42
|
+
))}
|
|
43
|
+
</Selector>
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* > Radio usage example
|
|
49
|
+
*/
|
|
50
|
+
export const RadioStory = () => {
|
|
51
|
+
return (
|
|
52
|
+
<Selector type="radio">
|
|
53
|
+
{[
|
|
54
|
+
{ key: 'A', disabled: false },
|
|
55
|
+
{ key: 'B', disabled: false },
|
|
56
|
+
{ key: 'C', disabled: false },
|
|
57
|
+
{ key: 'D', disabled: true },
|
|
58
|
+
].map(({ key, disabled }) => (
|
|
59
|
+
<Selector.Radio key={key} body value={key} isDisabled={disabled}>
|
|
60
|
+
<Selector.Label>Something {key}</Selector.Label>
|
|
61
|
+
</Selector.Radio>
|
|
62
|
+
))}
|
|
63
|
+
</Selector>
|
|
64
|
+
);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* > Radio usage example
|
|
69
|
+
*/
|
|
70
|
+
export const CheckWithArrowStory = () => {
|
|
71
|
+
return (
|
|
72
|
+
<Selector type="radio">
|
|
73
|
+
{[
|
|
74
|
+
{ key: 'A', disabled: false },
|
|
75
|
+
{ key: 'B', disabled: false },
|
|
76
|
+
{ key: 'C', disabled: false },
|
|
77
|
+
{ key: 'D', disabled: true },
|
|
78
|
+
].map(({ key, disabled }) => (
|
|
79
|
+
<Selector.Radio key={key} body value={key} isDisabled={disabled} checkIcon="arrow">
|
|
80
|
+
<Selector.Label>Something {key}</Selector.Label>
|
|
81
|
+
</Selector.Radio>
|
|
82
|
+
))}
|
|
83
|
+
</Selector>
|
|
84
|
+
);
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* > Radio with state usage example
|
|
89
|
+
*/
|
|
90
|
+
export const RadioWithStateStory = () => {
|
|
91
|
+
const [selectedOption, setSelectedOption] = useState<string>();
|
|
92
|
+
return (
|
|
93
|
+
<>
|
|
94
|
+
{selectedOption}
|
|
95
|
+
<Selector
|
|
96
|
+
type="radio"
|
|
97
|
+
value={selectedOption}
|
|
98
|
+
onChange={value => {
|
|
99
|
+
setSelectedOption(value);
|
|
100
|
+
}}
|
|
101
|
+
>
|
|
102
|
+
{[
|
|
103
|
+
{ key: 'A', disabled: false },
|
|
104
|
+
{ key: 'B', disabled: false },
|
|
105
|
+
{ key: 'C', disabled: false },
|
|
106
|
+
{ key: 'D', disabled: true },
|
|
107
|
+
].map(({ key, disabled }) => (
|
|
108
|
+
<Selector.Radio key={key} body value={key} isDisabled={disabled}>
|
|
109
|
+
<Selector.Label>Something {key}</Selector.Label>
|
|
110
|
+
</Selector.Radio>
|
|
111
|
+
))}
|
|
112
|
+
</Selector>
|
|
113
|
+
</>
|
|
114
|
+
);
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* > Check options with state usage example
|
|
119
|
+
*/
|
|
120
|
+
export const CheckboxWithStateStory = () => {
|
|
121
|
+
const [selectedOptions, setSelectedOptions] = useState<string[]>();
|
|
122
|
+
return (
|
|
123
|
+
<>
|
|
124
|
+
{selectedOptions?.join(',')}
|
|
125
|
+
<Selector
|
|
126
|
+
type="checkbox"
|
|
127
|
+
value={selectedOptions}
|
|
128
|
+
onChange={value => {
|
|
129
|
+
setSelectedOptions(value);
|
|
130
|
+
}}
|
|
131
|
+
>
|
|
132
|
+
{[
|
|
133
|
+
{ key: 'A', disabled: false },
|
|
134
|
+
{ key: 'B', disabled: false },
|
|
135
|
+
{ key: 'C', disabled: false },
|
|
136
|
+
{ key: 'D', disabled: true },
|
|
137
|
+
].map(({ key, disabled }) => (
|
|
138
|
+
<Selector.Checkbox key={key} body value={key} isDisabled={disabled}>
|
|
139
|
+
<Selector.Label>Something {key}</Selector.Label>
|
|
140
|
+
</Selector.Checkbox>
|
|
141
|
+
))}
|
|
142
|
+
</Selector>
|
|
143
|
+
</>
|
|
144
|
+
);
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* > Default usage example
|
|
149
|
+
*/
|
|
150
|
+
export const LongTextStory = () => {
|
|
151
|
+
return (
|
|
152
|
+
<Selector type="checkbox">
|
|
153
|
+
{[
|
|
154
|
+
{ key: 'A', disabled: false },
|
|
155
|
+
{ key: 'B', disabled: false },
|
|
156
|
+
{ key: 'C', disabled: false },
|
|
157
|
+
{ key: 'D', disabled: true },
|
|
158
|
+
].map(({ key, disabled }) => (
|
|
159
|
+
<Selector.Checkbox key={key} body value={key} isDisabled={disabled}>
|
|
160
|
+
<Selector.Label>
|
|
161
|
+
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Maiores architecto eum aperiam consectetur
|
|
162
|
+
quibusdam. Laboriosam saepe, explicabo odio quis doloribus consequuntur quae et necessitatibus quasi
|
|
163
|
+
similique. Debitis non quo recusandae. {key}
|
|
164
|
+
</Selector.Label>
|
|
165
|
+
</Selector.Checkbox>
|
|
166
|
+
))}
|
|
167
|
+
</Selector>
|
|
168
|
+
);
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* > With hint text usage example
|
|
173
|
+
*/
|
|
174
|
+
export const WithHintTextStory = () => {
|
|
175
|
+
return (
|
|
176
|
+
<Selector type="checkbox">
|
|
177
|
+
{[
|
|
178
|
+
{
|
|
179
|
+
label: HERE_IS_A_LABEL_A,
|
|
180
|
+
hint: (
|
|
181
|
+
<>
|
|
182
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
183
|
+
123-456 123456
|
|
184
|
+
</>
|
|
185
|
+
),
|
|
186
|
+
key: 'A',
|
|
187
|
+
disabled: false,
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
label: HERE_IS_A_LABEL_B,
|
|
191
|
+
hint: (
|
|
192
|
+
<>
|
|
193
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
194
|
+
123-456 123456
|
|
195
|
+
</>
|
|
196
|
+
),
|
|
197
|
+
key: 'B',
|
|
198
|
+
disabled: false,
|
|
199
|
+
},
|
|
200
|
+
{ label: HERE_IS_A_LABEL_C, hint: '', key: 'C', disabled: false },
|
|
201
|
+
].map(({ key, disabled, hint, label }) => (
|
|
202
|
+
<Selector.Checkbox key={key} body value={key} isDisabled={disabled}>
|
|
203
|
+
<Selector.Label>{label}</Selector.Label>
|
|
204
|
+
{hint && <Selector.Hint>{hint}</Selector.Hint>}
|
|
205
|
+
</Selector.Checkbox>
|
|
206
|
+
))}
|
|
207
|
+
</Selector>
|
|
208
|
+
);
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* > With pictogram usage example
|
|
213
|
+
*/
|
|
214
|
+
export const WithPictogramStory = () => {
|
|
215
|
+
return (
|
|
216
|
+
<Selector type="checkbox">
|
|
217
|
+
{[
|
|
218
|
+
{
|
|
219
|
+
before: (
|
|
220
|
+
<Selector.Adornment align="top">
|
|
221
|
+
<PizzaPictogram className="h-5 w-5" />
|
|
222
|
+
</Selector.Adornment>
|
|
223
|
+
),
|
|
224
|
+
label: HERE_IS_A_LABEL_A,
|
|
225
|
+
hint: (
|
|
226
|
+
<>
|
|
227
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
228
|
+
123-456 123456
|
|
229
|
+
</>
|
|
230
|
+
),
|
|
231
|
+
key: 'A',
|
|
232
|
+
disabled: false,
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
before: (
|
|
236
|
+
<Selector.Adornment align="top">
|
|
237
|
+
<ChatPictogram className="h-5 w-5" />
|
|
238
|
+
</Selector.Adornment>
|
|
239
|
+
),
|
|
240
|
+
label: HERE_IS_A_LABEL_B,
|
|
241
|
+
hint: (
|
|
242
|
+
<>
|
|
243
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
244
|
+
123-456 123456
|
|
245
|
+
</>
|
|
246
|
+
),
|
|
247
|
+
key: 'B',
|
|
248
|
+
disabled: false,
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
before: (
|
|
252
|
+
<Selector.Adornment align="top">
|
|
253
|
+
<BusPictogram className="h-5 w-5" />
|
|
254
|
+
</Selector.Adornment>
|
|
255
|
+
),
|
|
256
|
+
label: HERE_IS_A_LABEL_C,
|
|
257
|
+
hint: '',
|
|
258
|
+
key: 'C',
|
|
259
|
+
disabled: false,
|
|
260
|
+
},
|
|
261
|
+
].map(({ key, disabled, hint, label, before }) => (
|
|
262
|
+
<Selector.Checkbox before={before} key={key} body value={key} isDisabled={disabled}>
|
|
263
|
+
<Selector.Label>{label}</Selector.Label>
|
|
264
|
+
{hint && <Selector.Hint>{hint}</Selector.Hint>}
|
|
265
|
+
</Selector.Checkbox>
|
|
266
|
+
))}
|
|
267
|
+
</Selector>
|
|
268
|
+
);
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* > With pictogram with different sizes usage example
|
|
273
|
+
*/
|
|
274
|
+
export const WithPictogramDifferentSizesStory = () => {
|
|
275
|
+
return (
|
|
276
|
+
<Selector type="checkbox">
|
|
277
|
+
{[
|
|
278
|
+
{
|
|
279
|
+
before: (
|
|
280
|
+
<Selector.Adornment align="top">
|
|
281
|
+
<PizzaPictogram className="h-15 w-15" />
|
|
282
|
+
</Selector.Adornment>
|
|
283
|
+
),
|
|
284
|
+
label: HERE_IS_A_LABEL_A,
|
|
285
|
+
hint: (
|
|
286
|
+
<>
|
|
287
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
288
|
+
123-456 123456
|
|
289
|
+
</>
|
|
290
|
+
),
|
|
291
|
+
key: 'A',
|
|
292
|
+
disabled: false,
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
before: (
|
|
296
|
+
<Selector.Adornment align="top">
|
|
297
|
+
<ChatPictogram className="h-10 w-10" />
|
|
298
|
+
</Selector.Adornment>
|
|
299
|
+
),
|
|
300
|
+
label: HERE_IS_A_LABEL_B,
|
|
301
|
+
hint: (
|
|
302
|
+
<>
|
|
303
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
304
|
+
123-456 123456
|
|
305
|
+
</>
|
|
306
|
+
),
|
|
307
|
+
key: 'B',
|
|
308
|
+
disabled: false,
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
before: (
|
|
312
|
+
<Selector.Adornment align="top">
|
|
313
|
+
<BusPictogram className="h-5 w-5" />
|
|
314
|
+
</Selector.Adornment>
|
|
315
|
+
),
|
|
316
|
+
label: HERE_IS_A_LABEL_C,
|
|
317
|
+
hint: '',
|
|
318
|
+
key: 'C',
|
|
319
|
+
disabled: false,
|
|
320
|
+
},
|
|
321
|
+
].map(({ key, disabled, hint, label, before }) => (
|
|
322
|
+
<Selector.Checkbox before={before} key={key} body value={key} isDisabled={disabled}>
|
|
323
|
+
<Selector.Label>{label}</Selector.Label>
|
|
324
|
+
{hint && <Selector.Hint>{hint}</Selector.Hint>}
|
|
325
|
+
</Selector.Checkbox>
|
|
326
|
+
))}
|
|
327
|
+
</Selector>
|
|
328
|
+
);
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* > With icon and different size
|
|
333
|
+
*/
|
|
334
|
+
export const WithIconsDifferentSizesStory = () => {
|
|
335
|
+
return (
|
|
336
|
+
<Selector type="checkbox">
|
|
337
|
+
{[
|
|
338
|
+
{
|
|
339
|
+
before: (
|
|
340
|
+
<Selector.Adornment align="top">
|
|
341
|
+
<PersonIcon className="h-15 w-15" />
|
|
342
|
+
</Selector.Adornment>
|
|
343
|
+
),
|
|
344
|
+
label: HERE_IS_A_LABEL_A,
|
|
345
|
+
hint: (
|
|
346
|
+
<>
|
|
347
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
348
|
+
123-456 123456
|
|
349
|
+
</>
|
|
350
|
+
),
|
|
351
|
+
key: 'A',
|
|
352
|
+
disabled: false,
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
before: (
|
|
356
|
+
<Selector.Adornment align="top">
|
|
357
|
+
<PersonIcon className="h-10 w-10" />
|
|
358
|
+
</Selector.Adornment>
|
|
359
|
+
),
|
|
360
|
+
label: HERE_IS_A_LABEL_B,
|
|
361
|
+
hint: (
|
|
362
|
+
<>
|
|
363
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
364
|
+
123-456 123456
|
|
365
|
+
</>
|
|
366
|
+
),
|
|
367
|
+
key: 'B',
|
|
368
|
+
disabled: false,
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
before: (
|
|
372
|
+
<Selector.Adornment align="top">
|
|
373
|
+
<PersonIcon className="h-5 w-5" />
|
|
374
|
+
</Selector.Adornment>
|
|
375
|
+
),
|
|
376
|
+
label: HERE_IS_A_LABEL_C,
|
|
377
|
+
hint: '',
|
|
378
|
+
key: 'C',
|
|
379
|
+
disabled: false,
|
|
380
|
+
},
|
|
381
|
+
].map(({ key, disabled, hint, label, before }) => (
|
|
382
|
+
<Selector.Checkbox before={before} key={key} body value={key} isDisabled={disabled}>
|
|
383
|
+
<Selector.Label>{label}</Selector.Label>
|
|
384
|
+
{hint && <Selector.Hint>{hint}</Selector.Hint>}
|
|
385
|
+
</Selector.Checkbox>
|
|
386
|
+
))}
|
|
387
|
+
</Selector>
|
|
388
|
+
);
|
|
389
|
+
};
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* > With icon and secondary label
|
|
393
|
+
*/
|
|
394
|
+
export const WithIconsAndSecondaryLabelStory = () => {
|
|
395
|
+
return (
|
|
396
|
+
<Selector type="checkbox">
|
|
397
|
+
{[
|
|
398
|
+
{
|
|
399
|
+
before: (
|
|
400
|
+
<Selector.Adornment align="top">
|
|
401
|
+
<PersonIcon className="h-5 w-5" />
|
|
402
|
+
</Selector.Adornment>
|
|
403
|
+
),
|
|
404
|
+
label: HERE_IS_A_LABEL_A,
|
|
405
|
+
after: <Selector.Label>$200,000.00</Selector.Label>,
|
|
406
|
+
hint: (
|
|
407
|
+
<>
|
|
408
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
409
|
+
123-456 123456
|
|
410
|
+
</>
|
|
411
|
+
),
|
|
412
|
+
key: 'A',
|
|
413
|
+
disabled: false,
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
before: (
|
|
417
|
+
<Selector.Adornment align="top">
|
|
418
|
+
<PersonIcon className="h-5 w-5" />
|
|
419
|
+
</Selector.Adornment>
|
|
420
|
+
),
|
|
421
|
+
label: HERE_IS_A_LABEL_B,
|
|
422
|
+
after: <Selector.Label>$200,000.00</Selector.Label>,
|
|
423
|
+
hint: (
|
|
424
|
+
<>
|
|
425
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
426
|
+
123-456 123456
|
|
427
|
+
</>
|
|
428
|
+
),
|
|
429
|
+
key: 'B',
|
|
430
|
+
disabled: false,
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
before: (
|
|
434
|
+
<Selector.Adornment align="top">
|
|
435
|
+
<PersonIcon className="h-5 w-5" />
|
|
436
|
+
</Selector.Adornment>
|
|
437
|
+
),
|
|
438
|
+
label: HERE_IS_A_LABEL_C,
|
|
439
|
+
after: (
|
|
440
|
+
<Selector.Adornment align="center">
|
|
441
|
+
<span>$200,000.00</span>
|
|
442
|
+
</Selector.Adornment>
|
|
443
|
+
),
|
|
444
|
+
hint: (
|
|
445
|
+
<>
|
|
446
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
447
|
+
123-456 7643123
|
|
448
|
+
</>
|
|
449
|
+
),
|
|
450
|
+
key: 'C',
|
|
451
|
+
disabled: false,
|
|
452
|
+
},
|
|
453
|
+
].map(({ key, disabled, hint, label, before, after }) => (
|
|
454
|
+
<Selector.Checkbox before={before} after={after} key={key} body value={key} isDisabled={disabled}>
|
|
455
|
+
<Selector.Label>{label}</Selector.Label>
|
|
456
|
+
{hint && <Selector.Hint>{hint}</Selector.Hint>}
|
|
457
|
+
</Selector.Checkbox>
|
|
458
|
+
))}
|
|
459
|
+
</Selector>
|
|
460
|
+
);
|
|
461
|
+
};
|
|
462
|
+
|
|
463
|
+
/**
|
|
464
|
+
* > Radio example with icons and secondary text
|
|
465
|
+
*/
|
|
466
|
+
export const RadioWithIconsAndSecondaryLabelStory = () => {
|
|
467
|
+
return (
|
|
468
|
+
<Selector type="radio">
|
|
469
|
+
{[
|
|
470
|
+
{
|
|
471
|
+
before: (
|
|
472
|
+
<Selector.Adornment align="top">
|
|
473
|
+
<PersonIcon className="h-5 w-5" />
|
|
474
|
+
</Selector.Adornment>
|
|
475
|
+
),
|
|
476
|
+
label: HERE_IS_A_LABEL_A,
|
|
477
|
+
after: <Selector.Label>$200,000.00</Selector.Label>,
|
|
478
|
+
hint: (
|
|
479
|
+
<>
|
|
480
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
481
|
+
123-456 123456
|
|
482
|
+
</>
|
|
483
|
+
),
|
|
484
|
+
key: 'A',
|
|
485
|
+
disabled: false,
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
before: (
|
|
489
|
+
<Selector.Adornment align="top">
|
|
490
|
+
<PersonIcon className="h-5 w-5" />
|
|
491
|
+
</Selector.Adornment>
|
|
492
|
+
),
|
|
493
|
+
label: HERE_IS_A_LABEL_B,
|
|
494
|
+
after: <Selector.Label>$200,000.00</Selector.Label>,
|
|
495
|
+
hint: (
|
|
496
|
+
<>
|
|
497
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
498
|
+
123-456 123456
|
|
499
|
+
</>
|
|
500
|
+
),
|
|
501
|
+
key: 'B',
|
|
502
|
+
disabled: false,
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
before: (
|
|
506
|
+
<Selector.Adornment align="top">
|
|
507
|
+
<PersonIcon className="h-5 w-5" />
|
|
508
|
+
</Selector.Adornment>
|
|
509
|
+
),
|
|
510
|
+
label: HERE_IS_A_LABEL_C,
|
|
511
|
+
after: (
|
|
512
|
+
<Selector.Adornment align="center">
|
|
513
|
+
<span>$200,000.00</span>
|
|
514
|
+
</Selector.Adornment>
|
|
515
|
+
),
|
|
516
|
+
hint: (
|
|
517
|
+
<>
|
|
518
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
519
|
+
123-456 7643123
|
|
520
|
+
</>
|
|
521
|
+
),
|
|
522
|
+
key: 'C',
|
|
523
|
+
disabled: false,
|
|
524
|
+
},
|
|
525
|
+
].map(({ key, disabled, hint, label, before, after }) => (
|
|
526
|
+
<Selector.Radio
|
|
527
|
+
before={before}
|
|
528
|
+
after={after}
|
|
529
|
+
key={key}
|
|
530
|
+
body
|
|
531
|
+
value={key}
|
|
532
|
+
checkIcon="arrow"
|
|
533
|
+
isDisabled={disabled}
|
|
534
|
+
>
|
|
535
|
+
<Selector.Label>{label}</Selector.Label>
|
|
536
|
+
{hint && <Selector.Hint>{hint}</Selector.Hint>}
|
|
537
|
+
</Selector.Radio>
|
|
538
|
+
))}
|
|
539
|
+
</Selector>
|
|
540
|
+
);
|
|
541
|
+
};
|
|
542
|
+
|
|
543
|
+
/**
|
|
544
|
+
* > Disable state style example
|
|
545
|
+
*/
|
|
546
|
+
export const DisableStateStory = () => {
|
|
547
|
+
return (
|
|
548
|
+
<Selector type="radio" value="A">
|
|
549
|
+
{[
|
|
550
|
+
{
|
|
551
|
+
before: (
|
|
552
|
+
<Selector.Adornment align="top">
|
|
553
|
+
<PersonIcon className="h-5 w-5" />
|
|
554
|
+
</Selector.Adornment>
|
|
555
|
+
),
|
|
556
|
+
label: HERE_IS_A_LABEL_A,
|
|
557
|
+
after: <Selector.Label>$200,000.00</Selector.Label>,
|
|
558
|
+
hint: (
|
|
559
|
+
<>
|
|
560
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
561
|
+
123-456 123456
|
|
562
|
+
</>
|
|
563
|
+
),
|
|
564
|
+
key: 'A',
|
|
565
|
+
disabled: true,
|
|
566
|
+
},
|
|
567
|
+
{
|
|
568
|
+
before: (
|
|
569
|
+
<Selector.Adornment align="top">
|
|
570
|
+
<PersonIcon className="h-5 w-5" />
|
|
571
|
+
</Selector.Adornment>
|
|
572
|
+
),
|
|
573
|
+
label: HERE_IS_A_LABEL_B,
|
|
574
|
+
after: <Selector.Label>$200,000.00</Selector.Label>,
|
|
575
|
+
hint: (
|
|
576
|
+
<>
|
|
577
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
578
|
+
123-456 123456
|
|
579
|
+
</>
|
|
580
|
+
),
|
|
581
|
+
key: 'B',
|
|
582
|
+
disabled: true,
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
before: (
|
|
586
|
+
<Selector.Adornment align="top">
|
|
587
|
+
<PersonIcon className="h-5 w-5" />
|
|
588
|
+
</Selector.Adornment>
|
|
589
|
+
),
|
|
590
|
+
label: HERE_IS_A_LABEL_C,
|
|
591
|
+
after: (
|
|
592
|
+
<Selector.Adornment align="center">
|
|
593
|
+
<span>$200,000.00</span>
|
|
594
|
+
</Selector.Adornment>
|
|
595
|
+
),
|
|
596
|
+
hint: (
|
|
597
|
+
<>
|
|
598
|
+
<VisuallyHidden>Bank Account</VisuallyHidden>
|
|
599
|
+
123-456 7643123
|
|
600
|
+
</>
|
|
601
|
+
),
|
|
602
|
+
key: 'C',
|
|
603
|
+
disabled: true,
|
|
604
|
+
},
|
|
605
|
+
].map(({ key, disabled, hint, label, before, after }) => (
|
|
606
|
+
<Selector.Radio
|
|
607
|
+
before={before}
|
|
608
|
+
after={after}
|
|
609
|
+
key={key}
|
|
610
|
+
body
|
|
611
|
+
value={key}
|
|
612
|
+
checkIcon="arrow"
|
|
613
|
+
isDisabled={disabled}
|
|
614
|
+
>
|
|
615
|
+
<Selector.Label>{label}</Selector.Label>
|
|
616
|
+
{hint && <Selector.Hint>{hint}</Selector.Hint>}
|
|
617
|
+
</Selector.Radio>
|
|
618
|
+
))}
|
|
619
|
+
</Selector>
|
|
620
|
+
);
|
|
621
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
import { type SelectorCheckboxGroupProps, type SelectorRadioGroupProps } from './components/index.js';
|
|
4
|
+
|
|
5
|
+
export type SelectorPropsPerType = {
|
|
6
|
+
checkbox: {
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Type checkbox
|
|
10
|
+
*/
|
|
11
|
+
type: 'checkbox';
|
|
12
|
+
} & SelectorCheckboxGroupProps;
|
|
13
|
+
radio: {
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* Type Radio
|
|
17
|
+
*/
|
|
18
|
+
type: 'radio';
|
|
19
|
+
} & SelectorRadioGroupProps;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type SelectorPropsType = keyof SelectorPropsPerType;
|
|
23
|
+
|
|
24
|
+
export type SelectorProps<K extends SelectorPropsType = SelectorPropsType> = SelectorPropsPerType[K];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { generateID } from './generateId.js';
|