@bitrix24/b24ui-nuxt 0.5.11 → 0.6.1

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 (252) hide show
  1. package/.nuxt/b24ui/advice.ts +10 -2
  2. package/.nuxt/b24ui/alert.ts +10 -2
  3. package/.nuxt/b24ui/avatar-group.ts +10 -2
  4. package/.nuxt/b24ui/avatar.ts +10 -2
  5. package/.nuxt/b24ui/badge.ts +10 -2
  6. package/.nuxt/b24ui/button-group.ts +10 -2
  7. package/.nuxt/b24ui/button.ts +16 -6
  8. package/.nuxt/b24ui/calendar.ts +10 -2
  9. package/.nuxt/b24ui/checkbox.ts +10 -2
  10. package/.nuxt/b24ui/chip.ts +10 -2
  11. package/.nuxt/b24ui/collapsible.ts +10 -2
  12. package/.nuxt/b24ui/container.ts +10 -2
  13. package/.nuxt/b24ui/countdown.ts +10 -2
  14. package/.nuxt/b24ui/description-list.ts +10 -2
  15. package/.nuxt/b24ui/dropdown-menu.ts +10 -2
  16. package/.nuxt/b24ui/form-field.ts +10 -2
  17. package/.nuxt/b24ui/form.ts +10 -2
  18. package/.nuxt/b24ui/input-menu.ts +12 -4
  19. package/.nuxt/b24ui/input-number.ts +10 -2
  20. package/.nuxt/b24ui/input.ts +10 -2
  21. package/.nuxt/b24ui/kbd.ts +10 -2
  22. package/.nuxt/b24ui/link.ts +10 -2
  23. package/.nuxt/b24ui/modal.ts +10 -2
  24. package/.nuxt/b24ui/navbar-divider.ts +10 -2
  25. package/.nuxt/b24ui/navbar-section.ts +10 -2
  26. package/.nuxt/b24ui/navbar-spacer.ts +10 -2
  27. package/.nuxt/b24ui/navbar.ts +10 -2
  28. package/.nuxt/b24ui/navigation-menu.ts +10 -2
  29. package/.nuxt/b24ui/popover.ts +10 -2
  30. package/.nuxt/b24ui/progress.ts +10 -2
  31. package/.nuxt/b24ui/radio-group.ts +10 -2
  32. package/.nuxt/b24ui/range.ts +10 -2
  33. package/.nuxt/b24ui/select-menu.ts +14 -6
  34. package/.nuxt/b24ui/select.ts +12 -4
  35. package/.nuxt/b24ui/separator.ts +10 -2
  36. package/.nuxt/b24ui/sidebar-body.ts +10 -2
  37. package/.nuxt/b24ui/sidebar-footer.ts +10 -2
  38. package/.nuxt/b24ui/sidebar-header.ts +10 -2
  39. package/.nuxt/b24ui/sidebar-heading.ts +10 -2
  40. package/.nuxt/b24ui/sidebar-layout.ts +10 -2
  41. package/.nuxt/b24ui/sidebar-section.ts +10 -2
  42. package/.nuxt/b24ui/sidebar-spacer.ts +10 -2
  43. package/.nuxt/b24ui/sidebar.ts +10 -2
  44. package/.nuxt/b24ui/skeleton.ts +10 -2
  45. package/.nuxt/b24ui/slideover.ts +10 -2
  46. package/.nuxt/b24ui/stacked-layout.ts +10 -2
  47. package/.nuxt/b24ui/switch.ts +10 -2
  48. package/.nuxt/b24ui/tabs.ts +10 -2
  49. package/.nuxt/b24ui/textarea.ts +10 -2
  50. package/.nuxt/b24ui/toast.ts +10 -2
  51. package/.nuxt/b24ui/toaster.ts +10 -2
  52. package/.nuxt/b24ui/tooltip.ts +10 -2
  53. package/cli/templates.mjs +19 -15
  54. package/dist/meta.d.mts +5675 -7513
  55. package/dist/meta.mjs +5675 -7513
  56. package/dist/module.json +3 -3
  57. package/dist/module.mjs +2 -2
  58. package/dist/runtime/components/Advice.vue +27 -55
  59. package/dist/runtime/components/Advice.vue.d.ts +56 -0
  60. package/dist/runtime/components/Alert.vue +35 -97
  61. package/dist/runtime/components/Alert.vue.d.ts +97 -0
  62. package/dist/runtime/components/App.vue +24 -34
  63. package/dist/runtime/components/App.vue.d.ts +23 -0
  64. package/dist/runtime/components/Avatar.vue +43 -82
  65. package/dist/runtime/components/Avatar.vue.d.ts +62 -0
  66. package/dist/runtime/components/AvatarGroup.vue +40 -77
  67. package/dist/runtime/components/AvatarGroup.vue.d.ts +40 -0
  68. package/dist/runtime/components/Badge.vue +40 -84
  69. package/dist/runtime/components/Badge.vue.d.ts +78 -0
  70. package/dist/runtime/components/Button.vue +107 -164
  71. package/dist/runtime/components/Button.vue.d.ts +115 -0
  72. package/dist/runtime/components/ButtonGroup.vue +25 -52
  73. package/dist/runtime/components/ButtonGroup.vue.d.ts +63 -0
  74. package/dist/runtime/components/Calendar.vue +73 -153
  75. package/dist/runtime/components/Calendar.vue.d.ts +107 -0
  76. package/dist/runtime/components/Checkbox.vue +42 -74
  77. package/dist/runtime/components/Checkbox.vue.d.ts +55 -0
  78. package/dist/runtime/components/Chip.vue +26 -75
  79. package/dist/runtime/components/Chip.vue.d.ts +77 -0
  80. package/dist/runtime/components/Collapsible.vue +22 -41
  81. package/dist/runtime/components/Collapsible.vue.d.ts +50 -0
  82. package/dist/runtime/components/Container.vue +15 -28
  83. package/dist/runtime/components/Container.vue.d.ts +27 -0
  84. package/dist/runtime/components/Countdown.vue +153 -379
  85. package/dist/runtime/components/Countdown.vue.d.ts +122 -0
  86. package/dist/runtime/components/DescriptionList.vue +78 -150
  87. package/dist/runtime/components/DescriptionList.vue.d.ts +109 -0
  88. package/dist/runtime/components/DropdownMenu.vue +38 -140
  89. package/dist/runtime/components/DropdownMenu.vue.d.ts +133 -0
  90. package/dist/runtime/components/DropdownMenuContent.vue +65 -79
  91. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +51 -0
  92. package/dist/runtime/components/Form.vue +132 -218
  93. package/dist/runtime/components/Form.vue.d.ts +55 -0
  94. package/dist/runtime/components/FormField.vue +36 -81
  95. package/dist/runtime/components/FormField.vue.d.ts +73 -0
  96. package/dist/runtime/components/Input.vue +79 -180
  97. package/dist/runtime/components/Input.vue.d.ts +135 -0
  98. package/dist/runtime/components/InputMenu.vue +185 -382
  99. package/dist/runtime/components/InputMenu.vue.d.ts +357 -0
  100. package/dist/runtime/components/InputNumber.vue +77 -176
  101. package/dist/runtime/components/InputNumber.vue.d.ts +238 -0
  102. package/dist/runtime/components/Kbd.vue +20 -46
  103. package/dist/runtime/components/Kbd.vue.d.ts +55 -0
  104. package/dist/runtime/components/Link.vue +99 -179
  105. package/dist/runtime/components/Link.vue.d.ts +129 -0
  106. package/dist/runtime/components/LinkBase.vue +33 -42
  107. package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
  108. package/dist/runtime/components/Modal.vue +48 -128
  109. package/dist/runtime/components/Modal.vue.d.ts +124 -0
  110. package/dist/runtime/components/ModalDialogClose.vue +5 -8
  111. package/dist/runtime/components/ModalDialogClose.vue.d.ts +10 -0
  112. package/dist/runtime/components/Navbar.vue +15 -33
  113. package/dist/runtime/components/Navbar.vue.d.ts +46 -0
  114. package/dist/runtime/components/NavbarDivider.vue +15 -33
  115. package/dist/runtime/components/NavbarDivider.vue.d.ts +46 -0
  116. package/dist/runtime/components/NavbarSection.vue +15 -33
  117. package/dist/runtime/components/NavbarSection.vue.d.ts +46 -0
  118. package/dist/runtime/components/NavbarSpacer.vue +15 -33
  119. package/dist/runtime/components/NavbarSpacer.vue.d.ts +46 -0
  120. package/dist/runtime/components/NavigationMenu.vue +74 -209
  121. package/dist/runtime/components/NavigationMenu.vue.d.ts +159 -0
  122. package/dist/runtime/components/OverlayProvider.vue +14 -18
  123. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
  124. package/dist/runtime/components/Popover.vue +40 -82
  125. package/dist/runtime/components/Popover.vue.d.ts +79 -0
  126. package/dist/runtime/components/Progress.vue +70 -137
  127. package/dist/runtime/components/Progress.vue.d.ts +103 -0
  128. package/dist/runtime/components/RadioGroup.vue +59 -135
  129. package/dist/runtime/components/RadioGroup.vue.d.ts +88 -0
  130. package/dist/runtime/components/Range.vue +46 -86
  131. package/dist/runtime/components/Range.vue.d.ts +73 -0
  132. package/dist/runtime/components/Select.vue +110 -261
  133. package/dist/runtime/components/Select.vue.d.ts +170 -0
  134. package/dist/runtime/components/SelectMenu.vue +161 -348
  135. package/dist/runtime/components/SelectMenu.vue.d.ts +217 -0
  136. package/dist/runtime/components/Separator.vue +28 -72
  137. package/dist/runtime/components/Separator.vue.d.ts +77 -0
  138. package/dist/runtime/components/Sidebar.vue +15 -33
  139. package/dist/runtime/components/Sidebar.vue.d.ts +46 -0
  140. package/dist/runtime/components/SidebarBody.vue +17 -39
  141. package/dist/runtime/components/SidebarBody.vue.d.ts +53 -0
  142. package/dist/runtime/components/SidebarFooter.vue +15 -33
  143. package/dist/runtime/components/SidebarFooter.vue.d.ts +46 -0
  144. package/dist/runtime/components/SidebarHeader.vue +15 -33
  145. package/dist/runtime/components/SidebarHeader.vue.d.ts +46 -0
  146. package/dist/runtime/components/SidebarHeading.vue +15 -33
  147. package/dist/runtime/components/SidebarHeading.vue.d.ts +46 -0
  148. package/dist/runtime/components/SidebarLayout.vue +34 -71
  149. package/dist/runtime/components/SidebarLayout.vue.d.ts +65 -0
  150. package/dist/runtime/components/SidebarSection.vue +15 -33
  151. package/dist/runtime/components/SidebarSection.vue.d.ts +46 -0
  152. package/dist/runtime/components/SidebarSpacer.vue +15 -33
  153. package/dist/runtime/components/SidebarSpacer.vue.d.ts +46 -0
  154. package/dist/runtime/components/Skeleton.vue +14 -23
  155. package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
  156. package/dist/runtime/components/Slideover.vue +50 -132
  157. package/dist/runtime/components/Slideover.vue.d.ts +127 -0
  158. package/dist/runtime/components/StackedLayout.vue +34 -74
  159. package/dist/runtime/components/StackedLayout.vue.d.ts +65 -0
  160. package/dist/runtime/components/Switch.vue +46 -96
  161. package/dist/runtime/components/Switch.vue.d.ts +77 -0
  162. package/dist/runtime/components/Tabs.vue +41 -106
  163. package/dist/runtime/components/Tabs.vue.d.ts +104 -0
  164. package/dist/runtime/components/Textarea.vue +92 -202
  165. package/dist/runtime/components/Textarea.vue.d.ts +141 -0
  166. package/dist/runtime/components/Toast.vue +47 -106
  167. package/dist/runtime/components/Toast.vue.d.ts +95 -0
  168. package/dist/runtime/components/Toaster.vue +70 -116
  169. package/dist/runtime/components/Toaster.vue.d.ts +70 -0
  170. package/dist/runtime/components/Tooltip.vue +36 -65
  171. package/dist/runtime/components/Tooltip.vue.d.ts +65 -0
  172. package/dist/runtime/components/content/TableWrapper.vue +24 -71
  173. package/dist/runtime/components/content/TableWrapper.vue.d.ts +83 -0
  174. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  175. package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
  176. package/dist/runtime/composables/useComponentIcons.d.ts +3 -3
  177. package/dist/runtime/composables/useFormField.d.ts +2 -2
  178. package/dist/runtime/composables/useOverlay.d.ts +14 -7
  179. package/dist/runtime/composables/useOverlay.js +14 -6
  180. package/dist/runtime/prose/A.vue +16 -26
  181. package/dist/runtime/prose/A.vue.d.ts +27 -0
  182. package/dist/runtime/prose/Blockquote.vue +14 -26
  183. package/dist/runtime/prose/Blockquote.vue.d.ts +27 -0
  184. package/dist/runtime/prose/Code.vue +15 -32
  185. package/dist/runtime/prose/Code.vue.d.ts +31 -0
  186. package/dist/runtime/prose/Em.vue +16 -26
  187. package/dist/runtime/prose/Em.vue.d.ts +27 -0
  188. package/dist/runtime/prose/H1.vue +14 -26
  189. package/dist/runtime/prose/H1.vue.d.ts +27 -0
  190. package/dist/runtime/prose/H2.vue +14 -26
  191. package/dist/runtime/prose/H2.vue.d.ts +27 -0
  192. package/dist/runtime/prose/H3.vue +14 -26
  193. package/dist/runtime/prose/H3.vue.d.ts +27 -0
  194. package/dist/runtime/prose/H4.vue +14 -26
  195. package/dist/runtime/prose/H4.vue.d.ts +27 -0
  196. package/dist/runtime/prose/H5.vue +14 -26
  197. package/dist/runtime/prose/H5.vue.d.ts +27 -0
  198. package/dist/runtime/prose/H6.vue +14 -26
  199. package/dist/runtime/prose/H6.vue.d.ts +27 -0
  200. package/dist/runtime/prose/Hr.vue +13 -22
  201. package/dist/runtime/prose/Hr.vue.d.ts +19 -0
  202. package/dist/runtime/prose/Img.vue +13 -26
  203. package/dist/runtime/prose/Img.vue.d.ts +19 -0
  204. package/dist/runtime/prose/Li.vue +14 -26
  205. package/dist/runtime/prose/Li.vue.d.ts +27 -0
  206. package/dist/runtime/prose/Ol.vue +14 -26
  207. package/dist/runtime/prose/Ol.vue.d.ts +27 -0
  208. package/dist/runtime/prose/P.vue +14 -26
  209. package/dist/runtime/prose/P.vue.d.ts +27 -0
  210. package/dist/runtime/prose/Pre.vue +17 -33
  211. package/dist/runtime/prose/Pre.vue.d.ts +47 -0
  212. package/dist/runtime/prose/Strong.vue +14 -26
  213. package/dist/runtime/prose/Strong.vue.d.ts +27 -0
  214. package/dist/runtime/prose/Table.vue +21 -57
  215. package/dist/runtime/prose/Table.vue.d.ts +74 -0
  216. package/dist/runtime/prose/Tbody.vue +14 -26
  217. package/dist/runtime/prose/Tbody.vue.d.ts +27 -0
  218. package/dist/runtime/prose/Td.vue +14 -26
  219. package/dist/runtime/prose/Td.vue.d.ts +27 -0
  220. package/dist/runtime/prose/Th.vue +14 -26
  221. package/dist/runtime/prose/Th.vue.d.ts +27 -0
  222. package/dist/runtime/prose/Thead.vue +14 -26
  223. package/dist/runtime/prose/Thead.vue.d.ts +27 -0
  224. package/dist/runtime/prose/Tr.vue +14 -26
  225. package/dist/runtime/prose/Tr.vue.d.ts +27 -0
  226. package/dist/runtime/prose/Ul.vue +14 -26
  227. package/dist/runtime/prose/Ul.vue.d.ts +27 -0
  228. package/dist/runtime/types/form.d.ts +1 -0
  229. package/dist/runtime/types/utils.d.ts +42 -3
  230. package/dist/runtime/utils/link.d.ts +3 -3
  231. package/dist/runtime/utils/tv.js +2 -2
  232. package/dist/runtime/vue/components/Link.vue +122 -208
  233. package/dist/runtime/vue/components/Link.vue.d.ts +129 -0
  234. package/dist/shared/{b24ui-nuxt.CS9Lf0os.mjs → b24ui-nuxt.wBs9vEU5.mjs} +33 -8
  235. package/dist/types.d.mts +3 -5
  236. package/dist/unplugin.mjs +1 -1
  237. package/dist/vite.mjs +1 -1
  238. package/package.json +19 -27
  239. package/dist/meta.cjs +0 -72112
  240. package/dist/meta.d.cts +0 -72110
  241. package/dist/meta.d.ts +0 -72110
  242. package/dist/module.cjs +0 -63
  243. package/dist/module.d.cts +0 -15
  244. package/dist/module.d.ts +0 -15
  245. package/dist/shared/b24ui-nuxt.DrKwIWoc.cjs +0 -7721
  246. package/dist/types.d.ts +0 -7
  247. package/dist/unplugin.cjs +0 -236
  248. package/dist/unplugin.d.cts +0 -33
  249. package/dist/unplugin.d.ts +0 -33
  250. package/dist/vite.cjs +0 -21
  251. package/dist/vite.d.cts +0 -14
  252. package/dist/vite.d.ts +0 -14
