@soulbatical/tetra-ui 0.1.16 → 0.1.18

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.

Potentially problematic release.


This version of @soulbatical/tetra-ui might be problematic. Click here for more details.

@@ -1,85 +1,40 @@
1
1
  import React, { type ReactNode } from "react";
2
2
  export interface ListDetailLayoutProps<TItem> {
3
- /** Items to display in the list */
4
3
  items: TItem[];
5
- /** Extract unique ID from item */
6
4
  getItemId: (item: TItem) => string;
7
- /** Render a single list row */
8
5
  renderListItem: (item: TItem, isSelected: boolean) => ReactNode;
9
- /** Render the detail panel for the selected item */
10
6
  renderDetail: (item: TItem) => ReactNode;
11
- /** Currently selected item ID (controlled) */
12
7
  selectedId?: string | null;
13
- /** Called when an item is selected */
14
8
  onSelect: (id: string | null) => void;
15
- /** Action buttons at the bottom of the detail panel */
16
9
  actions?: (item: TItem) => ReactNode;
17
- /** Enable keyboard navigation with arrow keys (default: true) */
18
10
  keyboardNav?: boolean;
19
- /** Width of the detail panel (Tailwind class, default: "flex-1") */
20
- detailWidth?: string;
21
- /** Width of the list when detail is open (Tailwind class, default: "w-[320px] min-w-[320px]") */
22
- listCompactWidth?: string;
23
- /** Title shown above the list */
11
+ /** Initial list width in px when detail is open (default: 360) */
12
+ initialListWidth?: number;
13
+ /** Min list width in px (default: 240) */
14
+ minListWidth?: number;
15
+ /** Max list width in px (default: 600) */
16
+ maxListWidth?: number;
17
+ /** Enable resizable divider (default: true) */
18
+ resizable?: boolean;
24
19
  title?: string;
25
- /** Subtitle / count indicator */
26
20
  subtitle?: string;
27
- /** Header actions (create button, etc.) */
28
21
  headerActions?: ReactNode;
29
- /** Show loading state */
30
22
  loading?: boolean;
31
- /** Empty state when no items */
32
23
  emptyMessage?: string;
33
- /** Infinite scroll sentinel ref */
34
24
  sentinelRef?: React.RefObject<HTMLDivElement> | ((node: HTMLDivElement | null) => void);
35
- /** Whether more items can be loaded */
36
25
  hasMore?: boolean;
37
- /** Loading more indicator */
38
26
  loadingMore?: boolean;
39
- /** Additional CSS class for the outer container */
40
27
  className?: string;
41
28
  }
42
29
  /**
43
- * ListDetailLayout — Master-detail split view (Pipedrive-style).
30
+ * ListDetailLayout — Master-detail split view with resizable divider.
44
31
  *
45
- * Shows a scrollable list on the left. Clicking an item opens a detail
46
- * panel on the right with a slide-in animation. Arrow keys navigate
47
- * between items while the detail panel stays open.
48
- *
49
- * @example
50
- * ```tsx
51
- * import { ListDetailLayout } from '@soulbatical/tetra-ui';
52
- *
53
- * const [selectedId, setSelectedId] = useState<string | null>(null);
54
- *
55
- * <ListDetailLayout
56
- * items={leads}
57
- * getItemId={(lead) => lead.id}
58
- * selectedId={selectedId}
59
- * onSelect={setSelectedId}
60
- * renderListItem={(lead, isSelected) => (
61
- * <div className={isSelected ? 'bg-blue-50' : ''}>
62
- * <p className="font-medium">{lead.name}</p>
63
- * <p className="text-sm text-gray-500">{lead.company}</p>
64
- * </div>
65
- * )}
66
- * renderDetail={(lead) => (
67
- * <div>
68
- * <h2>{lead.name}</h2>
69
- * <p>{lead.email}</p>
70
- * <p>{lead.phone}</p>
71
- * </div>
72
- * )}
73
- * actions={(lead) => (
74
- * <>
75
- * <button onClick={() => archive(lead.id)}>Archive</button>
76
- * <button onClick={() => convert(lead.id)}>Convert to Deal</button>
77
- * </>
78
- * )}
79
- * title="Leads Inbox"
80
- * subtitle="198 leads"
81
- * />
82
- * ```
32
+ * Features:
33
+ * - Scrollable list on the left, detail panel on the right
34
+ * - Draggable divider to resize panels
35
+ * - Full dark mode support via CSS variables (bg-card, border-edge, text-heading)
36
+ * - Arrow key navigation between items
37
+ * - Smooth slide-in animation for detail panel
83
38
  */
