@bacon-pos/ui 0.5.1 → 0.7.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.
Files changed (157) hide show
  1. package/lib/commonjs/components/Dropdown/Dropdown.js +282 -0
  2. package/lib/commonjs/components/Dropdown/Dropdown.js.map +1 -0
  3. package/lib/commonjs/components/Dropdown/Dropdown.stories.js +519 -0
  4. package/lib/commonjs/components/Dropdown/Dropdown.stories.js.map +1 -0
  5. package/lib/commonjs/components/Dropdown/Dropdown.test.js +113 -0
  6. package/lib/commonjs/components/Dropdown/Dropdown.test.js.map +1 -0
  7. package/lib/commonjs/components/Dropdown/index.js +19 -0
  8. package/lib/commonjs/components/Dropdown/index.js.map +1 -0
  9. package/lib/commonjs/components/Menu/Menu.js +214 -0
  10. package/lib/commonjs/components/Menu/Menu.js.map +1 -0
  11. package/lib/commonjs/components/Menu/Menu.test.js +71 -0
  12. package/lib/commonjs/components/Menu/Menu.test.js.map +1 -0
  13. package/lib/commonjs/components/Menu/MenuButton.js +73 -0
  14. package/lib/commonjs/components/Menu/MenuButton.js.map +1 -0
  15. package/lib/commonjs/components/Menu/MenuButton.stories.js +166 -0
  16. package/lib/commonjs/components/Menu/MenuButton.stories.js.map +1 -0
  17. package/lib/commonjs/components/Menu/SelectButton.js +143 -0
  18. package/lib/commonjs/components/Menu/SelectButton.js.map +1 -0
  19. package/lib/commonjs/components/Menu/SelectButton.stories.js +116 -0
  20. package/lib/commonjs/components/Menu/SelectButton.stories.js.map +1 -0
  21. package/lib/commonjs/components/Menu/SelectButton.test.js +80 -0
  22. package/lib/commonjs/components/Menu/SelectButton.test.js.map +1 -0
  23. package/lib/commonjs/components/Menu/UserMenu.js +73 -0
  24. package/lib/commonjs/components/Menu/UserMenu.js.map +1 -0
  25. package/lib/commonjs/components/Menu/UserMenu.stories.js +85 -0
  26. package/lib/commonjs/components/Menu/UserMenu.stories.js.map +1 -0
  27. package/lib/commonjs/components/Menu/UserMenu.test.js +52 -0
  28. package/lib/commonjs/components/Menu/UserMenu.test.js.map +1 -0
  29. package/lib/commonjs/components/Menu/index.js +34 -0
  30. package/lib/commonjs/components/Menu/index.js.map +1 -0
  31. package/lib/commonjs/components/Select/Select.js +246 -0
  32. package/lib/commonjs/components/Select/Select.js.map +1 -0
  33. package/lib/commonjs/components/Select/Select.stories.js +221 -0
  34. package/lib/commonjs/components/Select/Select.stories.js.map +1 -0
  35. package/lib/commonjs/components/Select/Select.test.js +165 -0
  36. package/lib/commonjs/components/Select/Select.test.js.map +1 -0
  37. package/lib/commonjs/components/Select/index.js +13 -0
  38. package/lib/commonjs/components/Select/index.js.map +1 -0
  39. package/lib/commonjs/components/UserChip/UserChip.js +121 -0
  40. package/lib/commonjs/components/UserChip/UserChip.js.map +1 -0
  41. package/lib/commonjs/components/UserChip/UserChip.stories.js +153 -0
  42. package/lib/commonjs/components/UserChip/UserChip.stories.js.map +1 -0
  43. package/lib/commonjs/components/UserChip/UserChip.test.js +59 -0
  44. package/lib/commonjs/components/UserChip/UserChip.test.js.map +1 -0
  45. package/lib/commonjs/components/UserChip/index.js +13 -0
  46. package/lib/commonjs/components/UserChip/index.js.map +1 -0
  47. package/lib/commonjs/components/index.js +57 -13
  48. package/lib/commonjs/components/index.js.map +1 -1
  49. package/lib/module/components/Dropdown/Dropdown.js +277 -0
  50. package/lib/module/components/Dropdown/Dropdown.js.map +1 -0
  51. package/lib/module/components/Dropdown/Dropdown.stories.js +515 -0
  52. package/lib/module/components/Dropdown/Dropdown.stories.js.map +1 -0
  53. package/lib/module/components/Dropdown/Dropdown.test.js +113 -0
  54. package/lib/module/components/Dropdown/Dropdown.test.js.map +1 -0
  55. package/lib/module/components/Dropdown/index.js +4 -0
  56. package/lib/module/components/Dropdown/index.js.map +1 -0
  57. package/lib/module/components/Menu/Menu.js +210 -0
  58. package/lib/module/components/Menu/Menu.js.map +1 -0
  59. package/lib/module/components/Menu/Menu.test.js +71 -0
  60. package/lib/module/components/Menu/Menu.test.js.map +1 -0
  61. package/lib/module/components/Menu/MenuButton.js +69 -0
  62. package/lib/module/components/Menu/MenuButton.js.map +1 -0
  63. package/lib/module/components/Menu/MenuButton.stories.js +162 -0
  64. package/lib/module/components/Menu/MenuButton.stories.js.map +1 -0
  65. package/lib/module/components/Menu/SelectButton.js +139 -0
  66. package/lib/module/components/Menu/SelectButton.js.map +1 -0
  67. package/lib/module/components/Menu/SelectButton.stories.js +112 -0
  68. package/lib/module/components/Menu/SelectButton.stories.js.map +1 -0
  69. package/lib/module/components/Menu/SelectButton.test.js +80 -0
  70. package/lib/module/components/Menu/SelectButton.test.js.map +1 -0
  71. package/lib/module/components/Menu/UserMenu.js +69 -0
  72. package/lib/module/components/Menu/UserMenu.js.map +1 -0
  73. package/lib/module/components/Menu/UserMenu.stories.js +81 -0
  74. package/lib/module/components/Menu/UserMenu.stories.js.map +1 -0
  75. package/lib/module/components/Menu/UserMenu.test.js +52 -0
  76. package/lib/module/components/Menu/UserMenu.test.js.map +1 -0
  77. package/lib/module/components/Menu/index.js +7 -0
  78. package/lib/module/components/Menu/index.js.map +1 -0
  79. package/lib/module/components/Select/Select.js +244 -0
  80. package/lib/module/components/Select/Select.js.map +1 -0
  81. package/lib/module/components/Select/Select.stories.js +217 -0
  82. package/lib/module/components/Select/Select.stories.js.map +1 -0
  83. package/lib/module/components/Select/Select.test.js +165 -0
  84. package/lib/module/components/Select/Select.test.js.map +1 -0
  85. package/lib/module/components/Select/index.js +4 -0
  86. package/lib/module/components/Select/index.js.map +1 -0
  87. package/lib/module/components/UserChip/UserChip.js +117 -0
  88. package/lib/module/components/UserChip/UserChip.js.map +1 -0
  89. package/lib/module/components/UserChip/UserChip.stories.js +149 -0
  90. package/lib/module/components/UserChip/UserChip.stories.js.map +1 -0
  91. package/lib/module/components/UserChip/UserChip.test.js +59 -0
  92. package/lib/module/components/UserChip/UserChip.test.js.map +1 -0
  93. package/lib/module/components/UserChip/index.js +4 -0
  94. package/lib/module/components/UserChip/index.js.map +1 -0
  95. package/lib/module/components/index.js +4 -0
  96. package/lib/module/components/index.js.map +1 -1
  97. package/lib/typescript/commonjs/components/Dropdown/Dropdown.d.ts +105 -0
  98. package/lib/typescript/commonjs/components/Dropdown/Dropdown.d.ts.map +1 -0
  99. package/lib/typescript/commonjs/components/Dropdown/index.d.ts +3 -0
  100. package/lib/typescript/commonjs/components/Dropdown/index.d.ts.map +1 -0
  101. package/lib/typescript/commonjs/components/Menu/Menu.d.ts +66 -0
  102. package/lib/typescript/commonjs/components/Menu/Menu.d.ts.map +1 -0
  103. package/lib/typescript/commonjs/components/Menu/MenuButton.d.ts +46 -0
  104. package/lib/typescript/commonjs/components/Menu/MenuButton.d.ts.map +1 -0
  105. package/lib/typescript/commonjs/components/Menu/SelectButton.d.ts +60 -0
  106. package/lib/typescript/commonjs/components/Menu/SelectButton.d.ts.map +1 -0
  107. package/lib/typescript/commonjs/components/Menu/UserMenu.d.ts +46 -0
  108. package/lib/typescript/commonjs/components/Menu/UserMenu.d.ts.map +1 -0
  109. package/lib/typescript/commonjs/components/Menu/index.d.ts +9 -0
  110. package/lib/typescript/commonjs/components/Menu/index.d.ts.map +1 -0
  111. package/lib/typescript/commonjs/components/Select/Select.d.ts +73 -0
  112. package/lib/typescript/commonjs/components/Select/Select.d.ts.map +1 -0
  113. package/lib/typescript/commonjs/components/Select/index.d.ts +3 -0
  114. package/lib/typescript/commonjs/components/Select/index.d.ts.map +1 -0
  115. package/lib/typescript/commonjs/components/UserChip/UserChip.d.ts +33 -0
  116. package/lib/typescript/commonjs/components/UserChip/UserChip.d.ts.map +1 -0
  117. package/lib/typescript/commonjs/components/UserChip/index.d.ts +3 -0
  118. package/lib/typescript/commonjs/components/UserChip/index.d.ts.map +1 -0
  119. package/lib/typescript/commonjs/components/index.d.ts +4 -0
  120. package/lib/typescript/commonjs/components/index.d.ts.map +1 -1
  121. package/lib/typescript/module/components/Dropdown/Dropdown.d.ts +105 -0
  122. package/lib/typescript/module/components/Dropdown/Dropdown.d.ts.map +1 -0
  123. package/lib/typescript/module/components/Dropdown/index.d.ts +3 -0
  124. package/lib/typescript/module/components/Dropdown/index.d.ts.map +1 -0
  125. package/lib/typescript/module/components/Menu/Menu.d.ts +66 -0
  126. package/lib/typescript/module/components/Menu/Menu.d.ts.map +1 -0
  127. package/lib/typescript/module/components/Menu/MenuButton.d.ts +46 -0
  128. package/lib/typescript/module/components/Menu/MenuButton.d.ts.map +1 -0
  129. package/lib/typescript/module/components/Menu/SelectButton.d.ts +60 -0
  130. package/lib/typescript/module/components/Menu/SelectButton.d.ts.map +1 -0
  131. package/lib/typescript/module/components/Menu/UserMenu.d.ts +46 -0
  132. package/lib/typescript/module/components/Menu/UserMenu.d.ts.map +1 -0
  133. package/lib/typescript/module/components/Menu/index.d.ts +9 -0
  134. package/lib/typescript/module/components/Menu/index.d.ts.map +1 -0
  135. package/lib/typescript/module/components/Select/Select.d.ts +73 -0
  136. package/lib/typescript/module/components/Select/Select.d.ts.map +1 -0
  137. package/lib/typescript/module/components/Select/index.d.ts +3 -0
  138. package/lib/typescript/module/components/Select/index.d.ts.map +1 -0
  139. package/lib/typescript/module/components/UserChip/UserChip.d.ts +33 -0
  140. package/lib/typescript/module/components/UserChip/UserChip.d.ts.map +1 -0
  141. package/lib/typescript/module/components/UserChip/index.d.ts +3 -0
  142. package/lib/typescript/module/components/UserChip/index.d.ts.map +1 -0
  143. package/lib/typescript/module/components/index.d.ts +4 -0
  144. package/lib/typescript/module/components/index.d.ts.map +1 -1
  145. package/package.json +1 -1
  146. package/src/components/Dropdown/Dropdown.tsx +319 -0
  147. package/src/components/Dropdown/index.ts +2 -0
  148. package/src/components/Menu/Menu.tsx +249 -0
  149. package/src/components/Menu/MenuButton.tsx +98 -0
  150. package/src/components/Menu/SelectButton.tsx +171 -0
  151. package/src/components/Menu/UserMenu.tsx +100 -0
  152. package/src/components/Menu/index.ts +14 -0
  153. package/src/components/Select/Select.tsx +323 -0
  154. package/src/components/Select/index.ts +2 -0
  155. package/src/components/UserChip/UserChip.tsx +138 -0
  156. package/src/components/UserChip/index.ts +2 -0
  157. package/src/components/index.ts +4 -0
