@ornikar/bumper 2.8.1-canary.1768927687.5a0439490957cfbbe8b8c5136c5fc68b0828466d.0 → 2.8.1-canary.1769093881.a46790da1b5b6361954b6ad25766074d3ed69784.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 (79) hide show
  1. package/CHANGELOG.md +4 -1
  2. package/dist/definitions/index.d.ts +2 -1
  3. package/dist/definitions/index.d.ts.map +1 -1
  4. package/dist/definitions/shared/storybook/StoryTitle.d.ts +1 -1
  5. package/dist/definitions/shared/storybook/helpers/argsHelpers.d.ts +8 -0
  6. package/dist/definitions/shared/storybook/helpers/argsHelpers.d.ts.map +1 -0
  7. package/dist/definitions/system/content/typography/Typography.d.ts +5 -14
  8. package/dist/definitions/system/content/typography/Typography.d.ts.map +1 -1
  9. package/dist/definitions/system/content/typography/TypographyLink.d.ts +9 -0
  10. package/dist/definitions/system/content/typography/TypographyLink.d.ts.map +1 -0
  11. package/dist/definitions/system/content/typography/index.d.ts +21 -0
  12. package/dist/definitions/system/content/typography/index.d.ts.map +1 -0
  13. package/dist/definitions/system/core/themes/light/light.d.ts +3 -0
  14. package/dist/definitions/system/core/themes/light/light.d.ts.map +1 -0
  15. package/dist/definitions/system/core/themes/themes.d.ts +6 -0
  16. package/dist/definitions/system/core/themes/themes.d.ts.map +1 -0
  17. package/dist/definitions/tamagui.config.d.ts +1 -57
  18. package/dist/definitions/tamagui.config.d.ts.map +1 -1
  19. package/dist/index-metro.es.android.js +139 -105
  20. package/dist/index-metro.es.android.js.map +1 -1
  21. package/dist/index-metro.es.ios.js +139 -105
  22. package/dist/index-metro.es.ios.js.map +1 -1
  23. package/dist/index-node-22.22.cjs.js +143 -109
  24. package/dist/index-node-22.22.cjs.js.map +1 -1
  25. package/dist/index-node-22.22.cjs.web.js +143 -109
  26. package/dist/index-node-22.22.cjs.web.js.map +1 -1
  27. package/dist/index-node-22.22.es.mjs +145 -111
  28. package/dist/index-node-22.22.es.mjs.map +1 -1
  29. package/dist/index-node-22.22.es.web.mjs +145 -111
  30. package/dist/index-node-22.22.es.web.mjs.map +1 -1
  31. package/dist/index.es.js +137 -103
  32. package/dist/index.es.js.map +1 -1
  33. package/dist/index.es.web.js +137 -103
  34. package/dist/index.es.web.js.map +1 -1
  35. package/dist/tsbuildinfo +1 -1
  36. package/package.json +2 -2
  37. package/src/index.ts +2 -1
  38. package/src/shared/storybook/StoryTitle.tsx +1 -1
  39. package/src/shared/storybook/helpers/argsHelpers.ts +47 -0
  40. package/src/system/content/icon/Icon.features.stories.tsx +1 -1
  41. package/src/system/content/icon/Icon.stories.tsx +3 -22
  42. package/src/system/content/typography/Typography.features.stories.tsx +1 -1
  43. package/src/system/content/typography/Typography.stories.tsx +3 -23
  44. package/src/system/content/typography/Typography.tsx +2 -14
  45. package/src/system/content/typography/TypographyIcon.features.stories.tsx +1 -1
  46. package/src/system/content/typography/TypographyIcon.stories.tsx +2 -19
  47. package/src/system/content/typography/TypographyLink.features.stories.tsx +62 -0
  48. package/src/system/content/typography/TypographyLink.stories.tsx +72 -0
  49. package/src/system/content/typography/TypographyLink.tsx +38 -0
  50. package/src/system/content/typography/__snapshots__/TypographyLink.features.stories.tsx.snap +229 -0
  51. package/src/system/content/typography/__snapshots__/TypographyLink.stories.tsx.snap +41 -0
  52. package/src/system/content/typography/__snapshots_web__/TypographyLink.features.stories.tsx.snap +196 -0
  53. package/src/system/content/typography/__snapshots_web__/TypographyLink.stories.tsx.snap +33 -0
  54. package/src/system/content/typography/index.ts +15 -0
  55. package/src/system/core/primitives/Center.features.stories.tsx +1 -1
  56. package/src/system/core/primitives/Center.stories.tsx +6 -89
  57. package/src/system/core/primitives/Image/Image.stories.tsx +3 -8
  58. package/src/system/core/primitives/Pressable.features.stories.tsx +1 -1
  59. package/src/system/core/primitives/Pressable.stories.tsx +4 -53
  60. package/src/system/core/primitives/ScrollView/ScrollView.features.stories.tsx +1 -1
  61. package/src/system/core/primitives/ScrollView/ScrollView.stories.tsx +3 -6
  62. package/src/system/core/primitives/Stack.features.stories.tsx +1 -1
  63. package/src/system/core/primitives/Stack.stories.tsx +4 -39
  64. package/src/system/core/primitives/View.features.stories.tsx +1 -1
  65. package/src/system/core/primitives/View.stories.tsx +6 -107
  66. package/src/system/core/themes/{light.stories.tsx → light/light.stories.tsx} +5 -5
  67. package/src/system/core/themes/{light.ts → light/light.ts} +3 -2
  68. package/src/system/core/themes/themes.ts +69 -0
  69. package/src/system/core/tokens/breakpoints.stories.tsx +1 -1
  70. package/src/system/core/tokens/fonts.stories.tsx +1 -1
  71. package/src/system/core/tokens/palettes/deepPurpleColorPalette.stories.tsx +1 -1
  72. package/src/system/core/tokens/radius.stories.tsx +1 -1
  73. package/src/system/core/tokens/size.stories.tsx +1 -1
  74. package/src/system/core/tokens/space.stories.tsx +1 -1
  75. package/src/tamagui.config.ts +1 -1
  76. package/dist/definitions/system/core/themes/light.d.ts +0 -58
  77. package/dist/definitions/system/core/themes/light.d.ts.map +0 -1
  78. /package/src/system/core/themes/{__snapshots__ → light/__snapshots__}/light.stories.tsx.snap +0 -0
  79. /package/src/system/core/themes/{__snapshots_web__ → light/__snapshots_web__}/light.stories.tsx.snap +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ornikar/bumper",
