@ornikar/bumper 2.7.2-canary.1768565076.501fccaa5e4ef824bb180cfd40a7e74454a29a3e.0 → 2.8.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 (93) hide show
  1. package/CHANGELOG.md +4 -2
  2. package/CLAUDE.md +45 -0
  3. package/dist/definitions/system/core/breakpoints/hooks/useCurrentBreakpointName.d.ts +1 -1
  4. package/dist/definitions/system/core/breakpoints/hooks/useCurrentBreakpointName.d.ts.map +1 -1
  5. package/dist/definitions/system/core/breakpoints/utils/breakpointsUtils.d.ts +1 -1
  6. package/dist/definitions/system/core/breakpoints/utils/breakpointsUtils.d.ts.map +1 -1
  7. package/dist/definitions/system/core/primitives/Pressable.d.ts +0 -9
  8. package/dist/definitions/system/core/primitives/Pressable.d.ts.map +1 -1
  9. package/dist/definitions/system/core/{breakpoints/constants.d.ts → tokens/breakpoints.d.ts} +1 -1
  10. package/dist/definitions/system/core/tokens/breakpoints.d.ts.map +1 -0
  11. package/dist/definitions/tamagui.config.d.ts +2 -28
  12. package/dist/definitions/tamagui.config.d.ts.map +1 -1
  13. package/dist/index-metro.es.android.js +42 -26
  14. package/dist/index-metro.es.android.js.map +1 -1
  15. package/dist/index-metro.es.ios.js +42 -26
  16. package/dist/index-metro.es.ios.js.map +1 -1
  17. package/dist/index-node-22.22.cjs.js +42 -26
  18. package/dist/index-node-22.22.cjs.js.map +1 -1
  19. package/dist/index-node-22.22.cjs.web.js +42 -26
  20. package/dist/index-node-22.22.cjs.web.js.map +1 -1
  21. package/dist/index-node-22.22.es.mjs +42 -26
  22. package/dist/index-node-22.22.es.mjs.map +1 -1
  23. package/dist/index-node-22.22.es.web.mjs +42 -26
  24. package/dist/index-node-22.22.es.web.mjs.map +1 -1
  25. package/dist/index.es.js +36 -20
  26. package/dist/index.es.js.map +1 -1
  27. package/dist/index.es.web.js +36 -20
  28. package/dist/index.es.web.js.map +1 -1
  29. package/dist/tsbuildinfo +1 -1
  30. package/package.json +9 -9
  31. package/src/system/content/typography/Typography.features.stories.tsx +156 -0
  32. package/src/system/content/typography/Typography.stories.tsx +72 -166
  33. package/src/system/content/typography/__snapshots__/Typography.features.stories.tsx.snap +826 -0
  34. package/src/system/content/typography/__snapshots__/Typography.stories.tsx.snap +10 -1990
  35. package/src/system/content/typography/__snapshots_web__/Typography.features.stories.tsx.snap +501 -0
  36. package/src/system/content/typography/__snapshots_web__/Typography.stories.tsx.snap +7 -808
  37. package/src/system/core/breakpoints/hooks/useBreakpointValue.test.ts +1 -1
  38. package/src/system/core/breakpoints/hooks/useCurrentBreakpointName.test.ts +1 -1
  39. package/src/system/core/breakpoints/hooks/useCurrentBreakpointName.ts +1 -1
  40. package/src/system/core/breakpoints/utils/breakpointsUtils.test.ts +1 -1
  41. package/src/system/core/breakpoints/utils/breakpointsUtils.ts +1 -1
  42. package/src/system/core/primitives/Center.features.stories.tsx +63 -0
  43. package/src/system/core/primitives/Center.stories.tsx +111 -12
  44. package/src/system/core/primitives/Pressable.features.stories.tsx +171 -0
  45. package/src/system/core/primitives/Pressable.stories.tsx +82 -20
  46. package/src/system/core/primitives/Pressable.tsx +0 -9
  47. package/src/system/core/primitives/Stack.features.stories.tsx +179 -0
  48. package/src/system/core/primitives/Stack.stories.tsx +74 -44
  49. package/src/system/core/primitives/View.features.stories.tsx +452 -0
  50. package/src/system/core/primitives/View.stories.tsx +122 -9
  51. package/src/system/core/primitives/__snapshots__/Center.features.stories.tsx.snap +208 -0
  52. package/src/system/core/primitives/__snapshots__/Center.stories.tsx.snap +13 -8
  53. package/src/system/core/primitives/__snapshots__/Pressable.features.stories.tsx.snap +470 -0
  54. package/src/system/core/primitives/__snapshots__/Pressable.stories.tsx.snap +11 -10
  55. package/src/system/core/primitives/__snapshots__/Stack.features.stories.tsx.snap +1234 -0
  56. package/src/system/core/primitives/__snapshots__/Stack.stories.tsx.snap +63 -84
  57. package/src/system/core/primitives/__snapshots__/View.features.stories.tsx.snap +2338 -0
  58. package/src/system/core/primitives/__snapshots__/View.stories.tsx.snap +6 -4
  59. package/src/system/core/primitives/__snapshots_web__/Center.features.stories.tsx.snap +107 -0
  60. package/src/system/core/primitives/__snapshots_web__/Center.stories.tsx.snap +9 -6
  61. package/src/system/core/primitives/__snapshots_web__/Pressable.features.stories.tsx.snap +193 -0
  62. package/src/system/core/primitives/__snapshots_web__/Pressable.stories.tsx.snap +5 -5
  63. package/src/system/core/primitives/__snapshots_web__/Stack.features.stories.tsx.snap +515 -0
  64. package/src/system/core/primitives/__snapshots_web__/Stack.stories.tsx.snap +30 -22
  65. package/src/system/core/primitives/__snapshots_web__/View.features.stories.tsx.snap +941 -0
  66. package/src/system/core/primitives/__snapshots_web__/View.stories.tsx.snap +3 -3
  67. package/src/system/core/themes/__snapshots__/light.stories.tsx.snap +3822 -2233
  68. package/src/system/core/themes/__snapshots_web__/light.stories.tsx.snap +1244 -992
  69. package/src/system/core/themes/light.stories.tsx +61 -28
  70. package/src/system/core/tokens/__snapshots__/breakpoints.stories.tsx.snap +423 -0
  71. package/src/system/core/tokens/__snapshots__/fonts.stories.tsx.snap +1635 -0
  72. package/src/system/core/tokens/__snapshots__/radius.stories.tsx.snap +383 -0
  73. package/src/system/core/tokens/__snapshots__/size.stories.tsx.snap +864 -0
  74. package/src/system/core/tokens/__snapshots__/space.stories.tsx.snap +945 -0
  75. package/src/system/core/tokens/__snapshots_web__/breakpoints.stories.tsx.snap +194 -0
  76. package/src/system/core/tokens/__snapshots_web__/fonts.stories.tsx.snap +729 -0
  77. package/src/system/core/tokens/__snapshots_web__/radius.stories.tsx.snap +174 -0
  78. package/src/system/core/tokens/__snapshots_web__/size.stories.tsx.snap +363 -0
  79. package/src/system/core/tokens/__snapshots_web__/space.stories.tsx.snap +396 -0
  80. package/src/system/core/tokens/breakpoints.stories.tsx +46 -0
  81. package/src/system/core/tokens/fonts.stories.tsx +39 -0
  82. package/src/system/core/tokens/palettes/__snapshots__/deepPurpleColorPalette.stories.tsx.snap +4337 -2747
  83. package/src/system/core/tokens/palettes/__snapshots_web__/deepPurpleColorPalette.stories.tsx.snap +1525 -1257
  84. package/src/system/core/tokens/palettes/deepPurpleColorPalette.stories.tsx +42 -28
  85. package/src/system/core/tokens/radius.stories.tsx +39 -0
  86. package/src/system/core/tokens/size.stories.tsx +39 -0
  87. package/src/system/core/tokens/space.stories.tsx +40 -0
  88. package/src/tamagui.config.ts +3 -3
  89. package/dist/definitions/system/core/breakpoints/constants.d.ts.map +0 -1
  90. package/src/system/core/breakpoints/__snapshots__/breakpoints.stories.tsx.snap +0 -49
  91. package/src/system/core/breakpoints/__snapshots_web__/breakpoints.stories.tsx.snap +0 -43
  92. package/src/system/core/breakpoints/breakpoints.stories.tsx +0 -45
  93. /package/src/system/core/{breakpoints/constants.ts → tokens/breakpoints.ts} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { renderHook } from '@testing-library/react-native';