84
- export declare function ListDetailLayout<TItem>({ items, getItemId, renderListItem, renderDetail, selectedId, onSelect, actions, keyboardNav, detailWidth, listCompactWidth, title, subtitle, headerActions, loading, emptyMessage, sentinelRef, hasMore, loadingMore, className, }: ListDetailLayoutProps<TItem>): import("react/jsx-runtime").JSX.Element;
39
+ export declare function ListDetailLayout<TItem>({ items, getItemId, renderListItem, renderDetail, selectedId, onSelect, actions, keyboardNav, initialListWidth, minListWidth, maxListWidth, resizable, title, subtitle, headerActions, loading, emptyMessage, sentinelRef, hasMore, loadingMore, className, }: ListDetailLayoutProps<TItem>): import("react/jsx-runtime").JSX.Element;
85
40
  //# sourceMappingURL=ListDetailLayout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListDetailLayout.d.ts","sourceRoot":"","sources":["../../src/components/ListDetailLayout.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI9E,MAAM,WAAW,qBAAqB,CAAC,KAAK;IAC1C,mCAAmC;IACnC,KAAK,EAAE,KAAK,EAAE,CAAC;IAEf,kCAAkC;IAClC,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC;IAEnC,+BAA+B;IAC/B,cAAc,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC;IAEhE,oDAAoD;IACpD,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC;IAEzC,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,sCAAsC;IACtC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAEtC,uDAAuD;IACvD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC;IAErC,iEAAiE;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iGAAiG;IACjG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B,yBAAyB;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,mCAAmC;IACnC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC;IAExF,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,EACtC,KAAK,EACL,SAAS,EACT,cAAc,EACd,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,OAAO,EACP,WAAkB,EAClB,WAAsB,EACtB,gBAA4C,EAC5C,KAAK,EACL,QAAQ,EACR,aAAa,EACb,OAAe,EACf,YAA+B,EAC/B,WAAW,EACX,OAAe,EACf,WAAmB,EACnB,SAAS,GACV,EAAE,qBAAqB,CAAC,KAAK,CAAC,2CA6L9B"}
1
+ {"version":3,"file":"ListDetailLayout.d.ts","sourceRoot":"","sources":["../../src/components/ListDetailLayout.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAA4C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIxF,MAAM,WAAW,qBAAqB,CAAC,KAAK;IAC1C,KAAK,EAAE,KAAK,EAAE,CAAC;IACf,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC;IACnC,cAAc,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC;IAChE,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC;IACxF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8BD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,EACtC,KAAK,EACL,SAAS,EACT,cAAc,EACd,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,OAAO,EACP,WAAkB,EAClB,gBAAsB,EACtB,YAAkB,EAClB,YAAkB,EAClB,SAAgB,EAChB,KAAK,EACL,QAAQ,EACR,aAAa,EACb,OAAe,EACf,YAA+B,EAC/B,WAAW,EACX,OAAe,EACf,WAAmB,EACnB,SAAS,GACV,EAAE,qBAAqB,CAAC,KAAK,CAAC,2CAmP9B"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { useEffect, useCallback, useRef } from "react";
4
- // ─── Close Icon ─────────────────────────────────────────────
3
+ import { useEffect, useCallback, useRef, useState } from "react";
4
+ // ─── Icons ──────────────────────────────────────────────────
5
5
  function CloseIcon() {
6
6
  return (_jsx("svg", { className: "h-5 w-5", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }) }));
7
7
  }
@@ -13,51 +13,55 @@ function ChevronDownIcon() {
13
13
  }
14
14
  // ─── Component ──────────────────────────────────────────────
