@epilot/volt-ui-experimental-griffel 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ADOPTING.md +416 -0
- package/README.md +32 -31
- package/dist/_virtual/jsx-dev-runtime.js +5 -0
- package/dist/_virtual/jsx-dev-runtime.js.map +1 -0
- package/dist/_virtual/react-jsx-dev-runtime.development.js +5 -0
- package/dist/_virtual/react-jsx-dev-runtime.development.js.map +1 -0
- package/dist/_virtual/react-jsx-dev-runtime.production.js +5 -0
- package/dist/_virtual/react-jsx-dev-runtime.production.js.map +1 -0
- package/dist/components/accordion/accordion.js +126 -66
- package/dist/components/accordion/accordion.js.map +1 -1
- package/dist/components/alert-dialog/alert-dialog.js +239 -137
- package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
- package/dist/components/avatar/avatar-group.js +102 -47
- package/dist/components/avatar/avatar-group.js.map +1 -1
- package/dist/components/avatar/avatar.js +97 -73
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/badge/badge.js +53 -37
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.js +97 -49
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/components/button/button.js +88 -77
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/button-group/button-group.js +55 -31
- package/dist/components/button-group/button-group.js.map +1 -1
- package/dist/components/callout/callout.js +288 -164
- package/dist/components/callout/callout.js.map +1 -1
- package/dist/components/card/card.js +137 -81
- package/dist/components/card/card.js.map +1 -1
- package/dist/components/checkbox/checkbox.js +100 -49
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/collapsible-sidebar/collapsible-sidebar.js +155 -107
- package/dist/components/collapsible-sidebar/collapsible-sidebar.js.map +1 -1
- package/dist/components/command/command.js +297 -158
- package/dist/components/command/command.js.map +1 -1
- package/dist/components/data-table/data-table-body.js +114 -54
- package/dist/components/data-table/data-table-body.js.map +1 -1
- package/dist/components/data-table/data-table-column-header.js +117 -45
- package/dist/components/data-table/data-table-column-header.js.map +1 -1
- package/dist/components/data-table/data-table-column-visibility.js +98 -39
- package/dist/components/data-table/data-table-column-visibility.js.map +1 -1
- package/dist/components/data-table/data-table-content.js +90 -58
- package/dist/components/data-table/data-table-content.js.map +1 -1
- package/dist/components/data-table/data-table-error.js +83 -39
- package/dist/components/data-table/data-table-error.js.map +1 -1
- package/dist/components/data-table/data-table-header.js +88 -54
- package/dist/components/data-table/data-table-header.js.map +1 -1
- package/dist/components/data-table/data-table-loading.js +27 -15
- package/dist/components/data-table/data-table-loading.js.map +1 -1
- package/dist/components/data-table/data-table-pagination.js +27 -19
- package/dist/components/data-table/data-table-pagination.js.map +1 -1
- package/dist/components/data-table/data-table-row.js +87 -64
- package/dist/components/data-table/data-table-row.js.map +1 -1
- package/dist/components/data-table/data-table-toolbar.js +24 -16
- package/dist/components/data-table/data-table-toolbar.js.map +1 -1
- package/dist/components/data-table/data-table.js +182 -145
- package/dist/components/data-table/data-table.js.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.js +342 -214
- package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/date-range-picker/range-calendar.js +132 -92
- package/dist/components/date-range-picker/range-calendar.js.map +1 -1
- package/dist/components/date-time-picker/calendar.js +501 -317
- package/dist/components/date-time-picker/calendar.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker-context.js +64 -60
- package/dist/components/date-time-picker/date-time-picker-context.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker-input.js +249 -149
- package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker-panel.js +273 -165
- package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker-popover.js +22 -14
- package/dist/components/date-time-picker/date-time-picker-popover.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker.js +134 -90
- package/dist/components/date-time-picker/date-time-picker.js.map +1 -1
- package/dist/components/date-time-picker/time-picker.js +198 -132
- package/dist/components/date-time-picker/time-picker.js.map +1 -1
- package/dist/components/density-provider/density-provider.js +48 -0
- package/dist/components/density-provider/density-provider.js.map +1 -0
- package/dist/components/dialog/dialog.js +280 -150
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/drawer/drawer.js +273 -163
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/dropdown-menu/dropdown-menu.js +378 -195
- package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
- package/dist/components/field/field-combobox.js +447 -240
- package/dist/components/field/field-combobox.js.map +1 -1
- package/dist/components/field/field-select.js +23 -19
- package/dist/components/field/field-select.js.map +1 -1
- package/dist/components/field/field.js +318 -209
- package/dist/components/field/field.js.map +1 -1
- package/dist/components/label/label.js +27 -19
- package/dist/components/label/label.js.map +1 -1
- package/dist/components/list/list.js +623 -369
- package/dist/components/list/list.js.map +1 -1
- package/dist/components/option-card/option-card.js +323 -159
- package/dist/components/option-card/option-card.js.map +1 -1
- package/dist/components/pill/pill.js +82 -64
- package/dist/components/pill/pill.js.map +1 -1
- package/dist/components/popover/popover.js +101 -56
- package/dist/components/popover/popover.js.map +1 -1
- package/dist/components/radio/radio.js +94 -51
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/scroll-overflow/scroll-overflow.js +350 -198
- package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
- package/dist/components/segmented-control/segmented-control.js +141 -97
- package/dist/components/segmented-control/segmented-control.js.map +1 -1
- package/dist/components/select/select.js +452 -227
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/separator/separator.js +24 -16
- package/dist/components/separator/separator.js.map +1 -1
- package/dist/components/skeleton/skeleton.js +83 -43
- package/dist/components/skeleton/skeleton.js.map +1 -1
- package/dist/components/spinner/spinner.js +44 -20
- package/dist/components/spinner/spinner.js.map +1 -1
- package/dist/components/switch/switch.js +163 -86
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/table/table-pagination.js +465 -205
- package/dist/components/table/table-pagination.js.map +1 -1
- package/dist/components/table/table.js +212 -144
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/tabs/tabs.js +94 -58
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/text/text.js +40 -32
- package/dist/components/text/text.js.map +1 -1
- package/dist/components/toast/toast.js +187 -111
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/toggle/toggle-group.js +40 -24
- package/dist/components/toggle/toggle-group.js.map +1 -1
- package/dist/components/toggle/toggle.js +48 -40
- package/dist/components/toggle/toggle.js.map +1 -1
- package/dist/components/tooltip/tooltip.js +101 -55
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/index.d.ts +600 -427
- package/dist/index.js +215 -212
- package/dist/index.js.map +1 -1
- package/dist/lib/clear-button.js +27 -15
- package/dist/lib/clear-button.js.map +1 -1
- package/dist/lib/icons.js +18 -6
- package/dist/lib/icons.js.map +1 -1
- package/dist/packages/volt-runtime/dist/sheet.js +27 -10
- package/dist/packages/volt-runtime/dist/sheet.js.map +1 -1
- package/dist/packages/volt-runtime/dist/styles/recipe.js +76 -0
- package/dist/packages/volt-runtime/dist/styles/recipe.js.map +1 -0
- package/dist/styles/document-context.js +12 -0
- package/dist/styles/document-context.js.map +1 -0
- package/dist/styles/make-styles.js +18 -10
- package/dist/styles/make-styles.js.map +1 -1
- package/dist/tokens/core.generated.js +1238 -1166
- package/dist/tokens/core.generated.js.map +1 -1
- package/dist/tokens/index.d.ts +442 -415
- package/dist/tokens/index.js +1105 -1078
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/install.js +9 -5
- package/dist/tokens/install.js.map +1 -1
- package/dist/tokens/use-palette-tokens.js +20 -0
- package/dist/tokens/use-palette-tokens.js.map +1 -0
- package/dist/tokens.json +83 -2
- package/dist/vendor/react/cjs/react-jsx-dev-runtime.development.js +236 -0
- package/dist/vendor/react/cjs/react-jsx-dev-runtime.development.js.map +1 -0
- package/dist/vendor/react/cjs/react-jsx-dev-runtime.production.js +21 -0
- package/dist/vendor/react/cjs/react-jsx-dev-runtime.production.js.map +1 -0
- package/dist/vendor/react/jsx-dev-runtime.js +9 -0
- package/dist/vendor/react/jsx-dev-runtime.js.map +1 -0
- package/package.json +13 -5
- package/scripts/migration-diagnostics-core.mjs +859 -0
- package/scripts/migration-diagnostics.mjs +353 -0
- package/scripts/migration-sweep.mjs +179 -0
- package/AGENTS.md +0 -153
- package/AUTHORING.md +0 -292
- package/dist/packages/volt-runtime/dist/styles/make-styles.js +0 -22
- package/dist/packages/volt-runtime/dist/styles/make-styles.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collapsible-sidebar.js","sources":["../../../src/components/collapsible-sidebar/collapsible-sidebar.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { mergeClasses, shorthands } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\n\n// --- Context ---\n\nexport interface CollapsibleSidebarContextValue {\n collapsed: boolean\n onCollapsedChange: (collapsed: boolean) => void\n width: number | string\n collapsedWidth: number | string\n isHovered: boolean\n expandOnHover: boolean\n skipTransition: boolean\n}\n\nconst CollapsibleSidebarContext =\n React.createContext<CollapsibleSidebarContextValue | null>(null)\n\nexport function useCollapsibleSidebar() {\n const ctx = React.useContext(CollapsibleSidebarContext)\n\n if (!ctx) {\n throw new Error(\n \"CollapsibleSidebar sub-components must be used within CollapsibleSidebar\"\n )\n }\n\n return ctx\n}\n\n// --- Styles ---\n\nconst useStyles = makeVoltStyles({\n root: {\n position: \"relative\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n content: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"0%\",\n },\n floating: {\n position: \"absolute\",\n top: 0,\n left: 0,\n height: \"100%\",\n // v1 z-50; floating panel layer above collapsed sidebar.\n zIndex: 50,\n ...shorthands.borderRadius(tokens.radius2xl),\n backgroundColor: tokens.body,\n // v1 shadow-[0_4px_20px_rgba(0,0,0,0.15)]; no shadow token exists in this package.\n boxShadow: \"0 4px 20px rgba(0, 0, 0, 0.15)\",\n display: \"flex\",\n flexDirection: \"column\",\n opacity: 0,\n transform: \"translateX(-50%)\",\n pointerEvents: \"none\",\n transitionProperty: \"all\",\n transitionDuration: \"200ms\",\n transitionTimingFunction: \"cubic-bezier(0.25, 0.46, 0.45, 0.94)\",\n \"&[data-visible]\": {\n opacity: 1,\n transform: \"translateX(0)\",\n pointerEvents: \"auto\",\n },\n },\n transitionNone: {\n transitionProperty: \"none\",\n },\n condensed: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n paddingTop: tokens.spacingGroup2,\n // v1 gap-3 is 0.75rem; no spacing token for 0.75rem exists in this package.\n ...shorthands.gap(tokens.spacingElement3),\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"0%\",\n },\n toggle: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n ...shorthands.padding(tokens.spacingGroup2),\n cursor: \"pointer\",\n backgroundColor: \"transparent\",\n ...shorthands.border(\"0\"),\n },\n})\n\n// --- CollapsibleSidebar (root) ---\n\nexport type CollapsibleSidebarProps = React.ComponentProps<\"div\"> & {\n collapsed?: boolean\n defaultCollapsed?: boolean\n onCollapsedChange?: (collapsed: boolean) => void\n width?: number | string\n collapsedWidth?: number | string\n expandOnHover?: boolean\n hoverDelay?: number\n}\n\nexport const CollapsibleSidebar = React.forwardRef<\n HTMLDivElement,\n CollapsibleSidebarProps\n>(function CollapsibleSidebar(\n {\n collapsed: controlledCollapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n width = 264,\n collapsedWidth = 64,\n expandOnHover = true,\n hoverDelay = 100,\n className,\n children,\n ...props\n },\n ref\n) {\n const styles = useStyles()\n\n const [internalCollapsed, setInternalCollapsed] =\n React.useState(defaultCollapsed)\n const isControlled = controlledCollapsed !== undefined\n const collapsed = isControlled ? controlledCollapsed : internalCollapsed\n\n // Skip floating panel transition when expanding (to avoid overlap with inline panel)\n const [skipTransition, setSkipTransition] = React.useState(false)\n\n const handleCollapsedChange = React.useCallback(\n (value: boolean) => {\n if (!value) setSkipTransition(true)\n if (!isControlled) setInternalCollapsed(value)\n onCollapsedChange?.(value)\n },\n [isControlled, onCollapsedChange]\n )\n\n // Hover state for floating panel\n const [isHovered, setIsHovered] = React.useState(false)\n const hoverTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(undefined)\n\n const handleMouseEnter = React.useCallback(() => {\n if (!collapsed || !expandOnHover) return\n if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current)\n hoverTimeoutRef.current = setTimeout(() => setIsHovered(true), hoverDelay)\n }, [collapsed, expandOnHover, hoverDelay])\n\n const handleMouseLeave = React.useCallback(() => {\n if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current)\n setIsHovered(false)\n }, [])\n\n // Reset hover when collapse state changes\n React.useEffect(() => {\n setIsHovered(false)\n // Reset skipTransition after the render so future hover exits animate normally\n const raf = requestAnimationFrame(() => setSkipTransition(false))\n return () => cancelAnimationFrame(raf)\n }, [collapsed])\n\n // Cleanup timeout on unmount\n React.useEffect(() => {\n return () => {\n if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current)\n }\n }, [])\n\n const contextValue = React.useMemo(\n () => ({\n collapsed,\n onCollapsedChange: handleCollapsedChange,\n width,\n collapsedWidth,\n isHovered,\n expandOnHover,\n skipTransition,\n }),\n [\n collapsed,\n handleCollapsedChange,\n width,\n collapsedWidth,\n isHovered,\n expandOnHover,\n skipTransition,\n ]\n )\n\n return (\n <CollapsibleSidebarContext.Provider value={contextValue}>\n <div\n ref={ref}\n data-slot=\"collapsible-sidebar\"\n {...{ [SLOT_ATTR]: \"collapsible-sidebar\" }}\n data-collapsed={collapsed ? \"\" : undefined}\n className={mergeClasses(styles.root, className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n >\n {children}\n </div>\n </CollapsibleSidebarContext.Provider>\n )\n})\n\n// --- CollapsibleSidebarContent ---\n\nexport type CollapsibleSidebarContentProps = React.ComponentProps<\"aside\"> & {\n floatingClassName?: string\n}\n\nexport const CollapsibleSidebarContent = React.forwardRef<\n HTMLElement,\n CollapsibleSidebarContentProps\n>(function CollapsibleSidebarContent(\n { className, floatingClassName, children, style, ...props },\n ref\n) {\n const styles = useStyles()\n const { collapsed, width, isHovered, expandOnHover, skipTransition } =\n useCollapsibleSidebar()\n\n const widthValue = typeof width === \"number\" ? `${width}px` : width\n\n return (\n <>\n {/* Inline panel: only rendered when expanded */}\n {!collapsed && (\n <aside\n ref={ref}\n data-slot=\"collapsible-sidebar-content\"\n {...{ [SLOT_ATTR]: \"collapsible-sidebar-content\" }}\n className={mergeClasses(styles.content, className)}\n style={{ width: widthValue, ...style }}\n {...props}\n >\n {children}\n </aside>\n )}\n\n {/* Floating panel: visible on hover when collapsed (only if expandOnHover is enabled) */}\n {expandOnHover && (\n <div\n data-slot=\"collapsible-sidebar-floating\"\n {...{ [SLOT_ATTR]: \"collapsible-sidebar-floating\" }}\n data-visible={collapsed && isHovered ? \"\" : undefined}\n className={mergeClasses(\n styles.floating,\n skipTransition && styles.transitionNone,\n floatingClassName\n )}\n style={{ width: widthValue }}\n >\n {collapsed && isHovered && children}\n </div>\n )}\n </>\n )\n})\n\n// --- CollapsibleSidebarCondensed ---\n\nexport type CollapsibleSidebarCondensedProps = React.ComponentProps<\"div\">\n\nexport const CollapsibleSidebarCondensed = React.forwardRef<\n HTMLDivElement,\n CollapsibleSidebarCondensedProps\n>(function CollapsibleSidebarCondensed(\n { className, children, style, ...props },\n ref\n) {\n const styles = useStyles()\n const { collapsed, collapsedWidth } = useCollapsibleSidebar()\n\n if (!collapsed) return null\n\n const collapsedWidthValue =\n typeof collapsedWidth === \"number\" ? `${collapsedWidth}px` : collapsedWidth\n\n return (\n <div\n ref={ref}\n data-slot=\"collapsible-sidebar-condensed\"\n {...{ [SLOT_ATTR]: \"collapsible-sidebar-condensed\" }}\n className={mergeClasses(styles.condensed, className)}\n style={{ width: collapsedWidthValue, ...style }}\n {...props}\n >\n {children}\n </div>\n )\n})\n\n// --- CollapsibleSidebarToggle ---\n\nexport type CollapsibleSidebarToggleProps = Omit<\n React.ComponentProps<\"button\">,\n \"onClick\" | \"children\"\n> & {\n children?:\n | React.ReactNode\n | ((props: { collapsed: boolean }) => React.ReactNode)\n}\n\nexport const CollapsibleSidebarToggle = React.forwardRef<\n HTMLButtonElement,\n CollapsibleSidebarToggleProps\n>(function CollapsibleSidebarToggle({ className, children, ...props }, ref) {\n const styles = useStyles()\n const { collapsed, onCollapsedChange } = useCollapsibleSidebar()\n\n return (\n <button\n ref={ref}\n data-slot=\"collapsible-sidebar-toggle\"\n {...{ [SLOT_ATTR]: \"collapsible-sidebar-toggle\" }}\n data-collapsed={collapsed ? \"\" : undefined}\n type=\"button\"\n aria-expanded={!collapsed}\n aria-label={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\n className={mergeClasses(styles.toggle, className)}\n onClick={() => onCollapsedChange(!collapsed)}\n {...props}\n >\n {typeof children === \"function\" ? children({ collapsed }) : children}\n </button>\n )\n})\n"],"names":["CollapsibleSidebarContext","React","useCollapsibleSidebar","ctx","useStyles","makeVoltStyles","shorthands","tokens.radius2xl","tokens.body","tokens.spacingGroup2","tokens.spacingElement3","CollapsibleSidebar","controlledCollapsed","defaultCollapsed","onCollapsedChange","width","collapsedWidth","expandOnHover","hoverDelay","className","children","props","ref","styles","internalCollapsed","setInternalCollapsed","isControlled","collapsed","skipTransition","setSkipTransition","handleCollapsedChange","value","isHovered","setIsHovered","hoverTimeoutRef","handleMouseEnter","handleMouseLeave","raf","contextValue","jsx","SLOT_ATTR","mergeClasses","CollapsibleSidebarContent","floatingClassName","style","widthValue","jsxs","Fragment","CollapsibleSidebarCondensed","collapsedWidthValue","CollapsibleSidebarToggle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"collapsible-sidebar.js","sources":["../../../src/components/collapsible-sidebar/collapsible-sidebar.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { mergeClasses, shorthands } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\n\n// --- Context ---\n\nexport interface CollapsibleSidebarContextValue {\n collapsed: boolean\n onCollapsedChange: (collapsed: boolean) => void\n width: number | string\n collapsedWidth: number | string\n isHovered: boolean\n expandOnHover: boolean\n skipTransition: boolean\n}\n\nconst CollapsibleSidebarContext =\n React.createContext<CollapsibleSidebarContextValue | null>(null)\n\nexport function useCollapsibleSidebar() {\n const ctx = React.useContext(CollapsibleSidebarContext)\n\n if (!ctx) {\n throw new Error(\n \"CollapsibleSidebar sub-components must be used within CollapsibleSidebar\"\n )\n }\n\n return ctx\n}\n\n// --- Styles ---\n\nconst useStyles = makeVoltStyles({\n root: {\n position: \"relative\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n content: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"0%\",\n },\n floating: {\n position: \"absolute\",\n top: 0,\n left: 0,\n height: \"100%\",\n // v1 z-50; floating panel layer above collapsed sidebar.\n zIndex: 50,\n ...shorthands.borderRadius(tokens.radius2xl),\n backgroundColor: tokens.body,\n // v1 shadow-[0_4px_20px_rgba(0,0,0,0.15)]; no shadow token exists in this package.\n boxShadow: \"0 4px 20px rgba(0, 0, 0, 0.15)\",\n display: \"flex\",\n flexDirection: \"column\",\n opacity: 0,\n transform: \"translateX(-50%)\",\n pointerEvents: \"none\",\n transitionProperty: \"all\",\n transitionDuration: \"200ms\",\n transitionTimingFunction: \"cubic-bezier(0.25, 0.46, 0.45, 0.94)\",\n \"&[data-visible]\": {\n opacity: 1,\n transform: \"translateX(0)\",\n pointerEvents: \"auto\",\n },\n },\n transitionNone: {\n transitionProperty: \"none\",\n },\n condensed: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n paddingTop: tokens.spacingGroup2,\n // v1 gap-3 is 0.75rem; no spacing token for 0.75rem exists in this package.\n ...shorthands.gap(tokens.spacingElement3),\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"0%\",\n },\n toggle: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n ...shorthands.padding(tokens.spacingGroup2),\n cursor: \"pointer\",\n backgroundColor: \"transparent\",\n ...shorthands.border(\"0\"),\n },\n})\n\n// --- CollapsibleSidebar (root) ---\n\nexport type CollapsibleSidebarProps = React.ComponentProps<\"div\"> & {\n collapsed?: boolean\n defaultCollapsed?: boolean\n onCollapsedChange?: (collapsed: boolean) => void\n width?: number | string\n collapsedWidth?: number | string\n expandOnHover?: boolean\n hoverDelay?: number\n}\n\nexport const CollapsibleSidebar = React.forwardRef<\n HTMLDivElement,\n CollapsibleSidebarProps\n>(function CollapsibleSidebar(\n {\n collapsed: controlledCollapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n width = 264,\n collapsedWidth = 64,\n expandOnHover = true,\n hoverDelay = 100,\n className,\n children,\n ...props\n },\n ref\n) {\n const styles = useStyles()\n\n const [internalCollapsed, setInternalCollapsed] =\n React.useState(defaultCollapsed)\n const isControlled = controlledCollapsed !== undefined\n const collapsed = isControlled ? controlledCollapsed : internalCollapsed\n\n // Skip floating panel transition when expanding (to avoid overlap with inline panel)\n const [skipTransition, setSkipTransition] = React.useState(false)\n\n const handleCollapsedChange = React.useCallback(\n (value: boolean) => {\n if (!value) setSkipTransition(true)\n if (!isControlled) setInternalCollapsed(value)\n onCollapsedChange?.(value)\n },\n [isControlled, onCollapsedChange]\n )\n\n // Hover state for floating panel\n const [isHovered, setIsHovered] = React.useState(false)\n const hoverTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(undefined)\n\n const handleMouseEnter = React.useCallback(() => {\n if (!collapsed || !expandOnHover) return\n if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current)\n hoverTimeoutRef.current = setTimeout(() => setIsHovered(true), hoverDelay)\n }, [collapsed, expandOnHover, hoverDelay])\n\n const handleMouseLeave = React.useCallback(() => {\n if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current)\n setIsHovered(false)\n }, [])\n\n // Reset hover when collapse state changes\n React.useEffect(() => {\n setIsHovered(false)\n // Reset skipTransition after the render so future hover exits animate normally\n const raf = requestAnimationFrame(() => setSkipTransition(false))\n return () => cancelAnimationFrame(raf)\n }, [collapsed])\n\n // Cleanup timeout on unmount\n React.useEffect(() => {\n return () => {\n if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current)\n }\n }, [])\n\n const contextValue = React.useMemo(\n () => ({\n collapsed,\n onCollapsedChange: handleCollapsedChange,\n width,\n collapsedWidth,\n isHovered,\n expandOnHover,\n skipTransition,\n }),\n [\n collapsed,\n handleCollapsedChange,\n width,\n collapsedWidth,\n isHovered,\n expandOnHover,\n skipTransition,\n ]\n )\n\n return (\n <CollapsibleSidebarContext.Provider value={contextValue}>\n <div\n ref={ref}\n data-slot=\"collapsible-sidebar\"\n {...{ [SLOT_ATTR]: \"collapsible-sidebar\" }}\n data-collapsed={collapsed ? \"\" : undefined}\n className={mergeClasses(styles.root, className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n >\n {children}\n </div>\n </CollapsibleSidebarContext.Provider>\n )\n})\n\n// --- CollapsibleSidebarContent ---\n\nexport type CollapsibleSidebarContentProps = React.ComponentProps<\"aside\"> & {\n floatingClassName?: string\n}\n\nexport const CollapsibleSidebarContent = React.forwardRef<\n HTMLElement,\n CollapsibleSidebarContentProps\n>(function CollapsibleSidebarContent(\n { className, floatingClassName, children, style, ...props },\n ref\n) {\n const styles = useStyles()\n const { collapsed, width, isHovered, expandOnHover, skipTransition } =\n useCollapsibleSidebar()\n\n const widthValue = typeof width === \"number\" ? `${width}px` : width\n\n return (\n <>\n {/* Inline panel: only rendered when expanded */}\n {!collapsed && (\n <aside\n ref={ref}\n data-slot=\"collapsible-sidebar-content\"\n {...{ [SLOT_ATTR]: \"collapsible-sidebar-content\" }}\n className={mergeClasses(styles.content, className)}\n style={{ width: widthValue, ...style }}\n {...props}\n >\n {children}\n </aside>\n )}\n\n {/* Floating panel: visible on hover when collapsed (only if expandOnHover is enabled) */}\n {expandOnHover && (\n <div\n data-slot=\"collapsible-sidebar-floating\"\n {...{ [SLOT_ATTR]: \"collapsible-sidebar-floating\" }}\n data-visible={collapsed && isHovered ? \"\" : undefined}\n className={mergeClasses(\n styles.floating,\n skipTransition && styles.transitionNone,\n floatingClassName\n )}\n style={{ width: widthValue }}\n >\n {collapsed && isHovered && children}\n </div>\n )}\n </>\n )\n})\n\n// --- CollapsibleSidebarCondensed ---\n\nexport type CollapsibleSidebarCondensedProps = React.ComponentProps<\"div\">\n\nexport const CollapsibleSidebarCondensed = React.forwardRef<\n HTMLDivElement,\n CollapsibleSidebarCondensedProps\n>(function CollapsibleSidebarCondensed(\n { className, children, style, ...props },\n ref\n) {\n const styles = useStyles()\n const { collapsed, collapsedWidth } = useCollapsibleSidebar()\n\n if (!collapsed) return null\n\n const collapsedWidthValue =\n typeof collapsedWidth === \"number\" ? `${collapsedWidth}px` : collapsedWidth\n\n return (\n <div\n ref={ref}\n data-slot=\"collapsible-sidebar-condensed\"\n {...{ [SLOT_ATTR]: \"collapsible-sidebar-condensed\" }}\n className={mergeClasses(styles.condensed, className)}\n style={{ width: collapsedWidthValue, ...style }}\n {...props}\n >\n {children}\n </div>\n )\n})\n\n// --- CollapsibleSidebarToggle ---\n\nexport type CollapsibleSidebarToggleProps = Omit<\n React.ComponentProps<\"button\">,\n \"onClick\" | \"children\"\n> & {\n children?:\n | React.ReactNode\n | ((props: { collapsed: boolean }) => React.ReactNode)\n}\n\nexport const CollapsibleSidebarToggle = React.forwardRef<\n HTMLButtonElement,\n CollapsibleSidebarToggleProps\n>(function CollapsibleSidebarToggle({ className, children, ...props }, ref) {\n const styles = useStyles()\n const { collapsed, onCollapsedChange } = useCollapsibleSidebar()\n\n return (\n <button\n ref={ref}\n data-slot=\"collapsible-sidebar-toggle\"\n {...{ [SLOT_ATTR]: \"collapsible-sidebar-toggle\" }}\n data-collapsed={collapsed ? \"\" : undefined}\n type=\"button\"\n aria-expanded={!collapsed}\n aria-label={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\n className={mergeClasses(styles.toggle, className)}\n onClick={() => onCollapsedChange(!collapsed)}\n {...props}\n >\n {typeof children === \"function\" ? children({ collapsed }) : children}\n </button>\n )\n})\n"],"names":["CollapsibleSidebarContext","React","useCollapsibleSidebar","ctx","useStyles","makeVoltStyles","shorthands","tokens.radius2xl","tokens.body","tokens.spacingGroup2","tokens.spacingElement3","CollapsibleSidebar","controlledCollapsed","defaultCollapsed","onCollapsedChange","width","collapsedWidth","expandOnHover","hoverDelay","className","children","props","ref","styles","internalCollapsed","setInternalCollapsed","isControlled","collapsed","skipTransition","setSkipTransition","handleCollapsedChange","value","isHovered","setIsHovered","hoverTimeoutRef","handleMouseEnter","handleMouseLeave","raf","contextValue","jsxDEV","SLOT_ATTR","mergeClasses","CollapsibleSidebarContent","floatingClassName","style","widthValue","Fragment","CollapsibleSidebarCondensed","collapsedWidthValue","CollapsibleSidebarToggle"],"mappings":"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"}
|