@bitrix24/b24ui-nuxt 0.7.2 → 1.0.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 (260) hide show
  1. package/.nuxt/b24ui/accordion.ts +3 -3
  2. package/.nuxt/b24ui/advice.ts +6 -5
  3. package/.nuxt/b24ui/alert.ts +102 -49
  4. package/.nuxt/b24ui/avatar-group.ts +10 -10
  5. package/.nuxt/b24ui/avatar.ts +18 -18
  6. package/.nuxt/b24ui/badge.ts +167 -176
  7. package/.nuxt/b24ui/button-group.ts +3 -1
  8. package/.nuxt/b24ui/button.ts +179 -170
  9. package/.nuxt/b24ui/calendar.ts +48 -28
  10. package/.nuxt/b24ui/checkbox.ts +82 -85
  11. package/.nuxt/b24ui/chip.ts +121 -32
  12. package/.nuxt/b24ui/container.ts +1 -1
  13. package/.nuxt/b24ui/content/table-wrapper.ts +11 -11
  14. package/.nuxt/b24ui/countdown.ts +11 -11
  15. package/.nuxt/b24ui/description-list.ts +6 -6
  16. package/.nuxt/b24ui/dropdown-menu.ts +111 -183
  17. package/.nuxt/b24ui/form-field.ts +19 -19
  18. package/.nuxt/b24ui/index.ts +0 -1
  19. package/.nuxt/b24ui/input-menu.ts +294 -357
  20. package/.nuxt/b24ui/input-number.ts +111 -259
  21. package/.nuxt/b24ui/input.ts +136 -259
  22. package/.nuxt/b24ui/kbd.ts +15 -13
  23. package/.nuxt/b24ui/link.ts +5 -5
  24. package/.nuxt/b24ui/modal.ts +14 -12
  25. package/.nuxt/b24ui/navbar-divider.ts +1 -1
  26. package/.nuxt/b24ui/navbar-section.ts +1 -1
  27. package/.nuxt/b24ui/navbar.ts +1 -1
  28. package/.nuxt/b24ui/navigation-menu.ts +70 -754
  29. package/.nuxt/b24ui/popover.ts +2 -2
  30. package/.nuxt/b24ui/progress.ts +58 -68
  31. package/.nuxt/b24ui/prose/a.ts +1 -1
  32. package/.nuxt/b24ui/prose/blockquote.ts +1 -1
  33. package/.nuxt/b24ui/prose/code.ts +45 -9
  34. package/.nuxt/b24ui/prose/h1.ts +21 -2
  35. package/.nuxt/b24ui/prose/h2.ts +21 -12
  36. package/.nuxt/b24ui/prose/h3.ts +21 -12
  37. package/.nuxt/b24ui/prose/h4.ts +21 -12
  38. package/.nuxt/b24ui/prose/h5.ts +21 -12
  39. package/.nuxt/b24ui/prose/h6.ts +21 -12
  40. package/.nuxt/b24ui/prose/hr.ts +1 -1
  41. package/.nuxt/b24ui/prose/ol.ts +1 -1
  42. package/.nuxt/b24ui/prose/p.ts +26 -1
  43. package/.nuxt/b24ui/prose/thead.ts +1 -1
  44. package/.nuxt/b24ui/prose/ul.ts +1 -1
  45. package/.nuxt/b24ui/radio-group.ts +115 -155
  46. package/.nuxt/b24ui/range.ts +38 -26
  47. package/.nuxt/b24ui/select-menu.ts +251 -306
  48. package/.nuxt/b24ui/select.ts +246 -301
  49. package/.nuxt/b24ui/separator.ts +40 -85
  50. package/.nuxt/b24ui/sidebar-header.ts +1 -1
  51. package/.nuxt/b24ui/sidebar-heading.ts +1 -1
  52. package/.nuxt/b24ui/sidebar-layout.ts +130 -19
  53. package/.nuxt/b24ui/sidebar-section.ts +1 -1
  54. package/.nuxt/b24ui/skeleton.ts +19 -1
  55. package/.nuxt/b24ui/slideover.ts +35 -34
  56. package/.nuxt/b24ui/switch.ts +59 -48
  57. package/.nuxt/b24ui/tabs.ts +26 -239
  58. package/.nuxt/b24ui/textarea.ts +50 -236
  59. package/.nuxt/b24ui/toast.ts +38 -30
  60. package/.nuxt/b24ui/toaster.ts +1 -1
  61. package/.nuxt/b24ui/tooltip.ts +5 -5
  62. package/cli/templates.mjs +2 -1
  63. package/dist/meta.d.mts +18759 -5002
  64. package/dist/meta.mjs +18759 -5002
  65. package/dist/module.d.mts +1 -0
  66. package/dist/module.json +2 -2
  67. package/dist/module.mjs +3 -5
  68. package/dist/runtime/air-design-tokens/001_b24_global.css +1 -0
  69. package/dist/runtime/air-design-tokens/002_b24_context_utility.css +0 -0
  70. package/dist/runtime/air-design-tokens/003_b24_context_light.css +1 -0
  71. package/dist/runtime/air-design-tokens/004_b24_context_dark.css +1 -0
  72. package/dist/runtime/air-design-tokens/005_b24_context_edge-light.css +1 -0
  73. package/dist/runtime/air-design-tokens/006_b24_context_edge-dark.css +1 -0
  74. package/dist/runtime/air-design-tokens/007_b24_global.css +1 -0
  75. package/dist/runtime/air-design-tokens/008_ui_global.css +1 -0
  76. package/dist/runtime/air-design-tokens/009_b24_tools.css +1 -0
  77. package/dist/runtime/air-design-tokens/components/badge-counter.css +1 -0
  78. package/dist/runtime/air-design-tokens/components/button.css +1 -0
  79. package/dist/runtime/air-design-tokens/components/navigation-menu.css +1 -0
  80. package/dist/runtime/air-design-tokens/components/popup.css +1 -0
  81. package/dist/runtime/air-design-tokens/components/scrollbar.css +2 -0
  82. package/dist/runtime/air-design-tokens/index.css +1 -0
  83. package/dist/runtime/components/Accordion.vue.d.ts +1 -1
  84. package/dist/runtime/components/Advice.vue +1 -13
  85. package/dist/runtime/components/Advice.vue.d.ts +1 -1
  86. package/dist/runtime/components/Alert.vue +6 -4
  87. package/dist/runtime/components/Alert.vue.d.ts +11 -4
  88. package/dist/runtime/components/App.vue.d.ts +1 -1
  89. package/dist/runtime/components/Avatar.vue.d.ts +1 -1
  90. package/dist/runtime/components/AvatarGroup.vue.d.ts +1 -1
  91. package/dist/runtime/components/Badge.vue +7 -11
  92. package/dist/runtime/components/Badge.vue.d.ts +6 -8
  93. package/dist/runtime/components/Button.vue +18 -15
  94. package/dist/runtime/components/Button.vue.d.ts +5 -7
  95. package/dist/runtime/components/ButtonGroup.vue.d.ts +1 -1
  96. package/dist/runtime/components/Calendar.vue +8 -8
  97. package/dist/runtime/components/Calendar.vue.d.ts +14 -8
  98. package/dist/runtime/components/Checkbox.vue.d.ts +2 -2
  99. package/dist/runtime/components/Chip.vue +28 -7
  100. package/dist/runtime/components/Chip.vue.d.ts +22 -2
  101. package/dist/runtime/components/Collapsible.vue.d.ts +1 -1
  102. package/dist/runtime/components/Container.vue.d.ts +1 -1
  103. package/dist/runtime/components/Countdown.vue.d.ts +5 -3
  104. package/dist/runtime/components/DescriptionList.vue.d.ts +1 -1
  105. package/dist/runtime/components/DropdownMenu.vue +20 -9
  106. package/dist/runtime/components/DropdownMenu.vue.d.ts +1 -5
  107. package/dist/runtime/components/DropdownMenuContent.vue +29 -7
  108. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +14 -6
  109. package/dist/runtime/components/Form.vue +3 -3
  110. package/dist/runtime/components/Form.vue.d.ts +6 -5
  111. package/dist/runtime/components/FormField.vue +2 -2
  112. package/dist/runtime/components/FormField.vue.d.ts +4 -4
  113. package/dist/runtime/components/Input.vue +8 -4
  114. package/dist/runtime/components/Input.vue.d.ts +9 -8
  115. package/dist/runtime/components/InputMenu.vue +44 -18
  116. package/dist/runtime/components/InputMenu.vue.d.ts +17 -223
  117. package/dist/runtime/components/InputNumber.vue +14 -11
  118. package/dist/runtime/components/InputNumber.vue.d.ts +13 -87
  119. package/dist/runtime/components/Kbd.vue +6 -3
  120. package/dist/runtime/components/Kbd.vue.d.ts +7 -3
  121. package/dist/runtime/components/Link.vue +6 -5
  122. package/dist/runtime/components/Link.vue.d.ts +1 -3
  123. package/dist/runtime/components/LinkBase.vue.d.ts +1 -1
  124. package/dist/runtime/components/Modal.vue +37 -33
  125. package/dist/runtime/components/Modal.vue.d.ts +2 -2
  126. package/dist/runtime/components/ModalDialogClose.vue.d.ts +1 -1
  127. package/dist/runtime/components/Navbar.vue.d.ts +1 -1
  128. package/dist/runtime/components/NavbarDivider.vue.d.ts +1 -1
  129. package/dist/runtime/components/NavbarSection.vue.d.ts +1 -1
  130. package/dist/runtime/components/NavbarSpacer.vue.d.ts +1 -1
  131. package/dist/runtime/components/NavigationMenu.vue +95 -84
  132. package/dist/runtime/components/NavigationMenu.vue.d.ts +31 -33
  133. package/dist/runtime/components/OverlayProvider.vue.d.ts +1 -1
  134. package/dist/runtime/components/Popover.vue +8 -2
  135. package/dist/runtime/components/Popover.vue.d.ts +9 -3
  136. package/dist/runtime/components/Progress.vue.d.ts +3 -3
  137. package/dist/runtime/components/RadioGroup.vue +1 -1
  138. package/dist/runtime/components/RadioGroup.vue.d.ts +6 -5
  139. package/dist/runtime/components/Range.vue.d.ts +6 -6
  140. package/dist/runtime/components/Select.vue +25 -11
  141. package/dist/runtime/components/Select.vue.d.ts +7 -7
  142. package/dist/runtime/components/SelectMenu.vue +38 -19
  143. package/dist/runtime/components/SelectMenu.vue.d.ts +11 -10
  144. package/dist/runtime/components/Separator.vue +4 -4
  145. package/dist/runtime/components/Separator.vue.d.ts +6 -3
  146. package/dist/runtime/components/Sidebar.vue.d.ts +4 -1
  147. package/dist/runtime/components/SidebarBody.vue.d.ts +4 -1
  148. package/dist/runtime/components/SidebarFooter.vue.d.ts +4 -1
  149. package/dist/runtime/components/SidebarHeader.vue.d.ts +4 -1
  150. package/dist/runtime/components/SidebarHeading.vue.d.ts +4 -1
  151. package/dist/runtime/components/SidebarLayout.vue +148 -63
  152. package/dist/runtime/components/SidebarLayout.vue.d.ts +61 -8
  153. package/dist/runtime/components/SidebarSection.vue.d.ts +4 -1
  154. package/dist/runtime/components/SidebarSpacer.vue.d.ts +4 -1
  155. package/dist/runtime/components/Skeleton.vue +7 -3
  156. package/dist/runtime/components/Skeleton.vue.d.ts +12 -1
  157. package/dist/runtime/components/Slideover.vue +120 -43
  158. package/dist/runtime/components/Slideover.vue.d.ts +22 -9
  159. package/dist/runtime/components/Switch.vue.d.ts +2 -2
  160. package/dist/runtime/components/Tabs.vue +11 -3
  161. package/dist/runtime/components/Tabs.vue.d.ts +8 -7
  162. package/dist/runtime/components/Textarea.vue +8 -4
  163. package/dist/runtime/components/Textarea.vue.d.ts +8 -7
  164. package/dist/runtime/components/Toast.vue +16 -8
  165. package/dist/runtime/components/Toast.vue.d.ts +16 -15
  166. package/dist/runtime/components/Toaster.vue.d.ts +2 -2
  167. package/dist/runtime/components/Tooltip.vue +9 -5
  168. package/dist/runtime/components/Tooltip.vue.d.ts +7 -1
  169. package/dist/runtime/components/content/TableWrapper.vue.d.ts +1 -1
  170. package/dist/runtime/composables/defineShortcuts.js +5 -3
  171. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  172. package/dist/runtime/composables/useButtonGroup.d.ts +1 -1
  173. package/dist/runtime/composables/useComponentIcons.d.ts +1 -1
  174. package/dist/runtime/composables/useFormField.d.ts +4 -7
  175. package/dist/runtime/composables/useFormField.js +6 -3
  176. package/dist/runtime/composables/useKbd.d.ts +1 -1
  177. package/dist/runtime/composables/useLocale.js +2 -2
  178. package/dist/runtime/composables/useOverlay.d.ts +29 -2
  179. package/dist/runtime/composables/useOverlay.js +8 -7
  180. package/dist/runtime/composables/usePortal.d.ts +1 -1
  181. package/dist/runtime/composables/useSidebarLayout.d.ts +20 -0
  182. package/dist/runtime/composables/useSidebarLayout.js +16 -0
  183. package/dist/runtime/dictionary/icons.js +7 -7
  184. package/dist/runtime/index.css +1 -1
  185. package/dist/runtime/inertia/components/Link.vue +3 -0
  186. package/dist/runtime/inertia/components/Link.vue.d.ts +1 -1
  187. package/dist/runtime/inertia/components/LinkBase.vue.d.ts +1 -1
  188. package/dist/runtime/inertia/stubs.d.ts +1 -0
  189. package/dist/runtime/inertia/stubs.js +4 -2
  190. package/dist/runtime/locale/ar.js +6 -0
  191. package/dist/runtime/locale/br.js +6 -0
  192. package/dist/runtime/locale/de.js +6 -0
  193. package/dist/runtime/locale/en.js +6 -0
  194. package/dist/runtime/locale/fr.js +6 -0
  195. package/dist/runtime/locale/id.js +6 -0
  196. package/dist/runtime/locale/it.js +6 -0
  197. package/dist/runtime/locale/ja.js +6 -0
  198. package/dist/runtime/locale/kz.js +6 -0
  199. package/dist/runtime/locale/la.js +6 -0
  200. package/dist/runtime/locale/ms.js +6 -0
  201. package/dist/runtime/locale/pl.js +6 -0
  202. package/dist/runtime/locale/ru.js +6 -0
  203. package/dist/runtime/locale/sc.js +6 -0
  204. package/dist/runtime/locale/tc.js +6 -0
  205. package/dist/runtime/locale/th.js +6 -0
  206. package/dist/runtime/locale/tr.js +6 -0
  207. package/dist/runtime/locale/ua.js +6 -0
  208. package/dist/runtime/locale/vn.js +6 -0
  209. package/dist/runtime/plugins/ui-version.d.ts +5 -0
  210. package/dist/runtime/plugins/ui-version.js +8 -0
  211. package/dist/runtime/prose/A.vue.d.ts +4 -1
  212. package/dist/runtime/prose/Blockquote.vue.d.ts +4 -1
  213. package/dist/runtime/prose/Code.vue.d.ts +4 -1
  214. package/dist/runtime/prose/Em.vue.d.ts +4 -1
  215. package/dist/runtime/prose/H1.vue +4 -1
  216. package/dist/runtime/prose/H1.vue.d.ts +7 -1
  217. package/dist/runtime/prose/H2.vue +4 -1
  218. package/dist/runtime/prose/H2.vue.d.ts +7 -1
  219. package/dist/runtime/prose/H3.vue +4 -1
  220. package/dist/runtime/prose/H3.vue.d.ts +7 -1
  221. package/dist/runtime/prose/H4.vue +4 -1
  222. package/dist/runtime/prose/H4.vue.d.ts +7 -1
  223. package/dist/runtime/prose/H5.vue +4 -1
  224. package/dist/runtime/prose/H5.vue.d.ts +7 -1
  225. package/dist/runtime/prose/H6.vue +4 -1
  226. package/dist/runtime/prose/H6.vue.d.ts +7 -1
  227. package/dist/runtime/prose/Hr.vue.d.ts +1 -1
  228. package/dist/runtime/prose/Img.vue.d.ts +1 -1
  229. package/dist/runtime/prose/Li.vue.d.ts +4 -1
  230. package/dist/runtime/prose/Ol.vue.d.ts +4 -1
  231. package/dist/runtime/prose/P.vue +6 -1
  232. package/dist/runtime/prose/P.vue.d.ts +12 -1
  233. package/dist/runtime/prose/Pre.vue.d.ts +4 -1
  234. package/dist/runtime/prose/Strong.vue.d.ts +4 -1
  235. package/dist/runtime/prose/Table.vue.d.ts +5 -2
  236. package/dist/runtime/prose/Tbody.vue.d.ts +4 -1
  237. package/dist/runtime/prose/Td.vue.d.ts +4 -1
  238. package/dist/runtime/prose/Th.vue.d.ts +4 -1
  239. package/dist/runtime/prose/Thead.vue.d.ts +4 -1
  240. package/dist/runtime/prose/Tr.vue.d.ts +4 -1
  241. package/dist/runtime/prose/Ul.vue.d.ts +4 -1
  242. package/dist/runtime/types/index.d.ts +0 -1
  243. package/dist/runtime/types/index.js +0 -1
  244. package/dist/runtime/types/locale.d.ts +6 -0
  245. package/dist/runtime/utils/index.d.ts +6 -0
  246. package/dist/runtime/utils/index.js +27 -0
  247. package/dist/runtime/utils/tv.js +66 -1
  248. package/dist/runtime/vue/components/Link.vue +3 -0
  249. package/dist/runtime/vue/components/Link.vue.d.ts +1 -1
  250. package/dist/runtime/vue/stubs.d.ts +1 -0
  251. package/dist/runtime/vue/stubs.js +3 -1
  252. package/dist/shared/b24ui-nuxt.dLc5H7ID.mjs +6100 -0
  253. package/dist/unplugin.mjs +1 -1
  254. package/dist/vite.mjs +1 -1
  255. package/package.json +40 -28
  256. package/.nuxt/b24ui/stacked-layout.ts +0 -34
  257. package/dist/runtime/air-design-tokens.css +0 -1
  258. package/dist/runtime/components/StackedLayout.vue +0 -117
  259. package/dist/runtime/components/StackedLayout.vue.d.ts +0 -44
  260. package/dist/shared/b24ui-nuxt.CxsFEY3M.mjs +0 -7895
