@nuxt/ui 4.0.1 → 4.1.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 (234) hide show
  1. package/.nuxt/ui/calendar.ts +221 -9
  2. package/.nuxt/ui/chat-message.ts +10 -3
  3. package/.nuxt/ui/command-palette.ts +12 -2
  4. package/.nuxt/ui/context-menu.ts +3 -1
  5. package/.nuxt/ui/dropdown-menu.ts +3 -1
  6. package/.nuxt/ui/empty.ts +83 -0
  7. package/.nuxt/ui/index.ts +1 -0
  8. package/.nuxt/ui/input-menu.ts +12 -2
  9. package/.nuxt/ui/input-number.ts +25 -14
  10. package/.nuxt/ui/kbd.ts +1 -1
  11. package/.nuxt/ui/prose/code-tree.ts +1 -1
  12. package/.nuxt/ui/prose/img.ts +2 -1
  13. package/.nuxt/ui/select-menu.ts +12 -2
  14. package/.nuxt/ui/select.ts +4 -2
  15. package/.nuxt/ui/table.ts +8 -2
  16. package/.nuxt/ui/tree.ts +25 -11
  17. package/cli/templates.mjs +14 -2
  18. package/dist/module.d.mts +15 -0
  19. package/dist/module.json +2 -2
  20. package/dist/module.mjs +5 -2
  21. package/dist/runtime/components/Accordion.d.vue.ts +7 -1
  22. package/dist/runtime/components/Accordion.vue +4 -4
  23. package/dist/runtime/components/Accordion.vue.d.ts +7 -1
  24. package/dist/runtime/components/Alert.d.vue.ts +4 -4
  25. package/dist/runtime/components/Alert.vue +1 -1
  26. package/dist/runtime/components/Alert.vue.d.ts +4 -4
  27. package/dist/runtime/components/AuthForm.d.vue.ts +3 -1
  28. package/dist/runtime/components/AuthForm.vue +1 -1
  29. package/dist/runtime/components/AuthForm.vue.d.ts +3 -1
  30. package/dist/runtime/components/Avatar.d.vue.ts +5 -4
  31. package/dist/runtime/components/Avatar.vue +10 -3
  32. package/dist/runtime/components/Avatar.vue.d.ts +5 -4
  33. package/dist/runtime/components/Badge.d.vue.ts +9 -3
  34. package/dist/runtime/components/Badge.vue +3 -3
  35. package/dist/runtime/components/Badge.vue.d.ts +9 -3
  36. package/dist/runtime/components/Banner.d.vue.ts +4 -2
  37. package/dist/runtime/components/Banner.vue +1 -1
  38. package/dist/runtime/components/Banner.vue.d.ts +4 -2
  39. package/dist/runtime/components/BlogPost.d.vue.ts +9 -3
  40. package/dist/runtime/components/BlogPost.vue +2 -2
  41. package/dist/runtime/components/BlogPost.vue.d.ts +9 -3
  42. package/dist/runtime/components/BlogPosts.d.vue.ts +22 -13
  43. package/dist/runtime/components/BlogPosts.vue +8 -2
  44. package/dist/runtime/components/BlogPosts.vue.d.ts +22 -13
  45. package/dist/runtime/components/Breadcrumb.d.vue.ts +19 -4
  46. package/dist/runtime/components/Breadcrumb.vue +8 -8
  47. package/dist/runtime/components/Breadcrumb.vue.d.ts +19 -4
  48. package/dist/runtime/components/Button.d.vue.ts +9 -3
  49. package/dist/runtime/components/Button.vue +3 -3
  50. package/dist/runtime/components/Button.vue.d.ts +9 -3
  51. package/dist/runtime/components/Calendar.d.vue.ts +4 -0
  52. package/dist/runtime/components/Calendar.vue +3 -1
  53. package/dist/runtime/components/Calendar.vue.d.ts +4 -0
  54. package/dist/runtime/components/ChangelogVersion.d.vue.ts +12 -4
  55. package/dist/runtime/components/ChangelogVersion.vue +3 -3
  56. package/dist/runtime/components/ChangelogVersion.vue.d.ts +12 -4
  57. package/dist/runtime/components/ChangelogVersions.d.vue.ts +8 -36
  58. package/dist/runtime/components/ChangelogVersions.vue +2 -2
  59. package/dist/runtime/components/ChangelogVersions.vue.d.ts +8 -36
  60. package/dist/runtime/components/ChatMessage.d.vue.ts +1 -0
  61. package/dist/runtime/components/ChatMessage.vue +1 -1
  62. package/dist/runtime/components/ChatMessage.vue.d.ts +1 -0
  63. package/dist/runtime/components/ChatMessages.d.vue.ts +14 -15
  64. package/dist/runtime/components/ChatMessages.vue +24 -8
  65. package/dist/runtime/components/ChatMessages.vue.d.ts +14 -15
  66. package/dist/runtime/components/CommandPalette.d.vue.ts +43 -12
  67. package/dist/runtime/components/CommandPalette.vue +134 -68
  68. package/dist/runtime/components/CommandPalette.vue.d.ts +43 -12
  69. package/dist/runtime/components/ContextMenu.d.vue.ts +28 -6
  70. package/dist/runtime/components/ContextMenu.vue +2 -0
  71. package/dist/runtime/components/ContextMenu.vue.d.ts +28 -6
  72. package/dist/runtime/components/ContextMenuContent.d.vue.ts +2 -3
  73. package/dist/runtime/components/ContextMenuContent.vue +21 -11
  74. package/dist/runtime/components/ContextMenuContent.vue.d.ts +2 -3
  75. package/dist/runtime/components/DashboardNavbar.d.vue.ts +9 -3
  76. package/dist/runtime/components/DashboardNavbar.vue +3 -3
  77. package/dist/runtime/components/DashboardNavbar.vue.d.ts +9 -3
  78. package/dist/runtime/components/DashboardSearch.d.vue.ts +3 -1
  79. package/dist/runtime/components/DashboardSearch.vue +2 -2
  80. package/dist/runtime/components/DashboardSearch.vue.d.ts +3 -1
  81. package/dist/runtime/components/DashboardSearchButton.vue +2 -2
  82. package/dist/runtime/components/DashboardSidebar.d.vue.ts +5 -1
  83. package/dist/runtime/components/DashboardSidebar.vue +4 -4
  84. package/dist/runtime/components/DashboardSidebar.vue.d.ts +5 -1
  85. package/dist/runtime/components/Drawer.vue +2 -5
  86. package/dist/runtime/components/DropdownMenu.d.vue.ts +28 -6
  87. package/dist/runtime/components/DropdownMenu.vue +2 -0
  88. package/dist/runtime/components/DropdownMenu.vue.d.ts +28 -6
  89. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +8 -5
  90. package/dist/runtime/components/DropdownMenuContent.vue +21 -11
  91. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +8 -5
  92. package/dist/runtime/components/Empty.d.vue.ts +53 -0
  93. package/dist/runtime/components/Empty.vue +68 -0
  94. package/dist/runtime/components/Empty.vue.d.ts +53 -0
  95. package/dist/runtime/components/Error.d.vue.ts +0 -1
  96. package/dist/runtime/components/Error.vue +1 -1
  97. package/dist/runtime/components/Error.vue.d.ts +0 -1
  98. package/dist/runtime/components/FileUpload.d.vue.ts +6 -1
  99. package/dist/runtime/components/FileUpload.vue +8 -7
  100. package/dist/runtime/components/FileUpload.vue.d.ts +6 -1
  101. package/dist/runtime/components/FooterColumns.d.vue.ts +9 -2
  102. package/dist/runtime/components/FooterColumns.vue +2 -2
  103. package/dist/runtime/components/FooterColumns.vue.d.ts +9 -2
  104. package/dist/runtime/components/Header.d.vue.ts +4 -1
  105. package/dist/runtime/components/Header.vue +3 -3
  106. package/dist/runtime/components/Header.vue.d.ts +4 -1
  107. package/dist/runtime/components/Input.d.vue.ts +9 -3
  108. package/dist/runtime/components/Input.vue +3 -3
  109. package/dist/runtime/components/Input.vue.d.ts +9 -3
  110. package/dist/runtime/components/InputMenu.d.vue.ts +40 -10
  111. package/dist/runtime/components/InputMenu.vue +117 -65
  112. package/dist/runtime/components/InputMenu.vue.d.ts +40 -10
  113. package/dist/runtime/components/InputNumber.d.vue.ts +4 -2
  114. package/dist/runtime/components/InputNumber.vue +7 -5
  115. package/dist/runtime/components/InputNumber.vue.d.ts +4 -2
  116. package/dist/runtime/components/InputTags.d.vue.ts +10 -3
  117. package/dist/runtime/components/InputTags.vue +5 -5
  118. package/dist/runtime/components/InputTags.vue.d.ts +10 -3
  119. package/dist/runtime/components/Main.d.vue.ts +2 -4
  120. package/dist/runtime/components/Main.vue +1 -1
  121. package/dist/runtime/components/Main.vue.d.ts +2 -4
  122. package/dist/runtime/components/Modal.d.vue.ts +1 -4
  123. package/dist/runtime/components/Modal.vue +3 -6
  124. package/dist/runtime/components/Modal.vue.d.ts +1 -4
  125. package/dist/runtime/components/NavigationMenu.d.vue.ts +16 -4
  126. package/dist/runtime/components/NavigationMenu.vue +14 -7
  127. package/dist/runtime/components/NavigationMenu.vue.d.ts +16 -4
  128. package/dist/runtime/components/PageAnchors.d.vue.ts +9 -2
  129. package/dist/runtime/components/PageAnchors.vue +2 -2
  130. package/dist/runtime/components/PageAnchors.vue.d.ts +9 -2
  131. package/dist/runtime/components/PageCard.d.vue.ts +3 -1
  132. package/dist/runtime/components/PageCard.vue +1 -1
  133. package/dist/runtime/components/PageCard.vue.d.ts +3 -1
  134. package/dist/runtime/components/PageFeature.d.vue.ts +3 -1
  135. package/dist/runtime/components/PageFeature.vue +1 -1
  136. package/dist/runtime/components/PageFeature.vue.d.ts +3 -1
  137. package/dist/runtime/components/PageLinks.d.vue.ts +9 -2
  138. package/dist/runtime/components/PageLinks.vue +2 -2
  139. package/dist/runtime/components/PageLinks.vue.d.ts +9 -2
  140. package/dist/runtime/components/PageSection.d.vue.ts +3 -1
  141. package/dist/runtime/components/PageSection.vue +1 -1
  142. package/dist/runtime/components/PageSection.vue.d.ts +3 -1
  143. package/dist/runtime/components/Pagination.d.vue.ts +3 -1
  144. package/dist/runtime/components/Pagination.vue +1 -1
  145. package/dist/runtime/components/Pagination.vue.d.ts +3 -1
  146. package/dist/runtime/components/Popover.d.vue.ts +24 -23
  147. package/dist/runtime/components/Popover.vue +4 -4
  148. package/dist/runtime/components/Popover.vue.d.ts +24 -23
  149. package/dist/runtime/components/PricingPlan.d.vue.ts +9 -3
  150. package/dist/runtime/components/PricingPlan.vue +3 -3
  151. package/dist/runtime/components/PricingPlan.vue.d.ts +9 -3
  152. package/dist/runtime/components/PricingPlans.d.vue.ts +20 -13
  153. package/dist/runtime/components/PricingPlans.vue +7 -1
  154. package/dist/runtime/components/PricingPlans.vue.d.ts +20 -13
  155. package/dist/runtime/components/Select.d.vue.ts +20 -9
  156. package/dist/runtime/components/Select.vue +18 -9
  157. package/dist/runtime/components/Select.vue.d.ts +20 -9
  158. package/dist/runtime/components/SelectMenu.d.vue.ts +39 -11
  159. package/dist/runtime/components/SelectMenu.vue +114 -61
  160. package/dist/runtime/components/SelectMenu.vue.d.ts +39 -11
  161. package/dist/runtime/components/Separator.d.vue.ts +3 -1
  162. package/dist/runtime/components/Separator.vue +1 -1
  163. package/dist/runtime/components/Separator.vue.d.ts +3 -1
  164. package/dist/runtime/components/Slideover.d.vue.ts +1 -4
  165. package/dist/runtime/components/Slideover.vue +3 -6
  166. package/dist/runtime/components/Slideover.vue.d.ts +1 -4
  167. package/dist/runtime/components/Stepper.d.vue.ts +4 -1
  168. package/dist/runtime/components/Stepper.vue +1 -1
  169. package/dist/runtime/components/Stepper.vue.d.ts +4 -1
  170. package/dist/runtime/components/Table.d.vue.ts +21 -1
  171. package/dist/runtime/components/Table.vue +126 -60
  172. package/dist/runtime/components/Table.vue.d.ts +21 -1
  173. package/dist/runtime/components/Tabs.d.vue.ts +8 -3
  174. package/dist/runtime/components/Tabs.vue +3 -3
  175. package/dist/runtime/components/Tabs.vue.d.ts +8 -3
  176. package/dist/runtime/components/Textarea.d.vue.ts +9 -3
  177. package/dist/runtime/components/Textarea.vue +3 -3
  178. package/dist/runtime/components/Textarea.vue.d.ts +9 -3
  179. package/dist/runtime/components/Toast.d.vue.ts +4 -4
  180. package/dist/runtime/components/Toast.vue +1 -1
  181. package/dist/runtime/components/Toast.vue.d.ts +4 -4
  182. package/dist/runtime/components/Toaster.d.vue.ts +6 -0
  183. package/dist/runtime/components/Toaster.vue +6 -3
  184. package/dist/runtime/components/Toaster.vue.d.ts +6 -0
  185. package/dist/runtime/components/Tooltip.d.vue.ts +3 -1
  186. package/dist/runtime/components/Tooltip.vue +1 -1
  187. package/dist/runtime/components/Tooltip.vue.d.ts +3 -1
  188. package/dist/runtime/components/Tree.d.vue.ts +43 -5
  189. package/dist/runtime/components/Tree.vue +169 -81
  190. package/dist/runtime/components/Tree.vue.d.ts +43 -5
  191. package/dist/runtime/components/User.d.vue.ts +3 -1
  192. package/dist/runtime/components/User.vue +1 -1
  193. package/dist/runtime/components/User.vue.d.ts +3 -1
  194. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +1 -0
  195. package/dist/runtime/components/content/ContentNavigation.vue +5 -5
  196. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +1 -0
  197. package/dist/runtime/components/content/ContentSearch.d.vue.ts +3 -1
  198. package/dist/runtime/components/content/ContentSearch.vue +4 -2
  199. package/dist/runtime/components/content/ContentSearch.vue.d.ts +3 -1
  200. package/dist/runtime/components/content/ContentSearchButton.vue +2 -2
  201. package/dist/runtime/components/content/ContentSurround.d.vue.ts +1 -0
  202. package/dist/runtime/components/content/ContentSurround.vue +4 -4
  203. package/dist/runtime/components/content/ContentSurround.vue.d.ts +1 -0
  204. package/dist/runtime/components/content/ContentToc.d.vue.ts +2 -0
  205. package/dist/runtime/components/content/ContentToc.vue +2 -2
  206. package/dist/runtime/components/content/ContentToc.vue.d.ts +2 -0
  207. package/dist/runtime/components/prose/Accordion.d.vue.ts +6 -0
  208. package/dist/runtime/components/prose/Accordion.vue +3 -2
  209. package/dist/runtime/components/prose/Accordion.vue.d.ts +6 -0
  210. package/dist/runtime/components/prose/CodeTree.vue +40 -36
  211. package/dist/runtime/components/prose/Collapsible.d.vue.ts +2 -2
  212. package/dist/runtime/components/prose/Collapsible.vue +2 -2
  213. package/dist/runtime/components/prose/Collapsible.vue.d.ts +2 -2
  214. package/dist/runtime/components/prose/Field.d.vue.ts +1 -1
  215. package/dist/runtime/components/prose/Field.vue.d.ts +1 -1
  216. package/dist/runtime/components/prose/Img.vue +14 -3
  217. package/dist/runtime/components/prose/Tabs.d.vue.ts +6 -0
  218. package/dist/runtime/components/prose/Tabs.vue +3 -2
  219. package/dist/runtime/components/prose/Tabs.vue.d.ts +6 -0
  220. package/dist/runtime/composables/useKbd.js +1 -1
  221. package/dist/runtime/composables/useToast.d.ts +3 -1
  222. package/dist/runtime/composables/useToast.js +4 -3
  223. package/dist/runtime/inertia/components/Link.vue +12 -7
  224. package/dist/runtime/locale/hr.d.ts +3 -0
  225. package/dist/runtime/locale/hr.js +129 -0
  226. package/dist/runtime/locale/index.d.ts +1 -0
  227. package/dist/runtime/locale/index.js +1 -0
  228. package/dist/runtime/types/index.d.ts +2 -1
  229. package/dist/runtime/types/index.js +2 -1
  230. package/dist/runtime/types/tv.d.ts +6 -0
  231. package/dist/shared/{ui.D-FDXAUi.mjs → ui.Cmctwxv6.mjs} +381 -48
  232. package/dist/unplugin.mjs +2 -1
  233. package/dist/vite.mjs +3 -2
  234. package/package.json +18 -17
