@ornikar/bumper 2.7.2-canary.1768566928.e85c568dc49c9180e37b7aec8792b1e8d45968a6.0 → 2.8.1-canary.1768839311.501438316959a9593513e74c70cb87b0597f2db6.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 (114) hide show
  1. package/CHANGELOG.md +19 -4
  2. package/CLAUDE.md +45 -0
  3. package/dist/definitions/index.d.ts +2 -0
  4. package/dist/definitions/index.d.ts.map +1 -1
  5. package/dist/definitions/system/content/icon/Icon.d.ts +21 -0
  6. package/dist/definitions/system/content/icon/Icon.d.ts.map +1 -0
  7. package/dist/definitions/system/core/breakpoints/hooks/useCurrentBreakpointName.d.ts +1 -1
  8. package/dist/definitions/system/core/breakpoints/hooks/useCurrentBreakpointName.d.ts.map +1 -1
  9. package/dist/definitions/system/core/breakpoints/utils/breakpointsUtils.d.ts +1 -1
  10. package/dist/definitions/system/core/breakpoints/utils/breakpointsUtils.d.ts.map +1 -1
  11. package/dist/definitions/system/core/primitives/Pressable.d.ts +0 -9
  12. package/dist/definitions/system/core/primitives/Pressable.d.ts.map +1 -1
  13. package/dist/definitions/system/core/primitives/ScrollView/ScrollView.d.ts +3 -0
  14. package/dist/definitions/system/core/primitives/ScrollView/ScrollView.d.ts.map +1 -0
  15. package/dist/definitions/system/core/{breakpoints/constants.d.ts → tokens/breakpoints.d.ts} +1 -1
  16. package/dist/definitions/system/core/tokens/breakpoints.d.ts.map +1 -0
  17. package/dist/definitions/tamagui.config.d.ts +2 -28
  18. package/dist/definitions/tamagui.config.d.ts.map +1 -1
  19. package/dist/index-metro.es.android.js +43 -26
  20. package/dist/index-metro.es.android.js.map +1 -1
  21. package/dist/index-metro.es.ios.js +43 -26
  22. package/dist/index-metro.es.ios.js.map +1 -1
  23. package/dist/index-node-22.22.cjs.js +44 -26
  24. package/dist/index-node-22.22.cjs.js.map +1 -1
  25. package/dist/index-node-22.22.cjs.web.js +44 -26
  26. package/dist/index-node-22.22.cjs.web.js.map +1 -1
  27. package/dist/index-node-22.22.es.mjs +43 -26
  28. package/dist/index-node-22.22.es.mjs.map +1 -1
  29. package/dist/index-node-22.22.es.web.mjs +43 -26
  30. package/dist/index-node-22.22.es.web.mjs.map +1 -1
  31. package/dist/index.es.js +37 -20
  32. package/dist/index.es.js.map +1 -1
  33. package/dist/index.es.web.js +37 -20
  34. package/dist/index.es.web.js.map +1 -1
  35. package/dist/tsbuildinfo +1 -1
  36. package/package.json +5 -2
  37. package/src/index.ts +2 -0
  38. package/src/system/content/icon/Icon.features.stories.tsx +116 -0
  39. package/src/system/content/icon/Icon.stories.tsx +44 -0
  40. package/src/system/content/icon/Icon.tsx +53 -0
  41. package/src/system/content/icon/__snapshots__/Icon.features.stories.tsx.snap +569 -0
  42. package/src/system/content/icon/__snapshots__/Icon.stories.tsx.snap +29 -0
  43. package/src/system/content/icon/__snapshots_web__/Icon.features.stories.tsx.snap +309 -0
  44. package/src/system/content/icon/__snapshots_web__/Icon.stories.tsx.snap +33 -0
  45. package/src/system/content/typography/Typography.features.stories.tsx +156 -0
  46. package/src/system/content/typography/Typography.stories.tsx +72 -166
  47. package/src/system/content/typography/__snapshots__/Typography.features.stories.tsx.snap +826 -0
  48. package/src/system/content/typography/__snapshots__/Typography.stories.tsx.snap +10 -1990
  49. package/src/system/content/typography/__snapshots_web__/Typography.features.stories.tsx.snap +501 -0
  50. package/src/system/content/typography/__snapshots_web__/Typography.stories.tsx.snap +6 -807
  51. package/src/system/core/breakpoints/hooks/useBreakpointValue.test.ts +1 -1
  52. package/src/system/core/breakpoints/hooks/useCurrentBreakpointName.test.ts +1 -1
  53. package/src/system/core/breakpoints/hooks/useCurrentBreakpointName.ts +1 -1
  54. package/src/system/core/breakpoints/utils/breakpointsUtils.test.ts +1 -1
  55. package/src/system/core/breakpoints/utils/breakpointsUtils.ts +1 -1
  56. package/src/system/core/primitives/Center.features.stories.tsx +63 -0
  57. package/src/system/core/primitives/Center.stories.tsx +111 -12
  58. package/src/system/core/primitives/Pressable.features.stories.tsx +171 -0
  59. package/src/system/core/primitives/Pressable.stories.tsx +82 -20
  60. package/src/system/core/primitives/Pressable.tsx +0 -9
  61. package/src/system/core/primitives/ScrollView/ScrollView.features.stories.tsx +84 -0
  62. package/src/system/core/primitives/ScrollView/ScrollView.stories.tsx +63 -0
  63. package/src/system/core/primitives/ScrollView/ScrollView.ts +2 -0
  64. package/src/system/core/primitives/ScrollView/__snapshots__/ScrollView.features.stories.tsx.snap +1245 -0
  65. package/src/system/core/primitives/ScrollView/__snapshots__/ScrollView.stories.tsx.snap +334 -0
  66. package/src/system/core/primitives/ScrollView/__snapshots_web__/ScrollView.features.stories.tsx.snap +503 -0
  67. package/src/system/core/primitives/ScrollView/__snapshots_web__/ScrollView.stories.tsx.snap +138 -0
  68. package/src/system/core/primitives/Stack.features.stories.tsx +179 -0
  69. package/src/system/core/primitives/Stack.stories.tsx +74 -44
  70. package/src/system/core/primitives/View.features.stories.tsx +452 -0
  71. package/src/system/core/primitives/View.stories.tsx +122 -9
  72. package/src/system/core/primitives/__snapshots__/Center.features.stories.tsx.snap +208 -0
  73. package/src/system/core/primitives/__snapshots__/Center.stories.tsx.snap +13 -8
  74. package/src/system/core/primitives/__snapshots__/Pressable.features.stories.tsx.snap +470 -0
  75. package/src/system/core/primitives/__snapshots__/Pressable.stories.tsx.snap +11 -10
  76. package/src/system/core/primitives/__snapshots__/Stack.features.stories.tsx.snap +1234 -0
  77. package/src/system/core/primitives/__snapshots__/Stack.stories.tsx.snap +63 -84
  78. package/src/system/core/primitives/__snapshots__/View.features.stories.tsx.snap +2338 -0
  79. package/src/system/core/primitives/__snapshots__/View.stories.tsx.snap +6 -4
  80. package/src/system/core/primitives/__snapshots_web__/Center.features.stories.tsx.snap +107 -0
  81. package/src/system/core/primitives/__snapshots_web__/Center.stories.tsx.snap +8 -5
  82. package/src/system/core/primitives/__snapshots_web__/Pressable.features.stories.tsx.snap +193 -0
  83. package/src/system/core/primitives/__snapshots_web__/Pressable.stories.tsx.snap +4 -4
  84. package/src/system/core/primitives/__snapshots_web__/Stack.features.stories.tsx.snap +515 -0
  85. package/src/system/core/primitives/__snapshots_web__/Stack.stories.tsx.snap +29 -21
  86. package/src/system/core/primitives/__snapshots_web__/View.features.stories.tsx.snap +941 -0
  87. package/src/system/core/primitives/__snapshots_web__/View.stories.tsx.snap +2 -2
  88. package/src/system/core/themes/__snapshots__/light.stories.tsx.snap +3822 -2233
  89. package/src/system/core/themes/__snapshots_web__/light.stories.tsx.snap +1243 -991
  90. package/src/system/core/themes/light.stories.tsx +61 -28
  91. package/src/system/core/tokens/__snapshots__/breakpoints.stories.tsx.snap +423 -0
  92. package/src/system/core/tokens/__snapshots__/fonts.stories.tsx.snap +1635 -0
  93. package/src/system/core/tokens/__snapshots__/radius.stories.tsx.snap +383 -0
  94. package/src/system/core/tokens/__snapshots__/size.stories.tsx.snap +864 -0
  95. package/src/system/core/tokens/__snapshots__/space.stories.tsx.snap +945 -0
  96. package/src/system/core/tokens/__snapshots_web__/breakpoints.stories.tsx.snap +194 -0
  97. package/src/system/core/tokens/__snapshots_web__/fonts.stories.tsx.snap +729 -0
  98. package/src/system/core/tokens/__snapshots_web__/radius.stories.tsx.snap +174 -0
  99. package/src/system/core/tokens/__snapshots_web__/size.stories.tsx.snap +363 -0
  100. package/src/system/core/tokens/__snapshots_web__/space.stories.tsx.snap +396 -0
  101. package/src/system/core/tokens/breakpoints.stories.tsx +46 -0
  102. package/src/system/core/tokens/fonts.stories.tsx +39 -0
  103. package/src/system/core/tokens/palettes/__snapshots__/deepPurpleColorPalette.stories.tsx.snap +4337 -2747
  104. package/src/system/core/tokens/palettes/__snapshots_web__/deepPurpleColorPalette.stories.tsx.snap +1524 -1256
  105. package/src/system/core/tokens/palettes/deepPurpleColorPalette.stories.tsx +42 -28
  106. package/src/system/core/tokens/radius.stories.tsx +39 -0
  107. package/src/system/core/tokens/size.stories.tsx +39 -0
  108. package/src/system/core/tokens/space.stories.tsx +40 -0
  109. package/src/tamagui.config.ts +3 -3
  110. package/dist/definitions/system/core/breakpoints/constants.d.ts.map +0 -1
  111. package/src/system/core/breakpoints/__snapshots__/breakpoints.stories.tsx.snap +0 -49
  112. package/src/system/core/breakpoints/__snapshots_web__/breakpoints.stories.tsx.snap +0 -43
  113. package/src/system/core/breakpoints/breakpoints.stories.tsx +0 -45
  114. /package/src/system/core/{breakpoints/constants.ts → tokens/breakpoints.ts} +0 -0
