@baishuyun/ai-design 2.0.37 → 2.1.0-alpha.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 (269) hide show
  1. package/.storybook/main.ts +31 -31
  2. package/.storybook/preview.ts +16 -16
  3. package/CHANGELOG.md +512 -492
  4. package/components.json +22 -22
  5. package/package.json +9 -6
  6. package/scripts/strip-layers.cjs +41 -41
  7. package/src/components/abs-fullscreen-gradient-bg.tsx +35 -35
  8. package/src/components/agent-helper/agent-category-select-menu/index.tsx +57 -57
  9. package/src/components/agent-helper/agent-entry-card/index.tsx +94 -94
  10. package/src/components/agent-helper/agent-helper-card/index.tsx +179 -179
  11. package/src/components/agent-helper/agent-helper-card-list/index.tsx +59 -59
  12. package/src/components/agent-helper/agent-helper-main-layout/index.tsx +60 -60
  13. package/src/components/agent-helper/agent-sort-select/index.tsx +89 -89
  14. package/src/components/agent-helper/agent-tag/index.tsx +29 -29
  15. package/src/components/agent-helper/app-select/index.tsx +559 -559
  16. package/src/components/agent-helper/condition-group/index.tsx +75 -75
  17. package/src/components/agent-helper/condition-input/index.tsx +233 -233
  18. package/src/components/agent-helper/condition-item/index.tsx +237 -237
  19. package/src/components/agent-helper/condition-quantifier-select/index.tsx +142 -142
  20. package/src/components/agent-helper/condition-trigger-description/index.tsx +49 -49
  21. package/src/components/agent-helper/date-picker/calendar-panel.tsx +164 -164
  22. package/src/components/agent-helper/date-picker/date-input.tsx +91 -91
  23. package/src/components/agent-helper/date-picker/date-picker.tsx +327 -327
  24. package/src/components/agent-helper/date-picker/footer-panel.tsx +44 -44
  25. package/src/components/agent-helper/date-picker/index.ts +3 -3
  26. package/src/components/agent-helper/date-picker/month-panel.tsx +82 -82
  27. package/src/components/agent-helper/date-picker/time-panel.tsx +146 -146
  28. package/src/components/agent-helper/date-picker/types.ts +37 -37
  29. package/src/components/agent-helper/date-picker/utils.ts +121 -121
  30. package/src/components/agent-helper/date-picker/year-panel.tsx +86 -86
  31. package/src/components/agent-helper/exec-log-filter/index.tsx +232 -232
  32. package/src/components/agent-helper/field-edit-preference-select/index.tsx +291 -291
  33. package/src/components/agent-helper/field-select/index.tsx +466 -466
  34. package/src/components/agent-helper/field-value-input/china-address-data.ts +4117 -4117
  35. package/src/components/agent-helper/field-value-input/display.tsx +71 -71
  36. package/src/components/agent-helper/field-value-input/icons.tsx +38 -38
  37. package/src/components/agent-helper/field-value-input/index.tsx +144 -144
  38. package/src/components/agent-helper/field-value-input/inputs.tsx +247 -247
  39. package/src/components/agent-helper/field-value-input/picker-inputs.tsx +1141 -1141
  40. package/src/components/agent-helper/flow-node-action-trigger-select/index.tsx +57 -57
  41. package/src/components/agent-helper/form-action-trigger-select/index.tsx +60 -60
  42. package/src/components/agent-helper/form-divider/index.tsx +44 -44
  43. package/src/components/agent-helper/form-select/index.tsx +732 -732
  44. package/src/components/agent-helper/monthdays-select/index.tsx +378 -378
  45. package/src/components/agent-helper/offset-preference-select/index.tsx +268 -268
  46. package/src/components/agent-helper/offset-type-select/index.tsx +66 -66
  47. package/src/components/agent-helper/offset-unit-select/index.tsx +54 -54
  48. package/src/components/agent-helper/placeholder-card/index.tsx +75 -75
  49. package/src/components/agent-helper/prompt-input/index.tsx +646 -640
  50. package/src/components/agent-helper/relational-operator-select/index.tsx +179 -179
  51. package/src/components/agent-helper/repeat-by-type-select/index.tsx +53 -53
  52. package/src/components/agent-helper/repeat-preference-select/index.tsx +162 -162
  53. package/src/components/agent-helper/repeat-preference-type-select/index.tsx +58 -58
  54. package/src/components/agent-helper/search-input/index.tsx +35 -35
  55. package/src/components/agent-helper/table/index.tsx +114 -114
  56. package/src/components/agent-helper/trigger-select/index.tsx +121 -121
  57. package/src/components/agent-helper/trigger-time-preference-select/index.tsx +189 -189
  58. package/src/components/agent-helper/trigger-time-source-type-select/index.tsx +53 -53
  59. package/src/components/agent-helper/weekdays-select/index.tsx +230 -230
  60. package/src/components/agent-scroll-selector.tsx +193 -193
  61. package/src/components/agent-select.tsx +154 -154
  62. package/src/components/attachment-part-group.tsx +35 -35
  63. package/src/components/attachment-part.tsx +296 -296
  64. package/src/components/attachments-previewer.tsx +272 -272
  65. package/src/components/base-button.tsx +49 -49
  66. package/src/components/border-animation.tsx +107 -107
  67. package/src/components/border-color-animation.tsx +66 -66
  68. package/src/components/bot-avatar-name.tsx +36 -36
  69. package/src/components/bot-icon.tsx +23 -23
  70. package/src/components/bs-entry-select/app-group-folder.tsx +61 -61
  71. package/src/components/bs-entry-select/bs-entry-select.tsx +296 -296
  72. package/src/components/bs-entry-select/build-tree.ts +265 -265
  73. package/src/components/bs-entry-select/entry-item.tsx +45 -45
  74. package/src/components/bs-entry-select/entry-popover.tsx +99 -99
  75. package/src/components/bs-entry-select/index.ts +7 -7
  76. package/src/components/bs-entry-select/other-app-section.tsx +96 -96
  77. package/src/components/bs-entry-select/scroll-slider.tsx +872 -872
  78. package/src/components/bs-entry-select/search-input.tsx +4 -4
  79. package/src/components/bs-entry-select/tree-item-node.tsx +84 -84
  80. package/src/components/bs-entry-select/types.ts +46 -46
  81. package/src/components/bs-icons.tsx +1362 -1362
  82. package/src/components/card-field.tsx +23 -23
  83. package/src/components/card.tsx +36 -36
  84. package/src/components/chat-area-header.tsx +65 -65
  85. package/src/components/check-card.tsx +77 -77
  86. package/src/components/circle-checker.tsx +66 -66
  87. package/src/components/collapsible-txt-msg.tsx +75 -75
  88. package/src/components/collapsible.tsx +9 -9
  89. package/src/components/confirm-dialog.tsx +139 -139
  90. package/src/components/date-range-picker.tsx +91 -91
  91. package/src/components/fake-bot-msg.tsx +51 -51
  92. package/src/components/field-checker-list-msg.tsx +146 -146
  93. package/src/components/field-checker.tsx +185 -185
  94. package/src/components/field-icon.tsx +13 -13
  95. package/src/components/field-value-checker.tsx +116 -116
  96. package/src/components/fields-design-info-table.tsx +160 -160
  97. package/src/components/fields-generating-indicator.tsx +95 -95
  98. package/src/components/fields-portal.tsx +18 -18
  99. package/src/components/fields-previewer.tsx +216 -216
  100. package/src/components/font-icon.tsx +65 -65
  101. package/src/components/form-info-editor.tsx +263 -263
  102. package/src/components/formula-tag.tsx +32 -32
  103. package/src/components/generate-animation.tsx +56 -56
  104. package/src/components/icon-btn.tsx +43 -43
  105. package/src/components/icon-card.tsx +67 -67
  106. package/src/components/icons/calendar-icon.tsx +5 -5
  107. package/src/components/icons/clear-all-icon.tsx +5 -5
  108. package/src/components/icons/empty-agent-icon.tsx +93 -93
  109. package/src/components/icons/empty-table-icon.tsx +104 -104
  110. package/src/components/icons/grids-icon.tsx +5 -5
  111. package/src/components/img-part.tsx +27 -27
  112. package/src/components/legacy-slot.tsx +110 -110
  113. package/src/components/line-checker.tsx +168 -168
  114. package/src/components/linear-gradient-border-btn.tsx +48 -48
  115. package/src/components/linear-gradient-color-bg-animation.tsx +103 -103
  116. package/src/components/memoized-markdown.tsx +32 -32
  117. package/src/components/message-content.tsx +21 -21
  118. package/src/components/number-part.tsx +46 -46
  119. package/src/components/office-container.tsx +289 -265
  120. package/src/components/option-item.tsx +27 -27
  121. package/src/components/output-config-editor.tsx +478 -478
  122. package/src/components/previewer-header.tsx +270 -270
  123. package/src/components/primary-confirm-btn.tsx +58 -58
  124. package/src/components/primary-entry-btn.tsx +48 -48
  125. package/src/components/radio-card.tsx +63 -63
  126. package/src/components/scroll-to-bottom-btn.tsx +28 -28
  127. package/src/components/split-line.tsx +9 -9
  128. package/src/components/square-checker.tsx +87 -87
  129. package/src/components/subform-fields-value-checker.tsx +184 -184
  130. package/src/components/tab-radio-group.tsx +83 -83
  131. package/src/components/tooltip.tsx +53 -53
  132. package/src/components/ui/button.tsx +51 -51
  133. package/src/components/ui/calendar.tsx +57 -57
  134. package/src/components/ui/dialog.tsx +104 -104
  135. package/src/components/ui/drawer.tsx +279 -279
  136. package/src/components/ui/form.tsx +202 -202
  137. package/src/components/ui/icons.tsx +1267 -1267
  138. package/src/components/ui/input.tsx +28 -28
  139. package/src/components/ui/label.tsx +30 -30
  140. package/src/components/ui/popover.tsx +85 -85
  141. package/src/components/ui/select.tsx +236 -236
  142. package/src/components/ui/spinner.tsx +17 -17
  143. package/src/components/ui/switch.tsx +33 -33
  144. package/src/components/ui/tabs.tsx +62 -62
  145. package/src/components/ui/textarea.tsx +28 -28
  146. package/src/components/ui/tooltip.tsx +53 -53
  147. package/src/components/user-txt-msg-bubble.tsx +47 -47
  148. package/src/components/warning-msg.tsx +27 -27
  149. package/src/const/ui.ts +119 -119
  150. package/src/css.d.ts +4 -4
  151. package/src/hooks/use-column-appear.ts +78 -78
  152. package/src/hooks/use-portal-container.ts +27 -27
  153. package/src/hooks/use-resizable-width.ts +129 -129
  154. package/src/hooks/use-select-popover-position.ts +74 -74
  155. package/src/hooks/use-shadow.ts +127 -127
  156. package/src/index.ts +226 -226
  157. package/src/lib/utils.ts +138 -138
  158. package/src/stories/AbsFullscreenGradientBg.stories.tsx +36 -36
  159. package/src/stories/AgentCategorySelectMenu.stories.tsx +33 -33
  160. package/src/stories/AgentEntryCard.stories.tsx +90 -90
  161. package/src/stories/AgentHelperCard.stories.tsx +105 -105
  162. package/src/stories/AgentHelperCardList.stories.tsx +120 -120
  163. package/src/stories/AgentHelperMainLayout.stories.tsx +71 -71
  164. package/src/stories/AgentScrollSelector.stories.tsx +95 -95
  165. package/src/stories/AgentSelect.stories.tsx +134 -134
  166. package/src/stories/AgentTag.stories.tsx +44 -44
  167. package/src/stories/AppSelect.stories.tsx +250 -250
  168. package/src/stories/AttachmentPart.stories.tsx +122 -122
  169. package/src/stories/AttachmentPartGroup.stories.tsx +152 -152
  170. package/src/stories/AttachmentsPreviewer.stories.tsx +306 -306
  171. package/src/stories/BaseButton.stories.tsx +33 -33
  172. package/src/stories/BorderAnimation.stories.tsx +116 -116
  173. package/src/stories/BorderColorAnimation.stories.tsx +63 -63
  174. package/src/stories/BotAvatarAndName.stories.ts +24 -24
  175. package/src/stories/BotIcon.stories.ts +22 -22
  176. package/src/stories/BsConditionInput.stories.tsx +460 -460
  177. package/src/stories/BsEntrySelect.stories.tsx +343 -343
  178. package/src/stories/BsTooltip.stories.tsx +32 -32
  179. package/src/stories/Card.stories.tsx +28 -28
  180. package/src/stories/CardField.stories.tsx +87 -87
  181. package/src/stories/ChatAreaHeader.stories.ts +26 -26
  182. package/src/stories/CheckCard.stories.tsx +114 -114
  183. package/src/stories/CircleChecker.stories.tsx +89 -89
  184. package/src/stories/CollapsibleTextMsg.stories.ts +44 -44
  185. package/src/stories/ConditionGroup.stories.tsx +216 -216
  186. package/src/stories/ConditionInput.stories.tsx +502 -502
  187. package/src/stories/ConditionItem.stories.tsx +163 -163
  188. package/src/stories/ConditonQuantifierSelect.stories.tsx +54 -54
  189. package/src/stories/ConditonTriggerDescription.stories.tsx +61 -61
  190. package/src/stories/ConfirmDialog.stories.tsx +123 -123
  191. package/src/stories/DataTable.stories.tsx +191 -191
  192. package/src/stories/DatePicker.stories.tsx +174 -174
  193. package/src/stories/ExecLogFilter.stories.tsx +145 -145
  194. package/src/stories/FakeBotMsg.stories.tsx +36 -36
  195. package/src/stories/FieldEditPreferenceSelect.stories.tsx +161 -161
  196. package/src/stories/FieldSelect.stories.tsx +228 -228
  197. package/src/stories/FieldValueInput.stories.tsx +442 -442
  198. package/src/stories/FlowNodeActionTriggerSelect.stories.tsx +80 -80
  199. package/src/stories/Form.stories.tsx +302 -302
  200. package/src/stories/FormActionTriggerSelect.stories.tsx +80 -80
  201. package/src/stories/FormDivider.stories.tsx +31 -31
  202. package/src/stories/FormInfoEditor.stories.tsx +173 -173
  203. package/src/stories/FormSelect.stories.tsx +222 -222
  204. package/src/stories/FormulaTag.stories.tsx +68 -68
  205. package/src/stories/GenerateAnimation.stories.ts +20 -20
  206. package/src/stories/IconBtn.stories.tsx +32 -32
  207. package/src/stories/IconCard.stories.tsx +35 -35
  208. package/src/stories/IconLib.tsx +45 -45
  209. package/src/stories/Icons.stories.ts +22 -22
  210. package/src/stories/ImgMsgPart.stories.tsx +42 -42
  211. package/src/stories/Input.stories.tsx +102 -102
  212. package/src/stories/Label.stories.tsx +66 -66
  213. package/src/stories/LegacySlot.stories.tsx +56 -56
  214. package/src/stories/LineChecker.stories.tsx +133 -133
  215. package/src/stories/LinearGradientBorderBtn.stories.tsx +86 -86
  216. package/src/stories/LinearGradientColorBgAnimation.stories.tsx +60 -60
  217. package/src/stories/MemoizedMarkdown.stories.tsx +102 -102
  218. package/src/stories/MessageContent.stories.tsx +36 -36
  219. package/src/stories/MonthdaysSelect.stories.tsx +78 -78
  220. package/src/stories/NumbersMsgPart.stories.tsx +42 -42
  221. package/src/stories/OfficeContainer.stories.tsx +287 -287
  222. package/src/stories/OffsetPreferenceSelect.stories.tsx +118 -118
  223. package/src/stories/OffsetTypeSelect.stories.tsx +75 -75
  224. package/src/stories/OffsetUnitSelect.stories.tsx +61 -61
  225. package/src/stories/OptionItem.stories.tsx +77 -77
  226. package/src/stories/OutputConfigEditor.stories.tsx +96 -96
  227. package/src/stories/PlaceholderCard.stories.tsx +35 -35
  228. package/src/stories/PreviewerHeader.stories.tsx +91 -91
  229. package/src/stories/PrimaryConfirmBtn.stories.tsx +60 -60
  230. package/src/stories/PrimaryEntryBtn.stories.tsx +74 -74
  231. package/src/stories/PromptInput.stories.tsx +228 -228
  232. package/src/stories/RadioCard.stories.tsx +103 -103
  233. package/src/stories/RelationalOperatorSelect.stories.tsx +61 -61
  234. package/src/stories/RepeatByTypeSelect.stories.tsx +58 -58
  235. package/src/stories/RepeatPreferenceSelect.stories.tsx +107 -107
  236. package/src/stories/RepeatPreferenceTypeSelect.stories.tsx +58 -58
  237. package/src/stories/ScrollToBottom.stories.tsx +24 -24
  238. package/src/stories/SearchInput.stories.tsx +50 -50
  239. package/src/stories/Select.stories.tsx +128 -128
  240. package/src/stories/SplitLine.stories.tsx +40 -40
  241. package/src/stories/SquareChecker.stories.tsx +96 -96
  242. package/src/stories/TabRadioGroup.stories.tsx +84 -84
  243. package/src/stories/Textarea.stories.tsx +67 -67
  244. package/src/stories/TriggerSelect.stories.tsx +48 -48
  245. package/src/stories/TriggerTimePreferenceSelect.stories.tsx +106 -106
  246. package/src/stories/TriggerTimeSourceTypeSelect.stories.tsx +68 -68
  247. package/src/stories/UserTextMsgBubble.stories.ts +24 -24
  248. package/src/stories/WarningMessage.stories.tsx +23 -23
  249. package/src/stories/WeekdaysSelect.stories.tsx +66 -66
  250. package/src/stories/assets/demo.css +539 -539
  251. package/src/stories/assets/demo_index.html +7988 -7988
  252. package/src/stories/assets/iconfont.css +1377 -1377
  253. package/src/stories/assets/iconfont.json +2382 -2382
  254. package/src/stories/assets/iconfont.svg +697 -697
  255. package/src/stories/collapsible.stories.tsx +47 -47
  256. package/src/stories/drawer.stories.tsx +196 -196
  257. package/src/stories/field-checker-list-msg.stories.tsx +95 -95
  258. package/src/stories/field-checker.stories.tsx +117 -117
  259. package/src/stories/field-icon.stories.tsx +70 -70
  260. package/src/stories/field-value-checker.stories.tsx +113 -113
  261. package/src/stories/fields-design-info-table.stories.tsx +203 -203
  262. package/src/stories/fields-generating.stories.tsx +41 -41
  263. package/src/stories/fields-previewer.stories.tsx +77 -77
  264. package/src/stories/subform-fields-value-checker.stories.tsx +98 -98
  265. package/src/style.css +226 -226
  266. package/src/types.ts +8 -8
  267. package/style.css +3652 -3652
  268. package/tsconfig.json +13 -13
  269. package/vite.config.ts +44 -44
