@soroush.tech/design-system 2.1.0 → 2.1.1

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.
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_src = require("../src-yC1f5WR2.cjs");
3
3
  const require_theme = require("../theme-XJvMdOnY.cjs");
4
- const require_MenuList = require("../MenuList-CSaaR3jt.cjs");
5
- const require_MenuItem = require("../MenuItem-BWm8DC-S.cjs");
4
+ const require_MenuList = require("../MenuList-CpPmRGzw.cjs");
5
+ const require_MenuItem = require("../MenuItem-BChqYIsh.cjs");
6
6
  const require_Menu_MenuItems = require("./MenuItems.cjs");
7
7
  let react = require("react");
8
8
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -1,7 +1,7 @@
1
1
  import { o as styled } from "../src-B-rNjHIL.mjs";
2
2
  import { n as useDefaultProps, r as useTheme } from "../theme-DyyZQFzQ.mjs";
3
- import { o as MenuActivationContext, t as MenuList } from "../MenuList-D7Pvpn_K.mjs";
4
- import { i as MenuPaper, n as useMenuPlacement, r as MenuContext, t as MenuItem } from "../MenuItem-hJeCsQZX.mjs";
3
+ import { o as MenuActivationContext, t as MenuList } from "../MenuList-BUTy11DW.mjs";
4
+ import { i as MenuPaper, n as useMenuPlacement, r as MenuContext, t as MenuItem } from "../MenuItem-Kvciwc9F.mjs";
5
5
  import { MenuItems } from "./MenuItems.mjs";
6
6
  import { Children, cloneElement, useCallback, useId, useLayoutEffect, useMemo, useRef, useState } from "react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_Menu = require("../Menu-DOOK_gM9.cjs");
2
+ const require_Menu = require("../Menu-DiBVHD7B.cjs");
3
3
  exports.Menu = require_Menu.Menu;
@@ -1 +1 @@
1
- export { t as Menu } from "../Menu-Cv887y7O.mjs";
1
+ export { t as Menu } from "../Menu-ULMXG0BP.mjs";
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_MenuItem = require("../MenuItem-BWm8DC-S.cjs");
2
+ const require_MenuItem = require("../MenuItem-BChqYIsh.cjs");
3
3
  const require_Menu_MenuDivider = require("./MenuDivider.cjs");
4
4
  let react_jsx_runtime = require("react/jsx-runtime");
5
5
  // src/Menu/MenuItems/MenuItems.tsx
@@ -1,4 +1,4 @@
1
- import { t as MenuItem } from "../MenuItem-hJeCsQZX.mjs";
1
+ import { t as MenuItem } from "../MenuItem-Kvciwc9F.mjs";
2
2
  import { MenuDivider } from "./MenuDivider.mjs";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  // src/Menu/MenuItems/MenuItems.tsx
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_MenuList = require("../MenuList-CSaaR3jt.cjs");
2
+ const require_MenuList = require("../MenuList-CpPmRGzw.cjs");
3
3
  exports.MenuList = require_MenuList.MenuList;
@@ -1 +1 @@
1
- export { t as MenuList } from "../MenuList-D7Pvpn_K.mjs";
1
+ export { t as MenuList } from "../MenuList-BUTy11DW.mjs";
@@ -1,8 +1,8 @@
1
1
  const require_src = require("./src-yC1f5WR2.cjs");
2
2
  const require_theme = require("./theme-XJvMdOnY.cjs");
3
3
  const require_isRtl = require("./isRtl-Dl6QQWib.cjs");
4
- const require_MenuList = require("./MenuList-CSaaR3jt.cjs");
5
- const require_MenuItem = require("./MenuItem-BWm8DC-S.cjs");
4
+ const require_MenuList = require("./MenuList-CpPmRGzw.cjs");
5
+ const require_MenuItem = require("./MenuItem-BChqYIsh.cjs");
6
6
  const require_Menu_MenuItems = require("./Menu/MenuItems.cjs");
7
7
  let react = require("react");
8
8
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -1,8 +1,8 @@
1
1
  import { o as styled } from "./src-B-rNjHIL.mjs";
2
2
  import { n as useDefaultProps, r as useTheme } from "./theme-DyyZQFzQ.mjs";
3
3
  import { t as isRtl } from "./isRtl-DN-EdUlg.mjs";
