@nuxt/ui 3.0.0-alpha.11 → 3.0.0-alpha.12

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 (112) hide show
  1. package/.nuxt/ui/alert.ts +1 -1
  2. package/.nuxt/ui/avatar.ts +1 -1
  3. package/.nuxt/ui/button.ts +0 -1
  4. package/.nuxt/ui/context-menu.ts +1 -1
  5. package/.nuxt/ui/dropdown-menu.ts +1 -1
  6. package/.nuxt/ui/navigation-menu.ts +79 -11
  7. package/cli/package.json +2 -2
  8. package/cli/templates.mjs +6 -6
  9. package/dist/chunks/component-meta.cjs +2590 -2511
  10. package/dist/chunks/component-meta.mjs +2590 -2511
  11. package/dist/client/devtools/200.html +1 -1
  12. package/dist/client/devtools/404.html +1 -1
  13. package/dist/client/devtools/_nuxt/{CQ-XZFu7.js → CgoQwOTV.js} +26 -23
  14. package/dist/client/devtools/_nuxt/{DNZFyo26.js → DLmPhbaq.js} +1 -1
  15. package/dist/client/devtools/_nuxt/{Dtz-o9GB.js → DYuJNiSW.js} +1 -1
  16. package/dist/client/devtools/_nuxt/builds/latest.json +1 -1
  17. package/dist/client/devtools/_nuxt/builds/meta/3184ffe2-7577-4441-af98-fe6e81c30e3a.json +1 -0
  18. package/dist/client/devtools/_nuxt/entry.ChJczkiN.css +1 -0
  19. package/dist/client/devtools/_nuxt/error-404.DyY3rYaL.css +1 -0
  20. package/dist/client/devtools/_nuxt/error-500.D_1PCaJh.css +1 -0
  21. package/dist/client/devtools/index.html +1 -1
  22. package/dist/module.cjs +1 -1
  23. package/dist/module.json +1 -1
  24. package/dist/module.mjs +1 -1
  25. package/dist/runtime/components/Accordion.vue +2 -2
  26. package/dist/runtime/components/Alert.vue +2 -2
  27. package/dist/runtime/components/Avatar.vue +31 -10
  28. package/dist/runtime/components/AvatarGroup.vue +2 -2
  29. package/dist/runtime/components/Badge.vue +2 -2
  30. package/dist/runtime/components/Breadcrumb.vue +2 -2
  31. package/dist/runtime/components/Button.vue +2 -2
  32. package/dist/runtime/components/ButtonGroup.vue +2 -2
  33. package/dist/runtime/components/Calendar.vue +4 -2
  34. package/dist/runtime/components/Card.vue +2 -2
  35. package/dist/runtime/components/Carousel.vue +2 -2
  36. package/dist/runtime/components/Checkbox.vue +4 -4
  37. package/dist/runtime/components/Chip.vue +2 -2
  38. package/dist/runtime/components/Collapsible.vue +2 -2
  39. package/dist/runtime/components/ColorPicker.vue +46 -15
  40. package/dist/runtime/components/CommandPalette.vue +2 -2
  41. package/dist/runtime/components/Container.vue +2 -2
  42. package/dist/runtime/components/ContextMenu.vue +2 -2
  43. package/dist/runtime/components/ContextMenuContent.vue +1 -1
  44. package/dist/runtime/components/Drawer.vue +2 -2
  45. package/dist/runtime/components/DropdownMenu.vue +2 -2
  46. package/dist/runtime/components/DropdownMenuContent.vue +1 -1
  47. package/dist/runtime/components/Form.vue +46 -17
  48. package/dist/runtime/components/FormField.vue +12 -6
  49. package/dist/runtime/components/Input.vue +5 -4
  50. package/dist/runtime/components/InputMenu.vue +6 -5
  51. package/dist/runtime/components/InputNumber.vue +7 -4
  52. package/dist/runtime/components/Kbd.vue +2 -2
  53. package/dist/runtime/components/Link.vue +2 -2
  54. package/dist/runtime/components/Modal.vue +2 -2
  55. package/dist/runtime/components/NavigationMenu.vue +89 -66
  56. package/dist/runtime/components/Pagination.vue +2 -2
  57. package/dist/runtime/components/PinInput.vue +5 -4
  58. package/dist/runtime/components/Popover.vue +2 -2
  59. package/dist/runtime/components/Progress.vue +2 -2
  60. package/dist/runtime/components/RadioGroup.vue +4 -4
  61. package/dist/runtime/components/Select.vue +9 -7
  62. package/dist/runtime/components/SelectMenu.vue +5 -4
  63. package/dist/runtime/components/Separator.vue +2 -2
  64. package/dist/runtime/components/Skeleton.vue +2 -2
  65. package/dist/runtime/components/Slideover.vue +2 -2
  66. package/dist/runtime/components/Slider.vue +4 -4
  67. package/dist/runtime/components/Stepper.vue +2 -2
  68. package/dist/runtime/components/Switch.vue +4 -4
  69. package/dist/runtime/components/Table.vue +2 -2
  70. package/dist/runtime/components/Tabs.vue +2 -2
  71. package/dist/runtime/components/Textarea.vue +5 -4
  72. package/dist/runtime/components/Toast.vue +2 -2
  73. package/dist/runtime/components/Toaster.vue +2 -2
  74. package/dist/runtime/components/Tooltip.vue +2 -2
  75. package/dist/runtime/composables/useFormField.d.ts +6 -2
  76. package/dist/runtime/composables/useFormField.js +18 -11
  77. package/dist/runtime/composables/useToast.d.ts +1 -1
  78. package/dist/runtime/composables/useToast.js +21 -7
  79. package/dist/runtime/index.css +1 -1
  80. package/dist/runtime/locale/es.js +2 -2
  81. package/dist/runtime/locale/he.js +53 -0
  82. package/dist/runtime/locale/hi.js +54 -0
  83. package/dist/runtime/locale/hu.d.ts +2 -0
  84. package/dist/runtime/locale/hu.js +54 -0
  85. package/dist/runtime/locale/index.d.ts +5 -2
  86. package/dist/runtime/locale/index.js +5 -2
  87. package/dist/runtime/locale/km.d.ts +2 -0
  88. package/dist/runtime/locale/km.js +54 -0
  89. package/dist/runtime/locale/nb_no.d.ts +2 -0
  90. package/dist/runtime/locale/nb_no.js +54 -0
  91. package/dist/runtime/locale/zh_cn.d.ts +2 -0
  92. package/dist/runtime/locale/{zh_hans.js → zh_cn.js} +1 -1
  93. package/dist/runtime/locale/zh_tw.d.ts +2 -0
  94. package/dist/runtime/locale/{zh_hant.js → zh_tw.js} +1 -1
  95. package/dist/runtime/plugins/colors.js +7 -4
  96. package/dist/runtime/types/form.d.ts +21 -12
  97. package/dist/runtime/utils/form.js +3 -5
  98. package/dist/runtime/utils/tv.js +2 -2
  99. package/dist/runtime/vue/components/Link.vue +2 -2
  100. package/dist/shared/{ui.BKsd22-Q.mjs → ui.CENZ17mM.mjs} +72 -16
  101. package/dist/shared/{ui.DCjJwb6l.cjs → ui.ClMXjgLK.cjs} +72 -16
  102. package/dist/unplugin.cjs +1 -1
  103. package/dist/unplugin.mjs +1 -1
  104. package/dist/vite.cjs +1 -1
  105. package/dist/vite.mjs +1 -1
  106. package/package.json +22 -23
  107. package/dist/client/devtools/_nuxt/builds/meta/1f5fbd7b-9d97-480e-9ae4-e02b4ff7018b.json +0 -1
  108. package/dist/client/devtools/_nuxt/entry.qOdop8tq.css +0 -1
  109. package/dist/client/devtools/_nuxt/error-404.D-rS9BDk.css +0 -1
  110. package/dist/client/devtools/_nuxt/error-500.CfcCHs91.css +0 -1
  111. /package/dist/runtime/locale/{zh_hans.d.ts → he.d.ts} +0 -0
  112. /package/dist/runtime/locale/{zh_hant.d.ts → hi.d.ts} +0 -0
