@unif/react-native-chat 0.1.0 → 0.1.2

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 (91) hide show
  1. package/README.md +156 -0
  2. package/lib/commonjs/bubble/Bubble.js +131 -0
  3. package/lib/commonjs/bubble/Bubble.js.map +1 -0
  4. package/lib/commonjs/bubble/BubbleList.js +73 -0
  5. package/lib/commonjs/bubble/BubbleList.js.map +1 -0
  6. package/lib/commonjs/bubble/index.md +111 -0
  7. package/lib/commonjs/card-wrapper/CardWrapper.js +65 -0
  8. package/lib/commonjs/card-wrapper/CardWrapper.js.map +1 -0
  9. package/lib/commonjs/card-wrapper/index.md +78 -0
  10. package/lib/commonjs/conversations/Conversations.js +184 -0
  11. package/lib/commonjs/conversations/Conversations.js.map +1 -0
  12. package/lib/commonjs/conversations/index.md +90 -0
  13. package/lib/commonjs/index.js +63 -0
  14. package/lib/commonjs/index.js.map +1 -0
  15. package/lib/commonjs/package.json +1 -0
  16. package/lib/commonjs/prompts/Prompts.js +87 -0
  17. package/lib/commonjs/prompts/Prompts.js.map +1 -0
  18. package/lib/commonjs/prompts/index.md +81 -0
  19. package/lib/commonjs/sender/Sender.js +354 -0
  20. package/lib/commonjs/sender/Sender.js.map +1 -0
  21. package/lib/commonjs/sender/index.md +131 -0
  22. package/lib/commonjs/theme/tokens.js +67 -0
  23. package/lib/commonjs/theme/tokens.js.map +1 -0
  24. package/lib/commonjs/welcome/Welcome.js +152 -0
  25. package/lib/commonjs/welcome/Welcome.js.map +1 -0
  26. package/lib/commonjs/welcome/index.md +95 -0
  27. package/lib/module/bubble/Bubble.js +126 -0
  28. package/lib/module/bubble/Bubble.js.map +1 -0
  29. package/lib/module/bubble/BubbleList.js +68 -0
  30. package/lib/module/bubble/BubbleList.js.map +1 -0
  31. package/lib/module/bubble/index.md +111 -0
  32. package/lib/module/card-wrapper/CardWrapper.js +60 -0
  33. package/lib/module/card-wrapper/CardWrapper.js.map +1 -0
  34. package/lib/module/card-wrapper/index.md +78 -0
  35. package/lib/module/conversations/Conversations.js +179 -0
  36. package/lib/module/conversations/Conversations.js.map +1 -0
  37. package/lib/module/conversations/index.md +90 -0
  38. package/lib/module/index.js +23 -0
  39. package/lib/module/index.js.map +1 -0
  40. package/lib/module/package.json +1 -0
  41. package/lib/module/prompts/Prompts.js +82 -0
  42. package/lib/module/prompts/Prompts.js.map +1 -0
  43. package/lib/module/prompts/index.md +81 -0
  44. package/lib/module/sender/Sender.js +349 -0
  45. package/lib/module/sender/Sender.js.map +1 -0
  46. package/lib/module/sender/index.md +131 -0
  47. package/lib/module/theme/tokens.js +63 -0
  48. package/lib/module/theme/tokens.js.map +1 -0
  49. package/lib/module/welcome/Welcome.js +147 -0
  50. package/lib/module/welcome/Welcome.js.map +1 -0
  51. package/lib/module/welcome/index.md +95 -0
  52. package/lib/typescript/commonjs/bubble/Bubble.d.ts +29 -0
  53. package/lib/typescript/commonjs/bubble/Bubble.d.ts.map +1 -0
  54. package/lib/typescript/commonjs/bubble/BubbleList.d.ts +20 -0
  55. package/lib/typescript/commonjs/bubble/BubbleList.d.ts.map +1 -0
  56. package/lib/typescript/commonjs/card-wrapper/CardWrapper.d.ts +22 -0
  57. package/lib/typescript/commonjs/card-wrapper/CardWrapper.d.ts.map +1 -0
  58. package/lib/typescript/commonjs/conversations/Conversations.d.ts +37 -0
  59. package/lib/typescript/commonjs/conversations/Conversations.d.ts.map +1 -0
  60. package/lib/typescript/commonjs/index.d.ts +20 -0
  61. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  62. package/lib/typescript/commonjs/package.json +1 -0
  63. package/lib/typescript/commonjs/prompts/Prompts.d.ts +27 -0
  64. package/lib/typescript/commonjs/prompts/Prompts.d.ts.map +1 -0
  65. package/lib/typescript/commonjs/sender/Sender.d.ts +58 -0
  66. package/lib/typescript/commonjs/sender/Sender.d.ts.map +1 -0
  67. package/lib/typescript/commonjs/theme/tokens.d.ts +52 -0
  68. package/lib/typescript/commonjs/theme/tokens.d.ts.map +1 -0
  69. package/lib/typescript/commonjs/welcome/Welcome.d.ts +39 -0
  70. package/lib/typescript/commonjs/welcome/Welcome.d.ts.map +1 -0
  71. package/lib/typescript/module/bubble/Bubble.d.ts +29 -0
  72. package/lib/typescript/module/bubble/Bubble.d.ts.map +1 -0
  73. package/lib/typescript/module/bubble/BubbleList.d.ts +20 -0
  74. package/lib/typescript/module/bubble/BubbleList.d.ts.map +1 -0
  75. package/lib/typescript/module/card-wrapper/CardWrapper.d.ts +22 -0
  76. package/lib/typescript/module/card-wrapper/CardWrapper.d.ts.map +1 -0
  77. package/lib/typescript/module/conversations/Conversations.d.ts +37 -0
  78. package/lib/typescript/module/conversations/Conversations.d.ts.map +1 -0
  79. package/lib/typescript/module/index.d.ts +20 -0
  80. package/lib/typescript/module/index.d.ts.map +1 -0
  81. package/lib/typescript/module/package.json +1 -0
  82. package/lib/typescript/module/prompts/Prompts.d.ts +27 -0
  83. package/lib/typescript/module/prompts/Prompts.d.ts.map +1 -0
  84. package/lib/typescript/module/sender/Sender.d.ts +58 -0
  85. package/lib/typescript/module/sender/Sender.d.ts.map +1 -0
  86. package/lib/typescript/module/theme/tokens.d.ts +52 -0
  87. package/lib/typescript/module/theme/tokens.d.ts.map +1 -0
  88. package/lib/typescript/module/welcome/Welcome.d.ts +39 -0
  89. package/lib/typescript/module/welcome/Welcome.d.ts.map +1 -0
  90. package/package.json +39 -8
  91. package/src/sender/Sender.tsx +2 -0
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _tokens = require("../theme/tokens");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
+ /**
13
+ * Conversations — 会话列表
14
+ *
15
+ * SectionList + 日期分组(今天/昨天/更早)
16
+ * 基于 ListItem 模式渲染
17
+ */
18
+
19
+ function groupByDate(sessions) {
20
+ const now = new Date();
21
+ const todayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime();
22
+ const yesterdayStart = todayStart - 86400000;
23
+ const groups = [];
24
+ const today = [];
25
+ const yesterday = [];
26
+ const earlier = [];
27
+ for (const s of sessions) {
28
+ if (s.timestamp >= todayStart) {
29
+ today.push(s);
30
+ } else if (s.timestamp >= yesterdayStart) {
31
+ yesterday.push(s);
32
+ } else {
33
+ earlier.push(s);
34
+ }
35
+ }
36
+ if (today.length > 0) groups.push({
37
+ title: '今天',
38
+ data: today
39
+ });
40
+ if (yesterday.length > 0) groups.push({
41
+ title: '昨天',
42
+ data: yesterday
43
+ });
44
+ if (earlier.length > 0) groups.push({
45
+ title: '更早',
46
+ data: earlier
47
+ });
48
+ return groups;
49
+ }
50
+ const Conversations = ({
51
+ items,
52
+ activeId,
53
+ onSelect,
54
+ onDelete,
55
+ onNew,
56
+ groupByDate: shouldGroup = true,
57
+ header,
58
+ style,
59
+ styles: semanticStyles,
60
+ testID = 'conversations'
61
+ }) => {
62
+ const sections = (0, _react.useMemo)(() => {
63
+ if (shouldGroup) {
64
+ return groupByDate(items);
65
+ }
66
+ return [{
67
+ title: '',
68
+ data: items
69
+ }];
70
+ }, [items, shouldGroup]);
71
+ const handleDelete = (0, _react.useCallback)(item => {
72
+ if (!onDelete) return;
73
+ _reactNative.Alert.alert('删除会话', `确定删除"${item.title}"?`, [{
74
+ text: '取消',
75
+ style: 'cancel'
76
+ }, {
77
+ text: '删除',
78
+ style: 'destructive',
79
+ onPress: () => onDelete(item.id)
80
+ }]);
81
+ }, [onDelete]);
82
+ const renderItem = (0, _react.useCallback)(({
83
+ item
84
+ }) => {
85
+ const isActive = item.id === activeId;
86
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
87
+ style: [defaultStyles.sessionItem, semanticStyles?.item, isActive && defaultStyles.sessionItemActive, isActive && semanticStyles?.itemActive],
88
+ onPress: () => onSelect(item.id),
89
+ onLongPress: () => handleDelete(item),
90
+ activeOpacity: 0.7,
91
+ testID: `${testID}-item-${item.id}`,
92
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
93
+ style: defaultStyles.sessionTitle,
94
+ numberOfLines: 1,
95
+ children: item.title
96
+ })
97
+ });
98
+ }, [activeId, onSelect, handleDelete, semanticStyles, testID]);
99
+ const renderSectionHeader = (0, _react.useCallback)(({
100
+ section
101
+ }) => {
102
+ if (!section.title) return null;
103
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
104
+ style: [defaultStyles.sectionHeader, semanticStyles?.sectionHeader],
105
+ children: section.title
106
+ });
107
+ }, [semanticStyles]);
108
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
109
+ style: [defaultStyles.container, semanticStyles?.root, style],
110
+ testID: testID,
111
+ children: [header, onNew && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
112
+ style: defaultStyles.newButtonWrapper,
113
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
114
+ style: [defaultStyles.newButton, semanticStyles?.newButton],
115
+ onPress: onNew,
116
+ testID: `${testID}-new`,
117
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
118
+ style: defaultStyles.newButtonText,
119
+ children: "\uFF0B \u65B0\u5EFA\u4F1A\u8BDD"
120
+ })
121
+ })
122
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.SectionList, {
123
+ sections: sections,
124
+ keyExtractor: item => item.id,
125
+ renderItem: renderItem,
126
+ renderSectionHeader: renderSectionHeader,
127
+ style: defaultStyles.list,
128
+ showsVerticalScrollIndicator: false,
129
+ stickySectionHeadersEnabled: false
130
+ })]
131
+ });
132
+ };
133
+ const defaultStyles = _reactNative.StyleSheet.create({
134
+ container: {
135
+ flex: 1
136
+ },
137
+ newButtonWrapper: {
138
+ alignItems: 'center',
139
+ paddingVertical: 12,
140
+ paddingHorizontal: 20
141
+ },
142
+ newButton: {
143
+ flexDirection: 'row',
144
+ alignItems: 'center',
145
+ justifyContent: 'center',
146
+ width: '80%',
147
+ paddingVertical: 10,
148
+ borderRadius: _tokens.chatTokens.radiusFull,
149
+ borderWidth: 1,
150
+ borderColor: _tokens.chatTokens.colorPrimary
151
+ },
152
+ newButtonText: {
153
+ fontSize: 14,
154
+ fontWeight: '500',
155
+ color: _tokens.chatTokens.colorPrimary
156
+ },
157
+ sectionHeader: {
158
+ fontSize: 12,
159
+ color: _tokens.chatTokens.colorTextSecondary,
160
+ paddingHorizontal: 20,
161
+ paddingTop: 16,
162
+ paddingBottom: 6
163
+ },
164
+ sessionItem: {
165
+ flexDirection: 'row',
166
+ alignItems: 'center',
167
+ paddingHorizontal: 20,
168
+ paddingVertical: 12
169
+ },
170
+ sessionItemActive: {
171
+ backgroundColor: '#F3F4F6'
172
+ },
173
+ sessionTitle: {
174
+ flex: 1,
175
+ fontSize: 14,
176
+ fontWeight: '500',
177
+ color: _tokens.chatTokens.colorText
178
+ },
179
+ list: {
180
+ flex: 1
181
+ }
182
+ });
183
+ var _default = exports.default = /*#__PURE__*/_react.default.memo(Conversations);
184
+ //# sourceMappingURL=Conversations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_tokens","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","groupByDate","sessions","now","Date","todayStart","getFullYear","getMonth","getDate","getTime","yesterdayStart","groups","today","yesterday","earlier","s","timestamp","push","length","title","data","Conversations","items","activeId","onSelect","onDelete","onNew","shouldGroup","header","style","styles","semanticStyles","testID","sections","useMemo","handleDelete","useCallback","item","Alert","alert","text","onPress","id","renderItem","isActive","jsx","TouchableOpacity","defaultStyles","sessionItem","sessionItemActive","itemActive","onLongPress","activeOpacity","children","Text","sessionTitle","numberOfLines","renderSectionHeader","section","sectionHeader","jsxs","View","container","root","newButtonWrapper","newButton","newButtonText","SectionList","keyExtractor","list","showsVerticalScrollIndicator","stickySectionHeadersEnabled","StyleSheet","create","flex","alignItems","paddingVertical","paddingHorizontal","flexDirection","justifyContent","width","borderRadius","chatTokens","radiusFull","borderWidth","borderColor","colorPrimary","fontSize","fontWeight","color","colorTextSecondary","paddingTop","paddingBottom","backgroundColor","colorText","_default","exports","React","memo"],"sourceRoot":"../../../src","sources":["conversations/Conversations.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,90 @@
1
+ ---
2
+ title: Conversations 会话列表
3
+ nav:
4
+ title: 组件
5
+ path: /components
6
+ ---
7
+
8
+ # Conversations 会话列表
9
+
10
+ 按日期分组的会话列表组件,支持新建、选中、删除操作。
11
+
12
+ ## 何时使用
13
+
14
+ - 展示聊天历史会话列表
15
+ - 需要按日期分组(今天/昨天/更早)
16
+ - 侧边栏会话管理
17
+
18
+ ## 代码示例
19
+
20
+ ### 基本用法
21
+
22
+ ```tsx
23
+ import { Conversations } from '@unif/react-native-chat';
24
+
25
+ <Conversations
26
+ items={sessions}
27
+ activeId={currentSessionId}
28
+ onSelect={(id) => switchSession(id)}
29
+ onDelete={(id) => deleteSession(id)}
30
+ onNew={() => createNewSession()}
31
+ />
32
+ ```
33
+
34
+ ### 不分组
35
+
36
+ ```tsx
37
+ <Conversations
38
+ items={sessions}
39
+ activeId={currentSessionId}
40
+ onSelect={handleSelect}
41
+ groupByDate={false}
42
+ />
43
+ ```
44
+
45
+ ### 自定义头部
46
+
47
+ ```tsx
48
+ <Conversations
49
+ items={sessions}
50
+ onSelect={handleSelect}
51
+ header={<DrawerHeader />}
52
+ />
53
+ ```
54
+
55
+ ## API
56
+
57
+ ### ConversationsProps
58
+
59
+ | 属性 | 说明 | 类型 | 默认值 |
60
+ |------|------|------|--------|
61
+ | items | 会话列表数据 | `ConversationItem[]` | - |
62
+ | activeId | 当前选中会话 ID | `string` | - |
63
+ | onSelect | 选中会话回调 | `(id: string) => void` | - |
64
+ | onDelete | 删除会话回调(长按触发) | `(id: string) => void` | - |
65
+ | onNew | 新建会话回调 | `() => void` | - |
66
+ | groupByDate | 按日期分组 | `boolean` | `true` |
67
+ | header | 列表顶部内容 | `ReactNode` | - |
68
+ | style | 容器样式 | `ViewStyle` | - |
69
+ | styles | 语义样式 | `Partial<ConversationsSemanticStyles>` | - |
70
+ | testID | 测试标识 | `string` | `'conversations'` |
71
+
72
+ ### ConversationItem
73
+
74
+ | 属性 | 说明 | 类型 |
75
+ |------|------|------|
76
+ | id | 唯一标识 | `string` |
77
+ | title | 会话标题 | `string` |
78
+ | lastMessage | 最后一条消息 | `string` |
79
+ | timestamp | 时间戳(毫秒) | `number` |
80
+ | messageCount | 消息数量 | `number` |
81
+
82
+ ### ConversationsSemanticStyles
83
+
84
+ | 属性 | 说明 | 类型 |
85
+ |------|------|------|
86
+ | root | 外层容器 | `ViewStyle` |
87
+ | newButton | 新建按钮 | `ViewStyle` |
88
+ | sectionHeader | 分组标题 | `TextStyle` |
89
+ | item | 会话项 | `ViewStyle` |
90
+ | itemActive | 选中态会话项 | `ViewStyle` |
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Bubble", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _Bubble.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "BubbleList", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _BubbleList.default;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "CardWrapper", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _CardWrapper.default;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "Conversations", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _Conversations.default;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "Prompts", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _Prompts.default;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "Sender", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _Sender.default;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "Welcome", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _Welcome.default;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "chatTokens", {
49
+ enumerable: true,
50
+ get: function () {
51
+ return _tokens.chatTokens;
52
+ }
53
+ });
54
+ var _Bubble = _interopRequireDefault(require("./bubble/Bubble"));
55
+ var _BubbleList = _interopRequireDefault(require("./bubble/BubbleList"));
56
+ var _Sender = _interopRequireDefault(require("./sender/Sender"));
57
+ var _Conversations = _interopRequireDefault(require("./conversations/Conversations"));
58
+ var _Prompts = _interopRequireDefault(require("./prompts/Prompts"));
59
+ var _Welcome = _interopRequireDefault(require("./welcome/Welcome"));
60
+ var _CardWrapper = _interopRequireDefault(require("./card-wrapper/CardWrapper"));
61
+ var _tokens = require("./theme/tokens");
62
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
63
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_Bubble","_interopRequireDefault","require","_BubbleList","_Sender","_Conversations","_Prompts","_Welcome","_CardWrapper","_tokens","e","__esModule","default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AAIA,IAAAE,OAAA,GAAAH,sBAAA,CAAAC,OAAA;AAIA,IAAAG,cAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAQA,IAAAI,QAAA,GAAAL,sBAAA,CAAAC,OAAA;AAIA,IAAAK,QAAA,GAAAN,sBAAA,CAAAC,OAAA;AAQA,IAAAM,YAAA,GAAAP,sBAAA,CAAAC,OAAA;AAIA,IAAAO,OAAA,GAAAP,OAAA;AAA0C,SAAAD,uBAAAS,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _tokens = require("../theme/tokens");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ /**
13
+ * Prompts — 建议提示
14
+ * 水平 ScrollView + Chip 列表
15
+ */
16
+
17
+ const Prompts = ({
18
+ items,
19
+ onSelect,
20
+ disabled = false,
21
+ wrap = false,
22
+ style,
23
+ styles: semanticStyles,
24
+ testID = 'prompts'
25
+ }) => {
26
+ if (items.length === 0) return null;
27
+ const renderChips = () => items.map(item => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
28
+ style: [defaultStyles.chip, semanticStyles?.chip],
29
+ onPress: () => !disabled && onSelect(item),
30
+ activeOpacity: disabled ? 1 : 0.7,
31
+ disabled: disabled,
32
+ testID: `${testID}-${item.id}`,
33
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
34
+ style: [defaultStyles.chipText, semanticStyles?.chipText, disabled && defaultStyles.chipTextDisabled],
35
+ numberOfLines: 1,
36
+ children: item.label
37
+ })
38
+ }, item.id));
39
+ if (wrap) {
40
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
41
+ style: [defaultStyles.container, defaultStyles.wrapContainer, semanticStyles?.root, style],
42
+ testID: testID,
43
+ children: renderChips()
44
+ });
45
+ }
46
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
47
+ style: [defaultStyles.container, semanticStyles?.root, style],
48
+ testID: testID,
49
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
50
+ horizontal: true,
51
+ showsHorizontalScrollIndicator: false,
52
+ contentContainerStyle: defaultStyles.scrollContent,
53
+ children: renderChips()
54
+ })
55
+ });
56
+ };
57
+ const defaultStyles = _reactNative.StyleSheet.create({
58
+ container: {
59
+ paddingVertical: 8,
60
+ backgroundColor: 'transparent'
61
+ },
62
+ scrollContent: {
63
+ paddingHorizontal: 12,
64
+ gap: 8
65
+ },
66
+ wrapContainer: {
67
+ flexDirection: 'row',
68
+ flexWrap: 'wrap',
69
+ paddingHorizontal: 12,
70
+ gap: 8
71
+ },
72
+ chip: {
73
+ backgroundColor: '#F3F4F6',
74
+ borderRadius: 16,
75
+ paddingHorizontal: 14,
76
+ paddingVertical: 8
77
+ },
78
+ chipText: {
79
+ fontSize: 13,
80
+ color: _tokens.chatTokens.colorText
81
+ },
82
+ chipTextDisabled: {
83
+ color: _tokens.chatTokens.colorTextPlaceholder
84
+ }
85
+ });
86
+ var _default = exports.default = /*#__PURE__*/_react.default.memo(Prompts);
87
+ //# sourceMappingURL=Prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_tokens","_jsxRuntime","e","__esModule","default","Prompts","items","onSelect","disabled","wrap","style","styles","semanticStyles","testID","length","renderChips","map","item","jsx","TouchableOpacity","defaultStyles","chip","onPress","activeOpacity","id","children","Text","chipText","chipTextDisabled","numberOfLines","label","View","container","wrapContainer","root","ScrollView","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","scrollContent","StyleSheet","create","paddingVertical","backgroundColor","paddingHorizontal","gap","flexDirection","flexWrap","borderRadius","fontSize","color","chatTokens","colorText","colorTextPlaceholder","_default","exports","React","memo"],"sourceRoot":"../../../src","sources":["prompts/Prompts.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,81 @@
1
+ ---
2
+ title: Prompts 建议提示
3
+ nav:
4
+ title: 组件
5
+ path: /components
6
+ ---
7
+
8
+ # Prompts 建议提示
9
+
10
+ 水平滚动的建议提示 Chip 列表,可选换行模式。
11
+
12
+ ## 何时使用
13
+
14
+ - AI 回复后展示后续建议问题
15
+ - 欢迎页展示快捷提问入口
16
+
17
+ ## 代码示例
18
+
19
+ ### 水平滚动
20
+
21
+ ```tsx
22
+ import { Prompts } from '@unif/react-native-chat';
23
+
24
+ <Prompts
25
+ items={[
26
+ { id: '1', label: '查询余额' },
27
+ { id: '2', label: '转账汇款' },
28
+ { id: '3', label: '理财推荐' },
29
+ ]}
30
+ onSelect={(item) => console.log(item.label)}
31
+ />
32
+ ```
33
+
34
+ ### 换行模式
35
+
36
+ ```tsx
37
+ <Prompts
38
+ items={suggestions}
39
+ onSelect={handleSelect}
40
+ wrap={true}
41
+ />
42
+ ```
43
+
44
+ ### 禁用状态
45
+
46
+ ```tsx
47
+ <Prompts
48
+ items={suggestions}
49
+ onSelect={handleSelect}
50
+ disabled={isRequesting}
51
+ />
52
+ ```
53
+
54
+ ## API
55
+
56
+ ### PromptsProps
57
+
58
+ | 属性 | 说明 | 类型 | 默认值 |
59
+ |------|------|------|--------|
60
+ | items | 建议项列表 | `PromptItem[]` | - |
61
+ | onSelect | 选中回调 | `(item: PromptItem) => void` | - |
62
+ | disabled | 禁用状态 | `boolean` | `false` |
63
+ | wrap | 换行模式(FlexWrap) | `boolean` | `false` |
64
+ | style | 容器样式 | `ViewStyle` | - |
65
+ | styles | 语义样式 | `Partial<PromptsSemanticStyles>` | - |
66
+ | testID | 测试标识 | `string` | `'prompts'` |
67
+
68
+ ### PromptItem
69
+
70
+ | 属性 | 说明 | 类型 |
71
+ |------|------|------|
72
+ | id | 唯一标识 | `string` |
73
+ | label | 显示文字 | `string` |
74
+
75
+ ### PromptsSemanticStyles
76
+
77
+ | 属性 | 说明 | 类型 |
78
+ |------|------|------|
79
+ | root | 外层容器 | `ViewStyle` |
80
+ | chip | Chip 样式 | `ViewStyle` |
81
+ | chipText | Chip 文字 | `TextStyle` |