@byyuurin/ui 0.2.0 → 0.3.0

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 (140) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +5 -3
  3. package/dist/module.json +1 -1
  4. package/dist/module.mjs +2 -2
  5. package/dist/runtime/components/Accordion.vue +41 -41
  6. package/dist/runtime/components/Accordion.vue.d.ts +11 -7
  7. package/dist/runtime/components/Alert.vue +63 -63
  8. package/dist/runtime/components/Alert.vue.d.ts +4 -4
  9. package/dist/runtime/components/App.vue +11 -10
  10. package/dist/runtime/components/App.vue.d.ts +11 -7
  11. package/dist/runtime/components/Avatar.vue +29 -29
  12. package/dist/runtime/components/Avatar.vue.d.ts +4 -3
  13. package/dist/runtime/components/AvatarGroup.vue +4 -4
  14. package/dist/runtime/components/AvatarGroup.vue.d.ts +1 -1
  15. package/dist/runtime/components/Badge.vue +32 -32
  16. package/dist/runtime/components/Badge.vue.d.ts +2 -2
  17. package/dist/runtime/components/Breadcrumb.vue +49 -49
  18. package/dist/runtime/components/Breadcrumb.vue.d.ts +10 -6
  19. package/dist/runtime/components/Button.vue +52 -51
  20. package/dist/runtime/components/Button.vue.d.ts +1 -1
  21. package/dist/runtime/components/Calendar.vue +74 -74
  22. package/dist/runtime/components/Calendar.vue.d.ts +16 -12
  23. package/dist/runtime/components/Card.vue +41 -41
  24. package/dist/runtime/components/Card.vue.d.ts +1 -1
  25. package/dist/runtime/components/Carousel.vue +66 -66
  26. package/dist/runtime/components/Carousel.vue.d.ts +14 -10
  27. package/dist/runtime/components/Checkbox.vue +46 -46
  28. package/dist/runtime/components/Checkbox.vue.d.ts +4 -3
  29. package/dist/runtime/components/CheckboxGroup.vue +29 -29
  30. package/dist/runtime/components/CheckboxGroup.vue.d.ts +11 -7
  31. package/dist/runtime/components/Chip.vue +15 -15
  32. package/dist/runtime/components/Chip.vue.d.ts +2 -2
  33. package/dist/runtime/components/Collapsible.vue +14 -14
  34. package/dist/runtime/components/Collapsible.vue.d.ts +2 -2
  35. package/dist/runtime/components/Drawer.vue +76 -76
  36. package/dist/runtime/components/Drawer.vue.d.ts +6 -6
  37. package/dist/runtime/components/DropdownMenu.vue +28 -28
  38. package/dist/runtime/components/DropdownMenu.vue.d.ts +17 -9
  39. package/dist/runtime/components/DropdownMenuContent.vue +152 -153
  40. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +11 -7
  41. package/dist/runtime/components/FieldGroup.vue +3 -3
  42. package/dist/runtime/components/FieldGroup.vue.d.ts +2 -2
  43. package/dist/runtime/components/Form.vue +9 -9
  44. package/dist/runtime/components/Form.vue.d.ts +13 -8
  45. package/dist/runtime/components/FormField.vue +39 -38
  46. package/dist/runtime/components/FormField.vue.d.ts +7 -2
  47. package/dist/runtime/components/Icon.vue +2 -2
  48. package/dist/runtime/components/Icon.vue.d.ts +1 -1
  49. package/dist/runtime/components/Input.vue +48 -48
  50. package/dist/runtime/components/Input.vue.d.ts +16 -12
  51. package/dist/runtime/components/InputNumber.vue +47 -47
  52. package/dist/runtime/components/InputNumber.vue.d.ts +128 -124
  53. package/dist/runtime/components/InputTags.vue +54 -53
  54. package/dist/runtime/components/InputTags.vue.d.ts +16 -11
  55. package/dist/runtime/components/Kbd.vue +3 -3
  56. package/dist/runtime/components/Kbd.vue.d.ts +2 -2
  57. package/dist/runtime/components/Link.vue +26 -25
  58. package/dist/runtime/components/Link.vue.d.ts +16 -6
  59. package/dist/runtime/components/LinkBase.vue +3 -3
  60. package/dist/runtime/components/LinkBase.vue.d.ts +2 -2
  61. package/dist/runtime/components/Marquee.vue +5 -5
  62. package/dist/runtime/components/Marquee.vue.d.ts +3 -3
  63. package/dist/runtime/components/Modal.vue +74 -74
  64. package/dist/runtime/components/Modal.vue.d.ts +6 -6
  65. package/dist/runtime/components/NavigationMenu.vue +228 -228
  66. package/dist/runtime/components/NavigationMenu.vue.d.ts +11 -7
  67. package/dist/runtime/components/OverlayProvider.vue +9 -9
  68. package/dist/runtime/components/Pagination.vue +47 -47
  69. package/dist/runtime/components/Pagination.vue.d.ts +4 -4
  70. package/dist/runtime/components/PinInput.vue +23 -23
  71. package/dist/runtime/components/PinInput.vue.d.ts +14 -10
  72. package/dist/runtime/components/Popover.vue +22 -22
  73. package/dist/runtime/components/Popover.vue.d.ts +11 -7
  74. package/dist/runtime/components/Progress.vue +25 -25
  75. package/dist/runtime/components/Progress.vue.d.ts +2 -2
  76. package/dist/runtime/components/RadioGroup.vue +50 -50
  77. package/dist/runtime/components/RadioGroup.vue.d.ts +11 -7
  78. package/dist/runtime/components/ScrollArea.vue +32 -32
  79. package/dist/runtime/components/ScrollArea.vue.d.ts +2 -2
  80. package/dist/runtime/components/Select.vue +299 -148
  81. package/dist/runtime/components/Select.vue.d.ts +103 -123
  82. package/dist/runtime/components/Separator.vue +30 -30
  83. package/dist/runtime/components/Separator.vue.d.ts +2 -2
  84. package/dist/runtime/components/Skeleton.vue +11 -11
  85. package/dist/runtime/components/Skeleton.vue.d.ts +2 -2
  86. package/dist/runtime/components/Slider.vue +25 -25
  87. package/dist/runtime/components/Slider.vue.d.ts +11 -7
  88. package/dist/runtime/components/Stepper.vue +116 -0
  89. package/dist/runtime/components/Stepper.vue.d.ts +83 -0
  90. package/dist/runtime/components/Switch.vue +30 -30
  91. package/dist/runtime/components/Switch.vue.d.ts +4 -3
  92. package/dist/runtime/components/Table.vue +137 -137
  93. package/dist/runtime/components/Table.vue.d.ts +13 -8
  94. package/dist/runtime/components/Tabs.vue +74 -74
  95. package/dist/runtime/components/Tabs.vue.d.ts +12 -8
  96. package/dist/runtime/components/Textarea.vue +47 -47
  97. package/dist/runtime/components/Textarea.vue.d.ts +16 -11
  98. package/dist/runtime/components/Timeline.vue +47 -47
  99. package/dist/runtime/components/Timeline.vue.d.ts +11 -7
  100. package/dist/runtime/components/Toast.vue +93 -93
  101. package/dist/runtime/components/Toast.vue.d.ts +5 -5
  102. package/dist/runtime/components/ToastProvider.vue +29 -29
  103. package/dist/runtime/components/ToastProvider.vue.d.ts +3 -3
  104. package/dist/runtime/components/Tooltip.vue +24 -25
  105. package/dist/runtime/components/Tooltip.vue.d.ts +2 -2
  106. package/dist/runtime/components/Tree.vue +241 -0
  107. package/dist/runtime/components/Tree.vue.d.ts +121 -0
  108. package/dist/runtime/composables/defineShortcuts.d.ts +1 -0
  109. package/dist/runtime/composables/defineShortcuts.js +44 -8
  110. package/dist/runtime/composables/useLocale.d.ts +12 -0
  111. package/dist/runtime/locale/en.d.ts +6 -0
  112. package/dist/runtime/locale/en.js +6 -0
  113. package/dist/runtime/locale/zh_tw.d.ts +6 -0
  114. package/dist/runtime/locale/zh_tw.js +6 -0
  115. package/dist/runtime/types/html.d.ts +8 -0
  116. package/dist/runtime/types/html.js +0 -0
  117. package/dist/runtime/types/index.d.ts +2 -0
  118. package/dist/runtime/types/index.js +2 -0
  119. package/dist/runtime/types/input.d.ts +5 -5
  120. package/dist/runtime/types/locale.d.ts +6 -0
  121. package/dist/runtime/types/unocss.d.ts +4 -4
  122. package/dist/runtime/types/utils.d.ts +3 -3
  123. package/dist/runtime/utils/index.d.ts +3 -3
  124. package/dist/runtime/utils/link.d.ts +2 -1
  125. package/dist/runtime/utils/link.js +40 -29
  126. package/dist/runtime/vue/components/Icon.vue +2 -2
  127. package/dist/runtime/vue/components/Icon.vue.d.ts +1 -1
  128. package/dist/runtime/vue/components/Link.vue +7 -12
  129. package/dist/runtime/vue/components/Link.vue.d.ts +11 -40
  130. package/dist/setup.d.mts +1 -1
  131. package/dist/shared/{ui.CzIlLITK.mjs → ui.9kQouwss.mjs} +5 -3
  132. package/dist/shared/{ui.DpbffTXs.d.mts → ui.D8Bg1HWt.d.mts} +2 -0
  133. package/dist/shared/{ui.DLOxhmP0.mjs → ui.DpkP12cX.mjs} +262 -17
  134. package/dist/unocss.mjs +1 -1
  135. package/dist/unplugin.d.mts +1 -1
  136. package/dist/unplugin.mjs +2 -2
  137. package/dist/vite.d.mts +1 -1
  138. package/dist/vite.mjs +2 -2
  139. package/package.json +29 -29
  140. package/vue-plugin.d.ts +5 -5
