@svar-ui/svelte-kanban 2.6.0

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.
Files changed (58) hide show
  1. package/dist/components/Avatar.svelte +87 -0
  2. package/dist/components/Avatar.svelte.d.ts +17 -0
  3. package/dist/components/Card.svelte +346 -0
  4. package/dist/components/Card.svelte.d.ts +9 -0
  5. package/dist/components/CardList.svelte +343 -0
  6. package/dist/components/CardList.svelte.d.ts +21 -0
  7. package/dist/components/CardWrapper.svelte +49 -0
  8. package/dist/components/CardWrapper.svelte.d.ts +15 -0
  9. package/dist/components/Column.svelte +230 -0
  10. package/dist/components/Column.svelte.d.ts +24 -0
  11. package/dist/components/ContextMenu.svelte +111 -0
  12. package/dist/components/ContextMenu.svelte.d.ts +18 -0
  13. package/dist/components/DragGhost.svelte +57 -0
  14. package/dist/components/DragGhost.svelte.d.ts +14 -0
  15. package/dist/components/Editor.svelte +108 -0
  16. package/dist/components/Editor.svelte.d.ts +10 -0
  17. package/dist/components/ExportLayout.svelte +52 -0
  18. package/dist/components/ExportLayout.svelte.d.ts +15 -0
  19. package/dist/components/Kanban.svelte +100 -0
  20. package/dist/components/Kanban.svelte.d.ts +186 -0
  21. package/dist/components/Layout.svelte +362 -0
  22. package/dist/components/Layout.svelte.d.ts +19 -0
  23. package/dist/components/Toolbar.svelte +97 -0
  24. package/dist/components/Toolbar.svelte.d.ts +12 -0
  25. package/dist/components/useCardOverlay.svelte.d.ts +24 -0
  26. package/dist/components/useCardOverlay.svelte.js +60 -0
  27. package/dist/components/useDrag.svelte.d.ts +22 -0
  28. package/dist/components/useDrag.svelte.js +16 -0
  29. package/dist/context.d.ts +3 -0
  30. package/dist/context.js +3 -0
  31. package/dist/defaults.d.ts +8 -0
  32. package/dist/defaults.js +85 -0
  33. package/dist/directives/dblclick.d.ts +13 -0
  34. package/dist/directives/dblclick.js +26 -0
  35. package/dist/directives/drag.d.ts +11 -0
  36. package/dist/directives/drag.js +183 -0
  37. package/dist/env.d.ts +9 -0
  38. package/dist/export/Card.svelte +5 -0
  39. package/dist/export/Card.svelte.d.ts +11 -0
  40. package/dist/export/Kanban.svelte +30 -0
  41. package/dist/export/Kanban.svelte.d.ts +16 -0
  42. package/dist/export.d.ts +3 -0
  43. package/dist/export.js +15 -0
  44. package/dist/index.d.ts +15 -0
  45. package/dist/index.js +15 -0
  46. package/dist/themes/Print.svelte +126 -0
  47. package/dist/themes/Print.svelte.d.ts +13 -0
  48. package/dist/themes/PrintBW.svelte +153 -0
  49. package/dist/themes/PrintBW.svelte.d.ts +13 -0
  50. package/dist/themes/Willow.svelte +45 -0
  51. package/dist/themes/Willow.svelte.d.ts +7 -0
  52. package/dist/themes/WillowDark.svelte +49 -0
  53. package/dist/themes/WillowDark.svelte.d.ts +7 -0
  54. package/dist/types.d.ts +86 -0
  55. package/dist/types.js +1 -0
  56. package/license.txt +21 -0
  57. package/package.json +59 -0
  58. package/readme.md +100 -0