@@ -1,209 +1,123 @@
1
- <script lang="ts">
2
- import type { ButtonHTMLAttributes } from 'vue'
3
- import { tv } from 'tailwind-variants'
4
- import type { AppConfig } from '@nuxt/schema'
5
- import _appConfig from '#build/app.config'
6
- import type { RouterLinkProps, RouteLocationRaw } from 'vue-router'
7
- import theme from '#build/b24ui/link'
8
-
9
- interface NuxtLinkProps extends Omit<RouterLinkProps, 'to'> {
10
- /**
11
- * Route Location the link should navigate to when clicked on.
12
- */
13
- to?: RouteLocationRaw // need to manually type to avoid breaking typedPages
14
- /**
15
- * An alias for `to`. If used with `to`, `href` will be ignored
16
- */
17
- href?: NuxtLinkProps['to']
18
- /**
19
- * Forces the link to be considered as external (true) or internal (false). This is helpful to handle edge-cases
20
- */
21
- external?: boolean
22
- /**
23
- * Where to display the linked URL, as the name for a browsing context.
24
- */
25
- target?: '_blank' | '_parent' | '_self' | '_top' | (string & {}) | null
26
- /**
27
- * A rel attribute value to apply on the link. Defaults to "noopener noreferrer" for external links.
28
- */
29
- rel?: 'noopener' | 'noreferrer' | 'nofollow' | 'sponsored' | 'ugc' | (string & {}) | null
30
- /**
31
- * If set to true, no rel attribute will be added to the link
32
- */
33
- noRel?: boolean
34
- /**
35
- * A class to apply to links that have been prefetched.
36
- */
37
- prefetchedClass?: string
38
- /**
39
- * When enabled will prefetch middleware, layouts and payloads of links in the viewport.
40
- */
41
- prefetch?: boolean
42
- /**
43
- * Allows controlling when to prefetch links. By default, prefetch is triggered only on visibility.
44
- */
45
- prefetchOn?: 'visibility' | 'interaction' | Partial<{
46
- visibility: boolean
47
- interaction: boolean
48
- }>
49
- /**
50
- * Escape hatch to disable `prefetch` attribute.
51
- */
52
- noPrefetch?: boolean
53
- }
54
-
55
- const appConfigLink = _appConfig as AppConfig & { b24ui: { link: Partial<typeof theme> } }
56
-
57
- const link = tv({ extend: tv(theme), ...(appConfigLink.b24ui?.link || {}) })
58
-
59
- export interface LinkProps extends NuxtLinkProps {
60
- /**
61
- * The element or component this component should render as when not a link.
62
- * @defaultValue 'button'
63
- */
64
- as?: any
65
- /**
66
- * The type of the button when not a link.
67
- * @defaultValue 'button'
68
- */
69
- type?: ButtonHTMLAttributes['type']
70
- disabled?: boolean
71
- /** Force the link to be active independent of the current route. */
72
- active?: boolean
73
- /** Will only be active if the current route is an exact match. */
74
- exact?: boolean
75
- /** Will only be active if the current route query is an exact match. */
76
- exactQuery?: boolean | 'partial'
77
- /** Will only be active if the current route hash is an exact match. */
78
- exactHash?: boolean
79
- /** The class to apply when the link is inactive. */
80
- inactiveClass?: string
81
- custom?: boolean
82
- /** When `true`, uses special underlined styling. */
83
- isAction?: boolean
84
- /** When `true`, only styles from `class`, `activeClass`, and `inactiveClass` will be applied. */
85
- raw?: boolean
86
- class?: any
87
- }
88
-
89
- export interface LinkSlots {
90
- default(props: { active: boolean }): any
91
- }
1
+ <script>
2
+ import theme from "#build/b24ui/link";
92
3
  </script>
