@youcan/celeste 0.6.53 → 0.6.55

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 (43) hide show
  1. package/dist/celeste.css +874 -1348
  2. package/dist/cjs/chunks/index2.js +28 -0
  3. package/dist/cjs/color-picker.js +6 -4
  4. package/dist/cjs/color-swatch.js +3 -3
  5. package/dist/cjs/file-upload-area.js +280 -0
  6. package/dist/cjs/index.js +15 -9
  7. package/dist/components/color-picker/color-picker.d.ts +2 -0
  8. package/dist/components/color-picker/color-swatch.d.ts +1 -2
  9. package/dist/components/combobox/combobox-list.d.ts +1 -1
  10. package/dist/components/dropdown-menu/dropdown-menu-sub-content.d.ts +2 -2
  11. package/dist/components/file-upload/file-upload-area.d.ts +43 -0
  12. package/dist/components/file-upload/index.d.ts +2 -0
  13. package/dist/components/index.d.ts +1 -1
  14. package/dist/components/popover/popover-content.d.ts +2 -2
  15. package/dist/es/chunks/index2.js +30 -2
  16. package/dist/es/color-picker.js +6 -4
  17. package/dist/es/color-swatch.js +3 -3
  18. package/dist/es/file-upload-area.js +281 -0
  19. package/dist/es/index.js +66 -60
  20. package/package.json +9 -9
  21. package/src/components/color-picker/color-picker.vue +4 -0
  22. package/src/components/color-picker/color-swatch.vue +1 -2
  23. package/src/components/file-upload/file-upload-area.vue +229 -0
  24. package/src/components/file-upload/index.ts +2 -0
  25. package/src/components/file-upload/stories/file-upload-area.stories.ts +76 -0
  26. package/src/components/index.ts +1 -1
  27. package/dist/cjs/context-menu-item.js +0 -134
  28. package/dist/cjs/dropdown-item.js +0 -99
  29. package/dist/cjs/dropdown.js +0 -290
  30. package/dist/components/dropdown/context-menu-item.d.ts +0 -39
  31. package/dist/components/dropdown/dropdown-item.d.ts +0 -30
  32. package/dist/components/dropdown/dropdown.d.ts +0 -55
  33. package/dist/components/dropdown/index.d.ts +0 -6
  34. package/dist/es/context-menu-item.js +0 -135
  35. package/dist/es/dropdown-item.js +0 -100
  36. package/dist/es/dropdown.js +0 -291
  37. package/src/components/dropdown/context-menu-item.vue +0 -317
  38. package/src/components/dropdown/dropdown-item.vue +0 -184
  39. package/src/components/dropdown/dropdown.vue +0 -650
  40. package/src/components/dropdown/index.ts +0 -8
  41. package/src/components/dropdown/stories/context-menu-item.stories.ts +0 -51
  42. package/src/components/dropdown/stories/dropdown-item.stories.ts +0 -33
  43. package/src/components/dropdown/stories/dropdown.stories.ts +0 -53
