diff --git a/tp-palette.el b/tp-palette.el new file mode 100644 index 0000000..c85abe5 --- /dev/null +++ b/tp-palette.el @@ -0,0 +1,477 @@ +;; ============================================ +;; 基础文本样式 (Basic Text Styles) +;; ============================================ + +(defvar tp-palette-text-primary + '(:fg ("#24292f" . "#e6edf3") :bg ("#ffffff" . "#0d1117") + :border ("#d0d7de" . "#30363d")) + "主要文本样式,用于正文内容。") + +(defvar tp-palette-text-secondary + '(:fg ("#57606a" . "#8b949e") :bg ("#f6f8fa" . "#161b22") + :border ("#d8dee4" . "#30363d")) + "次要文本样式,用于辅助说明文字。") + +(defvar tp-palette-text-muted + '(:fg ("#6e7781" . "#6e7681") :bg ("#f6f8fa" . "#161b22") + :border ("#e1e4e8" . "#21262d")) + "弱化文本样式,用于占位符、禁用状态。") + +;; ============================================ +;; 语义状态样式 (Semantic Status Styles) +;; ============================================ + +(defvar tp-palette-success + '(:fg ("#1a7f37" . "#3fb950") :bg ("#dafbe1" . "#1b4721") + :border ("#4ac26b" . "#238636")) + "成功状态样式,用于成功提示、通过状态。") + +(defvar tp-palette-warning + '(:fg ("#9a6700" . "#d29922") :bg ("#fff8c5" . "#3d2e00") + :border ("#d4a72c" . "#9e6a03")) + "警告状态样式,用于警告提示、待处理状态。") + +(defvar tp-palette-error + '(:fg ("#cf222e" . "#f85149") :bg ("#ffebe9" . "#542426") + :border ("#ff8182" . "#f85149")) + "错误状态样式,用于错误提示、失败状态。") + +(defvar tp-palette-info + '(:fg ("#0969da" . "#58a6ff") :bg ("#ddf4ff" . "#1f3d5c") + :border ("#54aeff" . "#388bfd")) + "信息提示样式,用于普通提示、链接。") + +(defvar tp-palette-neutral + '(:fg ("#57606a" . "#8b949e") :bg ("#f6f8fa" . "#21262d") + :border ("#d0d7de" . "#30363d")) + "中性状态样式,用于普通标签、默认状态。") + +;; ============================================ +;; 代码高亮样式 (Code Syntax Highlighting Styles) +;; ============================================ + +(defvar tp-palette-syntax-keyword + '(:fg ("#cf222e" . "#ff7b72") :bg ("#fff5f5" . "#2d1f1f") + :border ("#ffcecb" . "#5c3d3d")) + "关键字样式,如 if, else, def, class 等。") + +(defvar tp-palette-syntax-string + '(:fg ("#0a3069" . "#a5d6ff") :bg ("#f0f7ff" . "#1a2634") + :border ("#c8e1ff" . "#3d5a73")) + "字符串样式。") + +(defvar tp-palette-syntax-comment + '(:fg ("#6e7781" . "#8b949e") :bg ("#f6f8fa" . "#161b22") + :border ("#e1e4e8" . "#30363d")) + "注释样式。") + +(defvar tp-palette-syntax-function + '(:fg ("#8250df" . "#d2a8ff") :bg ("#fbefff" . "#271d36") + :border ("#d8b9ff" . "#553d7a")) + "函数名样式。") + +(defvar tp-palette-syntax-variable + '(:fg ("#953800" . "#ffa657") :bg ("#fff8f0" . "#2e2318") + :border ("#ffd8b5" . "#5c4427")) + "变量名样式。") + +(defvar tp-palette-syntax-constant + '(:fg ("#0550ae" . "#79c0ff") :bg ("#f0f6ff" . "#1a2433") + :border ("#b6d7ff" . "#3d5573")) + "常量样式。") + +(defvar tp-palette-syntax-type + '(:fg ("#116329" . "#7ee787") :bg ("#f0fff4" . "#1a2e1f") + :border ("#a7f0ba" . "#3d6647")) + "类型样式,如类名、结构体名。") + +(defvar tp-palette-syntax-number + '(:fg ("#0550ae" . "#79c0ff") :bg ("#f0f6ff" . "#1a2433") + :border ("#b6d7ff" . "#3d5573")) + "数字样式。") + +(defvar tp-palette-syntax-preprocessor + '(:fg ("#cf222e" . "#ff7b72") :bg ("#fff5f5" . "#2d1f1f") + :border ("#ffcecb" . "#5c3d3d")) + "预处理器样式,如 #include, #define。") + +(defvar tp-palette-syntax-builtin + '(:fg ("#0550ae" . "#79c0ff") :bg ("#f0f6ff" . "#1a2433") + :border ("#b6d7ff" . "#3d5573")) + "内置函数/方法样式。") + +(defvar tp-palette-syntax-regexp + '(:fg ("#116329" . "#7ee787") :bg ("#f0fff4" . "#1a2e1f") + :border ("#a7f0ba" . "#3d6647")) + "正则表达式样式。") + +;; ============================================ +;; UI 界面样式 (UI Styles) +;; ============================================ + +(defvar tp-palette-ui-default + '(:fg ("#24292f" . "#c9d1d9") :bg ("#ffffff" . "#0d1117") + :border ("#d0d7de" . "#30363d")) + "默认 UI 样式。") + +(defvar tp-palette-ui-canvas + '(:fg ("#24292f" . "#c9d1d9") :bg ("#f6f8fa" . "#161b22") + :border ("#d8dee4" . "#21262d")) + "画布/次级背景样式。") + +(defvar tp-palette-ui-overlay + '(:fg ("#24292f" . "#c9d1d9") :bg ("#ffffff" . "#21262d") + :border ("#d0d7de" . "#30363d")) + "覆盖层/弹窗样式。") + +(defvar tp-palette-ui-hover + '(:fg ("#24292f" . "#c9d1d9") :bg ("#eaeef2" . "#30363d") + :border ("#d0d7de" . "#484f58")) + "悬浮状态样式。") + +(defvar tp-palette-ui-selected + '(:fg ("#0969da" . "#58a6ff") :bg ("#ddf4ff" . "#1f3d5c") + :border ("#54aeff" . "#388bfd")) + "选中状态样式。") + +(defvar tp-palette-ui-active + '(:fg ("#ffffff" . "#ffffff") :bg ("#0969da" . "#1f6feb") + :border ("#0550ae" . "#388bfd")) + "激活状态样式。") + +(defvar tp-palette-ui-disabled + '(:fg ("#8c959f" . "#484f58") :bg ("#f6f8fa" . "#21262d") + :border ("#e1e4e8" . "#30363d")) + "禁用状态样式。") + +;; ============================================ +;; 按钮样式 (Button Styles) +;; ============================================ + +(defvar tp-palette-button-primary + '(:fg ("#ffffff" . "#ffffff") :bg ("#1f883d" . "#238636") + :border ("#1a7f37" . "#2ea043")) + "主要按钮样式(绿色确认按钮)。") + +(defvar tp-palette-button-secondary + '(:fg ("#24292f" . "#c9d1d9") :bg ("#f6f8fa" . "#21262d") + :border ("#d0d7de" . "#30363d")) + "次级按钮样式。") + +(defvar tp-palette-button-danger + '(:fg ("#ffffff" . "#ffffff") :bg ("#cf222e" . "#da3633") + :border ("#a40e26" . "#f85149")) + "危险按钮样式(红色删除按钮)。") + +(defvar tp-palette-button-outline + '(:fg ("#0969da" . "#58a6ff") :bg ("transparent" . "transparent") + :border ("#0969da" . "#58a6ff")) + "轮廓按钮样式。") + +;; ============================================ +;; 输入框样式 (Input Styles) +;; ============================================ + +(defvar tp-palette-input-default + '(:fg ("#24292f" . "#c9d1d9") :bg ("#ffffff" . "#0d1117") + :border ("#d0d7de" . "#30363d")) + "输入框默认样式。") + +(defvar tp-palette-input-focus + '(:fg ("#24292f" . "#c9d1d9") :bg ("#ffffff" . "#0d1117") + :border ("#0969da" . "#58a6ff")) + "输入框聚焦样式。") + +(defvar tp-palette-input-error + '(:fg ("#24292f" . "#c9d1d9") :bg ("#ffffff" . "#0d1117") + :border ("#cf222e" . "#f85149")) + "输入框错误样式。") + +(defvar tp-palette-input-disabled + '(:fg ("#8c959f" . "#484f58") :bg ("#f6f8fa" . "#21262d") + :border ("#e1e4e8" . "#30363d")) + "输入框禁用样式。") + +;; ============================================ +;; Diff 样式 (Version Control Diff Styles) +;; ============================================ + +(defvar tp-palette-diff-added + '(:fg ("#116329" . "#3fb950") :bg ("#dafbe1" . "#1b4721") + :border ("#4ac26b" . "#238636")) + "新增行样式。") + +(defvar tp-palette-diff-removed + '(:fg ("#cf222e" . "#f85149") :bg ("#ffebe9" . "#542426") + :border ("#ff8182" . "#f85149")) + "删除行样式。") + +(defvar tp-palette-diff-modified + '(:fg ("#9a6700" . "#d29922") :bg ("#fff8c5" . "#3d2e00") + :border ("#d4a72c" . "#9e6a03")) + "修改行样式。") + +(defvar tp-palette-diff-hunk-header + '(:fg ("#0550ae" . "#79c0ff") :bg ("#ddf4ff" . "#1f3d5c") + :border ("#54aeff" . "#388bfd")) + "Diff hunk 头部样式。") + +;; ============================================ +;; 模式行样式 (Modeline Styles) +;; ============================================ + +(defvar tp-palette-modeline-active + '(:fg ("#24292f" . "#c9d1d9") :bg ("#f6f8fa" . "#21262d") + :border ("#d0d7de" . "#30363d")) + "活动窗口模式行样式。") + +(defvar tp-palette-modeline-inactive + '(:fg ("#6e7781" . "#6e7681") :bg ("#eaeef2" . "#161b22") + :border ("#e1e4e8" . "#21262d")) + "非活动窗口模式行样式。") + +(defvar tp-palette-modeline-highlight + '(:fg ("#ffffff" . "#ffffff") :bg ("#0969da" . "#1f6feb") + :border ("#0550ae" . "#388bfd")) + "模式行高亮样式。") + +;; ============================================ +;; 搜索和匹配样式 (Search & Match Styles) +;; ============================================ + +(defvar tp-palette-search-match + '(:fg ("#9a6700" . "#f0c239") :bg ("#fff8c5" . "#533d00") + :border ("#d4a72c" . "#9e6a03")) + "搜索匹配高亮样式。") + +(defvar tp-palette-search-current + '(:fg ("#24292f" . "#24292f") :bg ("#ffc83d" . "#e3b341") + :border ("#bf8700" . "#d29922")) + "当前搜索项高亮样式。") + +(defvar tp-palette-lazy-highlight + '(:fg ("#0969da" . "#58a6ff") :bg ("#ddf4ff" . "#1f3d5c") + :border ("#54aeff" . "#388bfd")) + "延迟高亮样式。") + +(defvar tp-palette-match-paren + '(:fg ("#24292f" . "#c9d1d9") :bg ("#add6ff" . "#264f78") + :border ("#0969da" . "#58a6ff")) + "括号匹配样式。") + +;; ============================================ +;; 选区和光标样式 (Selection & Cursor Styles) +;; ============================================ + +(defvar tp-palette-region + '(:fg ("unspecified" . "unspecified") :bg ("#add6ff" . "#264f78") + :border ("#54aeff" . "#388bfd")) + "选区样式。") + +(defvar tp-palette-cursor + '(:fg ("#ffffff" . "#0d1117") :bg ("#24292f" . "#58a6ff") + :border ("#24292f" . "#58a6ff")) + "光标样式。") + +(defvar tp-palette-line-highlight + '(:fg ("unspecified" . "unspecified") :bg ("#f6f8fa" . "#161b22") + :border ("#eaeef2" . "#21262d")) + "当前行高亮样式。") + +;; ============================================ +;; Org-mode 标题样式 (Org-mode Heading Styles) +;; ============================================ + +(defvar tp-palette-org-heading-1 + '(:fg ("#0969da" . "#58a6ff") :bg ("#f0f7ff" . "#1a2634") + :border ("#54aeff" . "#388bfd")) + "Org 一级标题样式。") + +(defvar tp-palette-org-heading-2 + '(:fg ("#8250df" . "#a371f7") :bg ("#fbefff" . "#271d36") + :border ("#c297ff" . "#6e40c9")) + "Org 二级标题样式。") + +(defvar tp-palette-org-heading-3 + '(:fg ("#1a7f37" . "#3fb950") :bg ("#f0fff4" . "#1a2e1f") + :border ("#4ac26b" . "#238636")) + "Org 三级标题样式。") + +(defvar tp-palette-org-heading-4 + '(:fg ("#953800" . "#ffa657") :bg ("#fff8f0" . "#2e2318") + :border ("#ffb86c" . "#9e6a03")) + "Org 四级标题样式。") + +(defvar tp-palette-org-heading-5 + '(:fg ("#bf3989" . "#db61a2") :bg ("#fff0f7" . "#2e1f28") + :border ("#f28cb1" . "#8b3d63")) + "Org 五级标题样式。") + +(defvar tp-palette-org-heading-6 + '(:fg ("#0598bc" . "#39c5cf") :bg ("#f0faff" . "#1a2e33") + :border ("#56d4dd" . "#2d7d85")) + "Org 六级标题样式。") + +;; ============================================ +;; Org-mode 其他样式 (Org-mode Other Styles) +;; ============================================ + +(defvar tp-palette-org-todo + '(:fg ("#ffffff" . "#ffffff") :bg ("#cf222e" . "#da3633") + :border ("#a40e26" . "#f85149")) + "Org TODO 关键字样式。") + +(defvar tp-palette-org-done + '(:fg ("#ffffff" . "#ffffff") :bg ("#1a7f37" . "#238636") + :border ("#116329" . "#2ea043")) + "Org DONE 关键字样式。") + +(defvar tp-palette-org-code + '(:fg ("#0550ae" . "#79c0ff") :bg ("#f6f8fa" . "#161b22") + :border ("#d0d7de" . "#30363d")) + "Org 行内代码样式。") + +(defvar tp-palette-org-block + '(:fg ("#24292f" . "#c9d1d9") :bg ("#f6f8fa" . "#161b22") + :border ("#d0d7de" . "#30363d")) + "Org 代码块样式。") + +(defvar tp-palette-org-quote + '(:fg ("#57606a" . "#8b949e") :bg ("#f6f8fa" . "#161b22") + :border ("#d0d7de" . "#30363d")) + "Org 引用块样式。") + +(defvar tp-palette-org-link + '(:fg ("#0969da" . "#58a6ff") :bg ("transparent" . "transparent") + :border ("#0969da" . "#58a6ff")) + "Org 链接样式。") + +(defvar tp-palette-org-date + '(:fg ("#8250df" . "#a371f7") :bg ("transparent" . "transparent") + :border ("#8250df" . "#a371f7")) + "Org 日期样式。") + +(defvar tp-palette-org-tag + '(:fg ("#57606a" . "#8b949e") :bg ("#f6f8fa" . "#21262d") + :border ("#d0d7de" . "#30363d")) + "Org 标签样式。") + +;; ============================================ +;; 强调色样式 (Accent Color Styles) +;; ============================================ + +(defvar tp-palette-accent-blue + '(:fg ("#0969da" . "#58a6ff") :bg ("#ddf4ff" . "#1f3d5c") + :border ("#54aeff" . "#388bfd")) + "蓝色强调样式。") + +(defvar tp-palette-accent-purple + '(:fg ("#8250df" . "#a371f7") :bg ("#fbefff" . "#271d36") + :border ("#c297ff" . "#6e40c9")) + "紫色强调样式。") + +(defvar tp-palette-accent-pink + '(:fg ("#bf3989" . "#db61a2") :bg ("#fff0f7" . "#2e1f28") + :border ("#f28cb1" . "#8b3d63")) + "粉色强调样式。") + +(defvar tp-palette-accent-orange + '(:fg ("#bc4c00" . "#f0883e") :bg ("#fff5eb" . "#2e2318") + :border ("#ffb86c" . "#9e6a03")) + "橙色强调样式。") + +(defvar tp-palette-accent-green + '(:fg ("#1a7f37" . "#3fb950") :bg ("#dafbe1" . "#1b4721") + :border ("#4ac26b" . "#238636")) + "绿色强调样式。") + +(defvar tp-palette-accent-red + '(:fg ("#cf222e" . "#f85149") :bg ("#ffebe9" . "#542426") + :border ("#ff8182" . "#f85149")) + "红色强调样式。") + +(defvar tp-palette-accent-yellow + '(:fg ("#9a6700" . "#d29922") :bg ("#fff8c5" . "#3d2e00") + :border ("#d4a72c" . "#9e6a03")) + "黄色强调样式。") + +(defvar tp-palette-accent-cyan + '(:fg ("#0598bc" . "#39c5cf") :bg ("#e8f9fc" . "#1a2e33") + :border ("#56d4dd" . "#2d7d85")) + "青色强调样式。") + +;; ============================================ +;; 通知/徽章样式 (Notification/Badge Styles) +;; ============================================ + +(defvar tp-palette-badge-primary + '(:fg ("#ffffff" . "#ffffff") :bg ("#0969da" . "#1f6feb") + :border ("#0550ae" . "#388bfd")) + "主要徽章样式。") + +(defvar tp-palette-badge-secondary + '(:fg ("#24292f" . "#c9d1d9") :bg ("#eaeef2" . "#30363d") + :border ("#d0d7de" . "#484f58")) + "次级徽章样式。") + +(defvar tp-palette-badge-success + '(:fg ("#ffffff" . "#ffffff") :bg ("#1a7f37" . "#238636") + :border ("#116329" . "#2ea043")) + "成功徽章样式。") + +(defvar tp-palette-badge-warning + '(:fg ("#24292f" . "#24292f") :bg ("#ffd33d" . "#d29922") + :border ("#bf8700" . "#bb8009")) + "警告徽章样式。") + +(defvar tp-palette-badge-danger + '(:fg ("#ffffff" . "#ffffff") :bg ("#cf222e" . "#da3633") + :border ("#a40e26" . "#f85149")) + "危险徽章样式。") + +;; ============================================ +;; 彩虹括号样式 (Rainbow Delimiters Styles) +;; ============================================ + +(defvar tp-palette-rainbow-1 + '(:fg ("#0969da" . "#58a6ff") :bg ("transparent" . "transparent") + :border ("#0969da" . "#58a6ff")) + "彩虹括号第一层样式。") + +(defvar tp-palette-rainbow-2 + '(:fg ("#8250df" . "#a371f7") :bg ("transparent" . "transparent") + :border ("#8250df" . "#a371f7")) + "彩虹括号第二层样式。") + +(defvar tp-palette-rainbow-3 + '(:fg ("#1a7f37" . "#3fb950") :bg ("transparent" . "transparent") + :border ("#1a7f37" . "#3fb950")) + "彩虹括号第三层样式。") + +(defvar tp-palette-rainbow-4 + '(:fg ("#953800" . "#ffa657") :bg ("transparent" . "transparent") + :border ("#953800" . "#ffa657")) + "彩虹括号第四层样式。") + +(defvar tp-palette-rainbow-5 + '(:fg ("#bf3989" . "#db61a2") :bg ("transparent" . "transparent") + :border ("#bf3989" . "#db61a2")) + "彩虹括号第五层样式。") + +(defvar tp-palette-rainbow-6 + '(:fg ("#0598bc" . "#39c5cf") :bg ("transparent" . "transparent") + :border ("#0598bc" . "#39c5cf")) + "彩虹括号第六层样式。") + +;;; Utilities + +(defun tp-palette-fg-color (symbol) + (tp-parse-color (plist-get (symbol-value symbol) :fg))) + +(defun tp-palette-bg-color (symbol) + (tp-parse-color (plist-get (symbol-value symbol) :bg))) + +(defun tp-palette-border-color (symbol) + (tp-parse-color (plist-get (symbol-value symbol) :border))) + +(provide 'tp-palette) diff --git a/tp.el b/tp.el index 38d65a8..87290e2 100644 --- a/tp.el +++ b/tp.el @@ -3723,76 +3723,18 @@ e.g.3 (tp-parse-color '(:light \"red\" :dark \"green\"))" ((null color) nil) (t (error "Invalid format of color %S" color)))) -;;; Built-in colors - -(defvar tp-ant-fg-text '("#000000E0" . "#FFFFFFD9")) ; text -(defvar tp-ant-fg-text-2 '("#000000A6" . "#FFFFFFA6")) ; secondary -(defvar tp-ant-fg-text-3 '("#00000073" . "#FFFFFF73")) ; tertiary -(defvar tp-ant-fg-text-4 '("#00000040" . "#FFFFFF40")) ; quaternary -(defvar tp-ant-fg-link '("#1677FF" . "#1668DC")) -(defvar tp-ant-fg-primary '("#1677FF" . "#1668DC")) -(defvar tp-ant-fg-success '("#52C41A" . "#49AA19")) -(defvar tp-ant-fg-warning '("#FAAD14" . "#D89614")) -(defvar tp-ant-fg-error '("#FF4D4F" . "#DC4446")) -(defvar tp-ant-bg-layout '("#F5F5F5" . "#000000")) -(defvar tp-ant-bg-container '("#FFFFFF" . "#141414")) -(defvar tp-ant-bg-elevated '("#FFFFFF" . "#1F1F1F")) -(defvar tp-ant-border-default '("#D9D9D9" . "#303030")) -(defvar tp-ant-border-secondary '("#F0F0F0" . "#262626")) - -(defvar tp-material-fg-text '("#1D1D1D" . "#FFFFFF")) -(defvar tp-material-fg-text-2 '("#4D4D4D" . "#B3B3B3")) -(defvar tp-material-fg-primary '("#1976D2" . "#90CAF9")) -(defvar tp-material-fg-secondary '("#9C27B0" . "#CE93D8")) -(defvar tp-material-fg-success '("#2E7D32" . "#81C784")) -(defvar tp-material-fg-warning '("#ED6C02" . "#FFB74D")) -(defvar tp-material-fg-error '("#D32F2F" . "#EF9A9A")) -(defvar tp-material-fg-info '("#0288D1" . "#81D4FA")) -(defvar tp-material-bg-default '("#FFFFFF" . "#121212")) -(defvar tp-material-bg-paper '("#FFFFFF" . "#1E1E1E")) -(defvar tp-material-border-default '("#E0E0E0" . "#2A2A2A")) - -(defvar tp-bootstrap-fg-text '("#212529" . "#F8F9FA")) -(defvar tp-bootstrap-fg-text-2 '("#6C757D" . "#ADB5BD")) -(defvar tp-bootstrap-fg-primary '("#0D6EFD" . "#0D6EFD")) -(defvar tp-bootstrap-fg-secondary '("#6C757D" . "#6C757D")) -(defvar tp-bootstrap-fg-success '("#198754" . "#198754")) -(defvar tp-bootstrap-fg-warning '("#FFC107" . "#FFC107")) -(defvar tp-bootstrap-fg-danger '("#DC3545" . "#DC3545")) -(defvar tp-bootstrap-fg-info '("#0DCAF0" . "#0DCAF0")) -(defvar tp-bootstrap-fg-link '("#0D6EFD" . "#6EA8FE")) -(defvar tp-bootstrap-bg-body '("#FFFFFF" . "#212529")) -(defvar tp-bootstrap-bg-surface '("#F8F9FA" . "#2B3035")) -(defvar tp-bootstrap-bg-elevated '("#FFFFFF" . "#343A40")) -(defvar tp-bootstrap-border-default '("#DEE2E6" . "#495057")) - -(defvar tp-tailwind-fg-text '("#0F172A" . "#E2E8F0")) ; slate-900 . slate-200 -(defvar tp-tailwind-fg-text-2 '("#334155" . "#CBD5E1")) ; slate-700 . slate-300 -(defvar tp-tailwind-fg-muted '("#64748B" . "#94A3B8")) ; slate-500 . slate-400 -(defvar tp-tailwind-fg-primary '("#3B82F6" . "#60A5FA")) ; blue-500 . blue-400 -(defvar tp-tailwind-fg-success '("#22C55E" . "#4ADE80")) ; green-500 . green-400 -(defvar tp-tailwind-fg-warning '("#F59E0B" . "#FBBF24")) ; amber-500 . amber-400 -(defvar tp-tailwind-fg-error '("#EF4444" . "#F87171")) ; red-500 . red-400 -(defvar tp-tailwind-fg-info '("#06B6D4" . "#22D3EE")) ; cyan-500 . cyan-400 -(defvar tp-tailwind-bg-base '("#FFFFFF" . "#0B1220")) -(defvar tp-tailwind-bg-subtle '("#F8FAFC" . "#0F172A")) ; slate-50 . slate-900 -(defvar tp-tailwind-bg-muted '("#F1F5F9" . "#111827")) ; slate-100 . gray-900 -(defvar tp-tailwind-border-default '("#E2E8F0" . "#1F2937")) ; slate-200 . gray-800 +(require 'tp-palette) ;;; Built-in text properties (define-tp tp-button (plist) - (let ((color (tp-parse-color (or (plist-get plist :color) - tp-ant-fg-success))) - (bgcolor (tp-parse-color (or (plist-get plist :bgcolor) - tp-ant-bg-container))) - (border-color (tp-parse-color tp-ant-border-default)) + (let ((palette (plist-get plist :palette)) (action (plist-get plist :action))) - `( face ( :box ( :color ,border-color + `( face ( :box ( :color ,(tp-palette-border-color palette) :line-width (1 . 1) :style released-button) - :foreground ,color - :background ,bgcolor) + :foreground ,(tp-palette-fg-color palette) + :background ,(tp-palette-bg-color palette)) keymap ,(let ((keymap (make-sparse-keymap))) (define-key keymap (kbd "") action) (define-key keymap [mouse-1] action) @@ -3811,5 +3753,10 @@ e.g.3 (tp-parse-color '(:light \"red\" :dark \"green\"))" `(face (:height ,height ,@(when boldp '(:weight bold)))))) +(define-tp tp-palette (symbol) + (let ((plist (symbol-value symbol))) + `(face ( :foreground ,(tp-parse-color (plist-get plist :fg)) + :background ,(tp-parse-color (plist-get plist :bg)))))) + (provide 'tp) ;;; tp.el ends here