@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.
Files changed (47) hide show
  1. package/dist/bundled/v2/OrSidebar-d445ecdd.js +463 -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 +13 -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-80e5dc4b.js +355 -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 +15 -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-097a4b55.js +460 -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 +13 -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-f6b2050b.js +395 -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 +12 -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 +230 -10
  40. package/src/components/or-sidebar-v3/OrSidebar.vue +123 -22
  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,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
- ...SidebarRootSides[props.side],
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
- const { width: maximumWidth } = useElementBounding(parentContainer);
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 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
  ];