chore: 添加 Obsidian 配置与插件

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-02-24 14:50:41 +08:00
co-authored by Cursor
parent 1506025f51
commit c0891be791
33 changed files with 24434 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
{}
+10
View File
@@ -0,0 +1,10 @@
{
"theme": "obsidian",
"enabledCssSnippets": [
"bases-table-readable",
"table-dataview",
"table-readable-global",
"table-styles-extended",
"table-theme-mild"
]
}
+8
View File
@@ -0,0 +1,8 @@
[
"dataview",
"obsidian-kanban",
"bases-kanban",
"bases-canvas",
"obsidian-git",
"templater-obsidian"
]
+33
View File
@@ -0,0 +1,33 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"footnotes": false,
"properties": true,
"page-preview": true,
"daily-notes": true,
"templates": true,
"note-composer": true,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"bookmarks": true,
"markdown-importer": false,
"zk-prefixer": false,
"random-note": false,
"outline": true,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": true,
"bases": true,
"webviewer": false
}
+22
View File
@@ -0,0 +1,22 @@
{
"collapse-filter": false,
"search": "path:bible ",
"showTags": false,
"showAttachments": false,
"hideUnresolved": true,
"showOrphans": true,
"collapse-color-groups": true,
"colorGroups": [],
"collapse-display": true,
"showArrow": false,
"textFadeMultiplier": 0,
"nodeSizeMultiplier": 1,
"lineSizeMultiplier": 1,
"collapse-forces": true,
"centerStrength": 0.518713248970312,
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 0.999999999999998,
"close": true
}
+10
View File
@@ -0,0 +1,10 @@
{
"metadataProperty": "linkTo",
"linkMetadataEnabled": true,
"linkMetadataProperty": "linkto",
"nonMarkdownPositions": {},
"autoBackupEnabled": true,
"autoBackupFolder": "",
"pinnedCanvases": [],
"pinnedNodes": {}
}
File diff suppressed because one or more lines are too long
+10
View File
@@ -0,0 +1,10 @@
{
"id": "bases-canvas",
"name": "Bases Canvas",
"version": "0.1.0",
"minAppVersion": "1.10.0",
"description": "Canvas integration for Bases view.",
"author": "boninall",
"authorUrl": "https://github.com/quorafind",
"isDesktopOnly": false
}
+859
View File
@@ -0,0 +1,859 @@
.bases-canvas-view {
display: flex;
height: 100%;
position: relative;
}
.internal-embed .bases-canvas-view {
min-height: 400px;
}
.bases-view[data-view-type^="canvas-"] {
scrollbar-gutter: unset;
padding: 0;
}
.internal-embed .bases-view {
min-height: 400px;
min-width: 100%;
}
.bases-canvas-view.is-sidebar-collapsed {
gap: 0;
}
.bases-canvas-view.is-sidebar-collapsed .bases-canvas-sidebar {
transform: translateX(-100%);
}
.bases-canvas-sidebar {
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 240px;
z-index: 10;
overflow-y: auto;
padding: var(--size-4-2) 0;
border-right: 1px solid var(--background-modifier-border);
background-color: var(--background-primary);
box-shadow: 2px 0 5px rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease;
}
.bases-canvas-controls {
display: flex;
align-items: center;
justify-content: flex-end;
gap: var(--size-4-2);
padding: 0 var(--size-4-2) var(--size-4-2);
}
.bases-canvas-control {
padding: var(--size-4-1) var(--size-4-2);
border-radius: var(--radius-s);
border: 1px solid var(--background-modifier-border);
background-color: transparent;
color: var(--text-normal);
cursor: pointer;
font-size: var(--font-ui-small);
}
.bases-canvas-control:hover:not([disabled]) {
background-color: var(--background-modifier-hover);
}
.bases-canvas-control[disabled] {
opacity: 0.5;
cursor: not-allowed;
}
.bases-canvas-entry {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--size-4-2);
padding: var(--size-4-2) var(--size-4-4);
cursor: pointer;
border-radius: var(--radius-s);
min-width: 0; /* 允许 flex 子元素缩小 */
}
.bases-canvas-entry-text {
flex: 1;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
min-width: 0; /* 允许文本缩小 */
}
.bases-canvas-entry:is(:hover, .is-active) {
background-color: var(--background-modifier-hover);
}
.bases-canvas-entry.is-imported {
color: var(--text-muted);
}
.bases-canvas-entry-status {
padding: 0 var(--size-4-1);
border-radius: var(--radius-s);
font-size: var(--font-ui-small);
color: var(--text-muted);
}
.bases-canvas-stage {
width: 100%;
overflow: hidden;
display: flex;
flex-direction: column;
}
.bases-canvas-sidebar-toggle {
position: absolute;
top: var(--size-4-2);
left: var(--size-4-2);
z-index: 15;
padding: var(--size-4-1) var(--size-4-2);
border-radius: var(--radius-s);
color: var(--text-normal);
cursor: pointer;
font-size: var(--font-ui-small);
background-color: var(--background-primary);
border: 1px solid var(--background-modifier-border);
transition: left 0.3s ease;
}
.bases-canvas-sidebar-toggle:hover {
background-color: var(--background-modifier-hover);
}
.bases-canvas-host {
flex: 1;
position: relative;
}
.bases-canvas-host.is-hidden {
display: none;
}
.bases-canvas-message {
display: flex;
align-items: center;
justify-content: center;
color: var(--text-muted);
font-size: var(--font-ui-medium);
text-align: center;
padding: 0 var(--size-4-4);
width: 100%;
height: 100%;
}
.bases-canvas-message.is-hidden {
display: none;
}
.bases-canvas-embed {
position: absolute;
inset: 0;
min-width: 600px;
min-height: 400px;
}
.bases-canvas-empty {
color: var(--text-faint);
font-size: var(--font-ui-small);
padding: var(--size-4-2) var(--size-4-4);
}
/* 为 Obsidian 嵌入场景添加最小尺寸约束 */
.internal-embed.bases-embed,
.internal-embed .bases-canvas-embed,
.interactive-child .bases-canvas-embed {
min-width: 600px;
min-height: 400px;
}
/* ==================== Canvas List View Styles ==================== */
.canvas-list-view-container {
display: flex;
flex-direction: column;
height: 100%;
overflow: hidden;
}
.canvas-list-view-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 16px 20px;
border-bottom: 1px solid var(--background-modifier-border);
flex-shrink: 0;
background-color: var(--background-secondary);
}
.canvas-list-view-header .search-input-container {
flex: 1;
}
.canvas-list-view-title-container {
flex: 1;
}
.canvas-list-view-title {
margin: 0;
font-size: 20px;
font-weight: 600;
color: var(--text-normal);
}
.canvas-list-view-actions {
display: flex;
gap: 8px;
align-items: center;
}
.canvas-list-view-action-btn {
padding: 6px 10px;
border-radius: var(--radius-s);
border: 1px solid var(--background-modifier-border);
background-color: transparent;
color: var(--text-normal);
cursor: pointer;
transition: background-color 0.2s ease;
}
.canvas-list-view-action-btn:hover {
background-color: var(--background-modifier-hover);
}
.canvas-list-view-search {
padding: 12px 20px;
border-bottom: 1px solid var(--background-modifier-border);
flex-shrink: 0;
}
.canvas-list-view-content {
flex: 1;
overflow-y: auto;
overflow-x: hidden;
}
.canvas-list-view-loading,
.canvas-list-view-empty,
.canvas-list-view-error {
display: flex;
align-items: center;
justify-content: center;
padding: 40px 20px;
color: var(--text-muted);
text-align: center;
font-size: 14px;
}
.canvas-list-view-error {
color: var(--text-error);
}
/* ==================== Canvas Node List View Styles ==================== */
.canvas-node-list-view {
display: flex;
flex-direction: column;
height: 100%;
overflow: hidden;
padding: 0;
}
.canvas-node-list-view-header-section {
display: flex;
flex-direction: column;
gap: 4px;
padding: 4px 16px;
border-bottom: 1px solid var(--background-modifier-border);
background-color: var(--background-secondary);
flex-shrink: 0;
}
.canvas-node-list-view-search-wrapper {
width: 100%;
}
.canvas-node-list-view-filter-wrapper {
width: 100%;
}
.canvas-node-list-view-content {
flex: 1;
overflow-y: auto;
overflow-x: hidden;
min-height: 0;
}
.canvas-node-list-container {
width: 100%;
min-height: 100%;
position: relative;
}
/* ==================== Search Bar Styles ==================== */
.search-bar-container {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 12px;
border: 1px solid var(--background-modifier-border);
border-radius: var(--radius-m);
background-color: var(--background-primary);
transition: border-color 0.2s ease;
width: 100%;
}
.search-bar-container:focus-within {
border-color: var(--interactive-accent);
box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.05);
}
.search-bar-icon {
flex-shrink: 0;
color: var(--text-muted);
display: flex;
align-items: center;
}
.search-bar-input {
flex: 1;
border: none;
background: transparent;
color: var(--text-normal);
font-size: 14px;
outline: none;
}
.search-bar-input::placeholder {
color: var(--text-muted);
}
.search-bar-clear {
flex-shrink: 0;
cursor: pointer;
color: var(--text-muted);
display: flex;
align-items: center;
transition: color 0.2s ease;
}
.search-bar-clear:hover {
color: var(--text-normal);
}
.canvas-list-view .search-input-container {
margin-left: var(--size-4-4);
margin-right: var(--size-4-4);
}
/* ==================== Filter Bar Styles ==================== */
.filter-bar-container {
display: flex;
flex-direction: row;
}
.filter-bar-type-section {
display: flex;
gap: 8px;
flex-wrap: wrap;
align-items: center;
width: 100%;
flex: 1;
}
.filter-bar-type-section button.filter-button {
display: flex !important;
align-items: center;
gap: 6px;
padding: 6px 12px !important;
border-radius: var(--radius-s);
border: 1px solid var(--background-modifier-border) !important;
background-color: var(--background-primary) !important;
color: var(--text-normal) !important;
cursor: pointer;
font-size: 13px;
transition: all 0.2s ease;
white-space: nowrap;
box-shadow: none !important;
margin: 0;
}
.filter-bar-type-section button.filter-button:hover {
background-color: var(--background-modifier-hover) !important;
border-color: var(--interactive-accent) !important;
}
.filter-bar-type-section button.filter-button.is-active {
background-color: var(--interactive-accent) !important;
color: var(--text-on-accent) !important;
border-color: var(--interactive-accent) !important;
font-weight: 500;
box-shadow: none !important;
}
.filter-button-icon {
display: flex;
align-items: center;
flex-shrink: 0;
}
.filter-button-label {
font-weight: 500;
}
/* ==================== Color Filter Styles ==================== */
.filter-bar-color-section {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
margin-left: 12px;
padding-left: 12px;
border-left: 1px solid var(--background-modifier-border);
}
/* Use Obsidian's native canvas color picker styles */
.filter-bar-color-section .canvas-color-picker-item.is-active {
outline: 2px solid var(--interactive-accent) !important;
outline-offset: 2px !important;
}
/* ==================== Canvas Card Styles ==================== */
.canvas-card {
background-color: var(--background-primary);
border: 1px solid var(--background-modifier-border);
border-radius: var(--radius-m);
overflow: hidden;
cursor: pointer;
transition: all 0.2s ease;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
.canvas-card:hover {
border-color: var(--interactive-accent);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
transform: translateY(-2px);
}
.canvas-card.is-pinned {
border-color: var(--color-accent);
background-color: var(--background-primary-alt);
}
.canvas-card-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: var(--size-2-3) var(--size-4-3);
border-bottom: 1px solid var(--background-modifier-border);
gap: 8px;
}
.canvas-card-title {
flex: 1;
font-size: 15px;
font-weight: 600;
color: var(--text-normal);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.canvas-card-pin-icon {
opacity: 0;
flex-shrink: 0;
color: var(--text-muted);
cursor: pointer;
display: flex;
align-items: center;
padding: 4px;
border-radius: var(--radius-s);
transition: all 0.2s ease;
}
.canvas-card-pin-icon:hover {
background-color: var(--background-modifier-hover);
color: var(--text-normal);
}
.canvas-card:hover .canvas-card-pin-icon {
opacity: 1;
}
.canvas-card.is-pinned .canvas-card-pin-icon {
color: var(--color-accent);
opacity: 1;
}
.canvas-card-preview {
position: relative;
width: 100%;
height: 180px;
overflow: hidden;
background-color: var(--background-secondary);
padding-top: var(--size-4-3);
}
.canvas-preview-container {
position: relative;
width: 100%;
height: 100%;
display: flex;
align-items: stretch;
justify-content: stretch;
overflow: hidden;
}
.canvas-preview-placeholder,
.canvas-preview-error {
color: var(--text-muted);
font-size: 13px;
text-align: center;
margin: auto;
}
.canvas-svg-preview {
width: 100%;
height: 100%;
display: block;
flex: 1 1 auto;
}
.canvas-svg-preview-node rect {
rx: var(--radius-s);
ry: var(--radius-s);
transition: transform 120ms ease, stroke 120ms ease;
fill: var(--background-modifier-border);
}
.canvas-svg-preview-node.is-interactive {
cursor: pointer;
}
.canvas-svg-preview-node.is-interactive:hover rect {
transform: translateY(-1px);
stroke: var(--interactive-accent);
}
/* Highlighted nodes (matching search query) */
.canvas-svg-preview-node.is-highlighted rect {
stroke: var(--interactive-accent);
stroke-width: 3;
filter: drop-shadow(0 0 4px var(--interactive-accent));
opacity: 1;
}
.canvas-svg-preview-node-label {
font-size: 12px;
fill: var(--text-normal);
pointer-events: none;
}
.canvas-svg-preview-edge {
stroke-width: 1.5;
opacity: 0.65;
}
.canvas-svg-preview-edge-label {
font-size: 11px;
fill: var(--text-muted);
text-anchor: middle;
pointer-events: none;
}
.canvas-svg-preview-popover {
max-width: 320px;
max-height: 260px;
overflow: auto;
padding: 8px 10px;
font-size: 12px;
line-height: 1.4;
white-space: normal;
}
.canvas-svg-preview-popover.is-loading {
opacity: 1;
}
.canvas-svg-preview-popover-content > :first-child {
margin-top: 0;
}
.canvas-svg-preview-popover-content > :last-child {
margin-bottom: 0;
}
.canvas-card-footer {
padding: 10px 16px;
font-size: 12px;
color: var(--text-muted);
background-color: var(--background-secondary);
display: flex;
justify-content: space-between;
align-items: center;
}
.canvas-card-footer-left {
/* Left side: total node count */
}
.canvas-card-footer-right {
/* Right side: matched node count */
color: var(--interactive-accent);
font-weight: 500;
}
/* ==================== Node Card Styles ==================== */
.node-card {
background-color: var(--background-primary);
border: 1px solid var(--background-modifier-border);
border-radius: var(--radius-m);
overflow: hidden;
cursor: pointer;
transition: all 0.2s ease;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
display: flex;
flex-direction: column;
max-height: 600px;
}
.node-card:hover {
border-color: var(--interactive-accent);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
transform: translateY(-2px);
}
.node-card.is-pinned {
border-color: var(--color-accent);
background-color: var(--background-primary-alt);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}
.node-card-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: var(--size-2-2) var(--size-4-3);
border-bottom: 1px solid var(--background-modifier-border);
background-color: var(--background-secondary);
}
.node-card:hover .node-card-pin-icon {
opacity: 1;
}
.node-card-type-badge {
display: flex;
align-items: center;
gap: 6px;
padding: 4px 8px;
border-radius: var(--radius-s);
font-size: 12px;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.node-card-type-badge-file {
background-color: rgba(91, 141, 239, 0.15);
color: #5b8def;
}
.node-card-type-badge-text {
background-color: rgba(108, 191, 125, 0.15);
color: #6cbf7d;
}
.node-card-type-badge-group {
background-color: rgba(157, 123, 230, 0.15);
color: #9d7be6;
}
.node-card-type-badge-link {
background-color: rgba(241, 168, 91, 0.15);
color: #f1a85b;
}
.node-card-icon {
flex-shrink: 0;
display: flex;
align-items: center;
width: 16px;
height: 16px;
}
.node-card-type-label {
font-size: 11px;
font-weight: 600;
}
.node-card-pin-icon {
flex-shrink: 0;
color: var(--text-muted);
cursor: pointer;
display: flex;
align-items: center;
padding: 6px;
border-radius: var(--radius-s);
transition: all 0.2s ease;
opacity: 0;
}
.node-card-pin-icon:hover {
background-color: var(--background-modifier-hover);
color: var(--text-normal);
}
.node-card.is-pinned .node-card-pin-icon {
color: var(--color-accent);
}
.node-card-content {
padding: 16px;
flex: 1;
min-height: 60px;
overflow-y: auto;
}
.node-card-content:has(.special-node) {
padding: 0;
}
.node-card-content-inner {
color: var(--text-normal);
font-size: 14px;
line-height: 1.6;
word-wrap: break-word;
}
.node-card-content-inner > * {
margin: 0;
}
.node-card-content-inner > * + * {
margin-top: 8px;
}
.node-card-content-inner p {
margin: 0;
}
.node-card-content-inner ul,
.node-card-content-inner ol {
margin: 0;
padding-left: 20px;
}
.node-card-content-inner code {
font-size: 13px;
background-color: var(--background-secondary);
padding: 2px 4px;
border-radius: var(--radius-s);
}
.node-card-content-inner pre {
margin: 0;
padding: 8px;
background-color: var(--background-secondary);
border-radius: var(--radius-s);
overflow-x: auto;
}
.node-card-content-inner pre code {
background-color: transparent;
padding: 0;
}
.node-card-file-link {
color: var(--text-accent);
font-weight: 500;
text-decoration: none;
display: inline-flex;
align-items: center;
gap: 4px;
}
.node-card-file-link:hover {
text-decoration: underline;
}
.node-card-footer {
padding: 10px 16px;
font-size: 12px;
color: var(--text-muted);
background-color: var(--background-secondary);
border-top: 1px solid var(--background-modifier-border);
}
.node-card-source {
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* Node type specific background accents */
.node-card-file .node-card-content {
background-color: rgba(91, 141, 239, 0.02);
}
.node-card-text .node-card-content {
background-color: rgba(108, 191, 125, 0.02);
}
.node-card-group .node-card-content {
background-color: rgba(157, 123, 230, 0.02);
}
.node-card-link .node-card-content {
background-color: rgba(241, 168, 91, 0.02);
}
.canvas-svg-preview-popover {
max-height: 500px;
}
/* ==================== Responsive Design ==================== */
@media (max-width: 768px) {
.canvas-list-view-header,
.canvas-node-list-view-header {
flex-direction: column;
align-items: flex-start;
gap: 12px;
}
.canvas-list-view-title,
.canvas-node-list-view-title {
font-size: 18px;
}
.canvas-card-preview {
height: 140px;
}
.filter-bar-type-section {
gap: 6px;
}
.filter-bar-type-section button.filter-button {
padding: 5px 10px !important;
font-size: 12px;
}
}
+20876
View File
File diff suppressed because one or more lines are too long
+11
View File
@@ -0,0 +1,11 @@
{
"id": "dataview",
"name": "Dataview",
"version": "0.5.68",
"minAppVersion": "0.13.11",
"description": "Complex data views for the data-obsessed.",
"author": "Michael Brenan <blacksmithgu@gmail.com>",
"authorUrl": "https://github.com/blacksmithgu",
"helpUrl": "https://blacksmithgu.github.io/obsidian-dataview/",
"isDesktopOnly": false
}
+141
View File
@@ -0,0 +1,141 @@
.block-language-dataview {
overflow-y: auto;
}
/*****************/
/** Table Views **/
/*****************/
/* List View Default Styling; rendered internally as a table. */
.table-view-table {
width: 100%;
}
.table-view-table > thead > tr, .table-view-table > tbody > tr {
margin-top: 1em;
margin-bottom: 1em;
text-align: left;
}
.table-view-table > tbody > tr:hover {
background-color: var(--table-row-background-hover);
}
.table-view-table > thead > tr > th {
font-weight: 700;
font-size: larger;
border-top: none;
border-left: none;
border-right: none;
border-bottom: solid;
max-width: 100%;
}
.table-view-table > tbody > tr > td {
text-align: left;
border: none;
font-weight: 400;
max-width: 100%;
}
.table-view-table ul, .table-view-table ol {
margin-block-start: 0.2em !important;
margin-block-end: 0.2em !important;
}
/** Rendered value styling for any view. */
.dataview-result-list-root-ul {
padding: 0em !important;
margin: 0em !important;
}
.dataview-result-list-ul {
margin-block-start: 0.2em !important;
margin-block-end: 0.2em !important;
}
/** Generic grouping styling. */
.dataview.result-group {
padding-left: 8px;
}
/*******************/
/** Inline Fields **/
/*******************/
.dataview.inline-field-key {
padding-left: 8px;
padding-right: 8px;
font-family: var(--font-monospace);
background-color: var(--background-primary-alt);
color: var(--nav-item-color-selected);
}
.dataview.inline-field-value {
padding-left: 8px;
padding-right: 8px;
font-family: var(--font-monospace);
background-color: var(--background-secondary-alt);
color: var(--nav-item-color-selected);
}
.dataview.inline-field-standalone-value {
padding-left: 8px;
padding-right: 8px;
font-family: var(--font-monospace);
background-color: var(--background-secondary-alt);
color: var(--nav-item-color-selected);
}
/***************/
/** Task View **/
/***************/
.dataview.task-list-item, .dataview.task-list-basic-item {
margin-top: 3px;
margin-bottom: 3px;
transition: 0.4s;
}
.dataview.task-list-item:hover, .dataview.task-list-basic-item:hover {
background-color: var(--text-selection);
box-shadow: -40px 0 0 var(--text-selection);
cursor: pointer;
}
/*****************/
/** Error Views **/
/*****************/
div.dataview-error-box {
width: 100%;
min-height: 150px;
display: flex;
align-items: center;
justify-content: center;
border: 4px dashed var(--background-secondary);
}
.dataview-error-message {
color: var(--text-muted);
text-align: center;
}
/*************************/
/** Additional Metadata **/
/*************************/
.dataview.small-text {
font-size: smaller;
color: var(--text-muted);
margin-left: 3px;
}
.dataview.small-text::before {
content: "(";
}
.dataview.small-text::after {
content: ")";
}
File diff suppressed because one or more lines are too long
+9
View File
@@ -0,0 +1,9 @@
{
"id": "bases-kanban",
"name": "Bases Kanban",
"version": "0.1.1",
"minAppVersion": "1.10.0",
"description": "Adds a kanban layout to Bases.",
"author": "ewerx",
"isDesktopOnly": false
}
+490
View File
@@ -0,0 +1,490 @@
/*
* Bases Kanban Plugin Styles
*/
/* CSS Variables for theming */
body {
--kanban-column-width: 280px;
--kanban-column-gap: var(--size-4-3);
--kanban-card-gap: var(--size-4-2);
--kanban-column-bg: var(--background-secondary);
--kanban-card-bg: var(--background-primary);
--kanban-card-border: var(--background-modifier-border);
--kanban-header-color: var(--text-muted);
}
/* Main container - no vertical overflow, only horizontal */
.bases-kanban-container {
width: 100%;
height: 100%;
overflow: hidden;
padding: var(--size-4-3);
display: flex;
flex-direction: column;
}
/* Placeholder message */
.bases-kanban-placeholder {
color: var(--text-muted);
font-style: italic;
padding: var(--size-4-4);
text-align: center;
}
/* Kanban board - horizontal scroll only */
.bases-kanban-board {
display: flex;
gap: var(--kanban-column-gap);
height: 100%;
overflow-x: auto;
overflow-y: hidden;
padding-bottom: var(--size-4-3);
flex: 1;
min-height: 0; /* Important for flex children to shrink */
}
/* Individual column - fixed height, internal scroll */
.bases-kanban-column {
flex: 0 0 var(--kanban-column-width);
min-width: var(--kanban-column-width);
max-width: var(--kanban-column-width);
background-color: var(--kanban-column-bg);
border-radius: var(--radius-m);
display: flex;
flex-direction: column;
height: 100%;
overflow: hidden;
}
/* Column header - always visible at top */
.bases-kanban-column-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: var(--size-4-2) var(--size-4-3);
border-bottom: 1px solid var(--background-modifier-border);
background-color: var(--kanban-column-bg);
border-radius: var(--radius-m) var(--radius-m) 0 0;
flex-shrink: 0;
}
.bases-kanban-header-left {
display: flex;
align-items: center;
gap: var(--size-4-2);
min-width: 0;
flex: 1;
}
.bases-kanban-header-actions {
display: flex;
align-items: center;
gap: var(--size-2-1);
flex-shrink: 0;
}
.bases-kanban-column-header h3 {
margin: 0;
font-size: var(--font-ui-medium);
font-weight: var(--font-semibold);
color: var(--text-normal);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.bases-kanban-no-value-title {
color: var(--text-muted);
font-style: italic;
}
.bases-kanban-column-count {
font-size: var(--font-ui-smaller);
color: var(--kanban-header-color);
background-color: var(--background-modifier-hover);
padding: 2px 8px;
border-radius: var(--radius-s);
flex-shrink: 0;
}
/* Header action buttons */
.bases-kanban-add-card-btn,
.bases-kanban-set-property-btn {
padding: var(--size-2-1);
border-radius: var(--radius-s);
opacity: 0.7;
transition: opacity 0.15s ease, background-color 0.15s ease;
}
.bases-kanban-add-card-btn:hover,
.bases-kanban-set-property-btn:hover {
opacity: 1;
background-color: var(--background-modifier-hover);
}
.bases-kanban-set-property-btn {
color: var(--text-accent);
}
/* Cards container - scrolls independently */
.bases-kanban-cards {
flex: 1;
overflow-y: auto;
overflow-x: hidden;
padding: var(--size-4-2);
display: flex;
flex-direction: column;
gap: var(--kanban-card-gap);
min-height: 0; /* Important for scroll to work */
}
/* Individual card */
.bases-kanban-card {
background-color: var(--kanban-card-bg);
border: 1px solid var(--kanban-card-border);
border-radius: var(--radius-s);
padding: var(--size-4-2) var(--size-4-3);
cursor: pointer;
transition: box-shadow 0.15s ease, border-color 0.15s ease;
}
.bases-kanban-card:hover {
border-color: var(--background-modifier-border-hover);
box-shadow: var(--shadow-s);
}
/* Card title */
.bases-kanban-card-title {
font-size: var(--font-ui-small);
font-weight: var(--font-medium);
color: var(--text-normal);
}
.bases-kanban-card-title a {
color: var(--text-normal);
text-decoration: none;
}
.bases-kanban-card-title a:hover {
color: var(--text-accent);
text-decoration: underline;
}
/* Card properties */
.bases-kanban-card-properties {
margin-top: var(--size-4-2);
display: flex;
flex-direction: column;
gap: var(--size-2-1);
}
.bases-kanban-property-row {
display: flex;
align-items: center;
gap: var(--size-2-2);
font-size: var(--font-ui-smaller);
color: var(--text-muted);
}
.bases-kanban-property-icon {
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
width: 14px;
height: 14px;
--icon-size: 14px;
opacity: 0.7;
}
.bases-kanban-property-value {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
line-height: 1.3;
}
/* Add column button */
.bases-kanban-add-column {
flex: 0 0 var(--kanban-column-width);
min-width: var(--kanban-column-width);
max-width: var(--kanban-column-width);
display: flex;
align-items: flex-start;
justify-content: center;
padding-top: var(--size-4-2);
}
.bases-kanban-add-column-btn {
display: flex;
align-items: center;
gap: var(--size-2-2);
padding: var(--size-4-2) var(--size-4-3);
border-radius: var(--radius-m);
background-color: transparent;
border: 2px dashed var(--background-modifier-border);
color: var(--text-muted);
cursor: pointer;
transition: all 0.15s ease;
font-size: var(--font-ui-small);
width: 100%;
justify-content: center;
}
.bases-kanban-add-column-btn:hover {
background-color: var(--background-modifier-hover);
border-color: var(--text-muted);
color: var(--text-normal);
}
/* View container styling for Bases */
.bases-view[data-view-type="kanban"] {
--bases-view-padding: 0;
}
/* Embedded view height */
.bases-embed .bases-kanban-container,
.block-language-base .bases-kanban-container {
min-height: 300px;
max-height: 500px;
}
/* Full page view */
.workspace-leaf-content[data-type="bases"] .bases-kanban-container {
height: 100%;
}
/* Scrollbar styling for cards container */
.bases-kanban-cards::-webkit-scrollbar {
width: 6px;
}
.bases-kanban-cards::-webkit-scrollbar-track {
background: transparent;
}
.bases-kanban-cards::-webkit-scrollbar-thumb {
background-color: var(--scrollbar-thumb-bg);
border-radius: 3px;
}
.bases-kanban-cards::-webkit-scrollbar-thumb:hover {
background-color: var(--scrollbar-active-thumb-bg);
}
/* Scrollbar for board horizontal scroll */
.bases-kanban-board::-webkit-scrollbar {
height: 8px;
}
.bases-kanban-board::-webkit-scrollbar-track {
background: transparent;
}
.bases-kanban-board::-webkit-scrollbar-thumb {
background-color: var(--scrollbar-thumb-bg);
border-radius: 4px;
}
.bases-kanban-board::-webkit-scrollbar-thumb:hover {
background-color: var(--scrollbar-active-thumb-bg);
}
/* Modal styles */
.bases-kanban-modal {
max-width: 400px;
}
.bases-kanban-modal h3 {
margin: 0 0 var(--size-4-3) 0;
}
.bases-kanban-modal h4 {
margin: var(--size-4-3) 0 var(--size-4-2) 0;
font-size: var(--font-ui-small);
color: var(--text-muted);
}
.bases-kanban-add-column-modal {
max-width: 500px;
}
.bases-kanban-file-list {
max-height: 300px;
overflow-y: auto;
border: 1px solid var(--background-modifier-border);
border-radius: var(--radius-s);
padding: var(--size-4-2);
margin-bottom: var(--size-4-3);
}
.bases-kanban-file-item {
display: flex;
align-items: center;
gap: var(--size-4-2);
padding: var(--size-2-2) 0;
}
.bases-kanban-file-item:not(:last-child) {
border-bottom: 1px solid var(--background-modifier-border);
}
.bases-kanban-file-item label {
cursor: pointer;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.bases-kanban-file-item input[type="checkbox"] {
flex-shrink: 0;
}
/* ==================== Drag & Drop Styles ==================== */
/* Drag handle in column header */
.bases-kanban-drag-handle {
display: flex;
align-items: center;
justify-content: center;
width: 16px;
height: 16px;
--icon-size: 14px;
color: var(--text-faint);
opacity: 0;
cursor: grab;
transition: opacity 0.15s ease, color 0.15s ease;
flex-shrink: 0;
margin-right: var(--size-2-1);
}
.bases-kanban-column-header:hover .bases-kanban-drag-handle {
opacity: 1;
}
.bases-kanban-drag-handle:hover {
color: var(--text-muted);
}
.bases-kanban-drag-handle:active {
cursor: grabbing;
}
/* Draggable elements */
.bases-kanban-draggable {
cursor: grab;
}
.bases-kanban-draggable:active {
cursor: grabbing;
}
/* Element being dragged */
.bases-kanban-dragging {
opacity: 0.5;
transform: scale(0.98);
box-shadow: var(--shadow-l);
}
.bases-kanban-column.bases-kanban-dragging {
background-color: var(--background-secondary-alt);
}
.bases-kanban-card.bases-kanban-dragging {
background-color: var(--background-primary-alt);
}
/* Drag over state for columns */
.bases-kanban-column.bases-kanban-drag-over {
background-color: var(--background-modifier-hover);
outline: 2px dashed var(--interactive-accent);
outline-offset: -2px;
}
/* Cards container drop zone active */
.bases-kanban-cards.bases-kanban-drop-zone-active {
background-color: var(--background-modifier-hover);
outline: 2px dashed var(--interactive-accent);
outline-offset: -4px;
border-radius: var(--radius-s);
}
/* Drop indicator line */
.bases-kanban-drop-indicator {
position: absolute;
background-color: var(--interactive-accent);
border-radius: 2px;
pointer-events: none;
z-index: 100;
transition: top 0.1s ease, left 0.1s ease;
display: none;
/* Positioning via CSS custom properties */
top: var(--indicator-top);
left: var(--indicator-left);
width: var(--indicator-width);
height: var(--indicator-height);
}
.bases-kanban-drop-indicator.is-visible {
display: block;
}
/* Column drop indicator - vertical line */
.bases-kanban-drop-indicator-column {
width: 4px;
box-shadow: 0 0 8px var(--interactive-accent);
}
/* Card drop indicator - horizontal line */
.bases-kanban-drop-indicator-card {
height: 4px;
box-shadow: 0 0 8px var(--interactive-accent);
}
/* Make board position relative for absolute positioning of drop indicator */
.bases-kanban-board {
position: relative;
}
/* Make cards container position relative for card drop indicators */
.bases-kanban-cards {
position: relative;
}
/* Card draggable cursor */
.bases-kanban-card {
cursor: grab;
}
.bases-kanban-card:active {
cursor: grabbing;
}
/* Prevent text selection during drag */
.bases-kanban-board.dragging-active {
user-select: none;
}
/* Smooth transitions for cards and columns moving */
.bases-kanban-column {
transition: transform 0.2s ease, opacity 0.2s ease;
}
.bases-kanban-card {
transition: transform 0.15s ease, opacity 0.15s ease, box-shadow 0.15s ease,
border-color 0.15s ease;
}
/* Highlight effect when card/column is dropped */
@keyframes kanban-drop-highlight {
0% {
box-shadow: 0 0 0 3px var(--interactive-accent);
}
100% {
box-shadow: none;
}
}
.bases-kanban-just-dropped {
animation: kanban-drop-highlight 0.5s ease-out;
}
File diff suppressed because one or more lines are too long
+10
View File
@@ -0,0 +1,10 @@
{
"author": "Vinzent",
"authorUrl": "https://github.com/Vinzent03",
"id": "obsidian-git",
"name": "Git",
"description": "Integrate Git version control with automatic backup and other advanced features.",
"isDesktopOnly": false,
"fundingUrl": "https://ko-fi.com/vinzent",
"version": "2.37.1"
}
+23
View File
@@ -0,0 +1,23 @@
#!/bin/sh
PROMPT="$1"
TEMP_FILE="$OBSIDIAN_GIT_CREDENTIALS_INPUT"
cleanup() {
rm -f "$TEMP_FILE" "$TEMP_FILE.response"
}
trap cleanup EXIT
echo "$PROMPT" > "$TEMP_FILE"
while [ ! -e "$TEMP_FILE.response" ]; do
if [ ! -e "$TEMP_FILE" ]; then
echo "Trigger file got removed: Abort" >&2
exit 1
fi
sleep 0.1
done
RESPONSE=$(cat "$TEMP_FILE.response")
echo "$RESPONSE"
+705
View File
@@ -0,0 +1,705 @@
@keyframes loading {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.git-signs-gutter {
.cm-gutterElement {
/* Needed to align the sign properly for different line heigts. Such as
* when having a heading or list item.
*/
padding-top: 0 !important;
}
}
.workspace-leaf-content[data-type="git-view"] .button-border {
border: 2px solid var(--interactive-accent);
border-radius: var(--radius-s);
}
.workspace-leaf-content[data-type="git-view"] .view-content {
padding-left: 0;
padding-top: 0;
padding-right: 0;
}
.workspace-leaf-content[data-type="git-history-view"] .view-content {
padding-left: 0;
padding-top: 0;
padding-right: 0;
}
.loading {
overflow: hidden;
}
.loading > svg {
animation: 2s linear infinite loading;
transform-origin: 50% 50%;
display: inline-block;
}
.obsidian-git-center {
margin: auto;
text-align: center;
width: 50%;
}
.obsidian-git-textarea {
display: block;
margin-left: auto;
margin-right: auto;
}
.obsidian-git-disabled {
opacity: 0.5;
}
.obsidian-git-center-button {
display: block;
margin: 20px auto;
}
.tooltip.mod-left {
overflow-wrap: break-word;
}
.tooltip.mod-right {
overflow-wrap: break-word;
}
/* Limits the scrollbar to the view body */
.git-view {
display: flex;
flex-direction: column;
position: relative;
height: 100%;
}
.git-tools {
display: flex;
margin-left: auto;
}
.git-tools .type {
padding-left: var(--size-2-1);
display: flex;
align-items: center;
justify-content: center;
width: 11px;
}
.git-tools .type[data-type="M"] {
color: orange;
}
.git-tools .type[data-type="D"] {
color: red;
}
.git-tools .buttons {
display: flex;
}
.git-tools .buttons > * {
padding: 0 0;
height: auto;
}
.workspace-leaf-content[data-type="git-view"] .tree-item-self,
.workspace-leaf-content[data-type="git-history-view"] .tree-item-self {
align-items: center;
}
.workspace-leaf-content[data-type="git-view"]
.tree-item-self:hover
.clickable-icon,
.workspace-leaf-content[data-type="git-history-view"]
.tree-item-self:hover
.clickable-icon {
color: var(--icon-color-hover);
}
/* Highlight an item as active if it's diff is currently opened */
.is-active .git-tools .buttons > * {
color: var(--nav-item-color-active);
}
.git-author {
color: var(--text-accent);
}
.git-date {
color: var(--text-accent);
}
.git-ref {
color: var(--text-accent);
}
/* ====== diff2html ======
The following styles are adapted from the obsidian-version-history plugin by
@kometenstaub https://github.com/kometenstaub/obsidian-version-history-diff/blob/main/src/styles.scss
which itself is adapted from the diff2html library with the following original license:
https://github.com/rtfpessoa/diff2html/blob/master/LICENSE.md
Copyright 2014-2016 Rodrigo Fernandes https://rtfpessoa.github.io/
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
.theme-dark,
.theme-light {
--git-delete-bg: #ff475040;
--git-delete-hl: #96050a75;
--git-insert-bg: #68d36840;
--git-insert-hl: #23c02350;
--git-change-bg: #ffd55840;
--git-selected: #3572b0;
--git-delete: #c33;
--git-insert: #399839;
--git-change: #d0b44c;
--git-move: #3572b0;
}
.git-diff {
.d2h-d-none {
display: none;
}
.d2h-wrapper {
text-align: left;
border-radius: 0.25em;
overflow: auto;
}
.d2h-file-header.d2h-file-header {
background-color: var(--background-secondary);
border-bottom: 1px solid var(--background-modifier-border);
font-family:
Source Sans Pro,
Helvetica Neue,
Helvetica,
Arial,
sans-serif;
height: 35px;
padding: 5px 10px;
}
.d2h-file-header,
.d2h-file-stats {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.d2h-file-header {
display: none;
}
.d2h-file-stats {
font-size: 14px;
margin-left: auto;
}
.d2h-lines-added {
border: 1px solid var(--color-green);
border-radius: 5px 0 0 5px;
color: var(--color-green);
padding: 2px;
text-align: right;
vertical-align: middle;
}
.d2h-lines-deleted {
border: 1px solid var(--color-red);
border-radius: 0 5px 5px 0;
color: var(--color-red);
margin-left: 1px;
padding: 2px;
text-align: left;
vertical-align: middle;
}
.d2h-file-name-wrapper {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
font-size: 15px;
width: 100%;
}
.d2h-file-name {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: var(--text-normal);
font-size: var(--h5-size);
}
.d2h-file-wrapper {
border: 1px solid var(--background-secondary-alt);
border-radius: 3px;
margin-bottom: 1em;
max-height: 100%;
}
.d2h-file-collapse {
-webkit-box-pack: end;
-ms-flex-pack: end;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
border: 1px solid var(--background-secondary-alt);
border-radius: 3px;
cursor: pointer;
display: none;
font-size: 12px;
justify-content: flex-end;
padding: 4px 8px;
}
.d2h-file-collapse.d2h-selected {
background-color: var(--git-selected);
}
.d2h-file-collapse-input {
margin: 0 4px 0 0;
}
.d2h-diff-table {
border-collapse: collapse;
font-family: var(--font-monospace);
font-size: var(--code-size);
width: 100%;
}
.d2h-files-diff {
width: 100%;
}
.d2h-file-diff {
/*
overflow-y: scroll;
*/
border-radius: 5px;
font-size: var(--font-text-size);
line-height: var(--line-height-normal);
}
.d2h-file-side-diff {
display: inline-block;
margin-bottom: -8px;
margin-right: -4px;
overflow-x: scroll;
overflow-y: hidden;
width: 50%;
}
.d2h-code-line {
padding-left: 6em;
padding-right: 1.5em;
}
.d2h-code-line,
.d2h-code-side-line {
display: inline-block;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
white-space: nowrap;
width: 100%;
}
.d2h-code-side-line {
/* needed to be changed */
padding-left: 0.5em;
padding-right: 0.5em;
}
.d2h-code-line-ctn {
word-wrap: normal;
background: none;
display: inline-block;
padding: 0;
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
vertical-align: middle;
width: 100%;
/* only works for line-by-line */
white-space: pre-wrap;
}
.d2h-code-line del,
.d2h-code-side-line del {
background-color: var(--git-delete-hl);
color: var(--text-normal);
}
.d2h-code-line del,
.d2h-code-line ins,
.d2h-code-side-line del,
.d2h-code-side-line ins {
border-radius: 0.2em;
display: inline-block;
margin-top: -1px;
text-decoration: none;
vertical-align: middle;
}
.d2h-code-line ins,
.d2h-code-side-line ins {
background-color: var(--git-insert-hl);
text-align: left;
}
.d2h-code-line-prefix {
word-wrap: normal;
background: none;
display: inline;
padding: 0;
white-space: pre;
}
.line-num1 {
float: left;
}
.line-num1,
.line-num2 {
-webkit-box-sizing: border-box;
box-sizing: border-box;
overflow: hidden;
/*
padding: 0 0.5em;
*/
text-overflow: ellipsis;
width: 2.5em;
padding-left: 0;
}
.line-num2 {
float: right;
}
.d2h-code-linenumber {
background-color: var(--background-primary);
border: solid var(--background-modifier-border);
border-width: 0 1px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: var(--text-faint);
cursor: pointer;
display: inline-block;
position: absolute;
text-align: right;
width: 5.5em;
}
.d2h-code-linenumber:after {
content: "\200b";
}
.d2h-code-side-linenumber {
background-color: var(--background-primary);
border: solid var(--background-modifier-border);
border-width: 0 1px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: var(--text-faint);
cursor: pointer;
overflow: hidden;
padding: 0 0.5em;
text-align: right;
text-overflow: ellipsis;
width: 4em;
/* needed to be changed */
display: table-cell;
position: relative;
}
.d2h-code-side-linenumber:after {
content: "\200b";
}
.d2h-code-side-emptyplaceholder,
.d2h-emptyplaceholder {
background-color: var(--background-primary);
border-color: var(--background-modifier-border);
}
.d2h-code-line-prefix,
.d2h-code-linenumber,
.d2h-code-side-linenumber,
.d2h-emptyplaceholder {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.d2h-code-linenumber,
.d2h-code-side-linenumber {
direction: rtl;
}
.d2h-del {
background-color: var(--git-delete-bg);
border-color: var(--git-delete-hl);
}
.d2h-ins {
background-color: var(--git-insert-bg);
border-color: var(--git-insert-hl);
}
.d2h-info {
background-color: var(--background-primary);
border-color: var(--background-modifier-border);
color: var(--text-faint);
}
.d2h-del,
.d2h-ins,
.d2h-file-diff .d2h-change {
color: var(--text-normal);
}
.d2h-file-diff .d2h-del.d2h-change {
background-color: var(--git-change-bg);
}
.d2h-file-diff .d2h-ins.d2h-change {
background-color: var(--git-insert-bg);
}
.d2h-file-list-wrapper {
a {
text-decoration: none;
cursor: default;
-webkit-user-drag: none;
}
svg {
display: none;
}
}
.d2h-file-list-header {
text-align: left;
}
.d2h-file-list-title {
display: none;
}
.d2h-file-list-line {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
text-align: left;
}
.d2h-file-list {
}
.d2h-file-list > li {
border-bottom: 1px solid var(--background-modifier-border);
margin: 0;
padding: 5px 10px;
}
.d2h-file-list > li:last-child {
border-bottom: none;
}
.d2h-file-switch {
cursor: pointer;
display: none;
font-size: 10px;
}
.d2h-icon {
fill: currentColor;
margin-right: 10px;
vertical-align: middle;
}
.d2h-deleted {
color: var(--git-delete);
}
.d2h-added {
color: var(--git-insert);
}
.d2h-changed {
color: var(--git-change);
}
.d2h-moved {
color: var(--git-move);
}
.d2h-tag {
background-color: var(--background-secondary);
display: -webkit-box;
display: -ms-flexbox;
display: flex;
font-size: 10px;
margin-left: 5px;
padding: 0 2px;
}
.d2h-deleted-tag {
border: 1px solid var(--git-delete);
}
.d2h-added-tag {
border: 1px solid var(--git-insert);
}
.d2h-changed-tag {
border: 1px solid var(--git-change);
}
.d2h-moved-tag {
border: 1px solid var(--git-move);
}
/* needed for line-by-line*/
.d2h-diff-tbody {
position: relative;
}
}
/* ====================== Line Authoring Information ====================== */
.cm-gutterElement.obs-git-blame-gutter {
/* Add background color to spacing inbetween and around the gutter for better aesthetics */
border-width: 0px 2px 0.2px 2px;
border-style: solid;
border-color: var(--background-secondary);
background-color: var(--background-secondary);
}
.cm-gutterElement.obs-git-blame-gutter > div,
.line-author-settings-preview {
/* delegate text color to settings */
color: var(--obs-git-gutter-text);
font-family: monospace;
height: 100%; /* ensure, that age-based background color occupies entire parent */
text-align: right;
padding: 0px 6px 0px 6px;
white-space: pre; /* Keep spaces and do not collapse them. */
}
@media (max-width: 800px) {
/* hide git blame gutter not to superpose text */
.cm-gutterElement.obs-git-blame-gutter {
display: none;
}
}
.git-unified-diff-view,
.git-split-diff-view .cm-deletedLine .cm-changedText {
background-color: #ee443330;
}
.git-unified-diff-view,
.git-split-diff-view .cm-insertedLine .cm-changedText {
background-color: #22bb2230;
}
.git-obscure-prompt[git-is-obscured="true"] #git-show-password:after {
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg>');
}
.git-obscure-prompt[git-is-obscured="false"] #git-show-password:after {
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye-off"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"></path><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"></path><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"></path><path d="m2 2 20 20"></path></svg>');
}
/* Override styling of Codemirror merge view "collapsed lines" indicator */
.git-split-diff-view .ͼ2 .cm-collapsedLines {
background: var(--interactive-normal);
border-radius: var(--radius-m);
color: var(--text-accent);
font-size: var(--font-small);
padding: var(--size-4-1) var(--size-4-1);
}
.git-split-diff-view .ͼ2 .cm-collapsedLines:hover {
background: var(--interactive-hover);
color: var(--text-accent-hover);
}
.git-signs-gutter {
.cm-gutterElement {
display: grid;
}
}
.git-gutter-marker:hover {
border-radius: 2px;
}
.git-gutter-marker.git-add {
background-color: var(--color-green);
justify-self: center;
height: inherit;
width: 0.2rem;
}
.git-gutter-marker.git-change {
background-color: var(--color-yellow);
justify-self: center;
height: inherit;
width: 0.2rem;
}
.git-gutter-marker.git-changedelete {
color: var(--color-yellow);
font-weight: var(--font-bold);
font-size: 1rem;
justify-self: center;
height: inherit;
}
.git-gutter-marker.git-delete {
background-color: var(--color-red);
height: 0.2rem;
width: 0.8rem;
align-self: end;
}
.git-gutter-marker.git-topdelete {
background-color: var(--color-red);
height: 0.2rem;
width: 0.8rem;
align-self: start;
}
div:hover > .git-gutter-marker.git-change {
width: 0.6rem;
}
div:hover > .git-gutter-marker.git-add {
width: 0.6rem;
}
div:hover > .git-gutter-marker.git-delete {
height: 0.6rem;
}
div:hover > .git-gutter-marker.git-topdelete {
height: 0.6rem;
}
div:hover > .git-gutter-marker.git-changedelete {
font-weight: var(--font-bold);
}
.git-gutter-marker.staged {
opacity: 0.5;
}
.git-diff {
.cm-merge-revert {
width: 4em;
}
/* Ensure that merge revert markers are positioned correctly */
.cm-merge-revert > * {
position: absolute;
background-color: var(--background-secondary);
display: flex;
}
}
/* Prevent shifting of the editor when git signs gutter is the only gutter present */
.cm-gutters.cm-gutters-before:has(> .git-signs-gutter:only-child) {
margin-inline-end: 0;
.git-signs-gutter {
margin-inline-start: -1rem;
}
}
.git-changes-status-bar-colored {
.git-add {
color: var(--color-green);
}
.git-change {
color: var(--color-yellow);
}
.git-delete {
color: var(--color-red);
}
}
.git-changes-status-bar .git-add {
margin-right: 0.3em;
}
.git-changes-status-bar .git-change {
margin-right: 0.3em;
}
File diff suppressed because one or more lines are too long
+11
View File
@@ -0,0 +1,11 @@
{
"id": "obsidian-kanban",
"name": "Kanban",
"version": "2.0.51",
"minAppVersion": "1.0.0",
"description": "Create markdown-backed Kanban boards in Obsidian.",
"author": "mgmeyers",
"authorUrl": "https://github.com/mgmeyers/obsidian-kanban",
"helpUrl": "https://publish.obsidian.md/kanban/Obsidian+Kanban+Plugin",
"isDesktopOnly": false
}
File diff suppressed because one or more lines are too long
+3
View File
@@ -0,0 +1,3 @@
{
"templater_folder": "template"
}
File diff suppressed because one or more lines are too long
+11
View File
@@ -0,0 +1,11 @@
{
"id": "templater-obsidian",
"name": "Templater",
"version": "2.18.1",
"description": "Create and use templates",
"minAppVersion": "1.5.0",
"author": "SilentVoid",
"authorUrl": "https://github.com/SilentVoid13",
"helpUrl": "https://silentvoid13.github.io/Templater/",
"isDesktopOnly": false
}
+226
View File
@@ -0,0 +1,226 @@
.templater_search {
width: calc(100% - 20px);
}
.templater_div {
border-top: 1px solid var(--background-modifier-border);
}
.templater_div > .setting-item {
border-top: none !important;
align-self: center;
}
.templater_div > .setting-item > .setting-item-control {
justify-content: space-around;
padding: 0;
width: 100%;
}
.templater_div
> .setting-item
> .setting-item-control
> .setting-editor-extra-setting-button {
align-self: center;
}
.templater_donating {
margin: 10px;
}
.templater_title {
margin: 0;
padding: 0;
margin-top: 5px;
text-align: center;
}
.templater_template {
align-self: center;
margin-left: 5px;
margin-right: 5px;
width: 70%;
}
.templater_cmd {
margin-left: 5px;
margin-right: 5px;
font-size: 14px;
width: 100%;
}
.templater_div2 > .setting-item {
align-content: center;
justify-content: center;
}
.templater-prompt-div,
.templater-multisuggester-div {
display: flex;
}
.templater-prompt-form {
display: flex;
flex-grow: 1;
}
.templater-prompt-input,
.templater-multisuggester-input {
flex-grow: 1;
}
.templater-button-div {
display: flex;
flex-direction: column;
align-items: center;
margin-top: 1rem;
}
textarea.templater-prompt-input {
height: 10rem;
}
textarea.templater-prompt-input:focus {
border-color: var(--interactive-accent);
}
.templater-multisuggester-list {
margin: 1.5em 0;
}
.cm-s-obsidian .templater-command-bg {
left: 0px;
right: 0px;
background-color: var(--background-primary-alt);
}
.cm-s-obsidian .cm-templater-command {
font-size: 0.85em;
font-family: var(--font-monospace);
line-height: 1.3;
}
.cm-s-obsidian .templater-inline .cm-templater-command {
background-color: var(--background-primary-alt);
}
.cm-s-obsidian .cm-templater-command.cm-templater-opening-tag {
font-weight: bold;
}
.cm-s-obsidian .cm-templater-command.cm-templater-closing-tag {
font-weight: bold;
}
.cm-s-obsidian .cm-templater-command.cm-templater-interpolation-tag {
color: var(--code-property, #008bff);
}
.cm-s-obsidian .cm-templater-command.cm-templater-execution-tag {
color: var(--code-function, #c0d700);
}
.cm-s-obsidian .cm-templater-command.cm-keyword {
color: var(--code-keyword, #00a7aa);
font-weight: normal;
}
.cm-s-obsidian .cm-templater-command.cm-atom {
color: var(--code-normal, #f39b35);
}
.cm-s-obsidian .cm-templater-command.cm-value,
.cm-s-obsidian .cm-templater-command.cm-number,
.cm-s-obsidian .cm-templater-command.cm-type {
color: var(--code-value, #a06fca);
}
.cm-s-obsidian .cm-templater-command.cm-def,
.cm-s-obsidian .cm-templater-command.cm-type.cm-def {
color: var(--code-normal, var(--text-normal));
}
.cm-s-obsidian .cm-templater-command.cm-property,
.cm-s-obsidian .cm-templater-command.cm-property.cm-def,
.cm-s-obsidian .cm-templater-command.cm-attribute {
color: var(--code-function, #98e342);
}
.cm-s-obsidian .cm-templater-command.cm-variable,
.cm-s-obsidian .cm-templater-command.cm-variable-2,
.cm-s-obsidian .cm-templater-command.cm-variable-3,
.cm-s-obsidian .cm-templater-command.cm-meta {
color: var(--code-property, #d4d4d4);
}
.cm-s-obsidian .cm-templater-command.cm-callee,
.cm-s-obsidian .cm-templater-command.cm-operator,
.cm-s-obsidian .cm-templater-command.cm-qualifier,
.cm-s-obsidian .cm-templater-command.cm-builtin {
color: var(--code-operator, #fc4384);
}
.cm-s-obsidian .cm-templater-command.cm-tag {
color: var(--code-tag, #fc4384);
}
.cm-s-obsidian .cm-templater-command.cm-comment,
.cm-s-obsidian .cm-templater-command.cm-comment.cm-tag,
.cm-s-obsidian .cm-templater-command.cm-comment.cm-attribute {
color: var(--code-comment, #696d70);
}
.cm-s-obsidian .cm-templater-command.cm-string,
.cm-s-obsidian .cm-templater-command.cm-string-2 {
color: var(--code-string, #e6db74);
}
.cm-s-obsidian .cm-templater-command.cm-header,
.cm-s-obsidian .cm-templater-command.cm-hr {
color: var(--code-keyword, #da7dae);
}
.cm-s-obsidian .cm-templater-command.cm-link {
color: var(--code-normal, #696d70);
}
.cm-s-obsidian .cm-templater-command.cm-error {
border-bottom: 1px solid #c42412;
}
.CodeMirror-hints {
position: absolute;
z-index: 10;
overflow: hidden;
list-style: none;
margin: 0;
padding: 2px;
-webkit-box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
border-radius: 3px;
border: 1px solid silver;
background: white;
font-size: 90%;
font-family: monospace;
max-height: 20em;
overflow-y: auto;
}
.CodeMirror-hint {
margin: 0;
padding: 0 4px;
border-radius: 2px;
white-space: pre;
color: black;
cursor: pointer;
}
li.CodeMirror-hint-active {
background: #08f;
color: white;
}
+90
View File
@@ -0,0 +1,90 @@
/* ========== Bases 表格可读性优化 ========== */
/* 适用:Bases 独立窗口 + 嵌入到笔记中的 Base */
/* 使用 Obsidian 主题变量,兼容深/浅色主题 */
/* ---- 作用域:Bases 独立窗口(data-type="bases"---- */
.workspace-leaf-content[data-type="bases"],
/* ---- 作用域:嵌入的 Base ---- */
.bases-embed,
.block-language-base {
/* 使用 Obsidian 内置表格变量,覆盖主题对 Bases 的干扰 */
--table-border-width: 1px;
--table-border-color: var(--background-modifier-border);
--table-header-background: var(--background-modifier-border);
--table-header-background-hover: var(--background-modifier-hover);
--table-header-color: var(--text-normal);
--table-row-alt-background: var(--background-secondary);
--table-row-alt-background-hover: var(--background-modifier-hover);
--table-row-background-hover: var(--background-modifier-hover);
}
/* ---- 表格视图专用(Table View---- */
.workspace-leaf-content[data-type="bases"] .bases-view[data-view-type="table"],
.bases-embed .bases-view[data-view-type="table"],
.block-language-base .bases-view[data-view-type="table"] {
--table-row-alt-background: var(--background-secondary);
}
/* ---- 直接作用于 Bases 容器内的 table ---- */
.workspace-leaf-content[data-type="bases"] table,
.bases-embed table,
.block-language-base table {
border-collapse: collapse;
border: 1px solid var(--background-modifier-border);
}
.workspace-leaf-content[data-type="bases"] thead,
.bases-embed thead,
.block-language-base thead {
background-color: var(--table-header-background) !important;
border-bottom: 2px solid var(--background-modifier-border-focus);
}
.workspace-leaf-content[data-type="bases"] thead th,
.bases-embed thead th,
.block-language-base thead th {
font-weight: 600;
padding: 8px 12px !important;
color: var(--table-header-color);
text-align: left;
border-right: 1px solid var(--background-modifier-border);
}
.workspace-leaf-content[data-type="bases"] thead th:last-child,
.bases-embed thead th:last-child,
.block-language-base thead th:last-child {
border-right: none;
}
/* 斑马纹 */
.workspace-leaf-content[data-type="bases"] tbody tr:nth-child(even),
.bases-embed tbody tr:nth-child(even),
.block-language-base tbody tr:nth-child(even) {
background-color: var(--table-row-alt-background) !important;
}
/* 悬停高亮 */
.workspace-leaf-content[data-type="bases"] tbody tr:hover td,
.bases-embed tbody tr:hover td,
.block-language-base tbody tr:hover td,
.workspace-leaf-content[data-type="bases"] tbody tr:hover td a,
.bases-embed tbody tr:hover td a,
.block-language-base tbody tr:hover td a {
background-color: var(--table-row-background-hover) !important;
}
.workspace-leaf-content[data-type="bases"] tbody td,
.bases-embed tbody td,
.block-language-base tbody td {
padding: 6px 12px !important;
border-right: 1px solid var(--background-modifier-border);
border-bottom: 1px solid var(--background-modifier-border);
}
.workspace-leaf-content[data-type="bases"] tbody td:last-child,
.bases-embed tbody td:last-child,
.block-language-base tbody td:last-child {
border-right: none;
}
+36
View File
@@ -0,0 +1,36 @@
/* ========== Dataview 表格专用样式 ========== */
/* 针对 block-language-dataview 和 table-view-table */
.block-language-dataview table,
table.table-view-table {
border-collapse: collapse;
}
.block-language-dataview thead th,
table.table-view-table thead th {
padding: 8px 12px !important;
font-weight: 600;
background-color: var(--background-modifier-border) !important;
border-bottom: 2px solid var(--background-modifier-border-focus);
}
.block-language-dataview tbody tr:nth-child(odd),
table.table-view-table tbody tr:nth-child(odd) {
background-color: var(--background-primary);
}
.block-language-dataview tbody tr:nth-child(even),
table.table-view-table tbody tr:nth-child(even) {
background-color: var(--background-secondary) !important;
}
.block-language-dataview tbody tr:hover td,
table.table-view-table tbody tr:hover td {
background-color: var(--background-modifier-hover) !important;
}
.block-language-dataview td,
table.table-view-table td {
padding: 6px 12px !important;
border: 1px solid var(--background-modifier-border);
}
+42
View File
@@ -0,0 +1,42 @@
/* ========== Obsidian 表格通用可读性优化 ========== */
/* 全局生效,适配 Markdown 原生表 & Dataview 表,使用主题变量 */
/* 使用 Obsidian 内置表格变量,兼容深浅主题 */
.markdown-rendered table,
.table-view-table {
--table-border-width: 1px;
--table-border-color: var(--background-modifier-border);
--table-header-background: var(--background-modifier-border);
--table-header-background-hover: var(--background-modifier-hover);
--table-header-color: var(--text-normal);
--table-row-alt-background: var(--background-modifier-cover);
--table-row-alt-background-hover: var(--background-modifier-hover);
--table-row-background-hover: var(--background-modifier-hover);
border-collapse: collapse;
}
.markdown-rendered thead th,
.table-view-table thead th {
font-weight: 600;
padding: 8px 12px !important;
text-align: left;
}
.markdown-rendered tbody td,
.table-view-table tbody td {
padding: 6px 12px !important;
border: 1px solid var(--background-modifier-border);
}
/* 斑马纹 - 奇偶行区分 */
.markdown-rendered tbody tr:nth-child(even),
.table-view-table tbody tr:nth-child(even) {
background-color: var(--table-row-alt-background) !important;
}
.markdown-rendered tbody tr:hover td,
.table-view-table tbody tr:hover td,
.markdown-rendered tbody tr:hover td a,
.table-view-table tbody tr:hover td a {
background-color: var(--table-row-background-hover) !important;
}
+59
View File
@@ -0,0 +1,59 @@
/* ========== Obsidian 表格扩展样式 ========== */
/* 来源: https://github.com/Mehraddev/obsidian-custom-table (简化并去除外部字体) */
/*
* 使用在笔记 frontmatter 添加
* ---
* cssclasses: wideTable, fixedFc, leftAlign
* ---
*
* 可选 class
* - wideTable : 表格占满笔记宽度
* - fixedFc : 第一列固定窄宽第二列大字
* - wideFc : 第一列宽适合主内容在前
* - leftAlign : 左对齐
*/
/* 表头默认左对齐 */
table thead tr th {
text-align: left;
}
/* 表格占满笔记宽度 */
.wideTable table {
min-width: 100%;
}
/* 左对齐 */
.leftAlign th,
.leftAlign td {
text-align: left !important;
}
/* 第一列固定 8em,第二列大字 */
.fixedFc thead tr th:first-child,
.fixedFc tbody tr td:first-child {
width: 8em;
min-width: 8em;
max-width: 8em;
word-break: break-all;
}
.fixedFc th:nth-child(2) {
padding: 9px 20px;
font-size: 1.2em;
}
.fixedFc td:nth-child(2),
.fixedFc tr > td:last-of-type {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 17em;
}
/* 第一列宽,第二列窄 */
.wideFc td:nth-child(1),
.wideFc tr > td:last-of-type {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 36em;
}
+44
View File
@@ -0,0 +1,44 @@
/* ========== 温和配色表格主题 ========== */
/* 适合日常阅读:斑马纹、悬停高亮、圆角,浅色系 */
/* 使用 cssclasses: mildTable 启用 */
.mildTable table {
border-collapse: collapse;
border-radius: 8px;
overflow: hidden;
border: 1px solid var(--background-modifier-border);
font-size: 0.95em;
}
.mildTable thead {
background: linear-gradient(
180deg,
rgba(var(--color-accent-rgb), 0.15) 0%,
rgba(var(--color-accent-rgb), 0.08) 100%
) !important;
}
.mildTable thead th {
padding: 10px 14px !important;
font-weight: 600;
color: var(--text-normal);
border-bottom: 2px solid var(--background-modifier-border);
}
.mildTable tbody tr:nth-child(odd) {
background-color: var(--background-primary);
}
.mildTable tbody tr:nth-child(even) {
background-color: rgba(var(--color-accent-rgb), 0.04) !important;
}
.mildTable tbody tr:hover td,
.mildTable tbody tr:hover td a {
background-color: rgba(var(--color-accent-rgb), 0.12) !important;
}
.mildTable td {
padding: 8px 14px !important;
border-bottom: 1px solid var(--background-modifier-border);
}
+8
View File
@@ -0,0 +1,8 @@
{
"types": {
"aliases": "aliases",
"cssclasses": "multitext",
"tags": "tags",
"reveals": "multitext"
}
}
+4
View File
@@ -0,0 +1,4 @@
{
"workspaces": {},
"active": ""
}