diff --git a/lib/folk-social-post.ts b/lib/folk-social-post.ts index d380b97..bfbdcbb 100644 --- a/lib/folk-social-post.ts +++ b/lib/folk-social-post.ts @@ -6,7 +6,7 @@ const styles = css` background: var(--rs-bg-surface, #fff); color: var(--rs-text-primary, #1e293b); border-radius: 12px; - box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08); + box-shadow: var(--rs-shadow-sm); min-width: 280px; min-height: 140px; overflow: hidden; @@ -14,19 +14,19 @@ const styles = css` } :host(:hover) { - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12); + box-shadow: var(--rs-shadow-md); } :host([data-status="posted"]) { - box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.4), 0 2px 12px rgba(0, 0, 0, 0.08); + box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.4), var(--rs-shadow-sm); } :host([data-status="scheduled"]) { - box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.4), 0 2px 12px rgba(0, 0, 0, 0.08); + box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.4), var(--rs-shadow-sm); } :host([data-status="failed"]) { - box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.4), 0 2px 12px rgba(0, 0, 0, 0.08); + box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.4), var(--rs-shadow-sm); } .header { @@ -97,15 +97,15 @@ const styles = css` letter-spacing: 0.5px; padding: 2px 8px; border-radius: 10px; - background: #f1f5f9; - color: #64748b; + background: var(--rs-bg-surface-raised); + color: var(--rs-text-muted); margin-bottom: 8px; } .content-preview { font-size: 13px; line-height: 1.5; - color: #1e293b; + color: var(--rs-text-primary); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; @@ -117,13 +117,13 @@ const styles = css` width: 100%; height: 100px; border-radius: 8px; - background: #f1f5f9; + background: var(--rs-bg-surface-raised); display: flex; align-items: center; justify-content: center; margin-bottom: 8px; overflow: hidden; - border: 1px solid #e2e8f0; + border: 1px solid var(--rs-border); } .media-preview img { @@ -133,7 +133,7 @@ const styles = css` } .media-placeholder { - color: #94a3b8; + color: var(--rs-text-secondary); font-size: 12px; display: flex; flex-direction: column; @@ -154,8 +154,8 @@ const styles = css` .hashtag { font-size: 11px; - color: #3b82f6; - background: #eff6ff; + color: var(--rs-primary); + background: rgba(99, 102, 241, 0.1); padding: 2px 6px; border-radius: 4px; } @@ -165,8 +165,8 @@ const styles = css` align-items: center; justify-content: space-between; padding: 8px 14px; - background: #f8fafc; - border-top: 1px solid #e2e8f0; + background: var(--rs-bg-surface-raised); + border-top: 1px solid var(--rs-border); border-radius: 0 0 12px 12px; } @@ -175,7 +175,7 @@ const styles = css` align-items: center; gap: 6px; font-size: 11px; - color: #64748b; + color: var(--rs-text-muted); } .schedule-icon { @@ -184,7 +184,7 @@ const styles = css` .schedule-time { font-weight: 500; - color: #475569; + color: var(--rs-text-secondary); } .status-badge { @@ -197,23 +197,23 @@ const styles = css` } .status-badge.draft { - background: #f1f5f9; - color: #64748b; + background: var(--rs-bg-surface-raised); + color: var(--rs-text-muted); } .status-badge.scheduled { - background: #dbeafe; + background: rgba(59, 130, 246, 0.15); color: #2563eb; } .status-badge.posted { - background: #dcfce7; - color: #16a34a; + background: rgba(34, 197, 94, 0.15); + color: var(--rs-success); } .status-badge.failed { - background: #fee2e2; - color: #dc2626; + background: rgba(239, 68, 68, 0.15); + color: var(--rs-error); } .step-number { @@ -223,23 +223,23 @@ const styles = css` width: 24px; height: 24px; border-radius: 50%; - background: #1e293b; - color: white; + background: var(--rs-bg-surface-raised); + color: var(--rs-text-primary); font-size: 11px; font-weight: 700; display: flex; align-items: center; justify-content: center; z-index: 1; - border: 2px solid white; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); + border: 2px solid var(--rs-bg-surface); + box-shadow: var(--rs-shadow-sm); } .edit-overlay { display: none; position: absolute; inset: 0; - background: white; + background: var(--rs-bg-surface); z-index: 10; border-radius: 12px; flex-direction: column; @@ -254,13 +254,13 @@ const styles = css` align-items: center; justify-content: space-between; padding: 10px 14px; - border-bottom: 1px solid #e2e8f0; + border-bottom: 1px solid var(--rs-border); } .edit-header span { font-size: 13px; font-weight: 600; - color: #1e293b; + color: var(--rs-text-primary); } .edit-body { @@ -279,7 +279,7 @@ const styles = css` .edit-field label { font-size: 11px; font-weight: 500; - color: #64748b; + color: var(--rs-text-muted); text-transform: uppercase; letter-spacing: 0.5px; } @@ -288,18 +288,20 @@ const styles = css` .edit-field textarea, .edit-field select { padding: 8px 10px; - border: 1px solid #e2e8f0; + border: 1px solid var(--rs-input-border); border-radius: 6px; font-size: 13px; outline: none; font-family: inherit; + background: var(--rs-input-bg); + color: var(--rs-input-text); } .edit-field input:focus, .edit-field textarea:focus, .edit-field select:focus { - border-color: #3b82f6; - box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); + border-color: var(--rs-primary); + box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); } .edit-field textarea { @@ -311,7 +313,7 @@ const styles = css` display: flex; gap: 8px; padding: 10px 14px; - border-top: 1px solid #e2e8f0; + border-top: 1px solid var(--rs-border); } .edit-actions button { @@ -321,26 +323,26 @@ const styles = css` font-size: 12px; font-weight: 500; cursor: pointer; - border: 1px solid #e2e8f0; + border: 1px solid var(--rs-border); } .edit-actions .save-btn { - background: #3b82f6; + background: var(--rs-primary); color: white; - border-color: #3b82f6; + border-color: var(--rs-primary); } .edit-actions .save-btn:hover { - background: #2563eb; + background: var(--rs-primary-hover); } .edit-actions .cancel-btn { - background: white; - color: #64748b; + background: var(--rs-bg-surface); + color: var(--rs-text-muted); } .edit-actions .cancel-btn:hover { - background: #f1f5f9; + background: var(--rs-bg-surface-raised); } `; diff --git a/lib/folk-video-chat.ts b/lib/folk-video-chat.ts index 9f9322c..539ed1b 100644 --- a/lib/folk-video-chat.ts +++ b/lib/folk-video-chat.ts @@ -3,9 +3,9 @@ import { css, html } from "./tags"; const styles = css` :host { - background: #1e1e1e; + background: var(--rs-bg-surface); border-radius: 8px; - box-shadow: 0 2px 12px rgba(0, 0, 0, 0.3); + box-shadow: var(--rs-shadow-sm); min-width: 400px; min-height: 350px; } @@ -52,7 +52,7 @@ const styles = css` display: flex; flex-direction: column; height: calc(100% - 36px); - background: #1e1e1e; + background: var(--rs-bg-surface); border-radius: 0 0 8px 8px; } @@ -62,11 +62,11 @@ const styles = css` grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 8px; padding: 12px; - background: #0a0a0a; + background: var(--rs-bg-page); } .video-slot { - background: #2d2d2d; + background: var(--rs-bg-surface-raised); border-radius: 8px; aspect-ratio: 16/9; display: flex; @@ -88,7 +88,7 @@ const styles = css` flex-direction: column; align-items: center; justify-content: center; - color: #6b7280; + color: var(--rs-text-muted); gap: 8px; } @@ -114,8 +114,8 @@ const styles = css` justify-content: center; gap: 12px; padding: 12px; - background: #1e1e1e; - border-top: 1px solid #2d2d2d; + background: var(--rs-bg-surface); + border-top: 1px solid var(--rs-border); } .control-btn { @@ -141,12 +141,12 @@ const styles = css` } .control-btn.secondary { - background: #374151; + background: var(--rs-bg-surface-raised); color: white; } .control-btn.secondary:hover { - background: #4b5563; + background: var(--rs-toolbar-btn-hover); } .control-btn.danger { @@ -177,23 +177,23 @@ const styles = css` } .join-title { - color: white; + color: var(--rs-text-primary); font-size: 18px; font-weight: 600; } .join-subtitle { - color: #9ca3af; + color: var(--rs-text-secondary); font-size: 13px; text-align: center; } .room-input { padding: 10px 16px; - border: 2px solid #374151; + border: 2px solid var(--rs-input-border); border-radius: 8px; - background: #2d2d2d; - color: white; + background: var(--rs-input-bg); + color: var(--rs-input-text); font-size: 14px; width: 200px; text-align: center; @@ -201,7 +201,7 @@ const styles = css` } .room-input:focus { - border-color: #10b981; + border-color: var(--rs-accent); } .join-btn { @@ -230,9 +230,9 @@ const styles = css` align-items: center; justify-content: space-between; padding: 8px 12px; - background: #0a0a0a; + background: var(--rs-bg-page); font-size: 11px; - color: #9ca3af; + color: var(--rs-text-secondary); } .recording-indicator { diff --git a/lib/folk-workflow-block.ts b/lib/folk-workflow-block.ts index 6dca731..e469213 100644 --- a/lib/folk-workflow-block.ts +++ b/lib/folk-workflow-block.ts @@ -6,7 +6,7 @@ const styles = css` background: var(--rs-bg-surface, #fff); color: var(--rs-text-primary, #1e293b); border-radius: 12px; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + box-shadow: var(--rs-shadow-md); min-width: 200px; min-height: 120px; } @@ -28,9 +28,9 @@ const styles = css` align-items: center; justify-content: space-between; padding: 8px 12px; - background: #f8fafc; + background: var(--rs-bg-surface-raised); border-radius: 12px 12px 0 0; - border-bottom: 1px solid #e2e8f0; + border-bottom: 1px solid var(--rs-border); cursor: move; } @@ -58,7 +58,7 @@ const styles = css` .block-label { font-size: 13px; font-weight: 600; - color: #1e293b; + color: var(--rs-text-primary); } .header-actions button { @@ -66,12 +66,12 @@ const styles = css` border: none; cursor: pointer; padding: 2px; - color: #64748b; + color: var(--rs-text-muted); font-size: 14px; } .header-actions button:hover { - color: #1e293b; + color: var(--rs-text-primary); } .content { @@ -120,13 +120,13 @@ const styles = css` .port-handle.trigger { border-color: #ef4444; background: #fee2e2; } .port-label { - color: #64748b; + color: var(--rs-text-muted); } .port-value { - color: #1e293b; + color: var(--rs-text-primary); font-family: "Monaco", "Consolas", monospace; - background: #f1f5f9; + background: var(--rs-bg-surface-raised); padding: 2px 6px; border-radius: 4px; max-width: 100px; @@ -138,7 +138,7 @@ const styles = css` .config-area { margin-top: 8px; padding-top: 8px; - border-top: 1px solid #e2e8f0; + border-top: 1px solid var(--rs-border); } .config-field { @@ -151,13 +151,13 @@ const styles = css` .config-field label { font-size: 11px; font-weight: 500; - color: #64748b; + color: var(--rs-text-muted); } .config-field input, .config-field select { padding: 6px 8px; - border: 1px solid #e2e8f0; + border: 1px solid var(--rs-input-border); border-radius: 4px; font-size: 12px; outline: none; @@ -165,7 +165,7 @@ const styles = css` .config-field input:focus, .config-field select:focus { - border-color: #3b82f6; + border-color: var(--rs-primary); } .status-bar { @@ -173,9 +173,9 @@ const styles = css` align-items: center; justify-content: space-between; padding: 6px 12px; - background: #f8fafc; + background: var(--rs-bg-surface-raised); border-radius: 0 0 12px 12px; - border-top: 1px solid #e2e8f0; + border-top: 1px solid var(--rs-border); font-size: 11px; } @@ -203,7 +203,7 @@ const styles = css` .run-btn { padding: 4px 8px; - background: #3b82f6; + background: var(--rs-primary); color: white; border: none; border-radius: 4px; @@ -213,7 +213,7 @@ const styles = css` } .run-btn:hover { - background: #2563eb; + background: var(--rs-primary-hover); } `; diff --git a/modules/rbooks/components/folk-book-shelf.ts b/modules/rbooks/components/folk-book-shelf.ts index e5d6129..38bd59c 100644 --- a/modules/rbooks/components/folk-book-shelf.ts +++ b/modules/rbooks/components/folk-book-shelf.ts @@ -163,10 +163,10 @@ export class FolkBookShelf extends HTMLElement { } .rapp-nav { display: flex; align-items: center; gap: 8px; margin-bottom: 16px; min-height: 36px; } - .rapp-nav__title { font-size: 15px; font-weight: 600; color: #e2e8f0; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .rapp-nav__title { font-size: 15px; font-weight: 600; color: var(--rs-text-primary); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .rapp-nav__actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; } - .rapp-nav__btn { padding: 6px 14px; border-radius: 6px; border: none; background: #4f46e5; color: #fff; font-weight: 600; cursor: pointer; font-size: 13px; } - .rapp-nav__btn:hover { background: #6366f1; } + .rapp-nav__btn { padding: 6px 14px; border-radius: 6px; border: none; background: var(--rs-primary); color: #fff; font-weight: 600; cursor: pointer; font-size: 13px; } + .rapp-nav__btn:hover { background: var(--rs-primary-hover); } .controls { display: flex; @@ -180,13 +180,13 @@ export class FolkBookShelf extends HTMLElement { flex: 1; min-width: 200px; padding: 0.5rem 0.75rem; - border: 1px solid #334155; + border: 1px solid var(--rs-input-border); border-radius: 0.5rem; - background: #1e293b; - color: #f1f5f9; + background: var(--rs-input-bg); + color: var(--rs-input-text); font-size: 0.9rem; } - .search-input::placeholder { color: #64748b; } + .search-input::placeholder { color: var(--rs-text-muted); } .search-input:focus { outline: none; border-color: #60a5fa; } .tags { @@ -198,28 +198,28 @@ export class FolkBookShelf extends HTMLElement { .tag { padding: 0.25rem 0.625rem; border-radius: 999px; - border: 1px solid #334155; - background: #1e293b; - color: #94a3b8; + border: 1px solid var(--rs-border); + background: var(--rs-bg-surface); + color: var(--rs-text-secondary); font-size: 0.75rem; cursor: pointer; transition: all 0.15s; } - .tag:hover { border-color: #60a5fa; color: #e2e8f0; } + .tag:hover { border-color: #60a5fa; color: var(--rs-text-primary); } .tag.active { background: #1e3a5f; border-color: #60a5fa; color: #60a5fa; } .upload-btn { padding: 0.5rem 1rem; border: none; border-radius: 0.5rem; - background: #2563eb; + background: var(--rs-primary); color: #fff; font-size: 0.875rem; cursor: pointer; font-weight: 500; transition: background 0.15s; } - .upload-btn:hover { background: #1d4ed8; } + .upload-btn:hover { background: var(--rs-primary-hover); } .grid { display: grid; @@ -232,8 +232,8 @@ export class FolkBookShelf extends HTMLElement { flex-direction: column; border-radius: 0.75rem; overflow: hidden; - background: #1e293b; - border: 1px solid #334155; + background: var(--rs-bg-surface); + border: 1px solid var(--rs-border); cursor: pointer; transition: transform 0.15s, border-color 0.15s; text-decoration: none; @@ -289,7 +289,7 @@ export class FolkBookShelf extends HTMLElement { .book-title { font-size: 0.8rem; font-weight: 600; - color: #e2e8f0; + color: var(--rs-text-primary); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; @@ -298,7 +298,7 @@ export class FolkBookShelf extends HTMLElement { .book-author { font-size: 0.75rem; - color: #94a3b8; + color: var(--rs-text-secondary); display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; @@ -309,7 +309,7 @@ export class FolkBookShelf extends HTMLElement { display: flex; justify-content: space-between; font-size: 0.7rem; - color: #64748b; + color: var(--rs-text-muted); margin-top: auto; padding-top: 0.375rem; } @@ -317,9 +317,9 @@ export class FolkBookShelf extends HTMLElement { .empty { text-align: center; padding: 3rem; - color: #64748b; + color: var(--rs-text-muted); } - .empty h3 { margin: 0 0 0.5rem; color: #94a3b8; } + .empty h3 { margin: 0 0 0.5rem; color: var(--rs-text-secondary); } /* Upload modal */ .modal-overlay { @@ -334,8 +334,8 @@ export class FolkBookShelf extends HTMLElement { .modal-overlay[hidden] { display: none; } .modal { - background: #1e293b; - border: 1px solid #334155; + background: var(--rs-bg-surface); + border: 1px solid var(--rs-border); border-radius: 1rem; padding: 1.5rem; width: 90%; @@ -346,7 +346,7 @@ export class FolkBookShelf extends HTMLElement { .modal h3 { margin: 0 0 1rem; - color: #f1f5f9; + color: var(--rs-text-primary); font-size: 1.1rem; } @@ -354,7 +354,7 @@ export class FolkBookShelf extends HTMLElement { display: block; margin-bottom: 0.25rem; font-size: 0.8rem; - color: #94a3b8; + color: var(--rs-text-secondary); } .modal input, @@ -362,10 +362,10 @@ export class FolkBookShelf extends HTMLElement { width: 100%; padding: 0.5rem 0.75rem; margin-bottom: 0.75rem; - border: 1px solid #334155; + border: 1px solid var(--rs-input-border); border-radius: 0.5rem; - background: #0f172a; - color: #f1f5f9; + background: var(--rs-input-bg); + color: var(--rs-input-text); font-size: 0.875rem; box-sizing: border-box; } @@ -382,41 +382,41 @@ export class FolkBookShelf extends HTMLElement { .btn-cancel { padding: 0.5rem 1rem; - border: 1px solid #334155; + border: 1px solid var(--rs-border); border-radius: 0.5rem; background: transparent; - color: #94a3b8; + color: var(--rs-text-secondary); cursor: pointer; } - .btn-cancel:hover { border-color: #64748b; } + .btn-cancel:hover { border-color: var(--rs-text-muted); } .btn-submit { padding: 0.5rem 1rem; border: none; border-radius: 0.5rem; - background: #2563eb; + background: var(--rs-primary); color: #fff; cursor: pointer; font-weight: 500; } - .btn-submit:hover { background: #1d4ed8; } + .btn-submit:hover { background: var(--rs-primary-hover); } .btn-submit:disabled { opacity: 0.5; cursor: not-allowed; } .drop-zone { - border: 2px dashed #334155; + border: 2px dashed var(--rs-border); border-radius: 0.75rem; padding: 1.5rem; text-align: center; - color: #64748b; + color: var(--rs-text-muted); margin-bottom: 0.75rem; cursor: pointer; transition: border-color 0.15s; } - .drop-zone:hover, .drop-zone.dragover { border-color: #60a5fa; color: #94a3b8; } + .drop-zone:hover, .drop-zone.dragover { border-color: #60a5fa; color: var(--rs-text-secondary); } .drop-zone .selected { color: #60a5fa; font-weight: 500; } .error-msg { - color: #f87171; + color: var(--rs-error); font-size: 0.8rem; margin-bottom: 0.5rem; } diff --git a/modules/rcart/components/folk-cart-shop.ts b/modules/rcart/components/folk-cart-shop.ts index 42afe11..ac7deb2 100644 --- a/modules/rcart/components/folk-cart-shop.ts +++ b/modules/rcart/components/folk-cart-shop.ts @@ -631,25 +631,25 @@ class FolkCartShop extends HTMLElement { :host { display: block; padding: 1.5rem; } * { box-sizing: border-box; } .rapp-nav { display: flex; gap: 8px; align-items: center; margin-bottom: 1rem; min-height: 36px; flex-wrap: wrap; } - .rapp-nav__title { font-size: 15px; font-weight: 600; flex: 1; color: #e2e8f0; } + .rapp-nav__title { font-size: 15px; font-weight: 600; flex: 1; color: var(--rs-text-primary); } .tabs { display: flex; gap: 0.5rem; } - .tab { padding: 0.5rem 1rem; border-radius: 8px; border: 1px solid #334155; background: #1e293b; color: #94a3b8; cursor: pointer; font-size: 0.875rem; } - .tab:hover { border-color: #475569; color: #f1f5f9; } - .tab.active { background: #4f46e5; border-color: #6366f1; color: #fff; } + .tab { padding: 0.5rem 1rem; border-radius: 8px; border: 1px solid var(--rs-border); background: var(--rs-bg-surface); color: var(--rs-text-secondary); cursor: pointer; font-size: 0.875rem; } + .tab:hover { border-color: var(--rs-border-strong); color: var(--rs-text-primary); } + .tab.active { background: var(--rs-primary-hover); border-color: var(--rs-primary); color: #fff; } .grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 1rem; } - .card { background: #1e293b; border: 1px solid #334155; border-radius: 12px; padding: 1.25rem; } - .card:hover { border-color: #475569; } + .card { background: var(--rs-bg-surface); border: 1px solid var(--rs-border); border-radius: 12px; padding: 1.25rem; } + .card:hover { border-color: var(--rs-border-strong); } .card-clickable { cursor: pointer; transition: border-color 0.15s, transform 0.1s; } - .card-clickable:hover { border-color: #6366f1; transform: translateY(-1px); } - .card-title { color: #f1f5f9; font-weight: 600; font-size: 1rem; margin: 0 0 0.5rem; } - .card-meta { color: #94a3b8; font-size: 0.8125rem; margin-bottom: 0.5rem; } - .section-title { color: #f1f5f9; font-weight: 700; font-size: 1.25rem; margin: 0 0 0.5rem; } + .card-clickable:hover { border-color: var(--rs-primary); transform: translateY(-1px); } + .card-title { color: var(--rs-text-primary); font-weight: 600; font-size: 1rem; margin: 0 0 0.5rem; } + .card-meta { color: var(--rs-text-secondary); font-size: 0.8125rem; margin-bottom: 0.5rem; } + .section-title { color: var(--rs-text-primary); font-weight: 700; font-size: 1.25rem; margin: 0 0 0.5rem; } .tag { display: inline-block; padding: 0.125rem 0.5rem; border-radius: 4px; font-size: 0.6875rem; margin-right: 0.25rem; } - .tag-type { background: rgba(99,102,241,0.1); color: #818cf8; } + .tag-type { background: rgba(99,102,241,0.1); color: var(--rs-primary-hover); } .tag-cap { background: rgba(34,197,94,0.1); color: #4ade80; } - .dims { color: #64748b; font-size: 0.75rem; margin-top: 0.5rem; } + .dims { color: var(--rs-text-muted); font-size: 0.75rem; margin-top: 0.5rem; } .status { padding: 0.125rem 0.5rem; border-radius: 999px; font-size: 0.6875rem; font-weight: 500; white-space: nowrap; } .status-pending, .status-open { background: rgba(251,191,36,0.15); color: #fbbf24; } @@ -659,23 +659,23 @@ class FolkCartShop extends HTMLElement { .status-cancelled, .status-closed { background: rgba(239,68,68,0.15); color: #f87171; } .status-shipped { background: rgba(56,189,248,0.15); color: #38bdf8; } - .price { color: #f1f5f9; font-weight: 600; font-size: 1rem; margin-top: 0.5rem; } + .price { color: var(--rs-text-primary); font-weight: 600; font-size: 1rem; margin-top: 0.5rem; } .text-green { color: #4ade80; } - .progress-bar { background: #334155; border-radius: 999px; height: 8px; overflow: hidden; } - .progress-fill { background: linear-gradient(90deg, #6366f1, #8b5cf6); height: 100%; border-radius: 999px; transition: width 0.3s; } + .progress-bar { background: var(--rs-bg-surface-raised); border-radius: 999px; height: 8px; overflow: hidden; } + .progress-fill { background: linear-gradient(90deg, var(--rs-primary), #8b5cf6); height: 100%; border-radius: 999px; transition: width 0.3s; } - .btn { padding: 0.5rem 1rem; border-radius: 8px; border: 1px solid #334155; background: #1e293b; color: #e2e8f0; cursor: pointer; font-size: 0.875rem; } - .btn:hover { border-color: #475569; } - .btn-primary { background: #4f46e5; border-color: #6366f1; color: #fff; } + .btn { padding: 0.5rem 1rem; border-radius: 8px; border: 1px solid var(--rs-border); background: var(--rs-bg-surface); color: var(--rs-text-primary); cursor: pointer; font-size: 0.875rem; } + .btn:hover { border-color: var(--rs-border-strong); } + .btn-primary { background: var(--rs-primary-hover); border-color: var(--rs-primary); color: #fff; } .btn-primary:hover { background: #4338ca; } .btn-primary:disabled { opacity: 0.5; cursor: not-allowed; } .btn-sm { padding: 0.375rem 0.75rem; font-size: 0.8125rem; } - .btn-icon { background: none; border: none; color: #64748b; cursor: pointer; padding: 4px; font-size: 0.875rem; border-radius: 4px; } + .btn-icon { background: none; border: none; color: var(--rs-text-muted); cursor: pointer; padding: 4px; font-size: 0.875rem; border-radius: 4px; } .btn-icon:hover { color: #f87171; background: rgba(239,68,68,0.1); } - .input { padding: 0.5rem 0.75rem; border-radius: 8px; border: 1px solid #334155; background: #0f172a; color: #e2e8f0; font-size: 0.875rem; } - .input:focus { outline: none; border-color: #6366f1; } + .input { padding: 0.5rem 0.75rem; border-radius: 8px; border: 1px solid var(--rs-input-border); background: var(--rs-input-bg); color: var(--rs-input-text); font-size: 0.875rem; } + .input:focus { outline: none; border-color: var(--rs-primary); } .input-sm { max-width: 160px; } .new-cart-form, .contribute-form { display: flex; gap: 0.5rem; align-items: center; margin-top: 0.5rem; flex-wrap: wrap; } @@ -686,35 +686,35 @@ class FolkCartShop extends HTMLElement { @media (max-width: 768px) { .detail-layout { grid-template-columns: 1fr; } } .vendor-group { margin-bottom: 1rem; } - .vendor-header { color: #94a3b8; font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; padding: 0.5rem 0; border-bottom: 1px solid #1e293b; margin-bottom: 0.5rem; } - .item-row { display: flex; align-items: center; gap: 0.75rem; padding: 0.5rem 0; border-bottom: 1px solid #1e293b; } - .item-thumb { width: 40px; height: 40px; border-radius: 6px; object-fit: cover; background: #334155; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 1.25rem; } - .item-thumb-placeholder { width: 40px; height: 40px; border-radius: 6px; background: #334155; display: flex; align-items: center; justify-content: center; font-size: 1.25rem; } + .vendor-header { color: var(--rs-text-secondary); font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; padding: 0.5rem 0; border-bottom: 1px solid var(--rs-border-subtle); margin-bottom: 0.5rem; } + .item-row { display: flex; align-items: center; gap: 0.75rem; padding: 0.5rem 0; border-bottom: 1px solid var(--rs-border-subtle); } + .item-thumb { width: 40px; height: 40px; border-radius: 6px; object-fit: cover; background: var(--rs-bg-surface-raised); flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 1.25rem; } + .item-thumb-placeholder { width: 40px; height: 40px; border-radius: 6px; background: var(--rs-bg-surface-raised); display: flex; align-items: center; justify-content: center; font-size: 1.25rem; } .item-info { flex: 1; min-width: 0; } - .item-name { color: #e2e8f0; font-size: 0.875rem; text-decoration: none; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } - .item-name:hover { color: #818cf8; } - .item-meta { color: #64748b; font-size: 0.75rem; } + .item-name { color: var(--rs-text-primary); font-size: 0.875rem; text-decoration: none; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .item-name:hover { color: var(--rs-primary-hover); } + .item-meta { color: var(--rs-text-muted); font-size: 0.75rem; } - .summary-row { display: flex; justify-content: space-between; padding: 0.375rem 0; color: #cbd5e1; font-size: 0.875rem; } + .summary-row { display: flex; justify-content: space-between; padding: 0.375rem 0; color: var(--rs-text-primary); font-size: 0.875rem; } .contrib-row { display: flex; align-items: center; gap: 0.5rem; padding: 0.375rem 0; font-size: 0.8125rem; } - .contrib-name { color: #e2e8f0; flex: 1; } + .contrib-name { color: var(--rs-text-primary); flex: 1; } .contrib-amount { color: #4ade80; font-weight: 600; } .order-card { display: flex; justify-content: space-between; align-items: center; } .order-info { flex: 1; } - .order-price { color: #f1f5f9; font-weight: 600; font-size: 1.125rem; } + .order-price { color: var(--rs-text-primary); font-weight: 600; font-size: 1.125rem; } .ext-banner { position: relative; background: rgba(99,102,241,0.08); border: 1px solid rgba(99,102,241,0.25); border-radius: 12px; padding: 1rem 2.5rem 1rem 1.25rem; margin-bottom: 1rem; } - .ext-banner-dismiss { position: absolute; top: 0.5rem; right: 0.75rem; background: none; border: none; color: #94a3b8; font-size: 1.25rem; cursor: pointer; padding: 0 4px; line-height: 1; } - .ext-banner-dismiss:hover { color: #e2e8f0; } + .ext-banner-dismiss { position: absolute; top: 0.5rem; right: 0.75rem; background: none; border: none; color: var(--rs-text-secondary); font-size: 1.25rem; cursor: pointer; padding: 0 4px; line-height: 1; } + .ext-banner-dismiss:hover { color: var(--rs-text-primary); } .ext-banner-title { color: #a5b4fc; font-weight: 600; font-size: 0.9375rem; margin-bottom: 0.25rem; } - .ext-banner-text { color: #94a3b8; font-size: 0.8125rem; margin-bottom: 0.75rem; line-height: 1.4; } - .ext-banner-cta { display: inline-block; padding: 0.375rem 1rem; border-radius: 6px; background: #4f46e5; color: #fff; font-size: 0.8125rem; font-weight: 600; text-decoration: none; } + .ext-banner-text { color: var(--rs-text-secondary); font-size: 0.8125rem; margin-bottom: 0.75rem; line-height: 1.4; } + .ext-banner-cta { display: inline-block; padding: 0.375rem 1rem; border-radius: 6px; background: var(--rs-primary-hover); color: #fff; font-size: 0.8125rem; font-weight: 600; text-decoration: none; } .ext-banner-cta:hover { background: #4338ca; } - .empty { text-align: center; padding: 3rem; color: #64748b; font-size: 0.875rem; } - .loading { text-align: center; padding: 3rem; color: #94a3b8; } + .empty { text-align: center; padding: 3rem; color: var(--rs-text-muted); font-size: 0.875rem; } + .loading { text-align: center; padding: 3rem; color: var(--rs-text-secondary); } @media (max-width: 480px) { .grid { grid-template-columns: 1fr; } diff --git a/modules/rchoices/components/folk-choices-dashboard.ts b/modules/rchoices/components/folk-choices-dashboard.ts index 034656e..852e454 100644 --- a/modules/rchoices/components/folk-choices-dashboard.ts +++ b/modules/rchoices/components/folk-choices-dashboard.ts @@ -77,22 +77,22 @@ class FolkChoicesDashboard extends HTMLElement { @@ -193,55 +193,55 @@ class FolkChoicesDashboard extends HTMLElement {
diff --git a/modules/rdata/components/folk-analytics-view.ts b/modules/rdata/components/folk-analytics-view.ts index 723da48..7892c59 100644 --- a/modules/rdata/components/folk-analytics-view.ts +++ b/modules/rdata/components/folk-analytics-view.ts @@ -51,26 +51,26 @@ class FolkAnalyticsView extends HTMLElement { this.shadow.innerHTML = `
${campaignHTML} @@ -295,7 +295,7 @@ export class FolkCampaignManager extends HTMLElement { const preview = text.length > 180 ? this.esc(text.substring(0, 180)) + '...' : this.esc(text); html += `
- ${this.esc(platform.charAt(0).toUpperCase())} + ${this.esc(platform.charAt(0).toUpperCase())} imported
diff --git a/modules/rsocials/components/folk-campaign-planner.ts b/modules/rsocials/components/folk-campaign-planner.ts index 3dd5ce0..c2f3019 100644 --- a/modules/rsocials/components/folk-campaign-planner.ts +++ b/modules/rsocials/components/folk-campaign-planner.ts @@ -977,7 +977,7 @@ class FolkCampaignPlanner extends HTMLElement { // Determine date range for columns const allDates = dated.filter(d => d.date).map(d => d.date!); if (allDates.length === 0) { - return '
No scheduled posts yet. Add dates in canvas view.
'; + return '
No scheduled posts yet. Add dates in canvas view.
'; } const minDate = new Date(Math.min(...allDates.map(d => d.getTime()))); @@ -1048,8 +1048,8 @@ class FolkCampaignPlanner extends HTMLElement {
`; }).join(''); - unscheduledHtml = `
-
Unscheduled
+ unscheduledHtml = `
+
Unscheduled
${cards}
`; } @@ -1093,7 +1093,7 @@ class FolkCampaignPlanner extends HTMLElement { }); if (platformMap.size === 0) { - return '
No posts yet. Add posts in canvas view.
'; + return '
No posts yet. Add posts in canvas view.
'; } const columns = Array.from(platformMap.entries()).map(([platform, items]) => { @@ -1151,7 +1151,7 @@ class FolkCampaignPlanner extends HTMLElement { }); if (posts.length === 0) { - return '
No posts yet.
'; + return '
No posts yet.
'; } const rows = posts.map(node => { @@ -1358,22 +1358,22 @@ class FolkCampaignPlanner extends HTMLElement { const charPct = Math.min(1, charCount / charMax) * 100; const dateStr = d.scheduledAt ? new Date(d.scheduledAt).toLocaleDateString('en-US', { month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit' }) : 'Unscheduled'; - return `
+ return `
${icon} - ${esc(d.label || preview || 'New Post')} + ${esc(d.label || preview || 'New Post')}
-
${esc(preview)}
+
${esc(preview)}
-
+
- ${charCount}/${charMax} + ${charCount}/${charMax}
-
${dateStr}
+
${dateStr}
`; } @@ -1382,14 +1382,14 @@ class FolkCampaignPlanner extends HTMLElement { const d = node.data as ThreadNodeData; const statusColor = d.status === 'published' ? '#22c55e' : d.status === 'ready' ? '#3b82f6' : '#f59e0b'; - return `
+ return `
🧵 - ${esc(d.label || 'Thread')} + ${esc(d.label || 'Thread')}
-
${d.tweetCount} tweet${d.tweetCount === 1 ? '' : 's'}
-
${esc(d.preview || '')}
+
${d.tweetCount} tweet${d.tweetCount === 1 ? '' : 's'}
+
${esc(d.preview || '')}
`; } @@ -1404,11 +1404,11 @@ class FolkCampaignPlanner extends HTMLElement {
${icon}
-
${esc(d.label)}
-
${esc(d.handle)}
+
${esc(d.label)}
+
${esc(d.handle)}
-
${connectedCount} post${connectedCount === 1 ? '' : 's'} connected
+
${connectedCount} post${connectedCount === 1 ? '' : 's'} connected
`; } @@ -1420,11 +1420,11 @@ class FolkCampaignPlanner extends HTMLElement {
🎯
-
${esc(d.label)}
-
${esc(d.sizeEstimate)}
+
${esc(d.label)}
+
${esc(d.sizeEstimate)}
-
${connectedCount} targeted \u00b7 ${esc(d.description).substring(0, 40)}
+
${connectedCount} targeted \u00b7 ${esc(d.description).substring(0, 40)}
`; } diff --git a/modules/rsocials/components/folk-thread-gallery.ts b/modules/rsocials/components/folk-thread-gallery.ts index 78767a3..9491b3d 100644 --- a/modules/rsocials/components/folk-thread-gallery.ts +++ b/modules/rsocials/components/folk-thread-gallery.ts @@ -142,9 +142,9 @@ export class FolkThreadGallery extends HTMLElement { -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .btn { padding: 0.5rem 1rem; border-radius: 8px; border: none; font-size: 0.85rem; font-weight: 600; cursor: pointer; transition: all 0.15s; text-decoration: none; display: inline-flex; align-items: center; } - .btn--primary { background: #6366f1; color: white; } - .btn--primary:hover { background: #818cf8; } - .btn--success { background: #10b981; color: white; } + .btn--primary { background: var(--rs-primary); color: white; } + .btn--primary:hover { background: var(--rs-primary-hover); } + .btn--success { background: var(--rs-success); color: white; } .btn--success:hover { background: #34d399; } .grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; } .empty { color: var(--rs-text-muted, #64748b); text-align: center; padding: 3rem 1rem; font-size: 0.9rem; } @@ -154,7 +154,7 @@ export class FolkThreadGallery extends HTMLElement { display: flex; flex-direction: column; gap: 0.75rem; text-decoration: none; color: inherit; } - .card:hover { border-color: #6366f1; transform: translateY(-2px); } + .card:hover { border-color: var(--rs-primary); transform: translateY(-2px); } .card__title { font-size: 1rem; font-weight: 700; color: var(--rs-text-primary, #f1f5f9); margin: 0; line-height: 1.3; } .card__preview { font-size: 0.85rem; color: var(--rs-text-secondary, #94a3b8); line-height: 1.5; @@ -163,7 +163,7 @@ export class FolkThreadGallery extends HTMLElement { .card__meta { display: flex; align-items: center; gap: 0.75rem; font-size: 0.75rem; color: var(--rs-text-muted, #64748b); margin-top: auto; } .card__author { display: flex; align-items: center; gap: 0.4rem; } .card__avatar { - width: 20px; height: 20px; border-radius: 50%; background: #6366f1; + width: 20px; height: 20px; border-radius: 50%; background: var(--rs-primary); display: flex; align-items: center; justify-content: center; color: white; font-weight: 700; font-size: 0.55rem; flex-shrink: 0; } diff --git a/modules/rswag/components/folk-swag-designer.ts b/modules/rswag/components/folk-swag-designer.ts index 781c134..5a2067f 100644 --- a/modules/rswag/components/folk-swag-designer.ts +++ b/modules/rswag/components/folk-swag-designer.ts @@ -578,34 +578,34 @@ class FolkSwagDesigner extends HTMLElement {
@@ -148,13 +148,13 @@ class FolkVideoPlayer extends HTMLElement {
-

${this.currentVideo}

-

${this.getExtension(this.currentVideo).toUpperCase()} · ${sizeStr}${durStr ? ` · ${durStr}` : ""}

- ${selectedVideo?.date ? `

Recorded ${selectedVideo.date}

` : ""} -

Demo preview — connect rTube to stream real video

+

${this.currentVideo}

+

${this.getExtension(this.currentVideo).toUpperCase()} · ${sizeStr}${durStr ? ` · ${durStr}` : ""}

+ ${selectedVideo?.date ? `

Recorded ${selectedVideo.date}

` : ""} +

Demo preview — connect rTube to stream real video

`; } else if (!this.isPlayable(this.currentVideo)) { - player = `
⚠️

${this.getExtension(this.currentVideo).toUpperCase()} files cannot play in browsers

Download to play locally

`; + player = `
⚠️

${this.getExtension(this.currentVideo).toUpperCase()} files cannot play in browsers

Download to play locally

`; } else { const base = window.location.pathname.replace(/\/$/, ""); player = ``; @@ -182,8 +182,8 @@ class FolkVideoPlayer extends HTMLElement { return `
-

Watch a Live Stream

-

Enter the stream key to watch a live broadcast.

+

Watch a Live Stream

+

Enter the stream key to watch a live broadcast.

diff --git a/modules/rvote/components/folk-vote-dashboard.ts b/modules/rvote/components/folk-vote-dashboard.ts index ce15434..044c385 100644 --- a/modules/rvote/components/folk-vote-dashboard.ts +++ b/modules/rvote/components/folk-vote-dashboard.ts @@ -383,46 +383,46 @@ class FolkVoteDashboard extends HTMLElement { private render() { this.shadow.innerHTML = `