93
4
 
94
- <script setup lang="ts">
95
- import { computed, getCurrentInstance } from 'vue'
96
- import { isEqual, diff } from 'ohash/utils'
97
- import { useForwardProps } from 'reka-ui'
98
- import { reactiveOmit } from '@vueuse/core'
99
- import { hasProtocol } from 'ufo'
100
- import { useRoute } from '#imports'
101
- import { RouterLink } from 'vue-router'
102
- import B24LinkBase from './../../components/LinkBase.vue'
103
-
104
- defineOptions({ inheritAttrs: false })
105
-
106
- const props = withDefaults(defineProps<LinkProps>(), {
107
- as: 'button',
108
- type: 'button',
109
- ariaCurrentValue: 'page',
110
- active: undefined,
111
- isAction: false,
112
- activeClass: '',
113
- inactiveClass: ''
114
- })
115
- defineSlots<LinkSlots>()
116
-
117
- // Check if vue-router is available by checking for the injection key
5
+ <script setup>
6
+ import { computed, getCurrentInstance } from "vue";
7
+ import { defu } from "defu";
8
+ import { isEqual, diff } from "ohash/utils";
9
+ import { useForwardProps } from "reka-ui";
10
+ import { reactiveOmit } from "@vueuse/core";
11
+ import { hasProtocol } from "ufo";
12
+ import { useRoute, useAppConfig } from "#imports";
13
+ import { RouterLink } from "vue-router";
14
+ import { tv } from "../../utils/tv";
15
+ import B24LinkBase from "./../../components/LinkBase.vue";
16
+ defineOptions({ inheritAttrs: false });
17
+ const props = defineProps({
18
+ as: { type: null, required: false, default: "button" },
19
+ type: { type: null, required: false, default: "button" },
20
+ disabled: { type: Boolean, required: false },
21
+ active: { type: Boolean, required: false, default: void 0 },
22
+ exact: { type: Boolean, required: false },
23
+ exactQuery: { type: [Boolean, String], required: false },
24
+ exactHash: { type: Boolean, required: false },
25
+ inactiveClass: { type: String, required: false, default: "" },
26
+ custom: { type: Boolean, required: false },
27
+ isAction: { type: Boolean, required: false, default: false },
28
+ raw: { type: Boolean, required: false },
29
+ class: { type: null, required: false },
30
+ to: { type: null, required: false },
31
+ href: { type: null, required: false },
32
+ external: { type: Boolean, required: false },
33
+ target: { type: [String, Object, null], required: false },
34
+ rel: { type: [String, Object, null], required: false },
35
+ noRel: { type: Boolean, required: false },
36
+ prefetchedClass: { type: String, required: false },
37
+ prefetch: { type: Boolean, required: false },
38
+ prefetchOn: { type: [String, Object], required: false },
39
+ noPrefetch: { type: Boolean, required: false },
40
+ activeClass: { type: String, required: false, default: "" },
41
+ exactActiveClass: { type: String, required: false },
42
+ ariaCurrentValue: { type: String, required: false, default: "page" },
43
+ viewTransition: { type: Boolean, required: false },
44
+ replace: { type: Boolean, required: false }
45
+ });
46
+ defineSlots();
118
47
  const hasRouter = computed(() => {
119
- const app = getCurrentInstance()?.appContext.app
120
- return !!(app?.config?.globalProperties?.$router)
121
- })
122
-
123
- // Only try to get route if router exists
48
+ const app = getCurrentInstance()?.appContext.app;
49
+ return !!app?.config?.globalProperties?.$router;
50
+ });
124
51
  const route = computed(() => {
125
- if (!hasRouter.value) return null
52
+ if (!hasRouter.value) return null;
126
53
  try {
127
- return useRoute()
54
+ return useRoute();
128
55
  } catch {
129
- return null
56
+ return null;
130
57
  }
131
- })
132
-
133
- const routerLinkProps = useForwardProps(reactiveOmit(props, 'as', 'type', 'disabled', 'active', 'exact', 'exactQuery', 'exactHash', 'activeClass', 'inactiveClass', 'to', 'raw', 'class'))
134
-
58
+ });
59
+ const appConfig = useAppConfig();
60
+ const routerLinkProps = useForwardProps(reactiveOmit(props, "as", "type", "disabled", "active", "exact", "exactQuery", "exactHash", "activeClass", "inactiveClass", "to", "raw", "class"));
135
61
  const b24ui = computed(() => tv({
136
- extend: link,
137
- variants: {
138
- active: {
139
- true: props.activeClass,
140
- false: props.inactiveClass
62
+ extend: tv(theme),
63
+ ...defu({
64
+ variants: {
65
+ active: {
66
+ true: props.activeClass,
67
+ false: props.inactiveClass
68
+ }
141
69
  }
142
- }
143
- }))
144
-
145
- function isPartiallyEqual(item1: any, item2: any) {
70
+ }, appConfig.b24ui?.link || {})
71
+ }));
72
+ function isPartiallyEqual(item1, item2) {
146
73
  const diffedKeys = diff(item1, item2).reduce((filtered, q) => {
147
- if (q.type === 'added') {
148
- filtered.add(q.key)
74
+ if (q.type === "added") {
75
+ filtered.add(q.key);
149
76
  }
150
- return filtered
151
- }, new Set<string>())
152
-
153
- const item1Filtered = Object.fromEntries(Object.entries(item1).filter(([key]) => !diffedKeys.has(key)))
154
- const item2Filtered = Object.fromEntries(Object.entries(item2).filter(([key]) => !diffedKeys.has(key)))
155
-
156
- return isEqual(item1Filtered, item2Filtered)
77
+ return filtered;
78
+ }, /* @__PURE__ */ new Set());
79
+ const item1Filtered = Object.fromEntries(Object.entries(item1).filter(([key]) => !diffedKeys.has(key)));
80
+ const item2Filtered = Object.fromEntries(Object.entries(item2).filter(([key]) => !diffedKeys.has(key)));
81
+ return isEqual(item1Filtered, item2Filtered);
157
82
  }
