pxd 0.0.54 → 0.0.60
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/README.md +18 -4
- package/dist/components/_internal/fragment-container.vue +3 -2
- package/dist/components/active-graph/index.d.vue.ts +6 -31
- package/dist/components/active-graph/index.vue +65 -38
- package/dist/components/active-graph/types.d.ts +42 -0
- package/dist/components/avatar/index.d.vue.ts +4 -11
- package/dist/components/avatar/index.vue +22 -11
- package/dist/components/avatar/types.d.ts +15 -0
- package/dist/components/avatar-group/index.d.vue.ts +2 -2
- package/dist/components/avatar-group/index.vue +5 -4
- package/dist/components/backtop/index.d.vue.ts +2 -7
- package/dist/components/backtop/types.d.ts +6 -0
- package/dist/components/badge/index.d.vue.ts +4 -11
- package/dist/components/badge/index.vue +47 -3
- package/dist/components/badge/types.d.ts +32 -0
- package/dist/components/book/index.d.vue.ts +2 -9
- package/dist/components/book/index.vue +3 -2
- package/dist/components/book/types.d.ts +9 -0
- package/dist/components/browser/index.d.vue.ts +2 -4
- package/dist/components/browser/index.vue +6 -2
- package/dist/components/browser/types.d.ts +3 -0
- package/dist/components/button/index.d.vue.ts +2 -2
- package/dist/components/button/index.vue +60 -12
- package/dist/{types/components/button.d.ts → components/button/types.d.ts} +1 -1
- package/dist/components/carousel/index.d.vue.ts +24 -2
- package/dist/components/carousel/index.vue +341 -28
- package/dist/{types/components/carousel.d.ts → components/carousel/types.d.ts} +6 -2
- package/dist/components/{command-menu-item → carousel-item}/index.d.vue.ts +2 -2
- package/dist/components/carousel-item/index.vue +49 -0
- package/dist/components/checkbox/index.d.vue.ts +2 -6
- package/dist/components/checkbox/index.vue +68 -31
- package/dist/components/checkbox/types.d.ts +15 -0
- package/dist/components/checkbox-group/index.d.vue.ts +2 -7
- package/dist/components/checkbox-group/index.vue +11 -29
- package/dist/components/checkbox-group/types.d.ts +12 -0
- package/dist/components/chip/index.d.vue.ts +4 -10
- package/dist/components/chip/index.vue +31 -2
- package/dist/components/chip/types.d.ts +8 -0
- package/dist/components/choicebox/index.d.vue.ts +12 -6
- package/dist/components/choicebox/index.vue +36 -54
- package/dist/components/choicebox/types.d.ts +20 -0
- package/dist/components/choicebox-item/index.d.vue.ts +16 -0
- package/dist/components/choicebox-item/index.vue +67 -0
- package/dist/{types/components/choicebox.d.ts → components/choicebox-item/types.d.ts} +1 -11
- package/dist/components/collapse/index.d.vue.ts +6 -8
- package/dist/components/collapse/index.vue +47 -30
- package/dist/components/collapse/types.d.ts +8 -0
- package/dist/components/collapse-group/index.d.vue.ts +2 -8
- package/dist/components/collapse-group/index.vue +8 -20
- package/dist/components/collapse-group/types.d.ts +6 -0
- package/dist/components/command-menu/index.d.vue.ts +4 -11
- package/dist/components/command-menu/index.vue +6 -7
- package/dist/components/command-menu/types.d.ts +18 -0
- package/dist/components/command-menu-group/index.d.vue.ts +2 -5
- package/dist/components/command-menu-group/index.vue +3 -2
- package/dist/components/command-menu-group/types.d.ts +5 -0
- package/dist/components/config-provider/index.d.vue.ts +3 -3
- package/dist/components/config-provider/index.vue +6 -4
- package/dist/components/config-provider/types.d.ts +7 -0
- package/dist/components/countdown/index.d.vue.ts +3 -6
- package/dist/components/countdown/index.vue +3 -2
- package/dist/components/countdown/types.d.ts +11 -0
- package/dist/components/dash-line/index.d.vue.ts +3 -10
- package/dist/components/dash-line/index.vue +3 -1
- package/dist/components/dash-line/types.d.ts +9 -0
- package/dist/components/description/index.d.vue.ts +3 -7
- package/dist/components/description/index.vue +8 -7
- package/dist/components/description/types.d.ts +5 -0
- package/dist/components/drawer/index.d.vue.ts +7 -22
- package/dist/components/drawer/index.vue +20 -15
- package/dist/components/drawer/types.d.ts +27 -0
- package/dist/components/ellipsis-text/index.d.vue.ts +14 -0
- package/dist/components/ellipsis-text/index.vue +242 -0
- package/dist/components/ellipsis-text/types.d.ts +14 -0
- package/dist/components/empty-state/index.d.vue.ts +2 -5
- package/dist/components/empty-state/index.vue +6 -2
- package/dist/components/empty-state/types.d.ts +4 -0
- package/dist/components/error/index.d.vue.ts +2 -10
- package/dist/components/error/index.vue +20 -5
- package/dist/components/error/types.d.ts +14 -0
- package/dist/components/fader/index.d.vue.ts +3 -9
- package/dist/components/fader/index.vue +30 -11
- package/dist/components/fader/types.d.ts +8 -0
- package/dist/components/gauge/index.d.vue.ts +2 -9
- package/dist/components/gauge/index.vue +7 -2
- package/dist/components/gauge/types.d.ts +9 -0
- package/dist/components/grid/index.d.vue.ts +2 -7
- package/dist/components/grid/index.vue +9 -4
- package/dist/components/grid/types.d.ts +7 -0
- package/dist/components/grid-item/index.d.vue.ts +2 -6
- package/dist/components/grid-item/index.vue +16 -8
- package/dist/components/grid-item/types.d.ts +6 -0
- package/dist/components/hold-button/index.d.vue.ts +5 -12
- package/dist/components/hold-button/index.vue +7 -4
- package/dist/components/hold-button/types.d.ts +19 -0
- package/dist/components/index.d.ts +7 -4
- package/dist/components/index.js +7 -4
- package/dist/components/input/index.d.vue.ts +6 -8
- package/dist/components/input/index.vue +57 -23
- package/dist/components/input/types.d.ts +39 -0
- package/dist/components/intersection-observer/index.d.vue.ts +3 -11
- package/dist/components/intersection-observer/index.vue +12 -3
- package/dist/components/intersection-observer/types.d.ts +17 -0
- package/dist/components/kbd/index.d.vue.ts +2 -12
- package/dist/components/kbd/index.vue +2 -2
- package/dist/components/kbd/types.d.ts +11 -0
- package/dist/components/link-button/index.d.vue.ts +4 -12
- package/dist/components/link-button/index.vue +5 -4
- package/dist/components/link-button/types.d.ts +14 -0
- package/dist/components/list/index.d.vue.ts +12 -16
- package/dist/components/list/index.vue +50 -54
- package/dist/components/list/types.d.ts +23 -0
- package/dist/components/list-item/index.d.vue.ts +7 -13
- package/dist/components/list-item/index.vue +45 -16
- package/dist/components/list-item/types.d.ts +15 -0
- package/dist/components/loading-bar/index.d.vue.ts +2 -9
- package/dist/components/loading-bar/index.vue +33 -2
- package/dist/components/loading-bar/types.d.ts +10 -0
- package/dist/components/loading-dots/index.vue +3 -2
- package/dist/components/material/index.d.vue.ts +2 -4
- package/dist/components/material/index.vue +7 -0
- package/dist/components/material/types.d.ts +3 -0
- package/dist/components/menu/index.d.vue.ts +8 -12
- package/dist/components/menu/index.vue +4 -1
- package/dist/components/menu/types.d.ts +16 -0
- package/dist/components/message/index.d.vue.ts +21 -25
- package/dist/components/message/index.vue +8 -12
- package/dist/components/message/types.d.ts +14 -0
- package/dist/components/message-item/index.d.vue.ts +3 -10
- package/dist/components/message-item/index.vue +13 -7
- package/dist/components/message-item/types.d.ts +11 -0
- package/dist/components/modal/index.d.vue.ts +6 -20
- package/dist/components/modal/index.vue +17 -13
- package/dist/components/modal/types.d.ts +26 -0
- package/dist/components/more-button/index.d.vue.ts +3 -7
- package/dist/components/more-button/types.d.ts +10 -0
- package/dist/components/noise-background/index.d.vue.ts +3 -6
- package/dist/components/noise-background/index.vue +4 -3
- package/dist/components/noise-background/types.d.ts +5 -0
- package/dist/components/note/index.d.vue.ts +4 -11
- package/dist/components/note/index.vue +81 -29
- package/dist/components/note/types.d.ts +17 -0
- package/dist/components/number-input/index.d.vue.ts +4 -13
- package/dist/components/number-input/index.vue +36 -6
- package/dist/components/number-input/types.d.ts +26 -0
- package/dist/components/overlay/index.d.vue.ts +3 -12
- package/dist/components/overlay/index.vue +1 -1
- package/dist/components/overlay/types.d.ts +16 -0
- package/dist/components/pagination/index.d.vue.ts +2 -9
- package/dist/components/pagination/index.vue +5 -3
- package/dist/components/pagination/types.d.ts +9 -0
- package/dist/components/pin-input/index.d.vue.ts +9 -17
- package/dist/components/pin-input/index.vue +66 -23
- package/dist/components/pin-input/types.d.ts +23 -0
- package/dist/components/placeholder/index.d.vue.ts +2 -6
- package/dist/components/placeholder/index.vue +2 -1
- package/dist/components/placeholder/types.d.ts +5 -0
- package/dist/components/popover/index.d.vue.ts +4 -30
- package/dist/components/popover/index.vue +134 -77
- package/dist/components/popover/types.d.ts +39 -0
- package/dist/components/progress/index.d.vue.ts +4 -13
- package/dist/components/progress/index.vue +17 -2
- package/dist/components/progress/types.d.ts +16 -0
- package/dist/components/project-banner/index.d.vue.ts +18 -0
- package/dist/components/project-banner/index.vue +59 -0
- package/dist/components/project-banner/types.d.ts +8 -0
- package/dist/components/radio/index.d.vue.ts +1 -1
- package/dist/components/radio/index.vue +62 -20
- package/dist/components/radio/types.d.ts +13 -0
- package/dist/components/radio-group/index.d.vue.ts +2 -4
- package/dist/components/radio-group/index.vue +11 -16
- package/dist/components/radio-group/types.d.ts +12 -0
- package/dist/components/resizable/index.d.vue.ts +3 -6
- package/dist/components/resizable/index.vue +3 -1
- package/dist/components/resizable/types.d.ts +18 -0
- package/dist/components/resizable-handle/index.vue +4 -2
- package/dist/components/resizable-panel/index.d.vue.ts +2 -5
- package/dist/components/resizable-panel/index.vue +7 -2
- package/dist/components/resizable-panel/types.d.ts +4 -0
- package/dist/components/scrollable/index.d.vue.ts +29 -0
- package/dist/components/scrollable/index.vue +101 -84
- package/dist/components/scrollable/types.d.ts +38 -0
- package/dist/components/skeleton/index.d.vue.ts +3 -11
- package/dist/components/skeleton/index.vue +24 -1
- package/dist/components/skeleton/types.d.ts +10 -0
- package/dist/components/slider/index.d.vue.ts +9 -19
- package/dist/components/slider/index.vue +86 -44
- package/dist/components/slider/types.d.ts +17 -0
- package/dist/components/snippet/index.d.vue.ts +4 -11
- package/dist/components/snippet/index.vue +28 -2
- package/dist/components/snippet/types.d.ts +13 -0
- package/dist/components/spinner/index.vue +4 -2
- package/dist/components/stack/index.d.vue.ts +5 -15
- package/dist/components/stack/index.vue +35 -3
- package/dist/components/stack/types.d.ts +13 -0
- package/dist/components/status-dot/index.d.vue.ts +3 -7
- package/dist/components/status-dot/index.vue +6 -2
- package/dist/components/status-dot/types.d.ts +6 -0
- package/dist/components/switch/index.d.vue.ts +11 -8
- package/dist/components/switch/index.vue +35 -44
- package/dist/components/switch/types.d.ts +14 -0
- package/dist/components/switch-item/index.d.vue.ts +14 -0
- package/dist/components/switch-item/index.vue +79 -0
- package/dist/components/switch-item/types.d.ts +9 -0
- package/dist/components/teleport/index.d.vue.ts +3 -6
- package/dist/components/teleport/index.vue +1 -1
- package/dist/components/teleport/types.d.ts +9 -0
- package/dist/components/text/index.d.vue.ts +3 -12
- package/dist/components/text/index.vue +36 -22
- package/dist/components/text/types.d.ts +10 -0
- package/dist/components/textarea/index.d.vue.ts +8 -22
- package/dist/components/textarea/index.vue +33 -4
- package/dist/components/textarea/types.d.ts +22 -0
- package/dist/components/theme-switcher/index.d.vue.ts +2 -3
- package/dist/components/theme-switcher/types.d.ts +5 -0
- package/dist/components/time-picker/index.d.vue.ts +4 -19
- package/dist/components/time-picker/index.vue +43 -9
- package/dist/components/time-picker/types.d.ts +27 -0
- package/dist/components/toggle/index.d.vue.ts +9 -23
- package/dist/components/toggle/index.vue +11 -10
- package/dist/components/toggle/types.d.ts +22 -0
- package/dist/components/toggle-button/index.d.vue.ts +22 -0
- package/dist/components/toggle-button/index.vue +110 -0
- package/dist/components/toggle-button/types.d.ts +16 -0
- package/dist/components/{choicebox-group → toggle-button-group}/index.d.vue.ts +5 -5
- package/dist/components/toggle-button-group/index.vue +68 -0
- package/dist/components/toggle-button-group/types.d.ts +22 -0
- package/dist/components/tooltip/index.d.vue.ts +6 -16
- package/dist/components/tooltip/index.vue +9 -3
- package/dist/components/tooltip/types.d.ts +17 -0
- package/dist/components/virtual-list/index.d.vue.ts +26 -9
- package/dist/components/virtual-list/index.vue +66 -10
- package/dist/components/virtual-list/types.d.ts +10 -0
- package/dist/composables/index.d.ts +2 -2
- package/dist/composables/index.js +2 -2
- package/dist/composables/use-browser-observer.d.ts +5 -5
- package/dist/composables/use-browser-observer.js +23 -20
- package/dist/composables/use-copy-click.js +4 -0
- package/dist/composables/use-countdown.d.ts +2 -2
- package/dist/composables/use-delay-destroy.d.ts +2 -1
- package/dist/composables/use-delay-destroy.js +1 -1
- package/dist/composables/use-focus-trap.d.ts +6 -2
- package/dist/composables/use-focus-trap.js +19 -7
- package/dist/composables/use-forward-ref-expose.d.ts +2 -0
- package/dist/composables/use-forward-ref-expose.js +41 -0
- package/dist/composables/use-message.d.ts +4 -7
- package/dist/composables/use-model-value.d.ts +9 -8
- package/dist/composables/use-popover-responsive.d.ts +2 -2
- package/dist/composables/use-popover-responsive.js +3 -3
- package/dist/composables/use-repeat-action.js +2 -2
- package/dist/composables/use-virtual-list.d.ts +21 -12
- package/dist/composables/use-virtual-list.js +90 -158
- package/dist/composables/use-window-size.d.ts +4 -0
- package/dist/composables/use-window-size.js +27 -0
- package/dist/contexts/avatar.d.ts +5 -2
- package/dist/contexts/carousel.d.ts +4 -4
- package/dist/contexts/carousel.js +1 -1
- package/dist/contexts/checkbox.d.ts +7 -2
- package/dist/contexts/choicebox.d.ts +8 -4
- package/dist/contexts/choicebox.js +1 -4
- package/dist/contexts/collapse.d.ts +5 -6
- package/dist/contexts/collapse.js +1 -1
- package/dist/contexts/config-provider.d.ts +5 -0
- package/dist/{composables/use-config-provider-context.js → contexts/config-provider.js} +8 -5
- package/dist/contexts/list.d.ts +1 -1
- package/dist/contexts/radio.d.ts +8 -2
- package/dist/contexts/switch.d.ts +8 -4
- package/dist/contexts/switch.js +1 -2
- package/dist/contexts/toggle-button.d.ts +7 -0
- package/dist/contexts/toggle-button.js +2 -0
- package/dist/index.d.ts +0 -1
- package/dist/styles/source.css +14 -2
- package/dist/styles/styles.css +2 -2
- package/dist/styles/tw.css +14 -2
- package/dist/types/shared/props.d.ts +1 -3
- package/dist/types/shared/utils.d.ts +0 -3
- package/dist/utils/context.d.ts +1 -0
- package/dist/utils/get.d.ts +1 -0
- package/dist/utils/get.js +14 -0
- package/dist/utils/responsive.js +2 -1
- package/dist/utils/throttle.js +9 -7
- package/dist/utils/uid.d.ts +1 -1
- package/dist/utils/uid.js +2 -2
- package/package.json +26 -24
- package/volar.d.ts +82 -80
- package/dist/components/badge/cn.d.ts +0 -90
- package/dist/components/badge/cn.js +0 -44
- package/dist/components/button/cn.d.ts +0 -121
- package/dist/components/button/cn.js +0 -55
- package/dist/components/carousel-group/index.d.vue.ts +0 -35
- package/dist/components/carousel-group/index.vue +0 -368
- package/dist/components/checkbox/cn.d.ts +0 -67
- package/dist/components/checkbox/cn.js +0 -31
- package/dist/components/chip/cn.d.ts +0 -49
- package/dist/components/chip/cn.js +0 -26
- package/dist/components/choicebox-group/index.vue +0 -65
- package/dist/components/command-menu-item/index.vue +0 -13
- package/dist/components/error/cn.d.ts +0 -22
- package/dist/components/error/cn.js +0 -15
- package/dist/components/input/cn.d.ts +0 -73
- package/dist/components/input/cn.js +0 -36
- package/dist/components/list-item/cn.d.ts +0 -22
- package/dist/components/list-item/cn.js +0 -15
- package/dist/components/loading-bar/cn.d.ts +0 -70
- package/dist/components/loading-bar/cn.js +0 -32
- package/dist/components/note/cn.d.ts +0 -121
- package/dist/components/note/cn.js +0 -66
- package/dist/components/pin-input/cn.d.ts +0 -46
- package/dist/components/pin-input/cn.js +0 -25
- package/dist/components/progress/cn.d.ts +0 -19
- package/dist/components/progress/cn.js +0 -14
- package/dist/components/radio/cn.d.ts +0 -46
- package/dist/components/radio/cn.js +0 -42
- package/dist/components/skeleton/cn.d.ts +0 -43
- package/dist/components/skeleton/cn.js +0 -24
- package/dist/components/snippet/cn.d.ts +0 -52
- package/dist/components/snippet/cn.js +0 -27
- package/dist/components/stack/cn.d.ts +0 -70
- package/dist/components/stack/cn.js +0 -33
- package/dist/components/switch/cn.d.ts +0 -16
- package/dist/components/switch/cn.js +0 -13
- package/dist/components/switch-group/index.d.vue.ts +0 -23
- package/dist/components/switch-group/index.vue +0 -54
- package/dist/components/text/cn.d.ts +0 -67
- package/dist/components/text/cn.js +0 -34
- package/dist/components/textarea/cn.d.ts +0 -58
- package/dist/components/textarea/cn.js +0 -30
- package/dist/composables/use-config-provider-context.d.ts +0 -8
- package/dist/composables/use-unique-id-context.d.ts +0 -2
- package/dist/composables/use-unique-id-context.js +0 -11
- package/dist/types/components/checkbox.d.ts +0 -17
- package/dist/types/components/error.d.ts +0 -6
- package/dist/types/components/index.d.ts +0 -12
- package/dist/types/components/input.d.ts +0 -29
- package/dist/types/components/list.d.ts +0 -12
- package/dist/types/components/popover.d.ts +0 -1
- package/dist/types/components/radio.d.ts +0 -16
- package/dist/types/components/switch.d.ts +0 -10
- package/dist/types/components/time-picker.d.ts +0 -4
- /package/dist/{types/components/avatar.d.ts → components/avatar-group/types.d.ts} +0 -0
- /package/dist/{types/components/time-picker.js → components/virtual-list/types.js} +0 -0
package/README.md
CHANGED
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
# PXD
|
|
2
2
|
|
|
3
|
-
A universal
|
|
3
|
+
A Vue 2.7 & 3.2 universal component library. Built-in light/dark theme. PC & mobile ready. Animation-free mode supported.
|
|
4
|
+
|
|
5
|
+
[简体中文](README-CN.md) | [Online Preview](https://pxd-ui.netlify.app/)
|
|
4
6
|
|
|
5
|
-
[Online Preview](https://pxd-ui.netlify.app/)
|
|
6
7
|
|
|
7
8
|
> [!WARNING]
|
|
8
9
|
> The project is under active development and is not ready for production.
|
|
9
10
|
|
|
10
11
|
## Features
|
|
11
12
|
|
|
12
|
-
- Vue
|
|
13
|
-
-
|
|
13
|
+
- Universal: One codebase for Vue 2.7+ and Vue 3.2+
|
|
14
|
+
- Responsive: Seamlessly works on both PC and mobile devices
|
|
15
|
+
- Built-in light & dark theme, no extra configuration needed
|
|
16
|
+
- Motion-safe: Supports fully disabling all animations
|
|
17
|
+
- Written in TypeScript with full type definitions
|
|
18
|
+
- Vue 3 Composition API with `<script setup>`
|
|
14
19
|
- Complete tree-shaking support
|
|
20
|
+
- Inspired by the [Geist Design System](https://vercel.com/geist/introduction)
|
|
15
21
|
|
|
16
22
|
## Contribution
|
|
17
23
|
|
|
@@ -43,6 +49,14 @@ pnpm build:docs
|
|
|
43
49
|
pnpm build
|
|
44
50
|
```
|
|
45
51
|
|
|
52
|
+
## Contribution Guidelines
|
|
53
|
+
|
|
54
|
+
### Component Naming Rules
|
|
55
|
+
|
|
56
|
+
- Components that can be used independently do not need to add -group/-item suffix, such as: `Checkbox`, `Radio`, `Toggle`, `ToggleButton`
|
|
57
|
+
- Components that are used to manage a group of sub-components need to add -group suffix, such as: `CheckboxGroup`, `RadioGroup`, `ToggleGroup`, `ToggleButtonGroup`
|
|
58
|
+
- Components that can only be used as a sub-component of another component need to add -item suffix, such as: `ListItem`, `GridItem`, `MessageItem`
|
|
59
|
+
|
|
46
60
|
## Reference
|
|
47
61
|
|
|
48
62
|
- [Geist Design System](https://vercel.com/geist/introduction)
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
defineOptions({
|
|
3
|
-
name: "PFragmentContainer"
|
|
3
|
+
name: "PFragmentContainer",
|
|
4
|
+
inheritAttrs: false
|
|
4
5
|
});
|
|
5
6
|
</script>
|
|
6
7
|
|
|
7
8
|
<template>
|
|
8
|
-
<div class="pxd-fragment-container">
|
|
9
|
+
<div class="pxd-fragment-container" v-bind="$attrs">
|
|
9
10
|
<slot />
|
|
10
11
|
</div>
|
|
11
12
|
</template>
|
|
@@ -1,42 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
date: string;
|
|
3
|
-
count: string;
|
|
4
|
-
}
|
|
5
|
-
interface Props {
|
|
6
|
-
data?: Record<string, any>[];
|
|
7
|
-
legend?: boolean;
|
|
8
|
-
startDate?: string | Date;
|
|
9
|
-
endDate?: string | Date;
|
|
10
|
-
colors?: Record<string, string>;
|
|
11
|
-
graphOnly?: boolean;
|
|
12
|
-
transpose?: boolean;
|
|
13
|
-
tooltip?: boolean;
|
|
14
|
-
fieldNames?: FieldNames;
|
|
15
|
-
itemRadius?: string | number;
|
|
16
|
-
}
|
|
17
|
-
interface TooltipInfo {
|
|
18
|
-
date: string;
|
|
19
|
-
count: number;
|
|
20
|
-
left: number;
|
|
21
|
-
top: number;
|
|
22
|
-
}
|
|
1
|
+
import type { ActiveGraphProps, ActiveGraphTooltipInfo } from './types';
|
|
23
2
|
declare var __VLS_7: {
|
|
24
|
-
data:
|
|
3
|
+
data: ActiveGraphTooltipInfo;
|
|
25
4
|
};
|
|
26
5
|
type __VLS_Slots = {} & {
|
|
27
6
|
tooltip?: (props: typeof __VLS_7) => any;
|
|
28
7
|
};
|
|
29
|
-
declare const __VLS_base: import("vue").DefineComponent<
|
|
30
|
-
|
|
31
|
-
}, string, import("vue").PublicProps, Readonly<
|
|
32
|
-
|
|
8
|
+
declare const __VLS_base: import("vue").DefineComponent<ActiveGraphProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
9
|
+
select: (args_0: string, args_1: MouseEvent) => any;
|
|
10
|
+
}, string, import("vue").PublicProps, Readonly<ActiveGraphProps> & Readonly<{
|
|
11
|
+
onSelect?: ((args_0: string, args_1: MouseEvent) => any) | undefined;
|
|
33
12
|
}>, {
|
|
34
13
|
data: Record<string, any>[];
|
|
35
14
|
legend: boolean;
|
|
36
|
-
startDate: string | Date;
|
|
37
|
-
endDate: string | Date;
|
|
38
|
-
colors: Record<string, string>;
|
|
39
|
-
graphOnly: boolean;
|
|
40
15
|
tooltip: boolean;
|
|
41
16
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
42
17
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -1,43 +1,61 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { computed, onBeforeUnmount, shallowRef } from "vue";
|
|
3
|
-
import { useConfigProvider } from "../../
|
|
3
|
+
import { useConfigProvider } from "../../contexts/config-provider";
|
|
4
4
|
import { useDelayChange } from "../../composables/use-delay-change";
|
|
5
5
|
import { getAllDatesBetween } from "../../utils/date";
|
|
6
6
|
import { getCssUnitValue } from "../../utils/format";
|
|
7
7
|
import { getColorByThreshold } from "../../utils/get";
|
|
8
8
|
defineOptions({
|
|
9
|
-
name: "PActiveGraph"
|
|
9
|
+
name: "PActiveGraph",
|
|
10
|
+
inheritAttrs: false
|
|
10
11
|
});
|
|
11
12
|
const props = defineProps({
|
|
12
13
|
data: { type: Array, required: false, default: () => [] },
|
|
13
14
|
legend: { type: Boolean, required: false, default: true },
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
while (date.getDay() !== 0) {
|
|
18
|
-
date.setDate(date.getDate() - 1);
|
|
19
|
-
}
|
|
20
|
-
return date;
|
|
21
|
-
} },
|
|
22
|
-
endDate: { type: [String, Date], required: false, default: () => /* @__PURE__ */ new Date() },
|
|
23
|
-
colors: { type: Object, required: false, default: () => ({
|
|
24
|
-
0: "",
|
|
25
|
-
5: "var(--color-green-300)",
|
|
26
|
-
10: "var(--color-green-500)",
|
|
27
|
-
15: "var(--color-green-700)",
|
|
28
|
-
20: "var(--color-green-900)"
|
|
29
|
-
}) },
|
|
30
|
-
graphOnly: { type: Boolean, required: false, default: false },
|
|
31
|
-
transpose: { type: Boolean, required: false },
|
|
15
|
+
colors: { type: Object, required: false },
|
|
16
|
+
startDate: { type: [String, Date], required: false },
|
|
17
|
+
endDate: { type: [String, Date], required: false },
|
|
32
18
|
tooltip: { type: Boolean, required: false, default: true },
|
|
19
|
+
graphOnly: { type: Boolean, required: false },
|
|
20
|
+
transpose: { type: Boolean, required: false },
|
|
33
21
|
fieldNames: { type: Object, required: false },
|
|
34
|
-
itemRadius: { type: [String, Number], required: false }
|
|
22
|
+
itemRadius: { type: [String, Number], required: false },
|
|
23
|
+
defaultSelect: { type: String, required: false }
|
|
35
24
|
});
|
|
36
|
-
const emits = defineEmits(["
|
|
25
|
+
const emits = defineEmits(["select"]);
|
|
37
26
|
const configProvider = useConfigProvider();
|
|
38
27
|
const CELL_GAP = 3;
|
|
39
28
|
const CELL_SIZE = 12;
|
|
40
|
-
const
|
|
29
|
+
const selectedDate = shallowRef(props.defaultSelect);
|
|
30
|
+
const getDefaultStartDate = () => {
|
|
31
|
+
const date = /* @__PURE__ */ new Date();
|
|
32
|
+
date.setFullYear(date.getFullYear() - 1);
|
|
33
|
+
while (date.getDay() !== 0) {
|
|
34
|
+
date.setDate(date.getDate() - 1);
|
|
35
|
+
}
|
|
36
|
+
return date;
|
|
37
|
+
};
|
|
38
|
+
const getDefaultEndDate = () => {
|
|
39
|
+
return /* @__PURE__ */ new Date();
|
|
40
|
+
};
|
|
41
|
+
const computedColors = computed(() => {
|
|
42
|
+
if (props.colors) {
|
|
43
|
+
return props.colors;
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
0: "",
|
|
47
|
+
5: "var(--color-green-300)",
|
|
48
|
+
10: "var(--color-green-500)",
|
|
49
|
+
15: "var(--color-green-700)",
|
|
50
|
+
20: "var(--color-green-900)"
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
const rangedDates = computed(
|
|
54
|
+
() => getAllDatesBetween(
|
|
55
|
+
props.startDate || getDefaultStartDate(),
|
|
56
|
+
props.endDate || getDefaultEndDate()
|
|
57
|
+
)
|
|
58
|
+
);
|
|
41
59
|
const dateCountMap = computed(() => {
|
|
42
60
|
const { date, count } = props.fieldNames || { date: "date", count: "count" };
|
|
43
61
|
return props.data.reduce(
|
|
@@ -123,7 +141,7 @@ function createTransposedTableData() {
|
|
|
123
141
|
hidden: false,
|
|
124
142
|
date: dateStr,
|
|
125
143
|
count,
|
|
126
|
-
color: getColorByThreshold(count,
|
|
144
|
+
color: getColorByThreshold(count, computedColors.value)
|
|
127
145
|
});
|
|
128
146
|
if (month !== currentMonth || year !== currentYear) {
|
|
129
147
|
currentMonth = month;
|
|
@@ -175,7 +193,7 @@ function createStandardTableData() {
|
|
|
175
193
|
hidden: false,
|
|
176
194
|
date: dateStr,
|
|
177
195
|
count,
|
|
178
|
-
color: getColorByThreshold(count,
|
|
196
|
+
color: getColorByThreshold(count, computedColors.value)
|
|
179
197
|
});
|
|
180
198
|
}
|
|
181
199
|
return result;
|
|
@@ -207,7 +225,8 @@ function onCellClick(event) {
|
|
|
207
225
|
if (!date) {
|
|
208
226
|
return;
|
|
209
227
|
}
|
|
210
|
-
|
|
228
|
+
selectedDate.value = selectedDate.value === date ? "" : date;
|
|
229
|
+
emits("select", date, event);
|
|
211
230
|
}
|
|
212
231
|
let tbodyRect;
|
|
213
232
|
const tbodyRef = shallowRef();
|
|
@@ -254,7 +273,11 @@ onBeforeUnmount(() => {
|
|
|
254
273
|
</script>
|
|
255
274
|
|
|
256
275
|
<template>
|
|
257
|
-
<div
|
|
276
|
+
<div
|
|
277
|
+
class="pxd-active-graph relative"
|
|
278
|
+
:class="[graphOnly ? 'py-0.75 pr-0.75' : 'pr-5']"
|
|
279
|
+
v-bind="$attrs"
|
|
280
|
+
>
|
|
258
281
|
<table
|
|
259
282
|
role="grid"
|
|
260
283
|
aria-readonly="true"
|
|
@@ -295,33 +318,37 @@ onBeforeUnmount(() => {
|
|
|
295
318
|
<td
|
|
296
319
|
v-for="col of row"
|
|
297
320
|
:key="col.date"
|
|
298
|
-
class="pxd-active-graph--item w-3 min-w-3 rounded-(--item-radius) bg-gray-alpha-
|
|
321
|
+
class="pxd-active-graph--item w-3 min-w-3 rounded-(--item-radius) border border-transparent bg-gray-alpha-100 hover:border-primary motion-safe:transition-all"
|
|
299
322
|
:data-date="col.date"
|
|
300
|
-
:class="{
|
|
323
|
+
:class="{
|
|
324
|
+
'pointer-events-none invisible': col.hidden,
|
|
325
|
+
'opacity-30': selectedDate && col.date !== selectedDate,
|
|
326
|
+
'border-primary!': selectedDate && col.date === selectedDate
|
|
327
|
+
}"
|
|
301
328
|
:style="`background: ${col.color}`"
|
|
302
329
|
/>
|
|
303
330
|
</tr>
|
|
304
331
|
|
|
305
|
-
<template v-if="
|
|
332
|
+
<template v-if="legend">
|
|
306
333
|
<tr class="pxd-active-graph--placeholder h-0.5 pointer-events-none" />
|
|
307
334
|
<tr class="pxd-active-graph--legend pointer-events-none">
|
|
308
335
|
<td class="h-3 relative text-foreground-secondary">
|
|
309
|
-
<span class="right-1 absolute top-1/2 -translate-y-1/2">
|
|
310
|
-
configProvider.locale.compare.less
|
|
311
|
-
|
|
336
|
+
<span class="right-1 absolute top-1/2 -translate-y-1/2">
|
|
337
|
+
{{ configProvider.locale.compare.less }}
|
|
338
|
+
</span>
|
|
312
339
|
</td>
|
|
313
340
|
|
|
314
341
|
<td
|
|
315
|
-
v-for="color in
|
|
342
|
+
v-for="color in computedColors"
|
|
316
343
|
:key="color"
|
|
317
|
-
class="w-3 h-3 rounded-(--item-radius) bg-gray-alpha-
|
|
344
|
+
class="w-3 h-3 rounded-(--item-radius) bg-gray-alpha-100 motion-safe:transition-colors"
|
|
318
345
|
:style="`background-color: ${color}`"
|
|
319
346
|
/>
|
|
320
347
|
|
|
321
348
|
<td class="h-3 w-3 relative text-foreground-secondary">
|
|
322
|
-
<span class="absolute top-1/2 left-px -translate-y-1/2">
|
|
323
|
-
configProvider.locale.compare.more
|
|
324
|
-
|
|
349
|
+
<span class="absolute top-1/2 left-px -translate-y-1/2">
|
|
350
|
+
{{ configProvider.locale.compare.more }}
|
|
351
|
+
</span>
|
|
325
352
|
</td>
|
|
326
353
|
</tr>
|
|
327
354
|
</template>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
interface FieldNames {
|
|
2
|
+
date: string
|
|
3
|
+
count: string
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export interface ActiveGraphProps {
|
|
7
|
+
data?: Record<string, any>[]
|
|
8
|
+
legend?: boolean
|
|
9
|
+
colors?: Record<string, string>
|
|
10
|
+
startDate?: string | Date
|
|
11
|
+
endDate?: string | Date
|
|
12
|
+
tooltip?: boolean
|
|
13
|
+
graphOnly?: boolean
|
|
14
|
+
transpose?: boolean
|
|
15
|
+
fieldNames?: FieldNames
|
|
16
|
+
itemRadius?: string | number
|
|
17
|
+
defaultSelect?: string
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface ActiveGraphEmits {
|
|
21
|
+
select: [string, MouseEvent]
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface ActiveGraphCellData {
|
|
25
|
+
hidden?: boolean
|
|
26
|
+
count: number
|
|
27
|
+
color?: string
|
|
28
|
+
date?: string
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface ActiveGraphRowData extends Array<ActiveGraphCellData> {
|
|
32
|
+
isMonthFirstRow?: boolean
|
|
33
|
+
monthName?: string
|
|
34
|
+
headerText: string
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface ActiveGraphTooltipInfo {
|
|
38
|
+
date: string
|
|
39
|
+
count: number
|
|
40
|
+
left: number
|
|
41
|
+
top: number
|
|
42
|
+
}
|
|
@@ -1,25 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
alt?: string;
|
|
4
|
-
size?: number | string;
|
|
5
|
-
loading?: boolean;
|
|
6
|
-
placeholder?: boolean;
|
|
7
|
-
}
|
|
8
|
-
type LoadingStatus = 'idle' | 'loading' | 'loaded' | 'error';
|
|
9
|
-
declare function getLoadingStatus(): LoadingStatus;
|
|
1
|
+
import type { AvatarStatus, AvatarProps } from './types';
|
|
2
|
+
declare function getLoadingStatus(): AvatarStatus;
|
|
10
3
|
declare var __VLS_1: {}, __VLS_3: {};
|
|
11
4
|
type __VLS_Slots = {} & {
|
|
12
5
|
default?: (props: typeof __VLS_1) => any;
|
|
13
6
|
} & {
|
|
14
7
|
icon?: (props: typeof __VLS_3) => any;
|
|
15
8
|
};
|
|
16
|
-
declare const __VLS_base: import("vue").DefineComponent<
|
|
9
|
+
declare const __VLS_base: import("vue").DefineComponent<AvatarProps, {
|
|
17
10
|
getLoadingStatus: typeof getLoadingStatus;
|
|
18
11
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
19
12
|
load: (args_0: Event) => any;
|
|
20
13
|
error: (args_0: Event) => any;
|
|
21
14
|
loadstart: (args_0: Event) => any;
|
|
22
|
-
}, string, import("vue").PublicProps, Readonly<
|
|
15
|
+
}, string, import("vue").PublicProps, Readonly<AvatarProps> & Readonly<{
|
|
23
16
|
onLoad?: ((args_0: Event) => any) | undefined;
|
|
24
17
|
onError?: ((args_0: Event) => any) | undefined;
|
|
25
18
|
onLoadstart?: ((args_0: Event) => any) | undefined;
|
|
@@ -3,7 +3,8 @@ import { computed, shallowRef } from "vue";
|
|
|
3
3
|
import { useAvatarGroupContext } from "../../contexts/avatar";
|
|
4
4
|
import { getCssUnitValue } from "../../utils/format";
|
|
5
5
|
defineOptions({
|
|
6
|
-
name: "PAvatar"
|
|
6
|
+
name: "PAvatar",
|
|
7
|
+
inheritAttrs: false
|
|
7
8
|
});
|
|
8
9
|
const props = defineProps({
|
|
9
10
|
src: { type: String, required: false },
|
|
@@ -15,8 +16,10 @@ const props = defineProps({
|
|
|
15
16
|
const emits = defineEmits(["load", "error", "loadstart"]);
|
|
16
17
|
const loadingStatus = shallowRef("idle");
|
|
17
18
|
const avatarGroupContext = useAvatarGroupContext();
|
|
18
|
-
const computedSize = computed(
|
|
19
|
-
|
|
19
|
+
const computedSize = computed(
|
|
20
|
+
() => getCssUnitValue(props.size || avatarGroupContext?.props.size, "32px")
|
|
21
|
+
);
|
|
22
|
+
const isHideAvatar = computed(
|
|
20
23
|
() => !props.src || props.placeholder || loadingStatus.value === "error"
|
|
21
24
|
);
|
|
22
25
|
function onLoadError(event) {
|
|
@@ -41,12 +44,20 @@ defineExpose({
|
|
|
41
44
|
|
|
42
45
|
<template>
|
|
43
46
|
<div
|
|
44
|
-
class="pxd-avatar relative inline-flex size-(--avatar-size) items-center justify-center rounded-full border border-background-100 select-none before:default-animation-timing-function! motion-safe:before:
|
|
47
|
+
class="pxd-avatar relative inline-flex size-(--avatar-size) items-center justify-center rounded-full border border-background-100 bg-background-100 text-13px select-none before:default-animation-timing-function! motion-safe:before:[animation-duration:8s]"
|
|
45
48
|
:style="{ '--avatar-size': computedSize }"
|
|
49
|
+
:data-placeholder="placeholder"
|
|
50
|
+
v-bind="$attrs"
|
|
46
51
|
>
|
|
47
52
|
<slot>
|
|
53
|
+
<span
|
|
54
|
+
v-if="isHideAvatar"
|
|
55
|
+
class="font-medium px-1 relative flex size-full items-center justify-center overflow-hidden rounded-inherit"
|
|
56
|
+
>
|
|
57
|
+
{{ alt }}
|
|
58
|
+
</span>
|
|
48
59
|
<img
|
|
49
|
-
v-
|
|
60
|
+
v-else
|
|
50
61
|
:src="src"
|
|
51
62
|
:alt="alt"
|
|
52
63
|
loading="lazy"
|
|
@@ -54,7 +65,7 @@ defineExpose({
|
|
|
54
65
|
aria-hidden="true"
|
|
55
66
|
fetchpriority="low"
|
|
56
67
|
crossorigin="anonymous"
|
|
57
|
-
class="relative block size-full overflow-hidden rounded-inherit"
|
|
68
|
+
class="relative block size-full overflow-hidden rounded-inherit bg-gray-100"
|
|
58
69
|
@load="onLoadSuccess"
|
|
59
70
|
@loadstart="onLoadStart"
|
|
60
71
|
@abort="onLoadError"
|
|
@@ -78,17 +89,15 @@ defineExpose({
|
|
|
78
89
|
|
|
79
90
|
<style lang="postcss">
|
|
80
91
|
.pxd-avatar {
|
|
81
|
-
&::
|
|
82
|
-
|
|
92
|
+
&::after,
|
|
93
|
+
&[data-placeholder='true']::before {
|
|
83
94
|
content: '';
|
|
84
|
-
width: 100%;
|
|
85
|
-
height: 100%;
|
|
86
95
|
position: absolute;
|
|
87
96
|
inset: 0;
|
|
88
97
|
border-radius: inherit;
|
|
89
98
|
}
|
|
90
99
|
|
|
91
|
-
|
|
100
|
+
&[data-placeholder='true']::before {
|
|
92
101
|
background-image: linear-gradient(
|
|
93
102
|
270deg,
|
|
94
103
|
var(--color-gray-alpha-100),
|
|
@@ -97,6 +106,8 @@ defineExpose({
|
|
|
97
106
|
var(--color-gray-alpha-100)
|
|
98
107
|
);
|
|
99
108
|
background-size: 400% 100%;
|
|
109
|
+
animation-name: placeholder;
|
|
110
|
+
animation-iteration-count: infinite;
|
|
100
111
|
}
|
|
101
112
|
|
|
102
113
|
&::after {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type AvatarStatus = 'idle' | 'loading' | 'loaded' | 'error'
|
|
2
|
+
|
|
3
|
+
export interface AvatarProps {
|
|
4
|
+
src?: string
|
|
5
|
+
alt?: string
|
|
6
|
+
size?: number | string
|
|
7
|
+
loading?: boolean
|
|
8
|
+
placeholder?: boolean
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface AvatarEmits {
|
|
12
|
+
load: [Event]
|
|
13
|
+
error: [Event]
|
|
14
|
+
loadstart: [Event]
|
|
15
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { AvatarGroupProps } from '
|
|
1
|
+
import type { AvatarGroupProps } from './types';
|
|
2
2
|
declare const __VLS_export: import("vue").DefineComponent<AvatarGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<AvatarGroupProps> & Readonly<{}>, {
|
|
3
3
|
size: number | string;
|
|
4
4
|
max: number;
|
|
5
|
-
options: import("
|
|
5
|
+
options: import("./types").AvatarOptions[];
|
|
6
6
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
7
7
|
declare const _default: typeof __VLS_export;
|
|
8
8
|
export default _default;
|
|
@@ -3,7 +3,8 @@ import { computed } from "vue";
|
|
|
3
3
|
import { provideAvatarGroupContext } from "../../contexts/avatar";
|
|
4
4
|
import PAvatar from "../avatar/index.vue";
|
|
5
5
|
defineOptions({
|
|
6
|
-
name: "PAvatarGroup"
|
|
6
|
+
name: "PAvatarGroup",
|
|
7
|
+
inheritAttrs: false
|
|
7
8
|
});
|
|
8
9
|
const props = defineProps({
|
|
9
10
|
max: { type: Number, required: false, default: 5 },
|
|
@@ -15,11 +16,11 @@ const slicedOptions = computed(() => {
|
|
|
15
16
|
const maxCount = Math.max(Math.min(max, options.length), 1);
|
|
16
17
|
return options.slice(0, maxCount);
|
|
17
18
|
});
|
|
18
|
-
provideAvatarGroupContext(props);
|
|
19
|
+
provideAvatarGroupContext({ props });
|
|
19
20
|
</script>
|
|
20
21
|
|
|
21
22
|
<template>
|
|
22
|
-
<div class="pxd-avatar-group flex flex-wrap items-center">
|
|
23
|
+
<div class="pxd-avatar-group flex flex-wrap items-center" v-bind="$attrs">
|
|
23
24
|
<PAvatar
|
|
24
25
|
v-for="(option, index) in slicedOptions"
|
|
25
26
|
:key="index"
|
|
@@ -27,7 +28,7 @@ provideAvatarGroupContext(props);
|
|
|
27
28
|
:src="option.src"
|
|
28
29
|
:alt="option.alt"
|
|
29
30
|
:loading="option.loading"
|
|
30
|
-
class="
|
|
31
|
+
class="nth-[n+2]:-ml-2.5 hover:z-1"
|
|
31
32
|
/>
|
|
32
33
|
|
|
33
34
|
<PAvatar
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
right?: string | number;
|
|
3
|
-
bottom?: string | number;
|
|
4
|
-
zIndex?: string | number;
|
|
5
|
-
visibleThreshold?: number;
|
|
6
|
-
}
|
|
1
|
+
import type { BacktopProps } from './types';
|
|
7
2
|
declare var __VLS_7: {};
|
|
8
3
|
type __VLS_Slots = {} & {
|
|
9
4
|
default?: (props: typeof __VLS_7) => any;
|
|
10
5
|
};
|
|
11
|
-
declare const __VLS_base: import("vue").DefineComponent<
|
|
6
|
+
declare const __VLS_base: import("vue").DefineComponent<BacktopProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<BacktopProps> & Readonly<{}>, {
|
|
12
7
|
visibleThreshold: number;
|
|
13
8
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
14
9
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -1,18 +1,11 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { BadgeVariant } from './cn';
|
|
3
|
-
interface Props {
|
|
4
|
-
as?: ComponentAs;
|
|
5
|
-
href?: string;
|
|
6
|
-
size?: ComponentSize;
|
|
7
|
-
variant?: BadgeVariant;
|
|
8
|
-
}
|
|
1
|
+
import type { BadgeProps } from './types';
|
|
9
2
|
declare var __VLS_8: {};
|
|
10
3
|
type __VLS_Slots = {} & {
|
|
11
4
|
default?: (props: typeof __VLS_8) => any;
|
|
12
5
|
};
|
|
13
|
-
declare const __VLS_base: import("vue").DefineComponent<
|
|
14
|
-
|
|
15
|
-
|
|
6
|
+
declare const __VLS_base: import("vue").DefineComponent<BadgeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<BadgeProps> & Readonly<{}>, {
|
|
7
|
+
as: import("../../types/shared").ComponentAs;
|
|
8
|
+
variant: import("./types").BadgeVariant;
|
|
16
9
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
17
10
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
18
11
|
declare const _default: typeof __VLS_export;
|
|
@@ -1,17 +1,61 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { computed } from "vue";
|
|
3
|
-
import { useConfigProvider } from "../../
|
|
4
|
-
import {
|
|
3
|
+
import { useConfigProvider } from "../../contexts/config-provider";
|
|
4
|
+
import { tv } from "tailwind-variants";
|
|
5
5
|
defineOptions({
|
|
6
6
|
name: "PBadge",
|
|
7
7
|
inheritAttrs: false
|
|
8
8
|
});
|
|
9
9
|
const props = defineProps({
|
|
10
|
-
as: { type:
|
|
10
|
+
as: { type: [String, Object], required: false, default: "span" },
|
|
11
11
|
href: { type: String, required: false },
|
|
12
12
|
size: { type: String, required: false },
|
|
13
13
|
variant: { type: String, required: false, default: "gray" }
|
|
14
14
|
});
|
|
15
|
+
const badgeVariant = tv({
|
|
16
|
+
base: "pxd-badge font-medium gap-1 inline-flex items-center justify-center rounded-full font-sans text-nowrap whitespace-nowrap no-underline! motion-safe:transition-all",
|
|
17
|
+
variants: {
|
|
18
|
+
variant: {
|
|
19
|
+
pill: "bg-background-100",
|
|
20
|
+
primary: "bg-primary text-gray-100",
|
|
21
|
+
gray: "text-white bg-gray-600",
|
|
22
|
+
blue: "bg-blue-700 text-gray-100 dark:text-gray-1000",
|
|
23
|
+
purple: "bg-purple-700 text-gray-100 dark:text-gray-1000",
|
|
24
|
+
amber: "bg-amber-700 text-gray-1000 dark:text-gray-100",
|
|
25
|
+
red: "bg-red-700 text-gray-100 dark:text-gray-1000",
|
|
26
|
+
pink: "bg-pink-700 text-gray-100 dark:text-gray-1000",
|
|
27
|
+
green: "bg-green-700 text-gray-100 dark:text-gray-1000",
|
|
28
|
+
teal: "bg-teal-700 text-gray-100 dark:text-gray-1000",
|
|
29
|
+
"gray-subtle": "bg-gray-200 text-gray-1000",
|
|
30
|
+
"blue-subtle": "bg-blue-200 text-blue-900",
|
|
31
|
+
"purple-subtle": "bg-purple-200 text-purple-900",
|
|
32
|
+
"amber-subtle": "bg-amber-200 text-amber-900",
|
|
33
|
+
"red-subtle": "bg-red-200 text-red-900",
|
|
34
|
+
"pink-subtle": "bg-pink-200 text-pink-900",
|
|
35
|
+
"green-subtle": "bg-green-200 text-green-900",
|
|
36
|
+
"teal-subtle": "bg-teal-200 text-teal-900",
|
|
37
|
+
inverted: "bg-gray-1000 text-gray-100",
|
|
38
|
+
vue: "text-gray-100 dark:text-gray-1000",
|
|
39
|
+
trial: "text-gray-100 dark:text-gray-1000",
|
|
40
|
+
turborepo: "text-gray-100 dark:text-gray-1000"
|
|
41
|
+
},
|
|
42
|
+
size: {
|
|
43
|
+
sm: "px-2 h-5 text-xs",
|
|
44
|
+
md: "px-2.5 h-6 text-xs",
|
|
45
|
+
lg: "px-3 h-7.5 text-sm"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
compoundVariants: [
|
|
49
|
+
{ variant: "pill", class: "pill" },
|
|
50
|
+
{ variant: "vue", class: "vue" },
|
|
51
|
+
{ variant: "trial", class: "trial" },
|
|
52
|
+
{ variant: "turborepo", class: "turborepo" }
|
|
53
|
+
],
|
|
54
|
+
defaultVariants: {
|
|
55
|
+
variant: "gray",
|
|
56
|
+
size: "md"
|
|
57
|
+
}
|
|
58
|
+
});
|
|
15
59
|
const configProvider = useConfigProvider();
|
|
16
60
|
const computedClasses = computed(() => {
|
|
17
61
|
const { variant, size = configProvider.size } = props;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ComponentAs, ComponentSize } from '../../types/shared'
|
|
2
|
+
|
|
3
|
+
export type BadgeVariant =
|
|
4
|
+
| 'pill'
|
|
5
|
+
| 'primary'
|
|
6
|
+
| 'gray'
|
|
7
|
+
| 'blue'
|
|
8
|
+
| 'purple'
|
|
9
|
+
| 'amber'
|
|
10
|
+
| 'red'
|
|
11
|
+
| 'pink'
|
|
12
|
+
| 'green'
|
|
13
|
+
| 'teal'
|
|
14
|
+
| 'gray-subtle'
|
|
15
|
+
| 'blue-subtle'
|
|
16
|
+
| 'purple-subtle'
|
|
17
|
+
| 'amber-subtle'
|
|
18
|
+
| 'red-subtle'
|
|
19
|
+
| 'pink-subtle'
|
|
20
|
+
| 'green-subtle'
|
|
21
|
+
| 'teal-subtle'
|
|
22
|
+
| 'inverted'
|
|
23
|
+
| 'vue'
|
|
24
|
+
| 'trial'
|
|
25
|
+
| 'turborepo'
|
|
26
|
+
|
|
27
|
+
export interface BadgeProps {
|
|
28
|
+
as?: ComponentAs
|
|
29
|
+
href?: string
|
|
30
|
+
size?: ComponentSize
|
|
31
|
+
variant?: BadgeVariant
|
|
32
|
+
}
|