@@ -1,306 +1,306 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
-
3
- import { AttachmentsPreviewer, AttachmentItem } from '../components/attachments-previewer';
4
-
5
- const sampleImages: AttachmentItem[] = [
6
- {
7
- id: '1',
8
- url: 'https://images.unsplash.com/photo-1509042239860-f550ce710b93?w=200&h=200&fit=crop',
9
- alt: 'Coffee',
10
- contentType: 'image/jpeg',
11
- },
12
- {
13
- id: '2',
14
- url: 'https://images.unsplash.com/photo-1543466835-00a7907e9de1?w=200&h=200&fit=crop',
15
- alt: 'Dog',
16
- contentType: 'image/jpeg',
17
- },
18
- {
19
- id: '3',
20
- url: 'https://images.unsplash.com/photo-1514888286974-6c03e2ca1dba?w=200&h=200&fit=crop',
21
- alt: 'Cat',
22
- contentType: 'image/jpeg',
23
- },
24
- {
25
- id: '4',
26
- url: 'https://images.unsplash.com/photo-1495474472287-4d71bcdd2085?w=200&h=200&fit=crop',
27
- alt: 'Coffee cup',
28
- contentType: 'image/jpeg',
29
- },
30
- {
31
- id: '5',
32
- url: 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=200&h=200&fit=crop',
33
- alt: 'Portrait',
34
- contentType: 'image/jpeg',
35
- },
36
- ];
37
-
38
- const manyImages: AttachmentItem[] = [
39
- ...sampleImages,
40
- {
41
- id: '6',
42
- url: 'https://images.unsplash.com/photo-1518770660439-4636190af475?w=200&h=200&fit=crop',
43
- alt: 'Tech',
44
- contentType: 'image/jpeg',
45
- },
46
- {
47
- id: '7',
48
- url: 'https://images.unsplash.com/photo-1493976040374-85c8e12f0c0e?w=200&h=200&fit=crop',
49
- alt: 'Japan',
50
- contentType: 'image/jpeg',
51
- },
52
- {
53
- id: '8',
54
- url: 'https://images.unsplash.com/photo-1501854140801-50d01698950b?w=200&h=200&fit=crop',
55
- alt: 'Nature',
56
- contentType: 'image/jpeg',
57
- },
58
- {
59
- id: '9',
60
- url: 'https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?w=200&h=200&fit=crop',
61
- alt: 'Fog',
62
- contentType: 'image/jpeg',
63
- },
64
- {
65
- id: '10',
66
- url: 'https://images.unsplash.com/photo-1441974231531-c6227db76b6e?w=200&h=200&fit=crop',
67
- alt: 'Forest',
68
- contentType: 'image/jpeg',
69
- },
70
- ];
71
-
72
- const sampleFiles: AttachmentItem[] = [
73
- {
74
- id: 'file-xlsx',
75
- url: '',
76
- alt: 'report.xlsx',
77
- contentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
78
- },
79
- {
80
- id: 'file-csv',
81
- url: '',
82
- alt: 'data.csv',
83
- contentType: 'text/csv',
84
- },
85
- {
86
- id: 'file-txt',
87
- url: '',
88
- alt: 'notes.txt',
89
- contentType: 'text/plain',
90
- },
91
- {
92
- id: 'file-unknown',
93
- url: '',
94
- alt: 'archive.bin',
95
- contentType: 'application/x-unknown',
96
- },
97
- ];
98
-
99
- const meta: Meta<typeof AttachmentsPreviewer> = {
100
- title: 'Example/Chat/AttachmentsPreviewer',
101
- component: AttachmentsPreviewer,
102
- tags: ['autodocs'],
103
- parameters: {
104
- layout: 'centered',
105
- },
106
- args: {},
107
- decorators: [
108
- (Story) => (
109
- <div style={{ width: 308 }}>
110
- <Story />
111
- </div>
112
- ),
113
- ],
114
- };
115
-
116
- export default meta;
117
- type Story = StoryObj<typeof meta>;
118
-
119
- export const Base: Story = {
120
- args: {
121
- attachments: sampleImages,
122
- },
123
- };
124
-
125
- export const FewImages: Story = {
126
- args: {
127
- attachments: sampleImages.slice(0, 3),
128
- },
129
- decorators: [
130
- (Story) => (
131
- <div style={{ width: 220 }}>
132
- <Story />
133
- </div>
134
- ),
135
- ],
136
- };
137
-
138
- export const ManyImages: Story = {
139
- args: {
140
- attachments: manyImages,
141
- onImageRemove: (attachment, index) => {
142
- alert(`Remove image ${index + 1}: ${attachment.alt}`);
143
- },
144
- },
145
- decorators: [
146
- (Story) => (
147
- <div style={{ width: 350 }}>
148
- <Story />
149
- </div>
150
- ),
151
- ],
152
- };
153
-
154
- export const WithClickHandler: Story = {
155
- args: {
156
- attachments: sampleImages,
157
- onImageClick: (attachment, index) => {
158
- alert(`Clicked image ${index + 1}: ${attachment.alt}`);
159
- },
160
- },
161
- };
162
-
163
- export const WithRemoveHandler: Story = {
164
- args: {
165
- attachments: sampleImages,
166
- onImageRemove: (attachment, index) => {
167
- alert(`Remove image ${index + 1}: ${attachment.alt}`);
168
- },
169
- },
170
- };
171
-
172
- export const CustomSize: Story = {
173
- args: {
174
- attachments: sampleImages,
175
- imageSize: 80,
176
- gap: 12,
177
- },
178
- decorators: [
179
- (Story) => (
180
- <div style={{ width: 400 }}>
181
- <Story />
182
- </div>
183
- ),
184
- ],
185
- };
186
-
187
- export const SmallSize: Story = {
188
- args: {
189
- attachments: sampleImages,
190
- imageSize: 40,
191
- gap: 8,
192
- },
193
- decorators: [
194
- (Story) => (
195
- <div style={{ width: 250 }}>
196
- <Story />
197
- </div>
198
- ),
199
- ],
200
- };
201
-
202
- export const SingleImage: Story = {
203
- args: {
204
- attachments: sampleImages.slice(0, 1),
205
- },
206
- };
207
-
208
- export const TwoImages: Story = {
209
- args: {
210
- attachments: sampleImages.slice(0, 2),
211
- },
212
- };
213
-
214
- export const FullWidth: Story = {
215
- args: {
216
- attachments: manyImages,
217
- },
218
- decorators: [
219
- (Story) => (
220
- <div style={{ width: 600 }}>
221
- <Story />
222
- </div>
223
- ),
224
- ],
225
- };
226
-
227
- export const WithLoadingItems: Story = {
228
- args: {
229
- attachments: [
230
- ...sampleImages.slice(0, 2),
231
- {
232
- id: 'loading-1',
233
- url: '',
234
- alt: 'Uploading file 1',
235
- isLoading: true,
236
- contentType: 'application/vnd.ms-excel',
237
- },
238
- {
239
- id: 'loading-2',
240
- url: '',
241
- alt: 'Uploading file 2',
242
- isLoading: true,
243
- contentType: 'text/csv',
244
- },
245
- ],
246
- onImageRemove: (attachment, index) => {
247
- alert(`Remove image ${index + 1}: ${attachment.alt}`);
248
- },
249
- },
250
- };
251
-
252
- export const MixedLoadingAndLoaded: Story = {
253
- args: {
254
- attachments: [
255
- sampleImages[0],
256
- {
257
- id: 'loading-1',
258
- url: '',
259
- alt: 'Uploading...',
260
- isLoading: true,
261
- contentType: 'image/png',
262
- },
263
- sampleImages[1],
264
- sampleImages[2],
265
- {
266
- id: 'loading-2',
267
- url: '',
268
- alt: 'Uploading...',
269
- isLoading: true,
270
- contentType: 'text/plain',
271
- },
272
- ],
273
- onImageRemove: (attachment, index) => {
274
- alert(`Remove image ${index + 1}: ${attachment.alt}`);
275
- },
276
- },
277
- };
278
-
279
- export const NonImageFiles: Story = {
280
- args: {
281
- attachments: sampleFiles,
282
- onImageRemove: (attachment, index) => {
283
- alert(`Remove file ${index + 1}: ${attachment.alt}`);
284
- },
285
- },
286
- decorators: [
287
- (Story) => (
288
- <div style={{ width: 260 }}>
289
- <Story />
290
- </div>
291
- ),
292
- ],
293
- };
294
-
295
- export const MixedFilesAndImages: Story = {
296
- args: {
297
- attachments: [...sampleImages.slice(0, 2), ...sampleFiles],
298
- },
299
- decorators: [
300
- (Story) => (
301
- <div style={{ width: 360 }}>
302
- <Story />
303
- </div>
304
- ),
305
- ],
306
- };
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+
3
+ import { AttachmentsPreviewer, AttachmentItem } from '../components/attachments-previewer';
4
+
5
+ const sampleImages: AttachmentItem[] = [
6
+ {
7
+ id: '1',
8
+ url: 'https://images.unsplash.com/photo-1509042239860-f550ce710b93?w=200&h=200&fit=crop',
9
+ alt: 'Coffee',
10
+ contentType: 'image/jpeg',
11
+ },
12
+ {
13
+ id: '2',
14
+ url: 'https://images.unsplash.com/photo-1543466835-00a7907e9de1?w=200&h=200&fit=crop',
15
+ alt: 'Dog',
16
+ contentType: 'image/jpeg',
17
+ },
18
+ {
19
+ id: '3',
20
+ url: 'https://images.unsplash.com/photo-1514888286974-6c03e2ca1dba?w=200&h=200&fit=crop',
21
+ alt: 'Cat',
22
+ contentType: 'image/jpeg',
23
+ },
24
+ {
25
+ id: '4',
26
+ url: 'https://images.unsplash.com/photo-1495474472287-4d71bcdd2085?w=200&h=200&fit=crop',
27
+ alt: 'Coffee cup',
28
+ contentType: 'image/jpeg',
29
+ },
30
+ {
31
+ id: '5',
32
+ url: 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=200&h=200&fit=crop',
33
+ alt: 'Portrait',
34
+ contentType: 'image/jpeg',
35
+ },
36
+ ];
37
+
38
+ const manyImages: AttachmentItem[] = [
39
+ ...sampleImages,
40
+ {
41
+ id: '6',
42
+ url: 'https://images.unsplash.com/photo-1518770660439-4636190af475?w=200&h=200&fit=crop',
43
+ alt: 'Tech',
44
+ contentType: 'image/jpeg',
45
+ },
46
+ {
47
+ id: '7',
48
+ url: 'https://images.unsplash.com/photo-1493976040374-85c8e12f0c0e?w=200&h=200&fit=crop',
49
+ alt: 'Japan',
50
+ contentType: 'image/jpeg',
51
+ },
52
+ {
53
+ id: '8',
54
+ url: 'https://images.unsplash.com/photo-1501854140801-50d01698950b?w=200&h=200&fit=crop',
55
+ alt: 'Nature',
56
+ contentType: 'image/jpeg',
57
+ },
58
+ {
59
+ id: '9',
60
+ url: 'https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?w=200&h=200&fit=crop',
61
+ alt: 'Fog',
62
+ contentType: 'image/jpeg',
63
+ },
64
+ {
65
+ id: '10',
66
+ url: 'https://images.unsplash.com/photo-1441974231531-c6227db76b6e?w=200&h=200&fit=crop',
67
+ alt: 'Forest',
68
+ contentType: 'image/jpeg',
69
+ },
70
+ ];
71
+
72
+ const sampleFiles: AttachmentItem[] = [
73
+ {
74
+ id: 'file-xlsx',
75
+ url: '',
76
+ alt: 'report.xlsx',
77
+ contentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
78
+ },
79
+ {
80
+ id: 'file-csv',
81
+ url: '',
82
+ alt: 'data.csv',
83
+ contentType: 'text/csv',
84
+ },
85
+ {
86
+ id: 'file-txt',
87
+ url: '',
88
+ alt: 'notes.txt',
89
+ contentType: 'text/plain',
90
+ },
91
+ {
92
+ id: 'file-unknown',
93
+ url: '',
94
+ alt: 'archive.bin',
95
+ contentType: 'application/x-unknown',
96
+ },
97
+ ];
98
+
99
+ const meta: Meta<typeof AttachmentsPreviewer> = {
100
+ title: 'Example/Chat/AttachmentsPreviewer',
101
+ component: AttachmentsPreviewer,
102
+ tags: ['autodocs'],
103
+ parameters: {
104
+ layout: 'centered',
105
+ },
106
+ args: {},
107
+ decorators: [
108
+ (Story) => (
109
+ <div style={{ width: 308 }}>
110
+ <Story />
111
+ </div>
112
+ ),
113
+ ],
114
+ };
115
+
116
+ export default meta;
117
+ type Story = StoryObj<typeof meta>;
118
+
119
+ export const Base: Story = {
120
+ args: {
121
+ attachments: sampleImages,
122
+ },
123
+ };
124
+
125
+ export const FewImages: Story = {
126
+ args: {
127
+ attachments: sampleImages.slice(0, 3),
128
+ },
129
+ decorators: [
130
+ (Story) => (
131
+ <div style={{ width: 220 }}>
132
+ <Story />
133
+ </div>
134
+ ),
135
+ ],
136
+ };
137
+
138
+ export const ManyImages: Story = {
139
+ args: {
140
+ attachments: manyImages,
141
+ onImageRemove: (attachment, index) => {
142
+ alert(`Remove image ${index + 1}: ${attachment.alt}`);
143
+ },
144
+ },
145
+ decorators: [
146
+ (Story) => (
147
+ <div style={{ width: 350 }}>
148
+ <Story />
149
+ </div>
150
+ ),
151
+ ],
152
+ };
153
+
154
+ export const WithClickHandler: Story = {
155
+ args: {
156
+ attachments: sampleImages,
157
+ onImageClick: (attachment, index) => {
158
+ alert(`Clicked image ${index + 1}: ${attachment.alt}`);
159
+ },
160
+ },
161
+ };
162
+
163
+ export const WithRemoveHandler: Story = {
164
+ args: {
165
+ attachments: sampleImages,
166
+ onImageRemove: (attachment, index) => {
167
+ alert(`Remove image ${index + 1}: ${attachment.alt}`);
168
+ },
169
+ },
170
+ };
171
+
172
+ export const CustomSize: Story = {
173
+ args: {
174
+ attachments: sampleImages,
175
+ imageSize: 80,
176
+ gap: 12,
177
+ },
178
+ decorators: [
179
+ (Story) => (
180
+ <div style={{ width: 400 }}>
181
+ <Story />
182
+ </div>
183
+ ),
184
+ ],
185
+ };
186
+
187
+ export const SmallSize: Story = {
188
+ args: {
189
+ attachments: sampleImages,
190
+ imageSize: 40,
191
+ gap: 8,
192
+ },
193
+ decorators: [
194
+ (Story) => (
195
+ <div style={{ width: 250 }}>
196
+ <Story />
197
+ </div>
198
+ ),
199
+ ],
200
+ };
201
+
202
+ export const SingleImage: Story = {
203
+ args: {
204
+ attachments: sampleImages.slice(0, 1),
205
+ },
206
+ };
207
+
208
+ export const TwoImages: Story = {
209
+ args: {
210
+ attachments: sampleImages.slice(0, 2),
211
+ },
212
+ };
213
+
214
+ export const FullWidth: Story = {
215
+ args: {
216
+ attachments: manyImages,
217
+ },
218
+ decorators: [
219
+ (Story) => (
220
+ <div style={{ width: 600 }}>
221
+ <Story />
222
+ </div>
223
+ ),
224
+ ],
225
+ };
226
+
227
+ export const WithLoadingItems: Story = {
228
+ args: {
229
+ attachments: [
230
+ ...sampleImages.slice(0, 2),
231
+ {
232
+ id: 'loading-1',
233
+ url: '',
234
+ alt: 'Uploading file 1',
235
+ isLoading: true,
236
+ contentType: 'application/vnd.ms-excel',
237
+ },
238
+ {
239
+ id: 'loading-2',
240
+ url: '',
241
+ alt: 'Uploading file 2',
242
+ isLoading: true,
243
+ contentType: 'text/csv',
244
+ },
245
+ ],
246
+ onImageRemove: (attachment, index) => {
247
+ alert(`Remove image ${index + 1}: ${attachment.alt}`);
248
+ },
249
+ },
250
+ };
251
+
252
+ export const MixedLoadingAndLoaded: Story = {
253
+ args: {
254
+ attachments: [
255
+ sampleImages[0],
256
+ {
257
+ id: 'loading-1',
258
+ url: '',
259
+ alt: 'Uploading...',
260
+ isLoading: true,
261
+ contentType: 'image/png',
262
+ },
263
+ sampleImages[1],
264
+ sampleImages[2],
265
+ {
266
+ id: 'loading-2',
267
+ url: '',
268
+ alt: 'Uploading...',
269
+ isLoading: true,
270
+ contentType: 'text/plain',
271
+ },
272
+ ],
273
+ onImageRemove: (attachment, index) => {
274
+ alert(`Remove image ${index + 1}: ${attachment.alt}`);
275
+ },
276
+ },
277
+ };
278
+
279
+ export const NonImageFiles: Story = {
280
+ args: {
281
+ attachments: sampleFiles,
282
+ onImageRemove: (attachment, index) => {
283
+ alert(`Remove file ${index + 1}: ${attachment.alt}`);
284
+ },
285
+ },
286
+ decorators: [
287
+ (Story) => (
288
+ <div style={{ width: 260 }}>
289
+ <Story />
290
+ </div>
291
+ ),
292
+ ],
293
+ };
294
+
295
+ export const MixedFilesAndImages: Story = {
296
+ args: {
297
+ attachments: [...sampleImages.slice(0, 2), ...sampleFiles],
298
+ },
299
+ decorators: [
300
+ (Story) => (
301
+ <div style={{ width: 360 }}>
302
+ <Story />
303
+ </div>
304
+ ),
305
+ ],
306
+ };
@@ -1,33 +1,33 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
-
3
- import { BaseButton } from '../components/base-button';
4
- import { ColorfulEditIcon, DockIcon } from '../components/bs-icons';
5
-
6
- const meta = {
7
- title: 'Example/Button/BaseButton',
8
- component: BaseButton,
9
- tags: ['autodocs'],
10
- parameters: {
11
- layout: 'centered',
12
- },
13
- args: {
14
- children: 'AI填报示例数据',
15
- icon: <DockIcon />,
16
- },
17
- } satisfies Meta<typeof BaseButton>;
18
-
19
- export default meta;
20
-
21
- type Story = StoryObj<typeof meta>;
22
-
23
- export const Base: Story = {
24
- args: {
25
- icon: <ColorfulEditIcon />,
26
- },
27
- };
28
-
29
- export const Hover: Story = {
30
- parameters: {
31
- pseudo: { hover: true },
32
- },
33
- };
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+
3
+ import { BaseButton } from '../components/base-button';
4
+ import { ColorfulEditIcon, DockIcon } from '../components/bs-icons';
5
+
6
+ const meta = {
7
+ title: 'Example/Button/BaseButton',
8
+ component: BaseButton,
9
+ tags: ['autodocs'],
10
+ parameters: {
11
+ layout: 'centered',
12
+ },
13
+ args: {
14
+ children: 'AI填报示例数据',
15
+ icon: <DockIcon />,
16
+ },
17
+ } satisfies Meta<typeof BaseButton>;
18
+
19
+ export default meta;
20
+
21
+ type Story = StoryObj<typeof meta>;
22
+
23
+ export const Base: Story = {
24
+ args: {
25
+ icon: <ColorfulEditIcon />,
26
+ },
27
+ };
28
+
29
+ export const Hover: Story = {
30
+ parameters: {
31
+ pseudo: { hover: true },
32
+ },
33
+ };