@fragments-sdk/ui 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/ui.css +304 -0
- package/dist/blocks/BlogEditor.block.d.ts +3 -0
- package/dist/blocks/BlogEditor.block.d.ts.map +1 -0
- package/dist/components/Editor/Editor.module.scss.cjs +57 -0
- package/dist/components/Editor/Editor.module.scss.cjs.map +1 -0
- package/dist/components/Editor/Editor.module.scss.js +57 -0
- package/dist/components/Editor/Editor.module.scss.js.map +1 -0
- package/dist/components/Editor/index.cjs +548 -0
- package/dist/components/Editor/index.cjs.map +1 -0
- package/dist/components/Editor/index.d.ts +107 -0
- package/dist/components/Editor/index.d.ts.map +1 -0
- package/dist/components/Editor/index.js +531 -0
- package/dist/components/Editor/index.js.map +1 -0
- package/dist/components/Sidebar/index.cjs +6 -11
- package/dist/components/Sidebar/index.cjs.map +1 -1
- package/dist/components/Sidebar/index.d.ts.map +1 -1
- package/dist/components/Sidebar/index.js +6 -11
- package/dist/components/Sidebar/index.js.map +1 -1
- package/dist/index.cjs +22 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/keyboard-shortcuts.cjs +295 -0
- package/dist/utils/keyboard-shortcuts.cjs.map +1 -0
- package/dist/utils/keyboard-shortcuts.d.ts +293 -0
- package/dist/utils/keyboard-shortcuts.d.ts.map +1 -0
- package/dist/utils/keyboard-shortcuts.js +295 -0
- package/dist/utils/keyboard-shortcuts.js.map +1 -0
- package/fragments.json +1 -1
- package/package.json +27 -2
- package/src/blocks/BlogEditor.block.ts +34 -0
- package/src/components/Editor/Editor.fragment.tsx +322 -0
- package/src/components/Editor/Editor.module.scss +333 -0
- package/src/components/Editor/Editor.test.tsx +174 -0
- package/src/components/Editor/index.tsx +815 -0
- package/src/components/Sidebar/index.tsx +7 -14
- package/src/index.ts +43 -0
- package/src/utils/keyboard-shortcuts.test.ts +357 -0
- package/src/utils/keyboard-shortcuts.ts +502 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Sidebar/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './Sidebar.module.scss';\nimport { Tooltip } from '../Tooltip';\nimport { Skeleton } from '../Skeleton';\nimport { Collapsible } from '../Collapsible';\nimport { ScrollArea } from '../ScrollArea';\nimport { useFocusTrap } from '../../utils/a11y';\n\n// ============================================\n// Types\n// ============================================\n\n/** Collapse behavior mode */\nexport type SidebarCollapsible = 'icon' | 'offcanvas' | 'none';\n\nexport interface SidebarProviderProps {\n children: React.ReactNode;\n /** Icon-only mode (desktop) - controlled */\n collapsed?: boolean;\n /** Initial collapsed state (uncontrolled) */\n defaultCollapsed?: boolean;\n /** Callback when collapsed state changes */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Mobile drawer state - controlled */\n open?: boolean;\n /** Initial open state (uncontrolled) */\n defaultOpen?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Width of expanded sidebar */\n width?: string;\n /** Width when collapsed */\n collapsedWidth?: string;\n /** Sidebar position */\n position?: 'left' | 'right';\n /** Collapse behavior: 'icon' (default), 'offcanvas', or 'none' */\n collapsible?: SidebarCollapsible;\n /** Enable Cmd/Ctrl+B keyboard shortcut to toggle sidebar */\n enableKeyboardShortcut?: boolean;\n}\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n /** Icon-only mode (desktop) - controlled */\n collapsed?: boolean;\n /** Initial collapsed state (uncontrolled) */\n defaultCollapsed?: boolean;\n /** Callback when collapsed state changes */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Mobile drawer state - controlled */\n open?: boolean;\n /** Initial open state (uncontrolled) */\n defaultOpen?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Width of expanded sidebar */\n width?: string;\n /** Width when collapsed */\n collapsedWidth?: string;\n /** Sidebar position */\n position?: 'left' | 'right';\n /** Collapse behavior: 'icon' (default), 'offcanvas', or 'none' */\n collapsible?: SidebarCollapsible;\n}\n\nexport interface SidebarHeaderProps {\n children: React.ReactNode;\n /** Content to show when sidebar is collapsed (e.g., just logo icon) */\n collapsedContent?: React.ReactNode;\n className?: string;\n}\n\nexport interface SidebarNavProps {\n children: React.ReactNode;\n /** Accessible label for navigation */\n 'aria-label'?: string;\n className?: string;\n}\n\nexport interface SidebarSectionProps {\n children: React.ReactNode;\n /** Optional section label */\n label?: string;\n /** Action element to display in the section header (e.g., \"Add\" button) */\n action?: React.ReactNode;\n /** Enable collapsible behavior */\n collapsible?: boolean;\n /** Default expanded state (only applies when collapsible is true) */\n defaultOpen?: boolean;\n className?: string;\n}\n\nexport interface SidebarSectionActionProps {\n children: React.ReactNode;\n /** Click handler */\n onClick?: () => void;\n /** Accessible label */\n 'aria-label'?: string;\n className?: string;\n}\n\nexport interface SidebarItemProps {\n children: React.ReactNode;\n /** Icon element (required for collapsed mode visibility) */\n icon?: React.ReactNode;\n /** Whether item is currently active/selected */\n active?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Badge content (e.g., notification count) */\n badge?: React.ReactNode;\n /** Renders as anchor if provided */\n href?: string;\n /** Click handler (renders as button) */\n onClick?: () => void;\n /** Whether this item has a submenu */\n hasSubmenu?: boolean;\n /** Whether submenu is expanded (controlled) */\n expanded?: boolean;\n /** Initial expanded state (uncontrolled) */\n defaultExpanded?: boolean;\n /** Callback when expanded state changes */\n onExpandedChange?: (expanded: boolean) => void;\n /**\n * Render as child element (polymorphic). When true, clones the single child\n * and merges sidebar item props. Useful for rendering as Next.js Link, etc.\n */\n asChild?: boolean;\n className?: string;\n}\n\nexport interface SidebarSubItemProps {\n children: React.ReactNode;\n /** Whether item is currently active/selected */\n active?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Renders as anchor if provided */\n href?: string;\n /** Click handler (renders as button) */\n onClick?: () => void;\n className?: string;\n}\n\nexport interface SidebarFooterProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport interface SidebarTriggerProps {\n /** Custom trigger element (uses render prop pattern) */\n children?: React.ReactNode;\n /** Accessible label */\n 'aria-label'?: string;\n className?: string;\n}\n\nexport interface SidebarOverlayProps {\n className?: string;\n}\n\nexport interface SidebarCollapseToggleProps {\n /** Accessible label */\n 'aria-label'?: string;\n className?: string;\n}\n\nexport interface SidebarRailProps {\n className?: string;\n}\n\nexport interface SidebarMenuSkeletonProps {\n /** Number of skeleton items to render */\n count?: number;\n /** Show icons in skeleton items */\n showIcon?: boolean;\n className?: string;\n}\n\n// ============================================\n// Icons\n// ============================================\n\nfunction MenuIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d=\"M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM40,72H216a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16ZM216,184H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Z\" />\n </svg>\n );\n}\n\nfunction CloseIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\" />\n </svg>\n );\n}\n\nfunction CollapsePanelIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d=\"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM40,56H80V200H40ZM216,200H96V56H216V200Z\" />\n </svg>\n );\n}\n\nfunction ChevronRightIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d=\"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z\" />\n </svg>\n );\n}\n\n// ============================================\n// Context\n// ============================================\n\ninterface SidebarContextValue {\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n open: boolean;\n setOpen: (open: boolean) => void;\n isMobile: boolean;\n position: 'left' | 'right';\n width: string;\n collapsedWidth: string;\n collapsible: SidebarCollapsible;\n hasIcons: boolean;\n toggleSidebar: () => void;\n sidebarId: string;\n}\n\nconst SidebarContext = React.createContext<SidebarContextValue | null>(null);\n\n/**\n * Hook to access sidebar state and controls.\n * Returns safe defaults if used outside a SidebarProvider/Sidebar.\n */\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n // Return safe defaults when used outside provider\n return {\n collapsed: false,\n setCollapsed: () => {},\n open: false,\n setOpen: () => {},\n isMobile: false,\n position: 'left' as const,\n width: '240px',\n collapsedWidth: '56px',\n collapsible: 'icon' as SidebarCollapsible,\n hasIcons: true,\n toggleSidebar: () => {},\n sidebarId: 'sidebar',\n state: 'expanded' as 'expanded' | 'collapsed' | 'open' | 'closed',\n };\n }\n return {\n ...context,\n state: context.isMobile\n ? (context.open ? 'open' : 'closed')\n : (context.collapsed ? 'collapsed' : 'expanded'),\n };\n}\n\n/**\n * @deprecated Use `useSidebar` instead. This will be removed in a future version.\n */\nfunction useSidebarContext() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('Sidebar compound components must be used within a Sidebar');\n }\n return context;\n}\n\n// ============================================\n// Hooks\n// ============================================\n\nfunction useIsMobile() {\n const [isMobile, setIsMobile] = React.useState(false);\n\n React.useEffect(() => {\n const mq = window.matchMedia('(max-width: 767px)');\n setIsMobile(mq.matches);\n const handler = (e: MediaQueryListEvent) => setIsMobile(e.matches);\n mq.addEventListener('change', handler);\n return () => mq.removeEventListener('change', handler);\n }, []);\n\n return isMobile;\n}\n\nfunction useControllableState<T>(\n controlledValue: T | undefined,\n defaultValue: T,\n onChange?: (value: T) => void\n): [T, (value: T) => void] {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const setValue = React.useCallback(\n (newValue: T) => {\n if (!isControlled) {\n setUncontrolledValue(newValue);\n }\n onChange?.(newValue);\n },\n [isControlled, onChange]\n );\n\n return [value, setValue];\n}\n\nfunction hasSidebarItemIcons(children: React.ReactNode): boolean {\n let found = false;\n\n const visit = (nodes: React.ReactNode) => {\n React.Children.forEach(nodes, child => {\n if (found || !React.isValidElement(child)) return;\n\n if (child.type === SidebarItem) {\n const props = child.props as SidebarItemProps;\n if (props.icon) {\n found = true;\n return;\n }\n }\n\n const childProps = child.props as { children?: React.ReactNode };\n if (childProps?.children) {\n visit(childProps.children);\n }\n });\n };\n\n visit(children);\n return found;\n}\n\n// ============================================\n// Components\n// ============================================\n\n/**\n * SidebarProvider - Wrap your app layout to provide sidebar state to children.\n * This enables external triggers and keyboard shortcuts.\n */\nfunction SidebarProvider({\n children,\n collapsed: controlledCollapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n width = '240px',\n collapsedWidth = '56px',\n position = 'left',\n collapsible = 'icon',\n enableKeyboardShortcut = true,\n}: SidebarProviderProps) {\n const isMobile = useIsMobile();\n const sidebarId = React.useId();\n\n const [collapsed, setCollapsed] = useControllableState(\n controlledCollapsed,\n defaultCollapsed,\n onCollapsedChange\n );\n\n const [open, setOpen] = useControllableState(\n controlledOpen,\n defaultOpen,\n onOpenChange\n );\n\n const toggleSidebar = React.useCallback(() => {\n if (collapsible === 'none') return;\n if (isMobile) {\n setOpen(!open);\n } else {\n setCollapsed(!collapsed);\n }\n }, [isMobile, open, collapsed, setOpen, setCollapsed, collapsible]);\n\n // Handle Cmd/Ctrl+B keyboard shortcut\n React.useEffect(() => {\n if (!enableKeyboardShortcut || collapsible === 'none') return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key === 'b') {\n e.preventDefault();\n toggleSidebar();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [enableKeyboardShortcut, toggleSidebar, collapsible]);\n\n // Handle escape key for mobile drawer\n React.useEffect(() => {\n if (!isMobile || !open) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n setOpen(false);\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [isMobile, open, setOpen]);\n\n // Lock body scroll when mobile drawer is open\n React.useEffect(() => {\n if (!isMobile) return;\n\n if (open) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n\n return () => {\n document.body.style.overflow = '';\n };\n }, [isMobile, open]);\n\n const contextValue: SidebarContextValue = {\n collapsed,\n setCollapsed,\n open,\n setOpen,\n isMobile,\n position,\n width,\n collapsedWidth,\n collapsible,\n hasIcons: true,\n toggleSidebar,\n sidebarId,\n };\n\n return (\n <SidebarContext.Provider value={contextValue}>\n {children}\n </SidebarContext.Provider>\n );\n}\n\nfunction SidebarRoot({\n children,\n collapsed: controlledCollapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n width = '240px',\n collapsedWidth = '56px',\n position = 'left',\n collapsible = 'icon',\n className,\n style: styleProp,\n 'aria-label': ariaLabel,\n ...htmlProps\n}: SidebarProps) {\n // Check if we're inside a SidebarProvider\n const existingContext = React.useContext(SidebarContext);\n const isMobile = useIsMobile();\n\n const [internalCollapsed, setInternalCollapsed] = useControllableState(\n controlledCollapsed,\n defaultCollapsed,\n onCollapsedChange\n );\n\n const [internalOpen, setInternalOpen] = useControllableState(\n controlledOpen,\n defaultOpen,\n onOpenChange\n );\n\n // Use existing context values if inside a provider, otherwise use internal state\n const collapsed = existingContext ? existingContext.collapsed : internalCollapsed;\n const setCollapsed = existingContext ? existingContext.setCollapsed : setInternalCollapsed;\n const open = existingContext ? existingContext.open : internalOpen;\n const setOpen = existingContext ? existingContext.setOpen : setInternalOpen;\n const resolvedPosition = existingContext ? existingContext.position : position;\n const resolvedWidth = existingContext ? existingContext.width : width;\n const resolvedCollapsedWidth = existingContext ? existingContext.collapsedWidth : collapsedWidth;\n const resolvedCollapsible = existingContext ? existingContext.collapsible : collapsible;\n const hasIcons = React.useMemo(() => hasSidebarItemIcons(children), [children]);\n const shouldCollapseToZero = !isMobile && resolvedCollapsible === 'icon' && collapsed && !hasIcons;\n const isOffcanvasCollapsed = !isMobile && resolvedCollapsible === 'offcanvas' && collapsed;\n const effectiveCollapsedWidth = (shouldCollapseToZero || isOffcanvasCollapsed) ? '0px' : resolvedCollapsedWidth;\n const sidebarId = React.useId();\n const resolvedSidebarId = existingContext ? existingContext.sidebarId : sidebarId;\n const sidebarRef = React.useRef<HTMLElement>(null);\n\n useFocusTrap(sidebarRef, isMobile && open);\n\n const toggleSidebar = React.useCallback(() => {\n if (resolvedCollapsible === 'none') return;\n if (isMobile) {\n setOpen(!open);\n } else {\n setCollapsed(!collapsed);\n }\n }, [isMobile, open, collapsed, setOpen, setCollapsed, resolvedCollapsible]);\n\n // Handle escape key for mobile drawer (only if no provider)\n React.useEffect(() => {\n if (existingContext) return; // Provider handles this\n if (!isMobile || !open) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n setOpen(false);\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [existingContext, isMobile, open, setOpen]);\n\n // Lock body scroll when mobile drawer is open (only if no provider)\n React.useEffect(() => {\n if (existingContext) return; // Provider handles this\n if (!isMobile) return;\n\n if (open) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n\n return () => {\n document.body.style.overflow = '';\n };\n }, [existingContext, isMobile, open]);\n\n const contextValue: SidebarContextValue = {\n ...(existingContext || {\n collapsed,\n setCollapsed,\n open,\n setOpen,\n isMobile,\n position: resolvedPosition,\n width: resolvedWidth,\n collapsedWidth: resolvedCollapsedWidth,\n collapsible: resolvedCollapsible,\n hasIcons,\n toggleSidebar,\n sidebarId: resolvedSidebarId,\n }),\n hasIcons,\n };\n\n const isCollapsedForStyle = resolvedCollapsible === 'icon' && collapsed;\n\n const classes = [\n styles.root,\n isMobile && styles.mobile,\n !isMobile && isCollapsedForStyle && styles.collapsed,\n !isMobile && isCollapsedForStyle && shouldCollapseToZero && styles.collapsedNoIcons,\n isOffcanvasCollapsed && styles.offcanvasCollapsed,\n resolvedPosition === 'right' && styles.positionRight,\n className,\n ].filter(Boolean).join(' ');\n\n const style: React.CSSProperties = {\n '--sidebar-width': resolvedWidth,\n '--sidebar-collapsed-width': resolvedCollapsedWidth,\n '--sidebar-effective-collapsed-width': effectiveCollapsedWidth,\n ...styleProp,\n } as React.CSSProperties;\n\n const content = (\n <aside\n ref={sidebarRef}\n id={resolvedSidebarId}\n {...htmlProps}\n className={classes}\n style={style}\n role={isMobile ? 'dialog' : undefined}\n aria-modal={isMobile && open ? true : undefined}\n aria-hidden={isMobile && !open ? true : undefined}\n aria-label={isMobile ? (ariaLabel || 'Sidebar navigation') : ariaLabel}\n data-state={isMobile ? (open ? 'open' : 'closed') : (collapsed ? 'collapsed' : 'expanded')}\n data-position={resolvedPosition}\n data-collapsible={resolvedCollapsible}\n data-icon-collapse={resolvedCollapsible === 'icon' ? (hasIcons ? 'icons' : 'none') : undefined}\n >\n {children}\n </aside>\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n {content}\n </SidebarContext.Provider>\n );\n}\n\nfunction SidebarHeader({ children, collapsedContent, className }: SidebarHeaderProps) {\n const { collapsed, isMobile } = useSidebarContext();\n const isCollapsed = collapsed && !isMobile;\n const classes = [styles.header, className].filter(Boolean).join(' ');\n\n // Show collapsed content when sidebar is collapsed (and we have it), otherwise show children\n const content = isCollapsed && collapsedContent ? collapsedContent : children;\n\n return <div className={classes}>{content}</div>;\n}\n\nfunction SidebarNav({ children, 'aria-label': ariaLabel = 'Main navigation', className }: SidebarNavProps) {\n const classes = [styles.nav, className].filter(Boolean).join(' ');\n return (\n <nav className={classes} aria-label={ariaLabel}>\n <ScrollArea orientation=\"vertical\" showFades className={styles.navScrollArea}>\n {children}\n </ScrollArea>\n </nav>\n );\n}\n\nfunction SidebarSection({\n children,\n label,\n action,\n collapsible: isCollapsibleProp = false,\n defaultOpen = true,\n className\n}: SidebarSectionProps) {\n const { collapsed, isMobile } = useSidebarContext();\n\n const classes = [\n styles.section,\n className\n ].filter(Boolean).join(' ');\n\n const showLabel = label && (!collapsed || isMobile);\n const showAction = action && (!collapsed || isMobile);\n const isCollapsible = isCollapsibleProp && showLabel;\n\n // Non-collapsible section\n if (!isCollapsible) {\n return (\n <div className={classes} role=\"group\" aria-label={label}>\n {(showLabel || showAction) && (\n <div className={styles.sectionHeader}>\n {showLabel && <div className={styles.sectionLabel}>{label}</div>}\n {showAction && <div className={styles.sectionActionWrapper}>{action}</div>}\n </div>\n )}\n <ul className={styles.sectionList}>\n {children}\n </ul>\n </div>\n );\n }\n\n // Collapsible section using Collapsible component\n return (\n <div className={classes} role=\"group\" aria-label={label}>\n <Collapsible defaultOpen={defaultOpen} className={styles.sectionCollapsible}>\n <div className={styles.sectionHeader}>\n <Collapsible.Trigger\n className={styles.sectionTrigger}\n chevronPosition=\"end\"\n >\n <span className={styles.sectionLabel}>{label}</span>\n </Collapsible.Trigger>\n {showAction && <div className={styles.sectionActionWrapper}>{action}</div>}\n </div>\n <Collapsible.Content className={styles.sectionContent}>\n <ul className={styles.sectionList}>\n {children}\n </ul>\n </Collapsible.Content>\n </Collapsible>\n </div>\n );\n}\n\nfunction SidebarSectionAction({\n children,\n onClick,\n 'aria-label': ariaLabel,\n className,\n}: SidebarSectionActionProps) {\n const classes = [styles.sectionAction, className].filter(Boolean).join(' ');\n\n return (\n <button\n type=\"button\"\n className={classes}\n onClick={onClick}\n aria-label={ariaLabel}\n >\n {children}\n </button>\n );\n}\n\nfunction SidebarItem({\n children,\n icon,\n active = false,\n disabled = false,\n badge,\n href,\n onClick,\n hasSubmenu = false,\n expanded: controlledExpanded,\n defaultExpanded = false,\n onExpandedChange,\n asChild = false,\n className,\n}: SidebarItemProps) {\n const { collapsed, isMobile } = useSidebarContext();\n const [expanded, setExpanded] = useControllableState(\n controlledExpanded,\n defaultExpanded,\n onExpandedChange\n );\n\n const isCollapsed = collapsed && !isMobile;\n const showLabel = !isCollapsed;\n\n const classes = [\n styles.item,\n active && styles.itemActive,\n disabled && styles.itemDisabled,\n hasSubmenu && styles.itemHasSubmenu,\n expanded && styles.itemExpanded,\n className,\n ].filter(Boolean).join(' ');\n\n const handleClick = (e: React.MouseEvent) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n if (hasSubmenu) {\n e.preventDefault();\n setExpanded(!expanded);\n }\n onClick?.();\n };\n\n // Extract text content from children for aria-label when collapsed\n // For asChild, try to extract from the child's children prop\n let labelText: string | undefined;\n if (asChild && React.isValidElement(children)) {\n const childProps = children.props as { children?: React.ReactNode };\n labelText = typeof childProps.children === 'string' ? childProps.children : undefined;\n } else {\n labelText = typeof children === 'string' ? children : undefined;\n }\n\n const itemContent = (\n <>\n {icon && <span className={styles.itemIcon}>{icon}</span>}\n {showLabel && <span className={styles.itemLabel}>{asChild && React.isValidElement(children) ? (children.props as { children?: React.ReactNode }).children : children}</span>}\n {showLabel && badge && <span className={styles.itemBadge}>{badge}</span>}\n {showLabel && hasSubmenu && (\n <span className={styles.itemChevron}>\n <ChevronRightIcon />\n </span>\n )}\n </>\n );\n\n const itemProps = {\n className: classes,\n onClick: handleClick,\n 'aria-current': active ? 'page' as const : undefined,\n 'aria-disabled': disabled || undefined,\n 'aria-expanded': hasSubmenu ? expanded : undefined,\n 'aria-label': isCollapsed ? labelText : undefined,\n tabIndex: disabled ? -1 : 0,\n };\n\n let itemElement: React.ReactElement;\n\n if (asChild && React.isValidElement(children)) {\n // Clone the child element and merge props\n itemElement = React.cloneElement(children, {\n ...itemProps,\n // Merge classNames\n className: [classes, (children.props as { className?: string }).className].filter(Boolean).join(' '),\n children: itemContent,\n } as React.HTMLAttributes<HTMLElement>);\n } else if (href) {\n itemElement = (\n <a {...itemProps} href={href}>\n {itemContent}\n </a>\n );\n } else {\n itemElement = (\n <button {...itemProps} type=\"button\">\n {itemContent}\n </button>\n );\n }\n\n // Wrap in tooltip when collapsed\n const wrappedItem = isCollapsed ? (\n <Tooltip content={labelText || children} side=\"right\" delay={100}>\n {itemElement}\n </Tooltip>\n ) : (\n itemElement\n );\n\n const wrapperClasses = [\n styles.itemWrapper,\n expanded && styles.itemExpanded,\n ].filter(Boolean).join(' ');\n\n return <li className={wrapperClasses}>{wrappedItem}</li>;\n}\n\nfunction SidebarSubItem({\n children,\n active = false,\n disabled = false,\n href,\n onClick,\n className,\n}: SidebarSubItemProps) {\n const { collapsed, isMobile } = useSidebarContext();\n\n // Don't render sub-items when collapsed (unless mobile)\n if (collapsed && !isMobile) {\n return null;\n }\n\n const classes = [\n styles.subItem,\n active && styles.subItemActive,\n disabled && styles.subItemDisabled,\n className,\n ].filter(Boolean).join(' ');\n\n const handleClick = (e: React.MouseEvent) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n onClick?.();\n };\n\n const itemProps = {\n className: classes,\n onClick: handleClick,\n 'aria-current': active ? 'page' as const : undefined,\n 'aria-disabled': disabled,\n tabIndex: disabled ? -1 : 0,\n };\n\n const itemElement = href ? (\n <a {...itemProps} href={href}>\n {children}\n </a>\n ) : (\n <button {...itemProps} type=\"button\">\n {children}\n </button>\n );\n\n return <li className={styles.subItemWrapper}>{itemElement}</li>;\n}\n\nfunction SidebarSubmenu({ children }: { children: React.ReactNode }) {\n return (\n <li className={styles.submenuWrapper}>\n <ul className={styles.submenu}>\n {children}\n </ul>\n </li>\n );\n}\n\nfunction SidebarFooter({ children, className }: SidebarFooterProps) {\n const classes = [styles.footer, className].filter(Boolean).join(' ');\n return <div className={classes}>{children}</div>;\n}\n\nfunction SidebarTrigger({ children, 'aria-label': ariaLabel = 'Toggle navigation', className }: SidebarTriggerProps) {\n const { open, setOpen, isMobile, sidebarId } = useSidebarContext();\n\n // Only render trigger on mobile\n if (!isMobile) {\n return null;\n }\n\n const classes = [styles.trigger, className].filter(Boolean).join(' ');\n\n return (\n <button\n type=\"button\"\n className={classes}\n onClick={() => setOpen(!open)}\n aria-label={ariaLabel}\n aria-expanded={open}\n aria-controls={sidebarId}\n >\n {children || (open ? <CloseIcon /> : <MenuIcon />)}\n </button>\n );\n}\n\nfunction SidebarOverlay({ className }: SidebarOverlayProps) {\n const { open, setOpen, isMobile } = useSidebarContext();\n\n // Only render overlay on mobile when open\n if (!isMobile || !open) {\n return null;\n }\n\n const classes = [styles.overlay, className].filter(Boolean).join(' ');\n\n return (\n <div\n className={classes}\n onClick={() => setOpen(false)}\n aria-hidden=\"true\"\n data-state={open ? 'open' : 'closed'}\n />\n );\n}\n\nfunction SidebarCollapseToggle({ 'aria-label': ariaLabel, className }: SidebarCollapseToggleProps) {\n const { collapsed, setCollapsed, isMobile, collapsible, hasIcons } = useSidebarContext();\n\n // Don't show on mobile or when collapsing is disabled\n if (isMobile || collapsible === 'none') {\n return null;\n }\n\n const shouldFloat = collapsed && (\n (collapsible === 'icon' && !hasIcons) ||\n collapsible === 'offcanvas'\n );\n const classes = [\n styles.collapseToggle,\n shouldFloat && styles.collapseToggleFloating,\n className,\n ].filter(Boolean).join(' ');\n const label = ariaLabel || (collapsed ? 'Expand sidebar' : 'Collapse sidebar');\n\n return (\n <button\n type=\"button\"\n className={classes}\n onClick={() => setCollapsed(!collapsed)}\n aria-label={label}\n >\n <CollapsePanelIcon />\n </button>\n );\n}\n\nfunction SidebarRail({ className }: SidebarRailProps) {\n const { collapsed, setCollapsed, isMobile, collapsible } = useSidebarContext();\n\n // Don't show on mobile or when collapsing is disabled\n if (isMobile || collapsible === 'none') {\n return null;\n }\n\n const classes = [\n styles.rail,\n collapsed && styles.railCollapsed,\n className,\n ].filter(Boolean).join(' ');\n\n return (\n <button\n type=\"button\"\n className={classes}\n onClick={() => setCollapsed(!collapsed)}\n aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n title={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n count = 5,\n showIcon = true,\n className,\n}: SidebarMenuSkeletonProps) {\n const { collapsed, isMobile } = useSidebarContext();\n const isCollapsed = collapsed && !isMobile;\n\n const classes = [styles.menuSkeleton, className].filter(Boolean).join(' ');\n const labelWidths = ['64%', '72%', '68%', '79%', '74%', '66%', '83%', '70%'];\n\n return (\n <div className={classes} aria-hidden=\"true\">\n {Array.from({ length: count }).map((_, i) => (\n <div key={i} className={styles.skeletonItem}>\n {showIcon && <Skeleton variant=\"avatar\" size=\"sm\" />}\n {!isCollapsed && (\n <Skeleton\n variant=\"text\"\n className={styles.skeletonLabel}\n width={labelWidths[i % labelWidths.length]}\n />\n )}\n </div>\n ))}\n </div>\n );\n}\n\n// ============================================\n// Export compound component\n// ============================================\n\nexport const Sidebar = Object.assign(SidebarRoot, {\n Header: SidebarHeader,\n Nav: SidebarNav,\n Section: SidebarSection,\n SectionAction: SidebarSectionAction,\n Item: SidebarItem,\n SubItem: SidebarSubItem,\n Submenu: SidebarSubmenu,\n Footer: SidebarFooter,\n Trigger: SidebarTrigger,\n Overlay: SidebarOverlay,\n CollapseToggle: SidebarCollapseToggle,\n Rail: SidebarRail,\n MenuSkeleton: SidebarMenuSkeleton,\n});\n\n// Re-export individual components\nexport {\n SidebarProvider,\n SidebarRoot,\n SidebarHeader,\n SidebarNav,\n SidebarSection,\n SidebarSectionAction,\n SidebarItem,\n SidebarSubItem,\n SidebarSubmenu,\n SidebarFooter,\n SidebarTrigger,\n SidebarOverlay,\n SidebarCollapseToggle,\n SidebarRail,\n SidebarMenuSkeleton,\n};\n\n// Export hooks\nexport { useSidebar };\n\n// Export context hook for backwards compatibility (deprecated)\nexport { useSidebarContext };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Sidebar/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './Sidebar.module.scss';\nimport { Tooltip } from '../Tooltip';\nimport { Skeleton } from '../Skeleton';\nimport { Collapsible } from '../Collapsible';\nimport { ScrollArea } from '../ScrollArea';\nimport { useFocusTrap } from '../../utils/a11y';\nimport { useKeyboardShortcut } from '../../utils/keyboard-shortcuts';\n\n// ============================================\n// Types\n// ============================================\n\n/** Collapse behavior mode */\nexport type SidebarCollapsible = 'icon' | 'offcanvas' | 'none';\n\nexport interface SidebarProviderProps {\n children: React.ReactNode;\n /** Icon-only mode (desktop) - controlled */\n collapsed?: boolean;\n /** Initial collapsed state (uncontrolled) */\n defaultCollapsed?: boolean;\n /** Callback when collapsed state changes */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Mobile drawer state - controlled */\n open?: boolean;\n /** Initial open state (uncontrolled) */\n defaultOpen?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Width of expanded sidebar */\n width?: string;\n /** Width when collapsed */\n collapsedWidth?: string;\n /** Sidebar position */\n position?: 'left' | 'right';\n /** Collapse behavior: 'icon' (default), 'offcanvas', or 'none' */\n collapsible?: SidebarCollapsible;\n /** Enable Cmd/Ctrl+B keyboard shortcut to toggle sidebar */\n enableKeyboardShortcut?: boolean;\n}\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n /** Icon-only mode (desktop) - controlled */\n collapsed?: boolean;\n /** Initial collapsed state (uncontrolled) */\n defaultCollapsed?: boolean;\n /** Callback when collapsed state changes */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Mobile drawer state - controlled */\n open?: boolean;\n /** Initial open state (uncontrolled) */\n defaultOpen?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Width of expanded sidebar */\n width?: string;\n /** Width when collapsed */\n collapsedWidth?: string;\n /** Sidebar position */\n position?: 'left' | 'right';\n /** Collapse behavior: 'icon' (default), 'offcanvas', or 'none' */\n collapsible?: SidebarCollapsible;\n}\n\nexport interface SidebarHeaderProps {\n children: React.ReactNode;\n /** Content to show when sidebar is collapsed (e.g., just logo icon) */\n collapsedContent?: React.ReactNode;\n className?: string;\n}\n\nexport interface SidebarNavProps {\n children: React.ReactNode;\n /** Accessible label for navigation */\n 'aria-label'?: string;\n className?: string;\n}\n\nexport interface SidebarSectionProps {\n children: React.ReactNode;\n /** Optional section label */\n label?: string;\n /** Action element to display in the section header (e.g., \"Add\" button) */\n action?: React.ReactNode;\n /** Enable collapsible behavior */\n collapsible?: boolean;\n /** Default expanded state (only applies when collapsible is true) */\n defaultOpen?: boolean;\n className?: string;\n}\n\nexport interface SidebarSectionActionProps {\n children: React.ReactNode;\n /** Click handler */\n onClick?: () => void;\n /** Accessible label */\n 'aria-label'?: string;\n className?: string;\n}\n\nexport interface SidebarItemProps {\n children: React.ReactNode;\n /** Icon element (required for collapsed mode visibility) */\n icon?: React.ReactNode;\n /** Whether item is currently active/selected */\n active?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Badge content (e.g., notification count) */\n badge?: React.ReactNode;\n /** Renders as anchor if provided */\n href?: string;\n /** Click handler (renders as button) */\n onClick?: () => void;\n /** Whether this item has a submenu */\n hasSubmenu?: boolean;\n /** Whether submenu is expanded (controlled) */\n expanded?: boolean;\n /** Initial expanded state (uncontrolled) */\n defaultExpanded?: boolean;\n /** Callback when expanded state changes */\n onExpandedChange?: (expanded: boolean) => void;\n /**\n * Render as child element (polymorphic). When true, clones the single child\n * and merges sidebar item props. Useful for rendering as Next.js Link, etc.\n */\n asChild?: boolean;\n className?: string;\n}\n\nexport interface SidebarSubItemProps {\n children: React.ReactNode;\n /** Whether item is currently active/selected */\n active?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Renders as anchor if provided */\n href?: string;\n /** Click handler (renders as button) */\n onClick?: () => void;\n className?: string;\n}\n\nexport interface SidebarFooterProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport interface SidebarTriggerProps {\n /** Custom trigger element (uses render prop pattern) */\n children?: React.ReactNode;\n /** Accessible label */\n 'aria-label'?: string;\n className?: string;\n}\n\nexport interface SidebarOverlayProps {\n className?: string;\n}\n\nexport interface SidebarCollapseToggleProps {\n /** Accessible label */\n 'aria-label'?: string;\n className?: string;\n}\n\nexport interface SidebarRailProps {\n className?: string;\n}\n\nexport interface SidebarMenuSkeletonProps {\n /** Number of skeleton items to render */\n count?: number;\n /** Show icons in skeleton items */\n showIcon?: boolean;\n className?: string;\n}\n\n// ============================================\n// Icons\n// ============================================\n\nfunction MenuIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d=\"M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM40,72H216a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16ZM216,184H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Z\" />\n </svg>\n );\n}\n\nfunction CloseIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\" />\n </svg>\n );\n}\n\nfunction CollapsePanelIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d=\"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM40,56H80V200H40ZM216,200H96V56H216V200Z\" />\n </svg>\n );\n}\n\nfunction ChevronRightIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d=\"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z\" />\n </svg>\n );\n}\n\n// ============================================\n// Context\n// ============================================\n\ninterface SidebarContextValue {\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n open: boolean;\n setOpen: (open: boolean) => void;\n isMobile: boolean;\n position: 'left' | 'right';\n width: string;\n collapsedWidth: string;\n collapsible: SidebarCollapsible;\n hasIcons: boolean;\n toggleSidebar: () => void;\n sidebarId: string;\n}\n\nconst SidebarContext = React.createContext<SidebarContextValue | null>(null);\n\n/**\n * Hook to access sidebar state and controls.\n * Returns safe defaults if used outside a SidebarProvider/Sidebar.\n */\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n // Return safe defaults when used outside provider\n return {\n collapsed: false,\n setCollapsed: () => {},\n open: false,\n setOpen: () => {},\n isMobile: false,\n position: 'left' as const,\n width: '240px',\n collapsedWidth: '56px',\n collapsible: 'icon' as SidebarCollapsible,\n hasIcons: true,\n toggleSidebar: () => {},\n sidebarId: 'sidebar',\n state: 'expanded' as 'expanded' | 'collapsed' | 'open' | 'closed',\n };\n }\n return {\n ...context,\n state: context.isMobile\n ? (context.open ? 'open' : 'closed')\n : (context.collapsed ? 'collapsed' : 'expanded'),\n };\n}\n\n/**\n * @deprecated Use `useSidebar` instead. This will be removed in a future version.\n */\nfunction useSidebarContext() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('Sidebar compound components must be used within a Sidebar');\n }\n return context;\n}\n\n// ============================================\n// Hooks\n// ============================================\n\nfunction useIsMobile() {\n const [isMobile, setIsMobile] = React.useState(false);\n\n React.useEffect(() => {\n const mq = window.matchMedia('(max-width: 767px)');\n setIsMobile(mq.matches);\n const handler = (e: MediaQueryListEvent) => setIsMobile(e.matches);\n mq.addEventListener('change', handler);\n return () => mq.removeEventListener('change', handler);\n }, []);\n\n return isMobile;\n}\n\nfunction useControllableState<T>(\n controlledValue: T | undefined,\n defaultValue: T,\n onChange?: (value: T) => void\n): [T, (value: T) => void] {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const setValue = React.useCallback(\n (newValue: T) => {\n if (!isControlled) {\n setUncontrolledValue(newValue);\n }\n onChange?.(newValue);\n },\n [isControlled, onChange]\n );\n\n return [value, setValue];\n}\n\nfunction hasSidebarItemIcons(children: React.ReactNode): boolean {\n let found = false;\n\n const visit = (nodes: React.ReactNode) => {\n React.Children.forEach(nodes, child => {\n if (found || !React.isValidElement(child)) return;\n\n if (child.type === SidebarItem) {\n const props = child.props as SidebarItemProps;\n if (props.icon) {\n found = true;\n return;\n }\n }\n\n const childProps = child.props as { children?: React.ReactNode };\n if (childProps?.children) {\n visit(childProps.children);\n }\n });\n };\n\n visit(children);\n return found;\n}\n\n// ============================================\n// Components\n// ============================================\n\n/**\n * SidebarProvider - Wrap your app layout to provide sidebar state to children.\n * This enables external triggers and keyboard shortcuts.\n */\nfunction SidebarProvider({\n children,\n collapsed: controlledCollapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n width = '240px',\n collapsedWidth = '56px',\n position = 'left',\n collapsible = 'icon',\n enableKeyboardShortcut = true,\n}: SidebarProviderProps) {\n const isMobile = useIsMobile();\n const sidebarId = React.useId();\n\n const [collapsed, setCollapsed] = useControllableState(\n controlledCollapsed,\n defaultCollapsed,\n onCollapsedChange\n );\n\n const [open, setOpen] = useControllableState(\n controlledOpen,\n defaultOpen,\n onOpenChange\n );\n\n const toggleSidebar = React.useCallback(() => {\n if (collapsible === 'none') return;\n if (isMobile) {\n setOpen(!open);\n } else {\n setCollapsed(!collapsed);\n }\n }, [isMobile, open, collapsed, setOpen, setCollapsed, collapsible]);\n\n // Handle Cmd/Ctrl+B keyboard shortcut (skips editable elements like Editor)\n useKeyboardShortcut({\n name: 'SIDEBAR_TOGGLE',\n handler: toggleSidebar,\n enabled: enableKeyboardShortcut && collapsible !== 'none',\n });\n\n // Handle escape key for mobile drawer\n React.useEffect(() => {\n if (!isMobile || !open) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n setOpen(false);\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [isMobile, open, setOpen]);\n\n // Lock body scroll when mobile drawer is open\n React.useEffect(() => {\n if (!isMobile) return;\n\n if (open) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n\n return () => {\n document.body.style.overflow = '';\n };\n }, [isMobile, open]);\n\n const contextValue: SidebarContextValue = {\n collapsed,\n setCollapsed,\n open,\n setOpen,\n isMobile,\n position,\n width,\n collapsedWidth,\n collapsible,\n hasIcons: true,\n toggleSidebar,\n sidebarId,\n };\n\n return (\n <SidebarContext.Provider value={contextValue}>\n {children}\n </SidebarContext.Provider>\n );\n}\n\nfunction SidebarRoot({\n children,\n collapsed: controlledCollapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n width = '240px',\n collapsedWidth = '56px',\n position = 'left',\n collapsible = 'icon',\n className,\n style: styleProp,\n 'aria-label': ariaLabel,\n ...htmlProps\n}: SidebarProps) {\n // Check if we're inside a SidebarProvider\n const existingContext = React.useContext(SidebarContext);\n const isMobile = useIsMobile();\n\n const [internalCollapsed, setInternalCollapsed] = useControllableState(\n controlledCollapsed,\n defaultCollapsed,\n onCollapsedChange\n );\n\n const [internalOpen, setInternalOpen] = useControllableState(\n controlledOpen,\n defaultOpen,\n onOpenChange\n );\n\n // Use existing context values if inside a provider, otherwise use internal state\n const collapsed = existingContext ? existingContext.collapsed : internalCollapsed;\n const setCollapsed = existingContext ? existingContext.setCollapsed : setInternalCollapsed;\n const open = existingContext ? existingContext.open : internalOpen;\n const setOpen = existingContext ? existingContext.setOpen : setInternalOpen;\n const resolvedPosition = existingContext ? existingContext.position : position;\n const resolvedWidth = existingContext ? existingContext.width : width;\n const resolvedCollapsedWidth = existingContext ? existingContext.collapsedWidth : collapsedWidth;\n const resolvedCollapsible = existingContext ? existingContext.collapsible : collapsible;\n const hasIcons = React.useMemo(() => hasSidebarItemIcons(children), [children]);\n const shouldCollapseToZero = !isMobile && resolvedCollapsible === 'icon' && collapsed && !hasIcons;\n const isOffcanvasCollapsed = !isMobile && resolvedCollapsible === 'offcanvas' && collapsed;\n const effectiveCollapsedWidth = (shouldCollapseToZero || isOffcanvasCollapsed) ? '0px' : resolvedCollapsedWidth;\n const sidebarId = React.useId();\n const resolvedSidebarId = existingContext ? existingContext.sidebarId : sidebarId;\n const sidebarRef = React.useRef<HTMLElement>(null);\n\n useFocusTrap(sidebarRef, isMobile && open);\n\n const toggleSidebar = React.useCallback(() => {\n if (resolvedCollapsible === 'none') return;\n if (isMobile) {\n setOpen(!open);\n } else {\n setCollapsed(!collapsed);\n }\n }, [isMobile, open, collapsed, setOpen, setCollapsed, resolvedCollapsible]);\n\n // Handle escape key for mobile drawer (only if no provider)\n React.useEffect(() => {\n if (existingContext) return; // Provider handles this\n if (!isMobile || !open) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n setOpen(false);\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [existingContext, isMobile, open, setOpen]);\n\n // Lock body scroll when mobile drawer is open (only if no provider)\n React.useEffect(() => {\n if (existingContext) return; // Provider handles this\n if (!isMobile) return;\n\n if (open) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n\n return () => {\n document.body.style.overflow = '';\n };\n }, [existingContext, isMobile, open]);\n\n const contextValue: SidebarContextValue = {\n ...(existingContext || {\n collapsed,\n setCollapsed,\n open,\n setOpen,\n isMobile,\n position: resolvedPosition,\n width: resolvedWidth,\n collapsedWidth: resolvedCollapsedWidth,\n collapsible: resolvedCollapsible,\n hasIcons,\n toggleSidebar,\n sidebarId: resolvedSidebarId,\n }),\n hasIcons,\n };\n\n const isCollapsedForStyle = resolvedCollapsible === 'icon' && collapsed;\n\n const classes = [\n styles.root,\n isMobile && styles.mobile,\n !isMobile && isCollapsedForStyle && styles.collapsed,\n !isMobile && isCollapsedForStyle && shouldCollapseToZero && styles.collapsedNoIcons,\n isOffcanvasCollapsed && styles.offcanvasCollapsed,\n resolvedPosition === 'right' && styles.positionRight,\n className,\n ].filter(Boolean).join(' ');\n\n const style: React.CSSProperties = {\n '--sidebar-width': resolvedWidth,\n '--sidebar-collapsed-width': resolvedCollapsedWidth,\n '--sidebar-effective-collapsed-width': effectiveCollapsedWidth,\n ...styleProp,\n } as React.CSSProperties;\n\n const content = (\n <aside\n ref={sidebarRef}\n id={resolvedSidebarId}\n {...htmlProps}\n className={classes}\n style={style}\n role={isMobile ? 'dialog' : undefined}\n aria-modal={isMobile && open ? true : undefined}\n aria-hidden={isMobile && !open ? true : undefined}\n aria-label={isMobile ? (ariaLabel || 'Sidebar navigation') : ariaLabel}\n data-state={isMobile ? (open ? 'open' : 'closed') : (collapsed ? 'collapsed' : 'expanded')}\n data-position={resolvedPosition}\n data-collapsible={resolvedCollapsible}\n data-icon-collapse={resolvedCollapsible === 'icon' ? (hasIcons ? 'icons' : 'none') : undefined}\n >\n {children}\n </aside>\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n {content}\n </SidebarContext.Provider>\n );\n}\n\nfunction SidebarHeader({ children, collapsedContent, className }: SidebarHeaderProps) {\n const { collapsed, isMobile } = useSidebarContext();\n const isCollapsed = collapsed && !isMobile;\n const classes = [styles.header, className].filter(Boolean).join(' ');\n\n // Show collapsed content when sidebar is collapsed (and we have it), otherwise show children\n const content = isCollapsed && collapsedContent ? collapsedContent : children;\n\n return <div className={classes}>{content}</div>;\n}\n\nfunction SidebarNav({ children, 'aria-label': ariaLabel = 'Main navigation', className }: SidebarNavProps) {\n const classes = [styles.nav, className].filter(Boolean).join(' ');\n return (\n <nav className={classes} aria-label={ariaLabel}>\n <ScrollArea orientation=\"vertical\" showFades className={styles.navScrollArea}>\n {children}\n </ScrollArea>\n </nav>\n );\n}\n\nfunction SidebarSection({\n children,\n label,\n action,\n collapsible: isCollapsibleProp = false,\n defaultOpen = true,\n className\n}: SidebarSectionProps) {\n const { collapsed, isMobile } = useSidebarContext();\n\n const classes = [\n styles.section,\n className\n ].filter(Boolean).join(' ');\n\n const showLabel = label && (!collapsed || isMobile);\n const showAction = action && (!collapsed || isMobile);\n const isCollapsible = isCollapsibleProp && showLabel;\n\n // Non-collapsible section\n if (!isCollapsible) {\n return (\n <div className={classes} role=\"group\" aria-label={label}>\n {(showLabel || showAction) && (\n <div className={styles.sectionHeader}>\n {showLabel && <div className={styles.sectionLabel}>{label}</div>}\n {showAction && <div className={styles.sectionActionWrapper}>{action}</div>}\n </div>\n )}\n <ul className={styles.sectionList}>\n {children}\n </ul>\n </div>\n );\n }\n\n // Collapsible section using Collapsible component\n return (\n <div className={classes} role=\"group\" aria-label={label}>\n <Collapsible defaultOpen={defaultOpen} className={styles.sectionCollapsible}>\n <div className={styles.sectionHeader}>\n <Collapsible.Trigger\n className={styles.sectionTrigger}\n chevronPosition=\"end\"\n >\n <span className={styles.sectionLabel}>{label}</span>\n </Collapsible.Trigger>\n {showAction && <div className={styles.sectionActionWrapper}>{action}</div>}\n </div>\n <Collapsible.Content className={styles.sectionContent}>\n <ul className={styles.sectionList}>\n {children}\n </ul>\n </Collapsible.Content>\n </Collapsible>\n </div>\n );\n}\n\nfunction SidebarSectionAction({\n children,\n onClick,\n 'aria-label': ariaLabel,\n className,\n}: SidebarSectionActionProps) {\n const classes = [styles.sectionAction, className].filter(Boolean).join(' ');\n\n return (\n <button\n type=\"button\"\n className={classes}\n onClick={onClick}\n aria-label={ariaLabel}\n >\n {children}\n </button>\n );\n}\n\nfunction SidebarItem({\n children,\n icon,\n active = false,\n disabled = false,\n badge,\n href,\n onClick,\n hasSubmenu = false,\n expanded: controlledExpanded,\n defaultExpanded = false,\n onExpandedChange,\n asChild = false,\n className,\n}: SidebarItemProps) {\n const { collapsed, isMobile } = useSidebarContext();\n const [expanded, setExpanded] = useControllableState(\n controlledExpanded,\n defaultExpanded,\n onExpandedChange\n );\n\n const isCollapsed = collapsed && !isMobile;\n const showLabel = !isCollapsed;\n\n const classes = [\n styles.item,\n active && styles.itemActive,\n disabled && styles.itemDisabled,\n hasSubmenu && styles.itemHasSubmenu,\n expanded && styles.itemExpanded,\n className,\n ].filter(Boolean).join(' ');\n\n const handleClick = (e: React.MouseEvent) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n if (hasSubmenu) {\n e.preventDefault();\n setExpanded(!expanded);\n }\n onClick?.();\n };\n\n // Extract text content from children for aria-label when collapsed\n // For asChild, try to extract from the child's children prop\n let labelText: string | undefined;\n if (asChild && React.isValidElement(children)) {\n const childProps = children.props as { children?: React.ReactNode };\n labelText = typeof childProps.children === 'string' ? childProps.children : undefined;\n } else {\n labelText = typeof children === 'string' ? children : undefined;\n }\n\n const itemContent = (\n <>\n {icon && <span className={styles.itemIcon}>{icon}</span>}\n {showLabel && <span className={styles.itemLabel}>{asChild && React.isValidElement(children) ? (children.props as { children?: React.ReactNode }).children : children}</span>}\n {showLabel && badge && <span className={styles.itemBadge}>{badge}</span>}\n {showLabel && hasSubmenu && (\n <span className={styles.itemChevron}>\n <ChevronRightIcon />\n </span>\n )}\n </>\n );\n\n const itemProps = {\n className: classes,\n onClick: handleClick,\n 'aria-current': active ? 'page' as const : undefined,\n 'aria-disabled': disabled || undefined,\n 'aria-expanded': hasSubmenu ? expanded : undefined,\n 'aria-label': isCollapsed ? labelText : undefined,\n tabIndex: disabled ? -1 : 0,\n };\n\n let itemElement: React.ReactElement;\n\n if (asChild && React.isValidElement(children)) {\n // Clone the child element and merge props\n itemElement = React.cloneElement(children, {\n ...itemProps,\n // Merge classNames\n className: [classes, (children.props as { className?: string }).className].filter(Boolean).join(' '),\n children: itemContent,\n } as React.HTMLAttributes<HTMLElement>);\n } else if (href) {\n itemElement = (\n <a {...itemProps} href={href}>\n {itemContent}\n </a>\n );\n } else {\n itemElement = (\n <button {...itemProps} type=\"button\">\n {itemContent}\n </button>\n );\n }\n\n // Wrap in tooltip when collapsed\n const wrappedItem = isCollapsed ? (\n <Tooltip content={labelText || children} side=\"right\" delay={100}>\n {itemElement}\n </Tooltip>\n ) : (\n itemElement\n );\n\n const wrapperClasses = [\n styles.itemWrapper,\n expanded && styles.itemExpanded,\n ].filter(Boolean).join(' ');\n\n return <li className={wrapperClasses}>{wrappedItem}</li>;\n}\n\nfunction SidebarSubItem({\n children,\n active = false,\n disabled = false,\n href,\n onClick,\n className,\n}: SidebarSubItemProps) {\n const { collapsed, isMobile } = useSidebarContext();\n\n // Don't render sub-items when collapsed (unless mobile)\n if (collapsed && !isMobile) {\n return null;\n }\n\n const classes = [\n styles.subItem,\n active && styles.subItemActive,\n disabled && styles.subItemDisabled,\n className,\n ].filter(Boolean).join(' ');\n\n const handleClick = (e: React.MouseEvent) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n onClick?.();\n };\n\n const itemProps = {\n className: classes,\n onClick: handleClick,\n 'aria-current': active ? 'page' as const : undefined,\n 'aria-disabled': disabled,\n tabIndex: disabled ? -1 : 0,\n };\n\n const itemElement = href ? (\n <a {...itemProps} href={href}>\n {children}\n </a>\n ) : (\n <button {...itemProps} type=\"button\">\n {children}\n </button>\n );\n\n return <li className={styles.subItemWrapper}>{itemElement}</li>;\n}\n\nfunction SidebarSubmenu({ children }: { children: React.ReactNode }) {\n return (\n <li className={styles.submenuWrapper}>\n <ul className={styles.submenu}>\n {children}\n </ul>\n </li>\n );\n}\n\nfunction SidebarFooter({ children, className }: SidebarFooterProps) {\n const classes = [styles.footer, className].filter(Boolean).join(' ');\n return <div className={classes}>{children}</div>;\n}\n\nfunction SidebarTrigger({ children, 'aria-label': ariaLabel = 'Toggle navigation', className }: SidebarTriggerProps) {\n const { open, setOpen, isMobile, sidebarId } = useSidebarContext();\n\n // Only render trigger on mobile\n if (!isMobile) {\n return null;\n }\n\n const classes = [styles.trigger, className].filter(Boolean).join(' ');\n\n return (\n <button\n type=\"button\"\n className={classes}\n onClick={() => setOpen(!open)}\n aria-label={ariaLabel}\n aria-expanded={open}\n aria-controls={sidebarId}\n >\n {children || (open ? <CloseIcon /> : <MenuIcon />)}\n </button>\n );\n}\n\nfunction SidebarOverlay({ className }: SidebarOverlayProps) {\n const { open, setOpen, isMobile } = useSidebarContext();\n\n // Only render overlay on mobile when open\n if (!isMobile || !open) {\n return null;\n }\n\n const classes = [styles.overlay, className].filter(Boolean).join(' ');\n\n return (\n <div\n className={classes}\n onClick={() => setOpen(false)}\n aria-hidden=\"true\"\n data-state={open ? 'open' : 'closed'}\n />\n );\n}\n\nfunction SidebarCollapseToggle({ 'aria-label': ariaLabel, className }: SidebarCollapseToggleProps) {\n const { collapsed, setCollapsed, isMobile, collapsible, hasIcons } = useSidebarContext();\n\n // Don't show on mobile or when collapsing is disabled\n if (isMobile || collapsible === 'none') {\n return null;\n }\n\n const shouldFloat = collapsed && (\n (collapsible === 'icon' && !hasIcons) ||\n collapsible === 'offcanvas'\n );\n const classes = [\n styles.collapseToggle,\n shouldFloat && styles.collapseToggleFloating,\n className,\n ].filter(Boolean).join(' ');\n const label = ariaLabel || (collapsed ? 'Expand sidebar' : 'Collapse sidebar');\n\n return (\n <button\n type=\"button\"\n className={classes}\n onClick={() => setCollapsed(!collapsed)}\n aria-label={label}\n >\n <CollapsePanelIcon />\n </button>\n );\n}\n\nfunction SidebarRail({ className }: SidebarRailProps) {\n const { collapsed, setCollapsed, isMobile, collapsible } = useSidebarContext();\n\n // Don't show on mobile or when collapsing is disabled\n if (isMobile || collapsible === 'none') {\n return null;\n }\n\n const classes = [\n styles.rail,\n collapsed && styles.railCollapsed,\n className,\n ].filter(Boolean).join(' ');\n\n return (\n <button\n type=\"button\"\n className={classes}\n onClick={() => setCollapsed(!collapsed)}\n aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n title={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n count = 5,\n showIcon = true,\n className,\n}: SidebarMenuSkeletonProps) {\n const { collapsed, isMobile } = useSidebarContext();\n const isCollapsed = collapsed && !isMobile;\n\n const classes = [styles.menuSkeleton, className].filter(Boolean).join(' ');\n const labelWidths = ['64%', '72%', '68%', '79%', '74%', '66%', '83%', '70%'];\n\n return (\n <div className={classes} aria-hidden=\"true\">\n {Array.from({ length: count }).map((_, i) => (\n <div key={i} className={styles.skeletonItem}>\n {showIcon && <Skeleton variant=\"avatar\" size=\"sm\" />}\n {!isCollapsed && (\n <Skeleton\n variant=\"text\"\n className={styles.skeletonLabel}\n width={labelWidths[i % labelWidths.length]}\n />\n )}\n </div>\n ))}\n </div>\n );\n}\n\n// ============================================\n// Export compound component\n// ============================================\n\nexport const Sidebar = Object.assign(SidebarRoot, {\n Header: SidebarHeader,\n Nav: SidebarNav,\n Section: SidebarSection,\n SectionAction: SidebarSectionAction,\n Item: SidebarItem,\n SubItem: SidebarSubItem,\n Submenu: SidebarSubmenu,\n Footer: SidebarFooter,\n Trigger: SidebarTrigger,\n Overlay: SidebarOverlay,\n CollapseToggle: SidebarCollapseToggle,\n Rail: SidebarRail,\n MenuSkeleton: SidebarMenuSkeleton,\n});\n\n// Re-export individual components\nexport {\n SidebarProvider,\n SidebarRoot,\n SidebarHeader,\n SidebarNav,\n SidebarSection,\n SidebarSectionAction,\n SidebarItem,\n SidebarSubItem,\n SidebarSubmenu,\n SidebarFooter,\n SidebarTrigger,\n SidebarOverlay,\n SidebarCollapseToggle,\n SidebarRail,\n SidebarMenuSkeleton,\n};\n\n// Export hooks\nexport { useSidebar };\n\n// Export context hook for backwards compatibility (deprecated)\nexport { useSidebarContext };\n"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -67,7 +67,9 @@ const index$T = require("./components/NavigationMenu/index.cjs");
|
|
|
67
67
|
const index$U = require("./components/Drawer/index.cjs");
|
|
68
68
|
const index$V = require("./components/Pagination/index.cjs");
|
|
69
69
|
const index$W = require("./components/Command/index.cjs");
|
|
70
|
+
const index$X = require("./components/Editor/index.cjs");
|
|
70
71
|
const a11y = require("./utils/a11y.cjs");
|
|
72
|
+
const keyboardShortcuts = require("./utils/keyboard-shortcuts.cjs");
|
|
71
73
|
const index$4 = require("./components/Toggle/index.cjs");
|
|
72
74
|
exports.Button = index.Button;
|
|
73
75
|
exports.Input = index$1.Input;
|
|
@@ -223,6 +225,16 @@ exports.NavigationMenuViewport = index$T.NavigationMenuViewport;
|
|
|
223
225
|
exports.Drawer = index$U.Drawer;
|
|
224
226
|
exports.Pagination = index$V.Pagination;
|
|
225
227
|
exports.Command = index$W.Command;
|
|
228
|
+
exports.Editor = index$X.Editor;
|
|
229
|
+
exports.EditorContentArea = index$X.EditorContentArea;
|
|
230
|
+
exports.EditorRoot = index$X.EditorRoot;
|
|
231
|
+
exports.EditorSeparator = index$X.EditorSeparator;
|
|
232
|
+
exports.EditorStatusBar = index$X.EditorStatusBar;
|
|
233
|
+
exports.EditorStatusIndicator = index$X.EditorStatusIndicator;
|
|
234
|
+
exports.EditorToolbar = index$X.EditorToolbar;
|
|
235
|
+
exports.EditorToolbarButton = index$X.EditorToolbarButton;
|
|
236
|
+
exports.EditorToolbarGroup = index$X.EditorToolbarGroup;
|
|
237
|
+
exports.useEditorContext = index$X.useEditorContext;
|
|
226
238
|
exports.A11yVisuallyHidden = a11y.VisuallyHidden;
|
|
227
239
|
exports.handleArrowNavigation = a11y.handleArrowNavigation;
|
|
228
240
|
exports.useAnnounce = a11y.useAnnounce;
|
|
@@ -230,6 +242,16 @@ exports.useFocusTrap = a11y.useFocusTrap;
|
|
|
230
242
|
exports.useId = a11y.useId;
|
|
231
243
|
exports.usePrefersContrast = a11y.usePrefersContrast;
|
|
232
244
|
exports.usePrefersReducedMotion = a11y.usePrefersReducedMotion;
|
|
245
|
+
exports.KEYBOARD_SHORTCUTS = keyboardShortcuts.KEYBOARD_SHORTCUTS;
|
|
246
|
+
exports.configureShortcuts = keyboardShortcuts.configureShortcuts;
|
|
247
|
+
exports.findConflicts = keyboardShortcuts.findConflicts;
|
|
248
|
+
exports.getResolvedShortcut = keyboardShortcuts.getResolvedShortcut;
|
|
249
|
+
exports.getShortcutLabel = keyboardShortcuts.getShortcutLabel;
|
|
250
|
+
exports.getShortcuts = keyboardShortcuts.getShortcuts;
|
|
251
|
+
exports.isEditableElement = keyboardShortcuts.isEditableElement;
|
|
252
|
+
exports.matchesShortcut = keyboardShortcuts.matchesShortcut;
|
|
253
|
+
exports.resetShortcutOverrides = keyboardShortcuts.resetShortcutOverrides;
|
|
254
|
+
exports.useKeyboardShortcut = keyboardShortcuts.useKeyboardShortcut;
|
|
233
255
|
exports.Switch = index$4.Switch;
|
|
234
256
|
exports.Toggle = index$4.Switch;
|
|
235
257
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -67,5 +67,7 @@ export { NavigationMenu, NavigationMenuRoot, NavigationMenuList, NavigationMenuI
|
|
|
67
67
|
export { Drawer, type DrawerProps, type DrawerContentProps, type DrawerTriggerProps, type DrawerHeaderProps, type DrawerTitleProps, type DrawerDescriptionProps, type DrawerBodyProps, type DrawerFooterProps, type DrawerCloseProps, } from './components/Drawer';
|
|
68
68
|
export { Pagination, type PaginationProps, type PaginationItemProps, } from './components/Pagination';
|
|
69
69
|
export { Command, type CommandProps, type CommandInputProps, type CommandListProps, type CommandItemProps, type CommandGroupProps, type CommandEmptyProps, type CommandSeparatorProps, } from './components/Command';
|
|
70
|
+
export { Editor, EditorRoot, EditorToolbar, EditorToolbarGroup, EditorToolbarButton, EditorSeparator, EditorStatusIndicator, EditorContentArea, EditorStatusBar, useEditorContext, type EditorProps, type EditorFormat, type EditorSaveStatus, type EditorMode, type EditorSize, type EditorToolbarProps, type EditorToolbarGroupProps, type EditorToolbarButtonProps, type EditorSeparatorProps, type EditorStatusIndicatorProps, type EditorContentProps, type EditorStatusBarProps, } from './components/Editor';
|
|
70
71
|
export { useId, useAnnounce, usePrefersReducedMotion, usePrefersContrast, useFocusTrap, handleArrowNavigation, VisuallyHidden as A11yVisuallyHidden, type VisuallyHiddenProps as A11yVisuallyHiddenProps, } from './utils/a11y';
|
|
72
|
+
export { KEYBOARD_SHORTCUTS, matchesShortcut, getShortcutLabel, findConflicts, getShortcuts, isEditableElement, configureShortcuts, getResolvedShortcut, resetShortcutOverrides, useKeyboardShortcut, type KeyboardShortcut, type ShortcutName, type UseKeyboardShortcutOptions, } from './utils/keyboard-shortcuts';
|
|
71
73
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -65,7 +65,9 @@ import { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, Navigat
|
|
|
65
65
|
import { Drawer } from "./components/Drawer/index.js";
|
|
66
66
|
import { Pagination } from "./components/Pagination/index.js";
|
|
67
67
|
import { Command } from "./components/Command/index.js";
|
|
68
|
+
import { Editor, EditorContentArea, EditorRoot, EditorSeparator, EditorStatusBar, EditorStatusIndicator, EditorToolbar, EditorToolbarButton, EditorToolbarGroup, useEditorContext } from "./components/Editor/index.js";
|
|
68
69
|
import { VisuallyHidden as VisuallyHidden2, handleArrowNavigation, useAnnounce, useFocusTrap, useId, usePrefersContrast, usePrefersReducedMotion } from "./utils/a11y.js";
|
|
70
|
+
import { KEYBOARD_SHORTCUTS, configureShortcuts, findConflicts, getResolvedShortcut, getShortcutLabel, getShortcuts, isEditableElement, matchesShortcut, resetShortcutOverrides, useKeyboardShortcut } from "./utils/keyboard-shortcuts.js";
|
|
69
71
|
import { Switch, Switch as Switch2 } from "./components/Toggle/index.js";
|
|
70
72
|
export {
|
|
71
73
|
VisuallyHidden2 as A11yVisuallyHidden,
|
|
@@ -126,6 +128,15 @@ export {
|
|
|
126
128
|
DateSeparator,
|
|
127
129
|
Dialog,
|
|
128
130
|
Drawer,
|
|
131
|
+
Editor,
|
|
132
|
+
EditorContentArea,
|
|
133
|
+
EditorRoot,
|
|
134
|
+
EditorSeparator,
|
|
135
|
+
EditorStatusBar,
|
|
136
|
+
EditorStatusIndicator,
|
|
137
|
+
EditorToolbar,
|
|
138
|
+
EditorToolbarButton,
|
|
139
|
+
EditorToolbarGroup,
|
|
129
140
|
EmptyState,
|
|
130
141
|
EmptyStateActions,
|
|
131
142
|
EmptyStateDescription,
|
|
@@ -141,6 +152,7 @@ export {
|
|
|
141
152
|
Icon,
|
|
142
153
|
Image,
|
|
143
154
|
Input,
|
|
155
|
+
KEYBOARD_SHORTCUTS,
|
|
144
156
|
Link,
|
|
145
157
|
List,
|
|
146
158
|
ListItem,
|
|
@@ -212,16 +224,26 @@ export {
|
|
|
212
224
|
TooltipProvider,
|
|
213
225
|
TypingIndicator,
|
|
214
226
|
VisuallyHidden,
|
|
227
|
+
configureShortcuts,
|
|
215
228
|
configureTheme,
|
|
216
229
|
createColumns,
|
|
230
|
+
findConflicts,
|
|
217
231
|
fragmentsLogoSvg,
|
|
232
|
+
getResolvedShortcut,
|
|
233
|
+
getShortcutLabel,
|
|
234
|
+
getShortcuts,
|
|
218
235
|
handleArrowNavigation,
|
|
236
|
+
isEditableElement,
|
|
237
|
+
matchesShortcut,
|
|
238
|
+
resetShortcutOverrides,
|
|
219
239
|
useAnnounce,
|
|
220
240
|
useChartConfig,
|
|
221
241
|
useCollapsibleContext,
|
|
222
242
|
useConversationList,
|
|
243
|
+
useEditorContext,
|
|
223
244
|
useFocusTrap,
|
|
224
245
|
useId,
|
|
246
|
+
useKeyboardShortcut,
|
|
225
247
|
useMessageContext,
|
|
226
248
|
usePrefersContrast,
|
|
227
249
|
usePrefersReducedMotion,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|