158
-
159
83
  const isExternal = computed(() => {
160
- if (!props.to) return false
161
- return typeof props.to === 'string' && hasProtocol(props.to, { acceptRelative: true })
162
- })
163
-
164
- function isLinkActive({ route: linkRoute, isActive, isExactActive }: any) {
165
- if (props.active !== undefined) {
166
- return props.active
84
+ if (!props.to) return false;
85
+ return typeof props.to === "string" && hasProtocol(props.to, { acceptRelative: true });
86
+ });
87
+ function isLinkActive({ route: linkRoute, isActive, isExactActive }) {
88
+ if (props.active !== void 0) {
89
+ return props.active;
167
90
  }
168
-
169
91
  if (!props.to || !route.value) {
170
- return false
92
+ return false;
171
93
  }
172
-
173
- if (props.exactQuery === 'partial') {
174
- if (!isPartiallyEqual(linkRoute.query, route.value.query)) return false
94
+ if (props.exactQuery === "partial") {
95
+ if (!isPartiallyEqual(linkRoute.query, route.value.query)) return false;
175
96
  } else if (props.exactQuery === true) {
176
- if (!isEqual(linkRoute.query, route.value.query)) return false
97
+ if (!isEqual(linkRoute.query, route.value.query)) return false;
177
98
  }
178
-
179
99
  if (props.exactHash && linkRoute.hash !== route.value.hash) {
180
- return false
100
+ return false;
181
101
  }
182
-
183
102
  if (props.exact && isExactActive) {
184
- return true
103
+ return true;
185
104
  }
186
-
187
105
  if (!props.exact && isActive) {
188
- return true
106
+ return true;
189
107
  }
190
-
191
- return false
108
+ return false;
192
109
  }
193
-
194
- function resolveLinkClass({ route, isActive, isExactActive }: any = {}) {
195
- const active = isLinkActive({ route, isActive, isExactActive })
196
-
110
+ function resolveLinkClass({ route: route2, isActive, isExactActive } = {}) {
111
+ const active = isLinkActive({ route: route2, isActive, isExactActive });
197
112
  if (props.raw) {
198
- return [props.class, active ? props.activeClass : props.inactiveClass]
113
+ return [props.class, active ? props.activeClass : props.inactiveClass];
199
114
  }
200
-
201
115
  return b24ui.value({
202
116
  class: props.class,
203
117
  active,
204
118
  disabled: props.disabled,
205
119
  isAction: Boolean(props.isAction)
206
- })
120
+ });
207
121
  }
