@umami/react-zen 0.147.0 → 0.148.0

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.css CHANGED
@@ -4393,12 +4393,12 @@ body a.Button_button__MDE1O {
4393
4393
  }
4394
4394
 
4395
4395
  /* virtual-css:css:ce310178c027bd5704a97ff6406d1f4f */
4396
- .NavMenu_navmenu__MDVmZ {
4396
+ .NavMenu_navmenu__NzU4Y {
4397
4397
  font-size: var(--font-size);
4398
4398
  width: 100%;
4399
4399
  gap: var(--spacing-2);
4400
4400
  }
4401
- .NavMenu_item__OWJiY {
4401
+ .NavMenu_item__MzUzO {
4402
4402
  color: var(--font-color-muted);
4403
4403
  gap: var(--gap);
4404
4404
  padding: var(--padding);
@@ -4414,12 +4414,15 @@ body a.Button_button__MDE1O {
4414
4414
  color: var(--font-color);
4415
4415
  background: var(--highlight-color);
4416
4416
  }
4417
- &.NavMenu_selected__ZDRiM {
4417
+ &.NavMenu_selected__MGM3O {
4418
4418
  color: var(--font-color);
4419
4419
  background: var(--highlight-color);
4420
4420
  font-weight: var(--font-weight-bold);
4421
4421
  }
4422
4422
  }
4423
+ .NavMenu_group__NDg1M {
4424
+ gap: var(--gap);
4425
+ }
4423
4426
 
4424
4427
  /* virtual-css:css:2684f3f399522c75740ad06c94a6137d */
4425
4428
  .Popover_popover__NDdlY[data-placement=top] {
package/dist/index.d.mts CHANGED
@@ -512,6 +512,12 @@ interface NavMenuProps extends ColumnProps {
512
512
  highlightColor?: string;
513
513
  }
514
514
  declare function NavMenu({ highlightColor, className, style, children, ...props }: NavMenuProps): react.JSX.Element;
515
+ interface NavMenuGroupProps extends ColumnProps {
516
+ title?: string;
517
+ allowMinimize?: boolean;
518
+ isMinimized?: boolean;
519
+ }
520
+ declare function NavMenuGroup({ title, allowMinimize, isMinimized, className, children, ...props }: NavMenuGroupProps): react.JSX.Element;
515
521
  interface NavMenuItemProps extends RowProps {
516
522
  isSelected?: boolean;
517
523
  }
@@ -705,4 +711,4 @@ interface ZenProviderProps {
705
711
  }
706
712
  declare function ZenProvider({ children, ...props }: ZenProviderProps): react.JSX.Element;
707
713
 
708
- export { Accordion, AccordionItem, type AccordionItemProps, type AccordionProps, AlertBanner, type AlertBannerProps, AlertDialog, type AlertDialogProps, Blockquote, type BlockquoteProps, Box, type BoxProps, Breadcrumb, Breadcrumbs, Button, type ButtonProps, Calendar, type CalendarProps, Checkbox, type CheckboxProps, Code, type CodeProps, Column, type ColumnProps, ConfirmationDialog, type ConfirmationDialogProps, Container, type ContainerProps, DataColumn, type DataColumnProps, DataTable, type DataTableProps, Dialog, type DialogProps, Dots, type DotsProps, Flexbox, type FlexboxProps, FloatingTooltip, type FloatingTooltipProps, Form, FormButtons, type FormButtonsProps, FormController, type FormControllerProps, FormField, FormFieldArray, type FormFieldArrayProps, type FormFieldProps, type FormProps, FormResetButton, type FormResetButtonProps, FormSubmitButton, Grid, type GridProps, Heading, type HeadingProps, type HoverButtonProps, HoverTrigger, Icon, type IconProps, Image, type ImageProps, InlineEditField, type InlineEditFieldProps, Label, type LabelProps, List, ListItem, type ListItemProps, type ListProps, ListSection, type ListSectionProps, ListSeparator, Loading, LoadingButton, type LoadingButtonProps, type LoadingProps, Menu, MenuItem, type MenuItemProps, type MenuProps, MenuSection, type MenuSectionProps, MenuSeparator, Modal, type ModalProps, NavMenu, NavMenuItem, type NavMenuItemProps, type NavMenuProps, Navbar, NavbarContext, NavbarItem, type NavbarItemProps, type NavbarProps, type NavigationContext, PasswordField, type PasswordFieldProps, Popover, ProgressBar, type ProgressBarProps, ProgressCircle, type ProgressCircleProps, Radio, RadioGroup, type RadioGroupProps, Row, type RowProps, SearchField, type SearchFieldProps, Select, type SelectProps, Sidebar, SidebarHeader, SidebarItem, type SidebarItemProps, type SidebarProps, SidebarSection, Slider, type SliderProps, Slot, Spinner, type SpinnerProps, StatusLight, type StatusLightProps, Switch, type SwitchProps, Tab, TabList, TabPanel, Table, TableBody, TableCell, type TableCellProps, TableColumn, type TableColumnProps, TableHeader, TableRow, Tabs, Text, TextField, type TextFieldProps, type TextProps, ThemeButton, type ThemeButtonProps, Toast, type ToastProps, ToastProvider, type ToastProviderProps, Toaster, type ToasterProps, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, type ToggleProps, Tooltip, TooltipBubble, type TooltipBubbleProps, type TooltipProps, ZenProvider, type ZenProviderProps, useDebounce, useNavigationContext, useTheme, useToast };
714
+ export { Accordion, AccordionItem, type AccordionItemProps, type AccordionProps, AlertBanner, type AlertBannerProps, AlertDialog, type AlertDialogProps, Blockquote, type BlockquoteProps, Box, type BoxProps, Breadcrumb, Breadcrumbs, Button, type ButtonProps, Calendar, type CalendarProps, Checkbox, type CheckboxProps, Code, type CodeProps, Column, type ColumnProps, ConfirmationDialog, type ConfirmationDialogProps, Container, type ContainerProps, DataColumn, type DataColumnProps, DataTable, type DataTableProps, Dialog, type DialogProps, Dots, type DotsProps, Flexbox, type FlexboxProps, FloatingTooltip, type FloatingTooltipProps, Form, FormButtons, type FormButtonsProps, FormController, type FormControllerProps, FormField, FormFieldArray, type FormFieldArrayProps, type FormFieldProps, type FormProps, FormResetButton, type FormResetButtonProps, FormSubmitButton, Grid, type GridProps, Heading, type HeadingProps, type HoverButtonProps, HoverTrigger, Icon, type IconProps, Image, type ImageProps, InlineEditField, type InlineEditFieldProps, Label, type LabelProps, List, ListItem, type ListItemProps, type ListProps, ListSection, type ListSectionProps, ListSeparator, Loading, LoadingButton, type LoadingButtonProps, type LoadingProps, Menu, MenuItem, type MenuItemProps, type MenuProps, MenuSection, type MenuSectionProps, MenuSeparator, Modal, type ModalProps, NavMenu, NavMenuGroup, type NavMenuGroupProps, NavMenuItem, type NavMenuItemProps, type NavMenuProps, Navbar, NavbarContext, NavbarItem, type NavbarItemProps, type NavbarProps, type NavigationContext, PasswordField, type PasswordFieldProps, Popover, ProgressBar, type ProgressBarProps, ProgressCircle, type ProgressCircleProps, Radio, RadioGroup, type RadioGroupProps, Row, type RowProps, SearchField, type SearchFieldProps, Select, type SelectProps, Sidebar, SidebarHeader, SidebarItem, type SidebarItemProps, type SidebarProps, SidebarSection, Slider, type SliderProps, Slot, Spinner, type SpinnerProps, StatusLight, type StatusLightProps, Switch, type SwitchProps, Tab, TabList, TabPanel, Table, TableBody, TableCell, type TableCellProps, TableColumn, type TableColumnProps, TableHeader, TableRow, Tabs, Text, TextField, type TextFieldProps, type TextProps, ThemeButton, type ThemeButtonProps, Toast, type ToastProps, ToastProvider, type ToastProviderProps, Toaster, type ToasterProps, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, type ToggleProps, Tooltip, TooltipBubble, type TooltipBubbleProps, type TooltipProps, ZenProvider, type ZenProviderProps, useDebounce, useNavigationContext, useTheme, useToast };
package/dist/index.d.ts CHANGED
@@ -512,6 +512,12 @@ interface NavMenuProps extends ColumnProps {
512
512
  highlightColor?: string;
513
513
  }
514
514
  declare function NavMenu({ highlightColor, className, style, children, ...props }: NavMenuProps): react.JSX.Element;
515
+ interface NavMenuGroupProps extends ColumnProps {
516
+ title?: string;
517
+ allowMinimize?: boolean;
518
+ isMinimized?: boolean;
519
+ }
520
+ declare function NavMenuGroup({ title, allowMinimize, isMinimized, className, children, ...props }: NavMenuGroupProps): react.JSX.Element;
515
521
  interface NavMenuItemProps extends RowProps {
516
522
  isSelected?: boolean;
517
523
  }
@@ -705,4 +711,4 @@ interface ZenProviderProps {
705
711
  }
706
712
  declare function ZenProvider({ children, ...props }: ZenProviderProps): react.JSX.Element;
707
713
 
708
- export { Accordion, AccordionItem, type AccordionItemProps, type AccordionProps, AlertBanner, type AlertBannerProps, AlertDialog, type AlertDialogProps, Blockquote, type BlockquoteProps, Box, type BoxProps, Breadcrumb, Breadcrumbs, Button, type ButtonProps, Calendar, type CalendarProps, Checkbox, type CheckboxProps, Code, type CodeProps, Column, type ColumnProps, ConfirmationDialog, type ConfirmationDialogProps, Container, type ContainerProps, DataColumn, type DataColumnProps, DataTable, type DataTableProps, Dialog, type DialogProps, Dots, type DotsProps, Flexbox, type FlexboxProps, FloatingTooltip, type FloatingTooltipProps, Form, FormButtons, type FormButtonsProps, FormController, type FormControllerProps, FormField, FormFieldArray, type FormFieldArrayProps, type FormFieldProps, type FormProps, FormResetButton, type FormResetButtonProps, FormSubmitButton, Grid, type GridProps, Heading, type HeadingProps, type HoverButtonProps, HoverTrigger, Icon, type IconProps, Image, type ImageProps, InlineEditField, type InlineEditFieldProps, Label, type LabelProps, List, ListItem, type ListItemProps, type ListProps, ListSection, type ListSectionProps, ListSeparator, Loading, LoadingButton, type LoadingButtonProps, type LoadingProps, Menu, MenuItem, type MenuItemProps, type MenuProps, MenuSection, type MenuSectionProps, MenuSeparator, Modal, type ModalProps, NavMenu, NavMenuItem, type NavMenuItemProps, type NavMenuProps, Navbar, NavbarContext, NavbarItem, type NavbarItemProps, type NavbarProps, type NavigationContext, PasswordField, type PasswordFieldProps, Popover, ProgressBar, type ProgressBarProps, ProgressCircle, type ProgressCircleProps, Radio, RadioGroup, type RadioGroupProps, Row, type RowProps, SearchField, type SearchFieldProps, Select, type SelectProps, Sidebar, SidebarHeader, SidebarItem, type SidebarItemProps, type SidebarProps, SidebarSection, Slider, type SliderProps, Slot, Spinner, type SpinnerProps, StatusLight, type StatusLightProps, Switch, type SwitchProps, Tab, TabList, TabPanel, Table, TableBody, TableCell, type TableCellProps, TableColumn, type TableColumnProps, TableHeader, TableRow, Tabs, Text, TextField, type TextFieldProps, type TextProps, ThemeButton, type ThemeButtonProps, Toast, type ToastProps, ToastProvider, type ToastProviderProps, Toaster, type ToasterProps, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, type ToggleProps, Tooltip, TooltipBubble, type TooltipBubbleProps, type TooltipProps, ZenProvider, type ZenProviderProps, useDebounce, useNavigationContext, useTheme, useToast };
714
+ export { Accordion, AccordionItem, type AccordionItemProps, type AccordionProps, AlertBanner, type AlertBannerProps, AlertDialog, type AlertDialogProps, Blockquote, type BlockquoteProps, Box, type BoxProps, Breadcrumb, Breadcrumbs, Button, type ButtonProps, Calendar, type CalendarProps, Checkbox, type CheckboxProps, Code, type CodeProps, Column, type ColumnProps, ConfirmationDialog, type ConfirmationDialogProps, Container, type ContainerProps, DataColumn, type DataColumnProps, DataTable, type DataTableProps, Dialog, type DialogProps, Dots, type DotsProps, Flexbox, type FlexboxProps, FloatingTooltip, type FloatingTooltipProps, Form, FormButtons, type FormButtonsProps, FormController, type FormControllerProps, FormField, FormFieldArray, type FormFieldArrayProps, type FormFieldProps, type FormProps, FormResetButton, type FormResetButtonProps, FormSubmitButton, Grid, type GridProps, Heading, type HeadingProps, type HoverButtonProps, HoverTrigger, Icon, type IconProps, Image, type ImageProps, InlineEditField, type InlineEditFieldProps, Label, type LabelProps, List, ListItem, type ListItemProps, type ListProps, ListSection, type ListSectionProps, ListSeparator, Loading, LoadingButton, type LoadingButtonProps, type LoadingProps, Menu, MenuItem, type MenuItemProps, type MenuProps, MenuSection, type MenuSectionProps, MenuSeparator, Modal, type ModalProps, NavMenu, NavMenuGroup, type NavMenuGroupProps, NavMenuItem, type NavMenuItemProps, type NavMenuProps, Navbar, NavbarContext, NavbarItem, type NavbarItemProps, type NavbarProps, type NavigationContext, PasswordField, type PasswordFieldProps, Popover, ProgressBar, type ProgressBarProps, ProgressCircle, type ProgressCircleProps, Radio, RadioGroup, type RadioGroupProps, Row, type RowProps, SearchField, type SearchFieldProps, Select, type SelectProps, Sidebar, SidebarHeader, SidebarItem, type SidebarItemProps, type SidebarProps, SidebarSection, Slider, type SliderProps, Slot, Spinner, type SpinnerProps, StatusLight, type StatusLightProps, Switch, type SwitchProps, Tab, TabList, TabPanel, Table, TableBody, TableCell, type TableCellProps, TableColumn, type TableColumnProps, TableHeader, TableRow, Tabs, Text, TextField, type TextFieldProps, type TextProps, ThemeButton, type ThemeButtonProps, Toast, type ToastProps, ToastProvider, type ToastProviderProps, Toaster, type ToasterProps, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, type ToggleProps, Tooltip, TooltipBubble, type TooltipBubbleProps, type TooltipProps, ZenProvider, type ZenProviderProps, useDebounce, useNavigationContext, useTheme, useToast };
package/dist/index.js CHANGED
@@ -34,18 +34,18 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
34
34
  // node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.1.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js
35
35
  var require_use_sync_external_store_shim_production = __commonJS({
36
36
  "node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.1.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js"(exports) {
37
- var import_react189 = __toESM(require("react"));
38
- var React5 = import_react189.default;
37
+ var import_react190 = __toESM(require("react"));
38
+ var React5 = import_react190.default;
39
39
  function is2(x, y) {
40
40
  return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y;
41
41
  }
42
42
  var objectIs = "function" === typeof Object.is ? Object.is : is2;
43
- var useState18 = React5.useState;
43
+ var useState19 = React5.useState;
44
44
  var useEffect13 = React5.useEffect;
45
45
  var useLayoutEffect3 = React5.useLayoutEffect;
46
46
  var useDebugValue = React5.useDebugValue;
47
47
  function useSyncExternalStore$2(subscribe, getSnapshot) {
48
- var value = getSnapshot(), _useState = useState18({ inst: { value, getSnapshot } }), inst = _useState[0].inst, forceUpdate = _useState[1];
48
+ var value = getSnapshot(), _useState = useState19({ inst: { value, getSnapshot } }), inst = _useState[0].inst, forceUpdate = _useState[1];
49
49
  useLayoutEffect3(
50
50
  function() {
51
51
  inst.value = value;
@@ -87,7 +87,7 @@ var require_use_sync_external_store_shim_production = __commonJS({
87
87
  // node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.1.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js
88
88
  var require_use_sync_external_store_shim_development = __commonJS({
89
89
  "node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.1.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"(exports) {
90
- var import_react189 = __toESM(require("react"));
90
+ var import_react190 = __toESM(require("react"));
91
91
  (function() {
92
92
  function is2(x, y) {
93
93
  return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y;
@@ -103,7 +103,7 @@ var require_use_sync_external_store_shim_development = __commonJS({
103
103
  "The result of getSnapshot should be cached to avoid an infinite loop"
104
104
  ), didWarnUncachedGetSnapshot = true);
105
105
  }
106
- cachedValue = useState18({
106
+ cachedValue = useState19({
107
107
  inst: { value, getSnapshot }
108
108
  });
109
109
  var inst = cachedValue[0].inst, forceUpdate = cachedValue[1];
@@ -141,7 +141,7 @@ var require_use_sync_external_store_shim_development = __commonJS({
141
141
  return getSnapshot();
142
142
  }
143
143
  "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
144
- var React5 = import_react189.default, objectIs = "function" === typeof Object.is ? Object.is : is2, useState18 = React5.useState, useEffect13 = React5.useEffect, useLayoutEffect3 = React5.useLayoutEffect, useDebugValue = React5.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2;
144
+ var React5 = import_react190.default, objectIs = "function" === typeof Object.is ? Object.is : is2, useState19 = React5.useState, useEffect13 = React5.useEffect, useLayoutEffect3 = React5.useLayoutEffect, useDebugValue = React5.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2;
145
145
  exports.useSyncExternalStore = void 0 !== React5.useSyncExternalStore ? React5.useSyncExternalStore : shim;
146
146
  "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
147
147
  })();
@@ -275,6 +275,7 @@ __export(index_exports, {
275
275
  MenuTrigger: () => $3674c52c6b3c5bce$export$27d2ad3c5815583e,
276
276
  Modal: () => Modal2,
277
277
  NavMenu: () => NavMenu,
278
+ NavMenuGroup: () => NavMenuGroup,
278
279
  NavMenuItem: () => NavMenuItem,
279
280
  Navbar: () => Navbar,
280
281
  NavbarContext: () => NavbarContext,
@@ -31436,10 +31437,11 @@ function NavbarItem({ label, children, className, ...props }) {
31436
31437
  }
31437
31438
 
31438
31439
  // src/components/NavMenu.tsx
31440
+ var import_react185 = require("react");
31439
31441
  var import_classnames38 = __toESM(require_classnames());
31440
31442
 
31441
31443
  // css-modules:/Users/mikecao/Development/umami-software/react-zen/src/components/NavMenu.module.css
31442
- var NavMenu_default = { "navmenu": "NavMenu_navmenu__MDVmZ", "item": "NavMenu_item__OWJiY", "selected": "NavMenu_selected__ZDRiM" };
31444
+ var NavMenu_default = { "navmenu": "NavMenu_navmenu__NzU4Y", "item": "NavMenu_item__MzUzO", "selected": "NavMenu_selected__MGM3O", "group": "NavMenu_group__NDg1M" };
31443
31445
 
31444
31446
  // src/components/NavMenu.tsx
31445
31447
  var import_jsx_runtime53 = require("react/jsx-runtime");
@@ -31454,16 +31456,49 @@ function NavMenu({ highlightColor, className, style, children, ...props }) {
31454
31456
  }
31455
31457
  );
31456
31458
  }
31459
+ function NavMenuGroup({
31460
+ title,
31461
+ allowMinimize,
31462
+ isMinimized,
31463
+ className,
31464
+ children,
31465
+ ...props
31466
+ }) {
31467
+ const [minimized, setMinimized] = (0, import_react185.useState)(!!isMinimized);
31468
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
31469
+ Column,
31470
+ {
31471
+ ...props,
31472
+ className: (0, import_classnames38.default)(NavMenu_default.group, className, minimized && NavMenu_default.minimized),
31473
+ children: [
31474
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
31475
+ Row,
31476
+ {
31477
+ className: (0, import_classnames38.default)(NavMenu_default.title, NavMenu_default.item),
31478
+ alignItems: "center",
31479
+ justifyContent: "space-between",
31480
+ onClick: () => setMinimized(!minimized),
31481
+ children: [
31482
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Text, { transform: "uppercase", size: "1", weight: "bold", color: true, children: title }),
31483
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Icon2, { rotate: minimized ? 0 : 90, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ChevronRight, {}) })
31484
+ ]
31485
+ }
31486
+ ),
31487
+ !minimized && children
31488
+ ]
31489
+ }
31490
+ );
31491
+ }
31457
31492
  function NavMenuItem({ isSelected, className, children, ...props }) {
31458
31493
  return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Row, { ...props, className: (0, import_classnames38.default)(NavMenu_default.item, className, isSelected && NavMenu_default.selected), children });
31459
31494
  }
31460
31495
 
31461
31496
  // src/components/PasswordField.tsx
31462
- var import_react185 = require("react");
31497
+ var import_react186 = require("react");
31463
31498
  var import_classnames39 = __toESM(require_classnames());
31464
31499
  var import_jsx_runtime54 = require("react/jsx-runtime");
31465
31500
  function PasswordField({ label, className, ...props }) {
31466
- const [show, setShow] = (0, import_react185.useState)(false);
31501
+ const [show, setShow] = (0, import_react186.useState)(false);
31467
31502
  const type = show ? "text" : "password";
31468
31503
  const handleShowPassword = () => setShow((state) => !state);
31469
31504
  return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
@@ -31570,7 +31605,7 @@ function Radio2({ children, className, ...props }) {
31570
31605
  }
31571
31606
 
31572
31607
  // src/components/SearchField.tsx
31573
- var import_react186 = require("react");
31608
+ var import_react187 = require("react");
31574
31609
  var import_classnames44 = __toESM(require_classnames());
31575
31610
  var import_jsx_runtime59 = require("react/jsx-runtime");
31576
31611
  function SearchField2({
@@ -31584,7 +31619,7 @@ function SearchField2({
31584
31619
  className,
31585
31620
  ...props
31586
31621
  }) {
31587
- const [search, setSearch] = (0, import_react186.useState)(defaultValue);
31622
+ const [search, setSearch] = (0, import_react187.useState)(defaultValue);
31588
31623
  const searchValue = useDebounce(search, delay);
31589
31624
  const handleChange = (value2) => {
31590
31625
  setSearch(value2);
@@ -31598,7 +31633,7 @@ function SearchField2({
31598
31633
  onSearch?.("");
31599
31634
  onChange?.("");
31600
31635
  };
31601
- (0, import_react186.useEffect)(() => {
31636
+ (0, import_react187.useEffect)(() => {
31602
31637
  if (delay > 0) {
31603
31638
  onSearch?.(searchValue);
31604
31639
  }
@@ -31623,7 +31658,7 @@ function SearchField2({
31623
31658
  }
31624
31659
 
31625
31660
  // src/components/Select.tsx
31626
- var import_react187 = require("react");
31661
+ var import_react188 = require("react");
31627
31662
  var import_classnames45 = __toESM(require_classnames());
31628
31663
 
31629
31664
  // css-modules:/Users/mikecao/Development/umami-software/react-zen/src/components/Select.module.css
@@ -31651,7 +31686,7 @@ function Select2({
31651
31686
  children,
31652
31687
  ...props
31653
31688
  }) {
31654
- const [search, setSearch] = (0, import_react187.useState)("");
31689
+ const [search, setSearch] = (0, import_react188.useState)("");
31655
31690
  const handleChange = (e) => {
31656
31691
  onSelectionChange?.(e);
31657
31692
  onChange?.(e);
@@ -31712,7 +31747,7 @@ function Select2({
31712
31747
  }
31713
31748
 
31714
31749
  // src/components/Sidebar.tsx
31715
- var import_react188 = require("react");
31750
+ var import_react189 = require("react");
31716
31751
  var import_classnames46 = __toESM(require_classnames());
31717
31752
 
31718
31753
  // css-modules:/Users/mikecao/Development/umami-software/react-zen/src/components/Sidebar.module.css
@@ -31720,7 +31755,7 @@ var Sidebar_default = { "sidenav": "Sidebar_sidenav__OGRiM", "header": "Sidebar_
31720
31755
 
31721
31756
  // src/components/Sidebar.tsx
31722
31757
  var import_jsx_runtime61 = require("react/jsx-runtime");
31723
- var SidebarContext = (0, import_react188.createContext)(null);
31758
+ var SidebarContext = (0, import_react189.createContext)(null);
31724
31759
  function Sidebar({
31725
31760
  variant = "1",
31726
31761
  isCollapsed,
@@ -31778,7 +31813,7 @@ function SidebarItem({
31778
31813
  children,
31779
31814
  ...props
31780
31815
  }) {
31781
- const { isCollapsed } = (0, import_react188.useContext)(SidebarContext);
31816
+ const { isCollapsed } = (0, import_react189.useContext)(SidebarContext);
31782
31817
  return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)($4e3b923658d69c60$export$8c610744efcf8a1d, { delay: 0, closeDelay: 0, isDisabled: !isCollapsed, children: [
31783
31818
  /* @__PURE__ */ (0, import_jsx_runtime61.jsx)($f645667febf57a63$export$35a3bebf7ef2d934, { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
31784
31819
  Row,
package/dist/index.mjs CHANGED
@@ -34,12 +34,12 @@ var require_use_sync_external_store_shim_production = __commonJS({
34
34
  return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y;
35
35
  }
36
36
  var objectIs = "function" === typeof Object.is ? Object.is : is2;
37
- var useState18 = React5.useState;
37
+ var useState19 = React5.useState;
38
38
  var useEffect13 = React5.useEffect;
39
39
  var useLayoutEffect3 = React5.useLayoutEffect;
40
40
  var useDebugValue = React5.useDebugValue;
41
41
  function useSyncExternalStore$2(subscribe, getSnapshot) {
42
- var value = getSnapshot(), _useState = useState18({ inst: { value, getSnapshot } }), inst = _useState[0].inst, forceUpdate = _useState[1];
42
+ var value = getSnapshot(), _useState = useState19({ inst: { value, getSnapshot } }), inst = _useState[0].inst, forceUpdate = _useState[1];
43
43
  useLayoutEffect3(
44
44
  function() {
45
45
  inst.value = value;
@@ -97,7 +97,7 @@ var require_use_sync_external_store_shim_development = __commonJS({
97
97
  "The result of getSnapshot should be cached to avoid an infinite loop"
98
98
  ), didWarnUncachedGetSnapshot = true);
99
99
  }
100
- cachedValue = useState18({
100
+ cachedValue = useState19({
101
101
  inst: { value, getSnapshot }
102
102
  });
103
103
  var inst = cachedValue[0].inst, forceUpdate = cachedValue[1];
@@ -135,7 +135,7 @@ var require_use_sync_external_store_shim_development = __commonJS({
135
135
  return getSnapshot();
136
136
  }
137
137
  "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
138
- var React5 = __import_react2, objectIs = "function" === typeof Object.is ? Object.is : is2, useState18 = React5.useState, useEffect13 = React5.useEffect, useLayoutEffect3 = React5.useLayoutEffect, useDebugValue = React5.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2;
138
+ var React5 = __import_react2, objectIs = "function" === typeof Object.is ? Object.is : is2, useState19 = React5.useState, useEffect13 = React5.useEffect, useLayoutEffect3 = React5.useLayoutEffect, useDebugValue = React5.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2;
139
139
  exports.useSyncExternalStore = void 0 !== React5.useSyncExternalStore ? React5.useSyncExternalStore : shim;
140
140
  "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
141
141
  })();
@@ -31326,12 +31326,13 @@ function NavbarItem({ label, children, className, ...props }) {
31326
31326
 
31327
31327
  // src/components/NavMenu.tsx
31328
31328
  var import_classnames38 = __toESM(require_classnames());
31329
+ import { useState as useState15 } from "react";
31329
31330
 
31330
31331
  // css-modules:/Users/mikecao/Development/umami-software/react-zen/src/components/NavMenu.module.css
31331
- var NavMenu_default = { "navmenu": "NavMenu_navmenu__MDVmZ", "item": "NavMenu_item__OWJiY", "selected": "NavMenu_selected__ZDRiM" };
31332
+ var NavMenu_default = { "navmenu": "NavMenu_navmenu__NzU4Y", "item": "NavMenu_item__MzUzO", "selected": "NavMenu_selected__MGM3O", "group": "NavMenu_group__NDg1M" };
31332
31333
 
31333
31334
  // src/components/NavMenu.tsx
31334
- import { jsx as jsx53 } from "react/jsx-runtime";
31335
+ import { jsx as jsx53, jsxs as jsxs29 } from "react/jsx-runtime";
31335
31336
  function NavMenu({ highlightColor, className, style, children, ...props }) {
31336
31337
  return /* @__PURE__ */ jsx53(
31337
31338
  Column,
@@ -31343,21 +31344,54 @@ function NavMenu({ highlightColor, className, style, children, ...props }) {
31343
31344
  }
31344
31345
  );
31345
31346
  }
31347
+ function NavMenuGroup({
31348
+ title,
31349
+ allowMinimize,
31350
+ isMinimized,
31351
+ className,
31352
+ children,
31353
+ ...props
31354
+ }) {
31355
+ const [minimized, setMinimized] = useState15(!!isMinimized);
31356
+ return /* @__PURE__ */ jsxs29(
31357
+ Column,
31358
+ {
31359
+ ...props,
31360
+ className: (0, import_classnames38.default)(NavMenu_default.group, className, minimized && NavMenu_default.minimized),
31361
+ children: [
31362
+ /* @__PURE__ */ jsxs29(
31363
+ Row,
31364
+ {
31365
+ className: (0, import_classnames38.default)(NavMenu_default.title, NavMenu_default.item),
31366
+ alignItems: "center",
31367
+ justifyContent: "space-between",
31368
+ onClick: () => setMinimized(!minimized),
31369
+ children: [
31370
+ /* @__PURE__ */ jsx53(Text, { transform: "uppercase", size: "1", weight: "bold", color: true, children: title }),
31371
+ /* @__PURE__ */ jsx53(Icon2, { rotate: minimized ? 0 : 90, children: /* @__PURE__ */ jsx53(ChevronRight, {}) })
31372
+ ]
31373
+ }
31374
+ ),
31375
+ !minimized && children
31376
+ ]
31377
+ }
31378
+ );
31379
+ }
31346
31380
  function NavMenuItem({ isSelected, className, children, ...props }) {
31347
31381
  return /* @__PURE__ */ jsx53(Row, { ...props, className: (0, import_classnames38.default)(NavMenu_default.item, className, isSelected && NavMenu_default.selected), children });
31348
31382
  }
31349
31383
 
31350
31384
  // src/components/PasswordField.tsx
31351
- import { useState as useState15 } from "react";
31385
+ import { useState as useState16 } from "react";
31352
31386
  var import_classnames39 = __toESM(require_classnames());
31353
- import { Fragment as Fragment9, jsx as jsx54, jsxs as jsxs29 } from "react/jsx-runtime";
31387
+ import { Fragment as Fragment9, jsx as jsx54, jsxs as jsxs30 } from "react/jsx-runtime";
31354
31388
  function PasswordField({ label, className, ...props }) {
31355
- const [show, setShow] = useState15(false);
31389
+ const [show, setShow] = useState16(false);
31356
31390
  const type = show ? "text" : "password";
31357
31391
  const handleShowPassword = () => setShow((state) => !state);
31358
- return /* @__PURE__ */ jsxs29(Fragment9, { children: [
31392
+ return /* @__PURE__ */ jsxs30(Fragment9, { children: [
31359
31393
  label && /* @__PURE__ */ jsx54(Label2, { children: label }),
31360
- /* @__PURE__ */ jsxs29($bcdf0525bf22703d$export$2c73285ae9390cec, { "aria-label": "Password", ...props, className: (0, import_classnames39.default)(TextField_default.field, className), children: [
31394
+ /* @__PURE__ */ jsxs30($bcdf0525bf22703d$export$2c73285ae9390cec, { "aria-label": "Password", ...props, className: (0, import_classnames39.default)(TextField_default.field, className), children: [
31361
31395
  /* @__PURE__ */ jsx54($3985021b0ad6602f$export$f5b8910cec6cf069, { type }),
31362
31396
  /* @__PURE__ */ jsx54(Icon2, { onClick: handleShowPassword, children: show ? /* @__PURE__ */ jsx54(EyeSlash_default, {}) : /* @__PURE__ */ jsx54(Eye_default, {}) })
31363
31397
  ] })
@@ -31383,10 +31417,10 @@ var import_classnames41 = __toESM(require_classnames());
31383
31417
  var ProgressBar_default = { "progressbar": "ProgressBar_progressbar__ODNkN", "track": "ProgressBar_track__OWI0N", "fill": "ProgressBar_fill__NWJiZ", "value": "ProgressBar_value__YTBjM" };
31384
31418
 
31385
31419
  // src/components/ProgressBar.tsx
31386
- import { Fragment as Fragment10, jsx as jsx56, jsxs as jsxs30 } from "react/jsx-runtime";
31420
+ import { Fragment as Fragment10, jsx as jsx56, jsxs as jsxs31 } from "react/jsx-runtime";
31387
31421
  function ProgressBar2({ className, showPercentage, ...props }) {
31388
31422
  return /* @__PURE__ */ jsx56($0393f8ab869a0f1a$export$c17561cb55d4db30, { ...props, className: (0, import_classnames41.default)(ProgressBar_default.progressbar, className), children: ({ percentage = 0, valueText }) => {
31389
- return /* @__PURE__ */ jsxs30(Fragment10, { children: [
31423
+ return /* @__PURE__ */ jsxs31(Fragment10, { children: [
31390
31424
  /* @__PURE__ */ jsx56("div", { className: ProgressBar_default.track, children: /* @__PURE__ */ jsx56("div", { className: ProgressBar_default.fill, style: { width: `${percentage}%` } }) }),
31391
31425
  showPercentage && /* @__PURE__ */ jsx56("div", { className: ProgressBar_default.value, children: valueText })
31392
31426
  ] });
@@ -31400,14 +31434,14 @@ var import_classnames42 = __toESM(require_classnames());
31400
31434
  var ProgressCircle_default = { "progresscircle": "ProgressCircle_progresscircle__NjRiY", "track": "ProgressCircle_track__N2I0M", "fill": "ProgressCircle_fill__NmQyM", "value": "ProgressCircle_value__YjZmY" };
31401
31435
 
31402
31436
  // src/components/ProgressCircle.tsx
31403
- import { Fragment as Fragment11, jsx as jsx57, jsxs as jsxs31 } from "react/jsx-runtime";
31437
+ import { Fragment as Fragment11, jsx as jsx57, jsxs as jsxs32 } from "react/jsx-runtime";
31404
31438
  function ProgressCircle({ className, showPercentage, ...props }) {
31405
31439
  return /* @__PURE__ */ jsx57($0393f8ab869a0f1a$export$c17561cb55d4db30, { ...props, className: (0, import_classnames42.default)(ProgressCircle_default.progresscircle, className), children: ({ percentage = 0, valueText }) => {
31406
31440
  const radius = 45;
31407
31441
  const circumference = radius * 2 * Math.PI;
31408
31442
  const offset = circumference - percentage / 100 * circumference;
31409
- return /* @__PURE__ */ jsxs31(Fragment11, { children: [
31410
- /* @__PURE__ */ jsxs31("svg", { viewBox: "0 0 100 100", xmlns: "http://www.w3.org/2000/svg", children: [
31443
+ return /* @__PURE__ */ jsxs32(Fragment11, { children: [
31444
+ /* @__PURE__ */ jsxs32("svg", { viewBox: "0 0 100 100", xmlns: "http://www.w3.org/2000/svg", children: [
31411
31445
  /* @__PURE__ */ jsx57("circle", { className: ProgressCircle_default.track, cx: "50", cy: "50", r: "45" }),
31412
31446
  /* @__PURE__ */ jsx57(
31413
31447
  "circle",
@@ -31433,7 +31467,7 @@ var import_classnames43 = __toESM(require_classnames());
31433
31467
  var RadioGroup_default = { "radiogroup": "RadioGroup_radiogroup__MDk2O", "inputs": "RadioGroup_inputs__MDM5N", "radio": "RadioGroup_radio__ZTcxN", "variant-circle": "RadioGroup_variant-circle__NTAyM", "variant-box": "RadioGroup_variant-box__ZjY4N" };
31434
31468
 
31435
31469
  // src/components/RadioGroup.tsx
31436
- import { jsx as jsx58, jsxs as jsxs32 } from "react/jsx-runtime";
31470
+ import { jsx as jsx58, jsxs as jsxs33 } from "react/jsx-runtime";
31437
31471
  function RadioGroup2({
31438
31472
  variant = "circle",
31439
31473
  label,
@@ -31441,7 +31475,7 @@ function RadioGroup2({
31441
31475
  className,
31442
31476
  ...props
31443
31477
  }) {
31444
- return /* @__PURE__ */ jsxs32(
31478
+ return /* @__PURE__ */ jsxs33(
31445
31479
  $b6c3ddc6086f204d$export$a98f0dcb43a68a25,
31446
31480
  {
31447
31481
  "aria-label": "RadioGroup",
@@ -31459,9 +31493,9 @@ function Radio2({ children, className, ...props }) {
31459
31493
  }
31460
31494
 
31461
31495
  // src/components/SearchField.tsx
31462
- import { useState as useState16, useEffect as useEffect12 } from "react";
31496
+ import { useState as useState17, useEffect as useEffect12 } from "react";
31463
31497
  var import_classnames44 = __toESM(require_classnames());
31464
- import { Fragment as Fragment12, jsx as jsx59, jsxs as jsxs33 } from "react/jsx-runtime";
31498
+ import { Fragment as Fragment12, jsx as jsx59, jsxs as jsxs34 } from "react/jsx-runtime";
31465
31499
  function SearchField2({
31466
31500
  label,
31467
31501
  placeholder,
@@ -31473,7 +31507,7 @@ function SearchField2({
31473
31507
  className,
31474
31508
  ...props
31475
31509
  }) {
31476
- const [search, setSearch] = useState16(defaultValue);
31510
+ const [search, setSearch] = useState17(defaultValue);
31477
31511
  const searchValue = useDebounce(search, delay);
31478
31512
  const handleChange = (value2) => {
31479
31513
  setSearch(value2);
@@ -31492,9 +31526,9 @@ function SearchField2({
31492
31526
  onSearch?.(searchValue);
31493
31527
  }
31494
31528
  }, [searchValue, delay]);
31495
- return /* @__PURE__ */ jsxs33(Fragment12, { children: [
31529
+ return /* @__PURE__ */ jsxs34(Fragment12, { children: [
31496
31530
  label && /* @__PURE__ */ jsx59(Label2, { children: label }),
31497
- /* @__PURE__ */ jsxs33(
31531
+ /* @__PURE__ */ jsxs34(
31498
31532
  $440f4836bcb56932$export$b94867ecbd698f21,
31499
31533
  {
31500
31534
  "aria-label": "Search",
@@ -31512,14 +31546,14 @@ function SearchField2({
31512
31546
  }
31513
31547
 
31514
31548
  // src/components/Select.tsx
31515
- import { useState as useState17 } from "react";
31549
+ import { useState as useState18 } from "react";
31516
31550
  var import_classnames45 = __toESM(require_classnames());
31517
31551
 
31518
31552
  // css-modules:/Users/mikecao/Development/umami-software/react-zen/src/components/Select.module.css
31519
31553
  var Select_default = { "select": "Select_select__ODY1Y", "button": "Select_button__YjA0M", "value": "Select_value__NTlkY", "list": "Select_list__MTc1Z", "search": "Select_search__N2I3N" };
31520
31554
 
31521
31555
  // src/components/Select.tsx
31522
- import { jsx as jsx60, jsxs as jsxs34 } from "react/jsx-runtime";
31556
+ import { jsx as jsx60, jsxs as jsxs35 } from "react/jsx-runtime";
31523
31557
  function Select2({
31524
31558
  items = [],
31525
31559
  value,
@@ -31540,7 +31574,7 @@ function Select2({
31540
31574
  children,
31541
31575
  ...props
31542
31576
  }) {
31543
- const [search, setSearch] = useState17("");
31577
+ const [search, setSearch] = useState18("");
31544
31578
  const handleChange = (e) => {
31545
31579
  onSelectionChange?.(e);
31546
31580
  onChange?.(e);
@@ -31549,7 +31583,7 @@ function Select2({
31549
31583
  setSearch(value2);
31550
31584
  onSearch?.(value2);
31551
31585
  };
31552
- return /* @__PURE__ */ jsxs34(
31586
+ return /* @__PURE__ */ jsxs35(
31553
31587
  $82d7e5349645de74$export$ef9b1a59e592288f,
31554
31588
  {
31555
31589
  "aria-label": "Select",
@@ -31566,13 +31600,13 @@ function Select2({
31566
31600
  variant: "outline",
31567
31601
  ...buttonProps,
31568
31602
  className: (0, import_classnames45.default)(Select_default.button, buttonProps?.className),
31569
- children: /* @__PURE__ */ jsxs34("div", { className: Select_default.value, children: [
31603
+ children: /* @__PURE__ */ jsxs35("div", { className: Select_default.value, children: [
31570
31604
  /* @__PURE__ */ jsx60($82d7e5349645de74$export$e288731fd71264f0, { children: renderValue }),
31571
31605
  /* @__PURE__ */ jsx60(Icon2, { "aria-hidden": "true", rotate: 90, size: "sm", children: /* @__PURE__ */ jsx60(ChevronRight, {}) })
31572
31606
  ] })
31573
31607
  }
31574
31608
  ),
31575
- /* @__PURE__ */ jsx60(Popover2, { ...popoverProps, children: /* @__PURE__ */ jsxs34("div", { className: Select_default.list, children: [
31609
+ /* @__PURE__ */ jsx60(Popover2, { ...popoverProps, children: /* @__PURE__ */ jsxs35("div", { className: Select_default.list, children: [
31576
31610
  allowSearch && /* @__PURE__ */ jsx60(
31577
31611
  SearchField2,
31578
31612
  {
@@ -31608,7 +31642,7 @@ import { createContext as createContext4, useContext as useContext6 } from "reac
31608
31642
  var Sidebar_default = { "sidenav": "Sidebar_sidenav__OGRiM", "header": "Sidebar_header__ZTZhN", "name": "Sidebar_name__YWUwM", "section": "Sidebar_section__NDE3M", "title": "Sidebar_title__Njc2M", "content": "Sidebar_content__YmIwN", "item": "Sidebar_item__ZDVjZ", "label": "Sidebar_label__MWUzO", "collapsed": "Sidebar_collapsed__ZjFkM", "muted": "Sidebar_muted__YjM1M", "selected": "Sidebar_selected__MTdkY", "variant-quiet": "Sidebar_variant-quiet__MzFlN", "variant-1": "Sidebar_variant-1__ZTY2M", "variant-2": "Sidebar_variant-2__YzU0O", "variant-3": "Sidebar_variant-3__YWRmM", "noborder": "Sidebar_noborder__ODBlM" };
31609
31643
 
31610
31644
  // src/components/Sidebar.tsx
31611
- import { jsx as jsx61, jsxs as jsxs35 } from "react/jsx-runtime";
31645
+ import { jsx as jsx61, jsxs as jsxs36 } from "react/jsx-runtime";
31612
31646
  var SidebarContext = createContext4(null);
31613
31647
  function Sidebar({
31614
31648
  variant = "1",
@@ -31641,7 +31675,7 @@ function SidebarSection({
31641
31675
  children,
31642
31676
  ...props
31643
31677
  }) {
31644
- return /* @__PURE__ */ jsxs35(Column, { ...props, className: (0, import_classnames46.default)(Sidebar_default.section, className), children: [
31678
+ return /* @__PURE__ */ jsxs36(Column, { ...props, className: (0, import_classnames46.default)(Sidebar_default.section, className), children: [
31645
31679
  title && /* @__PURE__ */ jsx61("div", { className: Sidebar_default.title, children: title }),
31646
31680
  /* @__PURE__ */ jsx61("div", { className: Sidebar_default.content, children })
31647
31681
  ] });
@@ -31653,7 +31687,7 @@ function SidebarHeader({
31653
31687
  children,
31654
31688
  ...props
31655
31689
  }) {
31656
- return /* @__PURE__ */ jsxs35(Row, { ...props, className: (0, import_classnames46.default)(Sidebar_default.header, className), children: [
31690
+ return /* @__PURE__ */ jsxs36(Row, { ...props, className: (0, import_classnames46.default)(Sidebar_default.header, className), children: [
31657
31691
  icon && /* @__PURE__ */ jsx61(Icon2, { size: "sm", children: icon }),
31658
31692
  /* @__PURE__ */ jsx61("div", { className: (0, import_classnames46.default)(Sidebar_default.name, Sidebar_default.label), children: label }),
31659
31693
  children
@@ -31668,8 +31702,8 @@ function SidebarItem({
31668
31702
  ...props
31669
31703
  }) {
31670
31704
  const { isCollapsed } = useContext6(SidebarContext);
31671
- return /* @__PURE__ */ jsxs35($4e3b923658d69c60$export$8c610744efcf8a1d, { delay: 0, closeDelay: 0, isDisabled: !isCollapsed, children: [
31672
- /* @__PURE__ */ jsx61($f645667febf57a63$export$35a3bebf7ef2d934, { children: /* @__PURE__ */ jsxs35(
31705
+ return /* @__PURE__ */ jsxs36($4e3b923658d69c60$export$8c610744efcf8a1d, { delay: 0, closeDelay: 0, isDisabled: !isCollapsed, children: [
31706
+ /* @__PURE__ */ jsx61($f645667febf57a63$export$35a3bebf7ef2d934, { children: /* @__PURE__ */ jsxs36(
31673
31707
  Row,
31674
31708
  {
31675
31709
  ...props,
@@ -31692,16 +31726,16 @@ var import_classnames47 = __toESM(require_classnames());
31692
31726
  var Slider_default = { "slider": "Slider_slider__ODQ1M", "header": "Slider_header__NmYzN", "track": "Slider_track__Y2M4O", "fill": "Slider_fill__MWM4N", "thumb": "Slider_thumb__NGU2Z" };
31693
31727
 
31694
31728
  // src/components/Slider.tsx
31695
- import { Fragment as Fragment13, jsx as jsx62, jsxs as jsxs36 } from "react/jsx-runtime";
31729
+ import { Fragment as Fragment13, jsx as jsx62, jsxs as jsxs37 } from "react/jsx-runtime";
31696
31730
  function Slider2({ className, showValue = true, label, ...props }) {
31697
- return /* @__PURE__ */ jsxs36($6f909507e6374d18$export$472062a354075cee, { ...props, className: (0, import_classnames47.default)(Slider_default.slider, className), children: [
31698
- /* @__PURE__ */ jsxs36("div", { className: Slider_default.header, children: [
31731
+ return /* @__PURE__ */ jsxs37($6f909507e6374d18$export$472062a354075cee, { ...props, className: (0, import_classnames47.default)(Slider_default.slider, className), children: [
31732
+ /* @__PURE__ */ jsxs37("div", { className: Slider_default.header, children: [
31699
31733
  label && /* @__PURE__ */ jsx62(Label2, { className: Slider_default.label, children: label }),
31700
31734
  showValue && /* @__PURE__ */ jsx62($6f909507e6374d18$export$a590f758a961cb5b, { className: Slider_default.output })
31701
31735
  ] }),
31702
31736
  /* @__PURE__ */ jsx62($6f909507e6374d18$export$105594979f116971, { className: Slider_default.track, children: ({ state }) => {
31703
31737
  const isHorizontal = state.orientation === "horizontal";
31704
- return /* @__PURE__ */ jsxs36(Fragment13, { children: [
31738
+ return /* @__PURE__ */ jsxs37(Fragment13, { children: [
31705
31739
  /* @__PURE__ */ jsx62(
31706
31740
  "div",
31707
31741
  {
@@ -31724,10 +31758,10 @@ var import_classnames48 = __toESM(require_classnames());
31724
31758
  var StatusLight_default = { "statuslight": "StatusLight_statuslight__M2FhZ", "status": "StatusLight_status__MzIxM", "bg": "StatusLight_bg__ZjZlZ", "success": "StatusLight_success__OWM0N", "warning": "StatusLight_warning__MGM1M", "error": "StatusLight_error__NzRmM", "active": "StatusLight_active__MTBiN", "inactive": "StatusLight_inactive__NWJlM" };
31725
31759
 
31726
31760
  // src/components/StatusLight.tsx
31727
- import { jsx as jsx63, jsxs as jsxs37 } from "react/jsx-runtime";
31761
+ import { jsx as jsx63, jsxs as jsxs38 } from "react/jsx-runtime";
31728
31762
  function StatusLight(props) {
31729
31763
  const { color, variant = "inactive", children, className, ...domProps } = props;
31730
- return /* @__PURE__ */ jsxs37("div", { ...domProps, className: (0, import_classnames48.default)(StatusLight_default.statuslight, className), children: [
31764
+ return /* @__PURE__ */ jsxs38("div", { ...domProps, className: (0, import_classnames48.default)(StatusLight_default.statuslight, className), children: [
31731
31765
  /* @__PURE__ */ jsx63("div", { className: StatusLight_default.bg, children: /* @__PURE__ */ jsx63(
31732
31766
  "div",
31733
31767
  {
@@ -31746,11 +31780,11 @@ var import_classnames49 = __toESM(require_classnames());
31746
31780
  var Switch_default = { "switch": "Switch_switch__NTVjN", "track": "Switch_track__MTE2N", "knob": "Switch_knob__OWYwN" };
31747
31781
 
31748
31782
  // src/components/Switch.tsx
31749
- import { jsx as jsx64, jsxs as jsxs38 } from "react/jsx-runtime";
31783
+ import { jsx as jsx64, jsxs as jsxs39 } from "react/jsx-runtime";
31750
31784
  function Switch2({ label, children, className, ...props }) {
31751
- return /* @__PURE__ */ jsxs38(Column, { children: [
31785
+ return /* @__PURE__ */ jsxs39(Column, { children: [
31752
31786
  label && /* @__PURE__ */ jsx64(Label2, { children: label }),
31753
- /* @__PURE__ */ jsxs38($8e59e948500a8fe1$export$b5d5cf8927ab7262, { ...props, className: (0, import_classnames49.default)(Switch_default.switch, className), children: [
31787
+ /* @__PURE__ */ jsxs39($8e59e948500a8fe1$export$b5d5cf8927ab7262, { ...props, className: (0, import_classnames49.default)(Switch_default.switch, className), children: [
31754
31788
  /* @__PURE__ */ jsx64("div", { className: Switch_default.track, children: /* @__PURE__ */ jsx64("div", { className: Switch_default.knob }) }),
31755
31789
  children
31756
31790
  ] })
@@ -31782,7 +31816,7 @@ var import_classnames50 = __toESM(require_classnames());
31782
31816
  var ThemeButton_default = { "button": "ThemeButton_button__OWVmZ" };
31783
31817
 
31784
31818
  // src/components/ThemeButton.tsx
31785
- import { jsx as jsx66, jsxs as jsxs39 } from "react/jsx-runtime";
31819
+ import { jsx as jsx66, jsxs as jsxs40 } from "react/jsx-runtime";
31786
31820
  function ThemeButton({
31787
31821
  className,
31788
31822
  variant = "quiet",
@@ -31807,7 +31841,7 @@ function ThemeButton({
31807
31841
  setTheme2(theme === "light" ? "dark" : "light");
31808
31842
  onPress?.(e);
31809
31843
  }
31810
- return /* @__PURE__ */ jsxs39(
31844
+ return /* @__PURE__ */ jsxs40(
31811
31845
  Button2,
31812
31846
  {
31813
31847
  ...props,
@@ -31832,10 +31866,10 @@ var import_classnames51 = __toESM(require_classnames());
31832
31866
  var Toggle_default = { "toggle": "Toggle_toggle__NGNlM" };
31833
31867
 
31834
31868
  // src/components/Toggle.tsx
31835
- import { Fragment as Fragment14, jsx as jsx67, jsxs as jsxs40 } from "react/jsx-runtime";
31869
+ import { Fragment as Fragment14, jsx as jsx67, jsxs as jsxs41 } from "react/jsx-runtime";
31836
31870
  function Toggle({ label, children, className, ...props }) {
31837
31871
  const isSelected = typeof props.value !== "undefined" ? !!props.value : void 0;
31838
- return /* @__PURE__ */ jsxs40(Fragment14, { children: [
31872
+ return /* @__PURE__ */ jsxs41(Fragment14, { children: [
31839
31873
  label && /* @__PURE__ */ jsx67(Label2, { children: label }),
31840
31874
  /* @__PURE__ */ jsx67(
31841
31875
  $efde0372d7a700fe$export$d2b052e7b4be1756,
@@ -31856,7 +31890,7 @@ var import_classnames52 = __toESM(require_classnames());
31856
31890
  var ToggleGroup_default = { "group": "ToggleGroup_group__ZWE2N", "list": "ToggleGroup_list__NjRhN", "item": "ToggleGroup_item__MTZiN", "primary": "ToggleGroup_primary__Y2ExN" };
31857
31891
 
31858
31892
  // src/components/ToggleGroup.tsx
31859
- import { jsx as jsx68, jsxs as jsxs41 } from "react/jsx-runtime";
31893
+ import { jsx as jsx68, jsxs as jsxs42 } from "react/jsx-runtime";
31860
31894
  function ToggleGroup({
31861
31895
  label,
31862
31896
  value,
@@ -31875,7 +31909,7 @@ function ToggleGroup({
31875
31909
  onSelectionChange?.(keys);
31876
31910
  onChange?.(Array.from(keys).map((k) => k.toString()));
31877
31911
  };
31878
- return /* @__PURE__ */ jsxs41(
31912
+ return /* @__PURE__ */ jsxs42(
31879
31913
  $eaf9e70818b436db$export$67ea30858aaf75e3,
31880
31914
  {
31881
31915
  ...props,
@@ -31956,6 +31990,7 @@ export {
31956
31990
  $3674c52c6b3c5bce$export$27d2ad3c5815583e as MenuTrigger,
31957
31991
  Modal2 as Modal,
31958
31992
  NavMenu,
31993
+ NavMenuGroup,
31959
31994
  NavMenuItem,
31960
31995
  Navbar,
31961
31996
  NavbarContext,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umami/react-zen",
3
- "version": "0.147.0",
3
+ "version": "0.148.0",
4
4
  "description": "Modern, minimalist React component library",
5
5
  "author": "Umami <hello@umami.is>",
6
6
  "license": "MIT",
package/styles.css CHANGED
@@ -4711,12 +4711,12 @@ body a.Button_button__MDE1O {
4711
4711
  }
4712
4712
 
4713
4713
  /* virtual-css:css:ce310178c027bd5704a97ff6406d1f4f */
4714
- .NavMenu_navmenu__MDVmZ {
4714
+ .NavMenu_navmenu__NzU4Y {
4715
4715
  font-size: var(--font-size);
4716
4716
  width: 100%;
4717
4717
  gap: var(--spacing-2);
4718
4718
  }
4719
- .NavMenu_item__OWJiY {
4719
+ .NavMenu_item__MzUzO {
4720
4720
  color: var(--font-color-muted);
4721
4721
  gap: var(--gap);
4722
4722
  padding: var(--padding);
@@ -4732,12 +4732,15 @@ body a.Button_button__MDE1O {
4732
4732
  color: var(--font-color);
4733
4733
  background: var(--highlight-color);
4734
4734
  }
4735
- &.NavMenu_selected__ZDRiM {
4735
+ &.NavMenu_selected__MGM3O {
4736
4736
  color: var(--font-color);
4737
4737
  background: var(--highlight-color);
4738
4738
  font-weight: var(--font-weight-bold);
4739
4739
  }
4740
4740
  }
4741
+ .NavMenu_group__NDg1M {
4742
+ gap: var(--gap);
4743
+ }
4741
4744
 
4742
4745
  /* virtual-css:css:2684f3f399522c75740ad06c94a6137d */
4743
4746
  .Popover_popover__NDdlY[data-placement=top] {