@onereach/ui-components 2.72.0 → 2.72.1-beta.2249.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundled/v2/OrSidebar-efd4b98a.js +464 -0
- package/dist/bundled/v2/components/index.js +1 -1
- package/dist/bundled/v2/components/or-sidebar-v3/OrSidebar.stories3.d.ts +36 -1
- package/dist/bundled/v2/components/or-sidebar-v3/OrSidebar.vue.d.ts +49 -4
- package/dist/bundled/v2/components/or-sidebar-v3/OrSidebarCollapseButton.stories3.d.ts +12 -0
- package/dist/bundled/v2/components/or-sidebar-v3/OrSidebarCollapseButton.vue.d.ts +53 -0
- package/dist/bundled/v2/components/or-sidebar-v3/index.js +12 -1
- package/dist/bundled/v2/components/or-sidebar-v3/styles.d.ts +9 -1
- package/dist/bundled/v2/index.js +2 -2
- package/dist/bundled/v3/OrSidebar.vue_vue_type_script_lang-66f8f0fd.js +356 -0
- package/dist/bundled/v3/components/index.js +1 -1
- package/dist/bundled/v3/components/or-sidebar-v3/OrSidebar.stories3.d.ts +36 -1
- package/dist/bundled/v3/components/or-sidebar-v3/OrSidebar.vue.d.ts +49 -4
- package/dist/bundled/v3/components/or-sidebar-v3/OrSidebarCollapseButton.stories3.d.ts +12 -0
- package/dist/bundled/v3/components/or-sidebar-v3/OrSidebarCollapseButton.vue.d.ts +53 -0
- package/dist/bundled/v3/components/or-sidebar-v3/index.js +14 -1
- package/dist/bundled/v3/components/or-sidebar-v3/styles.d.ts +9 -1
- package/dist/bundled/v3/index.js +25 -9
- package/dist/esm/v2/OrSidebar-b7202f16.js +461 -0
- package/dist/esm/v2/components/index.js +1 -1
- package/dist/esm/v2/components/or-sidebar-v3/OrSidebar.stories3.d.ts +36 -1
- package/dist/esm/v2/components/or-sidebar-v3/OrSidebar.vue.d.ts +49 -4
- package/dist/esm/v2/components/or-sidebar-v3/OrSidebarCollapseButton.stories3.d.ts +12 -0
- package/dist/esm/v2/components/or-sidebar-v3/OrSidebarCollapseButton.vue.d.ts +53 -0
- package/dist/esm/v2/components/or-sidebar-v3/index.js +12 -1
- package/dist/esm/v2/components/or-sidebar-v3/styles.d.ts +9 -1
- package/dist/esm/v2/index.js +1 -1
- package/dist/esm/v3/OrSidebar-3567338f.js +396 -0
- package/dist/esm/v3/components/index.js +1 -1
- package/dist/esm/v3/components/or-sidebar-v3/OrSidebar.stories3.d.ts +36 -1
- package/dist/esm/v3/components/or-sidebar-v3/OrSidebar.vue.d.ts +49 -4
- package/dist/esm/v3/components/or-sidebar-v3/OrSidebarCollapseButton.stories3.d.ts +12 -0
- package/dist/esm/v3/components/or-sidebar-v3/OrSidebarCollapseButton.vue.d.ts +53 -0
- package/dist/esm/v3/components/or-sidebar-v3/index.js +11 -1
- package/dist/esm/v3/components/or-sidebar-v3/styles.d.ts +9 -1
- package/dist/esm/v3/index.js +1 -1
- package/package.json +2 -3
- package/src/components/or-sidebar-v3/OrSidebar.docs.mdx +6 -0
- package/src/components/or-sidebar-v3/OrSidebar.stories3.ts +253 -12
- package/src/components/or-sidebar-v3/OrSidebar.vue +130 -23
- package/src/components/or-sidebar-v3/OrSidebarCollapseButton.stories3.ts +48 -0
- package/src/components/or-sidebar-v3/OrSidebarCollapseButton.vue +74 -0
- package/src/components/or-sidebar-v3/styles.ts +164 -9
- package/dist/bundled/v2/OrSidebar-c95ef614.js +0 -230
- package/dist/bundled/v3/OrSidebar.vue_vue_type_script_lang-ce0b152c.js +0 -181
- package/dist/esm/v2/OrSidebar-fabc7bc9.js +0 -228
- package/dist/esm/v3/OrSidebar-a62972f5.js +0 -206
|
@@ -2,28 +2,55 @@
|
|
|
2
2
|
<aside
|
|
3
3
|
ref="root"
|
|
4
4
|
:class="rootStyles"
|
|
5
|
-
:style="sidebarStyle"
|
|
6
5
|
>
|
|
7
6
|
<div
|
|
8
|
-
|
|
9
|
-
:class="
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
v-if="side === 'right' && isShowingToolbar"
|
|
8
|
+
:class="toolbarStyles"
|
|
9
|
+
>
|
|
10
|
+
<slot name="toolbar" />
|
|
11
|
+
</div>
|
|
12
|
+
<div
|
|
13
|
+
:class="sidebarStyles"
|
|
14
|
+
:style="sidebarStyle"
|
|
15
|
+
>
|
|
12
16
|
<div
|
|
13
|
-
v-if="
|
|
14
|
-
|
|
17
|
+
v-if="draggable && !isCollapsed"
|
|
18
|
+
ref="resizeBar"
|
|
19
|
+
:class="resizeStyles"
|
|
20
|
+
/>
|
|
21
|
+
<or-sidebar-collapse-button
|
|
22
|
+
v-if="collapsible"
|
|
23
|
+
v-model="isCollapsed"
|
|
24
|
+
:class="collapsibleButtonStyles"
|
|
25
|
+
:side="side"
|
|
26
|
+
/>
|
|
27
|
+
<div
|
|
28
|
+
v-show="!isCollapsed"
|
|
29
|
+
:class="mainStyles"
|
|
15
30
|
>
|
|
16
|
-
<
|
|
31
|
+
<div
|
|
32
|
+
v-if="$slots.header"
|
|
33
|
+
:class="headerStyles"
|
|
34
|
+
>
|
|
35
|
+
<slot name="header" />
|
|
36
|
+
</div>
|
|
37
|
+
<div :class="contentStyles">
|
|
38
|
+
<slot />
|
|
39
|
+
</div>
|
|
17
40
|
</div>
|
|
18
|
-
<div
|
|
19
|
-
|
|
41
|
+
<div
|
|
42
|
+
v-if="$slots.footer"
|
|
43
|
+
v-show="!isCollapsed"
|
|
44
|
+
:class="footerStyles"
|
|
45
|
+
>
|
|
46
|
+
<slot name="footer" />
|
|
20
47
|
</div>
|
|
21
48
|
</div>
|
|
22
49
|
<div
|
|
23
|
-
v-if="
|
|
24
|
-
:class="
|
|
50
|
+
v-if="side === 'left' && isShowingToolbar"
|
|
51
|
+
:class="toolbarStyles"
|
|
25
52
|
>
|
|
26
|
-
<slot name="
|
|
53
|
+
<slot name="toolbar" />
|
|
27
54
|
</div>
|
|
28
55
|
</aside>
|
|
29
56
|
</template>
|
|
@@ -31,34 +58,48 @@
|
|
|
31
58
|
<script lang="ts">
|
|
32
59
|
import { useDraggable, useElementBounding } from '@vueuse/core';
|
|
33
60
|
import _ from 'lodash';
|
|
34
|
-
import { computed, defineComponent, PropType, ref, watch } from 'vue-demi';
|
|
61
|
+
import { computed, defineComponent, PropType, ref, watch, useSlots } from 'vue-demi';
|
|
35
62
|
import { OrSidebarPlacement } from './props';
|
|
36
63
|
import {
|
|
37
64
|
SidebarRoot,
|
|
38
|
-
|
|
65
|
+
SidebarBar,
|
|
66
|
+
SidebarToolbar,
|
|
67
|
+
CollapsibleSidebarToolbar,
|
|
68
|
+
SidebarSides,
|
|
69
|
+
SidebarToolbarSides,
|
|
39
70
|
SidebarResize,
|
|
40
71
|
SidebarResizeSides,
|
|
72
|
+
SidebarCollapseButton,
|
|
73
|
+
SidebarCollapseButtonSides,
|
|
41
74
|
SidebarResizingSides,
|
|
42
75
|
SidebarMain,
|
|
43
76
|
SidebarHeader,
|
|
44
77
|
SidebarContent,
|
|
45
78
|
SidebarFooter,
|
|
46
79
|
} from './styles';
|
|
80
|
+
import OrSidebarCollapseButton from './OrSidebarCollapseButton.vue';
|
|
47
81
|
|
|
48
82
|
export default defineComponent({
|
|
49
83
|
name: 'OrSidebar',
|
|
50
84
|
|
|
85
|
+
components: {
|
|
86
|
+
OrSidebarCollapseButton,
|
|
87
|
+
},
|
|
88
|
+
|
|
51
89
|
props: {
|
|
52
90
|
width: {
|
|
53
91
|
type: Number,
|
|
54
|
-
|
|
55
|
-
default: 0,
|
|
92
|
+
default: 320,
|
|
56
93
|
validator: (value?: any) => _.isNumber(value) && value >= 0,
|
|
57
94
|
},
|
|
58
95
|
minimumWidth: {
|
|
59
96
|
type: Number,
|
|
60
|
-
|
|
61
|
-
|
|
97
|
+
default: 256,
|
|
98
|
+
validator: (value?: any) => _.isNumber(value) && value >= 0,
|
|
99
|
+
},
|
|
100
|
+
maximumWidth: {
|
|
101
|
+
type: Number,
|
|
102
|
+
default: 384,
|
|
62
103
|
validator: (value?: any) => _.isNumber(value) && value >= 0,
|
|
63
104
|
},
|
|
64
105
|
/**
|
|
@@ -73,9 +114,27 @@ export default defineComponent({
|
|
|
73
114
|
default: OrSidebarPlacement.right,
|
|
74
115
|
validator: (value?: any) => _.includes(_.values(OrSidebarPlacement), value),
|
|
75
116
|
},
|
|
117
|
+
draggable: {
|
|
118
|
+
type: Boolean,
|
|
119
|
+
default: true,
|
|
120
|
+
},
|
|
121
|
+
collapsible: {
|
|
122
|
+
type: Boolean,
|
|
123
|
+
default: false,
|
|
124
|
+
},
|
|
76
125
|
},
|
|
77
126
|
|
|
78
|
-
emits: [
|
|
127
|
+
emits: [
|
|
128
|
+
'change:width',
|
|
129
|
+
'open',
|
|
130
|
+
'close',
|
|
131
|
+
],
|
|
132
|
+
|
|
133
|
+
expose: [
|
|
134
|
+
'root',
|
|
135
|
+
'open',
|
|
136
|
+
'close',
|
|
137
|
+
],
|
|
79
138
|
|
|
80
139
|
setup(props, { emit }) {
|
|
81
140
|
// Refs
|
|
@@ -84,20 +143,37 @@ export default defineComponent({
|
|
|
84
143
|
|
|
85
144
|
const parentContainer = computed(() => root.value?.parentElement);
|
|
86
145
|
|
|
146
|
+
// Slots
|
|
147
|
+
const { toolbar: toolbarSlot } = useSlots();
|
|
148
|
+
|
|
87
149
|
// State
|
|
88
150
|
const startPositionX = ref(0);
|
|
89
151
|
const isResizing = ref(false);
|
|
152
|
+
const isCollapsed = ref(false);
|
|
153
|
+
const maximumWidth = ref(props.maximumWidth || 384);
|
|
90
154
|
const localWidth = ref(props.width >= props.minimumWidth ? props.width : props.minimumWidth);
|
|
91
155
|
|
|
156
|
+
const isShowingToolbar = computed(() => !!toolbarSlot);
|
|
157
|
+
|
|
92
158
|
// Styles
|
|
93
159
|
const sidebarStyle = computed(() => ({
|
|
94
|
-
width: localWidth.value + 'px',
|
|
160
|
+
width: (isCollapsed.value ? 16 : localWidth.value) + 'px',
|
|
95
161
|
}));
|
|
96
162
|
|
|
97
163
|
const rootStyles = computed(() => [
|
|
98
164
|
'or-sidebar',
|
|
99
165
|
...SidebarRoot,
|
|
100
|
-
|
|
166
|
+
]);
|
|
167
|
+
|
|
168
|
+
const sidebarStyles = computed(() => [
|
|
169
|
+
...SidebarBar,
|
|
170
|
+
...SidebarSides[props.side],
|
|
171
|
+
]);
|
|
172
|
+
|
|
173
|
+
const toolbarStyles = computed(() => [
|
|
174
|
+
...SidebarToolbar,
|
|
175
|
+
...(props.collapsible ? CollapsibleSidebarToolbar : []),
|
|
176
|
+
...SidebarToolbarSides[props.side],
|
|
101
177
|
]);
|
|
102
178
|
|
|
103
179
|
const resizeStyles = computed(() => [
|
|
@@ -106,6 +182,11 @@ export default defineComponent({
|
|
|
106
182
|
...(isResizing.value ? SidebarResizingSides[props.side] : []),
|
|
107
183
|
]);
|
|
108
184
|
|
|
185
|
+
const collapsibleButtonStyles = computed(() => [
|
|
186
|
+
...SidebarCollapseButton,
|
|
187
|
+
...SidebarCollapseButtonSides[props.side],
|
|
188
|
+
]);
|
|
189
|
+
|
|
109
190
|
const mainStyles = computed(() => [...SidebarMain]);
|
|
110
191
|
|
|
111
192
|
const headerStyles = computed(() => [...SidebarHeader]);
|
|
@@ -137,7 +218,16 @@ export default defineComponent({
|
|
|
137
218
|
},
|
|
138
219
|
});
|
|
139
220
|
|
|
140
|
-
|
|
221
|
+
// Methods
|
|
222
|
+
function open(): void {
|
|
223
|
+
isCollapsed.value = false;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
function close(): void {
|
|
227
|
+
isCollapsed.value = true;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
const { width: containerWidth } = useElementBounding(parentContainer);
|
|
141
231
|
|
|
142
232
|
watch(() => props.width, (newValue: number) => {
|
|
143
233
|
if (newValue !== localWidth.value) {
|
|
@@ -150,24 +240,41 @@ export default defineComponent({
|
|
|
150
240
|
if (newMinimum > localWidth.value) localWidth.value = newMinimum;
|
|
151
241
|
});
|
|
152
242
|
|
|
243
|
+
watch(() => props.maximumWidth, (newMaximum: number) => {
|
|
244
|
+
if (newMaximum < maximumWidth.value) maximumWidth.value = newMaximum;
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
watch(containerWidth, (newMaximum: number) => {
|
|
248
|
+
if (newMaximum < maximumWidth.value) maximumWidth.value = newMaximum;
|
|
249
|
+
});
|
|
250
|
+
|
|
153
251
|
watch(maximumWidth, (newMaximum: number) => {
|
|
154
252
|
if (newMaximum < localWidth.value) localWidth.value = newMaximum;
|
|
155
253
|
});
|
|
156
254
|
|
|
157
255
|
watch(localWidth, (val: number) => emit('change:width', val));
|
|
158
256
|
|
|
257
|
+
watch(isCollapsed, (val: boolean) => emit(val ? 'close' : 'open'));
|
|
258
|
+
|
|
159
259
|
return {
|
|
160
260
|
root,
|
|
161
261
|
resizeBar,
|
|
162
262
|
isResizing,
|
|
263
|
+
isCollapsed,
|
|
163
264
|
localWidth,
|
|
265
|
+
isShowingToolbar,
|
|
164
266
|
sidebarStyle,
|
|
165
267
|
rootStyles,
|
|
268
|
+
sidebarStyles,
|
|
269
|
+
toolbarStyles,
|
|
166
270
|
resizeStyles,
|
|
271
|
+
collapsibleButtonStyles,
|
|
167
272
|
mainStyles,
|
|
168
273
|
headerStyles,
|
|
169
274
|
contentStyles,
|
|
170
275
|
footerStyles,
|
|
276
|
+
open,
|
|
277
|
+
close,
|
|
171
278
|
};
|
|
172
279
|
},
|
|
173
280
|
});
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Meta, StoryFn } from '@storybook/vue3';
|
|
2
|
+
import OrSidebarCollapseButton from './OrSidebarCollapseButton.vue';
|
|
3
|
+
import { OrSidebarPlacement } from './props';
|
|
4
|
+
import { action } from '@storybook/addon-actions';
|
|
5
|
+
import { ref } from 'vue-demi';
|
|
6
|
+
|
|
7
|
+
export default {
|
|
8
|
+
title: 'Components/Sidebar/Parts/CollapseButton',
|
|
9
|
+
component: OrSidebarCollapseButton,
|
|
10
|
+
|
|
11
|
+
argTypes: {
|
|
12
|
+
// Props
|
|
13
|
+
modelValue: {
|
|
14
|
+
control: { type: 'boolean' },
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
side: {
|
|
18
|
+
control: { type: 'select' },
|
|
19
|
+
options: Object.values(OrSidebarPlacement),
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
} as Meta<typeof OrSidebarCollapseButton>;
|
|
23
|
+
|
|
24
|
+
const DefaultTemplate: StoryFn<typeof OrSidebarCollapseButton> = (args) => ({
|
|
25
|
+
components: {
|
|
26
|
+
OrSidebarCollapseButton,
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
setup() {
|
|
30
|
+
const collapsed = ref<boolean>(!!args.modelValue);
|
|
31
|
+
|
|
32
|
+
return {
|
|
33
|
+
args,
|
|
34
|
+
collapsed,
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
methods: {
|
|
39
|
+
onUpdateModelValue: action('update:modelValue'),
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
template: '<OrSidebarCollapseButton v-model="collapsed" v-bind="args" @update:modelValue="onUpdateModelValue" />',
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
export const Default = DefaultTemplate.bind({});
|
|
46
|
+
Default.args = {
|
|
47
|
+
side: OrSidebarPlacement.right,
|
|
48
|
+
};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
ref="root"
|
|
4
|
+
:class="rootStyles"
|
|
5
|
+
>
|
|
6
|
+
<or-icon-button
|
|
7
|
+
:class="buttonStyles"
|
|
8
|
+
:icon="{ icon, size: 'inherit' }"
|
|
9
|
+
color="inherit"
|
|
10
|
+
@click="$emit('update:modelValue', !modelValue)"
|
|
11
|
+
/>
|
|
12
|
+
</div>
|
|
13
|
+
</template>
|
|
14
|
+
|
|
15
|
+
<script lang="ts">
|
|
16
|
+
import _ from 'lodash';
|
|
17
|
+
import { computed, defineComponent, PropType, ref } from 'vue-demi';
|
|
18
|
+
import { OrSidebarPlacement } from './props';
|
|
19
|
+
import { OrIconButtonV3 as OrIconButton } from '../or-icon-button-v3';
|
|
20
|
+
import { CollapseButton, CollapseButtonContainer } from './styles';
|
|
21
|
+
|
|
22
|
+
export default defineComponent({
|
|
23
|
+
name: 'OrSidebarCollapseButton',
|
|
24
|
+
|
|
25
|
+
components: {
|
|
26
|
+
OrIconButton,
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
props: {
|
|
30
|
+
/**
|
|
31
|
+
* Must be `true` if sidebar is collapsed.
|
|
32
|
+
*/
|
|
33
|
+
modelValue: {
|
|
34
|
+
type: Boolean,
|
|
35
|
+
default: false,
|
|
36
|
+
},
|
|
37
|
+
side: {
|
|
38
|
+
type: String as PropType<OrSidebarPlacement>,
|
|
39
|
+
default: OrSidebarPlacement.right,
|
|
40
|
+
validator: (value?: any) => _.includes(_.values(OrSidebarPlacement), value),
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
emits: ['update:modelValue'],
|
|
45
|
+
|
|
46
|
+
expose: ['root'],
|
|
47
|
+
|
|
48
|
+
setup(props) {
|
|
49
|
+
// Refs
|
|
50
|
+
const root = ref<InstanceType<typeof HTMLDivElement>>();
|
|
51
|
+
|
|
52
|
+
const rootStyles = computed(() => [
|
|
53
|
+
'or-sidebar-collapse-button',
|
|
54
|
+
...CollapseButtonContainer,
|
|
55
|
+
]);
|
|
56
|
+
|
|
57
|
+
const buttonStyles = computed(() => [
|
|
58
|
+
...CollapseButton,
|
|
59
|
+
]);
|
|
60
|
+
|
|
61
|
+
const icon = computed(() => (props.side === OrSidebarPlacement.left !== props.modelValue) ?
|
|
62
|
+
'keyboard_arrow_left' :
|
|
63
|
+
'keyboard_arrow_right',
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
return {
|
|
67
|
+
root,
|
|
68
|
+
rootStyles,
|
|
69
|
+
buttonStyles,
|
|
70
|
+
icon,
|
|
71
|
+
};
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
</script>
|
|
@@ -4,28 +4,100 @@ export const SidebarRoot: string[] = [
|
|
|
4
4
|
// Position
|
|
5
5
|
'relative',
|
|
6
6
|
|
|
7
|
+
// Layout
|
|
8
|
+
'flex',
|
|
9
|
+
'flex-row',
|
|
10
|
+
'shrink-0',
|
|
11
|
+
|
|
12
|
+
// Box
|
|
13
|
+
'min-w-0',
|
|
14
|
+
'h-auto',
|
|
15
|
+
'p-0',
|
|
16
|
+
|
|
17
|
+
// Theme
|
|
18
|
+
'bg-background',
|
|
19
|
+
'dark:bg-background-dark',
|
|
20
|
+
];
|
|
21
|
+
|
|
22
|
+
export const SidebarBar: string[] = [
|
|
23
|
+
// Position
|
|
24
|
+
'relative',
|
|
25
|
+
|
|
7
26
|
// Layout
|
|
8
27
|
'flex',
|
|
9
28
|
'flex-col',
|
|
10
29
|
'shrink-0',
|
|
30
|
+
'grow',
|
|
11
31
|
|
|
12
32
|
// Box
|
|
13
33
|
'min-h-0',
|
|
14
34
|
'p-0',
|
|
35
|
+
|
|
36
|
+
// Theme
|
|
37
|
+
'text-on-background',
|
|
38
|
+
'dark:text-on-background-dark',
|
|
39
|
+
|
|
40
|
+
// Transition
|
|
41
|
+
'transition-[width]',
|
|
15
42
|
];
|
|
16
43
|
|
|
17
|
-
export const
|
|
44
|
+
export const SidebarToolbar: string[] = [
|
|
45
|
+
// Position
|
|
46
|
+
'relative',
|
|
47
|
+
|
|
48
|
+
// Layout
|
|
49
|
+
'flex',
|
|
50
|
+
'flex-col',
|
|
51
|
+
'shrink-0',
|
|
52
|
+
'grow',
|
|
53
|
+
'overflow-auto',
|
|
54
|
+
'items-center',
|
|
55
|
+
|
|
56
|
+
// Sizing
|
|
57
|
+
'gap-md',
|
|
58
|
+
|
|
59
|
+
// Box
|
|
60
|
+
'min-h-0',
|
|
61
|
+
'min-w-xl',
|
|
62
|
+
'p-[6px]',
|
|
63
|
+
'py-md+',
|
|
64
|
+
|
|
65
|
+
// Theme
|
|
66
|
+
'text-outline',
|
|
67
|
+
'dark:text-outline-dark',
|
|
68
|
+
];
|
|
69
|
+
|
|
70
|
+
export const CollapsibleSidebarToolbar: string[] = [
|
|
71
|
+
'pt-[56px]',
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
export const SidebarSides: Record<OrSidebarPlacement, string[]> = {
|
|
75
|
+
[OrSidebarPlacement.left]: [
|
|
76
|
+
// Borders
|
|
77
|
+
'border-r-[1px]',
|
|
78
|
+
'border-r-solid',
|
|
79
|
+
'border-r-outline-variant dark:border-r-outline-variant-dark',
|
|
80
|
+
],
|
|
81
|
+
[OrSidebarPlacement.right]: [
|
|
82
|
+
// Borders
|
|
83
|
+
'border-l-[1px]',
|
|
84
|
+
'border-l-solid',
|
|
85
|
+
'border-l-outline-variant dark:border-l-outline-variant-dark',
|
|
86
|
+
],
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
export const SidebarToolbarSides: Record<OrSidebarPlacement, string[]> = {
|
|
18
90
|
[OrSidebarPlacement.left]: [
|
|
19
91
|
// Borders
|
|
20
92
|
'border-r-[1px]',
|
|
21
93
|
'border-r-solid',
|
|
22
|
-
'border-r-
|
|
94
|
+
'border-r-outline-variant dark:border-r-outline-variant-dark',
|
|
23
95
|
],
|
|
24
96
|
[OrSidebarPlacement.right]: [
|
|
25
97
|
// Borders
|
|
26
98
|
'border-l-[1px]',
|
|
27
99
|
'border-l-solid',
|
|
28
|
-
'border-l-
|
|
100
|
+
'border-l-outline-variant dark:border-l-outline-variant-dark',
|
|
29
101
|
],
|
|
30
102
|
};
|
|
31
103
|
|
|
@@ -36,7 +108,7 @@ export const SidebarResize: string[] = [
|
|
|
36
108
|
'z-[1]',
|
|
37
109
|
|
|
38
110
|
// Box
|
|
39
|
-
'w-
|
|
111
|
+
'w-sm+',
|
|
40
112
|
'h-[100%]',
|
|
41
113
|
|
|
42
114
|
// Cursor
|
|
@@ -50,7 +122,7 @@ export const SidebarResizeSides: Record<OrSidebarPlacement, string[]> = {
|
|
|
50
122
|
|
|
51
123
|
// Borders
|
|
52
124
|
'hover:border-r-2',
|
|
53
|
-
'hover:border-r-primary hover:dark:border-r-primary-dark',
|
|
125
|
+
'hover:border-r-primary-hover hover:dark:border-r-primary-hover-dark',
|
|
54
126
|
|
|
55
127
|
// Transition
|
|
56
128
|
'transition-[border-right]',
|
|
@@ -61,23 +133,42 @@ export const SidebarResizeSides: Record<OrSidebarPlacement, string[]> = {
|
|
|
61
133
|
|
|
62
134
|
// Borders
|
|
63
135
|
'hover:border-l-2',
|
|
64
|
-
'hover:border-l-primary hover:dark:border-l-primary-dark',
|
|
136
|
+
'hover:border-l-primary-hover hover:dark:border-l-primary-hover-dark',
|
|
65
137
|
|
|
66
138
|
// Transition
|
|
67
139
|
'transition-[border-left]',
|
|
68
140
|
],
|
|
69
141
|
};
|
|
70
142
|
|
|
143
|
+
export const SidebarCollapseButton: string[] = [
|
|
144
|
+
// Position
|
|
145
|
+
'absolute',
|
|
146
|
+
'top-md',
|
|
147
|
+
'inset-y-none',
|
|
148
|
+
'z-[1]',
|
|
149
|
+
];
|
|
150
|
+
|
|
151
|
+
export const SidebarCollapseButtonSides: Record<OrSidebarPlacement, string[]> = {
|
|
152
|
+
[OrSidebarPlacement.left]: [
|
|
153
|
+
// Position
|
|
154
|
+
'-right-[12px]',
|
|
155
|
+
],
|
|
156
|
+
[OrSidebarPlacement.right]: [
|
|
157
|
+
// Position
|
|
158
|
+
'-left-[12px]',
|
|
159
|
+
],
|
|
160
|
+
};
|
|
161
|
+
|
|
71
162
|
export const SidebarResizingSides: Record<OrSidebarPlacement, string[]> = {
|
|
72
163
|
[OrSidebarPlacement.left]: [
|
|
73
164
|
// Borders
|
|
74
165
|
'border-r-2',
|
|
75
|
-
'border-r-primary dark:border-r-primary-dark',
|
|
166
|
+
'border-r-primary-hover dark:border-r-primary-hover-dark',
|
|
76
167
|
],
|
|
77
168
|
[OrSidebarPlacement.right]: [
|
|
78
169
|
// Borders
|
|
79
170
|
'border-l-2',
|
|
80
|
-
'border-l-primary dark:border-l-primary-dark',
|
|
171
|
+
'border-l-primary-hover dark:border-l-primary-hover-dark',
|
|
81
172
|
],
|
|
82
173
|
};
|
|
83
174
|
|
|
@@ -86,14 +177,24 @@ export const SidebarMain: string[] = [
|
|
|
86
177
|
'flex',
|
|
87
178
|
'flex-col',
|
|
88
179
|
'grow',
|
|
180
|
+
'overflow-x-hidden',
|
|
89
181
|
|
|
90
182
|
// Box
|
|
91
183
|
'min-h-0',
|
|
92
184
|
];
|
|
93
185
|
|
|
94
186
|
export const SidebarHeader: string[] = [
|
|
187
|
+
// Layout
|
|
188
|
+
'shrink-0',
|
|
189
|
+
'overflow-hidden',
|
|
190
|
+
|
|
95
191
|
// Sizing
|
|
96
192
|
'p-md',
|
|
193
|
+
|
|
194
|
+
// Typography
|
|
195
|
+
'typography-headline-2',
|
|
196
|
+
'whitespace-nowrap',
|
|
197
|
+
'text-ellipsis',
|
|
97
198
|
];
|
|
98
199
|
|
|
99
200
|
export const SidebarContent: string[] = [
|
|
@@ -106,11 +207,65 @@ export const SidebarContent: string[] = [
|
|
|
106
207
|
];
|
|
107
208
|
|
|
108
209
|
export const SidebarFooter: string[] = [
|
|
210
|
+
// Layout
|
|
211
|
+
'shrink-0',
|
|
212
|
+
'overflow-x-hidden',
|
|
213
|
+
|
|
109
214
|
// Sizing
|
|
110
215
|
'p-md',
|
|
111
216
|
|
|
112
217
|
// Borders
|
|
113
218
|
'border-t-[1px]',
|
|
114
219
|
'border-t-solid',
|
|
115
|
-
'border-t-
|
|
220
|
+
'border-t-outline-variant dark:border-t-outline-variant-dark',
|
|
221
|
+
];
|
|
222
|
+
|
|
223
|
+
export const CollapseButtonContainer: string[] = [
|
|
224
|
+
// Box
|
|
225
|
+
'w-[24px]',
|
|
226
|
+
'h-[24px]',
|
|
227
|
+
'rounded-full',
|
|
228
|
+
|
|
229
|
+
// Theme
|
|
230
|
+
'text-primary dark:text-primary-dark',
|
|
231
|
+
'bg-background dark:bg-background-dark',
|
|
232
|
+
];
|
|
233
|
+
|
|
234
|
+
export const CollapseButton: string[] = [
|
|
235
|
+
// Box
|
|
236
|
+
'w-[24px]',
|
|
237
|
+
'h-[24px]',
|
|
238
|
+
|
|
239
|
+
// Typography
|
|
240
|
+
'!text-[16px]',
|
|
241
|
+
|
|
242
|
+
// Borders
|
|
243
|
+
'!border-[1px]',
|
|
244
|
+
'!border-solid',
|
|
245
|
+
|
|
246
|
+
// Theme
|
|
247
|
+
'!text-primary dark:!text-primary-dark',
|
|
248
|
+
'!bg-background dark:!bg-background-dark',
|
|
249
|
+
'!border-outline-variant dark:!border-outline-variant-dark',
|
|
250
|
+
'!outline-none',
|
|
251
|
+
|
|
252
|
+
// Theme (hover)
|
|
253
|
+
'hover:!text-primary hover:dark:!text-primary-dark',
|
|
254
|
+
'hover:!bg-primary-opacity-0-08 dark:hover:!bg-primary-opacity-0-08-dark',
|
|
255
|
+
'hover:!border-outline dark:hover:!border-outline-dark',
|
|
256
|
+
|
|
257
|
+
// Theme (active)
|
|
258
|
+
'active:!text-primary active:dark:!text-primary-dark',
|
|
259
|
+
'active:!bg-primary-opacity-0-12 dark:active:!bg-primary-opacity-0-12-dark',
|
|
260
|
+
'active:!border-primary dark:active:!border-primary-dark',
|
|
261
|
+
|
|
262
|
+
// Theme (focus)
|
|
263
|
+
'focus:!text-primary focus:dark:!text-primary-dark',
|
|
264
|
+
'focus:!bg-primary-opacity-0-12 dark:focus:!bg-primary-opacity-0-12-dark',
|
|
265
|
+
'focus:!border-outline dark:focus:!border-outline-dark',
|
|
266
|
+
|
|
267
|
+
// Theme (disabled)
|
|
268
|
+
'disabled:!text-on-disabled disabled:dark:!text-on-disabled-dark',
|
|
269
|
+
'disabled:!bg-background disabled:dark:!bg-background-dark',
|
|
270
|
+
'disabled:!border-outline-variant disabled:dark:!border-outline-variant-dark',
|
|
116
271
|
];
|