@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.js
CHANGED
|
@@ -10,8 +10,8 @@ import { Loader2, X, List, Printer, ChevronRight, ChevronLeft, GitBranch, Pencil
|
|
|
10
10
|
import * as PhosphorIcons from '@phosphor-icons/react';
|
|
11
11
|
import * as TablerIcons from '@tabler/icons-react';
|
|
12
12
|
import * as FaIcons from 'react-icons/fa';
|
|
13
|
-
import { evaluate, createMinimalContext } from '@almadar/evaluator';
|
|
14
13
|
import { createPortal } from 'react-dom';
|
|
14
|
+
import { evaluate, createMinimalContext } from '@almadar/evaluator';
|
|
15
15
|
import { Link, Outlet, useLocation } from 'react-router-dom';
|
|
16
16
|
import ReactMarkdown from 'react-markdown';
|
|
17
17
|
import remarkGfm from 'remark-gfm';
|
|
@@ -6807,7 +6807,7 @@ var init_Modal = __esm({
|
|
|
6807
6807
|
document.body.style.overflow = "";
|
|
6808
6808
|
};
|
|
6809
6809
|
}, [isOpen]);
|
|
6810
|
-
if (!isOpen) return null;
|
|
6810
|
+
if (!isOpen || typeof document === "undefined") return null;
|
|
6811
6811
|
const handleClose = () => {
|
|
6812
6812
|
if (closeEvent) eventBus.emit(`UI:${closeEvent}`, {});
|
|
6813
6813
|
onClose();
|
|
@@ -6817,124 +6817,127 @@ var init_Modal = __esm({
|
|
|
6817
6817
|
handleClose();
|
|
6818
6818
|
}
|
|
6819
6819
|
};
|
|
6820
|
-
return
|
|
6821
|
-
/* @__PURE__ */
|
|
6822
|
-
|
|
6823
|
-
|
|
6824
|
-
|
|
6825
|
-
|
|
6826
|
-
|
|
6827
|
-
|
|
6828
|
-
|
|
6829
|
-
|
|
6830
|
-
|
|
6831
|
-
|
|
6832
|
-
|
|
6833
|
-
|
|
6834
|
-
|
|
6835
|
-
|
|
6836
|
-
|
|
6837
|
-
|
|
6838
|
-
|
|
6839
|
-
|
|
6840
|
-
|
|
6841
|
-
|
|
6842
|
-
|
|
6843
|
-
|
|
6844
|
-
|
|
6845
|
-
|
|
6846
|
-
|
|
6847
|
-
|
|
6848
|
-
|
|
6849
|
-
|
|
6850
|
-
|
|
6851
|
-
|
|
6852
|
-
|
|
6853
|
-
|
|
6854
|
-
|
|
6855
|
-
|
|
6856
|
-
|
|
6857
|
-
|
|
6858
|
-
|
|
6859
|
-
|
|
6860
|
-
|
|
6861
|
-
|
|
6862
|
-
style: dragY > 0 ? {
|
|
6863
|
-
transform: `translateY(${dragY}px)`,
|
|
6864
|
-
transition: isDragging.current ? "none" : "transform 200ms ease-out"
|
|
6865
|
-
} : void 0,
|
|
6866
|
-
...title && { "aria-labelledby": "modal-title" },
|
|
6867
|
-
children: [
|
|
6868
|
-
/* @__PURE__ */ jsx(
|
|
6869
|
-
Box,
|
|
6870
|
-
{
|
|
6871
|
-
className: "hidden max-sm:flex justify-center py-2 cursor-grab active:cursor-grabbing touch-none",
|
|
6872
|
-
onPointerDown: (e) => {
|
|
6873
|
-
if (!swipeDownToClose) return;
|
|
6874
|
-
dragStartY.current = e.clientY;
|
|
6875
|
-
isDragging.current = true;
|
|
6876
|
-
e.target.setPointerCapture(e.pointerId);
|
|
6877
|
-
},
|
|
6878
|
-
onPointerMove: (e) => {
|
|
6879
|
-
if (!isDragging.current) return;
|
|
6880
|
-
const dy = Math.max(0, e.clientY - dragStartY.current);
|
|
6881
|
-
setDragY(dy);
|
|
6882
|
-
},
|
|
6883
|
-
onPointerUp: () => {
|
|
6884
|
-
if (!isDragging.current) return;
|
|
6885
|
-
isDragging.current = false;
|
|
6886
|
-
if (dragY > 100) {
|
|
6887
|
-
handleClose();
|
|
6888
|
-
}
|
|
6889
|
-
setDragY(0);
|
|
6890
|
-
},
|
|
6891
|
-
onPointerCancel: () => {
|
|
6892
|
-
isDragging.current = false;
|
|
6893
|
-
setDragY(0);
|
|
6894
|
-
},
|
|
6895
|
-
children: /* @__PURE__ */ jsx(Box, { className: "w-10 h-1 rounded-full bg-border" })
|
|
6896
|
-
}
|
|
6820
|
+
return createPortal(
|
|
6821
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6822
|
+
/* @__PURE__ */ jsx(
|
|
6823
|
+
Overlay,
|
|
6824
|
+
{
|
|
6825
|
+
isVisible: isOpen,
|
|
6826
|
+
onClick: handleOverlayClick,
|
|
6827
|
+
className: "z-[1000]"
|
|
6828
|
+
}
|
|
6829
|
+
),
|
|
6830
|
+
/* @__PURE__ */ jsx(
|
|
6831
|
+
Box,
|
|
6832
|
+
{
|
|
6833
|
+
className: cn(
|
|
6834
|
+
"fixed inset-0 z-[1001] pointer-events-none",
|
|
6835
|
+
"flex items-start justify-center px-4 pb-4 pt-[10vh]",
|
|
6836
|
+
"max-sm:items-stretch max-sm:p-0 max-sm:pt-0"
|
|
6837
|
+
),
|
|
6838
|
+
children: /* @__PURE__ */ jsxs(
|
|
6839
|
+
Dialog,
|
|
6840
|
+
{
|
|
6841
|
+
ref: modalRef,
|
|
6842
|
+
open: true,
|
|
6843
|
+
className: cn(
|
|
6844
|
+
// Reset browser-default dialog chrome — we own styling. `static`
|
|
6845
|
+
// overrides the user-agent `position: absolute` so the parent
|
|
6846
|
+
// flex container's `justify-center` actually centers the dialog
|
|
6847
|
+
// (without this, the dialog drops out of flex flow and `m-0`
|
|
6848
|
+
// kills the user-agent's `margin: auto` centering, pinning the
|
|
6849
|
+
// dialog to top-left).
|
|
6850
|
+
"static m-0 p-0 border-0 bg-transparent",
|
|
6851
|
+
// Pre-existing dialog frame
|
|
6852
|
+
"pointer-events-auto w-full flex flex-col bg-surface border shadow-elevation-dialog rounded-container",
|
|
6853
|
+
// Desktop sizing + viewport-aware floor.
|
|
6854
|
+
sizeClasses2[size],
|
|
6855
|
+
minWidthClasses[size],
|
|
6856
|
+
"max-h-[80vh]",
|
|
6857
|
+
// Mobile: take the entire screen. Override desktop max-w cap,
|
|
6858
|
+
// full height, no rounded corners, no min-width.
|
|
6859
|
+
"max-sm:max-w-none max-sm:max-h-none max-sm:w-full max-sm:h-full max-sm:rounded-none",
|
|
6860
|
+
lookStyles[look],
|
|
6861
|
+
className
|
|
6897
6862
|
),
|
|
6898
|
-
|
|
6899
|
-
|
|
6900
|
-
|
|
6901
|
-
|
|
6902
|
-
|
|
6903
|
-
|
|
6904
|
-
|
|
6905
|
-
|
|
6906
|
-
|
|
6907
|
-
|
|
6908
|
-
|
|
6909
|
-
|
|
6910
|
-
|
|
6911
|
-
|
|
6912
|
-
|
|
6913
|
-
|
|
6914
|
-
|
|
6915
|
-
|
|
6863
|
+
style: dragY > 0 ? {
|
|
6864
|
+
transform: `translateY(${dragY}px)`,
|
|
6865
|
+
transition: isDragging.current ? "none" : "transform 200ms ease-out"
|
|
6866
|
+
} : void 0,
|
|
6867
|
+
...title && { "aria-labelledby": "modal-title" },
|
|
6868
|
+
children: [
|
|
6869
|
+
/* @__PURE__ */ jsx(
|
|
6870
|
+
Box,
|
|
6871
|
+
{
|
|
6872
|
+
className: "hidden max-sm:flex justify-center py-2 cursor-grab active:cursor-grabbing touch-none",
|
|
6873
|
+
onPointerDown: (e) => {
|
|
6874
|
+
if (!swipeDownToClose) return;
|
|
6875
|
+
dragStartY.current = e.clientY;
|
|
6876
|
+
isDragging.current = true;
|
|
6877
|
+
e.target.setPointerCapture(e.pointerId);
|
|
6878
|
+
},
|
|
6879
|
+
onPointerMove: (e) => {
|
|
6880
|
+
if (!isDragging.current) return;
|
|
6881
|
+
const dy = Math.max(0, e.clientY - dragStartY.current);
|
|
6882
|
+
setDragY(dy);
|
|
6883
|
+
},
|
|
6884
|
+
onPointerUp: () => {
|
|
6885
|
+
if (!isDragging.current) return;
|
|
6886
|
+
isDragging.current = false;
|
|
6887
|
+
if (dragY > 100) {
|
|
6888
|
+
handleClose();
|
|
6916
6889
|
}
|
|
6917
|
-
|
|
6918
|
-
|
|
6919
|
-
|
|
6920
|
-
|
|
6921
|
-
|
|
6922
|
-
|
|
6923
|
-
|
|
6924
|
-
|
|
6925
|
-
|
|
6926
|
-
|
|
6927
|
-
|
|
6928
|
-
|
|
6929
|
-
|
|
6930
|
-
|
|
6931
|
-
|
|
6932
|
-
|
|
6933
|
-
|
|
6934
|
-
|
|
6935
|
-
|
|
6936
|
-
|
|
6937
|
-
|
|
6890
|
+
setDragY(0);
|
|
6891
|
+
},
|
|
6892
|
+
onPointerCancel: () => {
|
|
6893
|
+
isDragging.current = false;
|
|
6894
|
+
setDragY(0);
|
|
6895
|
+
},
|
|
6896
|
+
children: /* @__PURE__ */ jsx(Box, { className: "w-10 h-1 rounded-full bg-border" })
|
|
6897
|
+
}
|
|
6898
|
+
),
|
|
6899
|
+
(title || showCloseButton) && /* @__PURE__ */ jsxs(
|
|
6900
|
+
Box,
|
|
6901
|
+
{
|
|
6902
|
+
className: cn(
|
|
6903
|
+
"px-6 py-4 flex items-center justify-between",
|
|
6904
|
+
"border-b-[length:var(--border-width)] border-border"
|
|
6905
|
+
),
|
|
6906
|
+
children: [
|
|
6907
|
+
title && /* @__PURE__ */ jsx(Typography, { variant: "h4", as: "h2", id: "modal-title", children: title }),
|
|
6908
|
+
showCloseButton && /* @__PURE__ */ jsx(
|
|
6909
|
+
Button,
|
|
6910
|
+
{
|
|
6911
|
+
variant: "ghost",
|
|
6912
|
+
size: "sm",
|
|
6913
|
+
icon: "x",
|
|
6914
|
+
onClick: handleClose,
|
|
6915
|
+
"data-event": "CLOSE",
|
|
6916
|
+
"aria-label": "Close modal"
|
|
6917
|
+
}
|
|
6918
|
+
)
|
|
6919
|
+
]
|
|
6920
|
+
}
|
|
6921
|
+
),
|
|
6922
|
+
/* @__PURE__ */ jsx(Box, { className: "flex-1 overflow-y-auto p-6", children }),
|
|
6923
|
+
footer && /* @__PURE__ */ jsx(
|
|
6924
|
+
Box,
|
|
6925
|
+
{
|
|
6926
|
+
className: cn(
|
|
6927
|
+
"px-6 py-4 bg-muted",
|
|
6928
|
+
"border-t-[length:var(--border-width)] border-border"
|
|
6929
|
+
),
|
|
6930
|
+
children: footer
|
|
6931
|
+
}
|
|
6932
|
+
)
|
|
6933
|
+
]
|
|
6934
|
+
}
|
|
6935
|
+
)
|
|
6936
|
+
}
|
|
6937
|
+
)
|
|
6938
|
+
] }),
|
|
6939
|
+
document.body
|
|
6940
|
+
);
|
|
6938
6941
|
};
|
|
6939
6942
|
Modal.displayName = "Modal";
|
|
6940
6943
|
}
|
|
@@ -17503,7 +17506,7 @@ var init_CodeBlock = __esm({
|
|
|
17503
17506
|
};
|
|
17504
17507
|
};
|
|
17505
17508
|
}, [errorLines]);
|
|
17506
|
-
const isFoldable = foldableProp ??
|
|
17509
|
+
const isFoldable = foldableProp ?? true;
|
|
17507
17510
|
const [collapsed, setCollapsed] = useState(() => /* @__PURE__ */ new Set());
|
|
17508
17511
|
const foldRegions = useMemo(
|
|
17509
17512
|
() => isFoldable ? computeFoldRegions(code) : [],
|
|
@@ -21442,6 +21445,7 @@ function CalendarGrid({
|
|
|
21442
21445
|
swipeRightEvent,
|
|
21443
21446
|
dayWindow = "auto"
|
|
21444
21447
|
}) {
|
|
21448
|
+
const evs = Array.isArray(events2) ? events2 : events2 ? [events2] : [];
|
|
21445
21449
|
const eventBus = useEventBus();
|
|
21446
21450
|
const longPressTimer = useRef(null);
|
|
21447
21451
|
const resolvedWeekStart = useMemo(
|
|
@@ -21490,7 +21494,7 @@ function CalendarGrid({
|
|
|
21490
21494
|
[onEventClick]
|
|
21491
21495
|
);
|
|
21492
21496
|
const eventsForDayCount = useCallback(
|
|
21493
|
-
(day) =>
|
|
21497
|
+
(day) => evs.filter(
|
|
21494
21498
|
(ev) => new Date(ev.startTime).toDateString() === day.toDateString()
|
|
21495
21499
|
).length,
|
|
21496
21500
|
[events2]
|
|
@@ -21605,7 +21609,7 @@ function CalendarGrid({
|
|
|
21605
21609
|
}
|
|
21606
21610
|
) }),
|
|
21607
21611
|
visibleDays.map((day) => {
|
|
21608
|
-
const slotEvents =
|
|
21612
|
+
const slotEvents = evs.filter(
|
|
21609
21613
|
(ev) => eventInSlot(ev, day, time)
|
|
21610
21614
|
);
|
|
21611
21615
|
const isToday = day.toDateString() === (/* @__PURE__ */ new Date()).toDateString();
|
|
@@ -33830,7 +33834,7 @@ function useSafeEventBus10() {
|
|
|
33830
33834
|
}
|
|
33831
33835
|
}
|
|
33832
33836
|
function SortableListInner({
|
|
33833
|
-
items:
|
|
33837
|
+
items: initialItemsProp = EMPTY_ITEMS,
|
|
33834
33838
|
renderItem,
|
|
33835
33839
|
reorderEvent,
|
|
33836
33840
|
reorderPayload,
|
|
@@ -33838,6 +33842,7 @@ function SortableListInner({
|
|
|
33838
33842
|
className
|
|
33839
33843
|
}) {
|
|
33840
33844
|
const eventBus = useSafeEventBus10();
|
|
33845
|
+
const initialItems = Array.isArray(initialItemsProp) ? initialItemsProp : initialItemsProp ? [initialItemsProp] : [];
|
|
33841
33846
|
const handleReorder = useCallback(
|
|
33842
33847
|
(fromIndex, toIndex, item) => {
|
|
33843
33848
|
eventBus.emit(`UI:${reorderEvent}`, {
|
|
@@ -37334,9 +37339,10 @@ var init_ReplyTree = __esm({
|
|
|
37334
37339
|
showActions = true,
|
|
37335
37340
|
className
|
|
37336
37341
|
}) => {
|
|
37342
|
+
const nodeList = Array.isArray(nodes) ? nodes : nodes ? [nodes] : [];
|
|
37337
37343
|
const [collapsedSet, setCollapsedSet] = useState(() => {
|
|
37338
37344
|
const acc = /* @__PURE__ */ new Set();
|
|
37339
|
-
collectInitiallyCollapsed(
|
|
37345
|
+
collectInitiallyCollapsed(nodeList, acc);
|
|
37340
37346
|
return acc;
|
|
37341
37347
|
});
|
|
37342
37348
|
const toggleCollapse = useCallback((id) => {
|
|
@@ -37350,10 +37356,10 @@ var init_ReplyTree = __esm({
|
|
|
37350
37356
|
return next;
|
|
37351
37357
|
});
|
|
37352
37358
|
}, []);
|
|
37353
|
-
if (
|
|
37359
|
+
if (nodeList.length === 0) {
|
|
37354
37360
|
return /* @__PURE__ */ jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: "No replies yet." });
|
|
37355
37361
|
}
|
|
37356
|
-
return /* @__PURE__ */ jsx(Box, { className: cn("flex flex-col gap-2 min-w-0", className), children:
|
|
37362
|
+
return /* @__PURE__ */ jsx(Box, { className: cn("flex flex-col gap-2 min-w-0", className), children: nodeList.map((node) => /* @__PURE__ */ jsx(
|
|
37357
37363
|
ReplyTreeNode,
|
|
37358
37364
|
{
|
|
37359
37365
|
node,
|
|
@@ -34,4 +34,4 @@ export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElem
|
|
|
34
34
|
/** onChange handler - accepts events from input, select, or textarea */
|
|
35
35
|
onChange?: React.ChangeEventHandler<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>;
|
|
36
36
|
}
|
|
37
|
-
export declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<
|
|
37
|
+
export declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLSelectElement | HTMLInputElement | HTMLTextAreaElement>>;
|