@@ -34,21 +34,21 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.contentSurrou
34
34
  <template>
35
35
  <DefineLinkTemplate v-slot="{ link, icon, direction }">
36
36
  <ULink v-if="link" :to="link.path" raw :class="ui.link({ class: [props.ui?.link, link.ui?.link, link.class], direction })">
37
- <slot name="link" :link="link">
37
+ <slot name="link" :link="link" :ui="ui">
38
38
  <div :class="ui.linkLeading({ class: [props.ui?.linkLeading, link.ui?.linkLeading] })">
39
- <slot name="link-leading" :link="link">
39
+ <slot name="link-leading" :link="link" :ui="ui">
40
40
  <UIcon :name="link.icon || icon" :class="ui.linkLeadingIcon({ class: [props.ui?.linkLeadingIcon, link.ui?.linkLeadingIcon], direction })" />
41
41
  </slot>
42
42
  </div>
43
43
 
44
44
  <p :class="ui.linkTitle({ class: [props.ui?.linkTitle, link.ui?.linkTitle] })">
45
- <slot name="link-title" :link="link">
45
+ <slot name="link-title" :link="link" :ui="ui">
46
46
  {{ link.title }}
47
47
  </slot>
48
48
  </p>
49
49
 
50
50
  <p :class="ui.linkDescription({ class: [props.ui?.linkDescription, link.ui?.linkDescription] })">