@@ -0,0 +1,452 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Typography } from '../../content/typography/Typography';
3
+ import { HStack, VStack } from './Stack';
4
+ import { View } from './View';
5
+
6
+ const meta: Meta<typeof View> = {
7
+ title: 'Bumper/Core/Primitives/View/Features',
8
+ component: View,
9
+ };
10
+
11
+ export default meta;
12
+ type Story = StoryObj<typeof meta>;
13
+
14
+ export const BackgroundColors: Story = {
15
+ render: () => (
16
+ <VStack gap="$space.8">
17
+ <View backgroundColor="$bg.base.low.default" padding="$space.16" borderRadius="$radius.m">
18
+ <Typography.Text variant="body-s">bg.base.low.default</Typography.Text>
19
+ </View>
20
+ <View backgroundColor="$bg.base.mid.default" padding="$space.16" borderRadius="$radius.m">
21
+ <Typography.Text variant="body-s">bg.base.mid.default</Typography.Text>
22
+ </View>
23
+ <View backgroundColor="$bg.base.hi.default" padding="$space.16" borderRadius="$radius.m">
24
+ <Typography.Text variant="body-s">bg.base.hi.default</Typography.Text>
25
+ </View>
26
+ <View backgroundColor="$bg.accent.default" padding="$space.16" borderRadius="$radius.m">
27
+ <Typography.Text variant="body-s" color="$content.base.onContrasted.hi">
28
+ bg.accent.default
29
+ </Typography.Text>
30
+ </View>
31
+ <View backgroundColor="$bg.promo.hi.default" padding="$space.16" borderRadius="$radius.m">
32
+ <Typography.Text variant="body-s" color="$content.base.onContrasted.hi">
33
+ bg.promo.hi.default
34
+ </Typography.Text>
35
+ </View>
36
+ <View backgroundColor="$bg.info.mid" padding="$space.16" borderRadius="$radius.m">
37
+ <Typography.Text variant="body-s">bg.info.mid</Typography.Text>
38
+ </View>
39
+ <View backgroundColor="$bg.success.mid" padding="$space.16" borderRadius="$radius.m">
40
+ <Typography.Text variant="body-s">bg.success.mid</Typography.Text>
41
+ </View>
42
+ <View backgroundColor="$bg.warning.mid" padding="$space.16" borderRadius="$radius.m">
43
+ <Typography.Text variant="body-s">bg.warning.mid</Typography.Text>
44
+ </View>
45
+ <View backgroundColor="$bg.danger.mid" padding="$space.16" borderRadius="$radius.m">
46
+ <Typography.Text variant="body-s">bg.danger.mid</Typography.Text>
47
+ </View>
48
+ </VStack>
49
+ ),
50
+ };
51
+
52
+ export const BordersAndRadius: Story = {
53
+ render: () => (
54
+ <HStack gap="$space.16" flexWrap="wrap">
55
+ <View
56
+ backgroundColor="$bg.base.mid.default"
57
+ padding="$space.24"
58
+ borderWidth={1}
59
+ borderColor="$border.base.mid"
60
+ borderRadius="$radius.none"
61
+ >
62
+ <Typography.Text variant="body-s">radius.none</Typography.Text>
63
+ </View>
64
+ <View
65
+ backgroundColor="$bg.base.mid.default"
66
+ padding="$space.24"
67
+ borderWidth={1}
68
+ borderColor="$border.base.mid"
69
+ borderRadius="$radius.s"
70
+ >
71
+ <Typography.Text variant="body-s">radius.s</Typography.Text>
72
+ </View>
73
+ <View
74
+ backgroundColor="$bg.base.mid.default"
75
+ padding="$space.24"
76
+ borderWidth={1}
77
+ borderColor="$border.base.mid"
78
+ borderRadius="$radius.m"
79
+ >
80
+ <Typography.Text variant="body-s">radius.m</Typography.Text>
81
+ </View>
82
+ <View
83
+ backgroundColor="$bg.base.mid.default"
84
+ padding="$space.24"
85
+ borderWidth={1}
86
+ borderColor="$border.base.mid"
87
+ borderRadius="$radius.l"
88
+ >
89
+ <Typography.Text variant="body-s">radius.l</Typography.Text>
90
+ </View>
91
+ <View
92
+ backgroundColor="$bg.base.mid.default"
93
+ padding="$space.24"
94
+ width="$size.96"
95
+ height="$size.96"
96
+ borderWidth={1}
97
+ borderColor="$border.base.mid"
98
+ borderRadius="$radius.circle"
99
+ alignItems="center"
100
+ justifyContent="center"
101
+ >
102
+ <Typography.Text variant="body-s">circle</Typography.Text>
103
+ </View>
104
+ </HStack>
105
+ ),
106
+ };
107
+
108
+ export const BorderColors: Story = {
109
+ render: () => (
110
+ <HStack gap="$space.16" flexWrap="wrap">
111
+ <View
112
+ backgroundColor="$bg.base.low.default"
113
+ padding="$space.16"
114
+ borderWidth={2}
115
+ borderColor="$border.base.low"
116
+ borderRadius="$radius.m"
117
+ >
118
+ <Typography.Text variant="body-s">border.base.low</Typography.Text>
119
+ </View>
120
+ <View
121
+ backgroundColor="$bg.base.low.default"
122
+ padding="$space.16"
123
+ borderWidth={2}
124
+ borderColor="$border.base.mid"
125
+ borderRadius="$radius.m"
126
+ >
127
+ <Typography.Text variant="body-s">border.base.mid</Typography.Text>
128
+ </View>
129
+ <View
130
+ backgroundColor="$bg.base.low.default"
131
+ padding="$space.16"
132
+ borderWidth={2}
133
+ borderColor="$border.base.accent"
134
+ borderRadius="$radius.m"
135
+ >
136
+ <Typography.Text variant="body-s">border.base.accent</Typography.Text>
137
+ </View>
138
+ <View
139
+ backgroundColor="$bg.base.low.default"
140
+ padding="$space.16"
141
+ borderWidth={2}
142
+ borderColor="$border.info"
143
+ borderRadius="$radius.m"
144
+ >
145
+ <Typography.Text variant="body-s">border.info</Typography.Text>
146
+ </View>
147
+ <View
148
+ backgroundColor="$bg.base.low.default"
149
+ padding="$space.16"
150
+ borderWidth={2}
151
+ borderColor="$border.success"
152
+ borderRadius="$radius.m"
153
+ >
154
+ <Typography.Text variant="body-s">border.success</Typography.Text>
155
+ </View>
156
+ <View
157
+ backgroundColor="$bg.base.low.default"
158
+ padding="$space.16"
159
+ borderWidth={2}
160
+ borderColor="$border.warning"
161
+ borderRadius="$radius.m"
162
+ >
163
+ <Typography.Text variant="body-s">border.warning</Typography.Text>
164
+ </View>
165
+ <View
166
+ backgroundColor="$bg.base.low.default"
167
+ padding="$space.16"
168
+ borderWidth={2}
169
+ borderColor="$border.danger"
170
+ borderRadius="$radius.m"
171
+ >
172
+ <Typography.Text variant="body-s">border.danger</Typography.Text>
173
+ </View>
174
+ </HStack>
175
+ ),
176
+ };
177
+
178
+ export const PaddingVariants: Story = {
179
+ render: () => (
180
+ <HStack gap="$space.8" flexWrap="wrap">
181
+ <View backgroundColor="$bg.info.mid" padding="$space.none" borderRadius="$radius.m">
182
+ <Typography.Text variant="body-s">space.none</Typography.Text>
183
+ </View>
184
+ <View backgroundColor="$bg.info.mid" padding="$space.4" borderRadius="$radius.m">
185
+ <Typography.Text variant="body-s">space.4</Typography.Text>
186
+ </View>
187
+ <View backgroundColor="$bg.info.mid" padding="$space.8" borderRadius="$radius.m">
188
+ <Typography.Text variant="body-s">space.8</Typography.Text>
189
+ </View>
190
+ <View backgroundColor="$bg.info.mid" padding="$space.16" borderRadius="$radius.m">
191
+ <Typography.Text variant="body-s">space.16</Typography.Text>
192
+ </View>
193
+ <View backgroundColor="$bg.info.mid" padding="$space.24" borderRadius="$radius.m">
194
+ <Typography.Text variant="body-s">space.24</Typography.Text>
195
+ </View>
196
+ <View backgroundColor="$bg.info.mid" padding="$space.32" borderRadius="$radius.m">
197
+ <Typography.Text variant="body-s">space.32</Typography.Text>
198
+ </View>
199
+ </HStack>
200
+ ),
201
+ };
202
+
203
+ export const DirectionalPadding: Story = {
204
+ render: () => (
205
+ <VStack gap="$space.16">
206
+ <View backgroundColor="$bg.success.mid" paddingTop="$space.32" paddingBottom="$space.8" borderRadius="$radius.m">
207
+ <Typography.Text variant="body-s">paddingTop: space.32, paddingBottom: space.8</Typography.Text>
208
+ </View>
209
+ <View backgroundColor="$bg.success.mid" paddingLeft="$space.32" paddingRight="$space.8" borderRadius="$radius.m">
210
+ <Typography.Text variant="body-s">paddingLeft: space.32, paddingRight: space.8</Typography.Text>
211
+ </View>
212
+ <View
213
+ backgroundColor="$bg.success.mid"
214
+ paddingHorizontal="$space.32"
215
+ paddingVertical="$space.8"
216
+ borderRadius="$radius.m"
217
+ >
218
+ <Typography.Text variant="body-s">paddingHorizontal: space.32, paddingVertical: space.8</Typography.Text>
219
+ </View>
220
+ </VStack>
221
+ ),
222
+ };
223
+
224
+ export const MarginVariants: Story = {
225
+ render: () => (
226
+ <View backgroundColor="$bg.base.hi.default" padding="$space.8" borderRadius="$radius.m">
227
+ <VStack gap="$space.none">
228
+ <View backgroundColor="$bg.accent.default" margin="$space.8" padding="$space.16" borderRadius="$radius.m">
229
+ <Typography.Text variant="body-s" color="$content.base.onContrasted.hi">
230
+ margin: space.8
231
+ </Typography.Text>
232
+ </View>
233
+ <View backgroundColor="$bg.accent.default" margin="$space.16" padding="$space.16" borderRadius="$radius.m">
234
+ <Typography.Text variant="body-s" color="$content.base.onContrasted.hi">
235
+ margin: space.16
236
+ </Typography.Text>
237
+ </View>
238
+ <View backgroundColor="$bg.accent.default" margin="$space.24" padding="$space.16" borderRadius="$radius.m">
239
+ <Typography.Text variant="body-s" color="$content.base.onContrasted.hi">
240
+ margin: space.24
241
+ </Typography.Text>
242
+ </View>
243
+ </VStack>
244
+ </View>
245
+ ),
246
+ };
247
+
248
+ export const DirectionalMargin: Story = {
249
+ render: () => (
250
+ <View backgroundColor="$bg.base.hi.default" padding="$space.8" borderRadius="$radius.m">
251
+ <VStack gap="$space.none">
252
+ <View
253
+ backgroundColor="$bg.promo.hi.default"
254
+ marginTop="$space.32"
255
+ marginBottom="$space.8"
256
+ padding="$space.16"
257
+ borderRadius="$radius.m"
258
+ >
259
+ <Typography.Text variant="body-s" color="$content.base.onContrasted.hi">
260
+ marginTop: space.32, marginBottom: space.8
261
+ </Typography.Text>
262
+ </View>
263
+ <View
264
+ backgroundColor="$bg.promo.hi.default"
265
+ marginHorizontal="$space.32"
266
+ marginVertical="$space.8"
267
+ padding="$space.16"
268
+ borderRadius="$radius.m"
269
+ >
270
+ <Typography.Text variant="body-s" color="$content.base.onContrasted.hi">
271
+ marginHorizontal: space.32, marginVertical: space.8
272
+ </Typography.Text>
273
+ </View>
274
+ </VStack>
275
+ </View>
276
+ ),
277
+ };
278
+
279
+ export const FlexLayout: Story = {
280
+ render: () => (
281
+ <VStack gap="$space.16">
282
+ <View backgroundColor="$bg.base.mid.default" padding="$space.16" borderRadius="$radius.m" flexDirection="row">
283
+ <View backgroundColor="$bg.accent.default" padding="$space.16" borderRadius="$radius.s" flexGrow={1}>
284
+ <Typography.Text variant="body-s" color="$content.base.onContrasted.hi">
285
+ flexGrow: 1
286
+ </Typography.Text>
287
+ </View>
288
+ <View
289
+ backgroundColor="$bg.promo.hi.default"
290
+ padding="$space.16"
291
+ borderRadius="$radius.s"
292
+ flexGrow={2}
293
+ marginLeft="$space.8"
294
+ >
295
+ <Typography.Text variant="body-s" color="$content.base.onContrasted.hi">
296
+ flexGrow: 2
297
+ </Typography.Text>
298
+ </View>
299
+ </View>
300
+
301
+ <View
302
+ backgroundColor="$bg.base.mid.default"
303
+ padding="$space.16"
304
+ borderRadius="$radius.m"
305
+ flexDirection="row"
306
+ gap="$space.8"
307
+ >
308
+ <View backgroundColor="$bg.info.mid" padding="$space.16" borderRadius="$radius.s" flexGrow={1}>
309
+ <Typography.Text variant="body-s">flexGrow: 1</Typography.Text>
310
+ </View>
311
+ <View backgroundColor="$bg.success.mid" padding="$space.16" borderRadius="$radius.s" flexGrow={1}>
312
+ <Typography.Text variant="body-s">flexGrow: 1</Typography.Text>
313
+ </View>
314
+ <View backgroundColor="$bg.warning.mid" padding="$space.16" borderRadius="$radius.s" flexGrow={1}>
315
+ <Typography.Text variant="body-s">flexGrow: 1</Typography.Text>
316
+ </View>
317
+ </View>
318
+ </VStack>
319
+ ),
320
+ };
321
+
322
+ export const FlexAlignment: Story = {
323
+ render: () => (
324
+ <VStack gap="$space.16">
325
+ <View
326
+ backgroundColor="$bg.base.mid.default"
327
+ padding="$space.16"
328
+ borderRadius="$radius.m"
329
+ height="$size.120"
330
+ flexDirection="row"
331
+ alignItems="flex-start"
332
+ justifyContent="flex-start"
333
+ >
334
+ <View backgroundColor="$bg.accent.default" padding="$space.16" borderRadius="$radius.s">
335
+ <Typography.Text variant="body-s" color="$content.base.onContrasted.hi">
336
+ alignItems: flex-start, justifyContent: flex-start
337
+ </Typography.Text>
338
+ </View>
339
+ </View>
340
+
341
+ <View
342
+ backgroundColor="$bg.base.mid.default"
343
+ padding="$space.16"
344
+ borderRadius="$radius.m"
345
+ height="$size.120"
346
+ flexDirection="row"
347
+ alignItems="center"
348
+ justifyContent="center"
349
+ >
350
+ <View backgroundColor="$bg.promo.hi.default" padding="$space.16" borderRadius="$radius.s">
351
+ <Typography.Text variant="body-s" color="$content.base.onContrasted.hi">
352
+ alignItems: center, justifyContent: center
353
+ </Typography.Text>
354
+ </View>
355
+ </View>
356
+
357
+ <View
358
+ backgroundColor="$bg.base.mid.default"
359
+ padding="$space.16"
360
+ borderRadius="$radius.m"
361
+ height="$size.120"
362
+ flexDirection="row"
363
+ alignItems="flex-end"
364
+ justifyContent="flex-end"
365
+ >
366
+ <View backgroundColor="$bg.info.mid" padding="$space.16" borderRadius="$radius.s">
367
+ <Typography.Text variant="body-s">alignItems: flex-end, justifyContent: flex-end</Typography.Text>
368
+ </View>
369
+ </View>
370
+
371
+ <View
372
+ backgroundColor="$bg.base.mid.default"
373
+ padding="$space.16"
374
+ borderRadius="$radius.m"
375
+ height="$size.120"
376
+ flexDirection="row"
377
+ alignItems="stretch"
378
+ justifyContent="space-between"
379
+ >
380
+ <View backgroundColor="$bg.success.mid" padding="$space.16" borderRadius="$radius.s">
381
+ <Typography.Text variant="body-s">Item 1</Typography.Text>
382
+ </View>
383
+ <View backgroundColor="$bg.warning.mid" padding="$space.16" borderRadius="$radius.s">
384
+ <Typography.Text variant="body-s">Item 2</Typography.Text>
385
+ </View>
386
+ <View backgroundColor="$bg.danger.mid" padding="$space.16" borderRadius="$radius.s">
387
+ <Typography.Text variant="body-s">Item 3</Typography.Text>
388
+ </View>
389
+ </View>
390
+ </VStack>
391
+ ),
392
+ };
393
+
394
+ export const FlexWrap: Story = {
395
+ render: () => (
396
+ <View
397
+ backgroundColor="$bg.base.mid.default"
398
+ padding="$space.16"
399
+ borderRadius="$radius.m"
400
+ flexDirection="row"
401
+ flexWrap="wrap"
402
+ gap="$space.8"
403
+ >
404
+ {Array.from({ length: 12 }, (_, i) => (
405
+ <View
406
+ key={`item-${i}`}
407
+ backgroundColor="$bg.accent.default"
408
+ padding="$space.16"
409
+ borderRadius="$radius.s"
410
+ width="$size.64"
411
+ >
412
+ <Typography.Text variant="body-s" color="$content.base.onContrasted.hi">
413
+ {i + 1}
414
+ </Typography.Text>
415
+ </View>
416
+ ))}
417
+ </View>
418
+ ),
419
+ };
420
+
421
+ export const OverflowBehavior: Story = {
422
+ render: () => (
423
+ <VStack gap="$space.16">
424
+ <View
425
+ backgroundColor="$bg.base.mid.default"
426
+ padding="$space.16"
427
+ borderRadius="$radius.m"
428
+ width="$size.208"
429
+ height="$size.96"
430
+ overflow="hidden"
431
+ >
432
+ <Typography.Text variant="body-s">
433
+ overflow: hidden - This long text content will be clipped when it exceeds the container's dimensions and won't
434
+ cause scrollbars to appear
435
+ </Typography.Text>
436
+ </View>
437
+ <View
438
+ backgroundColor="$bg.base.mid.default"
439
+ padding="$space.16"
440
+ borderRadius="$radius.m"
441
+ width="$size.208"
442
+ height="$size.96"
443
+ overflow="scroll"
444
+ >
445
+ <Typography.Text variant="body-s">
446
+ overflow: scroll - This long text content will be scrollable when it exceeds the container's dimensions,
447
+ allowing users to access all content
448
+ </Typography.Text>
449
+ </View>
450
+ </VStack>
451
+ ),
452
+ };
@@ -1,14 +1,127 @@
1
- import type { Meta, StoryFn } from '@storybook/react';
2
- import type { ViewProps } from './View';
1
+ import type { Meta, StoryObj } from '@storybook/react';
3
2
  import { View } from './View';