208
122
  </script>
209
123
 
@@ -213,30 +127,30 @@ function resolveLinkClass({ route, isActive, isExactActive }: any = {}) {
213
127
  <template v-if="custom">
214
128
  <slot
215
129
  v-bind="{
216
- ...$attrs,
217
- ...(exact && isExactActive ? { 'aria-current': props.ariaCurrentValue } : {}),
218
- as,
219
- type,
220
- disabled,
221
- target: props.target ? props.target : undefined,
222
- href: to ? href : undefined,
223
- navigate,
224
- active: isLinkActive({ route: linkRoute, isActive, isExactActive })
225
- }"
130
+ ...$attrs,
131
+ ...exact && isExactActive ? { 'aria-current': props.ariaCurrentValue } : {},
132
+ as,
133
+ type,
134
+ disabled,
135
+ target: props.target ? props.target : void 0,
136
+ href: to ? href : void 0,
137
+ navigate,
138
+ active: isLinkActive({ route: linkRoute, isActive, isExactActive })
139
+ }"
226
140
  />
227
141
  </template>
228
142
  <B24LinkBase
229
143
  v-else
230
144
  v-bind="{
231
- ...$attrs,
232
- ...(exact && isExactActive ? { 'aria-current': props.ariaCurrentValue } : {}),
233
- as,
234
- type,
235
- disabled,
236
- href: to ? href : undefined,
237
- navigate
238
- }"
239
- :class="resolveLinkClass({ route: linkRoute, isActive: isActive, isExactActive: isExactActive })"
145
+ ...$attrs,
146
+ ...exact && isExactActive ? { 'aria-current': props.ariaCurrentValue } : {},
147
+ as,
148
+ type,
149
+ disabled,
150
+ href: to ? href : void 0,
151
+ navigate
152
+ }"
153
+ :class="resolveLinkClass({ route: linkRoute, isActive, isExactActive })"
240
154
  >
