@almadar/ui 5.128.0 → 5.130.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.
@@ -22630,7 +22630,7 @@ var init_useQuerySingleton = __esm({
22630
22630
  queryStores = /* @__PURE__ */ new Map();
22631
22631
  }
22632
22632
  });
22633
- var resolveFilterType, lookStyles6, FilterGroup;
22633
+ var resolveFilterType, lookStyles6, FilterGroupControls, FilterGroupPopover, FilterGroup;
22634
22634
  var init_FilterGroup = __esm({
22635
22635
  "components/core/molecules/FilterGroup.tsx"() {
22636
22636
  "use client";
@@ -22648,10 +22648,10 @@ var init_FilterGroup = __esm({
22648
22648
  toolbar: "",
22649
22649
  chips: "gap-1 [&_input]:rounded-pill [&_select]:rounded-pill [&_button]:rounded-pill [&_input]:!px-3 [&_select]:!px-3 [&_input]:bg-muted [&_select]:bg-muted [&_label]:hidden",
22650
22650
  pills: "gap-2 [&_input]:rounded-pill [&_select]:rounded-pill [&_button]:rounded-pill",
22651
- "popover-trigger": "[&>*:not(:first-child)]:hidden",
22651
+ "popover-trigger": "",
22652
22652
  "inline-column-header": "hidden"
22653
22653
  };
22654
- FilterGroup = ({
22654
+ FilterGroupControls = ({
22655
22655
  entity,
22656
22656
  filters,
22657
22657
  onFilterChange,
@@ -22987,7 +22987,7 @@ var init_FilterGroup = __esm({
22987
22987
  className: "text-muted-foreground",
22988
22988
  children: [
22989
22989
  /* @__PURE__ */ jsx(Icon, { name: "filter", className: "h-4 w-4" }),
22990
- /* @__PURE__ */ jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
22990
+ /* @__PURE__ */ jsx("span", { className: "text-xs font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
22991
22991
  ]
22992
22992
  }
22993
22993
  ),
@@ -23078,6 +23078,42 @@ var init_FilterGroup = __esm({
23078
23078
  }
23079
23079
  );
23080
23080
  };
23081
+ FilterGroupControls.displayName = "FilterGroupControls";
23082
+ FilterGroupPopover = (props) => {
23083
+ const { t } = useTranslate();
23084
+ const [open, setOpen] = useState(false);
23085
+ const queryState = useQuerySingleton(props.query);
23086
+ const activeFilterCount = queryState?.filters ? Object.values(queryState.filters).filter((v) => v !== null && v !== void 0).length : 0;
23087
+ return /* @__PURE__ */ jsxs("div", { className: cn("relative inline-block", props.className), children: [
23088
+ /* @__PURE__ */ jsx(
23089
+ Button,
23090
+ {
23091
+ variant: activeFilterCount > 0 ? "secondary" : "ghost",
23092
+ size: "sm",
23093
+ leftIcon: "filter",
23094
+ onClick: () => setOpen((o) => !o),
23095
+ "aria-expanded": open,
23096
+ "aria-haspopup": "true",
23097
+ children: /* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
23098
+ /* @__PURE__ */ jsx("span", { children: t("filterGroup.filters") }),
23099
+ activeFilterCount > 0 && /* @__PURE__ */ jsx(Badge, { variant: "primary", size: "sm", children: activeFilterCount })
23100
+ ] })
23101
+ }
23102
+ ),
23103
+ open && /* @__PURE__ */ jsx("div", { className: "absolute left-0 z-50 mt-2 min-w-[16rem] rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-card-md shadow-main", children: /* @__PURE__ */ jsx(
23104
+ FilterGroupControls,
23105
+ {
23106
+ ...props,
23107
+ className: void 0,
23108
+ look: "toolbar",
23109
+ variant: "vertical",
23110
+ showIcon: false
23111
+ }
23112
+ ) })
23113
+ ] });
23114
+ };
23115
+ FilterGroupPopover.displayName = "FilterGroupPopover";
23116
+ FilterGroup = (props) => props.look === "popover-trigger" ? /* @__PURE__ */ jsx(FilterGroupPopover, { ...props }) : /* @__PURE__ */ jsx(FilterGroupControls, { ...props });
23081
23117
  FilterGroup.displayName = "FilterGroup";
23082
23118
  }
23083
23119
  });
@@ -28547,12 +28583,12 @@ var init_MapView = __esm({
28547
28583
  shadowSize: [41, 41]
28548
28584
  });
28549
28585
  L.Marker.prototype.options.icon = defaultIcon;
28550
- const { useEffect: useEffect65, useRef: useRef62, useCallback: useCallback105, useState: useState102 } = React74__default;
28586
+ const { useEffect: useEffect65, useRef: useRef63, useCallback: useCallback105, useState: useState102 } = React74__default;
28551
28587
  const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
28552
28588
  const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
28553
28589
  function MapUpdater({ centerLat, centerLng, zoom }) {
28554
28590
  const map = useMap();
28555
- const prevRef = useRef62({ centerLat, centerLng, zoom });
28591
+ const prevRef = useRef63({ centerLat, centerLng, zoom });
28556
28592
  useEffect65(() => {
28557
28593
  const prev = prevRef.current;
28558
28594
  if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
@@ -29531,9 +29567,19 @@ function TableView({
29531
29567
  const inlineActionCount = hasActions ? maxInlineActions != null ? Math.min(itemActions.length, maxInlineActions) : itemActions.length : 0;
29532
29568
  const hasOverflowActions = hasActions && maxInlineActions != null && itemActions.length > maxInlineActions;
29533
29569
  const actionsTrack = hasActions ? `${inlineActionCount * 6 + (hasOverflowActions ? 3 : 0)}rem` : null;
29570
+ const colFloors = React74__default.useMemo(
29571
+ () => colDefs.map((col) => {
29572
+ const longest = data.reduce((widest, row) => {
29573
+ const cell = formatCell(asFieldValue(getNestedValue(row, col.field ?? col.key)), col.format);
29574
+ return Math.max(widest, cell.length);
29575
+ }, columnLabel(col).length);
29576
+ return Math.min(longest, MAX_MEASURED_COL_CH);
29577
+ }),
29578
+ [colDefs, data]
29579
+ );
29534
29580
  const gridTemplateColumns = [
29535
29581
  selectable ? "auto" : null,
29536
- ...colDefs.map((c) => c.width ?? "minmax(0, 1fr)"),
29582
+ ...colDefs.map((c, i) => c.width ?? `minmax(${colFloors[i]}ch, 1fr)`),
29537
29583
  actionsTrack
29538
29584
  ].filter(Boolean).join(" ");
29539
29585
  const header = /* @__PURE__ */ jsxs(
@@ -29700,7 +29746,7 @@ function TableView({
29700
29746
  }
29701
29747
  );
29702
29748
  }
29703
- var alignClass, weightClass, LOOKS;
29749
+ var MAX_MEASURED_COL_CH, alignClass, weightClass, LOOKS;
29704
29750
  var init_TableView = __esm({
29705
29751
  "components/core/molecules/TableView.tsx"() {
29706
29752
  "use client";
@@ -29718,6 +29764,7 @@ var init_TableView = __esm({
29718
29764
  init_Menu();
29719
29765
  init_useDataDnd();
29720
29766
  createLogger("almadar:ui:table-view");
29767
+ MAX_MEASURED_COL_CH = 32;
29721
29768
  alignClass = {
29722
29769
  left: "justify-start text-left",
29723
29770
  center: "justify-center text-center",
@@ -37742,6 +37789,293 @@ var init_GraphCanvas = __esm({
37742
37789
  GraphCanvas.displayName = "GraphCanvas";
37743
37790
  }
37744
37791
  });
37792
+ var ImportSourcePicker;
37793
+ var init_ImportSourcePicker = __esm({
37794
+ "components/core/molecules/import/ImportSourcePicker.tsx"() {
37795
+ "use client";
37796
+ init_Box();
37797
+ init_Icon();
37798
+ init_Typography();
37799
+ init_cn();
37800
+ ImportSourcePicker = ({
37801
+ sources,
37802
+ onSelect,
37803
+ onFilesSelected,
37804
+ title,
37805
+ moreSources,
37806
+ className
37807
+ }) => {
37808
+ const fileInputRef = useRef(null);
37809
+ const handlePick = (source) => {
37810
+ if (source.disabled) return;
37811
+ if (source.kind === "file") {
37812
+ const input = fileInputRef.current;
37813
+ if (!input) return;
37814
+ input.accept = source.accept ?? "";
37815
+ input.multiple = source.multiple ?? false;
37816
+ input.click();
37817
+ return;
37818
+ }
37819
+ onSelect?.(source.id);
37820
+ };
37821
+ const handleFiles = (event) => {
37822
+ const files = event.target.files ? Array.from(event.target.files) : [];
37823
+ event.target.value = "";
37824
+ if (files.length > 0) onFilesSelected?.(files);
37825
+ };
37826
+ return /* @__PURE__ */ jsxs(Box, { className: cn("flex flex-col gap-2", className), children: [
37827
+ title ? /* @__PURE__ */ jsx(Typography, { variant: "h4", children: title }) : null,
37828
+ sources.map((source) => /* @__PURE__ */ jsxs(
37829
+ Box,
37830
+ {
37831
+ role: "button",
37832
+ tabIndex: source.disabled ? -1 : 0,
37833
+ "aria-disabled": source.disabled,
37834
+ onClick: () => handlePick(source),
37835
+ onKeyDown: (event) => {
37836
+ if (event.key === "Enter" || event.key === " ") {
37837
+ event.preventDefault();
37838
+ handlePick(source);
37839
+ }
37840
+ },
37841
+ className: cn(
37842
+ "flex items-center gap-3 rounded-md border border-border bg-card px-4 py-3 text-left",
37843
+ source.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer hover:bg-accent hover:text-accent-foreground"
37844
+ ),
37845
+ children: [
37846
+ source.icon ? /* @__PURE__ */ jsx(Icon, { icon: source.icon, size: "md" }) : null,
37847
+ /* @__PURE__ */ jsxs(Box, { className: "flex flex-col", children: [
37848
+ /* @__PURE__ */ jsx(Typography, { variant: "label", children: source.label }),
37849
+ source.description ? /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: source.description }) : null
37850
+ ] })
37851
+ ]
37852
+ },
37853
+ source.id
37854
+ )),
37855
+ moreSources,
37856
+ /* @__PURE__ */ jsx(
37857
+ "input",
37858
+ {
37859
+ ref: fileInputRef,
37860
+ type: "file",
37861
+ className: "hidden",
37862
+ onChange: handleFiles,
37863
+ "data-testid": "import-source-file-input"
37864
+ }
37865
+ )
37866
+ ] });
37867
+ };
37868
+ }
37869
+ });
37870
+ function formatFieldValue(value) {
37871
+ if (value === null) return "\u2014";
37872
+ if (value instanceof Date) return value.toISOString();
37873
+ if (Array.isArray(value)) return value.map(formatFieldValue).join(", ");
37874
+ if (typeof value === "object") return JSON.stringify(value);
37875
+ return String(value);
37876
+ }
37877
+ function unitTitle(unit) {
37878
+ for (const key of TITLE_KEYS) {
37879
+ const value = unit.fields[key];
37880
+ if (typeof value === "string" && value.length > 0) return value;
37881
+ }
37882
+ return unit.ref;
37883
+ }
37884
+ function fieldSummary(unit) {
37885
+ return Object.entries(unit.fields).filter(([key]) => !TITLE_KEYS.includes(key)).map(([key, value]) => `${key}: ${formatFieldValue(value)}`).join(" \xB7 ");
37886
+ }
37887
+ var TITLE_KEYS, ImportPreviewTree;
37888
+ var init_ImportPreviewTree = __esm({
37889
+ "components/core/molecules/import/ImportPreviewTree.tsx"() {
37890
+ "use client";
37891
+ init_Box();
37892
+ init_Badge();
37893
+ init_Button();
37894
+ init_Icon();
37895
+ init_Typography();
37896
+ init_cn();
37897
+ TITLE_KEYS = ["title", "name", "label"];
37898
+ ImportPreviewTree = ({
37899
+ units,
37900
+ skipped = [],
37901
+ entityDisplay,
37902
+ onConfirm,
37903
+ onCancel,
37904
+ confirmLabel = "Confirm import",
37905
+ cancelLabel = "Cancel",
37906
+ indent = 16,
37907
+ className
37908
+ }) => {
37909
+ const groups = /* @__PURE__ */ new Map();
37910
+ for (const unit of units) {
37911
+ const group = groups.get(unit.targetEntity);
37912
+ if (group) group.push(unit);
37913
+ else groups.set(unit.targetEntity, [unit]);
37914
+ }
37915
+ const renderUnit = (unit, childrenByParent, depth) => {
37916
+ const summary = fieldSummary(unit);
37917
+ const children = childrenByParent.get(unit.ref) ?? [];
37918
+ return /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
37919
+ /* @__PURE__ */ jsxs(
37920
+ Box,
37921
+ {
37922
+ className: "flex flex-col py-1",
37923
+ style: { paddingLeft: depth * indent },
37924
+ "data-testid": `import-preview-unit-${unit.ref}`,
37925
+ children: [
37926
+ /* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-2", children: [
37927
+ /* @__PURE__ */ jsx(Icon, { icon: "file-text", size: "xs", className: "text-muted-foreground" }),
37928
+ /* @__PURE__ */ jsx(Typography, { variant: "body2", children: unitTitle(unit) })
37929
+ ] }),
37930
+ summary ? /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: summary }) : null
37931
+ ]
37932
+ }
37933
+ ),
37934
+ children.map((child) => renderUnit(child, childrenByParent, depth + 1))
37935
+ ] }, unit.ref);
37936
+ };
37937
+ return /* @__PURE__ */ jsxs(Box, { className: cn("flex flex-col gap-4", className), children: [
37938
+ units.length === 0 ? /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-muted-foreground", children: "No units staged." }) : null,
37939
+ Array.from(groups.entries()).map(([entity, groupUnits]) => {
37940
+ const refs = new Set(groupUnits.map((unit) => unit.ref));
37941
+ const childrenByParent = /* @__PURE__ */ new Map();
37942
+ const roots = [];
37943
+ for (const unit of groupUnits) {
37944
+ if (unit.parentRef && refs.has(unit.parentRef)) {
37945
+ const siblings = childrenByParent.get(unit.parentRef);
37946
+ if (siblings) siblings.push(unit);
37947
+ else childrenByParent.set(unit.parentRef, [unit]);
37948
+ } else {
37949
+ roots.push(unit);
37950
+ }
37951
+ }
37952
+ const label = entityDisplay[entity]?.plural ?? entity;
37953
+ return /* @__PURE__ */ jsxs(Box, { border: true, className: "rounded-md border-border bg-card p-3", children: [
37954
+ /* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-2 pb-2", children: [
37955
+ /* @__PURE__ */ jsx(Typography, { variant: "label", children: label }),
37956
+ /* @__PURE__ */ jsx(Badge, { amount: groupUnits.length })
37957
+ ] }),
37958
+ roots.map((unit) => renderUnit(unit, childrenByParent, 0))
37959
+ ] }, entity);
37960
+ }),
37961
+ skipped.length > 0 ? /* @__PURE__ */ jsxs(Box, { border: true, className: "rounded-md border-border bg-card p-3", children: [
37962
+ /* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-2 pb-2", children: [
37963
+ /* @__PURE__ */ jsx(Typography, { variant: "label", children: "Skipped" }),
37964
+ /* @__PURE__ */ jsx(Badge, { amount: skipped.length })
37965
+ ] }),
37966
+ skipped.map((element) => /* @__PURE__ */ jsxs(Box, { className: "flex items-baseline gap-2 py-1", children: [
37967
+ /* @__PURE__ */ jsx(Typography, { variant: "body2", children: element.ref }),
37968
+ /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: element.reason })
37969
+ ] }, element.ref))
37970
+ ] }) : null,
37971
+ onConfirm || onCancel ? /* @__PURE__ */ jsxs(Box, { className: "flex items-center justify-end gap-2", children: [
37972
+ onCancel ? /* @__PURE__ */ jsx(Button, { variant: "default", label: cancelLabel, onClick: onCancel }) : null,
37973
+ onConfirm ? /* @__PURE__ */ jsx(Button, { variant: "primary", label: confirmLabel, onClick: onConfirm }) : null
37974
+ ] }) : null
37975
+ ] });
37976
+ };
37977
+ }
37978
+ });
37979
+ var PIPELINE, DEFAULT_LABELS, ImportProgress;
37980
+ var init_ImportProgress = __esm({
37981
+ "components/core/molecules/import/ImportProgress.tsx"() {
37982
+ "use client";
37983
+ init_Box();
37984
+ init_Badge();
37985
+ init_Icon();
37986
+ init_Typography();
37987
+ init_cn();
37988
+ PIPELINE = [
37989
+ "fetching",
37990
+ "mapping",
37991
+ "reviewing",
37992
+ "committing"
37993
+ ];
37994
+ DEFAULT_LABELS = {
37995
+ fetching: "Fetching",
37996
+ mapping: "Mapping",
37997
+ reviewing: "Reviewing",
37998
+ committing: "Committing",
37999
+ done: "Done",
38000
+ failed: "Failed"
38001
+ };
38002
+ ImportProgress = ({
38003
+ step,
38004
+ counts,
38005
+ labels,
38006
+ className
38007
+ }) => {
38008
+ const label = (key) => labels?.[key] ?? DEFAULT_LABELS[key];
38009
+ const currentIndex = step === "done" || step === "failed" ? PIPELINE.length : PIPELINE.indexOf(step);
38010
+ return /* @__PURE__ */ jsxs(Box, { className: cn("flex flex-col gap-3", className), children: [
38011
+ /* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-2", children: [
38012
+ PIPELINE.map((key, index) => {
38013
+ const isComplete = index < currentIndex;
38014
+ const isActive = index === currentIndex;
38015
+ return /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
38016
+ index > 0 ? /* @__PURE__ */ jsx(Box, { className: "h-px w-4 bg-border" }) : null,
38017
+ /* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-1", "data-testid": `import-progress-step-${key}`, children: [
38018
+ /* @__PURE__ */ jsx(
38019
+ Icon,
38020
+ {
38021
+ icon: isComplete ? "check" : isActive ? "loader" : "circle",
38022
+ size: "sm",
38023
+ className: cn(
38024
+ isComplete ? "text-success" : isActive ? "text-primary" : "text-muted-foreground"
38025
+ )
38026
+ }
38027
+ ),
38028
+ /* @__PURE__ */ jsx(
38029
+ Typography,
38030
+ {
38031
+ variant: "caption",
38032
+ className: cn(isActive ? "text-foreground" : "text-muted-foreground"),
38033
+ children: label(key)
38034
+ }
38035
+ )
38036
+ ] })
38037
+ ] }, key);
38038
+ }),
38039
+ step === "done" || step === "failed" ? /* @__PURE__ */ jsxs(Fragment, { children: [
38040
+ /* @__PURE__ */ jsx(Box, { className: "h-px w-4 bg-border" }),
38041
+ /* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-1", "data-testid": `import-progress-step-${step}`, children: [
38042
+ /* @__PURE__ */ jsx(
38043
+ Icon,
38044
+ {
38045
+ icon: step === "done" ? "check" : "x",
38046
+ size: "sm",
38047
+ className: step === "done" ? "text-success" : "text-error"
38048
+ }
38049
+ ),
38050
+ /* @__PURE__ */ jsx(
38051
+ Typography,
38052
+ {
38053
+ variant: "caption",
38054
+ className: step === "done" ? "text-success" : "text-error",
38055
+ children: label(step)
38056
+ }
38057
+ )
38058
+ ] })
38059
+ ] }) : null
38060
+ ] }),
38061
+ counts ? /* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-2", children: [
38062
+ counts.staged !== void 0 ? /* @__PURE__ */ jsx(Badge, { label: `Staged ${counts.staged}` }) : null,
38063
+ counts.committed !== void 0 ? /* @__PURE__ */ jsx(Badge, { variant: "success", label: `Committed ${counts.committed}` }) : null,
38064
+ counts.failed !== void 0 ? /* @__PURE__ */ jsx(Badge, { variant: "danger", label: `Failed ${counts.failed}` }) : null
38065
+ ] }) : null
38066
+ ] });
38067
+ };
38068
+ }
38069
+ });
38070
+
38071
+ // components/core/molecules/import/index.ts
38072
+ var init_import = __esm({
38073
+ "components/core/molecules/import/index.ts"() {
38074
+ init_ImportSourcePicker();
38075
+ init_ImportPreviewTree();
38076
+ init_ImportProgress();
38077
+ }
38078
+ });
37745
38079
  var ReflectionBlock;