@@ -1,291 +0,0 @@
1
- import { defineComponent, mergeModels, useModel, ref, computed, watch, openBlock, createElementBlock, withKeys, createVNode, unref, withCtx, normalizeClass, createElementVNode, createCommentVNode, renderSlot, normalizeProps, guardReactiveProps, toDisplayString, createBlock, createSlots, Fragment, renderList } from "vue";
2
- import { c as clsx } from "./chunks/clsx.js";
3
- import { a4 as Hv, j as jv, a6 as Uv, a2 as Xv, a3 as Jv, a5 as tm, Z as Zv, Y as qv, a0 as Qv } from "./chunks/index.js";
4
- import Badge from "./badge.js";
5
- import TextInput from "./text-input.js";
6
- import DropdownItem from "./dropdown-item.js";
7
- import { _ as _export_sfc } from "./chunks/_plugin-vue_export-helper.js";
8
- const _hoisted_1 = { class: "celeste-dropdown-anchor-trigger-prefix" };
9
- const _hoisted_2 = {
10
- key: 0,
11
- class: "celeste-dropdown-anchor-trigger-prefix-selected"
12
- };
13
- const _hoisted_3 = { key: 1 };
14
- const _hoisted_4 = ["src"];
15
- const _hoisted_5 = {
16
- key: 0,
17
- class: "celeste-dropdown-input"
18
- };
19
- const _hoisted_6 = { key: 0 };
20
- const _hoisted_7 = { key: 1 };
21
- const _hoisted_8 = {
22
- key: 2,
23
- class: "celeste-input-badge"
24
- };
25
- const _hoisted_9 = {
26
- key: 0,
27
- class: "celeste-dropdown-search"
28
- };
29
- const _hoisted_10 = ["src"];
30
- const _sfc_main = /* @__PURE__ */ defineComponent({
31
- __name: "dropdown",
32
- props: /* @__PURE__ */ mergeModels({
33
- disabled: { type: Boolean, default: false },
34
- icon: {},
35
- placeholder: { default: "Placeholder" },
36
- error: { type: Boolean },
37
- size: { default: "sm" },
38
- type: { default: "normal" },
39
- position: { default: "bottom" },
40
- align: { default: "start" },
41
- multiple: { type: Boolean, default: false },
42
- emptyLabel: { default: "No options available" },
43
- searchable: { type: Boolean, default: false },
44
- options: {},
45
- badgeProps: {}
46
- }, {
47
- "modelValue": {},
48
- "modelModifiers": {}
49
- }),
50
- emits: ["update:modelValue"],
51
- setup(__props) {
52
- const props = __props;
53
- const model = useModel(__props, "modelValue");
54
- const searched = ref("");
55
- const isSearchedFocused = ref(false);
56
- const isOpen = ref(false);
57
- function toggleDropdown() {
58
- isOpen.value = true;
59
- focusedItemIndex.value = -1;
60
- }
61
- const filteredOptions = computed(() => {
62
- if (!props.searchable || !searched.value)
63
- return props.options;
64
- return props.options.filter(
65
- (option) => option.label.toLowerCase().includes(searched.value.toLowerCase())
66
- );
67
- });
68
- function optionIsSelected(option) {
69
- if (!props.multiple) {
70
- return model.value && !Array.isArray(model.value) ? option.value === model.value.value : false;
71
- }
72
- return Array.isArray(model.value) ? model.value.some((selectedOption) => selectedOption.value === option.value) : false;
73
- }
74
- function toggleSelection(isSelected, option) {
75
- if (props.multiple && Array.isArray(model.value)) {
76
- model.value = isSelected ? model.value.filter((o) => o.value !== option.value) : [...model.value, option];
77
- return;
78
- }
79
- model.value = isSelected ? void 0 : option;
80
- }
81
- const mergedBadgeProps = computed(() => ({
82
- ...props.badgeProps,
83
- disabled: props.disabled
84
- }));
85
- const focusedItemIndex = ref(-1);
86
- function handleKeydown(event) {
87
- if (!isOpen.value)
88
- return;
89
- switch (event.key) {
90
- case "ArrowDown":
91
- event.preventDefault();
92
- if (focusedItemIndex.value < filteredOptions.value.length - 1) {
93
- focusedItemIndex.value++;
94
- } else {
95
- focusedItemIndex.value = 0;
96
- }
97
- break;
98
- case "ArrowUp":
99
- event.preventDefault();
100
- if (focusedItemIndex.value > 0) {
101
- focusedItemIndex.value--;
102
- } else {
103
- focusedItemIndex.value = filteredOptions.value.length - 1;
104
- }
105
- break;
106
- case "Enter":
107
- event.preventDefault();
108
- if (focusedItemIndex.value >= 0 && focusedItemIndex.value < filteredOptions.value.length) {
109
- const option = filteredOptions.value[focusedItemIndex.value];
110
- toggleSelection(optionIsSelected(option), option);
111
- }
112
- break;
113
- }
114
- }
115
- watch(filteredOptions, () => {
116
- if (focusedItemIndex.value >= filteredOptions.value.length) {
117
- focusedItemIndex.value = filteredOptions.value.length - 1;
118
- }
119
- });
120
- return (_ctx, _cache) => {
121
- return openBlock(), createElementBlock("div", {
122
- class: "celeste-dropdown-wrapper",
123
- tabindex: "0",
124
- onKeydown: [
125
- withKeys(toggleDropdown, ["enter"]),
126
- withKeys(toggleDropdown, ["space"])
127
- ]
128
- }, [
129
- createVNode(unref(Hv), {
130
- modelValue: model.value,
131
- "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => model.value = $event),
132
- open: isOpen.value,
133
- disabled: _ctx.disabled,
134
- multiple: props.multiple,
135
- class: "celeste-dropdown-root",
136
- "display-value": (v) => v.label,
137
- "onUpdate:open": _cache[5] || (_cache[5] = (val) => isOpen.value = val),
138
- onKeydown: handleKeydown
139
- }, {
140
- default: withCtx(() => [
141
- createVNode(unref(jv), { tabindex: "0" }, {
142
- default: withCtx(() => [
143
- createVNode(unref(Uv), {
144
- class: normalizeClass(unref(clsx)(
145
- "celeste-dropdown-anchor-trigger",
146
- `celeste-dropdown-anchor-trigger-size-${props.size}`,
147
- `celeste-dropdown-anchor-trigger-type-${props.type}`,
148
- { "celeste-dropdown-anchor-trigger-error": props.error },
149
- { "celeste-dropdown-anchor-trigger-disabled": props.disabled },
150
- { "celeste-dropdown-anchor-trigger-filled": model.value },
151
- { "celeste-dropdown-anchor-trigger-focused": isOpen.value }
152
- )),
153
- as: "div",
154
- disabled: _ctx.disabled
155
- }, {
156
- default: withCtx(() => [
157
- createElementVNode("div", _hoisted_1, [
158
- model.value && !Array.isArray(model.value) ? (openBlock(), createElementBlock("div", _hoisted_2, [
159
- model.value.icon ? (openBlock(), createElementBlock("i", {
160
- key: 0,
161
- class: normalizeClass(model.value.icon)
162
- }, null, 2)) : createCommentVNode("", true),
163
- model.value.image ? (openBlock(), createElementBlock("div", _hoisted_3, [
164
- renderSlot(_ctx.$slots, "image", normalizeProps(guardReactiveProps({ model: model.value })), () => [
165
- createElementVNode("img", {
166
- src: model.value.image,
167
- alt: "Selected option",
168
- class: "selected-dropdown-image"
169
- }, null, 8, _hoisted_4)
170
- ], true)
171
- ])) : createCommentVNode("", true)
172
- ])) : renderSlot(_ctx.$slots, "prefix", {
173
- key: 1,
174
- class: "celeste-dropdown-anchor-trigger-prefix-default"
175
- }, void 0, true)
176
- ]),
177
- _ctx.type !== "inline" ? (openBlock(), createElementBlock("div", _hoisted_5, [
178
- _ctx.multiple ? (openBlock(), createElementBlock("span", _hoisted_6, toDisplayString(_ctx.placeholder), 1)) : (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString(model.value && !Array.isArray(model.value) ? model.value.label : props.placeholder), 1)),
179
- mergedBadgeProps.value ? (openBlock(), createElementBlock("span", _hoisted_8, [
180
- createVNode(Badge, normalizeProps(guardReactiveProps(mergedBadgeProps.value)), null, 16)
181
- ])) : createCommentVNode("", true)
182
- ])) : createCommentVNode("", true),
183
- _cache[6] || (_cache[6] = createElementVNode("div", { class: "celeste-dropdown-trigger" }, [
184
- createElementVNode("i", { class: "i-celeste-arrow-down-s-line" })
185
- ], -1))
186
- ]),
187
- _: 3
188
- }, 8, ["class", "disabled"])
189
- ]),
190
- _: 3
191
- }),
192
- !_ctx.disabled ? (openBlock(), createBlock(unref(Xv), {
193
- key: 0,
194
- dismissable: "",
195
- "avoid-collisions": true,
196
- class: normalizeClass(["celeste-dropdown-content", unref(clsx)(
197
- "celeste-dropdown-content",
198
- `celeste-dropdown-content-size-${_ctx.position}`,
199
- `celeste-dropdown-content-align-${_ctx.align}`
200
- )])
201
- }, {
202
- default: withCtx(() => [
203
- createVNode(unref(Jv), { class: "celeste-dropdown-items-viewport" }, {
204
- default: withCtx(() => [
205
- _ctx.searchable ? (openBlock(), createElementBlock("div", _hoisted_9, [
206
- createVNode(TextInput, {
207
- modelValue: searched.value,
208
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => searched.value = $event),
209
- type: "search",
210
- size: "sm",
211
- placeholder: "Search",
212
- onFocus: _cache[2] || (_cache[2] = ($event) => isSearchedFocused.value = true),
213
- onBlur: _cache[3] || (_cache[3] = ($event) => isSearchedFocused.value = false)
214
- }, createSlots({
215
- prefix: withCtx(() => [
216
- _cache[7] || (_cache[7] = createElementVNode("i", { class: "i-celeste-search-2-line" }, null, -1))
217
- ]),
218
- _: 2
219
- }, [
220
- isSearchedFocused.value ? {
221
- name: "suffix",
222
- fn: withCtx(() => [
223
- createElementVNode("div", {
224
- onClick: _cache[0] || (_cache[0] = () => searched.value = "")
225
- }, _cache[8] || (_cache[8] = [
226
- createElementVNode("i", { class: "i-celeste-close-line" }, null, -1)
227
- ]))
228
- ]),
229
- key: "0"
230
- } : void 0
231
- ]), 1032, ["modelValue"]),
232
- createVNode(unref(tm), { class: "celeste-dropdown-separator" })
233
- ])) : createCommentVNode("", true),
234
- createVNode(unref(Zv), { class: "celeste-dropdown-empty-list" }),
235
- createVNode(unref(qv), { class: "celeste-dropdown-items-group" }, {
236
- default: withCtx(() => [
237
- (openBlock(true), createElementBlock(Fragment, null, renderList(filteredOptions.value, (option, index) => {
238
- return openBlock(), createBlock(unref(Qv), {
239
- key: option.value,
240
- value: option,
241
- disabled: _ctx.disabled,
242
- class: "celeste-dropdown-item",
243
- tabindex: "0"
244
- }, {
245
- default: withCtx(() => [
246
- createVNode(DropdownItem, {
247
- label: option.label,
248
- checkbox: props.multiple,
249
- selected: optionIsSelected(option),
250
- disabled: props.disabled,
251
- focused: index === focusedItemIndex.value
252
- }, {
253
- prefix: withCtx(() => [
254
- option.icon ? (openBlock(), createElementBlock("i", {
255
- key: 0,
256
- class: normalizeClass(option.icon)
257
- }, null, 2)) : createCommentVNode("", true),
258
- option.image ? (openBlock(), createElementBlock("img", {
259
- key: 1,
260
- src: option.image,
261
- alt: "option",
262
- class: "celeste-dropdown-item-image"
263
- }, null, 8, _hoisted_10)) : createCommentVNode("", true)
264
- ]),
265
- _: 2
266
- }, 1032, ["label", "checkbox", "selected", "disabled", "focused"]),
267
- createVNode(unref(tm))
268
- ]),
269
- _: 2
270
- }, 1032, ["value", "disabled"]);
271
- }), 128))
272
- ]),
273
- _: 1
274
- })
275
- ]),
276
- _: 1
277
- })
278
- ]),
279
- _: 1
280
- }, 8, ["class"])) : createCommentVNode("", true)
281
- ]),
282
- _: 3
283
- }, 8, ["modelValue", "open", "disabled", "multiple", "display-value"])
284
- ], 32);
285
- };
286
- }
287
- });
288
- const dropdown = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-13b7b76a"]]);
289
- export {
290
- dropdown as default
291
- };
@@ -1,317 +0,0 @@
1
- <script setup lang="ts">
2
- import clsx from 'clsx';
3
- import { SwitchRoot, SwitchThumb } from 'radix-vue';
4
- import { computed } from 'vue';
5
- import Badge, { type BadgeProps } from '../badge/badge.vue';
6
- import Button, { type ButtonProps } from '../button/button.vue';
7
-
8
- const props = withDefaults(defineProps<ContextMenuItemProps>(), {
9
- disabled: false,
10
- focused: false,
11
- size: 'sm',
12
- });
13
-
14
- const selectedModel = defineModel<boolean>('selected');
15
-
16
- const mergedBadgeProps = computed(() => ({
17
- ...props.badgeProps,
18
- disabled: props.disabled,
19
- }));
20
-
21
- const mergedButtonProps = computed<ButtonProps | null>(() => {
22
- return props.buttonProps
23
- ? {
24
- size: props.size === 'sm' ? 'xxs' : 'xs',
25
- variant: props.size === 'sm' ? 'ghost' : 'lighter',
26
- disabled: props.disabled,
27
- ...props.buttonProps,
28
- }
29
- : null;
30
- });
31
- </script>
32
-
33
- <script lang="ts">
34
- export interface ContextMenuItemProps {
35
- size: 'sm' | 'lg';
36
- class?: string;
37
- label: string;
38
- sublabel?: string;
39
- description?: string;
40
- disabled?: boolean;
41
- focused?: boolean;
42
- badgeProps?: BadgeProps;
43
- shortcut?: string;
44
- toggle?: boolean;
45
- selected: boolean;
46
- buttonProps?: ButtonProps;
47
- rightIcon?: string;
48
- }
49
- </script>
50
-
51
- <template>
52
- <div
53
- tabindex="0"
54
- :aria-disabled="disabled"
55
- :class="clsx(
56
- 'celeste-context-menu-item',
57
- `celeste-context-menu-item-size-${size}`,
58
- { 'celeste-context-menu-item-disabled': disabled },
59
- { 'celeste-context-menu-item-selected': selected },
60
- { 'celeste-context-menu-item-focused': focused },
61
- )"
62
- >
63
- <div
64
- v-if="$slots.prefix"
65
- :class="clsx(
66
- 'celeste-context-menu-item-prefix',
67
- `celeste-context-menu-item-prefix-${size}`,
68
- )"
69
- >
70
- <slot name="prefix" />
71
- </div>
72
- <div class="celeste-context-menu-item-info">
73
- <div
74
- :class="clsx(
75
- 'celeste-context-menu-item-header',
76
- `celeste-context-menu-item-header-${size}`,
77
- )"
78
- >
79
- <span class="celeste-context-menu-item-label" v-html="label" />
80
- <span v-if="sublabel" class="celeste-context-menu-item-sublabel">{{ sublabel }}</span>
81
- </div>
82
- <p v-if="props.description && props.size === 'lg'" class="celeste-context-menu-item-description">
83
- {{ description }}
84
- </p>
85
- </div>
86
- <Badge
87
- v-if="mergedBadgeProps"
88
- v-bind="mergedBadgeProps"
89
- class="celeste-context-menu-item-badge"
90
- />
91
- <span v-if="shortcut" class="celeste-context-menu-item-shortcut">
92
- {{ shortcut }}
93
- </span>
94
- <span class="celeste-context-menu-item-switch">
95
- <SwitchRoot
96
- v-model:checked="selectedModel"
97
- :disabled="disabled"
98
- class="celeste-switch-root"
99
- >
100
- <SwitchThumb class="celeste-switch-thumb" />
101
- </SwitchRoot>
102
- </span>
103
- <span class="celeste-context-menu-item-button">
104
- <Button
105
- v-if="mergedButtonProps"
106
- v-bind="mergedButtonProps"
107
- >
108
- <slot name="button-label" />
109
- </Button>
110
- </span>
111
- <span v-if="rightIcon" class="celeste-context-menu-item-suffix">
112
- <i :class="rightIcon" />
113
- </span>
114
- </div>
115
- </template>
116
-
117
- <style lang="scss" scoped>
118
- .celeste-context-menu-item {
119
- display: flex;
120
- box-sizing: border-box;
121
- align-items: center;
122
- justify-content: space-between;
123
- min-width: 300px;
124
- min-height: 36px;
125
- padding: var(--spacing-8);
126
- transition-property: background-color, transform;
127
- transition-duration: var(--animation-fast);
128
- transition-timing-function: ease-out;
129
- border-radius: var(--radius-8);
130
- background: var(--color-bg-white-0);
131
- cursor: pointer;
132
- gap: var(--spacing-8);
133
-
134
- i {
135
- color: var(--color-icon-sub-600);
136
- }
137
-
138
- .celeste-context-menu-item-shortcut {
139
- padding: var(--spacing-2) var(--spacing-6);
140
- border: 1px solid var(--color-stroke-soft-200);
141
- border-radius: var(--spacing-4);
142
- background: var(--color-bg-white-0);
143
- color: var(--color-text-sub-600);
144
- font: var(--subheading-xs);
145
- }
146
-
147
- .celeste-context-menu-item-switch {
148
- :deep(.celeste-switch-root) {
149
- display: flex;
150
- position: relative;
151
- flex-shrink: 0;
152
- align-items: center;
153
- width: 30px;
154
- height: 18px;
155
- padding-inline: 7px;
156
- border: none;
157
- border-radius: var(--radius-full);
158
- background: var(--color-bg-soft-200);
159
- cursor: pointer;
160
-
161
- .celeste-switch-thumb {
162
- display: block;
163
- position: absolute;
164
- width: 4px;
165
- height: 4px;
166
- transition-property: background-color, box-shadow, transform;
167
- transition-duration: var(--animation-fast);
168
- transition-timing-function: ease-out;
169
- border-radius: var(--radius-full);
170
- outline: 4px solid var(--color-bg-white-0);
171
- background: var(--color-bg-soft-200);
172
- }
173
-
174
- &[data-state='checked'] {
175
- background: var(--color-primary-base);
176
-
177
- .celeste-switch-thumb {
178
- transform: translateX(12px);
179
- background: var(--color-primary-base);
180
- }
181
- }
182
-
183
- &[data-state='checked']:has([data-disabled]),
184
- &[data-state='unchecked']:has([data-disabled]) {
185
- border: 1px solid var(--color-bg-soft-200);
186
- background: var(--color-bg-white-0);
187
- cursor: not-allowed;
188
-
189
- .celeste-switch-thumb {
190
- outline-color: var(--color-bg-soft-200);
191
- background: var(--color-stroke-soft-200);
192
- }
193
- }
194
- }
195
- }
196
-
197
- &:hover:not(.celeste-context-menu-item-disabled) {
198
- background: var(--color-bg-weak-50);
199
-
200
- .celeste-context-menu-item-switch {
201
- :deep(.celeste-switch-root) {
202
- &[data-state='checked']:not([data-disabled]) {
203
- background: var(--color-primary-dark);
204
-
205
- .celeste-switch-thumb {
206
- background: var(--color-primary-dark);
207
- }
208
- }
209
-
210
- &[data-state='unchecked']:not([data-disabled]) {
211
- background: var(--color-bg-sub-300);
212
-
213
- .celeste-switch-thumb {
214
- background: var(--color-bg-sub-300);
215
- }
216
- }
217
- }
218
- }
219
- }
220
-
221
- &-focused {
222
- background: var(--color-bg-weak-50);
223
- }
224
-
225
- :deep(.celeste-input-wrapper) {
226
- gap: 0;
227
- }
228
-
229
- &-size-sm {
230
- height: 36px;
231
- }
232
-
233
- &-size-lg {
234
- height: 56px;
235
- }
236
-
237
- &-header {
238
- display: flex;
239
- align-items: center;
240
- gap: var(--spacing-4);
241
- }
242
-
243
- &-label {
244
- color: var(--color-text-strong-950);
245
- font: var(--paragraph-sm);
246
- }
247
-
248
- &-sublabel {
249
- color: var(--color-text-soft-400);
250
- font: var(--paragraph-xs);
251
- }
252
-
253
- &-description {
254
- margin: var(--spacing-0);
255
- color: var(--color-text-sub-600);
256
- font: var(--paragraph-xs);
257
- }
258
-
259
- .celeste-context-menu-item-prefix {
260
- display: flex;
261
- align-items: center;
262
- justify-content: center;
263
- color: var(--color-icon-sub-600);
264
-
265
- &-lg {
266
- padding: var(--spacing-10);
267
- border: 1px solid var(--color-stroke-soft-200);
268
- border-radius: var(--radius-full);
269
- box-shadow: var(--shadow-regular-xs);
270
- gap: var(--spacing-10);
271
- }
272
- }
273
-
274
- .celeste-context-menu-item-suffix {
275
- display: flex;
276
- align-items: center;
277
- justify-content: center;
278
- height: fit-content;
279
- color: var(--color-icon-sub-600);
280
- }
281
-
282
- &-disabled {
283
- background: var(--color-bg-white-0);
284
- color: var(--color-text-disabled-300);
285
- cursor: not-allowed;
286
-
287
- :deep(i) {
288
- color: var(--color-text-disabled-300);
289
- }
290
-
291
- .celeste-context-menu-item-label,
292
- .celeste-context-menu-item-sublabel,
293
- .celeste-context-menu-item-description,
294
- .celeste-context-menu-item-shortcut {
295
- color: var(--color-text-disabled-300);
296
- }
297
- }
298
-
299
- &-selected {
300
- background: var(--color-bg-weak-50);
301
- }
302
-
303
- .celeste-context-menu-item-info {
304
- display: flex;
305
- flex: 1 0 0;
306
- flex-direction: column;
307
- justify-content: center;
308
- gap: var(--spacing-4);
309
- }
310
-
311
- .celeste-context-menu-item-header-lg {
312
- .celeste-context-menu-item-label {
313
- font-weight: var(--font-weights-display-0);
314
- }
315
- }
316
- }
317
- </style>