51
- <slot name="link-description" :link="link">
51
+ <slot name="link-description" :link="link" :ui="ui">
52
52
  {{ link.description }}
53
53
  </slot>
54
54
  </p>
@@ -37,6 +37,7 @@ export interface ContentSurroundProps<T extends ContentSurroundLink = ContentSur
37
37
  }
38
38
  type SlotProps<T> = (props: {
39
39
  link: T;
40
+ ui: ContentSurround['ui'];
40
41
  }) => any;
41
42
  export interface ContentSurroundSlots<T extends ContentSurroundLink = ContentSurroundLink> {
42
43
  'link': SlotProps<T>;
@@ -52,12 +52,14 @@ type SlotProps<T> = (props: {
52
52
  export interface ContentTocSlots<T extends ContentTocLink = ContentTocLink> {
53
53
  leading(props: {
54
54
  open: boolean;
55
+ ui: ContentToc['ui'];
55
56
  }): any;
56
57
  default(props: {
57
58
  open: boolean;
58
59
  }): any;
59
60
  trailing(props: {
60
61
  open: boolean;
62
+ ui: ContentToc['ui'];
61
63
  }): any;
62
64
  content(props: {
63
65
  links: T[];
@@ -95,14 +95,14 @@ nuxtApp.hooks.hook("page:transition:finish", () => {
95
95
  </DefineListTemplate>
96
96
 
97
97
  <DefineTriggerTemplate v-slot="{ open }">
98
- <slot name="leading" :open="open" />
98
+ <slot name="leading" :open="open" :ui="ui" />
99
99
 
100
100
  <span :class="ui.title({ class: props.ui?.title })">
101
101
  <slot :open="open">{{ title || t("contentToc.title") }}</slot>
102
102
  </span>
103
103
 
104
104
  <span :class="ui.trailing({ class: props.ui?.trailing })">
105
- <slot name="trailing" :open="open">
105
+ <slot name="trailing" :open="open" :ui="ui">
106
106
  <UIcon :name="trailingIcon || appConfig.ui.icons.chevronDown" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
107
107
  </slot>
108
108
  </span>
@@ -52,12 +52,14 @@ type SlotProps<T> = (props: {
52
52
  export interface ContentTocSlots<T extends ContentTocLink = ContentTocLink> {
53
53
  leading(props: {
54
54
  open: boolean;
55
+ ui: ContentToc['ui'];
55
56
  }): any;
56
57
  default(props: {
57
58
  open: boolean;
58
59
  }): any;
59
60
  trailing(props: {
60
61
  open: boolean;
62
+ ui: ContentToc['ui'];
61
63
  }): any;
62
64
  content(props: {
63
65
  links: T[];
@@ -1,6 +1,12 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/prose/accordion';
3
+ import type { AccordionProps } from '../../types';
4
+ import type { ComponentConfig } from '../../types/tv';
5
+ type ProseAccordion = ComponentConfig<typeof theme, AppConfig, 'accordion', 'ui.prose'>;
1
6
  export interface ProseAccordionProps {
2
7
  type?: 'single' | 'multiple';
3
8
  class?: any;
9
+ ui?: ProseAccordion['slots'] & AccordionProps['ui'];
4
10
  }
5
11
  export interface ProseAccordionSlots {
6
12
  default(props?: {}): any;
@@ -10,7 +10,8 @@ import { tv } from "../../utils/tv";
10
10
  import UAccordion from "../Accordion.vue";
11
11
  const props = defineProps({
12
12
  type: { type: String, required: false, default: "multiple" },
13
- class: { type: null, required: false }
13
+ class: { type: null, required: false },
14
+ ui: { type: void 0, required: false }
14
15
  });
15
16
  const slots = defineSlots();
16
17
  const appConfig = useAppConfig();
@@ -36,7 +37,7 @@ onBeforeUpdate(() => rerenderCount.value++);
36
37
  </script>
37
38
 
38
39
  <template>
39
- <UAccordion :type="type" :items="items" :unmount-on-hide="false" :class="props.class" :ui="transformUI(ui())">
40
+ <UAccordion :type="type" :items="items" :unmount-on-hide="false" :class="props.class" :ui="transformUI(ui(), props.ui)">
40
41
  <template #content="{ item }">
41
42
  <component :is="item.component" />
42
43
  </template>
@@ -1,6 +1,12 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/prose/accordion';
3
+ import type { AccordionProps } from '../../types';
4
+ import type { ComponentConfig } from '../../types/tv';
5
+ type ProseAccordion = ComponentConfig<typeof theme, AppConfig, 'accordion', 'ui.prose'>;
1
6
  export interface ProseAccordionProps {
2
7
  type?: 'single' | 'multiple';
3
8
  class?: any;
9
+ ui?: ProseAccordion['slots'] & AccordionProps['ui'];
4
10
  }
5
11
  export interface ProseAccordionSlots {
6
12
  default(props?: {}): any;
@@ -92,50 +92,54 @@ onBeforeUpdate(() => rerenderCount.value++);
92
92
 
93
93
  <template>
94
94
  <DefineTreeTemplate v-slot="{ items, level }">
95
- <TreeItem
95
+ <li
96
96
  v-for="(item, index) in items"
97
97
  :key="`${level}-${index}`"
98
- v-slot="{ isExpanded, isSelected }"
99
- :level="level"
100
- :value="item"
98
+ role="presentation"
101
99
  :class="level > 1 ? ui.itemWithChildren({ class: props.ui?.itemWithChildren }) : ui.item({ class: props.ui?.item })"
102
100
  >
103
- <button
104
- type="button"
105
- :data-expanded="isExpanded"
106
- :class="ui.link({ class: props.ui?.link, active: isSelected })"
101
+ <TreeItem
102
+ v-slot="{ isExpanded, isSelected }"
103
+ :level="level"
104
+ :value="item"
105
+ as-child
107
106
  >
108
- <UIcon
109
- v-if="item.children?.length"
110
- :name="isExpanded ? appConfig.ui.icons.folderOpen : appConfig.ui.icons.folder"
111
- :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon })"
112
- />
113
- <UCodeIcon
114
- v-else
115
- :filename="item.label"
116
- :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon })"
117
- />
118
-
119
- <span :class="ui.linkLabel({ class: props.ui?.linkLabel })">
120
- {{ item.label }}
121
- </span>
122
-
123
- <span v-if="item.children?.length" :class="ui.linkTrailing({ class: props.ui?.linkTrailing })">
107
+ <button
108
+ type="button"
109
+ :class="ui.link({ class: props.ui?.link, active: isSelected })"
110
+ >
124
111
  <UIcon
125
- :name="appConfig.ui.icons.chevronDown"
126
- :class="ui.linkTrailingIcon({ class: props.ui?.linkTrailingIcon })"
112
+ v-if="item.children?.length"
113
+ :name="isExpanded ? appConfig.ui.icons.folderOpen : appConfig.ui.icons.folder"
114
+ :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon })"
115
+ />
116
+ <UCodeIcon
117
+ v-else
118
+ :filename="item.label"
119
+ :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon })"
127
120
  />
128
- </span>
129
- </button>
130
121
 
131
- <ul
132
- v-if="item.children?.length && isExpanded"
133
- role="group"
134
- :class="ui.listWithChildren({ class: props.ui?.listWithChildren })"
135
- >
136
- <ReuseTreeTemplate :items="item.children" :level="level + 1" />
137
- </ul>
138
- </TreeItem>
122
+ <span :class="ui.linkLabel({ class: props.ui?.linkLabel })">
123
+ {{ item.label }}
124
+ </span>
125
+
126
+ <span v-if="item.children?.length" :class="ui.linkTrailing({ class: props.ui?.linkTrailing })">
127
+ <UIcon
128
+ :name="appConfig.ui.icons.chevronDown"
129
+ :class="ui.linkTrailingIcon({ class: props.ui?.linkTrailingIcon })"
130
+ />
131
+ </span>
132
+ </button>
133
+
134
+ <ul
135
+ v-if="item.children?.length && isExpanded"
136
+ role="group"
137
+ :class="ui.listWithChildren({ class: props.ui?.listWithChildren })"
138
+ >
139
+ <ReuseTreeTemplate :items="item.children" :level="level + 1" />
140
+ </ul>
141
+ </TreeItem>
142
+ </li>
139
143
  </DefineTreeTemplate>
140
144
 
141
145
  <div v-bind="$attrs" :class="ui.root({ class: [props.ui?.root, props.class] })">
@@ -1,6 +1,6 @@
1
1
  import type { AppConfig } from '@nuxt/schema';
2
2
  import theme from '#build/ui/prose/collapsible';
3
- import type { IconProps } from '../../types';
3
+ import type { IconProps, CollapsibleProps } from '../../types';
4
4
  import type { ComponentConfig } from '../../types/tv';
5
5
  type ProseCollapsible = ComponentConfig<typeof theme, AppConfig, 'collapsible', 'ui.prose'>;
6
6
  export interface ProseCollapsibleProps {
@@ -25,7 +25,7 @@ export interface ProseCollapsibleProps {
25
25
  */
26
26
  closeText?: string;
27
27
  class?: any;
28
- ui?: ProseCollapsible['slots'];
28
+ ui?: ProseCollapsible['slots'] & CollapsibleProps['ui'];
29
29
  }
30
30
  export interface ProseCollapsibleSlots {
31
31
  default(props?: {}): any;
@@ -16,7 +16,7 @@ const props = defineProps({
16
16
  openText: { type: String, required: false },
17
17
  closeText: { type: String, required: false },
18
18
  class: { type: null, required: false },
19
- ui: { type: null, required: false }
19
+ ui: { type: void 0, required: false }
20
20
  });
21
21
  defineSlots();
22
22
  const { t } = useLocale();
@@ -25,7 +25,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.prose?.collap
25
25
  </script>
26
26
 
27
27
  <template>
28
- <UCollapsible :unmount-on-hide="false" :class="props.class" :ui="transformUI(ui)">
28
+ <UCollapsible :unmount-on-hide="false" :class="props.class" :ui="transformUI(ui, props.ui)">
29
29
  <template #default="{ open }">
30
30
  <button :class="ui.trigger({ class: props.ui?.trigger })">
31
31
  <UIcon :name="icon || appConfig.ui.icons.chevronDown" :class="ui.triggerIcon({ class: props.ui?.triggerIcon })" />
@@ -1,6 +1,6 @@
1
1
  import type { AppConfig } from '@nuxt/schema';
2
2
  import theme from '#build/ui/prose/collapsible';
3
- import type { IconProps } from '../../types';
3
+ import type { IconProps, CollapsibleProps } from '../../types';
4
4
  import type { ComponentConfig } from '../../types/tv';
5
5
  type ProseCollapsible = ComponentConfig<typeof theme, AppConfig, 'collapsible', 'ui.prose'>;
6
6
  export interface ProseCollapsibleProps {
@@ -25,7 +25,7 @@ export interface ProseCollapsibleProps {
25
25
  */
26
26
  closeText?: string;
27
27
  class?: any;
28
- ui?: ProseCollapsible['slots'];
28
+ ui?: ProseCollapsible['slots'] & CollapsibleProps['ui'];
29
29
  }
30
30
  export interface ProseCollapsibleSlots {
31
31
  default(props?: {}): any;
@@ -13,7 +13,7 @@ export interface ProseFieldProps {
13
13
  */
14
14
  name?: string;
15
15
  /**
16
- * Expected type of the field’s value
16
+ * Expected type of the field's value
17
17
  */
18
18
  type?: string;
19
19
  /**
@@ -13,7 +13,7 @@ export interface ProseFieldProps {
13
13
  */
14
14
  name?: string;
15
15
  /**
16
- * Expected type of the field’s value
16
+ * Expected type of the field's value
17
17
  */
18
18
  type?: string;
19
19
  /**
@@ -23,6 +23,7 @@ const props = defineProps({
23
23
  });
24
24
  const appConfig = useAppConfig();
25
25
  const [DefineImageTemplate, ReuseImageTemplate] = createReusableTemplate();
26
+ const [DefineZoomedImageTemplate, ReuseZoomedImageTemplate] = createReusableTemplate();
26
27
  const open = ref(false);
27
28
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.prose?.img || {} })({
28
29
  zoom: props.zoom,
@@ -58,9 +59,19 @@ if (props.zoom) {
58
59
  />
59
60
  </DefineImageTemplate>
60
61
 
62
+ <DefineZoomedImageTemplate>
63
+ <component
64
+ :is="ImageComponent"
65
+ :src="refinedSrc"
66
+ :alt="alt"
67
+ v-bind="$attrs"
68
+ :class="ui.zoomedImage({ class: [props.ui?.zoomedImage] })"
69
+ />
70
+ </DefineZoomedImageTemplate>
71
+
61
72
  <DialogRoot v-if="zoom" v-slot="{ close }" v-model:open="open" :modal="false">
62
73
  <DialogTrigger as-child>
63
- <Motion :layout-id="layoutId" as-child :transition="{ type: 'spring', bounce: 0.2, duration: 0.4 }">
74
+ <Motion :layout-id="layoutId" as-child :transition="{ type: 'spring', bounce: 0.15, duration: 0.5, ease: 'easeInOut' }">
64
75
  <ReuseImageTemplate />
65
76
  </Motion>
66
77
  </DialogTrigger>
@@ -70,8 +81,8 @@ if (props.zoom) {
70
81
  <Motion v-if="open" :initial="{ opacity: 0 }" :animate="{ opacity: 1 }" :exit="{ opacity: 0 }" :class="ui.overlay({ class: [props.ui?.overlay] })" />
71
82
 
72
83
  <div v-if="open" :class="ui.content({ class: [props.ui?.content] })" @click="close">
73
- <Motion as-child :layout-id="layoutId" :transition="{ type: 'spring', bounce: 0.2, duration: 0.4 }">
74
- <ReuseImageTemplate />
84
+ <Motion as-child :layout-id="layoutId" :transition="{ type: 'spring', bounce: 0.15, duration: 0.5, ease: 'easeInOut' }">
85
+ <ReuseZoomedImageTemplate />
75
86
  </Motion>
76
87
  </div>
77
88
  </AnimatePresence>
@@ -1,3 +1,8 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/prose/tabs';
3
+ import type { TabsProps } from '../../types';
4
+ import type { ComponentConfig } from '../../types/tv';
5
+ type ProseTabs = ComponentConfig<typeof theme, AppConfig, 'tabs', 'ui.prose'>;
1
6
  export interface ProseTabsProps {
2
7
  /**
3
8
  * The default tab to select.
@@ -13,6 +18,7 @@ export interface ProseTabsProps {
13
18
  */
14
19
  hash?: string;
15
20
  class?: any;
21
+ ui?: ProseTabs['slots'] & TabsProps['ui'];
16
22
  }
17
23
  export interface ProseTabsSlots {
18
24
  default(props?: {}): any;
@@ -12,7 +12,8 @@ const props = defineProps({
12
12
  defaultValue: { type: String, required: false, default: "0" },
13
13
  sync: { type: String, required: false },
14
14
  hash: { type: String, required: false },
15
- class: { type: null, required: false }
15
+ class: { type: null, required: false },
16
+ ui: { type: void 0, required: false }
16
17
  });
17
18
  const slots = defineSlots();
18
19
  const model = defineModel({ type: String });
@@ -69,7 +70,7 @@ onBeforeUpdate(() => rerenderCount.value++);
69
70
  :items="items"
70
71
  :class="props.class"
71
72
  :unmount-on-hide="false"
72
- :ui="transformUI(ui())"
73
+ :ui="transformUI(ui(), props.ui)"
73
74
  @update:model-value="onUpdateModelValue"
74
75
  >
75
76
  <template #content="{ item }">
@@ -1,3 +1,8 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/prose/tabs';
3
+ import type { TabsProps } from '../../types';
4
+ import type { ComponentConfig } from '../../types/tv';
5
+ type ProseTabs = ComponentConfig<typeof theme, AppConfig, 'tabs', 'ui.prose'>;
1
6
  export interface ProseTabsProps {
2
7
  /**
3
8
  * The default tab to select.
@@ -13,6 +18,7 @@ export interface ProseTabsProps {
13
18
  */
14
19
  hash?: string;
15
20
  class?: any;
21
+ ui?: ProseTabs['slots'] & TabsProps['ui'];
16
22
  }
17
23
  export interface ProseTabsSlots {
18
24
  default(props?: {}): any;
@@ -43,7 +43,7 @@ const _useKbd = () => {
43
43
  if (["meta", "alt", "ctrl"].includes(value)) {
44
44
  return kbdKeysSpecificMap[value];
45
45
  }
46
- return kbdKeysMap[value] || value.toUpperCase();
46
+ return kbdKeysMap[value] || value;
47
47
  }
48
48
  return {
49
49
  macOS,
@@ -1,11 +1,13 @@
1
+ import type { Ref, InjectionKey } from 'vue';
1
2
  import type { ToastProps, ToastEmits } from '../types';
2
3
  import type { EmitsToProps } from '../types/utils';
4
+ export declare const toastMaxInjectionKey: InjectionKey<Ref<number | undefined>>;
3
5
  export interface Toast extends Omit<ToastProps, 'defaultOpen'>, EmitsToProps<ToastEmits> {
4
6
  id: string | number;
5
7
  onClick?: (toast: Toast) => void;
6
8
  }
7
9
  export declare function useToast(): {
8
- toasts: import("vue").Ref<Toast[], Toast[]>;
10
+ toasts: Ref<Toast[], Toast[]>;
9
11
  add: (toast: Partial<Toast>) => Toast;
10
12
  update: (id: string | number, toast: Omit<Partial<Toast>, "id">) => void;
11
13
  remove: (id: string | number) => void;
@@ -1,8 +1,9 @@
1
- import { ref, nextTick } from "vue";
1
+ import { ref, nextTick, inject } from "vue";
2
2
  import { useState } from "#imports";
3
+ export const toastMaxInjectionKey = Symbol("nuxt-ui.toast-max");
3
4
  export function useToast() {
4
5
  const toasts = useState("toasts", () => []);
5
- const maxToasts = 5;
6
+ const max = inject(toastMaxInjectionKey, void 0);
6
7
  const running = ref(false);
7
8
  const queue = [];
8
9
  const generateId = () => `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
@@ -14,7 +15,7 @@ export function useToast() {
14
15
  while (queue.length > 0) {
15
16
  const toast = queue.shift();
16
17
  await nextTick();
17
- toasts.value = [...toasts.value, toast].slice(-maxToasts);
18
+ toasts.value = [...toasts.value, toast].slice(-(max?.value ?? 5));
18
19
  }
19
20
  running.value = false;
20
21
  }
@@ -29,26 +29,31 @@ const props = defineProps({
29
29
  external: { type: Boolean, required: false },
30
30
  target: { type: [String, Object, null], required: false },
31
31
  ariaCurrentValue: { type: String, required: false },
32
- data: { type: Object, required: false },
32
+ data: { type: null, required: false },
33
33
  method: { type: String, required: false },
34
- headers: { type: Object, required: false },
34
+ replace: { type: Boolean, required: false },
35
35
  preserveScroll: { type: [Boolean, String, Function], required: false },
36
36
  preserveState: { type: [Boolean, String, Function], required: false },
37
- replace: { type: Boolean, required: false },
37
+ preserveUrl: { type: Boolean, required: false },
38
38
  only: { type: Array, required: false },
39
39
  except: { type: Array, required: false },
40
- onCancelToken: { type: Function, required: false },
40
+ headers: { type: Object, required: false },
41
+ queryStringArrayFormat: { type: String, required: false },
42
+ async: { type: Boolean, required: false },
41
43
  onBefore: { type: Function, required: false },
44
+ onBeforeUpdate: { type: Function, required: false },
42
45
  onStart: { type: Function, required: false },
43
46
  onProgress: { type: Function, required: false },
44
47
  onFinish: { type: Function, required: false },
45
48
  onCancel: { type: Function, required: false },
46
49
  onSuccess: { type: Function, required: false },
47
50
  onError: { type: Function, required: false },
48
- queryStringArrayFormat: { type: String, required: false },
49
- async: { type: Boolean, required: false },
51
+ onPrefetched: { type: Function, required: false },
52
+ onPrefetching: { type: Function, required: false },
53
+ onCancelToken: { type: Function, required: false },
50
54
  prefetch: { type: [Boolean, String, Array], required: false },
51
- cacheFor: { type: [Number, String, Array], required: false }
55
+ cacheFor: { type: [Number, String, Array], required: false },
56
+ cacheTags: { type: [String, Array], required: false }
52
57
  });
53
58
  defineSlots();
54
59
  const page = usePage();
@@ -0,0 +1,3 @@
1
+ import type { Messages } from '../types';
2
+ declare const _default: import("../types").Locale<Messages>;
3
+ export default _default;
@@ -0,0 +1,129 @@
1
+ import { defineLocale } from "../composables/defineLocale.js";
2
+ export default defineLocale({
3
+ name: "Hrvatski",
4
+ code: "hr",
5
+ messages: {
6
+ alert: {
7
+ close: "Zatvori"
8
+ },
9
+ authForm: {
10
+ hidePassword: "Sakrij lozinku",
11
+ showPassword: "Prika\u017Ei lozinku",
12
+ submit: "Nastavi"
13
+ },
14
+ banner: {
15
+ close: "Zatvori"
16
+ },
17
+ calendar: {
18
+ nextMonth: "Sljede\u0107i mjesec",
19
+ nextYear: "Sljede\u0107a godina",
20
+ prevMonth: "Prethodni mjesec",
21
+ prevYear: "Prethodna godina"
22
+ },
23
+ carousel: {
24
+ dots: "Odaberite slajd za prikaz",
25
+ goto: "Idi na slajd {slide}",
26
+ next: "Sljede\u0107i",
27
+ prev: "Prethodni"
28
+ },
29
+ chatPrompt: {
30
+ placeholder: "Upi\u0161ite svoju poruku ovdje\u2026"
31
+ },
32
+ chatPromptSubmit: {
33
+ label: "Po\u0161alji upit"
34
+ },
35
+ colorMode: {
36
+ dark: "Tamno",
37
+ light: "Svijetlo",
38
+ switchToDark: "Prebaci na tamni na\u010Din rada",
39
+ switchToLight: "Prebaci na svijetli na\u010Din rada",
40
+ system: "Sustav"
41
+ },
42
+ commandPalette: {
43
+ back: "Natrag",
44
+ close: "Zatvori",
45
+ noData: "Nema podataka",
46
+ noMatch: "Nema odgovaraju\u0107ih podataka",
47
+ placeholder: "Upi\u0161ite naredbu ili pretra\u017Eivanje\u2026"
48
+ },
49
+ contentSearch: {
50
+ links: "Poveznice",
51
+ theme: "Tema"
52
+ },
53
+ contentSearchButton: {
54
+ label: "Pretra\u017Eivanje\u2026"
55
+ },
56
+ contentToc: {
57
+ title: "Na ovoj stranici"
58
+ },
59
+ dashboardSearch: {
60
+ theme: "Tema"
61
+ },
62
+ dashboardSearchButton: {
63
+ label: "Pretra\u017Eivanje\u2026"
64
+ },
65
+ dashboardSidebarCollapse: {
66
+ collapse: "Smanji bo\u010Dnu traku",
67
+ expand: "Pro\u0161iri bo\u010Dnu traku"
68
+ },
69
+ dashboardSidebarToggle: {
70
+ close: "Zatvori bo\u010Dnu traku",
71
+ open: "Otvori bo\u010Dnu traku"
72
+ },
73
+ error: {
74
+ clear: "Natrag na po\u010Detnu"
75
+ },
76
+ fileUpload: {
77
+ removeFile: "Ukloni {filename}"
78
+ },
79
+ header: {
80
+ close: "Zatvori izbornik",
81
+ open: "Otvori izbornik"
82
+ },
83
+ inputMenu: {
84
+ create: 'Stvori "{label}"',
85
+ noData: "Nema podataka",
86
+ noMatch: "Nema odgovaraju\u0107ih podataka"
87
+ },
88
+ inputNumber: {
89
+ decrement: "Smanji",
90
+ increment: "Pove\u0107aj"
91
+ },
92
+ modal: {
93
+ close: "Zatvori"
94
+ },
95
+ pricingTable: {
96
+ caption: "Usporedba cjenovnih planova"
97
+ },
98
+ prose: {
99
+ codeCollapse: {
100
+ closeText: "Smanji",
101
+ name: "kod",
102
+ openText: "Pro\u0161iri"
103
+ },
104
+ collapsible: {
105
+ closeText: "Sakrij",
106
+ name: "svojstva",
107
+ openText: "Prika\u017Ei"
108
+ },
109
+ pre: {
110
+ copy: "Kopiraj kod u me\u0111uspremnik"
111
+ }
112
+ },
113
+ selectMenu: {
114
+ create: 'Stvori "{label}"',
115
+ noData: "Nema podataka",
116
+ noMatch: "Nema odgovaraju\u0107ih podataka",
117
+ search: "Pretra\u017Eivanje\u2026"
118
+ },
119
+ slideover: {
120
+ close: "Zatvori"
121
+ },
122
+ table: {
123
+ noData: "Nema podataka"
124
+ },
125
+ toast: {
126
+ close: "Zatvori"
127
+ }
128
+ }
129
+ });
@@ -17,6 +17,7 @@ export { default as fi } from './fi';
17
17
  export { default as fr } from './fr';
18
18
  export { default as he } from './he';
19
19
  export { default as hi } from './hi';
20
+ export { default as hr } from './hr';
20
21
  export { default as hu } from './hu';
21
22
  export { default as hy } from './hy';
22
23
  export { default as id } from './id';
@@ -17,6 +17,7 @@ export { default as fi } from "./fi.js";
17
17
  export { default as fr } from "./fr.js";
18
18
  export { default as he } from "./he.js";
19
19
  export { default as hi } from "./hi.js";
20
+ export { default as hr } from "./hr.js";
20
21
  export { default as hu } from "./hu.js";
21
22
  export { default as hy } from "./hy.js";
22
23
  export { default as id } from "./id.js";
@@ -40,6 +40,7 @@ export * from '../components/DashboardSidebarToggle.vue';
40
40
  export * from '../components/DashboardToolbar.vue';
41
41
  export * from '../components/Drawer.vue';
42
42
  export * from '../components/DropdownMenu.vue';
43
+ export * from '../components/Empty.vue';
43
44
  export * from '../components/Error.vue';
44
45
  export * from '../components/FieldGroup.vue';
45
46
  export * from '../components/FileUpload.vue';
@@ -76,10 +77,10 @@ export * from '../components/PageLogos.vue';
76
77
  export * from '../components/PageSection.vue';
77
78
  export * from '../components/Pagination.vue';
78
79
  export * from '../components/PinInput.vue';
80
+ export * from '../components/Popover.vue';
79
81
  export * from '../components/PricingPlan.vue';
80
82
  export * from '../components/PricingPlans.vue';
81
83
  export * from '../components/PricingTable.vue';
82
- export * from '../components/Popover.vue';
83
84
  export * from '../components/Progress.vue';
84
85
  export * from '../components/RadioGroup.vue';
85
86
  export * from '../components/Select.vue';