15
15
  /**
16
- * ListDetailLayout — Master-detail split view (Pipedrive-style).
16
+ * ListDetailLayout — Master-detail split view with resizable divider.
17
17
  *
18
- * Shows a scrollable list on the left. Clicking an item opens a detail
19
- * panel on the right with a slide-in animation. Arrow keys navigate
20
- * between items while the detail panel stays open.
21
- *
22
- * @example
23
- * ```tsx
24
- * import { ListDetailLayout } from '@soulbatical/tetra-ui';
25
- *
26
- * const [selectedId, setSelectedId] = useState<string | null>(null);
27
- *
28
- * <ListDetailLayout
29
- * items={leads}
30
- * getItemId={(lead) => lead.id}
31
- * selectedId={selectedId}
32
- * onSelect={setSelectedId}
33
- * renderListItem={(lead, isSelected) => (
34
- * <div className={isSelected ? 'bg-blue-50' : ''}>
35
- * <p className="font-medium">{lead.name}</p>
36
- * <p className="text-sm text-gray-500">{lead.company}</p>
37
- * </div>
38
- * )}
39
- * renderDetail={(lead) => (
40
- * <div>
41
- * <h2>{lead.name}</h2>
42
- * <p>{lead.email}</p>
43
- * <p>{lead.phone}</p>
44
- * </div>
45
- * )}
46
- * actions={(lead) => (
47
- * <>
48
- * <button onClick={() => archive(lead.id)}>Archive</button>
49
- * <button onClick={() => convert(lead.id)}>Convert to Deal</button>
50
- * </>
51
- * )}
52
- * title="Leads Inbox"
53
- * subtitle="198 leads"
54
- * />
55
- * ```
18
+ * Features:
19
+ * - Scrollable list on the left, detail panel on the right
20
+ * - Draggable divider to resize panels
21
+ * - Full dark mode support via CSS variables (bg-card, border-edge, text-heading)
22
+ * - Arrow key navigation between items
23
+ * - Smooth slide-in animation for detail panel
56
24
  */
