asterui 0.12.9 → 0.12.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/components/Hero.d.ts +6 -13
  2. package/dist/components/Space.d.ts +1 -0
  3. package/dist/components/Splitter.d.ts +2 -0
  4. package/dist/index.d.ts +0 -2
  5. package/dist/index.js +63 -65
  6. package/dist/index.js.map +1 -1
  7. package/dist/index100.js +11 -44
  8. package/dist/index100.js.map +1 -1
  9. package/dist/index101.js +12 -10
  10. package/dist/index101.js.map +1 -1
  11. package/dist/index102.js +7 -14
  12. package/dist/index102.js.map +1 -1
  13. package/dist/index103.js +12 -7
  14. package/dist/index103.js.map +1 -1
  15. package/dist/index104.js +29 -11
  16. package/dist/index104.js.map +1 -1
  17. package/dist/index105.js +16 -29
  18. package/dist/index105.js.map +1 -1
  19. package/dist/index35.js +13 -26
  20. package/dist/index35.js.map +1 -1
  21. package/dist/index74.js +37 -25
  22. package/dist/index74.js.map +1 -1
  23. package/dist/index75.js +223 -103
  24. package/dist/index75.js.map +1 -1
  25. package/dist/index76.js +21 -51
  26. package/dist/index76.js.map +1 -1
  27. package/dist/index77.js +31 -22
  28. package/dist/index77.js.map +1 -1
  29. package/dist/index78.js +22 -31
  30. package/dist/index78.js.map +1 -1
  31. package/dist/index79.js +327 -20
  32. package/dist/index79.js.map +1 -1
  33. package/dist/index80.js +50 -323
  34. package/dist/index80.js.map +1 -1
  35. package/dist/index81.js +40 -56
  36. package/dist/index81.js.map +1 -1
  37. package/dist/index82.js +23 -40
  38. package/dist/index82.js.map +1 -1
  39. package/dist/index83.js +93 -21
  40. package/dist/index83.js.map +1 -1
  41. package/dist/index84.js +148 -87
  42. package/dist/index84.js.map +1 -1
  43. package/dist/index85.js +152 -147
  44. package/dist/index85.js.map +1 -1
  45. package/dist/index86.js +63 -159
  46. package/dist/index86.js.map +1 -1
  47. package/dist/index87.js +35 -65
  48. package/dist/index87.js.map +1 -1
  49. package/dist/index88.js +234 -35
  50. package/dist/index88.js.map +1 -1
  51. package/dist/index89.js +31 -231
  52. package/dist/index89.js.map +1 -1
  53. package/dist/index90.js +210 -34
  54. package/dist/index90.js.map +1 -1
  55. package/dist/index91.js +198 -195
  56. package/dist/index91.js.map +1 -1
  57. package/dist/index92.js +241 -159
  58. package/dist/index92.js.map +1 -1
  59. package/dist/index93.js +166 -283
  60. package/dist/index93.js.map +1 -1
  61. package/dist/index94.js +253 -173
  62. package/dist/index94.js.map +1 -1
  63. package/dist/index95.js +14 -258
  64. package/dist/index95.js.map +1 -1
  65. package/dist/index96.js +31 -12
  66. package/dist/index96.js.map +1 -1
  67. package/dist/index97.js +5 -32
  68. package/dist/index97.js.map +1 -1
  69. package/dist/index98.js +13 -5
  70. package/dist/index98.js.map +1 -1
  71. package/dist/index99.js +43 -11
  72. package/dist/index99.js.map +1 -1
  73. package/package.json +1 -1
  74. package/dist/components/Stack.d.ts +0 -10
  75. package/dist/index106.js +0 -21
  76. package/dist/index106.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index75.js","sources":["../src/components/Splitter.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback, useEffect } from 'react'\n\nexport interface SplitterPanelProps {\n children: React.ReactNode\n defaultSize?: number\n size?: number\n minSize?: number\n maxSize?: number\n collapsible?: boolean\n collapsed?: boolean\n onCollapse?: (collapsed: boolean) => void\n className?: string\n}\n\nexport interface SplitterProps {\n children: React.ReactNode\n direction?: 'horizontal' | 'vertical'\n sizes?: number[]\n defaultSizes?: number[]\n onSizesChange?: (sizes: number[]) => void\n gutterSize?: number\n minSize?: number\n className?: string\n}\n\nconst Panel: React.FC<SplitterPanelProps> = ({ children }) => {\n return <>{children}</>\n}\n\nexport const Splitter: React.FC<SplitterProps> & { Panel: typeof Panel } = ({\n children,\n direction = 'horizontal',\n sizes,\n defaultSizes,\n onSizesChange,\n gutterSize = 8,\n minSize = 50,\n className = '',\n}) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const panelsRef = useRef<(HTMLDivElement | null)[]>([])\n const draggingRef = useRef<{ index: number; startPos: number; startSizes: number[] } | null>(null)\n\n // Extract panel props from children\n const panels = React.Children.toArray(children).filter(\n (child): child is React.ReactElement<SplitterPanelProps> =>\n React.isValidElement(child)\n )\n\n const panelCount = panels.length\n\n // Initialize sizes\n const getInitialSizes = useCallback(() => {\n if (defaultSizes && defaultSizes.length === panelCount) {\n return defaultSizes\n }\n // Equal distribution\n const equalSize = 100 / panelCount\n return Array(panelCount).fill(equalSize)\n }, [defaultSizes, panelCount])\n\n const [internalSizes, setInternalSizes] = useState<number[]>(getInitialSizes)\n const currentSizes = sizes || internalSizes\n\n // Update internal sizes when panel count changes\n useEffect(() => {\n if (!sizes && internalSizes.length !== panelCount) {\n setInternalSizes(getInitialSizes())\n }\n }, [panelCount, sizes, internalSizes.length, getInitialSizes])\n\n const updateSizes = useCallback(\n (newSizes: number[]) => {\n if (!sizes) {\n setInternalSizes(newSizes)\n }\n onSizesChange?.(newSizes)\n },\n [sizes, onSizesChange]\n )\n\n const handleMouseDown = useCallback(\n (index: number, e: React.MouseEvent) => {\n e.preventDefault()\n const startPos = direction === 'horizontal' ? e.clientX : e.clientY\n draggingRef.current = {\n index,\n startPos,\n startSizes: [...currentSizes],\n }\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n if (!draggingRef.current || !containerRef.current) return\n\n const { index: dragIndex, startPos: dragStartPos, startSizes } = draggingRef.current\n const containerRect = containerRef.current.getBoundingClientRect()\n const containerSize = direction === 'horizontal' ? containerRect.width : containerRect.height\n const currentPos = direction === 'horizontal' ? moveEvent.clientX : moveEvent.clientY\n\n // Calculate delta as percentage\n const gutterCount = panelCount - 1\n const totalGutterSize = gutterCount * gutterSize\n const availableSize = containerSize - totalGutterSize\n const deltaPixels = currentPos - dragStartPos\n const deltaPercent = (deltaPixels / availableSize) * 100\n\n // Get min sizes for panels\n const panel1Props = panels[dragIndex]?.props || {}\n const panel2Props = panels[dragIndex + 1]?.props || {}\n const minSize1 = panel1Props.minSize ?? minSize\n const minSize2 = panel2Props.minSize ?? minSize\n const minPercent1 = (minSize1 / availableSize) * 100\n const minPercent2 = (minSize2 / availableSize) * 100\n\n // Calculate new sizes\n let newSize1 = startSizes[dragIndex] + deltaPercent\n let newSize2 = startSizes[dragIndex + 1] - deltaPercent\n\n // Apply min constraints\n if (newSize1 < minPercent1) {\n newSize1 = minPercent1\n newSize2 = startSizes[dragIndex] + startSizes[dragIndex + 1] - minPercent1\n }\n if (newSize2 < minPercent2) {\n newSize2 = minPercent2\n newSize1 = startSizes[dragIndex] + startSizes[dragIndex + 1] - minPercent2\n }\n\n // Apply max constraints\n const maxSize1 = panel1Props.maxSize\n const maxSize2 = panel2Props.maxSize\n if (maxSize1) {\n const maxPercent1 = (maxSize1 / availableSize) * 100\n if (newSize1 > maxPercent1) {\n newSize1 = maxPercent1\n newSize2 = startSizes[dragIndex] + startSizes[dragIndex + 1] - maxPercent1\n }\n }\n if (maxSize2) {\n const maxPercent2 = (maxSize2 / availableSize) * 100\n if (newSize2 > maxPercent2) {\n newSize2 = maxPercent2\n newSize1 = startSizes[dragIndex] + startSizes[dragIndex + 1] - maxPercent2\n }\n }\n\n const newSizes = [...startSizes]\n newSizes[dragIndex] = newSize1\n newSizes[dragIndex + 1] = newSize2\n updateSizes(newSizes)\n }\n\n const handleMouseUp = () => {\n draggingRef.current = null\n document.removeEventListener('mousemove', handleMouseMove)\n document.removeEventListener('mouseup', handleMouseUp)\n document.body.style.cursor = ''\n document.body.style.userSelect = ''\n }\n\n document.addEventListener('mousemove', handleMouseMove)\n document.addEventListener('mouseup', handleMouseUp)\n document.body.style.cursor = direction === 'horizontal' ? 'col-resize' : 'row-resize'\n document.body.style.userSelect = 'none'\n },\n [direction, currentSizes, panelCount, gutterSize, panels, minSize, updateSizes]\n )\n\n const handleKeyDown = useCallback(\n (index: number, e: React.KeyboardEvent) => {\n const step = e.shiftKey ? 10 : 1\n let delta = 0\n\n if (direction === 'horizontal') {\n if (e.key === 'ArrowLeft') delta = -step\n else if (e.key === 'ArrowRight') delta = step\n } else {\n if (e.key === 'ArrowUp') delta = -step\n else if (e.key === 'ArrowDown') delta = step\n }\n\n if (delta !== 0) {\n e.preventDefault()\n const newSizes = [...currentSizes]\n const minPercent = 5 // Minimum 5% when using keyboard\n\n let newSize1 = newSizes[index] + delta\n let newSize2 = newSizes[index + 1] - delta\n\n if (newSize1 >= minPercent && newSize2 >= minPercent) {\n newSizes[index] = newSize1\n newSizes[index + 1] = newSize2\n updateSizes(newSizes)\n }\n }\n },\n [direction, currentSizes, updateSizes]\n )\n\n const isHorizontal = direction === 'horizontal'\n\n return (\n <div\n ref={containerRef}\n className={`flex ${isHorizontal ? 'flex-row' : 'flex-col'} h-full w-full ${className}`}\n >\n {panels.map((panel, index) => {\n const panelProps = panel.props\n const isLast = index === panels.length - 1\n\n return (\n <React.Fragment key={index}>\n <div\n ref={(el) => {\n panelsRef.current[index] = el\n }}\n className={`overflow-auto ${panelProps.className || ''}`}\n style={{\n [isHorizontal ? 'width' : 'height']: `calc(${currentSizes[index]}% - ${\n ((panelCount - 1) * gutterSize) / panelCount\n }px)`,\n flexShrink: 0,\n }}\n >\n {panelProps.children}\n </div>\n {!isLast && (\n <div\n role=\"separator\"\n aria-orientation={isHorizontal ? 'vertical' : 'horizontal'}\n aria-valuenow={Math.round(currentSizes[index])}\n tabIndex={0}\n className={`\n flex-shrink-0 bg-base-300 hover:bg-primary/30 active:bg-primary/50\n transition-colors duration-150 relative group\n ${isHorizontal ? 'cursor-col-resize' : 'cursor-row-resize'}\n `}\n style={{\n [isHorizontal ? 'width' : 'height']: `${gutterSize}px`,\n }}\n onMouseDown={(e) => handleMouseDown(index, e)}\n onKeyDown={(e) => handleKeyDown(index, e)}\n >\n {/* Grip indicator */}\n <div\n className={`\n absolute inset-0 flex items-center justify-center\n ${isHorizontal ? 'flex-col gap-0.5' : 'flex-row gap-0.5'}\n `}\n >\n <div className=\"w-1 h-1 rounded-full bg-base-content/30 group-hover:bg-primary/60\" />\n <div className=\"w-1 h-1 rounded-full bg-base-content/30 group-hover:bg-primary/60\" />\n <div className=\"w-1 h-1 rounded-full bg-base-content/30 group-hover:bg-primary/60\" />\n </div>\n </div>\n )}\n </React.Fragment>\n )\n })}\n </div>\n )\n}\n\nSplitter.Panel = Panel\n"],"names":["Panel","children","Splitter","direction","sizes","defaultSizes","onSizesChange","gutterSize","minSize","className","containerRef","useRef","panelsRef","draggingRef","panels","React","child","panelCount","getInitialSizes","useCallback","equalSize","internalSizes","setInternalSizes","useState","currentSizes","useEffect","updateSizes","newSizes","handleMouseDown","index","startPos","handleMouseMove","moveEvent","dragIndex","dragStartPos","startSizes","containerRect","containerSize","currentPos","totalGutterSize","availableSize","deltaPercent","panel1Props","panel2Props","minSize1","minSize2","minPercent1","minPercent2","newSize1","newSize2","maxSize1","maxSize2","maxPercent1","maxPercent2","handleMouseUp","handleKeyDown","step","delta","minPercent","isHorizontal","jsx","panel","panelProps","isLast","jsxs","el","e"],"mappings":"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"}
