@nuxt/ui 3.1.1 → 3.1.3

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 (126) hide show
  1. package/.nuxt/ui/alert.ts +0 -5
  2. package/.nuxt/ui/badge.ts +30 -7
  3. package/.nuxt/ui/button-group.ts +0 -13
  4. package/.nuxt/ui/button.ts +2 -7
  5. package/.nuxt/ui/calendar.ts +1 -1
  6. package/.nuxt/ui/carousel.ts +0 -5
  7. package/.nuxt/ui/checkbox-group.ts +144 -1
  8. package/.nuxt/ui/color-picker.ts +2 -2
  9. package/.nuxt/ui/context-menu.ts +2 -1
  10. package/.nuxt/ui/dropdown-menu.ts +2 -1
  11. package/.nuxt/ui/input-menu.ts +4 -13
  12. package/.nuxt/ui/input-number.ts +10 -0
  13. package/.nuxt/ui/input.ts +2 -11
  14. package/.nuxt/ui/link.ts +12 -5
  15. package/.nuxt/ui/navigation-menu.ts +43 -34
  16. package/.nuxt/ui/radio-group.ts +1 -1
  17. package/.nuxt/ui/select-menu.ts +4 -13
  18. package/.nuxt/ui/select.ts +4 -13
  19. package/.nuxt/ui/tabs.ts +4 -3
  20. package/.nuxt/ui/textarea.ts +2 -11
  21. package/.nuxt/ui/toast.ts +0 -5
  22. package/.nuxt/ui/tooltip.ts +1 -1
  23. package/.nuxt/ui.css +4 -1
  24. package/cli/templates.mjs +2 -2
  25. package/dist/module.json +1 -1
  26. package/dist/module.mjs +14 -5
  27. package/dist/runtime/components/Accordion.vue +9 -9
  28. package/dist/runtime/components/Accordion.vue.d.ts +2 -0
  29. package/dist/runtime/components/Alert.vue +1 -1
  30. package/dist/runtime/components/Avatar.vue +2 -2
  31. package/dist/runtime/components/AvatarGroup.vue +1 -1
  32. package/dist/runtime/components/Badge.vue +5 -3
  33. package/dist/runtime/components/Badge.vue.d.ts +2 -0
  34. package/dist/runtime/components/Breadcrumb.vue +8 -8
  35. package/dist/runtime/components/Breadcrumb.vue.d.ts +2 -0
  36. package/dist/runtime/components/Button.vue +2 -3
  37. package/dist/runtime/components/Button.vue.d.ts +1 -1
  38. package/dist/runtime/components/Calendar.vue +2 -1
  39. package/dist/runtime/components/Card.vue +1 -1
  40. package/dist/runtime/components/Carousel.vue +5 -2
  41. package/dist/runtime/components/Carousel.vue.d.ts +6 -1
  42. package/dist/runtime/components/Checkbox.vue +2 -2
  43. package/dist/runtime/components/CheckboxGroup.vue +8 -5
  44. package/dist/runtime/components/CheckboxGroup.vue.d.ts +7 -1
  45. package/dist/runtime/components/Chip.vue +1 -1
  46. package/dist/runtime/components/Collapsible.vue +1 -1
  47. package/dist/runtime/components/ColorPicker.vue +1 -1
  48. package/dist/runtime/components/CommandPalette.vue +18 -18
  49. package/dist/runtime/components/CommandPalette.vue.d.ts +2 -0
  50. package/dist/runtime/components/ContextMenu.vue.d.ts +2 -0
  51. package/dist/runtime/components/ContextMenuContent.vue +69 -67
  52. package/dist/runtime/components/Drawer.vue +15 -1
  53. package/dist/runtime/components/DropdownMenu.vue.d.ts +2 -0
  54. package/dist/runtime/components/DropdownMenuContent.vue +71 -69
  55. package/dist/runtime/components/FormField.vue +5 -5
  56. package/dist/runtime/components/Input.vue +3 -2
  57. package/dist/runtime/components/Input.vue.d.ts +30 -29
  58. package/dist/runtime/components/InputMenu.vue +20 -20
  59. package/dist/runtime/components/InputMenu.vue.d.ts +210 -0
  60. package/dist/runtime/components/InputNumber.vue +13 -7
  61. package/dist/runtime/components/InputNumber.vue.d.ts +78 -0
  62. package/dist/runtime/components/Link.vue +5 -14
  63. package/dist/runtime/components/Modal.vue +2 -2
  64. package/dist/runtime/components/Modal.vue.d.ts +3 -0
  65. package/dist/runtime/components/NavigationMenu.vue +106 -41
  66. package/dist/runtime/components/NavigationMenu.vue.d.ts +38 -7
  67. package/dist/runtime/components/Pagination.vue +1 -1
  68. package/dist/runtime/components/PinInput.vue +1 -1
  69. package/dist/runtime/components/Popover.vue +4 -0
  70. package/dist/runtime/components/Popover.vue.d.ts +1 -0
  71. package/dist/runtime/components/Progress.vue +1 -1
  72. package/dist/runtime/components/RadioGroup.vue +8 -8
  73. package/dist/runtime/components/RadioGroup.vue.d.ts +2 -0
  74. package/dist/runtime/components/Select.vue +15 -15
  75. package/dist/runtime/components/Select.vue.d.ts +3 -1
  76. package/dist/runtime/components/SelectMenu.vue +16 -16
  77. package/dist/runtime/components/SelectMenu.vue.d.ts +2 -0
  78. package/dist/runtime/components/Separator.vue +1 -1
  79. package/dist/runtime/components/Slideover.vue +9 -2
  80. package/dist/runtime/components/Slideover.vue.d.ts +3 -0
  81. package/dist/runtime/components/Slider.vue +16 -4
  82. package/dist/runtime/components/Slider.vue.d.ts +26 -20
  83. package/dist/runtime/components/Stepper.vue +10 -10
  84. package/dist/runtime/components/Stepper.vue.d.ts +2 -0
  85. package/dist/runtime/components/Switch.vue +1 -1
  86. package/dist/runtime/components/Table.vue +2 -2
  87. package/dist/runtime/components/Tabs.vue +6 -6
  88. package/dist/runtime/components/Tabs.vue.d.ts +2 -0
  89. package/dist/runtime/components/Textarea.vue +7 -4
  90. package/dist/runtime/components/Textarea.vue.d.ts +30 -31
  91. package/dist/runtime/components/Toast.vue +3 -2
  92. package/dist/runtime/components/Toast.vue.d.ts +6 -0
  93. package/dist/runtime/components/Toaster.vue +4 -4
  94. package/dist/runtime/components/Toaster.vue.d.ts +6 -0
  95. package/dist/runtime/components/Tree.vue +10 -10
  96. package/dist/runtime/components/Tree.vue.d.ts +2 -0
  97. package/dist/runtime/composables/useFormField.d.ts +1 -1
  98. package/dist/runtime/composables/useFormField.js +2 -1
  99. package/dist/runtime/inertia/components/Link.vue +46 -60
  100. package/dist/runtime/inertia/components/Link.vue.d.ts +1 -1
  101. package/dist/runtime/inertia/components/LinkBase.vue +68 -0
  102. package/dist/runtime/inertia/components/LinkBase.vue.d.ts +25 -0
  103. package/dist/runtime/inertia/stubs.d.ts +1 -1
  104. package/dist/runtime/inertia/stubs.js +1 -1
  105. package/dist/runtime/locale/index.d.ts +7 -2
  106. package/dist/runtime/locale/index.js +7 -2
  107. package/dist/runtime/locale/ky.d.ts +3 -0
  108. package/dist/runtime/locale/ky.js +54 -0
  109. package/dist/runtime/locale/lt.d.ts +3 -0
  110. package/dist/runtime/locale/lt.js +54 -0
  111. package/dist/runtime/locale/mn.d.ts +3 -0
  112. package/dist/runtime/locale/mn.js +54 -0
  113. package/dist/runtime/locale/ms.d.ts +3 -0
  114. package/dist/runtime/locale/ms.js +54 -0
  115. package/dist/runtime/locale/sl.d.ts +3 -0
  116. package/dist/runtime/locale/sl.js +54 -0
  117. package/dist/runtime/utils/link.d.ts +1 -0
  118. package/dist/runtime/utils/link.js +12 -0
  119. package/dist/runtime/vue/components/Link.vue +27 -40
  120. package/dist/runtime/vue/composables/useAppConfig.js +3 -1
  121. package/dist/runtime/vue/stubs.d.ts +1 -1
  122. package/dist/runtime/vue/stubs.js +1 -1
  123. package/dist/shared/{ui.CbtTMMzt.mjs → ui.Bix4DSU4.mjs} +153 -52
  124. package/dist/unplugin.mjs +1 -1
  125. package/dist/vite.mjs +1 -1
  126. package/package.json +28 -28
