asterui 0.12.44 → 0.12.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"Tour.js","sources":["../../src/components/Tour.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback, useRef } from 'react'\nimport { createPortal } from 'react-dom'\n\nexport type TourPlacement =\n | 'top'\n | 'topLeft'\n | 'topRight'\n | 'bottom'\n | 'bottomLeft'\n | 'bottomRight'\n | 'left'\n | 'leftTop'\n | 'leftBottom'\n | 'right'\n | 'rightTop'\n | 'rightBottom'\n | 'center'\n\nexport interface TourStepProps {\n /** Target element ref or function returning element */\n target?: React.RefObject<HTMLElement | null> | (() => HTMLElement | null) | null\n /** Step title */\n title: React.ReactNode\n /** Step description */\n description?: React.ReactNode\n /** Cover image or content above title */\n cover?: React.ReactNode\n /** Placement of popover relative to target */\n placement?: TourPlacement\n /** Custom class for this step's popover */\n className?: string\n /** Called when this step becomes active */\n onOpen?: () => void\n /** Called when leaving this step */\n onClose?: () => void\n}\n\nexport interface TourProps {\n /** Whether tour is visible */\n open?: boolean\n /** Callback when tour closes */\n onClose?: () => void\n /** Callback when tour finishes (last step completed) */\n onFinish?: () => void\n /** Tour steps */\n steps: TourStepProps[]\n /** Current step (controlled) */\n current?: number\n /** Callback when step changes */\n onChange?: (current: number) => void\n /** Show mask overlay */\n mask?: boolean\n /** Type affects styling */\n type?: 'default' | 'primary'\n /** Gap between highlight and target [radius, offset] or single number */\n gap?: number | [number, number]\n /** Text for prev button */\n prevButtonText?: React.ReactNode\n /** Text for next button */\n nextButtonText?: React.ReactNode\n /** Text for finish button */\n finishButtonText?: React.ReactNode\n /** Text for skip button */\n skipButtonText?: React.ReactNode\n /** Show skip button */\n showSkip?: boolean\n /** Show step indicators */\n showIndicators?: boolean\n /** Close on mask click */\n closeOnMaskClick?: boolean\n /** Close on escape key */\n closeOnEscape?: boolean\n /** Scroll target into view */\n scrollIntoView?: boolean\n /** Z-index for tour overlay */\n zIndex?: number\n}\n\nconst getTargetElement = (\n target: TourStepProps['target']\n): HTMLElement | null => {\n if (!target) return null\n if (typeof target === 'function') return target()\n return target.current\n}\n\nconst getPopoverPosition = (\n targetRect: DOMRect | null,\n placement: TourPlacement,\n popoverRect: DOMRect,\n gap: number\n): { top: number; left: number } => {\n if (!targetRect || placement === 'center') {\n return {\n top: window.innerHeight / 2 - popoverRect.height / 2,\n left: window.innerWidth / 2 - popoverRect.width / 2,\n }\n }\n\n const scrollY = window.scrollY\n const scrollX = window.scrollX\n\n const positions: Record<TourPlacement, { top: number; left: number }> = {\n top: {\n top: targetRect.top + scrollY - popoverRect.height - gap,\n left: targetRect.left + scrollX + targetRect.width / 2 - popoverRect.width / 2,\n },\n topLeft: {\n top: targetRect.top + scrollY - popoverRect.height - gap,\n left: targetRect.left + scrollX,\n },\n topRight: {\n top: targetRect.top + scrollY - popoverRect.height - gap,\n left: targetRect.right + scrollX - popoverRect.width,\n },\n bottom: {\n top: targetRect.bottom + scrollY + gap,\n left: targetRect.left + scrollX + targetRect.width / 2 - popoverRect.width / 2,\n },\n bottomLeft: {\n top: targetRect.bottom + scrollY + gap,\n left: targetRect.left + scrollX,\n },\n bottomRight: {\n top: targetRect.bottom + scrollY + gap,\n left: targetRect.right + scrollX - popoverRect.width,\n },\n left: {\n top: targetRect.top + scrollY + targetRect.height / 2 - popoverRect.height / 2,\n left: targetRect.left + scrollX - popoverRect.width - gap,\n },\n leftTop: {\n top: targetRect.top + scrollY,\n left: targetRect.left + scrollX - popoverRect.width - gap,\n },\n leftBottom: {\n top: targetRect.bottom + scrollY - popoverRect.height,\n left: targetRect.left + scrollX - popoverRect.width - gap,\n },\n right: {\n top: targetRect.top + scrollY + targetRect.height / 2 - popoverRect.height / 2,\n left: targetRect.right + scrollX + gap,\n },\n rightTop: {\n top: targetRect.top + scrollY,\n left: targetRect.right + scrollX + gap,\n },\n rightBottom: {\n top: targetRect.bottom + scrollY - popoverRect.height,\n left: targetRect.right + scrollX + gap,\n },\n center: {\n top: window.innerHeight / 2 - popoverRect.height / 2,\n left: window.innerWidth / 2 - popoverRect.width / 2,\n },\n }\n\n return positions[placement]\n}\n\nexport const Tour: React.FC<TourProps> = ({\n open = false,\n onClose,\n onFinish,\n steps,\n current: controlledCurrent,\n onChange,\n mask = true,\n type = 'default',\n gap = 8,\n prevButtonText = 'Previous',\n nextButtonText = 'Next',\n finishButtonText = 'Finish',\n skipButtonText = 'Skip',\n showSkip = true,\n showIndicators = true,\n closeOnMaskClick = true,\n closeOnEscape = true,\n scrollIntoView = true,\n zIndex = 1000,\n}) => {\n const [internalCurrent, setInternalCurrent] = useState(0)\n const [targetRect, setTargetRect] = useState<DOMRect | null>(null)\n const [popoverPosition, setPopoverPosition] = useState({ top: 0, left: 0 })\n const popoverRef = useRef<HTMLDivElement>(null)\n\n const isControlled = controlledCurrent !== undefined\n const currentStep = isControlled ? controlledCurrent : internalCurrent\n const step = steps[currentStep]\n\n const gapRadius = Array.isArray(gap) ? gap[0] : gap\n const gapOffset = Array.isArray(gap) ? gap[1] : gap\n\n const updatePosition = useCallback(() => {\n if (!step) return\n\n const target = getTargetElement(step.target)\n const rect = target?.getBoundingClientRect() ?? null\n setTargetRect(rect)\n\n if (popoverRef.current) {\n const popoverRect = popoverRef.current.getBoundingClientRect()\n const placement = step.placement ?? 'bottom'\n const pos = getPopoverPosition(rect, placement, popoverRect, gapOffset + gapRadius)\n setPopoverPosition(pos)\n }\n }, [step, gapOffset, gapRadius])\n\n const goToStep = useCallback(\n (stepIndex: number) => {\n if (stepIndex < 0 || stepIndex >= steps.length) return\n\n // Call onClose for current step\n steps[currentStep]?.onClose?.()\n\n if (!isControlled) {\n setInternalCurrent(stepIndex)\n }\n onChange?.(stepIndex)\n\n // Call onOpen for new step\n steps[stepIndex]?.onOpen?.()\n },\n [steps, currentStep, isControlled, onChange]\n )\n\n const handlePrev = useCallback(() => {\n goToStep(currentStep - 1)\n }, [currentStep, goToStep])\n\n const handleNext = useCallback(() => {\n if (currentStep === steps.length - 1) {\n onFinish?.()\n onClose?.()\n } else {\n goToStep(currentStep + 1)\n }\n }, [currentStep, steps.length, goToStep, onFinish, onClose])\n\n const handleSkip = useCallback(() => {\n onClose?.()\n }, [onClose])\n\n const handleMaskClick = useCallback(() => {\n if (closeOnMaskClick) {\n onClose?.()\n }\n }, [closeOnMaskClick, onClose])\n\n // Reset to first step when opening\n useEffect(() => {\n if (open && !isControlled) {\n setInternalCurrent(0)\n }\n }, [open, isControlled])\n\n // Update position on step change or open\n useEffect(() => {\n if (!open) return\n\n updatePosition()\n\n // Scroll target into view\n if (scrollIntoView && step?.target) {\n const target = getTargetElement(step.target)\n target?.scrollIntoView({ behavior: 'smooth', block: 'center' })\n }\n\n // Call onOpen for first step\n if (currentStep === 0) {\n step?.onOpen?.()\n }\n }, [open, currentStep, step, scrollIntoView, updatePosition])\n\n // Update position on resize/scroll\n useEffect(() => {\n if (!open) return\n\n const handleUpdate = () => updatePosition()\n window.addEventListener('resize', handleUpdate)\n window.addEventListener('scroll', handleUpdate, true)\n\n // Initial position after popover renders\n requestAnimationFrame(updatePosition)\n\n return () => {\n window.removeEventListener('resize', handleUpdate)\n window.removeEventListener('scroll', handleUpdate, true)\n }\n }, [open, updatePosition])\n\n // Keyboard handling\n useEffect(() => {\n if (!open || !closeOnEscape) return\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onClose?.()\n } else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n handleNext()\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n handlePrev()\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [open, closeOnEscape, onClose, handleNext, handlePrev])\n\n if (!open || !step) return null\n\n const isFirstStep = currentStep === 0\n const isLastStep = currentStep === steps.length - 1\n\n const content = (\n <div\n className=\"fixed inset-0\"\n style={{ zIndex }}\n data-testid=\"tour\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n {/* Mask overlay with spotlight cutout */}\n {mask && (\n <svg\n className=\"absolute inset-0 w-full h-full pointer-events-auto\"\n onClick={handleMaskClick}\n style={{ zIndex }}\n >\n <defs>\n <mask id=\"tour-mask\">\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"white\" />\n {targetRect && (\n <rect\n x={targetRect.left - gapRadius}\n y={targetRect.top - gapRadius}\n width={targetRect.width + gapRadius * 2}\n height={targetRect.height + gapRadius * 2}\n rx={gapRadius}\n fill=\"black\"\n />\n )}\n </mask>\n </defs>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0, 0, 0, 0.5)\"\n mask=\"url(#tour-mask)\"\n />\n </svg>\n )}\n\n {/* Popover */}\n <div\n ref={popoverRef}\n className={`absolute bg-base-100 rounded-lg shadow-xl border border-base-300 max-w-sm ${step.className ?? ''}`}\n style={{\n top: popoverPosition.top,\n left: popoverPosition.left,\n zIndex: zIndex + 1,\n }}\n onClick={(e) => e.stopPropagation()}\n data-testid=\"tour-popover\"\n >\n {/* Cover */}\n {step.cover && (\n <div className=\"rounded-t-lg overflow-hidden\">{step.cover}</div>\n )}\n\n {/* Content */}\n <div className=\"p-4\">\n <h3 className=\"font-semibold text-lg mb-1\">{step.title}</h3>\n {step.description && (\n <p className=\"text-base-content/70 text-sm mb-4\">{step.description}</p>\n )}\n\n {/* Indicators */}\n {showIndicators && steps.length > 1 && (\n <div className=\"flex gap-1 mb-4\">\n {steps.map((_, index) => (\n <button\n key={index}\n className={`w-2 h-2 rounded-full transition-colors ${\n index === currentStep\n ? 'bg-primary'\n : 'bg-base-300 hover:bg-base-content/30'\n }`}\n onClick={() => goToStep(index)}\n aria-label={`Go to step ${index + 1}`}\n />\n ))}\n </div>\n )}\n\n {/* Navigation */}\n <div className=\"flex items-center justify-between gap-2\">\n <div>\n {showSkip && !isLastStep && (\n <button\n className=\"btn btn-ghost btn-sm\"\n onClick={handleSkip}\n data-testid=\"tour-skip\"\n >\n {skipButtonText}\n </button>\n )}\n </div>\n <div className=\"flex gap-2\">\n {!isFirstStep && (\n <button\n className=\"btn btn-ghost btn-sm\"\n onClick={handlePrev}\n data-testid=\"tour-prev\"\n >\n {prevButtonText}\n </button>\n )}\n <button\n className={`btn btn-sm ${type === 'primary' ? 'btn-primary' : ''}`}\n onClick={handleNext}\n data-testid=\"tour-next\"\n >\n {isLastStep ? finishButtonText : nextButtonText}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n\n return createPortal(content, document.body)\n}\n"],"names":["getTargetElement","target","getPopoverPosition","targetRect","placement","popoverRect","gap","scrollY","scrollX","Tour","open","onClose","onFinish","steps","controlledCurrent","onChange","mask","type","prevButtonText","nextButtonText","finishButtonText","skipButtonText","showSkip","showIndicators","closeOnMaskClick","closeOnEscape","scrollIntoView","zIndex","internalCurrent","setInternalCurrent","useState","setTargetRect","popoverPosition","setPopoverPosition","popoverRef","useRef","isControlled","currentStep","step","gapRadius","gapOffset","updatePosition","useCallback","rect","pos","goToStep","stepIndex","handlePrev","handleNext","handleSkip","handleMaskClick","useEffect","handleUpdate","handleKeyDown","e","isFirstStep","isLastStep","content","jsxs","jsx","_","index","createPortal"],"mappings":"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"}
1
+ {"version":3,"file":"Tour.js","sources":["../../src/components/Tour.tsx"],"sourcesContent":["import React, {\n useState,\n useEffect,\n useCallback,\n useRef,\n forwardRef,\n useImperativeHandle,\n} from 'react'\nimport { createPortal } from 'react-dom'\n\nexport type TourPlacement =\n | 'top'\n | 'topLeft'\n | 'topRight'\n | 'bottom'\n | 'bottomLeft'\n | 'bottomRight'\n | 'left'\n | 'leftTop'\n | 'leftBottom'\n | 'right'\n | 'rightTop'\n | 'rightBottom'\n | 'center'\n\nexport type TourType = 'default' | 'primary'\n\nexport interface TourArrowConfig {\n pointAtCenter?: boolean\n}\n\nexport interface TourMaskConfig {\n style?: React.CSSProperties\n color?: string\n}\n\nexport interface TourButtonProps {\n children?: React.ReactNode\n onClick?: () => void\n}\n\nexport interface TourStepProps {\n /** Target element ref or function returning element */\n target?: React.RefObject<HTMLElement | null> | (() => HTMLElement | null) | null\n /** Step title */\n title: React.ReactNode\n /** Step description */\n description?: React.ReactNode\n /** Cover image or content above title */\n cover?: React.ReactNode\n /** Placement of popover relative to target */\n placement?: TourPlacement\n /** Whether to show arrow (overrides Tour setting) */\n arrow?: boolean | TourArrowConfig\n /** Custom close icon for this step */\n closeIcon?: React.ReactNode\n /** Show mask overlay (overrides Tour setting) */\n mask?: boolean | TourMaskConfig\n /** Type affects styling (overrides Tour setting) */\n type?: TourType\n /** Scroll into view options (overrides Tour setting) */\n scrollIntoViewOptions?: boolean | ScrollIntoViewOptions\n /** Next button props */\n nextButtonProps?: TourButtonProps\n /** Previous button props */\n prevButtonProps?: TourButtonProps\n /** Custom class for this step's popover */\n className?: string\n /** Custom style for this step's popover */\n style?: React.CSSProperties\n /** Called when this step becomes active */\n onClose?: () => void\n}\n\nexport type TourSemanticName = 'root' | 'mask' | 'popover' | 'header' | 'content' | 'footer' | 'indicator' | 'close'\n\nexport interface TourActionInfo {\n current: number\n total: number\n}\n\nexport interface TourRef {\n /** Go to a specific step */\n goTo: (step: number) => void\n /** Go to the next step */\n next: () => void\n /** Go to the previous step */\n prev: () => void\n /** Close the tour */\n close: () => void\n}\n\nexport interface TourProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Whether tour is visible */\n open?: boolean\n /** Callback when tour closes */\n onClose?: () => void\n /** Callback when tour finishes (last step completed) */\n onFinish?: () => void\n /** Tour steps */\n steps: TourStepProps[]\n /** Current step (controlled) */\n current?: number\n /** Callback when step changes */\n onChange?: (current: number) => void\n /** Whether to show arrow on popover */\n arrow?: boolean | TourArrowConfig\n /** Custom close icon */\n closeIcon?: React.ReactNode\n /** Show mask overlay */\n mask?: boolean | TourMaskConfig\n /** Disable interaction on highlighted area */\n disabledInteraction?: boolean\n /** Type affects styling */\n type?: TourType\n /** Gap between highlight and target */\n gap?: { offset?: number | [number, number]; radius?: number }\n /** Text for prev button */\n prevButtonText?: React.ReactNode\n /** Text for next button */\n nextButtonText?: React.ReactNode\n /** Text for finish button */\n finishButtonText?: React.ReactNode\n /** Text for skip button */\n skipButtonText?: React.ReactNode\n /** Show skip button */\n showSkip?: boolean\n /** Show step indicators */\n showIndicators?: boolean\n /** Close on mask click */\n closeOnMaskClick?: boolean\n /** Close on escape key */\n closeOnEscape?: boolean\n /** Scroll target into view */\n scrollIntoViewOptions?: boolean | ScrollIntoViewOptions\n /** Z-index for tour overlay */\n zIndex?: number\n /** Custom indicator renderer */\n indicatorsRender?: (current: number, total: number) => React.ReactNode\n /** Custom action buttons renderer */\n actionsRender?: (originNode: React.ReactNode, info: TourActionInfo) => React.ReactNode\n /** Rendering container for tour */\n getPopupContainer?: (node: HTMLElement) => HTMLElement\n /** Semantic class names */\n classNames?: Partial<Record<TourSemanticName, string>>\n /** Semantic styles */\n styles?: Partial<Record<TourSemanticName, React.CSSProperties>>\n /** Test ID for testing */\n 'data-testid'?: string\n}\n\nconst getTargetElement = (\n target: TourStepProps['target']\n): HTMLElement | null => {\n if (!target) return null\n if (typeof target === 'function') return target()\n return target.current\n}\n\nconst getPopoverPosition = (\n targetRect: DOMRect | null,\n placement: TourPlacement,\n popoverRect: DOMRect,\n gap: number,\n arrow: boolean | TourArrowConfig\n): { top: number; left: number } => {\n if (!targetRect || placement === 'center') {\n return {\n top: window.innerHeight / 2 - popoverRect.height / 2,\n left: window.innerWidth / 2 - popoverRect.width / 2,\n }\n }\n\n const scrollY = window.scrollY\n const scrollX = window.scrollX\n const pointAtCenter = typeof arrow === 'object' && arrow.pointAtCenter\n\n const positions: Record<TourPlacement, { top: number; left: number }> = {\n top: {\n top: targetRect.top + scrollY - popoverRect.height - gap,\n left: pointAtCenter\n ? targetRect.left + scrollX + targetRect.width / 2 - popoverRect.width / 2\n : targetRect.left + scrollX + targetRect.width / 2 - popoverRect.width / 2,\n },\n topLeft: {\n top: targetRect.top + scrollY - popoverRect.height - gap,\n left: targetRect.left + scrollX,\n },\n topRight: {\n top: targetRect.top + scrollY - popoverRect.height - gap,\n left: targetRect.right + scrollX - popoverRect.width,\n },\n bottom: {\n top: targetRect.bottom + scrollY + gap,\n left: targetRect.left + scrollX + targetRect.width / 2 - popoverRect.width / 2,\n },\n bottomLeft: {\n top: targetRect.bottom + scrollY + gap,\n left: targetRect.left + scrollX,\n },\n bottomRight: {\n top: targetRect.bottom + scrollY + gap,\n left: targetRect.right + scrollX - popoverRect.width,\n },\n left: {\n top: targetRect.top + scrollY + targetRect.height / 2 - popoverRect.height / 2,\n left: targetRect.left + scrollX - popoverRect.width - gap,\n },\n leftTop: {\n top: targetRect.top + scrollY,\n left: targetRect.left + scrollX - popoverRect.width - gap,\n },\n leftBottom: {\n top: targetRect.bottom + scrollY - popoverRect.height,\n left: targetRect.left + scrollX - popoverRect.width - gap,\n },\n right: {\n top: targetRect.top + scrollY + targetRect.height / 2 - popoverRect.height / 2,\n left: targetRect.right + scrollX + gap,\n },\n rightTop: {\n top: targetRect.top + scrollY,\n left: targetRect.right + scrollX + gap,\n },\n rightBottom: {\n top: targetRect.bottom + scrollY - popoverRect.height,\n left: targetRect.right + scrollX + gap,\n },\n center: {\n top: window.innerHeight / 2 - popoverRect.height / 2,\n left: window.innerWidth / 2 - popoverRect.width / 2,\n },\n }\n\n return positions[placement]\n}\n\nconst getArrowPosition = (\n placement: TourPlacement\n): { position: string; transform: string } => {\n const arrowPositions: Record<TourPlacement, { position: string; transform: string }> = {\n top: { position: 'bottom-0 left-1/2', transform: 'translate(-50%, 50%) rotate(45deg)' },\n topLeft: { position: 'bottom-0 left-4', transform: 'translate(0, 50%) rotate(45deg)' },\n topRight: { position: 'bottom-0 right-4', transform: 'translate(0, 50%) rotate(45deg)' },\n bottom: { position: 'top-0 left-1/2', transform: 'translate(-50%, -50%) rotate(45deg)' },\n bottomLeft: { position: 'top-0 left-4', transform: 'translate(0, -50%) rotate(45deg)' },\n bottomRight: { position: 'top-0 right-4', transform: 'translate(0, -50%) rotate(45deg)' },\n left: { position: 'right-0 top-1/2', transform: 'translate(50%, -50%) rotate(45deg)' },\n leftTop: { position: 'right-0 top-4', transform: 'translate(50%, 0) rotate(45deg)' },\n leftBottom: { position: 'right-0 bottom-4', transform: 'translate(50%, 0) rotate(45deg)' },\n right: { position: 'left-0 top-1/2', transform: 'translate(-50%, -50%) rotate(45deg)' },\n rightTop: { position: 'left-0 top-4', transform: 'translate(-50%, 0) rotate(45deg)' },\n rightBottom: { position: 'left-0 bottom-4', transform: 'translate(-50%, 0) rotate(45deg)' },\n center: { position: 'hidden', transform: '' },\n }\n return arrowPositions[placement]\n}\n\nconst defaultCloseIcon = (\n <svg className=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n)\n\nexport const Tour = forwardRef<TourRef, TourProps>(\n (\n {\n open = false,\n onClose,\n onFinish,\n steps,\n current: controlledCurrent,\n onChange,\n arrow = true,\n closeIcon,\n mask = true,\n disabledInteraction = false,\n type = 'default',\n gap = { offset: 6, radius: 2 },\n prevButtonText = 'Previous',\n nextButtonText = 'Next',\n finishButtonText = 'Finish',\n skipButtonText = 'Skip',\n showSkip = true,\n showIndicators = true,\n closeOnMaskClick = true,\n closeOnEscape = true,\n scrollIntoViewOptions = true,\n zIndex = 1001,\n indicatorsRender,\n actionsRender,\n getPopupContainer,\n classNames = {},\n styles = {},\n className,\n style,\n 'data-testid': testId,\n ...rest\n },\n ref\n ) => {\n const [internalCurrent, setInternalCurrent] = useState(0)\n const [targetRect, setTargetRect] = useState<DOMRect | null>(null)\n const [popoverPosition, setPopoverPosition] = useState({ top: 0, left: 0 })\n const popoverRef = useRef<HTMLDivElement>(null)\n const containerRef = useRef<HTMLDivElement>(null)\n const liveRegionRef = useRef<HTMLDivElement>(null)\n\n const baseTestId = testId ?? 'tour'\n const getTestId = (suffix: string) => `${baseTestId}-${suffix}`\n\n const isControlled = controlledCurrent !== undefined\n const currentStep = isControlled ? controlledCurrent : internalCurrent\n const step = steps[currentStep]\n\n // Resolve gap values\n const gapOffset = gap.offset ?? 6\n const gapRadius = gap.radius ?? 2\n const gapOffsetValue = Array.isArray(gapOffset) ? gapOffset[0] : gapOffset\n\n // Resolve per-step overrides\n const resolvedArrow = step?.arrow ?? arrow\n const resolvedMask = step?.mask ?? mask\n const resolvedType = step?.type ?? type\n const resolvedScrollOptions = step?.scrollIntoViewOptions ?? scrollIntoViewOptions\n const resolvedCloseIcon = step?.closeIcon ?? closeIcon\n\n const showArrow = resolvedArrow !== false && step?.placement !== 'center'\n\n // Mask color\n const maskColor =\n typeof resolvedMask === 'object' && resolvedMask.color\n ? resolvedMask.color\n : 'rgba(0, 0, 0, 0.5)'\n const maskStyle =\n typeof resolvedMask === 'object' && resolvedMask.style ? resolvedMask.style : {}\n\n const updatePosition = useCallback(() => {\n if (!step) return\n\n const target = getTargetElement(step.target)\n const rect = target?.getBoundingClientRect() ?? null\n setTargetRect(rect)\n\n if (popoverRef.current) {\n const popoverRect = popoverRef.current.getBoundingClientRect()\n const placement = step.placement ?? 'bottom'\n const pos = getPopoverPosition(\n rect,\n placement,\n popoverRect,\n gapOffsetValue + gapRadius,\n resolvedArrow\n )\n setPopoverPosition(pos)\n }\n }, [step, gapOffsetValue, gapRadius, resolvedArrow])\n\n const goToStep = useCallback(\n (stepIndex: number) => {\n if (stepIndex < 0 || stepIndex >= steps.length) return\n\n // Call onClose for current step\n steps[currentStep]?.onClose?.()\n\n if (!isControlled) {\n setInternalCurrent(stepIndex)\n }\n onChange?.(stepIndex)\n\n // Announce step change\n if (liveRegionRef.current) {\n liveRegionRef.current.textContent = `Step ${stepIndex + 1} of ${steps.length}: ${\n typeof steps[stepIndex]?.title === 'string' ? steps[stepIndex]?.title : ''\n }`\n }\n },\n [steps, currentStep, isControlled, onChange]\n )\n\n const handleClose = useCallback(() => {\n onClose?.()\n }, [onClose])\n\n const handlePrev = useCallback(() => {\n step?.prevButtonProps?.onClick?.()\n goToStep(currentStep - 1)\n }, [currentStep, goToStep, step])\n\n const handleNext = useCallback(() => {\n step?.nextButtonProps?.onClick?.()\n if (currentStep === steps.length - 1) {\n onFinish?.()\n onClose?.()\n } else {\n goToStep(currentStep + 1)\n }\n }, [currentStep, steps.length, goToStep, onFinish, onClose, step])\n\n const handleSkip = useCallback(() => {\n onClose?.()\n }, [onClose])\n\n const handleMaskClick = useCallback(() => {\n if (closeOnMaskClick) {\n onClose?.()\n }\n }, [closeOnMaskClick, onClose])\n\n // Expose imperative methods\n useImperativeHandle(\n ref,\n () => ({\n goTo: goToStep,\n next: handleNext,\n prev: handlePrev,\n close: handleClose,\n }),\n [goToStep, handleNext, handlePrev, handleClose]\n )\n\n // Reset to first step when opening\n useEffect(() => {\n if (open && !isControlled) {\n setInternalCurrent(0)\n }\n }, [open, isControlled])\n\n // Update position on step change or open\n useEffect(() => {\n if (!open) return\n\n updatePosition()\n\n // Scroll target into view\n if (resolvedScrollOptions && step?.target) {\n const target = getTargetElement(step.target)\n if (target) {\n const scrollOptions: ScrollIntoViewOptions =\n typeof resolvedScrollOptions === 'object'\n ? resolvedScrollOptions\n : { behavior: 'smooth', block: 'center' }\n target.scrollIntoView(scrollOptions)\n }\n }\n\n // Announce first step\n if (currentStep === 0 && liveRegionRef.current) {\n liveRegionRef.current.textContent = `Tour started. Step 1 of ${steps.length}: ${\n typeof step?.title === 'string' ? step?.title : ''\n }`\n }\n }, [open, currentStep, step, resolvedScrollOptions, updatePosition, steps.length])\n\n // Update position on resize/scroll\n useEffect(() => {\n if (!open) return\n\n const handleUpdate = () => updatePosition()\n window.addEventListener('resize', handleUpdate)\n window.addEventListener('scroll', handleUpdate, true)\n\n // Initial position after popover renders\n requestAnimationFrame(updatePosition)\n\n return () => {\n window.removeEventListener('resize', handleUpdate)\n window.removeEventListener('scroll', handleUpdate, true)\n }\n }, [open, updatePosition])\n\n // Keyboard handling\n useEffect(() => {\n if (!open) return\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && closeOnEscape) {\n onClose?.()\n } else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault()\n handleNext()\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault()\n handlePrev()\n } else if (e.key === 'Tab') {\n // Focus trap within popover\n if (popoverRef.current) {\n const focusableElements = popoverRef.current.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )\n const firstElement = focusableElements[0]\n const lastElement = focusableElements[focusableElements.length - 1]\n\n if (e.shiftKey && document.activeElement === firstElement) {\n e.preventDefault()\n lastElement?.focus()\n } else if (!e.shiftKey && document.activeElement === lastElement) {\n e.preventDefault()\n firstElement?.focus()\n }\n }\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [open, closeOnEscape, onClose, handleNext, handlePrev])\n\n // Focus management - focus first button when tour opens\n useEffect(() => {\n if (open && popoverRef.current) {\n requestAnimationFrame(() => {\n const firstButton = popoverRef.current?.querySelector<HTMLElement>('button')\n firstButton?.focus()\n })\n }\n }, [open, currentStep])\n\n if (!open || !step) return null\n\n const isFirstStep = currentStep === 0\n const isLastStep = currentStep === steps.length - 1\n const placement = step.placement ?? 'bottom'\n const arrowPos = getArrowPosition(placement)\n\n // Default indicators\n const defaultIndicators =\n showIndicators && steps.length > 1 ? (\n <div\n className={`flex gap-1 mb-4 ${classNames.indicator ?? ''}`}\n style={styles.indicator}\n data-testid={getTestId('indicators')}\n >\n {steps.map((_, index) => (\n <button\n key={index}\n className={`w-2 h-2 rounded-full transition-colors ${\n index === currentStep\n ? 'bg-primary'\n : 'bg-base-300 hover:bg-base-content/30'\n }`}\n onClick={() => goToStep(index)}\n aria-label={`Go to step ${index + 1}`}\n aria-current={index === currentStep ? 'step' : undefined}\n data-testid={getTestId(`indicator-${index}`)}\n />\n ))}\n </div>\n ) : null\n\n const indicators = indicatorsRender\n ? indicatorsRender(currentStep, steps.length)\n : defaultIndicators\n\n // Default action buttons\n const defaultActions = (\n <div\n className={`flex items-center justify-between gap-2 ${classNames.footer ?? ''}`}\n style={styles.footer}\n data-testid={getTestId('footer')}\n >\n <div>\n {showSkip && !isLastStep && (\n <button\n className=\"btn btn-ghost btn-sm\"\n onClick={handleSkip}\n data-testid={getTestId('skip')}\n >\n {skipButtonText}\n </button>\n )}\n </div>\n <div className=\"flex gap-2\">\n {!isFirstStep && (\n <button\n className=\"btn btn-ghost btn-sm\"\n onClick={handlePrev}\n data-testid={getTestId('prev')}\n >\n {step.prevButtonProps?.children ?? prevButtonText}\n </button>\n )}\n <button\n className={`btn btn-sm ${resolvedType === 'primary' ? 'btn-primary' : ''}`}\n onClick={handleNext}\n data-testid={getTestId('next')}\n >\n {step.nextButtonProps?.children ?? (isLastStep ? finishButtonText : nextButtonText)}\n </button>\n </div>\n </div>\n )\n\n const actions = actionsRender\n ? actionsRender(defaultActions, { current: currentStep, total: steps.length })\n : defaultActions\n\n const content = (\n <div\n ref={containerRef}\n className={`fixed inset-0 ${classNames.root ?? ''} ${className ?? ''}`}\n style={{ zIndex, ...styles.root, ...style }}\n data-testid={baseTestId}\n data-state={open ? 'open' : 'closed'}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={`Tour step ${currentStep + 1} of ${steps.length}`}\n {...rest}\n >\n {/* Live region for screen reader announcements */}\n <div\n ref={liveRegionRef}\n className=\"sr-only\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n />\n\n {/* Mask overlay with spotlight cutout */}\n {resolvedMask && (\n <svg\n className={`absolute inset-0 w-full h-full ${\n disabledInteraction ? 'pointer-events-auto' : 'pointer-events-auto'\n } ${classNames.mask ?? ''}`}\n style={{ zIndex, ...maskStyle, ...styles.mask }}\n onClick={handleMaskClick}\n data-testid={getTestId('mask')}\n aria-hidden=\"true\"\n >\n <defs>\n <mask id={`tour-mask-${baseTestId}`}>\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"white\" />\n {targetRect && (\n <rect\n x={targetRect.left - gapRadius}\n y={targetRect.top - gapRadius}\n width={targetRect.width + gapRadius * 2}\n height={targetRect.height + gapRadius * 2}\n rx={gapRadius}\n fill=\"black\"\n />\n )}\n </mask>\n </defs>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill={maskColor}\n mask={`url(#tour-mask-${baseTestId})`}\n />\n </svg>\n )}\n\n {/* Interaction blocker for highlighted area */}\n {disabledInteraction && targetRect && (\n <div\n className=\"absolute pointer-events-auto\"\n style={{\n left: targetRect.left - gapRadius,\n top: targetRect.top - gapRadius,\n width: targetRect.width + gapRadius * 2,\n height: targetRect.height + gapRadius * 2,\n zIndex: zIndex + 1,\n }}\n data-testid={getTestId('blocker')}\n />\n )}\n\n {/* Popover */}\n <div\n ref={popoverRef}\n className={`absolute bg-base-100 rounded-lg shadow-xl border border-base-300 max-w-sm ${\n classNames.popover ?? ''\n } ${step.className ?? ''}`}\n style={{\n top: popoverPosition.top,\n left: popoverPosition.left,\n zIndex: zIndex + 2,\n ...styles.popover,\n ...step.style,\n }}\n onClick={(e) => e.stopPropagation()}\n data-testid={getTestId('popover')}\n data-placement={placement}\n >\n {/* Arrow */}\n {showArrow && (\n <div\n className={`absolute w-3 h-3 bg-base-100 border-base-300 ${arrowPos.position}`}\n style={{\n transform: arrowPos.transform,\n borderWidth: '1px',\n borderTopColor: 'transparent',\n borderLeftColor: 'transparent',\n }}\n data-testid={getTestId('arrow')}\n />\n )}\n\n {/* Close button */}\n {resolvedCloseIcon !== false && (\n <button\n className={`absolute top-2 right-2 btn btn-ghost btn-xs btn-circle ${\n classNames.close ?? ''\n }`}\n style={styles.close}\n onClick={handleClose}\n aria-label=\"Close tour\"\n data-testid={getTestId('close')}\n >\n {resolvedCloseIcon ?? defaultCloseIcon}\n </button>\n )}\n\n {/* Cover */}\n {step.cover && (\n <div className=\"rounded-t-lg overflow-hidden\" data-testid={getTestId('cover')}>\n {step.cover}\n </div>\n )}\n\n {/* Content */}\n <div\n className={`p-4 ${classNames.content ?? ''}`}\n style={styles.content}\n data-testid={getTestId('content')}\n >\n <div\n className={`${classNames.header ?? ''}`}\n style={styles.header}\n data-testid={getTestId('header')}\n >\n <h3 className=\"font-semibold text-lg mb-1 pr-6\">{step.title}</h3>\n {step.description && (\n <p className=\"text-base-content/70 text-sm mb-4\">{step.description}</p>\n )}\n </div>\n\n {/* Indicators */}\n {indicators}\n\n {/* Navigation */}\n {actions}\n </div>\n </div>\n </div>\n )\n\n // Get container for portal\n const container = getPopupContainer\n ? getPopupContainer(document.body)\n : document.body\n\n return createPortal(content, container)\n }\n)\n\nTour.displayName = 'Tour'\n"],"names":["getTargetElement","target","getPopoverPosition","targetRect","placement","popoverRect","gap","arrow","scrollY","scrollX","pointAtCenter","getArrowPosition","defaultCloseIcon","jsx","Tour","forwardRef","open","onClose","onFinish","steps","controlledCurrent","onChange","closeIcon","mask","disabledInteraction","type","prevButtonText","nextButtonText","finishButtonText","skipButtonText","showSkip","showIndicators","closeOnMaskClick","closeOnEscape","scrollIntoViewOptions","zIndex","indicatorsRender","actionsRender","getPopupContainer","classNames","styles","className","style","testId","rest","ref","internalCurrent","setInternalCurrent","useState","setTargetRect","popoverPosition","setPopoverPosition","popoverRef","useRef","containerRef","liveRegionRef","baseTestId","getTestId","suffix","isControlled","currentStep","step","gapOffset","gapRadius","gapOffsetValue","resolvedArrow","resolvedMask","resolvedType","resolvedScrollOptions","resolvedCloseIcon","showArrow","maskColor","maskStyle","updatePosition","useCallback","rect","pos","goToStep","stepIndex","handleClose","handlePrev","handleNext","handleSkip","handleMaskClick","useImperativeHandle","useEffect","scrollOptions","handleUpdate","handleKeyDown","e","focusableElements","firstElement","lastElement","isFirstStep","isLastStep","arrowPos","defaultIndicators","_","index","indicators","defaultActions","jsxs","actions","content","container","createPortal"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -111,7 +111,9 @@ export type { ModalProps, ModalFuncProps, ModalPosition, ModalAlign, ResponsiveP
111
111
  export { Navbar } from './components/Navbar';
112
112
  export type { NavbarProps, NavbarColor, NavbarShadow, NavbarRounded } from './components/Navbar';
113
113
  export { notification } from './components/Notification';
114
- export type { NotificationConfig, NotificationType, NotificationPlacement } from './components/Notification';
114
+ export type { NotificationConfig, NotificationType, NotificationPlacement, NotificationVariant } from './components/Notification';
115
+ export { message, MessageManager } from './components/Message';
116
+ export type { MessageConfig } from './components/Message';
115
117
  export { OTPInput } from './components/OTPInput';
116
118
  export type { OTPInputProps, OTPInputRef } from './components/OTPInput';
117
119
  export { Pagination } from './components/Pagination';
@@ -167,7 +169,7 @@ export type { TimelineProps, TimelineItemProps, TimelineItemConfig, TimelineMode
167
169
  export { Toggle } from './components/Toggle';
168
170
  export type { ToggleProps } from './components/Toggle';
169
171
  export { Tour } from './components/Tour';
170
- export type { TourProps, TourStepProps, TourPlacement } from './components/Tour';
172
+ export type { TourProps, TourStepProps, TourPlacement, TourType, TourArrowConfig, TourMaskConfig, TourButtonProps, TourSemanticName, TourActionInfo, TourRef, } from './components/Tour';
171
173
  export { Tooltip } from './components/Tooltip';
172
174
  export type { TooltipProps } from './components/Tooltip';
173
175
  export { Transfer } from './components/Transfer';
package/dist/index.js CHANGED
@@ -2,17 +2,17 @@ import { Affix as e } from "./components/Affix.js";
2
2
  import { Anchor as p } from "./components/Anchor.js";
3
3
  import { Alert as x } from "./components/Alert.js";
4
4
  import { Autocomplete as a } from "./components/Autocomplete.js";
5
- import { Avatar as i, AvatarGroup as s } from "./components/Avatar.js";
5
+ import { Avatar as s, AvatarGroup as i } from "./components/Avatar.js";
6
6
  import { Badge as u } from "./components/Badge.js";
7
7
  import { Breadcrumb as d } from "./components/Breadcrumb.js";
8
- import { Button as T, IconSizeContext as g } from "./components/Button.js";
8
+ import { Button as g, IconSizeContext as T } from "./components/Button.js";
9
9
  import { CopyButton as P } from "./components/CopyButton.js";
10
10
  import { Checkbox as b } from "./components/Checkbox.js";
11
11
  import { Chat as D } from "./components/Chat.js";
12
12
  import { ColorPicker as y } from "./components/ColorPicker.js";
13
13
  import { Card as h } from "./components/Card.js";
14
- import { Cascader as B } from "./components/Cascader.js";
15
- import { Carousel as A } from "./components/Carousel.js";
14
+ import { Cascader as M } from "./components/Cascader.js";
15
+ import { Carousel as I } from "./components/Carousel.js";
16
16
  import { Collapse as L } from "./components/Collapse.js";
17
17
  import { Container as G } from "./components/Container.js";
18
18
  import { ContextMenu as W } from "./components/ContextMenu.js";
@@ -28,16 +28,16 @@ import { Fieldset as eo } from "./components/Fieldset.js";
28
28
  import { FileInput as po } from "./components/FileInput.js";
29
29
  import { Filter as xo } from "./components/Filter.js";
30
30
  import { Flex as ao } from "./components/Flex.js";
31
- import { FloatButton as io } from "./components/FloatButton.js";
31
+ import { FloatButton as so } from "./components/FloatButton.js";
32
32
  import { Footer as lo } from "./components/Footer.js";
33
33
  import { Form as co, useFormInstance as Co } from "./components/Form.js";
34
- import { Col as go, Grid as So, Row as Po } from "./components/Grid.js";
34
+ import { Col as To, Grid as So, Row as Po } from "./components/Grid.js";
35
35
  import { Hero as bo } from "./components/Hero.js";
36
36
  import { HoverGallery as Do } from "./components/HoverGallery.js";
37
37
  import { Image as yo } from "./components/Image.js";
38
38
  import { Dropdown as ho } from "./components/Dropdown.js";
39
- import { Empty as Bo } from "./components/Empty.js";
40
- import { Input as Ao } from "./components/Input.js";
39
+ import { Empty as Mo } from "./components/Empty.js";
40
+ import { Input as Io } from "./components/Input.js";
41
41
  import { InputNumber as Lo } from "./components/InputNumber.js";
42
42
  import { Join as Go } from "./components/Join.js";
43
43
  import { Kbd as Wo } from "./components/Kbd.js";
@@ -53,73 +53,74 @@ import { Code as tr } from "./components/Code.js";
53
53
  import { Phone as mr } from "./components/Phone.js";
54
54
  import { Window as fr } from "./components/Window.js";
55
55
  import { Modal as nr } from "./components/Modal.js";
56
- import { Navbar as sr } from "./components/Navbar.js";
56
+ import { Navbar as ir } from "./components/Navbar.js";
57
57
  import { notification as ur } from "./components/Notification.js";
58
- import { OTPInput as dr } from "./components/OTPInput.js";
59
- import { Pagination as Tr } from "./components/Pagination.js";
60
- import { Popconfirm as Sr } from "./components/Popconfirm.js";
61
- import { Popover as kr } from "./components/Popover.js";
62
- import { Progress as vr } from "./components/Progress.js";
63
- import { Radio as wr } from "./components/Radio.js";
64
- import { RadialProgress as Rr } from "./components/RadialProgress.js";
65
- import { Range as Fr } from "./components/Range.js";
66
- import { Rating as Ir } from "./components/Rating.js";
67
- import { Result as Mr } from "./components/Result.js";
68
- import { Select as Hr } from "./components/Select.js";
69
- import { Segmented as Kr } from "./components/Segmented.js";
70
- import { Skeleton as zr } from "./components/Skeleton.js";
71
- import { Space as Or } from "./components/Space.js";
72
- import { Splitter as Jr } from "./components/Splitter.js";
73
- import { Stats as jr } from "./components/Stat.js";
74
- import { Status as Qr } from "./components/Status.js";
75
- import { Steps as Xr } from "./components/Steps.js";
76
- import { Table as Zr } from "./components/Table.js";
77
- import { Tabs as $r } from "./components/Tabs.js";
78
- import { Textarea as re } from "./components/Textarea.js";
79
- import { TextRotate as te } from "./components/TextRotate.js";
80
- import { CheckableTag as me, Tag as xe, TagLiveRegion as fe } from "./components/Tag.js";
81
- import { ThemeController as ne } from "./components/ThemeController.js";
82
- import { TimePicker as se } from "./components/TimePicker.js";
83
- import { Timeline as ue } from "./components/Timeline.js";
84
- import { Toggle as de } from "./components/Toggle.js";
85
- import { Tour as Te } from "./components/Tour.js";
86
- import { Tooltip as Se } from "./components/Tooltip.js";
87
- import { Transfer as ke } from "./components/Transfer.js";
88
- import { Tree as ve } from "./components/Tree.js";
89
- import { TreeSelect as we, TreeSelectComponent as ye } from "./components/TreeSelect.js";
90
- import { Typography as he } from "./components/Typography.js";
91
- import { Upload as Be } from "./components/Upload.js";
92
- import { Watermark as Ae } from "./components/Watermark.js";
93
- import { Hide as Le, Show as He } from "./components/Responsive.js";
94
- import { useBreakpoint as Ke } from "./hooks/useBreakpoint.js";
95
- import { useDisclosure as ze } from "./hooks/useDisclosure.js";
96
- import { useClipboard as Oe } from "./hooks/useClipboard.js";
97
- import { useLocalStorage as Je } from "./hooks/useLocalStorage.js";
98
- import { useDebounce as je } from "./hooks/useDebounce.js";
99
- import { useClickOutside as Qe } from "./hooks/useClickOutside.js";
100
- import { usePrevious as Xe } from "./hooks/usePrevious.js";
101
- import { useHover as Ze } from "./hooks/useHover.js";
102
- import { useKeyPress as $e, useKeyPressCallback as ot } from "./hooks/useKeyPress.js";
103
- import { useWindowSize as et } from "./hooks/useWindowSize.js";
58
+ import { MessageManager as dr, message as Cr } from "./components/Message.js";
59
+ import { OTPInput as Tr } from "./components/OTPInput.js";
60
+ import { Pagination as Pr } from "./components/Pagination.js";
61
+ import { Popconfirm as br } from "./components/Popconfirm.js";
62
+ import { Popover as Dr } from "./components/Popover.js";
63
+ import { Progress as yr } from "./components/Progress.js";
64
+ import { Radio as hr } from "./components/Radio.js";
65
+ import { RadialProgress as Mr } from "./components/RadialProgress.js";
66
+ import { Range as Ir } from "./components/Range.js";
67
+ import { Rating as Lr } from "./components/Rating.js";
68
+ import { Result as Gr } from "./components/Result.js";
69
+ import { Select as Wr } from "./components/Select.js";
70
+ import { Segmented as Nr } from "./components/Segmented.js";
71
+ import { Skeleton as Er } from "./components/Skeleton.js";
72
+ import { Space as Ur } from "./components/Space.js";
73
+ import { Splitter as qr } from "./components/Splitter.js";
74
+ import { Stats as Vr } from "./components/Stat.js";
75
+ import { Status as Yr } from "./components/Status.js";
76
+ import { Steps as _r } from "./components/Steps.js";
77
+ import { Table as oe } from "./components/Table.js";
78
+ import { Tabs as ee } from "./components/Tabs.js";
79
+ import { Textarea as pe } from "./components/Textarea.js";
80
+ import { TextRotate as xe } from "./components/TextRotate.js";
81
+ import { CheckableTag as ae, Tag as ne, TagLiveRegion as se } from "./components/Tag.js";
82
+ import { ThemeController as le } from "./components/ThemeController.js";
83
+ import { TimePicker as ce } from "./components/TimePicker.js";
84
+ import { Timeline as Ce } from "./components/Timeline.js";
85
+ import { Toggle as Te } from "./components/Toggle.js";
86
+ import { Tour as Pe } from "./components/Tour.js";
87
+ import { Tooltip as be } from "./components/Tooltip.js";
88
+ import { Transfer as De } from "./components/Transfer.js";
89
+ import { Tree as ye } from "./components/Tree.js";
90
+ import { TreeSelect as he, TreeSelectComponent as Fe } from "./components/TreeSelect.js";
91
+ import { Typography as Be } from "./components/Typography.js";
92
+ import { Upload as Ae } from "./components/Upload.js";
93
+ import { Watermark as He } from "./components/Watermark.js";
94
+ import { Hide as Ke, Show as We } from "./components/Responsive.js";
95
+ import { useBreakpoint as Ne } from "./hooks/useBreakpoint.js";
96
+ import { useDisclosure as Ee } from "./hooks/useDisclosure.js";
97
+ import { useClipboard as Ue } from "./hooks/useClipboard.js";
98
+ import { useLocalStorage as qe } from "./hooks/useLocalStorage.js";
99
+ import { useDebounce as Ve } from "./hooks/useDebounce.js";
100
+ import { useClickOutside as Ye } from "./hooks/useClickOutside.js";
101
+ import { usePrevious as _e } from "./hooks/usePrevious.js";
102
+ import { useHover as ot } from "./hooks/useHover.js";
103
+ import { useKeyPress as et, useKeyPressCallback as tt } from "./hooks/useKeyPress.js";
104
+ import { useWindowSize as mt } from "./hooks/useWindowSize.js";
104
105
  export {
105
106
  e as Affix,
106
107
  x as Alert,
107
108
  p as Anchor,
108
109
  a as Autocomplete,
109
- i as Avatar,
110
- s as AvatarGroup,
110
+ s as Avatar,
111
+ i as AvatarGroup,
111
112
  u as Badge,
112
113
  d as Breadcrumb,
113
114
  rr as Browser,
114
- T as Button,
115
+ g as Button,
115
116
  h as Card,
116
- A as Carousel,
117
- B as Cascader,
117
+ I as Carousel,
118
+ M as Cascader,
118
119
  D as Chat,
119
- me as CheckableTag,
120
+ ae as CheckableTag,
120
121
  b as Checkbox,
121
122
  tr as Code,
122
- go as Col,
123
+ To as Col,
123
124
  L as Collapse,
124
125
  y as ColorPicker,
125
126
  G as Container,
@@ -133,21 +134,21 @@ export {
133
134
  V as Dock,
134
135
  _ as Drawer,
135
136
  ho as Dropdown,
136
- Bo as Empty,
137
+ Mo as Empty,
137
138
  eo as Fieldset,
138
139
  po as FileInput,
139
140
  xo as Filter,
140
141
  ao as Flex,
141
- io as FloatButton,
142
+ so as FloatButton,
142
143
  lo as Footer,
143
144
  co as Form,
144
145
  So as Grid,
145
146
  bo as Hero,
146
- Le as Hide,
147
+ Ke as Hide,
147
148
  Do as HoverGallery,
148
- g as IconSizeContext,
149
+ T as IconSizeContext,
149
150
  yo as Image,
150
- Ao as Input,
151
+ Io as Input,
151
152
  Lo as InputNumber,
152
153
  Go as Join,
153
154
  Wo as Kbd,
@@ -158,63 +159,65 @@ export {
158
159
  Xo as Masonry,
159
160
  Zo as Mention,
160
161
  $o as Menu,
162
+ dr as MessageManager,
161
163
  nr as Modal,
162
- sr as Navbar,
163
- dr as OTPInput,
164
- Tr as Pagination,
164
+ ir as Navbar,
165
+ Tr as OTPInput,
166
+ Pr as Pagination,
165
167
  mr as Phone,
166
- Sr as Popconfirm,
167
- kr as Popover,
168
- vr as Progress,
169
- Rr as RadialProgress,
170
- wr as Radio,
171
- Fr as Range,
172
- Ir as Rating,
168
+ br as Popconfirm,
169
+ Dr as Popover,
170
+ yr as Progress,
171
+ Mr as RadialProgress,
172
+ hr as Radio,
173
+ Ir as Range,
174
+ Lr as Rating,
173
175
  oo as ResponsiveDrawer,
174
- Mr as Result,
176
+ Gr as Result,
175
177
  Po as Row,
176
- Kr as Segmented,
177
- Hr as Select,
178
- He as Show,
179
- zr as Skeleton,
180
- Or as Space,
181
- Jr as Splitter,
182
- jr as Stats,
183
- Qr as Status,
184
- Xr as Steps,
185
- Zr as Table,
186
- $r as Tabs,
187
- xe as Tag,
188
- fe as TagLiveRegion,
189
- te as TextRotate,
190
- re as Textarea,
191
- ne as ThemeController,
192
- se as TimePicker,
193
- ue as Timeline,
194
- de as Toggle,
195
- Se as Tooltip,
196
- Te as Tour,
197
- ke as Transfer,
198
- ve as Tree,
199
- we as TreeSelect,
200
- ye as TreeSelectComponent,
201
- he as Typography,
202
- Be as Upload,
203
- Ae as Watermark,
178
+ Nr as Segmented,
179
+ Wr as Select,
180
+ We as Show,
181
+ Er as Skeleton,
182
+ Ur as Space,
183
+ qr as Splitter,
184
+ Vr as Stats,
185
+ Yr as Status,
186
+ _r as Steps,
187
+ oe as Table,
188
+ ee as Tabs,
189
+ ne as Tag,
190
+ se as TagLiveRegion,
191
+ xe as TextRotate,
192
+ pe as Textarea,
193
+ le as ThemeController,
194
+ ce as TimePicker,
195
+ Ce as Timeline,
196
+ Te as Toggle,
197
+ be as Tooltip,
198
+ Pe as Tour,
199
+ De as Transfer,
200
+ ye as Tree,
201
+ he as TreeSelect,
202
+ Fe as TreeSelectComponent,
203
+ Be as Typography,
204
+ Ae as Upload,
205
+ He as Watermark,
204
206
  fr as Window,
207
+ Cr as message,
205
208
  ur as notification,
206
- Ke as useBreakpoint,
207
- Qe as useClickOutside,
208
- Oe as useClipboard,
209
- je as useDebounce,
210
- ze as useDisclosure,
209
+ Ne as useBreakpoint,
210
+ Ye as useClickOutside,
211
+ Ue as useClipboard,
212
+ Ve as useDebounce,
213
+ Ee as useDisclosure,
211
214
  Co as useFormInstance,
212
- Ze as useHover,
213
- $e as useKeyPress,
214
- ot as useKeyPressCallback,
215
- Je as useLocalStorage,
216
- Xe as usePrevious,
215
+ ot as useHover,
216
+ et as useKeyPress,
217
+ tt as useKeyPressCallback,
218
+ qe as useLocalStorage,
219
+ _e as usePrevious,
217
220
  Oo as useSiderContext,
218
- et as useWindowSize
221
+ mt as useWindowSize
219
222
  };
220
223
  //# sourceMappingURL=index.js.map
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "asterui",
3
- "version": "0.12.44",
3
+ "version": "0.12.45",
4
4
  "description": "React UI component library with DaisyUI",
5
5
  "homepage": "https://asterui.com",
6
6
  "repository": {