@@ -23,9 +23,7 @@ export function isStandardSchema(schema) {
23
23
  return "~standard" in schema;
24
24
  }
25
25
  export async function validateStandardSchema(state, schema) {
26
- const result = await schema["~standard"].validate({
27
- value: state
28
- });
26
+ const result = await schema["~standard"].validate(state);
29
27
  if (result.issues) {
30
28
  return {
31
29
  errors: result.issues?.map((issue) => ({
@@ -141,14 +139,14 @@ export function validateSchema(state, schema) {
141
139
  return validateZodSchema(state, schema);
142
140
  } else if (isJoiSchema(schema)) {
143
141
  return validateJoiSchema(state, schema);
142
+ } else if (isStandardSchema(schema)) {
143
+ return validateStandardSchema(state, schema);
144
144
  } else if (isValibotSchema(schema)) {
145
145
  return validateValibotSchema(state, schema);
146
146
  } else if (isYupSchema(schema)) {
147
147
  return validateYupSchema(state, schema);
148
148
  } else if (isSuperStructSchema(schema)) {
149
149
  return validateSuperstructSchema(state, schema);
150
- } else if (isStandardSchema(schema)) {
151
- return validateStandardSchema(state, schema);
152
150
  } else {
153
151
  throw new Error("Form validation failed: Unsupported form schema");
154
152
  }
@@ -1,4 +1,4 @@
1
1
  import { createTV } from "tailwind-variants";
2
2
  import _appConfig from "#build/app.config";
3
- const appConfig = _appConfig;
4
- export const tv = createTV(appConfig.ui?.tv);
3
+ const appConfigTv = _appConfig;
4
+ export const tv = createTV(appConfigTv.ui?.tv);
@@ -52,9 +52,9 @@ interface NuxtLinkProps extends Omit<RouterLinkProps, 'to'> {
52
52
  noPrefetch?: boolean
53
53
  }
54
54
 
55
- const appConfig = _appConfig as AppConfig & { ui: { link: Partial<typeof theme> } }
55
+ const appConfigLink = _appConfig as AppConfig & { ui: { link: Partial<typeof theme> } }
56
56
 
57
- const link = tv({ extend: tv(theme), ...(appConfig.ui?.link || {}) })
57
+ const link = tv({ extend: tv(theme), ...(appConfigLink.ui?.link || {}) })
58
58
 
59
59
  export interface LinkProps extends NuxtLinkProps {
60
60
  /**
@@ -81,7 +81,7 @@ const alert = (options) => ({
81
81
  icon: "shrink-0 size-5",
82
82
  avatar: "shrink-0",
83
83
  avatarSize: "2xl",
84
- actions: "flex gap-1.5 shrink-0",
84
+ actions: "flex flex-wrap gap-1.5 shrink-0",
85
85
  close: "p-0.5"
86
86
  },
87
87
  variants: {
@@ -164,7 +164,7 @@ const alert = (options) => ({
164
164
  const avatar = {
165
165
  slots: {
166
166
  root: "inline-flex items-center justify-center shrink-0 select-none overflow-hidden rounded-full align-middle bg-[var(--ui-bg-elevated)]",
167
- image: "h-full w-full rounded-[inherit] object-cover",
167
+ image: "h-full w-full rounded-[inherit] object-cover data-[error]:hidden",
168
168
  fallback: "font-medium leading-none text-[var(--ui-text-muted)] truncate",
169
169
  icon: "text-[var(--ui-text-muted)] shrink-0"
170
170
  },
@@ -472,7 +472,6 @@ const button = (options) => ({
472
472
  block: {
473
473
  true: {
474
474
  base: "w-full justify-center",
475
- leadingAvatarSize: "xs",
476
475
  trailingIcon: "ms-auto"
477
476
  }
478
477
  },
@@ -915,7 +914,7 @@ const container = {
915
914
 
916
915
  const contextMenu = (options) => ({
917
916
  slots: {
918
- content: "min-w-32 bg-[var(--ui-bg)] shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-[var(--ui-border)] divide-y divide-[var(--ui-border)] overflow-y-auto scroll-py-1 data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] pointer-events-auto",
917
+ content: "min-w-32 bg-[var(--ui-bg)] shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-[var(--ui-border)] divide-y divide-[var(--ui-border)] overflow-y-auto scroll-py-1 data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]",
919
918
  group: "p-1 isolate",
920
919
  label: "w-full flex items-center font-semibold text-[var(--ui-text-highlighted)]",
921
920
  separator: "-mx-1 my-1 h-px bg-[var(--ui-border)]",
@@ -1067,7 +1066,7 @@ const drawer = {
1067
1066
 
1068
1067
  const dropdownMenu = (options) => ({
1069
1068
  slots: {
1070
- content: "min-w-32 bg-[var(--ui-bg)] shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-[var(--ui-border)] divide-y divide-[var(--ui-border)] overflow-y-auto scroll-py-1 data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] pointer-events-auto",
1069
+ content: "min-w-32 bg-[var(--ui-bg)] shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-[var(--ui-border)] divide-y divide-[var(--ui-border)] overflow-y-auto scroll-py-1 data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]",
1071
1070
  arrow: "fill-[var(--ui-border)]",
1072
1071
  group: "p-1 isolate",
1073
1072
  label: "w-full flex items-center font-semibold text-[var(--ui-text-highlighted)]",
@@ -1650,6 +1649,7 @@ const navigationMenu = (options) => ({
1650
1649
  slots: {
1651
1650
  root: "relative flex gap-1.5 [&>div]:min-w-0",
1652
1651
  list: "isolate min-w-0",
1652
+ label: "w-full flex items-center gap-1.5 font-semibold text-xs/5 text-[var(--ui-text-highlighted)] px-2.5 py-1.5",
1653
1653
  item: "min-w-0",
1654
1654
  link: "group relative w-full flex items-center gap-1.5 font-medium text-sm before:absolute before:z-[-1] before:rounded-[calc(var(--ui-radius)*1.5)] focus:outline-none focus-visible:outline-none dark:focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2",
1655
1655
  linkLeadingIcon: "shrink-0 size-5",
@@ -1670,9 +1670,9 @@ const navigationMenu = (options) => ({
1670
1670
  childLinkLabelExternalIcon: "inline-block size-3 align-top text-[var(--ui-text-dimmed)]",
1671
1671
  childLinkDescription: "text-sm text-[var(--ui-text-muted)]",
1672
1672
  separator: "px-2 h-px bg-[var(--ui-border)]",
1673
- viewportWrapper: "absolute top-full left-0 flex w-full justify-center",
1674
- viewport: "relative overflow-hidden bg-[var(--ui-bg)] shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-[var(--ui-border)] h-[var(--reka-navigation-menu-viewport-height)] w-full transition-[width,height] origin-[top_center] data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]",
1675
- content: "absolute top-0 left-0 w-full data-[motion=from-start]:animate-[enter-from-left_200ms_ease] data-[motion=from-end]:animate-[enter-from-right_200ms_ease] data-[motion=to-start]:animate-[exit-to-left_200ms_ease] data-[motion=to-end]:animate-[exit-to-right_200ms_ease]",
1673
+ viewportWrapper: "absolute top-full left-0 flex w-full",
1674
+ viewport: "relative overflow-hidden bg-[var(--ui-bg)] shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-[var(--ui-border)] h-[var(--reka-navigation-menu-viewport-height)] w-full transition-[width,height,left] duration-200 origin-[top_center] data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]",
1675
+ content: "absolute top-0 left-0 w-full",
1676
1676
  indicator: "absolute data-[state=visible]:animate-[fade-in_100ms_ease-out] data-[state=hidden]:animate-[fade-out_100ms_ease-in] data-[state=hidden]:opacity-0 bottom-0 z-[1] w-[var(--reka-navigation-menu-indicator-size)] translate-x-[var(--reka-navigation-menu-indicator-position)] flex h-2.5 items-end justify-center overflow-hidden transition-[translate,width] duration-200",
1677
1677
  arrow: "relative top-[50%] size-2.5 rotate-45 border border-[var(--ui-border)] bg-[var(--ui-bg)] z-[1] rounded-[calc(var(--ui-radius)/2)]"
1678
1678
  },
@@ -1701,13 +1701,22 @@ const navigationMenu = (options) => ({
1701
1701
  list: "flex items-center",
1702
1702
  item: "py-2",
1703
1703
  link: "px-2.5 py-1.5 before:inset-x-px before:inset-y-0",
1704
- childList: "grid grid-cols-2 gap-2 p-2"
1704
+ childList: "grid p-2"
1705
1705
  },
1706
1706
  vertical: {
1707
1707
  root: "flex-col",
1708
- link: "flex-row px-2.5 py-1.5 before:inset-y-px before:inset-x-0",
1709
- childList: "ms-5 border-s border-[var(--ui-border)]",
1710
- childItem: "ps-1.5 -ms-px"
1708
+ link: "flex-row px-2.5 py-1.5 before:inset-y-px before:inset-x-0"
1709
+ }
1710
+ },
1711
+ contentOrientation: {
1712
+ horizontal: {
1713
+ viewport: "",
1714
+ viewportWrapper: "justify-center",
1715
+ content: "data-[motion=from-start]:animate-[enter-from-left_200ms_ease] data-[motion=from-end]:animate-[enter-from-right_200ms_ease] data-[motion=to-start]:animate-[exit-to-left_200ms_ease] data-[motion=to-end]:animate-[exit-to-right_200ms_ease]"
1716
+ },
1717
+ vertical: {
1718
+ viewport: "sm:w-[var(--reka-navigation-menu-viewport-width)] left-[var(--reka-navigation-menu-viewport-left)]",
1719
+ content: ""
1711
1720
  }
1712
1721
  },
1713
1722
  active: {
@@ -1732,9 +1741,25 @@ const navigationMenu = (options) => ({
1732
1741
  },
1733
1742
  level: {
1734
1743
  true: ""
1744
+ },
1745
+ collapsed: {
1746
+ true: ""
1735
1747
  }
1736
1748
  },
1737
1749
  compoundVariants: [{
1750
+ orientation: "horizontal",
1751
+ contentOrientation: "horizontal",
1752
+ class: {
1753
+ childList: "grid-cols-2 gap-2"
1754
+ }
1755
+ }, {
1756
+ orientation: "horizontal",
1757
+ contentOrientation: "vertical",
1758
+ class: {
1759
+ childList: "gap-1",
1760
+ content: "w-60"
1761
+ }
1762
+ }, {
1738
1763
  orientation: "horizontal",
1739
1764
  highlight: true,
1740
1765
  class: {
@@ -1753,8 +1778,17 @@ const navigationMenu = (options) => ({
1753
1778
  active: false,
1754
1779
  variant: "pill",
1755
1780
  class: {
1756
- link: ["hover:text-[var(--ui-text-highlighted)] hover:before:bg-[var(--ui-bg-elevated)]/50 data-[state=open]:text-[var(--ui-text-highlighted)]", options.theme.transitions && "transition-colors before:transition-colors"],
1757
- linkLeadingIcon: ["group-hover:text-[var(--ui-text)] group-data-[state=open]:text-[var(--ui-text)]", options.theme.transitions && "transition-colors"]
1781
+ link: ["hover:text-[var(--ui-text-highlighted)] hover:before:bg-[var(--ui-bg-elevated)]/50", options.theme.transitions && "transition-colors before:transition-colors"],
1782
+ linkLeadingIcon: ["group-hover:text-[var(--ui-text)]", options.theme.transitions && "transition-colors"]
1783
+ }
1784
+ }, {
1785
+ disabled: false,
1786
+ active: false,
1787
+ variant: "pill",
1788
+ orientation: "horizontal",
1789
+ class: {
1790
+ link: "data-[state=open]:text-[var(--ui-text-highlighted)]",
1791
+ linkLeadingIcon: "group-data-[state=open]:text-[var(--ui-text)]"
1758
1792
  }
1759
1793
  }, {
1760
1794
  disabled: false,
@@ -1808,8 +1842,17 @@ const navigationMenu = (options) => ({
1808
1842
  active: false,
1809
1843
  variant: "link",
1810
1844
  class: {
1811
- link: ["hover:text-[var(--ui-text-highlighted)] data-[state=open]:text-[var(--ui-text-highlighted)]", options.theme.transitions && "transition-colors"],
1812
- linkLeadingIcon: ["group-hover:text-[var(--ui-text)] group-data-[state=open]:text-[var(--ui-text)]", options.theme.transitions && "transition-colors"]
1845
+ link: ["hover:text-[var(--ui-text-highlighted)]", options.theme.transitions && "transition-colors"],
1846
+ linkLeadingIcon: ["group-hover:text-[var(--ui-text)]", options.theme.transitions && "transition-colors"]
1847
+ }
1848
+ }, {
1849
+ disabled: false,
1850
+ active: false,
1851
+ variant: "link",
1852
+ orientation: "horizontal",
1853
+ class: {
1854
+ link: "data-[state=open]:text-[var(--ui-text-highlighted)]",
1855
+ linkLeadingIcon: "group-data-[state=open]:text-[var(--ui-text)]"
1813
1856
  }
1814
1857
  }, ...(options.theme.colors || []).map((color) => ({
1815
1858
  color,
@@ -1843,6 +1886,19 @@ const navigationMenu = (options) => ({
1843
1886
  class: {
1844
1887
  link: "after:bg-[var(--ui-bg-inverted)]"
1845
1888
  }
1889
+ }, {
1890
+ orientation: "vertical",
1891
+ collapsed: false,
1892
+ class: {
1893
+ childList: "ms-5 border-s border-[var(--ui-border)]",
1894
+ childItem: "ps-1.5 -ms-px"
1895
+ }
1896
+ }, {
1897
+ orientation: "vertical",
1898
+ collapsed: true,
1899
+ class: {
1900
+ link: "px-1.5"
1901
+ }
1846
1902
  }],
1847
1903
  defaultVariants: {
1848
1904
  color: "primary",
@@ -83,7 +83,7 @@ const alert = (options) => ({
83
83
  icon: "shrink-0 size-5",
84
84
  avatar: "shrink-0",
85
85
  avatarSize: "2xl",
86
- actions: "flex gap-1.5 shrink-0",
86
+ actions: "flex flex-wrap gap-1.5 shrink-0",
87
87
  close: "p-0.5"
88
88
  },
89
89
  variants: {
@@ -166,7 +166,7 @@ const alert = (options) => ({
166
166
  const avatar = {
167
167
  slots: {
168
168
  root: "inline-flex items-center justify-center shrink-0 select-none overflow-hidden rounded-full align-middle bg-[var(--ui-bg-elevated)]",
169
- image: "h-full w-full rounded-[inherit] object-cover",
169
+ image: "h-full w-full rounded-[inherit] object-cover data-[error]:hidden",
170
170
  fallback: "font-medium leading-none text-[var(--ui-text-muted)] truncate",
171
171
  icon: "text-[var(--ui-text-muted)] shrink-0"
172
172
  },
@@ -474,7 +474,6 @@ const button = (options) => ({
474
474
  block: {
475
475
  true: {
476
476
  base: "w-full justify-center",
477
- leadingAvatarSize: "xs",
478
477
  trailingIcon: "ms-auto"
479
478
  }
480
479
  },
@@ -917,7 +916,7 @@ const container = {
917
916
 
918
917
  const contextMenu = (options) => ({
919
918
  slots: {
920
- content: "min-w-32 bg-[var(--ui-bg)] shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-[var(--ui-border)] divide-y divide-[var(--ui-border)] overflow-y-auto scroll-py-1 data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] pointer-events-auto",
919
+ content: "min-w-32 bg-[var(--ui-bg)] shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-[var(--ui-border)] divide-y divide-[var(--ui-border)] overflow-y-auto scroll-py-1 data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]",
921
920
  group: "p-1 isolate",
922
921
  label: "w-full flex items-center font-semibold text-[var(--ui-text-highlighted)]",
923
922
  separator: "-mx-1 my-1 h-px bg-[var(--ui-border)]",
@@ -1069,7 +1068,7 @@ const drawer = {
1069
1068
 
1070
1069
  const dropdownMenu = (options) => ({
1071
1070
  slots: {
1072
- content: "min-w-32 bg-[var(--ui-bg)] shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-[var(--ui-border)] divide-y divide-[var(--ui-border)] overflow-y-auto scroll-py-1 data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] pointer-events-auto",
1071
+ content: "min-w-32 bg-[var(--ui-bg)] shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-[var(--ui-border)] divide-y divide-[var(--ui-border)] overflow-y-auto scroll-py-1 data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]",
1073
1072
  arrow: "fill-[var(--ui-border)]",
1074
1073
  group: "p-1 isolate",
1075
1074
  label: "w-full flex items-center font-semibold text-[var(--ui-text-highlighted)]",
@@ -1652,6 +1651,7 @@ const navigationMenu = (options) => ({
1652
1651
  slots: {
1653
1652
  root: "relative flex gap-1.5 [&>div]:min-w-0",
1654
1653
  list: "isolate min-w-0",
1654
+ label: "w-full flex items-center gap-1.5 font-semibold text-xs/5 text-[var(--ui-text-highlighted)] px-2.5 py-1.5",
1655
1655
  item: "min-w-0",
1656
1656
  link: "group relative w-full flex items-center gap-1.5 font-medium text-sm before:absolute before:z-[-1] before:rounded-[calc(var(--ui-radius)*1.5)] focus:outline-none focus-visible:outline-none dark:focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2",
1657
1657
  linkLeadingIcon: "shrink-0 size-5",
@@ -1672,9 +1672,9 @@ const navigationMenu = (options) => ({
1672
1672
  childLinkLabelExternalIcon: "inline-block size-3 align-top text-[var(--ui-text-dimmed)]",
1673
1673
  childLinkDescription: "text-sm text-[var(--ui-text-muted)]",
1674
1674
  separator: "px-2 h-px bg-[var(--ui-border)]",
1675
- viewportWrapper: "absolute top-full left-0 flex w-full justify-center",
1676
- viewport: "relative overflow-hidden bg-[var(--ui-bg)] shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-[var(--ui-border)] h-[var(--reka-navigation-menu-viewport-height)] w-full transition-[width,height] origin-[top_center] data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]",
1677
- content: "absolute top-0 left-0 w-full data-[motion=from-start]:animate-[enter-from-left_200ms_ease] data-[motion=from-end]:animate-[enter-from-right_200ms_ease] data-[motion=to-start]:animate-[exit-to-left_200ms_ease] data-[motion=to-end]:animate-[exit-to-right_200ms_ease]",
1675
+ viewportWrapper: "absolute top-full left-0 flex w-full",
1676
+ viewport: "relative overflow-hidden bg-[var(--ui-bg)] shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-[var(--ui-border)] h-[var(--reka-navigation-menu-viewport-height)] w-full transition-[width,height,left] duration-200 origin-[top_center] data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]",
1677
+ content: "absolute top-0 left-0 w-full",
1678
1678
  indicator: "absolute data-[state=visible]:animate-[fade-in_100ms_ease-out] data-[state=hidden]:animate-[fade-out_100ms_ease-in] data-[state=hidden]:opacity-0 bottom-0 z-[1] w-[var(--reka-navigation-menu-indicator-size)] translate-x-[var(--reka-navigation-menu-indicator-position)] flex h-2.5 items-end justify-center overflow-hidden transition-[translate,width] duration-200",
1679
1679
  arrow: "relative top-[50%] size-2.5 rotate-45 border border-[var(--ui-border)] bg-[var(--ui-bg)] z-[1] rounded-[calc(var(--ui-radius)/2)]"
1680
1680
  },
@@ -1703,13 +1703,22 @@ const navigationMenu = (options) => ({
1703
1703
  list: "flex items-center",
1704
1704
  item: "py-2",
1705
1705
  link: "px-2.5 py-1.5 before:inset-x-px before:inset-y-0",
1706
- childList: "grid grid-cols-2 gap-2 p-2"
1706
+ childList: "grid p-2"
1707
1707
  },
1708
1708
  vertical: {
1709
1709
  root: "flex-col",
1710
- link: "flex-row px-2.5 py-1.5 before:inset-y-px before:inset-x-0",
1711
- childList: "ms-5 border-s border-[var(--ui-border)]",
1712
- childItem: "ps-1.5 -ms-px"
1710
+ link: "flex-row px-2.5 py-1.5 before:inset-y-px before:inset-x-0"
1711
+ }
1712
+ },
1713
+ contentOrientation: {
1714
+ horizontal: {
1715
+ viewport: "",
1716
+ viewportWrapper: "justify-center",
1717
+ content: "data-[motion=from-start]:animate-[enter-from-left_200ms_ease] data-[motion=from-end]:animate-[enter-from-right_200ms_ease] data-[motion=to-start]:animate-[exit-to-left_200ms_ease] data-[motion=to-end]:animate-[exit-to-right_200ms_ease]"
1718
+ },
1719
+ vertical: {
1720
+ viewport: "sm:w-[var(--reka-navigation-menu-viewport-width)] left-[var(--reka-navigation-menu-viewport-left)]",
1721
+ content: ""
1713
1722
  }
1714
1723
  },
1715
1724
  active: {
@@ -1734,9 +1743,25 @@ const navigationMenu = (options) => ({
1734
1743
  },
1735
1744
  level: {
1736
1745
  true: ""
1746
+ },
1747
+ collapsed: {
1748
+ true: ""
1737
1749
  }
1738
1750
  },
1739
1751
  compoundVariants: [{
1752
+ orientation: "horizontal",
1753
+ contentOrientation: "horizontal",
1754
+ class: {
1755
+ childList: "grid-cols-2 gap-2"
1756
+ }
1757
+ }, {
1758
+ orientation: "horizontal",
1759
+ contentOrientation: "vertical",
1760
+ class: {
1761
+ childList: "gap-1",
1762
+ content: "w-60"
1763
+ }
1764
+ }, {
1740
1765
  orientation: "horizontal",
1741
1766
  highlight: true,
1742
1767
  class: {
@@ -1755,8 +1780,17 @@ const navigationMenu = (options) => ({
1755
1780
  active: false,
1756
1781
  variant: "pill",
1757
1782
  class: {
1758
- link: ["hover:text-[var(--ui-text-highlighted)] hover:before:bg-[var(--ui-bg-elevated)]/50 data-[state=open]:text-[var(--ui-text-highlighted)]", options.theme.transitions && "transition-colors before:transition-colors"],
1759
- linkLeadingIcon: ["group-hover:text-[var(--ui-text)] group-data-[state=open]:text-[var(--ui-text)]", options.theme.transitions && "transition-colors"]
1783
+ link: ["hover:text-[var(--ui-text-highlighted)] hover:before:bg-[var(--ui-bg-elevated)]/50", options.theme.transitions && "transition-colors before:transition-colors"],
1784
+ linkLeadingIcon: ["group-hover:text-[var(--ui-text)]", options.theme.transitions && "transition-colors"]
1785
+ }
1786
+ }, {
1787
+ disabled: false,
1788
+ active: false,
1789
+ variant: "pill",
1790
+ orientation: "horizontal",
1791
+ class: {
1792
+ link: "data-[state=open]:text-[var(--ui-text-highlighted)]",
1793
+ linkLeadingIcon: "group-data-[state=open]:text-[var(--ui-text)]"
1760
1794
  }
1761
1795
  }, {
1762
1796
  disabled: false,
@@ -1810,8 +1844,17 @@ const navigationMenu = (options) => ({
1810
1844
  active: false,
1811
1845
  variant: "link",
1812
1846
  class: {
1813
- link: ["hover:text-[var(--ui-text-highlighted)] data-[state=open]:text-[var(--ui-text-highlighted)]", options.theme.transitions && "transition-colors"],
1814
- linkLeadingIcon: ["group-hover:text-[var(--ui-text)] group-data-[state=open]:text-[var(--ui-text)]", options.theme.transitions && "transition-colors"]
1847
+ link: ["hover:text-[var(--ui-text-highlighted)]", options.theme.transitions && "transition-colors"],
1848
+ linkLeadingIcon: ["group-hover:text-[var(--ui-text)]", options.theme.transitions && "transition-colors"]
1849
+ }
1850
+ }, {
1851
+ disabled: false,
1852
+ active: false,
1853
+ variant: "link",
1854
+ orientation: "horizontal",
1855
+ class: {
1856
+ link: "data-[state=open]:text-[var(--ui-text-highlighted)]",
1857
+ linkLeadingIcon: "group-data-[state=open]:text-[var(--ui-text)]"
1815
1858
  }
1816
1859
  }, ...(options.theme.colors || []).map((color) => ({
1817
1860
  color,
@@ -1845,6 +1888,19 @@ const navigationMenu = (options) => ({
1845
1888
  class: {
1846
1889
  link: "after:bg-[var(--ui-bg-inverted)]"
1847
1890
  }
1891
+ }, {
1892
+ orientation: "vertical",
1893
+ collapsed: false,
1894
+ class: {
1895
+ childList: "ms-5 border-s border-[var(--ui-border)]",
1896
+ childItem: "ps-1.5 -ms-px"
1897
+ }
1898
+ }, {
1899
+ orientation: "vertical",
1900
+ collapsed: true,
1901
+ class: {
1902
+ link: "px-1.5"
1903
+ }
1848
1904
  }],
1849
1905
  defaultVariants: {
1850
1906
  color: "primary",
package/dist/unplugin.cjs CHANGED
@@ -6,7 +6,7 @@ const unplugin = require('unplugin');
6
6
  const AutoImport = require('unplugin-auto-import');
7
7
  const defu = require('defu');
8
8
  const tailwind = require('@tailwindcss/vite');
9
- const templates = require('./shared/ui.DCjJwb6l.cjs');
9
+ const templates = require('./shared/ui.ClMXjgLK.cjs');
10
10
  const tinyglobby = require('tinyglobby');
11
11
  const knitwork = require('knitwork');
12
12
  const MagicString = require('magic-string');
package/dist/unplugin.mjs CHANGED
@@ -4,7 +4,7 @@ import { createUnplugin } from 'unplugin';
4
4
  import AutoImport from 'unplugin-auto-import';
5
5
  import { defu } from 'defu';
6
6
  import tailwind from '@tailwindcss/vite';
7
- import { g as getTemplates, d as defaultOptions, r as resolveColors, a as getDefaultUiConfig } from './shared/ui.BKsd22-Q.mjs';
7
+ import { g as getTemplates, d as defaultOptions, r as resolveColors, a as getDefaultUiConfig } from './shared/ui.CENZ17mM.mjs';
8
8
  import { globSync } from 'tinyglobby';
9
9
  import { genSafeVariableName } from 'knitwork';
10
10
  import MagicString from 'magic-string';
package/dist/vite.cjs CHANGED
@@ -7,7 +7,7 @@ require('unplugin');
7
7
  require('unplugin-auto-import');
8
8
  require('defu');
9
9
  require('@tailwindcss/vite');
10
- require('./shared/ui.DCjJwb6l.cjs');
10
+ require('./shared/ui.ClMXjgLK.cjs');
11
11
  require('../dist/runtime/utils/index.js');
12
12
  require('scule');
13
13
  require('@nuxt/kit');
package/dist/vite.mjs CHANGED
@@ -5,7 +5,7 @@ import 'unplugin';
5
5
  import 'unplugin-auto-import';
6
6
  import 'defu';
7
7
  import '@tailwindcss/vite';
8
- import './shared/ui.BKsd22-Q.mjs';
8
+ import './shared/ui.CENZ17mM.mjs';
9
9
  import '../dist/runtime/utils/index.js';
10
10
  import 'scule';
11
11
  import '@nuxt/kit';
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@nuxt/ui",
3
3
  "description": "A UI Library for Modern Web Apps, powered by Vue & Tailwind CSS.",
4
- "version": "3.0.0-alpha.11",
5
- "packageManager": "pnpm@9.15.3",
4
+ "version": "3.0.0-alpha.12",
5
+ "packageManager": "pnpm@9.15.4",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "git+https://github.com/nuxt/ui.git"
@@ -60,7 +60,7 @@
60
60
  "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground && nuxi prepare docs && nuxi prepare devtools && vite build playground-vue",
61
61
  "devtools": "NUXT_UI_DEVTOOLS_LOCAL=true nuxi dev playground",
62
62
  "devtools:build": "nuxi generate devtools",
63
- "devtools:prepare": "nuxt-component-meta playground --outputDir ../src/devtools/.component-meta/",
63
+ "devtools:prepare": "DEVTOOLS=true nuxt-component-meta playground --outputDir ../src/devtools/.component-meta/",
64
64
  "docs": "DEV=true nuxi dev docs",
65
65
  "docs:build": "nuxi build docs",
66
66
  "docs:prepare": "nuxt-component-meta docs",
@@ -74,23 +74,22 @@
74
74
  },
75
75
  "dependencies": {
76
76
  "@iconify/vue": "^4.3.0",
77
- "@internationalized/date": "^3.6.0",
77
+ "@internationalized/date": "^3.7.0",
78
78
  "@internationalized/number": "^3.6.0",
79
79
  "@nuxt/devtools-kit": "^1.7.0",
80
80
  "@nuxt/fonts": "^0.10.3",
81
81
  "@nuxt/icon": "^1.10.3",
82
- "@nuxt/kit": "^3.15.1",
83
- "@nuxt/schema": "^3.15.1",
82
+ "@nuxt/kit": "^3.15.3",
83
+ "@nuxt/schema": "^3.15.3",
84
84
  "@nuxtjs/color-mode": "^3.5.2",
85
- "@tailwindcss/postcss": "4.0.0-beta.9",
86
- "@tailwindcss/vite": "4.0.0-beta.9",
85
+ "@tailwindcss/postcss": "4.0.0",
86
+ "@tailwindcss/vite": "4.0.0",
87
87
  "@tanstack/vue-table": "^8.20.5",
88
- "@types/color": "^4.2.0",
89
- "@unhead/vue": "^1.11.16",
90
- "@vueuse/core": "^12.4.0",
91
- "@vueuse/integrations": "^12.4.0",
92
- "color": "^4.2.3",
93
- "consola": "^3.3.3",
88
+ "@unhead/vue": "^1.11.18",
89
+ "@vueuse/core": "^12.5.0",
90
+ "@vueuse/integrations": "^12.5.0",
91
+ "colortranslator": "^4.1.0",
92
+ "consola": "^3.4.0",
94
93
  "defu": "^6.1.4",
95
94
  "embla-carousel-auto-height": "^8.5.2",
96
95
  "embla-carousel-auto-scroll": "^8.5.2",
@@ -105,12 +104,12 @@
105
104
  "magic-string": "^0.30.17",
106
105
  "mlly": "^1.7.4",
107
106
  "ohash": "^1.1.4",
107
+ "pathe": "^2.0.2",
108
108
  "reka-ui": "1.0.0-alpha.8",
109
- "pathe": "^2.0.1",
110
109
  "scule": "^1.3.0",
111
110
  "sirv": "^3.0.0",
112
- "tailwind-variants": "^0.3.0",
113
- "tailwindcss": "4.0.0-beta.9",
111
+ "tailwind-variants": "^0.3.1",
112
+ "tailwindcss": "4.0.0",
114
113
  "tinyglobby": "^0.2.10",
115
114
  "unplugin": "^2.1.2",
116
115
  "unplugin-auto-import": "^19.0.0",
@@ -122,19 +121,19 @@
122
121
  "@nuxt/module-builder": "^0.8.4",
123
122
  "@nuxt/test-utils": "^3.15.4",
124
123
  "@release-it/conventional-changelog": "^10.0.0",
125
- "@standard-schema/spec": "1.0.0-rc.0",
124
+ "@standard-schema/spec": "1.0.0",
126
125
  "@vue/test-utils": "^2.4.6",
127
126
  "embla-carousel": "^8.5.2",
128
- "eslint": "^9.18.0",
127
+ "eslint": "^9.19.0",
129
128
  "happy-dom": "^15.7.4",
130
129
  "joi": "^17.13.3",
131
130
  "knitwork": "^1.2.0",
132
- "nuxt": "^3.15.1",
133
- "nuxt-component-meta": "^0.9.0",
134
- "release-it": "^18.1.1",
131
+ "nuxt": "^3.15.3",
132
+ "nuxt-component-meta": "^0.10.0",
133
+ "release-it": "^18.1.2",
135
134
  "superstruct": "^2.0.2",
136
135
  "valibot": "^0.42.1",
137
- "vitest": "^2.1.8",
136
+ "vitest": "^3.0.4",
138
137
  "vitest-environment-nuxt": "^1.0.1",
139
138
  "vue-tsc": "^2.2.0",
140
139
  "yup": "^1.6.1",
@@ -1 +0,0 @@
1
- {"id":"1f5fbd7b-9d97-480e-9ae4-e02b4ff7018b","timestamp":1736765675226,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}