241
155
  <slot :active="isLinkActive({ route: linkRoute, isActive, isExactActive })" />
242
156
  </B24LinkBase>
@@ -247,26 +161,26 @@ function resolveLinkClass({ route, isActive, isExactActive }: any = {}) {
247
161
  <template v-if="custom">
248
162
  <slot
249
163
  v-bind="{
250
- ...$attrs,
251
- as,
252
- type,
253
- disabled,
254
- href: to,
255
- target: isExternal ? '_blank' : undefined,
256
- active: props?.active || false
257
- }"
164
+ ...$attrs,
165
+ as,
166
+ type,
167
+ disabled,
168
+ href: to,
169
+ target: isExternal ? '_blank' : void 0,
170
+ active: props?.active || false
171
+ }"
258
172
  />
259
173
  </template>
260
174
  <B24LinkBase
261
175
  v-else
262
176
  v-bind="{
263
- ...$attrs,
264
- as,
265
- type,
266
- disabled,
267
- href: (to as string),
268
- target: isExternal ? '_blank' : undefined
269
- }"
177
+ ...$attrs,
178
+ as,
179
+ type,
180
+ disabled,
181
+ href: to,
182
+ target: isExternal ? '_blank' : void 0
183
+ }"
270
184
  :is-external="isExternal"
271
185
  :class="resolveLinkClass()"
272
186
  >
