@helpwave/hightide-native 0.2.0 → 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 (44) hide show
  1. package/package.json +2 -2
  2. package/src/components/chat/ChatConversationRow.tsx +127 -27
  3. package/src/components/chat/ChatThreadHeader.tsx +88 -48
  4. package/src/components/user-interaction/MultiSelect.tsx +66 -38
  5. package/src/components/user-interaction/Select.tsx +4 -0
  6. package/src/global-contexts/HightideProvider.tsx +9 -17
  7. package/src/theme/adapters/index.ts +1 -4
  8. package/src/theme/adapters/style-adapter-utils.ts +433 -0
  9. package/src/theme/resolvers/avatar.ts +9 -10
  10. package/src/theme/resolvers/button.ts +6 -7
  11. package/src/theme/resolvers/card.ts +3 -2
  12. package/src/theme/resolvers/chat/attachment-message-bubble.ts +22 -38
  13. package/src/theme/resolvers/chat/conversation-list.ts +5 -4
  14. package/src/theme/resolvers/chat/conversation-row.ts +114 -14
  15. package/src/theme/resolvers/chat/date-divider.ts +4 -4
  16. package/src/theme/resolvers/chat/message-bubble.ts +9 -10
  17. package/src/theme/resolvers/chat/message-composer.ts +5 -6
  18. package/src/theme/resolvers/chat/message-list.ts +3 -2
  19. package/src/theme/resolvers/chat/quick-reply-chip.ts +9 -28
  20. package/src/theme/resolvers/chat/system-line.ts +5 -6
  21. package/src/theme/resolvers/chat/thread-header.ts +60 -12
  22. package/src/theme/resolvers/checkbox.ts +6 -6
  23. package/src/theme/resolvers/chip.ts +5 -6
  24. package/src/theme/resolvers/divider.ts +3 -3
  25. package/src/theme/resolvers/iconButton.ts +5 -5
  26. package/src/theme/resolvers/input.ts +12 -7
  27. package/src/theme/resolvers/listItem.ts +16 -17
  28. package/src/theme/resolvers/multiSelect.ts +23 -16
  29. package/src/theme/resolvers/searchBar.ts +14 -7
  30. package/src/theme/resolvers/select.ts +22 -15
  31. package/src/theme/resolvers/switch.ts +5 -4
  32. package/src/theme/resolvers/themedPressable.ts +6 -7
  33. package/src/theme/themes/createHightideTheme.ts +13 -4
  34. package/src/theme/types/components/chat.ts +54 -3
  35. package/src/theme/types/components/multiSelect.ts +1 -0
  36. package/src/theme/types/components/select.ts +1 -0
  37. package/src/theme/types/layout.ts +13 -7
  38. package/src/theme/types/semantics.ts +2 -1
  39. package/src/theme/types/theme.ts +40 -12
  40. package/src/theme/types/typography.ts +9 -4
  41. package/src/theme/adapters/container-adapter.ts +0 -323
  42. package/src/theme/adapters/defined.ts +0 -11
  43. package/src/theme/adapters/icon-style-adapter.ts +0 -10
  44. 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,
@@ -37,17 +31,7 @@ import {
37
31
  type ComponentThemeResolver
38
32
  } from '../../types/resolver'
39
33
 
40
- const toOptionalContainerStyle = (tokens?: ContainerTokens): ChatMessageBubbleContainerStyle => (
41
- tokens === undefined ? {} : toContainerStyle(tokens)
42
- )
43
-
44
- const toOptionalTextStyle = (tokens?: TextStyleTokens): ChatMessageBubbleBodyTextStyle => (
45
- tokens === undefined ? {} : toTextStyle(tokens)
46
- )
47
-
48
- const toOptionalIconStyle = (tokens?: IconTokens): ChatMessageBubbleMetaDataIconStyle => (
49
- tokens === undefined ? {} : toIconStyle(tokens)
50
- )
34
+ import { StyleAdapterUtils } from '../../adapters'
51
35
 
52
36
  export const toChatAttachmentMessageBubbleThemeResolvers: ComponentThemeResolver<
53
37
  ChatAttachmentMessageBubbleThemeResolvers
