elseware-ui 3.0.11 → 3.0.13

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.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import React26, { createContext, forwardRef, useState, useImperativeHandle, useEffect, useRef, useMemo, useContext, useCallback, Children, useId, createElement, isValidElement } from 'react';
1
+ import React26, { createContext, forwardRef, useRef, useState, useImperativeHandle, useEffect, useMemo, useContext, useCallback, Children, useId, createElement, isValidElement } from 'react';
2
2
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
3
  import { twMerge } from 'tailwind-merge';
4
4
  import { AiOutlineLoading } from 'react-icons/ai/index.js';
@@ -5586,6 +5586,11 @@ var isMatch = (itemPath, currentPath) => {
5586
5586
  };
5587
5587
 
5588
5588
  // src/utils/styles.ts
5589
+ function extractTextColorClasses(className) {
5590
+ return className.split(/\s+/).filter(
5591
+ (token) => token.startsWith("text-") || token.startsWith("dark:text-") || token.startsWith("disabled:text-")
5592
+ ).join(" ");
5593
+ }
5589
5594
  function resolveAppearanceStyles({
5590
5595
  appearance = "solid",
5591
5596
  variant = "default",
@@ -6239,14 +6244,6 @@ var toastShapeStyles = {
6239
6244
  };
6240
6245
 
6241
6246
  // src/components/data-entry/button/base/Button.styles.ts
6242
- var buttonShapes = shapes;
6243
- var buttonIconSizes = {
6244
- xs: 14,
6245
- sm: 16,
6246
- md: 18,
6247
- lg: 20,
6248
- xl: 22
6249
- };
6250
6247
  function resolveButtonVariantStyles({
6251
6248
  appearance,
6252
6249
  variant
@@ -6260,108 +6257,171 @@ function resolveButtonVariantStyles({
6260
6257
  });
6261
6258
  }
6262
6259
 
6263
- // src/components/data-entry/button/web/Button.web.styles.ts
6264
- var webButtonSizes = {
6265
- xs: "px-2 py-1 text-xs",
6266
- sm: "px-3 py-1.5 text-sm",
6267
- md: "px-4 py-2 text-base",
6268
- lg: "px-5 py-3 text-lg",
6269
- xl: "px-6 py-4 text-xl"
6260
+ // src/components/data-entry/button/base/Button.tokens.ts
6261
+ var buttonSizeTokens = {
6262
+ xs: {
6263
+ padding: "px-2 py-1",
6264
+ text: "text-xs",
6265
+ icon: 14,
6266
+ minHeight: "min-h-[30px]",
6267
+ leading: "leading-[14px]",
6268
+ slot: "h-[14px] w-[14px]"
6269
+ },
6270
+ sm: {
6271
+ padding: "px-3 py-1.5",
6272
+ text: "text-sm",
6273
+ icon: 16,
6274
+ minHeight: "min-h-9",
6275
+ leading: "leading-4",
6276
+ slot: "h-4 w-4"
6277
+ },
6278
+ md: {
6279
+ padding: "px-4 py-2",
6280
+ text: "text-base",
6281
+ icon: 18,
6282
+ minHeight: "min-h-11",
6283
+ leading: "leading-[18px]",
6284
+ slot: "h-[18px] w-[18px]"
6285
+ },
6286
+ lg: {
6287
+ padding: "px-5 py-3",
6288
+ text: "text-lg",
6289
+ icon: 20,
6290
+ minHeight: "min-h-[50px]",
6291
+ leading: "leading-5",
6292
+ slot: "h-5 w-5"
6293
+ },
6294
+ xl: {
6295
+ padding: "px-6 py-4",
6296
+ text: "text-xl",
6297
+ icon: 22,
6298
+ minHeight: "min-h-14",
6299
+ leading: "leading-[22px]",
6300
+ slot: "h-[22px] w-[22px]"
6301
+ }
6270
6302
  };
6271
- function Button({
6272
- type: type2 = "button",
6273
- icon,
6274
- text: text10,
6275
- children: children3,
6276
- loading = false,
6277
- disabled = false,
6278
- block = false,
6279
- compact = false,
6280
- glow = true,
6281
- mode,
6282
- contentClassName,
6283
- labelClassName,
6284
- variant,
6285
- appearance,
6286
- shape,
6287
- size,
6288
- accessibilityLabel,
6289
- accessibilityRole,
6290
- accessibilityState,
6291
- testID,
6292
- className,
6293
- onMouseMove,
6294
- onClick,
6295
- onPress,
6296
- ...rest
6297
- }) {
6298
- const accessibility = accessibilityState;
6303
+ var buttonShapes = shapes;
6304
+ var buttonTextModeClassName = "border-transparent bg-transparent";
6305
+
6306
+ // src/components/data-entry/button/base/useButton.ts
6307
+ function useButton(props) {
6299
6308
  const {
6300
- shape: resolvedShape,
6301
- size: resolvedSize,
6302
- variant: resolvedVariant,
6303
- appearance: resolvedAppearance
6304
- } = useResolvedButtonConfig({
6305
- compact,
6309
+ // Consumed by the shared model
6310
+ icon,
6311
+ text: text10,
6312
+ children: children3,
6313
+ loading = false,
6314
+ disabled = false,
6315
+ block = false,
6316
+ compact = false,
6306
6317
  mode,
6307
6318
  variant,
6308
6319
  appearance,
6309
6320
  shape,
6310
- size
6311
- });
6312
- const btnRef = useRef(null);
6313
- const variantStyles = resolveButtonVariantStyles({
6321
+ size,
6322
+ accessibilityState,
6323
+ onPress,
6324
+ // Owned by the platform views — pulled out here only so `rootRest` is a
6325
+ // clean pass-through (no library props leak onto the DOM / native root).
6326
+ type: _type,
6327
+ glow: _glow,
6328
+ className: _className,
6329
+ contentClassName: _contentClassName,
6330
+ labelClassName: _labelClassName,
6331
+ accessibilityLabel: _accessibilityLabel,
6332
+ accessibilityRole: _accessibilityRole,
6333
+ testID: _testID,
6334
+ onClick: _onClick,
6335
+ onMouseMove: _onMouseMove,
6336
+ ...rootRest
6337
+ } = props;
6338
+ const { shape: resolvedShape, size: resolvedSize, variant: resolvedVariant, appearance: resolvedAppearance } = useResolvedButtonConfig({ compact, mode, variant, appearance, shape, size });
6339
+ const tokens = buttonSizeTokens[resolvedSize];
6340
+ const variantClassName = resolveButtonVariantStyles({
6314
6341
  appearance: resolvedAppearance,
6315
6342
  variant: resolvedVariant
6316
6343
  });
6317
- const iconSize = buttonIconSizes[resolvedSize];
6318
- const labelContent = text10 || children3;
6319
- const resolvedIcon = typeof icon === "function" ? icon({
6320
- color: "currentColor",
6321
- size: iconSize
6322
- }) : icon;
6344
+ const label = text10 ?? children3;
6345
+ const resolvedIcon = typeof icon === "function" ? icon({ color: "currentColor", size: tokens.icon }) : icon;
6346
+ const isBusy = disabled || loading;
6347
+ return {
6348
+ size: resolvedSize,
6349
+ shape: resolvedShape,
6350
+ tokens,
6351
+ isBusy,
6352
+ isInteractive: !isBusy,
6353
+ isTextMode: mode === "text",
6354
+ block,
6355
+ loading,
6356
+ iconSize: tokens.icon,
6357
+ icon: resolvedIcon,
6358
+ label,
6359
+ hasTextLabel: typeof label === "string" || typeof label === "number",
6360
+ variantClassName,
6361
+ shapeClassName: buttonShapes[resolvedShape],
6362
+ labelColorClassName: extractTextColorClasses(variantClassName),
6363
+ selected: accessibilityState?.selected,
6364
+ onPress,
6365
+ rootRest
6366
+ };
6367
+ }
6368
+ var WEB_ROOT = "relative overflow-hidden group inline-flex items-center justify-center gap-2 transition-all duration-300";
6369
+ var Button = forwardRef(function Button2(props, ref) {
6370
+ const {
6371
+ type: type2 = "button",
6372
+ glow = true,
6373
+ className,
6374
+ contentClassName,
6375
+ labelClassName,
6376
+ accessibilityLabel,
6377
+ accessibilityRole,
6378
+ testID,
6379
+ onClick,
6380
+ onMouseMove
6381
+ } = props;
6382
+ const model = useButton(props);
6383
+ const localRef = useRef(null);
6384
+ const setRef = (node2) => {
6385
+ localRef.current = node2;
6386
+ if (typeof ref === "function") ref(node2);
6387
+ else if (ref) ref.current = node2;
6388
+ };
6323
6389
  const handleMouseMove = (e) => {
6324
- const btn = btnRef.current;
6325
- if (!btn || !glow) {
6326
- onMouseMove?.(e);
6327
- return;
6390
+ const btn = localRef.current;
6391
+ if (btn && glow) {
6392
+ const rect = btn.getBoundingClientRect();
6393
+ btn.style.setProperty("--glow-x", `${e.clientX - rect.left}px`);
6394
+ btn.style.setProperty("--glow-y", `${e.clientY - rect.top}px`);
6328
6395
  }
6329
- const rect = btn.getBoundingClientRect();
6330
- const x3 = e.clientX - rect.left;
6331
- const y3 = e.clientY - rect.top;
6332
- btn.style.setProperty("--glow-x", `${x3}px`);
6333
- btn.style.setProperty("--glow-y", `${y3}px`);
6334
6396
  onMouseMove?.(e);
6335
6397
  };
6336
6398
  const handleClick = (e) => {
6337
6399
  onClick?.(e);
6338
- if (!e.defaultPrevented) {
6339
- onPress?.();
6340
- }
6400
+ if (!e.defaultPrevented) model.onPress?.();
6341
6401
  };
6342
6402
  return /* @__PURE__ */ jsxs(
6343
6403
  "button",
6344
6404
  {
6345
- ...rest,
6346
- ref: btnRef,
6405
+ ...model.rootRest,
6406
+ ref: setRef,
6347
6407
  type: type2,
6348
- disabled: disabled || loading,
6408
+ disabled: model.isBusy,
6349
6409
  onClick: handleClick,
6350
6410
  onMouseMove: handleMouseMove,
6351
- "aria-disabled": disabled || loading,
6411
+ "aria-disabled": model.isBusy,
6352
6412
  "aria-label": accessibilityLabel,
6353
- "aria-pressed": accessibility?.selected === void 0 ? void 0 : Boolean(accessibility.selected),
6413
+ "aria-pressed": model.selected,
6354
6414
  "data-testid": testID,
6355
6415
  role: accessibilityRole,
6356
6416
  className: cn(
6357
- "relative overflow-hidden group inline-flex items-center justify-center gap-2 transition-all duration-300",
6358
- variantStyles,
6359
- buttonShapes[resolvedShape],
6360
- webButtonSizes[resolvedSize],
6361
- block && "w-full",
6362
- mode === "text" && "border-transparent bg-transparent",
6363
- (loading || disabled) && "brightness-75 grayscale cursor-not-allowed",
6364
- !loading && !disabled && "hover:cursor-pointer",
6417
+ WEB_ROOT,
6418
+ model.variantClassName,
6419
+ model.shapeClassName,
6420
+ model.tokens.padding,
6421
+ model.tokens.text,
6422
+ model.block && "w-full",
6423
+ model.isTextMode && buttonTextModeClassName,
6424
+ model.isBusy ? "brightness-75 grayscale cursor-not-allowed" : "hover:cursor-pointer",
6365
6425
  className
6366
6426
  ),
6367
6427
  children: [
@@ -6370,49 +6430,37 @@ function Button({
6370
6430
  {
6371
6431
  className: "pointer-events-none absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-300",
6372
6432
  style: {
6373
- background: `
6374
- radial-gradient(
6375
- 200px circle at var(--glow-x) var(--glow-y),
6376
- rgba(255,255,255,0.18),
6377
- transparent 50%
6378
- )
6379
- `
6433
+ background: "radial-gradient(200px circle at var(--glow-x) var(--glow-y), rgba(255,255,255,0.18), transparent 50%)"
6380
6434
  }
6381
6435
  }
6382
6436
  ),
6383
- loading && /* @__PURE__ */ jsx(AiOutlineLoading, { className: "animate-spin z-10" }),
6384
- resolvedIcon && /* @__PURE__ */ jsx(
6437
+ model.loading && /* @__PURE__ */ jsx(AiOutlineLoading, { className: "animate-spin z-10" }),
6438
+ model.icon && /* @__PURE__ */ jsx(
6385
6439
  "span",
6386
6440
  {
6387
6441
  className: cn(
6388
6442
  "z-10 inline-flex shrink-0 items-center justify-center leading-none",
6389
6443
  contentClassName
6390
6444
  ),
6391
- style: {
6392
- height: iconSize,
6393
- lineHeight: 0,
6394
- width: iconSize
6395
- },
6396
- children: resolvedIcon
6445
+ style: { height: model.iconSize, width: model.iconSize, lineHeight: 0 },
6446
+ children: model.icon
6397
6447
  }
6398
6448
  ),
6399
- labelContent && /* @__PURE__ */ jsx(
6449
+ model.label != null && model.label !== "" && /* @__PURE__ */ jsx(
6400
6450
  "span",
6401
6451
  {
6402
6452
  className: cn(
6403
6453
  "z-10 inline-flex items-center justify-center leading-none",
6404
6454
  labelClassName
6405
6455
  ),
6406
- style: {
6407
- minHeight: iconSize
6408
- },
6409
- children: labelContent
6456
+ style: { minHeight: model.iconSize },
6457
+ children: model.label
6410
6458
  }
6411
6459
  )
6412
6460
  ]
6413
6461
  }
6414
6462
  );
6415
- }
6463
+ });
6416
6464
  var Button_web_default = Button;
6417
6465
 
6418
6466
  // src/data/styles/shared.styles.tsx
@@ -31440,7 +31488,7 @@ var GlowWrapper = ({
31440
31488
  /* @__PURE__ */ jsx(
31441
31489
  "span",
31442
31490
  {
31443
- className: "\n pointer-events-none absolute inset-0 opacity-0 \n group-hover:opacity-100 transition-opacity duration-300\n ",
31491
+ className: "\r\n pointer-events-none absolute inset-0 opacity-0 \r\n group-hover:opacity-100 transition-opacity duration-300\r\n ",
31444
31492
  style: { background: "var(--glow-bg)" }
31445
31493
  }
31446
31494
  ),
@@ -32792,7 +32840,16 @@ function Sidebar({
32792
32840
  ) }) });
32793
32841
  }
32794
32842
  var Sidebar_default = Sidebar;
32843
+ var TNThemeContext = createContext({
32844
+ components: {},
32845
+ classNames: {}
32846
+ });
32847
+ var TNThemeProvider = TNThemeContext.Provider;
32848
+ var useTNTheme = () => useContext(TNThemeContext);
32849
+ var useTNSlot = (slot) => useContext(TNThemeContext).classNames?.[slot];
32795
32850
  var TNContext = ({ icon, name: name2, badge }) => {
32851
+ const iconSlot = useTNSlot("icon");
32852
+ const labelSlot = useTNSlot("label");
32796
32853
  return /* @__PURE__ */ jsxs(Fragment, { children: [
32797
32854
  icon && /* @__PURE__ */ jsx(
32798
32855
  "div",
@@ -32800,7 +32857,8 @@ var TNContext = ({ icon, name: name2, badge }) => {
32800
32857
  className: cn(
32801
32858
  "text-base text-gray-500 dark:text-gray-400",
32802
32859
  "transition-colors duration-200",
32803
- "group-hover:text-eui-secondary-700"
32860
+ "group-hover:text-eui-secondary-700",
32861
+ iconSlot
32804
32862
  ),
32805
32863
  children: icon
32806
32864
  }
@@ -32811,7 +32869,8 @@ var TNContext = ({ icon, name: name2, badge }) => {
32811
32869
  className: cn(
32812
32870
  "flex-1",
32813
32871
  "transition-colors duration-200",
32814
- "group-hover:text-eui-secondary-700"
32872
+ "group-hover:text-eui-secondary-700",
32873
+ labelSlot
32815
32874
  ),
32816
32875
  children: name2
32817
32876
  }
@@ -32828,6 +32887,8 @@ var TNItem = ({
32828
32887
  className,
32829
32888
  ...rest
32830
32889
  }) => {
32890
+ const itemSlot = useTNSlot("item");
32891
+ const selectedSlot = useTNSlot("itemSelected");
32831
32892
  return /* @__PURE__ */ jsx(
32832
32893
  "button",
32833
32894
  {
@@ -32839,7 +32900,9 @@ var TNItem = ({
32839
32900
  "transition-all duration-200",
32840
32901
  "text-gray-400",
32841
32902
  "hover:bg-gray-300/10",
32903
+ itemSlot,
32842
32904
  selected && "bg-gray-300/10",
32905
+ selected && selectedSlot,
32843
32906
  className
32844
32907
  ),
32845
32908
  children: /* @__PURE__ */ jsx(TNContext, { icon, name: name2, badge })
@@ -32855,6 +32918,7 @@ var TNDropdownItem = ({
32855
32918
  onClick,
32856
32919
  className
32857
32920
  }) => {
32921
+ const dropdownItemSlot = useTNSlot("dropdownItem");
32858
32922
  const handle2 = (e) => {
32859
32923
  if (to) {
32860
32924
  navigate ? navigate(to) : window.location.href = to;
@@ -32873,6 +32937,7 @@ var TNDropdownItem = ({
32873
32937
  "hover:bg-gray-100 dark:hover:bg-gray-700/50",
32874
32938
  "hover:text-gray-900 dark:hover:text-gray-300",
32875
32939
  "transition-colors duration-200",
32940
+ dropdownItemSlot,
32876
32941
  className
32877
32942
  ),
32878
32943
  children: /* @__PURE__ */ jsx(TNContext, { icon, name: name2, badge })
@@ -32880,12 +32945,14 @@ var TNDropdownItem = ({
32880
32945
  );
32881
32946
  };
32882
32947
  var TNDropdownTitle = ({ name: name2, className }) => {
32948
+ const dropdownTitleSlot = useTNSlot("dropdownTitle");
32883
32949
  return /* @__PURE__ */ jsx(
32884
32950
  "div",
32885
32951
  {
32886
32952
  className: cn(
32887
32953
  "px-3 py-4 text-xs font-semibold uppercase tracking-wide",
32888
32954
  "text-gray-500 dark:text-gray-600",
32955
+ dropdownTitleSlot,
32889
32956
  className
32890
32957
  ),
32891
32958
  children: name2
@@ -32898,9 +32965,14 @@ var TNDropdownGroup = ({
32898
32965
  badge,
32899
32966
  items,
32900
32967
  navigate,
32968
+ components,
32901
32969
  className
32902
32970
  }) => {
32903
32971
  const [open, setOpen] = useState(true);
32972
+ const dropdownGroupSlot = useTNSlot("dropdownGroup");
32973
+ const Item = components?.dropdownItem || TNDropdownItem;
32974
+ const Group = components?.dropdownGroup || TNDropdownGroup;
32975
+ const Title = components?.dropdownTitle || TNDropdownTitle;
32904
32976
  return /* @__PURE__ */ jsxs("div", { children: [
32905
32977
  /* @__PURE__ */ jsxs(
32906
32978
  "div",
@@ -32915,6 +32987,7 @@ var TNDropdownGroup = ({
32915
32987
  "dark:from-green-900/30 dark:to-transparent",
32916
32988
  "hover:from-gray-200 dark:hover:from-green-900/50",
32917
32989
  "transition-all duration-200",
32990
+ dropdownGroupSlot,
32918
32991
  className
32919
32992
  ),
32920
32993
  children: [
@@ -32933,12 +33006,20 @@ var TNDropdownGroup = ({
32933
33006
  ),
32934
33007
  open && /* @__PURE__ */ jsx("div", { className: "ml-2 border-l border-gray-200 dark:border-gray-700 pl-1", children: items.map((item, i) => {
32935
33008
  if (item.type === "title") {
32936
- return /* @__PURE__ */ jsx(TNDropdownTitle, { ...item }, i);
33009
+ return /* @__PURE__ */ jsx(Title, { ...item }, i);
32937
33010
  }
32938
33011
  if (item.type === "group") {
32939
- return /* @__PURE__ */ jsx(TNDropdownGroup, { ...item, navigate }, i);
33012
+ return /* @__PURE__ */ jsx(
33013
+ Group,
33014
+ {
33015
+ ...item,
33016
+ navigate,
33017
+ components
33018
+ },
33019
+ i
33020
+ );
32940
33021
  }
32941
- return /* @__PURE__ */ jsx(TNDropdownItem, { ...item, navigate }, i);
33022
+ return /* @__PURE__ */ jsx(Item, { ...item, navigate }, i);
32942
33023
  }) })
32943
33024
  ] });
32944
33025
  };
@@ -32950,6 +33031,7 @@ var TNDropdown = ({
32950
33031
  const Item = components?.dropdownItem || TNDropdownItem;
32951
33032
  const Group = components?.dropdownGroup || TNDropdownGroup;
32952
33033
  const Title = components?.dropdownTitle || TNDropdownTitle;
33034
+ const dropdownSlot = useTNSlot("dropdown");
32953
33035
  return /* @__PURE__ */ jsx(
32954
33036
  "div",
32955
33037
  {
@@ -32961,7 +33043,8 @@ var TNDropdown = ({
32961
33043
  "min-w-[260px]",
32962
33044
  "w-max",
32963
33045
  "max-w-[90vw]",
32964
- "overflow-auto"
33046
+ "overflow-auto",
33047
+ dropdownSlot
32965
33048
  ),
32966
33049
  children: /* @__PURE__ */ jsx("div", { className: "py-0", children: items.map((item, i) => {
32967
33050
  if (item.type === "title") return /* @__PURE__ */ jsx(Title, { ...item }, i);
@@ -32987,10 +33070,12 @@ var TNGroup = ({
32987
33070
  navigate,
32988
33071
  columns,
32989
33072
  components,
32990
- selected
33073
+ selected,
33074
+ className
32991
33075
  }) => {
32992
33076
  const [open, setOpen] = useState(false);
32993
33077
  const timeoutRef = useRef(null);
33078
+ const groupSlot = useTNSlot("group");
32994
33079
  const handleEnter = () => {
32995
33080
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
32996
33081
  setOpen(true);
@@ -33000,15 +33085,16 @@ var TNGroup = ({
33000
33085
  setOpen(false);
33001
33086
  }, 150);
33002
33087
  };
33088
+ const Trigger = components?.item || TNItem;
33003
33089
  const Dropdown = components?.dropdown || TNDropdown;
33004
33090
  return /* @__PURE__ */ jsxs(
33005
33091
  "div",
33006
33092
  {
33007
- className: "relative flex items-center",
33093
+ className: cn("relative flex items-center", groupSlot, className),
33008
33094
  onMouseEnter: handleEnter,
33009
33095
  onMouseLeave: handleLeave,
33010
33096
  children: [
33011
- /* @__PURE__ */ jsx(TNItem, { icon, name: name2, selected: selected || open }),
33097
+ /* @__PURE__ */ jsx(Trigger, { icon, name: name2, selected: selected || open }),
33012
33098
  /* @__PURE__ */ jsx("div", { className: "absolute top-full left-0 -mt-[1px]", children: open && /* @__PURE__ */ jsx(
33013
33099
  Dropdown,
33014
33100
  {
@@ -33035,7 +33121,9 @@ var TopNav = ({
33035
33121
  items = [],
33036
33122
  currentPath,
33037
33123
  navigate,
33038
- components
33124
+ components,
33125
+ classNames: classNames73,
33126
+ className
33039
33127
  }) => {
33040
33128
  const pathname = currentPath ?? (typeof window !== "undefined" ? window.location.pathname : "");
33041
33129
  const resolved = {
@@ -33055,7 +33143,9 @@ var TopNav = ({
33055
33143
  {
33056
33144
  icon: node2.icon,
33057
33145
  name: node2.name,
33146
+ badge: node2.badge,
33058
33147
  selected,
33148
+ className: node2.className,
33059
33149
  onClick: () => handleNavigate(node2.to)
33060
33150
  },
33061
33151
  node2.key || index3
@@ -33073,6 +33163,7 @@ var TopNav = ({
33073
33163
  navigate,
33074
33164
  columns: node2.columns,
33075
33165
  components,
33166
+ className: node2.className,
33076
33167
  selected
33077
33168
  },
33078
33169
  node2.key || index3
@@ -33080,7 +33171,13 @@ var TopNav = ({
33080
33171
  }
33081
33172
  return null;
33082
33173
  };
33083
- return /* @__PURE__ */ jsx("div", { className: "flex items-center", children: items.map(renderNode) });
33174
+ return /* @__PURE__ */ jsx(
33175
+ TNThemeProvider,
33176
+ {
33177
+ value: { components: components || {}, classNames: classNames73 || {} },
33178
+ children: /* @__PURE__ */ jsx("div", { className: cn("flex items-center", classNames73?.root, className), children: items.map(renderNode) })
33179
+ }
33180
+ );
33084
33181
  };
33085
33182
  function ReviewForm({
33086
33183
  initialValues,
@@ -59101,6 +59198,6 @@ function ScrollToTop({
59101
59198
  }
59102
59199
  var ScrollToTop_default = ScrollToTop;
59103
59200
 
59104
- export { Accordion_default as Accordion, AnalyticsContext, AnalyticsProvider, AreaPlot, AsyncComponentWrapper_default as AsyncComponentWrapper, Avatar, Backdrop_default as Backdrop, Badge, BarPlot, BaseChartDataSource, Block_default as Block, BlockGroup_default as BlockGroup, BoxNav_default as BoxNav, BoxNavItem_default as BoxNavItem, Brand, Breadcrumb, BreadcrumbItem_default as BreadcrumbItem, Button_web_default as Button, CHART_COLOR_PALETTE, CHART_DARK_THEME, CHART_DATA_MODES, CHART_DEFAULT_ACTIVE_DOT_RADIUS, CHART_DEFAULT_ANIMATION_DURATION, CHART_DEFAULT_BAR_RADIUS, CHART_DEFAULT_HEIGHT, CHART_DEFAULT_HORIZONTAL_BAR_RADIUS, CHART_DEFAULT_MARGIN, CHART_DEFAULT_MAX_REALTIME_POINTS, CHART_DEFAULT_POLLING_INTERVAL, CHART_DEFAULT_STROKE_WIDTH, CHART_EMPTY_MESSAGE, CHART_ERROR_MESSAGE, CHART_LIGHT_THEME, CHART_LOADING_MESSAGE, CHART_STATUSES, CHART_STATUS_COLORS, CHART_VALUE_FORMATS, Caption, Card_default as Card, CardContent_default as CardContent, CardFooter_default as CardFooter, CardHeader_default as CardHeader, Chapter, Chart, ChartContainer, ChartContext, ChartEmptyState, ChartErrorState, ChartHeader, ChartLegend, ChartLoadingState, ChartPanel, ChartPlotFrame, ChartProvider, ChartToolbar, ChartTooltip, Checkbox, Chip, CloudinaryImage2 as CloudinaryImage, CloudinaryProvider, CloudinaryVideo, Code, CodeMirrorMarkdownEditor_default as CodeMirrorMarkdownEditor, CommentThread_default as CommentThread, ConfigBootstrap_default as ConfigBootstrap, Configurator, ConfiguratorError, Content, ContentArea_default as ContentArea, CookieBanner, CookiePreferencesModal, DEFAULT_ANALYTICS_CONFIG, DEFAULT_COOKIE_CATEGORIES, DEFAULT_REVIEW_THREAD_CONFIG, DataView2 as DataView, DataViewContent, DataViewFilterGroup, DataViewFooter, DataViewHeader, DataViewPageSize, DataViewPagination, DataViewProvider, DataViewSearch, DataViewSidebar, DataViewSort, DataViewTable_default as DataViewTable, DateSelector, DefaultLayout_default as DefaultLayout, Display, DocumentationPanel_default as DocumentationPanel, Drawer, DrawerToggler_default as DrawerToggler, EUIDevLayout_default as EUIDevLayout, EUIProvider, EUI_ANALYTICS_ANONYMOUS_ID_STORAGE_KEY, EUI_ANALYTICS_CONSENT_STORAGE_KEY, EUI_ANALYTICS_QUEUE_STORAGE_KEY, EnvErrorScreen_default as EnvErrorScreen, Flag, Flex, FlexCol_default as FlexCol, FlexRow_default as FlexRow, Footer, FooterNav_default as FooterNav, FooterNavGroup_default as FooterNavGroup, FooterNavItem, FooterNavItemContext, FooterNavItemTitle, Form, FormResponse, GaugePlot, GenericLayout_default as GenericLayout, GlowWrapper_default as GlowWrapper, Graph, GraphEdge, GraphNode, GraphRenderer, Grid_default as Grid, Header, HeaderNav_default as HeaderNav, HeaderNavGroup_default as HeaderNavGroup, HeaderNavItem, HeaderNavItemContext, HeaderNavItemTitle, HomeLayout_default as HomeLayout, Image2 as Image, ImageInput_web_default as ImageInput, ImageView, InfiniteScrollTrigger_default as InfiniteScrollTrigger, Info, Input, InputFile, InputLabel, InputList, InputListGroup, InputResponse, Label, Layout, Lead, LinePlot, Link, List, ListItem, ListItemElement, ListRoot, MDXMarkdownEditor_default as MDXMarkdownEditor, MDXMarkdownField_default as MDXMarkdownField, MarkdownBlockquote_default as MarkdownBlockquote, MarkdownBreak_default as MarkdownBreak, MarkdownCodeBlock_default as MarkdownCodeBlock, MarkdownContext, MarkdownDetails, MarkdownDocsLayout_default as MarkdownDocsLayout, MarkdownEditor_default as MarkdownEditor, MarkdownEmphasis_default as MarkdownEmphasis, MarkdownField_default as MarkdownField, MarkdownFigcaption, MarkdownFigure, MarkdownHeading_default as MarkdownHeadingComponent, MarkdownImage_default as MarkdownImage, MarkdownInlineCode_default as MarkdownInlineCode, MarkdownLayout_default as MarkdownLayout, MarkdownLink_default as MarkdownLink, MarkdownListItem_default as MarkdownListItem, MarkdownOrderedList, MarkdownParagraph_default as MarkdownParagraph, MarkdownPreviewPane_default as MarkdownPreviewPane, MarkdownProvider_default as MarkdownProvider, MarkdownRenderer_default as MarkdownRenderer, MarkdownSourceEditor_default as MarkdownSourceEditor, MarkdownSplitEditor_default as MarkdownSplitEditor, MarkdownStrikethrough_default as MarkdownStrikethrough, MarkdownStrong_default as MarkdownStrong, MarkdownSummary, MarkdownTOC_default as MarkdownTOC, MarkdownTOCItem_default as MarkdownTOCItem, MarkdownTable_default as MarkdownTable, MarkdownTableBody, MarkdownTableCell, MarkdownTableHead, MarkdownTableHeaderCell, MarkdownTableRow, MarkdownTaskCheckbox_default as MarkdownTaskCheckbox, MarkdownThematicBreak_default as MarkdownThematicBreak, MarkdownToolbar_default as MarkdownToolbar, MarkdownUnorderedList, MarkdownViewer_default as MarkdownViewer, Menu, MenuGroup, MenuItem, MenuItemTitle, Modal_default as Modal, MotionSurface_default as MotionSurface, MultiImageInput_web_default as MultiImageInput, NumericRating, Overline, Paragraph, PiePlot, PollingChartDataSource, PreviewSwitch, PriceTag, ProgressBar, ProgressBarRating, Quote, Radio_default as Radio, RealtimeChartDataSource, ReviewThread_default as ReviewThread, RouteTab_default as RouteTab, RouteTabs_default as RouteTabs, ScatterPlot, ScrollToTop_default as ScrollToTop, Section, Select, ShapeSwitch, ShowMore_default as ShowMore, Sidebar_default as Sidebar, SidebarLayout_default as SidebarLayout, SidemenuLayout_default as SidemenuLayout, Skeleton, Slider_default as Slider, Spinner, StarRating, StarRatingDistribution_default as StarRatingDistribution, StarRatingInput_default as StarRatingInput, StatPlot, StaticChartDataSource, Switch_default as Switch, TNDropdown, TNDropdownItem, TNDropdownTitle, TNGroup, Table, TableBody, TableCell, TableElement, TableFrame, TableHead, TableHeaderCell, TableRow, Tag, Tags, TextArea, ThemeContext, ThemeProvider, ThemeSelect, ThemeSwitch, TitleBanner, Toast, Tooltip6 as Tooltip, TopNav, Transition, TransitionAccordion_default as TransitionAccordion, TransitionBase_default as TransitionBase, TransitionDropdown_default as TransitionDropdown, TransitionFade_default as TransitionFade, TransitionFadeIn_default as TransitionFadeIn, TransitionScale_default as TransitionScale, TransitionSlide_default as TransitionSlide, Typography, UnderConstructionBanner, ValueBadge, WorldMap, WorldMapCountryTable, YoutubeVideo, YoutubeVideo as YoutubeVideoPlayer, addReplyToCache, addReviewReply, appendReview, applyReactionState, assertAbsoluteURL, buildURL, canDeleteReview, canDeleteReviewReply, canEditReview, canEditReviewReply, canReplyToReview, canReportReview, canReportReviewReply, clearAnalyticsQueueStorage, clearAnonymousIdStorage, clearConsentStorage, cn, createAnalyticsEvent, createAnalyticsId, createConfigurator, createDefaultConsent, createForceLayout, createGridLayout, createHeadingSlug, createTreeLayout, createURLResolver, decrementReplyCount, defaultFormatValue, defaultTiers, ensureAnonymousIdStorage, enumValues, euiToast, extractHeadings, findReview, formatChartLabel, formatChartValue, formatCommentDate, formatConfigError, formatReviewDate, generateHeadingNumbers, getAllowedOrigins, getBrowserHref, getBrowserOrigin, getBrowserRedirectURL, getConsentStatusFromCategories, getCurrencySymbol, getCurrentFullUrl, getCurrentPath, getCurrentReferrer, getCurrentTitle, getDeviceInfo, getDoNotTrackEnabled, getLayout, getNowISOString, getOptimisticDislikeState, getOptimisticLikeState, getSafeRedirect, getViewport, hasReviewReply, incrementReplyCount, isBrowser, isMatch, isRenderFn, limitRealtimePoints, normalize, normalizeChartData, normalizeChartDataPoint, normalizeMarkdown, normalizeReview, normalizeReviewAuthor, normalizeReviewReply, parseJson, parseJsonRecord, parseUrlMap, prependReview, readAnalyticsQueueStorage, readAnonymousIdStorage, readConsentStorage, registerLayout, removeComment, removeCommentTreeFromCache, removeReview, removeReviewReply, replaceRealtimePoints, replaceReview, replaceReviewReply, resolveAppearanceStyles, resolveChartColor, resolveChartColors, resolveWithGlobal, safeReadStorage, safeRemoveStorage, safeWriteStorage, sanitizeHeading, sendToast, slugify, toConfiguratorError, updateComment, updateReplyCacheComment, updateReview, updateReviewReply, upsertReview, useActiveHeading, useAnalytics, useChartContext, useChartData, useChartPolling, useChartRealtime, useChartSeries, useChartTheme, useClickOutside, useCloudinaryConfig, useCookieConsent, useCurrentTheme_default as useCurrentTheme, useDrawer_default as useDrawer, useEUIConfig, useEUIDevPreviewPlatform, useIsMobile_default as useIsMobile, useMarkdown, useMarkdownHeadings, useModal_default as useModal, usePageTracking, useResolvedChartState, useReviewThreadState, useSessionTracking, useTheme_default as useTheme, writeAnalyticsQueueStorage, writeConsentStorage };
59201
+ export { Accordion_default as Accordion, AnalyticsContext, AnalyticsProvider, AreaPlot, AsyncComponentWrapper_default as AsyncComponentWrapper, Avatar, Backdrop_default as Backdrop, Badge, BarPlot, BaseChartDataSource, Block_default as Block, BlockGroup_default as BlockGroup, BoxNav_default as BoxNav, BoxNavItem_default as BoxNavItem, Brand, Breadcrumb, BreadcrumbItem_default as BreadcrumbItem, Button_web_default as Button, CHART_COLOR_PALETTE, CHART_DARK_THEME, CHART_DATA_MODES, CHART_DEFAULT_ACTIVE_DOT_RADIUS, CHART_DEFAULT_ANIMATION_DURATION, CHART_DEFAULT_BAR_RADIUS, CHART_DEFAULT_HEIGHT, CHART_DEFAULT_HORIZONTAL_BAR_RADIUS, CHART_DEFAULT_MARGIN, CHART_DEFAULT_MAX_REALTIME_POINTS, CHART_DEFAULT_POLLING_INTERVAL, CHART_DEFAULT_STROKE_WIDTH, CHART_EMPTY_MESSAGE, CHART_ERROR_MESSAGE, CHART_LIGHT_THEME, CHART_LOADING_MESSAGE, CHART_STATUSES, CHART_STATUS_COLORS, CHART_VALUE_FORMATS, Caption, Card_default as Card, CardContent_default as CardContent, CardFooter_default as CardFooter, CardHeader_default as CardHeader, Chapter, Chart, ChartContainer, ChartContext, ChartEmptyState, ChartErrorState, ChartHeader, ChartLegend, ChartLoadingState, ChartPanel, ChartPlotFrame, ChartProvider, ChartToolbar, ChartTooltip, Checkbox, Chip, CloudinaryImage2 as CloudinaryImage, CloudinaryProvider, CloudinaryVideo, Code, CodeMirrorMarkdownEditor_default as CodeMirrorMarkdownEditor, CommentThread_default as CommentThread, ConfigBootstrap_default as ConfigBootstrap, Configurator, ConfiguratorError, Content, ContentArea_default as ContentArea, CookieBanner, CookiePreferencesModal, DEFAULT_ANALYTICS_CONFIG, DEFAULT_COOKIE_CATEGORIES, DEFAULT_REVIEW_THREAD_CONFIG, DataView2 as DataView, DataViewContent, DataViewFilterGroup, DataViewFooter, DataViewHeader, DataViewPageSize, DataViewPagination, DataViewProvider, DataViewSearch, DataViewSidebar, DataViewSort, DataViewTable_default as DataViewTable, DateSelector, DefaultLayout_default as DefaultLayout, Display, DocumentationPanel_default as DocumentationPanel, Drawer, DrawerToggler_default as DrawerToggler, EUIDevLayout_default as EUIDevLayout, EUIProvider, EUI_ANALYTICS_ANONYMOUS_ID_STORAGE_KEY, EUI_ANALYTICS_CONSENT_STORAGE_KEY, EUI_ANALYTICS_QUEUE_STORAGE_KEY, EnvErrorScreen_default as EnvErrorScreen, Flag, Flex, FlexCol_default as FlexCol, FlexRow_default as FlexRow, Footer, FooterNav_default as FooterNav, FooterNavGroup_default as FooterNavGroup, FooterNavItem, FooterNavItemContext, FooterNavItemTitle, Form, FormResponse, GaugePlot, GenericLayout_default as GenericLayout, GlowWrapper_default as GlowWrapper, Graph, GraphEdge, GraphNode, GraphRenderer, Grid_default as Grid, Header, HeaderNav_default as HeaderNav, HeaderNavGroup_default as HeaderNavGroup, HeaderNavItem, HeaderNavItemContext, HeaderNavItemTitle, HomeLayout_default as HomeLayout, Image2 as Image, ImageInput_web_default as ImageInput, ImageView, InfiniteScrollTrigger_default as InfiniteScrollTrigger, Info, Input, InputFile, InputLabel, InputList, InputListGroup, InputResponse, Label, Layout, Lead, LinePlot, Link, List, ListItem, ListItemElement, ListRoot, MDXMarkdownEditor_default as MDXMarkdownEditor, MDXMarkdownField_default as MDXMarkdownField, MarkdownBlockquote_default as MarkdownBlockquote, MarkdownBreak_default as MarkdownBreak, MarkdownCodeBlock_default as MarkdownCodeBlock, MarkdownContext, MarkdownDetails, MarkdownDocsLayout_default as MarkdownDocsLayout, MarkdownEditor_default as MarkdownEditor, MarkdownEmphasis_default as MarkdownEmphasis, MarkdownField_default as MarkdownField, MarkdownFigcaption, MarkdownFigure, MarkdownHeading_default as MarkdownHeadingComponent, MarkdownImage_default as MarkdownImage, MarkdownInlineCode_default as MarkdownInlineCode, MarkdownLayout_default as MarkdownLayout, MarkdownLink_default as MarkdownLink, MarkdownListItem_default as MarkdownListItem, MarkdownOrderedList, MarkdownParagraph_default as MarkdownParagraph, MarkdownPreviewPane_default as MarkdownPreviewPane, MarkdownProvider_default as MarkdownProvider, MarkdownRenderer_default as MarkdownRenderer, MarkdownSourceEditor_default as MarkdownSourceEditor, MarkdownSplitEditor_default as MarkdownSplitEditor, MarkdownStrikethrough_default as MarkdownStrikethrough, MarkdownStrong_default as MarkdownStrong, MarkdownSummary, MarkdownTOC_default as MarkdownTOC, MarkdownTOCItem_default as MarkdownTOCItem, MarkdownTable_default as MarkdownTable, MarkdownTableBody, MarkdownTableCell, MarkdownTableHead, MarkdownTableHeaderCell, MarkdownTableRow, MarkdownTaskCheckbox_default as MarkdownTaskCheckbox, MarkdownThematicBreak_default as MarkdownThematicBreak, MarkdownToolbar_default as MarkdownToolbar, MarkdownUnorderedList, MarkdownViewer_default as MarkdownViewer, Menu, MenuGroup, MenuItem, MenuItemTitle, Modal_default as Modal, MotionSurface_default as MotionSurface, MultiImageInput_web_default as MultiImageInput, NumericRating, Overline, Paragraph, PiePlot, PollingChartDataSource, PreviewSwitch, PriceTag, ProgressBar, ProgressBarRating, Quote, Radio_default as Radio, RealtimeChartDataSource, ReviewThread_default as ReviewThread, RouteTab_default as RouteTab, RouteTabs_default as RouteTabs, ScatterPlot, ScrollToTop_default as ScrollToTop, Section, Select, ShapeSwitch, ShowMore_default as ShowMore, Sidebar_default as Sidebar, SidebarLayout_default as SidebarLayout, SidemenuLayout_default as SidemenuLayout, Skeleton, Slider_default as Slider, Spinner, StarRating, StarRatingDistribution_default as StarRatingDistribution, StarRatingInput_default as StarRatingInput, StatPlot, StaticChartDataSource, Switch_default as Switch, TNContext, TNDropdown, TNDropdownGroup, TNDropdownItem, TNDropdownTitle, TNGroup, TNItem, Table, TableBody, TableCell, TableElement, TableFrame, TableHead, TableHeaderCell, TableRow, Tag, Tags, TextArea, ThemeContext, ThemeProvider, ThemeSelect, ThemeSwitch, TitleBanner, Toast, Tooltip6 as Tooltip, TopNav, Transition, TransitionAccordion_default as TransitionAccordion, TransitionBase_default as TransitionBase, TransitionDropdown_default as TransitionDropdown, TransitionFade_default as TransitionFade, TransitionFadeIn_default as TransitionFadeIn, TransitionScale_default as TransitionScale, TransitionSlide_default as TransitionSlide, Typography, UnderConstructionBanner, ValueBadge, WorldMap, WorldMapCountryTable, YoutubeVideo, YoutubeVideo as YoutubeVideoPlayer, addReplyToCache, addReviewReply, appendReview, applyReactionState, assertAbsoluteURL, buildURL, canDeleteReview, canDeleteReviewReply, canEditReview, canEditReviewReply, canReplyToReview, canReportReview, canReportReviewReply, clearAnalyticsQueueStorage, clearAnonymousIdStorage, clearConsentStorage, cn, createAnalyticsEvent, createAnalyticsId, createConfigurator, createDefaultConsent, createForceLayout, createGridLayout, createHeadingSlug, createTreeLayout, createURLResolver, decrementReplyCount, defaultFormatValue, defaultTiers, ensureAnonymousIdStorage, enumValues, euiToast, extractHeadings, extractTextColorClasses, findReview, formatChartLabel, formatChartValue, formatCommentDate, formatConfigError, formatReviewDate, generateHeadingNumbers, getAllowedOrigins, getBrowserHref, getBrowserOrigin, getBrowserRedirectURL, getConsentStatusFromCategories, getCurrencySymbol, getCurrentFullUrl, getCurrentPath, getCurrentReferrer, getCurrentTitle, getDeviceInfo, getDoNotTrackEnabled, getLayout, getNowISOString, getOptimisticDislikeState, getOptimisticLikeState, getSafeRedirect, getViewport, hasReviewReply, incrementReplyCount, isBrowser, isMatch, isRenderFn, limitRealtimePoints, normalize, normalizeChartData, normalizeChartDataPoint, normalizeMarkdown, normalizeReview, normalizeReviewAuthor, normalizeReviewReply, parseJson, parseJsonRecord, parseUrlMap, prependReview, readAnalyticsQueueStorage, readAnonymousIdStorage, readConsentStorage, registerLayout, removeComment, removeCommentTreeFromCache, removeReview, removeReviewReply, replaceRealtimePoints, replaceReview, replaceReviewReply, resolveAppearanceStyles, resolveChartColor, resolveChartColors, resolveWithGlobal, safeReadStorage, safeRemoveStorage, safeWriteStorage, sanitizeHeading, sendToast, slugify, toConfiguratorError, updateComment, updateReplyCacheComment, updateReview, updateReviewReply, upsertReview, useActiveHeading, useAnalytics, useChartContext, useChartData, useChartPolling, useChartRealtime, useChartSeries, useChartTheme, useClickOutside, useCloudinaryConfig, useCookieConsent, useCurrentTheme_default as useCurrentTheme, useDrawer_default as useDrawer, useEUIConfig, useEUIDevPreviewPlatform, useIsMobile_default as useIsMobile, useMarkdown, useMarkdownHeadings, useModal_default as useModal, usePageTracking, useResolvedChartState, useReviewThreadState, useSessionTracking, useTNSlot, useTNTheme, useTheme_default as useTheme, writeAnalyticsQueueStorage, writeConsentStorage };
59105
59202
  //# sourceMappingURL=index.mjs.map
59106
59203
  //# sourceMappingURL=index.mjs.map