3
- "version": "2.8.1-canary.1768927687.5a0439490957cfbbe8b8c5136c5fc68b0828466d.0",
3
+ "version": "2.8.1-canary.1769093881.a46790da1b5b6361954b6ad25766074d3ed69784.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "directory": "@ornikar/bumper",
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "@babel/runtime": "^7.24.0",
31
- "@ornikar/kitt-icons": "14.3.2-canary.1768927687.5a0439490957cfbbe8b8c5136c5fc68b0828466d.0",
31
+ "@ornikar/kitt-icons": "^14.3.1",
32
32
  "@tamagui/core": "1.144.2",
33
33
  "@tamagui/image": "1.144.2",
34
34
  "@tamagui/scroll-view": "1.144.2"
package/src/index.ts CHANGED
@@ -16,9 +16,10 @@ export type { ViewProps } from './system/core/primitives/View';
16
16
  export { View } from './system/core/primitives/View';
17
17
 
18
18
  // Typography
19
+ export { Typography } from './system/content/typography';
19
20
  export type { TypographyTextProps } from './system/content/typography/Typography';
20
- export { Typography } from './system/content/typography/Typography';
21
21
  export type { TypographyIconProps } from './system/content/typography/TypographyIcon';
22
+ export type { TypographyLinkProps } from './system/content/typography/TypographyLink';
22
23
 
