marclayui 0.0.0-stage → 0.3.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 (71) hide show
  1. package/README.md +50 -3
  2. package/dist/index.cjs +1551 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.mts +394 -0
  5. package/dist/index.d.ts +394 -0
  6. package/dist/index.js +1483 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/theme-init.cjs +31 -0
  9. package/dist/theme-init.cjs.map +1 -0
  10. package/dist/theme-init.d.mts +8 -0
  11. package/dist/theme-init.d.ts +8 -0
  12. package/dist/theme-init.js +6 -0
  13. package/dist/theme-init.js.map +1 -0
  14. package/package.json +71 -4
  15. package/src/components/accordion/accordion.css +66 -0
  16. package/src/components/accordion/accordion.tsx +86 -0
  17. package/src/components/alert/alert.css +86 -0
  18. package/src/components/alert/alert.tsx +45 -0
  19. package/src/components/avatar/avatar.css +75 -0
  20. package/src/components/avatar/avatar.tsx +59 -0
  21. package/src/components/badge/badge.css +106 -0
  22. package/src/components/badge/badge.tsx +26 -0
  23. package/src/components/button/button.css +118 -0
  24. package/src/components/button/button.tsx +86 -0
  25. package/src/components/card/card.css +41 -0
  26. package/src/components/card/card.tsx +26 -0
  27. package/src/components/checks/checks.css +157 -0
  28. package/src/components/checks/checks.tsx +167 -0
  29. package/src/components/divider/divider.css +41 -0
  30. package/src/components/divider/divider.tsx +24 -0
  31. package/src/components/dropdown/dropdown.css +182 -0
  32. package/src/components/dropdown/dropdown.tsx +268 -0
  33. package/src/components/input/input.css +73 -0
  34. package/src/components/input/input.tsx +85 -0
  35. package/src/components/kbd/kbd.css +66 -0
  36. package/src/components/kbd/kbd.tsx +14 -0
  37. package/src/components/modal/modal.css +93 -0
  38. package/src/components/modal/modal.tsx +114 -0
  39. package/src/components/navbar/navbar.css +127 -0
  40. package/src/components/navbar/navbar.tsx +64 -0
  41. package/src/components/progress/progress.css +62 -0
  42. package/src/components/progress/progress.tsx +50 -0
  43. package/src/components/range/range.css +68 -0
  44. package/src/components/range/range.tsx +60 -0
  45. package/src/components/select/select.css +58 -0
  46. package/src/components/select/select.tsx +72 -0
  47. package/src/components/skeleton/skeleton.css +43 -0
  48. package/src/components/skeleton/skeleton.tsx +35 -0
  49. package/src/components/spinner/spinner.css +21 -0
  50. package/src/components/spinner/spinner.tsx +10 -0
  51. package/src/components/stack/stack.css +60 -0
  52. package/src/components/stack/stack.tsx +34 -0
  53. package/src/components/stat/stat.css +54 -0
  54. package/src/components/stat/stat.tsx +19 -0
  55. package/src/components/tabs/tabs.css +58 -0
  56. package/src/components/tabs/tabs.tsx +84 -0
  57. package/src/components/toast/toast.css +94 -0
  58. package/src/components/toast/toast.tsx +100 -0
  59. package/src/components/tooltip/tooltip.css +100 -0
  60. package/src/components/tooltip/tooltip.tsx +19 -0
  61. package/src/index.ts +115 -0
  62. package/src/styles/base.css +78 -0
  63. package/src/styles/index.css +27 -0
  64. package/src/styles/theme.css +246 -0
  65. package/src/theme-init.ts +6 -0
  66. package/src/theming/ThemeMenu.tsx +158 -0
  67. package/src/theming/ThemeProvider.tsx +234 -0
  68. package/src/theming/ThemeToggle.tsx +27 -0
  69. package/src/theming/presets.ts +33 -0
  70. package/src/theming/theming.css +155 -0
  71. package/src/utils/color.ts +58 -0
