@onereach/ui-components 2.71.0 → 2.71.1-beta.2220.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-d445ecdd.js +463 -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 +13 -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-80e5dc4b.js +355 -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 +15 -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-097a4b55.js +460 -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 +13 -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-f6b2050b.js +395 -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 +12 -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 +230 -10
- package/src/components/or-sidebar-v3/OrSidebar.vue +123 -22
- 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,10 +114,24 @@ 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
127
|
emits: ['change:width'],
|
|
79
128
|
|
|
129
|
+
expose: [
|
|
130
|
+
'root',
|
|
131
|
+
'open',
|
|
132
|
+
'close',
|
|
133
|
+
],
|
|
134
|
+
|
|
80
135
|
setup(props, { emit }) {
|
|
81
136
|
// Refs
|
|
82
137
|
const root = ref<HTMLElement>();
|
|
@@ -84,20 +139,37 @@ export default defineComponent({
|
|
|
84
139
|
|
|
85
140
|
const parentContainer = computed(() => root.value?.parentElement);
|
|
86
141
|
|
|
142
|
+
// Slots
|
|
143
|
+
const { toolbar: toolbarSlot } = useSlots();
|
|
144
|
+
|
|
87
145
|
// State
|
|
88
146
|
const startPositionX = ref(0);
|
|
89
147
|
const isResizing = ref(false);
|
|
148
|
+
const isCollapsed = ref(false);
|
|
149
|
+
const maximumWidth = ref(props.maximumWidth || 384);
|
|
90
150
|
const localWidth = ref(props.width >= props.minimumWidth ? props.width : props.minimumWidth);
|
|
91
151
|
|
|
152
|
+
const isShowingToolbar = computed(() => !!toolbarSlot);
|
|
153
|
+
|
|
92
154
|
// Styles
|
|
93
155
|
const sidebarStyle = computed(() => ({
|
|
94
|
-
width: localWidth.value + 'px',
|
|
156
|
+
width: (isCollapsed.value ? 16 : localWidth.value) + 'px',
|
|
95
157
|
}));
|
|
96
158
|
|
|
97
159
|
const rootStyles = computed(() => [
|
|
98
160
|
'or-sidebar',
|
|
99
161
|
...SidebarRoot,
|
|
100
|
-
|
|
162
|
+
]);
|
|
163
|
+
|
|
164
|
+
const sidebarStyles = computed(() => [
|
|
165
|
+
...SidebarBar,
|
|
166
|
+
...SidebarSides[props.side],
|
|
167
|
+
]);
|
|
168
|
+
|
|
169
|
+
const toolbarStyles = computed(() => [
|
|
170
|
+
...SidebarToolbar,
|
|
171
|
+
...(props.collapsible ? CollapsibleSidebarToolbar : []),
|
|
172
|
+
...SidebarToolbarSides[props.side],
|
|
101
173
|
]);
|
|
102
174
|
|
|
103
175
|
const resizeStyles = computed(() => [
|
|
@@ -106,6 +178,11 @@ export default defineComponent({
|
|
|
106
178
|
...(isResizing.value ? SidebarResizingSides[props.side] : []),
|
|
107
179
|
]);
|
|
108
180
|
|
|
181
|
+
const collapsibleButtonStyles = computed(() => [
|
|
182
|
+
...SidebarCollapseButton,
|
|
183
|
+
...SidebarCollapseButtonSides[props.side],
|
|
184
|
+
]);
|
|
185
|
+
|
|
109
186
|
const mainStyles = computed(() => [...SidebarMain]);
|
|
110
187
|
|
|
111
188
|
const headerStyles = computed(() => [...SidebarHeader]);
|
|
@@ -137,7 +214,16 @@ export default defineComponent({
|
|
|
137
214
|
},
|
|
138
215
|
});
|
|
139
216
|
|
|
140
|
-
|
|
217
|
+
// Methods
|
|
218
|
+
function open(): void {
|
|
219
|
+
isCollapsed.value = false;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
function close(): void {
|
|
223
|
+
isCollapsed.value = true;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
const { width: containerWidth } = useElementBounding(parentContainer);
|
|
141
227
|
|
|
142
228
|
watch(() => props.width, (newValue: number) => {
|
|
143
229
|
if (newValue !== localWidth.value) {
|
|
@@ -150,6 +236,14 @@ export default defineComponent({
|
|
|
150
236
|
if (newMinimum > localWidth.value) localWidth.value = newMinimum;
|
|
151
237
|
});
|
|
152
238
|
|
|
239
|
+
watch(() => props.maximumWidth, (newMaximum: number) => {
|
|
240
|
+
if (newMaximum < maximumWidth.value) maximumWidth.value = newMaximum;
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
watch(containerWidth, (newMaximum: number) => {
|
|
244
|
+
if (newMaximum < maximumWidth.value) maximumWidth.value = newMaximum;
|
|
245
|
+
});
|
|
246
|
+
|
|
153
247
|
watch(maximumWidth, (newMaximum: number) => {
|
|
154
248
|
if (newMaximum < localWidth.value) localWidth.value = newMaximum;
|
|
155
249
|
});
|
|
@@ -160,14 +254,21 @@ export default defineComponent({
|
|
|
160
254
|
root,
|
|
161
255
|
resizeBar,
|
|
162
256
|
isResizing,
|
|
257
|
+
isCollapsed,
|
|
163
258
|
localWidth,
|
|
259
|
+
isShowingToolbar,
|
|
164
260
|
sidebarStyle,
|
|
165
261
|
rootStyles,
|
|
262
|
+
sidebarStyles,
|
|
263
|
+
toolbarStyles,
|
|
166
264
|
resizeStyles,
|
|
265
|
+
collapsibleButtonStyles,
|
|
167
266
|
mainStyles,
|
|
168
267
|
headerStyles,
|
|
169
268
|
contentStyles,
|
|
170
269
|
footerStyles,
|
|
270
|
+
open,
|
|
271
|
+
close,
|
|
171
272
|
};
|
|
172
273
|
},
|
|
173
274
|
});
|
|
@@ -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
|
];
|