2
- import { BreakpointNameEnum } from '../constants';
2
+ import { BreakpointNameEnum } from '../../tokens/breakpoints';
3
3
  import { getValueForBreakpoint } from '../utils/breakpointsUtils';
4
4
  import { useBreakpointValue } from './useBreakpointValue';
5
5
  import { useCurrentBreakpointName } from './useCurrentBreakpointName';
@@ -1,6 +1,6 @@
1
1
  import { type UseMediaState, useMedia } from '@tamagui/core';
2
2
  import { renderHook } from '@testing-library/react-native';
3
- import { BreakpointNameEnum } from '../constants';
3
+ import { BreakpointNameEnum } from '../../tokens/breakpoints';
4
4
  import { useCurrentBreakpointName } from './useCurrentBreakpointName';
5
5
 
6
6
  jest.mock('@tamagui/core');
@@ -1,5 +1,5 @@
1
1
  import { useMedia } from '@tamagui/core';
2
- import { BreakpointNameEnum } from '../constants';
2
+ import { BreakpointNameEnum } from '../../tokens/breakpoints';
3
3
 
4
4
  export function useCurrentBreakpointName(): BreakpointNameEnum {
5
5
  const media = useMedia();
@@ -1,4 +1,4 @@
1
- import { BreakpointNameEnum } from '../constants';
1
+ import { BreakpointNameEnum } from '../../tokens/breakpoints';
2
2
  import { getValueForBreakpoint } from './breakpointsUtils';
3
3
 
4
4
  describe('getValueForBreakpoint', () => {
@@ -1,4 +1,4 @@
1
- import { BreakpointNameEnum } from '../constants';
1
+ import { BreakpointNameEnum } from '../../tokens/breakpoints';
2
2
 
3
3
  export interface ValueForBreakpoint<T> {
4
4
  base: T;
@@ -0,0 +1,63 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Typography } from '../../content/typography/Typography';
3
+ import { Center } from './Center';
4
+ import { HStack } from './Stack';
5
+
6
+ const meta: Meta<typeof Center> = {
7
+ title: 'Bumper/Core/Primitives/Center/Features',
8
+ component: Center,
9
+ };
10
+
11
+ export default meta;
12
+ type Story = StoryObj<typeof meta>;
13
+
14
+ export const CenteringText: Story = {
15
+ render: () => (
16
+ <HStack gap="$space.16">
17
+ <Center
18
+ backgroundColor="$bg.accent.default"
19
+ padding="$space.24"
20
+ borderRadius="$radius.m"
21
+ width="$size.144"
22
+ height="$size.144"
23
+ >
24
+ <Typography.Text variant="heading-s" color="$content.base.onContrasted.hi">
25
+ Title
26
+ </Typography.Text>
27
+ </Center>
28
+ <Center
29
+ backgroundColor="$bg.promo.hi.default"
30
+ padding="$space.24"
31
+ borderRadius="$radius.m"
32
+ width="$size.144"
33
+ height="$size.144"
34
+ >
35
+ <Typography.Text variant="body-m" color="$content.base.onContrasted.hi" textAlign="center">
36
+ Multi-line centered text content
37
+ </Typography.Text>
38
+ </Center>
39
+ </HStack>
40
+ ),
41
+ };
42
+
43
+ export const CircularCentering: Story = {
44
+ render: () => (
45
+ <HStack gap="$space.16">
46
+ <Center backgroundColor="$bg.accent.default" borderRadius="$radius.circle" width="$size.80" height="$size.80">
47
+ <Typography.Text variant="heading-l" color="$content.base.onContrasted.hi">
48
+ 1
49
+ </Typography.Text>
50
+ </Center>
51
+ <Center backgroundColor="$bg.promo.hi.default" borderRadius="$radius.circle" width="$size.80" height="$size.80">
52
+ <Typography.Text variant="heading-l" color="$content.base.onContrasted.hi">
53
+ 2
54
+ </Typography.Text>
55
+ </Center>
56
+ <Center backgroundColor="$bg.info.hi" borderRadius="$radius.circle" width="$size.80" height="$size.80">
57
+ <Typography.Text variant="heading-l" color="$content.base.onContrasted.hi">
58
+ 3
59
+ </Typography.Text>
60
+ </Center>
61
+ </HStack>
62
+ ),
63
+ };
@@ -1,17 +1,116 @@
1
- import type { Meta, StoryFn } from '@storybook/react';
2
- import type { CenterProps } from './Center';
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Typography } from '../../content/typography/Typography';
3
3
  import { Center } from './Center';
4
- import { View } from './View';
5
4
 
6
- export default {
7
- title: 'bumper/Primitives',
5
+ const meta: Meta<typeof Center> = {
6
+ title: 'Bumper/Core/Primitives/Center',
8
7
  component: Center,
9
- } satisfies Meta<CenterProps>;
8
+ tags: ['autodocs'],
9
+ argTypes: {
10
+ backgroundColor: {
11
+ control: 'select',
12
+ options: [
13
+ '$bg.base.low.default',
14
+ '$bg.base.low.pressed',
15
+ '$bg.base.mid.default',
16
+ '$bg.base.mid.pressed',
17
+ '$bg.base.hi.default',
18
+ '$bg.base.hi.pressed',
19
+ '$bg.accent.default',
20
+ '$bg.accent.pressed',
21
+ '$bg.promo.mid.default',
22
+ '$bg.promo.mid.pressed',
23
+ '$bg.promo.hi.default',
24
+ '$bg.promo.hi.pressed',
25
+ '$bg.highlight.mid.default',
26
+ '$bg.highlight.mid.pressed',
27
+ '$bg.highlight.hi.default',
28
+ '$bg.highlight.hi.pressed',
29
+ '$bg.info.mid',
30
+ '$bg.info.hi',
31
+ '$bg.success.mid',
32
+ '$bg.success.hi',
33
+ '$bg.warning.mid',
34
+ '$bg.warning.hi',
35
+ '$bg.danger.mid',
36
+ '$bg.danger.hi',
37
+ '$bg.disabled.mid',
38
+ '$bg.disabled.hi',
39
+ '$bg.overlay',
40
+ ],
41
+ description: 'Background color (semantic theme token)',
42
+ },
43
+ padding: {
44
+ control: 'select',
45
+ options: [
46
+ '$space.none',
47
+ '$space.2',
48
+ '$space.4',
49
+ '$space.8',
50
+ '$space.12',
51
+ '$space.16',
52
+ '$space.24',
53
+ '$space.32',
54
+ '$space.40',
55
+ '$space.48',
56
+ '$space.56',
57
+ '$space.64',
58
+ '$space.80',
59
+ ],
60
+ description: 'Padding (space token)',
61
+ },
62
+ width: {
63
+ control: 'select',
64
+ options: [
65
+ '$size.16',
66
+ '$size.20',
67
+ '$size.24',
68
+ '$size.32',
69
+ '$size.48',
70
+ '$size.64',
71
+ '$size.80',
72
+ '$size.96',
73
+ '$size.120',
74
+ '$size.144',
75
+ '$size.176',
76
+ '$size.208',
77
+ ],
78
+ description: 'Width (size token)',
79
+ },
80
+ height: {
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: 'Height (size token)',
97
+ },
98
+ },
99
+ };
10
100
 
11
- export const CenterStory: StoryFn<typeof Center> = () => (
12
- <Center width="$size.120" height="$size.120" backgroundColor="$bg.accent.default">
13
- <View width="$size.16" height="$size.16" backgroundColor="$bg.base.mid.default" />
14
- </Center>
15
- );
101
+ export default meta;
102
+ type Story = StoryObj<typeof meta>;
16
103
 
17
- CenterStory.storyName = 'Center';
104
+ export const Default: Story = {
105
+ args: {
106
+ backgroundColor: '$bg.base.mid.default',
107
+ padding: '$space.none',
108
+ width: '$size.208',
109
+ height: '$size.120',
110
+ },
111
+ render: (args) => (
112
+ <Center {...args}>
113
+ <Typography.Text>Centered content</Typography.Text>
114
+ </Center>
115
+ ),
116
+ };
@@ -0,0 +1,171 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Typography } from '../../content/typography/Typography';
3
+ import { Pressable } from './Pressable';
4
+ import { HStack, VStack } from './Stack';
5
+
6
+ const meta: Meta<typeof Pressable> = {
7
+ title: 'Bumper/Core/Primitives/Pressable/Features',
8
+ component: Pressable,
9
+ };
10
+
11
+ export default meta;
12
+ type Story = StoryObj<typeof meta>;
13
+
14
+ export const HoverEffects: Story = {
15
+ render: () => (
16
+ <VStack gap="$space.16">
17
+ <Pressable
18
+ backgroundColor="$bg.highlight.mid.default"
19
+ padding="$space.16"
20
+ borderRadius="$radius.m"
21
+ hoverStyle={{ backgroundColor: '$bg.highlight.hi.default' }}
22
+ onPress={() => {
23
+ // eslint-disable-next-line no-console
24
+ console.log('Background change on hover');
25
+ }}
26
+ >
27
+ <Typography.Text variant="body-m">Hover to change background</Typography.Text>
28
+ </Pressable>
29
+
30
+ <Pressable
31
+ backgroundColor="$bg.accent.default"
32
+ padding="$space.16"
33
+ borderRadius="$radius.m"
34
+ hoverStyle={{ scale: 1.05 }}
35
+ onPress={() => {
36
+ // eslint-disable-next-line no-console
37
+ console.log('Scale on hover');
38
+ }}
39
+ >
40
+ <Typography.Text variant="body-m" color="$content.base.onContrasted.hi">
41
+ Hover to scale up
42
+ </Typography.Text>
43
+ </Pressable>
44
+
45
+ <Pressable
46
+ backgroundColor="$bg.promo.hi.default"
47
+ padding="$space.16"
48
+ borderRadius="$radius.m"
49
+ hoverStyle={{ opacity: 0.8 }}
50
+ onPress={() => {
51
+ // eslint-disable-next-line no-console
52
+ console.log('Opacity on hover');
53
+ }}
54
+ >
55
+ <Typography.Text variant="body-m" color="$content.base.onContrasted.hi">
56
+ Hover to reduce opacity
57
+ </Typography.Text>
58
+ </Pressable>
59
+ </VStack>
60
+ ),
61
+ };
62
+
63
+ export const PressEffects: Story = {
64
+ render: () => (
65
+ <VStack gap="$space.16">
66
+ <Pressable
67
+ backgroundColor="$bg.accent.default"
68
+ padding="$space.16"
69
+ borderRadius="$radius.m"
70
+ pressStyle={{ scale: 0.95 }}
71
+ onPress={() => {
72
+ // eslint-disable-next-line no-console
73
+ console.log('Scale down on press');
74
+ }}
75
+ >
76
+ <Typography.Text variant="body-m" color="$content.base.onContrasted.hi">
77
+ Press to scale down
78
+ </Typography.Text>
79
+ </Pressable>
80
+
81
+ <Pressable
82
+ backgroundColor="$bg.promo.hi.default"
83
+ padding="$space.16"
84
+ borderRadius="$radius.m"
85
+ pressStyle={{ backgroundColor: '$bg.promo.hi.pressed', opacity: 0.9 }}
86
+ onPress={() => {
87
+ // eslint-disable-next-line no-console
88
+ console.log('Background + opacity on press');
89
+ }}
90
+ >
91
+ <Typography.Text variant="body-m" color="$content.base.onContrasted.hi">
92
+ Press to change background and opacity
93
+ </Typography.Text>
94
+ </Pressable>
95
+
96
+ <Pressable
97
+ backgroundColor="$bg.info.hi"
98
+ padding="$space.16"
99
+ borderRadius="$radius.m"
100
+ pressStyle={{ scale: 0.98, rotateZ: '1deg' }}
101
+ onPress={() => {
102
+ // eslint-disable-next-line no-console
103
+ console.log('Scale + rotate on press');
104
+ }}
105
+ >
106
+ <Typography.Text variant="body-m" color="$content.base.onContrasted.hi">
107
+ Press to scale and rotate
108
+ </Typography.Text>
109
+ </Pressable>
110
+ </VStack>
111
+ ),
112
+ };
113
+
114
+ export const PolymorphicAs: Story = {
115
+ render: () => (
116
+ <VStack gap="$space.16">
117
+ <Pressable
118
+ backgroundColor="$bg.accent.default"
119
+ padding="$space.16"
120
+ borderRadius="$radius.m"
121
+ hoverStyle={{ backgroundColor: '$bg.accent.pressed' }}
122
+ pressStyle={{ scale: 0.98 }}
123
+ onPress={() => {
124
+ // eslint-disable-next-line no-console
125
+ console.log('Default (View) pressed');
126
+ }}
127
+ >
128
+ <Typography.Text variant="label-m" color="$content.base.onContrasted.hi">
129
+ Default as View
130
+ </Typography.Text>
131
+ </Pressable>
132
+
133
+ <Pressable
134
+ as={HStack}
135
+ gap="$space.12"
136
+ backgroundColor="$bg.promo.hi.default"
137
+ padding="$space.16"
138
+ borderRadius="$radius.m"
139
+ hoverStyle={{ backgroundColor: '$bg.promo.hi.pressed' }}
140
+ pressStyle={{ scale: 0.98 }}
141
+ onPress={() => {
142
+ // eslint-disable-next-line no-console
143
+ console.log('HStack pressed');
144
+ }}
145
+ >
146
+ <Typography.Text variant="label-m" color="$content.base.onContrasted.hi">
147
+ Pressable as HStack
148
+ </Typography.Text>
149
+ </Pressable>
150
+
151
+ <Pressable
152
+ as={VStack}
153
+ gap="$space.8"
154
+ backgroundColor="$bg.info.hi"
155
+ padding="$space.16"
156
+ borderRadius="$radius.m"
157
+ alignItems="center"
158
+ hoverStyle={{ opacity: 0.9 }}
159
+ pressStyle={{ scale: 0.98 }}
160
+ onPress={() => {
161
+ // eslint-disable-next-line no-console
162
+ console.log('VStack pressed');
163
+ }}
164
+ >
165
+ <Typography.Text variant="label-m" color="$content.base.onContrasted.hi">
166
+ Pressable as VStack
167
+ </Typography.Text>
168
+ </Pressable>
169
+ </VStack>
170
+ ),
171
+ };
@@ -1,25 +1,87 @@
1
- import type { Meta, StoryFn } from '@storybook/react';
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { Typography } from '../../content/typography/Typography';
3
- import type { CenterProps } from './Center';
4
- import { Center } from './Center';
5
3
  import { Pressable } from './Pressable';
6
4
 
7
- export default {
8
- title: 'bumper/Primitives',
9
- component: Center,
10
- } satisfies Meta<CenterProps>;
5
+ const meta: Meta<typeof Pressable> = {
6
+ title: 'Bumper/Core/Primitives/Pressable',
7
+ component: Pressable,
8
+ tags: ['autodocs'],
9
+ argTypes: {
10
+ backgroundColor: {
11
+ control: 'select',
12
+ options: [
13
+ '$bg.base.low.default',
14
+ '$bg.base.low.pressed',
15
+ '$bg.base.mid.default',
16
+ '$bg.base.mid.pressed',
17
+ '$bg.base.hi.default',
18
+ '$bg.base.hi.pressed',
19
+ '$bg.accent.default',
20
+ '$bg.accent.pressed',
21
+ '$bg.promo.mid.default',
22
+ '$bg.promo.mid.pressed',
23
+ '$bg.promo.hi.default',
24
+ '$bg.promo.hi.pressed',
25
+ '$bg.highlight.mid.default',
26
+ '$bg.highlight.mid.pressed',
27
+ '$bg.highlight.hi.default',
28
+ '$bg.highlight.hi.pressed',
29
+ '$bg.info.mid',
30
+ '$bg.info.hi',
31
+ '$bg.success.mid',
32
+ '$bg.success.hi',
33
+ '$bg.warning.mid',
34
+ '$bg.warning.hi',
35
+ '$bg.danger.mid',
36
+ '$bg.danger.hi',
37
+ '$bg.disabled.mid',
38
+ '$bg.disabled.hi',
39
+ '$bg.overlay',
40
+ ],
41
+ description: 'Background color (semantic theme token)',
42
+ },
43
+ padding: {
44
+ control: 'select',
45
+ options: [
46
+ '$space.none',
47
+ '$space.2',
48
+ '$space.4',
49
+ '$space.8',
50
+ '$space.12',
51
+ '$space.16',
52
+ '$space.24',
53
+ '$space.32',
54
+ '$space.40',
55
+ '$space.48',
56
+ '$space.56',
57
+ '$space.64',
58
+ '$space.80',
59
+ ],
60
+ description: 'Padding (space token)',
61
+ },
62
+ pressStyle: {
63
+ control: 'object',
64
+ description: 'Styles to apply on press',
65
+ },
66
+ },
67
+ };
11
68
 
12
- export const PressableStory: StoryFn<typeof Pressable> = () => (
13
- <Pressable
14
- as={Center}
15
- marginTop="$space.16"
16
- padding="$space.24"
17
- backgroundColor="$bg.accent.default"
18
- pressStyle={{ opacity: 0.7 }}
19
- onPress={() => null}
20
- >
21
- <Typography.Text color="$content.base.onContrasted.hi">Click me</Typography.Text>
22
- </Pressable>
23
- );
69
+ export default meta;
70
+ type Story = StoryObj<typeof meta>;
24
71
 
25
- PressableStory.storyName = 'Pressable';
72
+ export const Default: Story = {
73
+ args: {
74
+ backgroundColor: '$bg.accent.default',
75
+ padding: '$space.16',
76
+ pressStyle: { backgroundColor: '$bg.accent.pressed', scale: 0.98 },
77
+ onPress: () => {
78
+ // eslint-disable-next-line no-console
79
+ console.log('Pressed!');
80
+ },
81
+ },
82
+ render: (args) => (
83
+ <Pressable {...args}>
84
+ <Typography.Text color="$content.base.onContrasted.hi">Press me</Typography.Text>
85
+ </Pressable>
86
+ ),
87
+ };
@@ -14,15 +14,6 @@ export type PressableProps<C extends TamaguiComponent = typeof View> = {
14
14
 
15
15
  /**
16
16
  * A polymorphic Pressable component that can render as any Tamagui primitive.
17
- *
18
- * @example
19
- * <Pressable onPress={() => {}} />
20
- *
21
- * @example
22
- * <Pressable
23
- * as={HStack}
24
- * onPress={() => {}}
25
- * />
26
17
  */
27
18
  export function Pressable<C extends TamaguiComponent = typeof View>({ as, ...rest }: PressableProps<C>): ReactNode {
28
19
  const Component = styled(as ?? View, {