@haneinfo/frontend-instances 0.6.0 → 0.8.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/README.md +141 -26
- package/agent-guide.md +12 -0
- package/dist/attachments-client.d.ts +7 -2
- package/dist/attachments-client.d.ts.map +1 -1
- package/dist/attachments-client.js +47 -11
- package/dist/attachments-client.js.map +1 -1
- package/dist/client.d.ts +12 -75
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +12 -463
- package/dist/client.js.map +1 -1
- package/dist/contracts.d.ts +167 -5
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +5 -98
- package/dist/contracts.js.map +1 -1
- package/dist/dashboard.d.ts +43 -0
- package/dist/dashboard.d.ts.map +1 -0
- package/dist/dashboard.js +72 -0
- package/dist/dashboard.js.map +1 -0
- package/dist/detail-client.d.ts +59 -0
- package/dist/detail-client.d.ts.map +1 -0
- package/dist/detail-client.js +253 -0
- package/dist/detail-client.js.map +1 -0
- package/dist/documents-client.d.ts +2 -1
- package/dist/documents-client.d.ts.map +1 -1
- package/dist/documents-client.js +13 -9
- package/dist/documents-client.js.map +1 -1
- package/dist/draft-client.d.ts +27 -3
- package/dist/draft-client.d.ts.map +1 -1
- package/dist/draft-client.js +107 -54
- package/dist/draft-client.js.map +1 -1
- package/dist/draft-session.d.ts +1 -0
- package/dist/draft-session.d.ts.map +1 -1
- package/dist/draft-session.js +2 -1
- package/dist/draft-session.js.map +1 -1
- package/dist/field-errors.d.ts +4 -0
- package/dist/field-errors.d.ts.map +1 -0
- package/dist/field-errors.js +25 -0
- package/dist/field-errors.js.map +1 -0
- package/dist/filter-editor.d.ts +18 -0
- package/dist/filter-editor.d.ts.map +1 -0
- package/dist/filter-editor.js +145 -0
- package/dist/filter-editor.js.map +1 -0
- package/dist/format.d.ts +152 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +402 -0
- package/dist/format.js.map +1 -0
- package/dist/import-client.d.ts +31 -0
- package/dist/import-client.d.ts.map +1 -0
- package/dist/import-client.js +179 -0
- package/dist/import-client.js.map +1 -0
- package/dist/instance-management-client.d.ts +23 -6
- package/dist/instance-management-client.d.ts.map +1 -1
- package/dist/instance-management-client.js +96 -70
- package/dist/instance-management-client.js.map +1 -1
- package/dist/labels.d.ts +10 -0
- package/dist/labels.d.ts.map +1 -0
- package/dist/labels.js +42 -0
- package/dist/labels.js.map +1 -0
- package/dist/list-client.d.ts +39 -0
- package/dist/list-client.d.ts.map +1 -0
- package/dist/list-client.js +403 -0
- package/dist/list-client.js.map +1 -0
- package/dist/list-query.d.ts +41 -0
- package/dist/list-query.d.ts.map +1 -0
- package/dist/list-query.js +171 -0
- package/dist/list-query.js.map +1 -0
- package/dist/management-client.d.ts +6 -2
- package/dist/management-client.d.ts.map +1 -1
- package/dist/management-client.js +113 -84
- package/dist/management-client.js.map +1 -1
- package/dist/messages.d.ts +4 -4
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +23 -5
- package/dist/messages.js.map +1 -1
- package/dist/process-client.d.ts +27 -0
- package/dist/process-client.d.ts.map +1 -0
- package/dist/process-client.js +129 -0
- package/dist/process-client.js.map +1 -0
- package/dist/process-messages.d.ts +73 -0
- package/dist/process-messages.d.ts.map +1 -0
- package/dist/process-messages.js +154 -0
- package/dist/process-messages.js.map +1 -0
- package/dist/server.d.ts +34 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +302 -50
- package/dist/server.js.map +1 -1
- package/dist/tasks-client.d.ts +38 -0
- package/dist/tasks-client.d.ts.map +1 -0
- package/dist/tasks-client.js +127 -0
- package/dist/tasks-client.js.map +1 -0
- package/dist/timeline.d.ts +24 -0
- package/dist/timeline.d.ts.map +1 -0
- package/dist/timeline.js +189 -0
- package/dist/timeline.js.map +1 -0
- package/dist/ui-messages.d.ts +284 -0
- package/dist/ui-messages.d.ts.map +1 -0
- package/dist/ui-messages.js +372 -0
- package/dist/ui-messages.js.map +1 -0
- package/dist/ui.d.ts +101 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +169 -0
- package/dist/ui.js.map +1 -0
- package/package.json +4 -2
package/dist/ui.js
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Small presentational building blocks shared by the instance pages. Colors come only from the
|
|
5
|
+
* host's design tokens (see README "Design tokens"); nothing here hard-codes a color value.
|
|
6
|
+
*/
|
|
7
|
+
import { Button, cn } from '@haneinfo/frontend-shell';
|
|
8
|
+
import { AlertCircle, AlertTriangle, ChevronDown, RotateCw, X } from 'lucide-react';
|
|
9
|
+
import { useId, useRef, useState, } from 'react';
|
|
10
|
+
/** At least 44 px touch targets on narrow (touch) screens; desktop keeps the compact density. */
|
|
11
|
+
export const touch = 'max-md:min-h-11 max-md:min-w-11';
|
|
12
|
+
export const cardClass = 'min-w-0 rounded-xl bg-card text-card-foreground ring-1 ring-foreground/10';
|
|
13
|
+
export const fieldClass = 'min-w-0 w-full rounded-lg border border-input bg-transparent px-3 py-1.5 text-base md:text-sm outline-none transition-[color,box-shadow] placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive dark:bg-input/30';
|
|
14
|
+
export function Card({ className, ...props }) {
|
|
15
|
+
return _jsx("section", { className: cn(cardClass, className), ...props });
|
|
16
|
+
}
|
|
17
|
+
export function CardHeader({ title, titleId, description, action, level = 2, }) {
|
|
18
|
+
const Heading = level === 2 ? 'h2' : 'h3';
|
|
19
|
+
return (_jsxs("div", { className: "flex flex-wrap items-start justify-between gap-3 border-b px-4 py-3 sm:px-5", children: [_jsxs("div", { className: "flex min-w-0 flex-col gap-0.5", children: [_jsx(Heading, { id: titleId, className: "font-heading font-medium text-base leading-snug", children: title }), description && _jsx("p", { className: "text-muted-foreground text-sm", children: description })] }), action && _jsx("div", { className: "flex shrink-0 flex-wrap items-center gap-2", children: action })] }));
|
|
20
|
+
}
|
|
21
|
+
export function NativeSelect({ className, ...props }) {
|
|
22
|
+
return (_jsxs("div", { className: cn('relative min-w-0 has-[select:disabled]:opacity-50', className), children: [_jsx("select", { className: cn(fieldClass, 'h-9 appearance-none py-1 pr-8 max-md:h-11 [&>option]:bg-[Canvas] [&>option]:text-[CanvasText]'), ...props }), _jsx(ChevronDown, { "aria-hidden": "true", className: "pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-muted-foreground" })] }));
|
|
23
|
+
}
|
|
24
|
+
export function TextArea({ className, ...props }) {
|
|
25
|
+
return _jsx("textarea", { className: cn(fieldClass, 'min-h-24 resize-y', className), ...props });
|
|
26
|
+
}
|
|
27
|
+
const toneClass = {
|
|
28
|
+
neutral: 'border-border bg-muted text-foreground',
|
|
29
|
+
info: 'border-tone-info/30 bg-tone-info-soft text-tone-info',
|
|
30
|
+
success: 'border-tone-success/30 bg-tone-success-soft text-tone-success',
|
|
31
|
+
warning: 'border-tone-warning/30 bg-tone-warning-soft text-tone-warning',
|
|
32
|
+
danger: 'border-tone-danger/30 bg-tone-danger-soft text-tone-danger',
|
|
33
|
+
};
|
|
34
|
+
const dotClass = {
|
|
35
|
+
neutral: 'bg-muted-foreground',
|
|
36
|
+
info: 'bg-tone-info',
|
|
37
|
+
success: 'bg-tone-success',
|
|
38
|
+
warning: 'bg-tone-warning',
|
|
39
|
+
danger: 'bg-tone-danger',
|
|
40
|
+
};
|
|
41
|
+
export function toneOf(value) {
|
|
42
|
+
return value === 'info' || value === 'success' || value === 'warning' || value === 'danger'
|
|
43
|
+
? value
|
|
44
|
+
: 'neutral';
|
|
45
|
+
}
|
|
46
|
+
/** The state as text plus a tone; the color never carries the meaning on its own. */
|
|
47
|
+
export function StateBadge({ label, tone, className, routing = false, }) {
|
|
48
|
+
const value = toneOf(tone);
|
|
49
|
+
return (_jsxs("span", { "data-slot": "state-badge", "data-tone": value, className: cn('inline-flex max-w-full items-center gap-1.5 rounded-full border px-2.5 py-0.5 font-medium text-xs leading-5', toneClass[value], className), children: [routing ? (_jsx(AlertTriangle, { "aria-hidden": "true", className: "size-3.5 shrink-0" })) : (_jsx("span", { "aria-hidden": "true", className: cn('size-1.5 shrink-0 rounded-full', dotClass[value]) })), _jsx("span", { className: "min-w-0 [overflow-wrap:anywhere]", children: label })] }));
|
|
50
|
+
}
|
|
51
|
+
export function ToneDot({ tone }) {
|
|
52
|
+
return (_jsx("span", { "aria-hidden": "true", className: cn('inline-block size-2 shrink-0 rounded-full', dotClass[toneOf(tone)]) }));
|
|
53
|
+
}
|
|
54
|
+
export function Tag({ children, className }) {
|
|
55
|
+
return (_jsx("span", { className: cn('inline-flex max-w-full items-center rounded-md border bg-secondary px-2 py-0.5 text-secondary-foreground text-xs leading-5 [overflow-wrap:anywhere]', className), children: children }));
|
|
56
|
+
}
|
|
57
|
+
/** A removable filter or tag chip; the remove button carries a readable name. */
|
|
58
|
+
export function Chip({ children, removeLabel, onRemove, disabled, }) {
|
|
59
|
+
return (_jsxs("span", { className: "inline-flex max-w-full items-center gap-1 rounded-full border bg-background py-0.5 pr-0.5 pl-3 text-sm max-md:min-h-11", children: [_jsx("span", { className: "min-w-0 [overflow-wrap:anywhere]", children: children }), onRemove && (_jsx(Button, { type: "button", variant: "ghost", size: "icon-xs", "aria-label": removeLabel, disabled: disabled, className: cn('rounded-full', touch), onClick: onRemove, children: _jsx(X, { "aria-hidden": "true" }) }))] }));
|
|
60
|
+
}
|
|
61
|
+
export function EmptyState({ icon, title, description, action, className, }) {
|
|
62
|
+
return (_jsxs("div", { "data-slot": "empty-state", className: cn('flex w-full min-w-0 flex-col items-center justify-center gap-3 rounded-xl border border-dashed px-6 py-10 text-center', className), children: [icon && (_jsx("div", { "aria-hidden": "true", className: "flex size-10 items-center justify-center rounded-lg bg-muted text-foreground [&_svg]:size-5", children: icon })), _jsxs("div", { className: "flex max-w-md flex-col gap-1", children: [_jsx("p", { className: "font-medium text-sm", children: title }), description && (_jsx("p", { className: "text-balance text-muted-foreground text-sm/relaxed", children: description }))] }), action && _jsx("div", { className: "flex flex-wrap justify-center gap-2", children: action })] }));
|
|
63
|
+
}
|
|
64
|
+
/** A translated, retryable failure; no technical detail is ever shown. */
|
|
65
|
+
export function ErrorState({ title, description, retryLabel, onRetry, action, }) {
|
|
66
|
+
return (_jsxs("div", { role: "alert", className: "flex w-full min-w-0 flex-col items-start gap-3 rounded-xl border border-destructive/30 bg-destructive/5 p-4 sm:flex-row sm:items-center", children: [_jsx(AlertCircle, { "aria-hidden": "true", className: "size-5 shrink-0 text-destructive" }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [_jsx("p", { className: "font-medium text-sm", children: title }), description && _jsx("p", { className: "text-foreground/80 text-sm", children: description })] }), _jsxs("div", { className: "flex flex-wrap gap-2", children: [onRetry && retryLabel && (_jsxs(Button, { type: "button", variant: "outline", className: touch, onClick: onRetry, children: [_jsx(RotateCw, { "aria-hidden": "true", "data-icon": "inline-start" }), retryLabel] })), action] })] }));
|
|
67
|
+
}
|
|
68
|
+
/** Page-level retry: reloads the current route (server components re-render on reload). */
|
|
69
|
+
export function ReloadButton({ label }) {
|
|
70
|
+
return (_jsxs(Button, { type: "button", variant: "outline", className: touch, onClick: () => window.location.reload(), children: [_jsx(RotateCw, { "aria-hidden": "true", "data-icon": "inline-start" }), label] }));
|
|
71
|
+
}
|
|
72
|
+
export function Skeleton({ className }) {
|
|
73
|
+
return (_jsx("div", { "aria-hidden": "true", className: cn('rounded-md bg-muted motion-safe:animate-pulse', className) }));
|
|
74
|
+
}
|
|
75
|
+
/** `<time>` with the full date and time on hover and, when focusable, on keyboard focus. */
|
|
76
|
+
export function DateTimeText({ iso, text, full, focusable = false, className, children, }) {
|
|
77
|
+
const id = useId();
|
|
78
|
+
if (!focusable)
|
|
79
|
+
return (_jsxs("time", { dateTime: iso, title: full, className: className, children: [text, children] }));
|
|
80
|
+
return (_jsxs("span", { className: "group/time relative inline-flex", children: [_jsxs("time", { dateTime: iso,
|
|
81
|
+
// biome-ignore lint/a11y/noNoninteractiveTabindex: the full time must be reachable by keyboard focus.
|
|
82
|
+
tabIndex: 0, "aria-describedby": `${id}-full`, className: cn('rounded-sm outline-none focus-visible:ring-3 focus-visible:ring-ring/50', className), children: [text, children] }), _jsx("span", { id: `${id}-full`, role: "tooltip", className: "pointer-events-none invisible absolute bottom-full left-0 z-30 mb-1 w-max max-w-72 rounded-md bg-foreground px-2.5 py-1.5 text-background text-xs opacity-0 shadow-md group-focus-within/time:visible group-focus-within/time:opacity-100 group-hover/time:visible group-hover/time:opacity-100 motion-safe:transition-opacity", children: full })] }));
|
|
83
|
+
}
|
|
84
|
+
function ValueText({ display, labels: t }) {
|
|
85
|
+
const [expanded, setExpanded] = useState(false);
|
|
86
|
+
const id = useId();
|
|
87
|
+
switch (display.kind) {
|
|
88
|
+
case 'empty':
|
|
89
|
+
return (_jsxs("span", { className: "text-muted-foreground", children: [_jsx("span", { "aria-hidden": "true", children: "\u2014" }), _jsx("span", { className: "sr-only", children: t.valueEmpty })] }));
|
|
90
|
+
case 'text':
|
|
91
|
+
if (!display.long)
|
|
92
|
+
return (_jsx("span", { className: cn('[overflow-wrap:anywhere]', display.multiline && 'whitespace-pre-wrap'), children: display.text }));
|
|
93
|
+
return (_jsxs("span", { className: "flex flex-col items-start gap-1", children: [_jsx("span", { id: id, className: cn('whitespace-pre-wrap [overflow-wrap:anywhere]', !expanded && 'line-clamp-4'), children: display.text }), _jsx(Button, { type: "button", variant: "link", size: "sm", className: cn('h-auto px-0', touch), "aria-expanded": expanded, "aria-controls": id, onClick: () => setExpanded(!expanded), children: expanded ? t.showLess : t.showMore })] }));
|
|
94
|
+
case 'date':
|
|
95
|
+
case 'datetime':
|
|
96
|
+
return _jsx(DateTimeText, { iso: display.iso, text: display.text, full: display.full });
|
|
97
|
+
case 'option':
|
|
98
|
+
return display.known ? (_jsx("span", { children: display.text })) : (_jsxs("span", { className: "[overflow-wrap:anywhere]", children: [display.text, ' ', _jsx("span", { className: "rounded-sm border border-dashed px-1 text-muted-foreground text-xs", children: t.valueUnknownOption })] }));
|
|
99
|
+
case 'options':
|
|
100
|
+
return (_jsx("span", { className: "flex flex-wrap gap-1", children: display.items.map((item, index) => (
|
|
101
|
+
// biome-ignore lint/suspicious/noArrayIndexKey: values may repeat; order is the identity.
|
|
102
|
+
_jsxs(Tag, { className: item.known ? undefined : 'border-dashed', children: [item.text, !item.known && _jsxs("span", { className: "sr-only", children: [" ", t.valueUnknownOption] })] }, index))) }));
|
|
103
|
+
case 'user':
|
|
104
|
+
return (_jsx("span", { className: display.known ? undefined : 'text-muted-foreground', children: display.text }));
|
|
105
|
+
case 'invalid':
|
|
106
|
+
return (_jsxs("span", { className: "text-muted-foreground [overflow-wrap:anywhere]", children: [display.text, _jsxs("span", { className: "sr-only", children: [" ", t.valueInvalid] })] }));
|
|
107
|
+
case 'table':
|
|
108
|
+
return _jsx(SubformTable, { display: display, labels: t });
|
|
109
|
+
default:
|
|
110
|
+
return _jsx("span", { children: display.text });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/** One rendered value; computed (formula) values are marked as such. */
|
|
114
|
+
export function FieldValue({ display, labels: t }) {
|
|
115
|
+
if (display.kind === 'table')
|
|
116
|
+
return _jsx(SubformTable, { display: display, labels: t });
|
|
117
|
+
return (_jsxs("span", { className: "inline-flex min-w-0 max-w-full flex-wrap items-baseline gap-x-2 gap-y-1", children: [_jsx(ValueText, { display: display, labels: t }), display.computed && display.kind !== 'empty' && (_jsx("span", { className: "rounded-sm bg-muted px-1.5 py-0.5 text-foreground text-xs", children: t.valueComputed }))] }));
|
|
118
|
+
}
|
|
119
|
+
/** A subform as a small table on wide screens and stacked rows on narrow screens. */
|
|
120
|
+
export function SubformTable({ display, labels: t, }) {
|
|
121
|
+
if (!display.rows.length)
|
|
122
|
+
return _jsx("span", { className: "text-muted-foreground", children: t.subformEmpty });
|
|
123
|
+
return (_jsxs("div", { className: "w-full min-w-0", children: [_jsx("div", { className: "hidden overflow-x-auto rounded-lg border sm:block", children: _jsxs("table", { className: "w-full text-left text-sm", children: [_jsx("thead", { className: "bg-muted/50", children: _jsxs("tr", { children: [_jsx("th", { scope: "col", className: "w-12 px-3 py-2 font-medium", children: "#" }), display.columns.map((column) => (_jsx("th", { scope: "col", className: "px-3 py-2 font-medium", children: column.label }, column.id)))] }) }), _jsx("tbody", { children: display.rows.map((row, index) => (
|
|
124
|
+
// biome-ignore lint/suspicious/noArrayIndexKey: subform rows have no identity of their own.
|
|
125
|
+
_jsxs("tr", { className: "border-t align-top", children: [_jsx("td", { className: "px-3 py-2 text-muted-foreground tabular-nums", children: index + 1 }), row.map((cell, column) => (_jsx("td", { className: "px-3 py-2", children: _jsx(FieldValue, { display: cell, labels: t }) }, display.columns[column]?.id ?? column)))] }, index))) })] }) }), _jsx("ol", { className: "flex w-full flex-col gap-2 sm:hidden", children: display.rows.map((row, index) => (
|
|
126
|
+
// biome-ignore lint/suspicious/noArrayIndexKey: subform rows have no identity of their own.
|
|
127
|
+
_jsxs("li", { className: "rounded-lg border p-3", children: [_jsx("p", { className: "mb-2 font-medium text-muted-foreground text-xs", children: t.subformRow.replace('{index}', String(index + 1)) }), _jsx("dl", { className: "grid gap-2", children: row.map((cell, column) => (_jsxs("div", { className: "grid gap-0.5", children: [_jsx("dt", { className: "text-muted-foreground text-xs", children: display.columns[column]?.label }), _jsx("dd", { className: "text-sm", children: _jsx(FieldValue, { display: cell, labels: t }) })] }, display.columns[column]?.id ?? column))) })] }, index))) })] }));
|
|
128
|
+
}
|
|
129
|
+
/** WAI-ARIA tabs with automatic activation and roving focus; every panel stays mounted. */
|
|
130
|
+
export function Tabs({ label, items, value, onValueChange, }) {
|
|
131
|
+
const base = useId();
|
|
132
|
+
const refs = useRef([]);
|
|
133
|
+
const index = Math.max(0, items.findIndex((item) => item.id === value));
|
|
134
|
+
const move = (event) => {
|
|
135
|
+
const keys = {
|
|
136
|
+
ArrowRight: index + 1,
|
|
137
|
+
ArrowLeft: index - 1,
|
|
138
|
+
Home: 0,
|
|
139
|
+
End: items.length - 1,
|
|
140
|
+
};
|
|
141
|
+
if (!(event.key in keys))
|
|
142
|
+
return;
|
|
143
|
+
event.preventDefault();
|
|
144
|
+
const next = (keys[event.key] + items.length) % items.length;
|
|
145
|
+
onValueChange(items[next].id);
|
|
146
|
+
refs.current[next]?.focus();
|
|
147
|
+
};
|
|
148
|
+
return (_jsxs("div", { className: "flex min-w-0 flex-col gap-4", children: [_jsx("div", { role: "tablist", "aria-label": label, className: "-mx-1 flex min-w-0 gap-1 overflow-x-auto border-b px-1 [scrollbar-width:thin]", children: items.map((item, position) => {
|
|
149
|
+
const active = position === index;
|
|
150
|
+
return (_jsxs("button", { ref: (element) => {
|
|
151
|
+
refs.current[position] = element;
|
|
152
|
+
}, type: "button", role: "tab", id: `${base}-tab-${item.id}`, "aria-controls": `${base}-panel-${item.id}`, "aria-selected": active, tabIndex: active ? 0 : -1, onClick: () => onValueChange(item.id), onKeyDown: move, className: cn('relative -mb-px inline-flex h-10 shrink-0 items-center gap-1.5 whitespace-nowrap rounded-t-md border-b-2 px-2 font-medium text-sm sm:gap-2 sm:px-3 outline-none max-md:h-11 focus-visible:ring-3 focus-visible:ring-ring/50 motion-safe:transition-colors', active
|
|
153
|
+
? 'border-foreground text-foreground'
|
|
154
|
+
: 'border-transparent text-muted-foreground hover:text-foreground'), children: [item.label, item.count !== undefined && (_jsx("span", { className: cn('min-w-5 rounded-full px-1.5 text-center text-xs tabular-nums leading-5', active ? 'bg-foreground text-background' : 'bg-muted text-foreground'), children: item.count }))] }, item.id));
|
|
155
|
+
}) }), items.map((item, position) => (_jsx("div", { role: "tabpanel", id: `${base}-panel-${item.id}`, "aria-labelledby": `${base}-tab-${item.id}`, hidden: position !== index, className: "min-w-0 outline-none", children: item.content }, item.id)))] }));
|
|
156
|
+
}
|
|
157
|
+
/** Replaces `{name}` placeholders with nodes; user content stays text nodes. */
|
|
158
|
+
export function fillTemplate(template, values) {
|
|
159
|
+
const parts = template.split(/(\{\w+\})/g);
|
|
160
|
+
return parts.map((part, index) => {
|
|
161
|
+
const match = /^\{(\w+)\}$/.exec(part);
|
|
162
|
+
// biome-ignore lint/suspicious/noArrayIndexKey: template parts are positional and static.
|
|
163
|
+
return match ? _jsx("span", { children: values[match[1]] ?? '' }, index) : part;
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
export function fillText(template, values) {
|
|
167
|
+
return template.replace(/\{(\w+)\}/g, (_, key) => String(values[key] ?? ''));
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=ui.js.map
|
package/dist/ui.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAIL,KAAK,EACL,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAC;AAIf,iGAAiG;AACjG,MAAM,CAAC,MAAM,KAAK,GAAG,iCAAiC,CAAC;AACvD,MAAM,CAAC,MAAM,SAAS,GACpB,2EAA2E,CAAC;AAC9E,MAAM,CAAC,MAAM,UAAU,GACrB,uVAAuV,CAAC;AAE1V,MAAM,UAAU,IAAI,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACmD;IAC3D,OAAO,kBAAS,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AACrE,CAAC;AACD,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,OAAO,EACP,WAAW,EACX,MAAM,EACN,KAAK,GAAG,CAAC,GAOV;IACC,MAAM,OAAO,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,OAAO,CACL,eAAK,SAAS,EAAC,6EAA6E,aAC1F,eAAK,SAAS,EAAC,+BAA+B,aAC5C,KAAC,OAAO,IAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,iDAAiD,YAC9E,KAAK,GACE,EACT,WAAW,IAAI,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAK,IAC1E,EACL,MAAM,IAAI,cAAK,SAAS,EAAC,4CAA4C,YAAE,MAAM,GAAO,IACjF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA4B;IAC5E,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,mDAAmD,EAAE,SAAS,CAAC,aAChF,iBACE,SAAS,EAAE,EAAE,CACX,UAAU,EACV,+FAA+F,CAChG,KACG,KAAK,GACT,EACF,KAAC,WAAW,mBACE,MAAM,EAClB,SAAS,EAAC,8FAA8F,GACxG,IACE,CACP,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IAC1E,OAAO,mBAAU,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,mBAAmB,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AAC5F,CAAC;AAED,MAAM,SAAS,GAA8B;IAC3C,OAAO,EAAE,wCAAwC;IACjD,IAAI,EAAE,sDAAsD;IAC5D,OAAO,EAAE,+DAA+D;IACxE,OAAO,EAAE,+DAA+D;IACxE,MAAM,EAAE,4DAA4D;CACrE,CAAC;AACF,MAAM,QAAQ,GAA8B;IAC1C,OAAO,EAAE,qBAAqB;IAC9B,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAC1B,MAAM,EAAE,gBAAgB;CACzB,CAAC;AACF,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ;QACzF,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AACD,qFAAqF;AACrF,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,IAAI,EACJ,SAAS,EACT,OAAO,GAAG,KAAK,GAMhB;IACC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CACL,6BACY,aAAa,eACZ,KAAK,EAChB,SAAS,EAAE,EAAE,CACX,6GAA6G,EAC7G,SAAS,CAAC,KAAK,CAAC,EAChB,SAAS,CACV,aAEA,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,aAAa,mBAAa,MAAM,EAAC,SAAS,EAAC,mBAAmB,GAAG,CACnE,CAAC,CAAC,CAAC,CACF,8BACc,MAAM,EAClB,SAAS,EAAE,EAAE,CAAC,gCAAgC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,GAChE,CACH,EACD,eAAM,SAAS,EAAC,kCAAkC,YAAE,KAAK,GAAQ,IAC5D,CACR,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,EAAwC;IACpE,OAAO,CACL,8BACc,MAAM,EAClB,SAAS,EAAE,EAAE,CAAC,2CAA2C,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAClF,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAA+C;IACtF,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,qJAAqJ,EACrJ,SAAS,CACV,YAEA,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,IAAI,CAAC,EACnB,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,QAAQ,GAMT;IACC,OAAO,CACL,gBAAM,SAAS,EAAC,wHAAwH,aACtI,eAAM,SAAS,EAAC,kCAAkC,YAAE,QAAQ,GAAQ,EACnE,QAAQ,IAAI,CACX,KAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,SAAS,gBACF,WAAW,EACvB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,EACpC,OAAO,EAAE,QAAQ,YAEjB,KAAC,CAAC,mBAAa,MAAM,GAAG,GACjB,CACV,IACI,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EACzB,IAAI,EACJ,KAAK,EACL,WAAW,EACX,MAAM,EACN,SAAS,GAOV;IACC,OAAO,CACL,4BACY,aAAa,EACvB,SAAS,EAAE,EAAE,CACX,uHAAuH,EACvH,SAAS,CACV,aAEA,IAAI,IAAI,CACP,6BACc,MAAM,EAClB,SAAS,EAAC,6FAA6F,YAEtG,IAAI,GACD,CACP,EACD,eAAK,SAAS,EAAC,8BAA8B,aAC3C,YAAG,SAAS,EAAC,qBAAqB,YAAE,KAAK,GAAK,EAC7C,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,oDAAoD,YAAE,WAAW,GAAK,CACpF,IACG,EACL,MAAM,IAAI,cAAK,SAAS,EAAC,qCAAqC,YAAE,MAAM,GAAO,IAC1E,CACP,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,UAAU,EACV,OAAO,EACP,MAAM,GAOP;IACC,OAAO,CACL,eACE,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,yIAAyI,aAEnJ,KAAC,WAAW,mBAAa,MAAM,EAAC,SAAS,EAAC,kCAAkC,GAAG,EAC/E,eAAK,SAAS,EAAC,sCAAsC,aACnD,YAAG,SAAS,EAAC,qBAAqB,YAAE,KAAK,GAAK,EAC7C,WAAW,IAAI,YAAG,SAAS,EAAC,4BAA4B,YAAE,WAAW,GAAK,IACvE,EACN,eAAK,SAAS,EAAC,sBAAsB,aAClC,OAAO,IAAI,UAAU,IAAI,CACxB,MAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,aACxE,KAAC,QAAQ,mBAAa,MAAM,eAAW,cAAc,GAAG,EACvD,UAAU,IACJ,CACV,EACA,MAAM,IACH,IACF,CACP,CAAC;AACJ,CAAC;AACD,2FAA2F;AAC3F,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAqB;IACvD,OAAO,CACL,MAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,SAAS,EAAE,KAAK,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,aAEvC,KAAC,QAAQ,mBAAa,MAAM,eAAW,cAAc,GAAG,EACvD,KAAK,IACC,CACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,SAAS,EAA0B;IAC5D,OAAO,CACL,6BACc,MAAM,EAClB,SAAS,EAAE,EAAE,CAAC,+CAA+C,EAAE,SAAS,CAAC,GACzE,CACH,CAAC;AACJ,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,YAAY,CAAC,EAC3B,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,SAAS,GAAG,KAAK,EACjB,SAAS,EACT,QAAQ,GAQT;IACC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,IAAI,CAAC,SAAS;QACZ,OAAO,CACL,gBAAM,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,aACnD,IAAI,EACJ,QAAQ,IACJ,CACR,CAAC;IACJ,OAAO,CACL,gBAAM,SAAS,EAAC,iCAAiC,aAC/C,gBACE,QAAQ,EAAE,GAAG;gBACb,sGAAsG;gBACtG,QAAQ,EAAE,CAAC,sBACO,GAAG,EAAE,OAAO,EAC9B,SAAS,EAAE,EAAE,CACX,yEAAyE,EACzE,SAAS,CACV,aAEA,IAAI,EACJ,QAAQ,IACJ,EACP,eACE,EAAE,EAAE,GAAG,EAAE,OAAO,EAChB,IAAI,EAAC,SAAS,EACd,SAAS,EAAC,gUAAgU,YAEzU,IAAI,GACA,IACF,CACR,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAA6C;IAClF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,CACL,gBAAM,SAAS,EAAC,uBAAuB,aACrC,8BAAkB,MAAM,uBAAS,EACjC,eAAM,SAAS,EAAC,SAAS,YAAE,CAAC,CAAC,UAAU,GAAQ,IAC1C,CACR,CAAC;QACJ,KAAK,MAAM;YACT,IAAI,CAAC,OAAO,CAAC,IAAI;gBACf,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE,OAAO,CAAC,SAAS,IAAI,qBAAqB,CAAC,YAEpF,OAAO,CAAC,IAAI,GACR,CACR,CAAC;YACJ,OAAO,CACL,gBAAM,SAAS,EAAC,iCAAiC,aAC/C,eACE,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,EAAE,CACX,8CAA8C,EAC9C,CAAC,QAAQ,IAAI,cAAc,CAC5B,YAEA,OAAO,CAAC,IAAI,GACR,EACP,KAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,MAAM,EACd,IAAI,EAAC,IAAI,EACT,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,KAAK,CAAC,mBACpB,QAAQ,mBACR,EAAE,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,YAEpC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAC5B,IACJ,CACR,CAAC;QACJ,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU;YACb,OAAO,KAAC,YAAY,IAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,GAAI,CAAC;QACpF,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CACrB,yBAAO,OAAO,CAAC,IAAI,GAAQ,CAC5B,CAAC,CAAC,CAAC,CACF,gBAAM,SAAS,EAAC,0BAA0B,aACvC,OAAO,CAAC,IAAI,EAAE,GAAG,EAClB,eAAM,SAAS,EAAC,oEAAoE,YACjF,CAAC,CAAC,kBAAkB,GAChB,IACF,CACR,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO,CACL,eAAM,SAAS,EAAC,sBAAsB,YACnC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAClC,0FAA0F;gBAC1F,MAAC,GAAG,IAAa,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,aACjE,IAAI,CAAC,IAAI,EACT,CAAC,IAAI,CAAC,KAAK,IAAI,gBAAM,SAAS,EAAC,SAAS,kBAAG,CAAC,CAAC,kBAAkB,IAAQ,KAFhE,KAAK,CAGT,CACP,CAAC,GACG,CACR,CAAC;QACJ,KAAK,MAAM;YACT,OAAO,CACL,eAAM,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,YAAG,OAAO,CAAC,IAAI,GAAQ,CAC5F,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO,CACL,gBAAM,SAAS,EAAC,gDAAgD,aAC7D,OAAO,CAAC,IAAI,EACb,gBAAM,SAAS,EAAC,SAAS,kBAAG,CAAC,CAAC,YAAY,IAAQ,IAC7C,CACR,CAAC;QACJ,KAAK,OAAO;YACV,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,GAAI,CAAC;QACvD;YACE,OAAO,yBAAO,OAAO,CAAC,IAAI,GAAQ,CAAC;IACvC,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAA6C;IAC1F,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,GAAI,CAAC;IACnF,OAAO,CACL,gBAAM,SAAS,EAAC,yEAAyE,aACvF,KAAC,SAAS,IAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,GAAI,EACzC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,CAC/C,eAAM,SAAS,EAAC,2DAA2D,YACxE,CAAC,CAAC,aAAa,GACX,CACR,IACI,CACR,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,YAAY,CAAC,EAC3B,OAAO,EACP,MAAM,EAAE,CAAC,GAIV;IACC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,eAAM,SAAS,EAAC,uBAAuB,YAAE,CAAC,CAAC,YAAY,GAAQ,CAAC;IACjG,OAAO,CACL,eAAK,SAAS,EAAC,gBAAgB,aAC7B,cAAK,SAAS,EAAC,mDAAmD,YAChE,iBAAO,SAAS,EAAC,0BAA0B,aACzC,gBAAO,SAAS,EAAC,aAAa,YAC5B,yBACE,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,4BAA4B,kBAEjD,EACJ,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC/B,aAAoB,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,uBAAuB,YAC9D,MAAM,CAAC,KAAK,IADN,MAAM,CAAC,EAAE,CAEb,CACN,CAAC,IACC,GACC,EACR,0BACG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;4BAChC,4FAA4F;4BAC5F,cAAgB,SAAS,EAAC,oBAAoB,aAC5C,aAAI,SAAS,EAAC,8CAA8C,YAAE,KAAK,GAAG,CAAC,GAAM,EAC5E,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CACzB,aAAgD,SAAS,EAAC,WAAW,YACnE,KAAC,UAAU,IAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAI,IADjC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,MAAM,CAEzC,CACN,CAAC,KANK,KAAK,CAOT,CACN,CAAC,GACI,IACF,GACJ,EACN,aAAI,SAAS,EAAC,sCAAsC,YACjD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;gBAChC,4FAA4F;gBAC5F,cAAgB,SAAS,EAAC,uBAAuB,aAC/C,YAAG,SAAS,EAAC,gDAAgD,YAC1D,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GACjD,EACJ,aAAI,SAAS,EAAC,YAAY,YACvB,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CACzB,eAAiD,SAAS,EAAC,cAAc,aACvE,aAAI,SAAS,EAAC,+BAA+B,YAC1C,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,GAC5B,EACL,aAAI,SAAS,EAAC,SAAS,YACrB,KAAC,UAAU,IAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAI,GACrC,KANG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,MAAM,CAOzC,CACP,CAAC,GACC,KAfE,KAAK,CAgBT,CACN,CAAC,GACC,IACD,CACP,CAAC;AACJ,CAAC;AAQD,2FAA2F;AAC3F,MAAM,UAAU,IAAI,CAAC,EACnB,KAAK,EACL,KAAK,EACL,KAAK,EACL,aAAa,GAMd;IACC,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC;IACrB,MAAM,IAAI,GAAG,MAAM,CAA+B,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,CAAC,EACD,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,CAC7C,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,KAAuC,EAAE,EAAE;QACvD,MAAM,IAAI,GAA2B;YACnC,UAAU,EAAE,KAAK,GAAG,CAAC;YACrB,SAAS,EAAE,KAAK,GAAG,CAAC;YACpB,IAAI,EAAE,CAAC;YACP,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;SACtB,CAAC;QACF,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;YAAE,OAAO;QACjC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QAC7D,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC,CAAC;IACF,OAAO,CACL,eAAK,SAAS,EAAC,6BAA6B,aAC1C,cACE,IAAI,EAAC,SAAS,gBACF,KAAK,EACjB,SAAS,EAAC,+EAA+E,YAExF,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;oBAC5B,MAAM,MAAM,GAAG,QAAQ,KAAK,KAAK,CAAC;oBAClC,OAAO,CACL,kBAEE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;4BACf,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;wBACnC,CAAC,EACD,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,EACV,EAAE,EAAE,GAAG,IAAI,QAAQ,IAAI,CAAC,EAAE,EAAE,mBACb,GAAG,IAAI,UAAU,IAAI,CAAC,EAAE,EAAE,mBAC1B,MAAM,EACrB,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACzB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EACrC,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,EAAE,CACX,2PAA2P,EAC3P,MAAM;4BACJ,CAAC,CAAC,mCAAmC;4BACrC,CAAC,CAAC,gEAAgE,CACrE,aAEA,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAC3B,eACE,SAAS,EAAE,EAAE,CACX,wEAAwE,EACxE,MAAM,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,0BAA0B,CACtE,YAEA,IAAI,CAAC,KAAK,GACN,CACR,KA7BI,IAAI,CAAC,EAAE,CA8BL,CACV,CAAC;gBACJ,CAAC,CAAC,GACE,EACL,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAC7B,cAEE,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,GAAG,IAAI,UAAU,IAAI,CAAC,EAAE,EAAE,qBACb,GAAG,IAAI,QAAQ,IAAI,CAAC,EAAE,EAAE,EACzC,MAAM,EAAE,QAAQ,KAAK,KAAK,EAC1B,SAAS,EAAC,sBAAsB,YAE/B,IAAI,CAAC,OAAO,IAPR,IAAI,CAAC,EAAE,CAQR,CACP,CAAC,IACE,CACP,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,MAAiC;IAC9E,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,0FAA0F;QAC1F,OAAO,KAAK,CAAC,CAAC,CAAC,yBAAmB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAA9B,KAAK,CAAiC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC;AACD,MAAM,UAAU,QAAQ,CAAC,QAAgB,EAAE,MAAuC;IAChF,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACvF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haneinfo/frontend-instances",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Shared instance lists, collaboration and import/export pages",
|
|
@@ -27,9 +27,10 @@
|
|
|
27
27
|
"csv-parse": "^6.1.0",
|
|
28
28
|
"exceljs": "^4.4.0",
|
|
29
29
|
"server-only": "^0.0.1",
|
|
30
|
-
"@haneinfo/frontend-shell": "1.
|
|
30
|
+
"@haneinfo/frontend-shell": "1.6.0"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
+
"lucide-react": "^1.22.0",
|
|
33
34
|
"next": "^16.0.0",
|
|
34
35
|
"react": "^19.0.0",
|
|
35
36
|
"react-dom": "^19.0.0"
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
"@types/node": "^24.13.0",
|
|
39
40
|
"@types/react": "^19.2.17",
|
|
40
41
|
"@types/react-dom": "^19.2.3",
|
|
42
|
+
"lucide-react": "^1.22.0",
|
|
41
43
|
"next": "^16.3.1",
|
|
42
44
|
"react": "^19.2.7",
|
|
43
45
|
"react-dom": "^19.2.7",
|