37746
38080
  var init_ReflectionBlock = __esm({
37747
38081
  "components/core/molecules/ReflectionBlock.tsx"() {
@@ -38028,6 +38362,7 @@ var init_molecules2 = __esm({
38028
38362
  init_SignaturePad();
38029
38363
  init_DocumentViewer();
38030
38364
  init_GraphCanvas();
38365
+ init_import();
38031
38366
  init_ActivationBlock();
38032
38367
  init_ReflectionBlock();
38033
38368
  init_ConnectionBlock();
@@ -38514,7 +38849,7 @@ function getBadgeVariant(fieldName, value) {
38514
38849
  function formatFieldLabel(fieldName) {
38515
38850
  return fieldName.replace(/([A-Z])/g, " $1").replace(/^./, (str2) => str2.toUpperCase());
38516
38851
  }
38517
- function formatFieldValue(value, fieldName) {
38852
+ function formatFieldValue2(value, fieldName) {
38518
38853
  if (typeof value === "number") {
38519
38854
  if (fieldName.toLowerCase().includes("progress") || fieldName.toLowerCase().includes("percent")) {
38520
38855
  return `${value}%`;
@@ -38609,7 +38944,7 @@ function renderRichFieldValue(value, fieldName, fieldType) {
38609
38944
  return str2;
38610
38945
  }
38611
38946
  default:
38612
- return formatFieldValue(value, fieldName);
38947
+ return formatFieldValue2(value, fieldName);
38613
38948
  }
38614
38949
  }
38615
38950
  function normalizeFieldDefs(fields) {
@@ -38720,7 +39055,7 @@ var init_DetailPanel = __esm({
38720
39055
  const value = getNestedValue(normalizedData, field);
38721
39056
  return {
38722
39057
  label: labelFor(field),
38723
- value: formatFieldValue(value, field),
39058
+ value: formatFieldValue2(value, field),
38724
39059
  icon: getFieldIcon(field)
38725
39060
  };
38726
39061
  }
@@ -44732,6 +45067,9 @@ var init_component_registry_generated = __esm({
44732
45067
  init_HeroOrganism();
44733
45068
  init_HeroSection();
44734
45069
  init_Icon();
45070
+ init_ImportPreviewTree();
45071
+ init_ImportProgress();
45072
+ init_ImportSourcePicker();
44735
45073
  init_InfiniteScrollSentinel();
44736
45074
  init_Input();
44737
45075
  init_InputGroup();
@@ -44995,6 +45333,9 @@ var init_component_registry_generated = __esm({
44995
45333
  "HeroOrganism": HeroOrganism,
44996
45334
  "HeroSection": HeroSection,
44997
45335
  "Icon": Icon,
45336
+ "ImportPreviewTree": ImportPreviewTree,
45337
+ "ImportProgress": ImportProgress,
45338
+ "ImportSourcePicker": ImportSourcePicker,
44998
45339
  "InfiniteScrollSentinel": InfiniteScrollSentinel,
44999
45340
  "Input": Input,
45000
45341
  "InputGroup": InputGroup,
@@ -48558,4 +48899,4 @@ function useGitHubBranches(owner, repo, enabled = true) {
48558
48899
  });
48559
48900
  }
48560
48901
 
48561
- export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, Alert, AlgorithmCanvas, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, AtlasImage, AtlasPanel, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, Button, ButtonGroup, CTABanner, CalendarGrid, Canvas, Canvas2D, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, Center, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, Coachmark, CodeBlock, CodeRunnerPanel, CollapsibleSection, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ContentSection, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DetailPanel, Dialog, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EntityDisplayEvents, ErrorBoundary, ErrorState, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioToggle, GameHud, GameIcon, GameMenu, GameShell, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, HStack, Header, HealthBar, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, IconPicker, InfiniteScrollSentinel, Input, InputGroup, InstallBox, JazariStateMachine, JsonTreeEditor, Label, LandingPageTemplate, LawReferenceTooltip, LearningCanvas, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, ModuleCard, Navigation, NodeSlotEditor, NotifyListener, NumberStepper, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, PageTransition, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, Presence, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, PullQuote, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichBlockEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, ServiceCatalog, SharedEntityStoreContext, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StepFlow, StepFlowOrganism, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagCloud, TagInput, TeamCard, TeamOrganism, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UploadDropZone, VStack, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, boardEntity, bool, calculateAttackTargets, calculateValidMoves, cn, createInitialGameState, createSharedEntityStore, createTranslate, createUnitAnimationState, getCurrentFrame, getTileDimensions, inferDirection, isoToScreen, makeAsset, makeAssetMap, mapBookData, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, parseLessonSegments, parseMarkdownWithCodeBlocks, parseQueryBinding, pendulum, projectileMotion, registerCodeLanguageLoader, resolveFieldMap, resolveFrame, resolveSheetDirection, rows, runTickFrame, screenToIso, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, useAgentChat, useAnchorRect, useAtlasSliceDataUrl, useAuthContext, useCamera, useCanvasGestures, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useLongPress, useOrbitalHistory, usePresence, usePreview, usePullToRefresh, useQuerySingleton, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTapReveal, useTraitListens, useTranslate115 as useTranslate, useUIEvents, useUISlotManager, useUnitSpriteAtlas, useValidation, vec2 };
48902
+ export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, Alert, AlgorithmCanvas, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, AtlasImage, AtlasPanel, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, Button, ButtonGroup, CTABanner, CalendarGrid, Canvas, Canvas2D, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, Center, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, Coachmark, CodeBlock, CodeRunnerPanel, CollapsibleSection, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ContentSection, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DetailPanel, Dialog, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EntityDisplayEvents, ErrorBoundary, ErrorState, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioToggle, GameHud, GameIcon, GameMenu, GameShell, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, HStack, Header, HealthBar, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, IconPicker, ImportPreviewTree, ImportProgress, ImportSourcePicker, InfiniteScrollSentinel, Input, InputGroup, InstallBox, JazariStateMachine, JsonTreeEditor, Label, LandingPageTemplate, LawReferenceTooltip, LearningCanvas, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, ModuleCard, Navigation, NodeSlotEditor, NotifyListener, NumberStepper, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, PageTransition, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, Presence, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, PullQuote, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichBlockEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, ServiceCatalog, SharedEntityStoreContext, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StepFlow, StepFlowOrganism, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagCloud, TagInput, TeamCard, TeamOrganism, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UploadDropZone, VStack, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, boardEntity, bool, calculateAttackTargets, calculateValidMoves, cn, createInitialGameState, createSharedEntityStore, createTranslate, createUnitAnimationState, getCurrentFrame, getTileDimensions, inferDirection, isoToScreen, makeAsset, makeAssetMap, mapBookData, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, parseLessonSegments, parseMarkdownWithCodeBlocks, parseQueryBinding, pendulum, projectileMotion, registerCodeLanguageLoader, resolveFieldMap, resolveFrame, resolveSheetDirection, rows, runTickFrame, screenToIso, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, useAgentChat, useAnchorRect, useAtlasSliceDataUrl, useAuthContext, useCamera, useCanvasGestures, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useLongPress, useOrbitalHistory, usePresence, usePreview, usePullToRefresh, useQuerySingleton, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTapReveal, useTraitListens, useTranslate115 as useTranslate, useUIEvents, useUISlotManager, useUnitSpriteAtlas, useValidation, vec2 };