pxd 0.0.55 → 0.0.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/README.md +18 -4
  2. package/dist/components/_internal/fragment-container.vue +3 -2
  3. package/dist/components/active-graph/index.d.vue.ts +2 -3
  4. package/dist/components/active-graph/index.vue +23 -16
  5. package/dist/components/active-graph/types.d.ts +4 -3
  6. package/dist/components/avatar/index.vue +19 -10
  7. package/dist/components/avatar/types.d.ts +0 -12
  8. package/dist/components/avatar-group/index.d.vue.ts +2 -2
  9. package/dist/components/avatar-group/index.vue +4 -3
  10. package/dist/components/avatar-group/types.d.ts +11 -0
  11. package/dist/components/badge/index.d.vue.ts +1 -1
  12. package/dist/components/badge/index.vue +47 -3
  13. package/dist/components/badge/types.d.ts +24 -1
  14. package/dist/components/book/index.vue +3 -2
  15. package/dist/components/browser/index.vue +6 -2
  16. package/dist/components/button/index.d.vue.ts +1 -1
  17. package/dist/components/button/index.vue +60 -12
  18. package/dist/components/carousel/index.d.vue.ts +24 -2
  19. package/dist/components/carousel/index.vue +341 -28
  20. package/dist/components/carousel/types.d.ts +2 -2
  21. package/dist/components/carousel-item/index.d.vue.ts +13 -0
  22. package/dist/components/carousel-item/index.vue +49 -0
  23. package/dist/components/checkbox/index.d.vue.ts +1 -5
  24. package/dist/components/checkbox/index.vue +66 -31
  25. package/dist/components/checkbox/types.d.ts +2 -14
  26. package/dist/components/checkbox-group/index.d.vue.ts +2 -7
  27. package/dist/components/checkbox-group/index.vue +11 -29
  28. package/dist/components/checkbox-group/types.d.ts +12 -0
  29. package/dist/components/chip/index.d.vue.ts +1 -1
  30. package/dist/components/chip/index.vue +31 -2
  31. package/dist/components/choicebox/index.d.vue.ts +11 -5
  32. package/dist/components/choicebox/index.vue +36 -54
  33. package/dist/components/choicebox/types.d.ts +11 -18
  34. package/dist/components/choicebox-item/index.d.vue.ts +16 -0
  35. package/dist/components/choicebox-item/index.vue +67 -0
  36. package/dist/components/choicebox-item/types.d.ts +12 -0
  37. package/dist/components/collapse/index.d.vue.ts +5 -4
  38. package/dist/components/collapse/index.vue +47 -30
  39. package/dist/components/collapse/types.d.ts +2 -5
  40. package/dist/components/collapse-group/index.d.vue.ts +2 -4
  41. package/dist/components/collapse-group/index.vue +8 -20
  42. package/dist/components/collapse-group/types.d.ts +6 -0
  43. package/dist/components/command-menu/index.vue +6 -7
  44. package/dist/components/command-menu/types.d.ts +0 -5
  45. package/dist/components/command-menu-group/index.d.vue.ts +1 -1
  46. package/dist/components/command-menu-group/index.vue +3 -2
  47. package/dist/components/command-menu-group/types.d.ts +5 -0
  48. package/dist/components/config-provider/index.d.vue.ts +3 -3
  49. package/dist/components/config-provider/index.vue +6 -4
  50. package/dist/components/countdown/index.vue +3 -2
  51. package/dist/components/countdown/types.d.ts +2 -2
  52. package/dist/components/dash-line/index.vue +3 -1
  53. package/dist/components/description/index.d.vue.ts +1 -1
  54. package/dist/components/description/index.vue +8 -7
  55. package/dist/components/description/types.d.ts +1 -1
  56. package/dist/components/drawer/index.d.vue.ts +3 -2
  57. package/dist/components/drawer/index.vue +20 -15
  58. package/dist/components/drawer/types.d.ts +3 -3
  59. package/dist/components/ellipsis-text/index.d.vue.ts +14 -0
  60. package/dist/components/ellipsis-text/index.vue +242 -0
  61. package/dist/components/ellipsis-text/types.d.ts +14 -0
  62. package/dist/components/empty-state/index.vue +6 -2
  63. package/dist/components/error/index.d.vue.ts +1 -3
  64. package/dist/components/error/index.vue +21 -6
  65. package/dist/components/error/types.d.ts +7 -1
  66. package/dist/components/fader/index.vue +30 -11
  67. package/dist/components/fader/types.d.ts +2 -2
  68. package/dist/components/gauge/index.vue +7 -2
  69. package/dist/components/grid/index.vue +9 -4
  70. package/dist/components/grid/types.d.ts +0 -5
  71. package/dist/components/grid-item/index.d.vue.ts +1 -1
  72. package/dist/components/grid-item/index.vue +16 -8
  73. package/dist/components/grid-item/types.d.ts +6 -0
  74. package/dist/components/hold-button/index.d.vue.ts +2 -2
  75. package/dist/components/hold-button/index.vue +1 -1
  76. package/dist/components/index.d.ts +7 -3
  77. package/dist/components/index.js +7 -3
  78. package/dist/components/input/index.d.vue.ts +8 -8
  79. package/dist/components/input/index.vue +54 -21
  80. package/dist/components/input/types.d.ts +7 -10
  81. package/dist/components/intersection-observer/index.d.vue.ts +0 -1
  82. package/dist/components/intersection-observer/index.vue +12 -3
  83. package/dist/components/kbd/index.vue +1 -1
  84. package/dist/components/link-button/index.d.vue.ts +1 -1
  85. package/dist/components/link-button/index.vue +4 -6
  86. package/dist/components/link-button/types.d.ts +1 -1
  87. package/dist/components/list/index.d.vue.ts +8 -5
  88. package/dist/components/list/index.vue +50 -54
  89. package/dist/components/list/types.d.ts +3 -20
  90. package/dist/components/list-item/index.d.vue.ts +3 -2
  91. package/dist/components/list-item/index.vue +44 -18
  92. package/dist/components/list-item/types.d.ts +15 -0
  93. package/dist/components/loading-bar/index.vue +33 -2
  94. package/dist/components/loading-bar/types.d.ts +1 -1
  95. package/dist/components/loading-dots/index.vue +3 -2
  96. package/dist/components/menu/index.d.vue.ts +5 -2
  97. package/dist/components/menu/index.vue +4 -1
  98. package/dist/components/menu/types.d.ts +5 -0
  99. package/dist/components/message/index.d.vue.ts +11 -8
  100. package/dist/components/message/index.vue +4 -12
  101. package/dist/components/message/types.d.ts +1 -12
  102. package/dist/components/message-item/index.d.vue.ts +1 -3
  103. package/dist/components/message-item/index.vue +13 -7
  104. package/dist/components/message-item/types.d.ts +11 -0
  105. package/dist/components/modal/index.d.vue.ts +3 -2
  106. package/dist/components/modal/index.vue +17 -13
  107. package/dist/components/modal/types.d.ts +3 -3
  108. package/dist/components/noise-background/index.vue +4 -3
  109. package/dist/components/note/index.d.vue.ts +1 -2
  110. package/dist/components/note/index.vue +81 -29
  111. package/dist/components/note/types.d.ts +10 -2
  112. package/dist/components/number-input/index.d.vue.ts +5 -4
  113. package/dist/components/number-input/index.vue +36 -6
  114. package/dist/components/number-input/types.d.ts +2 -0
  115. package/dist/components/overlay/index.vue +1 -1
  116. package/dist/components/overlay/types.d.ts +1 -1
  117. package/dist/components/pagination/index.vue +5 -3
  118. package/dist/components/pin-input/index.d.vue.ts +6 -1
  119. package/dist/components/pin-input/index.vue +60 -23
  120. package/dist/components/pin-input/types.d.ts +0 -4
  121. package/dist/components/placeholder/index.vue +14 -11
  122. package/dist/components/popover/index.vue +116 -78
  123. package/dist/components/popover/types.d.ts +1 -0
  124. package/dist/components/progress/index.d.vue.ts +1 -1
  125. package/dist/components/progress/index.vue +15 -2
  126. package/dist/components/project-banner/index.d.vue.ts +18 -0
  127. package/dist/components/project-banner/index.vue +59 -0
  128. package/dist/components/project-banner/types.d.ts +8 -0
  129. package/dist/components/radio/index.vue +62 -20
  130. package/dist/components/radio/types.d.ts +1 -14
  131. package/dist/components/radio-group/index.d.vue.ts +2 -4
  132. package/dist/components/radio-group/index.vue +11 -16
  133. package/dist/components/radio-group/types.d.ts +12 -0
  134. package/dist/components/resizable/types.d.ts +5 -10
  135. package/dist/components/resizable-handle/index.vue +1 -1
  136. package/dist/components/resizable-panel/index.d.vue.ts +1 -1
  137. package/dist/components/resizable-panel/index.vue +7 -2
  138. package/dist/components/resizable-panel/types.d.ts +4 -0
  139. package/dist/components/scrollable/index.d.vue.ts +29 -0
  140. package/dist/components/scrollable/index.vue +98 -83
  141. package/dist/components/scrollable/types.d.ts +19 -6
  142. package/dist/components/skeleton/index.vue +24 -1
  143. package/dist/components/slider/index.d.vue.ts +6 -6
  144. package/dist/components/slider/index.vue +86 -44
  145. package/dist/components/slider/types.d.ts +1 -1
  146. package/dist/components/snippet/index.vue +28 -2
  147. package/dist/components/spinner/index.vue +4 -2
  148. package/dist/components/stack/index.d.vue.ts +2 -2
  149. package/dist/components/stack/index.vue +35 -3
  150. package/dist/components/stack/types.d.ts +1 -1
  151. package/dist/components/status-dot/index.vue +5 -1
  152. package/dist/components/switch/index.d.vue.ts +10 -1
  153. package/dist/components/switch/index.vue +35 -44
  154. package/dist/components/switch/types.d.ts +4 -12
  155. package/dist/components/switch-item/index.d.vue.ts +14 -0
  156. package/dist/components/switch-item/index.vue +79 -0
  157. package/dist/components/switch-item/types.d.ts +9 -0
  158. package/dist/components/teleport/index.d.vue.ts +1 -1
  159. package/dist/components/teleport/index.vue +1 -1
  160. package/dist/components/teleport/types.d.ts +1 -1
  161. package/dist/components/text/index.d.vue.ts +1 -2
  162. package/dist/components/text/index.vue +36 -22
  163. package/dist/components/text/types.d.ts +1 -1
  164. package/dist/components/textarea/index.d.vue.ts +4 -4
  165. package/dist/components/textarea/index.vue +33 -4
  166. package/dist/components/textarea/types.d.ts +0 -1
  167. package/dist/components/time-picker/index.d.vue.ts +1 -2
  168. package/dist/components/time-picker/index.vue +43 -9
  169. package/dist/components/time-picker/types.d.ts +1 -2
  170. package/dist/components/toggle/index.vue +11 -10
  171. package/dist/components/toggle-button/index.d.vue.ts +22 -0
  172. package/dist/components/toggle-button/index.vue +110 -0
  173. package/dist/components/toggle-button/types.d.ts +16 -0
  174. package/dist/components/{choicebox-group → toggle-button-group}/index.d.vue.ts +5 -5
  175. package/dist/components/toggle-button-group/index.vue +68 -0
  176. package/dist/components/toggle-button-group/types.d.ts +22 -0
  177. package/dist/components/tooltip/index.d.vue.ts +2 -0
  178. package/dist/components/tooltip/index.vue +9 -3
  179. package/dist/components/tooltip/types.d.ts +3 -2
  180. package/dist/components/virtual-list/index.d.vue.ts +25 -4
  181. package/dist/components/virtual-list/index.vue +66 -10
  182. package/dist/components/virtual-list/types.d.ts +9 -4
  183. package/dist/composables/index.d.ts +2 -2
  184. package/dist/composables/index.js +2 -2
  185. package/dist/composables/use-browser-observer.d.ts +5 -5
  186. package/dist/composables/use-browser-observer.js +23 -20
  187. package/dist/composables/use-copy-click.js +4 -0
  188. package/dist/composables/use-countdown.d.ts +2 -2
  189. package/dist/composables/use-delay-destroy.d.ts +1 -1
  190. package/dist/composables/use-focus-trap.d.ts +7 -3
  191. package/dist/composables/use-focus-trap.js +19 -7
  192. package/dist/composables/use-forward-ref-expose.d.ts +2 -0
  193. package/dist/composables/use-forward-ref-expose.js +41 -0
  194. package/dist/composables/use-message.d.ts +4 -7
  195. package/dist/composables/use-model-value.d.ts +9 -8
  196. package/dist/composables/use-popover-responsive.d.ts +2 -2
  197. package/dist/composables/use-popover-responsive.js +3 -3
  198. package/dist/composables/use-repeat-action.d.ts +1 -1
  199. package/dist/composables/use-repeat-action.js +2 -2
  200. package/dist/composables/use-virtual-list.d.ts +21 -12
  201. package/dist/composables/use-virtual-list.js +90 -158
  202. package/dist/composables/use-window-size.d.ts +4 -0
  203. package/dist/composables/use-window-size.js +27 -0
  204. package/dist/contexts/avatar.d.ts +5 -2
  205. package/dist/contexts/carousel.d.ts +4 -4
  206. package/dist/contexts/carousel.js +1 -1
  207. package/dist/contexts/checkbox.d.ts +7 -2
  208. package/dist/contexts/choicebox.d.ts +8 -4
  209. package/dist/contexts/choicebox.js +1 -4
  210. package/dist/contexts/collapse.d.ts +5 -6
  211. package/dist/contexts/collapse.js +1 -1
  212. package/dist/contexts/config-provider.d.ts +5 -0
  213. package/dist/{composables/use-config-provider-context.js → contexts/config-provider.js} +8 -5
  214. package/dist/contexts/list.d.ts +1 -1
  215. package/dist/contexts/radio.d.ts +8 -2
  216. package/dist/contexts/resizable.d.ts +1 -1
  217. package/dist/contexts/switch.d.ts +8 -4
  218. package/dist/contexts/switch.js +1 -2
  219. package/dist/contexts/toggle-button.d.ts +7 -0
  220. package/dist/contexts/toggle-button.js +2 -0
  221. package/dist/styles/source.css +14 -2
  222. package/dist/styles/styles.css +2 -2
  223. package/dist/styles/tw.css +14 -2
  224. package/dist/types/shared/props.d.ts +1 -3
  225. package/dist/types/shared/utils.d.ts +0 -3
  226. package/dist/utils/context.d.ts +1 -0
  227. package/dist/utils/get.d.ts +1 -0
  228. package/dist/utils/get.js +14 -0
  229. package/dist/utils/ref.d.ts +1 -1
  230. package/dist/utils/responsive.js +2 -1
  231. package/dist/utils/throttle.js +9 -7
  232. package/dist/utils/uid.d.ts +1 -1
  233. package/dist/utils/uid.js +2 -2
  234. package/package.json +23 -21
  235. package/volar.d.ts +7 -3
  236. package/dist/components/badge/cn.d.ts +0 -90
  237. package/dist/components/badge/cn.js +0 -44
  238. package/dist/components/button/cn.d.ts +0 -121
  239. package/dist/components/button/cn.js +0 -55
  240. package/dist/components/carousel-group/index.d.vue.ts +0 -35
  241. package/dist/components/carousel-group/index.vue +0 -368
  242. package/dist/components/checkbox/cn.d.ts +0 -67
  243. package/dist/components/checkbox/cn.js +0 -31
  244. package/dist/components/chip/cn.d.ts +0 -49
  245. package/dist/components/chip/cn.js +0 -26
  246. package/dist/components/choicebox-group/index.vue +0 -65
  247. package/dist/components/error/cn.d.ts +0 -22
  248. package/dist/components/error/cn.js +0 -15
  249. package/dist/components/input/cn.d.ts +0 -73
  250. package/dist/components/input/cn.js +0 -36
  251. package/dist/components/list-item/cn.d.ts +0 -22
  252. package/dist/components/list-item/cn.js +0 -15
  253. package/dist/components/loading-bar/cn.d.ts +0 -70
  254. package/dist/components/loading-bar/cn.js +0 -32
  255. package/dist/components/note/cn.d.ts +0 -121
  256. package/dist/components/note/cn.js +0 -66
  257. package/dist/components/pin-input/cn.d.ts +0 -46
  258. package/dist/components/pin-input/cn.js +0 -25
  259. package/dist/components/progress/cn.d.ts +0 -19
  260. package/dist/components/progress/cn.js +0 -14
  261. package/dist/components/radio/cn.d.ts +0 -46
  262. package/dist/components/radio/cn.js +0 -42
  263. package/dist/components/skeleton/cn.d.ts +0 -43
  264. package/dist/components/skeleton/cn.js +0 -24
  265. package/dist/components/snippet/cn.d.ts +0 -52
  266. package/dist/components/snippet/cn.js +0 -27
  267. package/dist/components/stack/cn.d.ts +0 -70
  268. package/dist/components/stack/cn.js +0 -33
  269. package/dist/components/switch/cn.d.ts +0 -16
  270. package/dist/components/switch/cn.js +0 -13
  271. package/dist/components/switch-group/index.d.vue.ts +0 -23
  272. package/dist/components/switch-group/index.vue +0 -54
  273. package/dist/components/text/cn.d.ts +0 -67
  274. package/dist/components/text/cn.js +0 -34
  275. package/dist/components/textarea/cn.d.ts +0 -58
  276. package/dist/components/textarea/cn.js +0 -30
  277. package/dist/composables/use-config-provider-context.d.ts +0 -3
  278. package/dist/composables/use-unique-id-context.d.ts +0 -2
  279. package/dist/composables/use-unique-id-context.js +0 -11