@@ -65,33 +49,33 @@ export const toChatAttachmentMessageBubbleThemeResolvers: ComponentThemeResolver
65
49
  return {
66
50
  chatMessageBubbleOverrides: {
67
51
  container: createStyleResolver((state: ChatAttachmentMessageBubbleState): ChatMessageBubbleContainerStyle => (
68
- toOptionalContainerStyle(resolve(state.direction).chatMessageBubbleOverrides.container)
52
+ StyleAdapterUtils.container(resolve(state.direction).chatMessageBubbleOverrides.container ?? {})
69
53
  )),
70
54
  body: createStyleResolver((state: ChatAttachmentMessageBubbleState): ChatMessageBubbleBodyStyle => (
71
- toOptionalContainerStyle(resolve(state.direction).chatMessageBubbleOverrides.body)
55
+ StyleAdapterUtils.container(resolve(state.direction).chatMessageBubbleOverrides.body ?? {})
72
56
  )),
73
57
  bodyText: createStyleResolver((state: ChatAttachmentMessageBubbleState): ChatMessageBubbleBodyTextStyle => (
74
- toOptionalTextStyle(resolve(state.direction).chatMessageBubbleOverrides.bodyText)
58
+ StyleAdapterUtils.text(resolve(state.direction).chatMessageBubbleOverrides.bodyText = {})
75
59
  )),
76
60
  metaDataContainer: createStyleResolver((
77
61
  state: ChatAttachmentMessageBubbleState
78
62
  ): ChatMessageBubbleMetaDataContainerStyle => (
79
- toOptionalContainerStyle(resolve(state.direction).chatMessageBubbleOverrides.metaDataContainer)
63
+ StyleAdapterUtils.container(resolve(state.direction).chatMessageBubbleOverrides.metaDataContainer = {})
80
64
  )),
81
65
  metaDataStatusContainer: createStyleResolver((
82
66
  state: ChatAttachmentMessageBubbleState
83
67
  ): ChatMessageBubbleMetaDataStatusContainerStyle => (
84
- toOptionalContainerStyle(resolve(state.direction).chatMessageBubbleOverrides.metaDataStatusContainer)
68
+ StyleAdapterUtils.container(resolve(state.direction).chatMessageBubbleOverrides.metaDataStatusContainer = {})
85
69
  )),
86
70
  metaDataText: createStyleResolver((
87
71
  state: ChatAttachmentMessageBubbleState
88
72
  ): ChatMessageBubbleMetaDataTextStyle => (
89
- toOptionalTextStyle(resolve(state.direction).chatMessageBubbleOverrides.metaDataText)
73
+ StyleAdapterUtils.text(resolve(state.direction).chatMessageBubbleOverrides.metaDataText = {})
90
74
  )),
91
75
  metaDataIcon: createValueResolver((
92
76
  state: ChatAttachmentMessageBubbleState
93
77
  ): ChatMessageBubbleMetaDataIconStyle => (
94
- toOptionalIconStyle(resolve(state.direction).chatMessageBubbleOverrides.metaDataIcon)
78
+ StyleAdapterUtils.icon(resolve(state.direction).chatMessageBubbleOverrides.metaDataIcon = {})
95
79
  )),
96
80
  },
97
81
  contentContainer: createValueResolver((state: ChatAttachmentMessageBubbleState) => {
@@ -112,56 +96,56 @@ export const toChatAttachmentMessageBubbleThemeResolvers: ComponentThemeResolver
112
96
 
113
97
  return {
114
98
  container: createStyleResolver((pressableState: PressableState): PressableContainerStyle => ({
115
- ...toContainerStyle(resolvePressable(pressableState).container),
116
- ...toOptionalContainerStyle(contentContainer.container),
99
+ ...StyleAdapterUtils.container(resolvePressable(pressableState).container),
100
+ ...StyleAdapterUtils.container(contentContainer.container = {}),
117
101
  })),
118
102
  stateLayer: createStyleResolver((pressableState: PressableState): PressableStateLayerStyle => ({
119
- ...toContainerStyle(resolvePressable(pressableState).stateLayer),
103
+ ...StyleAdapterUtils.container(resolvePressable(pressableState).stateLayer),
120
104
  position: 'absolute',
121
105
  top: 0,
122
106
  right: 0,
123
107
  bottom: 0,
124
108
  left: 0,
125
- ...toOptionalContainerStyle(contentContainer.stateLayer),
109
+ ...StyleAdapterUtils.container(contentContainer.stateLayer = {}),
126
110
  })),
127
111
  text: createStyleResolver((pressableState: PressableState): PressableTextStyle => ({
128
- ...toTextStyle(resolvePressable(pressableState).text),
129
- ...toOptionalTextStyle(contentContainer.text),
112
+ ...StyleAdapterUtils.text(resolvePressable(pressableState).text),
113
+ ...StyleAdapterUtils.text(contentContainer.text = {}),
130
114
  })),
131
115
  icon: createValueResolver((pressableState: PressableState): PressableIconStyle => (
132
- toIconStyle(resolvePressable(pressableState).icon)
116
+ StyleAdapterUtils.icon(resolvePressable(pressableState).icon)
133
117
  )),
134
118
  }
135
119
  }),
136
120
  fileIconContainer: createStyleResolver((
137
121
  state: ChatAttachmentMessageBubbleState
138
122
  ): ChatAttachmentMessageBubbleFileIconContainerStyle => (
139
- toContainerStyle(resolve(state.direction).fileIconContainer)
123
+ StyleAdapterUtils.container(resolve(state.direction).fileIconContainer)
140
124
  )),
141
125
  fileIcon: createValueResolver((
142
126
  state: ChatAttachmentMessageBubbleState
143
127
  ): ChatAttachmentMessageBubbleFileIconStyle => (
144
- toIconStyle(resolve(state.direction).fileIcon)
128
+ StyleAdapterUtils.icon(resolve(state.direction).fileIcon)
145
129
  )),
146
130
  downloadIconContainer: createStyleResolver((
147
131
  state: ChatAttachmentMessageBubbleState
148
132
  ): ChatAttachmentMessageBubbleDownloadIconContainerStyle => (
149
- toContainerStyle(resolve(state.direction).downloadIconContainer)
133
+ StyleAdapterUtils.container(resolve(state.direction).downloadIconContainer)
150
134
  )),
151
135
  downloadIcon: createValueResolver((
152
136
  state: ChatAttachmentMessageBubbleState
153
137
  ): ChatAttachmentMessageBubbleDownloadIconStyle => (
154
- toIconStyle(resolve(state.direction).downloadIcon)
138
+ StyleAdapterUtils.icon(resolve(state.direction).downloadIcon)
155
139
  )),
156
140
  fileNameText: createStyleResolver((
157
141
  state: ChatAttachmentMessageBubbleState
158
142
  ): ChatAttachmentMessageBubbleFileNameTextStyle => (
159
- toTextStyle(resolve(state.direction).fileNameText)
143
+ StyleAdapterUtils.text(resolve(state.direction).fileNameText)
160
144
  )),
161
145
  fileMetadataText: createStyleResolver((
162
146
  state: ChatAttachmentMessageBubbleState
163
147
  ): ChatAttachmentMessageBubbleFileMetadataTextStyle => (
164
- toTextStyle(resolve(state.direction).fileMetadataText)
148
+ StyleAdapterUtils.text(resolve(state.direction).fileMetadataText)
165
149
  )),
166
150
  }