@@ -1,22 +1,23 @@
1
1
  import type { PrimitiveProps } from 'reka-ui';
2
- import type { ButtonHTMLAttributes } from 'vue';
3
- import type { RouteLocationRaw, RouterLinkProps } from 'vue-router';
2
+ import type { RouterLinkProps } from 'vue-router';
4
3
  import type { ComponentBaseProps } from '../../types';
4
+ import type { AnchorHTMLAttributes, ButtonHTMLAttributes } from '../../types/html';
5
5
  import type { StaticSlot } from '../../types/utils';
6
6
  export interface LinkSlots {
7
7
  default: StaticSlot<{
8
8
  active: boolean;
9
9
  }>;
10
10
  }
11
- interface NuxtLinkProps extends Omit<RouterLinkProps, 'to'> {
11
+ export interface LinkProps extends ComponentBaseProps, Omit<RouterLinkProps, 'custom'>, /** @vue-ignore */ Omit<ButtonHTMLAttributes, 'type' | 'disabled'>, /** @vue-ignore */ Omit<AnchorHTMLAttributes, 'href' | 'target' | 'rel' | 'type'> {
12
12
  /**
13
- * Route Location the link should navigate to when clicked on.
13
+ * The element or component this component should render as when not a link.
14
+ * @default "button"
14
15
  */
15
- to?: RouteLocationRaw;
16
+ as?: PrimitiveProps['as'];
16
17
  /**
17
18
  * An alias for `to`. If used with `to`, `href` will be ignored
18
19
  */
19
- href?: NuxtLinkProps['to'];
20
+ href?: LinkProps['to'];
20
21
  /**
21
22
  * Forces the link to be considered as external (true) or internal (false). This is helpful to handle edge-cases
22
23
  */
@@ -24,41 +25,11 @@ interface NuxtLinkProps extends Omit<RouterLinkProps, 'to'> {
24
25
  /**
25
26
  * Where to display the linked URL, as the name for a browsing context.
26
27
  */
27
- target?: '_blank' | '_parent' | '_self' | '_top' | (string & {});
28
+ target?: '_blank' | '_parent' | '_self' | '_top' | (string & {}) | null;
28
29
  /**
29
30
  * A rel attribute value to apply on the link. Defaults to "noopener noreferrer" for external links.
30
31
  */
31
- rel?: 'noopener' | 'noreferrer' | 'nofollow' | 'sponsored' | 'ugc' | (string & {});
32
- /**
33
- * If set to true, no rel attribute will be added to the link
34
- */
35
- noRel?: boolean;
36
- /**
37
- * A class to apply to links that have been prefetched.
38
- */
39
- prefetchedClass?: string;
40
- /**
41
- * When enabled will prefetch middleware, layouts and payloads of links in the viewport.
42
- */
43
- prefetch?: boolean;
44
- /**
45
- * Allows controlling when to prefetch links. By default, prefetch is triggered only on visibility.
46
- */
47
- prefetchOn?: 'visibility' | 'interaction' | Partial<{
48
- visibility: boolean;
49
- interaction: boolean;
50
- }>;
51
- /**
52
- * Escape hatch to disable `prefetch` attribute.
53
- */
54
- noPrefetch?: boolean;
55
- }
56
- export interface LinkProps extends ComponentBaseProps, NuxtLinkProps {
57
- /**
58
- * The element or component this component should render as when not a link.
59
- * @default "button"
60
- */
61
- as?: PrimitiveProps['as'];
32
+ rel?: 'noopener' | 'noreferrer' | 'nofollow' | 'sponsored' | 'ugc' | (string & {}) | null;
62
33
  /**
63
34
  * The type of the button when not a link.
64
35
  * @default "button"
@@ -80,14 +51,14 @@ export interface LinkProps extends ComponentBaseProps, NuxtLinkProps {
80
51
  /** When `true`, only styles from `class`, `activeClass`, and `inactiveClass` will be applied. */
81
52
  raw?: boolean;
82
53
  }
54
+ declare const _default: typeof __VLS_export;
55
+ export default _default;
83
56
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<LinkProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<LinkProps> & Readonly<{}>, {
84
57
  active: boolean;
85
58
  type: "reset" | "submit" | "button";
86
59
  ariaCurrentValue: "page" | "step" | "location" | "date" | "time" | "true" | "false";
87
60
  as: import("reka-ui").AsTag | import("vue").Component;
88
61
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, LinkSlots>;
89
- declare const _default: typeof __VLS_export;
90
- export default _default;
91
62
  type __VLS_WithSlots<T, S> = T & {
92
63
  new (): {
93
64
  $slots: S;
package/dist/setup.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import '#build/ui';
2
2
  import './shared/ui.IulR-OYx.mjs';
3
3
  import '../dist/runtime/types/style.js';
4
- export { A as AppConfigIcons, a as AppConfigUI, s as setup } from './shared/ui.DpbffTXs.mjs';
4
+ export { A as AppConfigIcons, a as AppConfigUI, s as setup } from './shared/ui.D8Bg1HWt.mjs';
5
5
  import './unocss.mjs';
6
6
  import '@nuxt/schema';
7
7
  import '@unocss/preset-wind4/colors';
@@ -11,6 +11,8 @@ const icons = {
11
11
  chevronDoubleLeft: "i-lucide-chevrons-left",
12
12
  chevronDoubleRight: "i-lucide-chevrons-right",
13
13
  ellipsis: "i-lucide-ellipsis",
14
+ folder: "i-lucide-folder",
15
+ folderOpen: "i-lucide-folder-open",
14
16
  plus: "i-lucide-plus",
15
17
  minus: "i-lucide-minus",
16
18
  external: "i-lucide-arrow-up-right"
@@ -19,13 +21,13 @@ const icons = {
19
21
  function getDefaultUIConfig(colors) {
20
22
  return {
21
23
  colors: pick({
22
- primary: "green",
23
- secondary: "blue",
24
+ primary: "orange",
25
+ secondary: "teal",
24
26
  success: "green",
25
27
  info: "blue",
26
28
  warning: "yellow",
27
29
  error: "red",
28
- neutral: "slate"
30
+ neutral: "stone"
29
31
  }, [...colors || [], "neutral"]),
30
32
  icons
31
33
  };
@@ -17,6 +17,8 @@ declare const icons: {
17
17
  chevronDoubleLeft: string;
18
18
  chevronDoubleRight: string;
19
19
  ellipsis: string;
20
+ folder: string;
21
+ folderOpen: string;
20
22
  plus: string;
21
23
  minus: string;
22
24
  external: string;
@@ -4,12 +4,12 @@ import { findPath, addTypeTemplate, addTemplate } from '@nuxt/kit';
4
4
  import { loadConfig } from '@unocss/config';
5
5
  import { genExport } from 'knitwork';
6
6
  import { kebabCase } from 'scule';
7
- import { n as neutralColors } from './ui.CzIlLITK.mjs';
7
+ import { n as neutralColors } from './ui.9kQouwss.mjs';
8
8
  import { ct } from '@byyuurin/ui-kit';
9
9
  import { defu } from 'defu';
10
10
 
11
11
  const name = "@byyuurin/ui";
12
- const version = "0.2.0";
12
+ const version = "0.3.0";
13
13
 
14
14
  const accordion = ct({
15
15
  parts: {
@@ -860,7 +860,7 @@ const carousel = (options) => ct({
860
860
  next: "absolute rounded-full",
861
861
  dots: "absolute inset-x-0 -bottom-7 flex flex-wrap items-center justify-center gap-3",
862
862
  dot: [
863
- "cursor-pointer size-3 bg-accented rounded-full",
863
+ "cursor-pointer size-3 bg-accented rounded-full focus:outline-none focus-visible:ring-2 focus-visible:ring-primary",
864
864
  options.theme.transitions && "transition"
865
865
  ]
866
866
  },
@@ -1466,15 +1466,25 @@ const formField = ct({
1466
1466
  parts: {
1467
1467
  root: "",
1468
1468
  wrapper: "",
1469
- labelWrapper: "flex content-center items-center justify-between",
1469
+ labelWrapper: "flex content-center items-center justify-between gap-1",
1470
1470
  label: "block font-medium text-default",
1471
- container: "mt-1 relative",
1471
+ container: "relative",
1472
1472
  description: "text-muted",
1473
1473
  error: "mt-2 text-error",
1474
1474
  hint: "text-muted",
1475
1475
  help: "mt-2 text-muted"
1476
1476
  },
1477
1477
  variants: {
1478
+ orientation: {
1479
+ vertical: {
1480
+ root: "",
1481
+ container: "mt-1"
1482
+ },
1483
+ horizontal: {
1484
+ root: "flex justify-between place-items-baseline gap-2",
1485
+ container: "flex-grow"
1486
+ }
1487
+ },
1478
1488
  size: {
1479
1489
  xs: { root: "text-xs" },
1480
1490
  sm: { root: "text-xs" },
@@ -1489,7 +1499,8 @@ const formField = ct({
1489
1499
  }
1490
1500
  },
1491
1501
  defaultVariants: {
1492
- size: "md"
1502
+ size: "md",
1503
+ orientation: "vertical"
1493
1504
  }
1494
1505
  });
1495
1506
 
@@ -2921,8 +2932,12 @@ const select = (options) => {
2921
2932
  arrow: "fill-default",
2922
2933
  content: [
2923
2934
  "z-1 max-h-60 w-[--reka-select-trigger-width] bg-default shadow-lg rounded-md ring ring-default overflow-hidden origin-[--reka-select-content-transform-origin] pointer-events-auto flex flex-col",
2924
- "data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]"
2935
+ "data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]",
2936
+ "origin-[--reka-combobox-content-transform-origin] w-[--reka-combobox-trigger-width]"
2925
2937
  ],
2938
+ trailingClear: "p-0",
2939
+ input: "border-b border-default",
2940
+ focusScope: "flex flex-col min-h-0",
2926
2941
  viewport: "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",
2927
2942
  group: "p-1 isolate",
2928
2943
  empty: "text-center text-muted",
@@ -3005,18 +3020,15 @@ const select = (options) => {
3005
3020
  itemTrailingIcon: "size-6",
3006
3021
  empty: "p-2 text-base"
3007
3022
  }
3023
+ },
3024
+ searchInput: {
3025
+ false: {
3026
+ input: "sr-only"
3027
+ }
3008
3028
  }
3009
3029
  },
3010
3030
  compoundVariants: [
3011
- ...input.compoundVariants.map((item) => {
3012
- return {
3013
- ...item,
3014
- class: {
3015
- ...item.class,
3016
- base: typeof item.class.base === "string" ? item.class.base.replace(/focus-visible:/g, "focus:") : item.class.base
3017
- }
3018
- };
3019
- })
3031
+ ...input.compoundVariants
3020
3032
  ],
3021
3033
  defaultVariants: {
3022
3034
  ...input.defaultVariants
@@ -3284,6 +3296,141 @@ const slider = (options) => ct({
3284
3296
  }
3285
3297
  });
3286
3298
 
3299
+ const stepper = (options) => ct({
3300
+ parts: {
3301
+ root: "flex gap-4",
3302
+ header: "flex",
3303
+ item: "group text-center relative w-full",
3304
+ container: "relative",
3305
+ trigger: "rounded-full font-medium text-center align-middle flex items-center justify-center font-semibold group-data-[state=completed]:text-inverted group-data-[state=active]:text-inverted text-muted bg-elevated focus-visible:outline-2 focus-visible:outline-offset-2",
3306
+ indicator: "flex items-center justify-center size-full",
3307
+ icon: "shrink-0",
3308
+ separator: "absolute rounded-full group-data-[disabled]:opacity-75 bg-accented",
3309
+ wrapper: "",
3310
+ title: "font-medium text-default",
3311
+ description: "text-muted text-wrap",
3312
+ content: "size-full"
3313
+ },
3314
+ variants: {
3315
+ orientation: {
3316
+ horizontal: {
3317
+ root: "flex-col",
3318
+ container: "flex justify-center",
3319
+ separator: "top-[calc(50%-2px)] h-0.5",
3320
+ wrapper: "mt-1"
3321
+ },
3322
+ vertical: {
3323
+ header: "flex-col gap-4",
3324
+ item: "flex text-start",
3325
+ separator: "start-[calc(50%-1px)] -bottom-[0.625rem] w-0.5"
3326
+ }
3327
+ },
3328
+ size: {
3329
+ xs: {
3330
+ trigger: "size-6 text-xs",
3331
+ icon: "size-3",
3332
+ title: "text-xs",
3333
+ description: "text-xs",
3334
+ wrapper: "mt-1.5"
3335
+ },
3336
+ sm: {
3337
+ trigger: "size-8 text-sm",
3338
+ icon: "size-4",
3339
+ title: "text-xs",
3340
+ description: "text-xs",
3341
+ wrapper: "mt-2"
3342
+ },
3343
+ md: {
3344
+ trigger: "size-10 text-base",
3345
+ icon: "size-5",
3346
+ title: "text-sm",
3347
+ description: "text-sm",
3348
+ wrapper: "mt-2.5"
3349
+ },
3350
+ lg: {
3351
+ trigger: "size-12 text-lg",
3352
+ icon: "size-6",
3353
+ title: "text-base",
3354
+ description: "text-base",
3355
+ wrapper: "mt-3"
3356
+ },
3357
+ xl: {
3358
+ trigger: "size-14 text-xl",
3359
+ icon: "size-7",
3360
+ title: "text-lg",
3361
+ description: "text-lg",
3362
+ wrapper: "mt-3.5"
3363
+ }
3364
+ },
3365
+ color: {
3366
+ ...Object.fromEntries((options.theme.colors || []).map((color) => [color, {
3367
+ trigger: `group-data-[state=completed]:bg-${color} group-data-[state=active]:bg-${color} focus-visible:outline-${color}`,
3368
+ separator: `group-data-[state=completed]:bg-${color}`
3369
+ }])),
3370
+ neutral: {
3371
+ trigger: "group-data-[state=completed]:bg-inverted group-data-[state=active]:bg-inverted focus-visible:outline-inverted",
3372
+ separator: "group-data-[state=completed]:bg-inverted"
3373
+ }
3374
+ }
3375
+ },
3376
+ compoundVariants: [
3377
+ {
3378
+ orientation: "horizontal",
3379
+ size: "xs",
3380
+ class: { separator: "start-[calc(50%+1rem)] end-[calc(-50%+1rem)]" }
3381
+ },
3382
+ {
3383
+ orientation: "horizontal",
3384
+ size: "sm",
3385
+ class: { separator: "start-[calc(50%+1.25rem)] end-[calc(-50%+1.25rem)]" }
3386
+ },
3387
+ {
3388
+ orientation: "horizontal",
3389
+ size: "md",
3390
+ class: { separator: "start-[calc(50%+1.75rem)] end-[calc(-50%+1.75rem)]" }
3391
+ },
3392
+ {
3393
+ orientation: "horizontal",
3394
+ size: "lg",
3395
+ class: { separator: "start-[calc(50%+2rem)] end-[calc(-50%+2rem)]" }
3396
+ },
3397
+ {
3398
+ orientation: "horizontal",
3399
+ size: "xl",
3400
+ class: { separator: "start-[calc(50%+2.25rem)] end-[calc(-50%+2.25rem)]" }
3401
+ },
3402
+ {
3403
+ orientation: "vertical",
3404
+ size: "xs",
3405
+ class: { separator: "top-7.5", item: "gap-1.5" }
3406
+ },
3407
+ {
3408
+ orientation: "vertical",
3409
+ size: "sm",
3410
+ class: { separator: "top-9.5", item: "gap-2" }
3411
+ },
3412
+ {
3413
+ orientation: "vertical",
3414
+ size: "md",
3415
+ class: { separator: "top-11.5", item: "gap-2.5" }
3416
+ },
3417
+ {
3418
+ orientation: "vertical",
3419
+ size: "lg",
3420
+ class: { separator: "top-13.5", item: "gap-3" }
3421
+ },
3422
+ {
3423
+ orientation: "vertical",
3424
+ size: "xl",
3425
+ class: { separator: "top-15.5", item: "gap-3.5" }
3426
+ }
3427
+ ],
3428
+ defaultVariants: {
3429
+ size: "md",
3430
+ color: "primary"
3431
+ }
3432
+ });
3433
+
3287
3434
  const _switch = (options) => ct({
3288
3435
  parts: {
3289
3436
  root: "relative flex items-start",
@@ -4028,6 +4175,102 @@ const tooltip = ct({
4028
4175
  }
4029
4176
  });
4030
4177
 
4178
+ const tree = (options) => ct({
4179
+ parts: {
4180
+ root: "relative isolate",
4181
+ item: "w-full",
4182
+ listWithChildren: "border-s border-default",
4183
+ itemWithChildren: "ps-1.5 -ms-px",
4184
+ link: "relative group w-full flex items-center text-sm select-none before:absolute before:inset-y-px before:inset-x-0 before:-z-1 before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2",
4185
+ linkLeadingIcon: "shrink-0 relative",
4186
+ linkLabel: "truncate",
4187
+ linkTrailing: "ms-auto inline-flex gap-1.5 items-center",
4188
+ linkTrailingIcon: "shrink-0 transform transition-transform duration-200 group-data-expanded:rotate-180"
4189
+ },
4190
+ variants: {
4191
+ color: {
4192
+ ...Object.fromEntries((options.theme.colors || []).map((color) => [color, {
4193
+ link: `focus-visible:before:ring-${color}`
4194
+ }])),
4195
+ neutral: {
4196
+ link: "focus-visible:before:ring-inverted"
4197
+ }
4198
+ },
4199
+ size: {
4200
+ xs: {
4201
+ listWithChildren: "ms-4",
4202
+ link: "px-2 py-1 text-xs gap-1",
4203
+ linkLeadingIcon: "size-4",
4204
+ linkTrailingIcon: "size-4"
4205
+ },
4206
+ sm: {
4207
+ listWithChildren: "ms-4.5",
4208
+ link: "px-2.5 py-1.5 text-xs gap-1.5",
4209
+ linkLeadingIcon: "size-4",
4210
+ linkTrailingIcon: "size-4"
4211
+ },
4212
+ md: {
4213
+ listWithChildren: "ms-5",
4214
+ link: "px-2.5 py-1.5 text-sm gap-1.5",
4215
+ linkLeadingIcon: "size-5",
4216
+ linkTrailingIcon: "size-5"
4217
+ },
4218
+ lg: {
4219
+ listWithChildren: "ms-5.5",
4220
+ link: "px-3 py-2 text-sm gap-2",
4221
+ linkLeadingIcon: "size-5",
4222
+ linkTrailingIcon: "size-5"
4223
+ },
4224
+ xl: {
4225
+ listWithChildren: "ms-6",
4226
+ link: "px-3 py-2 text-base gap-2",
4227
+ linkLeadingIcon: "size-6",
4228
+ linkTrailingIcon: "size-6"
4229
+ }
4230
+ },
4231
+ selected: {
4232
+ true: {
4233
+ link: "before:bg-elevated"
4234
+ }
4235
+ },
4236
+ disabled: {
4237
+ true: {
4238
+ link: "cursor-not-allowed opacity-75"
4239
+ }
4240
+ }
4241
+ },
4242
+ compoundVariants: [
4243
+ ...(options.theme.colors || []).map((color) => ({
4244
+ color,
4245
+ selected: true,
4246
+ class: {
4247
+ link: `text-${color}`
4248
+ }
4249
+ })),
4250
+ {
4251
+ color: "neutral",
4252
+ selected: true,
4253
+ class: {
4254
+ link: "text-highlighted"
4255
+ }
4256
+ },
4257
+ {
4258
+ selected: false,
4259
+ disabled: false,
4260
+ class: {
4261
+ link: [
4262
+ "hover:text-highlighted hover:before:bg-elevated/50",
4263
+ options.theme.transitions && "transition-colors before:transition-colors"
4264
+ ]
4265
+ }
4266
+ }
4267
+ ],
4268
+ defaultVariants: {
4269
+ color: "primary",
4270
+ size: "md"
4271
+ }
4272
+ });
4273
+
4031
4274
  const theme = {
4032
4275
  __proto__: null,
4033
4276
  accordion: accordion,
@@ -4067,6 +4310,7 @@ const theme = {
4067
4310
  separator: separator,
4068
4311
  skeleton: skeleton,
4069
4312
  slider: slider,
4313
+ stepper: stepper,
4070
4314
  switch: _switch,
4071
4315
  table: table,
4072
4316
  tabs: tabs,
@@ -4074,7 +4318,8 @@ const theme = {
4074
4318
  timeline: timeline,
4075
4319
  toast: toast,
4076
4320
  toastProvider: toastProvider,
4077
- tooltip: tooltip
4321
+ tooltip: tooltip,
4322
+ tree: tree
4078
4323
  };
4079
4324
 
4080
4325
  function getTemplates(options, uiConfig, nuxt) {
package/dist/unocss.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { colors } from '@unocss/preset-wind4/colors';
2
2
  import { parseColor } from '@unocss/preset-wind4/utils';
3
- import { r as resolveColors } from './shared/ui.CzIlLITK.mjs';
3
+ import { r as resolveColors } from './shared/ui.9kQouwss.mjs';
4
4
  import '../dist/runtime/utils/index.js';
5
5
 
6
6
  function createUnoPreset(options = {}) {
@@ -2,7 +2,7 @@ import 'unplugin';
2
2
  import 'unplugin-auto-import/types';
3
3
  import 'unplugin-vue-components/types';
4
4
  import './shared/ui.IulR-OYx.mjs';
5
- export { U as UIOptions, r as runtimeDir, u as unplugin } from './shared/ui.DpbffTXs.mjs';
5
+ export { U as UIOptions, r as runtimeDir, u as unplugin } from './shared/ui.D8Bg1HWt.mjs';
6
6
  import '@nuxt/schema';
7
7
  import '@unocss/preset-wind4/colors';
8
8
  import '../dist/runtime/types/index.js';
package/dist/unplugin.mjs CHANGED
@@ -2,8 +2,8 @@ import { fileURLToPath } from 'node:url';
2
2
  import { defu } from 'defu';
3
3
  import { join, normalize } from 'pathe';
4
4
  import { createUnplugin } from 'unplugin';
5
- import { g as getTemplates, n as name } from './shared/ui.DLOxhmP0.mjs';
6
- import { d as defaultOptions, r as resolveColors, g as getDefaultUIConfig } from './shared/ui.CzIlLITK.mjs';
5
+ import { g as getTemplates, n as name } from './shared/ui.DpkP12cX.mjs';
6
+ import { d as defaultOptions, r as resolveColors, g as getDefaultUIConfig } from './shared/ui.9kQouwss.mjs';
7
7
  import AutoImport from 'unplugin-auto-import';
8
8
  import { globSync } from 'tinyglobby';
9
9
  import AutoImportComponents from 'unplugin-vue-components';
package/dist/vite.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as vite from 'vite';
2
- import { U as UIOptions } from './shared/ui.DpbffTXs.mjs';
2
+ import { U as UIOptions } from './shared/ui.D8Bg1HWt.mjs';
3
3
  import 'unplugin';
4
4
  import 'unplugin-auto-import/types';
5
5
  import 'unplugin-vue-components/types';
package/dist/vite.mjs CHANGED
@@ -3,13 +3,13 @@ import 'node:url';
3
3
  import 'defu';
4
4
  import 'pathe';
5
5
  import 'unplugin';
6
- import './shared/ui.DLOxhmP0.mjs';
6
+ import './shared/ui.DpkP12cX.mjs';
7
7
  import 'node:process';
8
8
  import '@nuxt/kit';
9
9
  import '@unocss/config';
10
10
  import 'knitwork';
11
11
  import 'scule';
12
- import './shared/ui.CzIlLITK.mjs';
12
+ import './shared/ui.9kQouwss.mjs';
13
13
  import '../dist/runtime/utils/index.js';
14
14
  import '@byyuurin/ui-kit';
15
15
  import 'unplugin-auto-import';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@byyuurin/ui",
3
3
  "type": "module",
4
- "version": "0.2.0",
4
+ "version": "0.3.0",
5
5
  "description": "",
6
6
  "author": "Yuurin <byyuurin@gmail.com>",
7
7
  "license": "MIT",
@@ -129,17 +129,17 @@
129
129
  "@byyuurin/ui-kit": "^0.7.2",
130
130
  "@byyuurin/uno-merge": "^0.2.1",
131
131
  "@iconify/vue": "^5.0.0",
132
- "@internationalized/date": "^3.10.0",
132
+ "@internationalized/date": "^3.10.1",
133
133
  "@nuxt/fonts": "^0.11.4",
134
134
  "@nuxt/icon": "^1.15.0",
135
- "@nuxt/kit": "^4.2.1",
135
+ "@nuxt/kit": "^4.2.2",
136
136
  "@nuxtjs/color-mode": "^3.5.2",
137
- "@standard-schema/spec": "^1.0.0",
137
+ "@standard-schema/spec": "^1.1.0",
138
138
  "@tanstack/vue-table": "^8.21.3",
139
- "@tanstack/vue-virtual": "^3.13.12",
140
- "@unhead/vue": "^2.0.19",
141
- "@unocss/nuxt": "^66.5.5",
142
- "@vue/shared": "^3.5.24",
139
+ "@tanstack/vue-virtual": "^3.13.13",
140
+ "@unhead/vue": "^2.1.1",
141
+ "@unocss/nuxt": "^66.5.10",
142
+ "@vue/shared": "^3.5.26",
143
143
  "@vueuse/core": "^13.9.0",
144
144
  "defu": "^6.1.4",
145
145
  "embla-carousel": "^8.6.0",
@@ -150,47 +150,47 @@
150
150
  "embla-carousel-fade": "^8.6.0",
151
151
  "embla-carousel-vue": "^8.6.0",
152
152
  "embla-carousel-wheel-gestures": "^8.1.0",
153
- "knitwork": "^1.2.0",
153
+ "knitwork": "^1.3.0",
154
154
  "magic-string": "^0.30.21",
155
155
  "mlly": "^1.8.0",
156
156
  "ohash": "^2.0.11",
157
157
  "pathe": "^2.0.3",
158
- "reka-ui": "^2.6.0",
158
+ "reka-ui": "^2.7.0",
159
159
  "scule": "^1.3.0",
160
160
  "tinyglobby": "^0.2.15",
161
161
  "ufo": "^1.6.1",
162
- "unplugin": "^2.3.10",
163
- "unplugin-auto-import": "^20.2.0",
162
+ "unplugin": "^2.3.11",
163
+ "unplugin-auto-import": "^20.3.0",
164
164
  "unplugin-vue-components": "^30.0.0",
165
- "vue-component-type-helpers": "^3.1.3"
165
+ "vue-component-type-helpers": "^3.2.1"
166
166
  },
167
167
  "devDependencies": {
168
168
  "@byyuurin/eslint-config": "^1.9.0",
169
- "@iconify-json/lucide": "^1.2.72",
170
- "@nuxt/eslint-config": "^1.10.0",
169
+ "@iconify-json/lucide": "^1.2.82",
170
+ "@nuxt/eslint-config": "^1.12.1",
171
171
  "@nuxt/module-builder": "^1.0.2",
172
- "@nuxt/schema": "^4.2.1",
173
- "@nuxt/test-utils": "^3.20.1",
174
- "@types/node": "^22.19.0",
175
- "@unocss/core": "^66.5.5",
176
- "@unocss/preset-wind4": "^66.5.5",
177
- "@unocss/reset": "^66.5.5",
178
- "@vitejs/plugin-vue": "^6.0.1",
179
- "bumpp": "^10.3.1",
180
- "eslint": "^9.39.1",
172
+ "@nuxt/schema": "^4.2.2",
173
+ "@nuxt/test-utils": "^3.21.0",
174
+ "@types/node": "^22.19.3",
175
+ "@unocss/core": "^66.5.10",
176
+ "@unocss/preset-wind4": "^66.5.10",
177
+ "@unocss/reset": "^66.5.10",
178
+ "@vitejs/plugin-vue": "^6.0.3",
179
+ "bumpp": "^10.3.2",
180
+ "eslint": "^9.39.2",
181
181
  "eslint-plugin-format": "1.0.1",
182
182
  "esno": "^4.8.0",
183
- "lint-staged": "^16.2.6",
184
- "nuxt": "^4.2.1",
183
+ "lint-staged": "^16.2.7",
184
+ "nuxt": "^4.2.2",
185
185
  "simple-git-hooks": "^2.13.1",
186
186
  "superstruct": "^2.0.2",
187
187
  "typescript": "^5.9.3",
188
- "unocss": "^66.5.5",
189
- "vite": "^7.2.2",
188
+ "unocss": "^66.5.10",
189
+ "vite": "^7.3.0",
190
190
  "vite-plugin-inspect": "^11.3.3",
191
191
  "vitest": "^3.2.4",
192
192
  "vue": "^3.5.24",
193
- "vue-tsc": "^3.1.3",
193
+ "vue-tsc": "^3.2.1",
194
194
  "zod": "^3.25.76"
195
195
  },
196
196
  "resolutions": {
package/vue-plugin.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { Plugin } from 'vue'
2
-
3
- declare const plugin: Plugin
4
-
5
- export default plugin
1
+ import type { Plugin } from 'vue'
2
+
3
+ declare const plugin: Plugin
4
+
5
+ export default plugin