@nuxt/ui 4.5.1 → 4.6.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 (177) hide show
  1. package/dist/module.d.mts +7 -0
  2. package/dist/module.json +2 -2
  3. package/dist/module.mjs +78 -67
  4. package/dist/runtime/components/Avatar.vue +10 -12
  5. package/dist/runtime/components/Banner.vue +1 -1
  6. package/dist/runtime/components/BlogPost.vue +3 -2
  7. package/dist/runtime/components/Calendar.d.vue.ts +4 -4
  8. package/dist/runtime/components/Calendar.vue.d.ts +4 -4
  9. package/dist/runtime/components/ChangelogVersion.vue +3 -2
  10. package/dist/runtime/components/ChangelogVersions.vue +1 -1
  11. package/dist/runtime/components/ChatMessage.d.vue.ts +4 -1
  12. package/dist/runtime/components/ChatMessage.vue +5 -0
  13. package/dist/runtime/components/ChatMessage.vue.d.ts +4 -1
  14. package/dist/runtime/components/ChatReasoning.d.vue.ts +78 -0
  15. package/dist/runtime/components/ChatReasoning.vue +162 -0
  16. package/dist/runtime/components/ChatReasoning.vue.d.ts +78 -0
  17. package/dist/runtime/components/ChatShimmer.d.vue.ts +34 -0
  18. package/dist/runtime/components/ChatShimmer.vue +37 -0
  19. package/dist/runtime/components/ChatShimmer.vue.d.ts +34 -0
  20. package/dist/runtime/components/ChatTool.d.vue.ts +88 -0
  21. package/dist/runtime/components/ChatTool.vue +105 -0
  22. package/dist/runtime/components/ChatTool.vue.d.ts +88 -0
  23. package/dist/runtime/components/Checkbox.d.vue.ts +22 -19
  24. package/dist/runtime/components/Checkbox.vue +9 -8
  25. package/dist/runtime/components/Checkbox.vue.d.ts +22 -19
  26. package/dist/runtime/components/DashboardGroup.d.vue.ts +1 -1
  27. package/dist/runtime/components/DashboardGroup.vue.d.ts +1 -1
  28. package/dist/runtime/components/DashboardSearchButton.vue +2 -2
  29. package/dist/runtime/components/Drawer.vue +1 -1
  30. package/dist/runtime/components/DropdownMenu.d.vue.ts +29 -3
  31. package/dist/runtime/components/DropdownMenu.vue +9 -0
  32. package/dist/runtime/components/DropdownMenu.vue.d.ts +29 -3
  33. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +9 -3
  34. package/dist/runtime/components/DropdownMenuContent.vue +62 -9
  35. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +9 -3
  36. package/dist/runtime/components/EditorDragHandle.d.vue.ts +4 -4
  37. package/dist/runtime/components/EditorDragHandle.vue.d.ts +4 -4
  38. package/dist/runtime/components/Error.vue +5 -5
  39. package/dist/runtime/components/FileUpload.d.vue.ts +6 -0
  40. package/dist/runtime/components/FileUpload.vue +11 -7
  41. package/dist/runtime/components/FileUpload.vue.d.ts +6 -0
  42. package/dist/runtime/components/Icon.d.vue.ts +2 -1
  43. package/dist/runtime/components/Icon.vue +1 -1
  44. package/dist/runtime/components/Icon.vue.d.ts +2 -1
  45. package/dist/runtime/components/InputDate.d.vue.ts +4 -4
  46. package/dist/runtime/components/InputDate.vue.d.ts +4 -4
  47. package/dist/runtime/components/InputMenu.d.vue.ts +7 -1
  48. package/dist/runtime/components/InputMenu.vue +67 -48
  49. package/dist/runtime/components/InputMenu.vue.d.ts +7 -1
  50. package/dist/runtime/components/InputTime.d.vue.ts +53 -27
  51. package/dist/runtime/components/InputTime.vue +52 -27
  52. package/dist/runtime/components/InputTime.vue.d.ts +53 -27
  53. package/dist/runtime/components/Kbd.vue +1 -1
  54. package/dist/runtime/components/Modal.vue +1 -1
  55. package/dist/runtime/components/NavigationMenu.vue +1 -0
  56. package/dist/runtime/components/Popover.vue +1 -1
  57. package/dist/runtime/components/Progress.d.vue.ts +1 -1
  58. package/dist/runtime/components/Progress.vue.d.ts +1 -1
  59. package/dist/runtime/components/SelectMenu.d.vue.ts +1 -1
  60. package/dist/runtime/components/SelectMenu.vue +1 -1
  61. package/dist/runtime/components/SelectMenu.vue.d.ts +1 -1
  62. package/dist/runtime/components/Sidebar.d.vue.ts +131 -0
  63. package/dist/runtime/components/Sidebar.vue +222 -0
  64. package/dist/runtime/components/Sidebar.vue.d.ts +131 -0
  65. package/dist/runtime/components/Slideover.vue +1 -1
  66. package/dist/runtime/components/Switch.d.vue.ts +22 -19
  67. package/dist/runtime/components/Switch.vue +7 -6
  68. package/dist/runtime/components/Switch.vue.d.ts +22 -19
  69. package/dist/runtime/components/Table.d.vue.ts +1 -1
  70. package/dist/runtime/components/Table.vue +12 -4
  71. package/dist/runtime/components/Table.vue.d.ts +1 -1
  72. package/dist/runtime/components/Tooltip.d.vue.ts +2 -0
  73. package/dist/runtime/components/Tooltip.vue +3 -2
  74. package/dist/runtime/components/Tooltip.vue.d.ts +2 -0
  75. package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +1 -1
  76. package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +1 -1
  77. package/dist/runtime/components/color-mode/ColorModeSwitch.vue +3 -1
  78. package/dist/runtime/components/content/ContentNavigation.vue +9 -2
  79. package/dist/runtime/components/content/ContentSurround.vue +6 -2
  80. package/dist/runtime/components/content/ContentToc.d.vue.ts +5 -0
  81. package/dist/runtime/components/content/ContentToc.vue +57 -11
  82. package/dist/runtime/components/content/ContentToc.vue.d.ts +5 -0
  83. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +1 -1
  84. package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +1 -1
  85. package/dist/runtime/components/prose/Pre.vue +0 -4
  86. package/dist/runtime/composables/index.d.ts +11 -0
  87. package/dist/runtime/composables/index.js +11 -0
  88. package/dist/runtime/composables/useEditorMenu.js +1 -1
  89. package/dist/runtime/composables/useFileUpload.d.ts +2 -2
  90. package/dist/runtime/composables/useFileUpload.js +3 -3
  91. package/dist/runtime/composables/{internal/useFilter.js → useFilter.js} +1 -1
  92. package/dist/runtime/composables/useScrollShadow.d.ts +23 -0
  93. package/dist/runtime/composables/useScrollShadow.js +36 -0
  94. package/dist/runtime/index.css +1 -1
  95. package/dist/runtime/keyframes.css +1 -1
  96. package/dist/runtime/locale/ar.js +13 -0
  97. package/dist/runtime/locale/az.js +13 -0
  98. package/dist/runtime/locale/be.js +13 -0
  99. package/dist/runtime/locale/bg.js +13 -0
  100. package/dist/runtime/locale/bn.js +13 -0
  101. package/dist/runtime/locale/ca.js +13 -0
  102. package/dist/runtime/locale/ckb.js +13 -0
  103. package/dist/runtime/locale/cs.js +13 -0
  104. package/dist/runtime/locale/da.js +13 -0
  105. package/dist/runtime/locale/de.js +13 -0
  106. package/dist/runtime/locale/de_ch.js +13 -0
  107. package/dist/runtime/locale/el.js +13 -0
  108. package/dist/runtime/locale/en.js +13 -0
  109. package/dist/runtime/locale/es.js +13 -0
  110. package/dist/runtime/locale/et.js +13 -0
  111. package/dist/runtime/locale/eu.js +13 -0
  112. package/dist/runtime/locale/fa_ir.js +13 -0
  113. package/dist/runtime/locale/fi.js +13 -0
  114. package/dist/runtime/locale/fr.js +13 -0
  115. package/dist/runtime/locale/gl.js +13 -0
  116. package/dist/runtime/locale/he.js +13 -0
  117. package/dist/runtime/locale/hi.js +13 -0
  118. package/dist/runtime/locale/hr.js +13 -0
  119. package/dist/runtime/locale/hu.js +13 -0
  120. package/dist/runtime/locale/hy.js +13 -0
  121. package/dist/runtime/locale/id.js +13 -0
  122. package/dist/runtime/locale/index.d.ts +1 -0
  123. package/dist/runtime/locale/index.js +1 -0
  124. package/dist/runtime/locale/is.d.ts +3 -0
  125. package/dist/runtime/locale/is.js +142 -0
  126. package/dist/runtime/locale/it.js +13 -0
  127. package/dist/runtime/locale/ja.js +13 -0
  128. package/dist/runtime/locale/ka.js +13 -0
  129. package/dist/runtime/locale/kk.js +13 -0
  130. package/dist/runtime/locale/km.js +13 -0
  131. package/dist/runtime/locale/ko.js +13 -0
  132. package/dist/runtime/locale/ky.js +13 -0
  133. package/dist/runtime/locale/lb.js +13 -0
  134. package/dist/runtime/locale/lo.js +13 -0
  135. package/dist/runtime/locale/lt.js +13 -0
  136. package/dist/runtime/locale/mn.js +13 -0
  137. package/dist/runtime/locale/ms.js +13 -0
  138. package/dist/runtime/locale/nb_no.js +13 -0
  139. package/dist/runtime/locale/nl.js +13 -0
  140. package/dist/runtime/locale/pl.js +13 -0
  141. package/dist/runtime/locale/pt.js +13 -0
  142. package/dist/runtime/locale/pt_br.js +13 -0
  143. package/dist/runtime/locale/ro.js +13 -0
  144. package/dist/runtime/locale/ru.js +13 -0
  145. package/dist/runtime/locale/sk.js +13 -0
  146. package/dist/runtime/locale/sl.js +13 -0
  147. package/dist/runtime/locale/sq.js +13 -0
  148. package/dist/runtime/locale/sv.js +13 -0
  149. package/dist/runtime/locale/th.js +13 -0
  150. package/dist/runtime/locale/tj.js +13 -0
  151. package/dist/runtime/locale/tr.js +13 -0
  152. package/dist/runtime/locale/ug_cn.js +13 -0
  153. package/dist/runtime/locale/uk.js +13 -0
  154. package/dist/runtime/locale/ur.js +13 -0
  155. package/dist/runtime/locale/uz.js +13 -0
  156. package/dist/runtime/locale/vi.js +13 -0
  157. package/dist/runtime/locale/zh_cn.js +13 -0
  158. package/dist/runtime/locale/zh_tw.js +13 -0
  159. package/dist/runtime/types/index.d.ts +4 -0
  160. package/dist/runtime/types/index.js +4 -0
  161. package/dist/runtime/types/locale.d.ts +13 -0
  162. package/dist/runtime/utils/ai.d.ts +18 -0
  163. package/dist/runtime/utils/ai.js +13 -0
  164. package/dist/runtime/utils/editor.js +17 -5
  165. package/dist/runtime/vue/components/Icon.d.vue.ts +1 -4
  166. package/dist/runtime/vue/components/Icon.vue +28 -3
  167. package/dist/runtime/vue/components/Icon.vue.d.ts +1 -4
  168. package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +1 -1
  169. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +1 -1
  170. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue +3 -1
  171. package/dist/shared/{ui.DI_ypO2T.mjs → ui.DJUbBpE2.mjs} +298 -39
  172. package/dist/unplugin.d.mts +15 -5
  173. package/dist/unplugin.mjs +53 -30
  174. package/dist/vite.d.mts +1 -0
  175. package/dist/vite.mjs +1 -1
  176. package/package.json +49 -46
  177. /package/dist/runtime/composables/{internal/useFilter.d.ts → useFilter.d.ts} +0 -0
