@tasknotes/calendar 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.md +6 -0
- package/dist/calendar.css +341 -44
- package/dist/cjs/index.cjs +279 -58
- package/dist/cjs/react.cjs +279 -58
- package/dist/esm/{chunk-EDRCVOY7.js → chunk-EXKFHPW2.js} +279 -58
- package/dist/esm/index.js +1 -1
- package/dist/esm/react.js +1 -1
- package/dist/types/core/types.d.cts +1 -0
- package/dist/types/core/types.d.ts +1 -0
- package/dist/types/dom/calendar.d.cts +10 -1
- package/dist/types/dom/calendar.d.ts +10 -1
- package/dist/types/dom/options.d.cts +2 -2
- package/dist/types/dom/options.d.ts +2 -2
- package/dist/types/dom/views/daygrid.d.cts +1 -1
- package/dist/types/dom/views/daygrid.d.ts +1 -1
- package/dist/types/dom/views/year.d.cts +1 -0
- package/dist/types/dom/views/year.d.ts +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.1.8
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Collision stacks show a quiet count and a preview of their contents. Tracked-time titles never split words in the side lane, and adjacent timed events retain a visible boundary.
|
|
10
|
+
- Calendar interaction colours and motion expose theme hooks. Keyboard focus, selected hover, touch, drag origin and preview, pending writes and rejected writes have distinct treatments; Escape removes the drag origin without changing data.
|
|
11
|
+
- Dragging near a scroll edge reveals more of the calendar; cancellation restores the original scroll position. Empty agenda ranges retain host-provided filter recovery alongside per-day creation.
|
|
12
|
+
- Agenda drag previews follow the pointer without shifting neighbouring rows. Releasing after Escape does not open the task underneath the cancelled drag.
|
|
13
|
+
- Compact Month shows narrow chips or dots consistently, with a quiet overflow count, and fits narrow grids. Selected dates carry into Day view.
|
|
14
|
+
- Time ranges follow event width rather than duration and stay visible during resize. Narrow Week headers fit dates and today's badge.
|
|
15
|
+
- Year reveals the anchor month when opened or navigated.
|
|
16
|
+
- Toolbars fit narrow widths, the date strip loads its complete window, and strip expansion stays on the labelled month control.
|
|
17
|
+
- A dim source stays at the original position during calendar drags, and linked hover is suppressed while dragging.
|
|
18
|
+
|
|
5
19
|
## 0.1.7
|
|
6
20
|
|
|
7
21
|
### Added
|
package/README.md
CHANGED
|
@@ -76,6 +76,9 @@ and changes views through the same navigation lifecycle as the buttons.
|
|
|
76
76
|
|
|
77
77
|
### Month and list
|
|
78
78
|
|
|
79
|
+
- `monthDisplay: "chips"` uses compact filled title strips instead of dots, clipped without ellipses, with a counted overflow row. Set `--tnc-chip-h` to size the rows. Like dots, chips are passive summaries: the whole day cell is the keyboard and pointer target, and the host can open a full selected-day list through `onDateClick`.
|
|
80
|
+
- `gotoDate()` within the displayed month updates the navigation anchor without rebuilding its cells, preserving keyboard focus when a host selects a day. A subsequent view switch uses that selected date.
|
|
81
|
+
|
|
79
82
|
- `listEmptyContent()` may return a host-owned DOM node for an empty list, such as an explanation and recovery action. The default translated empty message remains when omitted. The node is removed when the list gains items.
|
|
80
83
|
|
|
81
84
|
- `monthDisplay: "dots"` draws every item in a month cell as a small dot (`--tnc-dot-size`, `--tnc-dot-gap`) that wraps across the cell, with "+N" when they do not fit; `dayMaxEvents` caps the dots (`false` lets cells grow). The day cell is the tap target: dots ignore the pointer, are `aria-hidden`, get no content hook, and the cell is labelled "<date>, N items" (`text.itemCount`). Items in dots have `variant: "indicator"`; colour them with `color` or `itemDidMount` setting `--tnc-c`.
|
|
@@ -154,6 +157,9 @@ overlapping event backgrounds. It is `100%` for non-overlapping placements.
|
|
|
154
157
|
Additional semantic colours: `--tnc-theme-now`, `--tnc-theme-warn`,
|
|
155
158
|
`--tnc-theme-ok`, `--tnc-theme-amber`. Item colours come from `color`,
|
|
156
159
|
`backgroundColor`, `borderColor` and `textColor`.
|
|
160
|
+
Set an item's `timeDisplay: "start"` for deadlines or other point-in-time markers:
|
|
161
|
+
visible and accessible labels show only its exact start time. This presentation
|
|
162
|
+
option does not alter the item's stored dates, layout duration or hit area.
|
|
157
163
|
Override sizing tokens such as `--tnc-font-size`, `--tnc-small`,
|
|
158
164
|
`--tnc-radius`, `--tnc-bar-h`, `--tnc-more-h`, `--tnc-dot-size` and
|
|
159
165
|
`--tnc-dot-gap` directly on `.tnc` (not just its ancestor).
|
package/dist/calendar.css
CHANGED
|
@@ -21,6 +21,12 @@
|
|
|
21
21
|
--tnc-ok: var(--tnc-theme-ok, #16a34a);
|
|
22
22
|
--tnc-amber: var(--tnc-theme-amber, #d97706);
|
|
23
23
|
--tnc-off: color-mix(in srgb, var(--tnc-text) 3.5%, transparent);
|
|
24
|
+
--tnc-hover: var(--tnc-theme-hover, var(--tnc-surface-2));
|
|
25
|
+
--tnc-active: var(--tnc-theme-active, var(--tnc-surface-3));
|
|
26
|
+
--tnc-selected: var(--tnc-theme-selected, var(--tnc-accent-soft));
|
|
27
|
+
--tnc-focus: var(--tnc-theme-focus, var(--tnc-accent));
|
|
28
|
+
--tnc-motion: var(--tnc-theme-motion, 100ms);
|
|
29
|
+
--tnc-drag-opacity: var(--tnc-theme-drag-opacity, 0.4);
|
|
24
30
|
--tnc-shadow: 0 8px 24px rgb(0 0 0 / 0.16);
|
|
25
31
|
--tnc-radius: 6px;
|
|
26
32
|
/* Time-grid share for tracked ("actual") items where they overlap planned ones. */
|
|
@@ -123,8 +129,11 @@
|
|
|
123
129
|
font-size: var(--tnc-font-size);
|
|
124
130
|
line-height: 1.2;
|
|
125
131
|
}
|
|
126
|
-
|
|
127
|
-
|
|
132
|
+
@media (hover: hover) {
|
|
133
|
+
.tnc-btn:hover {
|
|
134
|
+
background: var(--tnc-surface-3);
|
|
135
|
+
}
|
|
136
|
+
|
|
128
137
|
}
|
|
129
138
|
.tnc-btn[aria-pressed="true"] {
|
|
130
139
|
background: var(--tnc-accent-soft);
|
|
@@ -177,10 +186,12 @@
|
|
|
177
186
|
cursor: pointer;
|
|
178
187
|
text-align: inherit;
|
|
179
188
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
189
|
+
@media (hover: hover) {
|
|
190
|
+
.tnc-navlink:hover {
|
|
191
|
+
text-decoration: underline;
|
|
192
|
+
}
|
|
183
193
|
|
|
194
|
+
}
|
|
184
195
|
/* ---------------------------------------------------------------- items */
|
|
185
196
|
.tnc-item {
|
|
186
197
|
--c: var(--tnc-c, var(--tnc-item-c));
|
|
@@ -246,6 +257,7 @@
|
|
|
246
257
|
|
|
247
258
|
/* timed (time grid) */
|
|
248
259
|
.tnc-item--timed {
|
|
260
|
+
container-type: size;
|
|
249
261
|
padding: 2px 5px 2px 6px;
|
|
250
262
|
background: var(--tnc-bg, color-mix(in srgb, var(--c) 14%, var(--tnc-surface)));
|
|
251
263
|
border: 1px solid var(--tnc-border, color-mix(in srgb, var(--c) 34%, transparent));
|
|
@@ -261,7 +273,7 @@
|
|
|
261
273
|
-webkit-box-orient: vertical;
|
|
262
274
|
-webkit-line-clamp: 6;
|
|
263
275
|
white-space: normal;
|
|
264
|
-
overflow-wrap:
|
|
276
|
+
overflow-wrap: normal;
|
|
265
277
|
}
|
|
266
278
|
.tnc-item--timed.is-short {
|
|
267
279
|
padding-top: 0;
|
|
@@ -281,8 +293,18 @@
|
|
|
281
293
|
.tnc-item--timed.is-short .tnc-item-time {
|
|
282
294
|
flex: none;
|
|
283
295
|
}
|
|
284
|
-
|
|
285
|
-
|
|
296
|
+
@container (max-height: 50px) and (max-width: 239px) {
|
|
297
|
+
.tnc-item--timed .tnc-item-time {
|
|
298
|
+
display: none;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
@container (max-width: 109px) {
|
|
302
|
+
.tnc-item--timed .tnc-item-time-end {
|
|
303
|
+
display: none;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
.tnc:is(.tnc-dragging-resize-start, .tnc-dragging-resize-end) .tnc-item--timed.is-dragging .tnc-item-time-end {
|
|
307
|
+
display: inline;
|
|
286
308
|
}
|
|
287
309
|
.tnc-item--timed.is-cont-start {
|
|
288
310
|
border-top-left-radius: 0;
|
|
@@ -348,10 +370,16 @@
|
|
|
348
370
|
align-items: center;
|
|
349
371
|
white-space: nowrap;
|
|
350
372
|
}
|
|
351
|
-
.tnc-item--dot:hover,
|
|
352
373
|
.tnc-item--dot.is-hover {
|
|
353
374
|
background: var(--tnc-surface-3);
|
|
354
375
|
}
|
|
376
|
+
|
|
377
|
+
@media (hover: hover) {
|
|
378
|
+
.tnc-item--dot:hover {
|
|
379
|
+
background: var(--tnc-surface-3);
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
}
|
|
355
383
|
.tnc-item--dot .tnc-item-main {
|
|
356
384
|
gap: 4px;
|
|
357
385
|
align-items: center;
|
|
@@ -442,9 +470,12 @@
|
|
|
442
470
|
overflow: hidden;
|
|
443
471
|
text-overflow: ellipsis;
|
|
444
472
|
}
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
473
|
+
@media (hover: hover) {
|
|
474
|
+
.tnc-more:hover {
|
|
475
|
+
background: var(--tnc-surface-3);
|
|
476
|
+
color: var(--tnc-text);
|
|
477
|
+
}
|
|
478
|
+
|
|
448
479
|
}
|
|
449
480
|
.tnc-more--stack {
|
|
450
481
|
height: auto;
|
|
@@ -453,6 +484,45 @@
|
|
|
453
484
|
background: var(--tnc-surface-3);
|
|
454
485
|
z-index: 30;
|
|
455
486
|
}
|
|
487
|
+
.tnc-more.tnc-more--collision {
|
|
488
|
+
display: grid;
|
|
489
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
490
|
+
align-content: center;
|
|
491
|
+
align-items: stretch;
|
|
492
|
+
justify-content: center;
|
|
493
|
+
gap: 2px 4px;
|
|
494
|
+
padding: 2px 4px;
|
|
495
|
+
border: 1px solid var(--tnc-line-strong);
|
|
496
|
+
border-radius: var(--tnc-radius);
|
|
497
|
+
background: var(--tnc-surface-2);
|
|
498
|
+
text-align: start;
|
|
499
|
+
white-space: normal;
|
|
500
|
+
}
|
|
501
|
+
.tnc-collision-count {
|
|
502
|
+
color: var(--tnc-text);
|
|
503
|
+
font-weight: 650;
|
|
504
|
+
white-space: nowrap;
|
|
505
|
+
flex: none;
|
|
506
|
+
line-height: 1.3;
|
|
507
|
+
}
|
|
508
|
+
.tnc-collision-range {
|
|
509
|
+
min-width: 0;
|
|
510
|
+
text-align: end;
|
|
511
|
+
color: var(--tnc-text);
|
|
512
|
+
font-size: var(--tnc-small);
|
|
513
|
+
white-space: nowrap;
|
|
514
|
+
overflow: hidden;
|
|
515
|
+
text-overflow: ellipsis;
|
|
516
|
+
}
|
|
517
|
+
.tnc-item--indicator .tnc-item-title {
|
|
518
|
+
white-space: nowrap;
|
|
519
|
+
overflow-wrap: normal;
|
|
520
|
+
text-overflow: ellipsis;
|
|
521
|
+
display: block;
|
|
522
|
+
}
|
|
523
|
+
.tnc-item--indicator .tnc-item-main {
|
|
524
|
+
min-width: 0;
|
|
525
|
+
}
|
|
456
526
|
|
|
457
527
|
/* ------------------------------------------------------------ time grid */
|
|
458
528
|
.tnc-tg {
|
|
@@ -481,16 +551,24 @@
|
|
|
481
551
|
text-underline-offset: 3px;
|
|
482
552
|
}
|
|
483
553
|
.tnc-more--collision {
|
|
484
|
-
display:
|
|
485
|
-
|
|
486
|
-
|
|
554
|
+
display: grid;
|
|
555
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
556
|
+
align-content: center;
|
|
557
|
+
align-items: center;
|
|
558
|
+
gap: 2px 4px;
|
|
559
|
+
padding: 2px 4px;
|
|
487
560
|
min-height: 40px;
|
|
488
561
|
white-space: normal;
|
|
489
562
|
text-align: start;
|
|
490
563
|
}
|
|
491
564
|
.tnc-collision-title {
|
|
565
|
+
grid-column: 1 / -1;
|
|
492
566
|
flex: 1;
|
|
493
567
|
min-width: 0;
|
|
568
|
+
text-overflow: ellipsis;
|
|
569
|
+
white-space: nowrap;
|
|
570
|
+
color: var(--tnc-text);
|
|
571
|
+
font-weight: 500;
|
|
494
572
|
display: -webkit-box;
|
|
495
573
|
-webkit-box-orient: vertical;
|
|
496
574
|
-webkit-line-clamp: 3;
|
|
@@ -531,6 +609,7 @@
|
|
|
531
609
|
font-size: 10px;
|
|
532
610
|
}
|
|
533
611
|
.tnc-dh {
|
|
612
|
+
container-type: inline-size;
|
|
534
613
|
min-width: 0;
|
|
535
614
|
padding: 5px 6px 5px 7px;
|
|
536
615
|
border-left: 1px solid var(--tnc-line);
|
|
@@ -559,6 +638,18 @@
|
|
|
559
638
|
border-radius: 999px;
|
|
560
639
|
padding: 0 7px;
|
|
561
640
|
}
|
|
641
|
+
@container (max-width: 64px) {
|
|
642
|
+
.tnc-dh-label {
|
|
643
|
+
flex-direction: column;
|
|
644
|
+
align-items: center;
|
|
645
|
+
gap: 2px;
|
|
646
|
+
width: 100%;
|
|
647
|
+
}
|
|
648
|
+
.tnc-dh-link {
|
|
649
|
+
display: block;
|
|
650
|
+
width: 100%;
|
|
651
|
+
}
|
|
652
|
+
}
|
|
562
653
|
.tnc-cap {
|
|
563
654
|
position: relative;
|
|
564
655
|
margin-top: 5px;
|
|
@@ -824,6 +915,9 @@
|
|
|
824
915
|
overflow: hidden;
|
|
825
916
|
pointer-events: none;
|
|
826
917
|
}
|
|
918
|
+
.tnc-dg-dots[hidden] {
|
|
919
|
+
display: none;
|
|
920
|
+
}
|
|
827
921
|
.tnc-dg-dots.is-unlimited {
|
|
828
922
|
position: static;
|
|
829
923
|
padding: 0 6px 4px;
|
|
@@ -849,6 +943,45 @@
|
|
|
849
943
|
font-variant-numeric: tabular-nums;
|
|
850
944
|
}
|
|
851
945
|
|
|
946
|
+
.tnc-dg--dots .tnc-dg-top {
|
|
947
|
+
justify-content: center;
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
.tnc-dg--dots .tnc-dg-dots {
|
|
951
|
+
justify-content: center;
|
|
952
|
+
align-content: flex-start;
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
.tnc-dg--chips {
|
|
956
|
+
--tnc-chip-h: 20px;
|
|
957
|
+
}
|
|
958
|
+
.tnc-dg--chips .tnc-dg-dots {
|
|
959
|
+
left: 2px;
|
|
960
|
+
right: 2px;
|
|
961
|
+
flex-direction: column;
|
|
962
|
+
flex-wrap: nowrap;
|
|
963
|
+
align-items: stretch;
|
|
964
|
+
justify-content: flex-start;
|
|
965
|
+
}
|
|
966
|
+
.tnc-dg--chips .tnc-dg-dots > .tnc-item--indicator {
|
|
967
|
+
width: 100%;
|
|
968
|
+
height: var(--tnc-chip-h);
|
|
969
|
+
border: 0;
|
|
970
|
+
border-radius: var(--tnc-radius);
|
|
971
|
+
padding: 0 2px;
|
|
972
|
+
color: var(--tnc-fg, var(--tnc-text));
|
|
973
|
+
font-size: 10px;
|
|
974
|
+
line-height: var(--tnc-chip-h);
|
|
975
|
+
}
|
|
976
|
+
.tnc-dg--chips .tnc-item-title {
|
|
977
|
+
display: block;
|
|
978
|
+
white-space: nowrap;
|
|
979
|
+
text-overflow: clip;
|
|
980
|
+
}
|
|
981
|
+
.tnc-dg--chips .tnc-dg-dots-more {
|
|
982
|
+
line-height: var(--tnc-chip-h);
|
|
983
|
+
}
|
|
984
|
+
|
|
852
985
|
/* ------------------------------------------------------------------ list */
|
|
853
986
|
.tnc-list {
|
|
854
987
|
display: flex;
|
|
@@ -886,8 +1019,11 @@
|
|
|
886
1019
|
border-radius: 0;
|
|
887
1020
|
font-size: var(--tnc-font-size);
|
|
888
1021
|
}
|
|
889
|
-
|
|
890
|
-
|
|
1022
|
+
@media (hover: hover) {
|
|
1023
|
+
.tnc-item--list:hover {
|
|
1024
|
+
background: var(--tnc-surface-2);
|
|
1025
|
+
}
|
|
1026
|
+
|
|
891
1027
|
}
|
|
892
1028
|
.tnc-item--list .tnc-item-main {
|
|
893
1029
|
gap: 10px;
|
|
@@ -985,8 +1121,11 @@
|
|
|
985
1121
|
.tnc-strip-today[hidden] {
|
|
986
1122
|
display: none;
|
|
987
1123
|
}
|
|
988
|
-
|
|
989
|
-
|
|
1124
|
+
@media (hover: hover) {
|
|
1125
|
+
.tnc-strip-today:hover {
|
|
1126
|
+
background: var(--tnc-surface-2);
|
|
1127
|
+
}
|
|
1128
|
+
|
|
990
1129
|
}
|
|
991
1130
|
.tnc-strip-slot {
|
|
992
1131
|
display: flex;
|
|
@@ -1006,9 +1145,12 @@
|
|
|
1006
1145
|
line-height: 1;
|
|
1007
1146
|
cursor: pointer;
|
|
1008
1147
|
}
|
|
1009
|
-
|
|
1010
|
-
.tnc-strip-
|
|
1011
|
-
|
|
1148
|
+
@media (hover: hover) {
|
|
1149
|
+
.tnc-strip-title:hover,
|
|
1150
|
+
.tnc-strip-nav:hover {
|
|
1151
|
+
background: var(--tnc-surface-2);
|
|
1152
|
+
}
|
|
1153
|
+
|
|
1012
1154
|
}
|
|
1013
1155
|
.tnc-strip-dows,
|
|
1014
1156
|
.tnc-strip-grid {
|
|
@@ -1081,11 +1223,17 @@
|
|
|
1081
1223
|
.tnc-strip-day.is-in-range .tnc-strip-num {
|
|
1082
1224
|
background: var(--tnc-accent-soft);
|
|
1083
1225
|
}
|
|
1084
|
-
|
|
1085
|
-
|
|
1226
|
+
@media (hover: hover) {
|
|
1227
|
+
.tnc-strip-day:hover .tnc-strip-num {
|
|
1228
|
+
background: var(--tnc-surface-2);
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1086
1231
|
}
|
|
1087
|
-
|
|
1088
|
-
|
|
1232
|
+
@media (hover: hover) {
|
|
1233
|
+
.tnc-strip-day.is-focus:hover .tnc-strip-num {
|
|
1234
|
+
background: var(--tnc-accent);
|
|
1235
|
+
}
|
|
1236
|
+
|
|
1089
1237
|
}
|
|
1090
1238
|
.tnc-strip-day.is-drop-target .tnc-strip-num {
|
|
1091
1239
|
box-shadow: 0 0 0 2px var(--tnc-accent);
|
|
@@ -1162,9 +1310,12 @@
|
|
|
1162
1310
|
font-weight: 700;
|
|
1163
1311
|
text-align: center;
|
|
1164
1312
|
}
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1313
|
+
@media (hover: hover) {
|
|
1314
|
+
.tnc-list-add:hover {
|
|
1315
|
+
color: var(--tnc-accent);
|
|
1316
|
+
background: var(--tnc-surface-2);
|
|
1317
|
+
}
|
|
1318
|
+
|
|
1168
1319
|
}
|
|
1169
1320
|
.tnc-list-add:focus-visible {
|
|
1170
1321
|
outline: 2px solid var(--tnc-accent);
|
|
@@ -1189,10 +1340,22 @@
|
|
|
1189
1340
|
padding: 12px;
|
|
1190
1341
|
}
|
|
1191
1342
|
.tnc-year-grid {
|
|
1343
|
+
--tnc-year-day-min: var(--tnc-theme-date-target, 40px);
|
|
1192
1344
|
display: grid;
|
|
1193
|
-
grid-template-columns: repeat(auto-
|
|
1345
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, calc(7 * var(--tnc-year-day-min) + 12px)), 1fr));
|
|
1194
1346
|
gap: 18px 16px;
|
|
1195
1347
|
}
|
|
1348
|
+
.tnc-ym {
|
|
1349
|
+
min-width: 0;
|
|
1350
|
+
}
|
|
1351
|
+
.tnc .tnc-ym-title,
|
|
1352
|
+
.tnc .tnc-ym-day {
|
|
1353
|
+
appearance: none;
|
|
1354
|
+
box-shadow: none;
|
|
1355
|
+
background-image: none;
|
|
1356
|
+
font-family: inherit;
|
|
1357
|
+
color: var(--tnc-text);
|
|
1358
|
+
}
|
|
1196
1359
|
.tnc-ym-title {
|
|
1197
1360
|
display: block;
|
|
1198
1361
|
border: 0;
|
|
@@ -1214,21 +1377,28 @@
|
|
|
1214
1377
|
}
|
|
1215
1378
|
.tnc-ym-day {
|
|
1216
1379
|
position: relative;
|
|
1380
|
+
min-width: var(--tnc-year-day-min);
|
|
1381
|
+
min-height: var(--tnc-year-day-min);
|
|
1382
|
+
width: 100%;
|
|
1383
|
+
height: auto;
|
|
1217
1384
|
aspect-ratio: 1;
|
|
1218
1385
|
border: 0;
|
|
1219
1386
|
border-radius: 5px;
|
|
1220
1387
|
padding: 0;
|
|
1221
1388
|
cursor: pointer;
|
|
1222
1389
|
font-size: 11px;
|
|
1223
|
-
background: color-mix(in srgb, var(--tnc-accent) calc(var(--tnc-heat, 0) *
|
|
1390
|
+
background: color-mix(in srgb, var(--tnc-accent) calc(var(--tnc-heat, 0) * 14%), transparent);
|
|
1224
1391
|
display: flex;
|
|
1225
1392
|
flex-direction: column;
|
|
1226
1393
|
align-items: center;
|
|
1227
1394
|
justify-content: center;
|
|
1228
1395
|
gap: 1px;
|
|
1229
1396
|
}
|
|
1230
|
-
|
|
1231
|
-
|
|
1397
|
+
@media (hover: hover) {
|
|
1398
|
+
.tnc-ym-day:hover {
|
|
1399
|
+
outline: 1px solid var(--tnc-line-strong);
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1232
1402
|
}
|
|
1233
1403
|
.tnc-ym-day.is-weekend .tnc-ym-num {
|
|
1234
1404
|
color: var(--tnc-muted);
|
|
@@ -1248,16 +1418,14 @@
|
|
|
1248
1418
|
width: 4px;
|
|
1249
1419
|
height: 4px;
|
|
1250
1420
|
border-radius: 50%;
|
|
1251
|
-
background: var(--tnc-c, var(--tnc-accent));
|
|
1421
|
+
background: color-mix(in srgb, var(--tnc-c, var(--tnc-accent)) 65%, var(--tnc-text));
|
|
1252
1422
|
}
|
|
1253
1423
|
|
|
1254
|
-
/* Two months a row: each day is a shaded square, and its count is in its label. */
|
|
1255
1424
|
@container (max-width: 520px) {
|
|
1256
1425
|
.tnc-year-scroll {
|
|
1257
1426
|
padding: 8px 4px;
|
|
1258
1427
|
}
|
|
1259
1428
|
.tnc-year-grid {
|
|
1260
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1261
1429
|
gap: 14px 12px;
|
|
1262
1430
|
}
|
|
1263
1431
|
.tnc-ym-title {
|
|
@@ -1273,7 +1441,7 @@
|
|
|
1273
1441
|
}
|
|
1274
1442
|
/* Without dots, one item must still read as busy. */
|
|
1275
1443
|
.tnc-ym-day.has-items {
|
|
1276
|
-
background: color-mix(in srgb, var(--tnc-accent) calc((0.3 + var(--tnc-heat) * 0.7) *
|
|
1444
|
+
background: color-mix(in srgb, var(--tnc-accent) calc((0.3 + var(--tnc-heat) * 0.7) * 20%), transparent);
|
|
1277
1445
|
}
|
|
1278
1446
|
.tnc-ym-dots {
|
|
1279
1447
|
display: none;
|
|
@@ -1542,13 +1710,19 @@
|
|
|
1542
1710
|
.tnc-item--timeline.is-link-invalid > .tnc-item-main {
|
|
1543
1711
|
box-shadow: 0 0 0 2px var(--tnc-warn);
|
|
1544
1712
|
}
|
|
1545
|
-
.tnc-item--timeline:hover .tnc-port,
|
|
1546
1713
|
.tnc-item--timeline.is-hover .tnc-port,
|
|
1547
1714
|
.tnc-item--timeline.is-selected .tnc-port,
|
|
1548
1715
|
.tnc-item--timeline:focus-visible .tnc-port,
|
|
1549
1716
|
.tnc-tl.is-linking .tnc-item--timeline .tnc-port {
|
|
1550
1717
|
opacity: 1;
|
|
1551
1718
|
}
|
|
1719
|
+
|
|
1720
|
+
@media (hover: hover) {
|
|
1721
|
+
.tnc-item--timeline:hover .tnc-port {
|
|
1722
|
+
opacity: 1;
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1725
|
+
}
|
|
1552
1726
|
@media (pointer: coarse) {
|
|
1553
1727
|
.tnc-port {
|
|
1554
1728
|
--tnc-port-hit: 44px;
|
|
@@ -1669,8 +1843,11 @@
|
|
|
1669
1843
|
font-size: 16px;
|
|
1670
1844
|
line-height: 1;
|
|
1671
1845
|
}
|
|
1672
|
-
|
|
1673
|
-
|
|
1846
|
+
@media (hover: hover) {
|
|
1847
|
+
.tnc-popover-close:hover {
|
|
1848
|
+
background: var(--tnc-surface-3);
|
|
1849
|
+
}
|
|
1850
|
+
|
|
1674
1851
|
}
|
|
1675
1852
|
.tnc-popover-body {
|
|
1676
1853
|
min-height: 0;
|
|
@@ -1683,6 +1860,8 @@
|
|
|
1683
1860
|
.tnc-popover-body .tnc-item {
|
|
1684
1861
|
position: relative;
|
|
1685
1862
|
flex: none;
|
|
1863
|
+
height: auto;
|
|
1864
|
+
min-height: 40px;
|
|
1686
1865
|
}
|
|
1687
1866
|
.tnc-popover-title {
|
|
1688
1867
|
min-width: 0;
|
|
@@ -1690,10 +1869,6 @@
|
|
|
1690
1869
|
text-overflow: ellipsis;
|
|
1691
1870
|
white-space: nowrap;
|
|
1692
1871
|
}
|
|
1693
|
-
.tnc-popover-body .tnc-item {
|
|
1694
|
-
height: auto;
|
|
1695
|
-
min-height: 40px;
|
|
1696
|
-
}
|
|
1697
1872
|
.tnc-popover-body .tnc-item-main {
|
|
1698
1873
|
min-height: 40px;
|
|
1699
1874
|
}
|
|
@@ -1706,6 +1881,128 @@
|
|
|
1706
1881
|
outline-offset: -2px;
|
|
1707
1882
|
}
|
|
1708
1883
|
|
|
1884
|
+
.tnc .tnc-col-actual .tnc-item-title {
|
|
1885
|
+
white-space: nowrap;
|
|
1886
|
+
overflow-wrap: normal;
|
|
1887
|
+
display: block;
|
|
1888
|
+
text-overflow: ellipsis;
|
|
1889
|
+
}
|
|
1890
|
+
.tnc .tnc-col-actual .tnc-item-main {
|
|
1891
|
+
min-width: 0;
|
|
1892
|
+
}
|
|
1893
|
+
.tnc .tnc-col-actual .tnc-item--timed {
|
|
1894
|
+
border-top: 1px solid var(--tnc-surface);
|
|
1895
|
+
border-bottom: 1px solid var(--tnc-surface);
|
|
1896
|
+
}
|
|
1897
|
+
.tnc .tnc-item--timed {
|
|
1898
|
+
box-shadow: inset 0 -1px 0 var(--tnc-surface);
|
|
1899
|
+
}
|
|
1900
|
+
.tnc .tnc-item.is-draggable {
|
|
1901
|
+
cursor: grab;
|
|
1902
|
+
}
|
|
1903
|
+
.tnc .tnc-item.is-dragging {
|
|
1904
|
+
opacity: 0.96;
|
|
1905
|
+
box-shadow: var(--tnc-theme-drag-lift, var(--tnc-shadow));
|
|
1906
|
+
outline: 1px solid var(--tnc-focus);
|
|
1907
|
+
outline-offset: -1px;
|
|
1908
|
+
}
|
|
1909
|
+
.tnc .tnc-item--list.is-dragging:not(.tnc-drag-preview) {
|
|
1910
|
+
opacity: var(--tnc-drag-opacity);
|
|
1911
|
+
box-shadow: none;
|
|
1912
|
+
}
|
|
1913
|
+
.tnc .tnc-item.tnc-drag-source {
|
|
1914
|
+
opacity: var(--tnc-drag-opacity);
|
|
1915
|
+
pointer-events: none;
|
|
1916
|
+
box-shadow: none;
|
|
1917
|
+
outline: none;
|
|
1918
|
+
}
|
|
1919
|
+
.tnc .tnc-item.tnc-drag-preview {
|
|
1920
|
+
position: absolute;
|
|
1921
|
+
z-index: var(--tnc-theme-drag-z, 1000);
|
|
1922
|
+
pointer-events: none;
|
|
1923
|
+
opacity: 1;
|
|
1924
|
+
background: var(--tnc-theme-drag-surface, var(--tnc-surface));
|
|
1925
|
+
border: 1px solid var(--tnc-theme-drag-border, var(--tnc-line-strong));
|
|
1926
|
+
box-shadow: var(--tnc-theme-drag-shadow, var(--tnc-shadow));
|
|
1927
|
+
outline: none;
|
|
1928
|
+
}
|
|
1929
|
+
.tnc .tnc-item.is-write-pending {
|
|
1930
|
+
opacity: 0.65;
|
|
1931
|
+
cursor: progress;
|
|
1932
|
+
}
|
|
1933
|
+
.tnc .tnc-item.is-write-failed {
|
|
1934
|
+
outline: 2px dashed var(--tnc-warn);
|
|
1935
|
+
outline-offset: -2px;
|
|
1936
|
+
}
|
|
1937
|
+
.tnc.tnc-drop-denied .tnc-item.is-dragging {
|
|
1938
|
+
outline: 2px dashed var(--tnc-warn);
|
|
1939
|
+
outline-offset: -2px;
|
|
1940
|
+
}
|
|
1941
|
+
.tnc.tnc-drop-denied,
|
|
1942
|
+
.tnc.tnc-drop-denied .tnc-item.is-dragging {
|
|
1943
|
+
cursor: not-allowed;
|
|
1944
|
+
}
|
|
1945
|
+
.tnc .tnc-item.is-selected {
|
|
1946
|
+
background-color: var(--tnc-selected);
|
|
1947
|
+
outline: 2px solid var(--tnc-accent);
|
|
1948
|
+
outline-offset: -2px;
|
|
1949
|
+
}
|
|
1950
|
+
.tnc :is(.tnc-item, .tnc-more, .tnc-strip-day, .tnc-btn, .tnc-list-add):focus-visible {
|
|
1951
|
+
outline: 2px solid var(--tnc-focus);
|
|
1952
|
+
outline-offset: -2px;
|
|
1953
|
+
}
|
|
1954
|
+
.tnc :is(.tnc-more, .tnc-btn, .tnc-list-add):disabled {
|
|
1955
|
+
opacity: var(--tnc-drag-opacity);
|
|
1956
|
+
cursor: not-allowed;
|
|
1957
|
+
}
|
|
1958
|
+
.tnc :is(.tnc-more, .tnc-btn, .tnc-list-add):active {
|
|
1959
|
+
background: var(--tnc-active);
|
|
1960
|
+
}
|
|
1961
|
+
.tnc .tnc-strip-day:active .tnc-strip-num {
|
|
1962
|
+
background: var(--tnc-active);
|
|
1963
|
+
}
|
|
1964
|
+
.tnc .tnc-strip-day.is-focus:active .tnc-strip-num {
|
|
1965
|
+
background: var(--tnc-accent);
|
|
1966
|
+
}
|
|
1967
|
+
.tnc .tnc-popover {
|
|
1968
|
+
background: var(--tnc-surface);
|
|
1969
|
+
}
|
|
1970
|
+
@media (hover: hover) {
|
|
1971
|
+
.tnc .tnc-item:not(.is-selected):not(.is-dragging):hover {
|
|
1972
|
+
filter: none;
|
|
1973
|
+
background-color: var(--tnc-hover);
|
|
1974
|
+
transition: background-color var(--tnc-motion);
|
|
1975
|
+
}
|
|
1976
|
+
.tnc .tnc-item--list:hover {
|
|
1977
|
+
box-shadow: none;
|
|
1978
|
+
}
|
|
1979
|
+
.tnc .tnc-item.is-selected:hover {
|
|
1980
|
+
background-color: var(--tnc-theme-selected-hover, var(--tnc-selected));
|
|
1981
|
+
}
|
|
1982
|
+
.tnc .tnc-more:hover {
|
|
1983
|
+
background: var(--tnc-hover);
|
|
1984
|
+
}
|
|
1985
|
+
}
|
|
1986
|
+
@media (hover: none) {
|
|
1987
|
+
.tnc .tnc-item:hover {
|
|
1988
|
+
filter: none;
|
|
1989
|
+
}
|
|
1990
|
+
.tnc .tnc-item--list:not(.is-selected):hover {
|
|
1991
|
+
background: none;
|
|
1992
|
+
}
|
|
1993
|
+
.tnc .tnc-strip-day:not(.is-focus):hover .tnc-strip-num {
|
|
1994
|
+
background: none;
|
|
1995
|
+
}
|
|
1996
|
+
}
|
|
1997
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
1998
|
+
.tnc-item.is-write-changed {
|
|
1999
|
+
animation: tnc-write-settle calc(var(--tnc-motion) * 2) ease-out;
|
|
2000
|
+
}
|
|
2001
|
+
}
|
|
2002
|
+
@keyframes tnc-write-settle {
|
|
2003
|
+
from { opacity: var(--tnc-drag-opacity); }
|
|
2004
|
+
to { opacity: 1; }
|
|
2005
|
+
}
|
|
1709
2006
|
@media (prefers-reduced-motion: reduce) {
|
|
1710
2007
|
.tnc * {
|
|
1711
2008
|
transition: none !important;
|