@supportpages.io/wtfm 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.
- package/LICENSE +201 -0
- package/NOTICE +23 -0
- package/README.md +392 -2
- package/dist/actions.d.ts +98 -0
- package/dist/actions.js +86 -0
- package/dist/actions.js.map +1 -0
- package/dist/agent-settings.d.ts +22 -0
- package/dist/agent-settings.js +35 -0
- package/dist/agent-settings.js.map +1 -0
- package/dist/api.d.ts +14 -0
- package/dist/api.js +159 -0
- package/dist/api.js.map +1 -0
- package/dist/article-link.d.ts +16 -0
- package/dist/article-link.js +25 -0
- package/dist/article-link.js.map +1 -0
- package/dist/artifacts.d.ts +45 -0
- package/dist/artifacts.js +144 -0
- package/dist/artifacts.js.map +1 -0
- package/dist/brand.d.ts +4 -0
- package/dist/brand.js +9 -0
- package/dist/brand.js.map +1 -0
- package/dist/bridge.d.ts +2964 -0
- package/dist/bridge.js +1036 -0
- package/dist/bridge.js.map +1 -0
- package/dist/capacity.d.ts +5 -0
- package/dist/capacity.js +11 -0
- package/dist/capacity.js.map +1 -0
- package/dist/credentials.d.ts +13 -0
- package/dist/credentials.js +88 -0
- package/dist/credentials.js.map +1 -0
- package/dist/development-tls.d.ts +8 -0
- package/dist/development-tls.js +38 -0
- package/dist/development-tls.js.map +1 -0
- package/dist/errors.d.ts +15 -0
- package/dist/errors.js +18 -0
- package/dist/errors.js.map +1 -0
- package/dist/export.d.ts +11 -0
- package/dist/export.js +91 -0
- package/dist/export.js.map +1 -0
- package/dist/hosted-operations.d.ts +108 -0
- package/dist/hosted-operations.js +120 -0
- package/dist/hosted-operations.js.map +1 -0
- package/dist/hosting-benefits.d.ts +66 -0
- package/dist/hosting-benefits.js +67 -0
- package/dist/hosting-benefits.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/local-inventory.d.ts +22 -0
- package/dist/local-inventory.js +59 -0
- package/dist/local-inventory.js.map +1 -0
- package/dist/local-setup.d.ts +208 -0
- package/dist/local-setup.js +140 -0
- package/dist/local-setup.js.map +1 -0
- package/dist/pairing.d.ts +71 -0
- package/dist/pairing.js +235 -0
- package/dist/pairing.js.map +1 -0
- package/dist/preferences.d.ts +18 -0
- package/dist/preferences.js +44 -0
- package/dist/preferences.js.map +1 -0
- package/dist/progress.d.ts +205 -0
- package/dist/progress.js +224 -0
- package/dist/progress.js.map +1 -0
- package/dist/reminders.d.ts +31 -0
- package/dist/reminders.js +73 -0
- package/dist/reminders.js.map +1 -0
- package/dist/replace-connection.d.ts +6 -0
- package/dist/replace-connection.js +77 -0
- package/dist/replace-connection.js.map +1 -0
- package/dist/repository-actions.d.ts +18 -0
- package/dist/repository-actions.js +9 -0
- package/dist/repository-actions.js.map +1 -0
- package/dist/repository-benefits.d.ts +96 -0
- package/dist/repository-benefits.js +64 -0
- package/dist/repository-benefits.js.map +1 -0
- package/dist/run-update.d.ts +17 -0
- package/dist/run-update.js +27 -0
- package/dist/run-update.js.map +1 -0
- package/dist/runs.d.ts +541 -0
- package/dist/runs.js +146 -0
- package/dist/runs.js.map +1 -0
- package/dist/runtime.d.ts +12 -0
- package/dist/runtime.js +58 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schema.d.ts +277 -0
- package/dist/schema.js +66 -0
- package/dist/schema.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.js +298 -0
- package/dist/server.js.map +1 -0
- package/dist/session.d.ts +1714 -0
- package/dist/session.js +619 -0
- package/dist/session.js.map +1 -0
- package/dist/settings.d.ts +9 -0
- package/dist/settings.js +21 -0
- package/dist/settings.js.map +1 -0
- package/dist/sync.d.ts +495 -0
- package/dist/sync.js +191 -0
- package/dist/sync.js.map +1 -0
- package/dist/telemetry-scrub.d.ts +13 -0
- package/dist/telemetry-scrub.js +51 -0
- package/dist/telemetry-scrub.js.map +1 -0
- package/dist/telemetry.d.ts +73 -0
- package/dist/telemetry.js +173 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/walkthroughs.d.ts +224 -0
- package/dist/walkthroughs.js +109 -0
- package/dist/walkthroughs.js.map +1 -0
- package/dist/workspace.d.ts +14 -0
- package/dist/workspace.js +127 -0
- package/dist/workspace.js.map +1 -0
- package/dist/writer-agent.d.ts +21 -0
- package/dist/writer-agent.js +27 -0
- package/dist/writer-agent.js.map +1 -0
- package/dist/writer-entry.d.ts +171 -0
- package/dist/writer-entry.js +233 -0
- package/dist/writer-entry.js.map +1 -0
- package/dist/writing-style.d.ts +7 -0
- package/dist/writing-style.js +52 -0
- package/dist/writing-style.js.map +1 -0
- package/engine/SYNC.json +4 -0
- package/engine/VERSION +1 -0
- package/engine/detect-project/README.md +141 -0
- package/engine/detect-project/SKILL.md +1421 -0
- package/engine/detect-project/assets/desktop/desktop-frame.css +428 -0
- package/engine/detect-project/assets/game/game-frame.css +132 -0
- package/engine/detect-project/assets/macosui/LICENSE-puppertino.txt +21 -0
- package/engine/detect-project/assets/macosui/VERSIONS.txt +1 -0
- package/engine/detect-project/assets/macosui/fonts.css +15 -0
- package/engine/detect-project/assets/macosui/macos-frame.css +481 -0
- package/engine/detect-project/assets/macosui/puppertino.css +2153 -0
- package/engine/detect-project/assets/mobileui/LICENSE-fonts.txt +13 -0
- package/engine/detect-project/assets/mobileui/LICENSE-framework7.txt +52 -0
- package/engine/detect-project/assets/mobileui/VERSIONS.txt +6 -0
- package/engine/detect-project/assets/mobileui/device-frame.css +316 -0
- package/engine/detect-project/assets/mobileui/f7-color-theme.mjs +1345 -0
- package/engine/detect-project/assets/mobileui/f7-icons-names.json +1254 -0
- package/engine/detect-project/assets/mobileui/fonts.css +16 -0
- package/engine/detect-project/assets/mobileui/framework7-components.css +39 -0
- package/engine/detect-project/assets/mobileui/framework7-core.css +5245 -0
- package/engine/detect-project/assets/mobileui/icons.css +31 -0
- package/engine/detect-project/assets/mobileui/md3-defaults.css +89 -0
- package/engine/detect-project/assets/mobileui/platforms.json +46 -0
- package/engine/detect-project/assets/tailwind-fallback.css +1729 -0
- package/engine/detect-project/assets/webtui/LICENSE-webtui.txt +28 -0
- package/engine/detect-project/assets/webtui/VERSIONS.txt +7 -0
- package/engine/detect-project/assets/webtui/terminal-frame.css +195 -0
- package/engine/detect-project/assets/webtui/theme-catppuccin.css +1 -0
- package/engine/detect-project/assets/webtui/theme-everforest.css +1 -0
- package/engine/detect-project/assets/webtui/theme-gruvbox.css +1 -0
- package/engine/detect-project/assets/webtui/theme-nord.css +1 -0
- package/engine/detect-project/assets/webtui/theme-vitesse.css +1 -0
- package/engine/detect-project/assets/webtui/themes.json +37 -0
- package/engine/detect-project/assets/webtui/webtui-core.css +1 -0
- package/engine/detect-project/assets/win32ui/7css.css +2 -0
- package/engine/detect-project/assets/win32ui/LICENSE-7css.txt +21 -0
- package/engine/detect-project/assets/win32ui/VERSIONS.txt +1 -0
- package/engine/detect-project/assets/win32ui/win32-frame.css +278 -0
- package/engine/detect-project/package-lock.json +12 -0
- package/engine/detect-project/package.json +10 -0
- package/engine/detect-project/scripts/apply_runtime_profiles.js +313 -0
- package/engine/detect-project/scripts/check_css_health.js +412 -0
- package/engine/detect-project/scripts/check_project_map.js +150 -0
- package/engine/detect-project/scripts/check_runtime_coverage.js +311 -0
- package/engine/detect-project/scripts/check_runtime_recipe_quality.js +184 -0
- package/engine/detect-project/scripts/classify_app_type.sh +246 -0
- package/engine/detect-project/scripts/classify_surface.sh +95 -0
- package/engine/detect-project/scripts/classify_workspace.js +39 -0
- package/engine/detect-project/scripts/compile_css.sh +447 -0
- package/engine/detect-project/scripts/detect_static.js +645 -0
- package/engine/detect-project/scripts/detect_structure.js +187 -0
- package/engine/detect-project/scripts/include_census.js +451 -0
- package/engine/detect-project/scripts/json_get.js +142 -0
- package/engine/detect-project/scripts/merge_json.js +52 -0
- package/engine/detect-project/scripts/recommend_model_tier.js +252 -0
- package/engine/detect-project/scripts/resolve_route_chains.js +135 -0
- package/engine/detect-project/scripts/run_css_build.sh +40 -0
- package/engine/detect-project/scripts/sanitize_css.js +83 -0
- package/engine/detect-project/scripts/test_classify_surface.js +108 -0
- package/engine/detect-project/scripts/test_node_helpers.js +142 -0
- package/engine/detect-project/scripts/test_recommend_model_tier.js +119 -0
- package/engine/detect-project/scripts/test_resolve_route_chains.js +182 -0
- package/engine/detect-project/scripts/test_runtime_coverage.js +323 -0
- package/engine/detect-project/scripts/test_runtime_recipe_quality.js +187 -0
- package/engine/detect-project/scripts/theme_overrides.js +169 -0
- package/engine/detect-project/scripts/write_branding.js +129 -0
- package/engine/generate-illustrated-article/SKILL.md +461 -0
- package/engine/generate-illustrated-article/contracts/desktop.md +90 -0
- package/engine/generate-illustrated-article/contracts/game.md +38 -0
- package/engine/generate-illustrated-article/contracts/label-evidence.md +38 -0
- package/engine/generate-illustrated-article/contracts/macos.md +79 -0
- package/engine/generate-illustrated-article/contracts/mobile.md +40 -0
- package/engine/generate-illustrated-article/contracts/terminal.md +29 -0
- package/engine/generate-illustrated-article/contracts/win32.md +43 -0
- package/engine/generate-illustrated-article/package-lock.json +366 -0
- package/engine/generate-illustrated-article/package.json +15 -0
- package/engine/generate-illustrated-article/scripts/article_blocks.js +34 -0
- package/engine/generate-illustrated-article/scripts/check_article_json.js +105 -0
- package/engine/generate-illustrated-article/scripts/emit_walkthrough_signals.js +100 -0
- package/engine/generate-illustrated-article/scripts/extract_images.js +187 -0
- package/engine/generate-illustrated-article/scripts/generate_content_images.js +376 -0
- package/engine/generate-illustrated-article/scripts/include_census.js +451 -0
- package/engine/generate-illustrated-article/scripts/inject_assets.js +1691 -0
- package/engine/generate-illustrated-article/scripts/jit_mockup_css.js +191 -0
- package/engine/generate-illustrated-article/scripts/label_evidence.js +87 -0
- package/engine/generate-illustrated-article/scripts/lint_article_copy.js +252 -0
- package/engine/generate-illustrated-article/scripts/lint_mockup_fidelity.js +2403 -0
- package/engine/generate-illustrated-article/scripts/polish_tickets.js +1148 -0
- package/engine/generate-illustrated-article/scripts/related_repos.sh +52 -0
- package/engine/generate-illustrated-article/scripts/render_all.js +177 -0
- package/engine/generate-illustrated-article/scripts/render_mockup.js +665 -0
- package/engine/generate-illustrated-article/scripts/render_ready.js +164 -0
- package/engine/generate-illustrated-article/scripts/resolve_workspace.sh +86 -0
- package/engine/generate-illustrated-article/scripts/runtime_region_geometry.js +55 -0
- package/engine/generate-illustrated-article/scripts/source_paths.js +49 -0
- package/engine/generate-illustrated-article/scripts/test_control_visibility.js +30 -0
- package/engine/generate-illustrated-article/scripts/test_emit_walkthrough_signals.js +157 -0
- package/engine/generate-illustrated-article/scripts/test_generate_content_images.js +168 -0
- package/engine/generate-illustrated-article/scripts/test_include_census.js +126 -0
- package/engine/generate-illustrated-article/scripts/test_label_evidence.js +49 -0
- package/engine/generate-illustrated-article/scripts/test_lint_article_copy.js +138 -0
- package/engine/generate-illustrated-article/scripts/test_lint_mockup_fidelity.js +653 -0
- package/engine/generate-illustrated-article/scripts/test_node_ports.js +152 -0
- package/engine/generate-illustrated-article/scripts/test_polish_tickets.js +481 -0
- package/engine/generate-illustrated-article/scripts/test_related_repos.js +64 -0
- package/engine/generate-illustrated-article/scripts/test_render_ready.js +85 -0
- package/engine/generate-illustrated-article/scripts/test_source_paths.js +68 -0
- package/engine/generate-illustrated-article/scripts/trace_hook.js +79 -0
- package/engine/generate-illustrated-article/scripts/trace_hook.sh +4 -0
- package/engine/generate-illustrated-article/scripts/validate_html.js +114 -0
- package/engine/generate-illustrated-article/scripts/watermark.js +69 -0
- package/install.sh +14 -0
- package/package.json +57 -4
- package/scripts/auth.mjs +33 -0
- package/scripts/auto-update.mjs +7 -0
- package/scripts/build-plugin.mjs +58 -0
- package/scripts/build-release.mjs +94 -0
- package/scripts/check-release.mjs +40 -0
- package/scripts/check-runtime.mjs +10 -0
- package/scripts/cli.mjs +8 -0
- package/scripts/install.mjs +64 -0
- package/scripts/lib/agent-runner.mjs +181 -0
- package/scripts/lib/agent-settings.mjs +215 -0
- package/scripts/lib/article-skills.mjs +82 -0
- package/scripts/lib/auto-update.mjs +50 -0
- package/scripts/lib/brand.mjs +9 -0
- package/scripts/lib/browser.mjs +12 -0
- package/scripts/lib/claude-connection.mjs +33 -0
- package/scripts/lib/claude-permissions.mjs +47 -0
- package/scripts/lib/claude-plugin.mjs +15 -0
- package/scripts/lib/claude-writer.mjs +10 -0
- package/scripts/lib/cli-main.mjs +85 -0
- package/scripts/lib/cli.mjs +888 -0
- package/scripts/lib/codex-config.mjs +51 -0
- package/scripts/lib/codex-integration.mjs +61 -0
- package/scripts/lib/codex-skill.mjs +34 -0
- package/scripts/lib/harness-models.mjs +109 -0
- package/scripts/lib/install.mjs +269 -0
- package/scripts/lib/managed-writer.mjs +38 -0
- package/scripts/lib/planning.mjs +263 -0
- package/scripts/lib/prepare-update.mjs +85 -0
- package/scripts/lib/refresh-writers.mjs +12 -0
- package/scripts/lib/remove.mjs +167 -0
- package/scripts/lib/renderer.mjs +34 -0
- package/scripts/lib/terminal.mjs +252 -0
- package/scripts/lib/uninit.mjs +72 -0
- package/scripts/lib/update.mjs +55 -0
- package/scripts/lib/writer-recovery.mjs +35 -0
- package/scripts/lib/yolo.mjs +362 -0
- package/scripts/plugin-session.mjs +65 -0
- package/scripts/prepare-update.mjs +12 -0
- package/scripts/publish-release.mjs +92 -0
- package/scripts/skills/supportpages/SKILL.md +120 -0
- package/scripts/smoke-release.mjs +101 -0
- package/server.json +27 -0
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
/* macos-frame.css — hand-authored glue for macos-mode (native AppKit app)
|
|
2
|
+
* mockups. Concatenated LAST by detect-project's macos branch:
|
|
3
|
+
* branding.css = puppertino.css + fonts.css + desktop-frame.css + macos-frame.css
|
|
4
|
+
* so plain source order lets these rules extend the desktop bundle's mac
|
|
5
|
+
* window chrome and Puppertino's widgets. Never regenerated by
|
|
6
|
+
* tools/build_macosui_bundle.sh.
|
|
7
|
+
*
|
|
8
|
+
* These classes ship in branding.css on purpose: the fidelity lint hard-fails
|
|
9
|
+
* classes a mockup defines in its own <style> block, so the frame must be
|
|
10
|
+
* pre-defined here and mockups may only USE these class names. The CSS vars
|
|
11
|
+
* below also whitelist the macOS system palette for the lint's colour check.
|
|
12
|
+
*
|
|
13
|
+
* The load-bearing bits:
|
|
14
|
+
* - .desktop-titlebar--macos-unified is a MODIFIER on .desktop-titlebar
|
|
15
|
+
* (NSWindowToolbarStyleUnified: 52px, traffic lights → title left-of-
|
|
16
|
+
* toolbar → toolbar items right). The contract stays "exactly one
|
|
17
|
+
* .desktop-titlebar", with or without the modifier.
|
|
18
|
+
* - .macos-stage--menubar flips the stage to a COLUMN: .desktop-stage is a
|
|
19
|
+
* flex row, so without the modifier a menubar strip would sit beside the
|
|
20
|
+
* window, not above it. The strip is full-bleed and positioned so its
|
|
21
|
+
* dropdown paints over the later-DOM window.
|
|
22
|
+
* - .desktop-window-content is re-declared flex-column here with
|
|
23
|
+
* .macos-statusbar { margin-top: auto } — the win32 round-2 floating-
|
|
24
|
+
* statusbar pin lives in win32-frame.css and does NOT carry over.
|
|
25
|
+
* - Sheets are position:absolute inside .desktop-window-content (top-
|
|
26
|
+
* anchored, like real NSWindow sheets); never fixed (escapes the frame).
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
:root {
|
|
30
|
+
--macos-accent: #007aff;
|
|
31
|
+
--macos-window-bg: #f6f6f6;
|
|
32
|
+
--macos-sidebar-bg: #eaeaec;
|
|
33
|
+
--macos-row-alt: #f5f5f7;
|
|
34
|
+
--macos-border: #dcdcde;
|
|
35
|
+
--macos-text-secondary: #6e6e73;
|
|
36
|
+
/* macOS system palette (Apple HIG system colours) — declared here so the
|
|
37
|
+
* lint's colour whitelist admits them; use for progress/status accents. */
|
|
38
|
+
--macos-green: #34c759;
|
|
39
|
+
--macos-red: #ff3b30;
|
|
40
|
+
--macos-orange: #ff9500;
|
|
41
|
+
--macos-yellow: #ffcc00;
|
|
42
|
+
--macos-gray: #98989d;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.desktop-window {
|
|
46
|
+
font-family: -apple-system, 'SF Pro Text', 'Inter', 'Helvetica Neue', sans-serif;
|
|
47
|
+
font-size: 13px;
|
|
48
|
+
color: #1d1d1f;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.desktop-window-content {
|
|
52
|
+
display: flex;
|
|
53
|
+
flex-direction: column;
|
|
54
|
+
background: var(--macos-window-bg);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* ── Unified titlebar (NSWindowToolbarStyleUnified) ───────────────────────── */
|
|
58
|
+
|
|
59
|
+
.desktop-titlebar.desktop-titlebar--macos-unified {
|
|
60
|
+
height: 52px;
|
|
61
|
+
padding: 0 16px 0 20px;
|
|
62
|
+
background: linear-gradient(#f7f7f7, #efeff0);
|
|
63
|
+
gap: 12px;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* Unified titles sit left-of-toolbar, not absolutely centered like classic. */
|
|
67
|
+
.desktop-titlebar--macos-unified .desktop-window-title {
|
|
68
|
+
position: static;
|
|
69
|
+
left: auto;
|
|
70
|
+
right: auto;
|
|
71
|
+
text-align: left;
|
|
72
|
+
font-size: 14px;
|
|
73
|
+
font-weight: 600;
|
|
74
|
+
margin-left: 8px;
|
|
75
|
+
pointer-events: none;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.macos-toolbar-items {
|
|
79
|
+
display: flex;
|
|
80
|
+
align-items: center;
|
|
81
|
+
gap: 6px;
|
|
82
|
+
margin-left: auto;
|
|
83
|
+
flex-shrink: 0;
|
|
84
|
+
color: #57575c;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.macos-toolbar-item {
|
|
88
|
+
display: flex;
|
|
89
|
+
align-items: center;
|
|
90
|
+
justify-content: center;
|
|
91
|
+
width: 34px;
|
|
92
|
+
height: 28px;
|
|
93
|
+
border: none;
|
|
94
|
+
border-radius: 6px;
|
|
95
|
+
background: none;
|
|
96
|
+
box-shadow: none;
|
|
97
|
+
min-width: 0;
|
|
98
|
+
padding: 0;
|
|
99
|
+
color: inherit;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.macos-toolbar-item svg {
|
|
103
|
+
width: 17px;
|
|
104
|
+
height: 17px;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.macos-toolbar-item--active {
|
|
108
|
+
background: rgba(0, 0, 0, 0.08);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.macos-toolbar-sep {
|
|
112
|
+
width: 1px;
|
|
113
|
+
height: 20px;
|
|
114
|
+
background: var(--macos-border);
|
|
115
|
+
margin: 0 4px;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* ── Menu bar strip (screen-top; menu-open steps ONLY) ────────────────────── */
|
|
119
|
+
|
|
120
|
+
/* The stage is a flex ROW by default — this modifier stacks strip-then-window. */
|
|
121
|
+
body.desktop-stage.macos-stage--menubar {
|
|
122
|
+
flex-direction: column;
|
|
123
|
+
align-items: center;
|
|
124
|
+
padding-top: 0;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.macos-menubar {
|
|
128
|
+
align-self: stretch;
|
|
129
|
+
margin: 0 -48px 48px;
|
|
130
|
+
display: flex;
|
|
131
|
+
align-items: center;
|
|
132
|
+
gap: 2px;
|
|
133
|
+
height: 25px;
|
|
134
|
+
padding: 0 16px;
|
|
135
|
+
background: rgba(246, 246, 246, 0.96);
|
|
136
|
+
border-bottom: 1px solid var(--macos-border);
|
|
137
|
+
font-size: 13px;
|
|
138
|
+
color: #1d1d1f;
|
|
139
|
+
/* explicit stacking so the dropdown paints over the later-DOM window */
|
|
140
|
+
position: relative;
|
|
141
|
+
z-index: 5000;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/* The glyph is drawn, not typed (U+F8FF is private-use and font-dependent). */
|
|
145
|
+
.macos-menubar-apple {
|
|
146
|
+
width: 13px;
|
|
147
|
+
height: 15px;
|
|
148
|
+
margin-right: 10px;
|
|
149
|
+
background: #1d1d1f;
|
|
150
|
+
-webkit-mask: radial-gradient(circle at 65% 28%, transparent 3px, #000 3.5px) content-box;
|
|
151
|
+
mask: radial-gradient(circle at 65% 28%, transparent 3px, #000 3.5px) content-box;
|
|
152
|
+
border-radius: 45% 55% 48% 52% / 60% 60% 40% 40%;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.macos-menubar-item {
|
|
156
|
+
padding: 3px 10px;
|
|
157
|
+
border-radius: 4px;
|
|
158
|
+
position: relative;
|
|
159
|
+
white-space: nowrap;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.macos-menubar-item--app {
|
|
163
|
+
font-weight: 700;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.macos-menubar-item.macos-menu-open {
|
|
167
|
+
background: var(--macos-accent);
|
|
168
|
+
color: #ffffff;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/* ── Menus (dropdown from the menubar; also context menus) ────────────────── */
|
|
172
|
+
|
|
173
|
+
.macos-menu {
|
|
174
|
+
display: none;
|
|
175
|
+
position: absolute;
|
|
176
|
+
top: 100%;
|
|
177
|
+
left: 0;
|
|
178
|
+
min-width: 240px;
|
|
179
|
+
padding: 5px;
|
|
180
|
+
margin: 1px 0 0;
|
|
181
|
+
list-style: none;
|
|
182
|
+
background: rgba(246, 246, 246, 0.98);
|
|
183
|
+
border: 1px solid rgba(0, 0, 0, 0.12);
|
|
184
|
+
border-radius: 8px;
|
|
185
|
+
box-shadow: 0 10px 34px rgba(0, 0, 0, 0.28);
|
|
186
|
+
color: #1d1d1f;
|
|
187
|
+
z-index: 6000;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.macos-menu-open > .macos-menu {
|
|
191
|
+
display: block;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.macos-menu-item {
|
|
195
|
+
display: flex;
|
|
196
|
+
align-items: center;
|
|
197
|
+
justify-content: space-between;
|
|
198
|
+
gap: 28px;
|
|
199
|
+
padding: 4px 10px;
|
|
200
|
+
border-radius: 5px;
|
|
201
|
+
white-space: nowrap;
|
|
202
|
+
font-size: 13px;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.macos-menu-item--hover {
|
|
206
|
+
background: var(--macos-accent);
|
|
207
|
+
color: #ffffff;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.macos-menu-item--disabled {
|
|
211
|
+
color: rgba(29, 29, 31, 0.35);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.macos-menu-shortcut {
|
|
215
|
+
color: var(--macos-text-secondary);
|
|
216
|
+
letter-spacing: 1px;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.macos-menu-item--hover .macos-menu-shortcut {
|
|
220
|
+
color: inherit;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.macos-menu-divider {
|
|
224
|
+
height: 1px;
|
|
225
|
+
margin: 5px 10px;
|
|
226
|
+
background: rgba(0, 0, 0, 0.1);
|
|
227
|
+
list-style: none;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/* Submenu rows: single row + drawn cascade arrow — never inline children. */
|
|
231
|
+
.macos-menu-sub::after {
|
|
232
|
+
content: '';
|
|
233
|
+
width: 0;
|
|
234
|
+
height: 0;
|
|
235
|
+
border-left: 4px solid currentColor;
|
|
236
|
+
border-top: 4px solid transparent;
|
|
237
|
+
border-bottom: 4px solid transparent;
|
|
238
|
+
margin-left: 12px;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/* Secondary windows (Preferences, About, utility panels) are much smaller
|
|
242
|
+
* than the fixed 1480×900 main window — this modifier lets them size to
|
|
243
|
+
* content. Standalone in the stage (a real macOS Preferences window is its
|
|
244
|
+
* own window, not an overlay). */
|
|
245
|
+
.desktop-window.macos-window--compact {
|
|
246
|
+
width: auto;
|
|
247
|
+
height: auto;
|
|
248
|
+
min-width: 560px;
|
|
249
|
+
max-width: 860px;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/* ── App scaffold ─────────────────────────────────────────────────────────── */
|
|
253
|
+
|
|
254
|
+
.macos-source-list {
|
|
255
|
+
flex-shrink: 0;
|
|
256
|
+
width: 200px;
|
|
257
|
+
background: var(--macos-sidebar-bg);
|
|
258
|
+
border-right: 1px solid var(--macos-border);
|
|
259
|
+
padding: 10px 8px;
|
|
260
|
+
box-sizing: border-box;
|
|
261
|
+
font-size: 13px;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
.macos-source-item {
|
|
265
|
+
display: flex;
|
|
266
|
+
align-items: center;
|
|
267
|
+
gap: 7px;
|
|
268
|
+
padding: 5px 9px;
|
|
269
|
+
border-radius: 6px;
|
|
270
|
+
color: #1d1d1f;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
.macos-source-item--selected {
|
|
274
|
+
background: rgba(0, 0, 0, 0.08);
|
|
275
|
+
font-weight: 600;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/* Icon+label tab strip (Inspector tabs, Preferences toolbar-tabs) — the real
|
|
279
|
+
* macOS pattern is a segmented row of icon-over-label buttons, not text pills;
|
|
280
|
+
* a deterministic class beats improvised chips (the .tui-panel lesson). */
|
|
281
|
+
.macos-tab-strip {
|
|
282
|
+
flex-shrink: 0;
|
|
283
|
+
display: flex;
|
|
284
|
+
justify-content: center;
|
|
285
|
+
gap: 4px;
|
|
286
|
+
padding: 6px 10px;
|
|
287
|
+
background: #ececee;
|
|
288
|
+
border-bottom: 1px solid var(--macos-border);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.macos-tab {
|
|
292
|
+
display: flex;
|
|
293
|
+
flex-direction: column;
|
|
294
|
+
align-items: center;
|
|
295
|
+
gap: 3px;
|
|
296
|
+
min-width: 58px;
|
|
297
|
+
padding: 4px 10px;
|
|
298
|
+
border-radius: 7px;
|
|
299
|
+
font-size: 11px;
|
|
300
|
+
color: var(--macos-text-secondary);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.macos-tab svg {
|
|
304
|
+
width: 17px;
|
|
305
|
+
height: 17px;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.macos-tab--selected {
|
|
309
|
+
background: rgba(0, 0, 0, 0.1);
|
|
310
|
+
color: #1d1d1f;
|
|
311
|
+
font-weight: 600;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
.macos-filterbar {
|
|
315
|
+
flex-shrink: 0;
|
|
316
|
+
display: flex;
|
|
317
|
+
align-items: center;
|
|
318
|
+
gap: 6px;
|
|
319
|
+
padding: 5px 12px;
|
|
320
|
+
background: #ececee;
|
|
321
|
+
border-bottom: 1px solid var(--macos-border);
|
|
322
|
+
font-size: 12px;
|
|
323
|
+
color: var(--macos-text-secondary);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
.macos-filter-chip {
|
|
327
|
+
padding: 2px 10px;
|
|
328
|
+
border-radius: 9px;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.macos-filter-chip--active {
|
|
332
|
+
background: rgba(0, 0, 0, 0.14);
|
|
333
|
+
color: #1d1d1f;
|
|
334
|
+
font-weight: 600;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/* NSTableView stand-in: header row + striped rows. */
|
|
338
|
+
.macos-table {
|
|
339
|
+
flex: 1;
|
|
340
|
+
min-height: 0;
|
|
341
|
+
overflow: hidden;
|
|
342
|
+
background: #ffffff;
|
|
343
|
+
font-size: 13px;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.macos-table-header {
|
|
347
|
+
display: flex;
|
|
348
|
+
padding: 4px 12px;
|
|
349
|
+
border-bottom: 1px solid var(--macos-border);
|
|
350
|
+
background: #f9f9fa;
|
|
351
|
+
color: var(--macos-text-secondary);
|
|
352
|
+
font-size: 11px;
|
|
353
|
+
font-weight: 600;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
.macos-table-row {
|
|
357
|
+
display: flex;
|
|
358
|
+
align-items: center;
|
|
359
|
+
gap: 10px;
|
|
360
|
+
padding: 8px 12px;
|
|
361
|
+
border-bottom: 1px solid #f0f0f2;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
.macos-table-row--alt {
|
|
365
|
+
background: var(--macos-row-alt);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
.macos-table-row--selected {
|
|
369
|
+
background: var(--macos-accent);
|
|
370
|
+
color: #ffffff;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/* Cell-based list rows (the NSOutlineView/NSTableView CELL pattern — most mac
|
|
374
|
+
* app main windows are cell lists, NOT column grids; .macos-table-header is
|
|
375
|
+
* only for real data grids). One .macos-list-cell per row; sub-elements match
|
|
376
|
+
* the view's recorded row_anatomy. */
|
|
377
|
+
.macos-list-cell {
|
|
378
|
+
display: flex;
|
|
379
|
+
flex-direction: column;
|
|
380
|
+
gap: 4px;
|
|
381
|
+
padding: 9px 14px;
|
|
382
|
+
border-bottom: 1px solid #f0f0f2;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.macos-list-cell--alt {
|
|
386
|
+
background: var(--macos-row-alt);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.macos-list-cell--selected {
|
|
390
|
+
background: var(--macos-accent);
|
|
391
|
+
color: #ffffff;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.macos-list-cell-title {
|
|
395
|
+
font-weight: 600;
|
|
396
|
+
font-size: 13px;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
.macos-list-progress {
|
|
400
|
+
height: 5px;
|
|
401
|
+
background: #e4e4e8;
|
|
402
|
+
border-radius: 3px;
|
|
403
|
+
overflow: hidden;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.macos-list-progress-fill {
|
|
407
|
+
height: 100%;
|
|
408
|
+
background: var(--macos-accent);
|
|
409
|
+
border-radius: 3px;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
.macos-list-cell-status {
|
|
413
|
+
font-size: 11px;
|
|
414
|
+
color: var(--macos-text-secondary);
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
.macos-list-cell--selected .macos-list-cell-status {
|
|
418
|
+
color: rgba(255, 255, 255, 0.85);
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
.macos-statusbar {
|
|
422
|
+
flex-shrink: 0;
|
|
423
|
+
/* margin-top:auto pins the bar to the window bottom even when the client
|
|
424
|
+
* area doesn't flex-grow (the win32 round-2 floating-statusbar lesson). */
|
|
425
|
+
margin-top: auto;
|
|
426
|
+
display: flex;
|
|
427
|
+
align-items: center;
|
|
428
|
+
justify-content: space-between;
|
|
429
|
+
padding: 4px 12px;
|
|
430
|
+
background: #ececee;
|
|
431
|
+
border-top: 1px solid var(--macos-border);
|
|
432
|
+
font-size: 11px;
|
|
433
|
+
color: var(--macos-text-secondary);
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
/* ── Sheets (NSWindow sheets attach under the titlebar; nothing dims) ─────── */
|
|
437
|
+
|
|
438
|
+
.macos-sheet {
|
|
439
|
+
position: absolute;
|
|
440
|
+
top: 0;
|
|
441
|
+
left: 50%;
|
|
442
|
+
transform: translateX(-50%);
|
|
443
|
+
min-width: 420px;
|
|
444
|
+
background: #f2f2f4;
|
|
445
|
+
border-radius: 0 0 10px 10px;
|
|
446
|
+
box-shadow: 0 18px 50px rgba(0, 0, 0, 0.35), 0 0 0 1px rgba(0, 0, 0, 0.08);
|
|
447
|
+
padding: 18px 20px 16px;
|
|
448
|
+
z-index: 800;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
.macos-sheet-buttons {
|
|
452
|
+
display: flex;
|
|
453
|
+
justify-content: flex-end;
|
|
454
|
+
gap: 10px;
|
|
455
|
+
margin-top: 16px;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
/* ── Popover (with drawn arrow) ───────────────────────────────────────────── */
|
|
459
|
+
|
|
460
|
+
.macos-popover {
|
|
461
|
+
position: absolute;
|
|
462
|
+
background: #f6f6f8;
|
|
463
|
+
border: 1px solid rgba(0, 0, 0, 0.14);
|
|
464
|
+
border-radius: 10px;
|
|
465
|
+
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3);
|
|
466
|
+
padding: 14px;
|
|
467
|
+
z-index: 900;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
.macos-popover::before {
|
|
471
|
+
content: '';
|
|
472
|
+
position: absolute;
|
|
473
|
+
top: -7px;
|
|
474
|
+
left: 50%;
|
|
475
|
+
transform: translateX(-50%) rotate(45deg);
|
|
476
|
+
width: 12px;
|
|
477
|
+
height: 12px;
|
|
478
|
+
background: #f6f6f8;
|
|
479
|
+
border-left: 1px solid rgba(0, 0, 0, 0.14);
|
|
480
|
+
border-top: 1px solid rgba(0, 0, 0, 0.14);
|
|
481
|
+
}
|