@@ -4,5 +4,5 @@ export interface ColorModeSelectProps extends Omit<SelectMenuProps<SelectMenuIte
4
4
  declare const _default: typeof __VLS_export;
5
5
  export default _default;
6
6
  declare const __VLS_export: import("vue").DefineComponent<ColorModeSelectProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ColorModeSelectProps> & Readonly<{}>, {
7
- searchInput: boolean | import("../Input.vue").InputProps;
7
+ searchInput: boolean | Omit<import("../Input.vue").InputProps, "modelValue" | "defaultValue">;
8
8
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -24,7 +24,9 @@ const props = defineProps({
24
24
  name: { type: String, required: false },
25
25
  required: { type: Boolean, required: false },
26
26
  value: { type: String, required: false },
27
- defaultValue: { type: Boolean, required: false }
27
+ defaultValue: { type: null, required: false },
28
+ trueValue: { type: null, required: false },
29
+ falseValue: { type: null, required: false }
28
30
  });
29
31
  const { t } = useLocale();
30
32
  const colorMode = useColorMode();
@@ -107,12 +107,19 @@ const defaultValue = computed(() => {
107
107
  <Primitive :as="as" v-bind="$attrs" :as-child="level > 0" data-slot="root" :class="ui.root({ class: [uiProp?.root, props.class] })">
108
108
  <AccordionRoot as="ul" :disabled="disabled" v-bind="rootProps" :default-value="defaultValue" :class="level > 0 ? ui.listWithChildren({ class: uiProp?.listWithChildren }) : ui.list({ class: uiProp?.list })">
109
109
  <template v-for="(link, index) in navigation" :key="index">
110
- <AccordionItem v-if="link.children?.length" as="li" data-slot="itemWithChildren" :class="ui.itemWithChildren({ class: [uiProp?.itemWithChildren, link.ui?.itemWithChildren], level: level > 0 })" :value="String(index)">
110
+ <AccordionItem
111
+ v-if="link.children?.length"
112
+ as="li"
113
+ :disabled="!!link.disabled"
114
+ data-slot="itemWithChildren"
115
+ :class="ui.itemWithChildren({ class: [uiProp?.itemWithChildren, link.ui?.itemWithChildren], level: level > 0 })"
116
+ :value="String(index)"
117
+ >
111
118
  <AccordionTrigger
112
119
  as="button"
113
120
  :class="[
114
121
  ui.link({ class: [uiProp?.link, link.ui?.link, link.class], active: link.active, disabled: !!link.disabled || disabled }),
115
- ui.trigger({ class: [uiProp?.trigger, link.ui?.trigger], disabled })
122
+ ui.trigger({ class: [uiProp?.trigger, link.ui?.trigger], disabled: !!link.disabled || disabled })
116
123
  ]"
117
124
  >
118
125
  <ReuseLinkTemplate :link="link" :active="link.active || false" />
@@ -8,6 +8,7 @@ import { Primitive } from "reka-ui";
8
8
  import { createReusableTemplate } from "@vueuse/core";
9
9
  import { useAppConfig } from "#imports";
10
10
  import { useComponentUI } from "../../composables/useComponentUI";
11
+ import { useLocale } from "../../composables/useLocale";
11
12
  import { tv } from "../../utils/tv";
12
13
  import ULink from "../Link.vue";
13
14
  import UIcon from "../Icon.vue";
@@ -21,6 +22,7 @@ const props = defineProps({
21
22
  ui: { type: Object, required: false }
22
23
  });
23
24
  defineSlots();
25
+ const { dir } = useLocale();
24
26
  const appConfig = useAppConfig();
25
27
  const uiProp = useComponentUI("contentSurround", props);
26
28
  const [DefineLinkTemplate, ReuseLinkTemplate] = createReusableTemplate({
@@ -31,6 +33,8 @@ const [DefineLinkTemplate, ReuseLinkTemplate] = createReusableTemplate({
31
33
  }
32
34
  });
33
35
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.contentSurround || {} })());
36
+ const prevIcon = computed(() => props.prevIcon || (dir.value === "rtl" ? appConfig.ui.icons.arrowRight : appConfig.ui.icons.arrowLeft));
37
+ const nextIcon = computed(() => props.nextIcon || (dir.value === "rtl" ? appConfig.ui.icons.arrowLeft : appConfig.ui.icons.arrowRight));
34
38
  </script>
