@acronis-platform/ui-react 0.33.1 → 0.35.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-secondary.js","sources":["../../../../src/components/ui/sidebar-secondary/sidebar-secondary.tsx"],"sourcesContent":["import * as React from 'react';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { useRender } from '@base-ui/react/use-render';\nimport { Collapsible } from '@base-ui/react/collapsible';\nimport {\n ChevronDownIcon,\n ChevronRightIcon,\n SquareArrowUpRightIcon,\n} from '@acronis-platform/icons-react/stroke-mono';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\n// Composable SidebarSecondary primitives mirroring the Figma \"SidebarSecondary\"\n// component set (node 2468:59502, variant expanded|collapsed). Every color and\n// metric is wired to a next-gen `--ui-sidebar-secondary-*` token from\n// @acronis-platform/tokens-pd — no hex, no invented tokens.\n//\n// Like SidebarPrimary, expanded/collapsed is a width-reflow state (not a panel\n// show/hide), modelled as a controlled/uncontrolled `expanded` prop (default\n// true) that sets `data-state=\"expanded|collapsed\"` on the root and is shared to\n// descendants via context. The collapsed rail replaces the section list with a\n// vertical breadcrumb (parent → separator → current page), toggled purely by the\n// `data-[state]` selectors so it is SSR-present and needs no JS branch.\n//\n// Menu-item color wiring DIVERGES from Primary (DESIGN §6.2): Secondary recolors\n// only the CONTAINER per selected/unselected; the icon and label use the shared\n// `--ui-sidebar-secondary-menu-item-global-{icon,label}-color-color` tokens\n// across both variants and every interaction state (the next-gen token sync\n// collapsed the former per-state idle/hover/active icon+label colors into a\n// single value each). So the cva base carries the global icon/label colors and\n// the two variants only swap the container fill.\n//\n// The Level-1 expandable disclosure (SidebarSecondaryMenuSub) is the canonical\n// Base UI Collapsible use — it gives `aria-expanded`/`aria-controls` for free and\n// per-row open state. The trigger gets `data-panel-open` when open, which rotates\n// the chevron.\n//\n// R6 (collapsed separator icon): resolved from the Figma node metadata — the\n// collapsed `iconSeparator` instance's mainComponent is \"ChevronRight\", so the\n// separator defaults to `ChevronRightIcon` (16px), tinted by\n// `--ui-sidebar-secondary-collapsed-icon-separator-color`. The disclosure chevron\n// uses `ChevronDownIcon` rotated via `data-panel-open`. The focus ring reuses the\n// shared `--ui-focus-brand` (no sidebar focus token exists — R1).\n\ninterface SidebarSecondaryContextValue {\n expanded: boolean;\n /** Flip the panel width — drives the controlled/uncontrolled `expanded` state. */\n toggleExpanded: () => void;\n}\n\nconst SidebarSecondaryContext =\n React.createContext<SidebarSecondaryContextValue | null>(null);\n\nfunction useSidebarSecondaryContext(): SidebarSecondaryContextValue {\n // Default to expanded so parts render standalone (in isolation tests /\n // stories) without a wrapping root; the toggle is a no-op outside a root.\n return (\n React.useContext(SidebarSecondaryContext) ?? {\n expanded: true,\n toggleExpanded: () => {},\n }\n );\n}\n\n/**\n * Controlled + uncontrolled boolean state (the Base UI idiom). When `controlled`\n * is provided it wins and the setter only emits the change callback; otherwise\n * the setter updates internal state. `onChange` is ALWAYS invoked with the next\n * value so a consumer can react in either mode.\n */\nfunction useControllableBoolean(\n controlled: boolean | undefined,\n defaultValue: boolean,\n onChange?: (next: boolean) => void\n): [boolean, (next: boolean) => void] {\n const [uncontrolled, setUncontrolled] = React.useState(defaultValue);\n const isControlled = controlled !== undefined;\n const value = isControlled ? controlled : uncontrolled;\n const setValue = React.useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolled(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n return [value, setValue];\n}\n\nexport interface SidebarSecondaryProps\n extends React.ComponentPropsWithoutRef<'nav'> {\n /** Controlled expanded (rail width) state. */\n expanded?: boolean;\n /** Uncontrolled initial expanded state. Defaults to `true` (full width). */\n defaultExpanded?: boolean;\n /** Fires when the expanded state changes (e.g. a consumer toggle). */\n onExpandedChange?: (expanded: boolean) => void;\n /**\n * Replace the rendered `<nav>` with another element or component\n * (Base UI composition). Accepts a React element or a render function.\n */\n render?: useRender.RenderProp;\n}\n\nconst SidebarSecondary = React.forwardRef<HTMLElement, SidebarSecondaryProps>(\n (\n {\n className,\n expanded: expandedProp,\n defaultExpanded = true,\n onExpandedChange,\n 'aria-label': ariaLabel = 'Section navigation',\n render,\n children,\n ...props\n },\n ref\n ) => {\n const [expanded, setExpanded] = useControllableBoolean(\n expandedProp,\n defaultExpanded,\n onExpandedChange\n );\n\n // Collapse is driven by the consumer through the layout context — the\n // `SidebarSecondaryCollapseTrigger` calls `toggleExpanded`, which updates\n // uncontrolled state and always emits `onExpandedChange`. Controlled\n // consumers ignore the internal state and react to the callback.\n const context = React.useMemo<SidebarSecondaryContextValue>(\n () => ({ expanded, toggleExpanded: () => setExpanded(!expanded) }),\n [expanded, setExpanded]\n );\n\n const element = useRender({\n render,\n ref,\n defaultTagName: 'nav',\n props: mergeProps<'nav'>(\n {\n 'aria-label': ariaLabel,\n // `data-state` drives every collapsed/expanded token switch via\n // attribute selectors; typed loosely because React's nav attribute\n // map doesn't include arbitrary data-* keys as literals.\n ...({ 'data-state': expanded ? 'expanded' : 'collapsed' } as Record<\n string,\n string\n >),\n className: cn(\n 'group/sidebar flex h-full flex-col bg-[var(--ui-sidebar-secondary-global-container-color)] border-r border-[var(--ui-sidebar-secondary-global-container-border-color)] [border-right-width:var(--ui-sidebar-secondary-global-container-border-width)] w-[var(--ui-sidebar-secondary-collapsed-container-width)] data-[state=expanded]:w-[var(--ui-sidebar-secondary-expanded-container-width)] transition-[width]',\n className\n ),\n children,\n },\n props\n ),\n });\n\n return (\n <SidebarSecondaryContext.Provider value={context}>\n {element}\n </SidebarSecondaryContext.Provider>\n );\n }\n);\nSidebarSecondary.displayName = 'SidebarSecondary';\n\nexport interface SidebarSecondaryHeaderProps\n extends React.ComponentPropsWithoutRef<'div'> {\n /** Heading text (or pass as children). */\n label?: React.ReactNode;\n}\n\nconst SidebarSecondaryHeader = React.forwardRef<\n HTMLDivElement,\n SidebarSecondaryHeaderProps\n>(({ className, label, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex items-center shrink-0',\n 'px-[var(--ui-sidebar-secondary-collapsed-container-header-padding-x)] py-[var(--ui-sidebar-secondary-collapsed-container-header-padding-y)]',\n 'group-data-[state=expanded]/sidebar:px-[var(--ui-sidebar-secondary-expanded-container-header-padding-x)] group-data-[state=expanded]/sidebar:py-[var(--ui-sidebar-secondary-expanded-container-header-padding-y)]',\n className\n )}\n {...props}\n >\n <h2 className=\"ui-sidebar-secondary-global-header-label-text-style truncate text-[var(--ui-sidebar-secondary-global-header-label-color)]\">\n {label ?? children}\n </h2>\n </div>\n));\nSidebarSecondaryHeader.displayName = 'SidebarSecondaryHeader';\n\nconst SidebarSecondaryContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n // Expanded: the section list. Hidden in collapsed mode, where the\n // CollapsedBreadcrumb sibling takes over.\n <div\n ref={ref}\n className={cn(\n 'flex flex-1 flex-col overflow-y-auto gap-[var(--ui-sidebar-secondary-global-section-list-gap)]',\n 'hidden group-data-[state=expanded]/sidebar:flex',\n className\n )}\n {...props}\n />\n));\nSidebarSecondaryContent.displayName = 'SidebarSecondaryContent';\n\nexport interface SidebarSecondaryCollapsedBreadcrumbProps\n extends React.ComponentPropsWithoutRef<'div'> {\n /** The parent section label (breadcrumbLabel). */\n parentLabel: React.ReactNode;\n /** The current page label (labelCurrentPage). */\n currentLabel: React.ReactNode;\n /** Separator between the two; defaults to a 16px ChevronRightIcon (R6). */\n separator?: React.ReactNode;\n}\n\nconst SidebarSecondaryCollapsedBreadcrumb = React.forwardRef<\n HTMLDivElement,\n SidebarSecondaryCollapsedBreadcrumbProps\n>(({ className, parentLabel, currentLabel, separator, ...props }, ref) => (\n // Shown only in collapsed mode — toggled by the same data-[state] selector so\n // it stays in the DOM (SSR-present) with no JS branch. Laid out vertically:\n // parent → separator → current page.\n <div\n ref={ref}\n className={cn(\n 'flex flex-col items-center shrink-0',\n 'gap-[var(--ui-sidebar-secondary-collapsed-container-content-gap)] py-[var(--ui-sidebar-secondary-collapsed-container-content-padding-y)]',\n 'flex group-data-[state=expanded]/sidebar:hidden',\n className\n )}\n {...props}\n >\n <span className=\"ui-sidebar-secondary-collapsed-breadcrumb-label-text-style text-[var(--ui-sidebar-secondary-collapsed-breadcrumb-label-color)]\">\n {parentLabel}\n </span>\n <span\n aria-hidden=\"true\"\n className=\"inline-flex items-center text-[var(--ui-sidebar-secondary-collapsed-icon-separator-color)] [&>svg]:size-[var(--ui-sidebar-secondary-collapsed-icon-separator-size)]\"\n >\n {separator ?? <ChevronRightIcon size={16} />}\n </span>\n <span className=\"ui-sidebar-secondary-collapsed-label-current-page-text-style text-[var(--ui-sidebar-secondary-collapsed-label-current-page-color)]\">\n {currentLabel}\n </span>\n </div>\n));\nSidebarSecondaryCollapsedBreadcrumb.displayName =\n 'SidebarSecondaryCollapsedBreadcrumb';\n\nconst SidebarSecondaryFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col shrink-0',\n 'border-t border-[var(--ui-sidebar-secondary-global-container-footer-border-color)] [border-top-width:var(--ui-sidebar-secondary-global-container-footer-border-width)]',\n 'py-[var(--ui-sidebar-secondary-section-container-padding-y)]',\n className\n )}\n {...props}\n />\n));\nSidebarSecondaryFooter.displayName = 'SidebarSecondaryFooter';\n\n// A section can be a static group (label + items) or an EXPANDABLE disclosure\n// (Figma Section `expandable=yes-*`): the label becomes a chevron toggle that\n// shows/hides the whole item list. Whether a section is expandable is shared to\n// its label + menu via this context (default: static), so the same `SectionLabel`\n// / `Menu` parts adapt without a separate component set.\ninterface SidebarSecondarySectionContextValue {\n expandable: boolean;\n}\n\nconst SidebarSecondarySectionContext =\n React.createContext<SidebarSecondarySectionContextValue>({ expandable: false });\n\nconst SECTION_STATIC: SidebarSecondarySectionContextValue = { expandable: false };\nconst SECTION_EXPANDABLE: SidebarSecondarySectionContextValue = { expandable: true };\n\nexport interface SidebarSecondarySectionProps\n extends React.ComponentPropsWithoutRef<'div'> {\n /**\n * Make the section a collapsible disclosure: the `SidebarSecondarySectionLabel`\n * becomes a chevron toggle and the `SidebarSecondaryMenu` becomes its panel.\n */\n expandable?: boolean;\n /** Controlled open state (expandable sections only). */\n open?: boolean;\n /** Uncontrolled initial open state (expandable sections only). Defaults to open. */\n defaultOpen?: boolean;\n /** Fires with the next open value when an expandable section toggles. */\n onOpenChange?: (open: boolean) => void;\n}\n\nconst SidebarSecondarySection = React.forwardRef<\n HTMLDivElement,\n SidebarSecondarySectionProps\n>(\n (\n { className, expandable = false, open, defaultOpen = true, onOpenChange, children, ...props },\n ref\n ) => {\n // Sections are separated by vertical padding + the section label; the next-gen\n // token sync removed the inter-section divider (no\n // `--ui-sidebar-secondary-section-container-border-*` token survives).\n const sectionClass = cn(\n 'flex flex-col py-[var(--ui-sidebar-secondary-section-container-padding-y)]',\n className\n );\n\n if (!expandable) {\n return (\n <SidebarSecondarySectionContext.Provider value={SECTION_STATIC}>\n <div ref={ref} className={sectionClass} {...props}>\n {children}\n </div>\n </SidebarSecondarySectionContext.Provider>\n );\n }\n\n // Expandable: Base UI Collapsible owns the open state (controlled or\n // uncontrolled) + the aria-expanded/aria-controls wiring on the trigger.\n return (\n <SidebarSecondarySectionContext.Provider value={SECTION_EXPANDABLE}>\n <Collapsible.Root\n ref={ref}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n render={<div className={sectionClass} />}\n {...props}\n >\n {children}\n </Collapsible.Root>\n </SidebarSecondarySectionContext.Provider>\n );\n }\n);\nSidebarSecondarySection.displayName = 'SidebarSecondarySection';\n\nexport interface SidebarSecondarySectionLabelProps\n extends React.ComponentPropsWithoutRef<'div'> {\n /** Trailing header actions (e.g. a ghost `ButtonIcon`). Rendered outside the toggle. */\n actions?: React.ReactNode;\n /**\n * A rollup badge (e.g. a `Tag` with an unread count) shown in the header only\n * when an expandable section is collapsed. Ignored for static sections.\n */\n unreadRollup?: React.ReactNode;\n}\n\nconst sectionLabelTextClass =\n 'ui-sidebar-secondary-section-label-section-text-style text-[var(--ui-sidebar-secondary-section-label-section-color)]';\nconst sectionHeaderPadClass =\n 'pb-[var(--ui-sidebar-secondary-section-container-header-padding-y)] px-[var(--ui-sidebar-secondary-section-container-header-padding-x)]';\n\nconst SidebarSecondarySectionLabel = React.forwardRef<\n HTMLDivElement,\n SidebarSecondarySectionLabelProps\n>(({ className, actions, unreadRollup, children, ...props }, ref) => {\n const { expandable } = React.useContext(SidebarSecondarySectionContext);\n\n if (!expandable) {\n // Static header: preserve the original markup when there are no actions so\n // existing layouts/baselines are unchanged.\n const base = cn(sectionLabelTextClass, sectionHeaderPadClass, className);\n if (actions == null) {\n return (\n <div ref={ref} className={base} {...props}>\n {children}\n </div>\n );\n }\n return (\n <div\n ref={ref}\n className={cn(\n base,\n 'flex items-center gap-[var(--ui-sidebar-secondary-section-container-header-gap)]'\n )}\n {...props}\n >\n <span className=\"min-w-0 flex-1 truncate\">{children}</span>\n <span className=\"flex shrink-0 items-center\">{actions}</span>\n </div>\n );\n }\n\n // Expandable header: a chevron toggle (the Collapsible trigger) plus optional\n // trailing actions kept OUTSIDE the trigger button (no nested buttons). The\n // unread-rollup badge sits inside the trigger and shows only while collapsed.\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center gap-[var(--ui-sidebar-secondary-section-container-header-gap)]',\n sectionHeaderPadClass,\n className\n )}\n {...props}\n >\n <Collapsible.Trigger\n className={cn(\n 'group/section flex min-w-0 flex-1 items-center gap-[var(--ui-sidebar-secondary-section-container-header-gap)] text-left',\n sectionLabelTextClass,\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-brand)] focus-visible:ring-inset'\n )}\n >\n <ChevronDownIcon\n size={16}\n aria-hidden=\"true\"\n className=\"shrink-0 -rotate-90 transition-transform group-data-[panel-open]/section:rotate-0 text-[var(--ui-sidebar-secondary-section-icon-arrow-color)]\"\n />\n <span className=\"min-w-0 flex-1 truncate\">{children}</span>\n {unreadRollup != null && (\n <span className=\"flex shrink-0 items-center group-data-[panel-open]/section:hidden\">\n {unreadRollup}\n </span>\n )}\n </Collapsible.Trigger>\n {actions != null && (\n <span className=\"flex shrink-0 items-center\">{actions}</span>\n )}\n </div>\n );\n});\nSidebarSecondarySectionLabel.displayName = 'SidebarSecondarySectionLabel';\n\nconst SidebarSecondaryMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentPropsWithoutRef<'ul'>\n>(({ className, ...props }, ref) => {\n const { expandable } = React.useContext(SidebarSecondarySectionContext);\n const list = (\n <ul\n ref={ref}\n className={cn(\n 'flex flex-col gap-[var(--ui-sidebar-secondary-section-menu-item-list-gap)]',\n className\n )}\n {...props}\n />\n );\n // Inside an expandable section the item list IS the collapsible panel, so it\n // mounts/unmounts with the section's open state.\n return expandable ? <Collapsible.Panel>{list}</Collapsible.Panel> : list;\n});\nSidebarSecondaryMenu.displayName = 'SidebarSecondaryMenu';\n\n// Shared row geometry + the GLOBAL icon/label state colors (shared across\n// selected/unselected — DESIGN §6.2). The cva `variant` only swaps the container\n// fill. Each interaction state is wired to its own token even where acronis's\n// value is unchanged (runtime var() references honor brand overrides only on the\n// referenced token).\nconst sidebarSecondaryRowClasses =\n 'group/row flex w-full items-center gap-[var(--ui-sidebar-secondary-menu-item-global-container-gap)] min-h-[var(--ui-sidebar-secondary-menu-item-global-container-height-min)] px-[var(--ui-sidebar-secondary-menu-item-global-container-padding-x)] py-[var(--ui-sidebar-secondary-menu-item-global-container-padding-y)] no-underline ui-sidebar-secondary-menu-item-global-label-text-style transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-brand)] focus-visible:ring-inset text-[var(--ui-sidebar-secondary-menu-item-global-label-color-color)] [&_svg]:shrink-0 [&_svg]:size-[var(--ui-sidebar-secondary-menu-item-global-icon-size)] [&_svg]:text-[var(--ui-sidebar-secondary-menu-item-global-icon-color-color)]';\n\nconst sidebarSecondaryMenuItemVariants = cva(sidebarSecondaryRowClasses, {\n variants: {\n variant: {\n unselected:\n 'bg-[var(--ui-sidebar-secondary-menu-item-unselected-container-color-idle)] hover:bg-[var(--ui-sidebar-secondary-menu-item-unselected-container-color-hover)] active:bg-[var(--ui-sidebar-secondary-menu-item-unselected-container-color-active)]',\n selected:\n 'bg-[var(--ui-sidebar-secondary-menu-item-selected-container-color-idle)] hover:bg-[var(--ui-sidebar-secondary-menu-item-selected-container-color-hover)] active:bg-[var(--ui-sidebar-secondary-menu-item-selected-container-color-active)]',\n },\n },\n defaultVariants: {\n variant: 'unselected',\n },\n});\n\nexport interface SidebarSecondaryMenuItemProps\n extends Omit<React.ComponentPropsWithoutRef<'a'>, 'children'>,\n Omit<VariantProps<typeof sidebarSecondaryMenuItemVariants>, 'variant'> {\n /** Marks the current route: sets the `selected` variant + `aria-current=\"page\"`. */\n selected?: boolean;\n /** Optional leading 16px icon (Level-1 only; `hasIcon` in Figma). */\n icon?: React.ReactNode;\n children?: React.ReactNode;\n /** Replace the rendered `<a>` (e.g. a router `Link` or a `<button>`). */\n render?: useRender.RenderProp;\n}\n\nconst SidebarSecondaryMenuItem = React.forwardRef<\n HTMLAnchorElement,\n SidebarSecondaryMenuItemProps\n>(({ className, selected = false, icon, render, children, ...props }, ref) => {\n const { expanded } = useSidebarSecondaryContext();\n\n // Trailing extras (tag / shortcut / external link) are passed as children but\n // must sit at the right edge of the row, after the title — so split them out:\n // the title takes the remaining width and truncates with an ellipsis, while the\n // extras stay `shrink-0` on the right (the row's `gap` is their left margin).\n const items = React.Children.toArray(children);\n const extras = items.filter(\n (child): child is React.ReactElement =>\n React.isValidElement(child) &&\n (child.type as { displayName?: string }).displayName ===\n 'SidebarSecondaryMenuItemExtras'\n );\n const label = items.filter(\n (child) => !extras.includes(child as React.ReactElement)\n );\n\n const inner = useRender({\n render,\n ref,\n defaultTagName: 'a',\n props: mergeProps<'a'>(\n {\n className: cn(\n sidebarSecondaryMenuItemVariants({\n variant: selected ? 'selected' : 'unselected',\n }),\n className\n ),\n 'aria-current': selected ? 'page' : undefined,\n children: (\n <>\n {icon != null && (\n <span className=\"flex shrink-0 items-center self-start mt-[var(--ui-sidebar-secondary-menu-item-global-icon-margin-t)]\">\n {icon}\n </span>\n )}\n {/* Keep the label in the DOM as `sr-only` in collapsed/rail mode so\n an icon-only row keeps an accessible name (a11y §7). */}\n <span\n className={cn(\n 'min-w-0 flex-1 truncate text-left',\n !expanded && 'sr-only'\n )}\n >\n {label}\n </span>\n {extras.length > 0 && (\n <span className=\"flex shrink-0 items-center\">{extras}</span>\n )}\n </>\n ),\n },\n props\n ),\n });\n\n return <li className=\"contents\">{inner}</li>;\n});\nSidebarSecondaryMenuItem.displayName = 'SidebarSecondaryMenuItem';\n\nexport type SidebarSecondaryMenuSubProps = React.ComponentPropsWithoutRef<\n typeof Collapsible.Root\n>;\n\nconst SidebarSecondaryMenuSub = React.forwardRef<\n HTMLDivElement,\n SidebarSecondaryMenuSubProps\n>(({ className, render, ...props }, ref) => (\n // Disclosure row: Base UI Collapsible gives per-row open state +\n // aria-expanded/aria-controls. Rendered as the list `<li>` wrapper.\n <Collapsible.Root\n ref={ref}\n render={render ?? <li />}\n className={cn('contents', className)}\n {...props}\n />\n));\nSidebarSecondaryMenuSub.displayName = 'SidebarSecondaryMenuSub';\n\nexport interface SidebarSecondaryMenuSubTriggerProps\n extends React.ComponentPropsWithoutRef<typeof Collapsible.Trigger> {\n /** Marks the parent row as selected. */\n selected?: boolean;\n /** Optional leading 16px icon. */\n icon?: React.ReactNode;\n}\n\nconst SidebarSecondaryMenuSubTrigger = React.forwardRef<\n HTMLButtonElement,\n SidebarSecondaryMenuSubTriggerProps\n>(({ className, selected = false, icon, children, ...props }, ref) => {\n const { expanded } = useSidebarSecondaryContext();\n\n return (\n <Collapsible.Trigger\n ref={ref}\n aria-current={selected ? 'page' : undefined}\n className={cn(\n sidebarSecondaryMenuItemVariants({\n variant: selected ? 'selected' : 'unselected',\n }),\n 'text-left',\n className\n )}\n {...props}\n >\n {icon != null && (\n <span className=\"flex shrink-0 items-center self-start mt-[var(--ui-sidebar-secondary-menu-item-global-icon-margin-t)]\">\n {icon}\n </span>\n )}\n <span className={cn('flex-1 truncate', !expanded && 'sr-only')}>\n {children}\n </span>\n {/* Chevron rotates when the panel is open (Base UI sets data-panel-open\n on the trigger). Hidden in collapsed rail mode. */}\n <ChevronDownIcon\n size={16}\n aria-hidden=\"true\"\n className={cn(\n 'shrink-0 transition-transform group-data-[panel-open]/row:rotate-180',\n !expanded && 'hidden'\n )}\n />\n </Collapsible.Trigger>\n );\n});\nSidebarSecondaryMenuSubTrigger.displayName = 'SidebarSecondaryMenuSubTrigger';\n\nexport type SidebarSecondaryMenuSubContentProps =\n React.ComponentPropsWithoutRef<typeof Collapsible.Panel>;\n\nconst SidebarSecondaryMenuSubContent = React.forwardRef<\n HTMLDivElement,\n SidebarSecondaryMenuSubContentProps\n>(({ className, children, ...props }, ref) => (\n <Collapsible.Panel ref={ref} className={cn(className)} {...props}>\n <ul className=\"flex flex-col gap-[var(--ui-sidebar-secondary-section-menu-item-list-gap)]\">\n {children}\n </ul>\n </Collapsible.Panel>\n));\nSidebarSecondaryMenuSubContent.displayName = 'SidebarSecondaryMenuSubContent';\n\nexport interface SidebarSecondaryMenuSubItemProps\n extends Omit<React.ComponentPropsWithoutRef<'a'>, 'children'> {\n /** Marks the current route (Level-2 — no icon). */\n selected?: boolean;\n children?: React.ReactNode;\n /** Replace the rendered `<a>` (e.g. a router `Link`). */\n render?: useRender.RenderProp;\n}\n\nconst SidebarSecondaryMenuSubItem = React.forwardRef<\n HTMLAnchorElement,\n SidebarSecondaryMenuSubItemProps\n>(({ className, selected = false, render, children, ...props }, ref) => {\n const { expanded } = useSidebarSecondaryContext();\n\n const inner = useRender({\n render,\n ref,\n defaultTagName: 'a',\n props: mergeProps<'a'>(\n {\n className: cn(\n sidebarSecondaryMenuItemVariants({\n variant: selected ? 'selected' : 'unselected',\n }),\n // Level-2 left indent (no icon column). The dedicated level-2 padding\n // token was removed in the next-gen sync; reconstruct the indent from\n // surviving tokens so the label aligns under level-1 labels (row\n // padding + icon column + gap).\n 'pl-[calc(var(--ui-sidebar-secondary-menu-item-global-container-padding-x)+var(--ui-sidebar-secondary-menu-item-global-icon-size)+var(--ui-sidebar-secondary-menu-item-global-container-gap))]',\n className\n ),\n 'aria-current': selected ? 'page' : undefined,\n children: (\n <span className={cn('flex-1 truncate text-left', !expanded && 'sr-only')}>\n {children}\n </span>\n ),\n },\n props\n ),\n });\n\n return <li className=\"contents\">{inner}</li>;\n});\nSidebarSecondaryMenuSubItem.displayName = 'SidebarSecondaryMenuSubItem';\n\nexport interface SidebarSecondaryMenuItemExtrasProps\n extends React.ComponentPropsWithoutRef<'span'> {\n /** Which trailing affordance to render. */\n variant: 'tag' | 'externalLink' | 'shortcut' | 'tag-externalLink';\n /** Shortcut text for the `shortcut` variant. */\n shortcut?: string;\n /** Tag content for the `tag` / `tag-externalLink` variants. */\n tag?: React.ReactNode;\n}\n\nconst SidebarSecondaryMenuItemExtras = React.forwardRef<\n HTMLSpanElement,\n SidebarSecondaryMenuItemExtrasProps\n>(({ className, variant, shortcut, tag, children, ...props }, ref) => {\n const { expanded } = useSidebarSecondaryContext();\n const showTag = variant === 'tag' || variant === 'tag-externalLink';\n const showExternal =\n variant === 'externalLink' || variant === 'tag-externalLink';\n const showShortcut = variant === 'shortcut';\n\n return (\n <span\n ref={ref}\n className={cn(\n 'inline-flex items-center gap-[var(--ui-sidebar-secondary-menu-item-extras-global-container-gap)]',\n !expanded && 'hidden',\n className\n )}\n {...props}\n >\n {showTag && (tag ?? children)}\n {showShortcut && (\n <span className=\"ui-sidebar-secondary-menu-item-extras-global-shortcut-text-style text-[var(--ui-sidebar-secondary-menu-item-extras-global-shortcut-color)]\">\n {shortcut ?? children}\n </span>\n )}\n {showExternal && (\n <SquareArrowUpRightIcon\n size={16}\n className=\"text-[var(--ui-sidebar-secondary-menu-item-extras-global-external-icon-color)] size-[var(--ui-sidebar-secondary-menu-item-extras-global-external-icon-size)]\"\n />\n )}\n </span>\n );\n});\nSidebarSecondaryMenuItemExtras.displayName = 'SidebarSecondaryMenuItemExtras';\n\nexport interface SidebarSecondaryCollapseTriggerProps\n extends Omit<React.ComponentPropsWithoutRef<'button'>, 'children'> {\n /** Leading 16px icon (e.g. a panel-left glyph). */\n icon?: React.ReactNode;\n children?: React.ReactNode;\n}\n\n// The footer \"Collapse menu\" affordance. A row-styled `<button>` that flips the\n// panel width via the layout context — the live wiring for the controllable\n// `expanded` state (B1). Keeps its label as `sr-only` in collapsed mode.\nconst SidebarSecondaryCollapseTrigger = React.forwardRef<\n HTMLButtonElement,\n SidebarSecondaryCollapseTriggerProps\n>(({ className, icon, children, onClick, ...props }, ref) => {\n const { expanded, toggleExpanded } = useSidebarSecondaryContext();\n\n return (\n <li className=\"contents\">\n <button\n ref={ref}\n type=\"button\"\n aria-expanded={expanded}\n className={cn(\n sidebarSecondaryMenuItemVariants({ variant: 'unselected' }),\n 'text-left',\n className\n )}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) toggleExpanded();\n }}\n {...props}\n >\n {icon != null && (\n <span className=\"flex shrink-0 items-center self-start mt-[var(--ui-sidebar-secondary-menu-item-global-icon-margin-t)]\">\n {icon}\n </span>\n )}\n <span className={cn('flex-1 truncate', !expanded && 'sr-only')}>\n {children}\n </span>\n </button>\n </li>\n );\n});\nSidebarSecondaryCollapseTrigger.displayName = 'SidebarSecondaryCollapseTrigger';\n\nexport {\n SidebarSecondary,\n SidebarSecondaryHeader,\n SidebarSecondaryContent,\n SidebarSecondaryCollapsedBreadcrumb,\n SidebarSecondaryFooter,\n SidebarSecondarySection,\n SidebarSecondarySectionLabel,\n SidebarSecondaryMenu,\n SidebarSecondaryMenuItem,\n SidebarSecondaryMenuSub,\n SidebarSecondaryMenuSubTrigger,\n SidebarSecondaryMenuSubContent,\n SidebarSecondaryMenuSubItem,\n SidebarSecondaryMenuItemExtras,\n SidebarSecondaryCollapseTrigger,\n sidebarSecondaryMenuItemVariants,\n};\n"],"names":["SidebarSecondaryContext","React","useSidebarSecondaryContext","useControllableBoolean","controlled","defaultValue","onChange","uncontrolled","setUncontrolled","isControlled","value","setValue","next","SidebarSecondary","className","expandedProp","defaultExpanded","onExpandedChange","ariaLabel","render","children","props","ref","expanded","setExpanded","context","element","useRender","mergeProps","cn","SidebarSecondaryHeader","label","jsx","SidebarSecondaryContent","SidebarSecondaryCollapsedBreadcrumb","parentLabel","currentLabel","separator","jsxs","ChevronRightIcon","SidebarSecondaryFooter","SidebarSecondarySectionContext","SECTION_STATIC","SECTION_EXPANDABLE","SidebarSecondarySection","expandable","open","defaultOpen","onOpenChange","sectionClass","Collapsible","sectionLabelTextClass","sectionHeaderPadClass","SidebarSecondarySectionLabel","actions","unreadRollup","base","ChevronDownIcon","SidebarSecondaryMenu","list","sidebarSecondaryRowClasses","sidebarSecondaryMenuItemVariants","cva","SidebarSecondaryMenuItem","selected","icon","items","extras","child","inner","Fragment","SidebarSecondaryMenuSub","SidebarSecondaryMenuSubTrigger","SidebarSecondaryMenuSubContent","SidebarSecondaryMenuSubItem","SidebarSecondaryMenuItemExtras","variant","shortcut","tag","showTag","showExternal","showShortcut","SquareArrowUpRightIcon","SidebarSecondaryCollapseTrigger","onClick","toggleExpanded","event"],"mappings":"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"}
1
+ {"version":3,"file":"sidebar-secondary.js","sources":["../../../../src/components/ui/sidebar-secondary/sidebar-secondary.tsx"],"sourcesContent":["import * as React from 'react';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { useRender } from '@base-ui/react/use-render';\nimport { Collapsible } from '@base-ui/react/collapsible';\nimport {\n ChevronDownIcon,\n ChevronRightIcon,\n SquareArrowUpRightIcon,\n} from '@acronis-platform/icons-react/stroke-mono';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\n// Composable SidebarSecondary primitives mirroring the Figma \"SidebarSecondary\"\n// component set (node 2468:59502, variant expanded|collapsed). Every color and\n// metric is wired to a next-gen `--ui-sidebar-secondary-*` token from\n// @acronis-platform/tokens-pd — no hex, no invented tokens.\n//\n// Like SidebarPrimary, expanded/collapsed is a width-reflow state (not a panel\n// show/hide), modelled as a controlled/uncontrolled `expanded` prop (default\n// true) that sets `data-state=\"expanded|collapsed\"` on the root and is shared to\n// descendants via context. The collapsed rail replaces the section list with a\n// vertical breadcrumb (parent → separator → current page), toggled purely by the\n// `data-[state]` selectors so it is SSR-present and needs no JS branch.\n//\n// Menu-item color wiring DIVERGES from Primary (DESIGN §6.2): Secondary recolors\n// only the CONTAINER per selected/unselected; the icon and label use the shared\n// `--ui-sidebar-secondary-menu-item-global-{icon,label}-color-color` tokens\n// across both variants and every interaction state (the next-gen token sync\n// collapsed the former per-state idle/hover/active icon+label colors into a\n// single value each). So the cva base carries the global icon/label colors and\n// the two variants only swap the container fill.\n//\n// The Level-1 expandable disclosure (SidebarSecondaryMenuSub) is the canonical\n// Base UI Collapsible use — it gives `aria-expanded`/`aria-controls` for free and\n// per-row open state. The trigger gets `data-panel-open` when open, which rotates\n// the chevron.\n//\n// R6 (collapsed separator icon): resolved from the Figma node metadata — the\n// collapsed `iconSeparator` instance's mainComponent is \"ChevronRight\", so the\n// separator defaults to `ChevronRightIcon` (16px), tinted by\n// `--ui-sidebar-secondary-collapsed-icon-separator-color`. The disclosure chevron\n// uses `ChevronDownIcon` rotated via `data-panel-open`. The focus ring reuses the\n// shared `--ui-focus-brand` (no sidebar focus token exists — R1).\n\ninterface SidebarSecondaryContextValue {\n expanded: boolean;\n /** Flip the panel width — drives the controlled/uncontrolled `expanded` state. */\n toggleExpanded: () => void;\n}\n\nconst SidebarSecondaryContext =\n React.createContext<SidebarSecondaryContextValue | null>(null);\n\nfunction useSidebarSecondaryContext(): SidebarSecondaryContextValue {\n // Default to expanded so parts render standalone (in isolation tests /\n // stories) without a wrapping root; the toggle is a no-op outside a root.\n return (\n React.useContext(SidebarSecondaryContext) ?? {\n expanded: true,\n toggleExpanded: () => {},\n }\n );\n}\n\n/**\n * Controlled + uncontrolled boolean state (the Base UI idiom). When `controlled`\n * is provided it wins and the setter only emits the change callback; otherwise\n * the setter updates internal state. `onChange` is ALWAYS invoked with the next\n * value so a consumer can react in either mode.\n */\nfunction useControllableBoolean(\n controlled: boolean | undefined,\n defaultValue: boolean,\n onChange?: (next: boolean) => void\n): [boolean, (next: boolean) => void] {\n const [uncontrolled, setUncontrolled] = React.useState(defaultValue);\n const isControlled = controlled !== undefined;\n const value = isControlled ? controlled : uncontrolled;\n const setValue = React.useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolled(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n return [value, setValue];\n}\n\nexport interface SidebarSecondaryProps\n extends React.ComponentPropsWithoutRef<'nav'> {\n /** Controlled expanded (rail width) state. */\n expanded?: boolean;\n /** Uncontrolled initial expanded state. Defaults to `true` (full width). */\n defaultExpanded?: boolean;\n /** Fires when the expanded state changes (e.g. a consumer toggle). */\n onExpandedChange?: (expanded: boolean) => void;\n /**\n * Replace the rendered `<nav>` with another element or component\n * (Base UI composition). Accepts a React element or a render function.\n */\n render?: useRender.RenderProp;\n}\n\nconst SidebarSecondary = React.forwardRef<HTMLElement, SidebarSecondaryProps>(\n (\n {\n className,\n expanded: expandedProp,\n defaultExpanded = true,\n onExpandedChange,\n 'aria-label': ariaLabel = 'Section navigation',\n render,\n children,\n ...props\n },\n ref\n ) => {\n const [expanded, setExpanded] = useControllableBoolean(\n expandedProp,\n defaultExpanded,\n onExpandedChange\n );\n\n // Collapse is driven by the consumer through the layout context — the\n // `SidebarSecondaryCollapseTrigger` calls `toggleExpanded`, which updates\n // uncontrolled state and always emits `onExpandedChange`. Controlled\n // consumers ignore the internal state and react to the callback.\n const context = React.useMemo<SidebarSecondaryContextValue>(\n () => ({ expanded, toggleExpanded: () => setExpanded(!expanded) }),\n [expanded, setExpanded]\n );\n\n const element = useRender({\n render,\n ref,\n defaultTagName: 'nav',\n props: mergeProps<'nav'>(\n {\n 'aria-label': ariaLabel,\n // `data-state` drives every collapsed/expanded token switch via\n // attribute selectors; typed loosely because React's nav attribute\n // map doesn't include arbitrary data-* keys as literals.\n ...({ 'data-state': expanded ? 'expanded' : 'collapsed' } as Record<\n string,\n string\n >),\n className: cn(\n 'group/sidebar flex h-full flex-col bg-[var(--ui-sidebar-secondary-global-container-color)] border-r border-[var(--ui-sidebar-secondary-global-container-border-color)] [border-right-width:var(--ui-sidebar-secondary-global-container-border-width)] w-[var(--ui-sidebar-secondary-collapsed-container-width)] data-[state=expanded]:w-[var(--ui-sidebar-secondary-expanded-container-width)] transition-[width]',\n className\n ),\n children,\n },\n props\n ),\n });\n\n return (\n <SidebarSecondaryContext.Provider value={context}>\n {element}\n </SidebarSecondaryContext.Provider>\n );\n }\n);\nSidebarSecondary.displayName = 'SidebarSecondary';\n\nexport interface SidebarSecondaryHeaderProps\n extends React.ComponentPropsWithoutRef<'div'> {\n /** Heading text (or pass as children). */\n label?: React.ReactNode;\n}\n\nconst SidebarSecondaryHeader = React.forwardRef<\n HTMLDivElement,\n SidebarSecondaryHeaderProps\n>(({ className, label, children, ...props }, ref) => (\n // Hidden in collapsed mode — the CollapsedBreadcrumb's parent label carries the\n // section context in the rail, so a truncated single-letter heading is omitted.\n <div\n ref={ref}\n className={cn(\n 'flex items-center shrink-0',\n 'hidden group-data-[state=expanded]/sidebar:flex',\n 'px-[var(--ui-sidebar-secondary-collapsed-container-header-padding-x)] py-[var(--ui-sidebar-secondary-collapsed-container-header-padding-y)]',\n 'group-data-[state=expanded]/sidebar:px-[var(--ui-sidebar-secondary-expanded-container-header-padding-x)] group-data-[state=expanded]/sidebar:py-[var(--ui-sidebar-secondary-expanded-container-header-padding-y)]',\n className\n )}\n {...props}\n >\n <h2 className=\"ui-sidebar-secondary-global-header-label-text-style truncate text-[var(--ui-sidebar-secondary-global-header-label-color)]\">\n {label ?? children}\n </h2>\n </div>\n));\nSidebarSecondaryHeader.displayName = 'SidebarSecondaryHeader';\n\nconst SidebarSecondaryContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n // Expanded: the section list. Hidden in collapsed mode, where the\n // CollapsedBreadcrumb sibling takes over.\n <div\n ref={ref}\n className={cn(\n 'flex flex-1 flex-col overflow-y-auto gap-[var(--ui-sidebar-secondary-global-section-list-gap)]',\n 'hidden group-data-[state=expanded]/sidebar:flex',\n className\n )}\n {...props}\n />\n));\nSidebarSecondaryContent.displayName = 'SidebarSecondaryContent';\n\nexport interface SidebarSecondaryCollapsedBreadcrumbProps\n extends React.ComponentPropsWithoutRef<'div'> {\n /** The parent section label (breadcrumbLabel). */\n parentLabel: React.ReactNode;\n /** The current page label (labelCurrentPage). */\n currentLabel: React.ReactNode;\n /** Separator between the two; defaults to a 16px ChevronRightIcon (R6). */\n separator?: React.ReactNode;\n}\n\nconst SidebarSecondaryCollapsedBreadcrumb = React.forwardRef<\n HTMLDivElement,\n SidebarSecondaryCollapsedBreadcrumbProps\n>(({ className, parentLabel, currentLabel, separator, ...props }, ref) => (\n // Shown only in collapsed mode — toggled by the same data-[state] selector so\n // it stays in the DOM (SSR-present) with no JS branch. Stacked top→bottom:\n // parent → separator → current page. In the ~48px rail the labels are rotated\n // to read vertically (`writing-mode: vertical-rl`, glyphs tilted 90° clockwise,\n // reading top-to-bottom) so long labels run down the rail instead of clipping;\n // the separator chevron is turned to point down to match that flow.\n <div\n ref={ref}\n className={cn(\n // `flex-1` so the rail fills the space between the (hidden) header and the\n // footer, keeping the collapse trigger pinned to the bottom; the breadcrumb\n // content stays at the top of that space.\n 'flex flex-1 flex-col items-center',\n 'gap-[var(--ui-sidebar-secondary-collapsed-container-content-gap)] py-[var(--ui-sidebar-secondary-collapsed-container-content-padding-y)]',\n 'flex group-data-[state=expanded]/sidebar:hidden',\n className\n )}\n {...props}\n >\n <span className=\"ui-sidebar-secondary-collapsed-breadcrumb-label-text-style whitespace-nowrap [writing-mode:vertical-rl] text-[var(--ui-sidebar-secondary-collapsed-breadcrumb-label-color)]\">\n {parentLabel}\n </span>\n <span\n aria-hidden=\"true\"\n className=\"inline-flex items-center text-[var(--ui-sidebar-secondary-collapsed-icon-separator-color)] [&>svg]:size-[var(--ui-sidebar-secondary-collapsed-icon-separator-size)]\"\n >\n {separator ?? <ChevronRightIcon size={16} className=\"rotate-90\" />}\n </span>\n <span className=\"ui-sidebar-secondary-collapsed-label-current-page-text-style whitespace-nowrap [writing-mode:vertical-rl] text-[var(--ui-sidebar-secondary-collapsed-label-current-page-color)]\">\n {currentLabel}\n </span>\n </div>\n));\nSidebarSecondaryCollapsedBreadcrumb.displayName =\n 'SidebarSecondaryCollapsedBreadcrumb';\n\nconst SidebarSecondaryFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col shrink-0',\n 'border-t border-[var(--ui-sidebar-secondary-global-container-footer-border-color)] [border-top-width:var(--ui-sidebar-secondary-global-container-footer-border-width)]',\n 'py-[var(--ui-sidebar-secondary-section-container-padding-y)]',\n className\n )}\n {...props}\n />\n));\nSidebarSecondaryFooter.displayName = 'SidebarSecondaryFooter';\n\n// A section can be a static group (label + items) or an EXPANDABLE disclosure\n// (Figma Section `expandable=yes-*`): the label becomes a chevron toggle that\n// shows/hides the whole item list. Whether a section is expandable is shared to\n// its label + menu via this context (default: static), so the same `SectionLabel`\n// / `Menu` parts adapt without a separate component set.\ninterface SidebarSecondarySectionContextValue {\n expandable: boolean;\n}\n\nconst SidebarSecondarySectionContext =\n React.createContext<SidebarSecondarySectionContextValue>({ expandable: false });\n\nconst SECTION_STATIC: SidebarSecondarySectionContextValue = { expandable: false };\nconst SECTION_EXPANDABLE: SidebarSecondarySectionContextValue = { expandable: true };\n\nexport interface SidebarSecondarySectionProps\n extends React.ComponentPropsWithoutRef<'div'> {\n /**\n * Make the section a collapsible disclosure: the `SidebarSecondarySectionLabel`\n * becomes a chevron toggle and the `SidebarSecondaryMenu` becomes its panel.\n */\n expandable?: boolean;\n /** Controlled open state (expandable sections only). */\n open?: boolean;\n /** Uncontrolled initial open state (expandable sections only). Defaults to open. */\n defaultOpen?: boolean;\n /** Fires with the next open value when an expandable section toggles. */\n onOpenChange?: (open: boolean) => void;\n}\n\nconst SidebarSecondarySection = React.forwardRef<\n HTMLDivElement,\n SidebarSecondarySectionProps\n>(\n (\n { className, expandable = false, open, defaultOpen = true, onOpenChange, children, ...props },\n ref\n ) => {\n // Sections are separated by vertical padding + the section label; the next-gen\n // token sync removed the inter-section divider (no\n // `--ui-sidebar-secondary-section-container-border-*` token survives).\n const sectionClass = cn(\n 'flex flex-col py-[var(--ui-sidebar-secondary-section-container-padding-y)]',\n className\n );\n\n if (!expandable) {\n return (\n <SidebarSecondarySectionContext.Provider value={SECTION_STATIC}>\n <div ref={ref} className={sectionClass} {...props}>\n {children}\n </div>\n </SidebarSecondarySectionContext.Provider>\n );\n }\n\n // Expandable: Base UI Collapsible owns the open state (controlled or\n // uncontrolled) + the aria-expanded/aria-controls wiring on the trigger.\n return (\n <SidebarSecondarySectionContext.Provider value={SECTION_EXPANDABLE}>\n <Collapsible.Root\n ref={ref}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n render={<div className={sectionClass} />}\n {...props}\n >\n {children}\n </Collapsible.Root>\n </SidebarSecondarySectionContext.Provider>\n );\n }\n);\nSidebarSecondarySection.displayName = 'SidebarSecondarySection';\n\nexport interface SidebarSecondarySectionLabelProps\n extends React.ComponentPropsWithoutRef<'div'> {\n /** Trailing header actions (e.g. a ghost `ButtonIcon`). Rendered outside the toggle. */\n actions?: React.ReactNode;\n /**\n * A rollup badge (e.g. a `Tag` with an unread count) shown in the header only\n * when an expandable section is collapsed. Ignored for static sections.\n */\n unreadRollup?: React.ReactNode;\n}\n\nconst sectionLabelTextClass =\n 'ui-sidebar-secondary-section-label-section-text-style text-[var(--ui-sidebar-secondary-section-label-section-color)]';\nconst sectionHeaderPadClass =\n 'pb-[var(--ui-sidebar-secondary-section-container-header-padding-y)] px-[var(--ui-sidebar-secondary-section-container-header-padding-x)]';\n\nconst SidebarSecondarySectionLabel = React.forwardRef<\n HTMLDivElement,\n SidebarSecondarySectionLabelProps\n>(({ className, actions, unreadRollup, children, ...props }, ref) => {\n const { expandable } = React.useContext(SidebarSecondarySectionContext);\n\n if (!expandable) {\n // Static header: preserve the original markup when there are no actions so\n // existing layouts/baselines are unchanged.\n const base = cn(sectionLabelTextClass, sectionHeaderPadClass, className);\n if (actions == null) {\n return (\n <div ref={ref} className={base} {...props}>\n {children}\n </div>\n );\n }\n return (\n <div\n ref={ref}\n className={cn(\n base,\n 'flex items-center gap-[var(--ui-sidebar-secondary-section-container-header-gap)]'\n )}\n {...props}\n >\n <span className=\"min-w-0 flex-1 truncate\">{children}</span>\n <span className=\"flex shrink-0 items-center\">{actions}</span>\n </div>\n );\n }\n\n // Expandable header: a chevron toggle (the Collapsible trigger) plus optional\n // trailing actions kept OUTSIDE the trigger button (no nested buttons). The\n // unread-rollup badge sits inside the trigger and shows only while collapsed.\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center gap-[var(--ui-sidebar-secondary-section-container-header-gap)]',\n sectionHeaderPadClass,\n className\n )}\n {...props}\n >\n <Collapsible.Trigger\n className={cn(\n 'group/section flex min-w-0 flex-1 items-center gap-[var(--ui-sidebar-secondary-section-container-header-gap)] text-left',\n sectionLabelTextClass,\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-brand)] focus-visible:ring-inset'\n )}\n >\n <ChevronDownIcon\n size={16}\n aria-hidden=\"true\"\n className=\"shrink-0 -rotate-90 transition-transform group-data-[panel-open]/section:rotate-0 text-[var(--ui-sidebar-secondary-section-icon-arrow-color)]\"\n />\n <span className=\"min-w-0 flex-1 truncate\">{children}</span>\n {unreadRollup != null && (\n <span className=\"flex shrink-0 items-center group-data-[panel-open]/section:hidden\">\n {unreadRollup}\n </span>\n )}\n </Collapsible.Trigger>\n {actions != null && (\n <span className=\"flex shrink-0 items-center\">{actions}</span>\n )}\n </div>\n );\n});\nSidebarSecondarySectionLabel.displayName = 'SidebarSecondarySectionLabel';\n\nconst SidebarSecondaryMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentPropsWithoutRef<'ul'>\n>(({ className, ...props }, ref) => {\n const { expandable } = React.useContext(SidebarSecondarySectionContext);\n const list = (\n <ul\n ref={ref}\n className={cn(\n 'flex flex-col gap-[var(--ui-sidebar-secondary-section-menu-item-list-gap)]',\n className\n )}\n {...props}\n />\n );\n // Inside an expandable section the item list IS the collapsible panel, so it\n // mounts/unmounts with the section's open state.\n return expandable ? <Collapsible.Panel>{list}</Collapsible.Panel> : list;\n});\nSidebarSecondaryMenu.displayName = 'SidebarSecondaryMenu';\n\n// Shared row geometry + the GLOBAL icon/label state colors (shared across\n// selected/unselected — DESIGN §6.2). The cva `variant` only swaps the container\n// fill. Each interaction state is wired to its own token even where acronis's\n// value is unchanged (runtime var() references honor brand overrides only on the\n// referenced token).\nconst sidebarSecondaryRowClasses =\n 'group/row flex w-full items-center gap-[var(--ui-sidebar-secondary-menu-item-global-container-gap)] min-h-[var(--ui-sidebar-secondary-menu-item-global-container-height-min)] px-[var(--ui-sidebar-secondary-menu-item-global-container-padding-x)] py-[var(--ui-sidebar-secondary-menu-item-global-container-padding-y)] no-underline ui-sidebar-secondary-menu-item-global-label-text-style transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-brand)] focus-visible:ring-inset text-[var(--ui-sidebar-secondary-menu-item-global-label-color-color)] [&_svg]:shrink-0 [&_svg]:size-[var(--ui-sidebar-secondary-menu-item-global-icon-size)] [&_svg]:text-[var(--ui-sidebar-secondary-menu-item-global-icon-color-color)]';\n\nconst sidebarSecondaryMenuItemVariants = cva(sidebarSecondaryRowClasses, {\n variants: {\n variant: {\n unselected:\n 'bg-[var(--ui-sidebar-secondary-menu-item-unselected-container-color-idle)] hover:bg-[var(--ui-sidebar-secondary-menu-item-unselected-container-color-hover)] active:bg-[var(--ui-sidebar-secondary-menu-item-unselected-container-color-active)]',\n selected:\n 'bg-[var(--ui-sidebar-secondary-menu-item-selected-container-color-idle)] hover:bg-[var(--ui-sidebar-secondary-menu-item-selected-container-color-hover)] active:bg-[var(--ui-sidebar-secondary-menu-item-selected-container-color-active)]',\n },\n },\n defaultVariants: {\n variant: 'unselected',\n },\n});\n\nexport interface SidebarSecondaryMenuItemProps\n extends Omit<React.ComponentPropsWithoutRef<'a'>, 'children'>,\n Omit<VariantProps<typeof sidebarSecondaryMenuItemVariants>, 'variant'> {\n /** Marks the current route: sets the `selected` variant + `aria-current=\"page\"`. */\n selected?: boolean;\n /** Optional leading 16px icon (Level-1 only; `hasIcon` in Figma). */\n icon?: React.ReactNode;\n children?: React.ReactNode;\n /** Replace the rendered `<a>` (e.g. a router `Link` or a `<button>`). */\n render?: useRender.RenderProp;\n}\n\nconst SidebarSecondaryMenuItem = React.forwardRef<\n HTMLAnchorElement,\n SidebarSecondaryMenuItemProps\n>(({ className, selected = false, icon, render, children, ...props }, ref) => {\n const { expanded } = useSidebarSecondaryContext();\n\n // Trailing extras (tag / shortcut / external link) are passed as children but\n // must sit at the right edge of the row, after the title — so split them out:\n // the title takes the remaining width and truncates with an ellipsis, while the\n // extras stay `shrink-0` on the right (the row's `gap` is their left margin).\n const items = React.Children.toArray(children);\n const extras = items.filter(\n (child): child is React.ReactElement =>\n React.isValidElement(child) &&\n (child.type as { displayName?: string }).displayName ===\n 'SidebarSecondaryMenuItemExtras'\n );\n const label = items.filter(\n (child) => !extras.includes(child as React.ReactElement)\n );\n\n const inner = useRender({\n render,\n ref,\n defaultTagName: 'a',\n props: mergeProps<'a'>(\n {\n className: cn(\n sidebarSecondaryMenuItemVariants({\n variant: selected ? 'selected' : 'unselected',\n }),\n className\n ),\n 'aria-current': selected ? 'page' : undefined,\n children: (\n <>\n {icon != null && (\n <span className=\"flex shrink-0 items-center self-start mt-[var(--ui-sidebar-secondary-menu-item-global-icon-margin-t)]\">\n {icon}\n </span>\n )}\n {/* Keep the label in the DOM as `sr-only` in collapsed/rail mode so\n an icon-only row keeps an accessible name (a11y §7). */}\n <span\n className={cn(\n 'min-w-0 flex-1 truncate text-left',\n !expanded && 'sr-only'\n )}\n >\n {label}\n </span>\n {extras.length > 0 && (\n <span className=\"flex shrink-0 items-center\">{extras}</span>\n )}\n </>\n ),\n },\n props\n ),\n });\n\n return <li className=\"contents\">{inner}</li>;\n});\nSidebarSecondaryMenuItem.displayName = 'SidebarSecondaryMenuItem';\n\nexport type SidebarSecondaryMenuSubProps = React.ComponentPropsWithoutRef<\n typeof Collapsible.Root\n>;\n\nconst SidebarSecondaryMenuSub = React.forwardRef<\n HTMLDivElement,\n SidebarSecondaryMenuSubProps\n>(({ className, render, ...props }, ref) => (\n // Disclosure row: Base UI Collapsible gives per-row open state +\n // aria-expanded/aria-controls. Rendered as the list `<li>` wrapper.\n <Collapsible.Root\n ref={ref}\n render={render ?? <li />}\n className={cn('contents', className)}\n {...props}\n />\n));\nSidebarSecondaryMenuSub.displayName = 'SidebarSecondaryMenuSub';\n\nexport interface SidebarSecondaryMenuSubTriggerProps\n extends React.ComponentPropsWithoutRef<typeof Collapsible.Trigger> {\n /** Marks the parent row as selected. */\n selected?: boolean;\n /** Optional leading 16px icon. */\n icon?: React.ReactNode;\n}\n\nconst SidebarSecondaryMenuSubTrigger = React.forwardRef<\n HTMLButtonElement,\n SidebarSecondaryMenuSubTriggerProps\n>(({ className, selected = false, icon, children, ...props }, ref) => {\n const { expanded } = useSidebarSecondaryContext();\n\n return (\n <Collapsible.Trigger\n ref={ref}\n aria-current={selected ? 'page' : undefined}\n className={cn(\n sidebarSecondaryMenuItemVariants({\n variant: selected ? 'selected' : 'unselected',\n }),\n 'text-left',\n className\n )}\n {...props}\n >\n {icon != null && (\n <span className=\"flex shrink-0 items-center self-start mt-[var(--ui-sidebar-secondary-menu-item-global-icon-margin-t)]\">\n {icon}\n </span>\n )}\n <span className={cn('flex-1 truncate', !expanded && 'sr-only')}>\n {children}\n </span>\n {/* Chevron rotates when the panel is open (Base UI sets data-panel-open\n on the trigger). Hidden in collapsed rail mode. */}\n <ChevronDownIcon\n size={16}\n aria-hidden=\"true\"\n className={cn(\n 'shrink-0 transition-transform group-data-[panel-open]/row:rotate-180',\n !expanded && 'hidden'\n )}\n />\n </Collapsible.Trigger>\n );\n});\nSidebarSecondaryMenuSubTrigger.displayName = 'SidebarSecondaryMenuSubTrigger';\n\nexport type SidebarSecondaryMenuSubContentProps =\n React.ComponentPropsWithoutRef<typeof Collapsible.Panel>;\n\nconst SidebarSecondaryMenuSubContent = React.forwardRef<\n HTMLDivElement,\n SidebarSecondaryMenuSubContentProps\n>(({ className, children, ...props }, ref) => (\n <Collapsible.Panel ref={ref} className={cn(className)} {...props}>\n <ul className=\"flex flex-col gap-[var(--ui-sidebar-secondary-section-menu-item-list-gap)]\">\n {children}\n </ul>\n </Collapsible.Panel>\n));\nSidebarSecondaryMenuSubContent.displayName = 'SidebarSecondaryMenuSubContent';\n\nexport interface SidebarSecondaryMenuSubItemProps\n extends Omit<React.ComponentPropsWithoutRef<'a'>, 'children'> {\n /** Marks the current route (Level-2 — no icon). */\n selected?: boolean;\n children?: React.ReactNode;\n /** Replace the rendered `<a>` (e.g. a router `Link`). */\n render?: useRender.RenderProp;\n}\n\nconst SidebarSecondaryMenuSubItem = React.forwardRef<\n HTMLAnchorElement,\n SidebarSecondaryMenuSubItemProps\n>(({ className, selected = false, render, children, ...props }, ref) => {\n const { expanded } = useSidebarSecondaryContext();\n\n const inner = useRender({\n render,\n ref,\n defaultTagName: 'a',\n props: mergeProps<'a'>(\n {\n className: cn(\n sidebarSecondaryMenuItemVariants({\n variant: selected ? 'selected' : 'unselected',\n }),\n // Level-2 left indent (no icon column). The dedicated level-2 padding\n // token was removed in the next-gen sync; reconstruct the indent from\n // surviving tokens so the label aligns under level-1 labels (row\n // padding + icon column + gap).\n 'pl-[calc(var(--ui-sidebar-secondary-menu-item-global-container-padding-x)+var(--ui-sidebar-secondary-menu-item-global-icon-size)+var(--ui-sidebar-secondary-menu-item-global-container-gap))]',\n className\n ),\n 'aria-current': selected ? 'page' : undefined,\n children: (\n <span className={cn('flex-1 truncate text-left', !expanded && 'sr-only')}>\n {children}\n </span>\n ),\n },\n props\n ),\n });\n\n return <li className=\"contents\">{inner}</li>;\n});\nSidebarSecondaryMenuSubItem.displayName = 'SidebarSecondaryMenuSubItem';\n\nexport interface SidebarSecondaryMenuItemExtrasProps\n extends React.ComponentPropsWithoutRef<'span'> {\n /** Which trailing affordance to render. */\n variant: 'tag' | 'externalLink' | 'shortcut' | 'tag-externalLink';\n /** Shortcut text for the `shortcut` variant. */\n shortcut?: string;\n /** Tag content for the `tag` / `tag-externalLink` variants. */\n tag?: React.ReactNode;\n}\n\nconst SidebarSecondaryMenuItemExtras = React.forwardRef<\n HTMLSpanElement,\n SidebarSecondaryMenuItemExtrasProps\n>(({ className, variant, shortcut, tag, children, ...props }, ref) => {\n const { expanded } = useSidebarSecondaryContext();\n const showTag = variant === 'tag' || variant === 'tag-externalLink';\n const showExternal =\n variant === 'externalLink' || variant === 'tag-externalLink';\n const showShortcut = variant === 'shortcut';\n\n return (\n <span\n ref={ref}\n className={cn(\n 'inline-flex items-center gap-[var(--ui-sidebar-secondary-menu-item-extras-global-container-gap)]',\n !expanded && 'hidden',\n className\n )}\n {...props}\n >\n {showTag && (tag ?? children)}\n {showShortcut && (\n <span className=\"ui-sidebar-secondary-menu-item-extras-global-shortcut-text-style text-[var(--ui-sidebar-secondary-menu-item-extras-global-shortcut-color)]\">\n {shortcut ?? children}\n </span>\n )}\n {showExternal && (\n <SquareArrowUpRightIcon\n size={16}\n className=\"text-[var(--ui-sidebar-secondary-menu-item-extras-global-external-icon-color)] size-[var(--ui-sidebar-secondary-menu-item-extras-global-external-icon-size)]\"\n />\n )}\n </span>\n );\n});\nSidebarSecondaryMenuItemExtras.displayName = 'SidebarSecondaryMenuItemExtras';\n\nexport interface SidebarSecondaryCollapseTriggerProps\n extends Omit<React.ComponentPropsWithoutRef<'button'>, 'children'> {\n /** Leading 16px icon (e.g. a panel-left glyph). */\n icon?: React.ReactNode;\n /**\n * Optional trailing keyboard-shortcut hint (e.g. `⌘J`), right-aligned and\n * hidden alongside the label in collapsed mode.\n */\n shortcut?: React.ReactNode;\n children?: React.ReactNode;\n}\n\n// The footer \"Collapse menu\" affordance. A row-styled `<button>` that flips the\n// panel width via the layout context — the live wiring for the controllable\n// `expanded` state (B1). Keeps its label as `sr-only` in collapsed mode.\nconst SidebarSecondaryCollapseTrigger = React.forwardRef<\n HTMLButtonElement,\n SidebarSecondaryCollapseTriggerProps\n>(({ className, icon, shortcut, children, onClick, ...props }, ref) => {\n const { expanded, toggleExpanded } = useSidebarSecondaryContext();\n\n return (\n <li className=\"contents\">\n <button\n ref={ref}\n type=\"button\"\n aria-expanded={expanded}\n className={cn(\n sidebarSecondaryMenuItemVariants({ variant: 'unselected' }),\n 'text-left',\n className\n )}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) toggleExpanded();\n }}\n {...props}\n >\n {icon != null && (\n // Flip the chevron when collapsed so a chevron-left (\"collapse\")\n // becomes a chevron-right (\"expand\") — the icon always points toward\n // the action it triggers.\n <span\n className={cn(\n 'flex shrink-0 items-center self-start mt-[var(--ui-sidebar-secondary-menu-item-global-icon-margin-t)] transition-transform',\n !expanded && 'rotate-180'\n )}\n >\n {icon}\n </span>\n )}\n <span className={cn('flex-1 truncate', !expanded && 'sr-only')}>\n {children}\n </span>\n {shortcut != null && (\n <span\n className={cn(\n 'shrink-0 ui-sidebar-secondary-menu-item-extras-global-shortcut-text-style text-[var(--ui-sidebar-secondary-menu-item-extras-global-shortcut-color)]',\n !expanded && 'sr-only'\n )}\n >\n {shortcut}\n </span>\n )}\n </button>\n </li>\n );\n});\nSidebarSecondaryCollapseTrigger.displayName = 'SidebarSecondaryCollapseTrigger';\n\nexport {\n SidebarSecondary,\n SidebarSecondaryHeader,\n SidebarSecondaryContent,\n SidebarSecondaryCollapsedBreadcrumb,\n SidebarSecondaryFooter,\n SidebarSecondarySection,\n SidebarSecondarySectionLabel,\n SidebarSecondaryMenu,\n SidebarSecondaryMenuItem,\n SidebarSecondaryMenuSub,\n SidebarSecondaryMenuSubTrigger,\n SidebarSecondaryMenuSubContent,\n SidebarSecondaryMenuSubItem,\n SidebarSecondaryMenuItemExtras,\n SidebarSecondaryCollapseTrigger,\n sidebarSecondaryMenuItemVariants,\n};\n"],"names":["SidebarSecondaryContext","React","useSidebarSecondaryContext","useControllableBoolean","controlled","defaultValue","onChange","uncontrolled","setUncontrolled","isControlled","value","setValue","next","SidebarSecondary","className","expandedProp","defaultExpanded","onExpandedChange","ariaLabel","render","children","props","ref","expanded","setExpanded","context","element","useRender","mergeProps","cn","SidebarSecondaryHeader","label","jsx","SidebarSecondaryContent","SidebarSecondaryCollapsedBreadcrumb","parentLabel","currentLabel","separator","jsxs","ChevronRightIcon","SidebarSecondaryFooter","SidebarSecondarySectionContext","SECTION_STATIC","SECTION_EXPANDABLE","SidebarSecondarySection","expandable","open","defaultOpen","onOpenChange","sectionClass","Collapsible","sectionLabelTextClass","sectionHeaderPadClass","SidebarSecondarySectionLabel","actions","unreadRollup","base","ChevronDownIcon","SidebarSecondaryMenu","list","sidebarSecondaryRowClasses","sidebarSecondaryMenuItemVariants","cva","SidebarSecondaryMenuItem","selected","icon","items","extras","child","inner","Fragment","SidebarSecondaryMenuSub","SidebarSecondaryMenuSubTrigger","SidebarSecondaryMenuSubContent","SidebarSecondaryMenuSubItem","SidebarSecondaryMenuItemExtras","variant","shortcut","tag","showTag","showExternal","showShortcut","SquareArrowUpRightIcon","SidebarSecondaryCollapseTrigger","onClick","toggleExpanded","event"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,10 +2,10 @@ import { cn as t } from "./lib/utils.js";
2
2
  import { Avatar as o, AvatarFallback as n, AvatarGroup as S, AvatarImage as i, avatarVariants as c } from "./components/ui/avatar/avatar.js";
3
3
  import { Breadcrumb as p, BreadcrumbEllipsis as l, BreadcrumbItem as d, BreadcrumbLink as m, BreadcrumbList as b, BreadcrumbPage as I, BreadcrumbSeparator as s } from "./components/ui/breadcrumb/breadcrumb.js";
4
4
  import { Button as y, buttonVariants as f } from "./components/ui/button/button.js";
5
- import { ButtonMenu as P, buttonMenuVariants as M } from "./components/ui/button-menu/button-menu.js";
6
- import { CardFilter as C, cardFilterVariants as B } from "./components/ui/card-filter/card-filter.js";
7
- import { Checkbox as L } from "./components/ui/checkbox/checkbox.js";
8
- import { Radio as h, RadioGroup as v } from "./components/ui/radio/radio.js";
5
+ import { ButtonIcon as P, buttonIconVariants as M } from "./components/ui/button-icon/button-icon.js";
6
+ import { ButtonMenu as C, buttonMenuVariants as B } from "./components/ui/button-menu/button-menu.js";
7
+ import { CardFilter as L, cardFilterVariants as G } from "./components/ui/card-filter/card-filter.js";
8
+ import { Checkbox as v } from "./components/ui/checkbox/checkbox.js";
9
9
  import { Input as k } from "./components/ui/input/input.js";
10
10
  import { InputDatePicker as R } from "./components/ui/input-date-picker/input-date-picker.js";
11
11
  import { InputSearch as z } from "./components/ui/input-search/input-search.js";
@@ -13,15 +13,15 @@ import { InputSelect as D, InputSelectContent as w, InputSelectDescription as j,
13
13
  import { InputText as Se } from "./components/ui/input-text/input-text.js";
14
14
  import { InputTextArea as ce } from "./components/ui/input-text-area/input-text-area.js";
15
15
  import { Link as pe } from "./components/ui/link/link.js";
16
- import { Search as de } from "./components/ui/search/search.js";
17
- import { SearchGlobal as be } from "./components/ui/search-global/search-global.js";
18
- import { ResizableHandle as se, ResizablePanel as xe, ResizablePanelGroup as ye } from "./components/ui/resizable/resizable.js";
19
- import { SidebarPrimary as ge, SidebarPrimaryCollapseTrigger as Pe, SidebarPrimaryContent as Me, SidebarPrimaryFooter as Te, SidebarPrimaryHeader as Ce, SidebarPrimaryMenu as Be, SidebarPrimaryMenuItem as Ve, SidebarPrimaryMenuItemExtras as Le, SidebarPrimarySection as Ge, sidebarPrimaryMenuItemVariants as he } from "./components/ui/sidebar-primary/sidebar-primary.js";
20
- import { SidebarSecondary as Fe, SidebarSecondaryCollapseTrigger as ke, SidebarSecondaryCollapsedBreadcrumb as Ae, SidebarSecondaryContent as Re, SidebarSecondaryFooter as Ee, SidebarSecondaryHeader as ze, SidebarSecondaryMenu as He, SidebarSecondaryMenuItem as De, SidebarSecondaryMenuItemExtras as we, SidebarSecondaryMenuSub as je, SidebarSecondaryMenuSubContent as qe, SidebarSecondaryMenuSubItem as Je, SidebarSecondaryMenuSubTrigger as Ke, SidebarSecondarySection as Ne, SidebarSecondarySectionLabel as Oe, sidebarSecondaryMenuItemVariants as Qe } from "./components/ui/sidebar-secondary/sidebar-secondary.js";
21
- import { ButtonIcon as We, buttonIconVariants as Xe } from "./components/ui/button-icon/button-icon.js";
16
+ import { Radio as de, RadioGroup as me } from "./components/ui/radio/radio.js";
17
+ import { ResizableHandle as Ie, ResizablePanel as se, ResizablePanelGroup as xe } from "./components/ui/resizable/resizable.js";
18
+ import { Search as fe } from "./components/ui/search/search.js";
19
+ import { SearchGlobal as Pe } from "./components/ui/search-global/search-global.js";
20
+ import { SidebarPrimary as Te, SidebarPrimaryCollapseTrigger as Ce, SidebarPrimaryContent as Be, SidebarPrimaryFooter as Ve, SidebarPrimaryHeader as Le, SidebarPrimaryMenu as Ge, SidebarPrimaryMenuItem as he, SidebarPrimaryMenuItemExtras as ve, SidebarPrimarySection as Fe, sidebarPrimaryMenuItemVariants as ke } from "./components/ui/sidebar-primary/sidebar-primary.js";
21
+ import { SidebarSecondary as Re, SidebarSecondaryCollapseTrigger as Ee, SidebarSecondaryCollapsedBreadcrumb as ze, SidebarSecondaryContent as He, SidebarSecondaryFooter as De, SidebarSecondaryHeader as we, SidebarSecondaryMenu as je, SidebarSecondaryMenuItem as qe, SidebarSecondaryMenuItemExtras as Je, SidebarSecondaryMenuSub as Ke, SidebarSecondaryMenuSubContent as Ne, SidebarSecondaryMenuSubItem as Oe, SidebarSecondaryMenuSubTrigger as Qe, SidebarSecondarySection as Ue, SidebarSecondarySectionLabel as We, sidebarSecondaryMenuItemVariants as Xe } from "./components/ui/sidebar-secondary/sidebar-secondary.js";
22
22
  import { Switch as Ze } from "./components/ui/switch/switch.js";
23
- import { Tooltip as $e, TooltipContent as er, TooltipProvider as rr, TooltipTrigger as tr } from "./components/ui/tooltip/tooltip.js";
24
- import { Tag as or, tagVariants as nr } from "./components/ui/tag/tag.js";
23
+ import { Tag as $e, tagVariants as er } from "./components/ui/tag/tag.js";
24
+ import { Tooltip as tr, TooltipContent as ar, TooltipProvider as or, TooltipTrigger as nr } from "./components/ui/tooltip/tooltip.js";
25
25
  export {
26
26
  o as Avatar,
27
27
  n as AvatarFallback,
@@ -35,10 +35,10 @@ export {
35
35
  I as BreadcrumbPage,
36
36
  s as BreadcrumbSeparator,
37
37
  y as Button,
38
- We as ButtonIcon,
39
- P as ButtonMenu,
40
- C as CardFilter,
41
- L as Checkbox,
38
+ P as ButtonIcon,
39
+ C as ButtonMenu,
40
+ L as CardFilter,
41
+ v as Checkbox,
42
42
  k as Input,
43
43
  R as InputDatePicker,
44
44
  z as InputSearch,
@@ -59,13 +59,13 @@ export {
59
59
  Se as InputText,
60
60
  ce as InputTextArea,
61
61
  pe as Link,
62
- h as Radio,
63
- v as RadioGroup,
64
- se as ResizableHandle,
65
- xe as ResizablePanel,
66
- ye as ResizablePanelGroup,
67
- de as Search,
68
- be as SearchGlobal,
62
+ de as Radio,
63
+ me as RadioGroup,
64
+ Ie as ResizableHandle,
65
+ se as ResizablePanel,
66
+ xe as ResizablePanelGroup,
67
+ fe as Search,
68
+ Pe as SearchGlobal,
69
69
  _ as Select,
70
70
  $ as SelectContent,
71
71
  ee as SelectGroup,
@@ -73,44 +73,44 @@ export {
73
73
  te as SelectItem,
74
74
  ae as SelectTrigger,
75
75
  oe as SelectValue,
76
- ge as SidebarPrimary,
77
- Pe as SidebarPrimaryCollapseTrigger,
78
- Me as SidebarPrimaryContent,
79
- Te as SidebarPrimaryFooter,
80
- Ce as SidebarPrimaryHeader,
81
- Be as SidebarPrimaryMenu,
82
- Ve as SidebarPrimaryMenuItem,
83
- Le as SidebarPrimaryMenuItemExtras,
84
- Ge as SidebarPrimarySection,
85
- Fe as SidebarSecondary,
86
- ke as SidebarSecondaryCollapseTrigger,
87
- Ae as SidebarSecondaryCollapsedBreadcrumb,
88
- Re as SidebarSecondaryContent,
89
- Ee as SidebarSecondaryFooter,
90
- ze as SidebarSecondaryHeader,
91
- He as SidebarSecondaryMenu,
92
- De as SidebarSecondaryMenuItem,
93
- we as SidebarSecondaryMenuItemExtras,
94
- je as SidebarSecondaryMenuSub,
95
- qe as SidebarSecondaryMenuSubContent,
96
- Je as SidebarSecondaryMenuSubItem,
97
- Ke as SidebarSecondaryMenuSubTrigger,
98
- Ne as SidebarSecondarySection,
99
- Oe as SidebarSecondarySectionLabel,
76
+ Te as SidebarPrimary,
77
+ Ce as SidebarPrimaryCollapseTrigger,
78
+ Be as SidebarPrimaryContent,
79
+ Ve as SidebarPrimaryFooter,
80
+ Le as SidebarPrimaryHeader,
81
+ Ge as SidebarPrimaryMenu,
82
+ he as SidebarPrimaryMenuItem,
83
+ ve as SidebarPrimaryMenuItemExtras,
84
+ Fe as SidebarPrimarySection,
85
+ Re as SidebarSecondary,
86
+ Ee as SidebarSecondaryCollapseTrigger,
87
+ ze as SidebarSecondaryCollapsedBreadcrumb,
88
+ He as SidebarSecondaryContent,
89
+ De as SidebarSecondaryFooter,
90
+ we as SidebarSecondaryHeader,
91
+ je as SidebarSecondaryMenu,
92
+ qe as SidebarSecondaryMenuItem,
93
+ Je as SidebarSecondaryMenuItemExtras,
94
+ Ke as SidebarSecondaryMenuSub,
95
+ Ne as SidebarSecondaryMenuSubContent,
96
+ Oe as SidebarSecondaryMenuSubItem,
97
+ Qe as SidebarSecondaryMenuSubTrigger,
98
+ Ue as SidebarSecondarySection,
99
+ We as SidebarSecondarySectionLabel,
100
100
  Ze as Switch,
101
- or as Tag,
102
- $e as Tooltip,
103
- er as TooltipContent,
104
- rr as TooltipProvider,
105
- tr as TooltipTrigger,
101
+ $e as Tag,
102
+ tr as Tooltip,
103
+ ar as TooltipContent,
104
+ or as TooltipProvider,
105
+ nr as TooltipTrigger,
106
106
  c as avatarVariants,
107
- Xe as buttonIconVariants,
108
- M as buttonMenuVariants,
107
+ M as buttonIconVariants,
108
+ B as buttonMenuVariants,
109
109
  f as buttonVariants,
110
- B as cardFilterVariants,
110
+ G as cardFilterVariants,
111
111
  t as cn,
112
- he as sidebarPrimaryMenuItemVariants,
113
- Qe as sidebarSecondaryMenuItemVariants,
114
- nr as tagVariants
112
+ ke as sidebarPrimaryMenuItemVariants,
113
+ Xe as sidebarSecondaryMenuItemVariants,
114
+ er as tagVariants
115
115
  };
116
116
  //# sourceMappingURL=index.js.map
@@ -4,7 +4,7 @@ var Ee = (e) => {
4
4
  var De = (e, t, n) => t.has(e) || Ee("Cannot " + n);
5
5
  var re = (e, t, n) => (De(e, t, "read from private field"), n ? n.call(e) : t.get(e)), Re = (e, t, n) => t.has(e) ? Ee("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, n), Ie = (e, t, n, o) => (De(e, t, "write to private field"), o ? o.call(e, n) : t.set(e, n), n);
6
6
  import { jsx as se } from "react/jsx-runtime";
7
- import { createContext as gt, useState as pe, useRef as F, useEffect as ge, useSyncExternalStore as vt, useMemo as mt, useId as bt, useContext as yt, useLayoutEffect as zt, useCallback as Ue, useImperativeHandle as Ze } from "react";
7
+ import { useState as pe, useRef as F, useEffect as ge, useSyncExternalStore as gt, useMemo as vt, useId as mt, useContext as bt, useLayoutEffect as yt, useCallback as Ue, useImperativeHandle as Ze, createContext as zt } from "react";
8
8
  function St(e, t) {
9
9
  const n = getComputedStyle(e), o = parseFloat(n.fontSize);
10
10
  return t * o;
@@ -1514,10 +1514,10 @@ function Ut() {
1514
1514
  return [e, n];
1515
1515
  }
1516
1516
  function Ce(e) {
1517
- const t = bt();
1517
+ const t = mt();
1518
1518
  return `${e ?? t}`;
1519
1519
  }
1520
- const U = typeof window < "u" ? zt : ge;
1520
+ const U = typeof window < "u" ? yt : ge;
1521
1521
  function ie(e) {
1522
1522
  const t = F(e);
1523
1523
  return U(() => {
@@ -1554,7 +1554,7 @@ function Le(e) {
1554
1554
  t.current[n] = e[n];
1555
1555
  }, [e]), t.current;
1556
1556
  }
1557
- const ct = gt(null);
1557
+ const ct = zt(null);
1558
1558
  function Zt(e, t) {
1559
1559
  const n = F({
1560
1560
  getLayout: () => ({}),
@@ -1627,7 +1627,7 @@ function Kt({
1627
1627
  ), E = Le({
1628
1628
  defaultLayout: n,
1629
1629
  disableCursor: o
1630
- }), O = mt(
1630
+ }), O = vt(
1631
1631
  () => ({
1632
1632
  get disableCursor() {
1633
1633
  return !!E.disableCursor;
@@ -1777,7 +1777,7 @@ function Kt({
1777
1777
  }
1778
1778
  Kt.displayName = "Group";
1779
1779
  function ke() {
1780
- const e = yt(ct);
1780
+ const e = bt(ct);
1781
1781
  return P(
1782
1782
  e,
1783
1783
  "Group Context not found; did you render a Panel or Separator outside of a Group?"
@@ -1875,7 +1875,7 @@ function _t({
1875
1875
  const C = y(v, g);
1876
1876
  if (C)
1877
1877
  return JSON.stringify(C);
1878
- }, x = vt(
1878
+ }, x = gt(
1879
1879
  (C) => ze(v, C),
1880
1880
  w,
1881
1881
  w
package/dist/react.js CHANGED
@@ -2,10 +2,10 @@ import { cn as t } from "./lib/utils.js";
2
2
  import { Avatar as o, AvatarFallback as n, AvatarGroup as S, AvatarImage as i, avatarVariants as c } from "./components/ui/avatar/avatar.js";
3
3
  import { Breadcrumb as p, BreadcrumbEllipsis as l, BreadcrumbItem as d, BreadcrumbLink as m, BreadcrumbList as b, BreadcrumbPage as I, BreadcrumbSeparator as s } from "./components/ui/breadcrumb/breadcrumb.js";
4
4
  import { Button as y, buttonVariants as f } from "./components/ui/button/button.js";
5
- import { ButtonMenu as P, buttonMenuVariants as M } from "./components/ui/button-menu/button-menu.js";
6
- import { CardFilter as C, cardFilterVariants as B } from "./components/ui/card-filter/card-filter.js";
7
- import { Checkbox as L } from "./components/ui/checkbox/checkbox.js";
8
- import { Radio as h, RadioGroup as v } from "./components/ui/radio/radio.js";
5
+ import { ButtonIcon as P, buttonIconVariants as M } from "./components/ui/button-icon/button-icon.js";
6
+ import { ButtonMenu as C, buttonMenuVariants as B } from "./components/ui/button-menu/button-menu.js";
7
+ import { CardFilter as L, cardFilterVariants as G } from "./components/ui/card-filter/card-filter.js";
8
+ import { Checkbox as v } from "./components/ui/checkbox/checkbox.js";
9
9
  import { Input as k } from "./components/ui/input/input.js";
10
10
  import { InputDatePicker as R } from "./components/ui/input-date-picker/input-date-picker.js";
11
11
  import { InputSearch as z } from "./components/ui/input-search/input-search.js";
@@ -13,15 +13,15 @@ import { InputSelect as D, InputSelectContent as w, InputSelectDescription as j,
13
13
  import { InputText as Se } from "./components/ui/input-text/input-text.js";
14
14
  import { InputTextArea as ce } from "./components/ui/input-text-area/input-text-area.js";
15
15
  import { Link as pe } from "./components/ui/link/link.js";
16
- import { Search as de } from "./components/ui/search/search.js";
17
- import { SearchGlobal as be } from "./components/ui/search-global/search-global.js";
18
- import { ResizableHandle as se, ResizablePanel as xe, ResizablePanelGroup as ye } from "./components/ui/resizable/resizable.js";
19
- import { SidebarPrimary as ge, SidebarPrimaryCollapseTrigger as Pe, SidebarPrimaryContent as Me, SidebarPrimaryFooter as Te, SidebarPrimaryHeader as Ce, SidebarPrimaryMenu as Be, SidebarPrimaryMenuItem as Ve, SidebarPrimaryMenuItemExtras as Le, SidebarPrimarySection as Ge, sidebarPrimaryMenuItemVariants as he } from "./components/ui/sidebar-primary/sidebar-primary.js";
20
- import { SidebarSecondary as Fe, SidebarSecondaryCollapseTrigger as ke, SidebarSecondaryCollapsedBreadcrumb as Ae, SidebarSecondaryContent as Re, SidebarSecondaryFooter as Ee, SidebarSecondaryHeader as ze, SidebarSecondaryMenu as He, SidebarSecondaryMenuItem as De, SidebarSecondaryMenuItemExtras as we, SidebarSecondaryMenuSub as je, SidebarSecondaryMenuSubContent as qe, SidebarSecondaryMenuSubItem as Je, SidebarSecondaryMenuSubTrigger as Ke, SidebarSecondarySection as Ne, SidebarSecondarySectionLabel as Oe, sidebarSecondaryMenuItemVariants as Qe } from "./components/ui/sidebar-secondary/sidebar-secondary.js";
21
- import { ButtonIcon as We, buttonIconVariants as Xe } from "./components/ui/button-icon/button-icon.js";
16
+ import { Radio as de, RadioGroup as me } from "./components/ui/radio/radio.js";
17
+ import { ResizableHandle as Ie, ResizablePanel as se, ResizablePanelGroup as xe } from "./components/ui/resizable/resizable.js";
18
+ import { Search as fe } from "./components/ui/search/search.js";
19
+ import { SearchGlobal as Pe } from "./components/ui/search-global/search-global.js";
20
+ import { SidebarPrimary as Te, SidebarPrimaryCollapseTrigger as Ce, SidebarPrimaryContent as Be, SidebarPrimaryFooter as Ve, SidebarPrimaryHeader as Le, SidebarPrimaryMenu as Ge, SidebarPrimaryMenuItem as he, SidebarPrimaryMenuItemExtras as ve, SidebarPrimarySection as Fe, sidebarPrimaryMenuItemVariants as ke } from "./components/ui/sidebar-primary/sidebar-primary.js";
21
+ import { SidebarSecondary as Re, SidebarSecondaryCollapseTrigger as Ee, SidebarSecondaryCollapsedBreadcrumb as ze, SidebarSecondaryContent as He, SidebarSecondaryFooter as De, SidebarSecondaryHeader as we, SidebarSecondaryMenu as je, SidebarSecondaryMenuItem as qe, SidebarSecondaryMenuItemExtras as Je, SidebarSecondaryMenuSub as Ke, SidebarSecondaryMenuSubContent as Ne, SidebarSecondaryMenuSubItem as Oe, SidebarSecondaryMenuSubTrigger as Qe, SidebarSecondarySection as Ue, SidebarSecondarySectionLabel as We, sidebarSecondaryMenuItemVariants as Xe } from "./components/ui/sidebar-secondary/sidebar-secondary.js";
22
22
  import { Switch as Ze } from "./components/ui/switch/switch.js";
23
- import { Tooltip as $e, TooltipContent as er, TooltipProvider as rr, TooltipTrigger as tr } from "./components/ui/tooltip/tooltip.js";
24
- import { Tag as or, tagVariants as nr } from "./components/ui/tag/tag.js";
23
+ import { Tag as $e, tagVariants as er } from "./components/ui/tag/tag.js";
24
+ import { Tooltip as tr, TooltipContent as ar, TooltipProvider as or, TooltipTrigger as nr } from "./components/ui/tooltip/tooltip.js";
25
25
  export {
26
26
  o as Avatar,
27
27
  n as AvatarFallback,
@@ -35,10 +35,10 @@ export {
35
35
  I as BreadcrumbPage,
36
36
  s as BreadcrumbSeparator,
37
37
  y as Button,
38
- We as ButtonIcon,
39
- P as ButtonMenu,
40
- C as CardFilter,
41
- L as Checkbox,
38
+ P as ButtonIcon,
39
+ C as ButtonMenu,
40
+ L as CardFilter,
41
+ v as Checkbox,
42
42
  k as Input,
43
43
  R as InputDatePicker,
44
44
  z as InputSearch,
@@ -59,13 +59,13 @@ export {
59
59
  Se as InputText,
60
60
  ce as InputTextArea,
61
61
  pe as Link,
62
- h as Radio,
63
- v as RadioGroup,
64
- se as ResizableHandle,
65
- xe as ResizablePanel,
66
- ye as ResizablePanelGroup,
67
- de as Search,
68
- be as SearchGlobal,
62
+ de as Radio,
63
+ me as RadioGroup,
64
+ Ie as ResizableHandle,
65
+ se as ResizablePanel,
66
+ xe as ResizablePanelGroup,
67
+ fe as Search,
68
+ Pe as SearchGlobal,
69
69
  _ as Select,
70
70
  $ as SelectContent,
71
71
  ee as SelectGroup,
@@ -73,44 +73,44 @@ export {
73
73
  te as SelectItem,
74
74
  ae as SelectTrigger,
75
75
  oe as SelectValue,
76
- ge as SidebarPrimary,
77
- Pe as SidebarPrimaryCollapseTrigger,
78
- Me as SidebarPrimaryContent,
79
- Te as SidebarPrimaryFooter,
80
- Ce as SidebarPrimaryHeader,
81
- Be as SidebarPrimaryMenu,
82
- Ve as SidebarPrimaryMenuItem,
83
- Le as SidebarPrimaryMenuItemExtras,
84
- Ge as SidebarPrimarySection,
85
- Fe as SidebarSecondary,
86
- ke as SidebarSecondaryCollapseTrigger,
87
- Ae as SidebarSecondaryCollapsedBreadcrumb,
88
- Re as SidebarSecondaryContent,
89
- Ee as SidebarSecondaryFooter,
90
- ze as SidebarSecondaryHeader,
91
- He as SidebarSecondaryMenu,
92
- De as SidebarSecondaryMenuItem,
93
- we as SidebarSecondaryMenuItemExtras,
94
- je as SidebarSecondaryMenuSub,
95
- qe as SidebarSecondaryMenuSubContent,
96
- Je as SidebarSecondaryMenuSubItem,
97
- Ke as SidebarSecondaryMenuSubTrigger,
98
- Ne as SidebarSecondarySection,
99
- Oe as SidebarSecondarySectionLabel,
76
+ Te as SidebarPrimary,
77
+ Ce as SidebarPrimaryCollapseTrigger,
78
+ Be as SidebarPrimaryContent,
79
+ Ve as SidebarPrimaryFooter,
80
+ Le as SidebarPrimaryHeader,
81
+ Ge as SidebarPrimaryMenu,
82
+ he as SidebarPrimaryMenuItem,
83
+ ve as SidebarPrimaryMenuItemExtras,
84
+ Fe as SidebarPrimarySection,
85
+ Re as SidebarSecondary,
86
+ Ee as SidebarSecondaryCollapseTrigger,
87
+ ze as SidebarSecondaryCollapsedBreadcrumb,
88
+ He as SidebarSecondaryContent,
89
+ De as SidebarSecondaryFooter,
90
+ we as SidebarSecondaryHeader,
91
+ je as SidebarSecondaryMenu,
92
+ qe as SidebarSecondaryMenuItem,
93
+ Je as SidebarSecondaryMenuItemExtras,
94
+ Ke as SidebarSecondaryMenuSub,
95
+ Ne as SidebarSecondaryMenuSubContent,
96
+ Oe as SidebarSecondaryMenuSubItem,
97
+ Qe as SidebarSecondaryMenuSubTrigger,
98
+ Ue as SidebarSecondarySection,
99
+ We as SidebarSecondarySectionLabel,
100
100
  Ze as Switch,
101
- or as Tag,
102
- $e as Tooltip,
103
- er as TooltipContent,
104
- rr as TooltipProvider,
105
- tr as TooltipTrigger,
101
+ $e as Tag,
102
+ tr as Tooltip,
103
+ ar as TooltipContent,
104
+ or as TooltipProvider,
105
+ nr as TooltipTrigger,
106
106
  c as avatarVariants,
107
- Xe as buttonIconVariants,
108
- M as buttonMenuVariants,
107
+ M as buttonIconVariants,
108
+ B as buttonMenuVariants,
109
109
  f as buttonVariants,
110
- B as cardFilterVariants,
110
+ G as cardFilterVariants,
111
111
  t as cn,
112
- he as sidebarPrimaryMenuItemVariants,
113
- Qe as sidebarSecondaryMenuItemVariants,
114
- nr as tagVariants
112
+ ke as sidebarPrimaryMenuItemVariants,
113
+ Xe as sidebarSecondaryMenuItemVariants,
114
+ er as tagVariants
115
115
  };
116
116
  //# sourceMappingURL=react.js.map
@@ -17,6 +17,12 @@ declare const InputSelectContent: React.ForwardRefExoticComponent<Omit<Omit<impo
17
17
  sideOffset?: number;
18
18
  align?: SelectPrimitive.Positioner.Props["align"];
19
19
  side?: SelectPrimitive.Positioner.Props["side"];
20
+ /**
21
+ * Container to portal the dropdown into. Defaults to the document body;
22
+ * pass an element to scope the portal (e.g. a shadow root, so the popup
23
+ * inherits styles defined there).
24
+ */
25
+ portalContainer?: SelectPrimitive.Portal.Props["container"];
20
26
  } & React.RefAttributes<HTMLDivElement>>;
21
27
  /**
22
28
  * Presentational in-dropdown search row (magnifier + input). The consumer wires