Some "strange" components and React hooks that I came up with during development, such as WeChat Moments–style buttons and upload functionality, or a form component AForm with some preset features.

【Aling】 is my self-built component library, configured and built entirely from scratch without using any scaffolding tools. This component library collects some relatively universal React components or hooks that I have encapsulated during work or study, with full TypeScript support. It is based on ant-design. If you have used the antd@5.x component library, then using this library basically has no barrier.
shell
Uploader — WeChat-style file upload.
#### Code Demo
This component is encapsulated based on Uploader, so it supports the original usage methods.
typescript
typescript
The component currently supports and provides previews for music, images, and videos, as shown below:
Uploaded an image, audio, and video in sequence
You can customize your own file preview via filePreview,
typescript
#### Type Declaration
typescript
PropertyDescriptionTypeDefaultuploadIconClickable element for uploadReactNode-valueControlled file listUploadFile[]-sx-SxProps-onChangeCallback when uploaded files change; triggered at each stage of upload. See onChangefunction-beformOnChangeCalled before the onChange event; you can format returned data herefunction-filePreviewDefine how to render the filefunction-
WeChat-style button component, supporting various customizations.
#### Code Demo
This component is encapsulated based on Button, so it supports the original usage methods.
typescript
typescript
value can be a string or array; if it's an array, it will be joined into a string with • for display, just like the location above.
:::info
Why can't we customize button children and active color?
If you need a React WeChat-style button, the current implementation already meets the demand. You can directly copy the source code to customize your own component.
:::
typescript
PropertyDescriptionTypeDefaultvalueValue as controlled prop--onClickWhen the button is clickedfunction-placeholderPlaceholder text of buttonstring-onChangeWhen button value changesfunction-prevIconPrefix iconReact.ReactElement-backIconSuffix iconReact.ReactElement-