@@ -0,0 +1,129 @@
1
+ import type { ButtonHTMLAttributes } from 'vue';
2
+ import type { RouterLinkProps, RouteLocationRaw } from 'vue-router';
3
+ interface NuxtLinkProps extends Omit<RouterLinkProps, 'to'> {
4
+ /**
5
+ * Route Location the link should navigate to when clicked on.
6
+ */
7
+ to?: RouteLocationRaw;
8
+ /**
9
+ * An alias for `to`. If used with `to`, `href` will be ignored
10
+ */
11
+ href?: NuxtLinkProps['to'];
12
+ /**
13
+ * Forces the link to be considered as external (true) or internal (false). This is helpful to handle edge-cases
14
+ */
15
+ external?: boolean;
16
+ /**
17
+ * Where to display the linked URL, as the name for a browsing context.
18
+ */
19
+ target?: '_blank' | '_parent' | '_self' | '_top' | (string & {}) | null;
20
+ /**
21
+ * A rel attribute value to apply on the link. Defaults to "noopener noreferrer" for external links.
22
+ */
23
+ rel?: 'noopener' | 'noreferrer' | 'nofollow' | 'sponsored' | 'ugc' | (string & {}) | null;
24
+ /**
25
+ * If set to true, no rel attribute will be added to the link
26
+ */
27
+ noRel?: boolean;
28
+ /**
29
+ * A class to apply to links that have been prefetched.
30
+ */
31
+ prefetchedClass?: string;
32
+ /**
33
+ * When enabled will prefetch middleware, layouts and payloads of links in the viewport.
34
+ */
35
+ prefetch?: boolean;
36
+ /**
37
+ * Allows controlling when to prefetch links. By default, prefetch is triggered only on visibility.
38
+ */
39
+ prefetchOn?: 'visibility' | 'interaction' | Partial<{
40
+ visibility: boolean;
41
+ interaction: boolean;
42
+ }>;
43
+ /**
44
+ * Escape hatch to disable `prefetch` attribute.
45
+ */
46
+ noPrefetch?: boolean;
47
+ }
48
+ export interface LinkProps extends NuxtLinkProps {
49
+ /**
50
+ * The element or component this component should render as when not a link.
51
+ * @defaultValue 'button'
52
+ */
53
+ as?: any;
54
+ /**
55
+ * The type of the button when not a link.
56
+ * @defaultValue 'button'
57
+ */
58
+ type?: ButtonHTMLAttributes['type'];
59
+ disabled?: boolean;
60
+ /** Force the link to be active independent of the current route. */
61
+ active?: boolean;
62
+ /** Will only be active if the current route is an exact match. */
63
+ exact?: boolean;
64
+ /** Will only be active if the current route query is an exact match. */
65
+ exactQuery?: boolean | 'partial';
66
+ /** Will only be active if the current route hash is an exact match. */
67
+ exactHash?: boolean;
68
+ /** The class to apply when the link is inactive. */
69
+ inactiveClass?: string;
70
+ custom?: boolean;
71
+ /** When `true`, uses special underlined styling. */
72
+ isAction?: boolean;
73
+ /** When `true`, only styles from `class`, `activeClass`, and `inactiveClass` will be applied. */
74
+ raw?: boolean;
75
+ class?: any;
76
+ }
77
+ export interface LinkSlots {
78
+ default(props: {
79
+ active: boolean;
80
+ }): any;
81
+ }
82
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<LinkProps>, {
83
+ as: string;
84
+ type: string;
85
+ ariaCurrentValue: string;
86
+ active: undefined;
87
+ isAction: boolean;
88
+ activeClass: string;
89
+ inactiveClass: string;
90
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<LinkProps>, {
91
+ as: string;
92
+ type: string;
93
+ ariaCurrentValue: string;
94
+ active: undefined;
95
+ isAction: boolean;
96
+ activeClass: string;
97
+ inactiveClass: string;
98
+ }>>> & Readonly<{}>, {
99
+ as: any;
100
+ type: "reset" | "submit" | "button";
101
+ activeClass: string;
102
+ ariaCurrentValue: "page" | "step" | "location" | "date" | "time" | "true" | "false";
103
+ active: boolean;
104
+ inactiveClass: string;
105
+ isAction: boolean;
106
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<LinkSlots> & LinkSlots>;
107
+ export default _default;
108
+ type __VLS_WithDefaults<P, D> = {
109
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
110
+ default: D[K];
111
+ }> : P[K];
112
+ };
113
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
114
+ type __VLS_TypePropsToOption<T> = {
115
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
116
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
117
+ } : {
118
+ type: import('vue').PropType<T[K]>;
119
+ required: true;
120
+ };
121
+ };
122
+ type __VLS_WithTemplateSlots<T, S> = T & {
123
+ new (): {
124
+ $slots: S;
125
+ };
126
+ };
127
+ type __VLS_PrettifyLocal<T> = {
128
+ [K in keyof T]: T[K];
129
+ } & {};
@@ -1,4 +1,4 @@
1
- import 'node:url';
1
+ import { fileURLToPath } from 'node:url';
2
2
  import { kebabCase } from 'scule';
3
3
  import { addTypeTemplate, addTemplate } from '@nuxt/kit';
4
4
  import { defuFn, defu } from 'defu';
@@ -1263,7 +1263,12 @@ const button = {
1263
1263
  },
1264
1264
  {
1265
1265
  normalCase: true,
1266
- size: ["md", "lg"],
1266
+ size: "md",
1267
+ class: "text-md"
1268
+ },
1269
+ {
1270
+ normalCase: true,
1271
+ size: "lg",
1267
1272
  class: "text-md"
1268
1273
  }
1269
1274
  // endregion ////
@@ -2803,13 +2808,13 @@ const inputMenu = () => {
2803
2808
  "cursor-pointer",
2804
2809
  "data-disabled:cursor-not-allowed data-disabled:opacity-75",
2805
2810
  "text-base-master dark:text-base-150",
2806
- "data-highlighted:text-base-900 dark:data-highlighted:text-base-200 data-highlighted:before:bg-base-100/50 dark:data-highlighted:before:bg-base-900",
2811
+ "data-highlighted:not-data-disabled:text-base-900 dark:data-highlighted:not-data-disabled:text-base-200 data-highlighted:not-data-disabled:before:bg-base-100/50 dark:data-highlighted:not-data-disabled:before:bg-base-900",
2807
2812
  "data-[state=checked]:text-base-900 dark:data-[state=checked]:text-base-200 data-[state=checked]:before:bg-base-100/50 dark:data-[state=checked]:before:bg-base-900",
2808
2813
  "transition-colors before:transition-colors"
2809
2814
  ].join(" "),
2810
2815
  itemLeadingIcon: [
2811
2816
  "shrink-0 text-base-500 dark:text-base-700",
2812
- "group-data-highlighted:text-base-master dark:group-data-highlighted:text-base-150",
2817
+ "group-data-highlighted:not-data-disabled:text-base-master dark:group-data-highlighted:not-data-disabled:text-base-150",
2813
2818
  "group-data-[state=checked]:text-base-master dark:group-data-[state=checked]:text-base-150",
2814
2819
  "transition-colors"
2815
2820
  ].join(" "),