@@ -3,31 +3,42 @@ import theme from "#build/b24ui/sidebar-layout";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
- import { ref, computed, watch, onUnmounted } from "vue";
6
+ import { ref, computed, watch, onUnmounted, readonly, provide, inject } from "vue";
7
7
  import { useRoute } from "vue-router";
8
8
  import { Primitive } from "reka-ui";
9
9
  import { useAppConfig } from "#imports";
10
+ import { useLocale } from "../composables/useLocale";
11
+ import { sidebarLayoutInjectionKey } from "../composables/useSidebarLayout";
10
12
  import { tv } from "../utils/tv";
11
13
  import B24Slideover from "./Slideover.vue";
12
14
  import B24Sidebar from "./Sidebar.vue";
13
15
  import B24ModalDialogClose from "./ModalDialogClose.vue";
14
16
  import B24Navbar from "./Navbar.vue";
15
- import MenuIcon from "@bitrix24/b24icons-vue/main/MenuIcon";
17
+ import HamburgerMenuIcon from "@bitrix24/b24icons-vue/outline/HamburgerMenuIcon";
16
18
  import Cross50Icon from "@bitrix24/b24icons-vue/actions/Cross50Icon";
19
+ import BtnSpinnerIcon from "@bitrix24/b24icons-vue/button-specialized/BtnSpinnerIcon";
17
20
  const props = defineProps({
18
21
  as: { type: null, required: false, default: "div" },
19
22
  useLightContent: { type: Boolean, required: false, default: true },
23
+ isInner: { type: Boolean, required: false, default: false },
24
+ offContentScrollbar: { type: Boolean, required: false, default: false },
20
25
  class: { type: null, required: false },
21
- b24ui: { type: null, required: false }
26
+ b24ui: { type: Object, required: false }
22
27
  });