23
24
  // Breakpoints
24
25
  export { useBreakpointValue } from './system/core/breakpoints/hooks/useBreakpointValue';
@@ -1,5 +1,5 @@
1
1
  import { styled } from '@tamagui/core';
2
- import { Typography } from '../../system/content/typography/Typography';
2
+ import { Typography } from '../../system/content/typography';
3
3
 
4
4
  export const StoryTitle = styled(Typography.Text, {
5
5
  variants: {
@@ -0,0 +1,47 @@
1
+ import type { ArgTypes } from '@storybook/react';
2
+ import {
3
+ SEMANTIC_TOKENS_BACKGROUND,
4
+ SEMANTIC_TOKENS_BORDER,
5
+ SEMANTIC_TOKENS_CONTENT,
6
+ } from '../../../system/core/themes/themes';
7
+ import { radiusTokens } from '../../../system/core/tokens/radius';
8
+ import { sizeTokens } from '../../../system/core/tokens/size';
9
+ import { spaceTokens } from '../../../system/core/tokens/space';
10
+
11
+ const getTokenKey = (name: string) => `$${name}`;
12
+
13
+ export const backgroundColorArgType: ArgTypes[string] = {
14
+ control: 'select',
15
+ options: SEMANTIC_TOKENS_BACKGROUND.map(getTokenKey),
16
+ description: 'Background color (semantic theme token)',
17
+ };
18
+
19
+ export const spaceArgType: ArgTypes[string] = {
20
+ control: 'select',
21
+ options: Object.keys(spaceTokens).map(getTokenKey),
22
+ description: 'Space value (space token)',
23
+ };
24
+
25
+ export const sizeArgType: ArgTypes[string] = {
26
+ control: 'select',
27
+ options: Object.keys(sizeTokens).map(getTokenKey),
28
+ description: 'Size value (size token)',
29
+ };
30
+
31
+ export const radiusArgType: ArgTypes[string] = {
32
+ control: 'select',
33
+ options: Object.keys(radiusTokens).map(getTokenKey),
34
+ description: 'Border radius (radius token)',
35
+ };
36
+
37
+ export const contentColorArgType: ArgTypes[string] = {
38
+ control: 'select',
39
+ options: SEMANTIC_TOKENS_CONTENT.map(getTokenKey),
40
+ description: 'Content color (semantic theme token)',
41
+ };
42
+
43
+ export const borderColorArgType: ArgTypes[string] = {
44
+ control: 'select',
45
+ options: SEMANTIC_TOKENS_BORDER.map(getTokenKey),
46
+ description: 'Border color (semantic theme token)',
47
+ };
@@ -6,7 +6,7 @@ import {
6
6
  } from '@ornikar/kitt-icons/phosphor';
7
7
  import type { Meta, StoryObj } from '@storybook/react';
8
8
  import { HStack, VStack } from '../../core/primitives/Stack';
9
- import { Typography } from '../typography/Typography';
9
+ import { Typography } from '../typography';
10
10
  import { Icon } from './Icon';
11
11
 
12
12
  const meta: Meta<typeof Icon> = {
@@ -1,5 +1,6 @@
1
1
  import { StarRegularIcon } from '@ornikar/kitt-icons/phosphor';
2
2
  import type { Meta, StoryObj } from '@storybook/react';
3
+ import { contentColorArgType, sizeArgType } from '../../../shared/storybook/helpers/argsHelpers';
3
4
  import { Icon } from './Icon';
4
5
 
5
6
  const meta: Meta<typeof Icon> = {
@@ -7,28 +8,8 @@ const meta: Meta<typeof Icon> = {
7
8
  component: Icon,
8
9
  tags: ['autodocs'],
9
10
  argTypes: {
10
- size: {
11
- control: 'select',
12
- options: ['$size.16', '$size.20', '$size.24', '$size.32', '$size.48', '$size.64', '$size.80', '$size.96'],
13
- description: 'Icon size (uses size tokens)',
14
- },
15
- color: {
16
- control: 'select',
17
- options: [
18
- '$content.base.low',
19
- '$content.base.mid',
20
- '$content.base.hi',
21
- '$content.accent',
22
- '$content.promo',
23
- '$content.info',
24
- '$content.success',
25
- '$content.warning',
26
- '$content.danger',
27
- '$content.muted',
28
- '$content.disabled',
29
- ],
30
- description: 'Icon color (semantic theme token)',
31
- },
11
+ size: sizeArgType,
12
+ color: contentColorArgType,
32
13
  },
33
14
  };
34
15
 
@@ -1,6 +1,6 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { VStack } from '../../core/primitives/Stack';
3
- import { Typography } from './Typography';
3
+ import { Typography } from '.';
4
4
 
5
5
  const meta: Meta<typeof Typography.Text> = {
6
6
  title: 'Bumper/Content/Typography/Features',
@@ -1,5 +1,6 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react';
2
- import { Typography } from './Typography';
2
+ import { contentColorArgType } from '../../../shared/storybook/helpers/argsHelpers';
3
+ import { Typography } from '.';
3
4
 
4
5
  const meta: Meta<typeof Typography.Text> = {
5
6
  title: 'Bumper/Content/Typography',
@@ -40,28 +41,7 @@ const meta: Meta<typeof Typography.Text> = {
40
41
  options: ['regular', 'semibold', 'bold'],
41
42
  description: 'Font weight (note: heading/label/content-caps variants have fixed weights)',
42
43
  },
43
- color: {
44
- control: 'select',
45
- options: [
46
- '$content.base.low',
47
- '$content.base.mid',
48
- '$content.base.hi',
49
- '$content.base.onContrasted.low',
50
- '$content.base.onContrasted.mid',
51
- '$content.base.onContrasted.hi',
52
- '$content.accent',
53
- '$content.promo',
54
- '$content.promo.onContrasted',
55
- '$content.info',
56
- '$content.success',
57
- '$content.warning',
58
- '$content.danger',
59
- '$content.muted',
60
- '$content.disabled',
61
- '$content.disabled.onContrasted',
62
- ],
63
- description: 'Text color (semantic theme token)',
64
- },
44
+ color: contentColorArgType,
65
45
  },
66
46
  };
67
47
 
@@ -8,7 +8,6 @@ import type {
8
8
  HeadingFontVariants,
9
9
  LabelFontVariants,
10
10
  } from '../../core/tokens/fonts';
11
- import { TypographyIcon } from './TypographyIcon';
12
11
  import { getVariantAndWeightValues } from './utils/getVariantAndWeightValues';
13
12
  import {
14
13
  TypograhyColorContext,
@@ -97,7 +96,7 @@ export type TypographyTextProps =
97
96
  | OverrideTamaguiComponentProps<HeadingLabelProps>
98
97
  | OverrideTamaguiComponentProps<ContentCapsProps>;
99
98
 
100
- const TypographyBase = InternalTypography.styleable<TypographyTextProps, TypographyTextProps>((props, ref) => {
99
+ export const TypographyBase = InternalTypography.styleable<TypographyTextProps, TypographyTextProps>((props, ref) => {
101
100
  const typographyVariantAncestorValue = useTypographyVariant();
102
101
  const typographyWeightAncestorValue = useTypographyWeight();
103
102
  const typographyColorAncestorValue = useTypographyColor();
@@ -147,19 +146,8 @@ const TypographyBase = InternalTypography.styleable<TypographyTextProps, Typogra
147
146
  return content;
148
147
  });
149
148
 
150
- const createHeading = (level: number): TamaguiComponent<TypographyTextProps> => {
149
+ export const createHeading = (level: number): TamaguiComponent<TypographyTextProps> => {
151
150
  return TypographyBase.styleable<TypographyTextProps, TypographyTextProps>((props, ref) => {
152
151
  return <TypographyBase ref={ref} {...props} role="heading" aria-level={level} />;
153
152
  });
154
153
  };
155
-
156
- export const Typography = {
157
- Text: TypographyBase,
158
- Header1: createHeading(1),
159
- Header2: createHeading(2),
160
- Header3: createHeading(3),
161
- Header4: createHeading(4),
162
- Header5: createHeading(5),
163
- Header6: createHeading(6),
164
- Icon: TypographyIcon,
165
- };
@@ -6,8 +6,8 @@ import {
6
6
  } from '@ornikar/kitt-icons/phosphor';
7
7
  import type { Meta, StoryObj } from '@storybook/react';
8
8
  import { HStack, VStack } from '../../core/primitives/Stack';
9
- import { Typography } from './Typography';
10
9
  import { TypographyIcon } from './TypographyIcon';
10
+ import { Typography } from '.';
11
11
 
12
12
  const meta: Meta<typeof TypographyIcon> = {
13
13
  title: 'Bumper/Content/TypographyIcon/Features',
@@ -1,5 +1,6 @@
1
1
  import { StarRegularIcon } from '@ornikar/kitt-icons/phosphor';
2
2
  import type { Meta, StoryObj } from '@storybook/react';
3
+ import { contentColorArgType } from '../../../shared/storybook/helpers/argsHelpers';
3
4
  import { TypographyIcon } from './TypographyIcon';
4
5
 
5
6
  const meta: Meta<typeof TypographyIcon> = {
@@ -17,25 +18,7 @@ const meta: Meta<typeof TypographyIcon> = {
17
18
  description: 'Icon size (uses size tokens)',
18
19
  },
19
20
  color: {
20
- control: 'select',
21
- options: [
22
- '$content.base.low',
23
- '$content.base.mid',
24
- '$content.base.hi',
25
- '$content.base.onContrasted.low',
26
- '$content.base.onContrasted.mid',
27
- '$content.base.onContrasted.hi',
28
- '$content.accent',
29
- '$content.promo',
30
- '$content.promo.onContrasted',
31
- '$content.info',
32
- '$content.success',
33
- '$content.warning',
34
- '$content.danger',
35
- '$content.muted',
36
- '$content.disabled',
37
- '$content.disabled.onContrasted',
38
- ],
21
+ ...contentColorArgType,
39
22
  description: 'Icon color (semantic theme token). When omitted, inherits from parent Typography context.',
40
23
  },
41
24
  },
@@ -0,0 +1,62 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { VStack } from '../../core/primitives/Stack';
3
+ import { TypographyLink } from './TypographyLink';
4
+
5
+ const meta: Meta<typeof TypographyLink> = {
6
+ title: 'Bumper/Content/TypographyLink/Features',
7
+ component: TypographyLink,
8
+ };
9
+
10
+ export default meta;
11
+ type Story = StoryObj<typeof meta>;
12
+
13
+ export const DisabledFalse: Story = {
14
+ args: {
15
+ disabled: false,
16
+ children: 'Enabled link (clickable with pointer cursor)',
17
+ onPress: () => alert('Link clicked!'),
18
+ },
19
+ };
20
+
21
+ export const DisabledTrue: Story = {
22
+ args: {
23
+ disabled: true,
24
+ children: 'Disabled link (not-allowed cursor, onPress removed)',
25
+ onPress: () => alert('This should not be called'),
26
+ },
27
+ };
28
+
29
+ export const NoUnderlineFalse: Story = {
30
+ args: {
31
+ noUnderline: false,
32
+ children: 'Link with underline (default)',
33
+ onPress: () => alert('Link clicked!'),
34
+ },
35
+ };
36
+
37
+ export const NoUnderlineTrue: Story = {
38
+ args: {
39
+ noUnderline: true,
40
+ children: 'Link without underline',
41
+ onPress: () => alert('Link clicked!'),
42
+ },
43
+ };
44
+
45
+ export const StateHover: Story = {
46
+ render: () => (
47
+ <VStack gap="$space.16">
48
+ <TypographyLink forceStyle="hover" onPress={() => alert('Link clicked!')}>
49
+ Forced hover state - underline removed (hoverStyle applied)
50
+ </TypographyLink>
51
+ <TypographyLink noUnderline forceStyle="hover" onPress={() => alert('Link clicked!')}>
52
+ Forced hover state with noUnderline - no visual change
53
+ </TypographyLink>
54
+ <TypographyLink disabled forceStyle="hover" onPress={() => alert('Link clicked!')}>
55
+ Forced hover state on disabled - underline removed (hoverStyle applied)
56
+ </TypographyLink>
57
+ <TypographyLink disabled noUnderline forceStyle="hover" onPress={() => alert('Link clicked!')}>
58
+ Forced hover state with noUnderline on disabled - no visual change
59
+ </TypographyLink>
60
+ </VStack>
61
+ ),
62
+ };
@@ -0,0 +1,72 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { contentColorArgType } from '../../../shared/storybook/helpers/argsHelpers';
3
+ import { TypographyLink } from './TypographyLink';
4
+
5
+ const meta: Meta<typeof TypographyLink> = {
6
+ title: 'Bumper/Content/TypographyLink',
7
+ component: TypographyLink,
8
+ tags: ['autodocs'],
9
+ argTypes: {
10
+ variant: {
11
+ control: 'select',
12
+ options: [
13
+ 'heading-2xl',
14
+ 'heading-xl',
15
+ 'heading-l',
16
+ 'heading-m',
17
+ 'heading-s',
18
+ 'heading-xs',
19
+ 'heading-2xs',
20
+ 'body-xl',
21
+ 'body-l',
22
+ 'body-m',
23
+ 'body-s',
24
+ 'body-xs',
25
+ 'label-xl',
26
+ 'label-l',
27
+ 'label-m',
28
+ 'label-s',
29
+ 'content-caps-3xl',
30
+ 'content-caps-2xl',
31
+ 'content-caps-xl',
32
+ 'content-caps-l',
33
+ 'content-caps-m',
34
+ 'content-caps-s',
35
+ 'content-caps-xs',
36
+ ],
37
+ description: 'Typography variant (inherited from Typography.Text)',
38
+ },
39
+ weight: {
40
+ control: 'select',
41
+ options: ['regular', 'semibold', 'bold'],
42
+ description: 'Font weight (inherited from Typography.Text)',
43
+ },
44
+ color: contentColorArgType,
45
+ disabled: {
46
+ control: 'boolean',
47
+ description: 'When true, shows not-allowed cursor and disabled color',
48
+ },
49
+ noUnderline: {
50
+ control: 'boolean',
51
+ description: 'When true, removes the underline decoration',
52
+ },
53
+ onPress: {
54
+ description: 'Click/press handler (automatically removed when disabled=true)',
55
+ },
56
+ },
57
+ };
58
+
59
+ export default meta;
60
+ type Story = StoryObj<typeof meta>;
61
+
62
+ export const Default: Story = {
63
+ args: {
64
+ variant: 'body-m',
65
+ weight: 'regular',
66
+ color: '$content.accent',
67
+ disabled: false,
68
+ noUnderline: false,
69
+ children: 'This is a link',
70
+ onPress: () => alert('Link clicked!'),
71
+ },
72
+ };
@@ -0,0 +1,38 @@
1
+ import type { GetProps } from '@tamagui/core';
2
+ import { styled } from '@tamagui/core';
3
+ import { TypographyBase } from './Typography';
4
+
5
+ export const TypographyLink = styled(TypographyBase, {
6
+ name: 'TypographyLink',
7
+ role: 'link',
8
+ variants: {
9
+ disabled: {
10
+ true: {
11
+ cursor: 'not-allowed',
12
+ onPress: undefined,
13
+ color: '$content.disabled',
14
+ hoverStyle: undefined,
15
+ },
16
+ false: {
17
+ cursor: 'pointer',
18
+ hoverStyle: {
19
+ textDecorationLine: 'none',
20
+ },
21
+ },
22
+ },
23
+ noUnderline: {
24
+ true: {
25
+ textDecorationLine: 'none',
26
+ },
27
+ false: {
28
+ textDecorationLine: 'underline',
29
+ },
30
+ },
31
+ } as const,
32
+ defaultVariants: {
33
+ disabled: false,
34
+ noUnderline: false,
35
+ },
36
+ });
37
+
38
+ export type TypographyLinkProps = GetProps<typeof TypographyLink>;
@@ -0,0 +1,229 @@
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
+
3
+ exports[`Bumper/Content/TypographyLink/Features DisabledFalse 1`] = `
4
+ <RNCSafeAreaProvider
5
+ onInsetsChange={[Function]}
6
+ style={
7
+ [
8
+ {
9
+ "flex": 1,
10
+ },
11
+ undefined,
12
+ ]
13
+ }
14
+ >
15
+ <Text
16
+ onBlur={[Function]}
17
+ onClick={[Function]}
18
+ onFocus={[Function]}
19
+ onResponderGrant={[Function]}
20
+ onResponderMove={[Function]}
21
+ onResponderRelease={[Function]}
22
+ onResponderTerminate={[Function]}
23
+ onResponderTerminationRequest={[Function]}
24
+ onStartShouldSetResponder={[Function]}
25
+ role="link"
26
+ style={
27
+ {
28
+ "fontFamily": "GTStandard",
29
+ "textDecorationLine": "underline",
30
+ }
31
+ }
32
+ suppressHighlighting={true}
33
+ >
34
+ Enabled link (clickable with pointer cursor)
35
+ </Text>
36
+ </RNCSafeAreaProvider>
37
+ `;
38
+
39
+ exports[`Bumper/Content/TypographyLink/Features DisabledTrue 1`] = `
40
+ <RNCSafeAreaProvider
41
+ onInsetsChange={[Function]}
42
+ style={
43
+ [
44
+ {
45
+ "flex": 1,
46
+ },
47
+ undefined,
48
+ ]
49
+ }
50
+ >
51
+ <Text
52
+ role="link"
53
+ style={
54
+ {
55
+ "color": "#A8A8A8",
56
+ "fontFamily": "GTStandard",
57
+ "textDecorationLine": "underline",
58
+ }
59
+ }
60
+ suppressHighlighting={true}
61
+ >
62
+ Disabled link (not-allowed cursor, onPress removed)
63
+ </Text>
64
+ </RNCSafeAreaProvider>
65
+ `;
66
+
67
+ exports[`Bumper/Content/TypographyLink/Features NoUnderlineFalse 1`] = `
68
+ <RNCSafeAreaProvider
69
+ onInsetsChange={[Function]}
70
+ style={
71
+ [
72
+ {
73
+ "flex": 1,
74
+ },
75
+ undefined,
76
+ ]
77
+ }
78
+ >
79
+ <Text
80
+ onBlur={[Function]}
81
+ onClick={[Function]}
82
+ onFocus={[Function]}
83
+ onResponderGrant={[Function]}
84
+ onResponderMove={[Function]}
85
+ onResponderRelease={[Function]}
86
+ onResponderTerminate={[Function]}
87
+ onResponderTerminationRequest={[Function]}
88
+ onStartShouldSetResponder={[Function]}
89
+ role="link"
90
+ style={
91
+ {
92
+ "fontFamily": "GTStandard",
93
+ "textDecorationLine": "underline",
94
+ }
95
+ }
96
+ suppressHighlighting={true}
97
+ >
98
+ Link with underline (default)
99
+ </Text>
100
+ </RNCSafeAreaProvider>
101
+ `;
102
+
103
+ exports[`Bumper/Content/TypographyLink/Features NoUnderlineTrue 1`] = `
104
+ <RNCSafeAreaProvider
105
+ onInsetsChange={[Function]}
106
+ style={
107
+ [
108
+ {
109
+ "flex": 1,
110
+ },
111
+ undefined,
112
+ ]
113
+ }
114
+ >
115
+ <Text
116
+ onBlur={[Function]}
117
+ onClick={[Function]}
118
+ onFocus={[Function]}
119
+ onResponderGrant={[Function]}
120
+ onResponderMove={[Function]}
121
+ onResponderRelease={[Function]}
122
+ onResponderTerminate={[Function]}
123
+ onResponderTerminationRequest={[Function]}
124
+ onStartShouldSetResponder={[Function]}
125
+ role="link"
126
+ style={
127
+ {
128
+ "fontFamily": "GTStandard",
129
+ "textDecorationLine": "none",
130
+ }
131
+ }
132
+ suppressHighlighting={true}
133
+ >
134
+ Link without underline
135
+ </Text>
136
+ </RNCSafeAreaProvider>
137
+ `;
138
+
139
+ exports[`Bumper/Content/TypographyLink/Features StateHover 1`] = `
140
+ <RNCSafeAreaProvider
141
+ onInsetsChange={[Function]}
142
+ style={
143
+ [
144
+ {
145
+ "flex": 1,
146
+ },
147
+ undefined,
148
+ ]
149
+ }
150
+ >
151
+ <View
152
+ style={
153
+ {
154
+ "flexDirection": "column",
155
+ "gap": 16,
156
+ }
157
+ }
158
+ >
159
+ <Text
160
+ onBlur={[Function]}
161
+ onClick={[Function]}
162
+ onFocus={[Function]}
163
+ onResponderGrant={[Function]}
164
+ onResponderMove={[Function]}
165
+ onResponderRelease={[Function]}
166
+ onResponderTerminate={[Function]}
167
+ onResponderTerminationRequest={[Function]}
168
+ onStartShouldSetResponder={[Function]}
169
+ role="link"
170
+ style={
171
+ {
172
+ "fontFamily": "GTStandard",
173
+ "textDecorationLine": "none",
174
+ }
175
+ }
176
+ suppressHighlighting={true}
177
+ >
178
+ Forced hover state - underline removed (hoverStyle applied)
179
+ </Text>
180
+ <Text
181
+ onBlur={[Function]}
182
+ onClick={[Function]}
183
+ onFocus={[Function]}
184
+ onResponderGrant={[Function]}
185
+ onResponderMove={[Function]}
186
+ onResponderRelease={[Function]}
187
+ onResponderTerminate={[Function]}
188
+ onResponderTerminationRequest={[Function]}
189
+ onStartShouldSetResponder={[Function]}
190
+ role="link"
191
+ style={
192
+ {
193
+ "fontFamily": "GTStandard",
194
+ "textDecorationLine": "none",
195
+ }
196
+ }
197
+ suppressHighlighting={true}
198
+ >
199
+ Forced hover state with noUnderline - no visual change
200
+ </Text>
201
+ <Text
202
+ role="link"
203
+ style={
204
+ {
205
+ "color": "#A8A8A8",
206
+ "fontFamily": "GTStandard",
207
+ "textDecorationLine": "underline",
208
+ }
209
+ }
210
+ suppressHighlighting={true}
211
+ >
212
+ Forced hover state on disabled - underline removed (hoverStyle applied)
213
+ </Text>
214
+ <Text
215
+ role="link"
216
+ style={
217
+ {
218
+ "color": "#A8A8A8",
219
+ "fontFamily": "GTStandard",
220
+ "textDecorationLine": "none",
221
+ }
222
+ }
223
+ suppressHighlighting={true}
224
+ >
225
+ Forced hover state with noUnderline on disabled - no visual change
226
+ </Text>
227
+ </View>
228
+ </RNCSafeAreaProvider>
229
+ `;