@commercetools/nimbus 0.0.0-canary-20251023155107 → 0.0.0-canary-20251024075337

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.
Files changed (39) hide show
  1. package/dist/chunks/{localized-field-DUVUwcg1.es.js → localized-field-D4HBEdq0.es.js} +2 -2
  2. package/dist/chunks/{localized-field-DUVUwcg1.es.js.map → localized-field-D4HBEdq0.es.js.map} +1 -1
  3. package/dist/chunks/{localized-field-Bf0Cw_ok.cjs.js → localized-field-u03KZc2G.cjs.js} +2 -2
  4. package/dist/chunks/{localized-field-Bf0Cw_ok.cjs.js.map → localized-field-u03KZc2G.cjs.js.map} +1 -1
  5. package/dist/chunks/menu-CvowvbXh.es.js +263 -0
  6. package/dist/chunks/menu-CvowvbXh.es.js.map +1 -0
  7. package/dist/chunks/{menu-BwvV9d6-.cjs.js → menu-DK0AShnF.cjs.js} +2 -2
  8. package/dist/chunks/menu-DK0AShnF.cjs.js.map +1 -0
  9. package/dist/chunks/{rich-text-input-CYTQBdtv.cjs.js → rich-text-input-B41QcSHY.cjs.js} +2 -2
  10. package/dist/chunks/{rich-text-input-CYTQBdtv.cjs.js.map → rich-text-input-B41QcSHY.cjs.js.map} +1 -1
  11. package/dist/chunks/{rich-text-input-d2ztVFjc.es.js → rich-text-input-BGVyDm30.es.js} +2 -2
  12. package/dist/chunks/{rich-text-input-d2ztVFjc.es.js.map → rich-text-input-BGVyDm30.es.js.map} +1 -1
  13. package/dist/chunks/{split-button-D76dk27b.cjs.js → split-button-C8BsVNhR.cjs.js} +2 -2
  14. package/dist/chunks/{split-button-D76dk27b.cjs.js.map → split-button-C8BsVNhR.cjs.js.map} +1 -1
  15. package/dist/chunks/{split-button-B36Wmkbs.es.js → split-button-YwopMYuE.es.js} +2 -2
  16. package/dist/chunks/{split-button-B36Wmkbs.es.js.map → split-button-YwopMYuE.es.js.map} +1 -1
  17. package/dist/components/localized-field.cjs +1 -1
  18. package/dist/components/localized-field.es.js +1 -1
  19. package/dist/components/menu/components/index.d.ts +7 -0
  20. package/dist/components/menu/components/menu.content.d.ts +5 -0
  21. package/dist/components/menu/components/menu.item.d.ts +5 -0
  22. package/dist/components/menu/components/menu.root.d.ts +5 -0
  23. package/dist/components/menu/components/menu.section-label.d.ts +3 -1
  24. package/dist/components/menu/components/menu.section.d.ts +5 -0
  25. package/dist/components/menu/components/menu.submenu-trigger.d.ts +5 -0
  26. package/dist/components/menu/components/menu.submenu.d.ts +5 -0
  27. package/dist/components/menu/components/menu.trigger.d.ts +5 -0
  28. package/dist/components/menu/menu.d.ts +117 -8
  29. package/dist/components/menu/menu.types.d.ts +1 -1
  30. package/dist/components/rich-text-input.cjs +1 -1
  31. package/dist/components/rich-text-input.es.js +1 -1
  32. package/dist/components/split-button.cjs +1 -1
  33. package/dist/components/split-button.es.js +1 -1
  34. package/dist/index.cjs +1 -1
  35. package/dist/index.es.js +5 -5
  36. package/package.json +5 -5
  37. package/dist/chunks/menu-BwvV9d6-.cjs.js.map +0 -1
  38. package/dist/chunks/menu-oyta69vX.es.js +0 -147
  39. package/dist/chunks/menu-oyta69vX.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"split-button-B36Wmkbs.es.js","sources":["../../src/components/split-button/split-button.slots.tsx","../../src/components/split-button/split-button.tsx"],"sourcesContent":["import { createSlotRecipeContext } from \"@chakra-ui/react\";\nimport type { SlotComponent } from \"@/type-utils\";\nimport type {\n SplitButtonRootSlotProps,\n SplitButtonButtonGroupSlotProps,\n SplitButtonPrimaryButtonSlotProps,\n SplitButtonTriggerSlotProps,\n} from \"./split-button.types\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({\n key: \"splitButton\",\n});\n\n// Root Container\nexport const SplitButtonRootSlot: SlotComponent<\n HTMLDivElement,\n SplitButtonRootSlotProps\n> = withProvider<HTMLDivElement, SplitButtonRootSlotProps>(\"div\", \"root\");\n\n// Button Group Container\nexport const SplitButtonButtonGroupSlot = withContext<\n HTMLDivElement,\n SplitButtonButtonGroupSlotProps\n>(\"div\", \"buttonGroup\");\n\n// Primary Action Button\nexport const SplitButtonPrimaryButtonSlot = withContext<\n HTMLButtonElement,\n SplitButtonPrimaryButtonSlotProps\n>(\"button\", \"primaryButton\");\n\n// Dropdown Trigger Button\nexport const SplitButtonTriggerSlot = withContext<\n HTMLButtonElement,\n SplitButtonTriggerSlotProps\n>(\"button\", \"dropdownTrigger\");\n","import React from \"react\";\nimport { Button } from \"@/components/button\";\nimport { IconButton } from \"@/components/icon-button\";\nimport { Menu } from \"@/components/menu\";\nimport { Icon } from \"@/components/icon\";\nimport type { SplitButtonProps } from \"./split-button.types\";\nimport {\n SplitButtonRootSlot,\n SplitButtonButtonGroupSlot,\n SplitButtonPrimaryButtonSlot,\n SplitButtonTriggerSlot,\n} from \"./split-button.slots\";\nimport { KeyboardArrowDown } from \"@commercetools/nimbus-icons\";\n\n// Re-export types\nexport type * from \"./split-button.types\";\n\n/**\n * # SplitButton\n *\n * A split-button component that combines a primary action button with a dropdown menu.\n *\n * Shows a primary action button + dropdown trigger. The primary button automatically\n * executes the first enabled Menu.Item action, while the dropdown trigger opens a menu\n * with all available options.\n *\n * Use with Menu.Item, Menu.Section, and Separator components for content.\n */\nexport const SplitButton = (props: SplitButtonProps) => {\n const {\n size = \"md\",\n variant = \"solid\",\n tone,\n isDisabled = false,\n \"aria-label\": ariaLabel,\n onAction,\n isOpen,\n defaultOpen,\n onOpenChange,\n icon,\n } = props;\n\n const buttonProps = { size, variant, tone };\n\n /**\n * CORE CONCEPT: In split button mode, we need to populate the primary button\n * with content from a Menu.Item (specified by defaultAction prop).\n *\n * Why this complexity exists:\n * - Users define actions as <Menu.Item id=\"save\">Save Document</Menu.Item>\n * - We need to extract \"Save Document\" text to show on the primary button\n * - Menu.Items can be nested inside Menu.Section components\n * - We need to handle disabled states and fallbacks\n */\n\n // Type guards for safe prop access\n type MenuItemProps = {\n id: string;\n children: React.ReactNode;\n isDisabled?: boolean;\n isCritical?: boolean;\n };\n\n type ComponentWithChildren = {\n children: React.ReactNode;\n };\n\n // Check if element is a Menu.Item with required props\n const isMenuItemWithId = (\n element: React.ReactNode\n ): element is React.ReactElement<MenuItemProps> => {\n if (!React.isValidElement(element) || !element.props) return false;\n const props = element.props as Record<string, unknown>;\n return \"id\" in props && typeof props.id === \"string\";\n };\n\n // Check if element has children prop\n const hasChildren = (\n element: React.ReactNode\n ): element is React.ReactElement<ComponentWithChildren> => {\n if (!React.isValidElement(element) || !element.props) return false;\n const props = element.props as Record<string, unknown>;\n return \"children\" in props;\n };\n\n // All children are menu items\n const menuItems = props.children;\n\n /**\n * Check if there are any actionable (enabled) Menu.Items in the children.\n * This is used to determine if the dropdown trigger should be disabled.\n */\n const hasActionableMenuItems = (children: React.ReactNode): boolean => {\n let hasActionable = false;\n\n React.Children.forEach(children, (child) => {\n if (hasActionable) return;\n\n // Check if this is an enabled Menu.Item\n if (isMenuItemWithId(child) && !child.props.isDisabled) {\n hasActionable = true;\n return;\n }\n\n // Recurse into Menu.Section or any component with children\n if (hasChildren(child)) {\n hasActionable = hasActionableMenuItems(child.props.children);\n }\n });\n\n return hasActionable;\n };\n\n /**\n * Find the primary Menu.Item using the same logic as the original PrimaryActionDropdown.\n * Selects the first enabled Menu.Item, or falls back to the first Menu.Item if all are disabled.\n */\n const findPrimaryMenuItem = () => {\n const allMenuItems: Array<{\n content: React.ReactNode;\n isDisabled: boolean;\n actionId: string | null;\n }> = [];\n\n // Recursively collect all Menu.Items from children (including nested ones)\n const collectMenuItems = (children: React.ReactNode): void => {\n React.Children.forEach(children, (child) => {\n if (isMenuItemWithId(child)) {\n allMenuItems.push({\n content: child.props.children,\n isDisabled: child.props.isDisabled || false,\n actionId: child.props.id,\n });\n }\n\n // Recurse into Menu.Section or any component with children\n if (hasChildren(child)) {\n collectMenuItems(child.props.children);\n }\n });\n };\n\n collectMenuItems(menuItems);\n\n // Find first enabled Menu.Item, or fallback to first Menu.Item\n const primaryMenuItem =\n allMenuItems.find((item) => !item.isDisabled) || allMenuItems[0];\n\n return (\n primaryMenuItem || {\n // TODO: Localize this\n content: \"No actions available\",\n isDisabled: true,\n actionId: null,\n }\n );\n };\n\n // Check if there are any actionable menu items for dropdown functionality\n const hasActionableItems = hasActionableMenuItems(menuItems);\n\n // Get the primary button content using smart selection\n const buttonContent = findPrimaryMenuItem();\n\n const executePrimaryAction = () => {\n if (!buttonContent.isDisabled && buttonContent.actionId && onAction) {\n onAction(buttonContent.actionId);\n }\n };\n\n const isPrimaryDisabled = isDisabled || buttonContent.isDisabled;\n const isDropdownTriggerDisabled = isDisabled || !hasActionableItems;\n\n return (\n <SplitButtonRootSlot variant={variant} data-mode=\"split\">\n <SplitButtonButtonGroupSlot>\n {/* Primary Action Button */}\n <SplitButtonPrimaryButtonSlot asChild>\n <Button\n {...buttonProps}\n isDisabled={isPrimaryDisabled}\n onPress={executePrimaryAction}\n >\n {icon && <Icon>{icon}</Icon>}\n {buttonContent.content}\n </Button>\n </SplitButtonPrimaryButtonSlot>\n\n {/* Menu Trigger and Dropdown */}\n <Menu.Root\n trigger=\"press\"\n isOpen={isOpen}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n placement=\"bottom end\"\n selectionMode=\"none\"\n onAction={onAction ? (key) => onAction(String(key)) : undefined}\n >\n <Menu.Trigger asChild>\n <SplitButtonTriggerSlot asChild>\n <IconButton\n {...buttonProps}\n aria-label={ariaLabel}\n isDisabled={isDropdownTriggerDisabled}\n >\n <KeyboardArrowDown />\n </IconButton>\n </SplitButtonTriggerSlot>\n </Menu.Trigger>\n\n <Menu.Content>{menuItems}</Menu.Content>\n </Menu.Root>\n </SplitButtonButtonGroupSlot>\n </SplitButtonRootSlot>\n );\n};\n\nSplitButton.displayName = \"SplitButton\";\n\n// Export for internal use by react-docgen\nexport { SplitButton as _SplitButton };\n"],"names":["withProvider","withContext","createSlotRecipeContext","SplitButtonRootSlot","SplitButtonButtonGroupSlot","SplitButtonPrimaryButtonSlot","SplitButtonTriggerSlot","SplitButton","props","size","variant","tone","isDisabled","ariaLabel","onAction","isOpen","defaultOpen","onOpenChange","icon","buttonProps","isMenuItemWithId","element","React","hasChildren","menuItems","hasActionableMenuItems","children","hasActionable","child","findPrimaryMenuItem","allMenuItems","collectMenuItems","item","hasActionableItems","buttonContent","executePrimaryAction","isPrimaryDisabled","isDropdownTriggerDisabled","jsx","jsxs","Button","Icon","Menu","key","IconButton","KeyboardArrowDown"],"mappings":"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"}
