@e-burgos/tucu-ui 2.7.3 → 2.8.1

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 (58) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +17 -0
  3. package/base.css +225 -0
  4. package/components/inputs/input.mjs +43 -43
  5. package/components/inputs/select.mjs +1 -1
  6. package/components/loaders/loader.mjs +21 -21
  7. package/components/typography/index.mjs +30 -30
  8. package/index.css +1 -1
  9. package/index.js +1 -1
  10. package/macos/index.css +15 -0
  11. package/macos/sonoma/index.css +34 -0
  12. package/macos/sonoma/macos-auth.css +162 -0
  13. package/macos/sonoma/macos-backgrounds.css +314 -0
  14. package/macos/sonoma/macos-buttons.css +231 -0
  15. package/macos/sonoma/macos-cards.css +104 -0
  16. package/macos/sonoma/macos-content.css +157 -0
  17. package/macos/sonoma/macos-dialogs.css +122 -0
  18. package/macos/sonoma/macos-feedback.css +237 -0
  19. package/macos/sonoma/macos-fonts.css +7 -0
  20. package/macos/sonoma/macos-foundations.css +479 -0
  21. package/macos/sonoma/macos-inputs.css +1580 -0
  22. package/macos/sonoma/macos-layouts.css +223 -0
  23. package/macos/sonoma/macos-liquid-glass.css +279 -0
  24. package/macos/sonoma/macos-menus.css +184 -0
  25. package/macos/sonoma/macos-misc.css +635 -0
  26. package/macos/sonoma/macos-navigation.css +145 -0
  27. package/macos/sonoma/macos-selection.css +237 -0
  28. package/macos/sonoma/macos-sidebar.css +416 -0
  29. package/macos/sonoma/macos-tables.css +318 -0
  30. package/macos/sonoma/macos-toolbar.css +302 -0
  31. package/macos/sonoma/macos-typography.css +485 -0
  32. package/macos/sonoma/macos-window.css +273 -0
  33. package/macos/tahoe/index.css +34 -0
  34. package/macos/tahoe/macos-auth.css +162 -0
  35. package/macos/tahoe/macos-backgrounds.css +314 -0
  36. package/macos/tahoe/macos-buttons.css +286 -0
  37. package/macos/tahoe/macos-cards.css +125 -0
  38. package/macos/tahoe/macos-content.css +157 -0
  39. package/macos/tahoe/macos-dialogs.css +195 -0
  40. package/macos/tahoe/macos-feedback.css +273 -0
  41. package/macos/tahoe/macos-fonts.css +7 -0
  42. package/macos/tahoe/macos-foundations.css +516 -0
  43. package/macos/tahoe/macos-inputs.css +1656 -0
  44. package/macos/tahoe/macos-layouts.css +438 -0
  45. package/macos/tahoe/macos-liquid-glass.css +279 -0
  46. package/macos/tahoe/macos-menus.css +184 -0
  47. package/macos/tahoe/macos-misc.css +635 -0
  48. package/macos/tahoe/macos-navigation.css +191 -0
  49. package/macos/tahoe/macos-selection.css +237 -0
  50. package/macos/tahoe/macos-sidebar.css +420 -0
  51. package/macos/tahoe/macos-tables.css +320 -0
  52. package/macos/tahoe/macos-toolbar.css +304 -0
  53. package/macos/tahoe/macos-typography.css +485 -0
  54. package/macos/tahoe/macos-window.css +273 -0
  55. package/package.json +3 -2
  56. package/theme.css +812 -0
  57. package/third-party.css +39 -0
  58. package/utilities.css +105 -0
