@k2b/ui 0.4.1 → 0.5.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.
- package/dist/browser/intl/messages.js +2 -0
- package/dist/browser/intl/messages.js.map +1 -1
- package/dist/browser/layout/AppOverview.js +29 -20
- package/dist/browser/layout/AppOverview.js.map +1 -1
- package/dist/browser/layout/AppWorkspace.js +60 -54
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/BottomSheet.js +6 -1
- package/dist/browser/layout/BottomSheet.js.map +1 -1
- package/dist/browser/layout/PanelHeader.js +1 -1
- package/dist/browser/layout/PanelHeader.js.map +1 -1
- package/dist/browser/layout/PullToRefresh.js +217 -0
- package/dist/browser/layout/PullToRefresh.js.map +1 -0
- package/dist/browser/layout/index.js +1 -0
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/surfaces/LinkCard.js +13 -2
- package/dist/browser/surfaces/LinkCard.js.map +1 -1
- package/dist/ssr/intl/messages.js +2 -0
- package/dist/ssr/intl/messages.js.map +1 -1
- package/dist/ssr/layout/AppOverview.js +14 -5
- package/dist/ssr/layout/AppOverview.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +5 -2
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/BottomSheet.js +6 -1
- package/dist/ssr/layout/BottomSheet.js.map +1 -1
- package/dist/ssr/layout/PanelHeader.js +1 -1
- package/dist/ssr/layout/PanelHeader.js.map +1 -1
- package/dist/ssr/layout/PullToRefresh.js +177 -0
- package/dist/ssr/layout/PullToRefresh.js.map +1 -0
- package/dist/ssr/layout/index.js +1 -0
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/surfaces/LinkCard.js +11 -2
- package/dist/ssr/surfaces/LinkCard.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/intl/messages.d.ts +1 -0
- package/dist/types/layout/AppOverview.d.ts +7 -0
- package/dist/types/layout/AppWorkspace.d.ts +14 -2
- package/dist/types/layout/BottomSheet.d.ts +1 -0
- package/dist/types/layout/PanelHeader.d.ts +1 -1
- package/dist/types/layout/PullToRefresh.d.ts +21 -0
- package/dist/types/layout/index.d.ts +3 -1
- package/dist/types/surfaces/LinkCard.d.ts +5 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Show","Heading","props","className","size","as","_$ssr","_tmpl$","_$ssrAttribute","_$escape","title","_tmpl$2","_tmpl$3","PanelHeader","_tmpl$6","class","_$createComponent","when","subtitle","children","_tmpl$4","actions","_tmpl$5"],"sources":["layout/PanelHeader.tsx"],"sourcesContent":["import { type JSX, Show } from \"solid-js\";\n\nexport type PanelHeaderProps = {\n title: JSX.Element;\n subtitle?: JSX.Element;\n actions?: JSX.Element;\n as?: \"h1\" | \"h2\" | \"h3\";\n size?: \"sm\" | \"md\";\n class?: string;\n};\n\nconst Heading = (props: Pick<PanelHeaderProps, \"as\" | \"size\" | \"title\">): JSX.Element => {\n const className = `k2b-panel-header__title ${props.size === \"md\" ? \"is-medium\" : \"\"}`;\n if (props.as === \"h1\") return <h1 class={className}>{props.title}</h1>;\n if (props.as === \"h3\") return <h3 class={className}>{props.title}</h3>;\n return <h2 class={className}>{props.title}</h2>;\n};\n\nexport function PanelHeader(props: PanelHeaderProps): JSX.Element {\n return (\n <div class={`k2b-panel-header ${props.class ?? \"\"}`} data-size={props.size ?? \"sm\"}>\n <div class=\"k2b-panel-header__copy\">\n <Heading as={props.as} size={props.size} title={props.title} />\n <Show when={props.subtitle}>\n <p class=\"k2b-panel-header__subtitle\">{props.subtitle}</p>\n </Show>\n </div>\n <Show when={props.actions}>\n <div class=\"k2b-panel-header__actions\">{props.actions}</div>\n </Show>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AAAA,SAAmBA,IAAI,QAAQ,UAAU;AAWzC,MAAMC,OAAO,GAAIC,KAAsD,IAAkB;EACvF,MAAMC,SAAS,GAAG,2BAA2BD,KAAK,CAACE,IAAI,KAAK,IAAI,GAAG,WAAW,GAAG,EAAE,EAAE;
|
|
1
|
+
{"version":3,"names":["Show","Heading","props","className","size","as","_$ssr","_tmpl$","_$ssrAttribute","_$escape","title","_tmpl$2","_tmpl$3","PanelHeader","_tmpl$6","class","_$createComponent","when","subtitle","children","_tmpl$4","actions","_tmpl$5"],"sources":["layout/PanelHeader.tsx"],"sourcesContent":["import { type JSX, Show } from \"solid-js\";\n\nexport type PanelHeaderProps = {\n title: JSX.Element;\n subtitle?: JSX.Element;\n actions?: JSX.Element;\n as?: \"h1\" | \"h2\" | \"h3\";\n size?: \"sm\" | \"md\" | \"lg\";\n class?: string;\n};\n\nconst Heading = (props: Pick<PanelHeaderProps, \"as\" | \"size\" | \"title\">): JSX.Element => {\n const className = `k2b-panel-header__title ${props.size === \"md\" ? \"is-medium\" : props.size === \"lg\" ? \"is-large\" : \"\"}`;\n if (props.as === \"h1\") return <h1 class={className}>{props.title}</h1>;\n if (props.as === \"h3\") return <h3 class={className}>{props.title}</h3>;\n return <h2 class={className}>{props.title}</h2>;\n};\n\nexport function PanelHeader(props: PanelHeaderProps): JSX.Element {\n return (\n <div class={`k2b-panel-header ${props.class ?? \"\"}`} data-size={props.size ?? \"sm\"}>\n <div class=\"k2b-panel-header__copy\">\n <Heading as={props.as} size={props.size} title={props.title} />\n <Show when={props.subtitle}>\n <p class=\"k2b-panel-header__subtitle\">{props.subtitle}</p>\n </Show>\n </div>\n <Show when={props.actions}>\n <div class=\"k2b-panel-header__actions\">{props.actions}</div>\n </Show>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AAAA,SAAmBA,IAAI,QAAQ,UAAU;AAWzC,MAAMC,OAAO,GAAIC,KAAsD,IAAkB;EACvF,MAAMC,SAAS,GAAG,2BAA2BD,KAAK,CAACE,IAAI,KAAK,IAAI,GAAG,WAAW,GAAGF,KAAK,CAACE,IAAI,KAAK,IAAI,GAAG,UAAU,GAAG,EAAE,EAAE;EACxH,IAAIF,KAAK,CAACG,EAAE,KAAK,IAAI,EAAE,OAAAC,KAAA,CAAAC,MAAA,EAAAC,cAAA,UAAAC,QAAA,CAAkBN,SAAS,iBAAAM,QAAA,CAAGP,KAAK,CAACQ,KAAK;EAChE,IAAIR,KAAK,CAACG,EAAE,KAAK,IAAI,EAAE,OAAAC,KAAA,CAAAK,OAAA,EAAAH,cAAA,UAAAC,QAAA,CAAkBN,SAAS,iBAAAM,QAAA,CAAGP,KAAK,CAACQ,KAAK;EAChE,OAAAJ,KAAA,CAAAM,OAAA,EAAAJ,cAAA,UAAAC,QAAA,CAAkBN,SAAS,iBAAAM,QAAA,CAAGP,KAAK,CAACQ,KAAK;AAC3C,CAAC;AAED,OAAO,SAASG,WAAWA,CAACX,KAAuB,EAAe;EAChE,OAAAI,KAAA,CAAAQ,OAAA,EACc,oBAAAL,QAAA,CAAoBP,KAAK,CAACa,KAAK,IAAI,EAAE,SAAE,EAAAP,cAAA,cAAAC,QAAA,CAAaP,KAAK,CAACE,IAAI,IAAI,IAAI,iBAAAK,QAAA,CAAAO,iBAAA,CAE7Ef,OAAO;IAAA,IAACI,EAAEA,CAAA;MAAA,OAAEH,KAAK,CAACG,EAAE;IAAA;IAAA,IAAED,IAAIA,CAAA;MAAA,OAAEF,KAAK,CAACE,IAAI;IAAA;IAAA,IAAEM,KAAKA,CAAA;MAAA,OAAER,KAAK,CAACQ,KAAK;IAAA;EAAA,KAAAD,QAAA,CAAAO,iBAAA,CAC1DhB,IAAI;IAAA,IAACiB,IAAIA,CAAA;MAAA,OAAEf,KAAK,CAACgB,QAAQ;IAAA;IAAA,IAAAC,SAAA;MAAA,OAAAb,KAAA,CAAAc,OAAA,EAAAX,QAAA,CACeP,KAAK,CAACgB,QAAQ;IAAA;EAAA,KAAAT,QAAA,CAAAO,iBAAA,CAGxDhB,IAAI;IAAA,IAACiB,IAAIA,CAAA;MAAA,OAAEf,KAAK,CAACmB,OAAO;IAAA;IAAA,IAAAF,SAAA;MAAA,OAAAb,KAAA,CAAAgB,OAAA,EAAAb,QAAA,CACiBP,KAAK,CAACmB,OAAO;IAAA;EAAA;AAI7D","ignoreList":[]}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { ssr as _$ssr } from "solid-js/web";
|
|
2
|
+
import { ssrStyleProperty as _$ssrStyleProperty } from "solid-js/web";
|
|
3
|
+
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
4
|
+
import { escape as _$escape } from "solid-js/web";
|
|
5
|
+
var _tmpl$ = ["<div", " style=\"", "\"><div class=\"k2b-pull-to-refresh__indicator\" role=\"status\" aria-live=\"polite\"><i", " aria-hidden=\"true\"></i><span class=\"k2b-sr-only\">", "</span></div>", "</div>"];
|
|
6
|
+
import { createSignal, onCleanup, onMount } from "solid-js";
|
|
7
|
+
import { useUiMessages } from "../intl/messages";
|
|
8
|
+
|
|
9
|
+
/** Android's SwipeRefreshLayout triggers at 64dp; the pull is damped to half the input travel. */
|
|
10
|
+
const THRESHOLD = 64;
|
|
11
|
+
const MAX_DISTANCE = 96;
|
|
12
|
+
const RESISTANCE = 0.5;
|
|
13
|
+
/** A trackpad has no release event, so an idle gap ends the wheel gesture. */
|
|
14
|
+
const WHEEL_IDLE_MS = 300;
|
|
15
|
+
const LINE_HEIGHT = 16;
|
|
16
|
+
const INTERACTIVE = "a, button, input, textarea, select, [contenteditable], [role='button']";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Turns a downward pull on a scroll container that is already at its top into
|
|
20
|
+
* one `onRefresh` call. Touch pulls, mouse or pen drags on non-interactive
|
|
21
|
+
* space, and trackpad or wheel overscroll share one gesture model. The gesture
|
|
22
|
+
* is an enhancement: keep a keyboard-reachable refresh (a button or the page
|
|
23
|
+
* reload) next to it.
|
|
24
|
+
*/
|
|
25
|
+
export function PullToRefresh(props) {
|
|
26
|
+
const messages = useUiMessages();
|
|
27
|
+
const [state, setState] = createSignal("idle");
|
|
28
|
+
const [distance, setDistance] = createSignal(0);
|
|
29
|
+
let root;
|
|
30
|
+
const active = () => !props.disabled && state() !== "refreshing";
|
|
31
|
+
const atTop = target => {
|
|
32
|
+
for (let node = target instanceof Element ? target : null; node && node !== root; node = node.parentElement) if (node.scrollTop > 0) return false;
|
|
33
|
+
return true;
|
|
34
|
+
};
|
|
35
|
+
const interactive = target => target instanceof Element && target.closest(INTERACTIVE) !== null;
|
|
36
|
+
/** Keeps the drag alive when the pointer leaves the wrapper; a pointer that is already gone must not end the gesture. */
|
|
37
|
+
const capture = id => {
|
|
38
|
+
try {
|
|
39
|
+
root.setPointerCapture(id);
|
|
40
|
+
} catch {}
|
|
41
|
+
};
|
|
42
|
+
const reset = () => {
|
|
43
|
+
setDistance(0);
|
|
44
|
+
setState("idle");
|
|
45
|
+
};
|
|
46
|
+
const pull = travel => {
|
|
47
|
+
const next = Math.min(MAX_DISTANCE, Math.max(0, travel * RESISTANCE));
|
|
48
|
+
setDistance(next);
|
|
49
|
+
setState(next >= THRESHOLD ? "ready" : next > 0 ? "pulling" : "idle");
|
|
50
|
+
};
|
|
51
|
+
const refresh = async () => {
|
|
52
|
+
if (state() === "refreshing") return;
|
|
53
|
+
setState("refreshing");
|
|
54
|
+
setDistance(THRESHOLD);
|
|
55
|
+
try {
|
|
56
|
+
await props.onRefresh();
|
|
57
|
+
} finally {
|
|
58
|
+
reset();
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const release = () => {
|
|
62
|
+
if (state() === "ready") void refresh();else if (state() !== "refreshing") reset();
|
|
63
|
+
};
|
|
64
|
+
const abort = () => {
|
|
65
|
+
if (state() !== "refreshing") reset();
|
|
66
|
+
};
|
|
67
|
+
let wheelTravel = 0;
|
|
68
|
+
let wheelTimer;
|
|
69
|
+
const endWheel = () => {
|
|
70
|
+
wheelTravel = 0;
|
|
71
|
+
abort();
|
|
72
|
+
};
|
|
73
|
+
const onWheel = event => {
|
|
74
|
+
if (!active()) return;
|
|
75
|
+
clearTimeout(wheelTimer);
|
|
76
|
+
wheelTimer = setTimeout(endWheel, WHEEL_IDLE_MS);
|
|
77
|
+
if (event.deltaY >= 0 || !atTop(event.target)) return endWheel();
|
|
78
|
+
const scale = event.deltaMode === 1 ? LINE_HEIGHT : event.deltaMode === 2 ? root.clientHeight : 1;
|
|
79
|
+
wheelTravel -= event.deltaY * scale;
|
|
80
|
+
pull(wheelTravel);
|
|
81
|
+
if (state() === "ready") {
|
|
82
|
+
wheelTravel = 0;
|
|
83
|
+
void refresh();
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
let pointer = null;
|
|
87
|
+
const onPointerDown = event => {
|
|
88
|
+
if (event.pointerType === "touch" || event.button !== 0 || !active() || interactive(event.target) || !atTop(event.target)) return;
|
|
89
|
+
pointer = {
|
|
90
|
+
id: event.pointerId,
|
|
91
|
+
startY: event.clientY
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
const onPointerMove = event => {
|
|
95
|
+
if (!pointer || event.pointerId !== pointer.id) return;
|
|
96
|
+
const travel = event.clientY - pointer.startY;
|
|
97
|
+
if (travel <= 0 && state() === "idle") return;
|
|
98
|
+
if (state() === "idle") capture(pointer.id);
|
|
99
|
+
pull(travel);
|
|
100
|
+
if (state() !== "idle") event.preventDefault();
|
|
101
|
+
};
|
|
102
|
+
const onPointerUp = event => {
|
|
103
|
+
if (!pointer || event.pointerId !== pointer.id) return;
|
|
104
|
+
pointer = null;
|
|
105
|
+
release();
|
|
106
|
+
};
|
|
107
|
+
const onPointerCancel = event => {
|
|
108
|
+
if (!pointer || event.pointerId !== pointer.id) return;
|
|
109
|
+
pointer = null;
|
|
110
|
+
abort();
|
|
111
|
+
};
|
|
112
|
+
let touch = null;
|
|
113
|
+
const onTouchStart = event => {
|
|
114
|
+
const first = event.touches[0];
|
|
115
|
+
if (!first || event.touches.length !== 1 || !active() || !atTop(event.target)) return;
|
|
116
|
+
touch = {
|
|
117
|
+
id: first.identifier,
|
|
118
|
+
startY: first.clientY
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
const onTouchMove = event => {
|
|
122
|
+
if (!touch) return;
|
|
123
|
+
const current = Array.from(event.touches).find(item => item.identifier === touch?.id);
|
|
124
|
+
if (!current) return;
|
|
125
|
+
const travel = current.clientY - touch.startY;
|
|
126
|
+
if (travel <= 0 && state() === "idle") {
|
|
127
|
+
touch = null;
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
pull(travel);
|
|
131
|
+
if (state() !== "idle" && event.cancelable) event.preventDefault();
|
|
132
|
+
};
|
|
133
|
+
const onTouchEnd = () => {
|
|
134
|
+
if (!touch) return;
|
|
135
|
+
touch = null;
|
|
136
|
+
release();
|
|
137
|
+
};
|
|
138
|
+
const onTouchCancel = () => {
|
|
139
|
+
if (!touch) return;
|
|
140
|
+
touch = null;
|
|
141
|
+
abort();
|
|
142
|
+
};
|
|
143
|
+
onMount(() => {
|
|
144
|
+
root.addEventListener("wheel", onWheel, {
|
|
145
|
+
passive: true
|
|
146
|
+
});
|
|
147
|
+
root.addEventListener("pointerdown", onPointerDown);
|
|
148
|
+
root.addEventListener("pointermove", onPointerMove);
|
|
149
|
+
root.addEventListener("pointerup", onPointerUp);
|
|
150
|
+
root.addEventListener("pointercancel", onPointerCancel);
|
|
151
|
+
root.addEventListener("touchstart", onTouchStart, {
|
|
152
|
+
passive: true
|
|
153
|
+
});
|
|
154
|
+
root.addEventListener("touchmove", onTouchMove, {
|
|
155
|
+
passive: false
|
|
156
|
+
});
|
|
157
|
+
root.addEventListener("touchend", onTouchEnd);
|
|
158
|
+
root.addEventListener("touchcancel", onTouchCancel);
|
|
159
|
+
onCleanup(() => {
|
|
160
|
+
clearTimeout(wheelTimer);
|
|
161
|
+
root.removeEventListener("wheel", onWheel);
|
|
162
|
+
root.removeEventListener("pointerdown", onPointerDown);
|
|
163
|
+
root.removeEventListener("pointermove", onPointerMove);
|
|
164
|
+
root.removeEventListener("pointerup", onPointerUp);
|
|
165
|
+
root.removeEventListener("pointercancel", onPointerCancel);
|
|
166
|
+
root.removeEventListener("touchstart", onTouchStart);
|
|
167
|
+
root.removeEventListener("touchmove", onTouchMove);
|
|
168
|
+
root.removeEventListener("touchend", onTouchEnd);
|
|
169
|
+
root.removeEventListener("touchcancel", onTouchCancel);
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
const className = () => props.class?.trim() ? `k2b-pull-to-refresh ${props.class.trim()}` : "k2b-pull-to-refresh";
|
|
173
|
+
const progress = () => Math.min(1, distance() / THRESHOLD);
|
|
174
|
+
return _$ssr(_tmpl$, _$ssrAttribute("class", _$escape(className(), true), false) + _$ssrAttribute("data-state", _$escape(state(), true), false), _$ssrStyleProperty("--k2b-pull-to-refresh-distance:", `${_$escape(distance(), true)}px`) + _$ssrStyleProperty(";--k2b-pull-to-refresh-progress:", _$escape(String(progress()), true)), _$ssrAttribute("class", state() === "refreshing" ? "ti ti-loader-2 k2b-spin" : "ti ti-refresh", false), state() === "refreshing" ? _$escape(props.label ?? messages().refreshing) : "", _$escape(props.children));
|
|
175
|
+
}
|
|
176
|
+
export default PullToRefresh;
|
|
177
|
+
//# sourceMappingURL=PullToRefresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createSignal","onCleanup","onMount","useUiMessages","THRESHOLD","MAX_DISTANCE","RESISTANCE","WHEEL_IDLE_MS","LINE_HEIGHT","INTERACTIVE","PullToRefresh","props","messages","state","setState","distance","setDistance","root","active","disabled","atTop","target","node","Element","parentElement","scrollTop","interactive","closest","capture","id","setPointerCapture","reset","pull","travel","next","Math","min","max","refresh","onRefresh","release","abort","wheelTravel","wheelTimer","endWheel","onWheel","event","clearTimeout","setTimeout","deltaY","scale","deltaMode","clientHeight","pointer","onPointerDown","pointerType","button","pointerId","startY","clientY","onPointerMove","preventDefault","onPointerUp","onPointerCancel","touch","onTouchStart","first","touches","length","identifier","onTouchMove","current","Array","from","find","item","cancelable","onTouchEnd","onTouchCancel","addEventListener","passive","removeEventListener","className","class","trim","progress","_$ssr","_tmpl$","_$ssrAttribute","_$escape","_$ssrStyleProperty","String","label","refreshing","children"],"sources":["layout/PullToRefresh.tsx"],"sourcesContent":["import { createSignal, type JSX, onCleanup, onMount } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\n\n/** Android's SwipeRefreshLayout triggers at 64dp; the pull is damped to half the input travel. */\nconst THRESHOLD = 64;\nconst MAX_DISTANCE = 96;\nconst RESISTANCE = 0.5;\n/** A trackpad has no release event, so an idle gap ends the wheel gesture. */\nconst WHEEL_IDLE_MS = 300;\nconst LINE_HEIGHT = 16;\n\nexport type PullToRefreshState = \"idle\" | \"pulling\" | \"ready\" | \"refreshing\";\n\nexport type PullToRefreshProps = {\n /** Reloads the wrapped content. The indicator stays busy until the promise settles. */\n onRefresh: () => Promise<void>;\n disabled?: boolean;\n /** Status text announced while refreshing. Defaults to the shared \"Refreshing\" message. */\n label?: string;\n class?: string;\n /** Exactly one scroll container; the gesture only starts while it is scrolled to the top. */\n children: JSX.Element;\n};\n\nconst INTERACTIVE = \"a, button, input, textarea, select, [contenteditable], [role='button']\";\n\n/**\n * Turns a downward pull on a scroll container that is already at its top into\n * one `onRefresh` call. Touch pulls, mouse or pen drags on non-interactive\n * space, and trackpad or wheel overscroll share one gesture model. The gesture\n * is an enhancement: keep a keyboard-reachable refresh (a button or the page\n * reload) next to it.\n */\nexport function PullToRefresh(props: PullToRefreshProps): JSX.Element {\n const messages = useUiMessages();\n const [state, setState] = createSignal<PullToRefreshState>(\"idle\");\n const [distance, setDistance] = createSignal(0);\n let root!: HTMLDivElement;\n\n const active = () => !props.disabled && state() !== \"refreshing\";\n const atTop = (target: EventTarget | null) => {\n for (let node = target instanceof Element ? target : null; node && node !== root; node = node.parentElement)\n if (node.scrollTop > 0) return false;\n return true;\n };\n const interactive = (target: EventTarget | null) => target instanceof Element && target.closest(INTERACTIVE) !== null;\n /** Keeps the drag alive when the pointer leaves the wrapper; a pointer that is already gone must not end the gesture. */\n const capture = (id: number) => {\n try {\n root.setPointerCapture(id);\n } catch {}\n };\n\n const reset = () => {\n setDistance(0);\n setState(\"idle\");\n };\n const pull = (travel: number) => {\n const next = Math.min(MAX_DISTANCE, Math.max(0, travel * RESISTANCE));\n setDistance(next);\n setState(next >= THRESHOLD ? \"ready\" : next > 0 ? \"pulling\" : \"idle\");\n };\n const refresh = async () => {\n if (state() === \"refreshing\") return;\n setState(\"refreshing\");\n setDistance(THRESHOLD);\n try {\n await props.onRefresh();\n } finally {\n reset();\n }\n };\n const release = () => {\n if (state() === \"ready\") void refresh();\n else if (state() !== \"refreshing\") reset();\n };\n const abort = () => {\n if (state() !== \"refreshing\") reset();\n };\n\n let wheelTravel = 0;\n let wheelTimer: ReturnType<typeof setTimeout> | undefined;\n const endWheel = () => {\n wheelTravel = 0;\n abort();\n };\n const onWheel = (event: WheelEvent) => {\n if (!active()) return;\n clearTimeout(wheelTimer);\n wheelTimer = setTimeout(endWheel, WHEEL_IDLE_MS);\n if (event.deltaY >= 0 || !atTop(event.target)) return endWheel();\n const scale = event.deltaMode === 1 ? LINE_HEIGHT : event.deltaMode === 2 ? root.clientHeight : 1;\n wheelTravel -= event.deltaY * scale;\n pull(wheelTravel);\n if (state() === \"ready\") {\n wheelTravel = 0;\n void refresh();\n }\n };\n\n let pointer: { id: number; startY: number } | null = null;\n const onPointerDown = (event: PointerEvent) => {\n if (event.pointerType === \"touch\" || event.button !== 0 || !active() || interactive(event.target) || !atTop(event.target)) return;\n pointer = { id: event.pointerId, startY: event.clientY };\n };\n const onPointerMove = (event: PointerEvent) => {\n if (!pointer || event.pointerId !== pointer.id) return;\n const travel = event.clientY - pointer.startY;\n if (travel <= 0 && state() === \"idle\") return;\n if (state() === \"idle\") capture(pointer.id);\n pull(travel);\n if (state() !== \"idle\") event.preventDefault();\n };\n const onPointerUp = (event: PointerEvent) => {\n if (!pointer || event.pointerId !== pointer.id) return;\n pointer = null;\n release();\n };\n const onPointerCancel = (event: PointerEvent) => {\n if (!pointer || event.pointerId !== pointer.id) return;\n pointer = null;\n abort();\n };\n\n let touch: { id: number; startY: number } | null = null;\n const onTouchStart = (event: TouchEvent) => {\n const first = event.touches[0];\n if (!first || event.touches.length !== 1 || !active() || !atTop(event.target)) return;\n touch = { id: first.identifier, startY: first.clientY };\n };\n const onTouchMove = (event: TouchEvent) => {\n if (!touch) return;\n const current = Array.from(event.touches).find((item) => item.identifier === touch?.id);\n if (!current) return;\n const travel = current.clientY - touch.startY;\n if (travel <= 0 && state() === \"idle\") {\n touch = null;\n return;\n }\n pull(travel);\n if (state() !== \"idle\" && event.cancelable) event.preventDefault();\n };\n const onTouchEnd = () => {\n if (!touch) return;\n touch = null;\n release();\n };\n const onTouchCancel = () => {\n if (!touch) return;\n touch = null;\n abort();\n };\n\n onMount(() => {\n root.addEventListener(\"wheel\", onWheel, { passive: true });\n root.addEventListener(\"pointerdown\", onPointerDown);\n root.addEventListener(\"pointermove\", onPointerMove);\n root.addEventListener(\"pointerup\", onPointerUp);\n root.addEventListener(\"pointercancel\", onPointerCancel);\n root.addEventListener(\"touchstart\", onTouchStart, { passive: true });\n root.addEventListener(\"touchmove\", onTouchMove, { passive: false });\n root.addEventListener(\"touchend\", onTouchEnd);\n root.addEventListener(\"touchcancel\", onTouchCancel);\n onCleanup(() => {\n clearTimeout(wheelTimer);\n root.removeEventListener(\"wheel\", onWheel);\n root.removeEventListener(\"pointerdown\", onPointerDown);\n root.removeEventListener(\"pointermove\", onPointerMove);\n root.removeEventListener(\"pointerup\", onPointerUp);\n root.removeEventListener(\"pointercancel\", onPointerCancel);\n root.removeEventListener(\"touchstart\", onTouchStart);\n root.removeEventListener(\"touchmove\", onTouchMove);\n root.removeEventListener(\"touchend\", onTouchEnd);\n root.removeEventListener(\"touchcancel\", onTouchCancel);\n });\n });\n\n const className = () => (props.class?.trim() ? `k2b-pull-to-refresh ${props.class.trim()}` : \"k2b-pull-to-refresh\");\n const progress = () => Math.min(1, distance() / THRESHOLD);\n\n return (\n <div\n ref={root}\n class={className()}\n data-state={state()}\n style={{ \"--k2b-pull-to-refresh-distance\": `${distance()}px`, \"--k2b-pull-to-refresh-progress\": String(progress()) }}\n >\n <div class=\"k2b-pull-to-refresh__indicator\" role=\"status\" aria-live=\"polite\">\n <i class={state() === \"refreshing\" ? \"ti ti-loader-2 k2b-spin\" : \"ti ti-refresh\"} aria-hidden=\"true\" />\n <span class=\"k2b-sr-only\">{state() === \"refreshing\" ? (props.label ?? messages().refreshing) : \"\"}</span>\n </div>\n {props.children}\n </div>\n );\n}\n\nexport default PullToRefresh;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/ssr/layout/index.js
CHANGED
|
@@ -12,6 +12,7 @@ export { createNavigation, findNavigationItem } from "./navigation-model";
|
|
|
12
12
|
export { confirmDiscardIfDirty, default as PanelDialog, panelDialogFixedOptions, panelDialogFixedPanelClass, panelDialogOptions, panelDialogPanelClass, panelDialogWideOptions, panelDialogWidePanelClass, panelDialogWorkspaceOptions, panelDialogWorkspacePanelClass } from "./PanelDialog";
|
|
13
13
|
export { PanelHeader } from "./PanelHeader";
|
|
14
14
|
export { default as Panes } from "./Panes";
|
|
15
|
+
export { default as PullToRefresh } from "./PullToRefresh";
|
|
15
16
|
export { activatePanesItem, addPanesItem, applyPanesIntent, createPanesLayout, isPanesItemVisible, PANES_LAYOUT_VERSION, parsePanesLayout, reconcilePanesLayout, removePanesItem, resizePanesSplit } from "./panes-layout";
|
|
16
17
|
export { default as ScrollArea } from "./ScrollArea";
|
|
17
18
|
export { readSettingsError, SettingsField, SettingsGroup, SettingsPage, SettingsPanelFooter, SettingsSaveBar, SettingsSection, sameSettingValue } from "./Settings";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["default","AppOverview","AppWorkspace","installAppWorkspaceController","APP_WORKSPACE_DETAIL_DEFAULT","APP_WORKSPACE_DETAIL_MAX","APP_WORKSPACE_DETAIL_MIN","APP_WORKSPACE_DRAWER_DEFAULT","APP_WORKSPACE_DRAWER_MAX","APP_WORKSPACE_DRAWER_MIN","APP_WORKSPACE_MAIN_MIN","APP_WORKSPACE_MAIN_MIN_HEIGHT","APP_WORKSPACE_PANE_DEFAULT","APP_WORKSPACE_PANE_MAX","APP_WORKSPACE_PANE_MIN","APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD","APP_WORKSPACE_SIDEBAR_COLLAPSED","APP_WORKSPACE_SIDEBAR_DEFAULT","APP_WORKSPACE_SIDEBAR_MAX","APP_WORKSPACE_SIDEBAR_MIN","appWorkspaceLayoutStyle","appWorkspacePanelVariable","appWorkspaceResizeLimits","normalizeAppWorkspaceLayoutState","parseAppWorkspaceLayoutState","resolveAppWorkspaceSidebarWidth","safeAppWorkspacePanelId","serializeAppWorkspaceLayoutState","shouldCollapseAppWorkspaceSidebar","bottomSheetOptions","BottomSheet","DataPanel","DetailPanel","Discussion","FloatingWindow","fitFloatingWindowRect","openFloatingWindow","Navigation","createNavigation","findNavigationItem","confirmDiscardIfDirty","PanelDialog","panelDialogFixedOptions","panelDialogFixedPanelClass","panelDialogOptions","panelDialogPanelClass","panelDialogWideOptions","panelDialogWidePanelClass","panelDialogWorkspaceOptions","panelDialogWorkspacePanelClass","PanelHeader","Panes","activatePanesItem","addPanesItem","applyPanesIntent","createPanesLayout","isPanesItemVisible","PANES_LAYOUT_VERSION","parsePanesLayout","reconcilePanesLayout","removePanesItem","resizePanesSplit","ScrollArea","readSettingsError","SettingsField","SettingsGroup","SettingsPage","SettingsPanelFooter","SettingsSaveBar","SettingsSection","sameSettingValue","SettingsCollection","SettingsModal"],"sources":["layout/index.ts"],"sourcesContent":["export type {\n AppOverviewEmptyStateProps,\n AppOverviewPanelProps,\n AppOverviewProps,\n} from \"./AppOverview\";\nexport { default as AppOverview } from \"./AppOverview\";\nexport type {\n AppWorkspaceBottomDrawerHeight,\n AppWorkspaceBottomDrawerProps,\n AppWorkspaceContentProps,\n AppWorkspaceDetailProps,\n AppWorkspaceDetailWidth,\n AppWorkspaceMainPaneProps,\n AppWorkspaceMainProps,\n AppWorkspaceNavTreeItemProps,\n AppWorkspaceNavTreeProps,\n AppWorkspaceProps,\n AppWorkspaceSidebarAccessoryVisibility,\n AppWorkspaceSidebarBodyProps,\n AppWorkspaceSidebarIconActionProps,\n AppWorkspaceSidebarIconActionTone,\n AppWorkspaceSidebarIconGridProps,\n AppWorkspaceSidebarItemActionProps,\n AppWorkspaceSidebarItemActionsProps,\n AppWorkspaceSidebarItemIconProps,\n AppWorkspaceSidebarItemLabelProps,\n AppWorkspaceSidebarItemMetaProps,\n AppWorkspaceSidebarItemProps,\n AppWorkspaceSidebarItemTone,\n AppWorkspaceSidebarProps,\n AppWorkspaceSidebarSectionProps,\n AppWorkspaceSidebarVisibility,\n} from \"./AppWorkspace\";\nexport { default as AppWorkspace } from \"./AppWorkspace\";\nexport type { AppWorkspaceControllerOptions } from \"./app-workspace-controller\";\nexport { installAppWorkspaceController } from \"./app-workspace-controller\";\nexport type {\n AppWorkspaceLayoutState,\n AppWorkspaceResizeKind,\n} from \"./app-workspace-state\";\nexport {\n APP_WORKSPACE_DETAIL_DEFAULT,\n APP_WORKSPACE_DETAIL_MAX,\n APP_WORKSPACE_DETAIL_MIN,\n APP_WORKSPACE_DRAWER_DEFAULT,\n APP_WORKSPACE_DRAWER_MAX,\n APP_WORKSPACE_DRAWER_MIN,\n APP_WORKSPACE_MAIN_MIN,\n APP_WORKSPACE_MAIN_MIN_HEIGHT,\n APP_WORKSPACE_PANE_DEFAULT,\n APP_WORKSPACE_PANE_MAX,\n APP_WORKSPACE_PANE_MIN,\n APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD,\n APP_WORKSPACE_SIDEBAR_COLLAPSED,\n APP_WORKSPACE_SIDEBAR_DEFAULT,\n APP_WORKSPACE_SIDEBAR_MAX,\n APP_WORKSPACE_SIDEBAR_MIN,\n appWorkspaceLayoutStyle,\n appWorkspacePanelVariable,\n appWorkspaceResizeLimits,\n normalizeAppWorkspaceLayoutState,\n parseAppWorkspaceLayoutState,\n resolveAppWorkspaceSidebarWidth,\n safeAppWorkspacePanelId,\n serializeAppWorkspaceLayoutState,\n shouldCollapseAppWorkspaceSidebar,\n} from \"./app-workspace-state\";\nexport { type BottomSheetProps, bottomSheetOptions, default as BottomSheet } from \"./BottomSheet\";\nexport type { DataPanelProps } from \"./DataPanel\";\nexport { DataPanel } from \"./DataPanel\";\nexport type {\n DetailPanelActionButtonProps,\n DetailPanelActionLinkProps,\n DetailPanelActionProps,\n DetailPanelBodyProps,\n DetailPanelGroupProps,\n DetailPanelHeaderProps,\n DetailPanelProps,\n DetailPanelSectionProps,\n DetailPanelSummaryProps,\n DetailPanelTone,\n} from \"./DetailPanel\";\nexport { default as DetailPanel } from \"./DetailPanel\";\nexport type { DiscussionComposerProps, DiscussionItemProps, DiscussionListProps, DiscussionProps } from \"./Discussion\";\nexport { default as Discussion } from \"./Discussion\";\nexport type {\n FloatingWindowClose,\n FloatingWindowProps,\n OpenFloatingWindowOptions,\n} from \"./FloatingWindow\";\nexport {\n default as FloatingWindow,\n type FloatingWindowRect,\n fitFloatingWindowRect,\n openFloatingWindow,\n} from \"./FloatingWindow\";\nexport { default as Navigation, type NavigationProps } from \"./Navigation\";\nexport {\n createNavigation,\n findNavigationItem,\n type NavigationController,\n type NavigationItem,\n type NavigationOptions,\n} from \"./navigation-model\";\nexport type {\n PanelDialogBodyProps,\n PanelDialogFooterProps,\n PanelDialogHeaderProps,\n PanelDialogProps,\n PanelDialogSectionProps,\n PanelDialogSurface,\n PanelDialogTabOption,\n PanelDialogTabsProps,\n} from \"./PanelDialog\";\nexport {\n confirmDiscardIfDirty,\n default as PanelDialog,\n panelDialogFixedOptions,\n panelDialogFixedPanelClass,\n panelDialogOptions,\n panelDialogPanelClass,\n panelDialogWideOptions,\n panelDialogWidePanelClass,\n panelDialogWorkspaceOptions,\n panelDialogWorkspacePanelClass,\n} from \"./PanelDialog\";\nexport type { PanelHeaderProps } from \"./PanelHeader\";\nexport { PanelHeader } from \"./PanelHeader\";\nexport type { PanesItem, PanesProps } from \"./Panes\";\nexport { default as Panes } from \"./Panes\";\nexport type {\n AddPanesItemOptions,\n PanesDirection,\n PanesGroup,\n PanesIntent,\n PanesLayout,\n PanesNode,\n PanesPath,\n PanesPathSegment,\n PanesSide,\n PanesSplit,\n} from \"./panes-layout\";\nexport {\n activatePanesItem,\n addPanesItem,\n applyPanesIntent,\n createPanesLayout,\n isPanesItemVisible,\n PANES_LAYOUT_VERSION,\n parsePanesLayout,\n reconcilePanesLayout,\n removePanesItem,\n resizePanesSplit,\n} from \"./panes-layout\";\nexport type { ScrollAreaProps } from \"./ScrollArea\";\nexport { default as ScrollArea } from \"./ScrollArea\";\nexport type {\n SettingsFieldControlProps,\n SettingsFieldProps,\n SettingsGroupActionProps,\n SettingsGroupProps,\n SettingsPageProps,\n SettingsPanelFooterProps,\n SettingsSaveBarProps,\n SettingsSectionProps,\n} from \"./Settings\";\nexport {\n readSettingsError,\n SettingsField,\n SettingsGroup,\n SettingsPage,\n SettingsPanelFooter,\n SettingsSaveBar,\n SettingsSection,\n sameSettingValue,\n} from \"./Settings\";\nexport type {\n SettingsCollectionActionProps,\n SettingsCollectionItemActionsProps,\n SettingsCollectionItemProps,\n SettingsCollectionItemReorderProps,\n SettingsCollectionItemStatusProps,\n SettingsCollectionProps,\n} from \"./SettingsCollection\";\nexport { default as SettingsCollection } from \"./SettingsCollection\";\nexport type {\n SettingsModalFooterProps,\n SettingsModalGroupProps,\n SettingsModalProps,\n SettingsModalTabProps,\n SettingsModalTabTone,\n} from \"./SettingsModal\";\nexport { default as SettingsModal } from \"./SettingsModal\";\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["default","AppOverview","AppWorkspace","installAppWorkspaceController","APP_WORKSPACE_DETAIL_DEFAULT","APP_WORKSPACE_DETAIL_MAX","APP_WORKSPACE_DETAIL_MIN","APP_WORKSPACE_DRAWER_DEFAULT","APP_WORKSPACE_DRAWER_MAX","APP_WORKSPACE_DRAWER_MIN","APP_WORKSPACE_MAIN_MIN","APP_WORKSPACE_MAIN_MIN_HEIGHT","APP_WORKSPACE_PANE_DEFAULT","APP_WORKSPACE_PANE_MAX","APP_WORKSPACE_PANE_MIN","APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD","APP_WORKSPACE_SIDEBAR_COLLAPSED","APP_WORKSPACE_SIDEBAR_DEFAULT","APP_WORKSPACE_SIDEBAR_MAX","APP_WORKSPACE_SIDEBAR_MIN","appWorkspaceLayoutStyle","appWorkspacePanelVariable","appWorkspaceResizeLimits","normalizeAppWorkspaceLayoutState","parseAppWorkspaceLayoutState","resolveAppWorkspaceSidebarWidth","safeAppWorkspacePanelId","serializeAppWorkspaceLayoutState","shouldCollapseAppWorkspaceSidebar","bottomSheetOptions","BottomSheet","DataPanel","DetailPanel","Discussion","FloatingWindow","fitFloatingWindowRect","openFloatingWindow","Navigation","createNavigation","findNavigationItem","confirmDiscardIfDirty","PanelDialog","panelDialogFixedOptions","panelDialogFixedPanelClass","panelDialogOptions","panelDialogPanelClass","panelDialogWideOptions","panelDialogWidePanelClass","panelDialogWorkspaceOptions","panelDialogWorkspacePanelClass","PanelHeader","Panes","PullToRefresh","activatePanesItem","addPanesItem","applyPanesIntent","createPanesLayout","isPanesItemVisible","PANES_LAYOUT_VERSION","parsePanesLayout","reconcilePanesLayout","removePanesItem","resizePanesSplit","ScrollArea","readSettingsError","SettingsField","SettingsGroup","SettingsPage","SettingsPanelFooter","SettingsSaveBar","SettingsSection","sameSettingValue","SettingsCollection","SettingsModal"],"sources":["layout/index.ts"],"sourcesContent":["export type {\n AppOverviewCardsProps,\n AppOverviewEmptyStateProps,\n AppOverviewPanelProps,\n AppOverviewProps,\n} from \"./AppOverview\";\nexport { default as AppOverview } from \"./AppOverview\";\nexport type {\n AppWorkspaceBottomDrawerHeight,\n AppWorkspaceBottomDrawerProps,\n AppWorkspaceContentProps,\n AppWorkspaceDetailProps,\n AppWorkspaceDetailWidth,\n AppWorkspaceMainPaneProps,\n AppWorkspaceMainProps,\n AppWorkspaceNavTreeItemProps,\n AppWorkspaceNavTreeProps,\n AppWorkspaceProps,\n AppWorkspaceSidebarAccessoryVisibility,\n AppWorkspaceSidebarBodyProps,\n AppWorkspaceSidebarIconActionProps,\n AppWorkspaceSidebarIconActionTone,\n AppWorkspaceSidebarIconGridProps,\n AppWorkspaceSidebarItemActionProps,\n AppWorkspaceSidebarItemActionsProps,\n AppWorkspaceSidebarItemIconProps,\n AppWorkspaceSidebarItemLabelProps,\n AppWorkspaceSidebarItemMetaProps,\n AppWorkspaceSidebarItemProps,\n AppWorkspaceSidebarItemTone,\n AppWorkspaceSidebarProps,\n AppWorkspaceSidebarSectionProps,\n AppWorkspaceSidebarVisibility,\n} from \"./AppWorkspace\";\nexport { default as AppWorkspace } from \"./AppWorkspace\";\nexport type { AppWorkspaceControllerOptions } from \"./app-workspace-controller\";\nexport { installAppWorkspaceController } from \"./app-workspace-controller\";\nexport type {\n AppWorkspaceLayoutState,\n AppWorkspaceResizeKind,\n} from \"./app-workspace-state\";\nexport {\n APP_WORKSPACE_DETAIL_DEFAULT,\n APP_WORKSPACE_DETAIL_MAX,\n APP_WORKSPACE_DETAIL_MIN,\n APP_WORKSPACE_DRAWER_DEFAULT,\n APP_WORKSPACE_DRAWER_MAX,\n APP_WORKSPACE_DRAWER_MIN,\n APP_WORKSPACE_MAIN_MIN,\n APP_WORKSPACE_MAIN_MIN_HEIGHT,\n APP_WORKSPACE_PANE_DEFAULT,\n APP_WORKSPACE_PANE_MAX,\n APP_WORKSPACE_PANE_MIN,\n APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD,\n APP_WORKSPACE_SIDEBAR_COLLAPSED,\n APP_WORKSPACE_SIDEBAR_DEFAULT,\n APP_WORKSPACE_SIDEBAR_MAX,\n APP_WORKSPACE_SIDEBAR_MIN,\n appWorkspaceLayoutStyle,\n appWorkspacePanelVariable,\n appWorkspaceResizeLimits,\n normalizeAppWorkspaceLayoutState,\n parseAppWorkspaceLayoutState,\n resolveAppWorkspaceSidebarWidth,\n safeAppWorkspacePanelId,\n serializeAppWorkspaceLayoutState,\n shouldCollapseAppWorkspaceSidebar,\n} from \"./app-workspace-state\";\nexport { type BottomSheetProps, bottomSheetOptions, default as BottomSheet } from \"./BottomSheet\";\nexport type { DataPanelProps } from \"./DataPanel\";\nexport { DataPanel } from \"./DataPanel\";\nexport type {\n DetailPanelActionButtonProps,\n DetailPanelActionLinkProps,\n DetailPanelActionProps,\n DetailPanelBodyProps,\n DetailPanelGroupProps,\n DetailPanelHeaderProps,\n DetailPanelProps,\n DetailPanelSectionProps,\n DetailPanelSummaryProps,\n DetailPanelTone,\n} from \"./DetailPanel\";\nexport { default as DetailPanel } from \"./DetailPanel\";\nexport type { DiscussionComposerProps, DiscussionItemProps, DiscussionListProps, DiscussionProps } from \"./Discussion\";\nexport { default as Discussion } from \"./Discussion\";\nexport type {\n FloatingWindowClose,\n FloatingWindowProps,\n OpenFloatingWindowOptions,\n} from \"./FloatingWindow\";\nexport {\n default as FloatingWindow,\n type FloatingWindowRect,\n fitFloatingWindowRect,\n openFloatingWindow,\n} from \"./FloatingWindow\";\nexport { default as Navigation, type NavigationProps } from \"./Navigation\";\nexport {\n createNavigation,\n findNavigationItem,\n type NavigationController,\n type NavigationItem,\n type NavigationOptions,\n} from \"./navigation-model\";\nexport type {\n PanelDialogBodyProps,\n PanelDialogFooterProps,\n PanelDialogHeaderProps,\n PanelDialogProps,\n PanelDialogSectionProps,\n PanelDialogSurface,\n PanelDialogTabOption,\n PanelDialogTabsProps,\n} from \"./PanelDialog\";\nexport {\n confirmDiscardIfDirty,\n default as PanelDialog,\n panelDialogFixedOptions,\n panelDialogFixedPanelClass,\n panelDialogOptions,\n panelDialogPanelClass,\n panelDialogWideOptions,\n panelDialogWidePanelClass,\n panelDialogWorkspaceOptions,\n panelDialogWorkspacePanelClass,\n} from \"./PanelDialog\";\nexport type { PanelHeaderProps } from \"./PanelHeader\";\nexport { PanelHeader } from \"./PanelHeader\";\nexport type { PanesItem, PanesProps } from \"./Panes\";\nexport { default as Panes } from \"./Panes\";\nexport type { PullToRefreshProps, PullToRefreshState } from \"./PullToRefresh\";\nexport { default as PullToRefresh } from \"./PullToRefresh\";\nexport type {\n AddPanesItemOptions,\n PanesDirection,\n PanesGroup,\n PanesIntent,\n PanesLayout,\n PanesNode,\n PanesPath,\n PanesPathSegment,\n PanesSide,\n PanesSplit,\n} from \"./panes-layout\";\nexport {\n activatePanesItem,\n addPanesItem,\n applyPanesIntent,\n createPanesLayout,\n isPanesItemVisible,\n PANES_LAYOUT_VERSION,\n parsePanesLayout,\n reconcilePanesLayout,\n removePanesItem,\n resizePanesSplit,\n} from \"./panes-layout\";\nexport type { ScrollAreaProps } from \"./ScrollArea\";\nexport { default as ScrollArea } from \"./ScrollArea\";\nexport type {\n SettingsFieldControlProps,\n SettingsFieldProps,\n SettingsGroupActionProps,\n SettingsGroupProps,\n SettingsPageProps,\n SettingsPanelFooterProps,\n SettingsSaveBarProps,\n SettingsSectionProps,\n} from \"./Settings\";\nexport {\n readSettingsError,\n SettingsField,\n SettingsGroup,\n SettingsPage,\n SettingsPanelFooter,\n SettingsSaveBar,\n SettingsSection,\n sameSettingValue,\n} from \"./Settings\";\nexport type {\n SettingsCollectionActionProps,\n SettingsCollectionItemActionsProps,\n SettingsCollectionItemProps,\n SettingsCollectionItemReorderProps,\n SettingsCollectionItemStatusProps,\n SettingsCollectionProps,\n} from \"./SettingsCollection\";\nexport { default as SettingsCollection } from \"./SettingsCollection\";\nexport type {\n SettingsModalFooterProps,\n SettingsModalGroupProps,\n SettingsModalProps,\n SettingsModalTabProps,\n SettingsModalTabTone,\n} from \"./SettingsModal\";\nexport { default as SettingsModal } from \"./SettingsModal\";\n"],"mappings":"AAMA,SAASA,OAAO,IAAIC,WAAW,QAAQ,eAAe;AA4BtD,SAASD,OAAO,IAAIE,YAAY,QAAQ,gBAAgB;AAExD,SAASC,6BAA6B,QAAQ,4BAA4B;AAK1E,SACEC,4BAA4B,EAC5BC,wBAAwB,EACxBC,wBAAwB,EACxBC,4BAA4B,EAC5BC,wBAAwB,EACxBC,wBAAwB,EACxBC,sBAAsB,EACtBC,6BAA6B,EAC7BC,0BAA0B,EAC1BC,sBAAsB,EACtBC,sBAAsB,EACtBC,wCAAwC,EACxCC,+BAA+B,EAC/BC,6BAA6B,EAC7BC,yBAAyB,EACzBC,yBAAyB,EACzBC,uBAAuB,EACvBC,yBAAyB,EACzBC,wBAAwB,EACxBC,gCAAgC,EAChCC,4BAA4B,EAC5BC,+BAA+B,EAC/BC,uBAAuB,EACvBC,gCAAgC,EAChCC,iCAAiC,QAC5B,uBAAuB;AAC9B,SAAgCC,kBAAkB,EAAE7B,OAAO,IAAI8B,WAAW,QAAQ,eAAe;AAEjG,SAASC,SAAS,QAAQ,aAAa;AAavC,SAAS/B,OAAO,IAAIgC,WAAW,QAAQ,eAAe;AAEtD,SAAShC,OAAO,IAAIiC,UAAU,QAAQ,cAAc;AAMpD,SACEjC,OAAO,IAAIkC,cAAc,EAEzBC,qBAAqB,EACrBC,kBAAkB,QACb,kBAAkB;AACzB,SAASpC,OAAO,IAAIqC,UAAU,QAA8B,cAAc;AAC1E,SACEC,gBAAgB,EAChBC,kBAAkB,QAIb,oBAAoB;AAW3B,SACEC,qBAAqB,EACrBxC,OAAO,IAAIyC,WAAW,EACtBC,uBAAuB,EACvBC,0BAA0B,EAC1BC,kBAAkB,EAClBC,qBAAqB,EACrBC,sBAAsB,EACtBC,yBAAyB,EACzBC,2BAA2B,EAC3BC,8BAA8B,QACzB,eAAe;AAEtB,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASlD,OAAO,IAAImD,KAAK,QAAQ,SAAS;AAE1C,SAASnD,OAAO,IAAIoD,aAAa,QAAQ,iBAAiB;AAa1D,SACEC,iBAAiB,EACjBC,YAAY,EACZC,gBAAgB,EAChBC,iBAAiB,EACjBC,kBAAkB,EAClBC,oBAAoB,EACpBC,gBAAgB,EAChBC,oBAAoB,EACpBC,eAAe,EACfC,gBAAgB,QACX,gBAAgB;AAEvB,SAAS9D,OAAO,IAAI+D,UAAU,QAAQ,cAAc;AAWpD,SACEC,iBAAiB,EACjBC,aAAa,EACbC,aAAa,EACbC,YAAY,EACZC,mBAAmB,EACnBC,eAAe,EACfC,eAAe,EACfC,gBAAgB,QACX,YAAY;AASnB,SAASvE,OAAO,IAAIwE,kBAAkB,QAAQ,sBAAsB;AAQpE,SAASxE,OAAO,IAAIyE,aAAa,QAAQ,iBAAiB","ignoreList":[]}
|
|
@@ -3,7 +3,9 @@ import { ssr as _$ssr } from "solid-js/web";
|
|
|
3
3
|
import { escape as _$escape } from "solid-js/web";
|
|
4
4
|
var _tmpl$ = ["<div class=\"k2b-link-card__icon\"><i class=\"", "\" aria-hidden=\"true\"></i></div>"],
|
|
5
5
|
_tmpl$2 = ["<div class=\"k2b-link-card__copy\"><span class=\"k2b-link-card__title\">", "</span><p class=\"k2b-link-card__description\">", "</p></div>"],
|
|
6
|
-
_tmpl$3 = "<
|
|
6
|
+
_tmpl$3 = ["<span class=\"k2b-link-card__meta\">", "</span>"],
|
|
7
|
+
_tmpl$4 = "<i class=\"ti ti-chevron-right k2b-link-card__chevron\" aria-hidden=\"true\"></i>";
|
|
8
|
+
import { Show } from "solid-js";
|
|
7
9
|
import { Paper } from "./Paper";
|
|
8
10
|
export function LinkCard(props) {
|
|
9
11
|
return _$createComponent(Paper, {
|
|
@@ -17,7 +19,14 @@ export function LinkCard(props) {
|
|
|
17
19
|
},
|
|
18
20
|
interactive: true,
|
|
19
21
|
get children() {
|
|
20
|
-
return [_$ssr(_tmpl$, `${_$escape(props.icon, true)} k2b-link-card__glyph`), _$ssr(_tmpl$2, _$escape(props.title), _$escape(props.description)), _$
|
|
22
|
+
return [_$ssr(_tmpl$, `${_$escape(props.icon, true)} k2b-link-card__glyph`), _$ssr(_tmpl$2, _$escape(props.title), _$escape(props.description)), _$createComponent(Show, {
|
|
23
|
+
get when() {
|
|
24
|
+
return props.meta;
|
|
25
|
+
},
|
|
26
|
+
get children() {
|
|
27
|
+
return _$ssr(_tmpl$3, _$escape(props.meta));
|
|
28
|
+
}
|
|
29
|
+
}), _$ssr(_tmpl$4)];
|
|
21
30
|
}
|
|
22
31
|
});
|
|
23
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Paper","LinkCard","props","_$createComponent","as","href","data-color","color","interactive","children","_$ssr","_tmpl$","_$escape","icon","_tmpl$2","title","description","_tmpl$3"],"sources":["surfaces/LinkCard.tsx"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"names":["Show","Paper","LinkCard","props","_$createComponent","as","href","data-color","color","interactive","children","_$ssr","_tmpl$","_$escape","icon","_tmpl$2","title","description","when","meta","_tmpl$3","_tmpl$4"],"sources":["surfaces/LinkCard.tsx"],"sourcesContent":["import { type JSX, Show } from \"solid-js\";\nimport { Paper } from \"./Paper\";\n\nexport type LinkCardColor = \"blue\" | \"emerald\" | \"violet\" | \"orange\" | \"red\" | \"amber\" | \"zinc\" | \"cyan\" | \"rose\";\n\nexport type LinkCardProps = {\n href: string;\n title: string;\n description: string;\n icon: string;\n /** Glyph color. Omit it to use the host application's accent. */\n color?: LinkCardColor;\n /** One trailing fact, such as a count or a badge. */\n meta?: JSX.Element;\n};\n\nexport function LinkCard(props: LinkCardProps): JSX.Element {\n return (\n <Paper as=\"a\" href={props.href} class=\"k2b-link-card\" data-color={props.color} interactive>\n <div class=\"k2b-link-card__icon\">\n <i class={`${props.icon} k2b-link-card__glyph`} aria-hidden=\"true\" />\n </div>\n <div class=\"k2b-link-card__copy\">\n <span class=\"k2b-link-card__title\">{props.title}</span>\n <p class=\"k2b-link-card__description\">{props.description}</p>\n </div>\n <Show when={props.meta}>\n <span class=\"k2b-link-card__meta\">{props.meta}</span>\n </Show>\n <i class=\"ti ti-chevron-right k2b-link-card__chevron\" aria-hidden=\"true\" />\n </Paper>\n );\n}\n\nexport default LinkCard;\n"],"mappings":";;;;;;;AAAA,SAAmBA,IAAI,QAAQ,UAAU;AACzC,SAASC,KAAK,QAAQ,SAAS;AAe/B,OAAO,SAASC,QAAQA,CAACC,KAAoB,EAAe;EAC1D,OAAAC,iBAAA,CACGH,KAAK;IAACI,EAAE;IAAA,IAAKC,IAAIA,CAAA;MAAA,OAAEH,KAAK,CAACG,IAAI;IAAA;IAAA;IAAA,kBAAAC,CAAA;MAAA,OAAoCJ,KAAK,CAACK,KAAK;IAAA;IAAEC,WAAW;IAAA,IAAAC,SAAA;MAAA,QAAAC,KAAA,CAAAC,MAAA,EAE5E,GAAAC,QAAA,CAAGV,KAAK,CAACW,IAAI,8BAAuB,GAAAH,KAAA,CAAAI,OAAA,EAAAF,QAAA,CAGVV,KAAK,CAACa,KAAK,GAAAH,QAAA,CACRV,KAAK,CAACc,WAAW,IAAAb,iBAAA,CAEzDJ,IAAI;QAAA,IAACkB,IAAIA,CAAA;UAAA,OAAEf,KAAK,CAACgB,IAAI;QAAA;QAAA,IAAAT,SAAA;UAAA,OAAAC,KAAA,CAAAS,OAAA,EAAAP,QAAA,CACeV,KAAK,CAACgB,IAAI;QAAA;MAAA,IAAAR,KAAA,CAAAU,OAAA;IAAA;EAAA;AAKrD;AAEA,eAAenB,QAAQ","ignoreList":[]}
|