167
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,12 +1,3 @@
1
- import type {
2
- ContainerTokens,
3
- IconTokens,
4
- TextStyleTokens
5
- } from '@helpwave/hightide-design/component-token-resolvers'
6
-
7
- import { toContainerStyle } from '../../adapters/container-adapter'
8
- import { toIconStyle } from '../../adapters/icon-style-adapter'
9
- import { toTextStyle } from '../../adapters/text-style-adapter'
10
1
  import type {
11
2
  ChatQuickReplyChipState,
12
3
  ChatQuickReplyChipThemeResolvers,
@@ -23,17 +14,7 @@ import {
23
14
  type ComponentThemeResolver
24
15
  } from '../../types/resolver'
25
16
 
26
- const toOptionalContainerStyle = (tokens?: ContainerTokens): PressableContainerStyle => (
27
- tokens === undefined ? {} : toContainerStyle(tokens)
28
- )
29
-
30
- const toOptionalTextStyle = (tokens?: TextStyleTokens): PressableTextStyle => (
31
- tokens === undefined ? {} : toTextStyle(tokens)
32
- )
33
-
34
- const toOptionalIconStyle = (tokens?: IconTokens): PressableIconStyle => (
35
- tokens === undefined ? {} : toIconStyle(tokens)
36
- )
17
+ import { StyleAdapterUtils } from '../../adapters'
37
18
 
38
19
  export const toChatQuickReplyChipThemeResolvers: ComponentThemeResolver<ChatQuickReplyChipThemeResolvers> = ({
39
20
  themeTokens,
@@ -65,25 +46,25 @@ export const toChatQuickReplyChipThemeResolvers: ComponentThemeResolver<ChatQuic
65
46
 
66
47
  return {
67
48
  container: createStyleResolver((pressableState: PressableState): PressableContainerStyle => ({
68
- ...toContainerStyle(resolvePressable(pressableState).container),
69
- ...toOptionalContainerStyle(tokens.container),
49
+ ...StyleAdapterUtils.container(resolvePressable(pressableState).container),
50
+ ...StyleAdapterUtils.container(tokens.container = {}),
70
51
  })),
71
52
  stateLayer: createStyleResolver((pressableState: PressableState): PressableStateLayerStyle => ({
72
- ...toContainerStyle(resolvePressable(pressableState).stateLayer),
53
+ ...StyleAdapterUtils.container(resolvePressable(pressableState).stateLayer),
73
54
  position: 'absolute',
74
55
  top: 0,
75
56
  right: 0,
76
57
  bottom: 0,
77
58
  left: 0,
78
- ...toOptionalContainerStyle(tokens.stateLayer),
59
+ ...StyleAdapterUtils.container(tokens.stateLayer = {}),
79
60
  })),
80
61
  text: createStyleResolver((pressableState: PressableState): PressableTextStyle => ({
81
- ...toTextStyle(resolvePressable(pressableState).text),
82
- ...toOptionalTextStyle(tokens.text),
62
+ ...StyleAdapterUtils.text(resolvePressable(pressableState).text),
63
+ ...StyleAdapterUtils.text(tokens.text = {}),
83
64
  })),
84
65
  icon: createValueResolver((pressableState: PressableState): PressableIconStyle => ({
85
- ...toIconStyle(resolvePressable(pressableState).icon),
86
- ...toOptionalIconStyle(tokens.icon),
66
+ ...StyleAdapterUtils.icon(resolvePressable(pressableState).icon),
67
+ ...StyleAdapterUtils.icon(tokens.icon = {}),
87
68
  })),
88
69
  }
89
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
  }