mirror of
https://github.com/alamion/obsidian-jira-sync.git
synced 2026-07-22 12:20:29 +00:00
- JQL pull tasks (with preview) - Timekeep settings menu full rework - bunch of small fixes with data transformation and pointers - now caching Jira key -> file path to increase performance - new pointer - `jira-sync-inline-*` - readme slight rework
1477 lines
28 KiB
CSS
1477 lines
28 KiB
CSS
.jira-collapsible-section {
|
|
padding: 8px;
|
|
border-left: 2px solid var(--background-modifier-border);
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.jira-collapsible-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
cursor: pointer;
|
|
font-weight: bold;
|
|
padding: 4px 0;
|
|
}
|
|
|
|
.jira-collapsible-content {
|
|
margin-top: 20px;
|
|
padding-left: 20px;
|
|
}
|
|
|
|
|
|
/* Template Selector Styles */
|
|
.suggest-select-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
width: 100%;
|
|
}
|
|
|
|
.suggest-select-container .icon-open {
|
|
position: absolute;
|
|
bottom: 1em;
|
|
right: 1em;
|
|
}
|
|
|
|
.suggest-search-input {
|
|
padding: 6px 12px;
|
|
border: 1px solid var(--background-modifier-border);
|
|
border-radius: 4px;
|
|
background: var(--background-primary);
|
|
color: var(--text-normal);
|
|
font-size: var(--font-ui-small);
|
|
}
|
|
|
|
.suggest-search-input:focus {
|
|
outline: none;
|
|
border-color: var(--interactive-accent);
|
|
}
|
|
|
|
.suggest-select-item {
|
|
max-width: 400px;
|
|
width: 100%;
|
|
align-self: flex-end;
|
|
}
|
|
|
|
|
|
.mod-warning {
|
|
color: var(--text-warning);
|
|
font-style: italic;
|
|
margin-top: 4px;
|
|
}
|
|
|
|
|
|
.test-mappings-header {
|
|
margin-bottom: 0.2em;
|
|
}
|
|
|
|
.test-mappings-desc {
|
|
margin-bottom: 1em;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.test-mapping-items-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1.2em;
|
|
}
|
|
|
|
.test-mapping-item {
|
|
background: var(--background-secondary-alt);
|
|
border-radius: 8px;
|
|
padding: 1em 1em 1em 1.2em;
|
|
position: relative;
|
|
box-shadow: 0 1px 4px rgba(0,0,0,0.04);
|
|
}
|
|
|
|
.value-container {
|
|
margin-bottom: 0.5em;
|
|
}
|
|
|
|
.value-display {
|
|
background: var(--background-secondary);
|
|
border-radius: 4px;
|
|
padding: 0.5em 0.8em;
|
|
/*font-family: var(--font-monospace);*/
|
|
font-size: 0.98em;
|
|
min-height: 2em;
|
|
margin-top: 0.2em;
|
|
white-space: pre-wrap;
|
|
word-break: break-all;
|
|
border: 1px solid var(--background-modifier-border);
|
|
}
|
|
|
|
.test-mapping-item .from-jira-container {
|
|
margin-bottom: 0.5em;
|
|
}
|
|
|
|
.test-mapping-item .from-jira-input {
|
|
width: 100%;
|
|
min-height: 2.2em;
|
|
/*font-family: var(--font-monospace);*/
|
|
font-size: 1em;
|
|
margin-top: 0.2em;
|
|
border-radius: 4px;
|
|
border: 1px solid var(--background-modifier-border);
|
|
background: var(--background-secondary);
|
|
color: var(--text-normal);
|
|
padding: 0.3em 0.5em;
|
|
resize: vertical;
|
|
}
|
|
|
|
.add-test-mapping-btn {
|
|
display: block;
|
|
margin: 1.5em auto 0 auto;
|
|
padding: 0.5em 1.5em;
|
|
background: var(--interactive-accent);
|
|
color: var(--text-on-accent);
|
|
border: none;
|
|
border-radius: 6px;
|
|
font-size: 1em;
|
|
cursor: pointer;
|
|
transition: background 0.2s;
|
|
}
|
|
|
|
.field-mappings-list {
|
|
margin: 20px 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 16px;
|
|
background: var(--background-primary-alt);
|
|
padding: 20px;
|
|
border-radius: 8px;
|
|
border: 1px solid var(--background-modifier-border);
|
|
}
|
|
|
|
.field-mapping-item {
|
|
background: var(--background-primary);
|
|
border: 1px solid var(--background-modifier-border);
|
|
border-radius: 8px;
|
|
padding: 20px;
|
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
position: relative;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.field-mapping-item:hover {
|
|
border-color: var(--interactive-accent);
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
}
|
|
|
|
.work-description-container textarea {
|
|
width: 100%;
|
|
}
|
|
|
|
.field-name-container {
|
|
margin-bottom: 16px;
|
|
padding-bottom: 12px;
|
|
border-bottom: 2px solid var(--background-modifier-border);
|
|
}
|
|
|
|
|
|
.field-mapping-label {
|
|
font-weight: 600;
|
|
color: var(--text-normal);
|
|
font-size: 0.9em;
|
|
/*text-transform: uppercase;*/
|
|
letter-spacing: 0.5px;
|
|
display: block;
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.field-name-input {
|
|
width: 100%;
|
|
padding: 10px 12px;
|
|
border: 2px solid var(--background-modifier-border);
|
|
border-radius: 6px;
|
|
background: var(--background-secondary);
|
|
font-size: 1em;
|
|
font-weight: 500;
|
|
transition: border-color 0.2s ease;
|
|
}
|
|
|
|
.field-name-input:focus {
|
|
border-color: var(--interactive-accent);
|
|
outline: none;
|
|
box-shadow: 0 0 0 3px rgba(var(--interactive-accent-rgb), 0.1);
|
|
}
|
|
|
|
.functions-container {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 20px;
|
|
margin-top: 16px;
|
|
}
|
|
|
|
.to-jira-container,
|
|
.from-jira-container {
|
|
background: var(--background-secondary-alt);
|
|
padding: 16px;
|
|
border-radius: 6px;
|
|
border: 1px solid var(--background-modifier-border-hover);
|
|
}
|
|
|
|
.test-mapping-item .from-jira-container {
|
|
background: var(--transparent);
|
|
padding: 0;
|
|
border: 0;
|
|
}
|
|
|
|
|
|
.to-jira-input,
|
|
.from-jira-input {
|
|
width: 100%;
|
|
min-height: 40px;
|
|
padding: 12px;
|
|
border: 1px solid var(--background-modifier-border);
|
|
border-radius: 4px;
|
|
background: var(--background-primary);
|
|
font-family: var(--font-monospace);
|
|
font-size: 0.9em;
|
|
line-height: 1.4;
|
|
resize: vertical;
|
|
transition: border-color 0.2s ease;
|
|
}
|
|
|
|
.to-jira-input:focus,
|
|
.from-jira-input:focus {
|
|
border-color: var(--interactive-accent);
|
|
outline: none;
|
|
box-shadow: 0 0 0 2px rgba(var(--interactive-accent-rgb), 0.1);
|
|
}
|
|
|
|
.field-mapping-item .invalid {
|
|
border-color: var(--color-red) !important;
|
|
background-color: rgba(var(--color-red-rgb), 0.1) !important;
|
|
box-shadow: 0 0 0 2px rgba(var(--color-red-rgb), 0.2) !important;
|
|
}
|
|
|
|
.remove-field-btn {
|
|
position: absolute;
|
|
top: 8px;
|
|
right: 16px;
|
|
background: var(--background-modifier-error);
|
|
color: var(--text-on-accent);
|
|
border: none;
|
|
border-radius: 50%;
|
|
width: 28px;
|
|
height: 28px;
|
|
font-size: 14px;
|
|
cursor: pointer;
|
|
transition: all 0.2s ease;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
|
}
|
|
|
|
.remove-field-btn:hover {
|
|
background: var(--background-modifier-error-hover);
|
|
transform: scale(1.1);
|
|
}
|
|
|
|
.button-view {
|
|
justify-content: flex-start;
|
|
display: flex;
|
|
flex-direction: row;
|
|
width: 100%;
|
|
gap: 1vw;
|
|
}
|
|
|
|
.button-view button {
|
|
width: fit-content;
|
|
}
|
|
|
|
.button-view {
|
|
display: flex;
|
|
justify-content: flex-start;
|
|
gap: 12px;
|
|
margin-top: 20px;
|
|
padding-top: 16px;
|
|
border-top: 1px solid var(--background-modifier-border);
|
|
}
|
|
|
|
.button-view button {
|
|
padding: 10px 16px;
|
|
border: none;
|
|
border-radius: 6px;
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
transition: all 0.2s ease;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
position: relative;
|
|
}
|
|
|
|
.add-field-mapping-btn {
|
|
background: var(--interactive-accent);
|
|
color: var(--text-on-accent);
|
|
}
|
|
|
|
.add-field-mapping-btn:hover {
|
|
background: var(--interactive-accent-hover);
|
|
transform: translateY(-1px);
|
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
|
|
}
|
|
|
|
.reset-field-mappings-btn,
|
|
.reload-field-mappings-btn {
|
|
background: var(--background-secondary);
|
|
color: var(--text-normal);
|
|
border: 1px solid var(--background-modifier-border);
|
|
}
|
|
|
|
.reset-field-mappings-btn:hover,
|
|
.reload-field-mappings-btn:hover {
|
|
background: var(--background-secondary-alt);
|
|
border-color: var(--interactive-accent);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.button-view button::after {
|
|
content: attr(data-tooltip);
|
|
position: absolute;
|
|
bottom: 100%;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
background: var(--background-tooltip);
|
|
color: var(--text-on-accent);
|
|
padding: 6px 10px;
|
|
border-radius: 4px;
|
|
font-size: 0.8em;
|
|
white-space: nowrap;
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
transition: opacity 0.2s ease;
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.button-view button:hover::after {
|
|
opacity: 1;
|
|
}
|
|
|
|
.mapping-examples {
|
|
margin-top: 24px;
|
|
padding: 20px;
|
|
background: var(--background-secondary-alt);
|
|
border: 1px solid var(--background-modifier-border);
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.mapping-examples h4 {
|
|
color: var(--text-normal);
|
|
margin-bottom: 16px;
|
|
font-size: 1.1em;
|
|
}
|
|
|
|
.mapping-examples ul {
|
|
list-style: none;
|
|
padding: 0;
|
|
display: grid;
|
|
gap: 12px;
|
|
}
|
|
|
|
.mapping-examples li {
|
|
background: var(--background-primary);
|
|
padding: 16px;
|
|
border-radius: 6px;
|
|
border: 1px solid var(--background-modifier-border-hover);
|
|
position: relative;
|
|
}
|
|
|
|
.use-example-btn {
|
|
position: absolute;
|
|
top: 12px;
|
|
right: 12px;
|
|
padding: 6px 12px;
|
|
background: var(--interactive-accent);
|
|
color: var(--text-on-accent);
|
|
border: none;
|
|
border-radius: 4px;
|
|
font-size: 0.8em;
|
|
cursor: pointer;
|
|
transition: background 0.2s ease;
|
|
}
|
|
|
|
.use-example-btn:hover {
|
|
background: var(--interactive-accent-hover);
|
|
}
|
|
|
|
/*hljs.css*/
|
|
pre code.hljs {
|
|
display: block;
|
|
overflow-x: auto;
|
|
padding: 1em
|
|
}
|
|
code.hljs {
|
|
padding: 3px 5px
|
|
}
|
|
/*!
|
|
Theme: GitHub
|
|
Description: Light theme as seen on github.com
|
|
Author: github.com
|
|
Maintainer: @Hirse
|
|
Updated: 2021-05-15
|
|
|
|
Outdated base version: https://github.com/primer/github-syntax-light
|
|
Current colors taken from GitHub's CSS
|
|
*/
|
|
.hljs {
|
|
color: #24292e;
|
|
background: #ffffff
|
|
}
|
|
.hljs-doctag,
|
|
.hljs-keyword,
|
|
.hljs-meta .hljs-keyword,
|
|
.hljs-template-tag,
|
|
.hljs-template-variable,
|
|
.hljs-type,
|
|
.hljs-variable.language_ {
|
|
/* prettylights-syntax-keyword */
|
|
color: #f6cc42
|
|
}
|
|
.hljs-title,
|
|
.hljs-title.class_,
|
|
.hljs-title.class_.inherited__,
|
|
.hljs-title.function_ {
|
|
/* prettylights-syntax-entity */
|
|
color: #6f42c1
|
|
}
|
|
.hljs-attr,
|
|
.hljs-attribute,
|
|
.hljs-literal,
|
|
.hljs-meta,
|
|
|
|
.hljs-operator,
|
|
.hljs-variable,
|
|
.hljs-selector-attr,
|
|
.hljs-selector-class,
|
|
.hljs-selector-id {
|
|
/* prettylights-syntax-constant */
|
|
color: #6ecbfa
|
|
}
|
|
.hljs-number {
|
|
/* prettylights-syntax-numeric-literal */
|
|
color: #93cda7
|
|
}
|
|
.hljs-regexp,
|
|
.hljs-string,
|
|
.hljs-meta .hljs-string {
|
|
/* prettylights-syntax-string */
|
|
color: #cd905c
|
|
}
|
|
.hljs-built_in,
|
|
.hljs-symbol {
|
|
/* prettylights-syntax-variable */
|
|
color: #e36209
|
|
}
|
|
.hljs-comment,
|
|
.hljs-code,
|
|
.hljs-formula {
|
|
/* prettylights-syntax-comment */
|
|
color: #6a737d
|
|
}
|
|
.hljs-name,
|
|
.hljs-quote,
|
|
.hljs-selector-tag,
|
|
.hljs-selector-pseudo {
|
|
/* prettylights-syntax-entity-tag */
|
|
color: #22863a
|
|
}
|
|
.hljs-subst {
|
|
/* prettylights-syntax-storage-modifier-import */
|
|
color: #24292e
|
|
}
|
|
.hljs-section {
|
|
/* prettylights-syntax-markup-heading */
|
|
color: #005cc5;
|
|
font-weight: bold
|
|
}
|
|
.hljs-bullet {
|
|
/* prettylights-syntax-markup-list */
|
|
color: #735c0f
|
|
}
|
|
.hljs-emphasis {
|
|
/* prettylights-syntax-markup-italic */
|
|
color: #24292e;
|
|
font-style: italic
|
|
}
|
|
.hljs-strong {
|
|
/* prettylights-syntax-markup-bold */
|
|
color: #24292e;
|
|
font-weight: bold
|
|
}
|
|
.hljs-addition {
|
|
/* prettylights-syntax-markup-inserted */
|
|
color: #22863a;
|
|
background-color: #f0fff4
|
|
}
|
|
.hljs-deletion {
|
|
/* prettylights-syntax-markup-deleted */
|
|
color: #b31d28;
|
|
background-color: #ffeef0
|
|
}
|
|
/* These highlight.js classes are intentionally left unstyled */
|
|
|
|
/* Period selector improvements */
|
|
.period-selector .setting-item-control {
|
|
flex-direction: column;
|
|
align-items: flex-end;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.period-selector .timekeep-btn {
|
|
background: var(--interactive-accent);
|
|
color: var(--text-on-accent);
|
|
border: none;
|
|
border-radius: 6px;
|
|
padding: 0.5rem 1rem;
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
transition: all 0.2s ease;
|
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
.period-selector .timekeep-btn:hover:not(:disabled) {
|
|
background: var(--interactive-accent-hover);
|
|
transform: translateY(-1px);
|
|
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
|
|
}
|
|
|
|
.period-selector .timekeep-btn:disabled {
|
|
background: var(--background-modifier-border);
|
|
color: var(--text-muted);
|
|
cursor: not-allowed;
|
|
transform: none;
|
|
box-shadow: none;
|
|
}
|
|
|
|
/* Custom dates container */
|
|
.custom-dates-container {
|
|
margin-top: 1rem;
|
|
padding: 1.25rem;
|
|
background: var(--background-primary-alt);
|
|
border-radius: 8px;
|
|
border: 1px solid var(--background-modifier-border-hover);
|
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
|
|
}
|
|
|
|
/* Main display container */
|
|
.jira-copyable {
|
|
margin-top: 1.5rem;
|
|
user-select: text;
|
|
-webkit-user-select: text;
|
|
-moz-user-select: text;
|
|
-ms-user-select: text;
|
|
}
|
|
|
|
.timekeep-section-title {
|
|
color: var(--text-normal);
|
|
margin-bottom: 1.5rem;
|
|
padding-bottom: 0.5rem;
|
|
border-bottom: 2px solid var(--interactive-accent);
|
|
font-size: 1.1em;
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* Period sections */
|
|
.period-section {
|
|
margin-bottom: 2rem;
|
|
background: var(--background-primary);
|
|
border-radius: 8px;
|
|
border: 1px solid var(--background-modifier-border);
|
|
overflow: hidden;
|
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
|
|
}
|
|
|
|
.timekeep-period-header {
|
|
background: linear-gradient(135deg, var(--background-secondary) 0%, var(--background-secondary-alt) 100%);
|
|
padding: 1rem 1.5rem;
|
|
margin: 0;
|
|
border-bottom: 2px solid var(--interactive-accent);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
border-radius: 8px 8px 0 0;
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
.timekeep-period-title {
|
|
color: var(--text-normal);
|
|
/*font-weight: 700;*/
|
|
font-size: 1.1em;
|
|
letter-spacing: 0.05em;
|
|
margin: 0;
|
|
/*text-transform: uppercase;*/
|
|
}
|
|
|
|
.timekeep-period-total {
|
|
font-family: var(--font-monospace);
|
|
/*font-weight: 700;*/
|
|
color: var(--text-on-accent);
|
|
background: var(--text-selection);
|
|
padding: 0.6rem 1rem;
|
|
border-radius: 8px;
|
|
font-size: 1em;
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
|
}
|
|
|
|
/* Card-based container and styling */
|
|
.timekeep-table-container {
|
|
background: var(--background-primary);
|
|
}
|
|
|
|
.timekeep-group-card {
|
|
background: var(--background-primary);
|
|
border: 1px solid var(--background-modifier-border);
|
|
border-color: transparent;
|
|
border-radius: 8px;
|
|
margin: 3px;
|
|
overflow: hidden;
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.timekeep-group-card:hover {
|
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
|
|
border-color: var(--interactive-accent);
|
|
}
|
|
|
|
.timekeep-group-header {
|
|
background: var(--background-primary);
|
|
padding: 0.875rem 1.25rem;
|
|
border-bottom: 1px solid var(--background-modifier-border);
|
|
cursor: pointer;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
transition: all 0.2s ease;
|
|
border-left: 3px solid var(--interactive-accent);
|
|
}
|
|
|
|
.timekeep-last-group-card .timekeep-group-header {
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.timekeep-group-header:hover {
|
|
background: var(--background-secondary);
|
|
border-left-color: var(--interactive-accent-hover);
|
|
}
|
|
|
|
.timekeep-group-title {
|
|
font-weight: 600;
|
|
font-size: 1em;
|
|
color: var(--text-normal);
|
|
margin: 0;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.timekeep-group-meta {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 1rem;
|
|
font-size: 0.9em;
|
|
}
|
|
|
|
.timekeep-group-issue-key {
|
|
font-family: var(--font-monospace);
|
|
color: var(--interactive-accent);
|
|
font-weight: 500;
|
|
background: var(--background-primary);
|
|
padding: 0.25rem 0.5rem;
|
|
border-radius: 4px;
|
|
border: 1px solid var(--background-modifier-border);
|
|
}
|
|
|
|
.timekeep-group-issue-key:hover {
|
|
background: var(--interactive-hover);
|
|
color: var(--interactive-accent-hover);
|
|
}
|
|
|
|
.timekeep-group-duration {
|
|
font-family: var(--font-monospace);
|
|
font-weight: 600;
|
|
color: var(--text-accent);
|
|
background: var(--background-primary);
|
|
padding: 0.25rem 0.5rem;
|
|
border-radius: 4px;
|
|
border: 1px solid var(--background-modifier-border);
|
|
}
|
|
|
|
.jira-collapse-icon {
|
|
background-color: var(--background-secondary-alt);
|
|
border-radius: 13px;
|
|
transition: transform 0.2s ease;
|
|
width: 25px;
|
|
height: 25px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.collapsed .jira-collapse-icon {
|
|
transform: rotate(-90deg);
|
|
}
|
|
|
|
.timekeep-entries-container {
|
|
background: var(--background-primary);
|
|
max-height: 0;
|
|
overflow: hidden;
|
|
/*transition: max-height 0.3s ease;*/
|
|
}
|
|
|
|
.timekeep-group-card:not(.collapsed) .timekeep-entries-container {
|
|
max-height: fit-content;
|
|
}
|
|
|
|
.timekeep-entry {
|
|
padding: 0.75rem 1.25rem;
|
|
border-bottom: 1px solid var(--background-modifier-border-hover);
|
|
display: grid;
|
|
grid-template-columns: 1fr auto auto;
|
|
gap: 1rem;
|
|
align-items: center;
|
|
transition: background-color 0.2s ease;
|
|
}
|
|
|
|
.timekeep-entry:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.timekeep-entry:hover {
|
|
background: var(--background-secondary-alt);
|
|
}
|
|
|
|
.timekeep-entry:nth-child(even) {
|
|
background: var(--background-primary-alt);
|
|
}
|
|
|
|
.timekeep-entry:nth-child(even):hover {
|
|
background: var(--background-secondary-alt);
|
|
}
|
|
|
|
.timekeep-entry-block-path {
|
|
font-family: var(--font-monospace);
|
|
font-size: 0.8em;
|
|
color: var(--text-normal);
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.timekeep-entry-start-time {
|
|
color: var(--text-muted);
|
|
font-family: var(--font-monospace);
|
|
white-space: nowrap;
|
|
font-size: 0.85em;
|
|
text-align: right;
|
|
min-width: 140px;
|
|
}
|
|
|
|
.timekeep-entry-duration {
|
|
font-family: var(--font-monospace);
|
|
font-weight: 600;
|
|
color: var(--text-accent);
|
|
white-space: nowrap;
|
|
font-size: 0.85em;
|
|
text-align: right;
|
|
min-width: 80px;
|
|
}
|
|
|
|
/* Entry labels */
|
|
.timekeep-entry-labels {
|
|
display: grid;
|
|
grid-template-columns: 1fr auto auto;
|
|
gap: 1rem;
|
|
padding: 0.5rem 1.25rem;
|
|
background: var(--background-secondary-alt);
|
|
border-bottom: 1px solid var(--background-modifier-border);
|
|
font-size: 0.75em;
|
|
font-weight: 600;
|
|
color: var(--text-muted);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
.timekeep-entry-label-task {
|
|
text-align: left;
|
|
}
|
|
|
|
.timekeep-entry-label-start {
|
|
text-align: right;
|
|
min-width: 140px;
|
|
}
|
|
|
|
.timekeep-entry-label-duration {
|
|
text-align: right;
|
|
min-width: 80px;
|
|
}
|
|
|
|
/* Column-specific styling */
|
|
.timekeep-issue-name {
|
|
font-weight: 500;
|
|
color: var(--text-normal);
|
|
}
|
|
|
|
.timekeep-issue-key {
|
|
font-family: var(--font-monospace);
|
|
font-size: 0.85em;
|
|
color: var(--interactive-accent);
|
|
font-weight: 500;
|
|
}
|
|
|
|
.timekeep-datetime {
|
|
color: var(--text-muted);
|
|
font-size: 0.85em;
|
|
max-width: 200px;
|
|
word-wrap: break-word;
|
|
hyphens: auto;
|
|
}
|
|
|
|
.timekeep-block-path {
|
|
max-width: 33%;
|
|
font-family: var(--font-monospace);
|
|
font-size: 0.8em;
|
|
color: var(--text-muted);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.timekeep-duration {
|
|
font-family: var(--font-monospace);
|
|
font-weight: 600;
|
|
color: var(--text-accent);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
/* No data state */
|
|
.timekeep-no-data {
|
|
text-align: center;
|
|
padding: 3rem 1rem;
|
|
color: var(--text-muted);
|
|
font-style: italic;
|
|
background: var(--background-secondary-alt);
|
|
border-radius: 8px;
|
|
border: 1px dashed var(--background-modifier-border);
|
|
margin-top: 1.5rem;
|
|
}
|
|
|
|
/* Responsive design */
|
|
@media (max-width: 768px) {
|
|
.functions-container {
|
|
grid-template-columns: 1fr;
|
|
gap: 12px;
|
|
}
|
|
|
|
.button-view {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
}
|
|
|
|
.button-view button {
|
|
justify-content: center;
|
|
}
|
|
|
|
.timekeep-group-header {
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
gap: 0.5rem;
|
|
padding: 0.75rem 1rem;
|
|
}
|
|
|
|
.timekeep-group-meta {
|
|
flex-direction: column;
|
|
width: 100%;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
flex-wrap: wrap;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.timekeep-group-title {
|
|
font-size: 1em;
|
|
}
|
|
|
|
.timekeep-entry {
|
|
grid-template-columns: 1fr;
|
|
gap: 0.5rem;
|
|
padding: 0.75rem 1rem;
|
|
}
|
|
|
|
.timekeep-entry-labels {
|
|
grid-template-columns: 1fr;
|
|
gap: 0.5rem;
|
|
padding: 0.5rem 1rem;
|
|
}
|
|
|
|
.timekeep-entry-start-time,
|
|
.timekeep-entry-duration {
|
|
text-align: left;
|
|
min-width: auto;
|
|
}
|
|
|
|
.timekeep-entry-label-start,
|
|
.timekeep-entry-label-duration {
|
|
text-align: left;
|
|
min-width: auto;
|
|
}
|
|
|
|
.timekeep-entry-block-path {
|
|
font-size: 0.85em;
|
|
}
|
|
}
|
|
|
|
/* Loading and transition states */
|
|
.timekeep-loading {
|
|
opacity: 0.6;
|
|
pointer-events: none;
|
|
transition: opacity 0.3s ease;
|
|
}
|
|
|
|
.timekeep-fade-in {
|
|
animation: fadeIn 0.3s ease-out;
|
|
}
|
|
|
|
@keyframes fadeIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(10px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
.jira-sync-hidden:not(.jira-sync-active) {
|
|
display: none;
|
|
}
|
|
|
|
.cm-inline-code:has(> .jira-sync-hidden) {
|
|
padding: 0 !important;
|
|
}
|
|
|
|
/* JQL Preview Container */
|
|
.jql-preview-container {
|
|
margin-top: 1rem;
|
|
border-radius: 8px;
|
|
border: 1px solid var(--background-modifier-border);
|
|
background: var(--background-primary);
|
|
overflow: hidden;
|
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
|
|
min-height: 120px;
|
|
margin-bottom: 25px;
|
|
}
|
|
|
|
/* Table wrapper for horizontal scrolling */
|
|
.jql-preview-table-wrapper {
|
|
overflow-x: auto;
|
|
-webkit-overflow-scrolling: touch;
|
|
}
|
|
|
|
/* Loading State */
|
|
.jql-preview-loading {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 2rem;
|
|
background: var(--background-primary-alt);
|
|
color: var(--text-muted);
|
|
min-height: 120px;
|
|
}
|
|
|
|
.jql-preview-loading-icon {
|
|
font-size: 2em;
|
|
margin-bottom: 0.5rem;
|
|
opacity: 0.7;
|
|
animation: pulse 2s ease-in-out infinite;
|
|
}
|
|
|
|
.jql-preview-loading-text {
|
|
font-size: 0.9em;
|
|
font-style: italic;
|
|
}
|
|
|
|
/* Empty State */
|
|
.jql-preview-empty {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 2rem;
|
|
background: var(--background-secondary-alt);
|
|
color: var(--text-muted);
|
|
min-height: 120px;
|
|
border: 1px dashed var(--background-modifier-border);
|
|
border-radius: 8px;
|
|
margin: 1px;
|
|
}
|
|
|
|
.jql-preview-empty-icon {
|
|
font-size: 2em;
|
|
margin-bottom: 0.5rem;
|
|
opacity: 0.6;
|
|
}
|
|
|
|
.jql-preview-empty-text {
|
|
font-size: 0.9em;
|
|
font-style: italic;
|
|
}
|
|
|
|
/* Error State */
|
|
.jql-preview-error {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 2rem;
|
|
background: var(--background-primary-alt);
|
|
color: var(--text-error);
|
|
min-height: 120px;
|
|
border: 1px solid var(--text-error);
|
|
border-radius: 8px;
|
|
margin: 1px;
|
|
}
|
|
|
|
.jql-preview-error-icon {
|
|
font-size: 1.5em;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.jql-preview-error-text {
|
|
font-size: 0.9em;
|
|
text-align: center;
|
|
max-width: 300px;
|
|
word-wrap: break-word;
|
|
}
|
|
|
|
/* Header */
|
|
.jql-preview-header {
|
|
background: linear-gradient(135deg, var(--background-secondary) 0%, var(--background-secondary-alt) 100%);
|
|
padding: 1rem 1.25rem;
|
|
border-bottom: 2px solid var(--interactive-accent);
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
.jql-preview-total {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
color: var(--text-normal);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.jql-preview-total-icon {
|
|
font-size: 1.1em;
|
|
}
|
|
|
|
.jql-preview-total-text {
|
|
font-size: 1em;
|
|
}
|
|
|
|
.jql-preview-showing {
|
|
color: var(--text-muted);
|
|
font-weight: normal;
|
|
font-size: 0.9em;
|
|
font-style: italic;
|
|
}
|
|
|
|
/* Table Styles */
|
|
.jql-preview-table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
background: var(--background-primary);
|
|
font-size: 0.85em;
|
|
table-layout: auto;
|
|
min-width: 800px;
|
|
}
|
|
|
|
.jql-preview-table tbody tr {
|
|
display: table-row;
|
|
}
|
|
|
|
.jql-preview-table tbody td {
|
|
display: table-cell;
|
|
}
|
|
|
|
.jql-preview-table thead {
|
|
background: var(--background-secondary-alt);
|
|
}
|
|
|
|
.jql-preview-table th {
|
|
border-right: 1px solid var(--background-modifier-border-hover);
|
|
}
|
|
|
|
.jql-preview-table th:last-child {
|
|
border-right: none;
|
|
}
|
|
|
|
/* Table Header Column Sizes */
|
|
.jql-preview-th-key,
|
|
.jql-preview-cell-key {
|
|
width: 100px;
|
|
min-width: 100px;
|
|
}
|
|
|
|
.jql-preview-th-icon,
|
|
.jql-preview-cell-icon {
|
|
width: 40px;
|
|
min-width: 40px;
|
|
text-align: center;
|
|
padding: 0.5rem 0.25rem;
|
|
}
|
|
|
|
.jql-preview-th-summary,
|
|
.jql-preview-cell-summary {
|
|
width: 200px;
|
|
min-width: 200px;
|
|
}
|
|
|
|
.jql-preview-th-date,
|
|
.jql-preview-cell-date {
|
|
width: 100px;
|
|
min-width: 100px;
|
|
font-size: 0.75em;
|
|
}
|
|
|
|
.jql-preview-th-status,
|
|
.jql-preview-cell-status {
|
|
width: 150px;
|
|
min-width: 150px;
|
|
}
|
|
|
|
/* Additional table styling for better appearance */
|
|
.jql-preview-table {
|
|
border: 1px solid var(--background-modifier-border);
|
|
border-radius: 4px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.jql-preview-table th {
|
|
background: var(--background-secondary-alt);
|
|
border-bottom: 2px solid var(--background-modifier-border);
|
|
font-weight: 600;
|
|
color: var(--text-muted);
|
|
font-size: 0.8em;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
padding: 0.75rem 0.5rem;
|
|
}
|
|
|
|
.jql-preview-table td {
|
|
border-right: 1px solid var(--background-modifier-border-hover);
|
|
}
|
|
|
|
.jql-preview-table tr:hover {
|
|
background: var(--background-secondary-alt);
|
|
}
|
|
|
|
.jql-preview-table tr:nth-child(even) {
|
|
background: var(--background-primary-alt);
|
|
}
|
|
|
|
.jql-preview-table tr:nth-child(even):hover {
|
|
background: var(--background-secondary-alt);
|
|
}
|
|
|
|
/* Table Rows */
|
|
.jql-preview-row {
|
|
transition: background-color 0.2s ease;
|
|
}
|
|
|
|
/* Table Cells */
|
|
.jql-preview-table td:last-child {
|
|
border-right: none;
|
|
}
|
|
|
|
/* Key Cell */
|
|
.jql-preview-cell-key {
|
|
font-family: var(--font-monospace);
|
|
font-weight: 600;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.jql-preview-key-link {
|
|
color: var(--interactive-accent);
|
|
text-decoration: none;
|
|
cursor: pointer;
|
|
padding: 0.125rem 0.25rem;
|
|
border-radius: 3px;
|
|
transition: background-color 0.2s ease;
|
|
}
|
|
|
|
.jql-preview-key-link:hover {
|
|
background: var(--interactive-hover);
|
|
color: var(--interactive-accent-hover);
|
|
}
|
|
|
|
/* Icon Cells */
|
|
.jql-preview-cell-icon {
|
|
text-align: center;
|
|
padding: 0.5rem 0.25rem;
|
|
width: 24px;
|
|
position: relative;
|
|
}
|
|
|
|
/* Status Indicator */
|
|
.jql-preview-status-indicator {
|
|
width: 12px;
|
|
height: 12px;
|
|
border-radius: 50%;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.jql-preview-status-indicator.status-new {
|
|
background: #4285f4; /* Blue */
|
|
}
|
|
|
|
.jql-preview-status-indicator.status-indeterminate {
|
|
background: #ff9800; /* Orange */
|
|
}
|
|
|
|
.jql-preview-status-indicator.status-done {
|
|
background: #4caf50; /* Green */
|
|
}
|
|
|
|
.jql-preview-status-indicator.status-undefined {
|
|
background: var(--text-muted);
|
|
}
|
|
|
|
/* Type and Priority Icons */
|
|
.jql-preview-type-icon,
|
|
.jql-preview-priority-icon {
|
|
width: 16px;
|
|
height: 16px;
|
|
object-fit: contain;
|
|
display: block;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
/* User Avatars */
|
|
.jql-preview-user-avatar {
|
|
width: 16px;
|
|
height: 16px;
|
|
border-radius: 50%;
|
|
object-fit: cover;
|
|
display: block;
|
|
margin: 0 auto;
|
|
transition: transform 0.2s ease;
|
|
}
|
|
|
|
.jql-preview-user-initial {
|
|
width: 16px;
|
|
height: 16px;
|
|
border-radius: 50%;
|
|
background: var(--interactive-accent);
|
|
color: var(--text-on-accent);
|
|
font-size: 0.7em;
|
|
font-weight: 600;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin: 0 auto;
|
|
transition: transform 0.2s ease;
|
|
}
|
|
|
|
.jql-preview-cell-icon a:hover .jql-preview-user-avatar,
|
|
.jql-preview-cell-icon a:hover .jql-preview-user-initial {
|
|
transform: scale(1.1);
|
|
}
|
|
|
|
/* Summary Cell */
|
|
.jql-preview-cell-summary {
|
|
color: var(--text-normal);
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
line-height: 1.3;
|
|
flex: 1 1 auto;
|
|
min-width: 0;
|
|
padding-left: 10px;
|
|
}
|
|
|
|
/* Date Cells */
|
|
.jql-preview-cell-date {
|
|
color: var(--text-muted);
|
|
font-family: var(--font-monospace);
|
|
font-size: 0.8em;
|
|
white-space: nowrap;
|
|
text-align: center;
|
|
}
|
|
|
|
/* Status Cell */
|
|
.jql-preview-cell-status {
|
|
white-space: nowrap;
|
|
text-align: center;
|
|
}
|
|
|
|
.jql-preview-status-badge {
|
|
padding: 0.125rem 0.375rem;
|
|
border-radius: 3px;
|
|
font-size: 0.75em;
|
|
font-weight: 500;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.025em;
|
|
}
|
|
|
|
.jql-preview-status-badge.status-new {
|
|
background: rgba(66, 133, 244, 0.1);
|
|
color: #4285f4;
|
|
border: 1px solid rgba(66, 133, 244, 0.3);
|
|
}
|
|
|
|
.jql-preview-status-badge.status-indeterminate {
|
|
background: rgba(255, 152, 0, 0.1);
|
|
color: #ff9800;
|
|
border: 1px solid rgba(255, 152, 0, 0.3);
|
|
}
|
|
|
|
.jql-preview-status-badge.status-done {
|
|
background: rgba(76, 175, 80, 0.1);
|
|
color: #4caf50;
|
|
border: 1px solid rgba(76, 175, 80, 0.3);
|
|
}
|
|
|
|
.jql-preview-status-badge.status-default {
|
|
background: var(--background-secondary);
|
|
color: var(--text-muted);
|
|
border: 1px solid var(--background-modifier-border);
|
|
}
|
|
|
|
/* Animations */
|
|
@keyframes pulse {
|
|
0%, 100% {
|
|
opacity: 0.7;
|
|
}
|
|
50% {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
/* Responsive Design */
|
|
@media (max-width: 768px) {
|
|
.jql-preview-table {
|
|
display: block;
|
|
width: 100%;
|
|
overflow-x: auto;
|
|
-webkit-overflow-scrolling: touch;
|
|
}
|
|
|
|
.jql-preview-table thead {
|
|
display: block;
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 10;
|
|
background: var(--background-secondary-alt);
|
|
}
|
|
|
|
.jql-preview-table thead tr {
|
|
display: flex;
|
|
width: 100%;
|
|
}
|
|
|
|
.jql-preview-table tbody {
|
|
display: block;
|
|
width: 100%;
|
|
}
|
|
|
|
.jql-preview-table tr {
|
|
display: flex;
|
|
width: 100%;
|
|
border-bottom: 1px solid var(--background-modifier-border-hover);
|
|
}
|
|
|
|
.jql-preview-table th,
|
|
.jql-preview-table td {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-start;
|
|
padding: 0.5rem 0.25rem;
|
|
border-right: 1px solid var(--background-modifier-border-hover);
|
|
font-size: 0.8em;
|
|
text-align: left;
|
|
}
|
|
|
|
.jql-preview-table th:last-child,
|
|
.jql-preview-table td:last-child {
|
|
border-right: none;
|
|
}
|
|
|
|
/* Column widths for mobile */
|
|
.jql-preview-th-key,
|
|
.jql-preview-cell-key {
|
|
flex: 0 0 80px;
|
|
min-width: 80px;
|
|
max-width: 80px;
|
|
}
|
|
|
|
.jql-preview-th-summary,
|
|
.jql-preview-cell-summary {
|
|
flex: 1 1 120px;
|
|
min-width: 120px;
|
|
max-width: 120px;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.jql-preview-th-icon,
|
|
.jql-preview-cell-icon {
|
|
flex: 0 0 32px;
|
|
min-width: 32px;
|
|
max-width: 32px;
|
|
justify-content: center;
|
|
}
|
|
|
|
.jql-preview-th-date,
|
|
.jql-preview-cell-date {
|
|
flex: 0 0 80px;
|
|
min-width: 80px;
|
|
max-width: 80px;
|
|
font-size: 0.7em;
|
|
}
|
|
|
|
.jql-preview-th-status,
|
|
.jql-preview-cell-status {
|
|
flex: 0 0 120px;
|
|
min-width: 120px;
|
|
max-width: 120px;
|
|
}
|
|
|
|
.jql-preview-header {
|
|
padding: 0.75rem 1rem;
|
|
}
|
|
|
|
.jql-preview-total {
|
|
flex-wrap: wrap;
|
|
gap: 0.25rem 0.5rem;
|
|
font-size: 0.9em;
|
|
}
|
|
|
|
/* Ensure icons are properly centered in mobile */
|
|
.jql-preview-cell-icon .jql-preview-user-avatar,
|
|
.jql-preview-cell-icon .jql-preview-user-initial,
|
|
.jql-preview-cell-icon .jql-preview-type-icon,
|
|
.jql-preview-cell-icon .jql-preview-priority-icon,
|
|
.jql-preview-cell-icon .jql-preview-status-indicator {
|
|
margin: 0 auto;
|
|
}
|
|
|
|
/* Make links more touch-friendly */
|
|
.jql-preview-key-link,
|
|
.jql-preview-cell-icon a {
|
|
display: block;
|
|
padding: 0.25rem;
|
|
margin: -0.25rem;
|
|
border-radius: 3px;
|
|
transition: background-color 0.2s ease;
|
|
}
|
|
|
|
.jql-preview-key-link:hover,
|
|
.jql-preview-cell-icon a:hover {
|
|
background: var(--interactive-hover);
|
|
}
|
|
}
|