aimeat 1.16.2 → 1.18.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/dist/.env.example +6 -1
- package/dist/locales/en.json +166 -4
- package/dist/locales/fi.json +166 -4
- package/dist/public/components/Card.js +17 -3
- package/dist/public/components/Collapsible.js +39 -0
- package/dist/public/components/CopyButton.js +55 -24
- package/dist/public/components/DataTable.js +57 -0
- package/dist/public/components/EmptyState.js +28 -0
- package/dist/public/components/KeyValueRow.js +37 -0
- package/dist/public/components/Modal.js +22 -5
- package/dist/public/components/Pagination.js +70 -0
- package/dist/public/components/SearchBar.js +44 -0
- package/dist/public/components/StatusDot.js +29 -0
- package/dist/public/components/TagList.js +53 -0
- package/dist/public/components/ToggleSwitch.js +28 -0
- package/dist/public/components/index.js +41 -1
- package/dist/public/css/components/tags.css +24 -0
- package/dist/public/css/style-testbed.css +135 -0
- package/dist/public/css/theme.css +556 -34
- package/dist/public/css/views/admin-agent-integration.css +2 -33
- package/dist/public/css/views/admin.css +730 -686
- package/dist/public/css/views/agents-detail.css +402 -14
- package/dist/public/css/views/help.css +2 -1
- package/dist/public/css/views/hobbies.css +53 -33
- package/dist/public/css/views/marketplace.css +73 -60
- package/dist/public/css/views/openclaw.css +12 -6
- package/dist/public/css/views/portal-classic.css +34 -26
- package/dist/public/css/views/portal-dev.css +41 -32
- package/dist/public/css/views/portal.css +14 -18
- package/dist/public/css/views/profile.css +252 -164
- package/dist/public/css/views/public-knowledge-viewer.css +18 -6
- package/dist/public/css/views/scheduler.css +100 -0
- package/dist/public/js/format.js +41 -0
- package/dist/public/js/services/agent-tasks.js +14 -1
- package/dist/public/js/services/generator-spec-validate.js +5 -1
- package/dist/public/js/services/schedules.js +53 -0
- package/dist/public/js/style-testbed.js +170 -0
- package/dist/public/js/theme.js +114 -0
- package/dist/public/spa.html +74 -16
- package/dist/public/style-testbed.html +420 -0
- package/dist/public/views/admin/agent-integration-tab.js +23 -38
- package/dist/public/views/admin/agent-tasks-tab.js +14 -21
- package/dist/public/views/admin/chat-instances-tab.js +1 -1
- package/dist/public/views/admin/config-tab.js +7 -2
- package/dist/public/views/admin/cortex-tab.js +20 -14
- package/dist/public/views/admin/csm-tab.js +22 -18
- package/dist/public/views/admin/directory-tab.js +3 -3
- package/dist/public/views/admin/email-tab.js +23 -28
- package/dist/public/views/admin/federation-tab.js +15 -5
- package/dist/public/views/admin/generator-debug-tab.js +10 -8
- package/dist/public/views/admin/genesis-tab.js +4 -4
- package/dist/public/views/admin/ghii-tab.js +3 -3
- package/dist/public/views/admin/knowledge-tab.js +15 -5
- package/dist/public/views/admin/matching-tab.js +3 -3
- package/dist/public/views/admin/memory-tab.js +16 -20
- package/dist/public/views/admin/msm-tab.js +30 -17
- package/dist/public/views/admin/overview-tab.js +7 -7
- package/dist/public/views/admin/packages-tab.js +10 -9
- package/dist/public/views/admin/portal-tab.js +14 -4
- package/dist/public/views/admin/prompts-tab.js +5 -5
- package/dist/public/views/admin/push-tab.js +15 -4
- package/dist/public/views/admin/realtime-tab.js +3 -3
- package/dist/public/views/admin/services-tab.js +18 -27
- package/dist/public/views/admin/shared.js +48 -58
- package/dist/public/views/admin/sharing-groups-tab.js +5 -10
- package/dist/public/views/admin/stats-tab.js +3 -3
- package/dist/public/views/guides.js +9 -13
- package/dist/public/views/help.js +3 -24
- package/dist/public/views/hobbies.js +47 -41
- package/dist/public/views/marketplace.js +42 -34
- package/dist/public/views/openclaw.js +0 -1
- package/dist/public/views/portal-classic.js +4 -15
- package/dist/public/views/portal-dev.js +28 -30
- package/dist/public/views/portal.js +16 -21
- package/dist/public/views/portfolio.js +11 -12
- package/dist/public/views/profile/access-tab.js +250 -1
- package/dist/public/views/profile/agents/agent-card.js +75 -4
- package/dist/public/views/profile/agents/tab-activity.js +15 -13
- package/dist/public/views/profile/agents/tab-agent-config.js +60 -6
- package/dist/public/views/profile/agents/tab-integration.js +37 -60
- package/dist/public/views/profile/agents/tab-messages.js +10 -1
- package/dist/public/views/profile/agents/tab-quality.js +25 -19
- package/dist/public/views/profile/agents/tab-schedules.js +110 -0
- package/dist/public/views/profile/agents-activity-subtab.js +4 -4
- package/dist/public/views/profile/agents-services-subtab.js +5 -4
- package/dist/public/views/profile/agents-tab.js +141 -37
- package/dist/public/views/profile/agents-tasks-subtab.js +221 -26
- package/dist/public/views/profile/calibrator-batch.js +5 -11
- package/dist/public/views/profile/calibrator-tab.js +4 -9
- package/dist/public/views/profile/chat-sessions-tab.js +9 -5
- package/dist/public/views/profile/email-tab.js +2 -2
- package/dist/public/views/profile/extensions-tab.js +27 -22
- package/dist/public/views/profile/federation-tab.js +4 -1
- package/dist/public/views/profile/foundry-detail.js +22 -23
- package/dist/public/views/profile/foundry-tab.js +12 -13
- package/dist/public/views/profile/generator-dashboard/DebugPanel.js +4 -7
- package/dist/public/views/profile/generator-dashboard/use-dashboard-core.js +4 -1
- package/dist/public/views/profile/generator-dashboard/use-edit-mode.js +3 -2
- package/dist/public/views/profile/generator-detail.js +26 -30
- package/dist/public/views/profile/generator-tab.js +5 -5
- package/dist/public/views/profile/knowledge-tab.js +12 -12
- package/dist/public/views/profile/landing-page.js +100 -149
- package/dist/public/views/profile/memory-tab.js +15 -11
- package/dist/public/views/profile/node-stats-tab.js +3 -3
- package/dist/public/views/profile/nodes-tab.js +10 -3
- package/dist/public/views/profile/notifications-tab.js +3 -3
- package/dist/public/views/profile/packages-tab.js +14 -14
- package/dist/public/views/profile/scheduler-tab.js +340 -0
- package/dist/public/views/profile/services-tab.js +1 -1
- package/dist/public/views/profile/shared.js +16 -12
- package/dist/public/views/profile/wallet-tab.js +27 -50
- package/dist/public/views/profile/work-tab.js +29 -31
- package/dist/public/views/profile.js +24 -0
- package/dist/public/views/public-knowledge-viewer.js +9 -18
- package/dist/src/auth/middleware.d.ts +3 -2
- package/dist/src/auth/middleware.d.ts.map +1 -1
- package/dist/src/auth/middleware.js +78 -3
- package/dist/src/auth/middleware.js.map +1 -1
- package/dist/src/cli/init-wizard.d.ts.map +1 -1
- package/dist/src/cli/init-wizard.js +13 -1
- package/dist/src/cli/init-wizard.js.map +1 -1
- package/dist/src/config.d.ts +6 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +12 -1
- package/dist/src/config.js.map +1 -1
- package/dist/src/generated/api-types.d.ts +708 -8
- package/dist/src/generated/api-types.d.ts.map +1 -1
- package/dist/src/mcp/agent-schedules.d.ts +23 -0
- package/dist/src/mcp/agent-schedules.d.ts.map +1 -0
- package/dist/src/mcp/agent-schedules.js +175 -0
- package/dist/src/mcp/agent-schedules.js.map +1 -0
- package/dist/src/mcp/annotations.d.ts.map +1 -1
- package/dist/src/mcp/annotations.js +6 -0
- package/dist/src/mcp/annotations.js.map +1 -1
- package/dist/src/mcp/catalog/definitions.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions.js +55 -0
- package/dist/src/mcp/catalog/definitions.js.map +1 -1
- package/dist/src/mcp/catalog/scopes.d.ts.map +1 -1
- package/dist/src/mcp/catalog/scopes.js +12 -0
- package/dist/src/mcp/catalog/scopes.js.map +1 -1
- package/dist/src/mcp/catalog/surfaces.d.ts.map +1 -1
- package/dist/src/mcp/catalog/surfaces.js +2 -0
- package/dist/src/mcp/catalog/surfaces.js.map +1 -1
- package/dist/src/mcp/index.d.ts.map +1 -1
- package/dist/src/mcp/index.js +2 -0
- package/dist/src/mcp/index.js.map +1 -1
- package/dist/src/models/agent-task-schemas.d.ts +6 -0
- package/dist/src/models/agent-task-schemas.d.ts.map +1 -1
- package/dist/src/models/agent-task-schemas.js +6 -0
- package/dist/src/models/agent-task-schemas.js.map +1 -1
- package/dist/src/models/schemas.d.ts +1 -0
- package/dist/src/models/schemas.d.ts.map +1 -1
- package/dist/src/models/schemas.js +4 -0
- package/dist/src/models/schemas.js.map +1 -1
- package/dist/src/routes/access-tokens.d.ts +17 -0
- package/dist/src/routes/access-tokens.d.ts.map +1 -0
- package/dist/src/routes/access-tokens.js +164 -0
- package/dist/src/routes/access-tokens.js.map +1 -0
- package/dist/src/routes/agent-tasks.d.ts +2 -0
- package/dist/src/routes/agent-tasks.d.ts.map +1 -1
- package/dist/src/routes/agent-tasks.js +118 -23
- package/dist/src/routes/agent-tasks.js.map +1 -1
- package/dist/src/routes/agents.d.ts.map +1 -1
- package/dist/src/routes/agents.js +46 -0
- package/dist/src/routes/agents.js.map +1 -1
- package/dist/src/routes/ai.d.ts +6 -9
- package/dist/src/routes/ai.d.ts.map +1 -1
- package/dist/src/routes/ai.js +26 -175
- package/dist/src/routes/ai.js.map +1 -1
- package/dist/src/routes/apps.d.ts.map +1 -1
- package/dist/src/routes/apps.js +104 -34
- package/dist/src/routes/apps.js.map +1 -1
- package/dist/src/routes/auth.d.ts.map +1 -1
- package/dist/src/routes/auth.js +77 -4
- package/dist/src/routes/auth.js.map +1 -1
- package/dist/src/routes/cortex.d.ts +2 -1
- package/dist/src/routes/cortex.d.ts.map +1 -1
- package/dist/src/routes/cortex.js +13 -8
- package/dist/src/routes/cortex.js.map +1 -1
- package/dist/src/routes/extensions.d.ts.map +1 -1
- package/dist/src/routes/extensions.js +85 -51
- package/dist/src/routes/extensions.js.map +1 -1
- package/dist/src/routes/generator.d.ts.map +1 -1
- package/dist/src/routes/generator.js +109 -43
- package/dist/src/routes/generator.js.map +1 -1
- package/dist/src/routes/ghii.d.ts.map +1 -1
- package/dist/src/routes/ghii.js +34 -13
- package/dist/src/routes/ghii.js.map +1 -1
- package/dist/src/routes/libs.d.ts +15 -0
- package/dist/src/routes/libs.d.ts.map +1 -1
- package/dist/src/routes/libs.js +178 -55
- package/dist/src/routes/libs.js.map +1 -1
- package/dist/src/routes/portal.d.ts.map +1 -1
- package/dist/src/routes/portal.js +1 -0
- package/dist/src/routes/portal.js.map +1 -1
- package/dist/src/routes/schedules.d.ts +33 -0
- package/dist/src/routes/schedules.d.ts.map +1 -0
- package/dist/src/routes/schedules.js +380 -0
- package/dist/src/routes/schedules.js.map +1 -0
- package/dist/src/server-bootstrap/config-init.js +2 -2
- package/dist/src/server-bootstrap/config-init.js.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.js +7 -0
- package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
- package/dist/src/server-bootstrap/service-init.d.ts.map +1 -1
- package/dist/src/server-bootstrap/service-init.js +2 -1
- package/dist/src/server-bootstrap/service-init.js.map +1 -1
- package/dist/src/services/access-token.d.ts +28 -0
- package/dist/src/services/access-token.d.ts.map +1 -0
- package/dist/src/services/access-token.js +37 -0
- package/dist/src/services/access-token.js.map +1 -0
- package/dist/src/services/ai-completion.d.ts +83 -0
- package/dist/src/services/ai-completion.d.ts.map +1 -0
- package/dist/src/services/ai-completion.js +187 -0
- package/dist/src/services/ai-completion.js.map +1 -0
- package/dist/src/services/config-schema.d.ts.map +1 -1
- package/dist/src/services/config-schema.js +3 -0
- package/dist/src/services/config-schema.js.map +1 -1
- package/dist/src/services/generator-prompt-seeds.d.ts.map +1 -1
- package/dist/src/services/generator-prompt-seeds.js +6 -3
- package/dist/src/services/generator-prompt-seeds.js.map +1 -1
- package/dist/src/services/generator-prompts/spec-validate.d.ts.map +1 -1
- package/dist/src/services/generator-prompts/spec-validate.js +6 -2
- package/dist/src/services/generator-prompts/spec-validate.js.map +1 -1
- package/dist/src/services/generator-registration.d.ts +12 -4
- package/dist/src/services/generator-registration.d.ts.map +1 -1
- package/dist/src/services/generator-registration.js +71 -0
- package/dist/src/services/generator-registration.js.map +1 -1
- package/dist/src/services/generator-validate.d.ts +10 -0
- package/dist/src/services/generator-validate.d.ts.map +1 -1
- package/dist/src/services/generator-validate.js +180 -36
- package/dist/src/services/generator-validate.js.map +1 -1
- package/dist/src/services/owner-session.d.ts +43 -0
- package/dist/src/services/owner-session.d.ts.map +1 -0
- package/dist/src/services/owner-session.js +175 -0
- package/dist/src/services/owner-session.js.map +1 -0
- package/dist/src/services/schedule-constraints.d.ts +65 -0
- package/dist/src/services/schedule-constraints.d.ts.map +1 -0
- package/dist/src/services/schedule-constraints.js +106 -0
- package/dist/src/services/schedule-constraints.js.map +1 -0
- package/dist/src/services/scheduler.d.ts +34 -0
- package/dist/src/services/scheduler.d.ts.map +1 -1
- package/dist/src/services/scheduler.js +266 -22
- package/dist/src/services/scheduler.js.map +1 -1
- package/dist/src/services/skill-bundle/generator.js +19 -0
- package/dist/src/services/skill-bundle/generator.js.map +1 -1
- package/dist/src/storage/interface.d.ts +48 -4
- package/dist/src/storage/interface.d.ts.map +1 -1
- package/dist/src/storage/interface.js.map +1 -1
- package/dist/src/storage/providers/mongodb/index.d.ts +31 -0
- package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/index.js +187 -9
- package/dist/src/storage/providers/mongodb/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/index.d.ts +31 -0
- package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/index.js +131 -8
- package/dist/src/storage/providers/sqlite/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent-task.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent-task.js +6 -4
- package/dist/src/storage/providers/sqlite/repos/agent-task.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.js +79 -8
- package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
- package/dist/src/storage/repositories/pat.repository.d.ts +40 -0
- package/dist/src/storage/repositories/pat.repository.d.ts.map +1 -0
- package/dist/src/storage/repositories/pat.repository.js +14 -0
- package/dist/src/storage/repositories/pat.repository.js.map +1 -0
- package/dist/src/storage/repositories/scheduler.repository.d.ts +2 -0
- package/dist/src/storage/repositories/scheduler.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/session.repository.d.ts +51 -0
- package/dist/src/storage/repositories/session.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/session.repository.js +12 -0
- package/dist/src/storage/repositories/session.repository.js.map +1 -1
- package/dist/src/utils/env-config.d.ts.map +1 -1
- package/dist/src/utils/env-config.js +25 -1
- package/dist/src/utils/env-config.js.map +1 -1
- package/dist/src/utils/env-validator.d.ts.map +1 -1
- package/dist/src/utils/env-validator.js +4 -0
- package/dist/src/utils/env-validator.js.map +1 -1
- package/package.json +1 -1
- package/prisma/schema.prisma +48 -0
|
@@ -1,7 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file marketplace.css
|
|
3
|
+
* @description Styles for the marketplace SPA view (.mk- scoped) — listing cards,
|
|
4
|
+
* browse/search forms, status badges, instance selector, and pagination.
|
|
5
|
+
* @version-history
|
|
6
|
+
* v1.1.0 — 2026-06-02 — Phase 5: tokenize for dark mode (bare color literals → theme tokens)
|
|
7
|
+
* v1.2.0 — 2026-06-02 — Component unification (#4 buttons): remove .mk-btn* family;
|
|
8
|
+
* marketplace buttons use canonical theme.css .btn-primary / .btn-outline / .btn-sm.
|
|
9
|
+
* v1.3.0 — 2026-06-02 — Component unification (#5 inputs): remove .mk-form-input/
|
|
10
|
+
* -textarea/-select; fields use canonical .input-field (kept mk-form-group/-label/-grid).
|
|
11
|
+
* v1.4.0 — 2026-06-02 — Component unification (#6 stat cards): remove .mk-stat*;
|
|
12
|
+
* stats use canonical .stat-grid / .stat-card / .stat-card-value.accent / .stat-card-label.
|
|
13
|
+
* v1.5.0 — 2026-06-02 — Component unification (#19): tokenize .mk-alert-success/-error
|
|
14
|
+
* (hardcoded rgba/#ef4444 → --success/-danger -bg/-fg/-border) — dark-mode fix.
|
|
15
|
+
* v1.6.0 — 2026-06-02 — Component unification (#15 headers): tokenize .mk-page-title
|
|
16
|
+
* gradient (hardcoded #E8564A → var(--accent-deep)); now token-equivalent to
|
|
17
|
+
* canonical theme.css .page-title/.page-subtitle (candidates for future deletion).
|
|
18
|
+
* v1.7.0 — 2026-06-02 — Component unification (#18 category cards): remove .mk-category-card/
|
|
19
|
+
* -icon/-name/-count; tiles use canonical theme.css .category-card (kept .mk-categories-grid
|
|
20
|
+
* wrapper — 160px columns differ from hobbies' 200px). Removed hardcoded hover #E8564A and
|
|
21
|
+
* rgba(0,0,0,0.06) shadow (now tokenized in the canonical class) — dark-mode fix.
|
|
22
|
+
* v1.8.0 — 2026-06-02 — Component unification (#17 pagination): tokenize
|
|
23
|
+
* .mk-pagination a.active background (hardcoded rgba(232,86,74,0.06) →
|
|
24
|
+
* var(--accent-subtle)) — dark-mode fix. Markup left in place (scoped .mk-,
|
|
25
|
+
* prev/"Page X"/next shape); canonical Pagination/LoadMore added in theme.css.
|
|
26
|
+
* v1.9.0 — 2026-06-02 — Component unification (#16 tags): tokenize .mk-tag and
|
|
27
|
+
* .mk-price-badge (hardcoded rgba(232,86,74,0.06)/0.2 + #E8564A →
|
|
28
|
+
* var(--accent-subtle) / var(--accent-border) / var(--accent)) — dark-mode fix.
|
|
29
|
+
* Markup left as .mk-tag (rounded-20px pill, bespoke vs canonical .tag-pill).
|
|
30
|
+
*/
|
|
31
|
+
|
|
1
32
|
/* marketplace view — scoped under .mk- */
|
|
33
|
+
/* mk-page-title is token-equivalent to the canonical theme.css .page-title
|
|
34
|
+
(candidate for future deletion → use .page-title). */
|
|
2
35
|
.mk-page-title {
|
|
3
36
|
font-size: 1.8rem; font-weight: 700;
|
|
4
|
-
background: linear-gradient(135deg, var(--accent),
|
|
37
|
+
background: linear-gradient(135deg, var(--accent), var(--accent-deep));
|
|
5
38
|
-webkit-background-clip: text; -webkit-text-fill-color: transparent;
|
|
6
39
|
background-clip: text; margin-bottom: 8px;
|
|
7
40
|
}
|
|
@@ -9,11 +42,11 @@
|
|
|
9
42
|
.mk-section-heading { font-size: 1.1rem; color: var(--text); margin-bottom: 16px; }
|
|
10
43
|
|
|
11
44
|
.mk-card {
|
|
12
|
-
background:
|
|
45
|
+
background: var(--bg-card); border: 1px solid var(--border);
|
|
13
46
|
border-radius: 16px; padding: 24px; margin-bottom: 16px;
|
|
14
47
|
transition: background 0.2s, border-color 0.2s, box-shadow 0.2s;
|
|
15
48
|
}
|
|
16
|
-
.mk-card:hover { background:
|
|
49
|
+
.mk-card:hover { background: var(--bg-surface); border-color: #E8564A; box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
|
|
17
50
|
.mk-card-clickable { text-decoration: none; display: block; cursor: pointer; }
|
|
18
51
|
.mk-card-title { font-size: 1.1rem; font-weight: 600; color: var(--text); margin-bottom: 8px; }
|
|
19
52
|
.mk-card-meta { color: var(--text-dim); font-size: 0.85rem; margin-bottom: 8px; }
|
|
@@ -25,89 +58,69 @@
|
|
|
25
58
|
.mk-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
|
|
26
59
|
.mk-tag {
|
|
27
60
|
display: inline-block; padding: 4px 12px;
|
|
28
|
-
background:
|
|
29
|
-
border-radius: 20px; font-size: 0.8rem; color:
|
|
61
|
+
background: var(--accent-subtle); border: 1px solid var(--accent-border);
|
|
62
|
+
border-radius: 20px; font-size: 0.8rem; color: var(--accent); white-space: nowrap;
|
|
30
63
|
}
|
|
31
64
|
|
|
32
65
|
.mk-price-badge {
|
|
33
66
|
display: inline-flex; align-items: center; gap: 4px;
|
|
34
|
-
padding: 6px 14px; background:
|
|
35
|
-
border: 1px solid
|
|
36
|
-
font-size: 0.9rem; font-weight: 600; color:
|
|
67
|
+
padding: 6px 14px; background: var(--accent-subtle);
|
|
68
|
+
border: 1px solid var(--accent-border); border-radius: 20px;
|
|
69
|
+
font-size: 0.9rem; font-weight: 600; color: var(--accent);
|
|
37
70
|
}
|
|
38
71
|
|
|
39
72
|
.mk-status-badge {
|
|
40
73
|
display: inline-block; padding: 3px 10px; border-radius: 12px;
|
|
41
74
|
font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.03em;
|
|
42
75
|
}
|
|
43
|
-
.mk-status-active { background:
|
|
44
|
-
.mk-status-sold { background:
|
|
45
|
-
.mk-status-pending { background:
|
|
46
|
-
.mk-status-delivered { background:
|
|
47
|
-
.mk-status-completed { background:
|
|
48
|
-
.mk-status-delisted { background:
|
|
49
|
-
|
|
50
|
-
.mk-
|
|
51
|
-
.
|
|
52
|
-
.mk-stat-value { font-size: 1.5rem; font-weight: 700; color: var(--accent); }
|
|
53
|
-
.mk-stat-label { font-size: 0.78rem; color: var(--text-muted, #6b6b8a); margin-top: 4px; }
|
|
76
|
+
.mk-status-active { background: var(--success-bg); border: 1px solid var(--success-border); color: var(--success-fg); }
|
|
77
|
+
.mk-status-sold { background: var(--info-bg); border: 1px solid var(--info-border); color: var(--info-fg); }
|
|
78
|
+
.mk-status-pending { background: var(--warn-bg); border: 1px solid var(--warn-border); color: var(--warn-fg); }
|
|
79
|
+
.mk-status-delivered { background: var(--success-bg); border: 1px solid var(--success-border); color: var(--success-fg); }
|
|
80
|
+
.mk-status-completed { background: var(--info-bg); border: 1px solid var(--info-border); color: var(--info-fg); }
|
|
81
|
+
.mk-status-delisted { background: var(--danger-bg); border: 1px solid var(--danger-border); color: var(--danger-fg); }
|
|
82
|
+
|
|
83
|
+
/* .mk-stat* removed — marketplace stats use canonical .stat-grid / .stat-card /
|
|
84
|
+
.stat-card-value.accent / .stat-card-label. Unified 2026-06-02 (#6). */
|
|
54
85
|
|
|
86
|
+
/* Grid wrapper kept per-view: marketplace uses 160px min-width columns (hobbies 200px). */
|
|
55
87
|
.mk-categories-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; margin-bottom: 32px; }
|
|
56
|
-
.mk-category-card
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
.mk-category-card:hover { background: #F3F4F6; border-color: #E8564A; box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
|
|
62
|
-
.mk-category-icon { font-size: 2rem; margin-bottom: 8px; }
|
|
63
|
-
.mk-category-name { font-size: 0.95rem; font-weight: 600; color: var(--text); }
|
|
64
|
-
.mk-category-count { font-size: 0.78rem; color: var(--text-muted, #6b6b8a); margin-top: 4px; }
|
|
88
|
+
/* .mk-category-card/-icon/-name/-count removed — marketplace category tiles use
|
|
89
|
+
canonical theme.css .category-card / -icon / -name / -count. The former rules were
|
|
90
|
+
token-equivalent (border-radius:16px === var(--radius)); the hover #E8564A and
|
|
91
|
+
rgba(0,0,0,0.06) shadow are now tokenized (var(--accent)/var(--shadow-md)).
|
|
92
|
+
Unified 2026-06-02 (#18). */
|
|
65
93
|
|
|
66
94
|
.mk-empty-state { text-align: center; padding: 48px 16px; }
|
|
67
95
|
.mk-empty-icon { font-size: 3rem; margin-bottom: 16px; opacity: 0.4; }
|
|
68
96
|
.mk-empty-text { color: var(--text-dim); font-size: 1rem; }
|
|
69
97
|
|
|
70
98
|
.mk-alert { padding: 12px 16px; border-radius: 10px; margin-bottom: 16px; font-size: 0.9rem; }
|
|
71
|
-
.mk-alert-success { background:
|
|
72
|
-
.mk-alert-error { background:
|
|
73
|
-
.mk-alert-info { background:
|
|
74
|
-
|
|
75
|
-
.mk-btn
|
|
76
|
-
|
|
77
|
-
padding: 10px 24px; border: none; border-radius: 10px;
|
|
78
|
-
font-size: 0.9rem; font-weight: 600; cursor: pointer; transition: all 0.2s; text-decoration: none;
|
|
79
|
-
}
|
|
80
|
-
.mk-btn-primary { background: linear-gradient(135deg, var(--accent), #E8564A); color: #fff; }
|
|
81
|
-
.mk-btn-primary:hover { opacity: 0.9; box-shadow: 0 2px 8px rgba(232,86,74,0.2); }
|
|
82
|
-
.mk-btn-secondary { background: #F3F4F6; border: 1px solid #E5E7EB; color: var(--text); }
|
|
83
|
-
.mk-btn-secondary:hover { background: #E5E7EB; border-color: var(--accent); color: var(--accent); }
|
|
84
|
-
.mk-btn-sm { padding: 6px 14px; font-size: 0.8rem; }
|
|
99
|
+
.mk-alert-success { background: var(--success-bg); border: 1px solid var(--success-border); color: var(--success-fg); }
|
|
100
|
+
.mk-alert-error { background: var(--danger-bg); border: 1px solid var(--danger-border); color: var(--danger-fg); }
|
|
101
|
+
.mk-alert-info { background: var(--bg-surface); border: 1px solid var(--border); color: var(--text-dim); }
|
|
102
|
+
|
|
103
|
+
/* .mk-btn* removed — marketplace uses canonical theme.css .btn-primary / .btn-outline /
|
|
104
|
+
.btn-sm (anchor-safe). Unified 2026-06-02 (#4 buttons). */
|
|
85
105
|
|
|
86
106
|
.mk-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
|
|
87
107
|
.mk-form-group { margin-bottom: 16px; }
|
|
88
108
|
.mk-form-label { display: block; font-size: 0.85rem; color: var(--text-dim); margin-bottom: 6px; font-weight: 500; }
|
|
89
|
-
.mk-form-input
|
|
90
|
-
|
|
91
|
-
background: #FFFFFF; border: 1px solid #E5E7EB;
|
|
92
|
-
border-radius: 10px; color: #1A1A2E; font-size: 0.9rem;
|
|
93
|
-
font-family: system-ui, -apple-system, 'Segoe UI', sans-serif; transition: border-color 0.2s;
|
|
94
|
-
}
|
|
95
|
-
.mk-form-input:focus, .mk-form-textarea:focus, .mk-form-select:focus { outline: none; border-color: var(--accent); }
|
|
96
|
-
.mk-form-textarea { min-height: 80px; resize: vertical; }
|
|
97
|
-
.mk-form-select { appearance: auto; }
|
|
109
|
+
/* .mk-form-input/-textarea/-select removed — marketplace form fields use canonical
|
|
110
|
+
theme.css .input-field (tokenized, focus ring, var(--font)). Unified 2026-06-02 (#5). */
|
|
98
111
|
|
|
99
112
|
.mk-pagination { display: flex; gap: 8px; justify-content: center; margin-top: 24px; }
|
|
100
113
|
.mk-pagination a {
|
|
101
|
-
padding: 8px 16px; background:
|
|
102
|
-
border: 1px solid
|
|
114
|
+
padding: 8px 16px; background: var(--bg-card);
|
|
115
|
+
border: 1px solid var(--border); border-radius: 10px;
|
|
103
116
|
color: var(--text); text-decoration: none; font-size: 0.85rem; cursor: pointer;
|
|
104
117
|
}
|
|
105
118
|
.mk-pagination a:hover { border-color: var(--accent); color: var(--accent); }
|
|
106
|
-
.mk-pagination a.active { border-color: var(--accent); color: var(--accent); background:
|
|
119
|
+
.mk-pagination a.active { border-color: var(--accent); color: var(--accent); background: var(--accent-subtle); }
|
|
107
120
|
|
|
108
121
|
.mk-stars { color: #eab308; font-size: 1.1rem; letter-spacing: 2px; }
|
|
109
122
|
|
|
110
|
-
.mk-nav { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 24px; padding-bottom: 16px; border-bottom: 1px solid
|
|
123
|
+
.mk-nav { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 24px; padding-bottom: 16px; border-bottom: 1px solid var(--border); }
|
|
111
124
|
.mk-nav a {
|
|
112
125
|
color: var(--text-dim); text-decoration: none; font-size: 0.85rem;
|
|
113
126
|
cursor: pointer; transition: color 0.2s; padding: 4px 8px; border-radius: 6px;
|
|
@@ -116,15 +129,15 @@
|
|
|
116
129
|
|
|
117
130
|
/* Instance selector */
|
|
118
131
|
.mk-instance-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; margin: 24px 0; }
|
|
119
|
-
.mk-instance-card { background:
|
|
132
|
+
.mk-instance-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; padding: 20px; cursor: pointer; transition: border-color 0.2s, transform 0.1s; }
|
|
120
133
|
.mk-instance-card:hover { border-color: var(--accent, #06b6d4); transform: translateY(-2px); }
|
|
121
134
|
.mk-instance-name { font-size: 1.2rem; font-weight: 600; color: var(--text); margin-bottom: 4px; }
|
|
122
135
|
.mk-instance-meta { font-size: 0.85rem; color: var(--text-dim, #94a3b8); }
|
|
123
136
|
.mk-visibility-badge { display: inline-block; padding: 2px 8px; border-radius: 4px; font-size: 0.75rem; font-weight: 500; }
|
|
124
|
-
.mk-vis-public { background:
|
|
125
|
-
.mk-vis-password { background:
|
|
126
|
-
.mk-vis-invite { background:
|
|
127
|
-
.mk-vis-group { background:
|
|
137
|
+
.mk-vis-public { background: var(--success-bg); color: var(--success-fg); }
|
|
138
|
+
.mk-vis-password { background: var(--warn-bg); color: var(--warn-fg); }
|
|
139
|
+
.mk-vis-invite { background: var(--info-bg); color: var(--info-fg); }
|
|
140
|
+
.mk-vis-group { background: var(--success-bg); color: var(--success-fg); }
|
|
128
141
|
.mk-back-link { cursor: pointer; color: var(--accent, #06b6d4); margin-bottom: 16px; display: inline-block; }
|
|
129
142
|
|
|
130
143
|
@media (max-width: 600px) {
|
|
@@ -1,28 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @file openclaw.css
|
|
3
|
+
* @description Styles for the OpenClaw view (scoped under .oc-). Hero, info cards, code blocks, tool tables, scenario cards, and CTA section.
|
|
4
|
+
* @version-history
|
|
5
|
+
* v1.1.0 — 2026-06-02 — Phase 5: tokenize for dark mode (replace bare light-only literals with flipping theme tokens)
|
|
6
|
+
*/
|
|
1
7
|
/* openclaw view — scoped under .oc- */
|
|
2
8
|
.oc-container { position: relative; z-index: 1; max-width: 860px; margin: 0 auto; padding: 2rem 1.5rem 4rem; }
|
|
3
9
|
.oc-hero { text-align: center; padding: 3rem 0 2rem; }
|
|
4
10
|
.oc-hero h1 { font-size: 2.2rem; font-weight: 800; background: linear-gradient(135deg, var(--accent), var(--purple)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; margin-bottom: .75rem; }
|
|
5
11
|
.oc-hero p { font-size: 1.1rem; color: var(--text-dim); max-width: 600px; margin: 0 auto; }
|
|
6
12
|
.oc-section { margin: 3rem 0; }
|
|
7
|
-
.oc-section h2 { font-size: 1.5rem; font-weight: 700; color: var(--text); margin-bottom: 1rem; padding-bottom: .5rem; border-bottom: 1px solid
|
|
13
|
+
.oc-section h2 { font-size: 1.5rem; font-weight: 700; color: var(--text); margin-bottom: 1rem; padding-bottom: .5rem; border-bottom: 1px solid var(--border); }
|
|
8
14
|
.oc-section h3 { font-size: 1.15rem; font-weight: 600; color: var(--purple); margin: 1.5rem 0 .5rem; }
|
|
9
15
|
.oc-section p, .oc-section li { color: var(--text); font-size: .95rem; margin-bottom: .5rem; }
|
|
10
16
|
.oc-section ul, .oc-section ol { padding-left: 1.5rem; }
|
|
11
17
|
.oc-card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem; margin: 1.5rem 0; }
|
|
12
|
-
.oc-info-card { background: var(--card-bg); border: 1px solid
|
|
18
|
+
.oc-info-card { background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius); padding: 1.25rem; transition: background .2s; }
|
|
13
19
|
.oc-info-card:hover { background: var(--card-bg-hover); }
|
|
14
20
|
.oc-info-card .icon { font-size: 1.8rem; margin-bottom: .5rem; }
|
|
15
21
|
.oc-info-card h4 { font-size: 1rem; font-weight: 700; color: var(--text); margin-bottom: .25rem; }
|
|
16
22
|
.oc-info-card p { font-size: .85rem; color: var(--text-muted); margin: 0; }
|
|
17
|
-
.oc-code-block { background:
|
|
23
|
+
.oc-code-block { background: var(--code-bg); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 1rem 1.25rem; font-family: var(--font-mono); font-size: .85rem; color: var(--purple); overflow-x: auto; white-space: pre; margin: 1rem 0; position: relative; }
|
|
18
24
|
.oc-code-block .label { position: absolute; top: .5rem; right: .75rem; font-size: .7rem; color: var(--text-muted); font-family: var(--font); text-transform: uppercase; letter-spacing: .05em; }
|
|
19
25
|
.oc-tool-table { width: 100%; border-collapse: collapse; margin: 1rem 0; font-size: .85rem; }
|
|
20
|
-
.oc-tool-table th { text-align: left; padding: .6rem .75rem; font-weight: 700; color: var(--text); border-bottom: 2px solid
|
|
21
|
-
.oc-tool-table td { padding: .5rem .75rem; border-bottom: 1px solid
|
|
26
|
+
.oc-tool-table th { text-align: left; padding: .6rem .75rem; font-weight: 700; color: var(--text); border-bottom: 2px solid var(--border); font-size: .8rem; text-transform: uppercase; letter-spacing: .03em; }
|
|
27
|
+
.oc-tool-table td { padding: .5rem .75rem; border-bottom: 1px solid var(--bg-surface); vertical-align: top; }
|
|
22
28
|
.oc-tool-table tr:hover td { background: rgba(232,86,74,0.04); }
|
|
23
29
|
.oc-tool-name { color: var(--purple); font-family: monospace; font-weight: 600; white-space: nowrap; }
|
|
24
30
|
.oc-tool-params { color: var(--text-muted); font-family: monospace; font-size: .8rem; }
|
|
25
|
-
.oc-scenario { background: var(--card-bg); border: 1px solid
|
|
31
|
+
.oc-scenario { background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius); padding: 1.5rem; margin: 1rem 0; }
|
|
26
32
|
.oc-scenario h4 { color: var(--accent); font-size: 1rem; margin-bottom: .5rem; }
|
|
27
33
|
.oc-scenario .flow { color: var(--text-dim); font-size: .9rem; }
|
|
28
34
|
.oc-scenario .flow code { color: var(--purple); background: rgba(109,40,217,.08); padding: .1rem .4rem; border-radius: 4px; }
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @file portal-classic.css
|
|
3
|
+
* @description Styles for the classic portal landing view (scoped under .cl) — hero,
|
|
4
|
+
* welcome board, cards grid, mega-prompt, and economy footer.
|
|
5
|
+
* @version-history
|
|
6
|
+
* v1.1.0 — 2026-06-02 — Phase 5: tokenize for dark mode (replace bare light-only
|
|
7
|
+
* surface/border/text literals with theme tokens that flip between light/dark)
|
|
8
|
+
*/
|
|
1
9
|
/* portal-classic view — scoped under .cl */
|
|
2
10
|
/* ── Hero Section ── */
|
|
3
11
|
.cl-hero {
|
|
@@ -29,7 +37,7 @@
|
|
|
29
37
|
border: 1px solid rgba(124, 58, 237, 0.15);
|
|
30
38
|
border-radius: 10px;
|
|
31
39
|
font-size: 0.82rem;
|
|
32
|
-
color:
|
|
40
|
+
color: var(--purple);
|
|
33
41
|
margin-bottom: 1.5rem;
|
|
34
42
|
max-width: 720px;
|
|
35
43
|
margin-left: auto;
|
|
@@ -39,7 +47,7 @@
|
|
|
39
47
|
/* ── Welcome Board ── */
|
|
40
48
|
.cl-welcome-section {
|
|
41
49
|
background: rgba(232, 86, 74, 0.06);
|
|
42
|
-
border: 1px solid
|
|
50
|
+
border: 1px solid var(--border);
|
|
43
51
|
border-radius: 16px;
|
|
44
52
|
padding: 1.5rem;
|
|
45
53
|
margin-bottom: 2rem;
|
|
@@ -62,9 +70,9 @@
|
|
|
62
70
|
.cl-board-list {
|
|
63
71
|
max-height: 200px;
|
|
64
72
|
overflow-y: auto;
|
|
65
|
-
border: 1px solid
|
|
73
|
+
border: 1px solid var(--border);
|
|
66
74
|
border-radius: 10px;
|
|
67
|
-
background:
|
|
75
|
+
background: var(--bg-card);
|
|
68
76
|
}
|
|
69
77
|
.cl-board-empty {
|
|
70
78
|
padding: 1rem;
|
|
@@ -75,7 +83,7 @@
|
|
|
75
83
|
}
|
|
76
84
|
.cl-board-msg {
|
|
77
85
|
padding: 0.6rem 0.85rem;
|
|
78
|
-
border-bottom: 1px solid
|
|
86
|
+
border-bottom: 1px solid var(--border);
|
|
79
87
|
font-size: 0.88rem;
|
|
80
88
|
color: var(--text, #374151);
|
|
81
89
|
line-height: 1.5;
|
|
@@ -101,8 +109,8 @@
|
|
|
101
109
|
.cl-memory-input {
|
|
102
110
|
flex: 1;
|
|
103
111
|
padding: 0.85rem 1rem;
|
|
104
|
-
background:
|
|
105
|
-
border: 1px solid
|
|
112
|
+
background: var(--bg-card);
|
|
113
|
+
border: 1px solid var(--border);
|
|
106
114
|
border-radius: 10px;
|
|
107
115
|
color: var(--text, #1A1A2E);
|
|
108
116
|
font-size: 0.95rem;
|
|
@@ -114,7 +122,7 @@
|
|
|
114
122
|
.cl-memory-input:focus {
|
|
115
123
|
border-color: var(--accent, #E8564A);
|
|
116
124
|
box-shadow: 0 0 0 3px rgba(232, 86, 74, 0.15);
|
|
117
|
-
background:
|
|
125
|
+
background: var(--bg-card);
|
|
118
126
|
}
|
|
119
127
|
.cl-memory-input::placeholder { color: var(--text-muted, #9CA3AF); }
|
|
120
128
|
.cl-welcome-result {
|
|
@@ -194,15 +202,15 @@
|
|
|
194
202
|
|
|
195
203
|
/* ── Card ── */
|
|
196
204
|
.cl-card {
|
|
197
|
-
background:
|
|
198
|
-
border: 1px solid
|
|
205
|
+
background: var(--bg-card);
|
|
206
|
+
border: 1px solid var(--border);
|
|
199
207
|
border-radius: 16px;
|
|
200
208
|
overflow: hidden;
|
|
201
209
|
transition: background 0.35s ease, border-color 0.35s ease, box-shadow 0.35s ease, transform 0.35s ease;
|
|
202
210
|
cursor: pointer;
|
|
203
211
|
}
|
|
204
212
|
.cl-card:hover {
|
|
205
|
-
background:
|
|
213
|
+
background: var(--bg-card);
|
|
206
214
|
border-color: rgba(232, 86, 74, 0.4);
|
|
207
215
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06), 0 8px 32px rgba(0, 0, 0, 0.04);
|
|
208
216
|
transform: translateY(-2px);
|
|
@@ -248,7 +256,7 @@
|
|
|
248
256
|
align-items: center;
|
|
249
257
|
justify-content: center;
|
|
250
258
|
flex-shrink: 0;
|
|
251
|
-
background:
|
|
259
|
+
background: var(--bg-surface);
|
|
252
260
|
color: var(--text-dim, #6B7280);
|
|
253
261
|
font-size: 0.75rem;
|
|
254
262
|
transition: transform 0.3s ease, background 0.3s ease, color 0.3s ease;
|
|
@@ -272,7 +280,7 @@
|
|
|
272
280
|
|
|
273
281
|
.cl-card-desc {
|
|
274
282
|
font-size: 0.92rem;
|
|
275
|
-
color:
|
|
283
|
+
color: var(--text-dim);
|
|
276
284
|
line-height: 1.7;
|
|
277
285
|
margin-bottom: 1.25rem;
|
|
278
286
|
}
|
|
@@ -287,7 +295,7 @@
|
|
|
287
295
|
border-color: rgba(99, 102, 241, 0.15);
|
|
288
296
|
}
|
|
289
297
|
.cl-group-agents.expanded {
|
|
290
|
-
border-color:
|
|
298
|
+
border-color: var(--purple);
|
|
291
299
|
box-shadow: 0 4px 24px rgba(99, 102, 241, 0.1), 0 8px 32px rgba(0, 0, 0, 0.06);
|
|
292
300
|
}
|
|
293
301
|
.cl-group-builders .cl-card-icon {
|
|
@@ -314,8 +322,8 @@
|
|
|
314
322
|
min-height: 200px;
|
|
315
323
|
max-height: 400px;
|
|
316
324
|
padding: 1rem;
|
|
317
|
-
background:
|
|
318
|
-
border: 1px solid
|
|
325
|
+
background: var(--code-bg);
|
|
326
|
+
border: 1px solid var(--border);
|
|
319
327
|
border-radius: 10px;
|
|
320
328
|
color: var(--text, #374151);
|
|
321
329
|
font-family: 'Courier New', monospace;
|
|
@@ -363,7 +371,7 @@
|
|
|
363
371
|
.cl-prompt-steps {
|
|
364
372
|
margin-top: 0.75rem;
|
|
365
373
|
font-size: 0.82rem;
|
|
366
|
-
color:
|
|
374
|
+
color: var(--text-dim);
|
|
367
375
|
line-height: 1.7;
|
|
368
376
|
}
|
|
369
377
|
.cl-prompt-steps ol { padding-left: 1.2rem; }
|
|
@@ -396,14 +404,14 @@
|
|
|
396
404
|
transform: translateY(-1px);
|
|
397
405
|
}
|
|
398
406
|
.cl-launcher-cta.secondary {
|
|
399
|
-
background:
|
|
400
|
-
border-color:
|
|
407
|
+
background: var(--bg-surface);
|
|
408
|
+
border-color: var(--border);
|
|
401
409
|
font-weight: 600;
|
|
402
410
|
font-size: 0.85rem;
|
|
403
411
|
padding: 0.45rem 1rem;
|
|
404
412
|
}
|
|
405
413
|
.cl-launcher-cta.secondary:hover {
|
|
406
|
-
background:
|
|
414
|
+
background: var(--border);
|
|
407
415
|
border-color: rgba(251, 191, 36, 0.3);
|
|
408
416
|
}
|
|
409
417
|
|
|
@@ -419,11 +427,11 @@
|
|
|
419
427
|
font-weight: 700;
|
|
420
428
|
font-size: 0.95rem;
|
|
421
429
|
margin-bottom: 0.5rem;
|
|
422
|
-
color:
|
|
430
|
+
color: var(--text-dim);
|
|
423
431
|
}
|
|
424
432
|
.cl-return-motivation {
|
|
425
433
|
font-size: 0.85rem;
|
|
426
|
-
color:
|
|
434
|
+
color: var(--text-dim);
|
|
427
435
|
margin-bottom: 0.5rem;
|
|
428
436
|
}
|
|
429
437
|
|
|
@@ -439,20 +447,20 @@
|
|
|
439
447
|
font-weight: 700;
|
|
440
448
|
font-size: 0.95rem;
|
|
441
449
|
margin-bottom: 0.5rem;
|
|
442
|
-
color:
|
|
450
|
+
color: var(--text-dim);
|
|
443
451
|
}
|
|
444
452
|
.cl-connect-desc {
|
|
445
453
|
font-size: 0.88rem;
|
|
446
|
-
color:
|
|
454
|
+
color: var(--text-dim);
|
|
447
455
|
margin-bottom: 0.75rem;
|
|
448
456
|
}
|
|
449
457
|
.cl-connect-link {
|
|
450
|
-
color:
|
|
458
|
+
color: var(--purple);
|
|
451
459
|
text-decoration: underline;
|
|
452
460
|
text-underline-offset: 2px;
|
|
453
461
|
font-size: 0.9rem;
|
|
454
462
|
}
|
|
455
|
-
.cl-connect-link:hover { color:
|
|
463
|
+
.cl-connect-link:hover { color: var(--purple); }
|
|
456
464
|
|
|
457
465
|
/* ── Morsels economy footer ── */
|
|
458
466
|
.cl-morsels-economy {
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/*
|
|
2
|
+
* @file portal-dev.css
|
|
3
|
+
* @description "For Developers" portal view styles (.dv-* prefix) — animated
|
|
4
|
+
* background layers, onboarding steps, platform/goal cards, prompt output,
|
|
5
|
+
* capability tabs. Consumes theme.css tokens so it flips with dark/light.
|
|
6
|
+
* @version-history
|
|
7
|
+
* v1.1.0 — 2026-06-02 — Phase 4: tokenize card/panel/border/text/bg-layer/code
|
|
8
|
+
* surfaces (#FFFFFF/#E5E7EB/#F3F4F6/#6B7280) for dark mode.
|
|
9
|
+
* v1.2.0 — 2026-06-02 — Component unification (#6 stat cards): remove .dv-stat*/
|
|
10
|
+
* .dv-num/.dv-label; dev-portal stats use canonical .stat-card family.
|
|
11
|
+
* v1.3.0 — 2026-06-02 — Component unification (#11): remove .dv-dot (had a
|
|
12
|
+
* hardcoded #22c55e); node-badge dot uses canonical <StatusDot>.
|
|
13
|
+
*/
|
|
2
14
|
/* ── Dev Portal root vars ── */
|
|
3
15
|
:root {
|
|
4
16
|
--love1: #E8564A;
|
|
@@ -11,24 +23,24 @@
|
|
|
11
23
|
/* ── Background system ── */
|
|
12
24
|
.dv-bg-layer { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; transition: opacity .8s ease; }
|
|
13
25
|
.dv-bg-hidden { opacity: 0; }
|
|
14
|
-
.dv-bg-hearts { background:
|
|
26
|
+
.dv-bg-hearts { background: var(--bg); }
|
|
15
27
|
.dv-heart-particle { position: absolute; bottom: -60px; opacity: 0; font-size: 1.2rem; animation: dv-floatUp linear infinite; filter: drop-shadow(0 0 6px rgba(232,86,74,.2)); }
|
|
16
28
|
@keyframes dv-floatUp { 0% { transform: translateY(0) rotate(0deg) scale(1); opacity: 0; } 10% { opacity: .7; } 90% { opacity: .7; } 100% { transform: translateY(-110vh) rotate(720deg) scale(.3); opacity: 0; } }
|
|
17
|
-
.dv-bg-aurora { background:
|
|
29
|
+
.dv-bg-aurora { background: var(--bg); }
|
|
18
30
|
.dv-aurora-wave { position: absolute; width: 200%; height: 60%; left: -50%; border-radius: 50%; filter: blur(80px); opacity: .12; animation: dv-auroraShift 8s ease-in-out infinite alternate; }
|
|
19
31
|
.dv-aurora-wave:nth-child(1) { top: 10%; background: linear-gradient(90deg, #E8564A, #D44A3F, #F06B5E, #E8564A); animation-duration: 8s; }
|
|
20
32
|
.dv-aurora-wave:nth-child(2) { top: 30%; background: linear-gradient(90deg, #E8564A, #B8403A, #E8564A, #D44A3F); animation-duration: 12s; animation-delay: -4s; }
|
|
21
33
|
.dv-aurora-wave:nth-child(3) { top: 55%; background: linear-gradient(90deg, #D44A3F, #E8564A, #F06B5E, #B8403A); animation-duration: 10s; animation-delay: -2s; }
|
|
22
34
|
@keyframes dv-auroraShift { 0% { transform: translateX(-20%) scaleY(1); } 50% { transform: translateX(10%) scaleY(1.3); } 100% { transform: translateX(-10%) scaleY(.8); } }
|
|
23
|
-
.dv-bg-sparkle { background:
|
|
35
|
+
.dv-bg-sparkle { background: var(--bg); }
|
|
24
36
|
.dv-sparkle { position: absolute; width: 3px; height: 3px; border-radius: 50%; background: #E8564A; animation: dv-sparkleAnim ease-in-out infinite; }
|
|
25
37
|
@keyframes dv-sparkleAnim { 0%, 100% { opacity: 0; transform: scale(0); } 50% { opacity: 1; transform: scale(1); box-shadow: 0 0 8px 2px var(--love1), 0 0 20px 4px var(--love4); } }
|
|
26
38
|
.dv-nebula-blob { position: absolute; border-radius: 50%; filter: blur(100px); opacity: .08; animation: dv-nebulaFloat 15s ease-in-out infinite alternate; }
|
|
27
39
|
@keyframes dv-nebulaFloat { 0% { transform: translate(0,0) scale(1); } 100% { transform: translate(40px,-30px) scale(1.2); } }
|
|
28
40
|
|
|
29
41
|
/* BG selector */
|
|
30
|
-
.dv-bg-selector { position: fixed; bottom: 1.5rem; right: 1.5rem; z-index: 200; display: flex; gap: .5rem; background:
|
|
31
|
-
.dv-bg-btn { width: 36px; height: 36px; border-radius: 50%; border: 2px solid transparent; cursor: pointer; transition: all .25s; display: flex; align-items: center; justify-content: center; font-size: .9rem; background:
|
|
42
|
+
.dv-bg-selector { position: fixed; bottom: 1.5rem; right: 1.5rem; z-index: 200; display: flex; gap: .5rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 30px; padding: .4rem .6rem; box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
|
|
43
|
+
.dv-bg-btn { width: 36px; height: 36px; border-radius: 50%; border: 2px solid transparent; cursor: pointer; transition: all .25s; display: flex; align-items: center; justify-content: center; font-size: .9rem; background: var(--bg-surface); }
|
|
32
44
|
.dv-bg-btn:hover { border-color: var(--love1); transform: scale(1.15); }
|
|
33
45
|
.dv-bg-btn.active { border-color: var(--love1); box-shadow: 0 0 12px rgba(232,86,74,.2); }
|
|
34
46
|
|
|
@@ -38,19 +50,16 @@
|
|
|
38
50
|
.dv-container h2 { font-size: 1.3rem; font-weight: 600; margin-bottom: .75rem; color: var(--love1); }
|
|
39
51
|
.dv-container h3 { font-size: 1.1rem; font-weight: 600; margin-bottom: .5rem; }
|
|
40
52
|
.dv-subtitle { color: var(--love4, #E8564A); font-size: .95rem; margin-bottom: 2rem; }
|
|
41
|
-
.dv-node-badge { display: inline-flex; align-items: center; gap: .5rem; background:
|
|
42
|
-
.dv-dot
|
|
53
|
+
.dv-node-badge { display: inline-flex; align-items: center; gap: .5rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 8px; padding: .4rem .8rem; font-size: .85rem; font-family: monospace; margin-bottom: 1.5rem; }
|
|
54
|
+
/* .dv-dot removed — node-badge dot uses canonical <StatusDot>. Unified 2026-06-02 (#11). */
|
|
43
55
|
|
|
44
|
-
/* Stats
|
|
45
|
-
.
|
|
46
|
-
.dv-stat { background: #FFFFFF; border: 1px solid #E5E7EB; border-radius: 12px; padding: .75rem 1rem; flex: 1; min-width: 120px; text-align: center; }
|
|
47
|
-
.dv-num { font-size: 1.5rem; font-weight: 700; color: var(--love1); }
|
|
48
|
-
.dv-label { font-size: .75rem; color: #6B7280; text-transform: uppercase; letter-spacing: .05em; }
|
|
56
|
+
/* Stats — .dv-stat*/.dv-num/.dv-label removed; dev-portal stats use canonical
|
|
57
|
+
.stat-grid / .stat-card / .stat-card-value.accent / .stat-card-label. Unified 2026-06-02 (#6). */
|
|
49
58
|
|
|
50
59
|
/* Mode notice */
|
|
51
60
|
.dv-mode-notice { border-radius: 12px; padding: 1rem 1.5rem; margin-bottom: 1.5rem; font-size: .9rem; display: flex; align-items: flex-start; gap: .75rem; }
|
|
52
|
-
.dv-mode-notice-anon { background:
|
|
53
|
-
.dv-mode-notice-user { background:
|
|
61
|
+
.dv-mode-notice-anon { background: var(--purple-bg); border: 1px solid var(--purple-border); }
|
|
62
|
+
.dv-mode-notice-user { background: var(--success-bg); border: 1px solid var(--success-border); }
|
|
54
63
|
.dv-notice-icon { font-size: 1.3rem; flex-shrink: 0; }
|
|
55
64
|
|
|
56
65
|
/* Steps */
|
|
@@ -62,57 +71,57 @@
|
|
|
62
71
|
|
|
63
72
|
/* Platform grid */
|
|
64
73
|
.dv-platforms { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .75rem; margin-bottom: 1rem; }
|
|
65
|
-
.dv-platform-card { background:
|
|
74
|
+
.dv-platform-card { background: var(--bg-card); border: 2px solid var(--border); border-radius: 12px; padding: 1rem; text-align: center; cursor: pointer; transition: all .15s; }
|
|
66
75
|
.dv-platform-card:hover { border-color: var(--love1); transform: translateY(-2px); box-shadow: 0 4px 20px rgba(232,86,74,.08); }
|
|
67
76
|
.dv-platform-card.selected { border-color: var(--love1); background: rgba(232,86,74,.06); box-shadow: 0 0 20px rgba(232,86,74,.1); }
|
|
68
77
|
.dv-platform-name { font-weight: 600; font-size: .9rem; }
|
|
69
|
-
.dv-platform-vendor { color:
|
|
78
|
+
.dv-platform-vendor { color: var(--text-dim); font-size: .75rem; }
|
|
70
79
|
|
|
71
80
|
/* Variants */
|
|
72
81
|
.dv-variants { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
|
|
73
|
-
.dv-variant-btn { background:
|
|
82
|
+
.dv-variant-btn { background: var(--bg-card); border: 2px solid var(--border); border-radius: 8px; padding: .4rem .8rem; cursor: pointer; color: var(--text, #1A1A2E); font-size: .85rem; transition: all .15s; font-family: inherit; }
|
|
74
83
|
.dv-variant-btn:hover { border-color: var(--love1); }
|
|
75
84
|
.dv-variant-btn.selected { border-color: var(--love1); background: rgba(232,86,74,.06); }
|
|
76
|
-
.dv-variant-note { font-size: .8rem; color:
|
|
85
|
+
.dv-variant-note { font-size: .8rem; color: var(--text-dim); margin-top: .25rem; }
|
|
77
86
|
|
|
78
87
|
/* Panel */
|
|
79
|
-
.dv-panel { background:
|
|
88
|
+
.dv-panel { background: var(--bg-card); border-radius: 12px; padding: 1.5rem; margin-bottom: 1.5rem; border: 1px solid var(--border); }
|
|
80
89
|
|
|
81
90
|
/* Prompt output */
|
|
82
91
|
.dv-prompt-output { position: relative; }
|
|
83
|
-
.dv-prompt-text { background:
|
|
92
|
+
.dv-prompt-text { background: var(--code-bg); border: 1px solid var(--border); border-radius: 8px; padding: 1rem; font-family: monospace; font-size: .8rem; white-space: pre-wrap; word-break: break-word; max-height: 500px; overflow-y: auto; line-height: 1.5; color: var(--text, #1A1A2E); }
|
|
84
93
|
.dv-copy-btn { position: absolute; top: .5rem; right: .5rem; background: linear-gradient(135deg, var(--love1), var(--love2)); color: #fff; border: none; border-radius: 6px; padding: .4rem .8rem; cursor: pointer; font-weight: 600; font-size: .8rem; z-index: 1; transition: all .2s; font-family: inherit; }
|
|
85
94
|
.dv-copy-btn:hover { background: linear-gradient(135deg, var(--love3), var(--love1)); box-shadow: 0 2px 12px rgba(232,86,74,.2); }
|
|
86
95
|
.dv-copy-btn.copied { background: #22c55e; }
|
|
87
96
|
|
|
88
97
|
/* Goals */
|
|
89
98
|
.dv-goals { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: .5rem; margin-bottom: 1rem; }
|
|
90
|
-
.dv-goal-card { background:
|
|
99
|
+
.dv-goal-card { background: var(--bg-card); border: 2px solid var(--border); border-radius: 8px; padding: .75rem; cursor: pointer; transition: all .15s; font-size: .85rem; }
|
|
91
100
|
.dv-goal-card:hover { border-color: var(--love1); }
|
|
92
101
|
.dv-goal-card.selected { border-color: var(--love1); background: rgba(232,86,74,.06); }
|
|
93
102
|
.dv-goal-icon { font-size: 1.3rem; margin-bottom: .25rem; }
|
|
94
103
|
|
|
95
104
|
/* Cap tabs */
|
|
96
|
-
.dv-cap-tabs { display: flex; gap: 0; margin-bottom: 0; border-bottom: 2px solid
|
|
97
|
-
.dv-cap-tab { flex: 1; padding: .75rem 1rem; text-align: center; cursor: pointer; background: transparent; border: none; color:
|
|
105
|
+
.dv-cap-tabs { display: flex; gap: 0; margin-bottom: 0; border-bottom: 2px solid var(--border); }
|
|
106
|
+
.dv-cap-tab { flex: 1; padding: .75rem 1rem; text-align: center; cursor: pointer; background: transparent; border: none; color: var(--text-dim); font-size: .9rem; font-weight: 600; transition: all .2s; border-bottom: 3px solid transparent; margin-bottom: -2px; position: relative; font-family: inherit; }
|
|
98
107
|
.dv-cap-tab:hover { color: var(--text, #1A1A2E); background: rgba(232,86,74,.04); }
|
|
99
108
|
.dv-cap-tab.active { color: var(--love1); border-bottom-color: var(--love1); background: rgba(232,86,74,.06); }
|
|
100
109
|
.dv-cap-tab.unavail { opacity: .45; cursor: default; }
|
|
101
|
-
.dv-cap-tab.unavail:hover { background: transparent; color:
|
|
110
|
+
.dv-cap-tab.unavail:hover { background: transparent; color: var(--text-dim); }
|
|
102
111
|
.dv-tab-icon { font-size: 1.2rem; display: block; margin-bottom: .15rem; }
|
|
103
112
|
.dv-tab-label { font-size: .8rem; display: block; }
|
|
104
113
|
.dv-tab-rec { position: absolute; top: 2px; right: 6px; font-size: .55rem; background: #22c55e; color: #fff; padding: 1px 5px; border-radius: 8px; text-transform: uppercase; letter-spacing: .05em; }
|
|
105
|
-
.dv-unavail-notice { text-align: center; padding: 2rem 1rem; color:
|
|
114
|
+
.dv-unavail-notice { text-align: center; padding: 2rem 1rem; color: var(--text-dim); font-size: .9rem; }
|
|
106
115
|
.dv-unavail-icon { font-size: 2rem; margin-bottom: .5rem; }
|
|
107
116
|
|
|
108
117
|
/* Instructions */
|
|
109
|
-
.dv-instructions { background:
|
|
118
|
+
.dv-instructions { background: var(--bg-card); border-radius: 12px; padding: 1.5rem; border: 1px solid var(--border); }
|
|
110
119
|
.dv-instructions ol { margin-left: 1.5rem; margin-bottom: .75rem; }
|
|
111
120
|
.dv-instructions li { margin-bottom: .5rem; }
|
|
112
|
-
.dv-instructions code { background:
|
|
121
|
+
.dv-instructions code { background: var(--code-bg); padding: .15rem .4rem; border-radius: 4px; font-size: .85rem; font-family: monospace; }
|
|
113
122
|
|
|
114
123
|
/* Upload */
|
|
115
|
-
.dv-upload-area { border: 2px dashed
|
|
124
|
+
.dv-upload-area { border: 2px dashed var(--border); border-radius: 12px; padding: 1.5rem; text-align: center; margin-top: 1rem; transition: all .2s; }
|
|
116
125
|
.dv-upload-area:hover { border-color: var(--love1); }
|
|
117
126
|
.dv-upload-area.dragover { border-color: var(--love1); background: rgba(232,86,74,.04); }
|
|
118
127
|
.dv-upload-btn { background: linear-gradient(135deg, var(--love1), var(--love2)); color: #fff; border: none; border-radius: 8px; padding: .5rem 1.2rem; cursor: pointer; font-weight: 600; font-size: .9rem; transition: all .2s; font-family: inherit; }
|
|
@@ -120,15 +129,15 @@
|
|
|
120
129
|
.dv-upload-btn:disabled { opacity: .5; cursor: not-allowed; }
|
|
121
130
|
|
|
122
131
|
/* Share URL */
|
|
123
|
-
.dv-share-url { display: flex; align-items: center; gap: .5rem; background:
|
|
132
|
+
.dv-share-url { display: flex; align-items: center; gap: .5rem; background: var(--bg-surface); border: 1px solid var(--success); border-radius: 8px; padding: .6rem 1rem; margin-top: .75rem; font-family: monospace; font-size: .85rem; }
|
|
124
133
|
.dv-share-url input { flex: 1; background: none; border: none; color: var(--text, #1A1A2E); font-family: monospace; font-size: .85rem; outline: none; }
|
|
125
134
|
.dv-share-url .dv-copy-btn { position: static; background: #22c55e; color: #fff; padding: .3rem .6rem; font-size: .8rem; }
|
|
126
135
|
|
|
127
136
|
/* App list */
|
|
128
137
|
.dv-app-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: .75rem; margin-top: 1rem; }
|
|
129
|
-
.dv-app-item { background:
|
|
138
|
+
.dv-app-item { background: var(--bg-card); border-radius: 8px; padding: 1rem; border: 1px solid var(--border); }
|
|
130
139
|
.dv-app-name { font-weight: 600; margin-bottom: .25rem; }
|
|
131
|
-
.dv-app-meta { font-size: .75rem; color:
|
|
140
|
+
.dv-app-meta { font-size: .75rem; color: var(--text-dim); }
|
|
132
141
|
.dv-app-item a { color: var(--love1, #E8564A); }
|
|
133
142
|
|
|
134
143
|
@media (max-width: 600px) {
|