@noya-app/noya-designsystem 0.1.68 → 0.1.70

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
@@ -3973,7 +3973,8 @@ var variantStyles = {
3973
3973
  floating: "n-bg-floating-button n-text-text n-shadow-[0_1px_2px_rgba(0,0,0,0.1)] hover:n-opacity-80 active:n-opacity-90",
3974
3974
  thin: "n-bg-transparent n-text-text hover:n-bg-input-background-light",
3975
3975
  none: "n-bg-transparent n-text-text hover:n-bg-input-background-light",
3976
- ghost: "n-bg-transparent n-text-text hover:n-bg-input-background-light"
3976
+ ghost: "n-bg-transparent n-text-text hover:n-bg-input-background-light",
3977
+ link: "n-bg-transparent n-text-text hover:n-bg-input-background-light"
3977
3978
  };
3978
3979
  var sizeStyles = {
3979
3980
  small: "n-px-[2px] n-font-sans n-text-[10px] n-font-medium",
@@ -5060,8 +5061,8 @@ function InputFieldRoot({
5060
5061
  },
5061
5062
  [onFocusChange]
5062
5063
  );
5063
- const startWidth = measuredStartSize?.width ?? startWidthProp;
5064
- const endWidth = measuredEndSize?.width ?? endWidthProp;
5064
+ const startWidth = startWidthProp ?? measuredStartSize?.width;
5065
+ const endWidth = endWidthProp ?? measuredEndSize?.width;
5065
5066
  const contextValue = useMemo8(
5066
5067
  () => ({
5067
5068
  startWidth,
@@ -9758,6 +9759,7 @@ var TreeRow = forwardRefGeneric(function TreeRow2({
9758
9759
  onClickChevron,
9759
9760
  chevronClassName,
9760
9761
  chevronAs,
9762
+ chevronPosition = "start",
9761
9763
  children,
9762
9764
  ...rest
9763
9765
  }, forwardedRef) {
@@ -9771,7 +9773,7 @@ var TreeRow = forwardRefGeneric(function TreeRow2({
9771
9773
  },
9772
9774
  [stableOnClickChevron]
9773
9775
  );
9774
- return /* @__PURE__ */ React59.createElement(ListView.Row, { ref: forwardedRef, ...rest }, expandable && /* @__PURE__ */ React59.createElement(React59.Fragment, null, expanded === void 0 ? /* @__PURE__ */ React59.createElement(Spacer.Horizontal, { size: 19 }) : /* @__PURE__ */ React59.createElement(
9776
+ return /* @__PURE__ */ React59.createElement(ListView.Row, { ref: forwardedRef, ...rest }, expandable && chevronPosition !== "end" && /* @__PURE__ */ React59.createElement(React59.Fragment, null, expanded === void 0 ? /* @__PURE__ */ React59.createElement(Spacer.Horizontal, { size: 19 }) : /* @__PURE__ */ React59.createElement(
9775
9777
  IconButton,
9776
9778
  {
9777
9779
  as: chevronAs,
@@ -9780,7 +9782,16 @@ var TreeRow = forwardRefGeneric(function TreeRow2({
9780
9782
  onClick: handleClickChevron,
9781
9783
  selected: rest.selected
9782
9784
  }
9783
- ), /* @__PURE__ */ React59.createElement(Spacer.Horizontal, { size: 6 })), icon && /* @__PURE__ */ React59.createElement(React59.Fragment, null, renderIcon(icon), /* @__PURE__ */ React59.createElement(Spacer.Horizontal, { size: 10 })), children);
9785
+ ), /* @__PURE__ */ React59.createElement(Spacer.Horizontal, { size: 6 })), icon && /* @__PURE__ */ React59.createElement(React59.Fragment, null, renderIcon(icon), /* @__PURE__ */ React59.createElement(Spacer.Horizontal, { size: 10 })), children, expandable && chevronPosition === "end" && /* @__PURE__ */ React59.createElement(React59.Fragment, null, /* @__PURE__ */ React59.createElement(Spacer.Horizontal, { size: 6 }), expanded === void 0 ? /* @__PURE__ */ React59.createElement(React59.Fragment, null) : /* @__PURE__ */ React59.createElement(React59.Fragment, null, /* @__PURE__ */ React59.createElement(
9786
+ IconButton,
9787
+ {
9788
+ as: chevronAs,
9789
+ className: chevronClassName,
9790
+ iconName: expanded ? "ChevronDownIcon2" : "ChevronRightIcon2",
9791
+ onClick: handleClickChevron,
9792
+ selected: rest.selected
9793
+ }
9794
+ ), /* @__PURE__ */ React59.createElement(Spacer.Horizontal, { size: 8 }))));
9784
9795
  });
9785
9796
  var TreeView;
9786
9797
  ((TreeView2) => {
@@ -9843,7 +9854,10 @@ var List = memoGeneric(
9843
9854
  sortableId,
9844
9855
  sharedDragProps,
9845
9856
  virtualized,
9846
- renameSelectsBeforeDot
9857
+ renameSelectsBeforeDot,
9858
+ chevronPosition = "start",
9859
+ getItemStyle,
9860
+ getItemClassName
9847
9861
  } = props;
9848
9862
  const [internalHoveredId, setHoveredId] = useState25();
9849
9863
  const [internalRenamingId, setRenamingId] = useState25();
@@ -9973,6 +9987,8 @@ var List = memoGeneric(
9973
9987
  below
9974
9988
  );
9975
9989
  }
9990
+ const perItemStyle = getItemStyle?.(item, isSelected);
9991
+ const perItemClassName = getItemClassName?.(item, isSelected);
9976
9992
  return /* @__PURE__ */ React60.createElement(
9977
9993
  ViewComponent.Row,
9978
9994
  {
@@ -9985,11 +10001,14 @@ var List = memoGeneric(
9985
10001
  "aria-roledescription": itemRoleDescription,
9986
10002
  "aria-label": getName(item),
9987
10003
  "aria-selected": isSelected,
9988
- className: itemClassName,
10004
+ className: cx(itemClassName, perItemClassName),
9989
10005
  testRelativeDropPosition: testShowDropIndicatorId === id ? "inside" : void 0,
9990
- chevronClassName: cx(expandable && "n-relative n-left-2"),
10006
+ chevronClassName: cx(
10007
+ expandable && chevronPosition !== "end" && "n-relative n-left-2"
10008
+ ),
9991
10009
  chevronAs: href ? "div" : void 0,
9992
- style: itemStyle,
10010
+ ...expandable ? { chevronPosition } : {},
10011
+ style: perItemStyle ? { ...itemStyle, ...perItemStyle } : itemStyle,
9993
10012
  hovered: isHovered,
9994
10013
  selected: isSelected,
9995
10014
  expanded,
@@ -11562,6 +11581,9 @@ var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11562
11581
  (event) => {
11563
11582
  if (open || !downPosition) {
11564
11583
  setDownPosition(null);
11584
+ if (open && event.target === event.currentTarget) {
11585
+ setOpen(false);
11586
+ }
11565
11587
  return;
11566
11588
  }
11567
11589
  const dx = event.clientX - downPosition.x;
@@ -16686,29 +16708,51 @@ var Stepper = memo34(function Stepper2({
16686
16708
  onBlur
16687
16709
  },
16688
16710
  /* @__PURE__ */ React99.createElement(
16689
- Button,
16690
- {
16691
- icon: "MinusIcon",
16692
- disabled: readOnly,
16693
- onClick: () => handleValueChange(value - step)
16694
- }
16695
- ),
16696
- /* @__PURE__ */ React99.createElement(InputField2.Root, { className: "n-flex-1" }, /* @__PURE__ */ React99.createElement(
16697
- InputField2.NumberInput,
16698
- {
16699
- value,
16700
- onChange: handleValueChange,
16701
- onNudge: (amount) => handleValueChange(value + amount),
16702
- readOnly
16703
- }
16704
- )),
16705
- /* @__PURE__ */ React99.createElement(
16706
- Button,
16711
+ InputField2.Root,
16707
16712
  {
16708
- icon: "PlusIcon",
16709
- disabled: readOnly,
16710
- onClick: () => handleValueChange(value + step)
16711
- }
16713
+ className: "n-flex-1",
16714
+ startWidth: 17,
16715
+ startClassName: "-n-ml-[3px]",
16716
+ endWidth: 17,
16717
+ endClassName: "-n-mr-[3px]",
16718
+ start: /* @__PURE__ */ React99.createElement(
16719
+ IconButton,
16720
+ {
16721
+ iconName: "MinusIcon",
16722
+ disabled: readOnly,
16723
+ onClick: () => handleValueChange(value - step),
16724
+ className: "n-w-[21px] n-h-[21px]",
16725
+ style: {
16726
+ outline: `1px solid ${cssVars.colors.dividerStrong}`,
16727
+ outlineOffset: "-1px",
16728
+ background: cssVars.colors.background
16729
+ }
16730
+ }
16731
+ ),
16732
+ end: /* @__PURE__ */ React99.createElement(
16733
+ IconButton,
16734
+ {
16735
+ iconName: "PlusIcon",
16736
+ disabled: readOnly,
16737
+ onClick: () => handleValueChange(value + step),
16738
+ className: "n-w-[21px] n-h-[21px]",
16739
+ style: {
16740
+ outline: `1px solid ${cssVars.colors.dividerStrong}`,
16741
+ outlineOffset: "-1px",
16742
+ background: cssVars.colors.background
16743
+ }
16744
+ }
16745
+ )
16746
+ },
16747
+ /* @__PURE__ */ React99.createElement(
16748
+ InputField2.NumberInput,
16749
+ {
16750
+ value,
16751
+ onChange: handleValueChange,
16752
+ onNudge: (amount) => handleValueChange(value + amount),
16753
+ readOnly
16754
+ }
16755
+ )
16712
16756
  )
16713
16757
  );
16714
16758
  });
@@ -17205,7 +17249,7 @@ var VerticalTabMenu = memoGeneric(function VerticalTabMenu2({
17205
17249
  return /* @__PURE__ */ React105.createElement(
17206
17250
  "div",
17207
17251
  {
17208
- className: "n-w-[47px] n-h-full n-bg-sidebar-background n-flex n-flex-col n-items-center n-py-3 n-gap-3",
17252
+ className: "n-w-[calc(var(--n-toolbar-height)+1px)] n-h-full n-bg-sidebar-background n-flex n-flex-col n-items-center n-py-3 n-gap-3",
17209
17253
  style: style2
17210
17254
  },
17211
17255
  /* @__PURE__ */ React105.createElement(
@@ -17233,7 +17277,8 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17233
17277
  rightTabItems,
17234
17278
  rightTabValue,
17235
17279
  onChangeRightTab,
17236
- onChangeLeftTab
17280
+ onChangeLeftTab,
17281
+ compactDrawerMenu
17237
17282
  }) {
17238
17283
  const portalContainer = useRef28(null);
17239
17284
  const [{ leftSidebarCollapsed, rightSidebarCollapsed }, setLayoutState] = useState34({
@@ -17248,6 +17293,11 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17248
17293
  [leftTabItems, rightTabItems, leftPanel, rightPanel]
17249
17294
  );
17250
17295
  const hasTabs = allTabItems.length > 0;
17296
+ const allSelectableTabItems = useMemo45(
17297
+ () => allTabItems.filter(isSelectableMenuItem),
17298
+ [allTabItems]
17299
+ );
17300
+ const useCompactInToolbar = !!compactDrawerMenu && allSelectableTabItems.length <= 1;
17251
17301
  const leftSelectableTabItems = useMemo45(
17252
17302
  () => (leftTabItems ?? []).filter(isSelectableMenuItem),
17253
17303
  [leftTabItems]
@@ -17256,6 +17306,35 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17256
17306
  () => (rightTabItems ?? []).filter(isSelectableMenuItem),
17257
17307
  [rightTabItems]
17258
17308
  );
17309
+ const toggleSidebar = (ref) => {
17310
+ if (ref.current?.isExpanded()) {
17311
+ ref.current?.collapse();
17312
+ } else {
17313
+ ref.current?.expand();
17314
+ }
17315
+ };
17316
+ const ensureExpanded = (ref) => {
17317
+ if (!ref.current?.isExpanded()) {
17318
+ ref.current?.expand();
17319
+ }
17320
+ };
17321
+ const handleSelectTab = (value) => {
17322
+ if (leftSelectableTabItems.some((item) => item.value === value)) {
17323
+ if (value === leftTabValue) {
17324
+ toggleSidebar(leftSidebarRef);
17325
+ } else {
17326
+ ensureExpanded(leftSidebarRef);
17327
+ onChangeLeftTab?.(value);
17328
+ }
17329
+ } else if (rightSelectableTabItems.some((item) => item.value === value)) {
17330
+ if (value === rightTabValue) {
17331
+ toggleSidebar(rightSidebarRef);
17332
+ } else {
17333
+ ensureExpanded(rightSidebarRef);
17334
+ onChangeRightTab?.(value);
17335
+ }
17336
+ }
17337
+ };
17259
17338
  const { activeValue, isSidebarCollapsed } = leftSelectableTabItems.length > 0 && !leftSidebarCollapsed ? { activeValue: leftTabValue, isSidebarCollapsed: leftSidebarCollapsed } : rightSelectableTabItems.length > 0 && !rightSidebarCollapsed ? {
17260
17339
  activeValue: rightTabValue,
17261
17340
  isSidebarCollapsed: rightSidebarCollapsed
@@ -17267,58 +17346,47 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17267
17346
  id: EDITOR_PANEL_GROUP_ID,
17268
17347
  className: "n-flex n-flex-1 n-relative focus:n-outline-none"
17269
17348
  },
17270
- hasTabs && /* @__PURE__ */ React106.createElement(
17349
+ hasTabs && !useCompactInToolbar && /* @__PURE__ */ React106.createElement(React106.Fragment, null, /* @__PURE__ */ React106.createElement(
17271
17350
  VerticalTabMenu,
17272
17351
  {
17273
17352
  tooltipSide: "right",
17274
17353
  items: allTabItems,
17275
17354
  activeValue,
17276
17355
  isSidebarCollapsed,
17277
- onChange: (value) => {
17278
- if (leftSelectableTabItems.some((item) => item.value === value)) {
17279
- if (value === leftTabValue) {
17280
- if (leftSidebarRef.current?.isExpanded()) {
17281
- leftSidebarRef.current?.collapse();
17282
- } else {
17283
- leftSidebarRef.current?.expand();
17284
- }
17285
- } else {
17286
- if (!leftSidebarRef.current?.isExpanded()) {
17287
- leftSidebarRef.current?.expand();
17288
- }
17289
- onChangeLeftTab?.(value);
17290
- }
17291
- } else if (rightSelectableTabItems.some((item) => item.value === value)) {
17292
- if (value === rightTabValue) {
17293
- if (rightSidebarRef.current?.isExpanded()) {
17294
- rightSidebarRef.current?.collapse();
17295
- } else {
17296
- rightSidebarRef.current?.expand();
17297
- }
17298
- } else {
17299
- if (!rightSidebarRef.current?.isExpanded()) {
17300
- rightSidebarRef.current?.expand();
17301
- }
17302
- onChangeRightTab?.(value);
17303
- }
17304
- }
17356
+ onChange: (value) => handleSelectTab(value)
17357
+ }
17358
+ ), /* @__PURE__ */ React106.createElement(DividerVertical, { className: "n-h-full" })),
17359
+ useCompactInToolbar && /* @__PURE__ */ React106.createElement("div", { className: "n-absolute n-top-0 n-left-0 n-h-[calc(var(--n-toolbar-height)+1px)] n-w-[calc(var(--n-toolbar-height)+1px)] n-bg-sidebar-background n-border-r n-border-b n-border-divider-strong n-z-10 n-flex n-items-center n-justify-center" }, allSelectableTabItems[0] && /* @__PURE__ */ React106.createElement(
17360
+ Button,
17361
+ {
17362
+ variant: "none",
17363
+ className: "n-rounded",
17364
+ style: {
17365
+ width: "var(--n-input-height)",
17366
+ height: "var(--n-input-height)"
17367
+ },
17368
+ icon: allSelectableTabItems[0].icon,
17369
+ tooltip: allSelectableTabItems[0].tooltip ?? allSelectableTabItems[0].title,
17370
+ active: (() => {
17371
+ const value = allSelectableTabItems[0].value;
17372
+ const isLeftItem = leftSelectableTabItems.some((i) => i.value === value);
17373
+ const isRightItem = rightSelectableTabItems.some((i) => i.value === value);
17374
+ return isLeftItem ? !leftSidebarCollapsed : isRightItem ? !rightSidebarCollapsed : false;
17375
+ })(),
17376
+ onClick: () => {
17377
+ const value = allSelectableTabItems[0].value;
17378
+ handleSelectTab(value);
17305
17379
  }
17306
17380
  }
17307
- ),
17308
- hasTabs && /* @__PURE__ */ React106.createElement(DividerVertical, { className: "n-h-full" }),
17381
+ )),
17309
17382
  /* @__PURE__ */ React106.createElement("div", { className: "n-flex-1 n-flex n-relative" }, centerPanel),
17310
17383
  leftPanel && /* @__PURE__ */ React106.createElement(
17311
17384
  Drawer,
17312
17385
  {
17313
17386
  ref: leftSidebarRef,
17314
17387
  className: "n-flex-1",
17315
- style: {
17316
- left: 48,
17317
- maxWidth: "calc(100% - 48px)"
17318
- },
17319
- overlayStyle: {
17320
- left: 48
17321
- },
17388
+ style: useCompactInToolbar ? void 0 : { left: 48, maxWidth: "calc(100% - 48px)" },
17389
+ overlayStyle: useCompactInToolbar ? void 0 : { left: 48 },
17322
17390
  open: !leftSidebarCollapsed,
17323
17391
  positioning: "absolute",
17324
17392
  side: "left",
@@ -17339,13 +17407,8 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17339
17407
  id: RIGHT_SIDEBAR_ID,
17340
17408
  ref: rightSidebarRef,
17341
17409
  className: "n-flex-1",
17342
- style: {
17343
- left: 48,
17344
- maxWidth: "calc(100% - 48px)"
17345
- },
17346
- overlayStyle: {
17347
- left: 48
17348
- },
17410
+ style: useCompactInToolbar ? void 0 : { left: 48, maxWidth: "calc(100% - 48px)" },
17411
+ overlayStyle: useCompactInToolbar ? void 0 : { left: 48 },
17349
17412
  open: !rightSidebarCollapsed,
17350
17413
  positioning: "absolute",
17351
17414
  side: "left",
@@ -17531,7 +17594,8 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17531
17594
  leftTabValue,
17532
17595
  rightTabValue,
17533
17596
  onChangeLeftTab,
17534
- onChangeRightTab
17597
+ onChangeRightTab,
17598
+ compactDrawerMenu
17535
17599
  }) {
17536
17600
  const panelGroupRef = useRef29(null);
17537
17601
  const hasLeftPanel = !!leftPanel;
@@ -17622,6 +17686,9 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17622
17686
  },
17623
17687
  [setData, propertyKey]
17624
17688
  );
17689
+ const showLeftTabs = !!leftSidebarOptions.showTabs && !!leftTabItems && // When compact drawer UI is enabled, only show the rail when the
17690
+ // sidebar is collapsed (for large screens/panel layout).
17691
+ (!compactDrawerMenu || leftSidebarCollapsed);
17625
17692
  return /* @__PURE__ */ React107.createElement(
17626
17693
  PanelGroup,
17627
17694
  {
@@ -17633,7 +17700,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17633
17700
  autoSaveId,
17634
17701
  onLayout: handleLayoutChange
17635
17702
  },
17636
- leftPanel && /* @__PURE__ */ React107.createElement(React107.Fragment, null, leftSidebarOptions.showTabs && leftTabItems && /* @__PURE__ */ React107.createElement(
17703
+ leftPanel && /* @__PURE__ */ React107.createElement(React107.Fragment, null, showLeftTabs && /* @__PURE__ */ React107.createElement(
17637
17704
  VerticalTabMenu,
17638
17705
  {
17639
17706
  tooltipSide: "right",
@@ -17642,7 +17709,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17642
17709
  isSidebarCollapsed: leftSidebarCollapsed,
17643
17710
  onChange: handleLeftTabChange
17644
17711
  }
17645
- ), leftSidebarOptions.showTabs && leftTabItems && !leftSidebarCollapsed && /* @__PURE__ */ React107.createElement(DividerVertical, { className: "n-h-full" }), /* @__PURE__ */ React107.createElement(
17712
+ ), showLeftTabs && !leftSidebarCollapsed && /* @__PURE__ */ React107.createElement(DividerVertical, { className: "n-h-full" }), /* @__PURE__ */ React107.createElement(
17646
17713
  Panel,
17647
17714
  {
17648
17715
  id: LEFT_SIDEBAR_ID,
@@ -17766,7 +17833,8 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
17766
17833
  defaultCollapsed: rightDefaultCollapsed = false,
17767
17834
  showTabs: rightShowTabs = true
17768
17835
  } = {},
17769
- theme
17836
+ theme,
17837
+ compactDrawerMenu
17770
17838
  }, forwardedRef) {
17771
17839
  const containerRef = React108.useRef(null);
17772
17840
  const containerSize = useSize(containerRef);
@@ -17986,7 +18054,8 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
17986
18054
  centerPanelPercentage,
17987
18055
  autoSavePrefix,
17988
18056
  leftSidebarRef,
17989
- rightSidebarRef
18057
+ rightSidebarRef,
18058
+ compactDrawerMenu
17990
18059
  }
17991
18060
  ))
17992
18061
  );