@bitrix24/b24ui-nuxt 2.4.2 → 2.5.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.
package/.nuxt/b24ui.css CHANGED
@@ -10,7 +10,8 @@
10
10
  }
11
11
 
12
12
  /* @deprecate This rule is deprecated and will be removed in version 3.0.0 */
13
- .sidebar-layout.--inner {
13
+ .sidebar-layout.--inner,
14
+ .air-custom-bg {
14
15
  background: var(--air-theme-background);
15
16
  }
16
17
  }
package/dist/module.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitrix24/b24ui-nuxt",
3
- "version": "2.4.2",
3
+ "version": "2.5.1",
4
4
  "docs": "https://bitrix24.github.io/b24ui/guide/installation-nuxt-app.html",
5
5
  "configKey": "b24ui",
6
6
  "compatibility": {
package/dist/module.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { defu } from 'defu';
2
2
  import { defineNuxtModule, createResolver, addPlugin, hasNuxtModule, addComponentsDir, addImportsDir, installModule } from '@nuxt/kit';
3
- import { d as defaultOptions, v as version, n as name, a as getDefaultConfig, b as addTemplates } from './shared/b24ui-nuxt.C-GSAtA1.mjs';
3
+ import { d as defaultOptions, v as version, n as name, a as getDefaultConfig, b as addTemplates } from './shared/b24ui-nuxt.DMHr4spo.mjs';
4
4
  import 'node:url';
5
5
  import 'scule';
6
6
  import 'knitwork';
@@ -1 +1 @@
1
- @theme inline{--content-area-left-shift:22px;--air-header-min-height:58px;--air-footer-min-height:76px;--topbar-height:58px;--b24ui-header-height:var(--topbar-height)}@layer components{.air-sidebar{background:var(--air-theme-background-blurred,none)}.clip-path-viewport-wrapper{clip-path:inset(0 -24px -28px -24px round 10px)}.menu-item-horizontal{--menu-item-border-radius:var(--ui-border-radius-sm);--menu-item-border:var(--ui-color-design-selection-stroke);--menu-item-color:var(--menu-item-color-default);--menu-item-color-default:var(--ui-color-design-plain-content);--menu-item-color-active:var(--ui-color-design-selection-content);--menu-item-background:var(--menu-item-background-default);--menu-item-background-default:transparent;--menu-item-background-hover:var(--ui-color-design-plain-na-focused-bg);--menu-item-background-active:var(--ui-color-design-selection-bg);transition:background-color .2s,opacity .2s}.menu-item-horizontal:hover{--menu-item-color-active:var(--ui-color-design-plain-na-focused-content)}.menu-item-horizontal-active{--menu-item-color:var(--menu-item-color-active);--menu-item-background:var(--menu-item-background-active)}.menu-item-vertical{--menu-item-color:var(--menu-item-color-default);--menu-item-color-default:var(--ui-color-design-plain-content);--menu-item-color-active:var(--ui-color-design-selection-content);--menu-item-background:var(--menu-item-background-default);--menu-item-background-default:transparent;--menu-item-background-hover:color-mix(in srgb,var(--menu-item-background) 100%,var(--ui-color-bg-state-hover-default-hex) var(--ui-color-bg-state-hover-default-opacity));--menu-item-background-active:var(--ui-color-design-selection-bg);transition:border-radius .2s ease-in-out,color .15s ease-in-out,background .15s ease-in-out}.menu-item-vertical:hover{transition-duration:.2s,.15s,0s}.menu-item-vertical-active{--menu-item-color:var(--menu-item-color-active);--menu-item-background:var(--menu-item-background-active)}.light .menu-item-vertical{--menu-item-background-active:var(--ui-color-design-filled-bg);--menu-item-color-active:var(--ui-color-base-white-fixed)}.light .menu-item-vertical-active{--menu-item-background:var(--ui-color-design-filled-bg);--menu-item-color:var(--ui-color-base-white-fixed)}.light,:root{--menu-item-block-stack-space:4px;--menu-width-expanded:240px;--menu-width-collapsed:66px;--menu-items-block-padding-x:14px;--menu-item-border-radius:var(--ui-border-radius-md);--leftmenu-bg:var(--ui-color-bg-content-secondary);--leftmenu-bg-expanded:var(--ui-color-bg-content-secondary);--leftmenu-bg-stroke:#fff;--leftmenu-bg-stroke-expanded:#fff;--leftmenu-bg-overlayed:rgba(33,51,76,.94);--leftmenu-bg-blur:0px;--leftmenu-bg-blur-expanded:0px;--leftmenu-width:66px;--leftmenu-width-expanded:240px;--leftmenu-bg-divider:var(--ui-color-divider-default);--leftmenu-group-bg:transparent;--leftmenu-group-stroke:var(--ui-color-divider-default);--leftmenu-group-stroke-weight:var(--ui-border-width-thin)}.dark{--leftmenu-bg:#262626;--leftmenu-bg-expanded:#262626;--leftmenu-bg-stroke:#3b3b3b;--leftmenu-bg-stroke-expanded:#3b3b3b;--leftmenu-bg-overlayed:rgba(52,74,103,.94);--leftmenu-bg-blur:0px;--leftmenu-bg-blur-expanded:0px;--leftmenu-bg-divider:var(--ui-color-divider-default);--leftmenu-group-bg:transparent;--leftmenu-group-stroke:var(--ui-color-divider-default);--leftmenu-group-stroke-weight:var(--ui-border-width-thin)}.edge-light{--leftmenu-bg:rgb(0 0 0/3%);--leftmenu-bg-expanded:rgb(0 0 0/2%);--leftmenu-bg-stroke:transparent;--leftmenu-bg-stroke-expanded:rgb(0 0 0/4%);--leftmenu-bg-overlayed:rgba(33,51,76,.94);--leftmenu-bg-blur:var(--ui-bg-blur-less);--leftmenu-bg-blur-expanded:var(--ui-bg-blur-less);--leftmenu-width:66px;--leftmenu-width-expanded:240px;--leftmenu-bg-divider:rgba(0,0,0,.1);--leftmenu-group-bg:var(--ui-color-bg-content-tertiary,rgb(0 0 0/3%));--leftmenu-group-stroke:var(--ui-color-divider-less);--leftmenu-group-stroke-weight:var(--ui-border-width-thin)}.edge-dark{--leftmenu-bg:hsla(0,0%,100%,.06);--leftmenu-bg-expanded:hsla(0,0%,100%,.03);--leftmenu-bg-stroke:transparent;--leftmenu-bg-stroke-expanded:hsla(0,0%,100%,.06);--leftmenu-bg-overlayed:rgba(33,51,76,.94);--leftmenu-bg-blur:var(--ui-bg-blur-less);--leftmenu-bg-blur-expanded:var(--ui-bg-blur-less);--leftmenu-width:66px;--leftmenu-width-expanded:240px;--leftmenu-bg-divider:hsla(0,0%,100%,.1);--leftmenu-group-bg:var(--ui-color-bg-content-tertiary,hsla(0,0%,100%,.08));--leftmenu-group-stroke:var(--ui-color-divider-less);--leftmenu-group-stroke-weight:var(--ui-border-width-thin)}.air-header,.light .air-header{--topbar-bg:var(--ui-color-bg-content-secondary);--topbar-bg-stroke:var(--ui-color-bg-content-primary);--topbar-bg-stroke-weight:0;--topbar-bg-blur:0px}.dark .air-header{--topbar-bg:#2d2d2d;--topbar-bg-stroke:#3d3d3d;--topbar-bg-stroke-weight:0;--topbar-bg-blur:0px}.edge-dark .air-header{--topbar-bg:hsla(0,0%,100%,.1);--topbar-bg-stroke:transparent;--topbar-bg-stroke-weight:0px;--topbar-bg-blur:var(--ui-bg-blur-less)}.edge-light .air-header{--topbar-bg:rgba(0,0,0,.05);--topbar-bg-stroke:transparent;--topbar-bg-stroke-weight:0px;--topbar-bg-blur:var(--ui-bg-blur-less)}.air-header:before{background:linear-gradient(to right,var(--topbar-bg),var(--topbar-bg)),var(--air-theme-background-blurred,none);bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:-1}}
1
+ @theme inline{--content-area-left-shift:22px;--air-header-min-height:58px;--air-footer-min-height:76px;--topbar-height:58px;--b24ui-header-height:var(--topbar-height)}@layer components{.air-sidebar{background:var(--air-theme-background-blurred,none)}.clip-path-viewport-wrapper{clip-path:inset(0 -24px -28px -24px round 10px)}.menu-item-horizontal{--menu-item-border-radius:var(--ui-border-radius-sm);--menu-item-border:var(--ui-color-design-selection-stroke);--menu-item-color:var(--menu-item-color-default);--menu-item-color-default:var(--ui-color-design-plain-content);--menu-item-color-active:var(--ui-color-design-selection-content);--menu-item-background:var(--menu-item-background-default);--menu-item-background-default:transparent;--menu-item-background-hover:var(--ui-color-design-plain-na-focused-bg);--menu-item-background-active:var(--ui-color-design-selection-bg);transition:background-color .2s,opacity .2s}.menu-item-horizontal:hover{--menu-item-color-active:var(--ui-color-design-plain-na-focused-content)}.menu-item-horizontal-active{--menu-item-color:var(--menu-item-color-active);--menu-item-background:var(--menu-item-background-active)}.menu-item-vertical{--menu-item-color:var(--menu-item-color-default);--menu-item-color-default:var(--ui-color-design-plain-content);--menu-item-color-active:var(--ui-color-design-selection-content);--menu-item-background:var(--menu-item-background-default);--menu-item-background-default:transparent;--menu-item-background-hover:color-mix(in srgb,var(--menu-item-background) 100%,var(--ui-color-bg-state-hover-default-hex) var(--ui-color-bg-state-hover-default-opacity));--menu-item-background-active:var(--ui-color-design-selection-bg);transition:border-radius .2s ease-in-out,color .15s ease-in-out,background .15s ease-in-out}.menu-item-vertical:hover{transition-duration:.2s,.15s,0s}.menu-item-vertical-active{--menu-item-color:var(--menu-item-color-active);--menu-item-background:var(--menu-item-background-active)}.light .menu-item-vertical{--menu-item-background-active:var(--ui-color-design-filled-bg);--menu-item-color-active:var(--ui-color-base-white-fixed);transition:color .17s}.light .menu-item-vertical:hover{transition-duration:0s}.light .menu-item-vertical-active{--menu-item-background:var(--ui-color-design-filled-bg);--menu-item-color:var(--ui-color-base-white-fixed)}.light,:root{--menu-item-block-stack-space:4px;--menu-width-expanded:240px;--menu-width-collapsed:66px;--menu-items-block-padding-x:14px;--menu-item-border-radius:var(--ui-border-radius-md);--leftmenu-bg:var(--ui-color-bg-content-secondary);--leftmenu-bg-expanded:var(--ui-color-bg-content-secondary);--leftmenu-bg-stroke:#fff;--leftmenu-bg-stroke-expanded:#fff;--leftmenu-bg-overlayed:rgba(33,51,76,.94);--leftmenu-bg-blur:0px;--leftmenu-bg-blur-expanded:0px;--leftmenu-width:66px;--leftmenu-width-expanded:240px;--leftmenu-bg-divider:var(--ui-color-divider-default);--leftmenu-group-bg:transparent;--leftmenu-group-stroke:var(--ui-color-divider-default);--leftmenu-group-stroke-weight:var(--ui-border-width-thin)}.dark{--leftmenu-bg:#262626;--leftmenu-bg-expanded:#262626;--leftmenu-bg-stroke:#3b3b3b;--leftmenu-bg-stroke-expanded:#3b3b3b;--leftmenu-bg-overlayed:rgba(52,74,103,.94);--leftmenu-bg-blur:0px;--leftmenu-bg-blur-expanded:0px;--leftmenu-bg-divider:var(--ui-color-divider-default);--leftmenu-group-bg:transparent;--leftmenu-group-stroke:var(--ui-color-divider-default);--leftmenu-group-stroke-weight:var(--ui-border-width-thin)}.edge-light{--leftmenu-bg:rgb(0 0 0/3%);--leftmenu-bg-expanded:rgb(0 0 0/2%);--leftmenu-bg-stroke:transparent;--leftmenu-bg-stroke-expanded:rgb(0 0 0/4%);--leftmenu-bg-overlayed:rgba(33,51,76,.94);--leftmenu-bg-blur:var(--ui-bg-blur-less);--leftmenu-bg-blur-expanded:var(--ui-bg-blur-less);--leftmenu-width:66px;--leftmenu-width-expanded:240px;--leftmenu-bg-divider:rgba(0,0,0,.1);--leftmenu-group-bg:var(--ui-color-bg-content-tertiary,rgb(0 0 0/3%));--leftmenu-group-stroke:var(--ui-color-divider-less);--leftmenu-group-stroke-weight:var(--ui-border-width-thin)}.edge-dark{--leftmenu-bg:hsla(0,0%,100%,.06);--leftmenu-bg-expanded:hsla(0,0%,100%,.03);--leftmenu-bg-stroke:transparent;--leftmenu-bg-stroke-expanded:hsla(0,0%,100%,.06);--leftmenu-bg-overlayed:rgba(33,51,76,.94);--leftmenu-bg-blur:var(--ui-bg-blur-less);--leftmenu-bg-blur-expanded:var(--ui-bg-blur-less);--leftmenu-width:66px;--leftmenu-width-expanded:240px;--leftmenu-bg-divider:hsla(0,0%,100%,.1);--leftmenu-group-bg:var(--ui-color-bg-content-tertiary,hsla(0,0%,100%,.08));--leftmenu-group-stroke:var(--ui-color-divider-less);--leftmenu-group-stroke-weight:var(--ui-border-width-thin)}.air-header,.light .air-header{--topbar-bg:var(--ui-color-bg-content-secondary);--topbar-bg-stroke:var(--ui-color-bg-content-primary);--topbar-bg-stroke-weight:0;--topbar-bg-blur:0px}.dark .air-header{--topbar-bg:#2d2d2d;--topbar-bg-stroke:#3d3d3d;--topbar-bg-stroke-weight:0;--topbar-bg-blur:0px}.edge-dark .air-header{--topbar-bg:hsla(0,0%,100%,.1);--topbar-bg-stroke:transparent;--topbar-bg-stroke-weight:0px;--topbar-bg-blur:var(--ui-bg-blur-less)}.edge-light .air-header{--topbar-bg:rgba(0,0,0,.05);--topbar-bg-stroke:transparent;--topbar-bg-stroke-weight:0px;--topbar-bg-blur:var(--ui-bg-blur-less)}.air-header:before{background:linear-gradient(to right,var(--topbar-bg),var(--topbar-bg)),var(--air-theme-background-blurred,none);bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:-1}}
@@ -76,7 +76,7 @@ const menuProps = toRef(() => defu(props.menu, {
76
76
  content: {
77
77
  onOpenAutoFocus: (e) => e.preventDefault()
78
78
  }
79
- }, props.mode === "modal" ? { fullscreen: true, transition: false } : props.mode === "slideover" ? { side: "left" } : {}));
79
+ }, props.mode === "modal" ? { fullscreen: true, transition: false } : props.mode === "slideover" ? { side: "left", close: false } : {}));
80
80
  function toggleOpen() {
81
81
  open.value = !open.value;
82
82
  }
@@ -60,11 +60,6 @@ export interface SlideoverProps extends DialogRootProps {
60
60
  * @defaultValue false
61
61
  */
62
62
  dismissible?: boolean;
63
- /**
64
- * The content is placed on a light background.
65
- * @defaultValue 'true'
66
- */
67
- useLightContent?: boolean;
68
63
  class?: any;
69
64
  b24ui?: Slideover['slots'];
70
65
  }
@@ -80,12 +75,6 @@ export interface SlideoverSlots {
80
75
  content?(props: {
81
76
  close: () => void;
82
77
  }): VNode[];
83
- sidebar?(props: {
84
- close: () => void;
85
- }): VNode[];
86
- navbar?(props: {
87
- close: () => void;
88
- }): VNode[];
89
78
  header?(props: {
90
79
  close: () => void;
91
80
  }): VNode[];
@@ -118,7 +107,6 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<Slideo
118
107
  close: boolean | Omit<ButtonProps, LinkPropsKeys>;
119
108
  side: Slideover["variants"]["side"];
120
109
  overlay: boolean;
121
- useLightContent: boolean;
122
110
  transition: boolean;
123
111
  modal: boolean;
124
112
  portal: boolean | string | HTMLElement;
@@ -14,7 +14,6 @@ import { pointerDownOutside } from "../utils/overlay";
14
14
  import { tv } from "../utils/tv";
15
15
  import icons from "../dictionary/icons";
16
16
  import B24Button from "./Button.vue";
17
- import B24SidebarLayout from "./SidebarLayout.vue";
18
17
  const props = defineProps({
19
18
  title: { type: String, required: false },
20
19
  description: { type: String, required: false },
@@ -28,7 +27,6 @@ const props = defineProps({
28
27
  close: { type: [Boolean, Object], required: false, default: true },
29
28
  closeIcon: { type: [Function, Object], required: false },
30
29
  dismissible: { type: Boolean, required: false, default: true },
31
- useLightContent: { type: Boolean, required: false, default: true },
32
30
  class: { type: null, required: false },
33
31
  b24ui: { type: Object, required: false },
34
32
  open: { type: Boolean, required: false },
@@ -104,103 +102,80 @@ const isBtnCloseExternal = computed(() => !props.inset && ["left", "right", "bot
104
102
  </DialogDescription>
105
103
  </VisuallyHidden>
106
104
 
107
- <slot name="content" :close="close">
108
- <template v-if="isBtnCloseExternal">
109
- <DialogClose v-if="props.close || !!slots.close" as-child>
110
- <slot name="close" :b24ui="b24ui">
111
- <!-- @todo fix this css -->
112
- <B24Button
113
- v-if="props.close"
114
- :icon="closeIcon || icons.close"
115
- class="group"
116
- color="air-primary"
117
- :aria-label="t('slideover.close')"
118
- size="lg"
119
- :b24ui="{
120
- baseLine: 'ps-[4px] pe-[4px]',
105
+ <template v-if="isBtnCloseExternal && (props.close || !!slots.close)">
106
+ <DialogClose as-child>
107
+ <slot name="close" :b24ui="b24ui">
108
+ <B24Button
109
+ v-if="props.close"
110
+ :icon="closeIcon || icons.close"
111
+ class="group"
112
+ color="air-primary"
113
+ :aria-label="t('slideover.close')"
114
+ size="lg"
115
+ :b24ui="{
116
+ baseLine: 'ps-1 pe-1',
121
117
  label: 'hidden sm:flex'
122
118
  }"
123
- v-bind="typeof props.close === 'object' ? props.close : {}"
124
- data-slot="close"
125
- :class="b24ui.close({ class: uiProp?.close })"
126
- />
127
- </slot>
128
- </DialogClose>
129
- </template>
130
- <B24SidebarLayout
131
- :use-light-content="props.useLightContent"
132
- is-inner
133
- :b24ui="{
134
- root: b24ui.sidebarLayoutRoot({ class: uiProp?.sidebarLayoutRoot }),
135
- header: b24ui.sidebarLayoutHeaderWrapper({ class: uiProp?.sidebarLayoutHeaderWrapper }),
136
- pageWrapper: b24ui.sidebarLayoutPageWrapper({ class: uiProp?.sidebarLayoutPageWrapper }),
137
- container: b24ui.sidebarLayoutContainer({ class: uiProp?.sidebarLayoutContainer }),
138
- pageBottomWrapper: b24ui.sidebarLayoutPageBottomWrapper({ class: uiProp?.sidebarLayoutPageBottomWrapper }),
139
- loadingWrapper: b24ui.sidebarLayoutLoadingWrapper({ class: uiProp?.sidebarLayoutLoadingWrapper }),
140
- loadingIcon: b24ui.sidebarLayoutLoadingIcon({ class: uiProp?.sidebarLayoutLoadingIcon })
141
- }"
142
- >
143
- <template v-if="!!slots['sidebar']" #sidebar>
144
- <slot name="sidebar" :close="close" />
145
- </template>
146
-
147
- <template v-if="!!slots['navbar']" #navbar>
148
- <slot name="navbar" :close="close" />
149
- </template>
119
+ v-bind="typeof props.close === 'object' ? props.close : {}"
120
+ data-slot="close"
121
+ :class="b24ui.close({ class: uiProp?.close })"
122
+ />
123
+ </slot>
124
+ </DialogClose>
125
+ </template>
150
126
 
151
- <template v-if="!!slots.header || (title || !!slots.title) || (description || !!slots.description) || !isBtnCloseExternal && (props.close || !!slots.close)" #content-top>
152
- <div data-slot="header" :class="b24ui.header({ class: uiProp?.header })">
153
- <slot name="header" :close="close">
154
- <div data-slot="wrapper" :class="b24ui.wrapper({ class: uiProp?.wrapper })">
155
- <DialogTitle v-if="title || !!slots.title" data-slot="title" :class="b24ui.title({ class: uiProp?.title })">
156
- <slot name="title">
157
- {{ title }}
158
- </slot>
159
- </DialogTitle>
127
+ <slot name="content" :close="close">
128
+ <div
129
+ v-if="!!slots.header || (title || !!slots.title) || (description || !!slots.description) || !isBtnCloseExternal && (props.close || !!slots.close)"
130
+ data-slot="header"
131
+ :class="b24ui.header({ class: uiProp?.header })"
132
+ >
133
+ <slot name="header" :close="close">
134
+ <div data-slot="wrapper" :class="b24ui.wrapper({ class: uiProp?.wrapper })">
135
+ <DialogTitle v-if="title || !!slots.title" data-slot="title" :class="b24ui.title({ class: uiProp?.title })">
136
+ <slot name="title">
137
+ {{ title }}
138
+ </slot>
139
+ </DialogTitle>
160
140
 
161
- <DialogDescription v-if="description || !!slots.description" data-slot="description" :class="b24ui.description({ class: uiProp?.description })">
162
- <slot name="description">
163
- {{ description }}
164
- </slot>
165
- </DialogDescription>
166
- </div>
167
- <template v-if="!isBtnCloseExternal && (props.close || !!slots.close)">
168
- <DialogClose v-if="props.close || !!slots.close" as-child>
169
- <slot name="close" :b24ui="b24ui">
170
- <B24Button
171
- v-if="props.close"
172
- :icon="closeIcon || icons.close"
173
- class="group"
174
- color="air-tertiary-no-accent"
175
- :aria-label="t('slideover.close')"
176
- size="lg"
177
- v-bind="typeof props.close === 'object' ? props.close : {}"
178
- data-slot="close"
179
- :class="b24ui.close({ class: uiProp?.close })"
180
- />
181
- </slot>
182
- </DialogClose>
183
- </template>
184
- </slot>
141
+ <DialogDescription v-if="description || !!slots.description" data-slot="description" :class="b24ui.description({ class: uiProp?.description })">
142
+ <slot name="description">
143
+ {{ description }}
144
+ </slot>
145
+ </DialogDescription>
185
146
  </div>
186
- </template>
187
147
 
188
- <template v-if="!!slots['actions']" #content-actions>
189
148
  <slot name="actions" />
190
- </template>
191
149
 
192
- <template v-if="!!slots['body']" #default>
193
- <div data-slot="body" :class="b24ui.body({ class: uiProp?.body })">
194
- <slot name="body" :close="close" />
195
- </div>
196
- </template>
150
+ <template v-if="!isBtnCloseExternal && (props.close || !!slots.close)">
151
+ <DialogClose v-if="props.close || !!slots.close" as-child>
152
+ <slot name="close" :b24ui="b24ui">
153
+ <B24Button
154
+ v-if="props.close"
155
+ :icon="closeIcon || icons.close"
156
+ class="group"
157
+ color="air-tertiary-no-accent"
158
+ :aria-label="t('slideover.close')"
159
+ size="lg"
160
+ v-bind="typeof props.close === 'object' ? props.close : {}"
161
+ data-slot="close"
162
+ :class="b24ui.close({ class: uiProp?.close })"
163
+ />
164
+ </slot>
165
+ </DialogClose>
166
+ </template>
167
+ </slot>
168
+ </div>
197
169
 
198
- <template v-if="!!slots.footer" #content-bottom>
199
- <div data-slot="footer" :class="b24ui.footer({ class: uiProp?.footer })">
200
- <slot name="footer" :close="close" />
201
- </div>
202
- </template>
203
- </B24SidebarLayout>
170
+ <template v-if="!!slots['body']">
171
+ <div data-slot="body" :class="b24ui.body({ class: uiProp?.body })">
172
+ <slot name="body" :close="close" />
173
+ </div>
174
+ </template>
175
+
176
+ <div v-if="!!slots.footer" data-slot="footer" :class="b24ui.footer({ class: uiProp?.footer })">
177
+ <slot name="footer" :close="close" />
178
+ </div>
204
179
  </slot>
205
180
  </DialogContent>
206
181
  </DialogPortal>
@@ -60,11 +60,6 @@ export interface SlideoverProps extends DialogRootProps {
60
60
  * @defaultValue false
61
61
  */
62
62
  dismissible?: boolean;
63
- /**
64
- * The content is placed on a light background.
65
- * @defaultValue 'true'
66
- */
67
- useLightContent?: boolean;
68
63
  class?: any;
69
64
  b24ui?: Slideover['slots'];
70
65
  }
@@ -80,12 +75,6 @@ export interface SlideoverSlots {
80
75
  content?(props: {
81
76
  close: () => void;
82
77
  }): VNode[];
83
- sidebar?(props: {
84
- close: () => void;
85
- }): VNode[];
86
- navbar?(props: {
87
- close: () => void;
88
- }): VNode[];
89
78
  header?(props: {
90
79
  close: () => void;
91
80
  }): VNode[];
@@ -118,7 +107,6 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<Slideo
118
107
  close: boolean | Omit<ButtonProps, LinkPropsKeys>;
119
108
  side: Slideover["variants"]["side"];
120
109
  overlay: boolean;
121
- useLightContent: boolean;
122
110
  transition: boolean;
123
111
  modal: boolean;
124
112
  portal: boolean | string | HTMLElement;
@@ -1 +1 @@
1
- @import "#build/b24ui.css";@import "./keyframes.css";@import "./air-design-tokens/tw-style/index.css";@import "./air-design-tokens/index.css";@variant light (&:where(.light, .light *));@variant edge-dark (&:where(.edge-dark, .edge-dark *));@variant edge-light (&:where(.edge-light, .edge-light *));@variant dark (&:where(.dark, .dark *));@variant bitrix-mobile (&:where(html[data-platform="bitrix-mobile"] *));@variant bitrix-desktop (&:where(html[data-platform="bitrix-desktop"] *));@layer base{.sidebar-layout.--inner,body{--air-theme-background:var(--air-theme-bg-image,none) var(--air-theme-bg-position,0 0) /var(--air-theme-bg-size,auto) var(--air-theme-bg-repeat,repeat) var(--air-theme-bg-attachment,scroll) var(--air-theme-bg-color,transparent);--air-theme-background-blurred:var(--air-theme-bg-image-blurred,none) var(--air-theme-bg-position,0 0) /var(--air-theme-bg-size,auto) var(--air-theme-bg-repeat,repeat) var(--air-theme-bg-attachment,scroll)}}@layer theme{:host,:root{--b24ui-header-height:--spacing(14.5)}}@theme default inline{--text-color-dimmed:var(--ui-color-base-6);--text-color-muted:var(--ui-color-design-plain-na-content-secondary);--text-color-description:var(--b24ui-typography-description-color);--text-color-legend:var(--b24ui-typography-legend-color);--text-color-label:var(--b24ui-typography-label-color)}
1
+ @import "#build/b24ui.css";@import "./keyframes.css";@import "./air-design-tokens/tw-style/index.css";@import "./air-design-tokens/index.css";@variant light (&:where(.light, .light *));@variant edge-dark (&:where(.edge-dark, .edge-dark *));@variant edge-light (&:where(.edge-light, .edge-light *));@variant dark (&:where(.dark, .dark *));@variant bitrix-mobile (&:where(html[data-platform="bitrix-mobile"] *));@variant bitrix-desktop (&:where(html[data-platform="bitrix-desktop"] *));@layer base{.air-custom-bg,.sidebar-layout.--inner,body{--air-theme-background:var(--air-theme-bg-image,none) var(--air-theme-bg-position,0 0) /var(--air-theme-bg-size,auto) var(--air-theme-bg-repeat,repeat) var(--air-theme-bg-attachment,scroll) var(--air-theme-bg-color,transparent);--air-theme-background-blurred:var(--air-theme-bg-image-blurred,none) var(--air-theme-bg-position,0 0) /var(--air-theme-bg-size,auto) var(--air-theme-bg-repeat,repeat) var(--air-theme-bg-attachment,scroll)}}@layer theme{:host,:root{--b24ui-header-height:--spacing(14.5)}}@theme default inline{--text-color-dimmed:var(--ui-color-base-6);--text-color-muted:var(--ui-color-design-plain-na-content-secondary);--text-color-description:var(--b24ui-typography-description-color);--text-color-legend:var(--b24ui-typography-legend-color);--text-color-label:var(--b24ui-typography-label-color)}
@@ -8,7 +8,7 @@ import { globSync } from 'tinyglobby';
8
8
  import { defuFn } from 'defu';
9
9
 
10
10
  const name = "@bitrix24/b24ui-nuxt";
11
- const version = "2.4.2";
11
+ const version = "2.5.1";
12
12
 
13
13
  function getDefaultConfig(theme) {
14
14
  return {
@@ -2876,7 +2876,7 @@ const dashboardNavbar = {
2876
2876
  const dashboardPanel = {
2877
2877
  slots: {
2878
2878
  root: "relative flex flex-col min-w-0 min-h-svh lg:not-last:border-e lg:not-last:border-e-0 lg:not-last:border-(--ui-color-divider-default) shrink-0",
2879
- body: "flex flex-col gap-4 sm:gap-6 flex-1 overflow-y-auto sm:p-4 sm:pt-0 scrollbar-thin",
2879
+ body: "flex flex-col gap-4 flex-1 overflow-y-auto sm:p-4 sm:pt-0 scrollbar-thin",
2880
2880
  handle: ""
2881
2881
  },
2882
2882
  variants: {
@@ -2946,9 +2946,9 @@ const dashboardSidebar = {
2946
2946
  "light:bg-transparent light:[--leftmenu-group-stroke:var(--ui-color-base-30)]"
2947
2947
  ].join(" "),
2948
2948
  header: "h-(--b24ui-header-height) shrink-0 flex items-center gap-1.5 ps-4 pe-4",
2949
- body: "flex flex-col gap-4 flex-1 overflow-y-auto ps-4 pe-4 py-2 scrollbar-thin scrollbar-transparent",
2949
+ body: "flex flex-col gap-4 flex-1 overflow-y-auto py-2 ps-4 pe-4 md:pe-2 scrollbar-thin scrollbar-transparent",
2950
2950
  footer: [
2951
- "shrink-0 flex items-center gap-1.5 ps-4 pe-4 py-2",
2951
+ "shrink-0 flex items-center gap-1.5 py-2 ps-4 pe-4",
2952
2952
  "lg:border-t lg:border-(--ui-color-divider-default)",
2953
2953
  "light:lg:border-(--ui-color-base-30)"
2954
2954
  ].join(" "),
@@ -6036,7 +6036,10 @@ const navigationMenu = {
6036
6036
  "border border-(--menu-item-background) hover:border-(--ui-color-design-plain-na-focused-stroke) data-[state=open]:bg-(--ui-color-design-plain-na-focused-stroke)",
6037
6037
  "bitrix-mobile:px-3",
6038
6038
  "bitrix-mobile:h-[34px] bitrix-mobile:min-h-[34px]",
6039
- "bitrix-mobile:text-(--ui-color-base-4) bitrix-mobile:border-(--ui-color-base-7)"
6039
+ "bitrix-mobile:text-(--ui-color-base-4) bitrix-mobile:border-(--ui-color-base-7)",
6040
+ "bitrix-mobile:leading-6 bitrix-mobile:text-(length:--ui-font-size-md)",
6041
+ // @memo This is a temporary solution until we connect the required font.
6042
+ "bitrix-mobile:scale-x-[0.92]"
6040
6043
  ].join(" "),
6041
6044
  linkTrailingIcon: "size-[16px]",
6042
6045
  linkLeadingBadge: "-top-[6px] -right-[14px] -translate-x-1/2",
@@ -6103,11 +6106,7 @@ const navigationMenu = {
6103
6106
  },
6104
6107
  active: {
6105
6108
  true: {
6106
- /**
6107
- * @memo Special color for `light` mode - see b24.settings.
6108
- * @see src/runtime/air-design-tokens/components/navigation-menu.css
6109
- */
6110
- link: "light:font-semibold",
6109
+ link: "",
6111
6110
  childLink: [
6112
6111
  "text-(--ui-color-accent-main-primary)",
6113
6112
  "hover:text-(--ui-color-accent-main-primary)"
@@ -6148,7 +6147,7 @@ const navigationMenu = {
6148
6147
  collapsed: false,
6149
6148
  class: {
6150
6149
  item: "data-[state=open]:bg-(--leftmenu-group-bg)",
6151
- childList: "",
6150
+ childList: "mb-0.5",
6152
6151
  childItem: "",
6153
6152
  content: "motion-safe:data-[state=open]:animate-[collapsible-down_200ms_ease-out] motion-safe:data-[state=closed]:animate-[collapsible-up_200ms_ease-out] overflow-hidden",
6154
6153
  linkLabel: "ms-[9px]"
@@ -8299,25 +8298,35 @@ const safeList = [
8299
8298
  const slideover = {
8300
8299
  slots: {
8301
8300
  overlay: "fixed inset-0 bg-linear-to-b from-[#00204e]/52 to-[#00204e]",
8302
- //
8303
8301
  content: [
8302
+ "base-mode",
8304
8303
  "fixed",
8304
+ "bg-(--ui-color-gray-05) dark:bg-(--ui-color-base-black-fixed)",
8305
8305
  "sm:shadow-lg",
8306
8306
  "flex flex-col focus:outline-none",
8307
8307
  "h-full"
8308
8308
  ].join(" "),
8309
- sidebarLayoutRoot: "relative",
8310
- sidebarLayoutHeaderWrapper: "relative",
8311
- sidebarLayoutPageWrapper: "min-h-full pb-[calc(53px_+_10px)] px-[20px] ps-[20px] pe-[20px] pb-[20px] overflow-y-auto scrollbar-thin",
8312
- sidebarLayoutContainer: "gap-[22px]",
8313
- sidebarLayoutPageBottomWrapper: "relative",
8314
- sidebarLayoutLoadingWrapper: "",
8315
- sidebarLayoutLoadingIcon: "",
8316
8309
  header: [
8317
- "pt-[24px]",
8318
- "flex-1 flex items-center gap-x-[12px] gap-y-1.5"
8310
+ "py-[20px] px-[20px]",
8311
+ "flex items-center gap-x-[12px] gap-y-1.5",
8312
+ "overflow-hidden"
8319
8313
  ].join(" "),
8320
8314
  wrapper: "min-h-[30px]",
8315
+ body: [
8316
+ "size-full",
8317
+ "flex-1 overflow-y-auto pb-2.5 px-[20px]"
8318
+ ].join(" "),
8319
+ footer: [
8320
+ "absolute inset-x-0 bottom-0",
8321
+ "base-mode",
8322
+ "bg-(--ui-color-bg-content-primary)",
8323
+ "flex items-center justify-center gap-2.5",
8324
+ //
8325
+ "border-t border-t-1 border-t-(--ui-color-divider-less)",
8326
+ "shadow-top-md",
8327
+ "py-[13px] px-[13px]"
8328
+ // pr-(--scrollbar-width)
8329
+ ].join(" "),
8321
8330
  title: [
8322
8331
  "font-[family-name:var(--ui-font-family-primary)]",
8323
8332
  "text-(--b24ui-typography-label-color)",
@@ -8331,26 +8340,12 @@ const slideover = {
8331
8340
  "text-(length:--ui-font-size-sm)"
8332
8341
  ].join(" "),
8333
8342
  close: "absolute",
8334
- body: [
8335
- "size-full",
8336
- "flex-1"
8337
- ].join(" "),
8338
- footer: [
8339
- "absolute inset-x-0 bottom-0",
8340
- "bg-(--ui-color-bg-content-primary)",
8341
- // --ui-color-bg-content-primary
8342
- "flex items-center justify-center gap-3",
8343
- "border-t border-t-1 border-t-(--ui-color-divider-less)",
8344
- "shadow-top-md",
8345
- "py-[9px] px-2 pr-(--scrollbar-width)"
8346
- ].join(" "),
8347
8343
  safeList
8348
8344
  },
8349
8345
  variants: {
8350
8346
  useFooter: {
8351
8347
  true: {
8352
- sidebarLayoutPageWrapper: "mb-[calc(53px)] min-h-[calc(100vh_-_53px)]"
8353
- // -_18px
8348
+ body: "mb-[64px]"
8354
8349
  }
8355
8350
  },
8356
8351
  overlayBlur: {
@@ -8365,34 +8360,24 @@ const slideover = {
8365
8360
  }
8366
8361
  },
8367
8362
  side: {
8368
- // @todo fix if parent SidebarLayout.isUseSideBar > w-[calc(100%-135x)] > w-[calc(100%-150px)]
8369
8363
  top: {
8370
- content: "",
8371
- // 'sm:rounded-t-none'
8372
- sidebarLayoutRoot: ""
8373
- // sm:rounded-t-none
8364
+ content: ""
8374
8365
  },
8375
8366
  right: {
8376
- content: "",
8377
- // sm:rounded-t-none
8378
- sidebarLayoutRoot: ""
8367
+ content: ""
8379
8368
  // sm:rounded-t-none
8380
8369
  },
8381
8370
  bottom: {
8382
- content: "",
8383
- sidebarLayoutRoot: ""
8371
+ content: ""
8384
8372
  },
8385
8373
  left: {
8386
- content: "",
8387
- // sm:rounded-t-none
8388
- sidebarLayoutRoot: ""
8374
+ content: ""
8389
8375
  // sm:rounded-t-none
8390
8376
  }
8391
8377
  },
8392
8378
  inset: {
8393
8379
  true: {
8394
- content: "rounded-[18px]",
8395
- sidebarLayoutRoot: "rounded-[18px]"
8380
+ content: "rounded-4.5"
8396
8381
  }
8397
8382
  },
8398
8383
  transition: {
@@ -8410,13 +8395,12 @@ const slideover = {
8410
8395
  content: "max-h-[calc(100%-2rem)] inset-x-4 top-4"
8411
8396
  }
8412
8397
  },
8398
+ // @todo remove this ?
8413
8399
  {
8414
8400
  side: "top",
8415
8401
  inset: true,
8416
8402
  useFooter: true,
8417
- class: {
8418
- sidebarLayoutPageWrapper: "min-h-[calc(100vh_-_53px-2rem)]"
8419
- }
8403
+ class: {}
8420
8404
  },
8421
8405
  {
8422
8406
  side: "top",
@@ -8432,13 +8416,12 @@ const slideover = {
8432
8416
  content: "w-[calc(100%-2rem)] max-h-[calc(100%-2rem)] inset-y-4 right-4 "
8433
8417
  }
8434
8418
  },
8419
+ // @todo remove this ?
8435
8420
  {
8436
8421
  side: "right",
8437
8422
  inset: true,
8438
8423
  useFooter: true,
8439
- class: {
8440
- sidebarLayoutPageWrapper: "min-h-[calc(100vh_-_53px-2rem)]"
8441
- }
8424
+ class: {}
8442
8425
  },
8443
8426
  {
8444
8427
  side: "right",
@@ -8451,18 +8434,15 @@ const slideover = {
8451
8434
  side: "bottom",
8452
8435
  inset: true,
8453
8436
  class: {
8454
- content: [
8455
- "max-h-[calc(100%-2rem)] w-[calc(100%-2rem)] end-4 bottom-4"
8456
- ].join(" ")
8437
+ content: "max-h-[calc(100%-2rem)] w-[calc(100%-2rem)] end-4 bottom-4"
8457
8438
  }
8458
8439
  },
8440
+ // @todo remove this ?
8459
8441
  {
8460
8442
  side: "bottom",
8461
8443
  inset: true,
8462
8444
  useFooter: true,
8463
- class: {
8464
- sidebarLayoutPageWrapper: "min-h-[calc(100vh_-_53px_-_2rem)]"
8465
- }
8445
+ class: {}
8466
8446
  },
8467
8447
  {
8468
8448
  side: "bottom",
@@ -8472,8 +8452,7 @@ const slideover = {
8472
8452
  "max-h-full sm:max-h-[calc(100%-18px)] right-[5px] top-0 sm:top-[18px] bottom-0",
8473
8453
  "w-[calc(100%-60px-5px)] sm:w-[calc(100%-150px-70px)]",
8474
8454
  "sm:rounded-t-[18px]"
8475
- ].join(" "),
8476
- sidebarLayoutRoot: "sm:rounded-t-[18px]"
8455
+ ].join(" ")
8477
8456
  }
8478
8457
  },
8479
8458
  {
@@ -8483,13 +8462,12 @@ const slideover = {
8483
8462
  content: "w-[calc(100%-2rem)] max-h-[calc(100%-2rem)] inset-y-4 left-4"
8484
8463
  }
8485
8464
  },
8465
+ // @todo remove this ?
8486
8466
  {
8487
8467
  side: "left",
8488
8468
  inset: true,
8489
8469
  useFooter: true,
8490
- class: {
8491
- sidebarLayoutPageWrapper: "min-h-[calc(100vh_-_53px-2rem)]"
8492
- }
8470
+ class: {}
8493
8471
  },
8494
8472
  {
8495
8473
  side: "left",
@@ -8500,13 +8478,12 @@ const slideover = {
8500
8478
  },
8501
8479
  // endregion ////
8502
8480
  // region bottom & footer -> min-h ////
8481
+ // @todo remove this ?
8503
8482
  {
8504
8483
  side: "bottom",
8505
8484
  inset: false,
8506
8485
  useFooter: true,
8507
- class: {
8508
- sidebarLayoutPageWrapper: "sm:min-h-[calc(100vh_-_53px_-18px)]"
8509
- }
8486
+ class: {}
8510
8487
  },
8511
8488
  // endregion ////
8512
8489
  // region btn.close ////
@@ -8516,7 +8493,7 @@ const slideover = {
8516
8493
  class: {
8517
8494
  close: [
8518
8495
  "pl-1.5 pr-[4px]",
8519
- "top-[17px] -translate-x-full left-[1px]",
8496
+ "top-[17px] -translate-x-full left-0",
8520
8497
  "rounded-l-full"
8521
8498
  ].join(" ")
8522
8499
  }
@@ -8527,7 +8504,7 @@ const slideover = {
8527
8504
  class: {
8528
8505
  close: [
8529
8506
  "pr-1.5 pl-[4px]",
8530
- "top-[17px] translate-x-full right-[1px]",
8507
+ "top-[17px] translate-x-full right-0",
8531
8508
  "rounded-r-full",
8532
8509
  "[&>div]:flex-row-reverse"
8533
8510
  ].join(" ")
@@ -8537,17 +8514,13 @@ const slideover = {
8537
8514
  // side: 'top',
8538
8515
  inset: true,
8539
8516
  class: {
8540
- close: [
8541
- "top-4 end-4"
8542
- ].join(" ")
8517
+ close: "top-4 end-4"
8543
8518
  }
8544
8519
  },
8545
8520
  {
8546
8521
  side: "top",
8547
8522
  class: {
8548
- close: [
8549
- "top-4 end-4"
8550
- ].join(" ")
8523
+ close: "top-4 end-4"
8551
8524
  }
8552
8525
  },
8553
8526
  // endregion ////
@@ -9667,11 +9640,11 @@ const toast = {
9667
9640
  root: [
9668
9641
  "dark",
9669
9642
  "relative group overflow-hidden",
9670
- "rounded-[26px] py-3.5 ps-6 pe-4",
9671
- "flex items-center gap-2.5",
9643
+ "rounded-[8px] p-4",
9644
+ "flex gap-4",
9672
9645
  "focus-visible:outline-(length:--ui-design-outline-stroke-weight) focus-visible:outline-offset-2 focus-visible:outline-(--ui-color-design-outline-content-divider)",
9673
9646
  "font-[family-name:var(--ui-font-family-primary)]",
9674
- "bg-(--ui-color-bg-content-primary)/80",
9647
+ "bg-(--ui-color-base-black-fixed)/80",
9675
9648
  "text-(--ui-color-design-plain-na-focused-content)",
9676
9649
  "text-(length:--ui-font-size-sm) font-(--ui-font-weight-normal)"
9677
9650
  ].join(" "),
@@ -9683,8 +9656,7 @@ const toast = {
9683
9656
  avatarSize: "xl",
9684
9657
  actions: "flex gap-1.5 shrink-0",
9685
9658
  progress: "absolute inset-x-0 bottom-0",
9686
- // h-1 z-[-1] bg-(--b24ui-border-color)
9687
- close: "p-0"
9659
+ close: "p-0 absolute top-2 right-2"
9688
9660
  },
9689
9661
  variants: {
9690
9662
  color: {
@@ -9694,7 +9666,7 @@ const toast = {
9694
9666
  "air-primary-copilot": { root: "style-filled-copilot" },
9695
9667
  "air-primary-warning": { root: "style-filled-warning" },
9696
9668
  "air-secondary": { root: "style-filled-inverted" },
9697
- // @deprecate ////
9669
+ // @deprecate This rule is deprecated and will be removed in version `3.0.0` ////
9698
9670
  "default": { root: "old-style-default" },
9699
9671
  "danger": { root: "old-style-danger" },
9700
9672
  "success": { root: "old-style-success" },
@@ -11703,7 +11675,8 @@ function getTemplates(options, uiConfig, nuxt, resolve) {
11703
11675
  }
11704
11676
 
11705
11677
  /* @deprecate This rule is deprecated and will be removed in version 3.0.0 */
11706
- .sidebar-layout.--inner {
11678
+ .sidebar-layout.--inner,
11679
+ .air-custom-bg {
11707
11680
  background: var(--air-theme-background);
11708
11681
  }
11709
11682
  }
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 getDefaultConfig } from './shared/b24ui-nuxt.C-GSAtA1.mjs';
6
+ import { g as getTemplates, d as defaultOptions, a as getDefaultConfig } from './shared/b24ui-nuxt.DMHr4spo.mjs';
7
7
  import fs from 'node:fs';
8
8
  import path from 'node:path';
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.C-GSAtA1.mjs';
7
+ import './shared/b24ui-nuxt.DMHr4spo.mjs';
8
8
  import 'scule';
9
9
  import 'knitwork';
10
10
  import '@nuxt/kit';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bitrix24/b24ui-nuxt",
3
3
  "description": "Bitrix24 UI-Kit for developing web applications REST API for NUXT & VUE",
4
- "version": "2.4.2",
4
+ "version": "2.5.1",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/bitrix24/b24ui.git"