@epilot/volt-ui-experimental-griffel 0.2.1 → 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.
Files changed (170) hide show
  1. package/ADOPTING.md +416 -0
  2. package/README.md +96 -17
  3. package/dist/_virtual/jsx-dev-runtime.js +5 -0
  4. package/dist/_virtual/jsx-dev-runtime.js.map +1 -0
  5. package/dist/_virtual/react-jsx-dev-runtime.development.js +5 -0
  6. package/dist/_virtual/react-jsx-dev-runtime.development.js.map +1 -0
  7. package/dist/_virtual/react-jsx-dev-runtime.production.js +5 -0
  8. package/dist/_virtual/react-jsx-dev-runtime.production.js.map +1 -0
  9. package/dist/components/accordion/accordion.js +126 -66
  10. package/dist/components/accordion/accordion.js.map +1 -1
  11. package/dist/components/alert-dialog/alert-dialog.js +239 -137
  12. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  13. package/dist/components/avatar/avatar-group.js +102 -47
  14. package/dist/components/avatar/avatar-group.js.map +1 -1
  15. package/dist/components/avatar/avatar.js +99 -76
  16. package/dist/components/avatar/avatar.js.map +1 -1
  17. package/dist/components/badge/badge.js +56 -40
  18. package/dist/components/badge/badge.js.map +1 -1
  19. package/dist/components/breadcrumb/breadcrumb.js +97 -49
  20. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  21. package/dist/components/button/button.js +89 -78
  22. package/dist/components/button/button.js.map +1 -1
  23. package/dist/components/button-group/button-group.js +57 -33
  24. package/dist/components/button-group/button-group.js.map +1 -1
  25. package/dist/components/callout/callout.js +288 -164
  26. package/dist/components/callout/callout.js.map +1 -1
  27. package/dist/components/card/card.js +138 -82
  28. package/dist/components/card/card.js.map +1 -1
  29. package/dist/components/checkbox/checkbox.js +100 -49
  30. package/dist/components/checkbox/checkbox.js.map +1 -1
  31. package/dist/components/collapsible-sidebar/collapsible-sidebar.js +155 -107
  32. package/dist/components/collapsible-sidebar/collapsible-sidebar.js.map +1 -1
  33. package/dist/components/command/command.js +295 -156
  34. package/dist/components/command/command.js.map +1 -1
  35. package/dist/components/data-table/data-table-body.js +114 -54
  36. package/dist/components/data-table/data-table-body.js.map +1 -1
  37. package/dist/components/data-table/data-table-column-header.js +117 -45
  38. package/dist/components/data-table/data-table-column-header.js.map +1 -1
  39. package/dist/components/data-table/data-table-column-visibility.js +98 -39
  40. package/dist/components/data-table/data-table-column-visibility.js.map +1 -1
  41. package/dist/components/data-table/data-table-content.js +90 -58
  42. package/dist/components/data-table/data-table-content.js.map +1 -1
  43. package/dist/components/data-table/data-table-error.js +86 -42
  44. package/dist/components/data-table/data-table-error.js.map +1 -1
  45. package/dist/components/data-table/data-table-header.js +88 -54
  46. package/dist/components/data-table/data-table-header.js.map +1 -1
  47. package/dist/components/data-table/data-table-loading.js +30 -18
  48. package/dist/components/data-table/data-table-loading.js.map +1 -1
  49. package/dist/components/data-table/data-table-pagination.js +27 -19
  50. package/dist/components/data-table/data-table-pagination.js.map +1 -1
  51. package/dist/components/data-table/data-table-row.js +87 -64
  52. package/dist/components/data-table/data-table-row.js.map +1 -1
  53. package/dist/components/data-table/data-table-toolbar.js +24 -16
  54. package/dist/components/data-table/data-table-toolbar.js.map +1 -1
  55. package/dist/components/data-table/data-table.js +182 -145
  56. package/dist/components/data-table/data-table.js.map +1 -1
  57. package/dist/components/date-range-picker/date-range-picker.js +342 -214
  58. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  59. package/dist/components/date-range-picker/range-calendar.js +132 -92
  60. package/dist/components/date-range-picker/range-calendar.js.map +1 -1
  61. package/dist/components/date-time-picker/calendar.js +507 -323
  62. package/dist/components/date-time-picker/calendar.js.map +1 -1
  63. package/dist/components/date-time-picker/date-time-picker-context.js +64 -60
  64. package/dist/components/date-time-picker/date-time-picker-context.js.map +1 -1
  65. package/dist/components/date-time-picker/date-time-picker-input.js +249 -149
  66. package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
  67. package/dist/components/date-time-picker/date-time-picker-panel.js +270 -156
  68. package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
  69. package/dist/components/date-time-picker/date-time-picker-popover.js +22 -14
  70. package/dist/components/date-time-picker/date-time-picker-popover.js.map +1 -1
  71. package/dist/components/date-time-picker/date-time-picker.js +118 -70
  72. package/dist/components/date-time-picker/date-time-picker.js.map +1 -1
  73. package/dist/components/date-time-picker/time-picker.js +204 -132
  74. package/dist/components/date-time-picker/time-picker.js.map +1 -1
  75. package/dist/components/density-provider/density-provider.js +48 -0
  76. package/dist/components/density-provider/density-provider.js.map +1 -0
  77. package/dist/components/dialog/dialog.js +281 -151
  78. package/dist/components/dialog/dialog.js.map +1 -1
  79. package/dist/components/drawer/drawer.js +272 -162
  80. package/dist/components/drawer/drawer.js.map +1 -1
  81. package/dist/components/dropdown-menu/dropdown-menu.js +376 -193
  82. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  83. package/dist/components/field/field-combobox.js +447 -240
  84. package/dist/components/field/field-combobox.js.map +1 -1
  85. package/dist/components/field/field-select.js +23 -19
  86. package/dist/components/field/field-select.js.map +1 -1
  87. package/dist/components/field/field.js +315 -206
  88. package/dist/components/field/field.js.map +1 -1
  89. package/dist/components/label/label.js +24 -16
  90. package/dist/components/label/label.js.map +1 -1
  91. package/dist/components/list/list.js +623 -369
  92. package/dist/components/list/list.js.map +1 -1
  93. package/dist/components/option-card/option-card.js +323 -159
  94. package/dist/components/option-card/option-card.js.map +1 -1
  95. package/dist/components/pill/pill.js +91 -72
  96. package/dist/components/pill/pill.js.map +1 -1
  97. package/dist/components/popover/popover.js +99 -54
  98. package/dist/components/popover/popover.js.map +1 -1
  99. package/dist/components/radio/radio.js +92 -49
  100. package/dist/components/radio/radio.js.map +1 -1
  101. package/dist/components/scroll-overflow/scroll-overflow.js +349 -197
  102. package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
  103. package/dist/components/segmented-control/segmented-control.js +141 -97
  104. package/dist/components/segmented-control/segmented-control.js.map +1 -1
  105. package/dist/components/select/select.js +452 -227
  106. package/dist/components/select/select.js.map +1 -1
  107. package/dist/components/separator/separator.js +24 -16
  108. package/dist/components/separator/separator.js.map +1 -1
  109. package/dist/components/skeleton/skeleton.js +78 -38
  110. package/dist/components/skeleton/skeleton.js.map +1 -1
  111. package/dist/components/spinner/spinner.js +44 -20
  112. package/dist/components/spinner/spinner.js.map +1 -1
  113. package/dist/components/switch/switch.js +163 -86
  114. package/dist/components/switch/switch.js.map +1 -1
  115. package/dist/components/table/table-pagination.js +468 -210
  116. package/dist/components/table/table-pagination.js.map +1 -1
  117. package/dist/components/table/table.js +212 -144
  118. package/dist/components/table/table.js.map +1 -1
  119. package/dist/components/tabs/tabs.js +94 -58
  120. package/dist/components/tabs/tabs.js.map +1 -1
  121. package/dist/components/text/text.js +40 -32
  122. package/dist/components/text/text.js.map +1 -1
  123. package/dist/components/toast/toast.js +189 -113
  124. package/dist/components/toast/toast.js.map +1 -1
  125. package/dist/components/toggle/toggle-group.js +40 -24
  126. package/dist/components/toggle/toggle-group.js.map +1 -1
  127. package/dist/components/toggle/toggle.js +50 -42
  128. package/dist/components/toggle/toggle.js.map +1 -1
  129. package/dist/components/tooltip/tooltip.js +101 -55
  130. package/dist/components/tooltip/tooltip.js.map +1 -1
  131. package/dist/index.d.ts +1675 -1068
  132. package/dist/index.js +286 -280
  133. package/dist/index.js.map +1 -1
  134. package/dist/lib/clear-button.js +27 -15
  135. package/dist/lib/clear-button.js.map +1 -1
  136. package/dist/lib/icons.js +18 -6
  137. package/dist/lib/icons.js.map +1 -1
  138. package/dist/packages/volt-runtime/dist/sheet.js +27 -10
  139. package/dist/packages/volt-runtime/dist/sheet.js.map +1 -1
  140. package/dist/packages/volt-runtime/dist/styles/recipe.js +76 -0
  141. package/dist/packages/volt-runtime/dist/styles/recipe.js.map +1 -0
  142. package/dist/styles/document-context.js +12 -0
  143. package/dist/styles/document-context.js.map +1 -0
  144. package/dist/styles/make-styles.js +18 -10
  145. package/dist/styles/make-styles.js.map +1 -1
  146. package/dist/tokens/core.generated.js +1239 -1153
  147. package/dist/tokens/core.generated.js.map +1 -1
  148. package/dist/tokens/index.d.ts +1103 -1054
  149. package/dist/tokens/index.js +1045 -996
  150. package/dist/tokens/index.js.map +1 -1
  151. package/dist/tokens/install.js +25 -9
  152. package/dist/tokens/install.js.map +1 -1
  153. package/dist/tokens/palette.generated.js +1323 -1293
  154. package/dist/tokens/palette.generated.js.map +1 -1
  155. package/dist/tokens/use-palette-tokens.js +20 -0
  156. package/dist/tokens/use-palette-tokens.js.map +1 -0
  157. package/dist/tokens.json +127 -2
  158. package/dist/vendor/react/cjs/react-jsx-dev-runtime.development.js +236 -0
  159. package/dist/vendor/react/cjs/react-jsx-dev-runtime.development.js.map +1 -0
  160. package/dist/vendor/react/cjs/react-jsx-dev-runtime.production.js +21 -0
  161. package/dist/vendor/react/cjs/react-jsx-dev-runtime.production.js.map +1 -0
  162. package/dist/vendor/react/jsx-dev-runtime.js +9 -0
  163. package/dist/vendor/react/jsx-dev-runtime.js.map +1 -0
  164. package/package.json +17 -4
  165. package/scripts/migration-diagnostics-core.mjs +859 -0
  166. package/scripts/migration-diagnostics.mjs +353 -0
  167. package/scripts/migration-sweep.mjs +179 -0
  168. package/testing/jest-preset.cjs +64 -0
  169. package/dist/packages/volt-runtime/dist/styles/make-styles.js +0 -22
  170. 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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"}