57
- export function ListDetailLayout({ items, getItemId, renderListItem, renderDetail, selectedId, onSelect, actions, keyboardNav = true, detailWidth = "flex-1", listCompactWidth = "w-[320px] min-w-[320px]", title, subtitle, headerActions, loading = false, emptyMessage = "No items found", sentinelRef, hasMore = false, loadingMore = false, className, }) {
25
+ export function ListDetailLayout({ items, getItemId, renderListItem, renderDetail, selectedId, onSelect, actions, keyboardNav = true, initialListWidth = 360, minListWidth = 240, maxListWidth = 600, resizable = true, title, subtitle, headerActions, loading = false, emptyMessage = "No items found", sentinelRef, hasMore = false, loadingMore = false, className, }) {
58
26
  const listRef = useRef(null);
27
+ const containerRef = useRef(null);
28
+ const [listWidth, setListWidth] = useState(initialListWidth);
29
+ const [isDragging, setIsDragging] = useState(false);
59
30
  const selectedItem = items.find((item) => getItemId(item) === selectedId);
60
31
  const isDetailOpen = selectedId !== null && selectedItem !== undefined;
32
+ // ─── Resizable Divider ─────────────────────────────
33
+ const handleMouseDown = useCallback((e) => {
34
+ if (!resizable)
35
+ return;
36
+ e.preventDefault();
37
+ setIsDragging(true);
38
+ }, [resizable]);
39
+ useEffect(() => {
40
+ if (!isDragging)
41
+ return;
42
+ const handleMouseMove = (e) => {
43
+ const container = containerRef.current;
44
+ if (!container)
45
+ return;
46
+ const rect = container.getBoundingClientRect();
47
+ const newWidth = Math.max(minListWidth, Math.min(maxListWidth, e.clientX - rect.left));
48
+ setListWidth(newWidth);
49
+ };
50
+ const handleMouseUp = () => {
51
+ setIsDragging(false);
52
+ };
53
+ document.addEventListener("mousemove", handleMouseMove);
54
+ document.addEventListener("mouseup", handleMouseUp);
55
+ // Prevent text selection while dragging
56
+ document.body.style.userSelect = "none";
57
+ document.body.style.cursor = "col-resize";
58
+ return () => {
59
+ document.removeEventListener("mousemove", handleMouseMove);
60
+ document.removeEventListener("mouseup", handleMouseUp);
61
+ document.body.style.userSelect = "";
62
+ document.body.style.cursor = "";
63
+ };
64
+ }, [isDragging, minListWidth, maxListWidth]);
61
65
  // ─── Keyboard Navigation ──────────────────────────
62
66
  const navigateToItem = useCallback((direction) => {
63
67
  if (!selectedId || items.length === 0)
@@ -70,7 +74,6 @@ export function ListDetailLayout({ items, getItemId, renderListItem, renderDetai
70
74
  : Math.min(items.length - 1, currentIndex + 1);
71
75
  if (nextIndex !== currentIndex) {
72
76
  onSelect(getItemId(items[nextIndex]));
73
- // Scroll the selected item into view in the list
74
77
  const listEl = listRef.current;
75
78
  if (listEl) {
76
79
  const itemEl = listEl.querySelector(`[data-item-id="${getItemId(items[nextIndex])}"]`);
@@ -102,12 +105,12 @@ export function ListDetailLayout({ items, getItemId, renderListItem, renderDetai
102
105
  if (loading) {
103
106
  return (_jsx("div", { className: `flex h-full ${className ?? ""}`, children: _jsx("div", { className: "flex-1 p-6", children: _jsx("div", { className: "space-y-3", children: Array.from({ length: 8 }).map((_, i) => (_jsx("div", { className: "h-16 animate-pulse rounded-lg bg-gray-200 dark:bg-gray-800" }, i))) }) }) }));
104
107
  }
105
- return (_jsxs("div", { className: `flex h-full overflow-hidden ${className ?? ""}`, children: [_jsxs("div", { ref: listRef, className: `flex flex-col flex-shrink-0 border-r border-gray-200 dark:border-gray-700 overflow-y-auto transition-all duration-300 ${isDetailOpen ? listCompactWidth : "w-full"}`, children: [(title || headerActions) && (_jsxs("div", { className: "sticky top-0 z-10 flex items-center justify-between border-b border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 px-4 py-3", children: [_jsxs("div", { children: [title && (_jsx("h2", { className: "text-lg font-semibold text-gray-900 dark:text-gray-100", children: title })), subtitle && (_jsx("p", { className: "text-xs text-gray-500", children: subtitle }))] }), headerActions] })), items.length === 0 ? (_jsx("div", { className: "flex-1 flex items-center justify-center p-8", children: _jsx("p", { className: "text-sm text-gray-500", children: emptyMessage }) })) : (_jsxs("div", { className: "flex-1", children: [items.map((item) => {
108
+ return (_jsxs("div", { ref: containerRef, className: `flex h-full overflow-hidden rounded-lg border border-gray-200 dark:border-gray-700 ${className ?? ""}`, children: [_jsxs("div", { ref: listRef, style: isDetailOpen ? { width: `${listWidth}px`, minWidth: `${minListWidth}px`, flexShrink: 0 } : { width: "100%" }, className: "flex flex-col overflow-y-auto bg-white dark:bg-gray-900 transition-[width] duration-300", children: [(title || headerActions) && (_jsxs("div", { className: "sticky top-0 z-10 flex items-center justify-between border-b border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 px-4 py-3", children: [_jsxs("div", { children: [title && (_jsx("h2", { className: "text-lg font-semibold text-gray-900 dark:text-gray-100", children: title })), subtitle && (_jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: subtitle }))] }), headerActions] })), items.length === 0 ? (_jsx("div", { className: "flex-1 flex items-center justify-center p-8", children: _jsx("p", { className: "text-sm text-gray-500 dark:text-gray-400", children: emptyMessage }) })) : (_jsxs("div", { className: "flex-1", children: [items.map((item) => {
106
109
  const id = getItemId(item);
107
110
  const isSelected = id === selectedId;
108
111
  return (_jsx("button", { type: "button", "data-item-id": id, onClick: () => onSelect(isSelected ? null : id), className: `w-full text-left px-4 py-3 border-b border-gray-100 dark:border-gray-800 transition-colors ${isSelected
109
112
  ? "bg-blue-50 dark:bg-blue-900/30 border-l-[3px] border-l-blue-500 pl-[13px]"
110
113
  : "hover:bg-gray-50 dark:hover:bg-gray-800/50"}`, children: renderListItem(item, isSelected) }, id));
111
- }), hasMore && sentinelRef && (_jsx("div", { ref: sentinelRef, className: "py-4 flex justify-center", children: loadingMore && (_jsx("div", { className: "h-4 w-4 animate-spin rounded-full border-2 border-gray-300 border-t-blue-500" })) }))] }))] }), _jsx("div", { className: `flex flex-col min-w-0 overflow-hidden border-l border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 transition-all duration-300 ${isDetailOpen ? "flex-1 opacity-100" : "w-0 flex-none border-l-0 opacity-0"}`, children: selectedItem && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between border-b border-gray-200 dark:border-gray-700 px-4 py-3", children: [_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { type: "button", onClick: () => navigateToItem("up"), className: "rounded-md p-1.5 text-gray-500 hover:bg-gray-100 dark:hover:bg-gray-800 hover:text-gray-700 disabled:opacity-30 transition-colors", disabled: items.findIndex((item) => getItemId(item) === selectedId) === 0, "aria-label": "Previous item", children: _jsx(ChevronUpIcon, {}) }), _jsx("button", { type: "button", onClick: () => navigateToItem("down"), className: "rounded-md p-1.5 text-gray-500 hover:bg-gray-100 dark:hover:bg-gray-800 hover:text-gray-700 disabled:opacity-30 transition-colors", disabled: items.findIndex((item) => getItemId(item) === selectedId) === items.length - 1, "aria-label": "Next item", children: _jsx(ChevronDownIcon, {}) })] }), _jsx("button", { type: "button", onClick: () => onSelect(null), className: "rounded-md p-1.5 text-gray-500 hover:bg-gray-100 dark:hover:bg-gray-800 hover:text-gray-700 transition-colors", "aria-label": "Close detail", children: _jsx(CloseIcon, {}) })] }), _jsx("div", { className: "flex-1 overflow-y-auto", children: renderDetail(selectedItem) }), actions && (_jsx("div", { className: "border-t border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/50 px-4 py-3 flex items-center gap-3", children: actions(selectedItem) }))] })) })] }));
114
+ }), hasMore && sentinelRef && (_jsx("div", { ref: sentinelRef, className: "py-4 flex justify-center", children: loadingMore && (_jsx("div", { className: "h-4 w-4 animate-spin rounded-full border-2 border-gray-300 dark:border-gray-600 border-t-blue-500" })) }))] }))] }), isDetailOpen && resizable && (_jsxs("div", { onMouseDown: handleMouseDown, className: `relative z-20 w-1 flex-shrink-0 cursor-col-resize group ${isDragging ? "bg-blue-500" : "bg-gray-200 dark:bg-gray-700 hover:bg-blue-400 dark:hover:bg-blue-500"} transition-colors`, children: [_jsx("div", { className: "absolute inset-y-0 -left-1 -right-1" }), _jsxs("div", { className: "absolute inset-x-0 top-1/2 -translate-y-1/2 flex flex-col items-center gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity", children: [_jsx("div", { className: "w-1 h-1 rounded-full bg-gray-400 dark:bg-gray-500" }), _jsx("div", { className: "w-1 h-1 rounded-full bg-gray-400 dark:bg-gray-500" }), _jsx("div", { className: "w-1 h-1 rounded-full bg-gray-400 dark:bg-gray-500" })] })] })), _jsx("div", { style: isDetailOpen ? { flex: "1 1 0%", minWidth: 0, opacity: 1 } : { width: 0, flex: "none", opacity: 0 }, className: `flex flex-col overflow-hidden bg-white dark:bg-gray-900 transition-all duration-300`, children: selectedItem && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between border-b border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 px-4 py-3", children: [_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { type: "button", onClick: () => navigateToItem("up"), className: "rounded-md p-1.5 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 hover:text-gray-700 dark:hover:text-gray-200 disabled:opacity-30 transition-colors", disabled: items.findIndex((item) => getItemId(item) === selectedId) === 0, "aria-label": "Previous item", children: _jsx(ChevronUpIcon, {}) }), _jsx("button", { type: "button", onClick: () => navigateToItem("down"), className: "rounded-md p-1.5 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 hover:text-gray-700 dark:hover:text-gray-200 disabled:opacity-30 transition-colors", disabled: items.findIndex((item) => getItemId(item) === selectedId) === items.length - 1, "aria-label": "Next item", children: _jsx(ChevronDownIcon, {}) })] }), _jsx("button", { type: "button", onClick: () => onSelect(null), className: "rounded-md p-1.5 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 hover:text-gray-700 dark:hover:text-gray-200 transition-colors", "aria-label": "Close detail", children: _jsx(CloseIcon, {}) })] }), _jsx("div", { className: "flex-1 overflow-y-auto", children: renderDetail(selectedItem) }), actions && (_jsx("div", { className: "border-t border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/50 px-4 py-3 flex items-center gap-3", children: actions(selectedItem) }))] })) })] }));
112
115
  }
113
116
  //# sourceMappingURL=ListDetailLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListDetailLayout.js","sourceRoot":"","sources":["../../src/components/ListDetailLayout.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ListDetailLayout.js","sourceRoot":"","sources":["../../src/components/ListDetailLayout.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "restricted"
6
6
  },
7
- "version": "0.1.16",
7
+ "version": "0.1.18",
8
8
  "description": "Shared React frontend framework for Tetra platform projects (Soulbatical BV) — config-driven components, hooks, providers, and styling",
9
9
  "type": "module",
10
10
  "main": "dist/index.js",