4
- import { o as MenuActivationContext, t as MenuList } from "./MenuList-D7Pvpn_K.mjs";
5
- import { i as MenuPaper, n as useMenuPlacement, r as MenuContext, t as MenuItem } from "./MenuItem-hJeCsQZX.mjs";
4
+ import { o as MenuActivationContext, t as MenuList } from "./MenuList-BUTy11DW.mjs";
5
+ import { i as MenuPaper, n as useMenuPlacement, r as MenuContext, t as MenuItem } from "./MenuItem-Kvciwc9F.mjs";
6
6
  import { MenuItems } from "./Menu/MenuItems.mjs";
7
7
  import { Children, cloneElement, useCallback, useId, useMemo, useRef, useState } from "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
package/dist/Menu.cjs CHANGED
@@ -1,9 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_MenuList = require("./MenuList-CSaaR3jt.cjs");
2
+ const require_MenuList = require("./MenuList-CpPmRGzw.cjs");
3
3
  const require_Menu_MenuDivider = require("./Menu/MenuDivider.cjs");
4
4
  const require_Menu_MenuItems = require("./Menu/MenuItems.cjs");
5
5
  const require_Menu_ContextMenu = require("./Menu/ContextMenu.cjs");
6
- const require_Menu = require("./Menu-DOOK_gM9.cjs");
6
+ const require_Menu = require("./Menu-DiBVHD7B.cjs");
7
7
  exports.ContextMenu = require_Menu_ContextMenu.ContextMenu;
8
8
  exports.Menu = require_Menu.Menu;
9
9
  exports.MenuDivider = require_Menu_MenuDivider.MenuDivider;
package/dist/Menu.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import { a as useMenuListContext, i as MenuListContext, t as MenuList } from "./MenuList-D7Pvpn_K.mjs";
1
+ import { a as useMenuListContext, i as MenuListContext, t as MenuList } from "./MenuList-BUTy11DW.mjs";
2
2
  import { MenuDivider } from "./Menu/MenuDivider.mjs";
3
3
  import { MenuItems } from "./Menu/MenuItems.mjs";
4
4
  import { ContextMenu } from "./Menu/ContextMenu.mjs";
5
- import { t as Menu } from "./Menu-Cv887y7O.mjs";
5
+ import { t as Menu } from "./Menu-ULMXG0BP.mjs";
6
6
  export { ContextMenu, Menu, MenuDivider, MenuItems, MenuList, MenuListContext, useMenuListContext };
@@ -5,7 +5,7 @@ const require_getSurfaceRadius = require("./getSurfaceRadius-DwOn3ALC.cjs");
5
5
  const require_Icon = require("./Icon-C5Iz5ekp.cjs");
6
6
  const require_isRtl = require("./isRtl-Dl6QQWib.cjs");
7
7
  const require_useAnchoredPlacement = require("./useAnchoredPlacement-BSfjNMut.cjs");
8
- const require_MenuList = require("./MenuList-CSaaR3jt.cjs");
8
+ const require_MenuList = require("./MenuList-CpPmRGzw.cjs");
9
9
  const require_Tooltip = require("./Tooltip-rkGm1HnP.cjs");
10
10
  let react = require("react");
11
11
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -5,7 +5,7 @@ import { t as getSurfaceRadius } from "./getSurfaceRadius-B1QE_VLa.mjs";
5
5
  import { t as Icon } from "./Icon-XpXU-SuF.mjs";
6
6
  import { t as isRtl } from "./isRtl-DN-EdUlg.mjs";
7
7
  import { t as useAnchoredPlacement } from "./useAnchoredPlacement-txSaWzfk.mjs";
8
- import { a as useMenuListContext, n as getNextRow, r as getOwnRows, t as MenuList } from "./MenuList-D7Pvpn_K.mjs";
8
+ import { a as useMenuListContext, n as getNextRow, r as getOwnRows, t as MenuList } from "./MenuList-BUTy11DW.mjs";
9
9
  import { n as Tooltip } from "./Tooltip-Cx4ez9vY.mjs";
10
10
  import { Children, createContext, useCallback, useContext, useEffect, useId, useMemo, useRef, useState } from "react";
11
11
  import { jsx, jsxs } from "react/jsx-runtime";
package/dist/MenuItem.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_MenuItem = require("./MenuItem-BWm8DC-S.cjs");
2
+ const require_MenuItem = require("./MenuItem-BChqYIsh.cjs");
3
3
  exports.MenuItem = require_MenuItem.MenuItem;