1
+ {"version":3,"file":"split-button-YwopMYuE.es.js","sources":["../../src/components/split-button/split-button.slots.tsx","../../src/components/split-button/split-button.tsx"],"sourcesContent":["import { createSlotRecipeContext } from \"@chakra-ui/react\";\nimport type { SlotComponent } from \"@/type-utils\";\nimport type {\n SplitButtonRootSlotProps,\n SplitButtonButtonGroupSlotProps,\n SplitButtonPrimaryButtonSlotProps,\n SplitButtonTriggerSlotProps,\n} from \"./split-button.types\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({\n key: \"splitButton\",\n});\n\n// Root Container\nexport const SplitButtonRootSlot: SlotComponent<\n HTMLDivElement,\n SplitButtonRootSlotProps\n> = withProvider<HTMLDivElement, SplitButtonRootSlotProps>(\"div\", \"root\");\n\n// Button Group Container\nexport const SplitButtonButtonGroupSlot = withContext<\n HTMLDivElement,\n SplitButtonButtonGroupSlotProps\n>(\"div\", \"buttonGroup\");\n\n// Primary Action Button\nexport const SplitButtonPrimaryButtonSlot = withContext<\n HTMLButtonElement,\n SplitButtonPrimaryButtonSlotProps\n>(\"button\", \"primaryButton\");\n\n// Dropdown Trigger Button\nexport const SplitButtonTriggerSlot = withContext<\n HTMLButtonElement,\n SplitButtonTriggerSlotProps\n>(\"button\", \"dropdownTrigger\");\n","import React from \"react\";\nimport { Button } from \"@/components/button\";\nimport { IconButton } from \"@/components/icon-button\";\nimport { Menu } from \"@/components/menu\";\nimport { Icon } from \"@/components/icon\";\nimport type { SplitButtonProps } from \"./split-button.types\";\nimport {\n SplitButtonRootSlot,\n SplitButtonButtonGroupSlot,\n SplitButtonPrimaryButtonSlot,\n SplitButtonTriggerSlot,\n} from \"./split-button.slots\";\nimport { KeyboardArrowDown } from \"@commercetools/nimbus-icons\";\n\n// Re-export types\nexport type * from \"./split-button.types\";\n\n/**\n * # SplitButton\n *\n * A split-button component that combines a primary action button with a dropdown menu.\n *\n * Shows a primary action button + dropdown trigger. The primary button automatically\n * executes the first enabled Menu.Item action, while the dropdown trigger opens a menu\n * with all available options.\n *\n * Use with Menu.Item, Menu.Section, and Separator components for content.\n */\nexport const SplitButton = (props: SplitButtonProps) => {\n const {\n size = \"md\",\n variant = \"solid\",\n tone,\n isDisabled = false,\n \"aria-label\": ariaLabel,\n onAction,\n isOpen,\n defaultOpen,\n onOpenChange,\n icon,\n } = props;\n\n const buttonProps = { size, variant, tone };\n\n /**\n * CORE CONCEPT: In split button mode, we need to populate the primary button\n * with content from a Menu.Item (specified by defaultAction prop).\n *\n * Why this complexity exists:\n * - Users define actions as <Menu.Item id=\"save\">Save Document</Menu.Item>\n * - We need to extract \"Save Document\" text to show on the primary button\n * - Menu.Items can be nested inside Menu.Section components\n * - We need to handle disabled states and fallbacks\n */\n\n // Type guards for safe prop access\n type MenuItemProps = {\n id: string;\n children: React.ReactNode;\n isDisabled?: boolean;\n isCritical?: boolean;\n };\n\n type ComponentWithChildren = {\n children: React.ReactNode;\n };\n\n // Check if element is a Menu.Item with required props\n const isMenuItemWithId = (\n element: React.ReactNode\n ): element is React.ReactElement<MenuItemProps> => {\n if (!React.isValidElement(element) || !element.props) return false;\n const props = element.props as Record<string, unknown>;\n return \"id\" in props && typeof props.id === \"string\";\n };\n\n // Check if element has children prop\n const hasChildren = (\n element: React.ReactNode\n ): element is React.ReactElement<ComponentWithChildren> => {\n if (!React.isValidElement(element) || !element.props) return false;\n const props = element.props as Record<string, unknown>;\n return \"children\" in props;\n };\n\n // All children are menu items\n const menuItems = props.children;\n\n /**\n * Check if there are any actionable (enabled) Menu.Items in the children.\n * This is used to determine if the dropdown trigger should be disabled.\n */\n const hasActionableMenuItems = (children: React.ReactNode): boolean => {\n let hasActionable = false;\n\n React.Children.forEach(children, (child) => {\n if (hasActionable) return;\n\n // Check if this is an enabled Menu.Item\n if (isMenuItemWithId(child) && !child.props.isDisabled) {\n hasActionable = true;\n return;\n }\n\n // Recurse into Menu.Section or any component with children\n if (hasChildren(child)) {\n hasActionable = hasActionableMenuItems(child.props.children);\n }\n });\n\n return hasActionable;\n };\n\n /**\n * Find the primary Menu.Item using the same logic as the original PrimaryActionDropdown.\n * Selects the first enabled Menu.Item, or falls back to the first Menu.Item if all are disabled.\n */\n const findPrimaryMenuItem = () => {\n const allMenuItems: Array<{\n content: React.ReactNode;\n isDisabled: boolean;\n actionId: string | null;\n }> = [];\n\n // Recursively collect all Menu.Items from children (including nested ones)\n const collectMenuItems = (children: React.ReactNode): void => {\n React.Children.forEach(children, (child) => {\n if (isMenuItemWithId(child)) {\n allMenuItems.push({\n content: child.props.children,\n isDisabled: child.props.isDisabled || false,\n actionId: child.props.id,\n });\n }\n\n // Recurse into Menu.Section or any component with children\n if (hasChildren(child)) {\n collectMenuItems(child.props.children);\n }\n });\n };\n\n collectMenuItems(menuItems);\n\n // Find first enabled Menu.Item, or fallback to first Menu.Item\n const primaryMenuItem =\n allMenuItems.find((item) => !item.isDisabled) || allMenuItems[0];\n\n return (\n primaryMenuItem || {\n // TODO: Localize this\n content: \"No actions available\",\n isDisabled: true,\n actionId: null,\n }\n );\n };\n\n // Check if there are any actionable menu items for dropdown functionality\n const hasActionableItems = hasActionableMenuItems(menuItems);\n\n // Get the primary button content using smart selection\n const buttonContent = findPrimaryMenuItem();\n\n const executePrimaryAction = () => {\n if (!buttonContent.isDisabled && buttonContent.actionId && onAction) {\n onAction(buttonContent.actionId);\n }\n };\n\n const isPrimaryDisabled = isDisabled || buttonContent.isDisabled;\n const isDropdownTriggerDisabled = isDisabled || !hasActionableItems;\n\n return (\n <SplitButtonRootSlot variant={variant} data-mode=\"split\">\n <SplitButtonButtonGroupSlot>\n {/* Primary Action Button */}\n <SplitButtonPrimaryButtonSlot asChild>\n <Button\n {...buttonProps}\n isDisabled={isPrimaryDisabled}\n onPress={executePrimaryAction}\n >\n {icon && <Icon>{icon}</Icon>}\n {buttonContent.content}\n </Button>\n </SplitButtonPrimaryButtonSlot>\n\n {/* Menu Trigger and Dropdown */}\n <Menu.Root\n trigger=\"press\"\n isOpen={isOpen}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n placement=\"bottom end\"\n selectionMode=\"none\"\n onAction={onAction ? (key) => onAction(String(key)) : undefined}\n >\n <Menu.Trigger asChild>\n <SplitButtonTriggerSlot asChild>\n <IconButton\n {...buttonProps}\n aria-label={ariaLabel}\n isDisabled={isDropdownTriggerDisabled}\n >\n <KeyboardArrowDown />\n </IconButton>\n </SplitButtonTriggerSlot>\n </Menu.Trigger>\n\n <Menu.Content>{menuItems}</Menu.Content>\n </Menu.Root>\n </SplitButtonButtonGroupSlot>\n </SplitButtonRootSlot>\n );\n};\n\nSplitButton.displayName = \"SplitButton\";\n\n// Export for internal use by react-docgen\nexport { SplitButton as _SplitButton };\n"],"names":["withProvider","withContext","createSlotRecipeContext","SplitButtonRootSlot","SplitButtonButtonGroupSlot","SplitButtonPrimaryButtonSlot","SplitButtonTriggerSlot","SplitButton","props","size","variant","tone","isDisabled","ariaLabel","onAction","isOpen","defaultOpen","onOpenChange","icon","buttonProps","isMenuItemWithId","element","React","hasChildren","menuItems","hasActionableMenuItems","children","hasActionable","child","findPrimaryMenuItem","allMenuItems","collectMenuItems","item","hasActionableItems","buttonContent","executePrimaryAction","isPrimaryDisabled","isDropdownTriggerDisabled","jsx","jsxs","Button","Icon","Menu","key","IconButton","KeyboardArrowDown"],"mappings":";;;;;;;;AASA,MAAM,EAAE,cAAAA,GAAc,aAAAC,EAAA,IAAgB,gBAAAC,EAAwB;AAAA,EAC5D,KAAK;AACP,CAAC,GAGYC,IAGT,gBAAAH,EAAuD,OAAO,MAAM,GAG3DI,IAA6B,gBAAAH,EAGxC,OAAO,aAAa,GAGTI,IAA+B,gBAAAJ,EAG1C,UAAU,eAAe,GAGdK,IAAyB,gBAAAL,EAGpC,UAAU,iBAAiB,GCPhBM,IAAc,CAACC,MAA4B;AACtD,QAAM;AAAA,IACJ,MAAAC,IAAO;AAAA,IACP,SAAAC,IAAU;AAAA,IACV,MAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,cAAcC;AAAA,IACd,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,MAAAC;AAAA,EAAA,IACEV,GAEEW,IAAc,EAAE,MAAAV,GAAM,SAAAC,GAAS,MAAAC,EAAA,GA0B/BS,IAAmB,CACvBC,MACiD;AACjD,QAAI,CAACC,EAAM,eAAeD,CAAO,KAAK,CAACA,EAAQ,MAAO,QAAO;AAC7D,UAAMb,IAAQa,EAAQ;AACtB,WAAO,QAAQb,KAAS,OAAOA,EAAM,MAAO;AAAA,EAC9C,GAGMe,IAAc,CAClBF,MAEI,CAACC,EAAM,eAAeD,CAAO,KAAK,CAACA,EAAQ,QAAc,KAEtD,cADOA,EAAQ,OAKlBG,IAAYhB,EAAM,UAMlBiB,IAAyB,CAACC,MAAuC;AACrE,QAAIC,IAAgB;AAEpBL,WAAAA,EAAM,SAAS,QAAQI,GAAU,CAACE,MAAU;AAC1C,UAAI,CAAAD,GAGJ;AAAA,YAAIP,EAAiBQ,CAAK,KAAK,CAACA,EAAM,MAAM,YAAY;AACtD,UAAAD,IAAgB;AAChB;AAAA,QACF;AAGA,QAAIJ,EAAYK,CAAK,MACnBD,IAAgBF,EAAuBG,EAAM,MAAM,QAAQ;AAAA;AAAA,IAE/D,CAAC,GAEMD;AAAA,EACT,GAMME,IAAsB,MAAM;AAChC,UAAMC,IAID,CAAA,GAGCC,IAAmB,CAACL,MAAoC;AAC5DJ,MAAAA,EAAM,SAAS,QAAQI,GAAU,CAACE,MAAU;AAC1C,QAAIR,EAAiBQ,CAAK,KACxBE,EAAa,KAAK;AAAA,UAChB,SAASF,EAAM,MAAM;AAAA,UACrB,YAAYA,EAAM,MAAM,cAAc;AAAA,UACtC,UAAUA,EAAM,MAAM;AAAA,QAAA,CACvB,GAICL,EAAYK,CAAK,KACnBG,EAAiBH,EAAM,MAAM,QAAQ;AAAA,MAEzC,CAAC;AAAA,IACH;AAEA,WAAAG,EAAiBP,CAAS,GAIxBM,EAAa,KAAK,CAACE,MAAS,CAACA,EAAK,UAAU,KAAKF,EAAa,CAAC,KAG5C;AAAA;AAAA,MAEjB,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,IAAA;AAAA,EAGhB,GAGMG,IAAqBR,EAAuBD,CAAS,GAGrDU,IAAgBL,EAAA,GAEhBM,IAAuB,MAAM;AACjC,IAAI,CAACD,EAAc,cAAcA,EAAc,YAAYpB,KACzDA,EAASoB,EAAc,QAAQ;AAAA,EAEnC,GAEME,IAAoBxB,KAAcsB,EAAc,YAChDG,IAA4BzB,KAAc,CAACqB;AAEjD,2BACG9B,GAAA,EAAoB,SAAAO,GAAkB,aAAU,SAC/C,4BAACN,GAAA,EAEC,UAAA;AAAA,IAAA,gBAAAkC,EAACjC,GAAA,EAA6B,SAAO,IACnC,UAAA,gBAAAkC;AAAA,MAACC;AAAA,MAAA;AAAA,QACE,GAAGrB;AAAA,QACJ,YAAYiB;AAAA,QACZ,SAASD;AAAA,QAER,UAAA;AAAA,UAAAjB,KAAQ,gBAAAoB,EAACG,KAAM,UAAAvB,EAAA,CAAK;AAAA,UACpBgB,EAAc;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEnB;AAAA,IAGA,gBAAAK;AAAA,MAACG,EAAK;AAAA,MAAL;AAAA,QACC,SAAQ;AAAA,QACR,QAAA3B;AAAA,QACA,aAAAC;AAAA,QACA,cAAAC;AAAA,QACA,WAAU;AAAA,QACV,eAAc;AAAA,QACd,UAAUH,IAAW,CAAC6B,MAAQ7B,EAAS,OAAO6B,CAAG,CAAC,IAAI;AAAA,QAEtD,UAAA;AAAA,UAAA,gBAAAL,EAACI,EAAK,SAAL,EAAa,SAAO,IACnB,UAAA,gBAAAJ,EAAChC,GAAA,EAAuB,SAAO,IAC7B,UAAA,gBAAAgC;AAAA,YAACM;AAAA,YAAA;AAAA,cACE,GAAGzB;AAAA,cACJ,cAAYN;AAAA,cACZ,YAAYwB;AAAA,cAEZ,4BAACQ,GAAA,CAAA,CAAkB;AAAA,YAAA;AAAA,UAAA,GAEvB,EAAA,CACF;AAAA,UAEA,gBAAAP,EAACI,EAAK,SAAL,EAAc,UAAAlB,EAAA,CAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAC3B,EAAA,CACF,EAAA,CACF;AAEJ;AAEAjB,EAAY,cAAc;"}
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("../chunks/localized-field-Bf0Cw_ok.cjs.js");exports.LocalizedField=e.LocalizedField;
1
+ "use strict";const e=require("../chunks/localized-field-u03KZc2G.cjs.js");exports.LocalizedField=e.LocalizedField;
2
2
  //# sourceMappingURL=localized-field.cjs.map
