taro-uno-ui 0.9.0-beta
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.
- package/LICENSE +100 -0
- package/README.md +273 -0
- package/dist/js/index-6NJ3A1Dn.js +26535 -0
- package/dist/js/index-6NJ3A1Dn.js.map +1 -0
- package/dist/js/index-DFdcksbe.js +1165 -0
- package/dist/js/index-DFdcksbe.js.map +1 -0
- package/dist/js/index-DXRIkWX1.js +1148 -0
- package/dist/js/index-DXRIkWX1.js.map +1 -0
- package/dist/js/index-DffLRSro.js +26519 -0
- package/dist/js/index-DffLRSro.js.map +1 -0
- package/package.json +119 -0
- package/src/app.config.ts +55 -0
- package/src/app.scss +508 -0
- package/src/app.tsx +44 -0
- package/src/components/basic/Button/Button.styles.ts +130 -0
- package/src/components/basic/Button/Button.test.tsx +154 -0
- package/src/components/basic/Button/Button.tsx +93 -0
- package/src/components/basic/Button/Button.types.ts +45 -0
- package/src/components/basic/Button/index.tsx +6 -0
- package/src/components/basic/Divider/Divider.styles.ts +488 -0
- package/src/components/basic/Divider/Divider.test.tsx +551 -0
- package/src/components/basic/Divider/Divider.tsx +361 -0
- package/src/components/basic/Divider/Divider.types.ts +261 -0
- package/src/components/basic/Divider/index.tsx +25 -0
- package/src/components/basic/Icon/Icon.styles.ts +359 -0
- package/src/components/basic/Icon/Icon.test.tsx +357 -0
- package/src/components/basic/Icon/Icon.tsx +154 -0
- package/src/components/basic/Icon/Icon.types.ts +210 -0
- package/src/components/basic/Icon/index.tsx +22 -0
- package/src/components/basic/Text/Text.styles.ts +500 -0
- package/src/components/basic/Text/Text.test.tsx +299 -0
- package/src/components/basic/Text/Text.tsx +340 -0
- package/src/components/basic/Text/Text.types.ts +319 -0
- package/src/components/basic/Text/index.tsx +27 -0
- package/src/components/basic/Typography/Typography.styles.ts +346 -0
- package/src/components/basic/Typography/Typography.tsx +205 -0
- package/src/components/basic/Typography/Typography.types.ts +296 -0
- package/src/components/basic/Typography/index.tsx +14 -0
- package/src/components/basic/index.tsx +302 -0
- package/src/components/common/ErrorBoundary.tsx +87 -0
- package/src/components/common/LazyComponent.tsx +246 -0
- package/src/components/common/ResponsiveContainer.tsx +93 -0
- package/src/components/common/ResponsiveGrid.tsx +183 -0
- package/src/components/common/SecurityProvider.tsx +110 -0
- package/src/components/common/ThemeProvider.tsx +128 -0
- package/src/components/common/VirtualList.tsx +368 -0
- package/src/components/common/__tests__/ErrorBoundary.test.tsx +249 -0
- package/src/components/common/index.tsx +7 -0
- package/src/components/display/Avatar/Avatar.styles.ts +62 -0
- package/src/components/display/Avatar/Avatar.test.tsx +390 -0
- package/src/components/display/Avatar/Avatar.tsx +79 -0
- package/src/components/display/Avatar/Avatar.types.ts +40 -0
- package/src/components/display/Avatar/index.ts +3 -0
- package/src/components/display/Badge/Badge.tsx +42 -0
- package/src/components/display/Badge/Badge.types.ts +29 -0
- package/src/components/display/Badge/index.ts +2 -0
- package/src/components/display/Calendar/Calendar.styles.ts +255 -0
- package/src/components/display/Calendar/Calendar.test.tsx +30 -0
- package/src/components/display/Calendar/Calendar.tsx +337 -0
- package/src/components/display/Calendar/Calendar.types.ts +91 -0
- package/src/components/display/Calendar/index.ts +3 -0
- package/src/components/display/Card/Card.styles.ts +89 -0
- package/src/components/display/Card/Card.test.tsx +180 -0
- package/src/components/display/Card/Card.tsx +135 -0
- package/src/components/display/Card/Card.types.ts +55 -0
- package/src/components/display/Card/index.ts +3 -0
- package/src/components/display/Carousel/Carousel.styles.ts +206 -0
- package/src/components/display/Carousel/Carousel.tsx +295 -0
- package/src/components/display/Carousel/Carousel.types.ts +57 -0
- package/src/components/display/Carousel/index.ts +3 -0
- package/src/components/display/List/List.styles.ts +79 -0
- package/src/components/display/List/List.tsx +115 -0
- package/src/components/display/List/List.types.ts +68 -0
- package/src/components/display/List/index.ts +3 -0
- package/src/components/display/Rate/Rate.styles.ts +266 -0
- package/src/components/display/Rate/Rate.tsx +332 -0
- package/src/components/display/Rate/Rate.types.ts +111 -0
- package/src/components/display/Rate/index.ts +28 -0
- package/src/components/display/Table/Table.styles.ts +269 -0
- package/src/components/display/Table/Table.test.tsx +343 -0
- package/src/components/display/Table/Table.tsx +430 -0
- package/src/components/display/Table/Table.types.ts +255 -0
- package/src/components/display/Table/index.tsx +16 -0
- package/src/components/display/Tag/Tag.styles.ts +197 -0
- package/src/components/display/Tag/Tag.test.tsx +541 -0
- package/src/components/display/Tag/Tag.tsx +156 -0
- package/src/components/display/Tag/Tag.types.ts +49 -0
- package/src/components/display/Tag/index.ts +3 -0
- package/src/components/display/Timeline/Timeline.styles.ts +211 -0
- package/src/components/display/Timeline/Timeline.tsx +239 -0
- package/src/components/display/Timeline/Timeline.types.ts +56 -0
- package/src/components/display/Timeline/index.ts +3 -0
- package/src/components/display/index.tsx +143 -0
- package/src/components/feedback/Loading/Loading.styles.ts +117 -0
- package/src/components/feedback/Loading/Loading.test.tsx +534 -0
- package/src/components/feedback/Loading/Loading.tsx +127 -0
- package/src/components/feedback/Loading/Loading.types.ts +33 -0
- package/src/components/feedback/Loading/index.ts +9 -0
- package/src/components/feedback/Message/Message.styles.ts +41 -0
- package/src/components/feedback/Message/Message.test.tsx +234 -0
- package/src/components/feedback/Message/Message.tsx +96 -0
- package/src/components/feedback/Message/Message.types.ts +37 -0
- package/src/components/feedback/Message/index.ts +9 -0
- package/src/components/feedback/Modal/Modal.styles.ts +21 -0
- package/src/components/feedback/Modal/Modal.test.tsx +11 -0
- package/src/components/feedback/Modal/Modal.tsx +291 -0
- package/src/components/feedback/Modal/Modal.types.ts +141 -0
- package/src/components/feedback/Modal/index.tsx +11 -0
- package/src/components/feedback/Notification/Notification.styles.ts +443 -0
- package/src/components/feedback/Notification/Notification.test.tsx +401 -0
- package/src/components/feedback/Notification/Notification.tsx +370 -0
- package/src/components/feedback/Notification/Notification.types.ts +336 -0
- package/src/components/feedback/Notification/NotificationManager.tsx +376 -0
- package/src/components/feedback/Notification/index.ts +33 -0
- package/src/components/feedback/Notification/index.tsx +164 -0
- package/src/components/feedback/Progress/Progress.styles.ts +460 -0
- package/src/components/feedback/Progress/Progress.test.simple.tsx +14 -0
- package/src/components/feedback/Progress/Progress.test.tsx +312 -0
- package/src/components/feedback/Progress/Progress.tsx +508 -0
- package/src/components/feedback/Progress/Progress.types.ts +163 -0
- package/src/components/feedback/Progress/index.ts +3 -0
- package/src/components/feedback/Progress/index.tsx +38 -0
- package/src/components/feedback/Progress/utils/animation.ts +204 -0
- package/src/components/feedback/Progress/utils/index.ts +26 -0
- package/src/components/feedback/Progress/utils/progress-calculator.ts +217 -0
- package/src/components/feedback/Result/Result.styles.ts +139 -0
- package/src/components/feedback/Result/Result.tsx +233 -0
- package/src/components/feedback/Result/Result.types.ts +128 -0
- package/src/components/feedback/Result/index.tsx +3 -0
- package/src/components/feedback/Toast/Toast.styles.ts +17 -0
- package/src/components/feedback/Toast/Toast.test.tsx +10 -0
- package/src/components/feedback/Toast/Toast.tsx +372 -0
- package/src/components/feedback/Toast/Toast.types.ts +86 -0
- package/src/components/feedback/Toast/index.tsx +3 -0
- package/src/components/feedback/Tooltip/Tooltip.examples.tsx +458 -0
- package/src/components/feedback/Tooltip/Tooltip.styles.ts +346 -0
- package/src/components/feedback/Tooltip/Tooltip.test.tsx +446 -0
- package/src/components/feedback/Tooltip/Tooltip.tsx +283 -0
- package/src/components/feedback/Tooltip/Tooltip.types.ts +172 -0
- package/src/components/feedback/Tooltip/index.ts +3 -0
- package/src/components/feedback/Tooltip/index.tsx +258 -0
- package/src/components/feedback/index.tsx +164 -0
- package/src/components/form/Cascader/Cascader.styles.ts +526 -0
- package/src/components/form/Cascader/Cascader.test.tsx +77 -0
- package/src/components/form/Cascader/Cascader.tsx +585 -0
- package/src/components/form/Cascader/Cascader.types.ts +582 -0
- package/src/components/form/Cascader/hooks/index.ts +3 -0
- package/src/components/form/Cascader/hooks/useCascaderFieldNames.ts +16 -0
- package/src/components/form/Cascader/hooks/useCascaderOptions.ts +109 -0
- package/src/components/form/Cascader/hooks/useCascaderState.ts +133 -0
- package/src/components/form/Cascader/index.ts +25 -0
- package/src/components/form/Cascader/utils/formatDisplayValue.ts +19 -0
- package/src/components/form/Cascader/utils/index.ts +1 -0
- package/src/components/form/Checkbox/Checkbox.styles.ts +608 -0
- package/src/components/form/Checkbox/Checkbox.test.tsx +1140 -0
- package/src/components/form/Checkbox/Checkbox.tsx +496 -0
- package/src/components/form/Checkbox/Checkbox.types.ts +472 -0
- package/src/components/form/Checkbox/CheckboxGroup.tsx +444 -0
- package/src/components/form/Checkbox/index.tsx +27 -0
- package/src/components/form/DatePicker/DatePicker.styles.ts +393 -0
- package/src/components/form/DatePicker/DatePicker.test.tsx +407 -0
- package/src/components/form/DatePicker/DatePicker.tsx +360 -0
- package/src/components/form/DatePicker/DatePicker.types.ts +247 -0
- package/src/components/form/DatePicker/index.tsx +15 -0
- package/src/components/form/Form/Form.styles.ts +357 -0
- package/src/components/form/Form/Form.test.tsx +122 -0
- package/src/components/form/Form/Form.tsx +695 -0
- package/src/components/form/Form/Form.types.ts +407 -0
- package/src/components/form/Form/index.tsx +31 -0
- package/src/components/form/Input/Input.enhanced.tsx +732 -0
- package/src/components/form/Input/Input.styles.ts +438 -0
- package/src/components/form/Input/Input.test.tsx +494 -0
- package/src/components/form/Input/Input.tsx +541 -0
- package/src/components/form/Input/Input.types.ts +285 -0
- package/src/components/form/Input/index.tsx +26 -0
- package/src/components/form/InputNumber/InputNumber.styles.ts +665 -0
- package/src/components/form/InputNumber/InputNumber.tsx +370 -0
- package/src/components/form/InputNumber/InputNumber.types.ts +318 -0
- package/src/components/form/InputNumber/components/InputNumberClearButton.tsx +32 -0
- package/src/components/form/InputNumber/components/InputNumberControls.tsx +42 -0
- package/src/components/form/InputNumber/components/index.ts +2 -0
- package/src/components/form/InputNumber/hooks/index.ts +4 -0
- package/src/components/form/InputNumber/hooks/useInputNumberState.ts +315 -0
- package/src/components/form/InputNumber/hooks/useInputNumberValidation.ts +147 -0
- package/src/components/form/InputNumber/index.ts +25 -0
- package/src/components/form/Radio/Radio.styles.ts +458 -0
- package/src/components/form/Radio/Radio.test.tsx +547 -0
- package/src/components/form/Radio/Radio.tsx +283 -0
- package/src/components/form/Radio/Radio.types.ts +410 -0
- package/src/components/form/Radio/index.tsx +21 -0
- package/src/components/form/Select/Select.styles.ts +514 -0
- package/src/components/form/Select/Select.test.tsx +648 -0
- package/src/components/form/Select/Select.tsx +474 -0
- package/src/components/form/Select/Select.types.ts +428 -0
- package/src/components/form/Select/index.tsx +30 -0
- package/src/components/form/Slider/Slider.styles.ts +139 -0
- package/src/components/form/Slider/Slider.test.tsx +553 -0
- package/src/components/form/Slider/Slider.tsx +326 -0
- package/src/components/form/Slider/Slider.types.ts +108 -0
- package/src/components/form/Slider/index.tsx +10 -0
- package/src/components/form/Switch/Switch.styles.ts +540 -0
- package/src/components/form/Switch/Switch.test.tsx +345 -0
- package/src/components/form/Switch/Switch.tsx +464 -0
- package/src/components/form/Switch/Switch.types.ts +386 -0
- package/src/components/form/Switch/index.tsx +26 -0
- package/src/components/form/Textarea/Textarea.styles.ts +592 -0
- package/src/components/form/Textarea/Textarea.test.tsx +1075 -0
- package/src/components/form/Textarea/Textarea.tsx +602 -0
- package/src/components/form/Textarea/Textarea.types.ts +371 -0
- package/src/components/form/Textarea/index.tsx +26 -0
- package/src/components/form/TimePicker/TimePicker.styles.ts +438 -0
- package/src/components/form/TimePicker/TimePicker.test.tsx +306 -0
- package/src/components/form/TimePicker/TimePicker.tsx +228 -0
- package/src/components/form/TimePicker/TimePicker.types.ts +385 -0
- package/src/components/form/TimePicker/index.ts +21 -0
- package/src/components/form/Transfer/Transfer.styles.ts +502 -0
- package/src/components/form/Transfer/Transfer.test.tsx +316 -0
- package/src/components/form/Transfer/Transfer.tsx +402 -0
- package/src/components/form/Transfer/Transfer.types.ts +557 -0
- package/src/components/form/Transfer/components/TransferItem.tsx +101 -0
- package/src/components/form/Transfer/components/TransferList.tsx +285 -0
- package/src/components/form/Transfer/components/TransferOperations.tsx +84 -0
- package/src/components/form/Transfer/components/TransferPagination.tsx +135 -0
- package/src/components/form/Transfer/components/TransferSearch.tsx +88 -0
- package/src/components/form/Transfer/components/index.ts +6 -0
- package/src/components/form/Transfer/hooks/index.ts +3 -0
- package/src/components/form/Transfer/hooks/useTransferData.ts +192 -0
- package/src/components/form/Transfer/hooks/useTransferState.ts +114 -0
- package/src/components/form/Transfer/index.ts +33 -0
- package/src/components/form/Upload/Upload.styles.ts +145 -0
- package/src/components/form/Upload/Upload.test.tsx +10 -0
- package/src/components/form/Upload/Upload.tsx +451 -0
- package/src/components/form/Upload/Upload.types.ts +200 -0
- package/src/components/form/Upload/index.tsx +12 -0
- package/src/components/form/index.tsx +121 -0
- package/src/components/index.tsx +146 -0
- package/src/components/layout/Affix/Affix.styles.ts +37 -0
- package/src/components/layout/Affix/Affix.test.tsx +10 -0
- package/src/components/layout/Affix/Affix.tsx +91 -0
- package/src/components/layout/Affix/Affix.types.ts +29 -0
- package/src/components/layout/Affix/index.tsx +3 -0
- package/src/components/layout/Col/Col.styles.ts +185 -0
- package/src/components/layout/Col/Col.test.tsx +535 -0
- package/src/components/layout/Col/Col.tsx +115 -0
- package/src/components/layout/Col/Col.types.ts +59 -0
- package/src/components/layout/Col/index.tsx +3 -0
- package/src/components/layout/Container/Container.styles.ts +161 -0
- package/src/components/layout/Container/Container.test.tsx +380 -0
- package/src/components/layout/Container/Container.tsx +132 -0
- package/src/components/layout/Container/Container.types.ts +63 -0
- package/src/components/layout/Container/index.tsx +3 -0
- package/src/components/layout/Grid/Grid.styles.ts +183 -0
- package/src/components/layout/Grid/Grid.test.tsx +637 -0
- package/src/components/layout/Grid/Grid.tsx +173 -0
- package/src/components/layout/Grid/Grid.types.ts +78 -0
- package/src/components/layout/Grid/index.tsx +3 -0
- package/src/components/layout/Layout/Content.tsx +38 -0
- package/src/components/layout/Layout/Footer.tsx +38 -0
- package/src/components/layout/Layout/Header.tsx +38 -0
- package/src/components/layout/Layout/Layout.styles.ts +84 -0
- package/src/components/layout/Layout/Layout.test.tsx +10 -0
- package/src/components/layout/Layout/Layout.tsx +39 -0
- package/src/components/layout/Layout/Layout.types.ts +58 -0
- package/src/components/layout/Layout/Sider.tsx +56 -0
- package/src/components/layout/Layout/index.tsx +8 -0
- package/src/components/layout/Row/Row.styles.ts +159 -0
- package/src/components/layout/Row/Row.test.tsx +467 -0
- package/src/components/layout/Row/Row.tsx +139 -0
- package/src/components/layout/Row/Row.types.ts +60 -0
- package/src/components/layout/Row/index.tsx +3 -0
- package/src/components/layout/Space/Space.styles.ts +255 -0
- package/src/components/layout/Space/Space.test.tsx +682 -0
- package/src/components/layout/Space/Space.tsx +211 -0
- package/src/components/layout/Space/Space.types.ts +92 -0
- package/src/components/layout/Space/index.tsx +12 -0
- package/src/components/layout/index.tsx +68 -0
- package/src/components/navigation/Menu/Menu.styles.ts +779 -0
- package/src/components/navigation/Menu/Menu.tsx +355 -0
- package/src/components/navigation/Menu/Menu.types.ts +231 -0
- package/src/components/navigation/Menu/Menu.utils.ts +187 -0
- package/src/components/navigation/Menu/MenuItem.tsx +126 -0
- package/src/components/navigation/Menu/SubMenu.tsx +148 -0
- package/src/components/navigation/Menu/__tests__/Menu.test.tsx +687 -0
- package/src/components/navigation/Menu/index.tsx +124 -0
- package/src/components/navigation/NavBar/NavBar.styles.ts +129 -0
- package/src/components/navigation/NavBar/NavBar.test.tsx +287 -0
- package/src/components/navigation/NavBar/NavBar.tsx +231 -0
- package/src/components/navigation/NavBar/NavBar.types.ts +54 -0
- package/src/components/navigation/NavBar/index.tsx +3 -0
- package/src/components/navigation/Pagination/Pagination.styles.ts +187 -0
- package/src/components/navigation/Pagination/Pagination.test.tsx +673 -0
- package/src/components/navigation/Pagination/Pagination.tsx +395 -0
- package/src/components/navigation/Pagination/Pagination.types.ts +86 -0
- package/src/components/navigation/Pagination/index.ts +18 -0
- package/src/components/navigation/Pagination/index.tsx +9 -0
- package/src/components/navigation/Steps/Step.tsx +56 -0
- package/src/components/navigation/Steps/Steps.styles.ts +154 -0
- package/src/components/navigation/Steps/Steps.test.tsx +12 -0
- package/src/components/navigation/Steps/Steps.tsx +113 -0
- package/src/components/navigation/Steps/Steps.types.ts +47 -0
- package/src/components/navigation/Steps/index.tsx +3 -0
- package/src/components/navigation/Tabs/Tabs.styles.ts +199 -0
- package/src/components/navigation/Tabs/Tabs.test.tsx +661 -0
- package/src/components/navigation/Tabs/Tabs.tsx +253 -0
- package/src/components/navigation/Tabs/Tabs.types.ts +114 -0
- package/src/components/navigation/Tabs/index.tsx +3 -0
- package/src/components/navigation/Tree/Tree.styles.ts +553 -0
- package/src/components/navigation/Tree/Tree.test.basic.tsx +7 -0
- package/src/components/navigation/Tree/Tree.test.functional.tsx +496 -0
- package/src/components/navigation/Tree/Tree.test.import.check.tsx +6 -0
- package/src/components/navigation/Tree/Tree.test.import.tsx +6 -0
- package/src/components/navigation/Tree/Tree.test.minimal.tsx +5 -0
- package/src/components/navigation/Tree/Tree.test.simple.tsx +30 -0
- package/src/components/navigation/Tree/Tree.test.tsx +908 -0
- package/src/components/navigation/Tree/Tree.test.working.tsx +673 -0
- package/src/components/navigation/Tree/Tree.tsx +600 -0
- package/src/components/navigation/Tree/Tree.types.ts +909 -0
- package/src/components/navigation/Tree/Tree.utils.ts +452 -0
- package/src/components/navigation/Tree/index.ts +33 -0
- package/src/components/navigation/Tree/index.tsx +23 -0
- package/src/components/navigation/index.tsx +83 -0
- package/src/constants/index.ts +785 -0
- package/src/hooks/index.ts +110 -0
- package/src/hooks/types.ts +10 -0
- package/src/hooks/useAsync.ts +65 -0
- package/src/hooks/useEventHandling.ts +444 -0
- package/src/hooks/useLifecycle.ts +399 -0
- package/src/hooks/usePerformance.ts +441 -0
- package/src/hooks/usePerformanceMonitor.ts +348 -0
- package/src/hooks/usePlatform.ts +62 -0
- package/src/hooks/useRequest.test.ts +11 -0
- package/src/hooks/useRequest.ts +135 -0
- package/src/hooks/useStateManagement.ts +300 -0
- package/src/hooks/useStyle.ts +537 -0
- package/src/hooks/useTheme.ts +347 -0
- package/src/hooks/useVirtualScroll.ts +331 -0
- package/src/index.ts +298 -0
- package/src/platform/index.ts +1188 -0
- package/src/providers/AppProvider.test.tsx +63 -0
- package/src/providers/AppProvider.tsx +155 -0
- package/src/providers/index.ts +1 -0
- package/src/theme/ThemeProvider.tsx +283 -0
- package/src/theme/ThemeProvider.types.ts +26 -0
- package/src/theme/animations.tsx +660 -0
- package/src/theme/defaults.ts +188 -0
- package/src/theme/design-system.ts +562 -0
- package/src/theme/design-tokens.ts +1136 -0
- package/src/theme/generated/dark-theme.scss +120 -0
- package/src/theme/generated/tokens.css +441 -0
- package/src/theme/generated/tokens.scss +320 -0
- package/src/theme/index.ts +120 -0
- package/src/theme/responsive.tsx +193 -0
- package/src/theme/styles/mixins.scss +612 -0
- package/src/theme/styles/variables.scss +295 -0
- package/src/theme/styles.ts +403 -0
- package/src/theme/tokens/colors.ts +256 -0
- package/src/theme/tokens/effects.ts +260 -0
- package/src/theme/tokens/index.ts +217 -0
- package/src/theme/tokens/spacing.ts +137 -0
- package/src/theme/tokens/typography.ts +186 -0
- package/src/theme/types.ts +188 -0
- package/src/theme/useThemeUtils.ts +313 -0
- package/src/theme/utils.ts +501 -0
- package/src/theme/variables.ts +583 -0
- package/src/types/accessibility.ts +51 -0
- package/src/types/button.ts +562 -0
- package/src/types/component-props.ts +317 -0
- package/src/types/env.d.ts +20 -0
- package/src/types/index.ts +427 -0
- package/src/types/modules.d.ts +40 -0
- package/src/types/standardized-components.ts +544 -0
- package/src/types/taro-adapter.d.ts +174 -0
- package/src/types/taro-components.d.ts +73 -0
- package/src/types/utils.ts +410 -0
- package/src/utils/__tests__/inputValidator.test.ts +338 -0
- package/src/utils/__tests__/responsiveUtils.test.ts +310 -0
- package/src/utils/__tests__/xssProtection.test.ts +268 -0
- package/src/utils/cache.ts +83 -0
- package/src/utils/createNamespace.ts +24 -0
- package/src/utils/environment.ts +95 -0
- package/src/utils/error-handler.ts +88 -0
- package/src/utils/errorLogger.ts +197 -0
- package/src/utils/formatUtils.ts +444 -0
- package/src/utils/index.ts +115 -0
- package/src/utils/inputValidator.ts +261 -0
- package/src/utils/network/http-client.test.ts +18 -0
- package/src/utils/network/http-client.ts +151 -0
- package/src/utils/performance/performance.ts +850 -0
- package/src/utils/responsiveUtils.ts +357 -0
- package/src/utils/rtl-support.ts +344 -0
- package/src/utils/security/api-security.ts +386 -0
- package/src/utils/security/xss-protection.ts +69 -0
- package/src/utils/securityHeaders.ts +314 -0
- package/src/utils/typeHelpers.ts +16 -0
- package/src/utils/types/dataProcessing.ts +543 -0
- package/src/utils/types/typeHelpers.ts +187 -0
- package/src/utils/xssProtection.ts +420 -0
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
import { useState, useRef } from 'react';
|
|
2
|
+
import { Tooltip } from './Tooltip';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Tooltip 使用示例
|
|
6
|
+
* 展示各种 Tooltip 的使用方式和功能特性
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export const TooltipExamples = () => {
|
|
10
|
+
const [visible, setVisible] = useState(false);
|
|
11
|
+
const tooltipRef = useRef < any > (null);
|
|
12
|
+
|
|
13
|
+
return (
|
|
14
|
+
<div className="p-8 space-y-8">
|
|
15
|
+
<h1 className="text-2xl font-bold mb-6">Tooltip 组件示例</h1>
|
|
16
|
+
|
|
17
|
+
{/* 基础用法 */}
|
|
18
|
+
<section className="space-y-4">
|
|
19
|
+
<h2 className="text-xl font-semibold">基础用法</h2>
|
|
20
|
+
<div className="flex space-x-4">
|
|
21
|
+
<Tooltip title="这是一个基础的 Tooltip">
|
|
22
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded">悬停我</button>
|
|
23
|
+
</Tooltip>
|
|
24
|
+
|
|
25
|
+
<Tooltip title="支持 ReactNode" defaultVisible>
|
|
26
|
+
<button className="px-4 py-2 bg-green-500 text-white rounded">默认显示</button>
|
|
27
|
+
</Tooltip>
|
|
28
|
+
</div>
|
|
29
|
+
</section>
|
|
30
|
+
|
|
31
|
+
{/* 触发方式 */}
|
|
32
|
+
<section className="space-y-4">
|
|
33
|
+
<h2 className="text-xl font-semibold">触发方式</h2>
|
|
34
|
+
<div className="grid grid-cols-2 md:grid-cols-4 gap-4">
|
|
35
|
+
<Tooltip title="鼠标悬停触发" trigger="hover">
|
|
36
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded">Hover</button>
|
|
37
|
+
</Tooltip>
|
|
38
|
+
|
|
39
|
+
<Tooltip title="点击触发" trigger="click">
|
|
40
|
+
<button className="px-4 py-2 bg-green-500 text-white rounded">Click</button>
|
|
41
|
+
</Tooltip>
|
|
42
|
+
|
|
43
|
+
<Tooltip title="聚焦触发" trigger="focus">
|
|
44
|
+
<button className="px-4 py-2 bg-purple-500 text-white rounded">Focus</button>
|
|
45
|
+
</Tooltip>
|
|
46
|
+
|
|
47
|
+
<Tooltip title="右键触发" trigger="contextMenu">
|
|
48
|
+
<button className="px-4 py-2 bg-orange-500 text-white rounded">右键</button>
|
|
49
|
+
</Tooltip>
|
|
50
|
+
</div>
|
|
51
|
+
</section>
|
|
52
|
+
|
|
53
|
+
{/* 位置展示 */}
|
|
54
|
+
<section className="space-y-4">
|
|
55
|
+
<h2 className="text-xl font-semibold">位置展示</h2>
|
|
56
|
+
<div className="grid grid-cols-3 md:grid-cols-4 gap-8">
|
|
57
|
+
<div className="flex justify-center">
|
|
58
|
+
<Tooltip title="上左" placement="topLeft">
|
|
59
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded">上左</button>
|
|
60
|
+
</Tooltip>
|
|
61
|
+
</div>
|
|
62
|
+
<div className="flex justify-center">
|
|
63
|
+
<Tooltip title="上" placement="top">
|
|
64
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded">上</button>
|
|
65
|
+
</Tooltip>
|
|
66
|
+
</div>
|
|
67
|
+
<div className="flex justify-center">
|
|
68
|
+
<Tooltip title="上右" placement="topRight">
|
|
69
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded">上右</button>
|
|
70
|
+
</Tooltip>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
<div className="flex justify-center">
|
|
74
|
+
<Tooltip title="左" placement="left">
|
|
75
|
+
<button className="px-4 py-2 bg-green-500 text-white rounded">左</button>
|
|
76
|
+
</Tooltip>
|
|
77
|
+
</div>
|
|
78
|
+
<div className="flex justify-center">
|
|
79
|
+
<Tooltip title="右" placement="right">
|
|
80
|
+
<button className="px-4 py-2 bg-green-500 text-white rounded">右</button>
|
|
81
|
+
</Tooltip>
|
|
82
|
+
</div>
|
|
83
|
+
|
|
84
|
+
<div className="flex justify-center">
|
|
85
|
+
<Tooltip title="下左" placement="bottomLeft">
|
|
86
|
+
<button className="px-4 py-2 bg-purple-500 text-white rounded">下左</button>
|
|
87
|
+
</Tooltip>
|
|
88
|
+
</div>
|
|
89
|
+
<div className="flex justify-center">
|
|
90
|
+
<Tooltip title="下" placement="bottom">
|
|
91
|
+
<button className="px-4 py-2 bg-purple-500 text-white rounded">下</button>
|
|
92
|
+
</Tooltip>
|
|
93
|
+
</div>
|
|
94
|
+
<div className="flex justify-center">
|
|
95
|
+
<Tooltip title="下右" placement="bottomRight">
|
|
96
|
+
<button className="px-4 py-2 bg-purple-500 text-white rounded">下右</button>
|
|
97
|
+
</Tooltip>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
</section>
|
|
101
|
+
|
|
102
|
+
{/* 主题展示 */}
|
|
103
|
+
<section className="space-y-4">
|
|
104
|
+
<h2 className="text-xl font-semibold">主题展示</h2>
|
|
105
|
+
<div className="grid grid-cols-2 md:grid-cols-4 gap-4">
|
|
106
|
+
<Tooltip title="浅色主题" theme="light">
|
|
107
|
+
<button className="px-4 py-2 bg-gray-200 text-gray-800 rounded">Light</button>
|
|
108
|
+
</Tooltip>
|
|
109
|
+
|
|
110
|
+
<Tooltip title="深色主题" theme="dark">
|
|
111
|
+
<button className="px-4 py-2 bg-gray-800 text-white rounded">Dark</button>
|
|
112
|
+
</Tooltip>
|
|
113
|
+
|
|
114
|
+
<Tooltip title="主色主题" theme="primary">
|
|
115
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded">Primary</button>
|
|
116
|
+
</Tooltip>
|
|
117
|
+
|
|
118
|
+
<Tooltip title="成功主题" theme="success">
|
|
119
|
+
<button className="px-4 py-2 bg-green-500 text-white rounded">Success</button>
|
|
120
|
+
</Tooltip>
|
|
121
|
+
|
|
122
|
+
<Tooltip title="警告主题" theme="warning">
|
|
123
|
+
<button className="px-4 py-2 bg-yellow-500 text-white rounded">Warning</button>
|
|
124
|
+
</Tooltip>
|
|
125
|
+
|
|
126
|
+
<Tooltip title="错误主题" theme="error">
|
|
127
|
+
<button className="px-4 py-2 bg-red-500 text-white rounded">Error</button>
|
|
128
|
+
</Tooltip>
|
|
129
|
+
|
|
130
|
+
<Tooltip title="信息主题" theme="info">
|
|
131
|
+
<button className="px-4 py-2 bg-cyan-500 text-white rounded">Info</button>
|
|
132
|
+
</Tooltip>
|
|
133
|
+
</div>
|
|
134
|
+
</section>
|
|
135
|
+
|
|
136
|
+
{/* 动画效果 */}
|
|
137
|
+
<section className="space-y-4">
|
|
138
|
+
<h2 className="text-xl font-semibold">动画效果</h2>
|
|
139
|
+
<div className="grid grid-cols-2 md:grid-cols-4 gap-4">
|
|
140
|
+
<Tooltip title="淡入淡出" animation="fade">
|
|
141
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded">Fade</button>
|
|
142
|
+
</Tooltip>
|
|
143
|
+
|
|
144
|
+
<Tooltip title="缩放" animation="scale">
|
|
145
|
+
<button className="px-4 py-2 bg-green-500 text-white rounded">Scale</button>
|
|
146
|
+
</Tooltip>
|
|
147
|
+
|
|
148
|
+
<Tooltip title="滑动" animation="slide">
|
|
149
|
+
<button className="px-4 py-2 bg-purple-500 text-white rounded">Slide</button>
|
|
150
|
+
</Tooltip>
|
|
151
|
+
|
|
152
|
+
<Tooltip title="无动画" animation="none">
|
|
153
|
+
<button className="px-4 py-2 bg-gray-500 text-white rounded">None</button>
|
|
154
|
+
</Tooltip>
|
|
155
|
+
</div>
|
|
156
|
+
</section>
|
|
157
|
+
|
|
158
|
+
{/* 高级功能 */}
|
|
159
|
+
<section className="space-y-4">
|
|
160
|
+
<h2 className="text-xl font-semibold">高级功能</h2>
|
|
161
|
+
|
|
162
|
+
{/* 延迟显示 */}
|
|
163
|
+
<div className="space-y-2">
|
|
164
|
+
<h3 className="text-lg font-medium">延迟显示/隐藏</h3>
|
|
165
|
+
<div className="flex space-x-4">
|
|
166
|
+
<Tooltip title="延迟 500ms 显示" showDelay={500}>
|
|
167
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded">延迟显示</button>
|
|
168
|
+
</Tooltip>
|
|
169
|
+
|
|
170
|
+
<Tooltip title="延迟 300ms 隐藏" hideDelay={300}>
|
|
171
|
+
<button className="px-4 py-2 bg-green-500 text-white rounded">延迟隐藏</button>
|
|
172
|
+
</Tooltip>
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
|
|
176
|
+
{/* 受控模式 */}
|
|
177
|
+
<div className="space-y-2">
|
|
178
|
+
<h3 className="text-lg font-medium">受控模式</h3>
|
|
179
|
+
<div className="flex items-center space-x-4">
|
|
180
|
+
<Tooltip title="受控 Tooltip" visible={visible}>
|
|
181
|
+
<button className="px-4 py-2 bg-purple-500 text-white rounded">受控模式</button>
|
|
182
|
+
</Tooltip>
|
|
183
|
+
<button
|
|
184
|
+
onClick={() => setVisible(!visible)}
|
|
185
|
+
className="px-4 py-2 bg-gray-500 text-white rounded"
|
|
186
|
+
>
|
|
187
|
+
{visible ? '隐藏' : '显示'}
|
|
188
|
+
</button>
|
|
189
|
+
</div>
|
|
190
|
+
</div>
|
|
191
|
+
|
|
192
|
+
{/* 自定义样式 */}
|
|
193
|
+
<div className="space-y-2">
|
|
194
|
+
<h3 className="text-lg font-medium">自定义样式</h3>
|
|
195
|
+
<div className="flex space-x-4">
|
|
196
|
+
<Tooltip
|
|
197
|
+
title="自定义样式"
|
|
198
|
+
popupStyle={{
|
|
199
|
+
backgroundColor: 'linear-gradient(45deg, #ff6b6b, #4ecdc4)',
|
|
200
|
+
color: 'white',
|
|
201
|
+
borderRadius: '8px',
|
|
202
|
+
padding: '16px',
|
|
203
|
+
boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)'
|
|
204
|
+
}}
|
|
205
|
+
>
|
|
206
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded">自定义样式</button>
|
|
207
|
+
</Tooltip>
|
|
208
|
+
|
|
209
|
+
<Tooltip
|
|
210
|
+
title="自定义箭头"
|
|
211
|
+
arrow
|
|
212
|
+
popupStyle={{
|
|
213
|
+
backgroundColor: '#ff6b6b',
|
|
214
|
+
color: 'white'
|
|
215
|
+
}}
|
|
216
|
+
>
|
|
217
|
+
<button className="px-4 py-2 bg-green-500 text-white rounded">自定义箭头</button>
|
|
218
|
+
</Tooltip>
|
|
219
|
+
</div>
|
|
220
|
+
</div>
|
|
221
|
+
|
|
222
|
+
{/* 复杂内容 */}
|
|
223
|
+
<div className="space-y-2">
|
|
224
|
+
<h3 className="text-lg font-medium">复杂内容</h3>
|
|
225
|
+
<div className="flex space-x-4">
|
|
226
|
+
<Tooltip
|
|
227
|
+
title={
|
|
228
|
+
<div className="space-y-2">
|
|
229
|
+
<h4 className="font-bold">用户信息</h4>
|
|
230
|
+
<p>姓名:张三</p>
|
|
231
|
+
<p>职位:前端工程师</p>
|
|
232
|
+
<p>邮箱:zhangsan@example.com</p>
|
|
233
|
+
</div>
|
|
234
|
+
}
|
|
235
|
+
>
|
|
236
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded">用户信息</button>
|
|
237
|
+
</Tooltip>
|
|
238
|
+
|
|
239
|
+
<Tooltip
|
|
240
|
+
title={
|
|
241
|
+
<div className="flex items-center space-x-2">
|
|
242
|
+
<span className="text-green-500">✓</span>
|
|
243
|
+
<span>操作成功!</span>
|
|
244
|
+
</div>
|
|
245
|
+
}
|
|
246
|
+
theme="success"
|
|
247
|
+
>
|
|
248
|
+
<button className="px-4 py-2 bg-green-500 text-white rounded">成功提示</button>
|
|
249
|
+
</Tooltip>
|
|
250
|
+
</div>
|
|
251
|
+
</div>
|
|
252
|
+
|
|
253
|
+
{/* 禁用状态 */}
|
|
254
|
+
<div className="space-y-2">
|
|
255
|
+
<h3 className="text-lg font-medium">禁用状态</h3>
|
|
256
|
+
<div className="flex space-x-4">
|
|
257
|
+
<Tooltip title="已禁用" disabled>
|
|
258
|
+
<button className="px-4 py-2 bg-gray-400 text-white rounded cursor-not-allowed">禁用按钮</button>
|
|
259
|
+
</Tooltip>
|
|
260
|
+
</div>
|
|
261
|
+
</div>
|
|
262
|
+
|
|
263
|
+
{/* 嵌套触发 */}
|
|
264
|
+
<div className="space-y-2">
|
|
265
|
+
<h3 className="text-lg font-medium">嵌套触发</h3>
|
|
266
|
+
<div className="flex space-x-4">
|
|
267
|
+
<Tooltip title="外层 Tooltip" nested>
|
|
268
|
+
<div className="p-4 bg-blue-100 rounded">
|
|
269
|
+
<Tooltip title="内层 Tooltip" nested>
|
|
270
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded">嵌套按钮</button>
|
|
271
|
+
</Tooltip>
|
|
272
|
+
</div>
|
|
273
|
+
</Tooltip>
|
|
274
|
+
</div>
|
|
275
|
+
</div>
|
|
276
|
+
|
|
277
|
+
{/* 最大宽度 */}
|
|
278
|
+
<div className="space-y-2">
|
|
279
|
+
<h3 className="text-lg font-medium">最大宽度</h3>
|
|
280
|
+
<div className="flex space-x-4">
|
|
281
|
+
<Tooltip
|
|
282
|
+
title="这是一个很长的提示内容,用于测试最大宽度的效果。当内容超过最大宽度时,文本会自动换行显示。"
|
|
283
|
+
maxWidth={200}
|
|
284
|
+
>
|
|
285
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded">最大宽度 200px</button>
|
|
286
|
+
</Tooltip>
|
|
287
|
+
|
|
288
|
+
<Tooltip
|
|
289
|
+
title="这是一个很长的提示内容,用于测试最大宽度的效果。当内容超过最大宽度时,文本会自动换行显示。"
|
|
290
|
+
maxWidth={300}
|
|
291
|
+
>
|
|
292
|
+
<button className="px-4 py-2 bg-green-500 text-white rounded">最大宽度 300px</button>
|
|
293
|
+
</Tooltip>
|
|
294
|
+
</div>
|
|
295
|
+
</div>
|
|
296
|
+
|
|
297
|
+
{/* 偏移量 */}
|
|
298
|
+
<div className="space-y-2">
|
|
299
|
+
<h3 className="text-lg font-medium">偏移量</h3>
|
|
300
|
+
<div className="flex space-x-4">
|
|
301
|
+
<Tooltip
|
|
302
|
+
title="偏移量 [10, 10]"
|
|
303
|
+
offset={[10, 10]}
|
|
304
|
+
>
|
|
305
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded">偏移 10px</button>
|
|
306
|
+
</Tooltip>
|
|
307
|
+
|
|
308
|
+
<Tooltip
|
|
309
|
+
title="偏移量 [20, -10]"
|
|
310
|
+
offset={[20, -10]}
|
|
311
|
+
>
|
|
312
|
+
<button className="px-4 py-2 bg-green-500 text-white rounded">偏移 20px</button>
|
|
313
|
+
</Tooltip>
|
|
314
|
+
</div>
|
|
315
|
+
</div>
|
|
316
|
+
|
|
317
|
+
{/* 无包裹模式 */}
|
|
318
|
+
<div className="space-y-2">
|
|
319
|
+
<h3 className="text-lg font-medium">无包裹模式</h3>
|
|
320
|
+
<div className="flex space-x-4">
|
|
321
|
+
<Tooltip title="不包裹子元素" wrap={false}>
|
|
322
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded">无包裹</button>
|
|
323
|
+
</Tooltip>
|
|
324
|
+
</div>
|
|
325
|
+
</div>
|
|
326
|
+
|
|
327
|
+
{/* API 调用 */}
|
|
328
|
+
<div className="space-y-2">
|
|
329
|
+
<h3 className="text-lg font-medium">API 调用</h3>
|
|
330
|
+
<div className="flex space-x-4">
|
|
331
|
+
<Tooltip
|
|
332
|
+
title="可通过 ref 调用"
|
|
333
|
+
ref={tooltipRef}
|
|
334
|
+
>
|
|
335
|
+
<button className="px-4 py-2 bg-purple-500 text-white rounded">API 控制</button>
|
|
336
|
+
</Tooltip>
|
|
337
|
+
|
|
338
|
+
<button
|
|
339
|
+
onClick={() => tooltipRef.current?.show()}
|
|
340
|
+
className="px-4 py-2 bg-green-500 text-white rounded"
|
|
341
|
+
>
|
|
342
|
+
显示
|
|
343
|
+
</button>
|
|
344
|
+
|
|
345
|
+
<button
|
|
346
|
+
onClick={() => tooltipRef.current?.hide()}
|
|
347
|
+
className="px-4 py-2 bg-red-500 text-white rounded"
|
|
348
|
+
>
|
|
349
|
+
隐藏
|
|
350
|
+
</button>
|
|
351
|
+
|
|
352
|
+
<button
|
|
353
|
+
onClick={() => tooltipRef.current?.toggle()}
|
|
354
|
+
className="px-4 py-2 bg-gray-500 text-white rounded"
|
|
355
|
+
>
|
|
356
|
+
切换
|
|
357
|
+
</button>
|
|
358
|
+
</div>
|
|
359
|
+
</div>
|
|
360
|
+
</section>
|
|
361
|
+
|
|
362
|
+
{/* 实际应用场景 */}
|
|
363
|
+
<section className="space-y-4">
|
|
364
|
+
<h2 className="text-xl font-semibold">实际应用场景</h2>
|
|
365
|
+
|
|
366
|
+
{/* 表单提示 */}
|
|
367
|
+
<div className="space-y-2">
|
|
368
|
+
<h3 className="text-lg font-medium">表单提示</h3>
|
|
369
|
+
<div className="space-y-4">
|
|
370
|
+
<div className="flex items-center space-x-4">
|
|
371
|
+
<label className="w-24">用户名:</label>
|
|
372
|
+
<input
|
|
373
|
+
type="text"
|
|
374
|
+
className="px-3 py-2 border rounded"
|
|
375
|
+
placeholder="请输入用户名"
|
|
376
|
+
/>
|
|
377
|
+
<Tooltip title="用户名长度应为 3-20 个字符">
|
|
378
|
+
<span className="text-gray-400 cursor-help">?</span>
|
|
379
|
+
</Tooltip>
|
|
380
|
+
</div>
|
|
381
|
+
|
|
382
|
+
<div className="flex items-center space-x-4">
|
|
383
|
+
<label className="w-24">密码:</label>
|
|
384
|
+
<input
|
|
385
|
+
type="password"
|
|
386
|
+
className="px-3 py-2 border rounded"
|
|
387
|
+
placeholder="请输入密码"
|
|
388
|
+
/>
|
|
389
|
+
<Tooltip title="密码应包含字母、数字和特殊字符">
|
|
390
|
+
<span className="text-gray-400 cursor-help">?</span>
|
|
391
|
+
</Tooltip>
|
|
392
|
+
</div>
|
|
393
|
+
</div>
|
|
394
|
+
</div>
|
|
395
|
+
|
|
396
|
+
{/* 操作按钮 */}
|
|
397
|
+
<div className="space-y-2">
|
|
398
|
+
<h3 className="text-lg font-medium">操作按钮</h3>
|
|
399
|
+
<div className="flex space-x-4">
|
|
400
|
+
<Tooltip title="保存数据">
|
|
401
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded">保存</button>
|
|
402
|
+
</Tooltip>
|
|
403
|
+
|
|
404
|
+
<Tooltip title="取消操作">
|
|
405
|
+
<button className="px-4 py-2 bg-gray-500 text-white rounded">取消</button>
|
|
406
|
+
</Tooltip>
|
|
407
|
+
|
|
408
|
+
<Tooltip title="删除数据,此操作不可恢复">
|
|
409
|
+
<button className="px-4 py-2 bg-red-500 text-white rounded">删除</button>
|
|
410
|
+
</Tooltip>
|
|
411
|
+
</div>
|
|
412
|
+
</div>
|
|
413
|
+
|
|
414
|
+
{/* 状态指示 */}
|
|
415
|
+
<div className="space-y-2">
|
|
416
|
+
<h3 className="text-lg font-medium">状态指示</h3>
|
|
417
|
+
<div className="flex space-x-4">
|
|
418
|
+
<Tooltip title="在线">
|
|
419
|
+
<span className="w-4 h-4 bg-green-500 rounded-full"></span>
|
|
420
|
+
</Tooltip>
|
|
421
|
+
|
|
422
|
+
<Tooltip title="离线">
|
|
423
|
+
<span className="w-4 h-4 bg-gray-500 rounded-full"></span>
|
|
424
|
+
</Tooltip>
|
|
425
|
+
|
|
426
|
+
<Tooltip title="忙碌">
|
|
427
|
+
<span className="w-4 h-4 bg-red-500 rounded-full"></span>
|
|
428
|
+
</Tooltip>
|
|
429
|
+
|
|
430
|
+
<Tooltip title="离开">
|
|
431
|
+
<span className="w-4 h-4 bg-yellow-500 rounded-full"></span>
|
|
432
|
+
</Tooltip>
|
|
433
|
+
</div>
|
|
434
|
+
</div>
|
|
435
|
+
|
|
436
|
+
{/* 链接提示 */}
|
|
437
|
+
<div className="space-y-2">
|
|
438
|
+
<h3 className="text-lg font-medium">链接提示</h3>
|
|
439
|
+
<div className="flex space-x-4">
|
|
440
|
+
<Tooltip title="访问官方网站">
|
|
441
|
+
<a href="#" className="text-blue-500 underline">官方网站</a>
|
|
442
|
+
</Tooltip>
|
|
443
|
+
|
|
444
|
+
<Tooltip title="查看文档">
|
|
445
|
+
<a href="#" className="text-blue-500 underline">文档</a>
|
|
446
|
+
</Tooltip>
|
|
447
|
+
|
|
448
|
+
<Tooltip title="提交问题">
|
|
449
|
+
<a href="#" className="text-blue-500 underline">问题反馈</a>
|
|
450
|
+
</Tooltip>
|
|
451
|
+
</div>
|
|
452
|
+
</div>
|
|
453
|
+
</section>
|
|
454
|
+
</div>
|
|
455
|
+
);
|
|
456
|
+
};
|
|
457
|
+
|
|
458
|
+
export default TooltipExamples;
|