@@ -0,0 +1,157 @@
1
+ /* MarclayUI — Checkbox / Radio / Switch.
2
+ Native inputs stay in the DOM (keyboard + a11y); visuals are sibling spans. */
3
+ .mcl-check {
4
+ display: inline-flex;
5
+ align-items: center;
6
+ gap: 12px;
7
+ cursor: pointer;
8
+ user-select: none;
9
+ -webkit-tap-highlight-color: transparent;
10
+ }
11
+ .mcl-check:has(.mcl-check-input:disabled) {
12
+ cursor: not-allowed;
13
+ opacity: 0.55;
14
+ }
15
+ .mcl-check-input {
16
+ position: absolute;
17
+ width: 1px;
18
+ height: 1px;
19
+ margin: 0;
20
+ opacity: 0;
21
+ pointer-events: none;
22
+ }
23
+ .mcl-check-label {
24
+ font-size: 14px;
25
+ font-weight: 600;
26
+ color: var(--mcl-ink);
27
+ }
28
+
29
+ .mcl-check-box {
30
+ position: relative;
31
+ width: 24px;
32
+ height: 24px;
33
+ flex: none;
34
+ border-radius: 9px;
35
+ background: var(--mcl-bg);
36
+ box-shadow: var(--mcl-in-sm);
37
+ display: grid;
38
+ place-items: center;
39
+ transition: box-shadow 0.2s, background 0.2s;
40
+ }
41
+ .mcl-check-box::after {
42
+ content: "";
43
+ width: 10px;
44
+ height: 6px;
45
+ border-left: 2.5px solid var(--mcl-primary-ink);
46
+ border-bottom: 2.5px solid var(--mcl-primary-ink);
47
+ transform: rotate(-45deg) scale(0);
48
+ transform-origin: center;
49
+ margin-top: -2px;
50
+ transition: transform 0.18s var(--mcl-ease);
51
+ }
52
+ .mcl-check-input:checked + .mcl-check-box {
53
+ background: linear-gradient(145deg, var(--mcl-primary-2), var(--mcl-primary));
54
+ box-shadow: var(--mcl-out-xs), var(--mcl-clay-p);
55
+ }
56
+ .mcl-check-input:checked + .mcl-check-box::after {
57
+ transform: rotate(-45deg) scale(1);
58
+ }
59
+ /* indeterminate: a dash on the gradient dish */
60
+ .mcl-check-input:indeterminate + .mcl-check-box {
61
+ background: linear-gradient(145deg, var(--mcl-primary-2), var(--mcl-primary));
62
+ box-shadow: var(--mcl-out-xs), var(--mcl-clay-p);
63
+ }
64
+ .mcl-check-input:indeterminate + .mcl-check-box::after {
65
+ width: 10px;
66
+ height: 2.5px;
67
+ border: 0;
68
+ border-radius: 2px;
69
+ background: var(--mcl-primary-ink);
70
+ transform: none;
71
+ margin-top: 0;
72
+ }
73
+ .mcl-check-input:focus-visible + .mcl-check-box {
74
+ box-shadow: var(--mcl-in-sm), 0 0 0 2.5px var(--mcl-ring);
75
+ }
76
+ .mcl-check-disabled {
77
+ cursor: not-allowed;
78
+ }
79
+
80
+ /* checkbox group */
81
+ .mcl-check-group {
82
+ display: flex;
83
+ flex-direction: column;
84
+ gap: 12px;
85
+ }
86
+ .mcl-check-group-items {
87
+ display: flex;
88
+ flex-direction: column;
89
+ gap: 12px;
90
+ }
91
+ .mcl-check-group-all {
92
+ padding-bottom: 12px;
93
+ box-shadow: 0 1px 0 var(--mcl-hair);
94
+ }
95
+
96
+ /* radio: round box + round dot instead of the check tick */
97
+ .mcl-radio-box {
98
+ border-radius: 50%;
99
+ }
100
+ .mcl-radio-box::after {
101
+ width: 10px;
102
+ height: 10px;
103
+ border: 0;
104
+ border-radius: 50%;
105
+ background: var(--mcl-primary-ink);
106
+ transform: scale(0);
107
+ margin-top: 0;
108
+ }
109
+ .mcl-check-input:checked + .mcl-radio-box::after {
110
+ transform: scale(1);
111
+ }
112
+
113
+ /* switch */
114
+ .mcl-switch {
115
+ display: inline-flex;
116
+ }
117
+ .mcl-switch-input {
118
+ position: absolute;
119
+ width: 1px;
120
+ height: 1px;
121
+ margin: 0;
122
+ opacity: 0;
123
+ pointer-events: none;
124
+ }
125
+ .mcl-switch-track {
126
+ position: relative;
127
+ width: 52px;
128
+ height: 30px;
129
+ flex: none;
130
+ border-radius: 999px;
131
+ background: var(--mcl-bg);
132
+ box-shadow: var(--mcl-in-sm);
133
+ display: block;
134
+ transition: background 0.25s, box-shadow 0.25s;
135
+ }
136
+ .mcl-switch-knob {
137
+ position: absolute;
138
+ top: 4px;
139
+ left: 4px;
140
+ width: 22px;
141
+ height: 22px;
142
+ border-radius: 50%;
143
+ background: var(--mcl-bg);
144
+ box-shadow: var(--mcl-out-xs);
145
+ transition: transform 0.25s var(--mcl-ease), background 0.25s;
146
+ }
147
+ .mcl-switch-input:checked + .mcl-switch-track {
148
+ background: linear-gradient(145deg, var(--mcl-primary-2), var(--mcl-primary));
149
+ box-shadow: var(--mcl-clay-p);
150
+ }
151
+ .mcl-switch-input:checked + .mcl-switch-track .mcl-switch-knob {
152
+ transform: translateX(22px);
153
+ background: var(--mcl-primary-ink);
154
+ }
155
+ .mcl-switch-input:focus-visible + .mcl-switch-track {
156
+ box-shadow: var(--mcl-in-sm), 0 0 0 2.5px var(--mcl-ring);
157
+ }
@@ -0,0 +1,167 @@
1
+ "use client";
2
+
3
+ import React, { useEffect, useRef, useState } from "react";
4
+
5
+ function withLabel(input: React.ReactNode, label: React.ReactNode | undefined) {
6
+ if (label === undefined || label === null) return input;
7
+ return (
8
+ <label className="mcl-check">
9
+ {input}
10
+ <span className="mcl-check-label">{label}</span>
11
+ </label>
12
+ );
13
+ }
14
+
15
+ export interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "type"> {
16
+ label?: React.ReactNode;
17
+ /** Shows a dash instead of a tick — the classic "some children selected" state. */
18
+ indeterminate?: boolean;
19
+ }
20
+
21
+ export function Checkbox({ label, indeterminate = false, className = "", ...rest }: CheckboxProps) {
22
+ const inputRef = useRef<HTMLInputElement>(null);
23
+
24
+ useEffect(() => {
25
+ if (inputRef.current) inputRef.current.indeterminate = indeterminate;
26
+ }, [indeterminate]);
27
+
28
+ return withLabel(
29
+ <>
30
+ <input ref={inputRef} type="checkbox" className={`mcl-check-input ${className}`.trim()} {...rest} />
31
+ <span className="mcl-check-box" aria-hidden="true" />
32
+ </>,
33
+ label
34
+ );
35
+ }
36
+
37
+ export interface CheckboxGroupOption {
38
+ value: string;
39
+ label: React.ReactNode;
40
+ disabled?: boolean;
41
+ }
42
+
43
+ export interface CheckboxGroupProps {
44
+ options: CheckboxGroupOption[];
45
+ /** Controlled selected values. */
46
+ value?: string[];
47
+ /** Uncontrolled initial selection. */
48
+ defaultValue?: string[];
49
+ onChange?: (values: string[]) => void;
50
+ /** Renders a parent "select all" checkbox with an indeterminate state. */
51
+ selectAll?: boolean;
52
+ selectAllLabel?: React.ReactNode;
53
+ label?: React.ReactNode;
54
+ disabled?: boolean;
55
+ className?: string;
56
+ }
57
+
58
+ export function CheckboxGroup({
59
+ options,
60
+ value,
61
+ defaultValue = [],
62
+ onChange,
63
+ selectAll = false,
64
+ selectAllLabel = "Select all",
65
+ label,
66
+ disabled = false,
67
+ className = "",
68
+ }: CheckboxGroupProps) {
69
+ const [inner, setInner] = useState<string[]>(defaultValue);
70
+ const allRef = useRef<HTMLInputElement>(null);
71
+ const selected = value ?? inner;
72
+
73
+ const enabled = options.filter((o) => !o.disabled).map((o) => o.value);
74
+ const allOn = enabled.length > 0 && enabled.every((v) => selected.includes(v));
75
+ const someOn = enabled.some((v) => selected.includes(v));
76
+
77
+ useEffect(() => {
78
+ if (allRef.current) allRef.current.indeterminate = someOn && !allOn;
79
+ }, [someOn, allOn]);
80
+
81
+ const commit = (next: string[]) => {
82
+ setInner(next);
83
+ onChange?.(next);
84
+ };
85
+
86
+ const toggle = (v: string) => {
87
+ commit(selected.includes(v) ? selected.filter((x) => x !== v) : [...selected, v]);
88
+ };
89
+
90
+ const toggleAll = () => {
91
+ commit(allOn ? selected.filter((v) => !enabled.includes(v)) : Array.from(new Set([...selected, ...enabled])));
92
+ };
93
+
94
+ return (
95
+ <div
96
+ className={`mcl-check-group ${className}`.trim()}
97
+ role="group"
98
+ aria-label={typeof label === "string" ? label : undefined}
99
+ >
100
+ {label && <span className="mcl-label">{label}</span>}
101
+ {selectAll && (
102
+ <label className={`mcl-check mcl-check-group-all${disabled ? " mcl-check-disabled" : ""}`}>
103
+ <input
104
+ ref={allRef}
105
+ type="checkbox"
106
+ className="mcl-check-input"
107
+ checked={allOn}
108
+ disabled={disabled}
109
+ onChange={toggleAll}
110
+ />
111
+ <span className="mcl-check-box" aria-hidden="true" />
112
+ <span className="mcl-check-label">{selectAllLabel}</span>
113
+ </label>
114
+ )}
115
+ <div className="mcl-check-group-items">
116
+ {options.map((o) => (
117
+ <label key={o.value} className={`mcl-check${o.disabled || disabled ? " mcl-check-disabled" : ""}`}>
118
+ <input
119
+ type="checkbox"
120
+ className="mcl-check-input"
121
+ checked={selected.includes(o.value)}
122
+ disabled={o.disabled || disabled}
123
+ onChange={() => toggle(o.value)}
124
+ />
125
+ <span className="mcl-check-box" aria-hidden="true" />
126
+ <span className="mcl-check-label">{o.label}</span>
127
+ </label>
128
+ ))}
129
+ </div>
130
+ </div>
131
+ );
132
+ }
133
+
134
+ export interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement> {
135
+ label?: React.ReactNode;
136
+ }
137
+
138
+ export function Radio({ label, className = "", ...rest }: RadioProps) {
139
+ return withLabel(
140
+ <>
141
+ <input type="radio" className={`mcl-check-input ${className}`.trim()} {...rest} />
142
+ <span className="mcl-check-box mcl-radio-box" aria-hidden="true" />
143
+ </>,
144
+ label
145
+ );
146
+ }
147
+
148
+ export interface SwitchProps extends React.InputHTMLAttributes<HTMLInputElement> {
149
+ label?: React.ReactNode;
150
+ }
151
+
152
+ export function Switch({ label, className = "", ...rest }: SwitchProps) {
153
+ return withLabel(
154
+ <>
155
+ <input
156
+ type="checkbox"
157
+ role="switch"
158
+ className={`mcl-switch-input ${className}`.trim()}
159
+ {...rest}
160
+ />
161
+ <span className="mcl-switch-track" aria-hidden="true">
162
+ <span className="mcl-switch-knob" />
163
+ </span>
164
+ </>,
165
+ label
166
+ );
167
+ }
@@ -0,0 +1,41 @@
1
+ /* MarclayUI — Divider (inset hairline wells) */
2
+ .mcl-divider {
3
+ border: 0;
4
+ background: var(--mcl-bg);
5
+ box-shadow: var(--mcl-in-xs);
6
+ border-radius: 999px;
7
+ }
8
+ .mcl-divider-horizontal {
9
+ display: block;
10
+ width: 100%;
11
+ height: 6px;
12
+ margin: 26px 0;
13
+ }
14
+ .mcl-divider-vertical {
15
+ display: inline-block;
16
+ width: 6px;
17
+ height: auto;
18
+ align-self: stretch;
19
+ margin: 0 22px;
20
+ min-height: 40px;
21
+ }
22
+ .mcl-divider-label {
23
+ display: flex;
24
+ align-items: center;
25
+ gap: 16px;
26
+ margin: 26px 0;
27
+ color: var(--mcl-muted);
28
+ font-size: 12px;
29
+ font-weight: 700;
30
+ letter-spacing: 0.14em;
31
+ text-transform: uppercase;
32
+ }
33
+ .mcl-divider-label::before,
34
+ .mcl-divider-label::after {
35
+ content: "";
36
+ flex: 1;
37
+ height: 6px;
38
+ border-radius: 999px;
39
+ background: var(--mcl-bg);
40
+ box-shadow: var(--mcl-in-xs);
41
+ }
@@ -0,0 +1,24 @@
1
+ import React from "react";
2
+
3
+ export interface DividerProps extends React.HTMLAttributes<HTMLElement> {
4
+ orientation?: "horizontal" | "vertical";
5
+ /** Renders an inset line — text — inset line. */
6
+ label?: React.ReactNode;
7
+ }
8
+
9
+ export function Divider({ orientation = "horizontal", label, className = "", ...rest }: DividerProps) {
10
+ if (label !== undefined && label !== null) {
11
+ return (
12
+ <div className={`mcl-divider-label ${className}`.trim()} role="separator" {...rest}>
13
+ <span className="mcl-divider-label-text">{label}</span>
14
+ </div>
15
+ );
16
+ }
17
+ return (
18
+ <div
19
+ className={`mcl-divider mcl-divider-${orientation} ${className}`.trim()}
20
+ role="separator"
21
+ {...rest}
22
+ />
23
+ );
24
+ }
@@ -0,0 +1,182 @@
1
+ /* MarclayUI — Dropdown (custom popup menu, never the native browser list) */
2
+ .mcl-dropdown-shell {
3
+ position: relative;
4
+ display: inline-block;
5
+ max-width: 100%;
6
+ }
7
+ .mcl-dropdown-block {
8
+ display: block;
9
+ width: 100%;
10
+ }
11
+
12
+ /* trigger — an inset well like Select, but a real button */
13
+ .mcl-dropdown-trigger {
14
+ display: flex;
15
+ align-items: center;
16
+ justify-content: space-between;
17
+ gap: 12px;
18
+ width: 100%;
19
+ border: 0;
20
+ outline: none;
21
+ border-radius: var(--mcl-radius);
22
+ background: var(--mcl-bg);
23
+ box-shadow: var(--mcl-in-sm);
24
+ font-family: inherit;
25
+ font-size: 14.5px;
26
+ font-weight: 600;
27
+ color: var(--mcl-ink);
28
+ text-align: left;
29
+ cursor: pointer;
30
+ transition: box-shadow 0.25s;
31
+ }
32
+ .mcl-dropdown-trigger:focus-visible {
33
+ box-shadow: var(--mcl-in-sm), 0 0 0 2.5px var(--mcl-ring);
34
+ }
35
+ .mcl-dropdown-trigger:disabled {
36
+ opacity: 0.55;
37
+ cursor: not-allowed;
38
+ }
39
+ .mcl-dropdown-md {
40
+ padding: 14px 20px;
41
+ }
42
+ .mcl-dropdown-sm {
43
+ padding: 10px 16px;
44
+ font-size: 13.5px;
45
+ border-radius: var(--mcl-radius-sm);
46
+ }
47
+ .mcl-dropdown-lg {
48
+ padding: 17px 24px;
49
+ font-size: 16px;
50
+ border-radius: calc(var(--mcl-radius) + 4px);
51
+ }
52
+ .mcl-dropdown-value {
53
+ min-width: 0;
54
+ overflow: hidden;
55
+ text-overflow: ellipsis;
56
+ white-space: nowrap;
57
+ }
58
+ .mcl-dropdown-placeholder {
59
+ color: var(--mcl-muted);
60
+ opacity: 0.75;
61
+ }
62
+ .mcl-dropdown-chevron {
63
+ position: static;
64
+ width: 9px;
65
+ height: 9px;
66
+ flex: none;
67
+ border-right: 2.5px solid var(--mcl-muted);
68
+ border-bottom: 2.5px solid var(--mcl-muted);
69
+ transform: rotate(45deg);
70
+ transition: transform 0.25s var(--mcl-ease);
71
+ }
72
+ .mcl-dropdown-trigger[aria-expanded="true"] .mcl-dropdown-chevron {
73
+ transform: rotate(225deg);
74
+ }
75
+
76
+ /* popup menu */
77
+ .mcl-dropdown-menu {
78
+ position: absolute;
79
+ top: calc(100% + 8px);
80
+ left: 0;
81
+ right: 0;
82
+ z-index: 70;
83
+ min-width: 200px;
84
+ max-height: 300px;
85
+ overflow-y: auto;
86
+ padding: 10px;
87
+ background: var(--mcl-bg);
88
+ border-radius: calc(var(--mcl-radius) - 2px);
89
+ box-shadow: var(--mcl-out);
90
+ outline: none;
91
+ animation: mcl-menu-pop 0.18s var(--mcl-ease);
92
+ }
93
+ /* viewport-aware placement */
94
+ .mcl-dropdown-menu-up {
95
+ top: auto;
96
+ bottom: calc(100% + 8px);
97
+ animation-name: mcl-menu-pop-up;
98
+ }
99
+ .mcl-dropdown-menu-left {
100
+ left: auto;
101
+ right: 0;
102
+ }
103
+ @keyframes mcl-menu-pop-up {
104
+ from {
105
+ opacity: 0;
106
+ transform: translateY(6px) scale(0.98);
107
+ }
108
+ }
109
+ .mcl-dropdown-menu.mcl-dropdown-sm {
110
+ border-radius: var(--mcl-radius-sm);
111
+ }
112
+ @keyframes mcl-menu-pop {
113
+ from {
114
+ opacity: 0;
115
+ transform: translateY(-6px) scale(0.98);
116
+ }
117
+ }
118
+
119
+ .mcl-dropdown-item {
120
+ display: flex;
121
+ align-items: center;
122
+ gap: 12px;
123
+ padding: 11px 14px;
124
+ border-radius: var(--mcl-radius-sm);
125
+ font-size: 14px;
126
+ font-weight: 600;
127
+ color: var(--mcl-ink);
128
+ cursor: pointer;
129
+ user-select: none;
130
+ transition: box-shadow 0.15s, color 0.15s;
131
+ }
132
+ .mcl-dropdown-item-active {
133
+ box-shadow: var(--mcl-out-xs);
134
+ }
135
+ .mcl-dropdown-item-selected {
136
+ color: var(--mcl-primary);
137
+ box-shadow: var(--mcl-in-xs);
138
+ }
139
+ .mcl-dropdown-item-disabled {
140
+ opacity: 0.5;
141
+ pointer-events: none;
142
+ }
143
+ .mcl-dropdown-item-label {
144
+ min-width: 0;
145
+ flex: 1;
146
+ }
147
+ .mcl-dropdown-tick {
148
+ color: var(--mcl-primary);
149
+ font-weight: 700;
150
+ font-size: 13px;
151
+ }
152
+
153
+ /* multi-select checkbox inside the menu */
154
+ .mcl-dropdown-check {
155
+ position: relative;
156
+ width: 20px;
157
+ height: 20px;
158
+ flex: none;
159
+ border-radius: 8px;
160
+ background: var(--mcl-bg);
161
+ box-shadow: var(--mcl-in-sm);
162
+ display: grid;
163
+ place-items: center;
164
+ transition: background 0.2s, box-shadow 0.2s;
165
+ }
166
+ .mcl-dropdown-check::after {
167
+ content: "";
168
+ width: 9px;
169
+ height: 5px;
170
+ border-left: 2.5px solid var(--mcl-primary-ink);
171
+ border-bottom: 2.5px solid var(--mcl-primary-ink);
172
+ transform: rotate(-45deg) scale(0);
173
+ margin-top: -2px;
174
+ transition: transform 0.15s var(--mcl-ease);
175
+ }
176
+ .mcl-dropdown-item-selected .mcl-dropdown-check {
177
+ background: linear-gradient(145deg, var(--mcl-primary-2), var(--mcl-primary));
178
+ box-shadow: var(--mcl-out-xs), var(--mcl-clay-p);
179
+ }
180
+ .mcl-dropdown-item-selected .mcl-dropdown-check::after {
181
+ transform: rotate(-45deg) scale(1);
182
+ }