@helpwave/hightide-native 0.1.1 → 0.3.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 (65) hide show
  1. package/package.json +2 -2
  2. package/src/components/chat/ChatAttachmentMessageBubble.tsx +3 -0
  3. package/src/components/chat/ChatConversationRow.tsx +127 -27
  4. package/src/components/chat/ChatQuickReplyChip.tsx +7 -1
  5. package/src/components/chat/ChatThreadHeader.tsx +88 -48
  6. package/src/components/list/ListActionItem.tsx +60 -11
  7. package/src/components/list/ListItem.tsx +47 -21
  8. package/src/components/list/ListItemAccessory.tsx +34 -0
  9. package/src/components/list/ListItemTextContent.tsx +53 -0
  10. package/src/components/list/ListNavigationItem.tsx +60 -16
  11. package/src/components/list/index.ts +2 -0
  12. package/src/components/user-interaction/Button.tsx +6 -15
  13. package/src/components/user-interaction/IconButton.tsx +5 -7
  14. package/src/components/user-interaction/MultiSelect.tsx +72 -46
  15. package/src/components/user-interaction/Select.tsx +5 -1
  16. package/src/components/user-interaction/ThemedPressable.tsx +9 -4
  17. package/src/components/visualization-and-display/Chip.tsx +12 -5
  18. package/src/components/visualization-and-display/ThemedIcon.tsx +12 -8
  19. package/src/components/visualization-and-display/ThemedText.tsx +6 -2
  20. package/src/global-contexts/HightideProvider.tsx +9 -17
  21. package/src/global-contexts/content-theme/ContentThemeContext.ts +5 -2
  22. package/src/global-contexts/content-theme/ContentThemeProvider.tsx +64 -10
  23. package/src/global-contexts/theme/ThemeProvider.tsx +9 -4
  24. package/src/theme/adapters/index.ts +1 -4
  25. package/src/theme/adapters/style-adapter-utils.ts +433 -0
  26. package/src/theme/resolvers/avatar.ts +9 -10
  27. package/src/theme/resolvers/button.ts +6 -7
  28. package/src/theme/resolvers/card.ts +3 -2
  29. package/src/theme/resolvers/chat/attachment-message-bubble.ts +25 -37
  30. package/src/theme/resolvers/chat/conversation-list.ts +5 -4
  31. package/src/theme/resolvers/chat/conversation-row.ts +114 -14
  32. package/src/theme/resolvers/chat/date-divider.ts +4 -4
  33. package/src/theme/resolvers/chat/message-bubble.ts +9 -10
  34. package/src/theme/resolvers/chat/message-composer.ts +5 -6
  35. package/src/theme/resolvers/chat/message-list.ts +3 -2
  36. package/src/theme/resolvers/chat/quick-reply-chip.ts +12 -20
  37. package/src/theme/resolvers/chat/system-line.ts +5 -6
  38. package/src/theme/resolvers/chat/thread-header.ts +60 -12
  39. package/src/theme/resolvers/checkbox.ts +6 -6
  40. package/src/theme/resolvers/chip.ts +9 -4
  41. package/src/theme/resolvers/divider.ts +3 -3
  42. package/src/theme/resolvers/iconButton.ts +5 -10
  43. package/src/theme/resolvers/input.ts +12 -7
  44. package/src/theme/resolvers/listItem.ts +19 -16
  45. package/src/theme/resolvers/multiSelect.ts +23 -16
  46. package/src/theme/resolvers/searchBar.ts +14 -7
  47. package/src/theme/resolvers/select.ts +22 -15
  48. package/src/theme/resolvers/switch.ts +5 -4
  49. package/src/theme/resolvers/themedPressable.ts +10 -5
  50. package/src/theme/themes/createHightideTheme.ts +13 -4
  51. package/src/theme/types/components/chat.ts +63 -3
  52. package/src/theme/types/components/chip.ts +4 -0
  53. package/src/theme/types/components/iconButton.ts +1 -7
  54. package/src/theme/types/components/listItem.ts +5 -0
  55. package/src/theme/types/components/multiSelect.ts +1 -0
  56. package/src/theme/types/components/select.ts +1 -0
  57. package/src/theme/types/components/themedPressable.ts +4 -0
  58. package/src/theme/types/layout.ts +13 -7
  59. package/src/theme/types/semantics.ts +2 -1
  60. package/src/theme/types/theme.ts +40 -12
  61. package/src/theme/types/typography.ts +9 -4
  62. package/src/theme/adapters/container-adapter.ts +0 -323
  63. package/src/theme/adapters/defined.ts +0 -11
  64. package/src/theme/adapters/icon-style-adapter.ts +0 -10
  65. package/src/theme/adapters/text-style-adapter.ts +0 -16
