elseware-ui 3.0.10 → 3.0.12

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/index.js CHANGED
@@ -14115,19 +14115,6 @@ var Flag = ({
14115
14115
  );
14116
14116
  };
14117
14117
 
14118
- // src/components/data-display/graphs/layouts/registry.ts
14119
- var registry = /* @__PURE__ */ new Map();
14120
- var registerLayout = (type2, executor) => {
14121
- registry.set(type2, executor);
14122
- };
14123
- var getLayout = (type2) => {
14124
- const layout = registry.get(type2);
14125
- if (!layout) {
14126
- throw new Error(`Layout "${type2}" not registered`);
14127
- }
14128
- return layout;
14129
- };
14130
-
14131
14118
  // node_modules/d3-dispatch/src/dispatch.js
14132
14119
  var noop = { value: () => {
14133
14120
  } };
@@ -17111,6 +17098,45 @@ function createTreeLayout(nodes, edges, width, height) {
17111
17098
  };
17112
17099
  });
17113
17100
  }
17101
+
17102
+ // src/components/data-display/graphs/layouts/registry.ts
17103
+ var registry = /* @__PURE__ */ new Map();
17104
+ var defaultLayoutsRegistered = false;
17105
+ var registerLayout = (type2, executor) => {
17106
+ registry.set(type2, executor);
17107
+ };
17108
+ var registerDefaultLayouts = () => {
17109
+ if (defaultLayoutsRegistered) return;
17110
+ registerLayout("force", ({ nodes, edges, width, height, onTick }) => {
17111
+ const sim = createForceLayout(nodes, edges, width, height);
17112
+ sim.on("tick", () => {
17113
+ onTick?.([...nodes]);
17114
+ });
17115
+ return {
17116
+ type: "simulation",
17117
+ stop: () => sim.stop()
17118
+ };
17119
+ });
17120
+ registerLayout("grid", ({ nodes, width, height, onTick }) => {
17121
+ const result = createGridLayout(nodes, width, height);
17122
+ onTick?.(result);
17123
+ return { type: "static" };
17124
+ });
17125
+ registerLayout("tree", ({ nodes, edges, width, height, onTick }) => {
17126
+ const result = createTreeLayout(nodes, edges, width, height);
17127
+ onTick?.(result);
17128
+ return { type: "static" };
17129
+ });
17130
+ defaultLayoutsRegistered = true;
17131
+ };
17132
+ var getLayout = (type2) => {
17133
+ registerDefaultLayouts();
17134
+ const layout = registry.get(type2);
17135
+ if (!layout) {
17136
+ throw new Error(`Layout "${type2}" not registered`);
17137
+ }
17138
+ return layout;
17139
+ };
17114
17140
  var NODE_SIZE = 48;
17115
17141
  var GraphNode = ({ node: node2, renderCustom }) => {
17116
17142
  if (node2.x === void 0 || node2.y === void 0) return null;
@@ -31424,7 +31450,7 @@ var GlowWrapper = ({
31424
31450
  /* @__PURE__ */ jsxRuntime.jsx(
31425
31451
  "span",
31426
31452
  {
31427
- className: "\n pointer-events-none absolute inset-0 opacity-0 \n group-hover:opacity-100 transition-opacity duration-300\n ",
31453
+ className: "\r\n pointer-events-none absolute inset-0 opacity-0 \r\n group-hover:opacity-100 transition-opacity duration-300\r\n ",
31428
31454
  style: { background: "var(--glow-bg)" }
31429
31455
  }
31430
31456
  ),
@@ -32776,7 +32802,16 @@ function Sidebar({
32776
32802
  ) }) });
32777
32803
  }
32778
32804
  var Sidebar_default = Sidebar;
