@onereach/ui-components 2.71.0 → 2.71.1-beta.2217.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-774b382d.js +462 -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 +8 -1
- package/dist/bundled/v2/index.js +2 -2
- package/dist/bundled/v3/OrSidebar.vue_vue_type_script_lang-8305a28b.js +354 -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 +8 -1
- package/dist/bundled/v3/index.js +25 -9
- package/dist/esm/v2/OrSidebar-a6ee22d1.js +459 -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 +8 -1
- package/dist/esm/v2/index.js +1 -1
- package/dist/esm/v3/OrSidebar-f2150587.js +394 -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 +8 -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 +121 -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 +161 -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,47 @@
|
|
|
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
|
+
SidebarSides,
|
|
68
|
+
SidebarToolbarSides,
|
|
39
69
|
SidebarResize,
|
|
40
70
|
SidebarResizeSides,
|
|
71
|
+
SidebarCollapseButton,
|
|
72
|
+
SidebarCollapseButtonSides,
|
|
41
73
|
SidebarResizingSides,
|
|
42
74
|
SidebarMain,
|
|
43
75
|
SidebarHeader,
|
|
44
76
|
SidebarContent,
|
|
45
77
|
SidebarFooter,
|
|
46
78
|
} from './styles';
|
|
79
|
+
import OrSidebarCollapseButton from './OrSidebarCollapseButton.vue';
|
|
47
80
|
|
|
48
81
|
export default defineComponent({
|
|
49
82
|
name: 'OrSidebar',
|
|
50
83
|
|
|
84
|
+
components: {
|
|
85
|
+
OrSidebarCollapseButton,
|
|
86
|
+
},
|
|
87
|
+
|
|
51
88
|
props: {
|
|
52
89
|
width: {
|
|
53
90
|
type: Number,
|
|
54
|
-
|
|
55
|
-
default: 0,
|
|
91
|
+
default: 320,
|
|
56
92
|
validator: (value?: any) => _.isNumber(value) && value >= 0,
|
|
57
93
|
},
|
|
58
94
|
minimumWidth: {
|
|
59
95
|
type: Number,
|
|
60
|
-
|
|
61
|
-
|
|
96
|
+
default: 256,
|
|
97
|
+
validator: (value?: any) => _.isNumber(value) && value >= 0,
|
|
98
|
+
},
|
|
99
|
+
maximumWidth: {
|
|
100
|
+
type: Number,
|
|
101
|
+
default: 384,
|
|
62
102
|
validator: (value?: any) => _.isNumber(value) && value >= 0,
|
|
63
103
|
},
|
|
64
104
|
/**
|
|
@@ -73,10 +113,24 @@ export default defineComponent({
|
|
|
73
113
|
default: OrSidebarPlacement.right,
|
|
74
114
|
validator: (value?: any) => _.includes(_.values(OrSidebarPlacement), value),
|
|
75
115
|
},
|
|
116
|
+
draggable: {
|
|
117
|
+
type: Boolean,
|
|
118
|
+
default: true,
|
|
119
|
+
},
|
|
120
|
+
collapsible: {
|
|
121
|
+
type: Boolean,
|
|
122
|
+
default: false,
|
|
123
|
+
},
|
|
76
124
|
},
|
|
77
125
|
|
|
78
126
|
emits: ['change:width'],
|
|
79
127
|
|
|
128
|
+
expose: [
|
|
129
|
+
'root',
|
|
130
|
+
'open',
|
|
131
|
+
'close',
|
|
132
|
+
],
|
|
133
|
+
|
|
80
134
|
setup(props, { emit }) {
|
|
81
135
|
// Refs
|
|
82
136
|
const root = ref<HTMLElement>();
|
|
@@ -84,20 +138,36 @@ export default defineComponent({
|
|
|
84
138
|
|
|
85
139
|
const parentContainer = computed(() => root.value?.parentElement);
|
|
86
140
|
|
|
141
|
+
// Slots
|
|
142
|
+
const { toolbar: toolbarSlot } = useSlots();
|
|
143
|
+
|
|
87
144
|
// State
|
|
88
145
|
const startPositionX = ref(0);
|
|
89
146
|
const isResizing = ref(false);
|
|
147
|
+
const isCollapsed = ref(false);
|
|
148
|
+
const maximumWidth = ref(props.maximumWidth || 384);
|
|
90
149
|
const localWidth = ref(props.width >= props.minimumWidth ? props.width : props.minimumWidth);
|
|
91
150
|
|
|
151
|
+
const isShowingToolbar = computed(() => !!toolbarSlot);
|
|
152
|
+
|
|
92
153
|
// Styles
|
|
93
154
|
const sidebarStyle = computed(() => ({
|
|
94
|
-
width: localWidth.value + 'px',
|
|
155
|
+
width: (isCollapsed.value ? 16 : localWidth.value) + 'px',
|
|
95
156
|
}));
|
|
96
157
|
|
|
97
158
|
const rootStyles = computed(() => [
|
|
98
159
|
'or-sidebar',
|
|
99
160
|
...SidebarRoot,
|
|
100
|
-
|
|
161
|
+
]);
|
|
162
|
+
|
|
163
|
+
const sidebarStyles = computed(() => [
|
|
164
|
+
...SidebarBar,
|
|
165
|
+
...SidebarSides[props.side],
|
|
166
|
+
]);
|
|
167
|
+
|
|
168
|
+
const toolbarStyles = computed(() => [
|
|
169
|
+
...SidebarToolbar,
|
|
170
|
+
...SidebarToolbarSides[props.side],
|
|
101
171
|
]);
|
|
102
172
|
|
|
103
173
|
const resizeStyles = computed(() => [
|
|
@@ -106,6 +176,11 @@ export default defineComponent({
|
|
|
106
176
|
...(isResizing.value ? SidebarResizingSides[props.side] : []),
|
|
107
177
|
]);
|
|
108
178
|
|
|
179
|
+
const collapsibleButtonStyles = computed(() => [
|
|
180
|
+
...SidebarCollapseButton,
|
|
181
|
+
...SidebarCollapseButtonSides[props.side],
|
|
182
|
+
]);
|
|
183
|
+
|
|
109
184
|
const mainStyles = computed(() => [...SidebarMain]);
|
|
110
185
|
|
|
111
186
|
const headerStyles = computed(() => [...SidebarHeader]);
|
|
@@ -137,7 +212,16 @@ export default defineComponent({
|
|
|
137
212
|
},
|
|
138
213
|
});
|
|
139
214
|
|
|
140
|
-
|
|
215
|
+
// Methods
|
|
216
|
+
function open(): void {
|
|
217
|
+
isCollapsed.value = false;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function close(): void {
|
|
221
|
+
isCollapsed.value = true;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
const { width: containerWidth } = useElementBounding(parentContainer);
|
|
141
225
|
|
|
142
226
|
watch(() => props.width, (newValue: number) => {
|
|
143
227
|
if (newValue !== localWidth.value) {
|
|
@@ -150,6 +234,14 @@ export default defineComponent({
|
|
|
150
234
|
if (newMinimum > localWidth.value) localWidth.value = newMinimum;
|
|
151
235
|
});
|
|
152
236
|
|
|
237
|
+
watch(() => props.maximumWidth, (newMaximum: number) => {
|
|
238
|
+
if (newMaximum < maximumWidth.value) maximumWidth.value = newMaximum;
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
watch(containerWidth, (newMaximum: number) => {
|
|
242
|
+
if (newMaximum < maximumWidth.value) maximumWidth.value = newMaximum;
|
|
243
|
+
});
|
|
244
|
+
|
|
153
245
|
watch(maximumWidth, (newMaximum: number) => {
|
|
154
246
|
if (newMaximum < localWidth.value) localWidth.value = newMaximum;
|
|
155
247
|
});
|
|
@@ -160,14 +252,21 @@ export default defineComponent({
|
|
|
160
252
|
root,
|
|
161
253
|
resizeBar,
|
|
162
254
|
isResizing,
|
|
255
|
+
isCollapsed,
|
|
163
256
|
localWidth,
|
|
257
|
+
isShowingToolbar,
|
|
164
258
|
sidebarStyle,
|
|
165
259
|
rootStyles,
|
|
260
|
+
sidebarStyles,
|
|
261
|
+
toolbarStyles,
|
|
166
262
|
resizeStyles,
|
|
263
|
+
collapsibleButtonStyles,
|
|
167
264
|
mainStyles,
|
|
168
265
|
headerStyles,
|
|
169
266
|
contentStyles,
|
|
170
267
|
footerStyles,
|
|
268
|
+
open,
|
|
269
|
+
close,
|
|
171
270
|
};
|
|
172
271
|
},
|
|
173
272
|
});
|
|
@@ -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,97 @@ 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]',
|
|
42
|
+
];
|
|
43
|
+
|
|
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
|
+
'pt-[56px]',
|
|
64
|
+
'pb-md+',
|
|
65
|
+
|
|
66
|
+
// Theme
|
|
67
|
+
'text-outline',
|
|
68
|
+
'dark:text-outline-dark',
|
|
15
69
|
];
|
|
16
70
|
|
|
17
|
-
export const
|
|
71
|
+
export const SidebarSides: Record<OrSidebarPlacement, string[]> = {
|
|
72
|
+
[OrSidebarPlacement.left]: [
|
|
73
|
+
// Borders
|
|
74
|
+
'border-r-[1px]',
|
|
75
|
+
'border-r-solid',
|
|
76
|
+
'border-r-outline-variant dark:border-r-outline-variant-dark',
|
|
77
|
+
],
|
|
78
|
+
[OrSidebarPlacement.right]: [
|
|
79
|
+
// Borders
|
|
80
|
+
'border-l-[1px]',
|
|
81
|
+
'border-l-solid',
|
|
82
|
+
'border-l-outline-variant dark:border-l-outline-variant-dark',
|
|
83
|
+
],
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const SidebarToolbarSides: Record<OrSidebarPlacement, string[]> = {
|
|
18
87
|
[OrSidebarPlacement.left]: [
|
|
19
88
|
// Borders
|
|
20
89
|
'border-r-[1px]',
|
|
21
90
|
'border-r-solid',
|
|
22
|
-
'border-r-
|
|
91
|
+
'border-r-outline-variant dark:border-r-outline-variant-dark',
|
|
23
92
|
],
|
|
24
93
|
[OrSidebarPlacement.right]: [
|
|
25
94
|
// Borders
|
|
26
95
|
'border-l-[1px]',
|
|
27
96
|
'border-l-solid',
|
|
28
|
-
'border-l-
|
|
97
|
+
'border-l-outline-variant dark:border-l-outline-variant-dark',
|
|
29
98
|
],
|
|
30
99
|
};
|
|
31
100
|
|
|
@@ -36,7 +105,7 @@ export const SidebarResize: string[] = [
|
|
|
36
105
|
'z-[1]',
|
|
37
106
|
|
|
38
107
|
// Box
|
|
39
|
-
'w-
|
|
108
|
+
'w-sm+',
|
|
40
109
|
'h-[100%]',
|
|
41
110
|
|
|
42
111
|
// Cursor
|
|
@@ -50,7 +119,7 @@ export const SidebarResizeSides: Record<OrSidebarPlacement, string[]> = {
|
|
|
50
119
|
|
|
51
120
|
// Borders
|
|
52
121
|
'hover:border-r-2',
|
|
53
|
-
'hover:border-r-primary hover:dark:border-r-primary-dark',
|
|
122
|
+
'hover:border-r-primary-hover hover:dark:border-r-primary-hover-dark',
|
|
54
123
|
|
|
55
124
|
// Transition
|
|
56
125
|
'transition-[border-right]',
|
|
@@ -61,23 +130,42 @@ export const SidebarResizeSides: Record<OrSidebarPlacement, string[]> = {
|
|
|
61
130
|
|
|
62
131
|
// Borders
|
|
63
132
|
'hover:border-l-2',
|
|
64
|
-
'hover:border-l-primary hover:dark:border-l-primary-dark',
|
|
133
|
+
'hover:border-l-primary-hover hover:dark:border-l-primary-hover-dark',
|
|
65
134
|
|
|
66
135
|
// Transition
|
|
67
136
|
'transition-[border-left]',
|
|
68
137
|
],
|
|
69
138
|
};
|
|
70
139
|
|
|
140
|
+
export const SidebarCollapseButton: string[] = [
|
|
141
|
+
// Position
|
|
142
|
+
'absolute',
|
|
143
|
+
'top-md',
|
|
144
|
+
'inset-y-none',
|
|
145
|
+
'z-[1]',
|
|
146
|
+
];
|
|
147
|
+
|
|
148
|
+
export const SidebarCollapseButtonSides: Record<OrSidebarPlacement, string[]> = {
|
|
149
|
+
[OrSidebarPlacement.left]: [
|
|
150
|
+
// Position
|
|
151
|
+
'-right-[12px]',
|
|
152
|
+
],
|
|
153
|
+
[OrSidebarPlacement.right]: [
|
|
154
|
+
// Position
|
|
155
|
+
'-left-[12px]',
|
|
156
|
+
],
|
|
157
|
+
};
|
|
158
|
+
|
|
71
159
|
export const SidebarResizingSides: Record<OrSidebarPlacement, string[]> = {
|
|
72
160
|
[OrSidebarPlacement.left]: [
|
|
73
161
|
// Borders
|
|
74
162
|
'border-r-2',
|
|
75
|
-
'border-r-primary dark:border-r-primary-dark',
|
|
163
|
+
'border-r-primary-hover dark:border-r-primary-hover-dark',
|
|
76
164
|
],
|
|
77
165
|
[OrSidebarPlacement.right]: [
|
|
78
166
|
// Borders
|
|
79
167
|
'border-l-2',
|
|
80
|
-
'border-l-primary dark:border-l-primary-dark',
|
|
168
|
+
'border-l-primary-hover dark:border-l-primary-hover-dark',
|
|
81
169
|
],
|
|
82
170
|
};
|
|
83
171
|
|
|
@@ -86,14 +174,24 @@ export const SidebarMain: string[] = [
|
|
|
86
174
|
'flex',
|
|
87
175
|
'flex-col',
|
|
88
176
|
'grow',
|
|
177
|
+
'overflow-x-hidden',
|
|
89
178
|
|
|
90
179
|
// Box
|
|
91
180
|
'min-h-0',
|
|
92
181
|
];
|
|
93
182
|
|
|
94
183
|
export const SidebarHeader: string[] = [
|
|
184
|
+
// Layout
|
|
185
|
+
'shrink-0',
|
|
186
|
+
'overflow-hidden',
|
|
187
|
+
|
|
95
188
|
// Sizing
|
|
96
189
|
'p-md',
|
|
190
|
+
|
|
191
|
+
// Typography
|
|
192
|
+
'typography-headline-2',
|
|
193
|
+
'whitespace-nowrap',
|
|
194
|
+
'text-ellipsis',
|
|
97
195
|
];
|
|
98
196
|
|
|
99
197
|
export const SidebarContent: string[] = [
|
|
@@ -106,11 +204,65 @@ export const SidebarContent: string[] = [
|
|
|
106
204
|
];
|
|
107
205
|
|
|
108
206
|
export const SidebarFooter: string[] = [
|
|
207
|
+
// Layout
|
|
208
|
+
'shrink-0',
|
|
209
|
+
'overflow-x-hidden',
|
|
210
|
+
|
|
109
211
|
// Sizing
|
|
110
212
|
'p-md',
|
|
111
213
|
|
|
112
214
|
// Borders
|
|
113
215
|
'border-t-[1px]',
|
|
114
216
|
'border-t-solid',
|
|
115
|
-
'border-t-
|
|
217
|
+
'border-t-outline-variant dark:border-t-outline-variant-dark',
|
|
218
|
+
];
|
|
219
|
+
|
|
220
|
+
export const CollapseButtonContainer: string[] = [
|
|
221
|
+
// Box
|
|
222
|
+
'w-[24px]',
|
|
223
|
+
'h-[24px]',
|
|
224
|
+
'rounded-full',
|
|
225
|
+
|
|
226
|
+
// Theme
|
|
227
|
+
'text-primary dark:text-primary-dark',
|
|
228
|
+
'bg-background dark:bg-background-dark',
|
|
229
|
+
];
|
|
230
|
+
|
|
231
|
+
export const CollapseButton: string[] = [
|
|
232
|
+
// Box
|
|
233
|
+
'w-[24px]',
|
|
234
|
+
'h-[24px]',
|
|
235
|
+
|
|
236
|
+
// Typography
|
|
237
|
+
'!text-[16px]',
|
|
238
|
+
|
|
239
|
+
// Borders
|
|
240
|
+
'!border-[1px]',
|
|
241
|
+
'!border-solid',
|
|
242
|
+
|
|
243
|
+
// Theme
|
|
244
|
+
'!text-primary dark:!text-primary-dark',
|
|
245
|
+
'!bg-background dark:!bg-background-dark',
|
|
246
|
+
'!border-outline-variant dark:!border-outline-variant-dark',
|
|
247
|
+
'!outline-none',
|
|
248
|
+
|
|
249
|
+
// Theme (hover)
|
|
250
|
+
'hover:!text-primary hover:dark:!text-primary-dark',
|
|
251
|
+
'hover:!bg-primary-opacity-0-08 dark:hover:!bg-primary-opacity-0-08-dark',
|
|
252
|
+
'hover:!border-outline dark:hover:!border-outline-dark',
|
|
253
|
+
|
|
254
|
+
// Theme (active)
|
|
255
|
+
'active:!text-primary active:dark:!text-primary-dark',
|
|
256
|
+
'active:!bg-primary-opacity-0-12 dark:active:!bg-primary-opacity-0-12-dark',
|
|
257
|
+
'active:!border-primary dark:active:!border-primary-dark',
|
|
258
|
+
|
|
259
|
+
// Theme (focus)
|
|
260
|
+
'focus:!text-primary focus:dark:!text-primary-dark',
|
|
261
|
+
'focus:!bg-primary-opacity-0-12 dark:focus:!bg-primary-opacity-0-12-dark',
|
|
262
|
+
'focus:!border-outline dark:focus:!border-outline-dark',
|
|
263
|
+
|
|
264
|
+
// Theme (disabled)
|
|
265
|
+
'disabled:!text-on-disabled disabled:dark:!text-on-disabled-dark',
|
|
266
|
+
'disabled:!bg-background disabled:dark:!bg-background-dark',
|
|
267
|
+
'disabled:!border-outline-variant disabled:dark:!border-outline-variant-dark',
|
|
116
268
|
];
|