35
39
 
36
40
  <template>
@@ -60,7 +64,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.contentSurrou
60
64
  </DefineLinkTemplate>
61
65
 
62
66
  <Primitive v-if="surround" :as="as" v-bind="$attrs" data-slot="root" :class="ui.root({ class: [uiProp?.root, props.class] })">
63
- <ReuseLinkTemplate :link="surround[0]" :icon="prevIcon || appConfig.ui.icons.arrowLeft" direction="left" />
64
- <ReuseLinkTemplate :link="surround[1]" :icon="nextIcon || appConfig.ui.icons.arrowRight" direction="right" />
67
+ <ReuseLinkTemplate :link="surround[0]" :icon="prevIcon" direction="left" />
68
+ <ReuseLinkTemplate :link="surround[1]" :icon="nextIcon" direction="right" />
65
69
  </Primitive>
66
70
  </template>
@@ -40,6 +40,11 @@ export interface ContentTocProps<T extends ContentTocLink = ContentTocLink> exte
40
40
  * @defaultValue 'primary'
41
41
  */
42
42
  highlightColor?: ContentToc['variants']['highlightColor'];
43
+ /**
44
+ * The variant of the highlight indicator.
45
+ * @defaultValue 'straight'
46
+ */
47
+ highlightVariant?: ContentToc['variants']['highlightVariant'];
43
48
  links?: T[];
44
49
  class?: any;
45
50
  ui?: ContentToc['slots'];
@@ -20,6 +20,7 @@ const props = defineProps({
20
20
  color: { type: null, required: false },
21
21
  highlight: { type: Boolean, required: false },
22
22
  highlightColor: { type: null, required: false },
23
+ highlightVariant: { type: null, required: false },
23
24
  links: { type: Array, required: false },
24
25
  class: { type: null, required: false },
25
26
  ui: { type: Object, required: false },
@@ -41,9 +42,11 @@ const [DefineListTemplate, ReuseListTemplate] = createReusableTemplate({
41
42
  }
42
43
  });
43
44
  const [DefineTriggerTemplate, ReuseTriggerTemplate] = createReusableTemplate();
45
+ const [DefineContentTemplate, ReuseContentTemplate] = createReusableTemplate();
44
46
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.contentToc || {} })({
45
47
  color: props.color,
46
48
  highlight: props.highlight,
49
+ highlightVariant: props.highlightVariant,
47
50
  highlightColor: props.highlightColor || props.color
48
51
  }));