@@ -0,0 +1,515 @@
1
+ "use strict";
2
+
3
+ import { useState } from 'react';
4
+ import { View } from 'react-native';
5
+ import { Dropdown } from "./Dropdown.js";
6
+ import { Avatar } from "../Avatar/Avatar.js";
7
+ import { useTheme } from "../../theme/index.js";
8
+ import { Text } from "../Text/Text.js";
9
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
+ const USERS = [{
11
+ key: 'juana',
12
+ name: 'Juana Gomez',
13
+ photo: 'https://i.pravatar.cc/100?img=47'
14
+ }, {
15
+ key: 'carlos',
16
+ name: 'Carlos Ruiz',
17
+ photo: 'https://i.pravatar.cc/100?img=12'
18
+ }, {
19
+ key: 'ana',
20
+ name: 'Ana Torres'
21
+ },
22
+ // no photo → initials
23
+ {
24
+ key: 'diego',
25
+ name: 'Diego Peña',
26
+ photo: 'https://i.pravatar.cc/100?img=33'
27
+ }];
28
+ const meta = {
29
+ title: 'Components/Dropdown',
30
+ component: Dropdown
31
+ };
32
+ export default meta;
33
+ /** Faithful Figma replica: star leading, label, green check trailing (default 350 width). */
34
+ export const Default = {
35
+ render: () => {
36
+ const theme = useTheme();
37
+ const options = Array.from({
38
+ length: 6
39
+ }).map((_, i) => ({
40
+ key: String(i),
41
+ label: 'Option',
42
+ leading: {
43
+ kind: 'icon',
44
+ name: 'star'
45
+ },
46
+ trailing: {
47
+ kind: 'icon',
48
+ name: 'check',
49
+ color: theme.colors.feedback.success
50
+ }
51
+ }));
52
+ return /*#__PURE__*/_jsx(View, {
53
+ style: {
54
+ padding: 24
55
+ },
56
+ children: /*#__PURE__*/_jsx(Dropdown, {
57
+ options: options
58
+ })
59
+ });
60
+ }
61
+ };
62
+
63
+ /** Select menu (e.g. opened from an Input select): tapping sets the checked row. */
64
+ export const Select = {
65
+ render: () => {
66
+ const theme = useTheme();
67
+ const items = ['Small', 'Medium', 'Large', 'Extra large'];
68
+ const [sel, setSel] = useState('Medium');
69
+ const options = items.map(label => ({
70
+ key: label,
71
+ label,
72
+ selected: label === sel,
73
+ trailing: label === sel ? {
74
+ kind: 'icon',
75
+ name: 'check',
76
+ color: theme.colors.feedback.success
77
+ } : undefined
78
+ }));
79
+ return /*#__PURE__*/_jsxs(View, {
80
+ style: {
81
+ padding: 24
82
+ },
83
+ children: [/*#__PURE__*/_jsx(Dropdown, {
84
+ options: options,
85
+ onSelect: setSel
86
+ }), /*#__PURE__*/_jsxs(Text, {
87
+ variant: "caption",
88
+ color: "secondary",
89
+ style: {
90
+ marginTop: 8
91
+ },
92
+ children: ["selected: ", sel]
93
+ })]
94
+ });
95
+ }
96
+ };
97
+
98
+ /** Multi-select: trailing checkbox; tapping anywhere on the row toggles it. */
99
+ export const MultiSelect = {
100
+ render: () => {
101
+ const items = ['Cheese', 'Bacon', 'Egg', 'Avocado'];
102
+ const [checked, setChecked] = useState({
103
+ Bacon: true
104
+ });
105
+ const options = items.map(label => ({
106
+ key: label,
107
+ label,
108
+ trailing: {
109
+ kind: 'checkbox',
110
+ checked: Boolean(checked[label]),
111
+ onChange: v => setChecked(c => ({
112
+ ...c,
113
+ [label]: v
114
+ }))
115
+ }
116
+ }));
117
+ return /*#__PURE__*/_jsx(View, {
118
+ style: {
119
+ padding: 24
120
+ },
121
+ children: /*#__PURE__*/_jsx(Dropdown, {
122
+ options: options
123
+ })
124
+ });
125
+ }
126
+ };
127
+
128
+ /** Settings menu: trailing switch per row. */
129
+ export const Toggles = {
130
+ render: () => {
131
+ const items = ['Notifications', 'Sound', 'Auto-print receipt'];
132
+ const [on, setOn] = useState({
133
+ Notifications: true
134
+ });
135
+ const options = items.map(label => ({
136
+ key: label,
137
+ label,
138
+ trailing: {
139
+ kind: 'switch',
140
+ value: Boolean(on[label]),
141
+ onChange: v => setOn(s => ({
142
+ ...s,
143
+ [label]: v
144
+ }))
145
+ }
146
+ }));
147
+ return /*#__PURE__*/_jsx(View, {
148
+ style: {
149
+ padding: 24
150
+ },
151
+ children: /*#__PURE__*/_jsx(Dropdown, {
152
+ options: options
153
+ })
154
+ });
155
+ }
156
+ };
157
+
158
+ /** Custom width via param. */
159
+ export const CustomWidth = {
160
+ render: () => {
161
+ const options = ['Profile', 'Billing', 'Log out'].map(label => ({
162
+ key: label,
163
+ label
164
+ }));
165
+ return /*#__PURE__*/_jsx(View, {
166
+ style: {
167
+ padding: 24
168
+ },
169
+ children: /*#__PURE__*/_jsx(Dropdown, {
170
+ options: options,
171
+ width: 240,
172
+ onSelect: () => {}
173
+ })
174
+ });
175
+ }
176
+ };
177
+
178
+ /** Long labels truncate with an ellipsis (single line). */
179
+ export const Ellipsis = {
180
+ render: () => {
181
+ const theme = useTheme();
182
+ const options = [{
183
+ key: '1',
184
+ label: 'This is a really long option label that will not fit',
185
+ leading: {
186
+ kind: 'icon',
187
+ name: 'star'
188
+ },
189
+ trailing: {
190
+ kind: 'icon',
191
+ name: 'check',
192
+ color: theme.colors.feedback.success
193
+ }
194
+ }, {
195
+ key: '2',
196
+ label: 'Another very very very long option that overflows the row',
197
+ trailing: {
198
+ kind: 'checkbox',
199
+ checked: false,
200
+ onChange: () => {}
201
+ }
202
+ }];
203
+ return /*#__PURE__*/_jsx(View, {
204
+ style: {
205
+ padding: 24
206
+ },
207
+ children: /*#__PURE__*/_jsx(Dropdown, {
208
+ options: options,
209
+ width: 260
210
+ })
211
+ });
212
+ }
213
+ };
214
+
215
+ /** Action menu (e.g. from an IconButton): leading icons + a destructive row. */
216
+ export const ActionMenu = {
217
+ render: () => {
218
+ const options = [{
219
+ key: 'edit',
220
+ label: 'Edit',
221
+ leading: {
222
+ kind: 'icon',
223
+ name: 'edit'
224
+ }
225
+ }, {
226
+ key: 'duplicate',
227
+ label: 'Duplicate',
228
+ leading: {
229
+ kind: 'icon',
230
+ name: 'copy-01'
231
+ }
232
+ }, {
233
+ key: 'settings',
234
+ label: 'Settings',
235
+ leading: {
236
+ kind: 'icon',
237
+ name: 'settings'
238
+ }
239
+ }, {
240
+ key: 'div',
241
+ type: 'divider'
242
+ }, {
243
+ key: 'delete',
244
+ label: 'Delete',
245
+ leading: {
246
+ kind: 'icon',
247
+ name: 'trash'
248
+ },
249
+ destructive: true
250
+ }];
251
+ return /*#__PURE__*/_jsx(View, {
252
+ style: {
253
+ padding: 24
254
+ },
255
+ children: /*#__PURE__*/_jsx(Dropdown, {
256
+ options: options,
257
+ width: 260,
258
+ onSelect: () => {}
259
+ })
260
+ });
261
+ }
262
+ };
263
+
264
+ /** Text only — no slots. */
265
+ export const TextOnly = {
266
+ render: () => {
267
+ const options = ['Profile', 'Billing', 'Log out'].map(label => ({
268
+ key: label,
269
+ label
270
+ }));
271
+ return /*#__PURE__*/_jsx(View, {
272
+ style: {
273
+ padding: 24
274
+ },
275
+ children: /*#__PURE__*/_jsx(Dropdown, {
276
+ options: options,
277
+ width: 240,
278
+ onSelect: () => {}
279
+ })
280
+ });
281
+ }
282
+ };
283
+
284
+ /** Grouped with section headers and a divider. */
285
+ export const Grouped = {
286
+ render: () => {
287
+ const options = [{
288
+ key: 'h1',
289
+ type: 'header',
290
+ label: 'ACCOUNT'
291
+ }, {
292
+ key: 'profile',
293
+ label: 'Profile',
294
+ leading: {
295
+ kind: 'icon',
296
+ name: 'user'
297
+ }
298
+ }, {
299
+ key: 'settings',
300
+ label: 'Settings',
301
+ leading: {
302
+ kind: 'icon',
303
+ name: 'settings'
304
+ }
305
+ }, {
306
+ key: 'div',
307
+ type: 'divider'
308
+ }, {
309
+ key: 'h2',
310
+ type: 'header',
311
+ label: 'SESSION'
312
+ }, {
313
+ key: 'logout',
314
+ label: 'Log out',
315
+ destructive: true
316
+ }];
317
+ return /*#__PURE__*/_jsx(View, {
318
+ style: {
319
+ padding: 24
320
+ },
321
+ children: /*#__PURE__*/_jsx(Dropdown, {
322
+ options: options,
323
+ width: 280,
324
+ showDividers: false,
325
+ onSelect: () => {}
326
+ })
327
+ });
328
+ }
329
+ };
330
+
331
+ /** Two-line rows (label + description). */
332
+ export const TwoLine = {
333
+ render: () => {
334
+ const options = [{
335
+ key: 'card',
336
+ label: 'Credit card',
337
+ description: 'Visa ending in 4242',
338
+ leading: {
339
+ kind: 'icon',
340
+ name: 'star'
341
+ }
342
+ }, {
343
+ key: 'cash',
344
+ label: 'Cash',
345
+ description: 'Pay at the counter',
346
+ leading: {
347
+ kind: 'icon',
348
+ name: 'star'
349
+ }
350
+ }];
351
+ return /*#__PURE__*/_jsx(View, {
352
+ style: {
353
+ padding: 24
354
+ },
355
+ children: /*#__PURE__*/_jsx(Dropdown, {
356
+ options: options,
357
+ onSelect: () => {}
358
+ })
359
+ });
360
+ }
361
+ };
362
+
363
+ /** Long list — scrolls beyond maxHeight. */
364
+ export const Scrollable = {
365
+ render: () => {
366
+ const options = Array.from({
367
+ length: 20
368
+ }).map((_, i) => ({
369
+ key: String(i),
370
+ label: `Option ${i + 1}`
371
+ }));
372
+ return /*#__PURE__*/_jsx(View, {
373
+ style: {
374
+ padding: 24
375
+ },
376
+ children: /*#__PURE__*/_jsx(Dropdown, {
377
+ options: options,
378
+ width: 300,
379
+ maxHeight: 280,
380
+ onSelect: () => {}
381
+ })
382
+ });
383
+ }
384
+ };
385
+
386
+ /** User picker — an Avatar (custom leading slot) per row, check on the selected. */
387
+ export const WithAvatars = {
388
+ render: () => {
389
+ const theme = useTheme();
390
+ const [sel, setSel] = useState('juana');
391
+ const options = USERS.map(u => ({
392
+ key: u.key,
393
+ label: u.name,
394
+ selected: u.key === sel,
395
+ leading: {
396
+ kind: 'custom',
397
+ node: /*#__PURE__*/_jsx(Avatar, {
398
+ size: "sm",
399
+ name: u.name,
400
+ source: u.photo ? {
401
+ uri: u.photo
402
+ } : undefined
403
+ })
404
+ },
405
+ trailing: u.key === sel ? {
406
+ kind: 'icon',
407
+ name: 'check',
408
+ color: theme.colors.feedback.success
409
+ } : undefined
410
+ }));
411
+ return /*#__PURE__*/_jsx(View, {
412
+ style: {
413
+ padding: 24
414
+ },
415
+ children: /*#__PURE__*/_jsx(Dropdown, {
416
+ options: options,
417
+ width: 320,
418
+ onSelect: setSel
419
+ })
420
+ });
421
+ }
422
+ };
423
+
424
+ /** Assign to several people — Avatar leading + checkbox trailing. */
425
+ export const AssignUsers = {
426
+ render: () => {
427
+ const [checked, setChecked] = useState({
428
+ juana: true,
429
+ ana: true
430
+ });
431
+ const options = USERS.map(u => ({
432
+ key: u.key,
433
+ label: u.name,
434
+ leading: {
435
+ kind: 'custom',
436
+ node: /*#__PURE__*/_jsx(Avatar, {
437
+ size: "sm",
438
+ name: u.name,
439
+ source: u.photo ? {
440
+ uri: u.photo
441
+ } : undefined
442
+ })
443
+ },
444
+ trailing: {
445
+ kind: 'checkbox',
446
+ checked: Boolean(checked[u.key]),
447
+ onChange: v => setChecked(c => ({
448
+ ...c,
449
+ [u.key]: v
450
+ }))
451
+ }
452
+ }));
453
+ return /*#__PURE__*/_jsx(View, {
454
+ style: {
455
+ padding: 24
456
+ },
457
+ children: /*#__PURE__*/_jsx(Dropdown, {
458
+ options: options,
459
+ width: 320
460
+ })
461
+ });
462
+ }
463
+ };
464
+
465
+ /** Icon + actionable on both sides, and a custom leading node. */
466
+ export const CustomAndBothSides = {
467
+ render: () => {
468
+ const [fav, setFav] = useState({});
469
+ const options = [{
470
+ key: 'a',
471
+ label: 'Table 1',
472
+ leading: {
473
+ kind: 'custom',
474
+ node: /*#__PURE__*/_jsx(View, {
475
+ style: {
476
+ width: 12,
477
+ height: 12,
478
+ borderRadius: 6,
479
+ backgroundColor: '#008C57'
480
+ }
481
+ })
482
+ },
483
+ trailing: {
484
+ kind: 'checkbox',
485
+ checked: Boolean(fav.a),
486
+ onChange: v => setFav(f => ({
487
+ ...f,
488
+ a: v
489
+ }))
490
+ }
491
+ }, {
492
+ key: 'b',
493
+ label: 'Table 2',
494
+ leading: {
495
+ kind: 'icon',
496
+ name: 'star'
497
+ },
498
+ trailing: {
499
+ kind: 'iconButton',
500
+ name: 'edit',
501
+ onPress: () => {},
502
+ accessibilityLabel: 'Edit table 2'
503
+ }
504
+ }];
505
+ return /*#__PURE__*/_jsx(View, {
506
+ style: {
507
+ padding: 24
508
+ },
509
+ children: /*#__PURE__*/_jsx(Dropdown, {
510
+ options: options
511
+ })
512
+ });
513
+ }
514
+ };
515
+ //# sourceMappingURL=Dropdown.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","View","Dropdown","Avatar","useTheme","Text","jsx","_jsx","jsxs","_jsxs","USERS","key","name","photo","meta","title","component","Default","render","theme","options","Array","from","length","map","_","i","String","label","leading","kind","trailing","color","colors","feedback","success","style","padding","children","Select","items","sel","setSel","selected","undefined","onSelect","variant","marginTop","MultiSelect","checked","setChecked","Bacon","Boolean","onChange","v","c","Toggles","on","setOn","Notifications","value","s","CustomWidth","width","Ellipsis","ActionMenu","type","destructive","TextOnly","Grouped","showDividers","TwoLine","description","Scrollable","maxHeight","WithAvatars","u","node","size","source","uri","AssignUsers","juana","ana","CustomAndBothSides","fav","setFav","height","borderRadius","backgroundColor","a","f","onPress","accessibilityLabel"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Dropdown/Dropdown.stories.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+
3
+ import { render, fireEvent, screen } from '@testing-library/react-native';
4
+ import { ThemeProvider } from "../../theme/index.js";
5
+ import { Dropdown, DropdownItem } from "./Dropdown.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ function wrap(ui) {
8
+ return render(/*#__PURE__*/_jsx(ThemeProvider, {
9
+ children: ui
10
+ }));
11
+ }
12
+ describe('DropdownItem', () => {
13
+ it('renders the label and fires onPress', () => {
14
+ const onPress = jest.fn();
15
+ wrap(/*#__PURE__*/_jsx(DropdownItem, {
16
+ label: "Edit",
17
+ onPress: onPress
18
+ }));
19
+ fireEvent.press(screen.getByText('Edit'));
20
+ expect(onPress).toHaveBeenCalledTimes(1);
21
+ });
22
+ it('renders a description as a second line', () => {
23
+ wrap(/*#__PURE__*/_jsx(DropdownItem, {
24
+ label: "Credit card",
25
+ description: "Visa ending in 4242"
26
+ }));
27
+ expect(screen.getByText('Visa ending in 4242')).toBeTruthy();
28
+ });
29
+ it('row press toggles a trailing checkbox when no onPress is given', () => {
30
+ const onChange = jest.fn();
31
+ wrap(/*#__PURE__*/_jsx(DropdownItem, {
32
+ label: "Bacon",
33
+ trailing: {
34
+ kind: 'checkbox',
35
+ checked: false,
36
+ onChange
37
+ }
38
+ }));
39
+ fireEvent.press(screen.getByText('Bacon'));
40
+ expect(onChange).toHaveBeenCalledWith(true);
41
+ });
42
+ it('row press toggles a trailing switch when no onPress is given', () => {
43
+ const onChange = jest.fn();
44
+ wrap(/*#__PURE__*/_jsx(DropdownItem, {
45
+ label: "Sound",
46
+ trailing: {
47
+ kind: 'switch',
48
+ value: true,
49
+ onChange
50
+ }
51
+ }));
52
+ fireEvent.press(screen.getByText('Sound'));
53
+ expect(onChange).toHaveBeenCalledWith(false);
54
+ });
55
+ it('does not fire when disabled', () => {
56
+ const onPress = jest.fn();
57
+ wrap(/*#__PURE__*/_jsx(DropdownItem, {
58
+ label: "Edit",
59
+ onPress: onPress,
60
+ disabled: true
61
+ }));
62
+ fireEvent.press(screen.getByText('Edit'));
63
+ expect(onPress).not.toHaveBeenCalled();
64
+ });
65
+ });
66
+ describe('Dropdown', () => {
67
+ const options = [{
68
+ key: 'a',
69
+ label: 'Alpha'
70
+ }, {
71
+ key: 'b',
72
+ label: 'Beta'
73
+ }, {
74
+ key: 'c',
75
+ label: 'Gamma'
76
+ }];
77
+ it('renders every item', () => {
78
+ wrap(/*#__PURE__*/_jsx(Dropdown, {
79
+ options: options
80
+ }));
81
+ expect(screen.getByText('Alpha')).toBeTruthy();
82
+ expect(screen.getByText('Beta')).toBeTruthy();
83
+ expect(screen.getByText('Gamma')).toBeTruthy();
84
+ });
85
+ it('calls onSelect with the pressed key', () => {
86
+ const onSelect = jest.fn();
87
+ wrap(/*#__PURE__*/_jsx(Dropdown, {
88
+ options: options,
89
+ onSelect: onSelect
90
+ }));
91
+ fireEvent.press(screen.getByText('Beta'));
92
+ expect(onSelect).toHaveBeenCalledWith('b');
93
+ });
94
+ it('renders section headers and does not treat them as items', () => {
95
+ const withHeader = [{
96
+ key: 'h',
97
+ type: 'header',
98
+ label: 'GROUP'
99
+ }, {
100
+ key: 'x',
101
+ label: 'Item X'
102
+ }];
103
+ const onSelect = jest.fn();
104
+ wrap(/*#__PURE__*/_jsx(Dropdown, {
105
+ options: withHeader,
106
+ onSelect: onSelect
107
+ }));
108
+ expect(screen.getByText('GROUP')).toBeTruthy();
109
+ fireEvent.press(screen.getByText('GROUP'));
110
+ expect(onSelect).not.toHaveBeenCalled();
111
+ });
112
+ });
113
+ //# sourceMappingURL=Dropdown.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["render","fireEvent","screen","ThemeProvider","Dropdown","DropdownItem","jsx","_jsx","wrap","ui","children","describe","it","onPress","jest","fn","label","press","getByText","expect","toHaveBeenCalledTimes","description","toBeTruthy","onChange","trailing","kind","checked","toHaveBeenCalledWith","value","disabled","not","toHaveBeenCalled","options","key","onSelect","withHeader","type"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Dropdown/Dropdown.test.tsx"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,SAAS,EAAEC,MAAM,QAAQ,+BAA+B;AACzE,SAASC,aAAa,QAAQ,sBAAa;AAC3C,SAASC,QAAQ,EAAEC,YAAY,QAA4B,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAExE,SAASC,IAAIA,CAACC,EAAsB,EAAE;EACpC,OAAOT,MAAM,cAACO,IAAA,CAACJ,aAAa;IAAAO,QAAA,EAAED;EAAE,CAAgB,CAAC,CAAC;AACpD;AAEAE,QAAQ,CAAC,cAAc,EAAE,MAAM;EAC7BC,EAAE,CAAC,qCAAqC,EAAE,MAAM;IAC9C,MAAMC,OAAO,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;IACzBP,IAAI,cAACD,IAAA,CAACF,YAAY;MAACW,KAAK,EAAC,MAAM;MAACH,OAAO,EAAEA;IAAQ,CAAE,CAAC,CAAC;IACrDZ,SAAS,CAACgB,KAAK,CAACf,MAAM,CAACgB,SAAS,CAAC,MAAM,CAAC,CAAC;IACzCC,MAAM,CAACN,OAAO,CAAC,CAACO,qBAAqB,CAAC,CAAC,CAAC;EAC1C,CAAC,CAAC;EAEFR,EAAE,CAAC,wCAAwC,EAAE,MAAM;IACjDJ,IAAI,cAACD,IAAA,CAACF,YAAY;MAACW,KAAK,EAAC,aAAa;MAACK,WAAW,EAAC;IAAqB,CAAE,CAAC,CAAC;IAC5EF,MAAM,CAACjB,MAAM,CAACgB,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAACI,UAAU,CAAC,CAAC;EAC9D,CAAC,CAAC;EAEFV,EAAE,CAAC,gEAAgE,EAAE,MAAM;IACzE,MAAMW,QAAQ,GAAGT,IAAI,CAACC,EAAE,CAAC,CAAC;IAC1BP,IAAI,cACFD,IAAA,CAACF,YAAY;MAACW,KAAK,EAAC,OAAO;MAACQ,QAAQ,EAAE;QAAEC,IAAI,EAAE,UAAU;QAAEC,OAAO,EAAE,KAAK;QAAEH;MAAS;IAAE,CAAE,CACzF,CAAC;IACDtB,SAAS,CAACgB,KAAK,CAACf,MAAM,CAACgB,SAAS,CAAC,OAAO,CAAC,CAAC;IAC1CC,MAAM,CAACI,QAAQ,CAAC,CAACI,oBAAoB,CAAC,IAAI,CAAC;EAC7C,CAAC,CAAC;EAEFf,EAAE,CAAC,8DAA8D,EAAE,MAAM;IACvE,MAAMW,QAAQ,GAAGT,IAAI,CAACC,EAAE,CAAC,CAAC;IAC1BP,IAAI,cAACD,IAAA,CAACF,YAAY;MAACW,KAAK,EAAC,OAAO;MAACQ,QAAQ,EAAE;QAAEC,IAAI,EAAE,QAAQ;QAAEG,KAAK,EAAE,IAAI;QAAEL;MAAS;IAAE,CAAE,CAAC,CAAC;IACzFtB,SAAS,CAACgB,KAAK,CAACf,MAAM,CAACgB,SAAS,CAAC,OAAO,CAAC,CAAC;IAC1CC,MAAM,CAACI,QAAQ,CAAC,CAACI,oBAAoB,CAAC,KAAK,CAAC;EAC9C,CAAC,CAAC;EAEFf,EAAE,CAAC,6BAA6B,EAAE,MAAM;IACtC,MAAMC,OAAO,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;IACzBP,IAAI,cAACD,IAAA,CAACF,YAAY;MAACW,KAAK,EAAC,MAAM;MAACH,OAAO,EAAEA,OAAQ;MAACgB,QAAQ;IAAA,CAAE,CAAC,CAAC;IAC9D5B,SAAS,CAACgB,KAAK,CAACf,MAAM,CAACgB,SAAS,CAAC,MAAM,CAAC,CAAC;IACzCC,MAAM,CAACN,OAAO,CAAC,CAACiB,GAAG,CAACC,gBAAgB,CAAC,CAAC;EACxC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFpB,QAAQ,CAAC,UAAU,EAAE,MAAM;EACzB,MAAMqB,OAAwB,GAAG,CAC/B;IAAEC,GAAG,EAAE,GAAG;IAAEjB,KAAK,EAAE;EAAQ,CAAC,EAC5B;IAAEiB,GAAG,EAAE,GAAG;IAAEjB,KAAK,EAAE;EAAO,CAAC,EAC3B;IAAEiB,GAAG,EAAE,GAAG;IAAEjB,KAAK,EAAE;EAAQ,CAAC,CAC7B;EAEDJ,EAAE,CAAC,oBAAoB,EAAE,MAAM;IAC7BJ,IAAI,cAACD,IAAA,CAACH,QAAQ;MAAC4B,OAAO,EAAEA;IAAQ,CAAE,CAAC,CAAC;IACpCb,MAAM,CAACjB,MAAM,CAACgB,SAAS,CAAC,OAAO,CAAC,CAAC,CAACI,UAAU,CAAC,CAAC;IAC9CH,MAAM,CAACjB,MAAM,CAACgB,SAAS,CAAC,MAAM,CAAC,CAAC,CAACI,UAAU,CAAC,CAAC;IAC7CH,MAAM,CAACjB,MAAM,CAACgB,SAAS,CAAC,OAAO,CAAC,CAAC,CAACI,UAAU,CAAC,CAAC;EAChD,CAAC,CAAC;EAEFV,EAAE,CAAC,qCAAqC,EAAE,MAAM;IAC9C,MAAMsB,QAAQ,GAAGpB,IAAI,CAACC,EAAE,CAAC,CAAC;IAC1BP,IAAI,cAACD,IAAA,CAACH,QAAQ;MAAC4B,OAAO,EAAEA,OAAQ;MAACE,QAAQ,EAAEA;IAAS,CAAE,CAAC,CAAC;IACxDjC,SAAS,CAACgB,KAAK,CAACf,MAAM,CAACgB,SAAS,CAAC,MAAM,CAAC,CAAC;IACzCC,MAAM,CAACe,QAAQ,CAAC,CAACP,oBAAoB,CAAC,GAAG,CAAC;EAC5C,CAAC,CAAC;EAEFf,EAAE,CAAC,0DAA0D,EAAE,MAAM;IACnE,MAAMuB,UAA2B,GAAG,CAClC;MAAEF,GAAG,EAAE,GAAG;MAAEG,IAAI,EAAE,QAAQ;MAAEpB,KAAK,EAAE;IAAQ,CAAC,EAC5C;MAAEiB,GAAG,EAAE,GAAG;MAAEjB,KAAK,EAAE;IAAS,CAAC,CAC9B;IACD,MAAMkB,QAAQ,GAAGpB,IAAI,CAACC,EAAE,CAAC,CAAC;IAC1BP,IAAI,cAACD,IAAA,CAACH,QAAQ;MAAC4B,OAAO,EAAEG,UAAW;MAACD,QAAQ,EAAEA;IAAS,CAAE,CAAC,CAAC;IAC3Df,MAAM,CAACjB,MAAM,CAACgB,SAAS,CAAC,OAAO,CAAC,CAAC,CAACI,UAAU,CAAC,CAAC;IAC9CrB,SAAS,CAACgB,KAAK,CAACf,MAAM,CAACgB,SAAS,CAAC,OAAO,CAAC,CAAC;IAC1CC,MAAM,CAACe,QAAQ,CAAC,CAACJ,GAAG,CAACC,gBAAgB,CAAC,CAAC;EACzC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { Dropdown, DropdownItem } from "./Dropdown.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Dropdown","DropdownItem"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Dropdown/index.ts"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,YAAY,QAAQ,eAAY","ignoreList":[]}