@@ -0,0 +1,223 @@
1
+ /* ============================================================
2
+ macOS Sonoma 14 — Layout Overrides (updated Fase 6)
3
+
4
+ Targets: Header, AdminLayout, HorizontalLayout, Sidebar,
5
+ Menus, Scrollbar, Main content
6
+ Selectors: html.macos [data-tucu="..."]
7
+
8
+ References:
9
+ - Apple HIG > Sidebars: 240pt width, translucent material
10
+ - Apple HIG > Toolbars: 52pt height, glass regular
11
+ - macOS titlebar: 28pt, scrollbar: thin auto-hide overlay
12
+ ============================================================ */
13
+
14
+ /* ── Header / Toolbar area ───────────────────────────────────── */
15
+ html.macos [data-tucu='header'] {
16
+ height: var(--macos-toolbar-height);
17
+ background-color: var(--macos-glass-regular-bg);
18
+ backdrop-filter: blur(var(--macos-glass-blur, 28px)) saturate(1.6);
19
+ -webkit-backdrop-filter: blur(var(--macos-glass-blur, 28px)) saturate(1.6);
20
+ border-bottom: 0.5px solid var(--macos-glass-border);
21
+ padding: 0 var(--macos-space-4);
22
+ display: flex;
23
+ align-items: center;
24
+ }
25
+
26
+ html.macos.dark [data-tucu='header'] {
27
+ background-color: var(--macos-glass-regular-bg);
28
+ border-bottom-color: var(--macos-glass-border);
29
+ }
30
+
31
+ /* ── Admin Header ────────────────────────────────────────────── */
32
+ html.macos [data-tucu='admin-header'] {
33
+ height: var(--macos-toolbar-height) !important;
34
+ min-height: var(--macos-toolbar-height) !important;
35
+ background-color: var(--macos-glass-regular-bg) !important;
36
+ backdrop-filter: blur(var(--macos-glass-blur, 28px)) saturate(1.6) !important;
37
+ -webkit-backdrop-filter: blur(var(--macos-glass-blur, 28px)) saturate(1.6) !important;
38
+ border-bottom: 0.5px solid var(--macos-glass-border) !important;
39
+ box-shadow: none !important;
40
+ padding: 0 var(--macos-space-4) !important;
41
+ }
42
+
43
+ html.macos.dark [data-tucu='admin-header'] {
44
+ background-color: var(--macos-glass-regular-bg) !important;
45
+ border-bottom-color: var(--macos-glass-border) !important;
46
+ }
47
+
48
+ /* ── Horizontal Header ───────────────────────────────────────── */
49
+ html.macos [data-tucu='horizontal-header'] {
50
+ height: var(--macos-toolbar-height) !important;
51
+ min-height: var(--macos-toolbar-height) !important;
52
+ background-color: var(--macos-glass-regular-bg) !important;
53
+ backdrop-filter: blur(var(--macos-glass-blur, 28px)) saturate(1.6) !important;
54
+ -webkit-backdrop-filter: blur(var(--macos-glass-blur, 28px)) saturate(1.6) !important;
55
+ border-bottom: 0.5px solid var(--macos-glass-border) !important;
56
+ box-shadow: none !important;
57
+ font-family: var(--macos-font-family) !important;
58
+ }
59
+
60
+ html.macos.dark [data-tucu='horizontal-header'] {
61
+ background-color: var(--macos-glass-regular-bg) !important;
62
+ border-bottom-color: var(--macos-glass-border) !important;
63
+ }
64
+
65
+ /* ── Admin Layout ────────────────────────────────────────────── */
66
+ html.macos [data-tucu='admin-layout'] {
67
+ background-color: var(--macos-window-bg);
68
+ font-family: var(--macos-font-family);
69
+ }
70
+
71
+ html.macos.dark [data-tucu='admin-layout'] {
72
+ background-color: var(--macos-window-bg);
73
+ }
74
+
75
+ html.macos [data-tucu='admin-content'] {
76
+ background-color: var(--macos-window-bg);
77
+ }
78
+
79
+ html.macos.dark [data-tucu='admin-content'] {
80
+ background-color: var(--macos-window-bg);
81
+ }
82
+
83
+ /* ── Horizontal Layout ───────────────────────────────────────── */
84
+ html.macos [data-tucu='horizontal-layout'] {
85
+ background-color: var(--macos-window-bg);
86
+ font-family: var(--macos-font-family);
87
+ }
88
+
89
+ html.macos.dark [data-tucu='horizontal-layout'] {
90
+ background-color: var(--macos-window-bg);
91
+ }
92
+
93
+ html.macos [data-tucu='horizontal-content'] {
94
+ background-color: var(--macos-window-bg);
95
+ }
96
+
97
+ html.macos.dark [data-tucu='horizontal-content'] {
98
+ background-color: var(--macos-window-bg);
99
+ }
100
+
101
+ /* ── Expandable Sidebar ──────────────────────────────────────── */
102
+ html.macos [data-tucu='expandable-sidebar'] {
103
+ background-color: var(--macos-glass-regular-bg) !important;
104
+ backdrop-filter: blur(var(--macos-glass-blur, 28px)) saturate(1.6) !important;
105
+ -webkit-backdrop-filter: blur(var(--macos-glass-blur, 28px)) saturate(1.6) !important;
106
+ border-right: 0.5px solid var(--macos-glass-border) !important;
107
+ border-left: none !important;
108
+ font-family: var(--macos-font-family) !important;
109
+ }
110
+
111
+ html.macos.dark [data-tucu='expandable-sidebar'] {
112
+ background-color: var(--macos-glass-regular-bg) !important;
113
+ border-right-color: var(--macos-glass-border) !important;
114
+ }
115
+
116
+ /* Fallback for no backdrop-filter */
117
+ @supports not (backdrop-filter: blur(1px)) {
118
+ html.macos [data-tucu='admin-header'],
119
+ html.macos [data-tucu='horizontal-header'],
120
+ html.macos [data-tucu='expandable-sidebar'] {
121
+ background-color: var(--macos-glass-regular-bg-opaque) !important;
122
+ }
123
+ }
124
+
125
+ @media (prefers-reduced-transparency: reduce) {
126
+ html.macos [data-tucu='admin-header'],
127
+ html.macos [data-tucu='horizontal-header'],
128
+ html.macos [data-tucu='expandable-sidebar'] {
129
+ background-color: var(--macos-glass-regular-bg-opaque) !important;
130
+ backdrop-filter: none !important;
131
+ -webkit-backdrop-filter: none !important;
132
+ }
133
+ }
134
+
135
+ /* ── Main content area ───────────────────────────────────────── */
136
+ html.macos [data-tucu='main-content'] {
137
+ background-color: var(--macos-window-bg);
138
+ padding: var(--macos-content-padding);
139
+ }
140
+
141
+ html.macos.dark [data-tucu='main-content'] {
142
+ background-color: var(--macos-window-bg);
143
+ }
144
+
145
+ /* ── macOS-style scrollbars ──────────────────────────────────── */
146
+ html.macos ::-webkit-scrollbar {
147
+ width: 8px;
148
+ height: 8px;
149
+ }
150
+
151
+ html.macos ::-webkit-scrollbar-track {
152
+ background: transparent;
153
+ }
154
+
155
+ html.macos ::-webkit-scrollbar-thumb {
156
+ background-color: rgba(0, 0, 0, 0.2);
157
+ border-radius: var(--macos-radius-full);
158
+ border: 2px solid transparent;
159
+ background-clip: content-box;
160
+ }
161
+
162
+ html.macos ::-webkit-scrollbar-thumb:hover {
163
+ background-color: rgba(0, 0, 0, 0.35);
164
+ }
165
+
166
+ html.macos.dark ::-webkit-scrollbar-thumb {
167
+ background-color: rgba(255, 255, 255, 0.25);
168
+ }
169
+
170
+ html.macos.dark ::-webkit-scrollbar-thumb:hover {
171
+ background-color: rgba(255, 255, 255, 0.4);
172
+ }
173
+
174
+ /* Auto-hide scrollbar when not scrolling (overlay style) */
175
+ html.macos {
176
+ scrollbar-color: rgba(0, 0, 0, 0.2) transparent;
177
+ scrollbar-width: thin;
178
+ }
179
+
180
+ html.macos.dark {
181
+ scrollbar-color: rgba(255, 255, 255, 0.25) transparent;
182
+ }
183
+
184
+ /* ── Window-level background ─────────────────────────────────── */
185
+ html.macos body {
186
+ background-color: var(--macos-window-bg);
187
+ }
188
+
189
+ html.macos.dark body {
190
+ background-color: var(--macos-window-bg);
191
+ }
192
+
193
+ /* ── Documentation content width in macOS ───────────────────── */
194
+ html.macos
195
+ [data-tucu='macos-layout-content-inner']
196
+ > div[class*='space-y-8'][class*='pt-8'][class*='max-w-6xl'] {
197
+ max-width: 96rem !important;
198
+ }
199
+
200
+ html.macos
201
+ [data-tucu='macos-layout-content-inner']
202
+ > div.relative.scroll-smooth
203
+ div[class*='space-y-8'][class*='pt-8'][class*='max-w-7xl'] {
204
+ max-width: 96rem !important;
205
+ }
206
+
207
+ /* ── Divider / Separator ─────────────────────────────────────── */
208
+ html.macos hr,
209
+ html.macos [data-tucu='divider'] {
210
+ border: none;
211
+ height: 1px;
212
+ background-color: var(--macos-separator);
213
+ margin: var(--macos-space-4) 0;
214
+ }
215
+
216
+ /* ── Container max-widths (for content areas) ────────────────── */
217
+ html.macos [data-tucu='container'] {
218
+ max-width: 1200px;
219
+ margin-left: auto;
220
+ margin-right: auto;
221
+ padding-left: var(--macos-content-padding);
222
+ padding-right: var(--macos-content-padding);
223
+ }
@@ -0,0 +1,279 @@
1
+ /* ============================================================
2
+ macOS Sonoma 14 — Liquid Glass Materials
3
+
4
+ Token definitions and utility classes for the three Liquid Glass
5
+ material variants: regular, clear and prominent.
6
+
7
+ Rules (from Apple HIG + tucu-ui spec):
8
+ - regular: toolbars, sidebars, popovers, alerts — elements with text
9
+ - clear: only over visually rich backgrounds; see-through controls
10
+ - prominent: accent-tinted; primary actions, selected states
11
+ - Max 2 backdrop-filter layers simultaneously in the visible viewport
12
+ - Always include will-change:transform or contain:paint on glass elements
13
+ - prefers-reduced-transparency: remove backdrop-filter, use opaque fallback
14
+ - @supports not (backdrop-filter): opaque fallback
15
+
16
+ Performance note: backdrop-filter triggers GPU compositing.
17
+ Apply only to bars, popovers, sheets and floating single-layer controls.
18
+ Never apply to scrolling lists, tables or per-row elements.
19
+ ============================================================ */
20
+
21
+ html.macos {
22
+ /* ── Liquid Glass Tokens — Light ───────────────────────────
23
+ Source: Apple HIG > Materials > Liquid Glass
24
+ */
25
+
26
+ /* Regular: bars, sidebars, popovers with text */
27
+ --macos-glass-regular-bg: rgba(255, 255, 255, 0.52);
28
+ --macos-glass-regular-bg-opaque: #f0f0f2; /* fallback */
29
+ --macos-glass-regular-blur: 28px;
30
+ --macos-glass-regular-saturate: 1.8;
31
+
32
+ /* Clear: controls over media / visually rich backgrounds */
33
+ --macos-glass-clear-bg: rgba(255, 255, 255, 0.22);
34
+ --macos-glass-clear-bg-opaque: #e8e8ea; /* fallback */
35
+ --macos-glass-clear-blur: 16px;
36
+ --macos-glass-clear-saturate: 1.4;
37
+
38
+ /* Prominent: accent-tinted primary actions (always uses --color-brand) */
39
+ --macos-glass-prominent-bg: color-mix(
40
+ in srgb,
41
+ var(--color-brand, #007aff) 15%,
42
+ rgba(255, 255, 255, 0.72)
43
+ );
44
+ --macos-glass-prominent-bg-opaque: color-mix(
45
+ in srgb,
46
+ var(--color-brand, #007aff) 15%,
47
+ #f0f0f2
48
+ );
49
+ --macos-glass-prominent-blur: 32px;
50
+ --macos-glass-prominent-saturate: 2;
51
+ --macos-glass-prominent-border: color-mix(
52
+ in srgb,
53
+ var(--color-brand, #007aff) 30%,
54
+ rgba(255, 255, 255, 0.6)
55
+ );
56
+
57
+ /* Shared glass decorators */
58
+ --macos-glass-border: rgba(255, 255, 255, 0.72);
59
+ --macos-glass-border-subtle: rgba(255, 255, 255, 0.4);
60
+ --macos-glass-highlight: inset 0 0.5px 0 rgba(255, 255, 255, 0.8),
61
+ inset 0 -0.5px 0 rgba(0, 0, 0, 0.06);
62
+ --macos-glass-shadow: 0 4px 24px rgba(0, 0, 0, 0.08),
63
+ 0 1px 4px rgba(0, 0, 0, 0.04);
64
+ --macos-glass-scroll-edge: linear-gradient(
65
+ to bottom,
66
+ rgba(255, 255, 255, 0.9) 0%,
67
+ rgba(255, 255, 255, 0) 100%
68
+ );
69
+ --macos-glass-scroll-edge-bottom: linear-gradient(
70
+ to top,
71
+ rgba(255, 255, 255, 0.9) 0%,
72
+ rgba(255, 255, 255, 0) 100%
73
+ );
74
+
75
+ /* Dim layer: 35% darkening over bright backgrounds (Apple spec) */
76
+ --macos-glass-dim-bg: rgba(0, 0, 0, 0.35);
77
+
78
+ /* ── Legacy material aliases (Sonoma compat) ───────────────
79
+ Some components reference --macos-material-* from older builds.
80
+ Alias them to Sonoma glass tokens to avoid transparent fallbacks.
81
+ */
82
+ --macos-material-toolbar: var(--macos-glass-regular-bg);
83
+ --macos-material-sidebar: var(--macos-glass-regular-bg);
84
+ --macos-material-sheet: var(--macos-glass-regular-bg);
85
+ --macos-material-overlay: rgba(0, 0, 0, 0.28);
86
+ --macos-material-sheet-blur: var(--macos-glass-regular-blur);
87
+ }
88
+
89
+ /* ── Dark Mode Tokens ─────────────────────────────────────── */
90
+ html.macos.dark {
91
+ /* Regular */
92
+ --macos-glass-regular-bg: rgba(32, 32, 36, 0.72);
93
+ --macos-glass-regular-bg-opaque: #28282c;
94
+
95
+ /* Clear */
96
+ --macos-glass-clear-bg: rgba(20, 20, 24, 0.4);
97
+ --macos-glass-clear-bg-opaque: #1e1e22;
98
+
99
+ /* Prominent */
100
+ --macos-glass-prominent-bg: color-mix(
101
+ in srgb,
102
+ var(--color-brand, #0a84ff) 20%,
103
+ rgba(40, 40, 44, 0.72)
104
+ );
105
+ --macos-glass-prominent-bg-opaque: color-mix(
106
+ in srgb,
107
+ var(--color-brand, #0a84ff) 20%,
108
+ #1e1e22
109
+ );
110
+ --macos-glass-prominent-border: color-mix(
111
+ in srgb,
112
+ var(--color-brand, #0a84ff) 25%,
113
+ rgba(255, 255, 255, 0.15)
114
+ );
115
+
116
+ /* Shared decorators — dark */
117
+ --macos-glass-border: rgba(255, 255, 255, 0.14);
118
+ --macos-glass-border-subtle: rgba(255, 255, 255, 0.08);
119
+ --macos-glass-highlight: inset 0 0.5px 0 rgba(255, 255, 255, 0.16),
120
+ inset 0 -0.5px 0 rgba(0, 0, 0, 0.3);
121
+ --macos-glass-shadow: 0 4px 24px rgba(0, 0, 0, 0.4),
122
+ 0 1px 4px rgba(0, 0, 0, 0.2);
123
+ --macos-glass-scroll-edge: linear-gradient(
124
+ to bottom,
125
+ rgba(20, 20, 22, 0.92) 0%,
126
+ rgba(20, 20, 22, 0) 100%
127
+ );
128
+ --macos-glass-scroll-edge-bottom: linear-gradient(
129
+ to top,
130
+ rgba(20, 20, 22, 0.92) 0%,
131
+ rgba(20, 20, 22, 0) 100%
132
+ );
133
+ --macos-glass-dim-bg: rgba(0, 0, 0, 0.5);
134
+ }
135
+
136
+ /* ============================================================
137
+ Utility Classes
138
+ Apply to bars, panels, popovers — never to lists or tables.
139
+ Elements MUST have contain: paint or will-change: transform.
140
+ ============================================================ */
141
+
142
+ /* Regular glass — toolbars, sidebars, popovers with text */
143
+ html.macos .macos-glass-regular {
144
+ background: var(--macos-glass-regular-bg);
145
+ border: 0.5px solid var(--macos-glass-border);
146
+ box-shadow: var(--macos-glass-shadow), var(--macos-glass-highlight);
147
+ contain: paint;
148
+ }
149
+
150
+ @supports (backdrop-filter: blur(1px)) {
151
+ html.macos .macos-glass-regular {
152
+ backdrop-filter: blur(var(--macos-glass-regular-blur))
153
+ saturate(var(--macos-glass-regular-saturate));
154
+ -webkit-backdrop-filter: blur(var(--macos-glass-regular-blur))
155
+ saturate(var(--macos-glass-regular-saturate));
156
+ }
157
+ }
158
+
159
+ @supports not (backdrop-filter: blur(1px)) {
160
+ html.macos .macos-glass-regular {
161
+ background: var(--macos-glass-regular-bg-opaque);
162
+ }
163
+ }
164
+
165
+ /* Clear glass — controls over media / rich backgrounds */
166
+ html.macos .macos-glass-clear {
167
+ background: var(--macos-glass-clear-bg);
168
+ border: 0.5px solid var(--macos-glass-border-subtle);
169
+ contain: paint;
170
+ }
171
+
172
+ @supports (backdrop-filter: blur(1px)) {
173
+ html.macos .macos-glass-clear {
174
+ backdrop-filter: blur(var(--macos-glass-clear-blur))
175
+ saturate(var(--macos-glass-clear-saturate));
176
+ -webkit-backdrop-filter: blur(var(--macos-glass-clear-blur))
177
+ saturate(var(--macos-glass-clear-saturate));
178
+ }
179
+ }
180
+
181
+ @supports not (backdrop-filter: blur(1px)) {
182
+ html.macos .macos-glass-clear {
183
+ background: var(--macos-glass-clear-bg-opaque);
184
+ }
185
+ }
186
+
187
+ /* Prominent glass — accent-tinted primary actions */
188
+ html.macos .macos-glass-prominent {
189
+ background: var(--macos-glass-prominent-bg);
190
+ border: 0.5px solid var(--macos-glass-border);
191
+ box-shadow: var(--macos-glass-shadow), var(--macos-glass-highlight);
192
+ contain: paint;
193
+ }
194
+
195
+ @supports (backdrop-filter: blur(1px)) {
196
+ html.macos .macos-glass-prominent {
197
+ backdrop-filter: blur(var(--macos-glass-prominent-blur))
198
+ saturate(var(--macos-glass-prominent-saturate));
199
+ -webkit-backdrop-filter: blur(var(--macos-glass-prominent-blur))
200
+ saturate(var(--macos-glass-prominent-saturate));
201
+ }
202
+ }
203
+
204
+ @supports not (backdrop-filter: blur(1px)) {
205
+ html.macos .macos-glass-prominent {
206
+ background: var(--macos-glass-prominent-bg-opaque);
207
+ }
208
+ }
209
+
210
+ /* Scroll edge — top fade for content scrolling under bars */
211
+ html.macos .macos-scroll-edge-top {
212
+ position: relative;
213
+ }
214
+
215
+ html.macos .macos-scroll-edge-top::before {
216
+ content: '';
217
+ position: absolute;
218
+ top: 0;
219
+ left: 0;
220
+ right: 0;
221
+ height: 24px;
222
+ background: var(--macos-glass-scroll-edge);
223
+ pointer-events: none;
224
+ z-index: 1;
225
+ }
226
+
227
+ /* Scroll edge — bottom fade */
228
+ html.macos .macos-scroll-edge-bottom {
229
+ position: relative;
230
+ }
231
+
232
+ html.macos .macos-scroll-edge-bottom::after {
233
+ content: '';
234
+ position: absolute;
235
+ bottom: 0;
236
+ left: 0;
237
+ right: 0;
238
+ height: 24px;
239
+ background: var(--macos-glass-scroll-edge-bottom);
240
+ pointer-events: none;
241
+ z-index: 1;
242
+ }
243
+
244
+ /* Dim layer — 35% darkening per Apple spec over bright backgrounds */
245
+ html.macos .macos-dim-layer {
246
+ background: var(--macos-glass-dim-bg);
247
+ }
248
+
249
+ /* ============================================================
250
+ Accessibility: Reduced Transparency
251
+ Remove backdrop-filter, increase opacity to maintain legibility.
252
+ ============================================================ */
253
+ @media (prefers-reduced-transparency: reduce) {
254
+ html.macos {
255
+ --macos-glass-regular-bg: var(--macos-glass-regular-bg-opaque);
256
+ --macos-glass-clear-bg: var(--macos-glass-clear-bg-opaque);
257
+ --macos-glass-prominent-bg: var(--macos-glass-prominent-bg-opaque);
258
+ }
259
+
260
+ html.macos .macos-glass-regular,
261
+ html.macos .macos-glass-clear,
262
+ html.macos .macos-glass-prominent {
263
+ backdrop-filter: none !important;
264
+ -webkit-backdrop-filter: none !important;
265
+ }
266
+ }
267
+
268
+ /* ============================================================
269
+ Accessibility: Increased Contrast
270
+ Strengthen borders for better visual definition.
271
+ ============================================================ */
272
+ @media (prefers-contrast: more) {
273
+ html.macos .macos-glass-regular,
274
+ html.macos .macos-glass-clear,
275
+ html.macos .macos-glass-prominent {
276
+ border-width: 1px !important;
277
+ border-color: currentColor !important;
278
+ }
279
+ }
@@ -0,0 +1,184 @@
1
+ /* ============================================================
2
+ macOS Sonoma 14 — Menu & Contextual Overrides
3
+
4
+ Targets: Dropdown menus, context menus, popovers, select dropdowns
5
+ Selector: html.macos [data-tucu="menu|menu-item|context-menu|popover"]
6
+
7
+ References:
8
+ - Apple HIG > Menus: Glass regular, 6pt radius items, 1pt separator
9
+ - Apple HIG > Contextual Menus: same material as menus
10
+ - Menu min-width: 200pt, max 680pt
11
+ - Item height: 22pt regular, separator: 1px
12
+ ============================================================ */
13
+
14
+ /* ── Menu Container ──────────────────────────────────────────── */
15
+
16
+ html.macos [data-tucu='menu'],
17
+ html.macos [data-tucu='dropdown-menu'],
18
+ html.macos [data-tucu='context-menu'] {
19
+ background-color: var(--macos-glass-regular-bg-opaque);
20
+ border: 0.5px solid var(--macos-glass-border);
21
+ border-radius: var(--macos-radius-popover);
22
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2), 0 1px 4px rgba(0, 0, 0, 0.12);
23
+ padding: 4px 0;
24
+ font-family: var(--macos-font-family);
25
+ font-size: var(--macos-font-size-body);
26
+ min-width: 200px;
27
+ overflow: hidden;
28
+ }
29
+
30
+ @supports (backdrop-filter: blur(1px)) {
31
+ html.macos [data-tucu='menu'],
32
+ html.macos [data-tucu='dropdown-menu'],
33
+ html.macos [data-tucu='context-menu'] {
34
+ background-color: var(--macos-glass-regular-bg);
35
+ backdrop-filter: blur(var(--macos-glass-regular-blur)) saturate(160%);
36
+ -webkit-backdrop-filter: blur(var(--macos-glass-regular-blur))
37
+ saturate(160%);
38
+ }
39
+ }
40
+
41
+ html.macos.dark [data-tucu='menu'],
42
+ html.macos.dark [data-tucu='dropdown-menu'],
43
+ html.macos.dark [data-tucu='context-menu'] {
44
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4), 0 1px 4px rgba(0, 0, 0, 0.2);
45
+ }
46
+
47
+ /* ── Menu Item ───────────────────────────────────────────────── */
48
+
49
+ html.macos [data-tucu='menu-item'] {
50
+ height: 22px;
51
+ padding: 0 12px 0 24px; /* leave space for checkmark */
52
+ display: flex;
53
+ align-items: center;
54
+ gap: 6px;
55
+ color: var(--macos-label);
56
+ font-size: var(--macos-font-size-body);
57
+ font-weight: var(--macos-font-weight-regular);
58
+ letter-spacing: var(--macos-tracking-13);
59
+ cursor: default;
60
+ border-radius: 4px;
61
+ margin: 0 4px;
62
+ transition: background-color 0.05s ease, color 0.05s ease;
63
+ }
64
+
65
+ html.macos [data-tucu='menu-item']:hover,
66
+ html.macos [data-tucu='menu-item'][data-highlighted='true'] {
67
+ background-color: var(--macos-control-accent);
68
+ color: white;
69
+ }
70
+
71
+ html.macos [data-tucu='menu-item'][data-disabled='true'],
72
+ html.macos [data-tucu='menu-item']:disabled {
73
+ color: var(--macos-tertiary-label);
74
+ cursor: default;
75
+ pointer-events: none;
76
+ }
77
+
78
+ html.macos [data-tucu='menu-item'][data-checked='true']::before {
79
+ content: '✓';
80
+ position: absolute;
81
+ left: 8px;
82
+ font-size: 11px;
83
+ color: var(--macos-label);
84
+ }
85
+
86
+ html.macos [data-tucu='menu-item']:hover[data-checked='true']::before {
87
+ color: white;
88
+ }
89
+
90
+ /* ── Menu Separator ──────────────────────────────────────────── */
91
+
92
+ html.macos [data-tucu='menu-separator'] {
93
+ height: 1px;
94
+ background-color: var(--macos-separator);
95
+ margin: 4px 0;
96
+ }
97
+
98
+ /* ── Menu Section Label ──────────────────────────────────────── */
99
+
100
+ html.macos [data-tucu='menu-section-label'] {
101
+ font-size: var(--macos-font-size-subheadline);
102
+ font-weight: var(--macos-font-weight-semibold);
103
+ color: var(--macos-secondary-label);
104
+ padding: 6px 12px 2px;
105
+ text-transform: uppercase;
106
+ letter-spacing: 0.06px;
107
+ cursor: default;
108
+ pointer-events: none;
109
+ }
110
+
111
+ /* ── Menu Shortcut ───────────────────────────────────────────── */
112
+
113
+ html.macos [data-tucu='menu-shortcut'] {
114
+ font-size: var(--macos-font-size-callout);
115
+ color: var(--macos-secondary-label);
116
+ margin-left: auto;
117
+ font-weight: var(--macos-font-weight-regular);
118
+ }
119
+
120
+ html.macos [data-tucu='menu-item']:hover [data-tucu='menu-shortcut'],
121
+ html.macos
122
+ [data-tucu='menu-item'][data-highlighted='true']
123
+ [data-tucu='menu-shortcut'] {
124
+ color: rgba(255, 255, 255, 0.72);
125
+ }
126
+
127
+ /* ── Popover ─────────────────────────────────────────────────── */
128
+
129
+ html.macos [data-tucu='popover'] {
130
+ background-color: var(--macos-glass-regular-bg-opaque);
131
+ border: 0.5px solid var(--macos-glass-border);
132
+ border-radius: var(--macos-radius-popover);
133
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2), 0 2px 8px rgba(0, 0, 0, 0.12);
134
+ padding: var(--macos-space-3);
135
+ font-family: var(--macos-font-family);
136
+ font-size: var(--macos-font-size-body);
137
+ }
138
+
139
+ @supports (backdrop-filter: blur(1px)) {
140
+ html.macos [data-tucu='popover'] {
141
+ background-color: var(--macos-glass-regular-bg);
142
+ backdrop-filter: blur(var(--macos-glass-regular-blur)) saturate(150%);
143
+ -webkit-backdrop-filter: blur(var(--macos-glass-regular-blur))
144
+ saturate(150%);
145
+ }
146
+ }
147
+
148
+ /* ── Tooltip ─────────────────────────────────────────────────── */
149
+
150
+ html.macos [data-tucu='tooltip'] {
151
+ background-color: var(--macos-glass-regular-bg-opaque);
152
+ border: 0.5px solid var(--macos-glass-border);
153
+ border-radius: var(--macos-radius-control);
154
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.16), 0 1px 3px rgba(0, 0, 0, 0.1);
155
+ padding: 4px 8px;
156
+ font-family: var(--macos-font-family);
157
+ font-size: var(--macos-font-size-callout);
158
+ font-weight: var(--macos-font-weight-regular);
159
+ color: var(--macos-label);
160
+ max-width: 240px;
161
+ pointer-events: none;
162
+ }
163
+
164
+ @supports (backdrop-filter: blur(1px)) {
165
+ html.macos [data-tucu='tooltip'] {
166
+ background-color: var(--macos-glass-regular-bg);
167
+ backdrop-filter: blur(20px) saturate(150%);
168
+ -webkit-backdrop-filter: blur(20px) saturate(150%);
169
+ }
170
+ }
171
+
172
+ /* ── Reduced transparency fallbacks ─────────────────────────── */
173
+
174
+ @media (prefers-reduced-transparency: reduce) {
175
+ html.macos [data-tucu='menu'],
176
+ html.macos [data-tucu='dropdown-menu'],
177
+ html.macos [data-tucu='context-menu'],
178
+ html.macos [data-tucu='popover'],
179
+ html.macos [data-tucu='tooltip'] {
180
+ backdrop-filter: none !important;
181
+ -webkit-backdrop-filter: none !important;
182
+ background-color: var(--macos-window-bg) !important;
183
+ }
184
+ }