@almadar/ui 5.12.1 → 5.13.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/dist/avl/index.cjs +131 -125
- package/dist/avl/index.js +131 -125
- package/dist/components/atoms/Input.d.ts +1 -1
- package/dist/components/index.cjs +130 -124
- package/dist/components/index.js +130 -124
- package/dist/components/molecules/CalendarGrid.d.ts +2 -2
- package/dist/components/molecules/DataGrid.d.ts +8 -2
- package/dist/components/molecules/DataList.d.ts +2 -2
- package/dist/components/molecules/PositionedCanvas.d.ts +2 -2
- package/dist/components/molecules/ReplyTree.d.ts +2 -2
- package/dist/components/molecules/SortableList.d.ts +2 -2
- package/dist/components/molecules/TableView.d.ts +2 -2
- package/dist/components/molecules/markdown/CodeBlock.d.ts +1 -1
- package/dist/components/organisms/DetailPanel.d.ts +3 -0
- package/dist/components/organisms/HeroOrganism.d.ts +2 -0
- package/dist/components/organisms/Timeline.d.ts +2 -2
- package/dist/components/organisms/book/BookViewer.d.ts +3 -0
- package/dist/components/organisms/types.d.ts +2 -2
- package/dist/docs/index.d.cts +1 -1
- package/dist/providers/index.cjs +131 -125
- package/dist/providers/index.js +131 -125
- package/dist/runtime/index.cjs +131 -125
- package/dist/runtime/index.js +131 -125
- package/package.json +6 -3
- package/tailwind-preset.cjs +2 -0
package/dist/avl/index.cjs
CHANGED
|
@@ -10,8 +10,8 @@ var LucideIcons2 = require('lucide-react');
|
|
|
10
10
|
var PhosphorIcons = require('@phosphor-icons/react');
|
|
11
11
|
var TablerIcons = require('@tabler/icons-react');
|
|
12
12
|
var FaIcons = require('react-icons/fa');
|
|
13
|
-
var evaluator = require('@almadar/evaluator');
|
|
14
13
|
var reactDom = require('react-dom');
|
|
14
|
+
var evaluator = require('@almadar/evaluator');
|
|
15
15
|
var reactRouterDom = require('react-router-dom');
|
|
16
16
|
var ReactMarkdown = require('react-markdown');
|
|
17
17
|
var remarkGfm = require('remark-gfm');
|
|
@@ -6856,7 +6856,7 @@ var init_Modal = __esm({
|
|
|
6856
6856
|
document.body.style.overflow = "";
|
|
6857
6857
|
};
|
|
6858
6858
|
}, [isOpen]);
|
|
6859
|
-
if (!isOpen) return null;
|
|
6859
|
+
if (!isOpen || typeof document === "undefined") return null;
|
|
6860
6860
|
const handleClose = () => {
|
|
6861
6861
|
if (closeEvent) eventBus.emit(`UI:${closeEvent}`, {});
|
|
6862
6862
|
onClose();
|
|
@@ -6866,124 +6866,127 @@ var init_Modal = __esm({
|
|
|
6866
6866
|
handleClose();
|
|
6867
6867
|
}
|
|
6868
6868
|
};
|
|
6869
|
-
return
|
|
6870
|
-
/* @__PURE__ */ jsxRuntime.
|
|
6871
|
-
|
|
6872
|
-
|
|
6873
|
-
|
|
6874
|
-
|
|
6875
|
-
|
|
6876
|
-
|
|
6877
|
-
|
|
6878
|
-
|
|
6879
|
-
|
|
6880
|
-
|
|
6881
|
-
|
|
6882
|
-
|
|
6883
|
-
|
|
6884
|
-
|
|
6885
|
-
|
|
6886
|
-
|
|
6887
|
-
|
|
6888
|
-
|
|
6889
|
-
|
|
6890
|
-
|
|
6891
|
-
|
|
6892
|
-
|
|
6893
|
-
|
|
6894
|
-
|
|
6895
|
-
|
|
6896
|
-
|
|
6897
|
-
|
|
6898
|
-
|
|
6899
|
-
|
|
6900
|
-
|
|
6901
|
-
|
|
6902
|
-
|
|
6903
|
-
|
|
6904
|
-
|
|
6905
|
-
|
|
6906
|
-
|
|
6907
|
-
|
|
6908
|
-
|
|
6909
|
-
|
|
6910
|
-
|
|
6911
|
-
style: dragY > 0 ? {
|
|
6912
|
-
transform: `translateY(${dragY}px)`,
|
|
6913
|
-
transition: isDragging.current ? "none" : "transform 200ms ease-out"
|
|
6914
|
-
} : void 0,
|
|
6915
|
-
...title && { "aria-labelledby": "modal-title" },
|
|
6916
|
-
children: [
|
|
6917
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6918
|
-
Box,
|
|
6919
|
-
{
|
|
6920
|
-
className: "hidden max-sm:flex justify-center py-2 cursor-grab active:cursor-grabbing touch-none",
|
|
6921
|
-
onPointerDown: (e) => {
|
|
6922
|
-
if (!swipeDownToClose) return;
|
|
6923
|
-
dragStartY.current = e.clientY;
|
|
6924
|
-
isDragging.current = true;
|
|
6925
|
-
e.target.setPointerCapture(e.pointerId);
|
|
6926
|
-
},
|
|
6927
|
-
onPointerMove: (e) => {
|
|
6928
|
-
if (!isDragging.current) return;
|
|
6929
|
-
const dy = Math.max(0, e.clientY - dragStartY.current);
|
|
6930
|
-
setDragY(dy);
|
|
6931
|
-
},
|
|
6932
|
-
onPointerUp: () => {
|
|
6933
|
-
if (!isDragging.current) return;
|
|
6934
|
-
isDragging.current = false;
|
|
6935
|
-
if (dragY > 100) {
|
|
6936
|
-
handleClose();
|
|
6937
|
-
}
|
|
6938
|
-
setDragY(0);
|
|
6939
|
-
},
|
|
6940
|
-
onPointerCancel: () => {
|
|
6941
|
-
isDragging.current = false;
|
|
6942
|
-
setDragY(0);
|
|
6943
|
-
},
|
|
6944
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-10 h-1 rounded-full bg-border" })
|
|
6945
|
-
}
|
|
6869
|
+
return reactDom.createPortal(
|
|
6870
|
+
/* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6871
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6872
|
+
Overlay,
|
|
6873
|
+
{
|
|
6874
|
+
isVisible: isOpen,
|
|
6875
|
+
onClick: handleOverlayClick,
|
|
6876
|
+
className: "z-[1000]"
|
|
6877
|
+
}
|
|
6878
|
+
),
|
|
6879
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6880
|
+
Box,
|
|
6881
|
+
{
|
|
6882
|
+
className: cn(
|
|
6883
|
+
"fixed inset-0 z-[1001] pointer-events-none",
|
|
6884
|
+
"flex items-start justify-center px-4 pb-4 pt-[10vh]",
|
|
6885
|
+
"max-sm:items-stretch max-sm:p-0 max-sm:pt-0"
|
|
6886
|
+
),
|
|
6887
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6888
|
+
Dialog,
|
|
6889
|
+
{
|
|
6890
|
+
ref: modalRef,
|
|
6891
|
+
open: true,
|
|
6892
|
+
className: cn(
|
|
6893
|
+
// Reset browser-default dialog chrome — we own styling. `static`
|
|
6894
|
+
// overrides the user-agent `position: absolute` so the parent
|
|
6895
|
+
// flex container's `justify-center` actually centers the dialog
|
|
6896
|
+
// (without this, the dialog drops out of flex flow and `m-0`
|
|
6897
|
+
// kills the user-agent's `margin: auto` centering, pinning the
|
|
6898
|
+
// dialog to top-left).
|
|
6899
|
+
"static m-0 p-0 border-0 bg-transparent",
|
|
6900
|
+
// Pre-existing dialog frame
|
|
6901
|
+
"pointer-events-auto w-full flex flex-col bg-surface border shadow-elevation-dialog rounded-container",
|
|
6902
|
+
// Desktop sizing + viewport-aware floor.
|
|
6903
|
+
sizeClasses2[size],
|
|
6904
|
+
minWidthClasses[size],
|
|
6905
|
+
"max-h-[80vh]",
|
|
6906
|
+
// Mobile: take the entire screen. Override desktop max-w cap,
|
|
6907
|
+
// full height, no rounded corners, no min-width.
|
|
6908
|
+
"max-sm:max-w-none max-sm:max-h-none max-sm:w-full max-sm:h-full max-sm:rounded-none",
|
|
6909
|
+
lookStyles[look],
|
|
6910
|
+
className
|
|
6946
6911
|
),
|
|
6947
|
-
|
|
6948
|
-
|
|
6949
|
-
|
|
6950
|
-
|
|
6951
|
-
|
|
6952
|
-
|
|
6953
|
-
|
|
6954
|
-
|
|
6955
|
-
|
|
6956
|
-
|
|
6957
|
-
|
|
6958
|
-
|
|
6959
|
-
|
|
6960
|
-
|
|
6961
|
-
|
|
6962
|
-
|
|
6963
|
-
|
|
6964
|
-
|
|
6912
|
+
style: dragY > 0 ? {
|
|
6913
|
+
transform: `translateY(${dragY}px)`,
|
|
6914
|
+
transition: isDragging.current ? "none" : "transform 200ms ease-out"
|
|
6915
|
+
} : void 0,
|
|
6916
|
+
...title && { "aria-labelledby": "modal-title" },
|
|
6917
|
+
children: [
|
|
6918
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6919
|
+
Box,
|
|
6920
|
+
{
|
|
6921
|
+
className: "hidden max-sm:flex justify-center py-2 cursor-grab active:cursor-grabbing touch-none",
|
|
6922
|
+
onPointerDown: (e) => {
|
|
6923
|
+
if (!swipeDownToClose) return;
|
|
6924
|
+
dragStartY.current = e.clientY;
|
|
6925
|
+
isDragging.current = true;
|
|
6926
|
+
e.target.setPointerCapture(e.pointerId);
|
|
6927
|
+
},
|
|
6928
|
+
onPointerMove: (e) => {
|
|
6929
|
+
if (!isDragging.current) return;
|
|
6930
|
+
const dy = Math.max(0, e.clientY - dragStartY.current);
|
|
6931
|
+
setDragY(dy);
|
|
6932
|
+
},
|
|
6933
|
+
onPointerUp: () => {
|
|
6934
|
+
if (!isDragging.current) return;
|
|
6935
|
+
isDragging.current = false;
|
|
6936
|
+
if (dragY > 100) {
|
|
6937
|
+
handleClose();
|
|
6965
6938
|
}
|
|
6966
|
-
|
|
6967
|
-
|
|
6968
|
-
|
|
6969
|
-
|
|
6970
|
-
|
|
6971
|
-
|
|
6972
|
-
|
|
6973
|
-
|
|
6974
|
-
|
|
6975
|
-
|
|
6976
|
-
|
|
6977
|
-
|
|
6978
|
-
|
|
6979
|
-
|
|
6980
|
-
|
|
6981
|
-
|
|
6982
|
-
|
|
6983
|
-
|
|
6984
|
-
|
|
6985
|
-
|
|
6986
|
-
|
|
6939
|
+
setDragY(0);
|
|
6940
|
+
},
|
|
6941
|
+
onPointerCancel: () => {
|
|
6942
|
+
isDragging.current = false;
|
|
6943
|
+
setDragY(0);
|
|
6944
|
+
},
|
|
6945
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-10 h-1 rounded-full bg-border" })
|
|
6946
|
+
}
|
|
6947
|
+
),
|
|
6948
|
+
(title || showCloseButton) && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6949
|
+
Box,
|
|
6950
|
+
{
|
|
6951
|
+
className: cn(
|
|
6952
|
+
"px-6 py-4 flex items-center justify-between",
|
|
6953
|
+
"border-b-[length:var(--border-width)] border-border"
|
|
6954
|
+
),
|
|
6955
|
+
children: [
|
|
6956
|
+
title && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h4", as: "h2", id: "modal-title", children: title }),
|
|
6957
|
+
showCloseButton && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6958
|
+
Button,
|
|
6959
|
+
{
|
|
6960
|
+
variant: "ghost",
|
|
6961
|
+
size: "sm",
|
|
6962
|
+
icon: "x",
|
|
6963
|
+
onClick: handleClose,
|
|
6964
|
+
"data-event": "CLOSE",
|
|
6965
|
+
"aria-label": "Close modal"
|
|
6966
|
+
}
|
|
6967
|
+
)
|
|
6968
|
+
]
|
|
6969
|
+
}
|
|
6970
|
+
),
|
|
6971
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex-1 overflow-y-auto p-6", children }),
|
|
6972
|
+
footer && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6973
|
+
Box,
|
|
6974
|
+
{
|
|
6975
|
+
className: cn(
|
|
6976
|
+
"px-6 py-4 bg-muted",
|
|
6977
|
+
"border-t-[length:var(--border-width)] border-border"
|
|
6978
|
+
),
|
|
6979
|
+
children: footer
|
|
6980
|
+
}
|
|
6981
|
+
)
|
|
6982
|
+
]
|
|
6983
|
+
}
|
|
6984
|
+
)
|
|
6985
|
+
}
|
|
6986
|
+
)
|
|
6987
|
+
] }),
|
|
6988
|
+
document.body
|
|
6989
|
+
);
|
|
6987
6990
|
};
|
|
6988
6991
|
Modal.displayName = "Modal";
|
|
6989
6992
|
}
|
|
@@ -17552,7 +17555,7 @@ var init_CodeBlock = __esm({
|
|
|
17552
17555
|
};
|
|
17553
17556
|
};
|
|
17554
17557
|
}, [errorLines]);
|
|
17555
|
-
const isFoldable = foldableProp ??
|
|
17558
|
+
const isFoldable = foldableProp ?? true;
|
|
17556
17559
|
const [collapsed, setCollapsed] = React98.useState(() => /* @__PURE__ */ new Set());
|
|
17557
17560
|
const foldRegions = React98.useMemo(
|
|
17558
17561
|
() => isFoldable ? computeFoldRegions(code) : [],
|
|
@@ -21491,6 +21494,7 @@ function CalendarGrid({
|
|
|
21491
21494
|
swipeRightEvent,
|
|
21492
21495
|
dayWindow = "auto"
|
|
21493
21496
|
}) {
|
|
21497
|
+
const evs = Array.isArray(events2) ? events2 : events2 ? [events2] : [];
|
|
21494
21498
|
const eventBus = useEventBus();
|
|
21495
21499
|
const longPressTimer = React98.useRef(null);
|
|
21496
21500
|
const resolvedWeekStart = React98.useMemo(
|
|
@@ -21539,7 +21543,7 @@ function CalendarGrid({
|
|
|
21539
21543
|
[onEventClick]
|
|
21540
21544
|
);
|
|
21541
21545
|
const eventsForDayCount = React98.useCallback(
|
|
21542
|
-
(day) =>
|
|
21546
|
+
(day) => evs.filter(
|
|
21543
21547
|
(ev) => new Date(ev.startTime).toDateString() === day.toDateString()
|
|
21544
21548
|
).length,
|
|
21545
21549
|
[events2]
|
|
@@ -21654,7 +21658,7 @@ function CalendarGrid({
|
|
|
21654
21658
|
}
|
|
21655
21659
|
) }),
|
|
21656
21660
|
visibleDays.map((day) => {
|
|
21657
|
-
const slotEvents =
|
|
21661
|
+
const slotEvents = evs.filter(
|
|
21658
21662
|
(ev) => eventInSlot(ev, day, time)
|
|
21659
21663
|
);
|
|
21660
21664
|
const isToday = day.toDateString() === (/* @__PURE__ */ new Date()).toDateString();
|
|
@@ -33879,7 +33883,7 @@ function useSafeEventBus10() {
|
|
|
33879
33883
|
}
|
|
33880
33884
|
}
|
|
33881
33885
|
function SortableListInner({
|
|
33882
|
-
items:
|
|
33886
|
+
items: initialItemsProp = EMPTY_ITEMS,
|
|
33883
33887
|
renderItem,
|
|
33884
33888
|
reorderEvent,
|
|
33885
33889
|
reorderPayload,
|
|
@@ -33887,6 +33891,7 @@ function SortableListInner({
|
|
|
33887
33891
|
className
|
|
33888
33892
|
}) {
|
|
33889
33893
|
const eventBus = useSafeEventBus10();
|
|
33894
|
+
const initialItems = Array.isArray(initialItemsProp) ? initialItemsProp : initialItemsProp ? [initialItemsProp] : [];
|
|
33890
33895
|
const handleReorder = React98.useCallback(
|
|
33891
33896
|
(fromIndex, toIndex, item) => {
|
|
33892
33897
|
eventBus.emit(`UI:${reorderEvent}`, {
|
|
@@ -37383,9 +37388,10 @@ var init_ReplyTree = __esm({
|
|
|
37383
37388
|
showActions = true,
|
|
37384
37389
|
className
|
|
37385
37390
|
}) => {
|
|
37391
|
+
const nodeList = Array.isArray(nodes) ? nodes : nodes ? [nodes] : [];
|
|
37386
37392
|
const [collapsedSet, setCollapsedSet] = React98.useState(() => {
|
|
37387
37393
|
const acc = /* @__PURE__ */ new Set();
|
|
37388
|
-
collectInitiallyCollapsed(
|
|
37394
|
+
collectInitiallyCollapsed(nodeList, acc);
|
|
37389
37395
|
return acc;
|
|
37390
37396
|
});
|
|
37391
37397
|
const toggleCollapse = React98.useCallback((id) => {
|
|
@@ -37399,10 +37405,10 @@ var init_ReplyTree = __esm({
|
|
|
37399
37405
|
return next;
|
|
37400
37406
|
});
|
|
37401
37407
|
}, []);
|
|
37402
|
-
if (
|
|
37408
|
+
if (nodeList.length === 0) {
|
|
37403
37409
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: "No replies yet." });
|
|
37404
37410
|
}
|
|
37405
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex flex-col gap-2 min-w-0", className), children:
|
|
37411
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex flex-col gap-2 min-w-0", className), children: nodeList.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
37406
37412
|
ReplyTreeNode,
|
|
37407
37413
|
{
|
|
37408
37414
|
node,
|