@@ -21,7 +21,7 @@ const icons = {
21
21
  external: "i-lucide-arrow-up-right",
22
22
  folder: "i-lucide-folder",
23
23
  folderOpen: "i-lucide-folder-open",
24
- loading: "i-lucide-refresh-cw",
24
+ loading: "i-lucide-loader-circle",
25
25
  minus: "i-lucide-minus",
26
26
  plus: "i-lucide-plus",
27
27
  search: "i-lucide-search"
@@ -253,18 +253,18 @@ const avatarGroup = {
253
253
 
254
254
  const buttonGroupVariant = {
255
255
  buttonGroup: {
256
- horizontal: "not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none",
257
- vertical: "not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none"
256
+ horizontal: "not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]",
257
+ vertical: "not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]"
258
258
  }
259
259
  };
260
260
  const buttonGroupVariantWithRoot = {
261
261
  buttonGroup: {
262
262
  horizontal: {
263
- root: "group",
263
+ root: "group has-focus-visible:z-[1]",
264
264
  base: "group-not-only:group-first:rounded-e-none group-not-only:group-last:rounded-s-none group-not-last:group-not-first:rounded-none"
265
265
  },
266
266
  vertical: {
267
- root: "group",
267
+ root: "group has-focus-visible:z-[1]",
268
268
  base: "group-not-only:group-first:rounded-b-none group-not-only:group-last:rounded-t-none group-not-last:group-not-first:rounded-none"
269
269
  }
270
270
  }
@@ -338,6 +338,9 @@ const badge = (options) => ({
338
338
  leadingAvatarSize: "2xs",
339
339
  trailingIcon: "size-6"
340
340
  }
341
+ },
342
+ square: {
343
+ true: ""
341
344
  }
342
345
  },
343
346
  compoundVariants: [...(options.theme.colors || []).map((color) => ({
@@ -372,6 +375,26 @@ const badge = (options) => ({
372
375
  color: "neutral",
373
376
  variant: "subtle",
374
377
  class: "ring ring-inset ring-accented text-default bg-elevated"
378
+ }, {
379
+ size: "xs",
380
+ square: true,
381
+ class: "p-0.5"
382
+ }, {
383
+ size: "sm",
384
+ square: true,
385
+ class: "p-1"
386
+ }, {
387
+ size: "md",
388
+ square: true,
389
+ class: "p-1"
390
+ }, {
391
+ size: "lg",
392
+ square: true,
393
+ class: "p-1"
394
+ }, {
395
+ size: "xl",
396
+ square: true,
397
+ class: "p-1"
375
398
  }],
376
399
  defaultVariants: {
377
400
  color: "primary",
@@ -614,7 +637,7 @@ const calendar = (options) => ({
614
637
  }])),
615
638
  neutral: {
616
639
  headCell: "text-highlighted",
617
- cellTrigger: "focus-visible:ring-inverted data-[selected]:bg-inverted data-today:not-data-[selected]:text-inverted data-[highlighted]:bg-inverted/20 hover:not-data-[selected]:bg-inverted/10"
640
+ cellTrigger: "focus-visible:ring-inverted data-[selected]:bg-inverted data-today:not-data-[selected]:text-highlighted data-[highlighted]:bg-inverted/20 hover:not-data-[selected]:bg-inverted/10"
618
641
  }
619
642
  },
620
643
  size: {
@@ -842,7 +865,7 @@ const checkbox = (options) => ({
842
865
  }
843
866
  });
844
867
 
845
- const checkboxGroup = {
868
+ const checkboxGroup = (options) => ({
846
869
  slots: {
847
870
  root: "relative",
848
871
  fieldset: "flex gap-x-2",
@@ -858,6 +881,17 @@ const checkboxGroup = {
858
881
  fieldset: "flex-col"
859
882
  }
860
883
  },
884
+ color: {
885
+ ...Object.fromEntries((options.theme.colors || []).map((color) => [color, {}])),
886
+ neutral: {}
887
+ },
888
+ variant: {
889
+ list: {},
890
+ card: {},
891
+ table: {
892
+ item: "border border-muted"
893
+ }
894
+ },
861
895
  size: {
862
896
  xs: {
863
897
  fieldset: "gap-y-0.5",
@@ -886,10 +920,56 @@ const checkboxGroup = {
886
920
  }
887
921
  }
888
922
  },
923
+ compoundVariants: [
924
+ { size: "xs", variant: "table", class: { item: "p-2.5" } },
925
+ { size: "sm", variant: "table", class: { item: "p-3" } },
926
+ { size: "md", variant: "table", class: { item: "p-3.5" } },
927
+ { size: "lg", variant: "table", class: { item: "p-4" } },
928
+ { size: "xl", variant: "table", class: { item: "p-4.5" } },
929
+ {
930
+ orientation: "horizontal",
931
+ variant: "table",
932
+ class: {
933
+ item: "first-of-type:rounded-s-lg last-of-type:rounded-e-lg",
934
+ fieldset: "gap-0 -space-x-px"
935
+ }
936
+ },
937
+ {
938
+ orientation: "vertical",
939
+ variant: "table",
940
+ class: {
941
+ item: "first-of-type:rounded-t-lg last-of-type:rounded-b-lg",
942
+ fieldset: "gap-0 -space-y-px"
943
+ }
944
+ },
945
+ ...(options.theme.colors || []).map((color) => ({
946
+ color,
947
+ variant: "table",
948
+ class: {
949
+ item: `has-data-[state=checked]:bg-${color}/10 has-data-[state=checked]:border-${color}/50 has-data-[state=checked]:z-[1]`
950
+ }
951
+ })),
952
+ {
953
+ color: "neutral",
954
+ variant: "table",
955
+ class: {
956
+ item: "has-data-[state=checked]:bg-elevated has-data-[state=checked]:border-inverted/50 has-data-[state=checked]:z-[1]"
957
+ }
958
+ },
959
+ {
960
+ variant: "table",
961
+ disabled: true,
962
+ class: {
963
+ item: "cursor-not-allowed opacity-75"
964
+ }
965
+ }
966
+ ],
889
967
  defaultVariants: {
890
- size: "md"
968
+ size: "md",
969
+ variant: "list",
970
+ color: "primary"
891
971
  }
892
- };
972
+ });
893
973
 
894
974
  const chip = (options) => ({
895
975
  slots: {
@@ -960,10 +1040,10 @@ const colorPicker = {
960
1040
  slots: {
961
1041
  root: "data-[disabled]:opacity-75",
962
1042
  picker: "flex gap-4",
963
- selector: "rounded-md",
1043
+ selector: "rounded-md touch-none",
964
1044
  selectorBackground: "w-full h-full relative rounded-md",
965
1045
  selectorThumb: "-translate-y-1/2 -translate-x-1/2 absolute size-4 ring-2 ring-(--color-white) rounded-full cursor-pointer data-[disabled]:cursor-not-allowed",
966
- track: "w-[8px] relative rounded-md",
1046
+ track: "w-[8px] relative rounded-md touch-none",
967
1047
  trackThumb: "absolute transform -translate-y-1/2 -translate-x-[4px] rtl:translate-x-[4px] size-4 rounded-full ring-2 ring-(--color-white) cursor-pointer data-[disabled]:cursor-not-allowed"
968
1048
  },
969
1049
  variants: {
@@ -1047,7 +1127,8 @@ const container = {
1047
1127
 
1048
1128
  const contextMenu = (options) => ({
1049
1129
  slots: {
1050
- content: "min-w-32 bg-default shadow-lg rounded-md ring ring-default divide-y divide-default overflow-y-auto scroll-py-1 data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-context-menu-content-transform-origin)",
1130
+ content: "min-w-32 bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-context-menu-content-transform-origin) flex flex-col",
1131
+ viewport: "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",
1051
1132
  group: "p-1 isolate",
1052
1133
  label: "w-full flex items-center font-semibold text-highlighted",
1053
1134
  separator: "-mx-1 my-1 h-px bg-border",
@@ -1252,7 +1333,8 @@ const drawer = (options) => ({
1252
1333
 
1253
1334
  const dropdownMenu = (options) => ({
1254
1335
  slots: {
1255
- content: "min-w-32 bg-default shadow-lg rounded-md ring ring-default divide-y divide-default overflow-y-auto scroll-py-1 data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-dropdown-menu-content-transform-origin)",
1336
+ content: "min-w-32 bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-dropdown-menu-content-transform-origin) flex flex-col",
1337
+ viewport: "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",
1256
1338
  arrow: "fill-default",
1257
1339
  group: "p-1 isolate",
1258
1340
  label: "w-full flex items-center font-semibold text-highlighted",
@@ -1556,8 +1638,8 @@ const inputMenu = (options) => {
1556
1638
  base: () => ["rounded-md", options.theme.transitions && "transition-colors"],
1557
1639
  trailing: "group absolute inset-y-0 end-0 flex items-center disabled:cursor-not-allowed disabled:opacity-75",
1558
1640
  arrow: "fill-default",
1559
- content: "max-h-60 w-(--reka-combobox-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-combobox-content-transform-origin) pointer-events-auto",
1560
- viewport: "divide-y divide-default scroll-py-1",
1641
+ content: "max-h-60 w-(--reka-combobox-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-combobox-content-transform-origin) pointer-events-auto flex flex-col",
1642
+ viewport: "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",
1561
1643
  group: "p-1 isolate",
1562
1644
  empty: "py-2 text-center text-sm text-muted",
1563
1645
  label: "font-semibold text-highlighted",
@@ -1669,6 +1751,7 @@ const inputNumber = (options) => {
1669
1751
  decrement: "absolute flex items-center"
1670
1752
  },
1671
1753
  variants: {
1754
+ ...buttonGroupVariantWithRoot,
1672
1755
  color: {
1673
1756
  ...Object.fromEntries((options.theme.colors || []).map((color) => [color, ""])),
1674
1757
  neutral: ""
@@ -1794,12 +1877,17 @@ const link = (options) => ({
1794
1877
  variants: {
1795
1878
  active: {
1796
1879
  true: "text-primary",
1797
- false: ["text-muted hover:text-default", options.theme.transitions && "transition-colors"]
1880
+ false: "text-muted"
1798
1881
  },
1799
1882
  disabled: {
1800
1883
  true: "cursor-not-allowed opacity-75"
1801
1884
  }
1802
- }
1885
+ },
1886
+ compoundVariants: [{
1887
+ active: false,
1888
+ disabled: false,
1889
+ class: ["hover:text-default", options.theme.transitions && "transition-colors"]
1890
+ }]
1803
1891
  });
1804
1892
 
1805
1893
  const modal = {
@@ -1842,24 +1930,25 @@ const navigationMenu = (options) => ({
1842
1930
  linkLeadingIcon: "shrink-0 size-5",
1843
1931
  linkLeadingAvatar: "shrink-0",
1844
1932
  linkLeadingAvatarSize: "2xs",
1845
- linkTrailing: "ms-auto inline-flex gap-1.5 items-center",
1933
+ linkTrailing: "group ms-auto inline-flex gap-1.5 items-center",
1846
1934
  linkTrailingBadge: "shrink-0",
1847
1935
  linkTrailingBadgeSize: "sm",
1848
1936
  linkTrailingIcon: "size-5 transform shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200",
1849
1937
  linkLabel: "truncate",
1850
1938
  linkLabelExternalIcon: "inline-block size-3 align-top text-dimmed",
1851
- childList: "",
1939
+ childList: "isolate",
1940
+ childLabel: "text-xs text-highlighted",
1852
1941
  childItem: "",
1853
- childLink: "group size-full px-3 py-2 rounded-md flex items-start gap-2 text-start",
1854
- childLinkWrapper: "flex flex-col items-start",
1942
+ childLink: "group relative size-full flex items-start text-start text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none dark:focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2",
1943
+ childLinkWrapper: "min-w-0",
1855
1944
  childLinkIcon: "size-5 shrink-0",
1856
- childLinkLabel: "font-semibold text-sm relative inline-flex",
1945
+ childLinkLabel: "truncate",
1857
1946
  childLinkLabelExternalIcon: "inline-block size-3 align-top text-dimmed",
1858
- childLinkDescription: "text-sm text-muted",
1947
+ childLinkDescription: "text-muted",
1859
1948
  separator: "px-2 h-px bg-border",
1860
1949
  viewportWrapper: "absolute top-full left-0 flex w-full",
1861
1950
  viewport: "relative overflow-hidden bg-default shadow-lg rounded-md ring ring-default h-(--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] z-[1]",
1862
- content: "absolute top-0 left-0 w-full",
1951
+ content: "",
1863
1952
  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-[2] w-(--reka-navigation-menu-indicator-size) translate-x-(--reka-navigation-menu-indicator-position) flex h-2.5 items-end justify-center overflow-hidden transition-[translate,width] duration-200",
1864
1953
  arrow: "relative top-[50%] size-2.5 rotate-45 border border-default bg-default z-[1] rounded-xs"
1865
1954
  },
@@ -1867,11 +1956,11 @@ const navigationMenu = (options) => ({
1867
1956
  color: {
1868
1957
  ...Object.fromEntries((options.theme.colors || []).map((color) => [color, {
1869
1958
  link: `focus-visible:before:ring-${color}`,
1870
- childLink: `focus-visible:outline-${color}`
1959
+ childLink: `focus-visible:before:ring-${color}`
1871
1960
  }])),
1872
1961
  neutral: {
1873
1962
  link: "focus-visible:before:ring-inverted",
1874
- childLink: "focus-visible:outline-inverted"
1963
+ childLink: "focus-visible:before:ring-inverted"
1875
1964
  }
1876
1965
  },
1877
1966
  highlightColor: {
@@ -1888,11 +1977,16 @@ const navigationMenu = (options) => ({
1888
1977
  list: "flex items-center",
1889
1978
  item: "py-2",
1890
1979
  link: "px-2.5 py-1.5 before:inset-x-px before:inset-y-0",
1891
- childList: "grid p-2"
1980
+ childList: "grid p-2",
1981
+ childLink: "px-3 py-2 gap-2 before:inset-x-px before:inset-y-0",
1982
+ childLinkLabel: "font-medium",
1983
+ content: "absolute top-0 left-0 w-full"
1892
1984
  },
1893
1985
  vertical: {
1894
1986
  root: "flex-col",
1895
- link: "flex-row px-2.5 py-1.5 before:inset-y-px before:inset-x-0"
1987
+ link: "flex-row px-2.5 py-1.5 before:inset-y-px before:inset-x-0",
1988
+ childLabel: "px-1.5 py-0.5",
1989
+ childLink: "p-1.5 gap-1.5 before:inset-y-px before:inset-x-0"
1896
1990
  }
1897
1991
  },
1898
1992
  contentOrientation: {
@@ -1906,13 +2000,13 @@ const navigationMenu = (options) => ({
1906
2000
  },
1907
2001
  active: {
1908
2002
  true: {
1909
- childLink: "bg-elevated text-highlighted",
2003
+ childLink: "before:bg-elevated text-highlighted",
1910
2004
  childLinkIcon: "text-default"
1911
2005
  },
1912
2006
  false: {
1913
2007
  link: "text-muted",
1914
2008
  linkLeadingIcon: "text-dimmed",
1915
- childLink: ["hover:bg-elevated/50 text-default hover:text-highlighted", options.theme.transitions && "transition-colors"],
2009
+ childLink: ["hover:before:bg-elevated/50 text-default hover:text-highlighted", options.theme.transitions && "transition-colors before:transition-colors"],
1916
2010
  childLinkIcon: ["text-dimmed group-hover:text-default", options.theme.transitions && "transition-colors"]
1917
2011
  }
1918
2012
  },
@@ -1944,6 +2038,21 @@ const navigationMenu = (options) => ({
1944
2038
  childList: "gap-1",
1945
2039
  content: "w-60"
1946
2040
  }
2041
+ }, {
2042
+ orientation: "vertical",
2043
+ collapsed: false,
2044
+ class: {
2045
+ childList: "ms-5 border-s border-default",
2046
+ childItem: "ps-1.5 -ms-px",
2047
+ content: "data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] overflow-hidden"
2048
+ }
2049
+ }, {
2050
+ orientation: "vertical",
2051
+ collapsed: true,
2052
+ class: {
2053
+ link: "px-1.5",
2054
+ content: "shadow-sm rounded-sm min-h-6 p-1"
2055
+ }
1947
2056
  }, {
1948
2057
  orientation: "horizontal",
1949
2058
  highlight: true,
@@ -2018,6 +2127,7 @@ const navigationMenu = (options) => ({
2018
2127
  variant: "pill",
2019
2128
  active: true,
2020
2129
  highlight: true,
2130
+ disabled: false,
2021
2131
  class: {
2022
2132
  link: ["hover:before:bg-elevated/50", options.theme.transitions && "before:transition-colors"]
2023
2133
  }
@@ -2070,19 +2180,6 @@ const navigationMenu = (options) => ({
2070
2180
  class: {
2071
2181
  link: "after:bg-inverted"
2072
2182
  }
2073
- }, {
2074
- orientation: "vertical",
2075
- collapsed: false,
2076
- class: {
2077
- childList: "ms-5 border-s border-default",
2078
- childItem: "ps-1.5 -ms-px"
2079
- }
2080
- }, {
2081
- orientation: "vertical",
2082
- collapsed: true,
2083
- class: {
2084
- link: "px-1.5"
2085
- }
2086
2183
  }],
2087
2184
  defaultVariants: {
2088
2185
  color: "primary",
@@ -2509,7 +2606,7 @@ const radioGroup = (options) => ({
2509
2606
  orientation: "horizontal",
2510
2607
  variant: "table",
2511
2608
  class: {
2512
- item: "first-of-type:rounded-l-lg last-of-type:rounded-r-lg",
2609
+ item: "first-of-type:rounded-s-lg last-of-type:rounded-e-lg",
2513
2610
  fieldset: "gap-0 -space-x-px"
2514
2611
  }
2515
2612
  },
@@ -2574,8 +2671,8 @@ const select = (options) => {
2574
2671
  value: "truncate pointer-events-none",
2575
2672
  placeholder: "truncate text-dimmed",
2576
2673
  arrow: "fill-default",
2577
- content: "max-h-60 w-(--reka-select-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-select-content-transform-origin) pointer-events-auto",
2578
- viewport: "divide-y divide-default scroll-py-1",
2674
+ content: "max-h-60 w-(--reka-select-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-select-content-transform-origin) pointer-events-auto flex flex-col",
2675
+ viewport: "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",
2579
2676
  group: "p-1 isolate",
2580
2677
  empty: "py-2 text-center text-sm text-muted",
2581
2678
  label: "font-semibold text-highlighted",
@@ -3230,7 +3327,7 @@ const tabs = (options) => ({
3230
3327
  root: "flex items-center gap-2",
3231
3328
  list: "relative flex p-1 group",
3232
3329
  indicator: "absolute transition-[translate,width] duration-200",
3233
- trigger: ["group relative inline-flex items-center shrink-0 min-w-0 data-[state=inactive]:text-muted hover:data-[state=inactive]:not-disabled:text-default font-medium rounded-md disabled:cursor-not-allowed disabled:opacity-75", options.theme.transitions && "transition-colors"],
3330
+ trigger: ["group relative inline-flex items-center min-w-0 data-[state=inactive]:text-muted hover:data-[state=inactive]:not-disabled:text-default font-medium rounded-md disabled:cursor-not-allowed disabled:opacity-75", options.theme.transitions && "transition-colors"],
3234
3331
  content: "focus:outline-none w-full",
3235
3332
  leadingIcon: "shrink-0",
3236
3333
  leadingAvatar: "shrink-0",
@@ -3245,12 +3342,13 @@ const tabs = (options) => ({
3245
3342
  variant: {
3246
3343
  pill: {
3247
3344
  list: "bg-elevated rounded-lg",
3248
- trigger: "flex-1 w-full",
3345
+ trigger: "grow",
3249
3346
  indicator: "rounded-md shadow-xs"
3250
3347
  },
3251
3348
  link: {
3252
3349
  list: "border-default",
3253
- indicator: "rounded-full"
3350
+ indicator: "rounded-full",
3351
+ trigger: "focus:outline-none"
3254
3352
  }
3255
3353
  },
3256
3354
  orientation: {
@@ -3500,7 +3598,7 @@ const toaster = {
3500
3598
 
3501
3599
  const tooltip = {
3502
3600
  slots: {
3503
- content: "flex items-center gap-1 bg-default text-highlighted shadow-sm rounded-sm ring ring-default h-6 px-2 py-1 text-xs select-none data-[state=delayed-open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-tooltip-content-transform-origin) pointer-events-auto",
3601
+ content: "flex items-center gap-1 bg-default text-highlighted shadow-sm rounded-sm ring ring-default h-6 px-2.5 py-1 text-xs select-none data-[state=delayed-open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-tooltip-content-transform-origin) pointer-events-auto",
3504
3602
  arrow: "fill-default",
3505
3603
  text: "truncate",
3506
3604
  kbds: `hidden lg:inline-flex items-center shrink-0 gap-0.5 before:content-['\xB7'] before:me-0.5`,
@@ -3665,7 +3763,7 @@ function getTemplates(options, uiConfig) {
3665
3763
  });
3666
3764
  }
3667
3765
  function generateVariantDeclarations(variants2) {
3668
- return variants2.map((variant) => {
3766
+ return variants2.filter((variant) => json.includes(`as typeof ${variant}`)).map((variant) => {
3669
3767
  const keys = Object.keys(result.variants[variant]);
3670
3768
  return `const ${variant} = ${JSON.stringify(keys, null, 2)} as const`;
3671
3769
  });
@@ -3682,7 +3780,7 @@ function getTemplates(options, uiConfig) {
3682
3780
  write: true,
3683
3781
  getContents: () => `@source "./ui";
3684
3782
 
3685
- @theme default inline {
3783
+ @theme static {
3686
3784
  --color-old-neutral-50: ${colors.neutral[50]};
3687
3785
  --color-old-neutral-100: ${colors.neutral[100]};
3688
3786
  --color-old-neutral-200: ${colors.neutral[200]};
@@ -3694,6 +3792,9 @@ function getTemplates(options, uiConfig) {
3694
3792
  --color-old-neutral-800: ${colors.neutral[800]};
3695
3793
  --color-old-neutral-900: ${colors.neutral[900]};
3696
3794
  --color-old-neutral-950: ${colors.neutral[950]};
3795
+ }
3796
+
3797
+ @theme default inline {
3697
3798
  ${[...(options.theme?.colors || []).filter((color) => !colors[color]), "neutral"].map((color) => [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950].map((shade) => `--color-${color}-${shade}: var(--ui-color-${color}-${shade});`).join("\n ")).join("\n ")}
3698
3799
  ${options.theme?.colors?.map((color) => `--color-${color}: var(--ui-${color});`).join("\n ")}
3699
3800
  --radius-xs: calc(var(--ui-radius) * 0.5);
package/dist/unplugin.mjs CHANGED
@@ -3,7 +3,7 @@ import { join, normalize } from 'pathe';
3
3
  import { createUnplugin } from 'unplugin';
4
4
  import { defu } from 'defu';
5
5
  import tailwind from '@tailwindcss/vite';
6
- import { g as getTemplates, d as defaultOptions, r as resolveColors, a as getDefaultUiConfig } from './shared/ui.CbtTMMzt.mjs';
6
+ import { g as getTemplates, d as defaultOptions, r as resolveColors, a as getDefaultUiConfig } from './shared/ui.Bix4DSU4.mjs';
7
7
  import { globSync } from 'tinyglobby';
8
8
  import { genSafeVariableName } from 'knitwork';
9
9
  import MagicString from 'magic-string';
package/dist/vite.mjs CHANGED
@@ -4,7 +4,7 @@ import 'pathe';
4
4
  import 'unplugin';
5
5
  import 'defu';
6
6
  import '@tailwindcss/vite';
7
- import './shared/ui.CbtTMMzt.mjs';
7
+ import './shared/ui.Bix4DSU4.mjs';
8
8
  import '../dist/runtime/utils/index.js';
9
9
  import 'scule';
10
10
  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.1.1",
5
- "packageManager": "pnpm@10.10.0",
4
+ "version": "3.1.3",
5
+ "packageManager": "pnpm@10.11.0",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "git+https://github.com/nuxt/ui.git"
@@ -112,21 +112,21 @@
112
112
  "release": "release-it"
113
113
  },
114
114
  "dependencies": {
115
- "@iconify/vue": "^4.3.0",
116
- "@internationalized/date": "^3.8.0",
117
- "@internationalized/number": "^3.6.1",
118
- "@nuxt/fonts": "^0.11.2",
119
- "@nuxt/icon": "^1.12.0",
120
- "@nuxt/kit": "^3.17.1",
121
- "@nuxt/schema": "^3.17.1",
115
+ "@iconify/vue": "^5.0.0",
116
+ "@internationalized/date": "^3.8.1",
117
+ "@internationalized/number": "^3.6.2",
118
+ "@nuxt/fonts": "^0.11.4",
119
+ "@nuxt/icon": "^1.13.0",
120
+ "@nuxt/kit": "^3.17.4",
121
+ "@nuxt/schema": "^3.17.4",
122
122
  "@nuxtjs/color-mode": "^3.5.2",
123
123
  "@standard-schema/spec": "^1.0.0",
124
- "@tailwindcss/postcss": "^4.1.4",
125
- "@tailwindcss/vite": "^4.1.4",
124
+ "@tailwindcss/postcss": "^4.1.7",
125
+ "@tailwindcss/vite": "^4.1.7",
126
126
  "@tanstack/vue-table": "^8.21.3",
127
- "@unhead/vue": "^2.0.8",
128
- "@vueuse/core": "^13.1.0",
129
- "@vueuse/integrations": "^13.1.0",
127
+ "@unhead/vue": "^2.0.10",
128
+ "@vueuse/core": "^13.2.0",
129
+ "@vueuse/integrations": "^13.2.0",
130
130
  "colortranslator": "^4.1.0",
131
131
  "consola": "^3.4.2",
132
132
  "defu": "^6.1.4",
@@ -144,29 +144,29 @@
144
144
  "mlly": "^1.7.4",
145
145
  "ohash": "^2.0.11",
146
146
  "pathe": "^2.0.3",
147
- "reka-ui": "^2.2.0",
147
+ "reka-ui": "^2.2.1",
148
148
  "scule": "^1.3.0",
149
149
  "tailwind-variants": "^1.0.0",
150
- "tailwindcss": "^4.1.4",
151
- "tinyglobby": "^0.2.13",
152
- "unplugin": "^2.3.2",
153
- "unplugin-auto-import": "^19.1.2",
154
- "unplugin-vue-components": "^28.5.0",
150
+ "tailwindcss": "^4.1.7",
151
+ "tinyglobby": "^0.2.14",
152
+ "unplugin": "^2.3.4",
153
+ "unplugin-auto-import": "^19.3.0",
154
+ "unplugin-vue-components": "^28.7.0",
155
155
  "vaul-vue": "^0.4.1",
156
156
  "vue-component-type-helpers": "^2.2.10"
157
157
  },
158
158
  "devDependencies": {
159
- "@nuxt/eslint-config": "^1.3.0",
159
+ "@nuxt/eslint-config": "^1.4.1",
160
160
  "@nuxt/module-builder": "^1.0.1",
161
- "@nuxt/test-utils": "^3.17.2",
161
+ "@nuxt/test-utils": "^3.19.1",
162
162
  "@release-it/conventional-changelog": "^10.0.1",
163
163
  "@vue/test-utils": "^2.4.6",
164
164
  "embla-carousel": "^8.6.0",
165
- "eslint": "^9.25.1",
166
- "happy-dom": "^17.4.4",
167
- "nuxt": "^3.17.1",
168
- "release-it": "^19.0.1",
169
- "vitest": "^3.1.2",
165
+ "eslint": "^9.27.0",
166
+ "happy-dom": "^17.4.7",
167
+ "nuxt": "^3.17.4",
168
+ "release-it": "^19.0.2",
169
+ "vitest": "^3.1.4",
170
170
  "vitest-environment-nuxt": "^1.0.1",
171
171
  "vue-tsc": "^2.2.10"
172
172
  },
@@ -209,7 +209,7 @@
209
209
  "debug": "4.3.7",
210
210
  "rollup": "4.34.9",
211
211
  "unimport": "4.1.1",
212
- "unplugin": "^2.3.2"
212
+ "unplugin": "^2.3.4"
213
213
  },
214
214
  "pnpm": {
215
215
  "onlyBuiltDependencies": [