@@ -0,0 +1,85 @@
1
+ export function getCardShape() {
2
+ return {
3
+ priority: true,
4
+ progress: true,
5
+ description: true,
6
+ deadline: true,
7
+ tags: true,
8
+ };
9
+ }
10
+ export function getPriorityOptions() {
11
+ return [
12
+ { id: 1, label: "Low", css: "wx-card-priority-low" },
13
+ { id: 2, label: "Medium", css: "wx-card-priority-medium" },
14
+ { id: 3, label: "High", css: "wx-card-priority-high" },
15
+ ];
16
+ }
17
+ function configOf(shape) {
18
+ return typeof shape === "object" && shape !== null ? shape : undefined;
19
+ }
20
+ export function getEditorItems(shape) {
21
+ const s = shape ?? {
22
+ description: true,
23
+ priority: true,
24
+ progress: true,
25
+ deadline: true,
26
+ tags: false,
27
+ users: false,
28
+ };
29
+ const items = [
30
+ { comp: "text", key: "label", label: "Title", required: true },
31
+ ];
32
+ if (s.description) {
33
+ items.push({
34
+ comp: "textarea",
35
+ key: "description",
36
+ label: "Description",
37
+ });
38
+ }
39
+ if (s.priority) {
40
+ const priorityData = configOf(s.priority)?.data;
41
+ items.push({
42
+ comp: "richselect",
43
+ key: "priority",
44
+ label: "Priority",
45
+ options: priorityData ?? getPriorityOptions(),
46
+ });
47
+ }
48
+ if (s.progress) {
49
+ items.push({
50
+ comp: "slider",
51
+ key: "progress",
52
+ label: "Progress",
53
+ min: 0,
54
+ max: 1,
55
+ step: 0.1,
56
+ });
57
+ }
58
+ if (s.deadline) {
59
+ items.push({
60
+ comp: "datepicker",
61
+ key: "deadline",
62
+ label: "Deadline",
63
+ clear: true,
64
+ });
65
+ }
66
+ const tagsData = configOf(s.tags)?.data;
67
+ if (tagsData) {
68
+ items.push({
69
+ comp: "multicombo",
70
+ key: "tags",
71
+ label: "Tags",
72
+ options: tagsData,
73
+ });
74
+ }
75
+ const usersData = configOf(s.users)?.data;
76
+ if (usersData) {
77
+ items.push({
78
+ comp: "multicombo",
79
+ key: "users",
80
+ label: "Users",
81
+ options: usersData,
82
+ });
83
+ }
84
+ return items;
85
+ }
@@ -0,0 +1,13 @@
1
+ import type { ColumnAccessor, ColumnID, KanbanCard } from "@svar-ui/kanban-store";
2
+ import type { KanbanContextApi } from "../types.js";
3
+ export type DblClickAddCardParams = {
4
+ store: KanbanContextApi;
5
+ column: ColumnID;
6
+ columnAccessor: ColumnAccessor;
7
+ readonly?: boolean;
8
+ };
9
+ export declare function dblclick(node: HTMLElement, initial: DblClickAddCardParams): {
10
+ update(next: DblClickAddCardParams): void;
11
+ destroy(): void;
12
+ };
13
+ export declare function createColumnCard(card: KanbanCard, accessor: ColumnAccessor, column: ColumnID): KanbanCard;
@@ -0,0 +1,26 @@
1
+ export function dblclick(node, initial) {
2
+ let params = initial;
3
+ function onDblClick(e) {
4
+ if (params.readonly)
5
+ return;
6
+ if (e.target !== node)
7
+ return;
8
+ const base = { label: "New card" };
9
+ const card = createColumnCard(base, params.columnAccessor, params.column);
10
+ void params.store.exec("add-card", { card });
11
+ }
12
+ node.addEventListener("dblclick", onDblClick);
13
+ return {
14
+ update(next) {
15
+ params = next;
16
+ },
17
+ destroy() {
18
+ node.removeEventListener("dblclick", onDblClick);
19
+ },
20
+ };
21
+ }
22
+ export function createColumnCard(card, accessor, column) {
23
+ return typeof accessor === "string"
24
+ ? { ...card, [accessor]: column }
25
+ : accessor.set(card, column);
26
+ }
@@ -0,0 +1,11 @@
1
+ import type { KanbanContextApi } from "../types.js";
2
+ import type { DndState } from "../components/useDrag.svelte.js";
3
+ export type CardDragParams = {
4
+ dnd: DndState | undefined;
5
+ store: KanbanContextApi;
6
+ readonly?: boolean;
7
+ };
8
+ export declare function cardDrag(node: HTMLElement, initial: CardDragParams): {
9
+ update(next: CardDragParams): void;
10
+ destroy(): void;
11
+ };
@@ -0,0 +1,183 @@
1
+ import { getID } from "@svar-ui/lib-dom";
2
+ const DRAG_THRESHOLD_PX = 4;
3
+ export function cardDrag(node, initial) {
4
+ let params = initial;
5
+ let startX = 0;
6
+ let startY = 0;
7
+ let pending = false;
8
+ let started = false;
9
+ let active = null;
10
+ function onPointerDown(e) {
11
+ if (e.button !== 0 || params.readonly || !params.dnd || !params.store)
12
+ return;
13
+ const target = e.target;
14
+ const cardEl = target
15
+ ? target.closest("[data-kanban-card-id]")
16
+ : null;
17
+ if (!cardEl || !node.contains(cardEl))
18
+ return;
19
+ const columnEl = cardEl.closest("[data-kanban-column-cards]");
20
+ if (!columnEl)
21
+ return;
22
+ const id = getID(cardEl, "data-kanban-card-id");
23
+ const columnId = getID(columnEl, "data-kanban-column-cards");
24
+ if (id == null || columnId == null)
25
+ return;
26
+ const { viewData } = params.store.getState();
27
+ const column = viewData.columns.find((c) => c.id === columnId);
28
+ const cardRec = column?.cards.find((c) => c.id === id);
29
+ if (!column || !cardRec || cardRec.id == null)
30
+ return;
31
+ active = {
32
+ dnd: params.dnd,
33
+ store: params.store,
34
+ id: cardRec.id,
35
+ column: column.id,
36
+ cardEl,
37
+ };
38
+ pending = true;
39
+ started = false;
40
+ startX = e.clientX;
41
+ startY = e.clientY;
42
+ window.addEventListener("pointermove", onPointerMove);
43
+ window.addEventListener("pointerup", onPointerUp);
44
+ window.addEventListener("keydown", onKeyDown);
45
+ }
46
+ function onPointerMove(e) {
47
+ if (!pending || !active)
48
+ return;
49
+ if (params.readonly) {
50
+ cancelActiveDrag();
51
+ return;
52
+ }
53
+ if (!started) {
54
+ const dx = e.clientX - startX;
55
+ const dy = e.clientY - startY;
56
+ if (dx * dx + dy * dy < DRAG_THRESHOLD_PX * DRAG_THRESHOLD_PX)
57
+ return;
58
+ beginDrag(e, active);
59
+ }
60
+ active.dnd.pointer = { x: e.clientX, y: e.clientY };
61
+ updateTarget(e.clientX, e.clientY, active);
62
+ }
63
+ function onPointerUp() {
64
+ teardownListeners();
65
+ if (started && active) {
66
+ commitDrop(active);
67
+ active.dnd.reset();
68
+ document.body.style.userSelect = "";
69
+ suppressNextClick();
70
+ }
71
+ pending = false;
72
+ started = false;
73
+ active = null;
74
+ }
75
+ function onKeyDown(e) {
76
+ if (e.key !== "Escape" || !started || !active)
77
+ return;
78
+ cancelActiveDrag();
79
+ }
80
+ function beginDrag(e, a) {
81
+ const rect = a.cardEl.getBoundingClientRect();
82
+ a.dnd.width = rect.width;
83
+ a.dnd.height = rect.height;
84
+ a.dnd.offset = { x: startX - rect.left, y: startY - rect.top };
85
+ a.dnd.pointer = { x: e.clientX, y: e.clientY };
86
+ a.dnd.cardId = a.id;
87
+ a.dnd.sourceColumn = a.column;
88
+ a.dnd.target = { column: a.column, beforeId: null };
89
+ a.dnd.active = true;
90
+ document.body.style.userSelect = "none";
91
+ started = true;
92
+ }
93
+ function teardownListeners() {
94
+ window.removeEventListener("pointermove", onPointerMove);
95
+ window.removeEventListener("pointerup", onPointerUp);
96
+ window.removeEventListener("keydown", onKeyDown);
97
+ }
98
+ function cancelActiveDrag() {
99
+ teardownListeners();
100
+ if (started && active) {
101
+ active.dnd.reset();
102
+ document.body.style.userSelect = "";
103
+ }
104
+ pending = false;
105
+ started = false;
106
+ active = null;
107
+ }
108
+ node.addEventListener("pointerdown", onPointerDown);
109
+ return {
110
+ update(next) {
111
+ params = next;
112
+ if (params.readonly && (pending || started))
113
+ cancelActiveDrag();
114
+ },
115
+ destroy() {
116
+ node.removeEventListener("pointerdown", onPointerDown);
117
+ cancelActiveDrag();
118
+ },
119
+ };
120
+ }
121
+ function updateTarget(x, y, a) {
122
+ const el = document.elementFromPoint(x, y);
123
+ const columnEl = el
124
+ ? el.closest("[data-kanban-column-cards]")
125
+ : null;
126
+ if (!columnEl) {
127
+ // keep the last known target so the placeholder stays visible when the
128
+ // pointer briefly leaves a column
129
+ return;
130
+ }
131
+ const columnId = getID(columnEl, "data-kanban-column-cards");
132
+ if (columnId == null)
133
+ return;
134
+ const viewData = a.store.getState().viewData;
135
+ const column = viewData.columns.find((c) => c.id === columnId);
136
+ if (!column)
137
+ return;
138
+ const cardEls = Array.from(columnEl.querySelectorAll("[data-kanban-card-id]")).filter(n => getID(n, "data-kanban-card-id") !== a.id);
139
+ let beforeId = null;
140
+ for (const cardEl of cardEls) {
141
+ const rect = cardEl.getBoundingClientRect();
142
+ if (y < rect.top + rect.height / 2) {
143
+ beforeId = resolveRenderedCardId(column, getID(cardEl, "data-kanban-card-id"));
144
+ break;
145
+ }
146
+ }
147
+ if (beforeId == null) {
148
+ beforeId = resolveRenderedCardId(column, getID(columnEl, "data-kanban-after-rendered-before-id"));
149
+ }
150
+ const next = { column: column.id, beforeId };
151
+ const prev = a.dnd.target;
152
+ if (!prev || prev.column !== next.column || prev.beforeId !== next.beforeId) {
153
+ a.dnd.target = next;
154
+ }
155
+ }
156
+ function resolveRenderedCardId(column, id) {
157
+ if (id == null)
158
+ return null;
159
+ return column.cards.find(card => card.id === id)?.id ?? null;
160
+ }
161
+ function commitDrop(a) {
162
+ const target = a.dnd.target;
163
+ if (!target)
164
+ return;
165
+ const payload = {
166
+ id: a.id,
167
+ column: target.column,
168
+ };
169
+ if (target.beforeId != null)
170
+ payload.before = target.beforeId;
171
+ void a.store.exec("move-card", payload);
172
+ }
173
+ function suppressNextClick() {
174
+ const handler = (e) => {
175
+ e.preventDefault();
176
+ e.stopPropagation();
177
+ window.removeEventListener("click", handler, true);
178
+ };
179
+ window.addEventListener("click", handler, true);
180
+ // if no click follows (pointerup without a click event), drop the listener
181
+ // on the next tick so it doesn't swallow a later unrelated click.
182
+ setTimeout(() => window.removeEventListener("click", handler, true), 0);
183
+ }
package/dist/env.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ /// <reference types="svelte" />
2
+ declare module "@svar-ui/kanban-locales";
3
+ declare module "@svar-ui/core-locales";
4
+
5
+ declare module "*.svelte" {
6
+ import type { Component } from "svelte";
7
+ const component: Component<any>;
8
+ export default component;
9
+ }
@@ -0,0 +1,5 @@
1
+ <script>
2
+ const { card } = $props();
3
+ </script>
4
+
5
+ {@html card.$html}
@@ -0,0 +1,11 @@
1
+ export default Card;
2
+ type Card = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ declare const Card: import("svelte").Component<{
7
+ card: any;
8
+ }, {}, "">;
9
+ type $$ComponentProps = {
10
+ card: any;
11
+ };
@@ -0,0 +1,30 @@
1
+ <script>
2
+ import Willow from "../themes/Willow.svelte";
3
+ import WillowDark from "../themes/WillowDark.svelte";
4
+ import Print from "../themes/Print.svelte";
5
+ import PrintBW from "../themes/PrintBW.svelte";
6
+ import Kanban from "../components/Kanban.svelte";
7
+ import Card from "./Card.svelte";
8
+
9
+ const { skin, config = {}, htmlMode } = $props();
10
+ const cardContent = $derived(htmlMode ? Card : undefined);
11
+
12
+ </script>
13
+
14
+ {#if skin === "willow-dark" || skin === "dark"}
15
+ <WillowDark>
16
+ <Kanban {...config} {cardContent} />
17
+ </WillowDark>
18
+ {:else if skin === "print"}
19
+ <Print>
20
+ <Kanban {...config} {cardContent} />
21
+ </Print>
22
+ {:else if skin === "bw"}
23
+ <PrintBW>
24
+ <Kanban {...config} {cardContent} />
25
+ </PrintBW>
26
+ {:else}
27
+ <Willow>
28
+ <Kanban {...config} {cardContent} />
29
+ </Willow>
30
+ {/if}
@@ -0,0 +1,16 @@
1
+ export default Kanban;
2
+ type Kanban = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ declare const Kanban: import("svelte").Component<{
7
+ skin: any;
8
+ config?: Record<string, any>;
9
+ htmlMode: any;
10
+ }, {}, "">;
11
+ import Kanban from "../components/Kanban.svelte";
12
+ type $$ComponentProps = {
13
+ skin: any;
14
+ config?: Record<string, any>;
15
+ htmlMode: any;
16
+ };
@@ -0,0 +1,3 @@
1
+ import type { ExportConfig } from "@svar-ui/kanban-store";
2
+ declare function init(target: string, config: ExportConfig, skin: string, htmlMode: boolean): void;
3
+ export { init };
package/dist/export.js ADDED
@@ -0,0 +1,15 @@
1
+ import { mount } from "svelte";
2
+ import Export from "./export/Kanban.svelte";
3
+ function init(target, config, skin, htmlMode) {
4
+ mount(Export, {
5
+ target: target
6
+ ? document.querySelector(target)
7
+ : document.body,
8
+ props: {
9
+ config,
10
+ skin,
11
+ htmlMode,
12
+ },
13
+ });
14
+ }
15
+ export { init };
@@ -0,0 +1,15 @@
1
+ declare const version: string;
2
+ import Kanban from "./components/Kanban.svelte";
3
+ import Editor from "./components/Editor.svelte";
4
+ import ContextMenu from "./components/ContextMenu.svelte";
5
+ import Toolbar from "./components/Toolbar.svelte";
6
+ import Willow from "./themes/Willow.svelte";
7
+ import WillowDark from "./themes/WillowDark.svelte";
8
+ import Print from "./themes/Print.svelte";
9
+ import PrintBW from "./themes/PrintBW.svelte";
10
+ export { Kanban, Editor, ContextMenu, Toolbar, Willow, WillowDark, Print, PrintBW, version, };
11
+ export { RestDataProvider } from "@svar-ui/kanban-provider";
12
+ export type { KanbanInstanceApi, KanbanCard, RenderConfig, CardID, ColumnID, CardShape, CardShapeItem, CardShapeUserItem, CardPriorityShape, CardTagsShape, CardUsersShape, CardMenuShape, CardCssFn, ColumnCssFn, } from "./types.js";
13
+ export { getCardShape, getEditorItems, getPriorityOptions, } from "./defaults.js";
14
+ export { getMenuOptions, getToolbarItems, type ToolbarButtonConfig, type StoreActions, type ColumnConfig, } from "@svar-ui/kanban-store";
15
+ export { registerEditorItem } from "@svar-ui/svelte-editor";
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ import pkg from "../package.json" with { type: "json" };
2
+ const version = pkg.version;
3
+ import Kanban from "./components/Kanban.svelte";
4
+ import Editor from "./components/Editor.svelte";
5
+ import ContextMenu from "./components/ContextMenu.svelte";
6
+ import Toolbar from "./components/Toolbar.svelte";
7
+ import Willow from "./themes/Willow.svelte";
8
+ import WillowDark from "./themes/WillowDark.svelte";
9
+ import Print from "./themes/Print.svelte";
10
+ import PrintBW from "./themes/PrintBW.svelte";
11
+ export { Kanban, Editor, ContextMenu, Toolbar, Willow, WillowDark, Print, PrintBW, version, };
12
+ export { RestDataProvider } from "@svar-ui/kanban-provider";
13
+ export { getCardShape, getEditorItems, getPriorityOptions, } from "./defaults.js";
14
+ export { getMenuOptions, getToolbarItems, } from "@svar-ui/kanban-store";
15
+ export { registerEditorItem } from "@svar-ui/svelte-editor";
@@ -0,0 +1,126 @@
1
+ <script>
2
+ import Willow from "./Willow.svelte";
3
+ let { fonts = true, children } = $props();
4
+ </script>
5
+
6
+ {#if children}
7
+ <Willow {fonts}>
8
+ <div class="wx-print-theme">
9
+ {@render children()}
10
+ </div>
11
+ </Willow>
12
+ {:else}
13
+ <Willow {fonts} />
14
+ {/if}
15
+
16
+ <style>
17
+ .wx-print-theme {
18
+ height: 100%;
19
+ width: 100%;
20
+ box-sizing: border-box;
21
+
22
+ /* surfaces - strip filled backgrounds, keep neutral page */
23
+ --wx-background: #ffffff;
24
+ --wx-background-alt: #ffffff;
25
+ --wx-background-hover: transparent;
26
+ --wx-color-primary: #1f6bd9;
27
+ --wx-color-primary-selected: transparent;
28
+ --wx-color-font-alt: #555d68;
29
+ --wx-icon-color: #555d68;
30
+
31
+ /* kanban surfaces */
32
+ --wx-kanban-bg: #ffffff;
33
+ --wx-kanban-column-bg: #ffffff;
34
+ --wx-kanban-column-over-limit-bg: #ffffff;
35
+ --wx-kanban-card-bg: #ffffff;
36
+ --wx-kanban-tag-bg: #ffffff;
37
+ --wx-kanban-avatar-bg: #ffffff;
38
+
39
+ /* kanban progress */
40
+ --wx-kanban-progress-bg: #ffffff;
41
+ --wx-kanban-progress-fill: #1f6bd9;
42
+
43
+ /* kanban borders and shadows */
44
+ --wx-kanban-border-color: #b8bec8;
45
+ --wx-kanban-card-shadow: none;
46
+ --wx-kanban-card-shadow-hover: none;
47
+ --wx-kanban-card-shadow-drag: none;
48
+ --wx-kanban-drop-placeholder-bg: transparent;
49
+
50
+ /* priority badges - keep color as text/border only */
51
+ --wx-kanban-priority-low-bg: #ffffff;
52
+ --wx-kanban-priority-low-color: #166534;
53
+ --wx-kanban-priority-medium-bg: #ffffff;
54
+ --wx-kanban-priority-medium-color: #92400e;
55
+ --wx-kanban-priority-high-bg: #ffffff;
56
+ --wx-kanban-priority-high-color: #991b1b;
57
+ }
58
+
59
+ .wx-print-theme :global(.wx-kanban),
60
+ .wx-print-theme :global(.wx-board),
61
+ .wx-print-theme :global(.wx-scroll),
62
+ .wx-print-theme :global(.wx-content) {
63
+ background: #ffffff;
64
+ }
65
+
66
+ .wx-print-theme :global(.wx-column) {
67
+ background: #ffffff;
68
+ border-right: 1px solid #fff;
69
+ border-bottom: 1px solid #fff;
70
+ }
71
+
72
+ .wx-print-theme :global(.wx-column-header),
73
+ .wx-print-theme :global(.wx-scroll-board .wx-column-header),
74
+ .wx-print-theme :global(.wx-over-limit .wx-column-header),
75
+ .wx-print-theme :global(.wx-over-limit .wx-body) {
76
+ background: #ffffff;
77
+ }
78
+
79
+ .wx-print-theme :global(.wx-over-limit.wx-column) {
80
+ border-color: var(--wx-color-danger);
81
+ }
82
+
83
+ .wx-print-theme :global(.wx-card) {
84
+ background: #ffffff;
85
+ border: 1px solid var(--wx-kanban-border-color);
86
+ box-shadow: none;
87
+ break-inside: avoid;
88
+ }
89
+
90
+ .wx-print-theme :global(.wx-card:hover) {
91
+ box-shadow: none;
92
+ }
93
+
94
+ .wx-print-theme :global(.wx-cover) {
95
+ box-shadow: inset 0 0 0 1px var(--wx-kanban-border-color);
96
+ filter: saturate(0.75) contrast(1.05);
97
+ }
98
+
99
+ .wx-print-theme :global(.wx-priority),
100
+ .wx-print-theme :global(.wx-tag) {
101
+ background: #ffffff;
102
+ border: 1px solid currentColor;
103
+ }
104
+
105
+ .wx-print-theme :global(.wx-progress) {
106
+ height: 6px;
107
+ background: #ffffff;
108
+ border: 1px solid #6e777d;
109
+ }
110
+
111
+ .wx-print-theme :global(.wx-avatar) {
112
+ background: #ffffff;
113
+ border: 1px solid var(--wx-kanban-border-color);
114
+ }
115
+
116
+ .wx-print-theme :global(.wx-drop-placeholder) {
117
+ background: transparent;
118
+ }
119
+
120
+ .wx-print-theme :global(.wx-add:hover),
121
+ .wx-print-theme :global(.wx-toggle:hover),
122
+ .wx-print-theme :global(.wx-expand:hover),
123
+ .wx-print-theme :global(.wx-menu:hover) {
124
+ background: transparent;
125
+ }
126
+ </style>
@@ -0,0 +1,13 @@
1
+ export default Print;
2
+ type Print = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ declare const Print: import("svelte").Component<{
7
+ fonts?: boolean;
8
+ children: any;
9
+ }, {}, "">;
10
+ type $$ComponentProps = {
11
+ fonts?: boolean;
12
+ children: any;
13
+ };