@@ -1,4 +1,4 @@
1
- import { L as a } from "../chunks/localized-field-DUVUwcg1.es.js";
1
+ import { L as a } from "../chunks/localized-field-D4HBEdq0.es.js";
2
2
  export {
3
3
  a as LocalizedField
4
4
  };
@@ -0,0 +1,7 @@
1
+ export { MenuRoot } from './menu.root';
2
+ export { MenuTrigger } from './menu.trigger';
3
+ export { MenuContent } from './menu.content';
4
+ export { MenuItem } from './menu.item';
5
+ export { MenuSection } from './menu.section';
6
+ export { MenuSubmenuTrigger } from './menu.submenu-trigger';
7
+ export { MenuSubmenu } from './menu.submenu';
@@ -1,4 +1,9 @@
1
1
  import { MenuContentProps } from '../menu.types';
2
+ /**
3
+ * Menu.Content - The popover container that displays menu items
4
+ *
5
+ * @supportsStyleProps
6
+ */
2
7
  export declare const MenuContent: {
3
8
  ({ children, placement: placementOverride, ref, }: MenuContentProps): import("react/jsx-runtime").JSX.Element;
4
9
  displayName: string;
@@ -1,4 +1,9 @@
1
1
  import { MenuItemProps } from '../menu.types';
2
+ /**
3
+ * Menu.Item - An individual menu item that can be selected
4
+ *
5
+ * @supportsStyleProps
6
+ */
2
7
  export declare const MenuItem: {
3
8
  ({ children, isCritical, ref, ...props }: MenuItemProps): import("react/jsx-runtime").JSX.Element;
4
9
  displayName: string;
@@ -1,4 +1,9 @@
1
1
  import { MenuRootProps } from '../menu.types';
2
+ /**
3
+ * Menu.Root - Container component that provides configuration and state management
4
+ *
5
+ * @supportsStyleProps
6
+ */
2
7
  export declare const MenuRoot: {
3
8
  (props: MenuRootProps): import("react/jsx-runtime").JSX.Element;
4
9
  displayName: string;
@@ -1,6 +1,8 @@
1
1
  import { MenuSectionLabelProps } from '../menu.types';
2
2
  /**
3
- * Used in MenuSection for rendering the `label` property.
3
+ * Menu.SectionLabel - Used in MenuSection for rendering the `label` property
4
+ *
5
+ * @supportsStyleProps
4
6
  */
5
7
  export declare const MenuSectionLabel: {
6
8
  ({ children, ref, ...props }: MenuSectionLabelProps): import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,9 @@
1
1
  import { MenuSectionProps } from '../menu.types';
2
+ /**
3
+ * Menu.Section - Groups related menu items with an optional label
4
+ *
5
+ * @supportsStyleProps
6
+ */
2
7
  export declare const MenuSection: {
3
8
  <T extends object = object>({ children, ref, label, items, ...props }: MenuSectionProps<T>): import("react/jsx-runtime").JSX.Element;
4
9
  displayName: string;
@@ -1,4 +1,9 @@
1
1
  import { MenuSubmenuTriggerProps } from '../menu.types';
2
+ /**
3
+ * Menu.SubmenuTrigger - The trigger element for opening a submenu
4
+ *
5
+ * @supportsStyleProps
6
+ */
2
7
  export declare const MenuSubmenuTrigger: {
3
8
  ({ children, ...props }: MenuSubmenuTriggerProps): import("react/jsx-runtime").JSX.Element;
4
9
  displayName: string;
@@ -1,4 +1,9 @@
1
1
  import { MenuSubmenuProps } from '../menu.types';
2
+ /**
3
+ * Menu.Submenu - A nested menu that appears when hovering over or selecting a submenu trigger
4
+ *
5
+ * @supportsStyleProps
6
+ */
2
7
  export declare const MenuSubmenu: {
3
8
  ({ children, ...props }: MenuSubmenuProps): import("react/jsx-runtime").JSX.Element;
4
9
  displayName: string;
@@ -1,4 +1,9 @@
1
1
  import { MenuTriggerProps } from '../menu.types';
2
+ /**
3
+ * Menu.Trigger - The button or element that opens the menu when activated
4
+ *
5
+ * @supportsStyleProps
6
+ */
2
7
  export declare const MenuTrigger: {
3
8
  ({ children, asChild, ref, ...props }: MenuTriggerProps): import("react/jsx-runtime").JSX.Element;
4
9
  displayName: string;
@@ -1,36 +1,145 @@
1
- import { MenuRoot } from './components/menu.root';
2
- import { MenuTrigger } from './components/menu.trigger';
3
- import { MenuContent } from './components/menu.content';
4
- import { MenuItem } from './components/menu.item';
5
- import { MenuSection } from './components/menu.section';
6
- import { MenuSubmenuTrigger } from './components/menu.submenu-trigger';
7
- import { MenuSubmenu } from './components/menu.submenu';
8
- export type * from './menu.types';
1
+ import { MenuRoot, MenuTrigger, MenuContent, MenuItem, MenuSection, MenuSubmenuTrigger, MenuSubmenu } from './components';
9
2
  export declare const Menu: {
3
+ /**
4
+ * # Menu.Root
5
+ *
6
+ * The root container component that provides configuration and state management
7
+ * for the entire menu. Wraps MenuTrigger and handles open/close state.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * <Menu.Root onAction={(key) => console.log(key)}>
12
+ * <Menu.Trigger>Options</Menu.Trigger>
13
+ * <Menu.Content>
14
+ * <Menu.Item id="edit">Edit</Menu.Item>
15
+ * </Menu.Content>
16
+ * </Menu.Root>
17
+ * ```
18
+ */
10
19
  Root: {
11
20
  (props: import('./menu.types').MenuRootProps): import("react/jsx-runtime").JSX.Element;
12
21
  displayName: string;
13
22
  };
23
+ /**
24
+ * # Menu.Trigger
25
+ *
26
+ * The button or element that opens the menu when activated.
27
+ * Supports custom trigger elements via the `asChild` prop.
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * <Menu.Root>
32
+ * <Menu.Trigger>Open Menu</Menu.Trigger>
33
+ * <Menu.Content>...</Menu.Content>
34
+ * </Menu.Root>
35
+ * ```
36
+ */
14
37
  Trigger: {
15
38
  ({ children, asChild, ref, ...props }: import('./menu.types').MenuTriggerProps): import("react/jsx-runtime").JSX.Element;
16
39
  displayName: string;
17
40
  };
41
+ /**
42
+ * # Menu.Content
43
+ *
44
+ * The popover container that displays menu items. Automatically positions
45
+ * relative to the trigger and handles focus management.
46
+ *
47
+ * @example
48
+ * ```tsx
49
+ * <Menu.Root>
50
+ * <Menu.Trigger>Options</Menu.Trigger>
51
+ * <Menu.Content>
52
+ * <Menu.Item id="save">Save</Menu.Item>
53
+ * <Menu.Item id="delete">Delete</Menu.Item>
54
+ * </Menu.Content>
55
+ * </Menu.Root>
56
+ * ```
57
+ */
18
58
  Content: {
19
59
  ({ children, placement: placementOverride, ref, }: import('./menu.types').MenuContentProps): import("react/jsx-runtime").JSX.Element;
20
60
  displayName: string;
21
61
  };
62
+ /**
63
+ * # Menu.Item
64
+ *
65
+ * An individual menu item that can be selected. Supports icons, labels,
66
+ * descriptions, keyboard shortcuts, and critical styling.
67
+ *
68
+ * @example
69
+ * ```tsx
70
+ * <Menu.Item id="delete" isCritical>
71
+ * <Icon slot="icon"><Icons.Delete /></Icon>
72
+ * <Text slot="label">Delete</Text>
73
+ * <Text slot="description">Remove permanently</Text>
74
+ * <Kbd slot="keyboard">⌘⌫</Kbd>
75
+ * </Menu.Item>
76
+ * ```
77
+ */
22
78
  Item: {
23
79
  ({ children, isCritical, ref, ...props }: import('./menu.types').MenuItemProps): import("react/jsx-runtime").JSX.Element;
24
80
  displayName: string;
25
81
  };
82
+ /**
83
+ * # Menu.Section
84
+ *
85
+ * Groups related menu items with an optional label. Supports selection modes
86
+ * for single or multiple selections within the section.
87
+ *
88
+ * @example
89
+ * ```tsx
90
+ * <Menu.Content>
91
+ * <Menu.Section label="Edit Actions">
92
+ * <Menu.Item id="copy">Copy</Menu.Item>
93
+ * <Menu.Item id="paste">Paste</Menu.Item>
94
+ * </Menu.Section>
95
+ * </Menu.Content>
96
+ * ```
97
+ */
26
98
  Section: {
27
99
  <T extends object = object>({ children, ref, label, items, ...props }: import('./menu.types').MenuSectionProps<T>): import("react/jsx-runtime").JSX.Element;
28
100
  displayName: string;
29
101
  };
102
+ /**
103
+ * # Menu.Submenu
104
+ *
105
+ * A nested menu that appears when hovering over or selecting a submenu trigger.
106
+ * Automatically positioned to the side of the parent menu.
107
+ *
108
+ * @example
109
+ * ```tsx
110
+ * <Menu.Item>
111
+ * <Menu.SubmenuTrigger>
112
+ * <Text slot="label">More Options</Text>
113
+ * </Menu.SubmenuTrigger>
114
+ * <Menu.Submenu>
115
+ * <Menu.Item id="option1">Option 1</Menu.Item>
116
+ * </Menu.Submenu>
117
+ * </Menu.Item>
118
+ * ```
119
+ */
30
120
  Submenu: {
31
121
  ({ children, ...props }: import('./menu.types').MenuSubmenuProps): import("react/jsx-runtime").JSX.Element;
32
122
  displayName: string;
33
123
  };
124
+ /**
125
+ * # Menu.SubmenuTrigger
126
+ *
127
+ * The trigger element for opening a submenu. Must be used within a Menu.Item
128
+ * and paired with Menu.Submenu.
129
+ *
130
+ * @example
131
+ * ```tsx
132
+ * <Menu.Item>
133
+ * <Menu.SubmenuTrigger>
134
+ * <Text slot="label">Export</Text>
135
+ * </Menu.SubmenuTrigger>
136
+ * <Menu.Submenu>
137
+ * <Menu.Item id="pdf">PDF</Menu.Item>
138
+ * <Menu.Item id="csv">CSV</Menu.Item>
139
+ * </Menu.Submenu>
140
+ * </Menu.Item>
141
+ * ```
142
+ */
34
143
  SubmenuTrigger: {
35
144
  ({ children, ...props }: import('./menu.types').MenuSubmenuTriggerProps): import("react/jsx-runtime").JSX.Element;
36
145
  displayName: string;
@@ -14,7 +14,7 @@ export type MenuRootProps = Omit<RaMenuTriggerProps, "trigger" | "children"> & O
14
14
  /**
15
15
  * The trigger element and menu content
16
16
  */
17
- children: ReactNode;
17
+ children: RaMenuTriggerProps["children"];
18
18
  /**
19
19
  * The trigger event to use for the menu.
20
20
  * @default "press"
@@ -1,2 +1,2 @@
1
- "use strict";const t=require("../chunks/rich-text-input-CYTQBdtv.cjs.js");exports.RichTextInput=t.RichTextInput;
1
+ "use strict";const t=require("../chunks/rich-text-input-B41QcSHY.cjs.js");exports.RichTextInput=t.RichTextInput;
2
2
  //# sourceMappingURL=rich-text-input.cjs.map
@@ -1,4 +1,4 @@
1
- import { R as o } from "../chunks/rich-text-input-d2ztVFjc.es.js";
1
+ import { R as o } from "../chunks/rich-text-input-BGVyDm30.es.js";
2
2
  export {
3
3
  o as RichTextInput
4
4
  };
@@ -1,2 +1,2 @@
1
- "use strict";const t=require("../chunks/split-button-D76dk27b.cjs.js");exports.SplitButton=t.SplitButton;
1
+ "use strict";const t=require("../chunks/split-button-C8BsVNhR.cjs.js");exports.SplitButton=t.SplitButton;
2
2
  //# sourceMappingURL=split-button.cjs.map
@@ -1,4 +1,4 @@
1
- import { S as p } from "../chunks/split-button-B36Wmkbs.es.js";
1
+ import { S as p } from "../chunks/split-button-YwopMYuE.es.js";
2
2
  export {
3
3
  p as SplitButton
4
4
  };
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";const ae=require("./chunks/index-CxLKWOES.cjs.js"),Q=require("./chunks/rich-text-input-CYTQBdtv.cjs.js"),m=require("react"),ie=require("./chunks/avatar-BGM-BDJa.cjs.js"),ue=require("./chunks/box-CWni3A32.cjs.js"),ce=require("./chunks/button-CA3VvD2G.cjs.js"),se=require("./chunks/code-q31e3vT2.cjs.js"),x=require("./chunks/combobox-CKozWtj7.cjs.js"),le=require("./chunks/dialog-siPuFsFT.cjs.js"),Y=require("./chunks/field-errors-D2re_C_c.cjs.js"),_t=require("@chakra-ui/react/flex"),de=require("./chunks/group-Cjq5lNQD.cjs.js"),pe=require("./chunks/heading-DWweWKGQ.cjs.js"),me=require("./chunks/nimbus-i18n-provider-BbsapOze.cjs.js"),fe=require("./chunks/icon-button-B28VUff9.cjs.js"),ge=require("./chunks/icon-toggle-button-DPOco2hU.cjs.js"),be=require("./chunks/image-CGOYoc2s.cjs.js"),ye=require("./chunks/kbd-tKeWcdmy.cjs.js"),Ce=require("./chunks/link-CI7W-6L3.cjs.js"),E=require("./chunks/list-DJC9BmoC.cjs.js"),A=require("./chunks/draggable-list-B7Qhle4N.cjs.js"),Te=require("./chunks/simple-grid-Cd2MJxSX.cjs.js"),kt=require("@chakra-ui/react/table"),ve=require("./chunks/text-BtRhIklG.cjs.js"),G=require("./chunks/tooltip-Aar_qzmT.cjs.js"),he=require("./chunks/make-element-focusable-Cdmdc8sd.cjs.js"),Lt=require("react-intl"),Z=require("./chunks/nimbus-provider-DNBQi83M.cjs.js"),Se=require("./chunks/checkbox-Dzerp7O0.cjs.js"),qe=require("./chunks/collapsible-motion-TeGpQ5f7.cjs.js"),Ie=require("./chunks/stack-CIN13EDn.cjs.js"),we=require("./chunks/visually-hidden-BjtXUoFK.cjs.js"),De=require("./chunks/text-input-BO570MbY.cjs.js"),Re=require("./chunks/number-input-BUdRuDBZ.cjs.js"),_e=require("./chunks/grid-Chuw1xje.cjs.js"),k=require("./chunks/select-DLnPgZGL.cjs.js"),ke=require("./chunks/separator-Vxu9fPdc.cjs.js"),Le=require("./chunks/spacer-BvQD2vU1.cjs.js"),D=require("./chunks/accordion-D0ulscBP.cjs.js"),R=require("./chunks/alert-CC87lB5H.cjs.js"),xe=require("./chunks/badge-CDruffyj.cjs.js"),F=require("./chunks/card-SYS662CL.cjs.js"),I=require("./chunks/form-field-B9wlWUcK.cjs.js"),Ee=require("./chunks/icon-D39U--jA.cjs.js"),Ae=require("./chunks/inline-svg-Yb2OyzRw.cjs.js"),Fe=require("./chunks/loading-spinner-DsKcjJ2b.cjs.js"),Be=require("./chunks/password-input-Dtu0_JiV.cjs.js"),Me=require("./chunks/search-input-D4ISfjCg.cjs.js"),Pe=require("./chunks/scoped-search-input-COM1I724.cjs.js"),Oe=require("./chunks/split-button-D76dk27b.cjs.js"),Ke=require("./chunks/time-input-C8BWH8SA.cjs.js"),Ge=require("./chunks/multiline-text-input-CHM3_4FO.cjs.js"),Ne=require("./chunks/money-input-qNQdmjtx.cjs.js"),N=require("./chunks/radio-input-BYDBQDtr.cjs.js"),He=require("./chunks/switch-Dg4jxYqx.cjs.js"),je=require("./chunks/tag-group-Beqgbttp.cjs.js"),Ue=require("./chunks/toggle-button-jNsiq27z.cjs.js"),H=require("./chunks/toggle-button-group-BQczQ6D_.cjs.js"),Ve=require("./chunks/date-input-DTM_24C2.cjs.js"),ze=require("./chunks/calendar-57M9FKqt.cjs.js"),$e=require("./chunks/date-picker-Dk3QgvCN.cjs.js"),We=require("./chunks/progress-bar-BwrjTuCz.cjs.js"),Xe=require("./chunks/range-calendar-Cjqu4SXg.cjs.js"),S=require("./chunks/menu-BwvV9d6-.cjs.js"),Qe=require("./chunks/date-range-picker-CMWsBL9j.cjs.js"),Ye=require("./chunks/toolbar-BHdgjOW4.cjs.js"),b=require("./chunks/data-table-Depm8_y5.cjs.js"),Ze=require("./chunks/pagination-CnPACrJ5.cjs.js"),Je=require("./chunks/drawer-D3PNF9As.cjs.js"),_=require("./chunks/tabs-DoJOIjOb.cjs.js"),et=require("./chunks/localized-field-Bf0Cw_ok.cjs.js");require("react/jsx-runtime");const J=["shift","alt","meta","mod","ctrl","control"],tt={esc:"escape",return:"enter",left:"arrowleft",right:"arrowright",up:"arrowup",down:"arrowdown",ShiftLeft:"shift",ShiftRight:"shift",AltLeft:"alt",AltRight:"alt",MetaLeft:"meta",MetaRight:"meta",OSLeft:"meta",OSRight:"meta",ControlLeft:"ctrl",ControlRight:"ctrl"};function w(e){return(tt[e.trim()]||e.trim()).toLowerCase().replace(/key|digit|numpad/,"")}function ee(e){return J.includes(e)}function M(e,t=","){return e.toLowerCase().split(t)}function P(e,t="+",o=">",i=!1,u){let n=[],a=!1;e=e.trim(),e.includes(o)?(a=!0,n=e.toLocaleLowerCase().split(o).map(g=>w(g))):n=e.toLocaleLowerCase().split(t).map(g=>w(g));const d={alt:n.includes("alt"),ctrl:n.includes("ctrl")||n.includes("control"),shift:n.includes("shift"),meta:n.includes("meta"),mod:n.includes("mod"),useKey:i},s=n.filter(g=>!J.includes(g));return{...d,keys:s,description:u,isSequence:a,hotkey:e}}const q=new Set;function j(e){return Array.isArray(e)}function ot(e,t=","){return(j(e)?e:e.split(t)).every(o=>q.has(o.trim().toLowerCase()))}function rt(e){const t=Array.isArray(e)?e:[e];q.has("meta")&&q.forEach(o=>!ee(o)&&q.delete(o.toLowerCase())),t.forEach(o=>q.add(o.toLowerCase()))}function nt(e){const t=Array.isArray(e)?e:[e];e==="meta"?q.clear():t.forEach(o=>q.delete(o.toLowerCase()))}function at(e,t,o){(typeof o=="function"&&o(e,t)||o===!0)&&e.preventDefault()}function it(e,t,o){return typeof o=="function"?o(e,t):o===!0||o===void 0}const ut=["input","textarea","select","searchbox","slider","spinbutton","menuitem","menuitemcheckbox","menuitemradio","option","radio","textbox"];function ct(e){return te(e,ut)}function te(e,t=!1){const{target:o,composed:i}=e;let u,n;return st(o)&&i?(u=e.composedPath()[0]&&e.composedPath()[0].tagName,n=e.composedPath()[0]&&e.composedPath()[0].role):(u=o&&o.tagName,n=o&&o.role),j(t)?!!(u&&t&&t.some(a=>a.toLowerCase()===u.toLowerCase()||a===n)):!!(u&&t&&t)}function st(e){return!!e.tagName&&!e.tagName.startsWith("-")&&e.tagName.includes("-")}function lt(e,t){return e.length===0&&t?(console.warn('A hotkey has the "scopes" option set, however no active scopes were found. If you want to use the global scopes feature, you need to wrap your app in a <HotkeysProvider>'),!0):t?e.some(o=>t.includes(o))||e.includes("*"):!0}const dt=(e,t,o=!1)=>{const{alt:i,meta:u,mod:n,shift:a,ctrl:d,keys:s,useKey:g}=t,{code:y,key:r,ctrlKey:l,metaKey:C,shiftKey:T,altKey:p}=e,f=w(y);if(g&&s?.length===1&&s.includes(r))return!0;if(!s?.includes(f)&&!["ctrl","control","unknown","meta","alt","shift","os"].includes(f))return!1;if(!o){if(i!==p&&f!=="alt"||a!==T&&f!=="shift")return!1;if(n){if(!C&&!l)return!1}else if(u!==C&&f!=="meta"&&f!=="os"||d!==l&&f!=="ctrl"&&f!=="control")return!1}return s&&s.length===1&&s.includes(f)?!0:s?ot(s):!s},pt=m.createContext(void 0),mt=()=>m.useContext(pt);function oe(e,t){return e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(e).length===Object.keys(t).length&&Object.keys(e).reduce((o,i)=>o&&oe(e[i],t[i]),!0):e===t}const ft=m.createContext({hotkeys:[],activeScopes:[],toggleScope:()=>{},enableScope:()=>{},disableScope:()=>{}}),gt=()=>m.useContext(ft);function bt(e){const t=m.useRef(void 0);return oe(t.current,e)||(t.current=e),t.current}const $=e=>{e.stopPropagation(),e.preventDefault(),e.stopImmediatePropagation()},yt=typeof window<"u"?m.useLayoutEffect:m.useEffect;function Ct(e,t,o,i){const u=m.useRef(null),n=m.useRef(!1),a=Array.isArray(o)?Array.isArray(i)?void 0:i:o,d=j(e)?e.join(a?.delimiter):e,s=Array.isArray(o)?o:Array.isArray(i)?i:void 0,g=m.useCallback(t,s??[]),y=m.useRef(g);s?y.current=g:y.current=t;const r=bt(a),{activeScopes:l}=gt(),C=mt();return yt(()=>{if(r?.enabled===!1||!lt(l,r?.scopes))return;let T=[],p;const f=(c,z=!1)=>{if(!(ct(c)&&!te(c,r?.enableOnFormTags))){if(u.current!==null){const h=u.current.getRootNode();if((h instanceof Document||h instanceof ShadowRoot)&&h.activeElement!==u.current&&!u.current.contains(h.activeElement)){$(c);return}}c.target?.isContentEditable&&!r?.enableOnContentEditable||M(d,r?.delimiter).forEach(h=>{if(h.includes(r?.splitKey??"+")&&h.includes(r?.sequenceSplitKey??">")){console.warn(`Hotkey ${h} contains both ${r?.splitKey??"+"} and ${r?.sequenceSplitKey??">"} which is not supported.`);return}const v=P(h,r?.splitKey,r?.sequenceSplitKey,r?.useKey,r?.description);if(v.isSequence){p=setTimeout(()=>{T=[]},r?.sequenceTimeoutMs??1e3);const B=v.useKey?c.key:w(c.code);if(ee(B.toLowerCase()))return;T.push(B);const ne=v.keys?.[T.length-1];if(B!==ne){T=[],p&&clearTimeout(p);return}T.length===v.keys?.length&&(y.current(c,v),p&&clearTimeout(p),T=[])}else if(dt(c,v,r?.ignoreModifiers)||v.keys?.includes("*")){if(r?.ignoreEventWhen?.(c)||z&&n.current)return;if(at(c,v,r?.preventDefault),!it(c,v,r?.enabled)){$(c);return}y.current(c,v),z||(n.current=!0)}})}},U=c=>{c.code!==void 0&&(rt(w(c.code)),(r?.keydown===void 0&&r?.keyup!==!0||r?.keydown)&&f(c))},V=c=>{c.code!==void 0&&(nt(w(c.code)),n.current=!1,r?.keyup&&f(c,!0))},L=u.current||a?.document||document;return L.addEventListener("keyup",V,a?.eventListenerOptions),L.addEventListener("keydown",U,a?.eventListenerOptions),C&&M(d,r?.delimiter).forEach(c=>C.addHotkey(P(c,r?.splitKey,r?.sequenceSplitKey,r?.useKey,r?.description))),()=>{L.removeEventListener("keyup",V,a?.eventListenerOptions),L.removeEventListener("keydown",U,a?.eventListenerOptions),C&&M(d,r?.delimiter).forEach(c=>C.removeHotkey(P(c,r?.splitKey,r?.sequenceSplitKey,r?.useKey,r?.description))),T=[],p&&clearTimeout(p)}},[d,r,l]),u}function Tt(){var e=m.useRef(!1),t=m.useCallback(function(){return e.current},[]);return m.useEffect(function(){return e.current=!0,function(){e.current=!1}},[]),t}var vt=function(e){e===void 0&&(e={});var t=m.useState(e),o=t[0],i=t[1],u=m.useCallback(function(n){i(function(a){return Object.assign({},a,n instanceof Function?n(a):n)})},[]);return[o,u]},O,W;function ht(){return W||(W=1,O=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,o=[],i=0;i<e.rangeCount;i++)o.push(e.getRangeAt(i));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null;break}return e.removeAllRanges(),function(){e.type==="Caret"&&e.removeAllRanges(),e.rangeCount||o.forEach(function(u){e.addRange(u)}),t&&t.focus()}}),O}var K,X;function St(){if(X)return K;X=1;var e=ht(),t={"text/plain":"Text","text/html":"Url",default:"Text"},o="Copy to clipboard: #{key}, Enter";function i(n){var a=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return n.replace(/#{\s*key\s*}/g,a)}function u(n,a){var d,s,g,y,r,l,C=!1;a||(a={}),d=a.debug||!1;try{g=e(),y=document.createRange(),r=document.getSelection(),l=document.createElement("span"),l.textContent=n,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",function(p){if(p.stopPropagation(),a.format)if(p.preventDefault(),typeof p.clipboardData>"u"){d&&console.warn("unable to use e.clipboardData"),d&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var f=t[a.format]||t.default;window.clipboardData.setData(f,n)}else p.clipboardData.clearData(),p.clipboardData.setData(a.format,n);a.onCopy&&(p.preventDefault(),a.onCopy(p.clipboardData))}),document.body.appendChild(l),y.selectNodeContents(l),r.addRange(y);var T=document.execCommand("copy");if(!T)throw new Error("copy command was unsuccessful");C=!0}catch(p){d&&console.error("unable to copy using execCommand: ",p),d&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(a.format||"text",n),a.onCopy&&a.onCopy(window.clipboardData),C=!0}catch(f){d&&console.error("unable to copy using clipboardData: ",f),d&&console.error("falling back to prompt"),s=i("message"in a?a.message:o),window.prompt(s,n)}}finally{r&&(typeof r.removeRange=="function"?r.removeRange(y):r.removeAllRanges()),l&&document.body.removeChild(l),g()}return C}return K=u,K}var qt=St();const It=Q.getDefaultExportFromCjs(qt);var wt=function(){var e=Tt(),t=vt({value:void 0,error:void 0,noUserInteraction:!0}),o=t[0],i=t[1],u=m.useCallback(function(n){if(e()){var a,d;try{if(typeof n!="string"&&typeof n!="number"){var s=new Error("Cannot copy typeof "+typeof n+" to clipboard, must be a string");process.env.NODE_ENV==="development"&&console.error(s),i({value:n,error:s,noUserInteraction:!0});return}else if(n===""){var s=new Error("Cannot copy empty string to clipboard.");process.env.NODE_ENV==="development"&&console.error(s),i({value:n,error:s,noUserInteraction:!0});return}d=n.toString(),a=It(d),i({value:d,error:void 0,noUserInteraction:a})}catch(g){i({value:d,error:g,noUserInteraction:a})}}},[]);return[o,u]};function Dt(){const[e,t]=m.useState(o());function o(){return document.documentElement.style.getPropertyValue("color-scheme")||localStorage.getItem("theme")||"light"}return m.useEffect(()=>{const i=document.documentElement,u=new MutationObserver(()=>{const n=o();t(n)});return u.observe(i,{attributes:!0,attributeFilter:["style"]}),()=>u.disconnect()},[]),e}function re(){const{resolvedTheme:e,setTheme:t}=Z.z();return{colorMode:e,setColorMode:t,toggleColorMode:()=>{t(e==="light"?"dark":"light")}}}function Rt(e,t){const{colorMode:o}=re();return o==="light"?e:t}exports.system=ae.system;exports.RichTextInput=Q.RichTextInput;exports.Avatar=ie.Avatar;exports.Box=ue.Box;exports.Button=ce.Button;exports.Code=se.Code;exports.ComboBox=x.ComboBox;exports._ComboBoxOption=x.ComboBoxOption;exports._ComboBoxOptionGroup=x.ComboBoxOptionGroup;exports._ComboBoxRoot=x.ComboBoxRoot;exports.Dialog=le.Dialog;exports.FieldErrorTypes=Y.FieldErrorTypes;exports.FieldErrors=Y.FieldErrors;exports.Group=de.Group;exports.Heading=pe.Heading;exports.NimbusI18nProvider=me.NimbusI18nProvider;exports.IconButton=fe.IconButton;exports.IconToggleButton=ge.IconToggleButton;exports.Image=be.Image;exports.Kbd=ye.Kbd;exports.Link=Ce.Link;exports.List=E.List;exports._ListIndicator=E.ListIndicator;exports._ListItem=E.ListItem;exports._ListRoot=E.ListRoot;exports.DraggableList=A.DraggableList;exports._DraggableListField=A.DraggableListField;exports._DraggableListItem=A.DraggableListItem;exports._DraggableListRoot=A.DraggableListRoot;exports.SimpleGrid=Te.SimpleGrid;exports.Text=ve.Text;exports.Tooltip=G.Tooltip;exports._TooltipContent=G.TooltipContent;exports._TooltipRoot=G.TooltipRoot;exports.MakeElementFocusable=he.MakeElementFocusable;exports.NimbusProvider=Z.NimbusProvider;exports.Checkbox=Se.Checkbox;exports.CollapsibleMotion=qe.CollapsibleMotion;exports.Stack=Ie.Stack;exports.VisuallyHidden=we.VisuallyHidden;exports.TextInput=De.TextInput;exports.NumberInput=Re.NumberInput;exports.Grid=_e.Grid;exports.Select=k.Select;exports._SelectOption=k.SelectOption;exports._SelectOptionGroup=k.SelectOptionGroup;exports._SelectOptions=k.SelectOptions;exports._SelectRoot=k.SelectRoot;exports.Separator=ke.Separator;exports.Spacer=Le.Spacer;exports.Accordion=D.Accordion;exports._AccordionContent=D.AccordionContent;exports._AccordionHeader=D.AccordionHeader;exports._AccordionHeaderRightContent=D.AccordionHeaderRightContentSlot;exports._AccordionItem=D.AccordionItem;exports._AccordionRoot=D.AccordionRoot;exports.Alert=R.Alert;exports._AlertActions=R.AlertActions;exports._AlertDescription=R.AlertDescription;exports._AlertDismissButton=R.AlertDismissButton;exports._AlertRoot=R.AlertRoot;exports._AlertTitle=R.AlertTitle;exports.Badge=xe.Badge;exports.Card=F.Card;exports._CardContent=F.CardContent;exports._CardHeader=F.CardHeader;exports._CardRoot=F.CardRoot;exports.FormField=I.FormField;exports._FormFieldDescription=I.FormFieldDescription;exports._FormFieldError=I.FormFieldError;exports._FormFieldInfoBox=I.FormFieldInfoBox;exports._FormFieldInput=I.FormFieldInput;exports._FormFieldLabel=I.FormFieldLabel;exports._FormFieldRoot=I.FormFieldRoot;exports.Icon=Ee.Icon;exports.InlineSvg=Ae.InlineSvg;exports.LoadingSpinner=Fe.LoadingSpinner;exports.PasswordInput=Be.PasswordInput;exports.SearchInput=Me.SearchInput;exports.ScopedSearchInput=Pe.ScopedSearchInput;exports.SplitButton=Oe.SplitButton;exports.TimeInput=Ke.TimeInput;exports.MultilineTextInput=Ge.MultilineTextInput;exports.MoneyInput=Ne.MoneyInput;exports.RadioInput=N.RadioInput;exports._RadioInputOption=N.RadioInputOption;exports._RadioInputRoot=N.RadioInputRoot;exports.Switch=He.Switch;exports.TagGroup=je.TagGroup;exports.ToggleButton=Ue.ToggleButton;exports.ToggleButtonGroup=H.ToggleButtonGroup;exports._ToggleButtonGroupButton=H.ToggleButtonGroupButton;exports._ToggleButtonGroupRoot=H.ToggleButtonGroupRoot;exports.DateInput=Ve.DateInput;exports.Calendar=ze.Calendar;exports.DatePicker=$e.DatePicker;exports.ProgressBar=We.ProgressBar;exports.RangeCalendar=Xe.RangeCalendar;exports.Menu=S.Menu;exports._MenuContent=S.MenuContent;exports._MenuItem=S.MenuItem;exports._MenuRoot=S.MenuRoot;exports._MenuSection=S.MenuSection;exports._MenuSubmenu=S.MenuSubmenu;exports._MenuSubmenuTrigger=S.MenuSubmenuTrigger;exports._MenuTrigger=S.MenuTrigger;exports.DateRangePicker=Qe.DateRangePicker;exports.Toolbar=Ye.Toolbar;exports.DataTable=b.DataTable;exports._DataTableBody=b.DataTableBody;exports._DataTableCell=b.DataTableCell;exports._DataTableColumn=b.DataTableColumn;exports._DataTableExpandButton=b.DataTableExpandButton;exports._DataTableFooter=b.DataTableFooter;exports._DataTableHeader=b.DataTableHeader;exports._DataTableNestedIcon=b.DataTableNestedIcon;exports._DataTableRoot=b.DataTableRoot;exports._DataTableRow=b.DataTableRow;exports._DataTableSelectionCell=b.DataTableSelectionCell;exports._DataTableTable=b.DataTableTable;exports.Pagination=Ze.Pagination;exports.Drawer=Je.Drawer;exports.Tabs=_.Tabs;exports._Tab=_.Tab;exports._TabList=_.TabList;exports._TabPanel=_.TabPanel;exports._TabPanels=_.TabPanels;exports._TabsRoot=_.TabsRoot;exports.LocalizedField=et.LocalizedField;exports.useColorMode=re;exports.useColorModeValue=Rt;exports.useColorScheme=Dt;exports.useCopyToClipboard=wt;exports.useHotkeys=Ct;
1
+ "use strict";const ae=require("./chunks/index-CxLKWOES.cjs.js"),Q=require("./chunks/rich-text-input-B41QcSHY.cjs.js"),m=require("react"),ie=require("./chunks/avatar-BGM-BDJa.cjs.js"),ue=require("./chunks/box-CWni3A32.cjs.js"),ce=require("./chunks/button-CA3VvD2G.cjs.js"),se=require("./chunks/code-q31e3vT2.cjs.js"),x=require("./chunks/combobox-CKozWtj7.cjs.js"),le=require("./chunks/dialog-siPuFsFT.cjs.js"),Y=require("./chunks/field-errors-D2re_C_c.cjs.js"),_t=require("@chakra-ui/react/flex"),de=require("./chunks/group-Cjq5lNQD.cjs.js"),pe=require("./chunks/heading-DWweWKGQ.cjs.js"),me=require("./chunks/nimbus-i18n-provider-BbsapOze.cjs.js"),fe=require("./chunks/icon-button-B28VUff9.cjs.js"),ge=require("./chunks/icon-toggle-button-DPOco2hU.cjs.js"),be=require("./chunks/image-CGOYoc2s.cjs.js"),ye=require("./chunks/kbd-tKeWcdmy.cjs.js"),Ce=require("./chunks/link-CI7W-6L3.cjs.js"),E=require("./chunks/list-DJC9BmoC.cjs.js"),A=require("./chunks/draggable-list-B7Qhle4N.cjs.js"),Te=require("./chunks/simple-grid-Cd2MJxSX.cjs.js"),kt=require("@chakra-ui/react/table"),ve=require("./chunks/text-BtRhIklG.cjs.js"),G=require("./chunks/tooltip-Aar_qzmT.cjs.js"),he=require("./chunks/make-element-focusable-Cdmdc8sd.cjs.js"),Lt=require("react-intl"),Z=require("./chunks/nimbus-provider-DNBQi83M.cjs.js"),Se=require("./chunks/checkbox-Dzerp7O0.cjs.js"),qe=require("./chunks/collapsible-motion-TeGpQ5f7.cjs.js"),Ie=require("./chunks/stack-CIN13EDn.cjs.js"),we=require("./chunks/visually-hidden-BjtXUoFK.cjs.js"),De=require("./chunks/text-input-BO570MbY.cjs.js"),Re=require("./chunks/number-input-BUdRuDBZ.cjs.js"),_e=require("./chunks/grid-Chuw1xje.cjs.js"),k=require("./chunks/select-DLnPgZGL.cjs.js"),ke=require("./chunks/separator-Vxu9fPdc.cjs.js"),Le=require("./chunks/spacer-BvQD2vU1.cjs.js"),D=require("./chunks/accordion-D0ulscBP.cjs.js"),R=require("./chunks/alert-CC87lB5H.cjs.js"),xe=require("./chunks/badge-CDruffyj.cjs.js"),F=require("./chunks/card-SYS662CL.cjs.js"),I=require("./chunks/form-field-B9wlWUcK.cjs.js"),Ee=require("./chunks/icon-D39U--jA.cjs.js"),Ae=require("./chunks/inline-svg-Yb2OyzRw.cjs.js"),Fe=require("./chunks/loading-spinner-DsKcjJ2b.cjs.js"),Be=require("./chunks/password-input-Dtu0_JiV.cjs.js"),Me=require("./chunks/search-input-D4ISfjCg.cjs.js"),Pe=require("./chunks/scoped-search-input-COM1I724.cjs.js"),Oe=require("./chunks/split-button-C8BsVNhR.cjs.js"),Ke=require("./chunks/time-input-C8BWH8SA.cjs.js"),Ge=require("./chunks/multiline-text-input-CHM3_4FO.cjs.js"),Ne=require("./chunks/money-input-qNQdmjtx.cjs.js"),N=require("./chunks/radio-input-BYDBQDtr.cjs.js"),He=require("./chunks/switch-Dg4jxYqx.cjs.js"),je=require("./chunks/tag-group-Beqgbttp.cjs.js"),Ue=require("./chunks/toggle-button-jNsiq27z.cjs.js"),H=require("./chunks/toggle-button-group-BQczQ6D_.cjs.js"),Ve=require("./chunks/date-input-DTM_24C2.cjs.js"),ze=require("./chunks/calendar-57M9FKqt.cjs.js"),$e=require("./chunks/date-picker-Dk3QgvCN.cjs.js"),We=require("./chunks/progress-bar-BwrjTuCz.cjs.js"),Xe=require("./chunks/range-calendar-Cjqu4SXg.cjs.js"),S=require("./chunks/menu-DK0AShnF.cjs.js"),Qe=require("./chunks/date-range-picker-CMWsBL9j.cjs.js"),Ye=require("./chunks/toolbar-BHdgjOW4.cjs.js"),b=require("./chunks/data-table-Depm8_y5.cjs.js"),Ze=require("./chunks/pagination-CnPACrJ5.cjs.js"),Je=require("./chunks/drawer-D3PNF9As.cjs.js"),_=require("./chunks/tabs-DoJOIjOb.cjs.js"),et=require("./chunks/localized-field-u03KZc2G.cjs.js");require("react/jsx-runtime");const J=["shift","alt","meta","mod","ctrl","control"],tt={esc:"escape",return:"enter",left:"arrowleft",right:"arrowright",up:"arrowup",down:"arrowdown",ShiftLeft:"shift",ShiftRight:"shift",AltLeft:"alt",AltRight:"alt",MetaLeft:"meta",MetaRight:"meta",OSLeft:"meta",OSRight:"meta",ControlLeft:"ctrl",ControlRight:"ctrl"};function w(e){return(tt[e.trim()]||e.trim()).toLowerCase().replace(/key|digit|numpad/,"")}function ee(e){return J.includes(e)}function M(e,t=","){return e.toLowerCase().split(t)}function P(e,t="+",o=">",i=!1,u){let n=[],a=!1;e=e.trim(),e.includes(o)?(a=!0,n=e.toLocaleLowerCase().split(o).map(g=>w(g))):n=e.toLocaleLowerCase().split(t).map(g=>w(g));const d={alt:n.includes("alt"),ctrl:n.includes("ctrl")||n.includes("control"),shift:n.includes("shift"),meta:n.includes("meta"),mod:n.includes("mod"),useKey:i},s=n.filter(g=>!J.includes(g));return{...d,keys:s,description:u,isSequence:a,hotkey:e}}const q=new Set;function j(e){return Array.isArray(e)}function ot(e,t=","){return(j(e)?e:e.split(t)).every(o=>q.has(o.trim().toLowerCase()))}function rt(e){const t=Array.isArray(e)?e:[e];q.has("meta")&&q.forEach(o=>!ee(o)&&q.delete(o.toLowerCase())),t.forEach(o=>q.add(o.toLowerCase()))}function nt(e){const t=Array.isArray(e)?e:[e];e==="meta"?q.clear():t.forEach(o=>q.delete(o.toLowerCase()))}function at(e,t,o){(typeof o=="function"&&o(e,t)||o===!0)&&e.preventDefault()}function it(e,t,o){return typeof o=="function"?o(e,t):o===!0||o===void 0}const ut=["input","textarea","select","searchbox","slider","spinbutton","menuitem","menuitemcheckbox","menuitemradio","option","radio","textbox"];function ct(e){return te(e,ut)}function te(e,t=!1){const{target:o,composed:i}=e;let u,n;return st(o)&&i?(u=e.composedPath()[0]&&e.composedPath()[0].tagName,n=e.composedPath()[0]&&e.composedPath()[0].role):(u=o&&o.tagName,n=o&&o.role),j(t)?!!(u&&t&&t.some(a=>a.toLowerCase()===u.toLowerCase()||a===n)):!!(u&&t&&t)}function st(e){return!!e.tagName&&!e.tagName.startsWith("-")&&e.tagName.includes("-")}function lt(e,t){return e.length===0&&t?(console.warn('A hotkey has the "scopes" option set, however no active scopes were found. If you want to use the global scopes feature, you need to wrap your app in a <HotkeysProvider>'),!0):t?e.some(o=>t.includes(o))||e.includes("*"):!0}const dt=(e,t,o=!1)=>{const{alt:i,meta:u,mod:n,shift:a,ctrl:d,keys:s,useKey:g}=t,{code:y,key:r,ctrlKey:l,metaKey:C,shiftKey:T,altKey:p}=e,f=w(y);if(g&&s?.length===1&&s.includes(r))return!0;if(!s?.includes(f)&&!["ctrl","control","unknown","meta","alt","shift","os"].includes(f))return!1;if(!o){if(i!==p&&f!=="alt"||a!==T&&f!=="shift")return!1;if(n){if(!C&&!l)return!1}else if(u!==C&&f!=="meta"&&f!=="os"||d!==l&&f!=="ctrl"&&f!=="control")return!1}return s&&s.length===1&&s.includes(f)?!0:s?ot(s):!s},pt=m.createContext(void 0),mt=()=>m.useContext(pt);function oe(e,t){return e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(e).length===Object.keys(t).length&&Object.keys(e).reduce((o,i)=>o&&oe(e[i],t[i]),!0):e===t}const ft=m.createContext({hotkeys:[],activeScopes:[],toggleScope:()=>{},enableScope:()=>{},disableScope:()=>{}}),gt=()=>m.useContext(ft);function bt(e){const t=m.useRef(void 0);return oe(t.current,e)||(t.current=e),t.current}const $=e=>{e.stopPropagation(),e.preventDefault(),e.stopImmediatePropagation()},yt=typeof window<"u"?m.useLayoutEffect:m.useEffect;function Ct(e,t,o,i){const u=m.useRef(null),n=m.useRef(!1),a=Array.isArray(o)?Array.isArray(i)?void 0:i:o,d=j(e)?e.join(a?.delimiter):e,s=Array.isArray(o)?o:Array.isArray(i)?i:void 0,g=m.useCallback(t,s??[]),y=m.useRef(g);s?y.current=g:y.current=t;const r=bt(a),{activeScopes:l}=gt(),C=mt();return yt(()=>{if(r?.enabled===!1||!lt(l,r?.scopes))return;let T=[],p;const f=(c,z=!1)=>{if(!(ct(c)&&!te(c,r?.enableOnFormTags))){if(u.current!==null){const h=u.current.getRootNode();if((h instanceof Document||h instanceof ShadowRoot)&&h.activeElement!==u.current&&!u.current.contains(h.activeElement)){$(c);return}}c.target?.isContentEditable&&!r?.enableOnContentEditable||M(d,r?.delimiter).forEach(h=>{if(h.includes(r?.splitKey??"+")&&h.includes(r?.sequenceSplitKey??">")){console.warn(`Hotkey ${h} contains both ${r?.splitKey??"+"} and ${r?.sequenceSplitKey??">"} which is not supported.`);return}const v=P(h,r?.splitKey,r?.sequenceSplitKey,r?.useKey,r?.description);if(v.isSequence){p=setTimeout(()=>{T=[]},r?.sequenceTimeoutMs??1e3);const B=v.useKey?c.key:w(c.code);if(ee(B.toLowerCase()))return;T.push(B);const ne=v.keys?.[T.length-1];if(B!==ne){T=[],p&&clearTimeout(p);return}T.length===v.keys?.length&&(y.current(c,v),p&&clearTimeout(p),T=[])}else if(dt(c,v,r?.ignoreModifiers)||v.keys?.includes("*")){if(r?.ignoreEventWhen?.(c)||z&&n.current)return;if(at(c,v,r?.preventDefault),!it(c,v,r?.enabled)){$(c);return}y.current(c,v),z||(n.current=!0)}})}},U=c=>{c.code!==void 0&&(rt(w(c.code)),(r?.keydown===void 0&&r?.keyup!==!0||r?.keydown)&&f(c))},V=c=>{c.code!==void 0&&(nt(w(c.code)),n.current=!1,r?.keyup&&f(c,!0))},L=u.current||a?.document||document;return L.addEventListener("keyup",V,a?.eventListenerOptions),L.addEventListener("keydown",U,a?.eventListenerOptions),C&&M(d,r?.delimiter).forEach(c=>C.addHotkey(P(c,r?.splitKey,r?.sequenceSplitKey,r?.useKey,r?.description))),()=>{L.removeEventListener("keyup",V,a?.eventListenerOptions),L.removeEventListener("keydown",U,a?.eventListenerOptions),C&&M(d,r?.delimiter).forEach(c=>C.removeHotkey(P(c,r?.splitKey,r?.sequenceSplitKey,r?.useKey,r?.description))),T=[],p&&clearTimeout(p)}},[d,r,l]),u}function Tt(){var e=m.useRef(!1),t=m.useCallback(function(){return e.current},[]);return m.useEffect(function(){return e.current=!0,function(){e.current=!1}},[]),t}var vt=function(e){e===void 0&&(e={});var t=m.useState(e),o=t[0],i=t[1],u=m.useCallback(function(n){i(function(a){return Object.assign({},a,n instanceof Function?n(a):n)})},[]);return[o,u]},O,W;function ht(){return W||(W=1,O=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,o=[],i=0;i<e.rangeCount;i++)o.push(e.getRangeAt(i));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null;break}return e.removeAllRanges(),function(){e.type==="Caret"&&e.removeAllRanges(),e.rangeCount||o.forEach(function(u){e.addRange(u)}),t&&t.focus()}}),O}var K,X;function St(){if(X)return K;X=1;var e=ht(),t={"text/plain":"Text","text/html":"Url",default:"Text"},o="Copy to clipboard: #{key}, Enter";function i(n){var a=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return n.replace(/#{\s*key\s*}/g,a)}function u(n,a){var d,s,g,y,r,l,C=!1;a||(a={}),d=a.debug||!1;try{g=e(),y=document.createRange(),r=document.getSelection(),l=document.createElement("span"),l.textContent=n,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",function(p){if(p.stopPropagation(),a.format)if(p.preventDefault(),typeof p.clipboardData>"u"){d&&console.warn("unable to use e.clipboardData"),d&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var f=t[a.format]||t.default;window.clipboardData.setData(f,n)}else p.clipboardData.clearData(),p.clipboardData.setData(a.format,n);a.onCopy&&(p.preventDefault(),a.onCopy(p.clipboardData))}),document.body.appendChild(l),y.selectNodeContents(l),r.addRange(y);var T=document.execCommand("copy");if(!T)throw new Error("copy command was unsuccessful");C=!0}catch(p){d&&console.error("unable to copy using execCommand: ",p),d&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(a.format||"text",n),a.onCopy&&a.onCopy(window.clipboardData),C=!0}catch(f){d&&console.error("unable to copy using clipboardData: ",f),d&&console.error("falling back to prompt"),s=i("message"in a?a.message:o),window.prompt(s,n)}}finally{r&&(typeof r.removeRange=="function"?r.removeRange(y):r.removeAllRanges()),l&&document.body.removeChild(l),g()}return C}return K=u,K}var qt=St();const It=Q.getDefaultExportFromCjs(qt);var wt=function(){var e=Tt(),t=vt({value:void 0,error:void 0,noUserInteraction:!0}),o=t[0],i=t[1],u=m.useCallback(function(n){if(e()){var a,d;try{if(typeof n!="string"&&typeof n!="number"){var s=new Error("Cannot copy typeof "+typeof n+" to clipboard, must be a string");process.env.NODE_ENV==="development"&&console.error(s),i({value:n,error:s,noUserInteraction:!0});return}else if(n===""){var s=new Error("Cannot copy empty string to clipboard.");process.env.NODE_ENV==="development"&&console.error(s),i({value:n,error:s,noUserInteraction:!0});return}d=n.toString(),a=It(d),i({value:d,error:void 0,noUserInteraction:a})}catch(g){i({value:d,error:g,noUserInteraction:a})}}},[]);return[o,u]};function Dt(){const[e,t]=m.useState(o());function o(){return document.documentElement.style.getPropertyValue("color-scheme")||localStorage.getItem("theme")||"light"}return m.useEffect(()=>{const i=document.documentElement,u=new MutationObserver(()=>{const n=o();t(n)});return u.observe(i,{attributes:!0,attributeFilter:["style"]}),()=>u.disconnect()},[]),e}function re(){const{resolvedTheme:e,setTheme:t}=Z.z();return{colorMode:e,setColorMode:t,toggleColorMode:()=>{t(e==="light"?"dark":"light")}}}function Rt(e,t){const{colorMode:o}=re();return o==="light"?e:t}exports.system=ae.system;exports.RichTextInput=Q.RichTextInput;exports.Avatar=ie.Avatar;exports.Box=ue.Box;exports.Button=ce.Button;exports.Code=se.Code;exports.ComboBox=x.ComboBox;exports._ComboBoxOption=x.ComboBoxOption;exports._ComboBoxOptionGroup=x.ComboBoxOptionGroup;exports._ComboBoxRoot=x.ComboBoxRoot;exports.Dialog=le.Dialog;exports.FieldErrorTypes=Y.FieldErrorTypes;exports.FieldErrors=Y.FieldErrors;exports.Group=de.Group;exports.Heading=pe.Heading;exports.NimbusI18nProvider=me.NimbusI18nProvider;exports.IconButton=fe.IconButton;exports.IconToggleButton=ge.IconToggleButton;exports.Image=be.Image;exports.Kbd=ye.Kbd;exports.Link=Ce.Link;exports.List=E.List;exports._ListIndicator=E.ListIndicator;exports._ListItem=E.ListItem;exports._ListRoot=E.ListRoot;exports.DraggableList=A.DraggableList;exports._DraggableListField=A.DraggableListField;exports._DraggableListItem=A.DraggableListItem;exports._DraggableListRoot=A.DraggableListRoot;exports.SimpleGrid=Te.SimpleGrid;exports.Text=ve.Text;exports.Tooltip=G.Tooltip;exports._TooltipContent=G.TooltipContent;exports._TooltipRoot=G.TooltipRoot;exports.MakeElementFocusable=he.MakeElementFocusable;exports.NimbusProvider=Z.NimbusProvider;exports.Checkbox=Se.Checkbox;exports.CollapsibleMotion=qe.CollapsibleMotion;exports.Stack=Ie.Stack;exports.VisuallyHidden=we.VisuallyHidden;exports.TextInput=De.TextInput;exports.NumberInput=Re.NumberInput;exports.Grid=_e.Grid;exports.Select=k.Select;exports._SelectOption=k.SelectOption;exports._SelectOptionGroup=k.SelectOptionGroup;exports._SelectOptions=k.SelectOptions;exports._SelectRoot=k.SelectRoot;exports.Separator=ke.Separator;exports.Spacer=Le.Spacer;exports.Accordion=D.Accordion;exports._AccordionContent=D.AccordionContent;exports._AccordionHeader=D.AccordionHeader;exports._AccordionHeaderRightContent=D.AccordionHeaderRightContentSlot;exports._AccordionItem=D.AccordionItem;exports._AccordionRoot=D.AccordionRoot;exports.Alert=R.Alert;exports._AlertActions=R.AlertActions;exports._AlertDescription=R.AlertDescription;exports._AlertDismissButton=R.AlertDismissButton;exports._AlertRoot=R.AlertRoot;exports._AlertTitle=R.AlertTitle;exports.Badge=xe.Badge;exports.Card=F.Card;exports._CardContent=F.CardContent;exports._CardHeader=F.CardHeader;exports._CardRoot=F.CardRoot;exports.FormField=I.FormField;exports._FormFieldDescription=I.FormFieldDescription;exports._FormFieldError=I.FormFieldError;exports._FormFieldInfoBox=I.FormFieldInfoBox;exports._FormFieldInput=I.FormFieldInput;exports._FormFieldLabel=I.FormFieldLabel;exports._FormFieldRoot=I.FormFieldRoot;exports.Icon=Ee.Icon;exports.InlineSvg=Ae.InlineSvg;exports.LoadingSpinner=Fe.LoadingSpinner;exports.PasswordInput=Be.PasswordInput;exports.SearchInput=Me.SearchInput;exports.ScopedSearchInput=Pe.ScopedSearchInput;exports.SplitButton=Oe.SplitButton;exports.TimeInput=Ke.TimeInput;exports.MultilineTextInput=Ge.MultilineTextInput;exports.MoneyInput=Ne.MoneyInput;exports.RadioInput=N.RadioInput;exports._RadioInputOption=N.RadioInputOption;exports._RadioInputRoot=N.RadioInputRoot;exports.Switch=He.Switch;exports.TagGroup=je.TagGroup;exports.ToggleButton=Ue.ToggleButton;exports.ToggleButtonGroup=H.ToggleButtonGroup;exports._ToggleButtonGroupButton=H.ToggleButtonGroupButton;exports._ToggleButtonGroupRoot=H.ToggleButtonGroupRoot;exports.DateInput=Ve.DateInput;exports.Calendar=ze.Calendar;exports.DatePicker=$e.DatePicker;exports.ProgressBar=We.ProgressBar;exports.RangeCalendar=Xe.RangeCalendar;exports.Menu=S.Menu;exports._MenuContent=S.MenuContent;exports._MenuItem=S.MenuItem;exports._MenuRoot=S.MenuRoot;exports._MenuSection=S.MenuSection;exports._MenuSubmenu=S.MenuSubmenu;exports._MenuSubmenuTrigger=S.MenuSubmenuTrigger;exports._MenuTrigger=S.MenuTrigger;exports.DateRangePicker=Qe.DateRangePicker;exports.Toolbar=Ye.Toolbar;exports.DataTable=b.DataTable;exports._DataTableBody=b.DataTableBody;exports._DataTableCell=b.DataTableCell;exports._DataTableColumn=b.DataTableColumn;exports._DataTableExpandButton=b.DataTableExpandButton;exports._DataTableFooter=b.DataTableFooter;exports._DataTableHeader=b.DataTableHeader;exports._DataTableNestedIcon=b.DataTableNestedIcon;exports._DataTableRoot=b.DataTableRoot;exports._DataTableRow=b.DataTableRow;exports._DataTableSelectionCell=b.DataTableSelectionCell;exports._DataTableTable=b.DataTableTable;exports.Pagination=Ze.Pagination;exports.Drawer=Je.Drawer;exports.Tabs=_.Tabs;exports._Tab=_.Tab;exports._TabList=_.TabList;exports._TabPanel=_.TabPanel;exports._TabPanels=_.TabPanels;exports._TabsRoot=_.TabsRoot;exports.LocalizedField=et.LocalizedField;exports.useColorMode=re;exports.useColorModeValue=Rt;exports.useColorScheme=Dt;exports.useCopyToClipboard=wt;exports.useHotkeys=Ct;
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/index.es.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { s as Ee } from "./chunks/index-jNM4sRnI.es.js";
2
- import { g as z } from "./chunks/rich-text-input-d2ztVFjc.es.js";
3
- import { R as Re } from "./chunks/rich-text-input-d2ztVFjc.es.js";
2
+ import { g as z } from "./chunks/rich-text-input-BGVyDm30.es.js";
3
+ import { R as Re } from "./chunks/rich-text-input-BGVyDm30.es.js";
4
4
  import { useRef as T, useCallback as S, useContext as O, useLayoutEffect as $, useEffect as I, createContext as N, useState as H } from "react";
5
5
  import { A as Me } from "./chunks/avatar-CTiSGVoD.es.js";
6
6
  import { B as Pe } from "./chunks/box-DuBoAZvq.es.js";
@@ -49,7 +49,7 @@ import { L as Vo } from "./chunks/loading-spinner-ByHGBHzt.es.js";
49
49
  import { P as $o } from "./chunks/password-input-D4vhdbQW.es.js";
50
50
  import { S as Xo } from "./chunks/search-input-CD_OQQwA.es.js";
51
51
  import { S as Yo } from "./chunks/scoped-search-input-CO9xtMOE.es.js";
52
- import { S as Jo } from "./chunks/split-button-B36Wmkbs.es.js";
52
+ import { S as Jo } from "./chunks/split-button-YwopMYuE.es.js";
53
53
  import { T as tr } from "./chunks/time-input-CHA4irr4.es.js";
54
54
  import { M as rr } from "./chunks/multiline-text-input-BD_Pe10q.es.js";
55
55
  import { M as nr } from "./chunks/money-input-DHiEn7XA.es.js";
@@ -63,14 +63,14 @@ import { C as wr } from "./chunks/calendar-Kwoe0bYZ.es.js";
63
63
  import { D as _r } from "./chunks/date-picker-FvaPPqXZ.es.js";
64
64
  import { P as Lr } from "./chunks/progress-bar-h8RUoyYt.es.js";
65
65
  import { R as Er } from "./chunks/range-calendar-BjuErXNK.es.js";
66
- import { M as Rr, c as Ar, d as Mr, a as Fr, e as Pr, g as Kr, f as Br, b as Or } from "./chunks/menu-oyta69vX.es.js";
66
+ import { M as Rr, c as Ar, d as Mr, a as Fr, e as Pr, g as Kr, f as Br, b as Or } from "./chunks/menu-CvowvbXh.es.js";
67
67
  import { D as Hr } from "./chunks/date-range-picker-vH5DixcB.es.js";
68
68
  import { T as Ur } from "./chunks/toolbar-CdR1MLqf.es.js";
69
69
  import { D as jr, e as Vr, g as zr, d as $r, i as Wr, h as Xr, c as Qr, j as Yr, a as Zr, f as Jr, k as ea, b as ta } from "./chunks/data-table-BxITOPnx.es.js";
70
70
  import { P as ra } from "./chunks/pagination-CjUoltTe.es.js";
71
71
  import { D as na } from "./chunks/drawer-BsHkmwKB.es.js";
72
72
  import { T as ia, c as ca, b as ua, e as la, d as da, a as fa } from "./chunks/tabs-BXoJTX6z.es.js";
73
- import { L as ma } from "./chunks/localized-field-DUVUwcg1.es.js";
73
+ import { L as ma } from "./chunks/localized-field-D4HBEdq0.es.js";
74
74
  import "react/jsx-runtime";
75
75
  const q = ["shift", "alt", "meta", "mod", "ctrl", "control"], X = {
76
76
  esc: "escape",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commercetools/nimbus",
3
- "version": "0.0.0-canary-20251023155107",
3
+ "version": "0.0.0-canary-20251024075337",
4
4
  "main": "./dist/index.cjs",
5
5
  "module": "./dist/index.es.js",
6
6
  "type": "module",
@@ -101,8 +101,8 @@
101
101
  "vite-plugin-dts": "^4.5.4",
102
102
  "vite-tsconfig-paths": "^5.1.4",
103
103
  "vitest": "^3.2.4",
104
- "@commercetools/nimbus-icons": "^0.0.0-canary-20251023155107",
105
- "@commercetools/nimbus-tokens": "^0.0.0-canary-20251023155107"
104
+ "@commercetools/nimbus-icons": "^0.0.0-canary-20251024075337",
105
+ "@commercetools/nimbus-tokens": "^0.0.0-canary-20251024075337"
106
106
  },
107
107
  "peerDependencies": {
108
108
  "@chakra-ui/react": "^3.27.1",
@@ -112,8 +112,8 @@
112
112
  "slate-history": "^0.113.1",
113
113
  "slate-hyperscript": "^0.77.0",
114
114
  "slate-react": "^0.75.0",
115
- "@commercetools/nimbus-icons": "^0.0.0-canary-20251023155107",
116
- "@commercetools/nimbus-tokens": "^0.0.0-canary-20251023155107"
115
+ "@commercetools/nimbus-icons": "^0.0.0-canary-20251024075337",
116
+ "@commercetools/nimbus-tokens": "^0.0.0-canary-20251024075337"
117
117
  },
118
118
  "scripts": {
119
119
  "build": "pnpm run build-theme-typings && pnpm run build:lib",
@@ -1 +0,0 @@
1
- {"version":3,"file":"menu-BwvV9d6-.cjs.js","sources":["../../src/components/menu/menu.slots.tsx","../../src/components/menu/components/menu.context.tsx","../../src/components/menu/components/menu.root.tsx","../../src/components/menu/components/menu.trigger.tsx","../../src/components/menu/components/menu.section-context.tsx","../../src/components/menu/components/menu.content.tsx","../../src/components/menu/components/menu.item.tsx","../../src/components/menu/components/menu.section-label.tsx","../../src/components/menu/components/menu.section.tsx","../../src/components/menu/components/menu.submenu-trigger.tsx","../../src/components/menu/components/menu.submenu.tsx","../../src/components/menu/menu.tsx"],"sourcesContent":["import { createSlotRecipeContext } from \"@chakra-ui/react\";\nimport type { SlotComponent } from \"@/type-utils\";\nimport type {\n MenuRootSlotProps,\n MenuTriggerSlotProps,\n MenuPopoverSlotProps,\n MenuContentSlotProps,\n MenuItemSlotProps,\n MenuSectionSlotProps,\n MenuSectionLabelSlotProps,\n MenuSubmenuSlotProps,\n} from \"./menu.types\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({\n key: \"menu\",\n});\n\n// Menu Root\nexport const MenuRootSlot: SlotComponent<HTMLDivElement, MenuRootSlotProps> =\n withProvider<HTMLDivElement, MenuRootSlotProps>(\"div\", \"root\");\n\n// Menu Trigger\nexport const MenuTriggerSlot = withContext<\n HTMLButtonElement,\n MenuTriggerSlotProps\n>(\"button\", \"trigger\");\n\n// Menu Popover\nexport const MenuPopoverSlot = withContext<\n HTMLDivElement,\n MenuPopoverSlotProps\n>(\"div\", \"popover\");\n\n// Menu Content\nexport const MenuContentSlot = withContext<\n HTMLDivElement,\n MenuContentSlotProps\n>(\"div\", \"content\");\n\n// Menu Item\nexport const MenuItemSlot = withContext<HTMLDivElement, MenuItemSlotProps>(\n \"div\",\n \"item\"\n);\n\n// Menu Section\nexport const MenuSectionSlot = withContext<\n HTMLDivElement,\n MenuSectionSlotProps\n>(\"div\", \"section\");\n\n// Menu Section Label\nexport const MenuSectionLabelSlot = withContext<\n HTMLDivElement,\n MenuSectionLabelSlotProps\n>(\"div\", \"sectionLabel\");\n\n// Menu Group Label\nexport const MenuSubmenuSlot = withContext<\n HTMLDivElement,\n MenuSubmenuSlotProps\n>(\"div\", \"submenu\");\n","import { createContext, useContext } from \"react\";\nimport type { MenuRootProps } from \"./../menu.types\";\nimport type { MenuTriggerProps as RaMenuTriggerProps } from \"react-aria-components\";\n\n// Context should contain all Menu props (excluding MenuTrigger-specific props)\nexport type MenuContextValue = Omit<\n MenuRootProps,\n keyof RaMenuTriggerProps | \"children\" | \"trigger\"\n>;\n\nconst MenuContext = createContext<MenuContextValue | undefined>(undefined);\n\nexport const MenuProvider = MenuContext.Provider;\n\nexport const useMenuContext = () => {\n const context = useContext(MenuContext);\n return context;\n};\n","import { useSlotRecipe } from \"@chakra-ui/react/styled-system\";\nimport { MenuTrigger as RaMenuTrigger } from \"react-aria-components\";\nimport type { MenuRootProps } from \"../menu.types\";\nimport { MenuRootSlot } from \"../menu.slots\";\nimport { MenuProvider } from \"./menu.context\";\n\nexport const MenuRoot = (props: MenuRootProps) => {\n const recipe = useSlotRecipe({ key: \"menu\" });\n const [recipeProps, functionalProps] = recipe.splitVariantProps(props);\n\n // Separate MenuTrigger props from Menu props\n const {\n children,\n trigger,\n isOpen,\n defaultOpen,\n onOpenChange,\n ...menuContextProps\n } = functionalProps;\n\n const menuTriggerProps = {\n trigger,\n isOpen,\n defaultOpen,\n onOpenChange,\n };\n\n return (\n <MenuRootSlot {...recipeProps} asChild>\n <RaMenuTrigger {...menuTriggerProps}>\n <MenuProvider value={menuContextProps}>{children}</MenuProvider>\n </RaMenuTrigger>\n </MenuRootSlot>\n );\n};\n\nMenuRoot.displayName = \"Menu.Root\";\n","import { Button } from \"react-aria-components\";\nimport { MenuTriggerSlot } from \"../menu.slots\";\nimport type { MenuTriggerProps } from \"../menu.types\";\nimport { extractStyleProps } from \"@/utils\";\nimport type { ReactNode } from \"react\";\n\nexport const MenuTrigger = ({\n children,\n asChild,\n ref,\n ...props\n}: MenuTriggerProps) => {\n const [styleProps, restProps] = extractStyleProps(props);\n\n /**\n * The user supplied a Button as the trigger\n */\n if (asChild) {\n // When asChild is true, apply styles to the child element\n return (\n <MenuTriggerSlot ref={ref} asChild {...styleProps}>\n {children as ReactNode}\n </MenuTriggerSlot>\n );\n }\n\n /**\n * The user did not supply a Button as trigger, use an unstyled button\n * to wrap which ever element the user supplied and make it a trigger\n */\n return (\n <MenuTriggerSlot asChild {...styleProps}>\n <Button ref={ref} {...restProps}>\n {children}\n </Button>\n </MenuTriggerSlot>\n );\n};\n\nMenuTrigger.displayName = \"Menu.Trigger\";\n","import { createContext, useContext } from \"react\";\n\nexport type MenuSectionContextValue = {\n selectionMode?: \"single\" | \"multiple\" | \"none\";\n};\n/**\n * Why is a second context (MenuSectionContext) needed?\n *\n * MenuSectionContext enables section-level config for menu items, such as\n * selection mode, which may differ from the global menu context. This allows\n * advanced menus where each section can have its own selection behavior\n * (e.g., one section is single-select, another is multi-select).\n * By scoping context to a section, menu items inherit settings from their\n * nearest section, falling back to the global menu context if not present.\n * This pattern improves flexibility and composability for complex menus,\n * and avoids prop drilling or awkward prop merging.\n */\n\nconst MenuSectionContext = createContext<MenuSectionContextValue | undefined>(\n undefined\n);\n\nexport const MenuSectionProvider = MenuSectionContext.Provider;\n\nexport const useMenuSectionContext = () => {\n return useContext(MenuSectionContext);\n};\n","import { Menu, Popover } from \"react-aria-components\";\nimport { MenuContentSlot, MenuPopoverSlot } from \"../menu.slots\";\nimport type { MenuContentProps } from \"../menu.types\";\nimport { useMenuContext } from \"./menu.context\";\nimport { MenuSectionProvider } from \"./menu.section-context\";\n\nexport const MenuContent = ({\n children,\n placement: placementOverride,\n ref,\n}: MenuContentProps) => {\n const contextProps = useMenuContext();\n\n if (!contextProps) {\n throw new Error(\"Menu.Content must be used within Menu.Root\");\n }\n\n // Separate placement from other props since it's handled by Popover\n const { placement, ...menuProps } = contextProps;\n const finalPlacement = placementOverride || placement || \"bottom start\";\n\n return (\n <MenuSectionProvider value={{ selectionMode: menuProps.selectionMode }}>\n <MenuPopoverSlot asChild>\n <Popover placement={finalPlacement} offset={4} shouldFlip>\n <MenuContentSlot asChild>\n <Menu ref={ref} shouldFocusWrap autoFocus=\"first\" {...menuProps}>\n {children}\n </Menu>\n </MenuContentSlot>\n </Popover>\n </MenuPopoverSlot>\n </MenuSectionProvider>\n );\n};\n\nMenuContent.displayName = \"Menu.Content\";\n","import { MenuItem as RaMenuItem } from \"react-aria-components\";\nimport { MenuItemSlot } from \"../menu.slots\";\nimport type { MenuItemProps } from \"../menu.types\";\nimport { extractStyleProps } from \"@/utils\";\nimport { ChevronRight } from \"@commercetools/nimbus-icons\";\nimport { Icon } from \"@/components/icon\";\n\nexport const MenuItem = ({\n children,\n isCritical,\n ref,\n ...props\n}: MenuItemProps) => {\n const [styleProps, restProps] = extractStyleProps(props);\n\n return (\n <MenuItemSlot\n asChild\n {...styleProps}\n data-critical={isCritical ? \"\" : undefined}\n >\n <RaMenuItem ref={ref} {...restProps}>\n {({ hasSubmenu }) => (\n <>\n {children}\n {hasSubmenu && (\n <Icon slot=\"caretIcon\">\n <ChevronRight />\n </Icon>\n )}\n </>\n )}\n </RaMenuItem>\n </MenuItemSlot>\n );\n};\n\nMenuItem.displayName = \"Menu.Item\";\n","import { Header } from \"react-aria-components\";\nimport { MenuSectionLabelSlot } from \"../menu.slots\";\nimport type { MenuSectionLabelProps } from \"../menu.types\";\nimport { extractStyleProps } from \"@/utils\";\n\n/**\n * Used in MenuSection for rendering the `label` property.\n */\nexport const MenuSectionLabel = ({\n children,\n ref,\n ...props\n}: MenuSectionLabelProps) => {\n const [styleProps, restProps] = extractStyleProps(props);\n\n return (\n <MenuSectionLabelSlot asChild {...styleProps}>\n <Header ref={ref} {...restProps}>\n {children}\n </Header>\n </MenuSectionLabelSlot>\n );\n};\n\nMenuSectionLabel.displayName = \"Menu.SectionLabel\";\n","import {\n MenuSection as RaMenuSection,\n Collection,\n} from \"react-aria-components\";\nimport { MenuSectionSlot } from \"../menu.slots\";\nimport type { MenuSectionProps } from \"../menu.types\";\nimport { extractStyleProps } from \"@/utils\";\nimport { useMenuContext } from \"./menu.context\";\nimport { MenuSectionProvider } from \"./menu.section-context\";\nimport { MenuSectionLabel } from \"./menu.section-label\";\nimport type { ReactNode } from \"react\";\n\nexport const MenuSection = <T extends object = object>({\n children,\n ref,\n label,\n items,\n ...props\n}: MenuSectionProps<T>) => {\n const contextProps = useMenuContext();\n\n // Extract selection-related props before extracting style props\n const {\n selectionMode = contextProps?.selectionMode,\n selectedKeys = contextProps?.selectedKeys,\n defaultSelectedKeys = contextProps?.defaultSelectedKeys,\n onSelectionChange = contextProps?.onSelectionChange,\n disallowEmptySelection = contextProps?.disallowEmptySelection,\n ...restProps\n } = props;\n\n const [styleProps, otherProps] = extractStyleProps(restProps);\n\n return (\n <MenuSectionProvider value={{ selectionMode }}>\n <MenuSectionSlot asChild {...styleProps}>\n <RaMenuSection\n ref={ref}\n selectionMode={selectionMode}\n selectedKeys={selectedKeys}\n defaultSelectedKeys={defaultSelectedKeys}\n onSelectionChange={onSelectionChange}\n disallowEmptySelection={disallowEmptySelection}\n {...otherProps}\n >\n <MenuSectionLabel>{label}</MenuSectionLabel>\n {items ? (\n <Collection items={items}>{children}</Collection>\n ) : (\n (children as ReactNode)\n )}\n </RaMenuSection>\n </MenuSectionSlot>\n </MenuSectionProvider>\n );\n};\n\nMenuSection.displayName = \"Menu.Section\";\n","import { SubmenuTrigger as RaSubmenuTrigger } from \"react-aria-components\";\nimport type { MenuSubmenuTriggerProps } from \"../menu.types\";\n\nexport const MenuSubmenuTrigger = ({\n children,\n ...props\n}: MenuSubmenuTriggerProps) => {\n return <RaSubmenuTrigger {...props}>{children}</RaSubmenuTrigger>;\n};\n\nMenuSubmenuTrigger.displayName = \"Menu.SubmenuTrigger\";\n","import type { MenuSubmenuProps } from \"../menu.types\";\nimport { MenuContent } from \"./menu.content\";\n\nexport const MenuSubmenu = ({ children, ...props }: MenuSubmenuProps) => {\n return (\n <MenuContent {...props} placement=\"end\">\n {children}\n </MenuContent>\n );\n};\n\nMenuSubmenu.displayName = \"Menu.Submenu\";\n","import { MenuRoot } from \"./components/menu.root\";\nimport { MenuTrigger } from \"./components/menu.trigger\";\nimport { MenuContent } from \"./components/menu.content\";\nimport { MenuItem } from \"./components/menu.item\";\nimport { MenuSection } from \"./components/menu.section\";\nimport { MenuSubmenuTrigger } from \"./components/menu.submenu-trigger\";\nimport { MenuSubmenu } from \"./components/menu.submenu\";\n\n// Re-export types\nexport type * from \"./menu.types\";\n\nexport const Menu = {\n Root: MenuRoot,\n Trigger: MenuTrigger,\n Content: MenuContent,\n Item: MenuItem,\n Section: MenuSection,\n Submenu: MenuSubmenu,\n SubmenuTrigger: MenuSubmenuTrigger,\n};\n\n// Exports for internal use by react-docgen\nexport {\n MenuRoot as _MenuRoot,\n MenuTrigger as _MenuTrigger,\n MenuContent as _MenuContent,\n MenuItem as _MenuItem,\n MenuSection as _MenuSection,\n MenuSubmenuTrigger as _MenuSubmenuTrigger,\n MenuSubmenu as _MenuSubmenu,\n};\n"],"names":["withProvider","withContext","createSlotRecipeContext","MenuRootSlot","MenuTriggerSlot","MenuPopoverSlot","MenuContentSlot","MenuItemSlot","MenuSectionSlot","MenuSectionLabelSlot","MenuContext","createContext","MenuProvider","useMenuContext","useContext","MenuRoot","props","recipe","useSlotRecipe","recipeProps","functionalProps","children","trigger","isOpen","defaultOpen","onOpenChange","menuContextProps","menuTriggerProps","jsx","RaMenuTrigger","MenuTrigger","asChild","ref","styleProps","restProps","extractStyleProps","Button","MenuSectionContext","MenuSectionProvider","MenuContent","placementOverride","contextProps","placement","menuProps","finalPlacement","Popover","Menu","MenuItem","isCritical","RaMenuItem","hasSubmenu","jsxs","Fragment","Icon","ChevronRight","MenuSectionLabel","Header","MenuSection","label","items","selectionMode","selectedKeys","defaultSelectedKeys","onSelectionChange","disallowEmptySelection","otherProps","RaMenuSection","Collection","MenuSubmenuTrigger","RaSubmenuTrigger","MenuSubmenu"],"mappings":"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"}