@vuu-ui/vuu-ui-controls 0.8.23-debug → 0.8.24-debug

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/esm/index.js CHANGED
@@ -2536,9 +2536,9 @@ var getNonWrappedAndWrappedItems = (container, orientation = "horizontal") => {
2536
2536
  }
2537
2537
  return [nonWrappedItems, wrappedItems];
2538
2538
  };
2539
- var applyOverflowClassToWrappedItems = (container, overflowedItems, classBase24) => {
2539
+ var applyOverflowClassToWrappedItems = (container, overflowedItems, classBase26) => {
2540
2540
  let ignoreOverflow = false;
2541
- const className = classBase24 ? `${classBase24}-overflowed` : "overflow";
2541
+ const className = classBase26 ? `${classBase26}-overflowed` : "overflow";
2542
2542
  if (overflowedItems.find(({ index }) => index === "overflow")) {
2543
2543
  if (overflowedItems.length === 1) {
2544
2544
  ignoreOverflow = true;
@@ -10097,8 +10097,43 @@ var ExpandoInput = forwardRef20(function ExpandoInput2({
10097
10097
  );
10098
10098
  });
10099
10099
 
10100
+ // src/icon-button/Icon.tsx
10101
+ import cx15 from "clsx";
10102
+ import { jsx as jsx33 } from "react/jsx-runtime";
10103
+ var classBase13 = "vuuIcon";
10104
+ var Icon = ({
10105
+ className,
10106
+ name,
10107
+ size,
10108
+ style: styleProp,
10109
+ ...htmlAttributes
10110
+ }) => {
10111
+ const style = typeof size === "number" ? { ...styleProp, "--vuu-icon-size": `${size}px` } : styleProp;
10112
+ return /* @__PURE__ */ jsx33(
10113
+ "span",
10114
+ {
10115
+ ...htmlAttributes,
10116
+ className: cx15(classBase13, className),
10117
+ "data-icon": name,
10118
+ style
10119
+ }
10120
+ );
10121
+ };
10122
+
10123
+ // src/icon-button/IconButton.tsx
10124
+ import cx16 from "clsx";
10125
+ import { Button as Button5 } from "@salt-ds/core";
10126
+ import { forwardRef as forwardRef21 } from "react";
10127
+ import { jsx as jsx34 } from "react/jsx-runtime";
10128
+ var classBase14 = "vuuIconButton";
10129
+ var IconButton = forwardRef21(
10130
+ function IconButton2({ className, icon, ...buttonProps }, ref) {
10131
+ return /* @__PURE__ */ jsx34(Button5, { ...buttonProps, className: cx16(classBase14, className), ref, children: /* @__PURE__ */ jsx34(Icon, { name: icon }) });
10132
+ }
10133
+ );
10134
+
10100
10135
  // src/inputs/Checkbox.tsx
10101
- import { jsx as jsx33, jsxs as jsxs15 } from "react/jsx-runtime";
10136
+ import { jsx as jsx35, jsxs as jsxs15 } from "react/jsx-runtime";
10102
10137
  var Checkbox = (props) => {
10103
10138
  const { onToggle, checked, label } = props;
10104
10139
  return /* @__PURE__ */ jsxs15(
@@ -10108,7 +10143,7 @@ var Checkbox = (props) => {
10108
10143
  onClick: onToggle,
10109
10144
  onKeyUp: (e) => e.key === " " && onToggle(),
10110
10145
  children: [
10111
- /* @__PURE__ */ jsx33(CheckboxIcon, { tabIndex: 0, checked }),
10146
+ /* @__PURE__ */ jsx35(CheckboxIcon, { tabIndex: 0, checked }),
10112
10147
  label
10113
10148
  ]
10114
10149
  }
@@ -10116,13 +10151,13 @@ var Checkbox = (props) => {
10116
10151
  };
10117
10152
 
10118
10153
  // src/inputs/RadioButton.tsx
10119
- import { jsx as jsx34, jsxs as jsxs16 } from "react/jsx-runtime";
10154
+ import { jsx as jsx36, jsxs as jsxs16 } from "react/jsx-runtime";
10120
10155
  var RadioButton = (props) => {
10121
10156
  const { onClick, checked, label, groupName } = props;
10122
10157
  return /* @__PURE__ */ jsxs16("div", { className: "vuuRadioButton", onClick, children: [
10123
10158
  /* @__PURE__ */ jsxs16("div", { className: "radio", children: [
10124
- /* @__PURE__ */ jsx34("input", { type: "radio", name: groupName }),
10125
- /* @__PURE__ */ jsx34(RadioIcon, { checked })
10159
+ /* @__PURE__ */ jsx36("input", { type: "radio", name: groupName }),
10160
+ /* @__PURE__ */ jsx36(RadioIcon, { checked })
10126
10161
  ] }),
10127
10162
  label
10128
10163
  ] });
@@ -10132,12 +10167,12 @@ var RadioButton = (props) => {
10132
10167
  import { Table } from "@vuu-ui/vuu-table";
10133
10168
  import { useId as useId8 } from "@vuu-ui/vuu-utils";
10134
10169
  import { Input as Input4 } from "@salt-ds/core";
10135
- import { forwardRef as forwardRef21, useMemo as useMemo17 } from "react";
10170
+ import { forwardRef as forwardRef22, useMemo as useMemo17 } from "react";
10136
10171
 
10137
10172
  // src/instrument-picker/SearchCell.tsx
10138
10173
  import { registerComponent } from "@vuu-ui/vuu-utils";
10139
- import { jsx as jsx35, jsxs as jsxs17 } from "react/jsx-runtime";
10140
- var classBase13 = "vuuSearchCell";
10174
+ import { jsx as jsx37, jsxs as jsxs17 } from "react/jsx-runtime";
10175
+ var classBase15 = "vuuSearchCell";
10141
10176
  var SearchCell = ({
10142
10177
  column,
10143
10178
  columnMap,
@@ -10145,8 +10180,8 @@ var SearchCell = ({
10145
10180
  }) => {
10146
10181
  const key = columnMap[column.name];
10147
10182
  const value = row[key];
10148
- return /* @__PURE__ */ jsxs17("div", { className: classBase13, tabIndex: -1, children: [
10149
- /* @__PURE__ */ jsx35("span", { "data-icon": "draggable" }),
10183
+ return /* @__PURE__ */ jsxs17("div", { className: classBase15, tabIndex: -1, children: [
10184
+ /* @__PURE__ */ jsx37("span", { "data-icon": "draggable" }),
10150
10185
  value
10151
10186
  ] });
10152
10187
  };
@@ -10241,12 +10276,12 @@ var useInstrumentPicker = ({
10241
10276
  };
10242
10277
 
10243
10278
  // src/instrument-picker/InstrumentPicker.tsx
10244
- import { jsx as jsx36, jsxs as jsxs18 } from "react/jsx-runtime";
10245
- var classBase14 = "vuuInstrumentPicker";
10279
+ import { jsx as jsx38, jsxs as jsxs18 } from "react/jsx-runtime";
10280
+ var classBase16 = "vuuInstrumentPicker";
10246
10281
  if (typeof SearchCell !== "function") {
10247
10282
  console.warn("Instrument Picker: SearchCell module not loaded ");
10248
10283
  }
10249
- var InstrumentPicker = forwardRef21(function InstrumentPicker2({
10284
+ var InstrumentPicker = forwardRef22(function InstrumentPicker2({
10250
10285
  TableProps: { dataSource, ...TableProps3 },
10251
10286
  className,
10252
10287
  columnMap,
@@ -10278,7 +10313,7 @@ var InstrumentPicker = forwardRef21(function InstrumentPicker2({
10278
10313
  onSelect,
10279
10314
  searchColumns
10280
10315
  });
10281
- const endAdornment = useMemo17(() => /* @__PURE__ */ jsx36("span", { "data-icon": "chevron-down" }), []);
10316
+ const endAdornment = useMemo17(() => /* @__PURE__ */ jsx38("span", { "data-icon": "chevron-down" }), []);
10282
10317
  const tableProps = {
10283
10318
  ...TableProps3,
10284
10319
  config: {
@@ -10299,7 +10334,7 @@ var InstrumentPicker = forwardRef21(function InstrumentPicker2({
10299
10334
  ref: forwardedRef,
10300
10335
  width,
10301
10336
  children: [
10302
- /* @__PURE__ */ jsx36(
10337
+ /* @__PURE__ */ jsx38(
10303
10338
  Input4,
10304
10339
  {
10305
10340
  ...inputProps,
@@ -10308,14 +10343,14 @@ var InstrumentPicker = forwardRef21(function InstrumentPicker2({
10308
10343
  value
10309
10344
  }
10310
10345
  ),
10311
- /* @__PURE__ */ jsx36(
10346
+ /* @__PURE__ */ jsx38(
10312
10347
  Table,
10313
10348
  {
10314
10349
  rowHeight: 25,
10315
10350
  renderBufferSize: 100,
10316
10351
  ...tableProps,
10317
10352
  ...tableHandlers,
10318
- className: `${classBase14}-list`,
10353
+ className: `${classBase16}-list`,
10319
10354
  height: 200,
10320
10355
  highlightedIndex,
10321
10356
  dataSource,
@@ -10336,13 +10371,13 @@ import {
10336
10371
  useControlledTableNavigation as useControlledTableNavigation2
10337
10372
  } from "@vuu-ui/vuu-table";
10338
10373
  import { Input as Input5 } from "@salt-ds/core";
10339
- import cx15 from "clsx";
10374
+ import cx17 from "clsx";
10340
10375
  import { useCallback as useCallback47 } from "react";
10341
10376
 
10342
10377
  // src/instrument-search/SearchCell.tsx
10343
10378
  import { registerComponent as registerComponent2 } from "@vuu-ui/vuu-utils";
10344
- import { jsx as jsx37, jsxs as jsxs19 } from "react/jsx-runtime";
10345
- var classBase15 = "vuuSearchCell";
10379
+ import { jsx as jsx39, jsxs as jsxs19 } from "react/jsx-runtime";
10380
+ var classBase17 = "vuuSearchCell";
10346
10381
  var SearchCell2 = ({
10347
10382
  column,
10348
10383
  columnMap,
@@ -10350,8 +10385,8 @@ var SearchCell2 = ({
10350
10385
  }) => {
10351
10386
  const key = columnMap[column.name];
10352
10387
  const value = row[key];
10353
- return /* @__PURE__ */ jsxs19("div", { className: classBase15, tabIndex: -1, children: [
10354
- /* @__PURE__ */ jsx37("span", { "data-icon": "draggable" }),
10388
+ return /* @__PURE__ */ jsxs19("div", { className: classBase17, tabIndex: -1, children: [
10389
+ /* @__PURE__ */ jsx39("span", { "data-icon": "draggable" }),
10355
10390
  value
10356
10391
  ] });
10357
10392
  };
@@ -10395,8 +10430,8 @@ var useInstrumentSearch = ({
10395
10430
  };
10396
10431
 
10397
10432
  // src/instrument-search/InstrumentSearch.tsx
10398
- import { jsx as jsx38, jsxs as jsxs20 } from "react/jsx-runtime";
10399
- var classBase16 = "vuuInstrumentSearch";
10433
+ import { jsx as jsx40, jsxs as jsxs20 } from "react/jsx-runtime";
10434
+ var classBase18 = "vuuInstrumentSearch";
10400
10435
  if (typeof SearchCell2 !== "function") {
10401
10436
  console.warn("Instrument Search: SearchCell module not loaded ");
10402
10437
  }
@@ -10416,7 +10451,7 @@ var defaultTableConfig = {
10416
10451
  ],
10417
10452
  rowSeparators: true
10418
10453
  };
10419
- var searchIcon = /* @__PURE__ */ jsx38("span", { "data-icon": "search" });
10454
+ var searchIcon = /* @__PURE__ */ jsx40("span", { "data-icon": "search" });
10420
10455
  var InstrumentSearch = ({
10421
10456
  TableProps: TableProps3,
10422
10457
  autoFocus = false,
@@ -10438,8 +10473,8 @@ var InstrumentSearch = ({
10438
10473
  (_a3 = el == null ? void 0 : el.querySelector("input")) == null ? void 0 : _a3.focus();
10439
10474
  }, 100);
10440
10475
  }, []);
10441
- return /* @__PURE__ */ jsxs20("div", { ...htmlAttributes, className: cx15(classBase16, className), children: [
10442
- /* @__PURE__ */ jsx38("div", { className: `${classBase16}-inputField`, children: /* @__PURE__ */ jsx38(
10476
+ return /* @__PURE__ */ jsxs20("div", { ...htmlAttributes, className: cx17(classBase18, className), children: [
10477
+ /* @__PURE__ */ jsx40("div", { className: `${classBase18}-inputField`, children: /* @__PURE__ */ jsx40(
10443
10478
  Input5,
10444
10479
  {
10445
10480
  inputProps: { onKeyDown },
@@ -10450,7 +10485,7 @@ var InstrumentSearch = ({
10450
10485
  onChange
10451
10486
  }
10452
10487
  ) }),
10453
- dataSource ? /* @__PURE__ */ jsx38(
10488
+ dataSource ? /* @__PURE__ */ jsx40(
10454
10489
  Table2,
10455
10490
  {
10456
10491
  disableFocus: true,
@@ -10460,7 +10495,7 @@ var InstrumentSearch = ({
10460
10495
  highlightedIndex: highlightedIndexRef.current,
10461
10496
  renderBufferSize: 100,
10462
10497
  ...TableProps3,
10463
- className: `${classBase16}-list`,
10498
+ className: `${classBase18}-list`,
10464
10499
  dataSource,
10465
10500
  navigationStyle: "row",
10466
10501
  onHighlight,
@@ -10480,9 +10515,9 @@ import {
10480
10515
  numericFormatter
10481
10516
  } from "@vuu-ui/vuu-utils";
10482
10517
  import { memo, useMemo as useMemo19, useRef as useRef34 } from "react";
10483
- import cx16 from "clsx";
10484
- import { jsx as jsx39, jsxs as jsxs21 } from "react/jsx-runtime";
10485
- var classBase17 = "vuuPriceTicker";
10518
+ import cx18 from "clsx";
10519
+ import { jsx as jsx41, jsxs as jsxs21 } from "react/jsx-runtime";
10520
+ var classBase19 = "vuuPriceTicker";
10486
10521
  var getValueFormatter = (decimals) => numericFormatter({
10487
10522
  type: {
10488
10523
  name: "number",
@@ -10506,9 +10541,9 @@ var PriceTicker = memo(
10506
10541
  const formatNumber = useMemo19(() => getValueFormatter(decimals), [decimals]);
10507
10542
  const direction = isValidNumber5(prevValue) ? getMovingValueDirection(price, prevDirection, prevValue, decimals) : "";
10508
10543
  ref.current = [price, direction];
10509
- return /* @__PURE__ */ jsxs21("div", { ...htmlAttributes, className: cx16(classBase17, className, direction), children: [
10544
+ return /* @__PURE__ */ jsxs21("div", { ...htmlAttributes, className: cx18(classBase19, className, direction), children: [
10510
10545
  formatNumber(price),
10511
- showArrow ? /* @__PURE__ */ jsx39("span", { "data-icon": "price-arrow" }) : null
10546
+ showArrow ? /* @__PURE__ */ jsx41("span", { "data-icon": "price-arrow" }) : null
10512
10547
  ] });
10513
10548
  }
10514
10549
  );
@@ -10516,7 +10551,7 @@ PriceTicker.displayName = "PriceTicker";
10516
10551
 
10517
10552
  // src/split-button/SplitButton.tsx
10518
10553
  import { PopupMenu as PopupMenu2 } from "@vuu-ui/vuu-popups";
10519
- import { Button as Button5 } from "@salt-ds/core";
10554
+ import { Button as Button6 } from "@salt-ds/core";
10520
10555
 
10521
10556
  // src/split-button/useSplitButton.ts
10522
10557
  import { dispatchMouseEvent as dispatchMouseEvent2 } from "@vuu-ui/vuu-utils";
@@ -10527,7 +10562,7 @@ import {
10527
10562
  var useSplitButton = ({
10528
10563
  ButtonProps: ButtonPropsProp,
10529
10564
  PopupMenuProps: PopupMenuProps3,
10530
- classBase: classBase24,
10565
+ classBase: classBase26,
10531
10566
  onClick,
10532
10567
  segmented
10533
10568
  }) => {
@@ -10536,39 +10571,47 @@ var useSplitButton = ({
10536
10571
  const onMenuClose = useCallback48((reason) => {
10537
10572
  var _a2;
10538
10573
  if ((reason == null ? void 0 : reason.type) !== "tab-away") {
10539
- (_a2 = rootRef.current) == null ? void 0 : _a2.focus();
10574
+ const buttonMain = (_a2 = rootRef.current) == null ? void 0 : _a2.querySelector(
10575
+ ".vuuSplitButton-main"
10576
+ );
10577
+ buttonMain == null ? void 0 : buttonMain.focus();
10540
10578
  }
10541
10579
  }, []);
10542
10580
  const menuProps = {
10543
10581
  ...PopupMenuProps3,
10544
10582
  anchorElement: rootRef,
10545
- menuClassName: `${classBase24}-menu`,
10583
+ menuClassName: `${classBase26}-menu`,
10546
10584
  onMenuClose,
10547
10585
  popupPlacement: "below-full-width"
10548
10586
  };
10549
- const handleRootFocus = useCallback48(
10550
- (evt) => {
10551
- var _a2;
10552
- const { classList } = evt.target;
10553
- if (!segmented && classList.contains(classBase24)) {
10554
- (_a2 = buttonRef.current) == null ? void 0 : _a2.focus();
10587
+ const handleRootFocus = useCallback48(() => {
10588
+ const { current: splitButton } = rootRef;
10589
+ if (!(splitButton == null ? void 0 : splitButton.classList.contains("vuuFocusVisible"))) {
10590
+ splitButton == null ? void 0 : splitButton.classList.add("vuuFocusVisible");
10591
+ }
10592
+ }, []);
10593
+ const handleRootBlur = useCallback48((evt) => {
10594
+ const { current: splitButton } = rootRef;
10595
+ const target = evt.relatedTarget;
10596
+ if (!(splitButton == null ? void 0 : splitButton.contains(target))) {
10597
+ if (splitButton == null ? void 0 : splitButton.classList.contains("vuuFocusVisible")) {
10598
+ splitButton.classList.remove("vuuFocusVisible");
10555
10599
  }
10556
- },
10557
- [classBase24, segmented]
10558
- );
10600
+ }
10601
+ }, []);
10559
10602
  const handleButtonKeyDown = useCallback48(
10560
10603
  (evt) => {
10561
10604
  var _a2;
10562
10605
  if (evt.key === "ArrowDown") {
10563
10606
  const popupTrigger = (_a2 = rootRef.current) == null ? void 0 : _a2.querySelector(
10564
- `.${classBase24}-secondary`
10607
+ `.${classBase26}-trigger`
10565
10608
  );
10566
10609
  if (popupTrigger) {
10567
10610
  dispatchMouseEvent2(popupTrigger, "click");
10568
10611
  }
10569
10612
  }
10570
10613
  },
10571
- [classBase24]
10614
+ [classBase26]
10572
10615
  );
10573
10616
  const handleClick = useCallback48(
10574
10617
  (evt) => {
@@ -10576,71 +10619,76 @@ var useSplitButton = ({
10576
10619
  },
10577
10620
  [onClick]
10578
10621
  );
10579
- const ButtonProps5 = {
10622
+ const ButtonProps6 = {
10580
10623
  ...ButtonPropsProp,
10581
10624
  onClick: segmented ? handleClick : void 0,
10582
10625
  onKeyDown: handleButtonKeyDown
10583
10626
  };
10584
10627
  return {
10585
- ButtonProps: ButtonProps5,
10628
+ ButtonProps: ButtonProps6,
10586
10629
  PopupMenuProps: menuProps,
10587
10630
  buttonRef,
10588
10631
  rootRef,
10589
10632
  onClick: segmented ? void 0 : handleClick,
10633
+ onBlur: handleRootBlur,
10590
10634
  onFocus: handleRootFocus
10591
10635
  };
10592
10636
  };
10593
10637
 
10594
10638
  // src/split-button/SplitButton.tsx
10595
- import cx17 from "clsx";
10596
- import { jsx as jsx40, jsxs as jsxs22 } from "react/jsx-runtime";
10597
- var classBase18 = "vuuSplitButton";
10639
+ import cx19 from "clsx";
10640
+ import { jsx as jsx42, jsxs as jsxs22 } from "react/jsx-runtime";
10641
+ var classBase20 = "vuuSplitButton";
10598
10642
  var SplitButton = ({
10599
10643
  ButtonProps: ButtonPropsProp,
10600
10644
  PopupMenuProps: PopupMenuPropsProp,
10601
10645
  buttonText,
10646
+ disabled = false,
10602
10647
  onClick,
10603
10648
  segmented = false,
10649
+ variant = "primary",
10604
10650
  ...htmlAttributes
10605
10651
  }) => {
10606
10652
  var _a2;
10607
- const { ButtonProps: ButtonProps5, buttonRef, rootRef, PopupMenuProps: PopupMenuProps3, ...rootProps } = useSplitButton({
10653
+ const { ButtonProps: ButtonProps6, buttonRef, rootRef, PopupMenuProps: PopupMenuProps3, ...rootProps } = useSplitButton({
10608
10654
  ButtonProps: ButtonPropsProp,
10609
10655
  PopupMenuProps: PopupMenuPropsProp,
10610
- classBase: classBase18,
10656
+ classBase: classBase20,
10611
10657
  onClick,
10612
10658
  segmented
10613
10659
  });
10614
- console.log({ ButtonProps: ButtonProps5 });
10615
10660
  return /* @__PURE__ */ jsxs22(
10616
10661
  "div",
10617
10662
  {
10618
10663
  ...htmlAttributes,
10619
10664
  ...rootProps,
10620
- className: cx17(classBase18, {
10621
- [`${classBase18}-segmented`]: segmented
10665
+ className: cx19(classBase20, `${classBase20}-${variant}`, {
10666
+ [`${classBase20}-disabled`]: disabled,
10667
+ [`${classBase20}-segmented`]: segmented
10622
10668
  }),
10623
10669
  ref: rootRef,
10624
10670
  "data-showcase-center": true,
10625
- tabIndex: segmented ? void 0 : 0,
10626
10671
  children: [
10627
- /* @__PURE__ */ jsx40(
10628
- Button5,
10672
+ /* @__PURE__ */ jsx42(
10673
+ Button6,
10629
10674
  {
10630
- ...ButtonProps5,
10631
- className: `${classBase18}-primary`,
10675
+ ...ButtonProps6,
10676
+ className: `${classBase20}-main`,
10677
+ disabled,
10632
10678
  ref: buttonRef,
10633
- variant: "secondary",
10679
+ variant,
10634
10680
  children: buttonText
10635
10681
  }
10636
10682
  ),
10637
- /* @__PURE__ */ jsx40(
10683
+ /* @__PURE__ */ jsx42(
10638
10684
  PopupMenu2,
10639
10685
  {
10640
10686
  ...PopupMenuProps3,
10641
- className: `${classBase18}-secondary`,
10687
+ className: `${classBase20}-trigger`,
10688
+ disabled,
10642
10689
  icon: (_a2 = PopupMenuProps3 == null ? void 0 : PopupMenuProps3.icon) != null ? _a2 : "chevron-down",
10643
- tabIndex: segmented ? 0 : -1
10690
+ tabIndex: segmented ? 0 : -1,
10691
+ variant
10644
10692
  }
10645
10693
  )
10646
10694
  ]
@@ -10650,8 +10698,7 @@ var SplitButton = ({
10650
10698
 
10651
10699
  // src/tabstrip/Tabstrip.tsx
10652
10700
  import { asReactElements as asReactElements2, useId as useId9 } from "@vuu-ui/vuu-utils";
10653
- import { Button as Button6 } from "@salt-ds/core";
10654
- import cx18 from "clsx";
10701
+ import cx20 from "clsx";
10655
10702
  import React4, { useMemo as useMemo21, useRef as useRef39 } from "react";
10656
10703
 
10657
10704
  // src/tabstrip/useTabstrip.ts
@@ -11337,9 +11384,9 @@ var useTabstrip = ({
11337
11384
  };
11338
11385
 
11339
11386
  // src/tabstrip/Tabstrip.tsx
11340
- import { Fragment as Fragment4, jsx as jsx41, jsxs as jsxs23 } from "react/jsx-runtime";
11387
+ import { Fragment as Fragment4, jsx as jsx43, jsxs as jsxs23 } from "react/jsx-runtime";
11341
11388
  import { createElement as createElement2 } from "react";
11342
- var classBase19 = "vuuTabstrip";
11389
+ var classBase21 = "vuuTabstrip";
11343
11390
  var Tabstrip = ({
11344
11391
  activeTabIndex: activeTabIndexProp,
11345
11392
  allowAddTab,
@@ -11386,7 +11433,7 @@ var Tabstrip = ({
11386
11433
  orientation
11387
11434
  });
11388
11435
  const id = useId9(idProp);
11389
- const className = cx18(classBase19, `${classBase19}-${orientation}`, classNameProp);
11436
+ const className = cx20(classBase21, `${classBase21}-${orientation}`, classNameProp);
11390
11437
  const style = styleProp || containerStyle ? {
11391
11438
  ...styleProp,
11392
11439
  ...containerStyle
@@ -11405,7 +11452,7 @@ var Tabstrip = ({
11405
11452
  return React4.cloneElement(child, {
11406
11453
  ...tabProps,
11407
11454
  ...tabstripHook.navigationProps,
11408
- className: cx18(className2, tabClassName),
11455
+ className: cx20(className2, tabClassName),
11409
11456
  closeable,
11410
11457
  "data-overflow-priority": selected ? "1" : void 0,
11411
11458
  dragging: draggedItemIndex === index,
@@ -11414,19 +11461,19 @@ var Tabstrip = ({
11414
11461
  id: tabId,
11415
11462
  index,
11416
11463
  key: index,
11417
- location: cx18(location, tabLocation),
11464
+ location: cx20(location, tabLocation),
11418
11465
  selected,
11419
11466
  showMenuButton,
11420
11467
  tabIndex: selected ? 0 : -1
11421
11468
  });
11422
11469
  }).concat(
11423
11470
  allowAddTab ? /* @__PURE__ */ createElement2(
11424
- Button6,
11471
+ IconButton,
11425
11472
  {
11426
11473
  ...tabstripHook.navigationProps,
11427
11474
  "aria-label": "Create Tab",
11428
- className: `${classBase19}-addTabButton`,
11429
- "data-icon": "add",
11475
+ className: `${classBase21}-addTabButton`,
11476
+ icon: "add",
11430
11477
  "data-overflow-priority": "1",
11431
11478
  key: "addButton",
11432
11479
  onClick: onClickAddTab,
@@ -11453,7 +11500,7 @@ var Tabstrip = ({
11453
11500
  ]
11454
11501
  );
11455
11502
  return /* @__PURE__ */ jsxs23(Fragment4, { children: [
11456
- /* @__PURE__ */ jsx41(
11503
+ /* @__PURE__ */ jsx43(
11457
11504
  OverflowContainer,
11458
11505
  {
11459
11506
  ...htmlAttributes,
@@ -11475,9 +11522,9 @@ var Tabstrip = ({
11475
11522
 
11476
11523
  // src/tabstrip/Tab.tsx
11477
11524
  import { useForkRef as useForkRef8 } from "@salt-ds/core";
11478
- import cx20 from "clsx";
11525
+ import cx22 from "clsx";
11479
11526
  import {
11480
- forwardRef as forwardRef22,
11527
+ forwardRef as forwardRef23,
11481
11528
  useCallback as useCallback53,
11482
11529
  useRef as useRef40
11483
11530
  } from "react";
@@ -11485,9 +11532,9 @@ import {
11485
11532
  // src/tabstrip/TabMenu.tsx
11486
11533
  import { PopupMenu as PopupMenu3 } from "@vuu-ui/vuu-popups";
11487
11534
  import { useMemo as useMemo22 } from "react";
11488
- import cx19 from "clsx";
11489
- import { jsx as jsx42 } from "react/jsx-runtime";
11490
- var classBase20 = "vuuTabMenu";
11535
+ import cx21 from "clsx";
11536
+ import { jsx as jsx44 } from "react/jsx-runtime";
11537
+ var classBase22 = "vuuTabMenu";
11491
11538
  var TabMenu = ({
11492
11539
  allowClose,
11493
11540
  allowRename,
@@ -11524,13 +11571,13 @@ var TabMenu = ({
11524
11571
  index
11525
11572
  ]
11526
11573
  );
11527
- return /* @__PURE__ */ jsx42(
11574
+ return /* @__PURE__ */ jsx44(
11528
11575
  PopupMenu3,
11529
11576
  {
11530
- className: classBase20,
11577
+ className: classBase22,
11531
11578
  menuBuilder,
11532
11579
  menuActionHandler: onMenuAction,
11533
- menuLocation: cx19("tab", location),
11580
+ menuLocation: cx21("tab", location),
11534
11581
  menuOptions,
11535
11582
  onMenuClose,
11536
11583
  tabIndex: -1,
@@ -11540,10 +11587,10 @@ var TabMenu = ({
11540
11587
  };
11541
11588
 
11542
11589
  // src/tabstrip/Tab.tsx
11543
- import { jsx as jsx43, jsxs as jsxs24 } from "react/jsx-runtime";
11544
- var classBase21 = "vuuTab";
11590
+ import { jsx as jsx45, jsxs as jsxs24 } from "react/jsx-runtime";
11591
+ var classBase23 = "vuuTab";
11545
11592
  var noop2 = () => void 0;
11546
- var Tab = forwardRef22(function Tab2({
11593
+ var Tab = forwardRef23(function Tab2({
11547
11594
  ariaControls,
11548
11595
  children,
11549
11596
  className,
@@ -11600,7 +11647,7 @@ var Tab = forwardRef22(function Tab2({
11600
11647
  };
11601
11648
  const getLabel = () => {
11602
11649
  if (editable) {
11603
- return /* @__PURE__ */ jsx43(
11650
+ return /* @__PURE__ */ jsx45(
11604
11651
  EditableLabel,
11605
11652
  {
11606
11653
  editing,
@@ -11631,12 +11678,12 @@ var Tab = forwardRef22(function Tab2({
11631
11678
  ...props,
11632
11679
  "aria-controls": ariaControls,
11633
11680
  "aria-selected": selected,
11634
- className: cx20(classBase21, className, {
11635
- [`${classBase21}-closeable`]: closeable,
11681
+ className: cx22(classBase23, className, {
11682
+ [`${classBase23}-closeable`]: closeable,
11636
11683
  "vuuDraggable-dragAway": dragging,
11637
- [`${classBase21}-editing`]: editing,
11638
- [`${classBase21}-selected`]: selected || void 0,
11639
- [`${classBase21}-vertical`]: orientation === "vertical",
11684
+ [`${classBase23}-editing`]: editing,
11685
+ [`${classBase23}-selected`]: selected || void 0,
11686
+ [`${classBase23}-vertical`]: orientation === "vertical",
11640
11687
  [`vuuFocusVisible`]: focusVisible
11641
11688
  }),
11642
11689
  onClick: handleClick,
@@ -11646,15 +11693,15 @@ var Tab = forwardRef22(function Tab2({
11646
11693
  role: "tab",
11647
11694
  tabIndex,
11648
11695
  children: [
11649
- /* @__PURE__ */ jsx43("div", { className: `${classBase21}-main`, children: /* @__PURE__ */ jsx43(
11696
+ /* @__PURE__ */ jsx45("div", { className: `${classBase23}-main`, children: /* @__PURE__ */ jsx45(
11650
11697
  "span",
11651
11698
  {
11652
- className: `${classBase21}-text`,
11699
+ className: `${classBase23}-text`,
11653
11700
  "data-text": editable ? void 0 : label,
11654
11701
  children: children != null ? children : getLabel()
11655
11702
  }
11656
11703
  ) }),
11657
- showMenuButton ? /* @__PURE__ */ jsx43(
11704
+ showMenuButton ? /* @__PURE__ */ jsx45(
11658
11705
  TabMenu,
11659
11706
  {
11660
11707
  allowClose: closeable,
@@ -11674,7 +11721,7 @@ var Tab = forwardRef22(function Tab2({
11674
11721
 
11675
11722
  // src/toolbar/Toolbar.tsx
11676
11723
  import { asReactElements as asReactElements3, useId as useId10 } from "@vuu-ui/vuu-utils";
11677
- import cx21 from "clsx";
11724
+ import cx23 from "clsx";
11678
11725
  import React5, { useMemo as useMemo23, useRef as useRef43 } from "react";
11679
11726
 
11680
11727
  // src/toolbar/useToolbar.ts
@@ -12201,8 +12248,8 @@ var useToolbar = ({
12201
12248
  };
12202
12249
 
12203
12250
  // src/toolbar/Toolbar.tsx
12204
- import { jsx as jsx44 } from "react/jsx-runtime";
12205
- var classBase22 = "vuuToolbar";
12251
+ import { jsx as jsx46 } from "react/jsx-runtime";
12252
+ var classBase24 = "vuuToolbar";
12206
12253
  var Toolbar = ({
12207
12254
  activeItemIndex: activeItemIndexProp,
12208
12255
  alignItems = "start",
@@ -12244,7 +12291,7 @@ var Toolbar = ({
12244
12291
  const selected = activeItemIndex.includes(index);
12245
12292
  return React5.cloneElement(child, {
12246
12293
  ...forwardCallbackProps(ownProps, itemProps),
12247
- className: cx21("vuuToolbarItem", itemClassName),
12294
+ className: cx23("vuuToolbarItem", itemClassName),
12248
12295
  "data-overflow-priority": selected ? "1" : void 0,
12249
12296
  id: itemId,
12250
12297
  key: index,
@@ -12254,15 +12301,15 @@ var Toolbar = ({
12254
12301
  }),
12255
12302
  [activeItemIndex, children, focusableIdx, id, itemProps]
12256
12303
  );
12257
- return /* @__PURE__ */ jsx44(
12304
+ return /* @__PURE__ */ jsx46(
12258
12305
  OverflowContainer,
12259
12306
  {
12260
12307
  ...props,
12261
12308
  ...toolbarHook.containerProps,
12262
- className: cx21(className, classBase22, `${classBase22}-${orientation}`, {
12263
- [`${classBase22}-alignCenter`]: alignItems === "center",
12264
- [`${classBase22}-alignEnd`]: alignItems === "end",
12265
- [`${classBase22}-withSeparators`]: showSeparators
12309
+ className: cx23(className, classBase24, `${classBase24}-${orientation}`, {
12310
+ [`${classBase24}-alignCenter`]: alignItems === "center",
12311
+ [`${classBase24}-alignEnd`]: alignItems === "end",
12312
+ [`${classBase24}-withSeparators`]: showSeparators
12266
12313
  }),
12267
12314
  ...props,
12268
12315
  ref: rootRef,
@@ -12273,9 +12320,9 @@ var Toolbar = ({
12273
12320
 
12274
12321
  // src/tree/Tree.tsx
12275
12322
  import { useForkRef as useForkRef9, useIdMemo as useId11 } from "@salt-ds/core";
12276
- import cx22 from "clsx";
12323
+ import cx24 from "clsx";
12277
12324
  import {
12278
- forwardRef as forwardRef23,
12325
+ forwardRef as forwardRef24,
12279
12326
  useRef as useRef50
12280
12327
  } from "react";
12281
12328
 
@@ -13140,14 +13187,14 @@ var useTree = ({
13140
13187
  };
13141
13188
 
13142
13189
  // src/tree/Tree.tsx
13143
- import { jsx as jsx45, jsxs as jsxs25 } from "react/jsx-runtime";
13190
+ import { jsx as jsx47, jsxs as jsxs25 } from "react/jsx-runtime";
13144
13191
  import { createElement as createElement3 } from "react";
13145
- var classBase23 = "vuuTree";
13192
+ var classBase25 = "vuuTree";
13146
13193
  var isExpanded = (node) => node.expanded === true;
13147
13194
  var TreeNode = ({ children, idx, ...props }) => {
13148
- return /* @__PURE__ */ jsx45("li", { ...props, children });
13195
+ return /* @__PURE__ */ jsx47("li", { ...props, children });
13149
13196
  };
13150
- var Tree = forwardRef23(function Tree2({
13197
+ var Tree = forwardRef24(function Tree2({
13151
13198
  allowDragDrop,
13152
13199
  className,
13153
13200
  defaultSelected,
@@ -13212,8 +13259,8 @@ var Tree = forwardRef23(function Tree2({
13212
13259
  ...propsCommonToAllListItems,
13213
13260
  ...getListItemProps(item, idx, highlightedIdx, selected, focusVisible),
13214
13261
  children: [
13215
- item.icon ? /* @__PURE__ */ jsx45("span", { className: `${classBase23}Node-icon`, "data-icon": item.icon }) : null,
13216
- /* @__PURE__ */ jsx45("span", { children: item.label })
13262
+ item.icon ? /* @__PURE__ */ jsx47("span", { className: `${classBase25}Node-icon`, "data-icon": item.icon }) : null,
13263
+ /* @__PURE__ */ jsx47("span", { children: item.label })
13217
13264
  ]
13218
13265
  }
13219
13266
  )
@@ -13231,9 +13278,9 @@ var Tree = forwardRef23(function Tree2({
13231
13278
  "aria-expanded": child.expanded,
13232
13279
  "aria-level": child.level,
13233
13280
  "aria-selected": selected.includes(id2) || void 0,
13234
- className: cx22(`${classBase23}Node`, {
13281
+ className: cx24(`${classBase25}Node`, {
13235
13282
  focusVisible: focusVisible === i,
13236
- [`${classBase23}Node-toggle`]: !allowGroupSelect
13283
+ [`${classBase25}Node-toggle`]: !allowGroupSelect
13237
13284
  }),
13238
13285
  "data-idx": i,
13239
13286
  "data-highlighted": i === highlightedIdx || void 0,
@@ -13241,20 +13288,20 @@ var Tree = forwardRef23(function Tree2({
13241
13288
  id: id2,
13242
13289
  key: `header-${i}`
13243
13290
  },
13244
- allowGroupSelect ? /* @__PURE__ */ jsxs25("div", { className: `${classBase23}Node-label`, children: [
13245
- /* @__PURE__ */ jsx45("span", { className: `${classBase23}Node-toggle` }),
13291
+ allowGroupSelect ? /* @__PURE__ */ jsxs25("div", { className: `${classBase25}Node-label`, children: [
13292
+ /* @__PURE__ */ jsx47("span", { className: `${classBase25}Node-toggle` }),
13246
13293
  title
13247
- ] }) : /* @__PURE__ */ jsxs25("div", { className: `${classBase23}Node-label`, children: [
13248
- child.icon ? /* @__PURE__ */ jsx45(
13294
+ ] }) : /* @__PURE__ */ jsxs25("div", { className: `${classBase25}Node-label`, children: [
13295
+ child.icon ? /* @__PURE__ */ jsx47(
13249
13296
  "span",
13250
13297
  {
13251
- className: `${classBase23}Node-icon`,
13298
+ className: `${classBase25}Node-icon`,
13252
13299
  "data-icon": child.icon
13253
13300
  }
13254
13301
  ) : null,
13255
- /* @__PURE__ */ jsx45("span", { children: title })
13302
+ /* @__PURE__ */ jsx47("span", { children: title })
13256
13303
  ] }),
13257
- /* @__PURE__ */ jsx45("ul", { role: "group", children: isExpanded(child) ? renderSourceContent(child.childNodes, idx) : "" })
13304
+ /* @__PURE__ */ jsx47("ul", { role: "group", children: isExpanded(child) ? renderSourceContent(child.childNodes, idx) : "" })
13258
13305
  )
13259
13306
  );
13260
13307
  }
@@ -13271,12 +13318,12 @@ var Tree = forwardRef23(function Tree2({
13271
13318
  return listItems;
13272
13319
  }
13273
13320
  }
13274
- return /* @__PURE__ */ jsx45(
13321
+ return /* @__PURE__ */ jsx47(
13275
13322
  "ul",
13276
13323
  {
13277
13324
  ...htmlAttributes,
13278
13325
  ...listProps,
13279
- className: cx22(classBase23, className),
13326
+ className: cx24(classBase25, className),
13280
13327
  id: `Tree-${id}`,
13281
13328
  ref: useForkRef9(rootRef, forwardedRef),
13282
13329
  role: "tree",
@@ -13292,7 +13339,7 @@ var getListItemProps = (item, idx, highlightedIdx, selected, focusVisible, class
13292
13339
  "aria-selected": selected.includes(item.id) || void 0,
13293
13340
  "data-idx": idx.value,
13294
13341
  "data-highlighted": idx.value === highlightedIdx || void 0,
13295
- className: cx22("vuuTreeNode", className, {
13342
+ className: cx24("vuuTreeNode", className, {
13296
13343
  focusVisible: focusVisible === idx.value
13297
13344
  })
13298
13345
  });
@@ -13331,6 +13378,8 @@ export {
13331
13378
  HeightOnly,
13332
13379
  Highlighter,
13333
13380
  Home,
13381
+ Icon,
13382
+ IconButton,
13334
13383
  InstrumentPicker,
13335
13384
  InstrumentSearch,
13336
13385
  LIST_FOCUS_VISIBLE,