From 916bfb0377e63e8d93436fd4ceeddbf320842491 Mon Sep 17 00:00:00 2001 From: 79E <5980844@qq.com> Date: Tue, 18 Oct 2022 16:33:30 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=9A=84=E8=A7=84=E8=8C=83=E7=BB=9F=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dumi/theme/builtins/Previewer.tsx | 87 +- .dumi/theme/components/Device.tsx | 60 +- .dumi/theme/layouts/demo.tsx | 82 +- .dumi/theme/layouts/index.tsx | 61 +- .dumi/theme/typings/config.d.ts | 14 +- .eslintrc.js | 6 +- .github/workflows/doc-site.yml | 4 +- .github/workflows/release-npm.yml | 4 +- .umirc.ts | 64 +- README.md | 3 +- commitlint.config.js | 24 +- docs/blog/components/button.md | 16 +- docs/blog/components/icon.md | 24 +- docs/blog/structure/site.md | 42 +- docs/components/home/home-page.less | 73 +- docs/components/home/home-page.tsx | 100 +- docs/components/home/svg/header-dark.tsx | 218 +- docs/components/home/svg/header-light.tsx | 219 +- docs/components/token/token-page.less | 64 +- docs/components/token/token-page.tsx | 287 +- docs/guide/changelog.md | 44 +- docs/guide/contribution.md | 37 +- docs/guide/i18n.md | 3 +- docs/guide/introduce.md | 10 +- docs/guide/projects.md | 51 +- docs/guide/question.md | 2 +- docs/guide/quick-start.md | 9 +- docs/guide/theme.md | 2 +- docs/guide/token.md | 23 +- docs/hooks/use-event-listener.md | 2 +- docs/hooks/use-in-viewport.md | 12 +- docs/hooks/use-merged-state.md | 2 +- docs/hooks/use-namespace.md | 2 +- gulpfile.js | 224 +- src/components/avatar/README.md | 46 +- src/components/avatar/avatar.tsx | 119 +- src/components/avatar/demos/demo-color.tsx | 14 +- src/components/avatar/demos/demo-fit.tsx | 35 +- src/components/avatar/demos/demo-shape.tsx | 20 +- src/components/avatar/demos/demo-size.tsx | 25 +- src/components/avatar/demos/demo-type.tsx | 18 +- src/components/avatar/demos/demo.tsx | 42 +- src/components/avatar/demos/index.less | 4 +- src/components/avatar/index.ts | 10 +- src/components/avatar/styles/index.less | 81 +- src/components/avatar/tests/index.test.tsx | 4 +- src/components/avatar/types.ts | 86 +- src/components/back-top/README.md | 44 +- src/components/back-top/back-top.tsx | 153 +- src/components/back-top/demos/demo-base.tsx | 43 +- src/components/back-top/demos/demo.tsx | 18 +- src/components/back-top/demos/index.less | 5 +- src/components/back-top/index.ts | 9 +- src/components/back-top/styles/index.less | 48 +- src/components/back-top/tests/index.test.tsx | 4 +- src/components/back-top/types.ts | 78 +- src/components/badge/README.md | 58 +- src/components/badge/badge.tsx | 112 +- src/components/badge/demos/demo-badge.tsx | 16 +- src/components/badge/demos/demo-base.tsx | 26 +- src/components/badge/demos/demo-dot.tsx | 14 +- src/components/badge/demos/demo-maxcount.tsx | 26 +- .../badge/demos/demo-offset-color.tsx | 32 +- src/components/badge/demos/demo-visible.tsx | 63 +- src/components/badge/demos/demo.tsx | 49 +- src/components/badge/demos/index.less | 18 +- src/components/badge/index.ts | 9 +- src/components/badge/styles/index.less | 160 +- src/components/badge/tests/index.test.tsx | 4 +- src/components/badge/types.ts | 94 +- src/components/button/README.md | 46 +- src/components/button/button.tsx | 215 +- src/components/button/demos/demo-block.tsx | 14 +- src/components/button/demos/demo-color.tsx | 18 +- src/components/button/demos/demo-disabled.tsx | 22 +- src/components/button/demos/demo-hairline.tsx | 22 +- src/components/button/demos/demo-icon.tsx | 18 +- src/components/button/demos/demo-loading.tsx | 18 +- src/components/button/demos/demo-plain.tsx | 28 +- src/components/button/demos/demo-shape.tsx | 22 +- src/components/button/demos/demo-size.tsx | 24 +- src/components/button/demos/demo-type.tsx | 20 +- src/components/button/demos/demo.tsx | 91 +- src/components/button/demos/index.less | 8 +- src/components/button/index.ts | 12 +- src/components/button/types.ts | 176 +- src/components/card/README.md | 84 +- src/components/card/card.tsx | 159 +- src/components/card/demos/demo-base.tsx | 14 +- src/components/card/demos/demo-border.tsx | 42 +- src/components/card/demos/demo-cover.tsx | 86 +- src/components/card/demos/demo-custom.tsx | 47 +- src/components/card/demos/demo-footer.tsx | 29 +- src/components/card/demos/demo-round.tsx | 14 +- src/components/card/demos/demo.tsx | 48 +- src/components/card/demos/index.less | 12 +- src/components/card/index.ts | 23 +- src/components/card/styles/index.less | 134 +- src/components/card/tests/index.test.tsx | 4 +- src/components/card/types.ts | 24 +- src/components/checkbox/README.md | 97 +- src/components/checkbox/checkbox-group.tsx | 21 +- src/components/checkbox/checkbox.tsx | 118 +- src/components/checkbox/checker.tsx | 143 +- src/components/checkbox/demos/demo-base.tsx | 12 +- src/components/checkbox/demos/demo-custom.tsx | 34 +- .../checkbox/demos/demo-disabled.tsx | 14 +- .../checkbox/demos/demo-group-max.tsx | 24 +- src/components/checkbox/demos/demo-group.tsx | 23 +- .../checkbox/demos/demo-horizontal.tsx | 24 +- src/components/checkbox/demos/demo.tsx | 49 +- src/components/checkbox/demos/index.less | 5 +- src/components/checkbox/index.ts | 7 +- src/components/checkbox/tests/index.test.tsx | 4 +- src/components/checkbox/types.ts | 101 +- src/components/circle-progress/README.md | 49 +- .../circle-progress/circle-progress.tsx | 207 +- .../circle-progress/demos/demo-base.tsx | 54 +- .../circle-progress/demos/demo-children.tsx | 36 +- .../circle-progress/demos/demo-color.tsx | 29 +- .../circle-progress/demos/demo-size.tsx | 16 +- src/components/circle-progress/demos/demo.tsx | 37 +- .../circle-progress/demos/index.less | 5 +- src/components/circle-progress/index.ts | 9 +- .../circle-progress/styles/index.less | 83 +- .../circle-progress/tests/index.test.tsx | 4 +- src/components/circle-progress/types.ts | 114 +- src/components/config-provider/README.md | 34 +- .../config-provider-context.ts | 7 +- .../config-provider/config-provider.tsx | 62 +- .../config-provider/demos/demo-theme.tsx | 20 +- src/components/config-provider/demos/demo.tsx | 18 +- src/components/config-provider/index.ts | 9 +- .../config-provider/styles/index.less | 4 +- .../config-provider/tests/index.test.tsx | 4 +- src/components/config-provider/types.ts | 31 +- src/components/count-down/README.md | 46 +- src/components/count-down/count-down.tsx | 83 +- src/components/count-down/demos/demo-base.tsx | 6 +- .../count-down/demos/demo-children.tsx | 28 +- .../count-down/demos/demo-format.tsx | 6 +- .../count-down/demos/demo-millisecond.tsx | 6 +- src/components/count-down/demos/demo-ref.tsx | 67 +- src/components/count-down/demos/demo.tsx | 44 +- src/components/count-down/demos/index.less | 27 +- src/components/count-down/index.ts | 10 +- src/components/count-down/styles/index.less | 14 +- .../count-down/tests/index.test.tsx | 4 +- src/components/count-down/types.ts | 110 +- src/components/divider/README.md | 47 +- src/components/divider/demos/demo-base.tsx | 6 +- .../divider/demos/demo-contentPosition.tsx | 14 +- src/components/divider/demos/demo-dashed.tsx | 6 +- .../divider/demos/demo-direction.tsx | 6 +- src/components/divider/demos/demo-style.tsx | 18 +- src/components/divider/demos/demo.tsx | 42 +- src/components/divider/demos/index.less | 8 +- src/components/divider/divider.tsx | 59 +- src/components/divider/index.ts | 9 +- src/components/divider/styles/index.less | 104 +- src/components/divider/tests/index.test.tsx | 4 +- src/components/divider/types.ts | 42 +- src/components/empty/README.md | 46 +- src/components/empty/demos/demo-base.tsx | 6 +- src/components/empty/demos/demo-children.tsx | 20 +- src/components/empty/demos/demo-image.tsx | 22 +- src/components/empty/demos/demo-type.tsx | 16 +- src/components/empty/demos/demo.tsx | 36 +- src/components/empty/demos/index.less | 5 +- src/components/empty/empty.tsx | 101 +- src/components/empty/index.ts | 9 +- src/components/empty/styles/index.less | 66 +- src/components/empty/tests/index.test.tsx | 4 +- src/components/empty/types.ts | 38 +- src/components/flex/README.md | 36 +- src/components/flex/demos/demo-base.tsx | 32 +- src/components/flex/demos/demo-direction.tsx | 28 +- src/components/flex/demos/demo-gutter.tsx | 18 +- src/components/flex/demos/demo.tsx | 28 +- src/components/flex/demos/index.less | 42 +- src/components/flex/flex-item.tsx | 118 +- src/components/flex/flex.tsx | 105 +- src/components/flex/index.ts | 9 +- src/components/flex/styles/index.less | 128 +- src/components/flex/styles/mixins.less | 22 +- src/components/flex/tests/index.test.tsx | 4 +- src/components/flex/types.ts | 81 +- src/components/grid/README.md | 33 +- src/components/grid/demos/demo-base.tsx | 26 +- src/components/grid/demos/demo-column.tsx | 22 +- src/components/grid/demos/demo-gap.tsx | 22 +- .../grid/demos/demo-item-column.tsx | 24 +- src/components/grid/demos/demo-row.tsx | 22 +- src/components/grid/demos/demo.tsx | 43 +- src/components/grid/demos/index.less | 34 +- src/components/grid/grid-item.tsx | 43 +- src/components/grid/grid.tsx | 65 +- src/components/grid/index.ts | 12 +- src/components/grid/styles/index.less | 7 +- src/components/grid/tests/index.test.tsx | 4 +- src/components/grid/types.ts | 55 +- src/components/icon/README.md | 30 +- src/components/icon/demos/demo-all.tsx | 4097 +++++++++-------- src/components/icon/demos/demo-base.tsx | 14 +- src/components/icon/demos/demo-color.tsx | 20 +- src/components/icon/demos/demo-rotate.tsx | 20 +- src/components/icon/demos/demo-spin.tsx | 20 +- src/components/icon/demos/demo.tsx | 36 +- src/components/icon/demos/index.less | 36 +- src/components/icon/icon.tsx | 116 +- src/components/icon/icons/activity.tsx | 28 +- src/components/icon/icons/airplay.tsx | 31 +- src/components/icon/icons/alert-circle.tsx | 32 +- src/components/icon/icons/alert-octagon.tsx | 32 +- src/components/icon/icons/alert-triangle.tsx | 33 +- src/components/icon/icons/align-center.tsx | 34 +- src/components/icon/icons/align-justify.tsx | 35 +- src/components/icon/icons/align-left.tsx | 34 +- src/components/icon/icons/align-right.tsx | 34 +- src/components/icon/icons/anchor.tsx | 32 +- src/components/icon/icons/aperture.tsx | 40 +- src/components/icon/icons/archive.tsx | 32 +- .../icon/icons/arrow-down-circle.tsx | 32 +- src/components/icon/icons/arrow-down-left.tsx | 30 +- .../icon/icons/arrow-down-right.tsx | 31 +- src/components/icon/icons/arrow-down.tsx | 30 +- .../icon/icons/arrow-left-circle.tsx | 33 +- src/components/icon/icons/arrow-left.tsx | 30 +- .../icon/icons/arrow-right-circle.tsx | 32 +- src/components/icon/icons/arrow-right.tsx | 30 +- src/components/icon/icons/arrow-up-circle.tsx | 32 +- src/components/icon/icons/arrow-up-left.tsx | 30 +- src/components/icon/icons/arrow-up-right.tsx | 30 +- src/components/icon/icons/arrow-up.tsx | 30 +- src/components/icon/icons/at-sign.tsx | 30 +- src/components/icon/icons/award.tsx | 30 +- src/components/icon/icons/bar-chart-two.tsx | 35 +- src/components/icon/icons/bar-chart.tsx | 34 +- .../icon/icons/battery-charging.tsx | 32 +- src/components/icon/icons/battery.tsx | 30 +- src/components/icon/icons/bell-off.tsx | 36 +- src/components/icon/icons/bell.tsx | 30 +- src/components/icon/icons/bluetooth.tsx | 29 +- src/components/icon/icons/bold.tsx | 30 +- src/components/icon/icons/book-open.tsx | 30 +- src/components/icon/icons/book.tsx | 32 +- src/components/icon/icons/bookmark.tsx | 28 +- src/components/icon/icons/box.tsx | 34 +- src/components/icon/icons/briefcase.tsx | 30 +- src/components/icon/icons/calendar.tsx | 34 +- src/components/icon/icons/camera-off.tsx | 34 +- src/components/icon/icons/camera.tsx | 30 +- src/components/icon/icons/cast.tsx | 30 +- src/components/icon/icons/check-circle.tsx | 31 +- src/components/icon/icons/check-square.tsx | 31 +- src/components/icon/icons/check.tsx | 29 +- src/components/icon/icons/chevron-down.tsx | 29 +- src/components/icon/icons/chevron-left.tsx | 29 +- src/components/icon/icons/chevron-right.tsx | 28 +- src/components/icon/icons/chevron-up.tsx | 30 +- src/components/icon/icons/chevrons-down.tsx | 64 +- src/components/icon/icons/chevrons-left.tsx | 64 +- src/components/icon/icons/chevrons-right.tsx | 33 +- src/components/icon/icons/chevrons-up.tsx | 63 +- src/components/icon/icons/chrome.tsx | 68 +- src/components/icon/icons/circle.tsx | 60 +- src/components/icon/icons/clipboard.tsx | 62 +- src/components/icon/icons/clock.tsx | 62 +- src/components/icon/icons/cloud-drizzle.tsx | 74 +- src/components/icon/icons/cloud-lightning.tsx | 62 +- src/components/icon/icons/cloud-off.tsx | 62 +- src/components/icon/icons/cloud-rain.tsx | 66 +- src/components/icon/icons/cloud-snow.tsx | 72 +- src/components/icon/icons/cloud.tsx | 62 +- src/components/icon/icons/code.tsx | 64 +- src/components/icon/icons/codepen.tsx | 70 +- src/components/icon/icons/codesandbox.tsx | 70 +- src/components/icon/icons/coffee.tsx | 68 +- src/components/icon/icons/columns.tsx | 60 +- src/components/icon/icons/command.tsx | 60 +- src/components/icon/icons/compass.tsx | 64 +- src/components/icon/icons/copy.tsx | 62 +- .../icon/icons/corner-down-left.tsx | 62 +- .../icon/icons/corner-down-right.tsx | 62 +- .../icon/icons/corner-left-down.tsx | 62 +- src/components/icon/icons/corner-left-up.tsx | 62 +- .../icon/icons/corner-right-down.tsx | 62 +- src/components/icon/icons/corner-right-up.tsx | 62 +- src/components/icon/icons/corner-up-left.tsx | 62 +- src/components/icon/icons/corner-up-right.tsx | 62 +- src/components/icon/icons/cpu.tsx | 78 +- src/components/icon/icons/credit-card.tsx | 62 +- src/components/icon/icons/crop.tsx | 64 +- src/components/icon/icons/crosshair.tsx | 68 +- src/components/icon/icons/database.tsx | 66 +- src/components/icon/icons/delete.tsx | 64 +- src/components/icon/icons/disc.tsx | 62 +- src/components/icon/icons/divide-circle.tsx | 66 +- src/components/icon/icons/divide-square.tsx | 68 +- src/components/icon/icons/divide.tsx | 66 +- src/components/icon/icons/dollar-sign.tsx | 64 +- src/components/icon/icons/download-cloud.tsx | 64 +- src/components/icon/icons/download.tsx | 64 +- src/components/icon/icons/dribbble.tsx | 64 +- src/components/icon/icons/droplet.tsx | 60 +- src/components/icon/icons/edit-three.tsx | 64 +- src/components/icon/icons/edit-two.tsx | 60 +- src/components/icon/icons/edit.tsx | 64 +- src/components/icon/icons/external-link.tsx | 66 +- src/components/icon/icons/eye-off.tsx | 64 +- src/components/icon/icons/eye.tsx | 64 +- src/components/icon/icons/facebook.tsx | 62 +- src/components/icon/icons/fast-forward.tsx | 64 +- src/components/icon/icons/feather.tsx | 66 +- src/components/icon/icons/figma.tsx | 70 +- src/components/icon/icons/file-minus.tsx | 66 +- src/components/icon/icons/file-plus.tsx | 68 +- src/components/icon/icons/file-text.tsx | 70 +- src/components/icon/icons/file.tsx | 64 +- src/components/icon/icons/film.tsx | 76 +- src/components/icon/icons/filter.tsx | 62 +- src/components/icon/icons/flag.tsx | 64 +- src/components/icon/icons/folder-minus.tsx | 64 +- src/components/icon/icons/folder-plus.tsx | 66 +- src/components/icon/icons/folder.tsx | 62 +- src/components/icon/icons/framer.tsx | 62 +- src/components/icon/icons/frown.tsx | 68 +- src/components/icon/icons/gift.tsx | 70 +- src/components/icon/icons/git-branch.tsx | 68 +- src/components/icon/icons/git-commit.tsx | 66 +- src/components/icon/icons/git-merge.tsx | 66 +- .../icon/icons/git-pull-request.tsx | 68 +- src/components/icon/icons/github.tsx | 62 +- src/components/icon/icons/gitlab.tsx | 62 +- src/components/icon/icons/globe.tsx | 66 +- src/components/icon/icons/grid.tsx | 68 +- src/components/icon/icons/hard-drive.tsx | 68 +- src/components/icon/icons/hash.tsx | 68 +- src/components/icon/icons/headphones.tsx | 64 +- src/components/icon/icons/heart.tsx | 62 +- src/components/icon/icons/help-circle.tsx | 66 +- src/components/icon/icons/hexagon.tsx | 62 +- src/components/icon/icons/home.tsx | 64 +- src/components/icon/icons/image.tsx | 66 +- src/components/icon/icons/inbox.tsx | 64 +- src/components/icon/icons/index.ts | 2 +- src/components/icon/icons/info.tsx | 66 +- src/components/icon/icons/instagram.tsx | 66 +- src/components/icon/icons/italic.tsx | 66 +- src/components/icon/icons/key.tsx | 62 +- src/components/icon/icons/layers.tsx | 66 +- src/components/icon/icons/layout.tsx | 66 +- src/components/icon/icons/life-buoy.tsx | 74 +- src/components/icon/icons/link-two.tsx | 62 +- src/components/icon/icons/link.tsx | 64 +- src/components/icon/icons/linkedin.tsx | 66 +- src/components/icon/icons/list.tsx | 72 +- src/components/icon/icons/loader.tsx | 76 +- src/components/icon/icons/lock.tsx | 64 +- src/components/icon/icons/log-in.tsx | 66 +- src/components/icon/icons/log-out.tsx | 66 +- src/components/icon/icons/mail.tsx | 64 +- src/components/icon/icons/map-pin.tsx | 64 +- src/components/icon/icons/map.tsx | 66 +- src/components/icon/icons/maximize-two.tsx | 68 +- src/components/icon/icons/maximize.tsx | 62 +- src/components/icon/icons/meh.tsx | 68 +- src/components/icon/icons/menu.tsx | 66 +- src/components/icon/icons/message-circle.tsx | 62 +- src/components/icon/icons/message-square.tsx | 62 +- src/components/icon/icons/mic-off.tsx | 70 +- src/components/icon/icons/mic.tsx | 68 +- src/components/icon/icons/minimize-two.tsx | 68 +- src/components/icon/icons/minimize.tsx | 62 +- src/components/icon/icons/minus-circle.tsx | 64 +- src/components/icon/icons/minus-square.tsx | 64 +- src/components/icon/icons/minus.tsx | 62 +- src/components/icon/icons/monitor.tsx | 66 +- src/components/icon/icons/moon.tsx | 62 +- src/components/icon/icons/more-horizontal.tsx | 66 +- src/components/icon/icons/more-vertical.tsx | 66 +- src/components/icon/icons/mouse-pointer.tsx | 64 +- src/components/icon/icons/move.tsx | 72 +- src/components/icon/icons/music.tsx | 66 +- src/components/icon/icons/navigation-two.tsx | 62 +- src/components/icon/icons/navigation.tsx | 62 +- src/components/icon/icons/octagon.tsx | 62 +- src/components/icon/icons/package.tsx | 68 +- src/components/icon/icons/paperclip.tsx | 62 +- src/components/icon/icons/pause-circle.tsx | 66 +- src/components/icon/icons/pause.tsx | 64 +- src/components/icon/icons/pen-tool.tsx | 68 +- src/components/icon/icons/percent.tsx | 66 +- src/components/icon/icons/phone-call.tsx | 62 +- src/components/icon/icons/phone-forwarded.tsx | 66 +- src/components/icon/icons/phone-incoming.tsx | 66 +- src/components/icon/icons/phone-missed.tsx | 66 +- src/components/icon/icons/phone-off.tsx | 64 +- src/components/icon/icons/phone-outgoing.tsx | 66 +- src/components/icon/icons/phone.tsx | 62 +- src/components/icon/icons/pie-chart.tsx | 64 +- src/components/icon/icons/play-circle.tsx | 64 +- src/components/icon/icons/play.tsx | 62 +- src/components/icon/icons/plus-circle.tsx | 66 +- src/components/icon/icons/plus-square.tsx | 66 +- src/components/icon/icons/plus.tsx | 64 +- src/components/icon/icons/pocket.tsx | 64 +- src/components/icon/icons/power.tsx | 64 +- src/components/icon/icons/printer.tsx | 66 +- src/components/icon/icons/radio.tsx | 64 +- src/components/icon/icons/refresh-ccw.tsx | 64 +- src/components/icon/icons/refresh-cw.tsx | 66 +- src/components/icon/icons/repeat.tsx | 68 +- src/components/icon/icons/rewind.tsx | 64 +- src/components/icon/icons/rotate-ccw.tsx | 64 +- src/components/icon/icons/rotate-cw.tsx | 64 +- src/components/icon/icons/rss.tsx | 66 +- src/components/icon/icons/save.tsx | 66 +- src/components/icon/icons/scissors.tsx | 70 +- src/components/icon/icons/search.tsx | 64 +- src/components/icon/icons/send.tsx | 64 +- src/components/icon/icons/server.tsx | 68 +- src/components/icon/icons/settings.tsx | 64 +- src/components/icon/icons/share-two.tsx | 70 +- src/components/icon/icons/share.tsx | 66 +- src/components/icon/icons/shield-off.tsx | 66 +- src/components/icon/icons/shield.tsx | 62 +- src/components/icon/icons/shopping-bag.tsx | 66 +- src/components/icon/icons/shopping-cart.tsx | 66 +- src/components/icon/icons/shuffle.tsx | 70 +- src/components/icon/icons/sidebar.tsx | 64 +- src/components/icon/icons/skip-back.tsx | 64 +- src/components/icon/icons/skip-forward.tsx | 64 +- src/components/icon/icons/slack.tsx | 76 +- src/components/icon/icons/slash.tsx | 64 +- src/components/icon/icons/sliders.tsx | 78 +- src/components/icon/icons/smartphone.tsx | 64 +- src/components/icon/icons/smile.tsx | 68 +- src/components/icon/icons/speaker.tsx | 66 +- src/components/icon/icons/square.tsx | 62 +- src/components/icon/icons/star.tsx | 62 +- src/components/icon/icons/stop-circle.tsx | 64 +- src/components/icon/icons/sun.tsx | 78 +- src/components/icon/icons/sunrise.tsx | 76 +- src/components/icon/icons/sunset.tsx | 76 +- src/components/icon/icons/table.tsx | 62 +- src/components/icon/icons/tablet.tsx | 64 +- src/components/icon/icons/tag.tsx | 64 +- src/components/icon/icons/target.tsx | 66 +- src/components/icon/icons/terminal.tsx | 62 +- src/components/icon/icons/thermometer.tsx | 62 +- src/components/icon/icons/thumbs-down.tsx | 62 +- src/components/icon/icons/thumbs-up.tsx | 62 +- src/components/icon/icons/toggle-left.tsx | 64 +- src/components/icon/icons/toggle-right.tsx | 64 +- src/components/icon/icons/tool.tsx | 62 +- src/components/icon/icons/trash-two.tsx | 68 +- src/components/icon/icons/trash.tsx | 64 +- src/components/icon/icons/trello.tsx | 66 +- src/components/icon/icons/trending-down.tsx | 64 +- src/components/icon/icons/trending-up.tsx | 64 +- src/components/icon/icons/triangle.tsx | 62 +- src/components/icon/icons/truck.tsx | 68 +- src/components/icon/icons/tv.tsx | 64 +- src/components/icon/icons/twitch.tsx | 62 +- src/components/icon/icons/twitter.tsx | 62 +- src/components/icon/icons/type.tsx | 66 +- src/components/icon/icons/umbrella.tsx | 62 +- src/components/icon/icons/underline.tsx | 64 +- src/components/icon/icons/unlock.tsx | 64 +- src/components/icon/icons/upload-cloud.tsx | 68 +- src/components/icon/icons/upload.tsx | 66 +- src/components/icon/icons/user-check.tsx | 66 +- src/components/icon/icons/user-minus.tsx | 66 +- src/components/icon/icons/user-plus.tsx | 68 +- src/components/icon/icons/user-x.tsx | 68 +- src/components/icon/icons/user.tsx | 64 +- src/components/icon/icons/users.tsx | 68 +- src/components/icon/icons/video-off.tsx | 64 +- src/components/icon/icons/video.tsx | 64 +- src/components/icon/icons/voicemail.tsx | 66 +- src/components/icon/icons/volume-one.tsx | 64 +- src/components/icon/icons/volume-two.tsx | 64 +- src/components/icon/icons/volume-x.tsx | 66 +- src/components/icon/icons/volume.tsx | 62 +- src/components/icon/icons/watch.tsx | 66 +- src/components/icon/icons/wifi-off.tsx | 74 +- src/components/icon/icons/wifi.tsx | 68 +- src/components/icon/icons/wind.tsx | 62 +- src/components/icon/icons/x-circle.tsx | 66 +- src/components/icon/icons/x-octagon.tsx | 66 +- src/components/icon/icons/x-square.tsx | 66 +- src/components/icon/icons/x.tsx | 64 +- src/components/icon/icons/youtube.tsx | 64 +- src/components/icon/icons/zap-off.tsx | 68 +- src/components/icon/icons/zap.tsx | 62 +- src/components/icon/icons/zoom-in.tsx | 68 +- src/components/icon/icons/zoom-out.tsx | 66 +- src/components/icon/index.ts | 5 +- src/components/icon/styles/index.less | 10 +- src/components/icon/types.ts | 66 +- src/components/image/README.md | 51 +- src/components/image/demos/demo-base.tsx | 12 +- src/components/image/demos/demo-error.tsx | 44 +- src/components/image/demos/demo-fit.tsx | 36 +- src/components/image/demos/demo-loading.tsx | 38 +- src/components/image/demos/demo-round.tsx | 37 +- src/components/image/demos/demo.tsx | 44 +- src/components/image/demos/index.less | 20 +- src/components/image/image.tsx | 263 +- src/components/image/index.ts | 10 +- src/components/image/lazy-image.tsx | 99 +- src/components/image/styles/index.less | 114 +- src/components/image/tests/index.test.tsx | 4 +- src/components/image/types.ts | 8 +- src/components/lazy-load/README.md | 15 +- .../lazy-load/demos/demo-components.tsx | 22 +- .../lazy-load/demos/demo-images.tsx | 48 +- src/components/lazy-load/demos/demo.tsx | 24 +- src/components/lazy-load/demos/index.less | 5 +- src/components/lazy-load/index.ts | 9 +- src/components/lazy-load/lazy-load.tsx | 31 +- src/components/lazy-load/styles/index.less | 8 +- src/components/lazy-load/tests/index.test.tsx | 4 +- src/components/lazy-load/types.ts | 24 +- src/components/loading/README.md | 29 +- src/components/loading/demos/demo-all.tsx | 95 +- src/components/loading/demos/demo-color.tsx | 24 +- src/components/loading/demos/demo-size.tsx | 24 +- src/components/loading/demos/demo-text.tsx | 18 +- .../loading/demos/demo-textColor.tsx | 20 +- .../loading/demos/demo-textSize.tsx | 28 +- src/components/loading/demos/demo-type.tsx | 30 +- .../loading/demos/demo-vertical.tsx | 18 +- src/components/loading/demos/demo.tsx | 55 +- src/components/loading/demos/index.less | 56 +- src/components/loading/index.ts | 9 +- src/components/loading/loading.tsx | 104 +- .../loading/svg-loaders/ball-triangle.tsx | 132 +- src/components/loading/svg-loaders/bars.tsx | 166 +- .../loading/svg-loaders/circles.tsx | 60 +- .../loading/svg-loaders/gap-circle.tsx | 44 +- src/components/loading/svg-loaders/oval.tsx | 64 +- src/components/loading/svg-loaders/puff.tsx | 104 +- src/components/loading/svg-loaders/rings.tsx | 127 +- .../loading/svg-loaders/spinning-circles.tsx | 153 +- .../loading/svg-loaders/three-dots.tsx | 123 +- src/components/loading/tests/index.test.tsx | 1 - src/components/loading/types.ts | 77 +- src/components/nav-bar/README.md | 59 +- src/components/nav-bar/demos/demo-base.tsx | 6 +- src/components/nav-bar/demos/demo-content.tsx | 34 +- src/components/nav-bar/demos/demo-status.tsx | 50 +- src/components/nav-bar/demos/demo-style.tsx | 30 +- src/components/nav-bar/demos/demo.tsx | 36 +- src/components/nav-bar/demos/index.less | 5 +- src/components/nav-bar/index.ts | 9 +- src/components/nav-bar/nav-bar.tsx | 145 +- src/components/nav-bar/styles/index.less | 104 +- src/components/nav-bar/tests/index.test.tsx | 4 +- src/components/nav-bar/types.ts | 34 +- src/components/overlay/README.md | 36 +- src/components/overlay/demos/demo-base.tsx | 20 +- .../overlay/demos/demo-children.tsx | 55 +- src/components/overlay/demos/demo.tsx | 24 +- src/components/overlay/demos/index.less | 5 +- src/components/overlay/index.ts | 9 +- src/components/overlay/overlay.tsx | 97 +- src/components/overlay/styles/index.less | 52 +- src/components/overlay/tests/index.test.tsx | 4 +- src/components/overlay/types.ts | 56 +- src/components/pagination/README.md | 56 +- src/components/pagination/demos/demo-base.tsx | 28 +- .../pagination/demos/demo-center.tsx | 36 +- .../pagination/demos/demo-custom.tsx | 55 +- src/components/pagination/demos/demo-icon.tsx | 30 +- src/components/pagination/demos/demo.tsx | 36 +- src/components/pagination/demos/index.less | 5 +- src/components/pagination/index.ts | 9 +- src/components/pagination/pagination.tsx | 188 +- src/components/pagination/styles/index.less | 69 +- .../pagination/tests/index.test.tsx | 4 +- src/components/pagination/types.ts | 150 +- src/components/progress/README.md | 57 +- src/components/progress/demos/demo-base.tsx | 53 +- src/components/progress/demos/demo-color.tsx | 16 +- .../progress/demos/demo-filleted.tsx | 16 +- .../progress/demos/demo-percentPosition.tsx | 24 +- .../progress/demos/demo-renderPercent.tsx | 37 +- .../progress/demos/demo-showPercent.tsx | 6 +- src/components/progress/demos/demo-stroke.tsx | 30 +- src/components/progress/demos/demo.tsx | 57 +- src/components/progress/demos/index.less | 5 +- src/components/progress/index.ts | 9 +- src/components/progress/progress.tsx | 150 +- src/components/progress/styles/index.less | 100 +- src/components/progress/tests/index.test.tsx | 4 +- src/components/progress/types.ts | 105 +- src/components/radio/README.md | 96 +- src/components/radio/demos/demo-base.tsx | 12 +- src/components/radio/demos/demo-custom.tsx | 34 +- src/components/radio/demos/demo-disabled.tsx | 14 +- src/components/radio/demos/demo-group.tsx | 23 +- .../radio/demos/demo-horizontal.tsx | 24 +- src/components/radio/demos/demo.tsx | 43 +- src/components/radio/demos/index.less | 5 +- src/components/radio/index.ts | 15 +- src/components/radio/radio-group.tsx | 14 +- src/components/radio/radio.tsx | 48 +- src/components/radio/tests/index.test.tsx | 4 +- src/components/radio/types.ts | 12 +- src/components/rate/README.md | 60 +- src/components/rate/demos/demo-base.tsx | 6 +- src/components/rate/demos/demo-color.tsx | 6 +- src/components/rate/demos/demo-count.tsx | 9 +- src/components/rate/demos/demo-disabled.tsx | 9 +- src/components/rate/demos/demo-half.tsx | 9 +- src/components/rate/demos/demo-icon.tsx | 12 +- src/components/rate/demos/demo-readonly.tsx | 6 +- src/components/rate/demos/demo.tsx | 26 +- src/components/rate/demos/index.less | 5 +- src/components/rate/index.ts | 9 +- src/components/rate/rate.tsx | 129 +- src/components/rate/tests/index.test.tsx | 4 +- src/components/rate/types.ts | 34 +- src/components/segmented/README.md | 78 +- src/components/segmented/demos/demo-base.tsx | 18 +- .../segmented/demos/demo-change.tsx | 70 +- .../segmented/demos/demo-children.tsx | 66 +- src/components/segmented/demos/demo-color.tsx | 18 +- .../segmented/demos/demo-disabled.tsx | 40 +- src/components/segmented/demos/demo-size.tsx | 46 +- src/components/segmented/demos/demo.tsx | 48 +- src/components/segmented/demos/index.less | 20 +- src/components/segmented/index.ts | 14 +- src/components/segmented/segmented-context.ts | 14 +- src/components/segmented/segmented-group.tsx | 134 +- src/components/segmented/segmented.tsx | 125 +- src/components/segmented/styles/index.less | 123 +- src/components/segmented/tests/index.test.tsx | 4 +- src/components/segmented/types.ts | 27 +- src/components/selector/README.md | 64 +- src/components/selector/check-mark.tsx | 20 +- src/components/selector/demos/demo-base.tsx | 40 +- src/components/selector/demos/demo-desc.tsx | 36 +- .../selector/demos/demo-disabled.tsx | 40 +- src/components/selector/demos/demo-layout.tsx | 42 +- src/components/selector/demos/demo-mark.tsx | 66 +- .../selector/demos/demo-multiple.tsx | 40 +- src/components/selector/demos/demo.tsx | 48 +- src/components/selector/demos/index.less | 5 +- src/components/selector/index.ts | 10 +- src/components/selector/selector.tsx | 132 +- src/components/selector/styles/index.less | 84 +- src/components/selector/tests/index.test.tsx | 4 +- src/components/selector/types.ts | 150 +- src/components/skeleton/README.md | 59 +- src/components/skeleton/demos/demo-avatar.tsx | 6 +- src/components/skeleton/demos/demo-base.tsx | 6 +- .../skeleton/demos/demo-children.tsx | 67 +- .../skeleton/demos/demo-row-height.tsx | 6 +- src/components/skeleton/demos/demo-title.tsx | 6 +- src/components/skeleton/demos/demo.tsx | 42 +- src/components/skeleton/demos/index.less | 5 +- src/components/skeleton/index.ts | 9 +- src/components/skeleton/skeleton.tsx | 186 +- src/components/skeleton/styles/index.less | 99 +- src/components/skeleton/tests/index.test.tsx | 4 +- src/components/skeleton/types.ts | 98 +- src/components/space/README.md | 23 +- src/components/space/demos/demo-base.tsx | 18 +- src/components/space/demos/demo-direction.tsx | 18 +- src/components/space/demos/demo-gap.tsx | 18 +- src/components/space/demos/demo-wrap.tsx | 28 +- src/components/space/demos/demo.tsx | 36 +- src/components/space/demos/index.less | 41 +- src/components/space/index.ts | 9 +- src/components/space/space.tsx | 99 +- src/components/space/styles/index.less | 132 +- src/components/space/tests/index.test.tsx | 4 +- src/components/space/types.ts | 18 +- src/components/steps/README.md | 74 +- src/components/steps/demos/demo-base.tsx | 18 +- src/components/steps/demos/demo-color.tsx | 22 +- src/components/steps/demos/demo-content.tsx | 50 +- .../steps/demos/demo-description.tsx | 18 +- src/components/steps/demos/demo-direction.tsx | 18 +- src/components/steps/demos/demo-icon.tsx | 54 +- src/components/steps/demos/demo-title.tsx | 18 +- src/components/steps/demos/demo.tsx | 54 +- src/components/steps/demos/index.less | 5 +- src/components/steps/index.ts | 4 +- src/components/steps/steps-item.tsx | 171 +- src/components/steps/steps.tsx | 64 +- src/components/steps/tests/index.test.tsx | 4 +- src/components/steps/types.ts | 132 +- src/components/switch/README.md | 82 +- src/components/switch/demos/demo-async.tsx | 36 +- src/components/switch/demos/demo-base.tsx | 6 +- src/components/switch/demos/demo-color.tsx | 14 +- src/components/switch/demos/demo-disabled.tsx | 14 +- src/components/switch/demos/demo-loading.tsx | 18 +- src/components/switch/demos/demo-shape.tsx | 14 +- src/components/switch/demos/demo-size.tsx | 16 +- src/components/switch/demos/demo.tsx | 54 +- src/components/switch/demos/index.less | 5 +- src/components/switch/index.ts | 9 +- src/components/switch/switch.tsx | 129 +- src/components/switch/tests/index.test.tsx | 4 +- src/components/switch/types.ts | 44 +- src/components/tabbar/README.md | 77 +- src/components/tabbar/demos/demo-badge.tsx | 38 +- src/components/tabbar/demos/demo-base.tsx | 18 +- src/components/tabbar/demos/demo-color.tsx | 18 +- src/components/tabbar/demos/demo-custom.tsx | 48 +- src/components/tabbar/demos/demo-fixed.tsx | 18 +- src/components/tabbar/demos/demo-icon.tsx | 18 +- src/components/tabbar/demos/demo-title.tsx | 46 +- src/components/tabbar/demos/demo.tsx | 61 +- src/components/tabbar/demos/index.less | 5 +- src/components/tabbar/index.ts | 4 +- src/components/tabbar/styles/index.less | 62 +- src/components/tabbar/tabbar-item.tsx | 126 +- src/components/tabbar/tabbar.tsx | 127 +- src/components/tabbar/tests/index.test.tsx | 4 +- src/components/tabbar/types.ts | 40 +- src/components/tag/README.md | 67 +- src/components/tag/demos/demo-base.tsx | 6 +- src/components/tag/demos/demo-close.tsx | 71 +- src/components/tag/demos/demo-color.tsx | 22 +- src/components/tag/demos/demo-icon.tsx | 22 +- src/components/tag/demos/demo-shape.tsx | 30 +- src/components/tag/demos/demo-size.tsx | 22 +- src/components/tag/demos/demo-type.tsx | 18 +- src/components/tag/demos/demo.tsx | 59 +- src/components/tag/demos/index.less | 4 +- src/components/tag/index.ts | 12 +- src/components/tag/tag.tsx | 110 +- src/components/tag/tests/index.test.tsx | 4 +- src/components/tag/types.ts | 106 +- src/components/transition/README.md | 45 +- src/components/transition/demos/demo-base.tsx | 30 +- src/components/transition/demos/demo.tsx | 18 +- src/components/transition/demos/index.less | 54 +- src/components/transition/index.ts | 10 +- src/components/transition/styles/index.less | 38 +- .../transition/tests/index.test.tsx | 4 +- src/components/transition/transition.tsx | 47 +- src/components/transition/types.ts | 60 +- src/components/typography/README.md | 64 +- src/components/typography/demos/demo-base.tsx | 28 +- .../typography/demos/demo-ellipsis.tsx | 24 +- .../typography/demos/demo-level.tsx | 20 +- src/components/typography/demos/demo-link.tsx | 6 +- src/components/typography/demos/demo-type.tsx | 18 +- src/components/typography/demos/demo.tsx | 42 +- src/components/typography/demos/index.less | 5 +- src/components/typography/index.tsx | 23 +- src/components/typography/styles/index.less | 210 +- .../typography/tests/index.test.tsx | 4 +- src/components/typography/typography.tsx | 93 +- src/components/water-mark/README.md | 43 +- src/components/water-mark/demos/demo-base.tsx | 23 +- src/components/water-mark/demos/demo.tsx | 18 +- src/components/water-mark/demos/index.less | 14 +- src/components/water-mark/index.ts | 9 +- src/components/water-mark/styles/index.less | 22 +- .../water-mark/tests/index.test.tsx | 4 +- src/components/water-mark/types.ts | 68 +- src/components/water-mark/water-mark.tsx | 173 +- src/demos/demo-block/index.tsx | 8 +- src/demos/index.ts | 2 +- src/hooks/index.ts | 29 +- src/hooks/use-count-down.ts | 6 +- src/hooks/use-event-listener.ts | 4 +- src/hooks/use-in-viewport.ts | 105 +- src/hooks/use-merged-state.ts | 2 +- src/hooks/use-namespace.ts | 8 +- src/hooks/use-scroll-to.ts | 46 +- src/index.ts | 8 - src/locales/zh-CN.ts | 4 +- src/styles/animation.less | 10 +- src/styles/colors.less | 551 ++- src/styles/index.less | 136 +- src/styles/mixin.less | 29 +- src/styles/variables.less | 5 +- src/typings/index.d.ts | 8 +- src/utils/base.ts | 8 +- src/utils/dom/getRect.ts | 18 +- src/utils/dom/getScroll.ts | 45 +- src/utils/dom/getTargetElement.ts | 36 +- src/utils/format/string.ts | 94 +- src/utils/format/unit.ts | 14 +- src/utils/index.ts | 1 - src/utils/interface.ts | 18 +- src/utils/sleep.ts | 7 +- src/utils/validate/number.ts | 15 +- src/utils/validate/string.ts | 5 +- tsconfig.json | 2 +- 799 files changed, 21480 insertions(+), 21628 deletions(-) diff --git a/.dumi/theme/builtins/Previewer.tsx b/.dumi/theme/builtins/Previewer.tsx index ffafe02..eba4a87 100644 --- a/.dumi/theme/builtins/Previewer.tsx +++ b/.dumi/theme/builtins/Previewer.tsx @@ -1,29 +1,21 @@ -import React, { - useRef, - useEffect, - useState, - useContext, - useCallback, -} from 'react' -import { context } from 'dumi/theme' -import type { IPreviewerProps } from 'dumi-theme-default/es/builtins/Previewer' -import Previewer from 'dumi-theme-default/es/builtins/Previewer' -import './Previewer.less' +import React, { useRef, useEffect, useState, useContext, useCallback } from 'react'; +import { context } from 'dumi/theme'; +import type { IPreviewerProps } from 'dumi-theme-default/es/builtins/Previewer'; +import Previewer from 'dumi-theme-default/es/builtins/Previewer'; +import './Previewer.less'; -export const ACTIVE_MSG_TYPE = 'dumi:scroll-into-demo' +export const ACTIVE_MSG_TYPE = 'dumi:scroll-into-demo'; export default (props: IPreviewerProps) => { - const ref = useRef() - const { meta } = useContext(context) - const [previewerProps, setPreviewerProps] = useState( - null - ) - const [isActive, setIsActive] = useState(false) - const isInactive = meta.mobile !== false && !isActive - const isHidden = props.hidden == true ? true : false - + const ref = useRef(); + const { meta } = useContext(context); + const [previewerProps, setPreviewerProps] = useState(null); + const [isActive, setIsActive] = useState(false); + const isInactive = meta.mobile !== false && !isActive; + const isHidden = props.hidden == true ? true : false; + const activeSelf = useCallback(() => { - if(!isHidden) return + if (!isHidden) return; window.postMessage( { type: ACTIVE_MSG_TYPE, @@ -31,30 +23,29 @@ export default (props: IPreviewerProps) => { identifier: props.identifier, demoUrl: props.demoUrl, simulator: props.simulator, - hidden: isHidden + hidden: isHidden, }), }, '*' - ) - setIsActive(true) - }, [props]) + ); + setIsActive(true); + }, [props]); useEffect(() => { // skip if page not loaded /* istanbul ignore next */ - if (!meta.title) return + if (!meta.title) return; - if(isHidden){ - activeSelf() + if (isHidden) { + activeSelf(); } - + if ( // only render mobile phone when screen max than 960px window?.outerWidth > 960 && // do not disable mobile simulator meta.mobile !== false ) { - setPreviewerProps( Object.assign({}, props, { // omit iframe @@ -64,17 +55,15 @@ export default (props: IPreviewerProps) => { // show source code defaultShowCode: true, // hide external action - hideActions: ['EXTERNAL' as IPreviewerProps['hideActions'][0]].concat( - props.hideActions - ), + hideActions: ['EXTERNAL' as IPreviewerProps['hideActions'][0]].concat(props.hideActions), }) - ) + ); } else { // use standard mode if screen min than 960px - setPreviewerProps(props) + setPreviewerProps(props); } - return () => {} - }, [props, meta]) + return () => {}; + }, [props, meta]); useEffect(() => { const handler = ev => { @@ -83,23 +72,25 @@ export default (props: IPreviewerProps) => { isActive && JSON.parse(ev.data.value).identifier !== props.identifier ) { - setIsActive(false) + setIsActive(false); } - } + }; + + window.addEventListener('message', handler); - window.addEventListener('message', handler) - - return () => window.removeEventListener('message', handler) - }) + return () => window.removeEventListener('message', handler); + }); return (
{ if (isInactive) { - activeSelf() + activeSelf(); } }} data-inactive={isInactive || undefined} @@ -112,5 +103,5 @@ export default (props: IPreviewerProps) => { /> )}
- ) -} + ); +}; diff --git a/.dumi/theme/components/Device.tsx b/.dumi/theme/components/Device.tsx index 91d3965..5930df2 100644 --- a/.dumi/theme/components/Device.tsx +++ b/.dumi/theme/components/Device.tsx @@ -1,53 +1,50 @@ -import React, { useState, useContext, useEffect, useRef } from 'react' -import QRCode from 'qrcode.react' -import { context, usePrefersColor } from 'dumi/theme' -import { ROUTE_MSG_TYPE } from '../layouts/demo' -import './Device.less' -import type { FC } from 'react' +import React, { useState, useContext, useEffect, useRef } from 'react'; +import QRCode from 'qrcode.react'; +import { context, usePrefersColor } from 'dumi/theme'; +import { ROUTE_MSG_TYPE } from '../layouts/demo'; +import './Device.less'; +import type { FC } from 'react'; interface IDeviceProps { - className?: string - url: string + className?: string; + url: string; } const Device: FC = ({ url, className }) => { - const iframeRef = useRef() - const [iframeSrc, setIframeSrc] = useState() - const [renderKey, setRenderKey] = useState(Math.random()) - const [color] = usePrefersColor() + const iframeRef = useRef(); + const [iframeSrc, setIframeSrc] = useState(); + const [renderKey, setRenderKey] = useState(Math.random()); + const [color] = usePrefersColor(); const { config: { mode, theme }, - } = useContext(context) + } = useContext(context); - const carrier = theme?.carrier || 'dumi' - const time = theme?.time || '10:24' + const carrier = theme?.carrier || 'dumi'; + const time = theme?.time || '10:24'; // re-render iframe if prefers color changed useEffect(() => { - setRenderKey(Math.random()) - }, [color]) + setRenderKey(Math.random()); + }, [color]); // control iframe page update useEffect(() => { - const { origin } = window.location + const { origin } = window.location; if (!iframeSrc || !url?.startsWith(origin)) { // set iframe src directly if it is the first render or custom url - setIframeSrc(url) + setIframeSrc(url); } else { const pathname = url // discard origin prefix .replace(origin, '') // discard router base - .replace(`${(window as any)?.routerBase || ''}`.replace(/\/$/, ''), '') + .replace(`${(window as any)?.routerBase || ''}`.replace(/\/$/, ''), ''); // update iframe page route via postmessage, to avoid page refresh - iframeRef.current?.contentWindow.postMessage( - { type: ROUTE_MSG_TYPE, value: pathname }, - '*' - ) + iframeRef.current?.contentWindow.postMessage({ type: ROUTE_MSG_TYPE, value: pathname }, '*'); } - }, [url]) + }, [url]); return (
= ({ url, className }) => { {carrier} {time}
-