@noya-app/noya-designsystem 0.1.69 → 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.js CHANGED
@@ -4193,7 +4193,8 @@ var variantStyles = {
4193
4193
  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",
4194
4194
  thin: "n-bg-transparent n-text-text hover:n-bg-input-background-light",
4195
4195
  none: "n-bg-transparent n-text-text hover:n-bg-input-background-light",
4196
- ghost: "n-bg-transparent n-text-text hover:n-bg-input-background-light"
4196
+ ghost: "n-bg-transparent n-text-text hover:n-bg-input-background-light",
4197
+ link: "n-bg-transparent n-text-text hover:n-bg-input-background-light"
4197
4198
  };
4198
4199
  var sizeStyles = {
4199
4200
  small: "n-px-[2px] n-font-sans n-text-[10px] n-font-medium",
@@ -9899,7 +9900,7 @@ var TreeRow = forwardRefGeneric(function TreeRow2({
9899
9900
  onClick: handleClickChevron,
9900
9901
  selected: rest.selected
9901
9902
  }
9902
- ), /* @__PURE__ */ import_react65.default.createElement(Spacer.Horizontal, { size: 6 })), icon && /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, null, renderIcon(icon), /* @__PURE__ */ import_react65.default.createElement(Spacer.Horizontal, { size: 10 })), children, expandable && chevronPosition === "end" && /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, null, /* @__PURE__ */ import_react65.default.createElement(Spacer.Horizontal, { size: 6 }), expanded === void 0 ? /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, null, /* @__PURE__ */ import_react65.default.createElement(Spacer.Horizontal, { size: 19 }), /* @__PURE__ */ import_react65.default.createElement(Spacer.Horizontal, { size: 8 })) : /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, null, /* @__PURE__ */ import_react65.default.createElement(
9903
+ ), /* @__PURE__ */ import_react65.default.createElement(Spacer.Horizontal, { size: 6 })), icon && /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, null, renderIcon(icon), /* @__PURE__ */ import_react65.default.createElement(Spacer.Horizontal, { size: 10 })), children, expandable && chevronPosition === "end" && /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, null, /* @__PURE__ */ import_react65.default.createElement(Spacer.Horizontal, { size: 6 }), expanded === void 0 ? /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, null) : /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, null, /* @__PURE__ */ import_react65.default.createElement(
9903
9904
  IconButton,
9904
9905
  {
9905
9906
  as: chevronAs,
@@ -11679,6 +11680,9 @@ var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11679
11680
  (event) => {
11680
11681
  if (open || !downPosition) {
11681
11682
  setDownPosition(null);
11683
+ if (open && event.target === event.currentTarget) {
11684
+ setOpen(false);
11685
+ }
11682
11686
  return;
11683
11687
  }
11684
11688
  const dx = event.clientX - downPosition.x;
@@ -17331,7 +17335,8 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17331
17335
  rightTabItems,
17332
17336
  rightTabValue,
17333
17337
  onChangeRightTab,
17334
- onChangeLeftTab
17338
+ onChangeLeftTab,
17339
+ compactDrawerMenu
17335
17340
  }) {
17336
17341
  const portalContainer = (0, import_react105.useRef)(null);
17337
17342
  const [{ leftSidebarCollapsed, rightSidebarCollapsed }, setLayoutState] = (0, import_react105.useState)({
@@ -17346,6 +17351,11 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17346
17351
  [leftTabItems, rightTabItems, leftPanel, rightPanel]
17347
17352
  );
17348
17353
  const hasTabs = allTabItems.length > 0;
17354
+ const allSelectableTabItems = (0, import_react105.useMemo)(
17355
+ () => allTabItems.filter(isSelectableMenuItem),
17356
+ [allTabItems]
17357
+ );
17358
+ const useCompactInToolbar = !!compactDrawerMenu && allSelectableTabItems.length <= 1;
17349
17359
  const leftSelectableTabItems = (0, import_react105.useMemo)(
17350
17360
  () => (leftTabItems ?? []).filter(isSelectableMenuItem),
17351
17361
  [leftTabItems]
@@ -17354,6 +17364,35 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17354
17364
  () => (rightTabItems ?? []).filter(isSelectableMenuItem),
17355
17365
  [rightTabItems]
17356
17366
  );
17367
+ const toggleSidebar = (ref) => {
17368
+ if (ref.current?.isExpanded()) {
17369
+ ref.current?.collapse();
17370
+ } else {
17371
+ ref.current?.expand();
17372
+ }
17373
+ };
17374
+ const ensureExpanded = (ref) => {
17375
+ if (!ref.current?.isExpanded()) {
17376
+ ref.current?.expand();
17377
+ }
17378
+ };
17379
+ const handleSelectTab = (value) => {
17380
+ if (leftSelectableTabItems.some((item) => item.value === value)) {
17381
+ if (value === leftTabValue) {
17382
+ toggleSidebar(leftSidebarRef);
17383
+ } else {
17384
+ ensureExpanded(leftSidebarRef);
17385
+ onChangeLeftTab?.(value);
17386
+ }
17387
+ } else if (rightSelectableTabItems.some((item) => item.value === value)) {
17388
+ if (value === rightTabValue) {
17389
+ toggleSidebar(rightSidebarRef);
17390
+ } else {
17391
+ ensureExpanded(rightSidebarRef);
17392
+ onChangeRightTab?.(value);
17393
+ }
17394
+ }
17395
+ };
17357
17396
  const { activeValue, isSidebarCollapsed } = leftSelectableTabItems.length > 0 && !leftSidebarCollapsed ? { activeValue: leftTabValue, isSidebarCollapsed: leftSidebarCollapsed } : rightSelectableTabItems.length > 0 && !rightSidebarCollapsed ? {
17358
17397
  activeValue: rightTabValue,
17359
17398
  isSidebarCollapsed: rightSidebarCollapsed
@@ -17365,58 +17404,47 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17365
17404
  id: EDITOR_PANEL_GROUP_ID,
17366
17405
  className: "n-flex n-flex-1 n-relative focus:n-outline-none"
17367
17406
  },
17368
- hasTabs && /* @__PURE__ */ import_react105.default.createElement(
17407
+ hasTabs && !useCompactInToolbar && /* @__PURE__ */ import_react105.default.createElement(import_react105.default.Fragment, null, /* @__PURE__ */ import_react105.default.createElement(
17369
17408
  VerticalTabMenu,
17370
17409
  {
17371
17410
  tooltipSide: "right",
17372
17411
  items: allTabItems,
17373
17412
  activeValue,
17374
17413
  isSidebarCollapsed,
17375
- onChange: (value) => {
17376
- if (leftSelectableTabItems.some((item) => item.value === value)) {
17377
- if (value === leftTabValue) {
17378
- if (leftSidebarRef.current?.isExpanded()) {
17379
- leftSidebarRef.current?.collapse();
17380
- } else {
17381
- leftSidebarRef.current?.expand();
17382
- }
17383
- } else {
17384
- if (!leftSidebarRef.current?.isExpanded()) {
17385
- leftSidebarRef.current?.expand();
17386
- }
17387
- onChangeLeftTab?.(value);
17388
- }
17389
- } else if (rightSelectableTabItems.some((item) => item.value === value)) {
17390
- if (value === rightTabValue) {
17391
- if (rightSidebarRef.current?.isExpanded()) {
17392
- rightSidebarRef.current?.collapse();
17393
- } else {
17394
- rightSidebarRef.current?.expand();
17395
- }
17396
- } else {
17397
- if (!rightSidebarRef.current?.isExpanded()) {
17398
- rightSidebarRef.current?.expand();
17399
- }
17400
- onChangeRightTab?.(value);
17401
- }
17402
- }
17414
+ onChange: (value) => handleSelectTab(value)
17415
+ }
17416
+ ), /* @__PURE__ */ import_react105.default.createElement(DividerVertical, { className: "n-h-full" })),
17417
+ useCompactInToolbar && /* @__PURE__ */ import_react105.default.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__ */ import_react105.default.createElement(
17418
+ Button,
17419
+ {
17420
+ variant: "none",
17421
+ className: "n-rounded",
17422
+ style: {
17423
+ width: "var(--n-input-height)",
17424
+ height: "var(--n-input-height)"
17425
+ },
17426
+ icon: allSelectableTabItems[0].icon,
17427
+ tooltip: allSelectableTabItems[0].tooltip ?? allSelectableTabItems[0].title,
17428
+ active: (() => {
17429
+ const value = allSelectableTabItems[0].value;
17430
+ const isLeftItem = leftSelectableTabItems.some((i) => i.value === value);
17431
+ const isRightItem = rightSelectableTabItems.some((i) => i.value === value);
17432
+ return isLeftItem ? !leftSidebarCollapsed : isRightItem ? !rightSidebarCollapsed : false;
17433
+ })(),
17434
+ onClick: () => {
17435
+ const value = allSelectableTabItems[0].value;
17436
+ handleSelectTab(value);
17403
17437
  }
17404
17438
  }
17405
- ),
17406
- hasTabs && /* @__PURE__ */ import_react105.default.createElement(DividerVertical, { className: "n-h-full" }),
17439
+ )),
17407
17440
  /* @__PURE__ */ import_react105.default.createElement("div", { className: "n-flex-1 n-flex n-relative" }, centerPanel),
17408
17441
  leftPanel && /* @__PURE__ */ import_react105.default.createElement(
17409
17442
  Drawer,
17410
17443
  {
17411
17444
  ref: leftSidebarRef,
17412
17445
  className: "n-flex-1",
17413
- style: {
17414
- left: 48,
17415
- maxWidth: "calc(100% - 48px)"
17416
- },
17417
- overlayStyle: {
17418
- left: 48
17419
- },
17446
+ style: useCompactInToolbar ? void 0 : { left: 48, maxWidth: "calc(100% - 48px)" },
17447
+ overlayStyle: useCompactInToolbar ? void 0 : { left: 48 },
17420
17448
  open: !leftSidebarCollapsed,
17421
17449
  positioning: "absolute",
17422
17450
  side: "left",
@@ -17437,13 +17465,8 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17437
17465
  id: RIGHT_SIDEBAR_ID,
17438
17466
  ref: rightSidebarRef,
17439
17467
  className: "n-flex-1",
17440
- style: {
17441
- left: 48,
17442
- maxWidth: "calc(100% - 48px)"
17443
- },
17444
- overlayStyle: {
17445
- left: 48
17446
- },
17468
+ style: useCompactInToolbar ? void 0 : { left: 48, maxWidth: "calc(100% - 48px)" },
17469
+ overlayStyle: useCompactInToolbar ? void 0 : { left: 48 },
17447
17470
  open: !rightSidebarCollapsed,
17448
17471
  positioning: "absolute",
17449
17472
  side: "left",
@@ -17625,7 +17648,8 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17625
17648
  leftTabValue,
17626
17649
  rightTabValue,
17627
17650
  onChangeLeftTab,
17628
- onChangeRightTab
17651
+ onChangeRightTab,
17652
+ compactDrawerMenu
17629
17653
  }) {
17630
17654
  const panelGroupRef = (0, import_react106.useRef)(null);
17631
17655
  const hasLeftPanel = !!leftPanel;
@@ -17716,6 +17740,9 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17716
17740
  },
17717
17741
  [setData, propertyKey]
17718
17742
  );
17743
+ const showLeftTabs = !!leftSidebarOptions.showTabs && !!leftTabItems && // When compact drawer UI is enabled, only show the rail when the
17744
+ // sidebar is collapsed (for large screens/panel layout).
17745
+ (!compactDrawerMenu || leftSidebarCollapsed);
17719
17746
  return /* @__PURE__ */ import_react106.default.createElement(
17720
17747
  import_react_resizable_panels.PanelGroup,
17721
17748
  {
@@ -17727,7 +17754,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17727
17754
  autoSaveId,
17728
17755
  onLayout: handleLayoutChange
17729
17756
  },
17730
- leftPanel && /* @__PURE__ */ import_react106.default.createElement(import_react106.default.Fragment, null, leftSidebarOptions.showTabs && leftTabItems && /* @__PURE__ */ import_react106.default.createElement(
17757
+ leftPanel && /* @__PURE__ */ import_react106.default.createElement(import_react106.default.Fragment, null, showLeftTabs && /* @__PURE__ */ import_react106.default.createElement(
17731
17758
  VerticalTabMenu,
17732
17759
  {
17733
17760
  tooltipSide: "right",
@@ -17736,7 +17763,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17736
17763
  isSidebarCollapsed: leftSidebarCollapsed,
17737
17764
  onChange: handleLeftTabChange
17738
17765
  }
17739
- ), leftSidebarOptions.showTabs && leftTabItems && !leftSidebarCollapsed && /* @__PURE__ */ import_react106.default.createElement(DividerVertical, { className: "n-h-full" }), /* @__PURE__ */ import_react106.default.createElement(
17766
+ ), showLeftTabs && !leftSidebarCollapsed && /* @__PURE__ */ import_react106.default.createElement(DividerVertical, { className: "n-h-full" }), /* @__PURE__ */ import_react106.default.createElement(
17740
17767
  import_react_resizable_panels.Panel,
17741
17768
  {
17742
17769
  id: LEFT_SIDEBAR_ID,
@@ -17860,7 +17887,8 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
17860
17887
  defaultCollapsed: rightDefaultCollapsed = false,
17861
17888
  showTabs: rightShowTabs = true
17862
17889
  } = {},
17863
- theme
17890
+ theme,
17891
+ compactDrawerMenu
17864
17892
  }, forwardedRef) {
17865
17893
  const containerRef = import_react108.default.useRef(null);
17866
17894
  const containerSize = useSize(containerRef);
@@ -18080,7 +18108,8 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
18080
18108
  centerPanelPercentage,
18081
18109
  autoSavePrefix,
18082
18110
  leftSidebarRef,
18083
- rightSidebarRef
18111
+ rightSidebarRef,
18112
+ compactDrawerMenu
18084
18113
  }
18085
18114
  ))
18086
18115
  );