@umami/react-zen 0.147.0 → 0.149.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] {
@@ -4618,37 +4621,41 @@ body a.Button_button__MDE1O {
4618
4621
  }
4619
4622
 
4620
4623
  /* virtual-css:css:e81ca83878ceb2dba8f2cfa72b015b4c */
4621
- .Sidebar_sidenav__OGRiM {
4624
+ :root {
4625
+ --sidebar-expanded-width: 260px;
4626
+ --sidebar-collapsed-width: 68px;
4627
+ }
4628
+ .Sidebar_sidebar__YWUyN {
4622
4629
  height: 100%;
4623
4630
  font-size: var(--font-size);
4624
4631
  border-right: 1px solid var(--border-color);
4625
- width: 200px;
4632
+ width: var(--sidebar-expanded-width);
4626
4633
  overflow: hidden;
4627
4634
  transition: width 0.1s ease-out;
4628
4635
  }
4629
- .Sidebar_header__ZTZhN {
4636
+ .Sidebar_header__MmM1Y {
4630
4637
  display: flex;
4631
4638
  align-items: center;
4632
4639
  gap: var(--gap);
4633
4640
  padding: var(--padding);
4634
4641
  }
4635
- .Sidebar_name__YWUwM {
4642
+ .Sidebar_name__ZjQ0Z {
4636
4643
  font-weight: var(--font-weight-bold);
4637
4644
  }
4638
- .Sidebar_section__NDE3M {
4645
+ .Sidebar_section__MWE3N {
4639
4646
  padding: var(--spacing-3);
4640
4647
  overflow: hidden;
4641
4648
  }
4642
- .Sidebar_title__Njc2M {
4649
+ .Sidebar_title__NDMwM {
4643
4650
  font-weight: var(--font-weight-bold);
4644
4651
  }
4645
- .Sidebar_content__YmIwN {
4652
+ .Sidebar_content__MDBlM {
4646
4653
  display: grid;
4647
4654
  min-height: 40px;
4648
4655
  gap: var(--gap);
4649
4656
  overflow: hidden;
4650
4657
  }
4651
- .Sidebar_item__ZDVjZ {
4658
+ .Sidebar_item__ZDA4Z {
4652
4659
  display: flex;
4653
4660
  align-items: center;
4654
4661
  justify-content: flex-start;
@@ -4662,61 +4669,61 @@ body a.Button_button__MDE1O {
4662
4669
  white-space: nowrap;
4663
4670
  overflow: hidden;
4664
4671
  }
4665
- .Sidebar_item__ZDVjZ:hover {
4672
+ .Sidebar_item__ZDA4Z:hover {
4666
4673
  color: var(--font-color);
4667
4674
  }
4668
- .Sidebar_label__MWUzO {
4675
+ .Sidebar_label__ODNmM {
4669
4676
  opacity: 1;
4670
4677
  width: 100%;
4671
4678
  transition: all 0.3s;
4672
4679
  }
4673
- .Sidebar_collapsed__ZjFkM .Sidebar_label__MWUzO {
4680
+ .Sidebar_collapsed__ZGE3M .Sidebar_label__ODNmM {
4674
4681
  opacity: 0;
4675
4682
  width: 0;
4676
4683
  transition: all 0.3s;
4677
4684
  }
4678
- .Sidebar_collapsed__ZjFkM {
4679
- width: 68px;
4685
+ .Sidebar_collapsed__ZGE3M {
4686
+ width: var(--sidebar-collapsed-width);
4680
4687
  transition: width 0.2s ease-in-out;
4681
4688
  }
4682
- .Sidebar_muted__YjM1M .Sidebar_item__ZDVjZ {
4689
+ .Sidebar_muted__ZGI2O .Sidebar_item__ZDA4Z {
4683
4690
  color: var(--font-color-muted);
4684
4691
  }
4685
- .Sidebar_muted__YjM1M .Sidebar_item__ZDVjZ:hover {
4692
+ .Sidebar_muted__ZGI2O .Sidebar_item__ZDA4Z:hover {
4686
4693
  color: var(--font-color);
4687
4694
  }
4688
- .Sidebar_muted__YjM1M .Sidebar_item__ZDVjZ.Sidebar_selected__MTdkY {
4695
+ .Sidebar_muted__ZGI2O .Sidebar_item__ZDA4Z.Sidebar_selected__ZTk5M {
4689
4696
  color: var(--font-color);
4690
4697
  }
4691
- .Sidebar_variant-quiet__MzFlN {
4698
+ .Sidebar_variant-quiet__ODNlY {
4692
4699
  background: transparent;
4693
- & .Sidebar_item__ZDVjZ:hover,
4694
- .Sidebar_selected__MTdkY {
4700
+ & .Sidebar_item__ZDA4Z:hover,
4701
+ .Sidebar_selected__ZTk5M {
4695
4702
  background: var(--base-color-2);
4696
4703
  }
4697
4704
  }
4698
- .Sidebar_variant-1__ZTY2M {
4705
+ .Sidebar_variant-1__ZWRiO {
4699
4706
  background: var(--base-color-1);
4700
- & .Sidebar_item__ZDVjZ:hover,
4701
- .Sidebar_selected__MTdkY {
4707
+ & .Sidebar_item__ZDA4Z:hover,
4708
+ .Sidebar_selected__ZTk5M {
4702
4709
  background: var(--base-color-2);
4703
4710
  }
4704
4711
  }
4705
- .Sidebar_variant-2__YzU0O {
4712
+ .Sidebar_variant-2__YzNlO {
4706
4713
  background: var(--base-color-2);
4707
- & .Sidebar_item__ZDVjZ:hover,
4708
- .Sidebar_selected__MTdkY {
4714
+ & .Sidebar_item__ZDA4Z:hover,
4715
+ .Sidebar_selected__ZTk5M {
4709
4716
  background: var(--base-color-3);
4710
4717
  }
4711
4718
  }
4712
- .Sidebar_variant-3__YWRmM {
4719
+ .Sidebar_variant-3__YmZiN {
4713
4720
  background: var(--base-color-3);
4714
- & .Sidebar_item__ZDVjZ:hover,
4715
- .Sidebar_selected__MTdkY {
4721
+ & .Sidebar_item__ZDA4Z:hover,
4722
+ .Sidebar_selected__ZTk5M {
4716
4723
  background: var(--base-color-4);
4717
4724
  }
4718
4725
  }
4719
- .Sidebar_sidenav__OGRiM.Sidebar_noborder__ODBlM {
4726
+ .Sidebar_sidebar__YWUyN.Sidebar_noborder__ZjYwZ {
4720
4727
  border: 0;
4721
4728
  }
4722
4729
 
@@ -4842,55 +4849,57 @@ body a.Button_button__MDE1O {
4842
4849
  }
4843
4850
 
4844
4851
  /* virtual-css:css:cbe0b95a27006b7a9f50c85d359272dc */
4845
- .Switch_switch__NTVjN {
4852
+ :root {
4853
+ --switch-knob-size: 16px;
4854
+ --switch-knob-border-size: 2px;
4855
+ }
4856
+ .Switch_switch__ODFhM {
4846
4857
  position: relative;
4847
4858
  display: flex;
4848
4859
  align-items: center;
4849
4860
  font-size: var(--font-size);
4850
4861
  color: var(--font-color);
4851
4862
  gap: var(--gap);
4852
- --knob-size: 16px;
4853
- --knob-border-size: 2px;
4854
4863
  }
4855
- .Switch_track__MTE2N {
4864
+ .Switch_track__YTU0N {
4856
4865
  position: relative;
4857
4866
  display: flex;
4858
4867
  align-items: center;
4859
- width: calc((var(--knob-size) + var(--knob-border-size)) * 2);
4860
- height: calc(var(--knob-size) + var(--knob-border-size) * 2);
4861
- border: var(--knob-border-size) solid transparent;
4862
- border-radius: calc(var(--knob-size) + var(--knob-border-size) * 2);
4868
+ width: calc((var(--switch-knob-size) + var(--switch-knob-border-size)) * 2);
4869
+ height: calc(var(--switch-knob-size) + var(--switch-knob-border-size) * 2);
4870
+ border: var(--switch-knob-border-size) solid transparent;
4871
+ border-radius: calc(var(--switch-knob-size) + var(--switch-knob-border-size) * 2);
4863
4872
  background: var(--base-color-3);
4864
4873
  transition: background-color 0.2s;
4865
4874
  cursor: pointer;
4866
4875
  outline: 1px solid var(--border-color);
4867
4876
  }
4868
- .Switch_knob__OWYwN {
4869
- width: var(--knob-size);
4870
- height: var(--knob-size);
4877
+ .Switch_knob__YWNjN {
4878
+ width: var(--switch-knob-size);
4879
+ height: var(--switch-knob-size);
4871
4880
  border-radius: 100%;
4872
4881
  background: var(--background-color);
4873
4882
  transition: all 0.2s;
4874
4883
  box-shadow: var(--box-shadow-2);
4875
4884
  outline: 1px solid var(--border-color);
4876
4885
  }
4877
- .Switch_switch__NTVjN[data-selected] .Switch_track__MTE2N {
4886
+ .Switch_switch__ODFhM[data-selected] .Switch_track__YTU0N {
4878
4887
  outline-color: var(--primary-color);
4879
4888
  background: var(--primary-color);
4880
4889
  }
4881
- .Switch_switch__NTVjN[data-selected] .Switch_knob__OWYwN {
4882
- margin-left: var(--knob-size);
4890
+ .Switch_switch__ODFhM[data-selected] .Switch_knob__YWNjN {
4891
+ margin-left: var(--switch-knob-size);
4883
4892
  outline-color: var(--primary-color);
4884
4893
  }
4885
- .Switch_switch__NTVjN[data-disabled] {
4894
+ .Switch_switch__ODFhM[data-disabled] {
4886
4895
  color: var(--font-color-disabled);
4887
4896
  pointer-events: none;
4888
4897
  }
4889
- .Switch_switch__NTVjN[data-disabled] .Switch_track__MTE2N {
4898
+ .Switch_switch__ODFhM[data-disabled] .Switch_track__YTU0N {
4890
4899
  background: var(--base-color-3);
4891
4900
  outline-color: var(--base-color-3);
4892
4901
  }
4893
- .Switch_switch__NTVjN[data-disabled] .Switch_knob__OWYwN {
4902
+ .Switch_switch__ODFhM[data-disabled] .Switch_knob__YWNjN {
4894
4903
  background: var(--base-color-1);
4895
4904
  outline-color: var(--base-color-1);
4896
4905
  }
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,15 +31747,15 @@ 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
31719
- 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" };
31754
+ var Sidebar_default = { "sidebar": "Sidebar_sidebar__YWUyN", "header": "Sidebar_header__MmM1Y", "name": "Sidebar_name__ZjQ0Z", "section": "Sidebar_section__MWE3N", "title": "Sidebar_title__NDMwM", "content": "Sidebar_content__MDBlM", "item": "Sidebar_item__ZDA4Z", "label": "Sidebar_label__ODNmM", "collapsed": "Sidebar_collapsed__ZGE3M", "muted": "Sidebar_muted__ZGI2O", "selected": "Sidebar_selected__ZTk5M", "variant-quiet": "Sidebar_variant-quiet__ODNlY", "variant-1": "Sidebar_variant-1__ZWRiO", "variant-2": "Sidebar_variant-2__YzNlO", "variant-3": "Sidebar_variant-3__YmZiN", "noborder": "Sidebar_noborder__ZjYwZ" };
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,
@@ -31735,7 +31770,7 @@ function Sidebar({
31735
31770
  {
31736
31771
  ...props,
31737
31772
  className: (0, import_classnames46.default)(
31738
- Sidebar_default.sidenav,
31773
+ Sidebar_default.sidebar,
31739
31774
  isCollapsed && Sidebar_default.collapsed,
31740
31775
  muteItems && Sidebar_default.muted,
31741
31776
  variant && Sidebar_default[`variant-${variant}`],
@@ -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,
@@ -31854,7 +31889,7 @@ function StatusLight(props) {
31854
31889
  var import_classnames49 = __toESM(require_classnames());
31855
31890
 
31856
31891
  // css-modules:/Users/mikecao/Development/umami-software/react-zen/src/components/Switch.module.css
31857
- var Switch_default = { "switch": "Switch_switch__NTVjN", "track": "Switch_track__MTE2N", "knob": "Switch_knob__OWYwN" };
31892
+ var Switch_default = { "switch": "Switch_switch__ODFhM", "track": "Switch_track__YTU0N", "knob": "Switch_knob__YWNjN" };
31858
31893
 
31859
31894
  // src/components/Switch.tsx
31860
31895
  var import_jsx_runtime64 = require("react/jsx-runtime");
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
  {
@@ -31605,10 +31639,10 @@ var import_classnames46 = __toESM(require_classnames());
31605
31639
  import { createContext as createContext4, useContext as useContext6 } from "react";
31606
31640
 
31607
31641
  // css-modules:/Users/mikecao/Development/umami-software/react-zen/src/components/Sidebar.module.css
31608
- 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" };
31642
+ var Sidebar_default = { "sidebar": "Sidebar_sidebar__YWUyN", "header": "Sidebar_header__MmM1Y", "name": "Sidebar_name__ZjQ0Z", "section": "Sidebar_section__MWE3N", "title": "Sidebar_title__NDMwM", "content": "Sidebar_content__MDBlM", "item": "Sidebar_item__ZDA4Z", "label": "Sidebar_label__ODNmM", "collapsed": "Sidebar_collapsed__ZGE3M", "muted": "Sidebar_muted__ZGI2O", "selected": "Sidebar_selected__ZTk5M", "variant-quiet": "Sidebar_variant-quiet__ODNlY", "variant-1": "Sidebar_variant-1__ZWRiO", "variant-2": "Sidebar_variant-2__YzNlO", "variant-3": "Sidebar_variant-3__YmZiN", "noborder": "Sidebar_noborder__ZjYwZ" };
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",
@@ -31624,7 +31658,7 @@ function Sidebar({
31624
31658
  {
31625
31659
  ...props,
31626
31660
  className: (0, import_classnames46.default)(
31627
- Sidebar_default.sidenav,
31661
+ Sidebar_default.sidebar,
31628
31662
  isCollapsed && Sidebar_default.collapsed,
31629
31663
  muteItems && Sidebar_default.muted,
31630
31664
  variant && Sidebar_default[`variant-${variant}`],
@@ -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
  {
@@ -31743,14 +31777,14 @@ function StatusLight(props) {
31743
31777
  var import_classnames49 = __toESM(require_classnames());
31744
31778
 
31745
31779
  // css-modules:/Users/mikecao/Development/umami-software/react-zen/src/components/Switch.module.css
31746
- var Switch_default = { "switch": "Switch_switch__NTVjN", "track": "Switch_track__MTE2N", "knob": "Switch_knob__OWYwN" };
31780
+ var Switch_default = { "switch": "Switch_switch__ODFhM", "track": "Switch_track__YTU0N", "knob": "Switch_knob__YWNjN" };
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.149.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] {
@@ -4936,37 +4939,41 @@ body a.Button_button__MDE1O {
4936
4939
  }
4937
4940
 
4938
4941
  /* virtual-css:css:e81ca83878ceb2dba8f2cfa72b015b4c */
4939
- .Sidebar_sidenav__OGRiM {
4942
+ :root {
4943
+ --sidebar-expanded-width: 260px;
4944
+ --sidebar-collapsed-width: 68px;
4945
+ }
4946
+ .Sidebar_sidebar__YWUyN {
4940
4947
  height: 100%;
4941
4948
  font-size: var(--font-size);
4942
4949
  border-right: 1px solid var(--border-color);
4943
- width: 200px;
4950
+ width: var(--sidebar-expanded-width);
4944
4951
  overflow: hidden;
4945
4952
  transition: width 0.1s ease-out;
4946
4953
  }
4947
- .Sidebar_header__ZTZhN {
4954
+ .Sidebar_header__MmM1Y {
4948
4955
  display: flex;
4949
4956
  align-items: center;
4950
4957
  gap: var(--gap);
4951
4958
  padding: var(--padding);
4952
4959
  }
4953
- .Sidebar_name__YWUwM {
4960
+ .Sidebar_name__ZjQ0Z {
4954
4961
  font-weight: var(--font-weight-bold);
4955
4962
  }
4956
- .Sidebar_section__NDE3M {
4963
+ .Sidebar_section__MWE3N {
4957
4964
  padding: var(--spacing-3);
4958
4965
  overflow: hidden;
4959
4966
  }
4960
- .Sidebar_title__Njc2M {
4967
+ .Sidebar_title__NDMwM {
4961
4968
  font-weight: var(--font-weight-bold);
4962
4969
  }
4963
- .Sidebar_content__YmIwN {
4970
+ .Sidebar_content__MDBlM {
4964
4971
  display: grid;
4965
4972
  min-height: 40px;
4966
4973
  gap: var(--gap);
4967
4974
  overflow: hidden;
4968
4975
  }
4969
- .Sidebar_item__ZDVjZ {
4976
+ .Sidebar_item__ZDA4Z {
4970
4977
  display: flex;
4971
4978
  align-items: center;
4972
4979
  justify-content: flex-start;
@@ -4980,61 +4987,61 @@ body a.Button_button__MDE1O {
4980
4987
  white-space: nowrap;
4981
4988
  overflow: hidden;
4982
4989
  }
4983
- .Sidebar_item__ZDVjZ:hover {
4990
+ .Sidebar_item__ZDA4Z:hover {
4984
4991
  color: var(--font-color);
4985
4992
  }
4986
- .Sidebar_label__MWUzO {
4993
+ .Sidebar_label__ODNmM {
4987
4994
  opacity: 1;
4988
4995
  width: 100%;
4989
4996
  transition: all 0.3s;
4990
4997
  }
4991
- .Sidebar_collapsed__ZjFkM .Sidebar_label__MWUzO {
4998
+ .Sidebar_collapsed__ZGE3M .Sidebar_label__ODNmM {
4992
4999
  opacity: 0;
4993
5000
  width: 0;
4994
5001
  transition: all 0.3s;
4995
5002
  }
4996
- .Sidebar_collapsed__ZjFkM {
4997
- width: 68px;
5003
+ .Sidebar_collapsed__ZGE3M {
5004
+ width: var(--sidebar-collapsed-width);
4998
5005
  transition: width 0.2s ease-in-out;
4999
5006
  }
5000
- .Sidebar_muted__YjM1M .Sidebar_item__ZDVjZ {
5007
+ .Sidebar_muted__ZGI2O .Sidebar_item__ZDA4Z {
5001
5008
  color: var(--font-color-muted);
5002
5009
  }
5003
- .Sidebar_muted__YjM1M .Sidebar_item__ZDVjZ:hover {
5010
+ .Sidebar_muted__ZGI2O .Sidebar_item__ZDA4Z:hover {
5004
5011
  color: var(--font-color);
5005
5012
  }
5006
- .Sidebar_muted__YjM1M .Sidebar_item__ZDVjZ.Sidebar_selected__MTdkY {
5013
+ .Sidebar_muted__ZGI2O .Sidebar_item__ZDA4Z.Sidebar_selected__ZTk5M {
5007
5014
  color: var(--font-color);
5008
5015
  }
5009
- .Sidebar_variant-quiet__MzFlN {
5016
+ .Sidebar_variant-quiet__ODNlY {
5010
5017
  background: transparent;
5011
- & .Sidebar_item__ZDVjZ:hover,
5012
- .Sidebar_selected__MTdkY {
5018
+ & .Sidebar_item__ZDA4Z:hover,
5019
+ .Sidebar_selected__ZTk5M {
5013
5020
  background: var(--base-color-2);
5014
5021
  }
5015
5022
  }
5016
- .Sidebar_variant-1__ZTY2M {
5023
+ .Sidebar_variant-1__ZWRiO {
5017
5024
  background: var(--base-color-1);
5018
- & .Sidebar_item__ZDVjZ:hover,
5019
- .Sidebar_selected__MTdkY {
5025
+ & .Sidebar_item__ZDA4Z:hover,
5026
+ .Sidebar_selected__ZTk5M {
5020
5027
  background: var(--base-color-2);
5021
5028
  }
5022
5029
  }
5023
- .Sidebar_variant-2__YzU0O {
5030
+ .Sidebar_variant-2__YzNlO {
5024
5031
  background: var(--base-color-2);
5025
- & .Sidebar_item__ZDVjZ:hover,
5026
- .Sidebar_selected__MTdkY {
5032
+ & .Sidebar_item__ZDA4Z:hover,
5033
+ .Sidebar_selected__ZTk5M {
5027
5034
  background: var(--base-color-3);
5028
5035
  }
5029
5036
  }
5030
- .Sidebar_variant-3__YWRmM {
5037
+ .Sidebar_variant-3__YmZiN {
5031
5038
  background: var(--base-color-3);
5032
- & .Sidebar_item__ZDVjZ:hover,
5033
- .Sidebar_selected__MTdkY {
5039
+ & .Sidebar_item__ZDA4Z:hover,
5040
+ .Sidebar_selected__ZTk5M {
5034
5041
  background: var(--base-color-4);
5035
5042
  }
5036
5043
  }
5037
- .Sidebar_sidenav__OGRiM.Sidebar_noborder__ODBlM {
5044
+ .Sidebar_sidebar__YWUyN.Sidebar_noborder__ZjYwZ {
5038
5045
  border: 0;
5039
5046
  }
5040
5047
 
@@ -5160,55 +5167,57 @@ body a.Button_button__MDE1O {
5160
5167
  }
5161
5168
 
5162
5169
  /* virtual-css:css:cbe0b95a27006b7a9f50c85d359272dc */
5163
- .Switch_switch__NTVjN {
5170
+ :root {
5171
+ --switch-knob-size: 16px;
5172
+ --switch-knob-border-size: 2px;
5173
+ }
5174
+ .Switch_switch__ODFhM {
5164
5175
  position: relative;
5165
5176
  display: flex;
5166
5177
  align-items: center;
5167
5178
  font-size: var(--font-size);
5168
5179
  color: var(--font-color);
5169
5180
  gap: var(--gap);
5170
- --knob-size: 16px;
5171
- --knob-border-size: 2px;
5172
5181
  }
5173
- .Switch_track__MTE2N {
5182
+ .Switch_track__YTU0N {
5174
5183
  position: relative;
5175
5184
  display: flex;
5176
5185
  align-items: center;
5177
- width: calc((var(--knob-size) + var(--knob-border-size)) * 2);
5178
- height: calc(var(--knob-size) + var(--knob-border-size) * 2);
5179
- border: var(--knob-border-size) solid transparent;
5180
- border-radius: calc(var(--knob-size) + var(--knob-border-size) * 2);
5186
+ width: calc((var(--switch-knob-size) + var(--switch-knob-border-size)) * 2);
5187
+ height: calc(var(--switch-knob-size) + var(--switch-knob-border-size) * 2);
5188
+ border: var(--switch-knob-border-size) solid transparent;
5189
+ border-radius: calc(var(--switch-knob-size) + var(--switch-knob-border-size) * 2);
5181
5190
  background: var(--base-color-3);
5182
5191
  transition: background-color 0.2s;
5183
5192
  cursor: pointer;
5184
5193
  outline: 1px solid var(--border-color);
5185
5194
  }
5186
- .Switch_knob__OWYwN {
5187
- width: var(--knob-size);
5188
- height: var(--knob-size);
5195
+ .Switch_knob__YWNjN {
5196
+ width: var(--switch-knob-size);
5197
+ height: var(--switch-knob-size);
5189
5198
  border-radius: 100%;
5190
5199
  background: var(--background-color);
5191
5200
  transition: all 0.2s;
5192
5201
  box-shadow: var(--box-shadow-2);
5193
5202
  outline: 1px solid var(--border-color);
5194
5203
  }
5195
- .Switch_switch__NTVjN[data-selected] .Switch_track__MTE2N {
5204
+ .Switch_switch__ODFhM[data-selected] .Switch_track__YTU0N {
5196
5205
  outline-color: var(--primary-color);
5197
5206
  background: var(--primary-color);
5198
5207
  }
5199
- .Switch_switch__NTVjN[data-selected] .Switch_knob__OWYwN {
5200
- margin-left: var(--knob-size);
5208
+ .Switch_switch__ODFhM[data-selected] .Switch_knob__YWNjN {
5209
+ margin-left: var(--switch-knob-size);
5201
5210
  outline-color: var(--primary-color);
5202
5211
  }
5203
- .Switch_switch__NTVjN[data-disabled] {
5212
+ .Switch_switch__ODFhM[data-disabled] {
5204
5213
  color: var(--font-color-disabled);
5205
5214
  pointer-events: none;
5206
5215
  }
5207
- .Switch_switch__NTVjN[data-disabled] .Switch_track__MTE2N {
5216
+ .Switch_switch__ODFhM[data-disabled] .Switch_track__YTU0N {
5208
5217
  background: var(--base-color-3);
5209
5218
  outline-color: var(--base-color-3);
5210
5219
  }
5211
- .Switch_switch__NTVjN[data-disabled] .Switch_knob__OWYwN {
5220
+ .Switch_switch__ODFhM[data-disabled] .Switch_knob__YWNjN {
5212
5221
  background: var(--base-color-1);
5213
5222
  outline-color: var(--base-color-1);
5214
5223
  }