@@ -8,7 +8,7 @@ export interface SliderProps {
8
8
  disabled?: boolean
9
9
  size?: ComponentSize
10
10
  variant?: ComponentVariant | 'secondary'
11
- modelValue?: number | [number, number] | null
11
+ modelValue?: number | number[] | null
12
12
  }
13
13
 
14
14
  export interface SliderEmits {
@@ -1,11 +1,11 @@
1
1
  <script setup>
2
2
  import CheckIcon from "@gdsicon/vue/check";
3
3
  import CopyIcon from "@gdsicon/vue/copy";
4
+ import { tv } from "tailwind-variants";
4
5
  import { computed } from "vue";
5
- import { useConfigProvider } from "../../composables/use-config-provider-context";
6
6
  import { useCopyClick } from "../../composables/use-copy-click";
7
+ import { useConfigProvider } from "../../contexts/config-provider";
7
8
  import { getCssUnitValue, isTruthyProp, toArray } from "../../utils/format";
8
- import { snippetVariant } from "./cn";
9
9
  defineOptions({
10
10
  name: "PSnippet",
11
11
  inheritAttrs: false
@@ -18,6 +18,32 @@ const props = defineProps({
18
18
  variant: { type: String, required: false, default: "default" }
19
19
  });
20
20
  const emits = defineEmits(["copy"]);
21
+ const snippetVariant = tv({
22
+ base: "pxd-snippet pr-12 relative flex items-center rounded-lg border motion-safe:transition-all",
23
+ variants: {
24
+ size: {
25
+ sm: "min-h-7.5 pl-3.5 pr-1.5 py-2 text-sm",
26
+ md: "min-h-9 pl-3.5 pr-2.5 py-2.5 text-sm",
27
+ lg: "min-h-10 pl-3.5 pr-3.5 py-3 text-base"
28
+ },
29
+ variant: {
30
+ default: "border-gray-alpha-300 bg-background-100",
31
+ primary: "border-gray-alpha-300 bg-primary text-gray-100",
32
+ success: "border-gray-alpha-300 bg-blue-200 text-blue-900",
33
+ error: "border-gray-alpha-300 bg-red-200 text-red-900",
34
+ warning: "border-gray-alpha-300 bg-amber-200 text-amber-900"
35
+ },
36
+ prompt: {
37
+ true: "pxd-snippet--prompt",
38
+ false: ""
39
+ }
40
+ },
41
+ defaultVariants: {
42
+ size: "md",
43
+ variant: "default",
44
+ prompt: false
45
+ }
46
+ });
21
47
  const configProvider = useConfigProvider();
22
48
  const { isCopied, copyText } = useCopyClick();
23
49
  const renderIcon = computed(() => isCopied.value ? CheckIcon : CopyIcon);
@@ -1,6 +1,7 @@
1
1
  <script setup>
2
2
  defineOptions({
3
- name: "PSpinner"
3
+ name: "PSpinner",
4
+ inheritAttrs: false
4
5
  });
5
6
  const ITEMS_COUNT = 12;
6
7
  const ROTATE_STEP = 360 / ITEMS_COUNT;
@@ -9,7 +10,8 @@ const OPACITY_STEP = 1 / ITEMS_COUNT;
9
10
 
10
11
  <template>
11
12
  <div
12
- class="pxd-spinner transform-origin-center motion-safe:animate-spin pointer-events-none relative size-em overflow-hidden text-gray-700"
13
+ class="pxd-spinner transform-origin-center motion-safe:animate-spin pointer-events-none relative size-em overflow-hidden text-gray-700 content-visibility-auto intrinsic-size-auto"
14
+ v-bind="$attrs"
13
15
  >
14
16
  <div class="pxd-spinner-container top-0 left-0 absolute size-full">
15
17
  <div
@@ -4,11 +4,11 @@ type __VLS_Slots = {} & {
4
4
  default?: (props: typeof __VLS_8) => any;
5
5
  };
6
6
  declare const __VLS_base: import("vue").DefineComponent<StackProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<StackProps> & Readonly<{}>, {
7
- align: import("./types").Align;
8
7
  as: import("../../types/shared").ComponentAs;
8
+ align: import("./types").Align;
9
9
  wrap: boolean;
10
- justify: import("./types").Align;
11
10
  scale: number;
11
+ justify: import("./types").Align;
12
12
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
13
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
14
14
  declare const _default: typeof __VLS_export;
@@ -1,20 +1,52 @@
1
1
  <script setup>
2
+ import { tv } from "tailwind-variants";
2
3
  import { computed } from "vue";
3
4
  import { getResponsiveValue } from "../../utils/responsive";
4
- import { stackVariant } from "./cn";
5
5
  defineOptions({
6
6
  name: "PStack",
7
7
  inheritAttrs: false
8
8
  });
9
9
  const props = defineProps({
10
- as: { type: null, required: false, default: "div" },
11
- wrap: { type: Boolean, required: false, default: true },
10
+ as: { type: [String, Object], required: false, default: "div" },
12
11
  gap: { type: [String, Number, Object], required: false },
12
+ wrap: { type: Boolean, required: false, default: true },
13
13
  scale: { type: Number, required: false, default: 4 },
14
14
  align: { type: String, required: false, default: "start" },
15
15
  justify: { type: String, required: false, default: "start" },
16
16
  direction: { type: [String, Object], required: false }
17
17
  });
18
+ const stackVariant = tv({
19
+ base: "pxd-stack flex max-w-full gap-(--xs) [--xs:1rem]",
20
+ variants: {
21
+ wrap: {
22
+ true: "flex-wrap",
23
+ false: ""
24
+ },
25
+ align: {
26
+ start: "items-start",
27
+ end: "items-end",
28
+ center: "items-center",
29
+ between: "items-between",
30
+ around: "items-around",
31
+ evenly: "items-evenly",
32
+ stretch: "items-stretch"
33
+ },
34
+ justify: {
35
+ start: "flex-start",
36
+ end: "flex-end",
37
+ center: "justify-center",
38
+ between: "justify-between",
39
+ around: "justify-around",
40
+ evenly: "justify-evenly",
41
+ stretch: "justify-stretch"
42
+ }
43
+ },
44
+ defaultVariants: {
45
+ wrap: true,
46
+ align: "start",
47
+ justify: "start"
48
+ }
49
+ });
18
50
  const presetDir = {
19
51
  "--xs:vertical": "flex-col",
20
52
  "--xs:horizontal": "flex-row",
@@ -4,8 +4,8 @@ type Align = 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly' | 'str
4
4
 
5
5
  export interface StackProps {
6
6
  as?: ComponentAs
7
- wrap?: boolean
8
7
  gap?: ResponsiveValue<string | number>
8
+ wrap?: boolean
9
9
  scale?: number
10
10
  align?: Align
11
11
  justify?: Align
@@ -1,5 +1,9 @@
1
1
  <script setup>
2
2
  import { capitalize as capitalizeText } from "../../utils/format";
3
+ defineOptions({
4
+ name: "PStatusDot",
5
+ inheritAttrs: false
6
+ });
3
7
  const props = defineProps({
4
8
  label: { type: [Boolean, String, Number, Array, null], required: false, default: false },
5
9
  state: { type: String, required: false, default: "QUEUED" }
@@ -24,7 +28,7 @@ function getLabelText() {
24
28
  </script>
25
29
 
26
30
  <template>
27
- <span class="pxd-state-dot inline-flex items-center">
31
+ <span class="pxd-state-dot inline-flex items-center" v-bind="$attrs">
28
32
  <i
29
33
  aria-hidden="true"
30
34
  class="w-2.5 h-2.5 inline-block rounded-full"
@@ -3,7 +3,16 @@ declare var __VLS_1: {};
3
3
  type __VLS_Slots = {} & {
4
4
  default?: (props: typeof __VLS_1) => any;
5
5
  };
6
- declare const __VLS_base: import("vue").DefineComponent<SwitchProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SwitchProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ declare const __VLS_base: import("vue").DefineComponent<SwitchProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
+ change: (args_0: NonNullable<string | number | undefined>) => any;
8
+ "update:modelValue": (args_0: NonNullable<string | number | undefined>) => any;
9
+ }, string, import("vue").PublicProps, Readonly<SwitchProps> & Readonly<{
10
+ onChange?: ((args_0: NonNullable<string | number | undefined>) => any) | undefined;
11
+ "onUpdate:modelValue"?: ((args_0: NonNullable<string | number | undefined>) => any) | undefined;
12
+ }>, {
13
+ options: import("../../types/shared").ComponentOption[];
14
+ modelValue: string | number;
15
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
16
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
8
17
  declare const _default: typeof __VLS_export;
9
18
  export default _default;
@@ -1,62 +1,53 @@
1
1
  <script setup>
2
2
  import { computed } from "vue";
3
- import { useUniqueId } from "../../composables/use-unique-id-context";
4
- import { useSwitchGroupContext, useSwitchGroupModelValue } from "../../contexts/switch";
3
+ import { useModelValue } from "../../composables/use-model-value";
4
+ import { useConfigProvider } from "../../contexts/config-provider";
5
+ import { provideSwitchContext } from "../../contexts/switch";
6
+ import { getFallbackValue } from "../../utils/get";
5
7
  import { getUniqueId } from "../../utils/uid";
6
- import { switchVariant } from "./cn";
8
+ import PSwitchItem from "../switch-item/index.vue";
7
9
  defineOptions({
8
10
  name: "PSwitch",
11
+ inheritAttrs: false,
9
12
  model: {
10
13
  prop: "modelValue",
11
14
  event: "update:modelValue"
12
15
  }
13
16
  });
14
17
  const props = defineProps({
15
- label: { type: [String, Number, Array, null], required: false },
16
- value: { type: [String, Number], required: true },
17
18
  disabled: { type: Boolean, required: false },
18
- required: { type: Boolean, required: false }
19
+ fullWidth: { type: Boolean, required: false },
20
+ size: { type: String, required: false },
21
+ options: { type: Array, required: false, default: () => [] },
22
+ modelValue: { type: [String, Number], required: false, default: "" }
19
23
  });
20
- const uniqueId = getUniqueId();
21
- const switchGroupName = useUniqueId("SwitchGroupName");
22
- const switchGroupContext = useSwitchGroupContext();
23
- const switchGroupModelValue = useSwitchGroupModelValue();
24
- const isChecked = computed(() => switchGroupModelValue.value === props.value);
25
- const computedDisabled = computed(() => props.disabled || switchGroupContext.disabled);
26
- const computedRequired = computed(() => props.required || switchGroupContext.required);
27
- const computedClasses = computed(() => {
28
- return switchVariant({ disabled: computedDisabled.value });
29
- });
30
- function onSwitchFocusIn() {
31
- if (computedDisabled.value) {
32
- return;
33
- }
34
- switchGroupModelValue.value = props.value;
35
- }
24
+ const emits = defineEmits(["change", "update:modelValue"]);
25
+ const SIZES = {
26
+ sm: "h-7.5",
27
+ md: "h-9",
28
+ lg: "h-10"
29
+ };
30
+ const configProvider = useConfigProvider();
31
+ const modelValue = useModelValue(props, emits);
32
+ const computedSize = computed(() => getFallbackValue(props.size, SIZES, configProvider.size));
33
+ provideSwitchContext({ props, emits, name: getUniqueId() });
36
34
  </script>
37
35
 
38
36
  <template>
39
- <label
40
- :aria-checked="isChecked"
41
- class="pxd-switch flex-1 shrink-0 cursor-pointer"
42
- :for="uniqueId"
37
+ <div
38
+ class="pxd-switch p-1 flex touch-manipulation rounded-lg border"
39
+ :class="[fullWidth ? 'w-full' : 'w-max', computedSize]"
40
+ v-bind="$attrs"
43
41
  >
44
- <input
45
- :id="uniqueId"
46
- v-model="switchGroupModelValue"
47
- type="radio"
48
- :value="value"
49
- class="peer smallest"
50
- :checked="isChecked"
51
- :name="switchGroupName"
52
- :disabled="computedDisabled"
53
- :required="computedRequired"
54
- />
55
-
56
- <div :class="computedClasses" @focusin="onSwitchFocusIn">
57
- <slot>
58
- {{ label }}
59
- </slot>
60
- </div>
61
- </label>
42
+ <slot>
43
+ <PSwitchItem
44
+ v-for="option in options"
45
+ :key="option.value"
46
+ v-model="modelValue"
47
+ :label="option.label"
48
+ :value="option.value"
49
+ :disabled="option.disabled"
50
+ />
51
+ </slot>
52
+ </div>
62
53
  </template>
@@ -1,22 +1,14 @@
1
- import type { ComponentLabel, ComponentOption, ComponentSize } from '../../types/shared'
1
+ import type { ComponentOption, ComponentSize } from '../../types/shared'
2
2
 
3
3
  export interface SwitchProps {
4
- label?: ComponentLabel
5
- value: string | number
6
4
  disabled?: boolean
7
- required?: boolean
8
- }
9
-
10
- export interface SwitchGroupProps {
11
- disabled?: boolean
12
- required?: boolean
13
5
  fullWidth?: boolean
14
6
  size?: ComponentSize
15
7
  options?: ComponentOption[]
16
8
  modelValue?: string | number
17
9
  }
18
10
 
19
- export interface SwitchGroupEmits {
20
- change: [NonNullable<SwitchGroupProps['modelValue']>]
21
- 'update:modelValue': [NonNullable<SwitchGroupProps['modelValue']>]
11
+ export interface SwitchEmits {
12
+ change: [NonNullable<SwitchProps['modelValue']>]
13
+ 'update:modelValue': [NonNullable<SwitchProps['modelValue']>]
22
14
  }
@@ -0,0 +1,14 @@
1
+ import type { SwitchItemProps } from './types';
2
+ declare var __VLS_1: {};
3
+ type __VLS_Slots = {} & {
4
+ default?: (props: typeof __VLS_1) => any;
5
+ };
6
+ declare const __VLS_base: import("vue").DefineComponent<SwitchItemProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SwitchItemProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
10
+ type __VLS_WithSlots<T, S> = T & {
11
+ new (): {
12
+ $slots: S;
13
+ };
14
+ };
@@ -0,0 +1,79 @@
1
+ <script setup>
2
+ import { tv } from "tailwind-variants";
3
+ import { computed } from "vue";
4
+ import { useModelValue } from "../../composables/use-model-value";
5
+ import { useSwitchContext } from "../../contexts/switch";
6
+ import { getUniqueId } from "../../utils/uid";
7
+ defineOptions({
8
+ name: "PSwitchItem",
9
+ inheritAttrs: false,
10
+ model: {
11
+ prop: "modelValue",
12
+ event: "update:modelValue"
13
+ }
14
+ });
15
+ const props = defineProps({
16
+ label: { type: [String, Number, Array, null], required: false },
17
+ value: { type: [String, Number], required: true },
18
+ disabled: { type: Boolean, required: false }
19
+ });
20
+ const emits = defineEmits([]);
21
+ const switchVariant = tv({
22
+ base: "pxd-switch-item--label px-2.5 text-sm font-medium flex size-full items-center justify-center truncate rounded-sm text-foreground-secondary peer-focus-ring select-none peer-checked:bg-gray-100 peer-disabled:cursor-not-allowed peer-disabled:text-gray-800 empty:hidden hover:text-foreground motion-safe:transition-all",
23
+ variants: {
24
+ disabled: {
25
+ true: "",
26
+ false: "peer-checked:text-foreground"
27
+ }
28
+ },
29
+ defaultVariants: {
30
+ disabled: false
31
+ }
32
+ });
33
+ const uniqueId = getUniqueId();
34
+ const switchGroupContext = useSwitchContext();
35
+ const switchGroupName = switchGroupContext?.name ?? getUniqueId();
36
+ const modelValue = useModelValue(
37
+ switchGroupContext?.props ?? props,
38
+ switchGroupContext?.emits ?? emits
39
+ );
40
+ const isChecked = computed(() => modelValue.value === props.value);
41
+ const isDisabled = computed(() => props.disabled || switchGroupContext?.props.disabled);
42
+ const computedClasses = computed(() => {
43
+ return switchVariant({ disabled: isDisabled.value });
44
+ });
45
+ function onInputChange() {
46
+ if (isDisabled.value) {
47
+ return;
48
+ }
49
+ modelValue.value = props.value;
50
+ }
51
+ </script>
52
+
53
+ <template>
54
+ <label
55
+ role="switch"
56
+ :aria-selected="isChecked"
57
+ :data-disabled="isDisabled"
58
+ class="pxd-switch-item flex-1 shrink-0 cursor-pointer"
59
+ :for="uniqueId"
60
+ v-bind="$attrs"
61
+ >
62
+ <input
63
+ :id="uniqueId"
64
+ type="radio"
65
+ :value="value"
66
+ class="peer visually-hidden"
67
+ :checked="isChecked"
68
+ :name="switchGroupName"
69
+ :disabled="isDisabled"
70
+ @change="onInputChange"
71
+ />
72
+
73
+ <div :class="computedClasses" @focusin="onInputChange">
74
+ <slot>
75
+ {{ label }}
76
+ </slot>
77
+ </div>
78
+ </label>
79
+ </template>
@@ -0,0 +1,9 @@
1
+ import type { ComponentLabel } from '../../types/shared'
2
+
3
+ export interface SwitchItemProps {
4
+ label?: ComponentLabel
5
+ value: string | number
6
+ disabled?: boolean
7
+ }
8
+
9
+ export interface SwitchItemEmits {}
@@ -6,7 +6,7 @@ type __VLS_Slots = {} & {
6
6
  default?: (props: typeof __VLS_9) => any;
7
7
  };
8
8
  declare const __VLS_base: import("vue").DefineComponent<TeleportProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TeleportProps> & Readonly<{}>, {
9
- to: string | HTMLElement;
9
+ to: string | object;
10
10
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
11
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
12
  declare const _default: typeof __VLS_export;
@@ -6,7 +6,7 @@ defineOptions({
6
6
  inheritAttrs: false
7
7
  });
8
8
  const props = defineProps({
9
- to: { type: null, required: false, default: "body" },
9
+ to: { type: [String, Object], required: false, default: "body" },
10
10
  disabled: { type: Boolean, required: false }
11
11
  });
12
12
  const inVue3 = isVue3();
@@ -1,5 +1,5 @@
1
1
  export interface TeleportProps {
2
- to?: string | HTMLElement
2
+ to?: string | object
3
3
  disabled?: boolean
4
4
  }
5
5
 
@@ -4,9 +4,8 @@ type __VLS_Slots = {} & {
4
4
  default?: (props: typeof __VLS_8) => any;
5
5
  };
6
6
  declare const __VLS_base: import("vue").DefineComponent<TextProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TextProps> & Readonly<{}>, {
7
- align: "left" | "center" | "right";
8
7
  as: import("../../types/shared").ComponentAs;
9
- truncate: boolean | number | string;
8
+ align: "left" | "center" | "right";
10
9
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
10
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
11
  declare const _default: typeof __VLS_export;
@@ -1,19 +1,43 @@
1
1
  <script setup>
2
+ import { tv } from "tailwind-variants";
2
3
  import { computed } from "vue";
3
4
  import { getCssUnitValue } from "../../utils/format";
4
5
  import { getResponsiveValue } from "../../utils/responsive";
5
- import { textVariant } from "./cn";
6
6
  defineOptions({
7
- name: "PText"
7
+ name: "PText",
8
+ inheritAttrs: false
8
9
  });
9
10
  const props = defineProps({
10
- as: { type: null, required: false, default: "p" },
11
+ as: { type: [String, Object], required: false, default: "p" },
12
+ text: { type: String, required: false },
11
13
  size: { type: [String, Number, Object], required: false },
12
14
  align: { type: String, required: false, default: "left" },
13
- truncate: { type: [Boolean, Number, String], required: false, default: false },
14
15
  monospace: { type: Boolean, required: false },
15
16
  secondary: { type: Boolean, required: false }
16
17
  });
18
+ const textVariant = tv({
19
+ base: "pxd-text m-0 shrink-0",
20
+ variants: {
21
+ align: {
22
+ left: "text-left",
23
+ center: "text-center",
24
+ right: "text-right"
25
+ },
26
+ monospace: {
27
+ true: "font-mono",
28
+ false: ""
29
+ },
30
+ secondary: {
31
+ true: "text-foreground-secondary",
32
+ false: ""
33
+ }
34
+ },
35
+ defaultVariants: {
36
+ align: "left",
37
+ monospace: false,
38
+ secondary: false
39
+ }
40
+ });
17
41
  const presetSize = {
18
42
  "--text-xs": "text-xs",
19
43
  "--text-sm": "sm:text-sm",
@@ -21,7 +45,7 @@ const presetSize = {
21
45
  "--text-lg": "lg:text-lg",
22
46
  "--text-xl": "xl:text-xl"
23
47
  };
24
- const formattedSize = computed(() => {
48
+ const computedStyle = computed(() => {
25
49
  const { size } = props;
26
50
  return getResponsiveValue(
27
51
  size,
@@ -29,35 +53,25 @@ const formattedSize = computed(() => {
29
53
  (acc, bp, value) => acc[bp] = acc[`--text-${bp}`] = getCssUnitValue(value)
30
54
  );
31
55
  });
32
- const computedStyle = computed(() => {
33
- const { truncate } = props;
34
- const styles = {
35
- ...formattedSize.value
36
- };
37
- if (truncate && typeof truncate !== "boolean") {
38
- styles["--line-clamp"] = truncate;
39
- }
40
- return styles;
41
- });
42
56
  const computedClasses = computed(() => {
43
- const { truncate, monospace, secondary } = props;
57
+ const { monospace, secondary } = props;
44
58
  const baseClass = textVariant({
45
59
  align: props.align,
46
60
  monospace,
47
- secondary,
48
- truncate: truncate === true,
49
- lineClamp: typeof truncate === "number"
61
+ secondary
50
62
  });
51
63
  const classes = [
52
64
  baseClass,
53
- ...Object.keys(formattedSize.value).map((bp) => presetSize[bp])
65
+ ...Object.keys(computedStyle.value).map((bp) => presetSize[bp])
54
66
  ].filter(Boolean).join(" ");
55
67
  return classes;
56
68
  });
57
69
  </script>
58
70
 
59
71
  <template>
60
- <Component :is="as" :class="computedClasses" :style="computedStyle">
61
- <slot />
72
+ <Component :is="as" :class="computedClasses" :title="text" :style="computedStyle" v-bind="$attrs">
73
+ <slot>
74
+ {{ text }}
75
+ </slot>
62
76
  </Component>
63
77
  </template>
@@ -2,9 +2,9 @@ import type { ComponentAs, ResponsiveValue } from '../../types/shared'
2
2
 
3
3
  export interface TextProps {
4
4
  as?: ComponentAs
5
+ text?: string
5
6
  size?: ResponsiveValue<string | number>
6
7
  align?: 'left' | 'center' | 'right'
7
- truncate?: boolean | number | string
8
8
  monospace?: boolean
9
9
  secondary?: boolean
10
10
  }
@@ -1,14 +1,14 @@
1
1
  import type { TextareaProps } from './types';
2
2
  declare const __VLS_export: import("vue").DefineComponent<TextareaProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
3
- blur: (args_0: FocusEvent) => any;
4
3
  change: (args_0: NonNullable<import("../../types/shared").ComponentLabel | undefined>) => any;
5
- focus: (args_0: FocusEvent) => any;
6
4
  "update:modelValue": (args_0: NonNullable<import("../../types/shared").ComponentLabel | undefined>) => any;
5
+ blur: (args_0: FocusEvent) => any;
6
+ focus: (args_0: FocusEvent) => any;
7
7
  }, string, import("vue").PublicProps, Readonly<TextareaProps> & Readonly<{
8
- onBlur?: ((args_0: FocusEvent) => any) | undefined;
9
8
  onChange?: ((args_0: NonNullable<import("../../types/shared").ComponentLabel | undefined>) => any) | undefined;
10
- onFocus?: ((args_0: FocusEvent) => any) | undefined;
11
9
  "onUpdate:modelValue"?: ((args_0: NonNullable<import("../../types/shared").ComponentLabel | undefined>) => any) | undefined;
10
+ onBlur?: ((args_0: FocusEvent) => any) | undefined;
11
+ onFocus?: ((args_0: FocusEvent) => any) | undefined;
12
12
  }>, {
13
13
  modelValue: import("../../types/shared").ComponentLabel;
14
14
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;