49
52
  function scrollToHeading(id) {
@@ -54,18 +57,58 @@ function scrollToHeading(id) {
54
57
  function flattenLinks(links) {
55
58
  return links.flatMap((link) => [link, ...link.children ? flattenLinks(link.children) : []]);
56
59
  }
60
+ function flattenLinksWithLevel(links, level = 0) {
61
+ return links.flatMap((link) => [
62
+ { link, level },
63
+ ...link.children ? flattenLinksWithLevel(link.children, level + 1) : []
64
+ ]);
65
+ }
66
+ const linkHeight = 1.75;
57
67
  const indicatorStyle = computed(() => {
58
68
  if (!activeHeadings.value?.length) {
59
69
  return;
60
70
  }
61
71
  const flatLinks = flattenLinks(props.links || []);
62
72
  const activeIndex = flatLinks.findIndex((link) => activeHeadings.value.includes(link.id));
63
- const linkHeight = 1.75;
64
73
  return {
65
74
  "--indicator-size": `${linkHeight * activeHeadings.value.length}rem`,
66
75
  "--indicator-position": activeIndex >= 0 ? `${activeIndex * linkHeight}rem` : "0rem"
67
76
  };
68
77
  });
78
+ const circuitMaskStyle = computed(() => {
79
+ if (!props.highlight || props.highlightVariant !== "circuit" || !props.links?.length) {
80
+ return;
81
+ }
82
+ const flatLinks = flattenLinksWithLevel(props.links);
83
+ const svgUnit = 16;
84
+ const svgLinkHeight = linkHeight * svgUnit;
85
+ const svgHeight = flatLinks.length * svgLinkHeight;
86
+ const x0 = 0.5;
87
+ const x1 = 10.5;
88
+ let path = "";
89
+ let currentX = x0;
90
+ let y = 0;
91
+ flatLinks.forEach((item, index) => {
92
+ const targetX = item.level > 0 ? x1 : x0;
93
+ const nextY = y + svgLinkHeight;
94
+ if (index === 0) {
95
+ path += `M${targetX} ${y}`;
96
+ currentX = targetX;
97
+ }
98
+ if (targetX !== currentX) {
99
+ path += ` L${targetX} ${y + 6}`;
100
+ currentX = targetX;
101
+ }
102
+ path += ` L${currentX} ${nextY - (index < flatLinks.length - 1 && flatLinks[index + 1]?.level !== item.level ? 6 : 0)}`;
103
+ y = nextY;
104
+ });
105
+ const svgPath = encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 ${svgHeight}'><path d='${path}' stroke='black' stroke-width='1' fill='none'/></svg>`);
106
+ return {
107
+ width: "0.75rem",
108
+ height: `${flatLinks.length * linkHeight}rem`,
109
+ maskImage: `url("data:image/svg+xml,${svgPath}")`
110
+ };
111
+ });
69
112
  const nuxtApp = useNuxtApp();
70
113
  nuxtApp.hooks.hook("page:loading:end", () => {
71
114
  const headings = Array.from(document.querySelectorAll("h2, h3"));
@@ -109,6 +152,17 @@ nuxtApp.hooks.hook("page:transition:finish", () => {
109
152
  </span>
110
153
  </DefineTriggerTemplate>
111
154
 
155
+ <DefineContentTemplate>
156
+ <div v-if="highlight" data-slot="indicator" :class="ui.indicator({ class: uiProp?.indicator })" :style="{ ...indicatorStyle, ...circuitMaskStyle || {} }">
157
+ <div data-slot="indicatorLine" :class="ui.indicatorLine({ class: uiProp?.indicatorLine })" />
158
+ <div v-if="indicatorStyle" data-slot="indicatorActive" :class="ui.indicatorActive({ class: uiProp?.indicatorActive })" />
159
+ </div>
160
+
161
+ <slot name="content" :links="links">
162
+ <ReuseListTemplate :links="links" :level="0" />
163
+ </slot>
164
+ </DefineContentTemplate>
165
+
112
166
  <CollapsibleRoot v-slot="{ open }" v-bind="{ ...rootProps, ...$attrs }" :default-open="defaultOpen" data-slot="root" :class="ui.root({ class: [uiProp?.root, props.class] })">
113
167
  <div data-slot="container" :class="ui.container({ class: uiProp?.container })">
114
168
  <div v-if="!!slots.top" data-slot="top" :class="ui.top({ class: uiProp?.top })">
@@ -121,11 +175,7 @@ nuxtApp.hooks.hook("page:transition:finish", () => {
121
175
  </CollapsibleTrigger>
122
176
 
123
177
  <CollapsibleContent data-slot="content" :class="ui.content({ class: [uiProp?.content, 'lg:hidden'] })">
124
- <div v-if="highlight" data-slot="indicator" :class="ui.indicator({ class: uiProp?.indicator })" :style="indicatorStyle" />
125
-
126
- <slot name="content" :links="links">
127
- <ReuseListTemplate :links="links" :level="0" />
128
- </slot>
178
+ <ReuseContentTemplate />
129
179
  </CollapsibleContent>
130
180
 
131
181
  <p data-slot="trigger" :class="ui.trigger({ class: 'hidden lg:flex' })">
@@ -133,11 +183,7 @@ nuxtApp.hooks.hook("page:transition:finish", () => {
133
183
  </p>
134
184
 
135
185
  <div data-slot="content" :class="ui.content({ class: [uiProp?.content, 'hidden lg:flex'] })">
136
- <div v-if="highlight" data-slot="indicator" :class="ui.indicator({ class: uiProp?.indicator })" :style="indicatorStyle" />
137
-
138
- <slot name="content" :links="links">
139
- <ReuseListTemplate :links="links" :level="0" />
140
- </slot>
186
+ <ReuseContentTemplate />
141
187
  </div>
142
188
  </template>
143
189
 
@@ -40,6 +40,11 @@ export interface ContentTocProps<T extends ContentTocLink = ContentTocLink> exte
40
40
  * @defaultValue 'primary'
41
41
  */
42
42
  highlightColor?: ContentToc['variants']['highlightColor'];
43
+ /**
44
+ * The variant of the highlight indicator.
45
+ * @defaultValue 'straight'
46
+ */
47
+ highlightVariant?: ContentToc['variants']['highlightVariant'];
43
48
  links?: T[];
44
49
  class?: any;
45
50
  ui?: ContentToc['slots'];
@@ -16,5 +16,5 @@ declare const __VLS_export: import("vue").DefineComponent<LocaleSelectProps & {
16
16
  }>, {
17
17
  valueKey: "code";
18
18
  labelKey: import("../../types").GetItemKeys<Locale<any>[]>;
19
- searchInput: boolean | import("../Input.vue").InputProps;
19
+ searchInput: boolean | Omit<import("../Input.vue").InputProps, "modelValue" | "defaultValue">;
20
20
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -16,5 +16,5 @@ declare const __VLS_export: import("vue").DefineComponent<LocaleSelectProps & {
16
16
  }>, {
17
17
  valueKey: "code";
18
18
  labelKey: import("../../types").GetItemKeys<Locale<any>[]>;
19
- searchInput: boolean | import("../Input.vue").InputProps;
19
+ searchInput: boolean | Omit<import("../Input.vue").InputProps, "modelValue" | "defaultValue">;
20
20
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -52,7 +52,3 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.prose?.pre ||
52
52
  <pre :class="ui.base({ class: [uiProp?.base, props.class] })" v-bind="$attrs"><slot /></pre>
53
53
  </div>
54
54
  </template>
55
-
56
- <style>
57
- .shiki span.line{display:block}.shiki span.line.highlight{margin:0 -16px;padding:0 16px;@apply bg-(--ui-bg-accented)/50}
58
- </style>
@@ -1,8 +1,19 @@
1
1
  export * from './defineLocale';
2
2
  export * from './defineShortcuts';
3
+ export * from './useAvatarGroup';
4
+ export * from './useComponentIcons';
5
+ export * from './useComponentUI';
6
+ export * from './useContentSearch';
7
+ export * from './useEditorMenu';
8
+ export * from './useFieldGroup';
3
9
  export * from './useFileUpload';
10
+ export * from './useFilter';
11
+ export * from './useFormField';
4
12
  export * from './useKbd';
13
+ export * from './useLocale';
5
14
  export * from './useOverlay';
15
+ export * from './usePortal';
6
16
  export * from './useResizable';
17
+ export * from './useScrollShadow';
7
18
  export * from './useScrollspy';
8
19
  export * from './useToast';
@@ -1,8 +1,19 @@
1
1
  export * from "./defineLocale.js";
2
2
  export * from "./defineShortcuts.js";
3
+ export * from "./useAvatarGroup.js";
4
+ export * from "./useComponentIcons.js";
5
+ export * from "./useComponentUI.js";
6
+ export * from "./useContentSearch.js";
7
+ export * from "./useEditorMenu.js";
8
+ export * from "./useFieldGroup.js";
3
9
  export * from "./useFileUpload.js";
10
+ export * from "./useFilter.js";
11
+ export * from "./useFormField.js";
4
12
  export * from "./useKbd.js";
13
+ export * from "./useLocale.js";
5
14
  export * from "./useOverlay.js";
15
+ export * from "./usePortal.js";
6
16
  export * from "./useResizable.js";
17
+ export * from "./useScrollShadow.js";
7
18
  export * from "./useScrollspy.js";
8
19
  export * from "./useToast.js";
@@ -1,6 +1,6 @@
1
1
  import { ref, h, computed, unref, watch } from "vue";
2
2
  import { defu } from "defu";
3
- import { useFilter } from "./internal/useFilter.js";
3
+ import { useFilter } from "./useFilter.js";
4
4
  import { computePosition } from "@floating-ui/dom";
5
5
  import { VueRenderer } from "@tiptap/vue-3";
6
6
  import Suggestion from "@tiptap/suggestion";
@@ -6,8 +6,8 @@ export interface UseFileUploadOptions {
6
6
  * @defaultValue '*'
7
7
  */
8
8
  accept?: MaybeRef<string>;
9
- reset?: boolean;
10
- multiple?: boolean;
9
+ reset?: MaybeRef<boolean>;
10
+ multiple?: MaybeRef<boolean>;
11
11
  dropzone?: boolean;
12
12
  onUpdate: (files: File[]) => void;
13
13
  }
@@ -33,7 +33,7 @@ export function useFileUpload(options) {
33
33
  if (files instanceof FileList) {
34
34
  files = Array.from(files);
35
35
  }
36
- if (files.length > 1 && !multiple) {
36
+ if (files.length > 1 && !unref(multiple)) {
37
37
  files = [files[0]];
38
38
  }
39
39
  if (fromDropZone && inputRef.value?.$el) {
@@ -61,9 +61,9 @@ export function useFileUpload(options) {
61
61
  isDragging.value = value;
62
62
  });
63
63
  const { onChange, open: open2 } = useFileDialog({
64
- accept: unref(accept),
64
+ accept,
65
65
  multiple,
66
- input: unref(inputRef)?.$el,
66
+ input: computed(() => unref(inputRef)?.$el),
67
67
  reset
68
68
  });
69
69
  fileDialog.open = open2;
@@ -1,5 +1,5 @@
1
1
  import { useFilter as useRekaFilter } from "reka-ui";
2
- import { get } from "../../utils/index.js";
2
+ import { get } from "../utils/index.js";
3
3
  export function useFilter() {
4
4
  const { contains, startsWith } = useRekaFilter({ sensitivity: "base" });
5
5
  function score(value, searchTerm) {
@@ -0,0 +1,23 @@
1
+ import type { CSSProperties, MaybeRef, MaybeRefOrGetter } from 'vue';
2
+ export interface UseScrollShadowOptions {
3
+ /**
4
+ * The shadow size in pixels.
5
+ * @defaultValue 24
6
+ */
7
+ size?: MaybeRefOrGetter<number>;
8
+ /**
9
+ * The scroll direction to apply shadows.
10
+ * @defaultValue 'vertical'
11
+ */
12
+ orientation?: MaybeRefOrGetter<'vertical' | 'horizontal'>;
13
+ }
14
+ export declare function useScrollShadow(element: MaybeRef<HTMLElement | null | undefined>, options?: UseScrollShadowOptions): {
15
+ style: import("vue").ComputedRef<CSSProperties | undefined>;
16
+ isOverflowing: import("vue").ComputedRef<boolean>;
17
+ arrivedState: {
18
+ left: boolean;
19
+ right: boolean;
20
+ top: boolean;
21
+ bottom: boolean;
22
+ };
23
+ };
@@ -0,0 +1,36 @@
1
+ import { computed, toValue } from "vue";
2
+ import { useScroll } from "@vueuse/core";
3
+ export function useScrollShadow(element, options = {}) {
4
+ const { arrivedState } = useScroll(element);
5
+ const style = computed(() => {
6
+ const el = toValue(element);
7
+ const orientation = toValue(options.orientation) ?? "vertical";
8
+ const [startKey, endKey] = orientation === "horizontal" ? ["left", "right"] : ["top", "bottom"];
9
+ const showStart = !arrivedState[startKey];
10
+ const showEnd = !arrivedState[endKey];
11
+ if (!showStart && !showEnd) return void 0;
12
+ const overflows = el ? orientation === "horizontal" ? el.scrollWidth > el.clientWidth : el.scrollHeight > el.clientHeight : false;
13
+ if (!overflows) return void 0;
14
+ const size = `${toValue(options.size) ?? 24}px`;
15
+ const angle = orientation === "horizontal" ? "90deg" : "180deg";
16
+ if (showStart && showEnd) {
17
+ return { maskImage: `linear-gradient(${angle}, transparent, #000 ${size}, #000 calc(100% - ${size}), transparent)` };
18
+ }
19
+ if (showStart) {
20
+ return { maskImage: `linear-gradient(${angle}, transparent, #000 ${size})` };
21
+ }
22
+ return { maskImage: `linear-gradient(${angle}, #000, #000 calc(100% - ${size}), transparent)` };
23
+ });
24
+ const isOverflowing = computed(() => {
25
+ void (arrivedState.top, arrivedState.bottom, arrivedState.left, arrivedState.right);
26
+ const el = toValue(element);
27
+ if (!el) return false;
28
+ const orientation = toValue(options.orientation) ?? "vertical";
29
+ return orientation === "horizontal" ? el.scrollWidth > el.clientWidth : el.scrollHeight > el.clientHeight;
30
+ });
31
+ return {
32
+ style,
33
+ isOverflowing,
34
+ arrivedState
35
+ };
36
+ }
@@ -1 +1 @@
1
- @import "#build/ui.css";@import "./keyframes.css";@source "./components";@variant light (&:where(.light, .light *));@variant dark (&:where(.dark, .dark *));@layer theme{:host,:root{--ui-header-height:--spacing(16)}.light,:host,:root{--ui-text-dimmed:var(--ui-color-neutral-400);--ui-text-muted:var(--ui-color-neutral-500);--ui-text-toned:var(--ui-color-neutral-600);--ui-text:var(--ui-color-neutral-700);--ui-text-highlighted:var(--ui-color-neutral-900);--ui-text-inverted:#fff;--ui-bg:#fff;--ui-bg-muted:var(--ui-color-neutral-50);--ui-bg-elevated:var(--ui-color-neutral-100);--ui-bg-accented:var(--ui-color-neutral-200);--ui-bg-inverted:var(--ui-color-neutral-900);--ui-border:var(--ui-color-neutral-200);--ui-border-muted:var(--ui-color-neutral-200);--ui-border-accented:var(--ui-color-neutral-300);--ui-border-inverted:var(--ui-color-neutral-900);--ui-radius:0.25rem;--ui-container:80rem}.dark{--ui-text-dimmed:var(--ui-color-neutral-500);--ui-text-muted:var(--ui-color-neutral-400);--ui-text-toned:var(--ui-color-neutral-300);--ui-text:var(--ui-color-neutral-200);--ui-text-highlighted:#fff;--ui-text-inverted:var(--ui-color-neutral-900);--ui-bg:var(--ui-color-neutral-900);--ui-bg-muted:var(--ui-color-neutral-800);--ui-bg-elevated:var(--ui-color-neutral-800);--ui-bg-accented:var(--ui-color-neutral-700);--ui-bg-inverted:#fff;--ui-border:var(--ui-color-neutral-800);--ui-border-muted:var(--ui-color-neutral-700);--ui-border-accented:var(--ui-color-neutral-700);--ui-border-inverted:#fff}}
1
+ @import "#build/ui.css";@import "./keyframes.css";@source "./components";@variant light (&:where(.light, .light *));@variant dark (&:where(.dark, .dark *));@layer theme{:host,:root{--ui-header-height:4rem;--ui-radius:0.25rem;--ui-container:80rem}.light,:host,:root{--ui-text-dimmed:var(--ui-color-neutral-400);--ui-text-muted:var(--ui-color-neutral-500);--ui-text-toned:var(--ui-color-neutral-600);--ui-text:var(--ui-color-neutral-700);--ui-text-highlighted:var(--ui-color-neutral-900);--ui-text-inverted:#fff;--ui-bg:#fff;--ui-bg-muted:var(--ui-color-neutral-50);--ui-bg-elevated:var(--ui-color-neutral-100);--ui-bg-accented:var(--ui-color-neutral-200);--ui-bg-inverted:var(--ui-color-neutral-900);--ui-border:var(--ui-color-neutral-200);--ui-border-muted:var(--ui-color-neutral-200);--ui-border-accented:var(--ui-color-neutral-300);--ui-border-inverted:var(--ui-color-neutral-900)}.dark{--ui-text-dimmed:var(--ui-color-neutral-500);--ui-text-muted:var(--ui-color-neutral-400);--ui-text-toned:var(--ui-color-neutral-300);--ui-text:var(--ui-color-neutral-200);--ui-text-highlighted:#fff;--ui-text-inverted:var(--ui-color-neutral-900);--ui-bg:var(--ui-color-neutral-900);--ui-bg-muted:var(--ui-color-neutral-800);--ui-bg-elevated:var(--ui-color-neutral-800);--ui-bg-accented:var(--ui-color-neutral-700);--ui-bg-inverted:#fff;--ui-border:var(--ui-color-neutral-800);--ui-border-muted:var(--ui-color-neutral-700);--ui-border-accented:var(--ui-color-neutral-700);--ui-border-inverted:#fff}}
@@ -1 +1 @@
1
- @keyframes accordion-up{0%{height:var(--reka-accordion-content-height)}to{height:0}}@keyframes accordion-down{0%{height:0}to{height:var(--reka-accordion-content-height)}}@keyframes collapsible-up{0%{height:var(--reka-collapsible-content-height)}to{height:0}}@keyframes collapsible-down{0%{height:0}to{height:var(--reka-collapsible-content-height)}}@keyframes toast-slide-in-from-top{0%{transform:translateY(-100%)}to{transform:var(--transform)}}@keyframes toast-slide-in-from-bottom{0%{transform:translateY(100%)}to{transform:var(--transform)}}@keyframes toast-slide-up{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(0) translateY(calc(var(--translate) - 100%))}}@keyframes toast-slide-down{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(0) translateY(calc(var(--translate) + 100%))}}@keyframes toast-pulse-a{0%,to{scale:1}50%{scale:1.04}}@keyframes toast-pulse-b{0%,to{scale:1}50%{scale:1.04}}@keyframes toast-collapsed-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--before) - var(--height))*var(--gap))) scale(var(--scale))}}@keyframes toast-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--offset) - var(--height))*var(--translate-factor)))}}@keyframes toast-slide-left{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(-100%) translateY(var(--translate))}}@keyframes toast-slide-right{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(100%) translateY(var(--translate))}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes scale-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}@keyframes slide-in-from-top{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slide-out-to-top{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes slide-in-from-right{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slide-out-to-right{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes slide-in-from-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes slide-in-from-left{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slide-out-to-left{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes slide-in-from-top-and-fade{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-top-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}@keyframes slide-in-from-right-and-fade{0%{opacity:0;transform:translateX(4px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-to-right-and-fade{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(4px)}}@keyframes slide-in-from-bottom-and-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}@keyframes slide-in-from-left-and-fade{0%{opacity:0;transform:translateX(-4px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-to-left-and-fade{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-4px)}}@keyframes enter-from-right{0%{opacity:0;transform:translateX(200px)}to{opacity:1;transform:translateX(0)}}@keyframes enter-from-left{0%{opacity:0;transform:translateX(-200px)}to{opacity:1;transform:translateX(0)}}@keyframes exit-to-right{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(200px)}}@keyframes exit-to-left{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-200px)}}@keyframes carousel{0%,to{width:50%}0%{transform:translateX(-100%)}to{transform:translateX(200%)}}@keyframes carousel-rtl{0%,to{width:50%}0%{transform:translateX(100%)}to{transform:translateX(-200%)}}@keyframes carousel-vertical{0%,to{height:50%}0%{transform:translateY(-100%)}to{transform:translateY(200%)}}@keyframes carousel-inverse{0%,to{width:50%}0%{transform:translateX(200%)}to{transform:translateX(-100%)}}@keyframes carousel-inverse-rtl{0%,to{width:50%}0%{transform:translateX(-200%)}to{transform:translateX(100%)}}@keyframes carousel-inverse-vertical{0%,to{height:50%}0%{transform:translateY(200%)}to{transform:translateY(-100%)}}@keyframes swing{0%,to{width:50%}0%,to{transform:translateX(-25%)}50%{transform:translateX(125%)}}@keyframes swing-vertical{0%,to{height:50%}0%,to{transform:translateY(-25%)}50%{transform:translateY(125%)}}@keyframes elastic{0%,to{margin-left:25%;width:50%}50%{margin-left:5%;width:90%}}@keyframes elastic-vertical{0%,to{height:50%;margin-top:25%}50%{height:90%;margin-top:5%}}@keyframes marquee{0%{transform:translateZ(0)}to{transform:translate3d(calc(-100% - var(--gap)),0,0)}}@keyframes marquee-rtl{0%{transform:translateZ(0)}to{transform:translate3d(calc(100% + var(--gap)),0,0)}}@keyframes marquee-vertical{0%{transform:translateZ(0)}to{transform:translate3d(0,calc(-100% - var(--gap)),0)}}@keyframes marquee-vertical-rtl{0%{transform:translate3d(0,calc(-100% - var(--gap)),0)}to{transform:translate3d(0,calc(-100%*var(--gap)),0)}}
1
+ @keyframes accordion-up{0%{height:var(--reka-accordion-content-height)}to{height:0}}@keyframes accordion-down{0%{height:0}to{height:var(--reka-accordion-content-height)}}@keyframes collapsible-up{0%{height:var(--reka-collapsible-content-height)}to{height:0}}@keyframes collapsible-down{0%{height:0}to{height:var(--reka-collapsible-content-height)}}@keyframes toast-slide-in-from-top{0%{transform:translateY(-100%)}to{transform:var(--transform)}}@keyframes toast-slide-in-from-bottom{0%{transform:translateY(100%)}to{transform:var(--transform)}}@keyframes toast-slide-up{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(0) translateY(calc(var(--translate) - 100%))}}@keyframes toast-slide-down{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(0) translateY(calc(var(--translate) + 100%))}}@keyframes toast-pulse-a{0%,to{scale:1}50%{scale:1.04}}@keyframes toast-pulse-b{0%,to{scale:1}50%{scale:1.04}}@keyframes toast-collapsed-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--before) - var(--height))*var(--gap))) scale(var(--scale))}}@keyframes toast-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--offset) - var(--height))*var(--translate-factor)))}}@keyframes toast-slide-left{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(-100%) translateY(var(--translate))}}@keyframes toast-slide-right{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(100%) translateY(var(--translate))}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes scale-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}@keyframes slide-in-from-top{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slide-out-to-top{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes slide-in-from-right{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slide-out-to-right{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes slide-in-from-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes slide-in-from-left{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slide-out-to-left{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes slide-in-from-top-and-fade{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-top-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}@keyframes slide-in-from-right-and-fade{0%{opacity:0;transform:translateX(4px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-to-right-and-fade{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(4px)}}@keyframes slide-in-from-bottom-and-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}@keyframes slide-in-from-left-and-fade{0%{opacity:0;transform:translateX(-4px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-to-left-and-fade{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-4px)}}@keyframes enter-from-right{0%{opacity:0;transform:translateX(200px)}to{opacity:1;transform:translateX(0)}}@keyframes enter-from-left{0%{opacity:0;transform:translateX(-200px)}to{opacity:1;transform:translateX(0)}}@keyframes exit-to-right{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(200px)}}@keyframes exit-to-left{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-200px)}}@keyframes carousel{0%,to{width:50%}0%{transform:translateX(-100%)}to{transform:translateX(200%)}}@keyframes carousel-rtl{0%,to{width:50%}0%{transform:translateX(100%)}to{transform:translateX(-200%)}}@keyframes carousel-vertical{0%,to{height:50%}0%{transform:translateY(-100%)}to{transform:translateY(200%)}}@keyframes carousel-inverse{0%,to{width:50%}0%{transform:translateX(200%)}to{transform:translateX(-100%)}}@keyframes carousel-inverse-rtl{0%,to{width:50%}0%{transform:translateX(-200%)}to{transform:translateX(100%)}}@keyframes carousel-inverse-vertical{0%,to{height:50%}0%{transform:translateY(200%)}to{transform:translateY(-100%)}}@keyframes swing{0%,to{width:50%}0%,to{transform:translateX(-25%)}50%{transform:translateX(125%)}}@keyframes swing-vertical{0%,to{height:50%}0%,to{transform:translateY(-25%)}50%{transform:translateY(125%)}}@keyframes elastic{0%,to{margin-left:25%;width:50%}50%{margin-left:5%;width:90%}}@keyframes elastic-vertical{0%,to{height:50%;margin-top:25%}50%{height:90%;margin-top:5%}}@keyframes marquee{0%{transform:translateZ(0)}to{transform:translate3d(calc(-100% - var(--gap)),0,0)}}@keyframes marquee-rtl{0%{transform:translateZ(0)}to{transform:translate3d(calc(100% + var(--gap)),0,0)}}@keyframes marquee-vertical{0%{transform:translateZ(0)}to{transform:translate3d(0,calc(-100% - var(--gap)),0)}}@keyframes marquee-vertical-rtl{0%{transform:translate3d(0,calc(-100% - var(--gap)),0)}to{transform:translate3d(0,calc(-100%*var(--gap)),0)}}@keyframes shimmer{0%{background-position:100%}to{background-position:0}}@keyframes shimmer-rtl{0%{background-position:0}to{background-position:100%}}
@@ -33,6 +33,11 @@ export default defineLocale({
33
33
  chatPromptSubmit: {
34
34
  label: "\u0625\u0631\u0633\u0627\u0644"
35
35
  },
36
+ chatReasoning: {
37
+ thinking: "\u064A\u0641\u0643\u0651\u0631\u2026",
38
+ thought: "\u0641\u0643\u0651\u0631",
39
+ thoughtFor: "\u0641\u0643\u0651\u0631 \u0644\u0645\u062F\u0629 {duration}"
40
+ },
36
41
  colorMode: {
37
42
  dark: "\u062F\u0627\u0643\u0646",
38
43
  light: "\u0641\u0627\u062A\u062D",
@@ -57,6 +62,10 @@ export default defineLocale({
57
62
  contentToc: {
58
63
  title: "\u0641\u064A \u0647\u0630\u0647 \u0627\u0644\u0635\u0641\u062D\u0629"
59
64
  },
65
+ dropdownMenu: {
66
+ noMatch: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C \u0645\u0637\u0627\u0628\u0642\u0629",
67
+ search: "\u0628\u062D\u062B\u2026"
68
+ },
60
69
  dashboardSearch: {
61
70
  theme: "\u0627\u0644\u0633\u0645\u0629"
62
71
  },
@@ -111,6 +120,10 @@ export default defineLocale({
111
120
  copy: "\u0646\u0633\u062E \u0627\u0644\u0643\u0648\u062F \u0625\u0644\u0649 \u0627\u0644\u062D\u0627\u0641\u0638\u0629"
112
121
  }
113
122
  },
123
+ sidebar: {
124
+ close: "\u0625\u063A\u0644\u0627\u0642",
125
+ toggle: "\u062A\u0628\u062F\u064A\u0644"
126
+ },
114
127
  selectMenu: {
115
128
  create: '\u0625\u0646\u0634\u0627\u0621 "{label}"',
116
129
  noData: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0628\u064A\u0627\u0646\u0627\u062A",
@@ -32,6 +32,11 @@ export default defineLocale({
32
32
  chatPromptSubmit: {
33
33
  label: "G\xF6nd\u0259r"
34
34
  },
35
+ chatReasoning: {
36
+ thinking: "D\xFC\u015F\xFCn\xFCr\u2026",
37
+ thought: "D\xFC\u015F\xFCnd\xFC",
38
+ thoughtFor: "{duration} d\xFC\u015F\xFCnd\xFC"
39
+ },
35
40
  colorMode: {
36
41
  dark: "Qaranl\u0131q",
37
42
  light: "\u0130\u015F\u0131ql\u0131",
@@ -56,6 +61,10 @@ export default defineLocale({
56
61
  contentToc: {
57
62
  title: "Bu s\u0259hif\u0259d\u0259"
58
63
  },
64
+ dropdownMenu: {
65
+ noMatch: "Uy\u011Fun m\u0259lumat tap\u0131lmad\u0131",
66
+ search: "Axtar\u2026"
67
+ },
59
68
  dashboardSearch: {
60
69
  theme: "Tema"
61
70
  },
@@ -110,6 +119,10 @@ export default defineLocale({
110
119
  copy: "Kodu bufer\u0259 kopyala"
111
120
  }
112
121
  },
122
+ sidebar: {
123
+ close: "Ba\u011Fla",
124
+ toggle: "D\u0259yi\u015Fdir"
125
+ },
113
126
  selectMenu: {
114
127
  create: '"{label}" yarat',
115
128
  noData: "M\u0259lumat yoxdur",
@@ -32,6 +32,11 @@ export default defineLocale({
32
32
  chatPromptSubmit: {
33
33
  label: "\u0410\u0434\u043F\u0440\u0430\u0432\u0456\u0446\u044C"
34
34
  },
35
+ chatReasoning: {
36
+ thinking: "\u0414\u0443\u043C\u0430\u0435\u2026",
37
+ thought: "\u041F\u0430\u0434\u0443\u043C\u0430\u045E",
38
+ thoughtFor: "\u0414\u0443\u043C\u0430\u045E {duration}"
39
+ },
35
40
  colorMode: {
36
41
  dark: "\u0426\u0451\u043C\u043D\u0430\u044F",
37
42
  light: "\u0421\u0432\u0435\u0442\u043B\u0430\u044F",
@@ -56,6 +61,10 @@ export default defineLocale({
56
61
  contentToc: {
57
62
  title: "\u041D\u0430 \u0433\u044D\u0442\u0430\u0439 \u0441\u0442\u0430\u0440\u043E\u043D\u0446\u044B"
58
63
  },
64
+ dropdownMenu: {
65
+ noMatch: "\u0421\u0443\u043F\u0430\u0434\u0437\u0435\u043D\u043D\u044F\u045E \u043D\u0435 \u0437\u043D\u043E\u0439\u0434\u0437\u0435\u043D\u0430",
66
+ search: "\u041F\u043E\u0448\u0443\u043A\u2026"
67
+ },
59
68
  dashboardSearch: {
60
69
  theme: "\u0422\u044D\u043C\u0430"
61
70
  },
@@ -110,6 +119,10 @@ export default defineLocale({
110
119
  copy: "\u0421\u043A\u0430\u043F\u0456\u044F\u0432\u0430\u0446\u044C \u043A\u043E\u0434 \u0443 \u0431\u0443\u0444\u0435\u0440 \u0430\u0431\u043C\u0435\u043D\u0443"
111
120
  }
112
121
  },
122
+ sidebar: {
123
+ close: "\u0417\u0430\u043A\u0440\u044B\u0446\u044C",
124
+ toggle: "\u041F\u0435\u0440\u0430\u043A\u043B\u044E\u0447\u044B\u0446\u044C"
125
+ },
113
126
  selectMenu: {
114
127
  create: '\u0421\u0442\u0432\u0430\u0440\u044B\u0446\u044C "{label}"',
115
128
  noData: "\u041D\u044F\u043C\u0430 \u0434\u0430\u043D\u044B\u0445",
@@ -32,6 +32,11 @@ export default defineLocale({
32
32
  chatPromptSubmit: {
33
33
  label: "\u0418\u0437\u043F\u0440\u0430\u0442\u0438"
34
34
  },
35
+ chatReasoning: {
36
+ thinking: "\u041C\u0438\u0441\u043B\u0438\u2026",
37
+ thought: "\u041F\u043E\u043C\u0438\u0441\u043B\u0438",
38
+ thoughtFor: "\u041C\u0438\u0441\u043B\u0438\u043B {duration}"
39
+ },
35
40
  colorMode: {
36
41
  dark: "\u0422\u044A\u043C\u043D\u043E",
37
42
  light: "\u0421\u0432\u0435\u0442\u043B\u043E",
@@ -56,6 +61,10 @@ export default defineLocale({
56
61
  contentToc: {
57
62
  title: "\u0421\u044A\u0434\u044A\u0440\u0436\u0430\u043D\u0438\u0435"
58
63
  },
64
+ dropdownMenu: {
65
+ noMatch: "\u041D\u044F\u043C\u0430 \u0441\u044A\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u043D\u0430 \u0434\u0430\u043D\u043D\u0438",
66
+ search: "\u041F\u043E\u0442\u044A\u0440\u0441\u0435\u0442\u0435\u2026"
67
+ },
59
68
  dashboardSearch: {
60
69
  theme: "\u0422\u0435\u043C\u0430"
61
70
  },
@@ -110,6 +119,10 @@ export default defineLocale({
110
119
  copy: "\u041A\u043E\u043F\u0438\u0440\u0430\u0439 \u043A\u043E\u0434\u0430 \u0432 \u043A\u043B\u0438\u043F\u0431\u043E\u0440\u0434\u0430"
111
120
  }
112
121
  },
122
+ sidebar: {
123
+ close: "\u0417\u0430\u0442\u0432\u043E\u0440\u0435\u0442\u0435",
124
+ toggle: "\u041F\u0440\u0435\u0432\u043A\u043B\u044E\u0447\u0432\u0430\u043D\u0435"
125
+ },
113
126
  selectMenu: {
114
127
  create: '\u0421\u044A\u0437\u0434\u0430\u0439\u0442\u0435 "{label}"',
115
128
  noData: "\u041D\u044F\u043C\u0430 \u0434\u0430\u043D\u043D\u0438",
@@ -32,6 +32,11 @@ export default defineLocale({
32
32
  chatPromptSubmit: {
33
33
  label: "\u09AA\u09CD\u09B0\u09C7\u09B0\u09A3 \u0995\u09B0\u09C1\u09A8"
34
34
  },
35
+ chatReasoning: {
36
+ thinking: "\u09AD\u09BE\u09AC\u099B\u09C7\u2026",
37
+ thought: "\u09AD\u09C7\u09AC\u09C7\u099B\u09C7",
38
+ thoughtFor: "{duration} \u09AD\u09C7\u09AC\u09C7\u099B\u09C7"
39
+ },
35
40
  colorMode: {
36
41
  dark: "\u0997\u09BE\u09A2\u09BC",
37
42
  light: "\u09B9\u09BE\u09B2\u0995\u09BE",
@@ -56,6 +61,10 @@ export default defineLocale({
56
61
  contentToc: {
57
62
  title: "\u098F\u0987 \u09AA\u09C3\u09B7\u09CD\u09A0\u09BE\u09AF\u09BC"
58
63
  },
64
+ dropdownMenu: {
65
+ noMatch: "\u0995\u09CB\u09A8 \u09AE\u09BF\u09B2 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u09AF\u09BC\u09A8\u09BF",
66
+ search: "\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8\u2026"
67
+ },
59
68
  dashboardSearch: {
60
69
  theme: "\u09A5\u09BF\u09AE"
61
70
  },
@@ -110,6 +119,10 @@ export default defineLocale({
110
119
  copy: "\u0995\u09CB\u09A1 \u0995\u09CD\u09B2\u09BF\u09AA\u09AC\u09CB\u09B0\u09CD\u09A1\u09C7 \u0995\u09AA\u09BF \u0995\u09B0\u09C1\u09A8"
111
120
  }
112
121
  },
122
+ sidebar: {
123
+ close: "\u09AC\u09A8\u09CD\u09A7 \u0995\u09B0\u09C1\u09A8",
124
+ toggle: "\u099F\u0997\u09B2 \u0995\u09B0\u09C1\u09A8"
125
+ },
113
126
  selectMenu: {
114
127
  create: '"{label}" \u09A4\u09C8\u09B0\u09BF \u0995\u09B0\u09C1\u09A8',
115
128
  noData: "\u0995\u09CB\u09A8 \u09A4\u09A5\u09CD\u09AF \u09A8\u09C7\u0987",
@@ -32,6 +32,11 @@ export default defineLocale({
32
32
  chatPromptSubmit: {
33
33
  label: "Enviar"
34
34
  },
35
+ chatReasoning: {
36
+ thinking: "Pensant\u2026",
37
+ thought: "Ha pensat",
38
+ thoughtFor: "Ha pensat durant {duration}"
39
+ },
35
40
  colorMode: {
36
41
  dark: "Fosc",
37
42
  light: "Clar",
@@ -56,6 +61,10 @@ export default defineLocale({
56
61
  contentToc: {
57
62
  title: "En aquesta p\xE0gina"
58
63
  },
64
+ dropdownMenu: {
65
+ noMatch: "No hi ha dades coincidents",
66
+ search: "Cerca\u2026"
67
+ },
59
68
  dashboardSearch: {
60
69
  theme: "Tema"
61
70
  },
@@ -110,6 +119,10 @@ export default defineLocale({
110
119
  copy: "Copiar codi al portapapers"
111
120
  }
112
121
  },
122
+ sidebar: {
123
+ close: "Tancar",
124
+ toggle: "Canviar"
125
+ },
113
126
  selectMenu: {
114
127
  create: 'Crear "{label}"',
115
128
  noData: "Sense dades",