@@ -5431,14 +5436,14 @@ const select = () => {
5431
5436
  "cursor-pointer",
5432
5437
  "data-disabled:cursor-not-allowed data-disabled:opacity-75",
5433
5438
  "text-base-master dark:text-base-150",
5434
- "data-highlighted:text-base-900 dark:data-highlighted:text-base-200 data-highlighted:before:bg-base-100/50 dark:data-highlighted:before:bg-base-900",
5439
+ "data-highlighted:not-data-disabled:text-base-900 dark:data-highlighted:not-data-disabled:text-base-200 data-highlighted:not-data-disabled:before:bg-base-100/50 dark:data-highlighted:not-data-disabled:before:bg-base-900",
5435
5440
  "data-[state=checked]:text-base-900 dark:data-[state=checked]:text-base-200 data-[state=checked]:before:bg-base-100/50 dark:data-[state=checked]:before:bg-base-900",
5436
5441
  "transition-colors before:transition-colors"
5437
5442
  ].join(" "),
5438
5443
  itemLeadingIcon: [
5439
5444
  "shrink-0 transition-colors",
5440
5445
  "text-base-500 dark:text-base-700",
5441
- "group-data-highlighted:text-base-master dark:group-data-highlighted:text-base-150",
5446
+ "group-data-highlighted:not-data-disabled:text-base-master dark:group-data-highlighted:not-data-disabled:text-base-150",
5442
5447
  "group-data-[state=checked]:text-base-master dark:group-data-[state=checked]:text-base-150"
5443
5448
  ].join(" "),
5444
5449
  itemLeadingAvatar: "shrink-0",
@@ -5477,14 +5482,14 @@ const selectMenu = () => {
5477
5482
  item: [
5478
5483
  "before:rounded-none",
5479
5484
  "text-base-master dark:text-base-150 before:bg-blue-200 dark:before:bg-blue-800",
5480
- "data-highlighted:text-base-900 dark:data-highlighted:text-base-200 data-highlighted:before:bg-blue-200 dark:data-highlighted:before:bg-blue-800",
5485
+ "data-highlighted:not-data-disabled:text-base-900 dark:data-highlighted:not-data-disabled:text-base-200 data-highlighted:not-data-disabled:before:bg-blue-200 dark:data-highlighted:not-data-disabled:before:bg-blue-800",
5481
5486
  "data-[state=checked]:text-base-900 dark:data-[state=checked]:text-base-200 data-[state=checked]:before:bg-blue-200 dark:data-[state=checked]:before:bg-blue-800"
5482
5487
  ].join(" "),
5483
5488
  itemLabel: "flex flex-row flex-nowrap items-center justify-start gap-2",
5484
5489
  itemLeadingIcon: [
5485
5490
  "size-5 rounded-full",
5486
5491
  "text-white dark:text-base-150 bg-blue-500 dark:bg-blue-600",
5487
- "group-data-highlighted:text-white dark:group-data-highlighted:text-base-150 group-data-highlighted:bg-blue-500 dark:group-data-highlighted:bg-blue-600",
5492
+ "group-data-highlighted:not-data-disabled:text-white dark:group-data-highlighted:not-data-disabled:text-base-150 group-data-highlighted:not-data-disabled:bg-blue-500 dark:group-data-highlighted:not-data-disabled:bg-blue-600",
5488
5493
  "group-data-[state=checked]:text-white dark:group-data-[state=checked]:text-base-150 group-data-[state=checked]:bg-blue-500 dark:group-data-[state=checked]:bg-blue-600"
5489
5494
  ].join(" ")
5490
5495
  }
@@ -7621,6 +7626,16 @@ function getTemplates(options) {
7621
7626
  return `${before}${replaced}${after}`;
7622
7627
  });
7623
7628
  }
7629
+ if (process.env.DEV) {
7630
+ const templatePath = fileURLToPath(new URL(`./theme/prose/${kebabCase(component)}`, import.meta.url));
7631
+ return [
7632
+ `import template from ${JSON.stringify(templatePath)}`,
7633
+ ...generateVariantDeclarations(variants, result),
7634
+ `const result = typeof template === 'function' ? template(${JSON.stringify(options, null, 2)}) : template`,
7635
+ `const theme = ${json}`,
7636
+ `export default result as typeof theme`
7637
+ ].join("\n\n");
7638
+ }
7624
7639
  return [
7625
7640
  ...generateVariantDeclarations(variants, result),
7626
7641
  `export default ${json}`
@@ -7647,6 +7662,16 @@ function getTemplates(options) {
7647
7662
  return `${before}${replaced}${after}`;
7648
7663
  });
7649
7664
  }
7665
+ if (process.env.DEV) {
7666
+ const templatePath = fileURLToPath(new URL(`./theme/content/${kebabCase(component)}`, import.meta.url));
7667
+ return [
7668
+ `import template from ${JSON.stringify(templatePath)}`,
7669
+ ...generateVariantDeclarations(variants, result),
7670
+ `const result = typeof template === 'function' ? template(${JSON.stringify(options, null, 2)}) : template`,
7671
+ `const theme = ${json}`,
7672
+ `export default result as typeof theme`
7673
+ ].join("\n\n");
7674
+ }
7650
7675
  return [
7651
7676
  ...generateVariantDeclarations(variants, result),
7652
7677
  `export default ${json}`
package/dist/types.d.mts CHANGED
@@ -1,7 +1,5 @@
1
- import type { NuxtModule } from '@nuxt/schema'
1
+ export { default } from './module.mjs'
2
2
 
3
- import type { default as Module } from './module.js'
3
+ export { type ModuleOptions } from './module.mjs'
4
4
 
5
- export type ModuleOptions = typeof Module extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
6
-
7
- export { default } from './module.js'
5
+ export * from '../dist/runtime/types/index.js'
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, a as getDefaultUiConfig } from './shared/b24ui-nuxt.CS9Lf0os.mjs';
6
+ import { g as getTemplates, d as defaultOptions, a as getDefaultUiConfig } from './shared/b24ui-nuxt.wBs9vEU5.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/b24ui-nuxt.CS9Lf0os.mjs';
7
+ import './shared/b24ui-nuxt.wBs9vEU5.mjs';
8
8
  import 'scule';
9
9
  import '@nuxt/kit';
10
10
  import 'tinyglobby';