32805
+ var TNThemeContext = React26.createContext({
32806
+ components: {},
32807
+ classNames: {}
32808
+ });
32809
+ var TNThemeProvider = TNThemeContext.Provider;
32810
+ var useTNTheme = () => React26.useContext(TNThemeContext);
32811
+ var useTNSlot = (slot) => React26.useContext(TNThemeContext).classNames?.[slot];
32779
32812
  var TNContext = ({ icon, name: name2, badge }) => {
32813
+ const iconSlot = useTNSlot("icon");
32814
+ const labelSlot = useTNSlot("label");
32780
32815
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
32781
32816
  icon && /* @__PURE__ */ jsxRuntime.jsx(
32782
32817
  "div",
@@ -32784,7 +32819,8 @@ var TNContext = ({ icon, name: name2, badge }) => {
32784
32819
  className: cn(
32785
32820
  "text-base text-gray-500 dark:text-gray-400",
32786
32821
  "transition-colors duration-200",
32787
- "group-hover:text-eui-secondary-700"
32822
+ "group-hover:text-eui-secondary-700",
32823
+ iconSlot
32788
32824
  ),
32789
32825
  children: icon
32790
32826
  }
@@ -32795,7 +32831,8 @@ var TNContext = ({ icon, name: name2, badge }) => {
32795
32831
  className: cn(
32796
32832
  "flex-1",
32797
32833
  "transition-colors duration-200",
32798
- "group-hover:text-eui-secondary-700"
32834
+ "group-hover:text-eui-secondary-700",
32835
+ labelSlot
32799
32836
  ),
32800
32837
  children: name2
32801
32838
  }
@@ -32812,6 +32849,8 @@ var TNItem = ({
32812
32849
  className,
32813
32850
  ...rest
32814
32851
  }) => {
32852
+ const itemSlot = useTNSlot("item");
32853
+ const selectedSlot = useTNSlot("itemSelected");
32815
32854
  return /* @__PURE__ */ jsxRuntime.jsx(
32816
32855
  "button",
32817
32856
  {
@@ -32823,7 +32862,9 @@ var TNItem = ({
32823
32862
  "transition-all duration-200",
32824
32863
  "text-gray-400",
32825
32864
  "hover:bg-gray-300/10",
32865
+ itemSlot,
32826
32866
  selected && "bg-gray-300/10",
32867
+ selected && selectedSlot,
32827
32868
  className
32828
32869
  ),
32829
32870
  children: /* @__PURE__ */ jsxRuntime.jsx(TNContext, { icon, name: name2, badge })
@@ -32839,6 +32880,7 @@ var TNDropdownItem = ({
32839
32880
  onClick,
32840
32881
  className
32841
32882
  }) => {
32883
+ const dropdownItemSlot = useTNSlot("dropdownItem");
32842
32884
  const handle2 = (e) => {
32843
32885
  if (to) {
32844
32886
  navigate ? navigate(to) : window.location.href = to;
@@ -32857,6 +32899,7 @@ var TNDropdownItem = ({
32857
32899
  "hover:bg-gray-100 dark:hover:bg-gray-700/50",
32858
32900
  "hover:text-gray-900 dark:hover:text-gray-300",
32859
32901
  "transition-colors duration-200",
32902
+ dropdownItemSlot,
32860
32903
  className
32861
32904
  ),
32862
32905
  children: /* @__PURE__ */ jsxRuntime.jsx(TNContext, { icon, name: name2, badge })
@@ -32864,12 +32907,14 @@ var TNDropdownItem = ({
32864
32907
  );
32865
32908
  };
32866
32909
  var TNDropdownTitle = ({ name: name2, className }) => {
32910
+ const dropdownTitleSlot = useTNSlot("dropdownTitle");
32867
32911
  return /* @__PURE__ */ jsxRuntime.jsx(
32868
32912
  "div",
32869
32913
  {
32870
32914
  className: cn(
32871
32915
  "px-3 py-4 text-xs font-semibold uppercase tracking-wide",
32872
32916
  "text-gray-500 dark:text-gray-600",
32917
+ dropdownTitleSlot,
32873
32918
  className
32874
32919
  ),
32875
32920
  children: name2
@@ -32882,9 +32927,14 @@ var TNDropdownGroup = ({
32882
32927
  badge,
32883
32928
  items,
32884
32929
  navigate,
32930
+ components,
32885
32931
  className
32886
32932
  }) => {
32887
32933
  const [open, setOpen] = React26.useState(true);
32934
+ const dropdownGroupSlot = useTNSlot("dropdownGroup");
32935
+ const Item = components?.dropdownItem || TNDropdownItem;
32936
+ const Group = components?.dropdownGroup || TNDropdownGroup;
32937
+ const Title = components?.dropdownTitle || TNDropdownTitle;
32888
32938
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
32889
32939
  /* @__PURE__ */ jsxRuntime.jsxs(
32890
32940
  "div",
@@ -32899,6 +32949,7 @@ var TNDropdownGroup = ({
32899
32949
  "dark:from-green-900/30 dark:to-transparent",
32900
32950
  "hover:from-gray-200 dark:hover:from-green-900/50",
32901
32951
  "transition-all duration-200",
32952
+ dropdownGroupSlot,
32902
32953
  className
32903
32954
  ),
32904
32955
  children: [
@@ -32917,12 +32968,20 @@ var TNDropdownGroup = ({
32917
32968
  ),
32918
32969
  open && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-2 border-l border-gray-200 dark:border-gray-700 pl-1", children: items.map((item, i) => {
32919
32970
  if (item.type === "title") {
32920
- return /* @__PURE__ */ jsxRuntime.jsx(TNDropdownTitle, { ...item }, i);
32971
+ return /* @__PURE__ */ jsxRuntime.jsx(Title, { ...item }, i);
32921
32972
  }
32922
32973
  if (item.type === "group") {
32923
- return /* @__PURE__ */ jsxRuntime.jsx(TNDropdownGroup, { ...item, navigate }, i);
32974
+ return /* @__PURE__ */ jsxRuntime.jsx(
32975
+ Group,
32976
+ {
32977
+ ...item,
32978
+ navigate,
32979
+ components
32980
+ },
32981
+ i
32982
+ );
32924
32983
  }
32925
- return /* @__PURE__ */ jsxRuntime.jsx(TNDropdownItem, { ...item, navigate }, i);
32984
+ return /* @__PURE__ */ jsxRuntime.jsx(Item, { ...item, navigate }, i);
32926
32985
  }) })
32927
32986
  ] });
32928
32987
  };
@@ -32934,6 +32993,7 @@ var TNDropdown = ({
32934
32993
  const Item = components?.dropdownItem || TNDropdownItem;
32935
32994
  const Group = components?.dropdownGroup || TNDropdownGroup;
32936
32995
  const Title = components?.dropdownTitle || TNDropdownTitle;
32996
+ const dropdownSlot = useTNSlot("dropdown");
32937
32997
  return /* @__PURE__ */ jsxRuntime.jsx(
32938
32998
  "div",
32939
32999
  {
@@ -32945,7 +33005,8 @@ var TNDropdown = ({
32945
33005
  "min-w-[260px]",
32946
33006
  "w-max",
32947
33007
  "max-w-[90vw]",
32948
- "overflow-auto"
33008
+ "overflow-auto",
33009
+ dropdownSlot
32949
33010
  ),
32950
33011
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-0", children: items.map((item, i) => {
32951
33012
  if (item.type === "title") return /* @__PURE__ */ jsxRuntime.jsx(Title, { ...item }, i);
@@ -32971,10 +33032,12 @@ var TNGroup = ({
32971
33032
  navigate,
32972
33033
  columns,
32973
33034
  components,
32974
- selected
33035
+ selected,
33036
+ className
32975
33037
  }) => {
32976
33038
  const [open, setOpen] = React26.useState(false);
32977
33039
  const timeoutRef = React26.useRef(null);
33040
+ const groupSlot = useTNSlot("group");
32978
33041
  const handleEnter = () => {
32979
33042
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
32980
33043
  setOpen(true);
@@ -32984,15 +33047,16 @@ var TNGroup = ({
32984
33047
  setOpen(false);
32985
33048
  }, 150);
32986
33049
  };
33050
+ const Trigger = components?.item || TNItem;
32987
33051
  const Dropdown = components?.dropdown || TNDropdown;
32988
33052
  return /* @__PURE__ */ jsxRuntime.jsxs(
32989
33053
  "div",
32990
33054
  {
32991
- className: "relative flex items-center",
33055
+ className: cn("relative flex items-center", groupSlot, className),
32992
33056
  onMouseEnter: handleEnter,
32993
33057
  onMouseLeave: handleLeave,
32994
33058
  children: [
32995
- /* @__PURE__ */ jsxRuntime.jsx(TNItem, { icon, name: name2, selected: selected || open }),
33059
+ /* @__PURE__ */ jsxRuntime.jsx(Trigger, { icon, name: name2, selected: selected || open }),
32996
33060
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-full left-0 -mt-[1px]", children: open && /* @__PURE__ */ jsxRuntime.jsx(
32997
33061
  Dropdown,
32998
33062
  {
@@ -33019,7 +33083,9 @@ var TopNav = ({
33019
33083
  items = [],
33020
33084
  currentPath,
33021
33085
  navigate,
33022
- components
33086
+ components,
33087
+ classNames: classNames73,
33088
+ className
33023
33089
  }) => {
33024
33090
  const pathname = currentPath ?? (typeof window !== "undefined" ? window.location.pathname : "");
33025
33091
  const resolved = {
@@ -33039,7 +33105,9 @@ var TopNav = ({
33039
33105
  {
33040
33106
  icon: node2.icon,
33041
33107
  name: node2.name,
33108
+ badge: node2.badge,
33042
33109
  selected,
33110
+ className: node2.className,
33043
33111
  onClick: () => handleNavigate(node2.to)
33044
33112
  },
33045
33113
  node2.key || index3
@@ -33057,6 +33125,7 @@ var TopNav = ({
33057
33125
  navigate,
33058
33126
  columns: node2.columns,
33059
33127
  components,
33128
+ className: node2.className,
33060
33129
  selected
33061
33130
  },
33062
33131
  node2.key || index3
@@ -33064,7 +33133,13 @@ var TopNav = ({
33064
33133
  }
33065
33134
  return null;
33066
33135
  };
33067
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center", children: items.map(renderNode) });
33136
+ return /* @__PURE__ */ jsxRuntime.jsx(
33137
+ TNThemeProvider,
33138
+ {
33139
+ value: { components: components || {}, classNames: classNames73 || {} },
33140
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", classNames73?.root, className), children: items.map(renderNode) })
33141
+ }
33142
+ );
33068
33143
  };
33069
33144
  function ReviewForm({
33070
33145
  initialValues,
@@ -59312,10 +59387,13 @@ exports.StarRatingInput = StarRatingInput_default;
59312
59387
  exports.StatPlot = StatPlot;
59313
59388
  exports.StaticChartDataSource = StaticChartDataSource;
59314
59389
  exports.Switch = Switch_default;
59390
+ exports.TNContext = TNContext;
59315
59391
  exports.TNDropdown = TNDropdown;
59392
+ exports.TNDropdownGroup = TNDropdownGroup;
59316
59393
  exports.TNDropdownItem = TNDropdownItem;
59317
59394
  exports.TNDropdownTitle = TNDropdownTitle;
59318
59395
  exports.TNGroup = TNGroup;
59396
+ exports.TNItem = TNItem;
59319
59397
  exports.Table = Table;
59320
59398
  exports.TableBody = TableBody;
59321
59399
  exports.TableCell = TableCell;
@@ -59475,6 +59553,8 @@ exports.usePageTracking = usePageTracking;
59475
59553
  exports.useResolvedChartState = useResolvedChartState;
59476
59554
  exports.useReviewThreadState = useReviewThreadState;
59477
59555
  exports.useSessionTracking = useSessionTracking;
59556
+ exports.useTNSlot = useTNSlot;
59557
+ exports.useTNTheme = useTNTheme;
59478
59558
  exports.useTheme = useTheme_default;
59479
59559
  exports.writeAnalyticsQueueStorage = writeAnalyticsQueueStorage;
59480
59560
  exports.writeConsentStorage = writeConsentStorage;