1
+ {"version":3,"file":"index75.js","sources":["../src/components/Splitter.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback, useEffect } from 'react'\n\nexport interface SplitterPanelProps {\n children: React.ReactNode\n defaultSize?: number\n size?: number\n minSize?: number\n maxSize?: number\n collapsible?: boolean\n collapsed?: boolean\n defaultCollapsed?: boolean\n onCollapse?: (collapsed: boolean) => void\n resizable?: boolean\n className?: string\n}\n\nexport interface SplitterProps {\n children: React.ReactNode\n direction?: 'horizontal' | 'vertical'\n sizes?: number[]\n defaultSizes?: number[]\n onSizesChange?: (sizes: number[]) => void\n gutterSize?: number\n minSize?: number\n className?: string\n}\n\nconst Panel: React.FC<SplitterPanelProps> = ({ children }) => {\n return <>{children}</>\n}\n\nexport const Splitter: React.FC<SplitterProps> & { Panel: typeof Panel } = ({\n children,\n direction = 'horizontal',\n sizes,\n defaultSizes,\n onSizesChange,\n gutterSize = 8,\n minSize = 50,\n className = '',\n}) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const panelsRef = useRef<(HTMLDivElement | null)[]>([])\n const draggingRef = useRef<{ index: number; startPos: number; startSizes: number[] } | null>(null)\n\n // Extract panel props from children\n const panels = React.Children.toArray(children).filter(\n (child): child is React.ReactElement<SplitterPanelProps> =>\n React.isValidElement(child)\n )\n\n const panelCount = panels.length\n\n // Track collapsed state for each panel\n const [collapsedStates, setCollapsedStates] = useState<boolean[]>(() =>\n panels.map((panel) => panel.props.defaultCollapsed ?? panel.props.collapsed ?? false)\n )\n\n // Store sizes before collapse for restoration\n const sizesBeforeCollapseRef = useRef<number[]>([])\n\n // Initialize sizes from panel props or defaults\n const getInitialSizes = useCallback(() => {\n // First check if any panels have defaultSize\n const panelDefaultSizes = panels.map((panel) => panel.props.defaultSize)\n const hasAnyPanelSize = panelDefaultSizes.some((s) => s !== undefined)\n\n if (defaultSizes && defaultSizes.length === panelCount) {\n return defaultSizes\n }\n\n if (hasAnyPanelSize) {\n // Calculate sizes from panel props\n const definedTotal = panelDefaultSizes.reduce<number>((sum, s) => sum + (s ?? 0), 0)\n const undefinedCount = panelDefaultSizes.filter((s) => s === undefined).length\n const remainingSize = Math.max(0, 100 - definedTotal)\n const sizePerUndefined = undefinedCount > 0 ? remainingSize / undefinedCount : 0\n\n return panelDefaultSizes.map((s) => s ?? sizePerUndefined)\n }\n\n // Equal distribution\n const equalSize = 100 / panelCount\n return Array(panelCount).fill(equalSize)\n }, [defaultSizes, panelCount, panels])\n\n const [internalSizes, setInternalSizes] = useState<number[]>(getInitialSizes)\n\n // Handle controlled sizes from panel props\n const getControlledSizes = useCallback(() => {\n const panelSizes = panels.map((panel) => panel.props.size)\n const hasControlledPanel = panelSizes.some((s) => s !== undefined)\n\n if (!hasControlledPanel) return null\n\n // Mix controlled and uncontrolled\n const definedTotal = panelSizes.reduce<number>((sum, s) => sum + (s ?? 0), 0)\n const undefinedCount = panelSizes.filter((s) => s === undefined).length\n const remainingSize = Math.max(0, 100 - definedTotal)\n const sizePerUndefined = undefinedCount > 0 ? remainingSize / undefinedCount : 0\n\n return panelSizes.map((s, i) => s ?? internalSizes[i] ?? sizePerUndefined)\n }, [panels, internalSizes])\n\n const currentSizes = sizes || getControlledSizes() || internalSizes\n\n // Update internal sizes when panel count changes\n useEffect(() => {\n if (!sizes && internalSizes.length !== panelCount) {\n setInternalSizes(getInitialSizes())\n }\n }, [panelCount, sizes, internalSizes.length, getInitialSizes])\n\n // Sync controlled collapsed states from props\n useEffect(() => {\n const newCollapsedStates = panels.map((panel, i) =>\n panel.props.collapsed ?? collapsedStates[i] ?? false\n )\n const hasChange = newCollapsedStates.some((s, i) => s !== collapsedStates[i])\n if (hasChange) {\n setCollapsedStates(newCollapsedStates)\n }\n }, [panels.map(p => p.props.collapsed).join(',')])\n\n const updateSizes = useCallback(\n (newSizes: number[]) => {\n if (!sizes) {\n setInternalSizes(newSizes)\n }\n onSizesChange?.(newSizes)\n },\n [sizes, onSizesChange]\n )\n\n const toggleCollapse = useCallback(\n (panelIndex: number) => {\n const panel = panels[panelIndex]\n if (!panel?.props.collapsible) return\n\n const isCurrentlyCollapsed = collapsedStates[panelIndex]\n const newCollapsed = !isCurrentlyCollapsed\n\n // Update collapsed state\n const newCollapsedStates = [...collapsedStates]\n newCollapsedStates[panelIndex] = newCollapsed\n setCollapsedStates(newCollapsedStates)\n\n // Call panel's onCollapse callback\n panel.props.onCollapse?.(newCollapsed)\n\n // Adjust sizes\n if (newCollapsed) {\n // Store current sizes before collapse\n sizesBeforeCollapseRef.current = [...currentSizes]\n\n // Collapse: set to minimum (we'll use 0 for collapsed)\n const collapsedSize = 0\n const sizeToRedistribute = currentSizes[panelIndex] - collapsedSize\n\n // Find panels that can receive the size\n const otherPanels = currentSizes\n .map((s, i) => ({ size: s, index: i }))\n .filter((_, i) => i !== panelIndex && !newCollapsedStates[i])\n\n if (otherPanels.length > 0) {\n const sizePerPanel = sizeToRedistribute / otherPanels.length\n const newSizes = currentSizes.map((s, i) => {\n if (i === panelIndex) return collapsedSize\n if (!newCollapsedStates[i]) return s + sizePerPanel\n return s\n })\n updateSizes(newSizes)\n }\n } else {\n // Expand: restore previous size\n const previousSize = sizesBeforeCollapseRef.current[panelIndex] || (100 / panelCount)\n\n // Take size from other panels proportionally\n const otherPanels = currentSizes\n .map((s, i) => ({ size: s, index: i }))\n .filter((_, i) => i !== panelIndex && !newCollapsedStates[i])\n\n const totalOtherSize = otherPanels.reduce((sum, p) => sum + p.size, 0)\n\n if (totalOtherSize > 0) {\n const newSizes = currentSizes.map((s, i) => {\n if (i === panelIndex) return previousSize\n if (!newCollapsedStates[i]) {\n const proportion = s / totalOtherSize\n return s - previousSize * proportion\n }\n return s\n })\n updateSizes(newSizes)\n }\n }\n },\n [panels, collapsedStates, currentSizes, panelCount, updateSizes]\n )\n\n const handleMouseDown = useCallback(\n (index: number, e: React.MouseEvent) => {\n // Check if either panel is non-resizable\n const panel1Props = panels[index]?.props || {}\n const panel2Props = panels[index + 1]?.props || {}\n\n if (panel1Props.resizable === false || panel2Props.resizable === false) {\n return // Don't allow dragging\n }\n\n // Don't allow dragging if either panel is collapsed\n if (collapsedStates[index] || collapsedStates[index + 1]) {\n return\n }\n\n e.preventDefault()\n const startPos = direction === 'horizontal' ? e.clientX : e.clientY\n draggingRef.current = {\n index,\n startPos,\n startSizes: [...currentSizes],\n }\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n if (!draggingRef.current || !containerRef.current) return\n\n const { index: dragIndex, startPos: dragStartPos, startSizes } = draggingRef.current\n const containerRect = containerRef.current.getBoundingClientRect()\n const containerSize = direction === 'horizontal' ? containerRect.width : containerRect.height\n const currentPos = direction === 'horizontal' ? moveEvent.clientX : moveEvent.clientY\n\n // Calculate delta as percentage\n const gutterCount = panelCount - 1\n const totalGutterSize = gutterCount * gutterSize\n const availableSize = containerSize - totalGutterSize\n const deltaPixels = currentPos - dragStartPos\n const deltaPercent = (deltaPixels / availableSize) * 100\n\n // Get min sizes for panels\n const panel1Props = panels[dragIndex]?.props || {}\n const panel2Props = panels[dragIndex + 1]?.props || {}\n const minSize1 = panel1Props.minSize ?? minSize\n const minSize2 = panel2Props.minSize ?? minSize\n const minPercent1 = (minSize1 / availableSize) * 100\n const minPercent2 = (minSize2 / availableSize) * 100\n\n // Calculate new sizes\n let newSize1 = startSizes[dragIndex] + deltaPercent\n let newSize2 = startSizes[dragIndex + 1] - deltaPercent\n\n // Apply min constraints\n if (newSize1 < minPercent1) {\n newSize1 = minPercent1\n newSize2 = startSizes[dragIndex] + startSizes[dragIndex + 1] - minPercent1\n }\n if (newSize2 < minPercent2) {\n newSize2 = minPercent2\n newSize1 = startSizes[dragIndex] + startSizes[dragIndex + 1] - minPercent2\n }\n\n // Apply max constraints\n const maxSize1 = panel1Props.maxSize\n const maxSize2 = panel2Props.maxSize\n if (maxSize1) {\n const maxPercent1 = (maxSize1 / availableSize) * 100\n if (newSize1 > maxPercent1) {\n newSize1 = maxPercent1\n newSize2 = startSizes[dragIndex] + startSizes[dragIndex + 1] - maxPercent1\n }\n }\n if (maxSize2) {\n const maxPercent2 = (maxSize2 / availableSize) * 100\n if (newSize2 > maxPercent2) {\n newSize2 = maxPercent2\n newSize1 = startSizes[dragIndex] + startSizes[dragIndex + 1] - maxPercent2\n }\n }\n\n const newSizes = [...startSizes]\n newSizes[dragIndex] = newSize1\n newSizes[dragIndex + 1] = newSize2\n updateSizes(newSizes)\n }\n\n const handleMouseUp = () => {\n draggingRef.current = null\n document.removeEventListener('mousemove', handleMouseMove)\n document.removeEventListener('mouseup', handleMouseUp)\n document.body.style.cursor = ''\n document.body.style.userSelect = ''\n }\n\n document.addEventListener('mousemove', handleMouseMove)\n document.addEventListener('mouseup', handleMouseUp)\n document.body.style.cursor = direction === 'horizontal' ? 'col-resize' : 'row-resize'\n document.body.style.userSelect = 'none'\n },\n [direction, currentSizes, panelCount, gutterSize, panels, minSize, updateSizes, collapsedStates]\n )\n\n const handleKeyDown = useCallback(\n (index: number, e: React.KeyboardEvent) => {\n // Don't allow keyboard resize if either panel is collapsed\n if (collapsedStates[index] || collapsedStates[index + 1]) {\n return\n }\n\n const step = e.shiftKey ? 10 : 1\n let delta = 0\n\n if (direction === 'horizontal') {\n if (e.key === 'ArrowLeft') delta = -step\n else if (e.key === 'ArrowRight') delta = step\n } else {\n if (e.key === 'ArrowUp') delta = -step\n else if (e.key === 'ArrowDown') delta = step\n }\n\n if (delta !== 0) {\n e.preventDefault()\n const newSizes = [...currentSizes]\n const minPercent = 5 // Minimum 5% when using keyboard\n\n let newSize1 = newSizes[index] + delta\n let newSize2 = newSizes[index + 1] - delta\n\n if (newSize1 >= minPercent && newSize2 >= minPercent) {\n newSizes[index] = newSize1\n newSizes[index + 1] = newSize2\n updateSizes(newSizes)\n }\n }\n },\n [direction, currentSizes, updateSizes, collapsedStates]\n )\n\n const isHorizontal = direction === 'horizontal'\n\n // Determine if gutter should show collapse buttons\n const getCollapseConfig = (index: number) => {\n const panel1 = panels[index]\n const panel2 = panels[index + 1]\n const panel1Collapsible = panel1?.props.collapsible\n const panel2Collapsible = panel2?.props.collapsible\n const panel1Collapsed = collapsedStates[index]\n const panel2Collapsed = collapsedStates[index + 1]\n\n return {\n showStart: panel1Collapsible && !panel2Collapsed,\n showEnd: panel2Collapsible && !panel1Collapsed,\n panel1Collapsed,\n panel2Collapsed,\n }\n }\n\n return (\n <div\n ref={containerRef}\n className={`flex ${isHorizontal ? 'flex-row' : 'flex-col'} h-full w-full ${className}`}\n >\n {panels.map((panel, index) => {\n const panelProps = panel.props\n const isLast = index === panels.length - 1\n const isCollapsed = collapsedStates[index]\n const canResize = panelProps.resizable !== false && !isCollapsed\n\n return (\n <React.Fragment key={index}>\n <div\n ref={(el) => {\n panelsRef.current[index] = el\n }}\n className={`overflow-auto ${panelProps.className || ''}`}\n style={{\n [isHorizontal ? 'width' : 'height']: isCollapsed\n ? '0px'\n : `calc(${currentSizes[index]}% - ${((panelCount - 1) * gutterSize) / panelCount}px)`,\n flexShrink: 0,\n overflow: isCollapsed ? 'hidden' : 'auto',\n }}\n data-collapsed={isCollapsed}\n >\n {panelProps.children}\n </div>\n {!isLast && (\n <div\n role=\"separator\"\n aria-orientation={isHorizontal ? 'vertical' : 'horizontal'}\n aria-valuenow={Math.round(currentSizes[index])}\n tabIndex={canResize ? 0 : -1}\n className={`\n flex-shrink-0 bg-base-300 transition-colors duration-150 relative group\n ${canResize ? 'hover:bg-primary/30 active:bg-primary/50' : ''}\n ${canResize ? (isHorizontal ? 'cursor-col-resize' : 'cursor-row-resize') : 'cursor-default'}\n `}\n style={{\n [isHorizontal ? 'width' : 'height']: `${gutterSize}px`,\n }}\n onMouseDown={(e) => handleMouseDown(index, e)}\n onKeyDown={(e) => handleKeyDown(index, e)}\n >\n {/* Collapse buttons */}\n {(() => {\n const { showStart, showEnd, panel1Collapsed, panel2Collapsed } = getCollapseConfig(index)\n\n if (!showStart && !showEnd) {\n // Just show grip indicator\n return (\n <div\n className={`\n absolute inset-0 flex items-center justify-center\n ${isHorizontal ? 'flex-col gap-0.5' : 'flex-row gap-0.5'}\n `}\n >\n <div className=\"w-1 h-1 rounded-full bg-base-content/30 group-hover:bg-primary/60\" />\n <div className=\"w-1 h-1 rounded-full bg-base-content/30 group-hover:bg-primary/60\" />\n <div className=\"w-1 h-1 rounded-full bg-base-content/30 group-hover:bg-primary/60\" />\n </div>\n )\n }\n\n return (\n <div\n className={`\n absolute inset-0 flex items-center justify-center\n ${isHorizontal ? 'flex-col' : 'flex-row'}\n `}\n >\n {showStart && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n toggleCollapse(index)\n }}\n className={`\n p-0.5 rounded hover:bg-base-content/20 transition-colors\n ${isHorizontal ? '' : ''}\n `}\n aria-label={panel1Collapsed ? 'Expand panel' : 'Collapse panel'}\n >\n <svg\n className={`w-3 h-3 text-base-content/50 hover:text-base-content transition-transform ${\n panel1Collapsed\n ? isHorizontal ? 'rotate-180' : '-rotate-90'\n : isHorizontal ? 'rotate-0' : 'rotate-90'\n }`}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 19l-7-7 7-7\" />\n </svg>\n </button>\n )}\n {showEnd && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n toggleCollapse(index + 1)\n }}\n className={`\n p-0.5 rounded hover:bg-base-content/20 transition-colors\n `}\n aria-label={panel2Collapsed ? 'Expand panel' : 'Collapse panel'}\n >\n <svg\n className={`w-3 h-3 text-base-content/50 hover:text-base-content transition-transform ${\n panel2Collapsed\n ? isHorizontal ? 'rotate-0' : 'rotate-90'\n : isHorizontal ? 'rotate-180' : '-rotate-90'\n }`}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 19l-7-7 7-7\" />\n </svg>\n </button>\n )}\n </div>\n )\n })()}\n </div>\n )}\n </React.Fragment>\n )\n })}\n </div>\n )\n}\n\nSplitter.Panel = Panel\n"],"names":["Panel","children","Splitter","direction","sizes","defaultSizes","onSizesChange","gutterSize","minSize","className","containerRef","useRef","panelsRef","draggingRef","panels","React","child","panelCount","collapsedStates","setCollapsedStates","useState","panel","sizesBeforeCollapseRef","getInitialSizes","useCallback","panelDefaultSizes","hasAnyPanelSize","definedTotal","sum","s","undefinedCount","remainingSize","sizePerUndefined","equalSize","internalSizes","setInternalSizes","getControlledSizes","panelSizes","i","currentSizes","useEffect","newCollapsedStates","p","updateSizes","newSizes","toggleCollapse","panelIndex","newCollapsed","collapsedSize","sizeToRedistribute","otherPanels","_","sizePerPanel","previousSize","totalOtherSize","proportion","handleMouseDown","index","e","panel1Props","panel2Props","startPos","handleMouseMove","moveEvent","dragIndex","dragStartPos","startSizes","containerRect","containerSize","currentPos","totalGutterSize","availableSize","deltaPercent","minSize1","minSize2","minPercent1","minPercent2","newSize1","newSize2","maxSize1","maxSize2","maxPercent1","maxPercent2","handleMouseUp","handleKeyDown","step","delta","minPercent","isHorizontal","getCollapseConfig","panel1","panel2","panel1Collapsible","panel2Collapsible","panel1Collapsed","panel2Collapsed","jsx","panelProps","isLast","isCollapsed","canResize","jsxs","el","showStart","showEnd"],"mappings":"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"}
package/dist/index76.js CHANGED
@@ -1,55 +1,25 @@
1
- import { jsx as u } from "react/jsx-runtime";
2
- const j = ({
3
- children: s,
4
- direction: a = "vertical",
5
- spacing: n = 4,
6
- align: e,
7
- justify: t,
8
- wrap: r = !1,
9
- className: c = "",
10
- ...i
11
- }) => {
12
- const l = {
13
- vertical: "flex-col",
14
- horizontal: "flex-row"
15
- }, o = {
16
- 0: "gap-0",
17
- 1: "gap-1",
18
- 2: "gap-2",
19
- 3: "gap-3",
20
- 4: "gap-4",
21
- 5: "gap-5",
22
- 6: "gap-6",
23
- 8: "gap-8",
24
- 10: "gap-10",
25
- 12: "gap-12",
26
- 16: "gap-16",
27
- 20: "gap-20",
28
- 24: "gap-24"
29
- }, p = e && {
30
- start: "items-start",
31
- center: "items-center",
32
- end: "items-end",
33
- stretch: "items-stretch"
34
- }[e], g = t && {
35
- start: "justify-start",
36
- center: "justify-center",
37
- end: "justify-end",
38
- between: "justify-between",
39
- around: "justify-around",
40
- evenly: "justify-evenly"
41
- }[t], f = [
42
- "flex",
43
- l[a],
44
- o[n],
45
- p,
46
- g,
47
- r && "flex-wrap",
48
- c
1
+ import { jsx as t, jsxs as r } from "react/jsx-runtime";
2
+ function o({ children: s, className: a = "", vertical: e = !1, ...i }) {
3
+ const c = [
4
+ "stats",
5
+ e ? "stats-vertical" : "stats-horizontal",
6
+ a
49
7
  ].filter(Boolean).join(" ");
50
- return /* @__PURE__ */ u("div", { className: f, ...i, children: s });
51
- };
8
+ return /* @__PURE__ */ t("div", { className: c, ...i, children: s });
9
+ }
10
+ function d({ title: s, value: a, desc: e, figure: i, actions: c, className: l = "", ...n }) {
11
+ return /* @__PURE__ */ r("div", { className: `stat ${l}`, ...n, children: [
12
+ i && /* @__PURE__ */ t("div", { className: "stat-figure", children: i }),
13
+ s && /* @__PURE__ */ t("div", { className: "stat-title", children: s }),
14
+ a && /* @__PURE__ */ t("div", { className: "stat-value", children: a }),
15
+ e && /* @__PURE__ */ t("div", { className: "stat-desc", children: e }),
16
+ c && /* @__PURE__ */ t("div", { className: "stat-actions", children: c })
17
+ ] });
18
+ }
19
+ const v = Object.assign(o, {
20
+ Stat: d
21
+ });
52
22
  export {
53
- j as Stack
23
+ v as Stats
54
24
  };
55
25
  //# sourceMappingURL=index76.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index76.js","sources":["../src/components/Stack.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n direction?: 'vertical' | 'horizontal'\n spacing?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24\n align?: 'start' | 'center' | 'end' | 'stretch'\n justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly'\n wrap?: boolean\n}\n\nexport const Stack: React.FC<StackProps> = ({\n children,\n direction = 'vertical',\n spacing = 4,\n align,\n justify,\n wrap = false,\n className = '',\n ...rest\n}) => {\n const directionClasses = {\n vertical: 'flex-col',\n horizontal: 'flex-row',\n }\n\n const spacingClasses = {\n 0: 'gap-0',\n 1: 'gap-1',\n 2: 'gap-2',\n 3: 'gap-3',\n 4: 'gap-4',\n 5: 'gap-5',\n 6: 'gap-6',\n 8: 'gap-8',\n 10: 'gap-10',\n 12: 'gap-12',\n 16: 'gap-16',\n 20: 'gap-20',\n 24: 'gap-24',\n }\n\n const alignClasses = align && {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n }[align]\n\n const justifyClasses = justify && {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n }[justify]\n\n const classes = [\n 'flex',\n directionClasses[direction],\n spacingClasses[spacing],\n alignClasses,\n justifyClasses,\n wrap && 'flex-wrap',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return <div className={classes} {...rest}>{children}</div>\n}\n"],"names":["Stack","children","direction","spacing","align","justify","wrap","className","rest","directionClasses","spacingClasses","alignClasses","justifyClasses","classes"],"mappings":";AAWO,MAAMA,IAA8B,CAAC;AAAA,EAC1C,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,SAAAC,IAAU;AAAA,EACV,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAmB;AAAA,IACvB,UAAU;AAAA,IACV,YAAY;AAAA,EAAA,GAGRC,IAAiB;AAAA,IACrB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAGAC,IAAeP,KAAS;AAAA,IAC5B,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,SAAS;AAAA,EAAA,EACTA,CAAK,GAEDQ,IAAiBP,KAAW;AAAA,IAChC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,EAAA,EACRA,CAAO,GAEHQ,IAAU;AAAA,IACd;AAAA,IACAJ,EAAiBP,CAAS;AAAA,IAC1BQ,EAAeP,CAAO;AAAA,IACtBQ;AAAA,IACAC;AAAA,IACAN,KAAQ;AAAA,IACRC;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BAAQ,OAAA,EAAI,WAAWM,GAAU,GAAGL,GAAO,UAAAP,GAAS;AACtD;"}
1
+ {"version":3,"file":"index76.js","sources":["../src/components/Stat.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface StatsProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n vertical?: boolean\n}\n\nexport interface StatProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n title?: React.ReactNode\n value?: React.ReactNode\n desc?: React.ReactNode\n figure?: React.ReactNode\n actions?: React.ReactNode\n}\n\nfunction StatsRoot({ children, className = '', vertical = false, ...rest }: StatsProps) {\n const classes = [\n 'stats',\n vertical ? 'stats-vertical' : 'stats-horizontal',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return <div className={classes} {...rest}>{children}</div>\n}\n\nfunction StatItem({ title, value, desc, figure, actions, className = '', ...rest }: StatProps) {\n return (\n <div className={`stat ${className}`} {...rest}>\n {figure && <div className=\"stat-figure\">{figure}</div>}\n {title && <div className=\"stat-title\">{title}</div>}\n {value && <div className=\"stat-value\">{value}</div>}\n {desc && <div className=\"stat-desc\">{desc}</div>}\n {actions && <div className=\"stat-actions\">{actions}</div>}\n </div>\n )\n}\n\nexport const Stats = Object.assign(StatsRoot, {\n Stat: StatItem,\n})\n"],"names":["StatsRoot","children","className","vertical","rest","classes","StatItem","title","value","desc","figure","actions","jsx","Stats"],"mappings":";AAeA,SAASA,EAAU,EAAE,UAAAC,GAAU,WAAAC,IAAY,IAAI,UAAAC,IAAW,IAAO,GAAGC,KAAoB;AACtF,QAAMC,IAAU;AAAA,IACd;AAAA,IACAF,IAAW,mBAAmB;AAAA,IAC9BD;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BAAQ,OAAA,EAAI,WAAWG,GAAU,GAAGD,GAAO,UAAAH,GAAS;AACtD;AAEA,SAASK,EAAS,EAAE,OAAAC,GAAO,OAAAC,GAAO,MAAAC,GAAM,QAAAC,GAAQ,SAAAC,GAAS,WAAAT,IAAY,IAAI,GAAGE,KAAmB;AAC7F,2BACG,OAAA,EAAI,WAAW,QAAQF,CAAS,IAAK,GAAGE,GACtC,UAAA;AAAA,IAAAM,KAAU,gBAAAE,EAAC,OAAA,EAAI,WAAU,eAAe,UAAAF,GAAO;AAAA,IAC/CH,KAAS,gBAAAK,EAAC,OAAA,EAAI,WAAU,cAAc,UAAAL,GAAM;AAAA,IAC5CC,KAAS,gBAAAI,EAAC,OAAA,EAAI,WAAU,cAAc,UAAAJ,GAAM;AAAA,IAC5CC,KAAQ,gBAAAG,EAAC,OAAA,EAAI,WAAU,aAAa,UAAAH,GAAK;AAAA,IACzCE,KAAW,gBAAAC,EAAC,OAAA,EAAI,WAAU,gBAAgB,UAAAD,EAAA,CAAQ;AAAA,EAAA,GACrD;AAEJ;AAEO,MAAME,IAAQ,OAAO,OAAOb,GAAW;AAAA,EAC5C,MAAMM;AACR,CAAC;"}
package/dist/index77.js CHANGED
@@ -1,25 +1,34 @@
1
- import { jsx as t, jsxs as r } from "react/jsx-runtime";
2
- function o({ children: s, className: a = "", vertical: e = !1, ...i }) {
3
- const c = [
4
- "stats",
5
- e ? "stats-vertical" : "stats-horizontal",
6
- a
7
- ].filter(Boolean).join(" ");
8
- return /* @__PURE__ */ t("div", { className: c, ...i, children: s });
9
- }
10
- function d({ title: s, value: a, desc: e, figure: i, actions: c, className: l = "", ...n }) {
11
- return /* @__PURE__ */ r("div", { className: `stat ${l}`, ...n, children: [
12
- i && /* @__PURE__ */ t("div", { className: "stat-figure", children: i }),
13
- s && /* @__PURE__ */ t("div", { className: "stat-title", children: s }),
14
- a && /* @__PURE__ */ t("div", { className: "stat-value", children: a }),
15
- e && /* @__PURE__ */ t("div", { className: "stat-desc", children: e }),
16
- c && /* @__PURE__ */ t("div", { className: "stat-actions", children: c })
17
- ] });
18
- }
19
- const v = Object.assign(o, {
20
- Stat: d
21
- });
1
+ import { jsxs as c, jsx as a } from "react/jsx-runtime";
2
+ const l = {
3
+ neutral: "status-neutral",
4
+ primary: "status-primary",
5
+ secondary: "status-secondary",
6
+ accent: "status-accent",
7
+ info: "status-info",
8
+ success: "status-success",
9
+ warning: "status-warning",
10
+ error: "status-error"
11
+ }, m = {
12
+ xs: "status-xs",
13
+ sm: "status-sm",
14
+ md: "status-md",
15
+ lg: "status-lg",
16
+ xl: "status-xl"
17
+ }, d = ({
18
+ type: e = "neutral",
19
+ size: r = "md",
20
+ ping: n = !1,
21
+ bounce: i = !1,
22
+ label: t,
23
+ className: u = ""
24
+ }) => {
25
+ const s = `status ${l[e]} ${m[r]} ${i ? "animate-bounce" : ""} ${u}`.trim();
26
+ return n ? /* @__PURE__ */ c("div", { className: "inline-grid *:[grid-area:1/1]", "aria-label": t, children: [
27
+ /* @__PURE__ */ a("div", { className: `${s} animate-ping` }),
28
+ /* @__PURE__ */ a("div", { className: s })
29
+ ] }) : /* @__PURE__ */ a("div", { className: s, "aria-label": t });
30
+ };
22
31
  export {
23
- v as Stats
32
+ d as Status
24
33
  };
25
34
  //# sourceMappingURL=index77.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index77.js","sources":["../src/components/Stat.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface StatsProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n vertical?: boolean\n}\n\nexport interface StatProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n title?: React.ReactNode\n value?: React.ReactNode\n desc?: React.ReactNode\n figure?: React.ReactNode\n actions?: React.ReactNode\n}\n\nfunction StatsRoot({ children, className = '', vertical = false, ...rest }: StatsProps) {\n const classes = [\n 'stats',\n vertical ? 'stats-vertical' : 'stats-horizontal',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return <div className={classes} {...rest}>{children}</div>\n}\n\nfunction StatItem({ title, value, desc, figure, actions, className = '', ...rest }: StatProps) {\n return (\n <div className={`stat ${className}`} {...rest}>\n {figure && <div className=\"stat-figure\">{figure}</div>}\n {title && <div className=\"stat-title\">{title}</div>}\n {value && <div className=\"stat-value\">{value}</div>}\n {desc && <div className=\"stat-desc\">{desc}</div>}\n {actions && <div className=\"stat-actions\">{actions}</div>}\n </div>\n )\n}\n\nexport const Stats = Object.assign(StatsRoot, {\n Stat: StatItem,\n})\n"],"names":["StatsRoot","children","className","vertical","rest","classes","StatItem","title","value","desc","figure","actions","jsx","Stats"],"mappings":";AAeA,SAASA,EAAU,EAAE,UAAAC,GAAU,WAAAC,IAAY,IAAI,UAAAC,IAAW,IAAO,GAAGC,KAAoB;AACtF,QAAMC,IAAU;AAAA,IACd;AAAA,IACAF,IAAW,mBAAmB;AAAA,IAC9BD;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BAAQ,OAAA,EAAI,WAAWG,GAAU,GAAGD,GAAO,UAAAH,GAAS;AACtD;AAEA,SAASK,EAAS,EAAE,OAAAC,GAAO,OAAAC,GAAO,MAAAC,GAAM,QAAAC,GAAQ,SAAAC,GAAS,WAAAT,IAAY,IAAI,GAAGE,KAAmB;AAC7F,2BACG,OAAA,EAAI,WAAW,QAAQF,CAAS,IAAK,GAAGE,GACtC,UAAA;AAAA,IAAAM,KAAU,gBAAAE,EAAC,OAAA,EAAI,WAAU,eAAe,UAAAF,GAAO;AAAA,IAC/CH,KAAS,gBAAAK,EAAC,OAAA,EAAI,WAAU,cAAc,UAAAL,GAAM;AAAA,IAC5CC,KAAS,gBAAAI,EAAC,OAAA,EAAI,WAAU,cAAc,UAAAJ,GAAM;AAAA,IAC5CC,KAAQ,gBAAAG,EAAC,OAAA,EAAI,WAAU,aAAa,UAAAH,GAAK;AAAA,IACzCE,KAAW,gBAAAC,EAAC,OAAA,EAAI,WAAU,gBAAgB,UAAAD,EAAA,CAAQ;AAAA,EAAA,GACrD;AAEJ;AAEO,MAAME,IAAQ,OAAO,OAAOb,GAAW;AAAA,EAC5C,MAAMM;AACR,CAAC;"}
1
+ {"version":3,"file":"index77.js","sources":["../src/components/Status.tsx"],"sourcesContent":["import React from 'react'\n\nexport type StatusType = 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\nexport type StatusSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface StatusProps {\n /** Status color type */\n type?: StatusType\n /** Status size */\n size?: StatusSize\n /** Ping animation effect */\n ping?: boolean\n /** Bounce animation effect */\n bounce?: boolean\n /** Accessibility label */\n label?: string\n /** Additional CSS classes */\n className?: string\n}\n\nconst typeClasses: Record<StatusType, string> = {\n neutral: 'status-neutral',\n primary: 'status-primary',\n secondary: 'status-secondary',\n accent: 'status-accent',\n info: 'status-info',\n success: 'status-success',\n warning: 'status-warning',\n error: 'status-error',\n}\n\nconst sizeClasses: Record<StatusSize, string> = {\n xs: 'status-xs',\n sm: 'status-sm',\n md: 'status-md',\n lg: 'status-lg',\n xl: 'status-xl',\n}\n\nexport const Status: React.FC<StatusProps> = ({\n type = 'neutral',\n size = 'md',\n ping = false,\n bounce = false,\n label,\n className = '',\n}) => {\n const baseClasses = `status ${typeClasses[type]} ${sizeClasses[size]} ${bounce ? 'animate-bounce' : ''} ${className}`.trim()\n\n if (ping) {\n return (\n <div className=\"inline-grid *:[grid-area:1/1]\" aria-label={label}>\n <div className={`${baseClasses} animate-ping`} />\n <div className={baseClasses} />\n </div>\n )\n }\n\n return <div className={baseClasses} aria-label={label} />\n}\n"],"names":["typeClasses","sizeClasses","Status","type","size","ping","bounce","label","className","baseClasses","jsxs","jsx"],"mappings":";AAoBA,MAAMA,IAA0C;AAAA,EAC9C,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT,GAEMC,IAA0C;AAAA,EAC9C,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEaC,IAAgC,CAAC;AAAA,EAC5C,MAAAC,IAAO;AAAA,EACP,MAAAC,IAAO;AAAA,EACP,MAAAC,IAAO;AAAA,EACP,QAAAC,IAAS;AAAA,EACT,OAAAC;AAAA,EACA,WAAAC,IAAY;AACd,MAAM;AACJ,QAAMC,IAAc,UAAUT,EAAYG,CAAI,CAAC,IAAIF,EAAYG,CAAI,CAAC,IAAIE,IAAS,mBAAmB,EAAE,IAAIE,CAAS,GAAG,KAAA;AAEtH,SAAIH,IAEA,gBAAAK,EAAC,OAAA,EAAI,WAAU,iCAAgC,cAAYH,GACzD,UAAA;AAAA,IAAA,gBAAAI,EAAC,OAAA,EAAI,WAAW,GAAGF,CAAW,iBAAiB;AAAA,IAC/C,gBAAAE,EAAC,OAAA,EAAI,WAAWF,EAAA,CAAa;AAAA,EAAA,GAC/B,IAIG,gBAAAE,EAAC,OAAA,EAAI,WAAWF,GAAa,cAAYF,GAAO;AACzD;"}
package/dist/index78.js CHANGED
@@ -1,34 +1,25 @@
1
- import { jsxs as c, jsx as a } from "react/jsx-runtime";
2
- const l = {
3
- neutral: "status-neutral",
4
- primary: "status-primary",
5
- secondary: "status-secondary",
6
- accent: "status-accent",
7
- info: "status-info",
8
- success: "status-success",
9
- warning: "status-warning",
10
- error: "status-error"
11
- }, m = {
12
- xs: "status-xs",
13
- sm: "status-sm",
14
- md: "status-md",
15
- lg: "status-lg",
16
- xl: "status-xl"
17
- }, d = ({
18
- type: e = "neutral",
19
- size: r = "md",
20
- ping: n = !1,
21
- bounce: i = !1,
22
- label: t,
23
- className: u = ""
24
- }) => {
25
- const s = `status ${l[e]} ${m[r]} ${i ? "animate-bounce" : ""} ${u}`.trim();
26
- return n ? /* @__PURE__ */ c("div", { className: "inline-grid *:[grid-area:1/1]", "aria-label": t, children: [
27
- /* @__PURE__ */ a("div", { className: `${s} animate-ping` }),
28
- /* @__PURE__ */ a("div", { className: s })
29
- ] }) : /* @__PURE__ */ a("div", { className: s, "aria-label": t });
30
- };
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ function c({ children: e, vertical: s = !1, className: t = "", ...n }) {
3
+ const r = ["steps", s && "steps-vertical", t].filter(Boolean).join(" ");
4
+ return /* @__PURE__ */ o("ul", { className: r, ...n, children: e });
5
+ }
6
+ function p({ children: e, color: s, dataContent: t, className: n = "", ...r }) {
7
+ const a = ["step", s && {
8
+ neutral: "step-neutral",
9
+ primary: "step-primary",
10
+ secondary: "step-secondary",
11
+ accent: "step-accent",
12
+ info: "step-info",
13
+ success: "step-success",
14
+ warning: "step-warning",
15
+ error: "step-error"
16
+ }[s], n].filter(Boolean).join(" ");
17
+ return /* @__PURE__ */ o("li", { className: a, "data-content": t, ...r, children: e });
18
+ }
19
+ const u = Object.assign(c, {
20
+ Step: p
21
+ });
31
22
  export {
32
- d as Status
23
+ u as Steps
33
24
  };
34
25
  //# sourceMappingURL=index78.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index78.js","sources":["../src/components/Status.tsx"],"sourcesContent":["import React from 'react'\n\nexport type StatusType = 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\nexport type StatusSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface StatusProps {\n /** Status color type */\n type?: StatusType\n /** Status size */\n size?: StatusSize\n /** Ping animation effect */\n ping?: boolean\n /** Bounce animation effect */\n bounce?: boolean\n /** Accessibility label */\n label?: string\n /** Additional CSS classes */\n className?: string\n}\n\nconst typeClasses: Record<StatusType, string> = {\n neutral: 'status-neutral',\n primary: 'status-primary',\n secondary: 'status-secondary',\n accent: 'status-accent',\n info: 'status-info',\n success: 'status-success',\n warning: 'status-warning',\n error: 'status-error',\n}\n\nconst sizeClasses: Record<StatusSize, string> = {\n xs: 'status-xs',\n sm: 'status-sm',\n md: 'status-md',\n lg: 'status-lg',\n xl: 'status-xl',\n}\n\nexport const Status: React.FC<StatusProps> = ({\n type = 'neutral',\n size = 'md',\n ping = false,\n bounce = false,\n label,\n className = '',\n}) => {\n const baseClasses = `status ${typeClasses[type]} ${sizeClasses[size]} ${bounce ? 'animate-bounce' : ''} ${className}`.trim()\n\n if (ping) {\n return (\n <div className=\"inline-grid *:[grid-area:1/1]\" aria-label={label}>\n <div className={`${baseClasses} animate-ping`} />\n <div className={baseClasses} />\n </div>\n )\n }\n\n return <div className={baseClasses} aria-label={label} />\n}\n"],"names":["typeClasses","sizeClasses","Status","type","size","ping","bounce","label","className","baseClasses","jsxs","jsx"],"mappings":";AAoBA,MAAMA,IAA0C;AAAA,EAC9C,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT,GAEMC,IAA0C;AAAA,EAC9C,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEaC,IAAgC,CAAC;AAAA,EAC5C,MAAAC,IAAO;AAAA,EACP,MAAAC,IAAO;AAAA,EACP,MAAAC,IAAO;AAAA,EACP,QAAAC,IAAS;AAAA,EACT,OAAAC;AAAA,EACA,WAAAC,IAAY;AACd,MAAM;AACJ,QAAMC,IAAc,UAAUT,EAAYG,CAAI,CAAC,IAAIF,EAAYG,CAAI,CAAC,IAAIE,IAAS,mBAAmB,EAAE,IAAIE,CAAS,GAAG,KAAA;AAEtH,SAAIH,IAEA,gBAAAK,EAAC,OAAA,EAAI,WAAU,iCAAgC,cAAYH,GACzD,UAAA;AAAA,IAAA,gBAAAI,EAAC,OAAA,EAAI,WAAW,GAAGF,CAAW,iBAAiB;AAAA,IAC/C,gBAAAE,EAAC,OAAA,EAAI,WAAWF,EAAA,CAAa;AAAA,EAAA,GAC/B,IAIG,gBAAAE,EAAC,OAAA,EAAI,WAAWF,GAAa,cAAYF,GAAO;AACzD;"}
1
+ {"version":3,"file":"index78.js","sources":["../src/components/Steps.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface StepsProps extends React.HTMLAttributes<HTMLUListElement> {\n children: React.ReactNode\n vertical?: boolean\n}\n\nexport interface StepProps extends Omit<React.LiHTMLAttributes<HTMLLIElement>, 'color'> {\n children: React.ReactNode\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n dataContent?: string\n}\n\nfunction StepsRoot({ children, vertical = false, className = '', ...rest }: StepsProps) {\n const classes = ['steps', vertical && 'steps-vertical', className].filter(Boolean).join(' ')\n\n return <ul className={classes} {...rest}>{children}</ul>\n}\n\nfunction Step({ children, color, dataContent, className = '', ...rest }: StepProps) {\n const colorClasses = {\n neutral: 'step-neutral',\n primary: 'step-primary',\n secondary: 'step-secondary',\n accent: 'step-accent',\n info: 'step-info',\n success: 'step-success',\n warning: 'step-warning',\n error: 'step-error',\n }\n\n const classes = ['step', color && colorClasses[color], className].filter(Boolean).join(' ')\n\n return (\n <li className={classes} data-content={dataContent} {...rest}>\n {children}\n </li>\n )\n}\n\nexport const Steps = Object.assign(StepsRoot, {\n Step,\n})\n"],"names":["StepsRoot","children","vertical","className","rest","classes","Step","color","dataContent","jsx","Steps"],"mappings":";AAaA,SAASA,EAAU,EAAE,UAAAC,GAAU,UAAAC,IAAW,IAAO,WAAAC,IAAY,IAAI,GAAGC,KAAoB;AACtF,QAAMC,IAAU,CAAC,SAASH,KAAY,kBAAkBC,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE3F,2BAAQ,MAAA,EAAG,WAAWE,GAAU,GAAGD,GAAO,UAAAH,GAAS;AACrD;AAEA,SAASK,EAAK,EAAE,UAAAL,GAAU,OAAAM,GAAO,aAAAC,GAAa,WAAAL,IAAY,IAAI,GAAGC,KAAmB;AAYlF,QAAMC,IAAU,CAAC,QAAQE,KAXJ;AAAA,IACnB,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,EAAA,EAGsCA,CAAK,GAAGJ,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1F,SACE,gBAAAM,EAAC,QAAG,WAAWJ,GAAS,gBAAcG,GAAc,GAAGJ,GACpD,UAAAH,GACH;AAEJ;AAEO,MAAMS,IAAQ,OAAO,OAAOV,GAAW;AAAA,EAC5C,MAAAM;AACF,CAAC;"}