@@ -1,13 +1,7 @@
1
1
  import type {
2
- ChatMessageDirection,
3
- ContainerTokens,
4
- IconTokens,
5
- TextStyleTokens
2
+ ChatMessageDirection
6
3
  } from '@helpwave/hightide-design/component-token-resolvers'
7
4
 
8
- import { toContainerStyle } from '../../adapters/container-adapter'
9
- import { toIconStyle } from '../../adapters/icon-style-adapter'
10
- import { toTextStyle } from '../../adapters/text-style-adapter'
11
5
  import type {
12
6
  ChatAttachmentMessageBubbleDownloadIconContainerStyle,
13
7
  ChatAttachmentMessageBubbleDownloadIconStyle,
@@ -25,6 +19,7 @@ import type {
25
19
  ChatMessageBubbleMetaDataStatusContainerStyle,
26
20
  ChatMessageBubbleMetaDataTextStyle,
27
21
  PressableContainerStyle,
22
+ PressableIconStyle,
28
23
  PressableState,
29
24
  PressableStateLayerStyle,
30
25
  PressableTextStyle
@@ -36,17 +31,7 @@ import {
36
31
  type ComponentThemeResolver
37
32
  } from '../../types/resolver'
38
33
 
39
- const toOptionalContainerStyle = (tokens?: ContainerTokens): ChatMessageBubbleContainerStyle => (
40
- tokens === undefined ? {} : toContainerStyle(tokens)
41
- )
42
-
43
- const toOptionalTextStyle = (tokens?: TextStyleTokens): ChatMessageBubbleBodyTextStyle => (
44
- tokens === undefined ? {} : toTextStyle(tokens)
45
- )
46
-
47
- const toOptionalIconStyle = (tokens?: IconTokens): ChatMessageBubbleMetaDataIconStyle => (
48
- tokens === undefined ? {} : toIconStyle(tokens)
49
- )
34
+ import { StyleAdapterUtils } from '../../adapters'
50
35
 
51
36
  export const toChatAttachmentMessageBubbleThemeResolvers: ComponentThemeResolver<
52
37
  ChatAttachmentMessageBubbleThemeResolvers
@@ -64,33 +49,33 @@ export const toChatAttachmentMessageBubbleThemeResolvers: ComponentThemeResolver
64
49
  return {
65
50
  chatMessageBubbleOverrides: {
66
51
  container: createStyleResolver((state: ChatAttachmentMessageBubbleState): ChatMessageBubbleContainerStyle => (
67
- toOptionalContainerStyle(resolve(state.direction).chatMessageBubbleOverrides.container)
52
+ StyleAdapterUtils.container(resolve(state.direction).chatMessageBubbleOverrides.container ?? {})
68
53
  )),
69
54
  body: createStyleResolver((state: ChatAttachmentMessageBubbleState): ChatMessageBubbleBodyStyle => (
70
- toOptionalContainerStyle(resolve(state.direction).chatMessageBubbleOverrides.body)
55
+ StyleAdapterUtils.container(resolve(state.direction).chatMessageBubbleOverrides.body ?? {})
71
56
  )),
72
57
  bodyText: createStyleResolver((state: ChatAttachmentMessageBubbleState): ChatMessageBubbleBodyTextStyle => (
73
- toOptionalTextStyle(resolve(state.direction).chatMessageBubbleOverrides.bodyText)
58
+ StyleAdapterUtils.text(resolve(state.direction).chatMessageBubbleOverrides.bodyText = {})
74
59
  )),
75
60
  metaDataContainer: createStyleResolver((
76
61
  state: ChatAttachmentMessageBubbleState
77
62
  ): ChatMessageBubbleMetaDataContainerStyle => (
78
- toOptionalContainerStyle(resolve(state.direction).chatMessageBubbleOverrides.metaDataContainer)
63
+ StyleAdapterUtils.container(resolve(state.direction).chatMessageBubbleOverrides.metaDataContainer = {})
79
64
  )),
80
65
  metaDataStatusContainer: createStyleResolver((
81
66
  state: ChatAttachmentMessageBubbleState
82
67
  ): ChatMessageBubbleMetaDataStatusContainerStyle => (
83
- toOptionalContainerStyle(resolve(state.direction).chatMessageBubbleOverrides.metaDataStatusContainer)
68
+ StyleAdapterUtils.container(resolve(state.direction).chatMessageBubbleOverrides.metaDataStatusContainer = {})
84
69
  )),
85
70
  metaDataText: createStyleResolver((
86
71
  state: ChatAttachmentMessageBubbleState
87
72
  ): ChatMessageBubbleMetaDataTextStyle => (
88
- toOptionalTextStyle(resolve(state.direction).chatMessageBubbleOverrides.metaDataText)
73
+ StyleAdapterUtils.text(resolve(state.direction).chatMessageBubbleOverrides.metaDataText = {})
89
74
  )),
90
75
  metaDataIcon: createValueResolver((
91
76
  state: ChatAttachmentMessageBubbleState
92
77
  ): ChatMessageBubbleMetaDataIconStyle => (
93
- toOptionalIconStyle(resolve(state.direction).chatMessageBubbleOverrides.metaDataIcon)
78
+ StyleAdapterUtils.icon(resolve(state.direction).chatMessageBubbleOverrides.metaDataIcon = {})
94
79
  )),
95
80
  },
96
81
  contentContainer: createValueResolver((state: ChatAttachmentMessageBubbleState) => {
@@ -111,53 +96,56 @@ export const toChatAttachmentMessageBubbleThemeResolvers: ComponentThemeResolver
111
96
 
112
97
  return {
113
98
  container: createStyleResolver((pressableState: PressableState): PressableContainerStyle => ({
114
- ...toContainerStyle(resolvePressable(pressableState).container),
115
- ...toOptionalContainerStyle(contentContainer.container),
99
+ ...StyleAdapterUtils.container(resolvePressable(pressableState).container),
100
+ ...StyleAdapterUtils.container(contentContainer.container = {}),
116
101
  })),
117
102
  stateLayer: createStyleResolver((pressableState: PressableState): PressableStateLayerStyle => ({
118
- ...toContainerStyle(resolvePressable(pressableState).stateLayer),
103
+ ...StyleAdapterUtils.container(resolvePressable(pressableState).stateLayer),
119
104
  position: 'absolute',
120
105
  top: 0,
121
106
  right: 0,
122
107
  bottom: 0,
123
108
  left: 0,
124
- ...toOptionalContainerStyle(contentContainer.stateLayer),
109
+ ...StyleAdapterUtils.container(contentContainer.stateLayer = {}),
125
110
  })),
126
111
  text: createStyleResolver((pressableState: PressableState): PressableTextStyle => ({
127
- ...toTextStyle(resolvePressable(pressableState).text),
128
- ...toOptionalTextStyle(contentContainer.text),
112
+ ...StyleAdapterUtils.text(resolvePressable(pressableState).text),
113
+ ...StyleAdapterUtils.text(contentContainer.text = {}),
129
114
  })),
115
+ icon: createValueResolver((pressableState: PressableState): PressableIconStyle => (
116
+ StyleAdapterUtils.icon(resolvePressable(pressableState).icon)
117
+ )),
130
118
  }
131
119
  }),
132
120
  fileIconContainer: createStyleResolver((
133
121
  state: ChatAttachmentMessageBubbleState
134
122
  ): ChatAttachmentMessageBubbleFileIconContainerStyle => (
135
- toContainerStyle(resolve(state.direction).fileIconContainer)
123
+ StyleAdapterUtils.container(resolve(state.direction).fileIconContainer)
136
124
  )),
137
125
  fileIcon: createValueResolver((
138
126
  state: ChatAttachmentMessageBubbleState
139
127
  ): ChatAttachmentMessageBubbleFileIconStyle => (
140
- toIconStyle(resolve(state.direction).fileIcon)
128
+ StyleAdapterUtils.icon(resolve(state.direction).fileIcon)
141
129
  )),
142
130
  downloadIconContainer: createStyleResolver((
143
131
  state: ChatAttachmentMessageBubbleState
144
132
  ): ChatAttachmentMessageBubbleDownloadIconContainerStyle => (
145
- toContainerStyle(resolve(state.direction).downloadIconContainer)
133
+ StyleAdapterUtils.container(resolve(state.direction).downloadIconContainer)
146
134
  )),
147
135
  downloadIcon: createValueResolver((
148
136
  state: ChatAttachmentMessageBubbleState
149
137
  ): ChatAttachmentMessageBubbleDownloadIconStyle => (
150
- toIconStyle(resolve(state.direction).downloadIcon)
138
+ StyleAdapterUtils.icon(resolve(state.direction).downloadIcon)
151
139
  )),
152
140
  fileNameText: createStyleResolver((
153
141
  state: ChatAttachmentMessageBubbleState
154
142
  ): ChatAttachmentMessageBubbleFileNameTextStyle => (
155
- toTextStyle(resolve(state.direction).fileNameText)
143
+ StyleAdapterUtils.text(resolve(state.direction).fileNameText)
156
144
  )),
157
145
  fileMetadataText: createStyleResolver((
158
146
  state: ChatAttachmentMessageBubbleState
159
147
  ): ChatAttachmentMessageBubbleFileMetadataTextStyle => (
160
- toTextStyle(resolve(state.direction).fileMetadataText)
148
+ StyleAdapterUtils.text(resolve(state.direction).fileMetadataText)
161
149
  )),
162
150
  }
163
151
  }
@@ -1,4 +1,3 @@
1
- import { toContainerStyle } from '../../adapters/container-adapter'
2
1
  import type {
3
2
  ChatConversationListFooterStyle,
4
3
  ChatConversationListHeaderStyle,
@@ -10,6 +9,8 @@ import {
10
9
  type ComponentThemeResolver
11
10
  } from '../../types/resolver'
12
11
 
12
+ import { StyleAdapterUtils } from '../../adapters'
13
+
13
14
  export const toChatConversationListThemeResolvers: ComponentThemeResolver<ChatConversationListThemeResolvers> = ({
14
15
  themeTokens,
15
16
  semanticTokens,
@@ -22,14 +23,14 @@ export const toChatConversationListThemeResolvers: ComponentThemeResolver<ChatCo
22
23
 
23
24
  return {
24
25
  container: createSimpleStyleResolver((): ChatConversationListStyle => ({
25
- ...toContainerStyle(resolve().container),
26
+ ...StyleAdapterUtils.container(resolve().container),
26
27
  flex: 1,
27
28
  })),
28
29
  header: createSimpleStyleResolver((): ChatConversationListHeaderStyle => (
29
- toContainerStyle(resolve().header)
30
+ StyleAdapterUtils.container(resolve().header)
30
31
  )),
31
32
  footer: createSimpleStyleResolver((): ChatConversationListFooterStyle => (
32
- toContainerStyle(resolve().footer)
33
+ StyleAdapterUtils.container(resolve().footer)
33
34
  )),
34
35
  }
35
36
  }
@@ -1,24 +1,46 @@
1
- import { toContainerStyle } from '../../adapters/container-adapter'
2
- import { toIconStyle } from '../../adapters/icon-style-adapter'
3
- import { toTextStyle } from '../../adapters/text-style-adapter'
4
1
  import type {
2
+ AvatarTokens
3
+ } from '@helpwave/hightide-design/component-token-resolvers'
4
+
5
+ import {
6
+ createAvatarStyleResolvers,
7
+ mergeAvatarTokens,
8
+ toDesignAvatarSize,
9
+ withNumericAvatarSize
10
+ } from '../avatar'
11
+ import type {
12
+ ChatConversationRowContentContainerStyle,
13
+ ChatConversationRowHeaderRowStyle,
14
+ ChatConversationRowMessageRowStyle,
5
15
  ChatConversationRowPreviewStyle,
16
+ ChatConversationRowSentIndicatorStyle,
6
17
  ChatConversationRowState,
7
- ChatConversationRowStyle,
8
18
  ChatConversationRowThemeResolvers,
9
19
  ChatConversationRowTimestampStyle,
10
20
  ChatConversationRowTitleStyle,
11
21
  ChatConversationRowUnreadBadgeStyle,
12
22
  ChatConversationRowUnreadBadgeTextStyle,
13
- ChatMessageBubbleMetaDataIconStyle
23
+ PressableContainerStyle,
24
+ PressableIconStyle,
25
+ PressableState,
26
+ PressableStateLayerStyle,
27
+ PressableTextStyle
14
28
  } from '../../types/components/chat'
29
+ import type {
30
+ AvatarState,
31
+ AvatarThemeResolvers
32
+ } from '../../types/components/avatar'
15
33
  import {
16
34
  createSimpleStyleResolver,
17
35
  createSimpleValueResolver,
18
36
  createStyleResolver,
37
+ createValueResolver,
38
+ toPressableInteractionState,
19
39
  type ComponentThemeResolver
20
40
  } from '../../types/resolver'
21
41
 
42
+ import { StyleAdapterUtils } from '../../adapters'
43
+
22
44
  export const toChatConversationRowThemeResolvers: ComponentThemeResolver<ChatConversationRowThemeResolvers> = ({
23
45
  themeTokens,
24
46
  semanticTokens,
@@ -39,26 +61,104 @@ export const toChatConversationRowThemeResolvers: ComponentThemeResolver<ChatCon
39
61
  })
40
62
 
41
63
  return {
42
- container: createStyleResolver((state: ChatConversationRowState): ChatConversationRowStyle => (
43
- toContainerStyle(resolve(state).container)
64
+ pressable: createValueResolver((state: ChatConversationRowState) => {
65
+ const { pressableOverrides } = resolve(state)
66
+
67
+ const resolvePressable = (pressableState: PressableState) => componentTokens.pressable({
68
+ themeTokens,
69
+ semanticResolvers: semanticTokens,
70
+ overrides: {
71
+ size: pressableOverrides.overrides?.size,
72
+ color: pressableOverrides.overrides?.color,
73
+ coloringStyle: pressableOverrides.overrides?.coloringStyle,
74
+ coloringColorVariant: pressableOverrides.overrides?.coloringColorVariant,
75
+ hasAdditionalHorizontalPadding: pressableOverrides.overrides?.hasAdditionalHorizontalPadding,
76
+ },
77
+ state: toPressableInteractionState(pressableState),
78
+ })
79
+
80
+ return {
81
+ container: createStyleResolver((pressableState: PressableState): PressableContainerStyle => ({
82
+ ...StyleAdapterUtils.container(resolvePressable(pressableState).container),
83
+ ...StyleAdapterUtils.container(pressableOverrides.container = {}),
84
+ })),
85
+ stateLayer: createStyleResolver((pressableState: PressableState): PressableStateLayerStyle => ({
86
+ ...StyleAdapterUtils.container(resolvePressable(pressableState).stateLayer),
87
+ position: 'absolute',
88
+ top: 0,
89
+ right: 0,
90
+ bottom: 0,
91
+ left: 0,
92
+ ...StyleAdapterUtils.container(pressableOverrides.stateLayer = {}),
93
+ })),
94
+ text: createStyleResolver((pressableState: PressableState): PressableTextStyle => ({
95
+ ...StyleAdapterUtils.text(resolvePressable(pressableState).text),
96
+ ...StyleAdapterUtils.text(pressableOverrides.text = {}),
97
+ })),
98
+ icon: createValueResolver((pressableState: PressableState): PressableIconStyle => ({
99
+ ...StyleAdapterUtils.icon(resolvePressable(pressableState).icon),
100
+ ...StyleAdapterUtils.icon(pressableOverrides.icon = {}),
101
+ })),
102
+ }
103
+ }),
104
+ contentContainer: createStyleResolver((state: ChatConversationRowState): ChatConversationRowContentContainerStyle => (
105
+ StyleAdapterUtils.container(resolve(state).contentContainer)
106
+ )),
107
+ headerRow: createStyleResolver((state: ChatConversationRowState): ChatConversationRowHeaderRowStyle => (
108
+ StyleAdapterUtils.container(resolve(state).headerRow)
109
+ )),
110
+ messageRow: createStyleResolver((state: ChatConversationRowState): ChatConversationRowMessageRowStyle => (
111
+ StyleAdapterUtils.container(resolve(state).messageRow)
44
112
  )),
45
113
  title: createStyleResolver((state: ChatConversationRowState): ChatConversationRowTitleStyle => (
46
- toTextStyle(resolve(state).title)
114
+ StyleAdapterUtils.text(resolve(state).title)
47
115
  )),
48
116
  timestamp: createStyleResolver((state: ChatConversationRowState): ChatConversationRowTimestampStyle => (
49
- toTextStyle(resolve(state).timestamp)
117
+ StyleAdapterUtils.text(resolve(state).timestamp)
50
118
  )),
51
119
  preview: createStyleResolver((state: ChatConversationRowState): ChatConversationRowPreviewStyle => (
52
- toTextStyle(resolve(state).preview)
120
+ StyleAdapterUtils.text(resolve(state).preview)
53
121
  )),
54
122
  unreadBadge: createSimpleStyleResolver((): ChatConversationRowUnreadBadgeStyle => (
55
- toContainerStyle(resolve().unreadBadge)
123
+ StyleAdapterUtils.container(resolve().unreadBadge)
56
124
  )),
57
125
  unreadBadgeText: createSimpleStyleResolver((): ChatConversationRowUnreadBadgeTextStyle => (
58
- toTextStyle(resolve().unreadBadgeText)
126
+ StyleAdapterUtils.text(resolve().unreadBadgeText)
59
127
  )),
60
- sentIndicator: createSimpleValueResolver((): ChatMessageBubbleMetaDataIconStyle => (
61
- toIconStyle(resolve().sentIndicator)
128
+ sentIndicator: createSimpleValueResolver((): ChatConversationRowSentIndicatorStyle => (
129
+ StyleAdapterUtils.icon(resolve().sentIndicator)
62
130
  )),
131
+ avatar: createValueResolver((state: AvatarState): AvatarThemeResolvers => {
132
+ const { avatarOverride } = resolve()
133
+
134
+ const resolveTokens = (avatarState: AvatarState): AvatarTokens => {
135
+ const tokens = mergeAvatarTokens(
136
+ componentTokens.avatar({
137
+ themeTokens,
138
+ semanticResolvers: semanticTokens,
139
+ config: {
140
+ isGrouped: avatarState.isGrouped,
141
+ groupIndex: avatarState.groupIndex,
142
+ },
143
+ overrides: {
144
+ color: avatarState.color ?? state.color ?? avatarOverride.overrides?.color,
145
+ size: toDesignAvatarSize(
146
+ avatarState.size ?? state.size ?? avatarOverride.overrides?.size
147
+ ),
148
+ },
149
+ }),
150
+ avatarOverride
151
+ )
152
+
153
+ const size = avatarState.size ?? state.size ?? avatarOverride.container?.size?.width
154
+ if (typeof size === 'number') {
155
+ return withNumericAvatarSize(tokens, size)
156
+ }
157
+
158
+ return tokens
159
+ }
160
+
161
+ return createAvatarStyleResolvers(resolveTokens, themeTokens)
162
+ }),
63
163
  }
64
164
  }
@@ -1,5 +1,3 @@
1
- import { toContainerStyle } from '../../adapters/container-adapter'
2
- import { toTextStyle } from '../../adapters/text-style-adapter'
3
1
  import type {
4
2
  ChatDateDividerStyle,
5
3
  ChatDateDividerTextStyle,
@@ -10,6 +8,8 @@ import {
10
8
  type ComponentThemeResolver
11
9
  } from '../../types/resolver'
12
10
 
11
+ import { StyleAdapterUtils } from '../../adapters'
12
+
13
13
  export const toChatDateDividerThemeResolvers: ComponentThemeResolver<ChatDateDividerThemeResolvers> = ({
14
14
  themeTokens,
15
15
  semanticTokens,
@@ -22,10 +22,10 @@ export const toChatDateDividerThemeResolvers: ComponentThemeResolver<ChatDateDiv
22
22
 
23
23
  return {
24
24
  container: createSimpleStyleResolver((): ChatDateDividerStyle => (
25
- toContainerStyle(resolve().container)
25
+ StyleAdapterUtils.container(resolve().container)
26
26
  )),
27
27
  text: createSimpleStyleResolver((): ChatDateDividerTextStyle => (
28
- toTextStyle(resolve().text)
28
+ StyleAdapterUtils.text(resolve().text)
29
29
  )),
30
30
  }
31
31
  }
@@ -1,8 +1,5 @@
1
1
  import type { ChatMessageDirection } from '@helpwave/hightide-design/component-token-resolvers'
2
2
 
3
- import { toContainerStyle } from '../../adapters/container-adapter'
4
- import { toIconStyle } from '../../adapters/icon-style-adapter'
5
- import { toTextStyle } from '../../adapters/text-style-adapter'
6
3
  import type {
7
4
  ChatMessageBubbleBodyStyle,
8
5
  ChatMessageBubbleBodyTextStyle,
@@ -20,6 +17,8 @@ import {
20
17
  type ComponentThemeResolver
21
18
  } from '../../types/resolver'
22
19
 
20
+ import { StyleAdapterUtils } from '../../adapters'
21
+
23
22
  export const toChatMessageBubbleThemeResolvers: ComponentThemeResolver<ChatMessageBubbleThemeResolvers> = ({
24
23
  themeTokens,
25
24
  semanticTokens,
@@ -33,25 +32,25 @@ export const toChatMessageBubbleThemeResolvers: ComponentThemeResolver<ChatMessa
33
32
 
34
33
  return {
35
34
  container: createStyleResolver((state: ChatMessageBubbleState): ChatMessageBubbleContainerStyle => (
36
- toContainerStyle(resolve(state.direction).container)
35
+ StyleAdapterUtils.container(resolve(state.direction).container)
37
36
  )),
38
37
  body: createStyleResolver((state: ChatMessageBubbleState): ChatMessageBubbleBodyStyle => (
39
- toContainerStyle(resolve(state.direction).body)
38
+ StyleAdapterUtils.container(resolve(state.direction).body)
40
39
  )),
41
40
  bodyText: createStyleResolver((state: ChatMessageBubbleState): ChatMessageBubbleBodyTextStyle => (
42
- toTextStyle(resolve(state.direction).bodyText)
41
+ StyleAdapterUtils.text(resolve(state.direction).bodyText)
43
42
  )),
44
43
  metaDataContainer: createStyleResolver((state: ChatMessageBubbleState): ChatMessageBubbleMetaDataContainerStyle => (
45
- toContainerStyle(resolve(state.direction).metaDataContainer)
44
+ StyleAdapterUtils.container(resolve(state.direction).metaDataContainer)
46
45
  )),
47
46
  metaDataStatusContainer: createStyleResolver((state: ChatMessageBubbleState): ChatMessageBubbleMetaDataStatusContainerStyle => (
48
- toContainerStyle(resolve(state.direction).metaDataStatusContainer)
47
+ StyleAdapterUtils.container(resolve(state.direction).metaDataStatusContainer)
49
48
  )),
50
49
  metaDataText: createStyleResolver((state: ChatMessageBubbleState): ChatMessageBubbleMetaDataTextStyle => (
51
- toTextStyle(resolve(state.direction).metaDataText)
50
+ StyleAdapterUtils.text(resolve(state.direction).metaDataText)
52
51
  )),
53
52
  metaDataIcon: createValueResolver((state: ChatMessageBubbleState): ChatMessageBubbleMetaDataIconStyle => (
54
- toIconStyle(resolve(state.direction).metaDataIcon)
53
+ StyleAdapterUtils.icon(resolve(state.direction).metaDataIcon)
55
54
  )),
56
55
  }
57
56
  }
@@ -1,5 +1,3 @@
1
- import { toContainerStyle } from '../../adapters/container-adapter'
2
- import { toTextStyle } from '../../adapters/text-style-adapter'
3
1
  import type { TextStyle } from 'react-native'
4
2
  import type {
5
3
  ChatMessageComposerInputStyle,
@@ -12,6 +10,8 @@ import {
12
10
  type ComponentThemeResolver
13
11
  } from '../../types/resolver'
14
12
 
13
+ import { StyleAdapterUtils } from '../../adapters'
14
+
15
15
  export const toChatMessageComposerThemeResolvers: ComponentThemeResolver<ChatMessageComposerThemeResolvers> = ({
16
16
  themeTokens,
17
17
  semanticTokens,
@@ -24,12 +24,11 @@ export const toChatMessageComposerThemeResolvers: ComponentThemeResolver<ChatMes
24
24
 
25
25
  return {
26
26
  container: createSimpleStyleResolver((): ChatMessageComposerStyle => (
27
- toContainerStyle(resolve().container)
27
+ StyleAdapterUtils.container(resolve().container)
28
28
  )),
29
29
  input: createSimpleStyleResolver((): ChatMessageComposerInputStyle => ({
30
- ...toContainerStyle(resolve().input),
31
- ...toTextStyle(resolve().text),
32
- flex: 1,
30
+ ...StyleAdapterUtils.container(resolve().input),
31
+ ...StyleAdapterUtils.text(resolve().text),
33
32
  })),
34
33
  placeholderColor: createSimpleValueResolver((): TextStyle => ({
35
34
  color: resolve().placeholder.color
@@ -1,4 +1,3 @@
1
- import { toContainerStyle } from '../../adapters/container-adapter'
2
1
  import type {
3
2
  ChatMessageListStyle,
4
3
  ChatMessageListThemeResolvers
@@ -8,6 +7,8 @@ import {
8
7
  type ComponentThemeResolver
9
8
  } from '../../types/resolver'
10
9
 
10
+ import { StyleAdapterUtils } from '../../adapters'
11
+
11
12
  export const toChatMessageListThemeResolvers: ComponentThemeResolver<ChatMessageListThemeResolvers> = ({
12
13
  themeTokens,
13
14
  semanticTokens,
@@ -20,7 +21,7 @@ export const toChatMessageListThemeResolvers: ComponentThemeResolver<ChatMessage
20
21
 
21
22
  return {
22
23
  container: createSimpleStyleResolver((): ChatMessageListStyle => ({
23
- ...toContainerStyle(resolve().container),
24
+ ...StyleAdapterUtils.container(resolve().container),
24
25
  flex: 1,
25
26
  })),
26
27
  }
@@ -1,14 +1,8 @@
1
- import type {
2
- ContainerTokens,
3
- TextStyleTokens
4
- } from '@helpwave/hightide-design/component-token-resolvers'
5
-
6
- import { toContainerStyle } from '../../adapters/container-adapter'
7
- import { toTextStyle } from '../../adapters/text-style-adapter'
8
1
  import type {
9
2
  ChatQuickReplyChipState,
10
3
  ChatQuickReplyChipThemeResolvers,
11
4
  PressableContainerStyle,
5
+ PressableIconStyle,
12
6
  PressableState,
13
7
  PressableStateLayerStyle,
14
8
  PressableTextStyle
@@ -20,13 +14,7 @@ import {
20
14
  type ComponentThemeResolver
21
15
  } from '../../types/resolver'
22
16
 
23
- const toOptionalContainerStyle = (tokens?: ContainerTokens): PressableContainerStyle => (
24
- tokens === undefined ? {} : toContainerStyle(tokens)
25
- )
26
-
27
- const toOptionalTextStyle = (tokens?: TextStyleTokens): PressableTextStyle => (
28
- tokens === undefined ? {} : toTextStyle(tokens)
29
- )
17
+ import { StyleAdapterUtils } from '../../adapters'
30
18
 
31
19
  export const toChatQuickReplyChipThemeResolvers: ComponentThemeResolver<ChatQuickReplyChipThemeResolvers> = ({
32
20
  themeTokens,
@@ -58,21 +46,25 @@ export const toChatQuickReplyChipThemeResolvers: ComponentThemeResolver<ChatQuic
58
46
 
59
47
  return {
60
48
  container: createStyleResolver((pressableState: PressableState): PressableContainerStyle => ({
61
- ...toContainerStyle(resolvePressable(pressableState).container),
62
- ...toOptionalContainerStyle(tokens.container),
49
+ ...StyleAdapterUtils.container(resolvePressable(pressableState).container),
50
+ ...StyleAdapterUtils.container(tokens.container = {}),
63
51
  })),
64
52
  stateLayer: createStyleResolver((pressableState: PressableState): PressableStateLayerStyle => ({
65
- ...toContainerStyle(resolvePressable(pressableState).stateLayer),
53
+ ...StyleAdapterUtils.container(resolvePressable(pressableState).stateLayer),
66
54
  position: 'absolute',
67
55
  top: 0,
68
56
  right: 0,
69
57
  bottom: 0,
70
58
  left: 0,
71
- ...toOptionalContainerStyle(tokens.stateLayer),
59
+ ...StyleAdapterUtils.container(tokens.stateLayer = {}),
72
60
  })),
73
61
  text: createStyleResolver((pressableState: PressableState): PressableTextStyle => ({
74
- ...toTextStyle(resolvePressable(pressableState).text),
75
- ...toOptionalTextStyle(tokens.text),
62
+ ...StyleAdapterUtils.text(resolvePressable(pressableState).text),
63
+ ...StyleAdapterUtils.text(tokens.text = {}),
64
+ })),
65
+ icon: createValueResolver((pressableState: PressableState): PressableIconStyle => ({
66
+ ...StyleAdapterUtils.icon(resolvePressable(pressableState).icon),
67
+ ...StyleAdapterUtils.icon(tokens.icon = {}),
76
68
  })),
77
69
  }
78
70
  }),
@@ -1,8 +1,5 @@
1
1
  import type { ColorPairToken } from '@helpwave/hightide-design/theme-tokens'
2
2
 
3
- import { toContainerStyle } from '../../adapters/container-adapter'
4
- import { toIconStyle } from '../../adapters/icon-style-adapter'
5
- import { toTextStyle } from '../../adapters/text-style-adapter'
6
3
  import type {
7
4
  ChatSystemLineIconStyle,
8
5
  ChatSystemLineState,
@@ -16,6 +13,8 @@ import {
16
13
  type ComponentThemeResolver
17
14
  } from '../../types/resolver'
18
15
 
16
+ import { StyleAdapterUtils } from '../../adapters'
17
+
19
18
  export const toChatSystemLineThemeResolvers: ComponentThemeResolver<ChatSystemLineThemeResolvers> = ({
20
19
  themeTokens,
21
20
  semanticTokens,
@@ -29,13 +28,13 @@ export const toChatSystemLineThemeResolvers: ComponentThemeResolver<ChatSystemLi
29
28
 
30
29
  return {
31
30
  container: createStyleResolver((state: ChatSystemLineState): ChatSystemLineStyle => (
32
- toContainerStyle(resolve(state.color).container)
31
+ StyleAdapterUtils.container(resolve(state.color).container)
33
32
  )),
34
33
  text: createStyleResolver((state: ChatSystemLineState): ChatSystemLineTextStyle => (
35
- toTextStyle(resolve(state.color).text)
34
+ StyleAdapterUtils.text(resolve(state.color).text)
36
35
  )),
37
36
  icon: createValueResolver((state: ChatSystemLineState): ChatSystemLineIconStyle => (
38
- toIconStyle(resolve(state.color).icon)
37
+ StyleAdapterUtils.icon(resolve(state.color).icon)
39
38
  )),
40
39
  }
41
40
  }