4
3
 
5
- export default {
6
- title: 'bumper/Primitives',
4
+ const meta: Meta<typeof View> = {
5
+ title: 'Bumper/Core/Primitives/View',
7
6
  component: View,
8
- } satisfies Meta<ViewProps>;
7
+ tags: ['autodocs'],
8
+ argTypes: {
9
+ backgroundColor: {
10
+ control: 'select',
11
+ options: [
12
+ '$bg.base.low.default',
13
+ '$bg.base.low.pressed',
14
+ '$bg.base.mid.default',
15
+ '$bg.base.mid.pressed',
16
+ '$bg.base.hi.default',
17
+ '$bg.base.hi.pressed',
18
+ '$bg.accent.default',
19
+ '$bg.accent.pressed',
20
+ '$bg.promo.mid.default',
21
+ '$bg.promo.mid.pressed',
22
+ '$bg.promo.hi.default',
23
+ '$bg.promo.hi.pressed',
24
+ '$bg.highlight.mid.default',
25
+ '$bg.highlight.mid.pressed',
26
+ '$bg.highlight.hi.default',
27
+ '$bg.highlight.hi.pressed',
28
+ '$bg.info.mid',
29
+ '$bg.info.hi',
30
+ '$bg.success.mid',
31
+ '$bg.success.hi',
32
+ '$bg.warning.mid',
33
+ '$bg.warning.hi',
34
+ '$bg.danger.mid',
35
+ '$bg.danger.hi',
36
+ '$bg.disabled.mid',
37
+ '$bg.disabled.hi',
38
+ '$bg.overlay',
39
+ ],
40
+ description: 'Background color (semantic theme token)',
41
+ },
42
+ padding: {
43
+ control: 'select',
44
+ options: [
45
+ '$space.none',
46
+ '$space.2',
47
+ '$space.4',
48
+ '$space.8',
49
+ '$space.12',
50
+ '$space.16',
51
+ '$space.24',
52
+ '$space.32',
53
+ '$space.40',
54
+ '$space.48',
55
+ '$space.56',
56
+ '$space.64',
57
+ '$space.80',
58
+ ],
59
+ description: 'Padding (space token)',
60
+ },
61
+ margin: {
62
+ control: 'select',
63
+ options: [
64
+ '$space.none',
65
+ '$space.2',
66
+ '$space.4',
67
+ '$space.8',
68
+ '$space.12',
69
+ '$space.16',
70
+ '$space.24',
71
+ '$space.32',
72
+ '$space.40',
73
+ '$space.48',
74
+ '$space.56',
75
+ '$space.64',
76
+ '$space.80',
77
+ ],
78
+ description: 'Margin (space token)',
79
+ },
80
+ width: {
81
+ control: 'select',
82
+ options: [
83
+ '$size.16',
84
+ '$size.20',
85
+ '$size.24',
86
+ '$size.32',
87
+ '$size.48',
88
+ '$size.64',
89
+ '$size.80',
90
+ '$size.96',
91
+ '$size.120',
92
+ '$size.144',
93
+ '$size.176',
94
+ '$size.208',
95
+ ],
96
+ description: 'Width (size token)',
97
+ },
98
+ height: {
99
+ control: 'select',
100
+ options: [
101
+ '$size.16',
102
+ '$size.20',
103
+ '$size.24',
104
+ '$size.32',
105
+ '$size.48',
106
+ '$size.64',
107
+ '$size.80',
108
+ '$size.96',
109
+ '$size.120',
110
+ '$size.144',
111
+ '$size.176',
112
+ '$size.208',
113
+ ],
114
+ description: 'Height (size token)',
115
+ },
116
+ },
117
+ };
9
118
 
10
- export const ViewStory: StoryFn<typeof View> = () => (
11
- <View width="$size.120" height="$size.120" backgroundColor="$bg.accent.default" />
12
- );
119
+ export default meta;
120
+ type Story = StoryObj<typeof meta>;
13
121
 
14
- ViewStory.storyName = 'View';
122
+ export const Default: Story = {
123
+ args: {
124
+ backgroundColor: '$bg.base.mid.default',
125
+ padding: '$space.16',
126
+ },
127
+ };