@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.
Files changed (47) hide show
  1. package/dist/bundled/v2/OrSidebar-efd4b98a.js +464 -0
  2. package/dist/bundled/v2/components/index.js +1 -1
  3. package/dist/bundled/v2/components/or-sidebar-v3/OrSidebar.stories3.d.ts +36 -1
  4. package/dist/bundled/v2/components/or-sidebar-v3/OrSidebar.vue.d.ts +49 -4
  5. package/dist/bundled/v2/components/or-sidebar-v3/OrSidebarCollapseButton.stories3.d.ts +12 -0
  6. package/dist/bundled/v2/components/or-sidebar-v3/OrSidebarCollapseButton.vue.d.ts +53 -0
  7. package/dist/bundled/v2/components/or-sidebar-v3/index.js +12 -1
  8. package/dist/bundled/v2/components/or-sidebar-v3/styles.d.ts +9 -1
  9. package/dist/bundled/v2/index.js +2 -2
  10. package/dist/bundled/v3/OrSidebar.vue_vue_type_script_lang-66f8f0fd.js +356 -0
  11. package/dist/bundled/v3/components/index.js +1 -1
  12. package/dist/bundled/v3/components/or-sidebar-v3/OrSidebar.stories3.d.ts +36 -1
  13. package/dist/bundled/v3/components/or-sidebar-v3/OrSidebar.vue.d.ts +49 -4
  14. package/dist/bundled/v3/components/or-sidebar-v3/OrSidebarCollapseButton.stories3.d.ts +12 -0
  15. package/dist/bundled/v3/components/or-sidebar-v3/OrSidebarCollapseButton.vue.d.ts +53 -0
  16. package/dist/bundled/v3/components/or-sidebar-v3/index.js +14 -1
  17. package/dist/bundled/v3/components/or-sidebar-v3/styles.d.ts +9 -1
  18. package/dist/bundled/v3/index.js +25 -9
  19. package/dist/esm/v2/OrSidebar-b7202f16.js +461 -0
  20. package/dist/esm/v2/components/index.js +1 -1
  21. package/dist/esm/v2/components/or-sidebar-v3/OrSidebar.stories3.d.ts +36 -1
  22. package/dist/esm/v2/components/or-sidebar-v3/OrSidebar.vue.d.ts +49 -4
  23. package/dist/esm/v2/components/or-sidebar-v3/OrSidebarCollapseButton.stories3.d.ts +12 -0
  24. package/dist/esm/v2/components/or-sidebar-v3/OrSidebarCollapseButton.vue.d.ts +53 -0
  25. package/dist/esm/v2/components/or-sidebar-v3/index.js +12 -1
  26. package/dist/esm/v2/components/or-sidebar-v3/styles.d.ts +9 -1
  27. package/dist/esm/v2/index.js +1 -1
  28. package/dist/esm/v3/OrSidebar-3567338f.js +396 -0
  29. package/dist/esm/v3/components/index.js +1 -1
  30. package/dist/esm/v3/components/or-sidebar-v3/OrSidebar.stories3.d.ts +36 -1
  31. package/dist/esm/v3/components/or-sidebar-v3/OrSidebar.vue.d.ts +49 -4
  32. package/dist/esm/v3/components/or-sidebar-v3/OrSidebarCollapseButton.stories3.d.ts +12 -0
  33. package/dist/esm/v3/components/or-sidebar-v3/OrSidebarCollapseButton.vue.d.ts +53 -0
  34. package/dist/esm/v3/components/or-sidebar-v3/index.js +11 -1
  35. package/dist/esm/v3/components/or-sidebar-v3/styles.d.ts +9 -1
  36. package/dist/esm/v3/index.js +1 -1
  37. package/package.json +2 -3
  38. package/src/components/or-sidebar-v3/OrSidebar.docs.mdx +6 -0
  39. package/src/components/or-sidebar-v3/OrSidebar.stories3.ts +253 -12
  40. package/src/components/or-sidebar-v3/OrSidebar.vue +130 -23
  41. package/src/components/or-sidebar-v3/OrSidebarCollapseButton.stories3.ts +48 -0
  42. package/src/components/or-sidebar-v3/OrSidebarCollapseButton.vue +74 -0
  43. package/src/components/or-sidebar-v3/styles.ts +164 -9
  44. package/dist/bundled/v2/OrSidebar-c95ef614.js +0 -230
  45. package/dist/bundled/v3/OrSidebar.vue_vue_type_script_lang-ce0b152c.js +0 -181
  46. package/dist/esm/v2/OrSidebar-fabc7bc9.js +0 -228
  47. 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
- ref="resizeBar"
9
- :class="resizeStyles"
10
- />
11
- <div :class="mainStyles">
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="$slots.header"
14
- :class="headerStyles"
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
- <slot name="header" />
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 :class="contentStyles">
19
- <slot />
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="$slots.footer"
24
- :class="footerStyles"
50
+ v-if="side === 'left' && isShowingToolbar"
51
+ :class="toolbarStyles"
25
52
  >
26
- <slot name="footer" />
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
- SidebarRootSides,
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
- required: false,
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
- required: false,
61
- default: 350,
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: ['change:width'],
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
- ...SidebarRootSides[props.side],
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
- const { width: maximumWidth } = useElementBounding(parentContainer);
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 SidebarRootSides: Record<OrSidebarPlacement, string[]> = {
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-secondary dark:border-r-secondary-dark',
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-secondary dark:border-l-secondary-dark',
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-[12px]',
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-secondary dark:border-t-secondary-dark',
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
  ];