@openrails/contentkit-ui 0.104.0-rc.1 → 0.104.0-rc.3
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/README.md +6 -6
- package/dist/client/beacons.js +4 -1
- package/dist/client/beacons.js.map +1 -1
- package/dist/client/contents.d.ts +9 -1
- package/dist/client/contents.js +73 -55
- package/dist/client/contents.js.map +1 -1
- package/dist/client/discovery.d.ts +6 -2
- package/dist/client/discovery.js +1 -1
- package/dist/client/discovery.js.map +1 -1
- package/dist/client/generated/error-codes.d.ts +1 -1
- package/dist/client/generated/error-codes.js +4 -0
- package/dist/client/generated/error-codes.js.map +1 -1
- package/dist/client/generated/routes.d.ts +43 -30
- package/dist/client/generated/routes.js +70 -63
- package/dist/client/generated/routes.js.map +1 -1
- package/dist/client/generated/wire.d.ts +36 -74
- package/dist/client/generated/wire.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/media/windows.d.ts +2 -0
- package/dist/client/media/windows.js +4 -1
- package/dist/client/media/windows.js.map +1 -1
- package/dist/client/stats.d.ts +4 -20
- package/dist/client/stats.js +0 -11
- package/dist/client/stats.js.map +1 -1
- package/dist/client/versions.d.ts +8 -6
- package/dist/client/versions.js +15 -10
- package/dist/client/versions.js.map +1 -1
- package/dist/components/admin/bulk-drafts.d.ts +17 -0
- package/dist/components/admin/bulk-drafts.js +41 -0
- package/dist/components/admin/bulk-drafts.js.map +1 -0
- package/dist/components/admin/content-admin.d.ts +1 -1
- package/dist/components/admin/content-admin.js.map +1 -1
- package/dist/components/admin/content-manager.d.ts +11 -3
- package/dist/components/admin/content-manager.js +739 -380
- package/dist/components/admin/content-manager.js.map +1 -1
- package/dist/components/admin/group-manager.d.ts +8 -3
- package/dist/components/admin/group-manager.js +218 -146
- package/dist/components/admin/group-manager.js.map +1 -1
- package/dist/components/admin/page-notices.d.ts +16 -0
- package/dist/components/admin/page-notices.js +113 -0
- package/dist/components/admin/page-notices.js.map +1 -0
- package/dist/components/admin/page-picker.d.ts +38 -0
- package/dist/components/admin/page-picker.js +159 -0
- package/dist/components/admin/page-picker.js.map +1 -0
- package/dist/components/admin/reader-content-editor.js +537 -500
- package/dist/components/admin/reader-content-editor.js.map +1 -1
- package/dist/components/admin/reader-manifest.js +181 -179
- package/dist/components/admin/reader-manifest.js.map +1 -1
- package/dist/components/admin/shell.d.ts +10 -2
- package/dist/components/admin/shell.js +114 -42
- package/dist/components/admin/shell.js.map +1 -1
- package/dist/components/admin/stats-dashboard.d.ts +4 -9
- package/dist/components/admin/stats-dashboard.js +300 -202
- package/dist/components/admin/stats-dashboard.js.map +1 -1
- package/dist/components/admin/upload-queue.d.ts +14 -0
- package/dist/components/admin/upload-queue.js +115 -98
- package/dist/components/admin/upload-queue.js.map +1 -1
- package/dist/components/content/card.d.ts +31 -3
- package/dist/components/content/card.js +324 -158
- package/dist/components/content/card.js.map +1 -1
- package/dist/components/content/daily-releases.js +14 -12
- package/dist/components/content/daily-releases.js.map +1 -1
- package/dist/components/content/editor-save.js +27 -25
- package/dist/components/content/editor-save.js.map +1 -1
- package/dist/components/content/editors.js +274 -253
- package/dist/components/content/editors.js.map +1 -1
- package/dist/components/content/favorites.d.ts +1 -1
- package/dist/components/content/favorites.js +36 -22
- package/dist/components/content/favorites.js.map +1 -1
- package/dist/components/content/grid.d.ts +11 -4
- package/dist/components/content/grid.js +52 -43
- package/dist/components/content/grid.js.map +1 -1
- package/dist/components/content/history.js +83 -63
- package/dist/components/content/history.js.map +1 -1
- package/dist/components/content/index.d.ts +5 -3
- package/dist/components/content/listing.d.ts +14 -3
- package/dist/components/content/listing.js +65 -56
- package/dist/components/content/listing.js.map +1 -1
- package/dist/components/content/offer-fields.js +6 -6
- package/dist/components/content/paged-grid.d.ts +10 -0
- package/dist/components/content/paged-grid.js +116 -0
- package/dist/components/content/paged-grid.js.map +1 -0
- package/dist/components/content/pagination.d.ts +19 -0
- package/dist/components/content/pagination.js +97 -0
- package/dist/components/content/pagination.js.map +1 -0
- package/dist/components/content/paywall.d.ts +9 -0
- package/dist/components/content/paywall.js +27 -3
- package/dist/components/content/paywall.js.map +1 -1
- package/dist/components/content/post-list.d.ts +37 -0
- package/dist/components/content/post-list.js +203 -0
- package/dist/components/content/post-list.js.map +1 -0
- package/dist/components/content/reader-settings.d.ts +2 -0
- package/dist/components/content/reader-settings.js +1 -1
- package/dist/components/content/reader-settings.js.map +1 -1
- package/dist/components/groups/banner.d.ts +6 -2
- package/dist/components/groups/banner.js +79 -61
- package/dist/components/groups/banner.js.map +1 -1
- package/dist/components/groups/directory.d.ts +12 -2
- package/dist/components/groups/directory.js +168 -105
- package/dist/components/groups/directory.js.map +1 -1
- package/dist/components/groups/editor.js +10 -10
- package/dist/components/groups/editor.js.map +1 -1
- package/dist/components/groups/entity-chips.d.ts +61 -0
- package/dist/components/groups/entity-chips.js +382 -0
- package/dist/components/groups/entity-chips.js.map +1 -0
- package/dist/components/groups/group-members.d.ts +29 -0
- package/dist/components/groups/group-members.js +474 -0
- package/dist/components/groups/group-members.js.map +1 -0
- package/dist/components/groups/header.js +53 -45
- package/dist/components/groups/header.js.map +1 -1
- package/dist/components/groups/index.d.ts +3 -1
- package/dist/components/groups/memberships.d.ts +3 -36
- package/dist/components/groups/memberships.js +105 -480
- package/dist/components/groups/memberships.js.map +1 -1
- package/dist/components/groups/scoped.d.ts +23 -0
- package/dist/components/groups/scoped.js +92 -0
- package/dist/components/groups/scoped.js.map +1 -0
- package/dist/components/media-folder-editor.d.ts +5 -0
- package/dist/components/media-folder-editor.js +418 -230
- package/dist/components/media-folder-editor.js.map +1 -1
- package/dist/components/social/poll.js +57 -48
- package/dist/components/social/poll.js.map +1 -1
- package/dist/components/sortable-list.d.ts +5 -1
- package/dist/components/sortable-list.js +97 -81
- package/dist/components/sortable-list.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +41 -37
- package/dist/locales/admin/de.js +78 -45
- package/dist/locales/admin/de.js.map +1 -1
- package/dist/locales/admin/en.d.ts +74 -41
- package/dist/locales/admin/en.js +78 -45
- package/dist/locales/admin/en.js.map +1 -1
- package/dist/locales/admin/es.js +78 -45
- package/dist/locales/admin/es.js.map +1 -1
- package/dist/locales/admin/ja.js +78 -45
- package/dist/locales/admin/ja.js.map +1 -1
- package/dist/locales/admin/ko.js +78 -45
- package/dist/locales/admin/ko.js.map +1 -1
- package/dist/locales/admin/zh.js +78 -45
- package/dist/locales/admin/zh.js.map +1 -1
- package/dist/locales/de.js +2 -0
- package/dist/locales/de.js.map +1 -1
- package/dist/locales/discovery/de.js +25 -1
- package/dist/locales/discovery/de.js.map +1 -1
- package/dist/locales/discovery/en.d.ts +24 -0
- package/dist/locales/discovery/en.js +25 -1
- package/dist/locales/discovery/en.js.map +1 -1
- package/dist/locales/discovery/es.js +25 -1
- package/dist/locales/discovery/es.js.map +1 -1
- package/dist/locales/discovery/ja.js +25 -1
- package/dist/locales/discovery/ja.js.map +1 -1
- package/dist/locales/discovery/ko.js +25 -1
- package/dist/locales/discovery/ko.js.map +1 -1
- package/dist/locales/discovery/zh.js +25 -1
- package/dist/locales/discovery/zh.js.map +1 -1
- package/dist/locales/en.d.ts +120 -43
- package/dist/locales/en.js +2 -0
- package/dist/locales/en.js.map +1 -1
- package/dist/locales/es.js +2 -0
- package/dist/locales/es.js.map +1 -1
- package/dist/locales/groups/de.js +22 -4
- package/dist/locales/groups/de.js.map +1 -1
- package/dist/locales/groups/en.d.ts +20 -2
- package/dist/locales/groups/en.js +22 -4
- package/dist/locales/groups/en.js.map +1 -1
- package/dist/locales/groups/es.js +22 -4
- package/dist/locales/groups/es.js.map +1 -1
- package/dist/locales/groups/ja.js +22 -4
- package/dist/locales/groups/ja.js.map +1 -1
- package/dist/locales/groups/ko.js +22 -4
- package/dist/locales/groups/ko.js.map +1 -1
- package/dist/locales/groups/zh.js +22 -4
- package/dist/locales/groups/zh.js.map +1 -1
- package/dist/locales/ja.js +2 -0
- package/dist/locales/ja.js.map +1 -1
- package/dist/locales/ko.js +2 -0
- package/dist/locales/ko.js.map +1 -1
- package/dist/locales/zh.js +2 -0
- package/dist/locales/zh.js.map +1 -1
- package/dist/react/contents.js +1 -1
- package/dist/react/contents.js.map +1 -1
- package/dist/react/discovery.d.ts +16 -0
- package/dist/react/discovery.js +69 -37
- package/dist/react/discovery.js.map +1 -1
- package/dist/react/groups.d.ts +19 -3
- package/dist/react/groups.js +49 -22
- package/dist/react/groups.js.map +1 -1
- package/dist/react/index.d.ts +6 -4
- package/dist/react/page-notices.d.ts +13 -0
- package/dist/react/page-notices.js +38 -0
- package/dist/react/page-notices.js.map +1 -0
- package/dist/react/post-reads.d.ts +23 -0
- package/dist/react/post-reads.js +90 -0
- package/dist/react/post-reads.js.map +1 -0
- package/dist/react/remembered-sort.d.ts +5 -0
- package/dist/react/remembered-sort.js +29 -0
- package/dist/react/remembered-sort.js.map +1 -0
- package/dist/react/resources.js +2 -2
- package/dist/react/resources.js.map +1 -1
- package/dist/react/stats.d.ts +3 -7
- package/dist/react/stats.js +2 -6
- package/dist/react/stats.js.map +1 -1
- package/dist/react/use-engagement.d.ts +2 -0
- package/dist/react/use-engagement.js +40 -34
- package/dist/react/use-engagement.js.map +1 -1
- package/dist/react.js +29 -27
- package/dist/styles.css +1 -1
- package/dist/urls/index.d.ts +1 -1
- package/dist/urls.js +2 -2
- package/dist/urls.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/admin/page-review.d.ts +0 -13
- package/dist/components/admin/page-review.js +0 -225
- package/dist/components/admin/page-review.js.map +0 -1
- package/dist/react/page-review.d.ts +0 -14
- package/dist/react/page-review.js +0 -37
- package/dist/react/page-review.js.map +0 -1
|
@@ -1,121 +1,137 @@
|
|
|
1
1
|
import { useMessages as e } from "../i18n/context.js";
|
|
2
2
|
import { ContentKitUiRoot as t } from "../scope.js";
|
|
3
|
-
import {
|
|
4
|
-
import { jsx as
|
|
5
|
-
import { cn as
|
|
6
|
-
import { DragDropVerticalIcon as
|
|
7
|
-
import { HugeiconsIcon as
|
|
8
|
-
import { DndContext as
|
|
9
|
-
import { SortableContext as
|
|
3
|
+
import { Fragment as n, useMemo as r, useState as i } from "react";
|
|
4
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
5
|
+
import { cn as s } from "cn";
|
|
6
|
+
import { DragDropVerticalIcon as c } from "@hugeicons/core-free-icons";
|
|
7
|
+
import { HugeiconsIcon as l } from "@hugeicons/react";
|
|
8
|
+
import { DndContext as u, DragOverlay as d, KeyboardSensor as f, PointerSensor as p, closestCenter as m, useSensor as h, useSensors as g } from "@dnd-kit/core";
|
|
9
|
+
import { SortableContext as _, sortableKeyboardCoordinates as v, useSortable as y } from "@dnd-kit/sortable";
|
|
10
10
|
//#region src/components/sortable-list.tsx
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
11
|
+
var b = {
|
|
12
|
+
start: ["Space"],
|
|
13
|
+
cancel: ["Escape"],
|
|
14
|
+
end: ["Space"]
|
|
15
|
+
}, x = () => null, S = "inline-flex size-8 shrink-0 cursor-grab touch-none items-center justify-center rounded-md text-muted-foreground outline-none hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring active:cursor-grabbing disabled:cursor-default disabled:opacity-50";
|
|
16
|
+
function C({ items: y, id: C, name: T, onMove: E, layout: D = "list", disabled: O, row: k, children: A, className: j, label: M, appearance: N, wholeItem: P, trailing: F }) {
|
|
17
|
+
let { t: I } = e(), L = g(h(p, { activationConstraint: { distance: 4 } }), h(f, {
|
|
18
|
+
coordinateGetter: v,
|
|
19
|
+
...P ? { keyboardCodes: b } : {}
|
|
20
|
+
})), R = r(() => y.map(C), [y, C]), [z, B] = i(null), [V, H] = i(null), U = (e) => R.indexOf(String(e)), W = (e) => {
|
|
21
|
+
let t = U(e);
|
|
22
|
+
return t < 0 ? "" : T(y[t]);
|
|
23
|
+
}, G = R.length, K = {
|
|
24
|
+
onDragStart: ({ active: e }) => I("sortable.pickedUp", {
|
|
25
|
+
name: W(e.id),
|
|
26
|
+
position: U(e.id) + 1,
|
|
27
|
+
total: G
|
|
21
28
|
}),
|
|
22
|
-
onDragOver: ({ active: e, over: t }) => t ?
|
|
23
|
-
name:
|
|
24
|
-
position:
|
|
25
|
-
total:
|
|
29
|
+
onDragOver: ({ active: e, over: t }) => t ? I("sortable.over", {
|
|
30
|
+
name: W(e.id),
|
|
31
|
+
position: U(t.id) + 1,
|
|
32
|
+
total: G
|
|
26
33
|
}) : void 0,
|
|
27
|
-
onDragEnd: ({ active: e, over: t }) => t ?
|
|
28
|
-
name:
|
|
29
|
-
position:
|
|
30
|
-
total:
|
|
31
|
-
}) :
|
|
32
|
-
onDragCancel: ({ active: e }) =>
|
|
33
|
-
},
|
|
34
|
-
className:
|
|
35
|
-
"aria-label": t ? void 0 :
|
|
34
|
+
onDragEnd: ({ active: e, over: t }) => t ? I("sortable.dropped", {
|
|
35
|
+
name: W(e.id),
|
|
36
|
+
position: U(t.id) + 1,
|
|
37
|
+
total: G
|
|
38
|
+
}) : I("sortable.droppedAway", { name: W(e.id) }),
|
|
39
|
+
onDragCancel: ({ active: e }) => I("sortable.canceled", { name: W(e.id) })
|
|
40
|
+
}, q = { draggable: I(P ? "sortable.instructionsTile" : "sortable.instructions") }, J = z ? U(z) : -1, Y = V ? U(V) : -1, X = J >= 0 ? y[J] : void 0, Z = D === "grid", Q = (e, t) => /* @__PURE__ */ a("ol", {
|
|
41
|
+
className: s(Z ? "grid grid-cols-[repeat(auto-fill,minmax(8rem,1fr))] gap-2" : "grid gap-1", j),
|
|
42
|
+
"aria-label": t ? void 0 : M,
|
|
36
43
|
"data-ckui": "sortable-list",
|
|
37
|
-
"data-layout":
|
|
44
|
+
"data-layout": D,
|
|
38
45
|
"data-overlay": t ? "" : void 0,
|
|
39
46
|
children: e
|
|
40
47
|
});
|
|
41
|
-
return /* @__PURE__ */
|
|
42
|
-
appearance:
|
|
48
|
+
return /* @__PURE__ */ a(t, {
|
|
49
|
+
appearance: N,
|
|
43
50
|
className: "contents",
|
|
44
|
-
children: /* @__PURE__ */
|
|
45
|
-
sensors:
|
|
46
|
-
collisionDetection:
|
|
51
|
+
children: /* @__PURE__ */ o(u, {
|
|
52
|
+
sensors: L,
|
|
53
|
+
collisionDetection: m,
|
|
47
54
|
accessibility: {
|
|
48
|
-
announcements:
|
|
49
|
-
screenReaderInstructions:
|
|
55
|
+
announcements: K,
|
|
56
|
+
screenReaderInstructions: q
|
|
50
57
|
},
|
|
51
|
-
onDragStart: (e) =>
|
|
52
|
-
onDragOver: (e) =>
|
|
58
|
+
onDragStart: (e) => B(String(e.active.id)),
|
|
59
|
+
onDragOver: (e) => H(e.over ? String(e.over.id) : null),
|
|
53
60
|
onDragCancel: () => {
|
|
54
|
-
|
|
61
|
+
B(null), H(null);
|
|
55
62
|
},
|
|
56
63
|
onDragEnd: (e) => {
|
|
57
|
-
|
|
58
|
-
let t =
|
|
59
|
-
t >= 0 && n >= 0 && t !== n &&
|
|
64
|
+
B(null), H(null);
|
|
65
|
+
let t = U(e.active.id), n = e.over ? U(e.over.id) : -1;
|
|
66
|
+
t >= 0 && n >= 0 && t !== n && E(t, n);
|
|
60
67
|
},
|
|
61
|
-
children: [/* @__PURE__ */
|
|
62
|
-
items:
|
|
63
|
-
strategy:
|
|
64
|
-
disabled:
|
|
65
|
-
children:
|
|
66
|
-
id:
|
|
67
|
-
label:
|
|
68
|
-
attrs:
|
|
69
|
-
disabled:
|
|
70
|
-
grid:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
68
|
+
children: [/* @__PURE__ */ a(_, {
|
|
69
|
+
items: R,
|
|
70
|
+
strategy: x,
|
|
71
|
+
disabled: O,
|
|
72
|
+
children: Q(y.map((e, t) => /* @__PURE__ */ a(w, {
|
|
73
|
+
id: R[t],
|
|
74
|
+
label: I("sortable.handle", { name: T(e) }),
|
|
75
|
+
attrs: k?.(e),
|
|
76
|
+
disabled: O,
|
|
77
|
+
grid: Z,
|
|
78
|
+
whole: P,
|
|
79
|
+
dragging: t === J,
|
|
80
|
+
drop: J >= 0 && t === Y && Y !== J ? Y > J ? "after" : "before" : void 0,
|
|
81
|
+
render: (n) => A(e, n, t)
|
|
82
|
+
}, R[t])).concat(F ? [/* @__PURE__ */ a(n, { children: F }, "trailing")] : []))
|
|
83
|
+
}), /* @__PURE__ */ a(d, {
|
|
76
84
|
dropAnimation: null,
|
|
77
|
-
children:
|
|
78
|
-
...
|
|
79
|
-
className:
|
|
80
|
-
children:
|
|
81
|
-
className:
|
|
82
|
-
children: /* @__PURE__ */
|
|
83
|
-
icon:
|
|
85
|
+
children: X === void 0 ? null : Q(/* @__PURE__ */ a("li", {
|
|
86
|
+
...k?.(X),
|
|
87
|
+
className: s(k?.(X).className, "cursor-grabbing rounded-md bg-background shadow-lg ring-1 ring-border"),
|
|
88
|
+
children: A(X, P ? null : /* @__PURE__ */ a("span", {
|
|
89
|
+
className: S,
|
|
90
|
+
children: /* @__PURE__ */ a(l, {
|
|
91
|
+
icon: c,
|
|
84
92
|
strokeWidth: 2,
|
|
85
93
|
className: "size-4.5"
|
|
86
94
|
})
|
|
87
|
-
}),
|
|
95
|
+
}), J)
|
|
88
96
|
}), !0)
|
|
89
97
|
})]
|
|
90
98
|
})
|
|
91
99
|
});
|
|
92
100
|
}
|
|
93
|
-
function
|
|
94
|
-
let { attributes:
|
|
101
|
+
function w({ id: e, label: t, attrs: n, disabled: r, grid: i, whole: o, dragging: u, drop: d, render: f }) {
|
|
102
|
+
let { attributes: p, listeners: m, setNodeRef: h, setActivatorNodeRef: g } = y({ id: e }), _ = o ? null : /* @__PURE__ */ a("button", {
|
|
95
103
|
type: "button",
|
|
96
|
-
ref:
|
|
97
|
-
className:
|
|
104
|
+
ref: g,
|
|
105
|
+
className: S,
|
|
98
106
|
"aria-label": t,
|
|
99
107
|
disabled: r,
|
|
100
108
|
"data-ckui": "sort-handle",
|
|
101
|
-
...f,
|
|
102
109
|
...p,
|
|
103
|
-
|
|
104
|
-
|
|
110
|
+
...m,
|
|
111
|
+
children: /* @__PURE__ */ a(l, {
|
|
112
|
+
icon: c,
|
|
105
113
|
strokeWidth: 2,
|
|
106
114
|
className: "size-4.5"
|
|
107
115
|
})
|
|
108
116
|
});
|
|
109
|
-
return /* @__PURE__ */
|
|
117
|
+
return /* @__PURE__ */ a("li", {
|
|
110
118
|
...n,
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
119
|
+
...o && !r ? {
|
|
120
|
+
...p,
|
|
121
|
+
...m,
|
|
122
|
+
onKeyDown: (e) => {
|
|
123
|
+
m?.onKeyDown?.(e), n?.onKeyDown?.(e);
|
|
124
|
+
},
|
|
125
|
+
"aria-label": t
|
|
126
|
+
} : {},
|
|
127
|
+
ref: h,
|
|
128
|
+
className: s(n?.className, "relative data-dragging:opacity-40 before:pointer-events-none before:absolute before:rounded-full before:bg-primary before:opacity-0", i ? "before:inset-y-0 before:w-0.5 data-[drop=before]:before:-left-[5px] data-[drop=before]:before:opacity-100 data-[drop=after]:before:-right-[5px] data-[drop=after]:before:opacity-100" : "before:inset-x-0 before:h-0.5 data-[drop=before]:before:-top-[3px] data-[drop=before]:before:opacity-100 data-[drop=after]:before:-bottom-[3px] data-[drop=after]:before:opacity-100"),
|
|
129
|
+
"data-drop": d,
|
|
130
|
+
"data-dragging": u || void 0,
|
|
131
|
+
children: f(_)
|
|
116
132
|
});
|
|
117
133
|
}
|
|
118
134
|
//#endregion
|
|
119
|
-
export {
|
|
135
|
+
export { C as SortableList };
|
|
120
136
|
|
|
121
137
|
//# sourceMappingURL=sortable-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortable-list.js","names":[],"sources":["../../src/components/sortable-list.tsx"],"sourcesContent":["import {\n DndContext,\n DragOverlay,\n KeyboardSensor,\n PointerSensor,\n closestCenter,\n useSensor,\n useSensors,\n type Announcements,\n type ScreenReaderInstructions,\n} from \"@dnd-kit/core\";\nimport { SortableContext, sortableKeyboardCoordinates, useSortable } from \"@dnd-kit/sortable\";\nimport { DragDropVerticalIcon } from \"@hugeicons/core-free-icons\";\nimport { HugeiconsIcon } from \"@hugeicons/react\";\nimport { cn } from \"cn\";\nimport { useMemo, useState, type HTMLAttributes, type ReactNode } from \"react\";\nimport type { ContentKitUiAppearance } from \"../appearance.js\";\nimport { useMessages } from \"../i18n/context.js\";\nimport { ContentKitUiRoot } from \"../scope.js\";\n\nexport interface SortableListProps<T> {\n items: readonly T[];\n /** A stable key per item. */\n id: (item: T) => string;\n /** The item's spoken name in announcements and the handle's label. */\n name: (item: T) => string;\n /** Called once per drop with the old and new index. */\n onMove: (from: number, to: number) => void;\n /** Rows (default) or a wrapping grid of tiles. */\n layout?: \"list\" | \"grid\";\n disabled?: boolean;\n /** Attributes of an item's `<li>`. */\n row?: (item: T) => HTMLAttributes<HTMLLIElement> & Record<`data-${string}`, unknown>;\n /** An item's content; place `handle` (its drag handle) where it belongs. */\n children: (item: T, handle: ReactNode, index: number) => ReactNode;\n className?: string;\n /** Accessible name of the list. */\n label?: string;\n appearance?: ContentKitUiAppearance;\n}\n\n// Items stay put while dragging; a bar marks where the item will land.\nconst noShift = () => null;\nconst handleClass =\n \"inline-flex size-8 shrink-0 cursor-grab touch-none items-center justify-center rounded-md text-muted-foreground outline-none hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring active:cursor-grabbing disabled:cursor-default disabled:opacity-50\";\n\n/**\n * A reorderable list or grid (dnd-kit): drag an item by its handle with a\n * mouse, a finger or the keyboard (Space or Enter lifts, arrows move, Space\n * or Enter drops, Escape cancels), with localized screen reader\n * announcements. onMove gets the old and new index once, on drop.\n */\nexport function SortableList<T>({ items, id, name, onMove, layout = \"list\", disabled, row, children, className, label, appearance }: SortableListProps<T>) {\n const { t } = useMessages();\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 4 } }), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }));\n const ids = useMemo(() => items.map(id), [items, id]);\n const [active, setActive] = useState<string | null>(null);\n const [over, setOver] = useState<string | null>(null);\n const at = (key: unknown) => ids.indexOf(String(key));\n const spoken = (key: unknown) => {\n const i = at(key);\n return i < 0 ? \"\" : name(items[i]!);\n };\n const total = ids.length;\n const announcements: Announcements = {\n onDragStart: ({ active }) => t(\"sortable.pickedUp\", { name: spoken(active.id), position: at(active.id) + 1, total }),\n onDragOver: ({ active, over }) => (over ? t(\"sortable.over\", { name: spoken(active.id), position: at(over.id) + 1, total }) : undefined),\n onDragEnd: ({ active, over }) =>\n over ? t(\"sortable.dropped\", { name: spoken(active.id), position: at(over.id) + 1, total }) : t(\"sortable.droppedAway\", { name: spoken(active.id) }),\n onDragCancel: ({ active }) => t(\"sortable.canceled\", { name: spoken(active.id) }),\n };\n const instructions: ScreenReaderInstructions = { draggable: t(\"sortable.instructions\") };\n const from = active ? at(active) : -1;\n const to = over ? at(over) : -1;\n const dragged = from >= 0 ? items[from] : undefined;\n const grid = layout === \"grid\";\n const list = (inner: ReactNode, overlay?: boolean) => (\n <ol\n className={cn(grid ? \"grid grid-cols-[repeat(auto-fill,minmax(8rem,1fr))] gap-2\" : \"grid gap-1\", className)}\n aria-label={overlay ? undefined : label}\n data-ckui=\"sortable-list\"\n data-layout={layout}\n data-overlay={overlay ? \"\" : undefined}\n >\n {inner}\n </ol>\n );\n return (\n <ContentKitUiRoot appearance={appearance} className=\"contents\">\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n accessibility={{ announcements, screenReaderInstructions: instructions }}\n onDragStart={(e) => setActive(String(e.active.id))}\n onDragOver={(e) => setOver(e.over ? String(e.over.id) : null)}\n onDragCancel={() => {\n setActive(null);\n setOver(null);\n }}\n onDragEnd={(e) => {\n setActive(null);\n setOver(null);\n const a = at(e.active.id);\n const b = e.over ? at(e.over.id) : -1;\n if (a >= 0 && b >= 0 && a !== b) onMove(a, b);\n }}\n >\n <SortableContext items={ids} strategy={noShift} disabled={disabled}>\n {list(\n items.map((item, i) => (\n <Item\n key={ids[i]}\n id={ids[i]!}\n label={t(\"sortable.handle\", { name: name(item) })}\n attrs={row?.(item)}\n disabled={disabled}\n grid={grid}\n dragging={i === from}\n drop={from >= 0 && i === to && to !== from ? (to > from ? \"after\" : \"before\") : undefined}\n render={(handle) => children(item, handle, i)}\n />\n )),\n )}\n </SortableContext>\n <DragOverlay dropAnimation={null}>\n {dragged !== undefined\n ? list(\n <li {...row?.(dragged)} className={cn(row?.(dragged).className, \"cursor-grabbing rounded-md bg-background shadow-lg ring-1 ring-border\")}>\n {children(\n dragged,\n <span className={handleClass}>\n <HugeiconsIcon icon={DragDropVerticalIcon} strokeWidth={2} className=\"size-4.5\" />\n </span>,\n from,\n )}\n </li>,\n true,\n )\n : null}\n </DragOverlay>\n </DndContext>\n </ContentKitUiRoot>\n );\n}\n\nfunction Item({\n id,\n label,\n attrs,\n disabled,\n grid,\n dragging,\n drop,\n render,\n}: {\n id: string;\n label: string;\n attrs?: HTMLAttributes<HTMLLIElement>;\n disabled?: boolean;\n grid: boolean;\n dragging: boolean;\n drop?: \"before\" | \"after\";\n render: (handle: ReactNode) => ReactNode;\n}) {\n const { attributes, listeners, setNodeRef, setActivatorNodeRef } = useSortable({ id });\n const handle = (\n <button type=\"button\" ref={setActivatorNodeRef} className={handleClass} aria-label={label} disabled={disabled} data-ckui=\"sort-handle\" {...attributes} {...listeners}>\n <HugeiconsIcon icon={DragDropVerticalIcon} strokeWidth={2} className=\"size-4.5\" />\n </button>\n );\n return (\n <li\n {...attrs}\n ref={setNodeRef}\n className={cn(\n attrs?.className,\n \"relative data-dragging:opacity-40 before:pointer-events-none before:absolute before:rounded-full before:bg-primary before:opacity-0\",\n grid\n ? \"before:inset-y-0 before:w-0.5 data-[drop=before]:before:-left-[5px] data-[drop=before]:before:opacity-100 data-[drop=after]:before:-right-[5px] data-[drop=after]:before:opacity-100\"\n : \"before:inset-x-0 before:h-0.5 data-[drop=before]:before:-top-[3px] data-[drop=before]:before:opacity-100 data-[drop=after]:before:-bottom-[3px] data-[drop=after]:before:opacity-100\",\n )}\n data-drop={drop}\n data-dragging={dragging || undefined}\n >\n {render(handle)}\n </li>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sortable-list.js","names":[],"sources":["../../src/components/sortable-list.tsx"],"sourcesContent":["import {\n DndContext,\n DragOverlay,\n KeyboardSensor,\n PointerSensor,\n closestCenter,\n useSensor,\n useSensors,\n type Announcements,\n type ScreenReaderInstructions,\n} from \"@dnd-kit/core\";\nimport { SortableContext, sortableKeyboardCoordinates, useSortable } from \"@dnd-kit/sortable\";\nimport { DragDropVerticalIcon } from \"@hugeicons/core-free-icons\";\nimport { HugeiconsIcon } from \"@hugeicons/react\";\nimport { cn } from \"cn\";\nimport { Fragment, useMemo, useState, type HTMLAttributes, type KeyboardEvent, type ReactNode } from \"react\";\nimport type { ContentKitUiAppearance } from \"../appearance.js\";\nimport { useMessages } from \"../i18n/context.js\";\nimport { ContentKitUiRoot } from \"../scope.js\";\n\nexport interface SortableListProps<T> {\n items: readonly T[];\n /** A stable key per item. */\n id: (item: T) => string;\n /** The item's spoken name in announcements and the handle's label. */\n name: (item: T) => string;\n /** Called once per drop with the old and new index. */\n onMove: (from: number, to: number) => void;\n /** Rows (default) or a wrapping grid of tiles. */\n layout?: \"list\" | \"grid\";\n disabled?: boolean;\n /** Attributes of an item's `<li>`. */\n row?: (item: T) => HTMLAttributes<HTMLLIElement> & Record<`data-${string}`, unknown>;\n /** An item's content; place `handle` (its drag handle) where it belongs. */\n children: (item: T, handle: ReactNode, index: number) => ReactNode;\n className?: string;\n /** Accessible name of the list. */\n label?: string;\n /** The whole item is the drag handle (Space lifts and drops; Enter is left to the item). */\n wholeItem?: boolean;\n /** Unsortable entries after the items, in the same list (e.g. uploads in progress). */\n trailing?: ReactNode;\n appearance?: ContentKitUiAppearance;\n}\n\nconst SPACE_ONLY = { start: [\"Space\"], cancel: [\"Escape\"], end: [\"Space\"] };\n\n// Items stay put while dragging; a bar marks where the item will land.\nconst noShift = () => null;\nconst handleClass =\n \"inline-flex size-8 shrink-0 cursor-grab touch-none items-center justify-center rounded-md text-muted-foreground outline-none hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring active:cursor-grabbing disabled:cursor-default disabled:opacity-50\";\n\n/**\n * A reorderable list or grid (dnd-kit): drag an item by its handle with a\n * mouse, a finger or the keyboard (Space or Enter lifts, arrows move, Space\n * or Enter drops, Escape cancels), with localized screen reader\n * announcements. onMove gets the old and new index once, on drop.\n */\nexport function SortableList<T>({ items, id, name, onMove, layout = \"list\", disabled, row, children, className, label, appearance, wholeItem, trailing }: SortableListProps<T>) {\n const { t } = useMessages();\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 4 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates, ...(wholeItem ? { keyboardCodes: SPACE_ONLY } : {}) }),\n );\n const ids = useMemo(() => items.map(id), [items, id]);\n const [active, setActive] = useState<string | null>(null);\n const [over, setOver] = useState<string | null>(null);\n const at = (key: unknown) => ids.indexOf(String(key));\n const spoken = (key: unknown) => {\n const i = at(key);\n return i < 0 ? \"\" : name(items[i]!);\n };\n const total = ids.length;\n const announcements: Announcements = {\n onDragStart: ({ active }) => t(\"sortable.pickedUp\", { name: spoken(active.id), position: at(active.id) + 1, total }),\n onDragOver: ({ active, over }) => (over ? t(\"sortable.over\", { name: spoken(active.id), position: at(over.id) + 1, total }) : undefined),\n onDragEnd: ({ active, over }) =>\n over ? t(\"sortable.dropped\", { name: spoken(active.id), position: at(over.id) + 1, total }) : t(\"sortable.droppedAway\", { name: spoken(active.id) }),\n onDragCancel: ({ active }) => t(\"sortable.canceled\", { name: spoken(active.id) }),\n };\n const instructions: ScreenReaderInstructions = { draggable: t(wholeItem ? \"sortable.instructionsTile\" : \"sortable.instructions\") };\n const from = active ? at(active) : -1;\n const to = over ? at(over) : -1;\n const dragged = from >= 0 ? items[from] : undefined;\n const grid = layout === \"grid\";\n const list = (inner: ReactNode, overlay?: boolean) => (\n <ol\n className={cn(grid ? \"grid grid-cols-[repeat(auto-fill,minmax(8rem,1fr))] gap-2\" : \"grid gap-1\", className)}\n aria-label={overlay ? undefined : label}\n data-ckui=\"sortable-list\"\n data-layout={layout}\n data-overlay={overlay ? \"\" : undefined}\n >\n {inner}\n </ol>\n );\n return (\n <ContentKitUiRoot appearance={appearance} className=\"contents\">\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n accessibility={{ announcements, screenReaderInstructions: instructions }}\n onDragStart={(e) => setActive(String(e.active.id))}\n onDragOver={(e) => setOver(e.over ? String(e.over.id) : null)}\n onDragCancel={() => {\n setActive(null);\n setOver(null);\n }}\n onDragEnd={(e) => {\n setActive(null);\n setOver(null);\n const a = at(e.active.id);\n const b = e.over ? at(e.over.id) : -1;\n if (a >= 0 && b >= 0 && a !== b) onMove(a, b);\n }}\n >\n <SortableContext items={ids} strategy={noShift} disabled={disabled}>\n {list(\n items.map((item, i) => (\n <Item\n key={ids[i]}\n id={ids[i]!}\n label={t(\"sortable.handle\", { name: name(item) })}\n attrs={row?.(item)}\n disabled={disabled}\n grid={grid}\n whole={wholeItem}\n dragging={i === from}\n drop={from >= 0 && i === to && to !== from ? (to > from ? \"after\" : \"before\") : undefined}\n render={(handle) => children(item, handle, i)}\n />\n )).concat(trailing ? [<Fragment key=\"trailing\">{trailing}</Fragment>] : []),\n )}\n </SortableContext>\n <DragOverlay dropAnimation={null}>\n {dragged !== undefined\n ? list(\n <li {...row?.(dragged)} className={cn(row?.(dragged).className, \"cursor-grabbing rounded-md bg-background shadow-lg ring-1 ring-border\")}>\n {children(\n dragged,\n wholeItem ? null : (\n <span className={handleClass}>\n <HugeiconsIcon icon={DragDropVerticalIcon} strokeWidth={2} className=\"size-4.5\" />\n </span>\n ),\n from,\n )}\n </li>,\n true,\n )\n : null}\n </DragOverlay>\n </DndContext>\n </ContentKitUiRoot>\n );\n}\n\nfunction Item({\n id,\n label,\n attrs,\n disabled,\n grid,\n whole,\n dragging,\n drop,\n render,\n}: {\n id: string;\n label: string;\n attrs?: HTMLAttributes<HTMLLIElement>;\n disabled?: boolean;\n grid: boolean;\n whole?: boolean;\n dragging: boolean;\n drop?: \"before\" | \"after\";\n render: (handle: ReactNode) => ReactNode;\n}) {\n const { attributes, listeners, setNodeRef, setActivatorNodeRef } = useSortable({ id });\n const handle = whole ? null : (\n <button type=\"button\" ref={setActivatorNodeRef} className={handleClass} aria-label={label} disabled={disabled} data-ckui=\"sort-handle\" {...attributes} {...listeners}>\n <HugeiconsIcon icon={DragDropVerticalIcon} strokeWidth={2} className=\"size-4.5\" />\n </button>\n );\n return (\n <li\n {...attrs}\n {...(whole && !disabled\n ? {\n ...attributes,\n ...listeners,\n onKeyDown: (e: KeyboardEvent<HTMLLIElement>) => {\n listeners?.onKeyDown?.(e);\n attrs?.onKeyDown?.(e);\n },\n \"aria-label\": label,\n }\n : {})}\n ref={setNodeRef}\n className={cn(\n attrs?.className,\n \"relative data-dragging:opacity-40 before:pointer-events-none before:absolute before:rounded-full before:bg-primary before:opacity-0\",\n grid\n ? \"before:inset-y-0 before:w-0.5 data-[drop=before]:before:-left-[5px] data-[drop=before]:before:opacity-100 data-[drop=after]:before:-right-[5px] data-[drop=after]:before:opacity-100\"\n : \"before:inset-x-0 before:h-0.5 data-[drop=before]:before:-top-[3px] data-[drop=before]:before:opacity-100 data-[drop=after]:before:-bottom-[3px] data-[drop=after]:before:opacity-100\",\n )}\n data-drop={drop}\n data-dragging={dragging || undefined}\n >\n {render(handle)}\n </li>\n );\n}\n"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ export { GroupManager, useGroupManagerAccess, type GroupManagerProps } from './c
|
|
|
30
30
|
export { MediaItemPanel, VideoMediaEditor, videoPaths, type MediaItemPanelProps, type VideoMediaEditorProps } from './components/admin/media-item-panel.js';
|
|
31
31
|
export { StatsDashboard, type StatsDashboardProps } from './components/admin/stats-dashboard.js';
|
|
32
32
|
export { ReaderManifestEditor, type ReaderManifestEditorProps } from './components/admin/reader-manifest.js';
|
|
33
|
-
export {
|
|
33
|
+
export { PageNotices, type PageNoticesProps } from './components/admin/page-notices.js';
|
|
34
34
|
export { UploadQueue, type UploadQueueProps } from './components/admin/upload-queue.js';
|
|
35
35
|
export { NoAccess, Pager, useConfirm, type AdminFlowProps, type AdminRouteProps, type ConfirmOptions, type ContentKitGuard } from './components/admin/shell.js';
|
|
36
36
|
export type { AdminNavigation, ContentKitAuth, StaffAccess, StaffArea } from './react/admin.js';
|