package/dist/MenuItem.mjs CHANGED
@@ -1 +1 @@
1
- export { t as MenuItem } from "./MenuItem-hJeCsQZX.mjs";
1
+ export { t as MenuItem } from "./MenuItem-Kvciwc9F.mjs";
@@ -124,7 +124,7 @@ function MenuList({ children, onSelect, shouldWrap: shouldWrapProp, shouldAutoFo
124
124
  const list = listRef.current;
125
125
  if (!shouldAutoFocus || !list) return;
126
126
  const rows = getOwnRows(list).filter(isRowEnabled);
127
- (rows.find((row) => row.getAttribute("aria-checked") === "true") ?? rows[0] ?? list).focus();
127
+ (rows.find((row) => row.getAttribute("aria-checked") === "true") ?? rows[0] ?? list).focus({ preventScroll: true });
128
128
  }, [shouldAutoFocus]);
129
129
  const context = useMemo(() => ({
130
130
  onActivate: (value, event) => {
@@ -125,7 +125,7 @@ function MenuList({ children, onSelect, shouldWrap: shouldWrapProp, shouldAutoFo
125
125
  const list = listRef.current;
126
126
  if (!shouldAutoFocus || !list) return;
127
127
  const rows = getOwnRows(list).filter(isRowEnabled);
128
- (rows.find((row) => row.getAttribute("aria-checked") === "true") ?? rows[0] ?? list).focus();
128
+ (rows.find((row) => row.getAttribute("aria-checked") === "true") ?? rows[0] ?? list).focus({ preventScroll: true });
129
129
  }, [shouldAutoFocus]);
130
130
  const context = (0, react.useMemo)(() => ({
131
131
  onActivate: (value, event) => {
@@ -13,8 +13,8 @@ const SidebarRail = require_src.styled(require_Flex.Flex, {
13
13
  name: "Sidebar",
14
14
  slot: "rail",
15
15
  label: "SidebarRail",
16
- shouldForwardProp: (prop) => prop !== "isOpen" && prop !== "layout" && prop !== "expandedWidth" && prop !== "collapsedWidth" && prop !== "stackedWidth"
17
- })(({ isOpen, layout, expandedWidth, collapsedWidth, stackedWidth }) => layout === "stacked" ? {
16
+ shouldForwardProp: (prop) => prop !== "isOpen" && prop !== "railLayout" && prop !== "expandedWidth" && prop !== "collapsedWidth" && prop !== "stackedWidth"
17
+ })(({ isOpen, railLayout, expandedWidth, collapsedWidth, stackedWidth }) => railLayout === "stacked" ? {
18
18
  width: stackedWidth,
19
19
  alignItems: "center"
20
20
  } : {
@@ -81,7 +81,7 @@ function Sidebar({ children, isOpen = false, anchor = "left", variant = "text",
81
81
  gap: 1,
82
82
  flexShrink: 0,
83
83
  isOpen,
84
- layout,
84
+ railLayout: layout,
85
85
  expandedWidth,
86
86
  collapsedWidth,
87
87
  stackedWidth,
@@ -12,8 +12,8 @@ const SidebarRail = styled(Flex, {
12
12
  name: "Sidebar",
13
13
  slot: "rail",
14
14
  label: "SidebarRail",
15
- shouldForwardProp: (prop) => prop !== "isOpen" && prop !== "layout" && prop !== "expandedWidth" && prop !== "collapsedWidth" && prop !== "stackedWidth"
16
- })(({ isOpen, layout, expandedWidth, collapsedWidth, stackedWidth }) => layout === "stacked" ? {
15
+ shouldForwardProp: (prop) => prop !== "isOpen" && prop !== "railLayout" && prop !== "expandedWidth" && prop !== "collapsedWidth" && prop !== "stackedWidth"
16
+ })(({ isOpen, railLayout, expandedWidth, collapsedWidth, stackedWidth }) => railLayout === "stacked" ? {
17
17
  width: stackedWidth,
18
18
  alignItems: "center"
19
19
  } : {
@@ -80,7 +80,7 @@ function Sidebar({ children, isOpen = false, anchor = "left", variant = "text",
80
80
  gap: 1,
81
81
  flexShrink: 0,
82
82
  isOpen,
83
- layout,
83
+ railLayout: layout,
84
84
  expandedWidth,
85
85
  collapsedWidth,
86
86
  stackedWidth,
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_TabsValueContext = require("../TabsValueContext-DklTSPKh.cjs");
3
- const require_Tabs = require("../Tabs-BTa2myRe.cjs");
3
+ const require_Tabs = require("../Tabs-BqYnn6OV.cjs");
4
4
  let react = require("react");
5
5
  let react_jsx_runtime = require("react/jsx-runtime");
6
6
  // src/Tabs/TabList/TabList.tsx
@@ -1,5 +1,5 @@
1
1
  import { n as useTabsValue } from "../TabsValueContext-C0vG9V7s.mjs";
2
- import { n as TabListContext, t as Tabs } from "../Tabs-CE8iDr0D.mjs";
2
+ import { n as TabListContext, t as Tabs } from "../Tabs-t2KrGCQo.mjs";
3
3
  import { useMemo } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  // src/Tabs/TabList/TabList.tsx
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_Tabs = require("../Tabs-BTa2myRe.cjs");
2
+ const require_Tabs = require("../Tabs-BqYnn6OV.cjs");
3
3
  exports.Tabs = require_Tabs.Tabs;
@@ -1 +1 @@
1
- export { t as Tabs } from "../Tabs-CE8iDr0D.mjs";
1
+ export { t as Tabs } from "../Tabs-t2KrGCQo.mjs";
@@ -5,8 +5,8 @@ const require_Icon = require("./Icon-C5Iz5ekp.cjs");
5
5
  const require_View = require("./View.cjs");
6
6
  const require_isRtl = require("./isRtl-Dl6QQWib.cjs");
7
7
  const require_Tooltip = require("./Tooltip-rkGm1HnP.cjs");
8
- const require_MenuItem = require("./MenuItem-BWm8DC-S.cjs");
9
- const require_Menu = require("./Menu-DOOK_gM9.cjs");
8
+ const require_MenuItem = require("./MenuItem-BChqYIsh.cjs");
9
+ const require_Menu = require("./Menu-DiBVHD7B.cjs");
10
10
  const require_dividerLine = require("./dividerLine-DFuLn1zU.cjs");
11
11
  require("./tonalRadius-CU9GHoHx.cjs");
12
12
  const require_Tabs_TabScrollButton = require("./Tabs/TabScrollButton.cjs");
@@ -346,6 +346,10 @@ const OverflowClose = require_src.styled("button", {
346
346
  "&:hover": { backgroundColor: `${main}1F` }
347
347
  };
348
348
  });
349
+ const overshoot = (start, end, viewStart, viewEnd) => {
350
+ if (start < viewStart) return start - viewStart;
351
+ return Math.max(end - viewEnd, 0);
352
+ };
349
353
  const readTabs = (children) => react.Children.toArray(children).flatMap((child, index) => {
350
354
  if (!(0, react.isValidElement)(child)) return [];
351
355
  const { value, disabled, label, icon, closeLabel, color, size } = child.props;
@@ -505,12 +509,18 @@ function Tabs({ children, value: valueProp, defaultValue, onChange, onTabClose,
505
509
  }), [updateIndicator, updateOverflow]);
506
510
  (0, react.useEffect)(() => {
507
511
  if (!isScrolling) return;
508
- const selected = listRef.current.querySelector("[data-tab-selected]");
509
- if (typeof selected?.scrollIntoView === "function") selected.scrollIntoView({
510
- block: "nearest",
511
- inline: "nearest"
512
- });
513
- }, [isScrolling, selectedValue]);
512
+ const row = listRef.current;
513
+ const selected = row.querySelector("[data-tab-selected]");
514
+ if (!selected) return;
515
+ const rowBox = row.getBoundingClientRect();
516
+ const tabBox = selected.getBoundingClientRect();
517
+ if (isVertical) row.scrollTop += overshoot(tabBox.top, tabBox.bottom, rowBox.top, rowBox.bottom);
518
+ else row.scrollLeft += overshoot(tabBox.left, tabBox.right, rowBox.left, rowBox.right);
519
+ }, [
520
+ isScrolling,
521
+ isVertical,
522
+ selectedValue
523
+ ]);
514
524
  const hasScrollButtons = isScrolling && (scrollButtons === "always" || scrollButtons === "auto" && scroll.isOverflowing);
515
525
  const ScrollButton = slots?.scrollButton ?? require_Tabs_TabScrollButton.TabScrollButton;
516
526
  const renderScrollButton = (direction) => {
@@ -5,8 +5,8 @@ import { t as Icon } from "./Icon-XpXU-SuF.mjs";
5
5
  import { View } from "./View.mjs";
6
6
  import { t as isRtl } from "./isRtl-DN-EdUlg.mjs";
7
7
  import { n as Tooltip } from "./Tooltip-Cx4ez9vY.mjs";
8
- import { t as MenuItem } from "./MenuItem-hJeCsQZX.mjs";
9
- import { t as Menu } from "./Menu-Cv887y7O.mjs";
8
+ import { t as MenuItem } from "./MenuItem-Kvciwc9F.mjs";
9
+ import { t as Menu } from "./Menu-ULMXG0BP.mjs";
10
10
  import { a as TabsContext, i as TabIndexContext, n as getDividerShadow, r as getEnclosedPieceStyle, t as getDividerColor } from "./dividerLine-BC8E38Ed.mjs";
11
11
  import "./tonalRadius-CvXRueqT.mjs";
12
12
  import { TabScrollButton } from "./Tabs/TabScrollButton.mjs";
@@ -345,6 +345,10 @@ const OverflowClose = styled("button", {
345
345
  "&:hover": { backgroundColor: `${main}1F` }
346
346
  };
347
347
  });
348
+ const overshoot = (start, end, viewStart, viewEnd) => {
349
+ if (start < viewStart) return start - viewStart;
350
+ return Math.max(end - viewEnd, 0);
351
+ };
348
352
  const readTabs = (children) => Children.toArray(children).flatMap((child, index) => {
349
353
  if (!isValidElement(child)) return [];
350
354
  const { value, disabled, label, icon, closeLabel, color, size } = child.props;
@@ -504,12 +508,18 @@ function Tabs({ children, value: valueProp, defaultValue, onChange, onTabClose,
504
508
  }), [updateIndicator, updateOverflow]);
505
509
  useEffect(() => {
506
510
  if (!isScrolling) return;
507
- const selected = listRef.current.querySelector("[data-tab-selected]");
508
- if (typeof selected?.scrollIntoView === "function") selected.scrollIntoView({
509
- block: "nearest",
510
- inline: "nearest"
511
- });
512
- }, [isScrolling, selectedValue]);
511
+ const row = listRef.current;
512
+ const selected = row.querySelector("[data-tab-selected]");
513
+ if (!selected) return;
514
+ const rowBox = row.getBoundingClientRect();
515
+ const tabBox = selected.getBoundingClientRect();
516
+ if (isVertical) row.scrollTop += overshoot(tabBox.top, tabBox.bottom, rowBox.top, rowBox.bottom);
517
+ else row.scrollLeft += overshoot(tabBox.left, tabBox.right, rowBox.left, rowBox.right);
518
+ }, [
519
+ isScrolling,
520
+ isVertical,
521
+ selectedValue
522
+ ]);
513
523
  const hasScrollButtons = isScrolling && (scrollButtons === "always" || scrollButtons === "auto" && scroll.isOverflowing);
514
524
  const ScrollButton = slots?.scrollButton ?? TabScrollButton;
515
525
  const renderScrollButton = (direction) => {
package/dist/Tabs.cjs CHANGED
@@ -2,7 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_Tabs_Tab = require("./Tabs/Tab.cjs");
3
3
  const require_Tabs_TabContext = require("./Tabs/TabContext.cjs");
4
4
  const require_Tabs_TabScrollButton = require("./Tabs/TabScrollButton.cjs");
5
- const require_Tabs = require("./Tabs-BTa2myRe.cjs");
5
+ const require_Tabs = require("./Tabs-BqYnn6OV.cjs");
6
6
  const require_Tabs_TabList = require("./Tabs/TabList.cjs");
7
7
  const require_Tabs_TabPanel = require("./Tabs/TabPanel.cjs");
8
8
  exports.Tab = require_Tabs_Tab.Tab;
package/dist/Tabs.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Tab } from "./Tabs/Tab.mjs";
2
2
  import { TabContext } from "./Tabs/TabContext.mjs";
3
3
  import { TabScrollButton } from "./Tabs/TabScrollButton.mjs";
4
- import { t as Tabs } from "./Tabs-CE8iDr0D.mjs";
4
+ import { t as Tabs } from "./Tabs-t2KrGCQo.mjs";
5
5
  import { TabList } from "./Tabs/TabList.mjs";
6
6
  import { TabPanel } from "./Tabs/TabPanel.mjs";
7
7
  export { Tab, TabContext, TabList, TabPanel, TabScrollButton, Tabs };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soroush.tech/design-system",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "Emotion + @soroush.tech/styled-system React component library - token-driven light/dark themes, layout primitives, forms, and overlays.",
5
5
  "keywords": [
6
6
  "design-system",