23
28
  const slots = defineSlots();
29
+ const { t } = useLocale();
24
30
  const appConfig = useAppConfig();
25
31
  const route = useRoute();
26
32
  const isUseSideBar = computed(() => !!slots.sidebar);
33
+ const isUseNavbar = computed(() => !!slots.navbar);
27
34
  const openSidebarSlideover = ref(false);
28
35
  const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.sidebarLayout || {} })({
29
36
  useSidebar: isUseSideBar.value,
30
- useLightContent: Boolean(props.useLightContent)
37
+ useNavbar: isUseNavbar.value,
38
+ useLightContent: Boolean(props.useLightContent),
39
+ loading: Boolean(isLoading.value),
40
+ inner: Boolean(props.isInner),
41
+ offContentScrollbar: Boolean(props.offContentScrollbar)
31
42
  }));
32
43
  const closeModal = () => {
33
44
  if (openSidebarSlideover.value) {
@@ -35,7 +46,7 @@ const closeModal = () => {
35
46
  }
36
47
  };
37
48
  const stopWatcher = watch(
38
- () => route.path,
49
+ () => route?.path,
39
50
  () => closeModal(),
40
51
  { immediate: true }
41
52
  );
@@ -45,81 +56,155 @@ onUnmounted(() => {
45
56
  const handleNavigationClick = () => {
46
57
  closeModal();
47
58
  };
59
+ const parentApi = inject(sidebarLayoutInjectionKey, null);
60
+ const rootRef = parentApi ? parentApi.rootRef : ref(false);
61
+ const isLoading = ref(false);
62
+ const isParentLoading = computed(
63
+ () => parentApi?.isLoading.value ?? false
64
+ );
65
+ const isRootLoading = computed(
66
+ () => rootRef.value
67
+ );
68
+ const api = {
69
+ isLoading: readonly(isLoading),
70
+ isParentLoading: readonly(isParentLoading),
71
+ isRootLoading: readonly(isRootLoading),
72
+ setLoading: (value) => {
73
+ isLoading.value = value;
74
+ },
75
+ setParentLoading: (value) => {
76
+ if (parentApi) {
77
+ parentApi.setLoading(value);
78
+ }
79
+ },
80
+ setRootLoading: (value) => {
81
+ rootRef.value = value;
82
+ },
83
+ rootRef
84
+ };
85
+ provide(sidebarLayoutInjectionKey, api);
86
+ defineExpose({
87
+ api,
88
+ isLoading,
89
+ setLoading: api.setLoading,
90
+ setRootLoading: api.setRootLoading
91
+ });
48
92
  </script>
49
93
 
50
94
  <template>
51
- <Primitive :as="as" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
95
+ <Primitive
96
+ :data-state="isLoading ? 'loading' : 'show'"
97
+ :as="as"
98
+ :class="b24ui.root({ class: [props.b24ui?.root, props.class] })"
99
+ >
100
+ <!-- isLoading -->
101
+ <slot name="loading" :is-loading="isLoading">
102
+ <div
103
+ v-if="isLoading"
104
+ :class="b24ui.loadingWrapper({ class: props.b24ui?.loadingWrapper })"
105
+ >
106
+ <BtnSpinnerIcon
107
+ :class="b24ui.loadingIcon({ class: props.b24ui?.loadingIcon })"
108
+ aria-hidden="true"
109
+ />
110
+ </div>
111
+ </slot>
52
112
  <template v-if="isUseSideBar">
53
113
  <div :class="b24ui.sidebar({ class: props.b24ui?.sidebar })">
54
114
  <B24Sidebar>
55
- <slot name="sidebar" :handle-click="handleNavigationClick" />
115
+ <slot name="sidebar" :handle-click="handleNavigationClick" :is-loading="isLoading" />
56
116
  </B24Sidebar>
57
117
  </div>
58
118
  </template>
59
119
 
60
- <header :class="b24ui.header({ class: props.b24ui?.header })">
61
- <div
62
- v-if="isUseSideBar"
63
- :class="b24ui.headerMenuIcon({ class: props.b24ui?.headerMenuIcon })"
120
+ <div :class="b24ui.contentWrapper({ class: props.b24ui?.contentWrapper })">
121
+ <header
122
+ v-if="isUseNavbar"
123
+ :class="b24ui.header({ class: props.b24ui?.header })"
64
124
  >
65
- <!-- @todo: lang -->
66
- <B24Slideover
67
- v-model:open="openSidebarSlideover"
68
- title="Navigation"
69
- description="Content navigation"
70
- side="left"
71
- :b24ui="{ content: b24ui.sidebarSlideoverContainer({ class: props.b24ui?.sidebarSlideoverContainer }) }"
125
+ <div
126
+ v-if="isUseSideBar"
127
+ :class="b24ui.headerMenuIcon({ class: props.b24ui?.headerMenuIcon })"
72
128
  >
73
- <!-- @todo: lang -->
74
- <B24Button
75
- aria-label="Open navigation"
76
- color="link"
77
- size="sm"
78
- :class="b24ui.headerPaddings({ class: props.b24ui?.headerPaddings })"
79
- :icon="MenuIcon"
80
- />
129
+ <B24Slideover
130
+ v-model:open="openSidebarSlideover"
131
+ :title="t('sidebarLayout.slideoverTitle')"
132
+ :description="t('sidebarLayout.slideoverDescription')"
133
+ side="left"
134
+ :b24ui="{
135
+ content: b24ui.sidebarSlideoverContainer({ class: props.b24ui?.sidebarSlideoverContainer })
136
+ }"
137
+ >
138
+ <B24Button
139
+ color="air-tertiary"
140
+ size="md"
141
+ :icon="HamburgerMenuIcon"
142
+ :aria-label="t('sidebarLayout.open')"
143
+ />
144
+
145
+ <template #content>
146
+ <div :class="b24ui.sidebarSlideover({ class: props.b24ui?.sidebarSlideover })">
147
+ <B24Sidebar>
148
+ <div :class="b24ui.sidebarSlideoverBtnClose({ class: props.b24ui?.sidebarSlideoverBtnClose })">
149
+ <B24ModalDialogClose>
150
+ <B24Button
151
+ color="air-tertiary"
152
+ size="lg"
153
+ :icon="Cross50Icon"
154
+ :aria-label="t('sidebarLayout.close')"
155
+ />
156
+ </B24ModalDialogClose>
157
+ </div>
158
+
159
+ <slot name="sidebar" :handle-click="handleNavigationClick" :is-loading="isLoading" />
160
+ </B24Sidebar>
161
+ </div>
162
+ </template>
163
+ </B24Slideover>
164
+ </div>
165
+ <div :class="b24ui.headerWrapper({ class: props.b24ui?.headerWrapper })">
166
+ <B24Navbar>
167
+ <slot name="navbar" :is-loading="isLoading" />
168
+ </B24Navbar>
169
+ </div>
170
+ </header>
81
171
 
82
- <template #content>
83
- <div :class="b24ui.sidebarSlideover({ class: props.b24ui?.sidebarSlideover })">
84
- <B24Sidebar>
85
- <div :class="b24ui.sidebarSlideoverBtnClose({ class: props.b24ui?.sidebarSlideoverBtnClose })">
86
- <!-- @todo: lang -->
87
- <B24ModalDialogClose>
88
- <B24Button
89
- color="link"
90
- size="lg"
91
- :icon="Cross50Icon"
92
- aria-label="Close navigation"
93
- />
94
- </B24ModalDialogClose>
95
- </div>
172
+ <template v-if="!!slots['content-top'] || !!slots['content-actions'] || !!slots['default']">
173
+ <main :class="b24ui.container({ class: props.b24ui?.container })">
174
+ <template v-if="!!slots['content-top']">
175
+ <!-- Page Top -->
176
+ <div :class="b24ui.pageTopWrapper({ class: props.b24ui?.pageTopWrapper })">
177
+ <slot name="content-top" :is-loading="isLoading" />
178
+ </div>
179
+ </template>
96
180
 
97
- <slot name="sidebar" :handle-click="handleNavigationClick" />
98
- </B24Sidebar>
181
+ <template v-if="!!slots['content-actions']">
182
+ <!-- Page Actions -->
183
+ <div :class="b24ui.pageActionsWrapper({ class: props.b24ui?.pageActionsWrapper })">
184
+ <slot name="content-actions" :is-loading="isLoading" />
99
185
  </div>
100
186
  </template>
101
- </B24Slideover>
102
- </div>
103
- <div :class="b24ui.headerWrapper({ class: props.b24ui?.headerWrapper })">
104
- <B24Navbar :class="b24ui.headerPaddings({ class: props.b24ui?.headerPaddings })">
105
- <slot name="navbar" />
106
- </B24Navbar>
107
- </div>
108
- </header>
109
187
 
110
- <!-- Page Content -->
111
- <slot name="content-top" />
188
+ <template v-if="!!slots['default']">
189
+ <!-- Page Content -->
190
+ <div
191
+ :data-content="props.useLightContent ? 'use-light' : 'not-set'"
192
+ :class="b24ui.containerWrapper({ class: props.b24ui?.containerWrapper })"
193
+ >
194
+ <div :class="b24ui.containerWrapperInner({ class: props.b24ui?.containerWrapperInner })">
195
+ <slot :is-loading="isLoading" />
196
+ </div>
197
+ </div>
198
+ </template>
199
+ </main>
200
+ </template>
112
201
 
113
- <template v-if="!!slots.default">
114
- <main :class="b24ui.container({ class: props.b24ui?.container })">
115
- <div :class="b24ui.containerWrapper({ class: props.b24ui?.containerWrapper })">
116
- <div :class="b24ui.containerWrapperInner({ class: props.b24ui?.containerWrapperInner })">
117
- <slot />
118
- </div>
202
+ <template v-if="!!slots['content-bottom']">
203
+ <!-- Page Bottom -->
204
+ <div :class="b24ui.pageBottomWrapper({ class: props.b24ui?.pageBottomWrapper })">
205
+ <slot name="content-bottom" :is-loading="isLoading" />
119
206
  </div>
120
- </main>
121
- </template>
122
-
123
- <slot name="content-bottom" />
124
- </Primitive>
207
+ </template>
208
+ </div>
209
+ </primitive>
125
210
  </template>
@@ -1,6 +1,8 @@
1
1
  import type { AppConfig } from '@nuxt/schema';
2
2
  import theme from '#build/b24ui/sidebar-layout';
3
3
  import type { ComponentConfig } from '../types/utils';
4
+ import type { Ref } from 'vue';
5
+ import type { SidebarLayoutApi } from '../composables/useSidebarLayout';
4
6
  type SidebarLayout = ComponentConfig<typeof theme, AppConfig, 'sidebarLayout'>;
5
7
  export interface SidebarLayoutProps {
6
8
  /**
@@ -8,33 +10,84 @@ export interface SidebarLayoutProps {
8
10
  * @defaultValue 'div'
9
11
  */
10
12
  as?: any;
13
+ /**
14
+ * The content is placed on a light background.
15
+ * @defaultValue 'true'
16
+ */
11
17
  useLightContent?: boolean;
18
+ /**
19
+ * Set inner mode. Use in slider, modal and etc
20
+ * @defaultValue 'false'
21
+ */
22
+ isInner?: boolean;
23
+ /**
24
+ * Off scrollbar control of the content area in inner mode.
25
+ * @defaultValue 'false'
26
+ */
27
+ offContentScrollbar?: boolean;
12
28
  class?: any;
13
- b24ui?: SidebarLayout['slots'];
29
+ b24ui?: Pick<SidebarLayout['slots'], 'root' | 'sidebar' | 'sidebarSlideoverContainer' | 'sidebarSlideover' | 'sidebarSlideoverBtnClose' | 'contentWrapper' | 'header' | 'headerMenuIcon' | 'headerWrapper' | 'container' | 'containerWrapper' | 'pageTopWrapper' | 'pageActionsWrapper' | 'containerWrapperInner' | 'pageBottomWrapper' | 'loadingWrapper' | 'loadingIcon'>;
14
30
  }
15
31
  export interface SidebarLayoutSlots {
16
32
  /**
17
- * Menu for all screen sizes.
33
+ * Left menu.
18
34
  * @param props
19
35
  * @param props.handleClick - Handler for navigation click events
36
+ * @param props.isLoading - loading state
20
37
  */
21
38
  'sidebar'(props: {
22
39
  handleClick: () => void;
40
+ isLoading: boolean;
41
+ }): any;
42
+ /**
43
+ * Top menu.
44
+ */
45
+ 'navbar'(props?: {
46
+ handleClick: () => void;
47
+ isLoading: boolean;
23
48
  }): any;
24
49
  /**
25
- * Menu for mobile screen sizes.
50
+ * Content above the page. Used for title, filter, etc.
51
+ */
52
+ 'content-top': (props?: {
53
+ isLoading: boolean;
54
+ }) => any;
55
+ /**
56
+ * Content above the page. Use for show actions.
26
57
  */
27
- 'navbar'(props?: {}): any;
58
+ 'content-actions': (props?: {
59
+ isLoading: boolean;
60
+ }) => any;
28
61
  /**
29
62
  * The page content.
30
63
  */
31
- 'default'(props?: {}): any;
32
- 'content-top': (props?: {}) => any;
33
- 'content-bottom': (props?: {}) => any;
64
+ 'default'(props?: {
65
+ isLoading: boolean;
66
+ }): any;
67
+ /**
68
+ * Content below the page.
69
+ */
70
+ 'content-bottom': (props?: {
71
+ isLoading: boolean;
72
+ }) => any;
73
+ /**
74
+ * Loading state. You need to use `useSidebarLayout` to control it.
75
+ */
76
+ 'loading': (props?: {
77
+ isLoading: boolean;
78
+ }) => any;
79
+ }
80
+ export interface SidebarLayoutInstance {
81
+ api: SidebarLayoutApi;
82
+ isLoading: Readonly<Ref<boolean>>;
83
+ setLoading: (value: boolean) => void;
84
+ setRootLoading: (value: boolean) => void;
34
85
  }
35
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<SidebarLayoutProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SidebarLayoutProps> & Readonly<{}>, {
86
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<SidebarLayoutProps, SidebarLayoutInstance, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SidebarLayoutProps> & Readonly<{}>, {
36
87
  as: any;
88
+ offContentScrollbar: boolean;
37
89
  useLightContent: boolean;
90
+ isInner: boolean;
38
91
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, SidebarLayoutSlots>;
39
92
  export default _default;
40
93
  type __VLS_WithSlots<T, S> = T & {
@@ -11,10 +11,13 @@ export interface SidebarSectionProps {
11
11
  class?: any;
12
12
  b24ui?: SidebarSection['slots'];
13
13
  }
14
+ /**
15
+ * @todo add Pick<Xxxx
16
+ */
14
17
  export interface SidebarSectionSlots {
15
18
  default(props?: {}): any;
16
19
  }
17
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<SidebarSectionProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SidebarSectionProps> & Readonly<{}>, {
20
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<SidebarSectionProps, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SidebarSectionProps> & Readonly<{}>, {
18
21
  as: any;
19
22
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, SidebarSectionSlots>;
20
23
  export default _default;
@@ -11,10 +11,13 @@ export interface SidebarSpacerProps {
11
11
  class?: any;
12
12
  b24ui?: SidebarSpacer['slots'];
13
13
  }
14
+ /**
15
+ * @todo add Pick<Xxxx
16
+ */
14
17
  export interface SidebarSpacerSlots {
15
18
  default(props?: {}): any;
16
19
  }
17
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<SidebarSpacerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SidebarSpacerProps> & Readonly<{}>, {
20
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<SidebarSpacerProps, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SidebarSpacerProps> & Readonly<{}>, {
18
21
  as: any;
19
22
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, SidebarSpacerSlots>;
20
23
  export default _default;
@@ -8,11 +8,15 @@ import { Primitive } from "reka-ui";
8
8
  import { useAppConfig } from "#imports";
9
9
  import { tv } from "../utils/tv";
10
10
  const props = defineProps({
11
+ accent: { type: null, required: false, default: "default" },
11
12
  as: { type: null, required: false },
12
- class: { type: null, required: false }
13
+ class: { type: null, required: false },
14
+ b24ui: { type: null, required: false }
13
15
  });
14
16
  const appConfig = useAppConfig();
15
- const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.skeleton || {} }));
17
+ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.skeleton || {} })({
18
+ accent: props.accent
19
+ }));
16
20
  </script>
17
21
 
18
22
  <template>
@@ -22,7 +26,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.skeleto
22
26
  aria-label="loading"
23
27
  aria-live="polite"
24
28
  role="alert"
25
- :class="b24ui({ class: props.class })"
29
+ :class="b24ui.base({ class: [props.b24ui?.base, props.class] })"
26
30
  >
27
31
  <slot />
28
32
  </Primitive>
@@ -1,12 +1,23 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/b24ui/skeleton';
3
+ import type { ComponentConfig } from '../types/utils';
4
+ type Skeleton = ComponentConfig<typeof theme, AppConfig, 'skeleton'>;
1
5
  export interface SkeletonProps {
6
+ /**
7
+ * @defaultValue 'default'
8
+ */
9
+ accent?: Skeleton['variants']['accent'];
2
10
  /**
3
11
  * The element or component this component should render as.
4
12
  * @defaultValue 'div'
5
13
  */
6
14
  as?: any;
7
15
  class?: any;
16
+ b24ui?: Skeleton['slots'];
8
17
  }
9
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<SkeletonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SkeletonProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
18
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<SkeletonProps, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SkeletonProps> & Readonly<{}>, {
19
+ accent: Skeleton["variants"]["accent"];
20
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
10
21
  default?: (props: {}) => any;
11
22
  }>;
12
23
  export default _default;