asterui 0.12.61 → 0.12.63

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 (179) hide show
  1. package/dist/components/Affix.d.ts +2 -0
  2. package/dist/components/Affix.js.map +1 -1
  3. package/dist/components/Alert.d.ts +2 -0
  4. package/dist/components/Alert.js.map +1 -1
  5. package/dist/components/Anchor.d.ts +2 -0
  6. package/dist/components/Anchor.js +79 -75
  7. package/dist/components/Anchor.js.map +1 -1
  8. package/dist/components/Autocomplete.d.ts +1 -0
  9. package/dist/components/Autocomplete.js +115 -110
  10. package/dist/components/Autocomplete.js.map +1 -1
  11. package/dist/components/Avatar.d.ts +4 -0
  12. package/dist/components/Avatar.js.map +1 -1
  13. package/dist/components/Breadcrumb.d.ts +4 -2
  14. package/dist/components/Breadcrumb.js +54 -29
  15. package/dist/components/Breadcrumb.js.map +1 -1
  16. package/dist/components/Browser.d.ts +2 -0
  17. package/dist/components/Browser.js.map +1 -1
  18. package/dist/components/Button.d.ts +5 -1
  19. package/dist/components/Button.js +117 -107
  20. package/dist/components/Button.js.map +1 -1
  21. package/dist/components/Chart.d.ts +1 -0
  22. package/dist/components/Chart.js +31 -30
  23. package/dist/components/Chart.js.map +1 -1
  24. package/dist/components/Chat.d.ts +1 -0
  25. package/dist/components/Chat.js +39 -28
  26. package/dist/components/Chat.js.map +1 -1
  27. package/dist/components/Code.d.ts +2 -0
  28. package/dist/components/Code.js.map +1 -1
  29. package/dist/components/Command.d.ts +5 -2
  30. package/dist/components/Command.js +262 -233
  31. package/dist/components/Command.js.map +1 -1
  32. package/dist/components/Container.d.ts +2 -0
  33. package/dist/components/Container.js.map +1 -1
  34. package/dist/components/ContextMenu.d.ts +4 -0
  35. package/dist/components/ContextMenu.js +157 -122
  36. package/dist/components/ContextMenu.js.map +1 -1
  37. package/dist/components/CopyButton.d.ts +2 -0
  38. package/dist/components/CopyButton.js +9 -8
  39. package/dist/components/CopyButton.js.map +1 -1
  40. package/dist/components/Countdown.d.ts +3 -3
  41. package/dist/components/Countdown.js +49 -47
  42. package/dist/components/Countdown.js.map +1 -1
  43. package/dist/components/Diff.d.ts +3 -3
  44. package/dist/components/Diff.js +14 -10
  45. package/dist/components/Diff.js.map +1 -1
  46. package/dist/components/Divider.d.ts +2 -0
  47. package/dist/components/Divider.js.map +1 -1
  48. package/dist/components/Dock.d.ts +6 -0
  49. package/dist/components/Dock.js +75 -38
  50. package/dist/components/Dock.js.map +1 -1
  51. package/dist/components/Dropdown.js +110 -110
  52. package/dist/components/Dropdown.js.map +1 -1
  53. package/dist/components/Fieldset.d.ts +2 -0
  54. package/dist/components/Fieldset.js.map +1 -1
  55. package/dist/components/FileInput.d.ts +1 -0
  56. package/dist/components/FileInput.js +26 -26
  57. package/dist/components/FileInput.js.map +1 -1
  58. package/dist/components/Filter.d.ts +1 -0
  59. package/dist/components/Filter.js +43 -40
  60. package/dist/components/Filter.js.map +1 -1
  61. package/dist/components/Flex.d.ts +1 -0
  62. package/dist/components/Flex.js +43 -42
  63. package/dist/components/Flex.js.map +1 -1
  64. package/dist/components/FloatButton.d.ts +9 -0
  65. package/dist/components/FloatButton.js +211 -136
  66. package/dist/components/FloatButton.js.map +1 -1
  67. package/dist/components/Footer.d.ts +2 -0
  68. package/dist/components/Footer.js.map +1 -1
  69. package/dist/components/Grid.d.ts +4 -0
  70. package/dist/components/Grid.js.map +1 -1
  71. package/dist/components/Hero.d.ts +2 -0
  72. package/dist/components/Hero.js.map +1 -1
  73. package/dist/components/HoverGallery.d.ts +3 -3
  74. package/dist/components/HoverGallery.js +12 -10
  75. package/dist/components/HoverGallery.js.map +1 -1
  76. package/dist/components/Input.d.ts +1 -0
  77. package/dist/components/Input.js +201 -184
  78. package/dist/components/Input.js.map +1 -1
  79. package/dist/components/Join.d.ts +2 -0
  80. package/dist/components/Join.js.map +1 -1
  81. package/dist/components/Kbd.d.ts +2 -0
  82. package/dist/components/Kbd.js.map +1 -1
  83. package/dist/components/Loading.d.ts +3 -0
  84. package/dist/components/Loading.js +58 -35
  85. package/dist/components/Loading.js.map +1 -1
  86. package/dist/components/Mask.d.ts +2 -2
  87. package/dist/components/Mask.js.map +1 -1
  88. package/dist/components/Masonry.d.ts +1 -0
  89. package/dist/components/Masonry.js +45 -42
  90. package/dist/components/Masonry.js.map +1 -1
  91. package/dist/components/Mention.d.ts +1 -0
  92. package/dist/components/Mention.js +95 -91
  93. package/dist/components/Mention.js.map +1 -1
  94. package/dist/components/MonthCalendar.d.ts +1 -0
  95. package/dist/components/MonthCalendar.js +104 -97
  96. package/dist/components/MonthCalendar.js.map +1 -1
  97. package/dist/components/Navbar.d.ts +2 -0
  98. package/dist/components/Navbar.js.map +1 -1
  99. package/dist/components/Notification.js +32 -18
  100. package/dist/components/Notification.js.map +1 -1
  101. package/dist/components/Phone.d.ts +3 -2
  102. package/dist/components/Phone.js +10 -8
  103. package/dist/components/Phone.js.map +1 -1
  104. package/dist/components/Popconfirm.js +110 -92
  105. package/dist/components/Popconfirm.js.map +1 -1
  106. package/dist/components/Popover.d.ts +2 -0
  107. package/dist/components/Popover.js.map +1 -1
  108. package/dist/components/Progress.d.ts +2 -0
  109. package/dist/components/Progress.js.map +1 -1
  110. package/dist/components/QRCode.d.ts +1 -0
  111. package/dist/components/QRCode.js +84 -55
  112. package/dist/components/QRCode.js.map +1 -1
  113. package/dist/components/RadialProgress.d.ts +1 -0
  114. package/dist/components/RadialProgress.js +19 -17
  115. package/dist/components/RadialProgress.js.map +1 -1
  116. package/dist/components/Radio.d.ts +6 -3
  117. package/dist/components/Radio.js +9 -9
  118. package/dist/components/Radio.js.map +1 -1
  119. package/dist/components/Range.d.ts +1 -0
  120. package/dist/components/Range.js +45 -43
  121. package/dist/components/Range.js.map +1 -1
  122. package/dist/components/Rating.d.ts +4 -2
  123. package/dist/components/Rating.js +83 -79
  124. package/dist/components/Rating.js.map +1 -1
  125. package/dist/components/Responsive.d.ts +4 -2
  126. package/dist/components/Responsive.js +10 -9
  127. package/dist/components/Responsive.js.map +1 -1
  128. package/dist/components/Result.d.ts +1 -0
  129. package/dist/components/Result.js +24 -22
  130. package/dist/components/Result.js.map +1 -1
  131. package/dist/components/Select.d.ts +1 -0
  132. package/dist/components/Select.js +72 -62
  133. package/dist/components/Select.js.map +1 -1
  134. package/dist/components/Skeleton.d.ts +2 -0
  135. package/dist/components/Skeleton.js.map +1 -1
  136. package/dist/components/Space.d.ts +2 -0
  137. package/dist/components/Space.js.map +1 -1
  138. package/dist/components/Splitter.d.ts +2 -0
  139. package/dist/components/Splitter.js +137 -131
  140. package/dist/components/Splitter.js.map +1 -1
  141. package/dist/components/Stat.d.ts +4 -2
  142. package/dist/components/Stat.js +19 -18
  143. package/dist/components/Stat.js.map +1 -1
  144. package/dist/components/Status.d.ts +3 -3
  145. package/dist/components/Status.js +27 -25
  146. package/dist/components/Status.js.map +1 -1
  147. package/dist/components/Steps.d.ts +4 -2
  148. package/dist/components/Steps.js +56 -52
  149. package/dist/components/Steps.js.map +1 -1
  150. package/dist/components/TextRotate.d.ts +1 -0
  151. package/dist/components/TextRotate.js +14 -12
  152. package/dist/components/TextRotate.js.map +1 -1
  153. package/dist/components/Textarea.d.ts +1 -0
  154. package/dist/components/Textarea.js +31 -30
  155. package/dist/components/Textarea.js.map +1 -1
  156. package/dist/components/ThemeController.d.ts +6 -3
  157. package/dist/components/ThemeController.js +101 -92
  158. package/dist/components/ThemeController.js.map +1 -1
  159. package/dist/components/Toggle.d.ts +2 -0
  160. package/dist/components/Toggle.js.map +1 -1
  161. package/dist/components/Tooltip.d.ts +2 -0
  162. package/dist/components/Tooltip.js +38 -32
  163. package/dist/components/Tooltip.js.map +1 -1
  164. package/dist/components/Typography.d.ts +10 -5
  165. package/dist/components/Typography.js +84 -81
  166. package/dist/components/Typography.js.map +1 -1
  167. package/dist/components/VirtualList.d.ts +2 -1
  168. package/dist/components/VirtualList.js +40 -36
  169. package/dist/components/VirtualList.js.map +1 -1
  170. package/dist/components/Watermark.d.ts +1 -0
  171. package/dist/components/Watermark.js +74 -71
  172. package/dist/components/Watermark.js.map +1 -1
  173. package/dist/components/WeekCalendar.d.ts +1 -0
  174. package/dist/components/WeekCalendar.js +91 -76
  175. package/dist/components/WeekCalendar.js.map +1 -1
  176. package/dist/components/Window.d.ts +3 -2
  177. package/dist/components/Window.js +9 -7
  178. package/dist/components/Window.js.map +1 -1
  179. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../src/components/Select.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dSelect = 'select'\nconst dSelectBordered = 'select-bordered'\nconst dSelectGhost = 'select-ghost'\nconst dSelectXs = 'select-xs'\nconst dSelectSm = 'select-sm'\nconst dSelectMd = 'select-md'\nconst dSelectLg = 'select-lg'\nconst dSelectXl = 'select-xl'\nconst dSelectNeutral = 'select-neutral'\nconst dSelectPrimary = 'select-primary'\nconst dSelectSecondary = 'select-secondary'\nconst dSelectAccent = 'select-accent'\nconst dSelectInfo = 'select-info'\nconst dSelectSuccess = 'select-success'\nconst dSelectWarning = 'select-warning'\nconst dSelectError = 'select-error'\nconst dFloatingLabel = 'floating-label'\n\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'> {\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n /** Validation status */\n status?: 'error' | 'warning'\n ghost?: boolean\n bordered?: boolean\n /** Floating label text (uses DaisyUI floating-label) */\n floatingLabel?: string\n /** Text/element before select (outside, using DaisyUI label) */\n addonBefore?: React.ReactNode\n /** Text/element after select (outside, using DaisyUI label) */\n addonAfter?: React.ReactNode\n className?: string\n children?: React.ReactNode\n}\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n size,\n color,\n status,\n ghost = false,\n bordered = true,\n floatingLabel,\n addonBefore,\n addonAfter,\n className = '',\n children,\n ...props\n },\n ref\n ) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n\n const innerRef = useRef<HTMLSelectElement>(null)\n const selectRef = (ref as React.RefObject<HTMLSelectElement>) || innerRef\n\n const sizeClasses = {\n xs: dSelectXs,\n sm: dSelectSm,\n md: dSelectMd,\n lg: dSelectLg,\n xl: dSelectXl,\n }\n\n const colorClasses = {\n neutral: dSelectNeutral,\n primary: dSelectPrimary,\n secondary: dSelectSecondary,\n accent: dSelectAccent,\n info: dSelectInfo,\n success: dSelectSuccess,\n warning: dSelectWarning,\n error: dSelectError,\n }\n\n const statusClasses = {\n error: dSelectError,\n warning: dSelectWarning,\n }\n\n // Status takes precedence over color for validation feedback\n const effectiveColorClass = status ? statusClasses[status] : (color ? colorClasses[color] : '')\n\n // When wrapped with external addons, the wrapper has the styling\n const hasExternalAddons = addonBefore || addonAfter\n\n const selectClasses = hasExternalAddons\n ? ['grow', 'bg-transparent', 'border-0', 'outline-none', 'focus:outline-none', className].filter(Boolean).join(' ')\n : [\n dSelect,\n 'w-full',\n bordered && dSelectBordered,\n ghost && dSelectGhost,\n effectiveSize && sizeClasses[effectiveSize],\n effectiveColorClass,\n className,\n ].filter(Boolean).join(' ')\n\n // Build the core select element\n const selectElement = (\n <select ref={selectRef} className={selectClasses} {...props}>\n {children}\n </select>\n )\n\n // Wrap with floating label if specified\n if (floatingLabel) {\n const floatingClasses = [\n dFloatingLabel,\n effectiveSize && sizeClasses[effectiveSize],\n ].filter(Boolean).join(' ')\n\n return (\n <label className={floatingClasses}>\n <select ref={selectRef} className={`${dSelect} ${dSelectBordered} w-full`} {...props}>\n {children}\n </select>\n <span>{floatingLabel}</span>\n </label>\n )\n }\n\n // Wrap with external addons if specified\n if (hasExternalAddons) {\n const addonClasses = [\n dSelect,\n dSelectBordered,\n 'flex',\n 'items-center',\n 'gap-2',\n effectiveSize && sizeClasses[effectiveSize],\n effectiveColorClass,\n ].filter(Boolean).join(' ')\n\n return (\n <label className={addonClasses}>\n {addonBefore && <span className=\"text-base-content/70\">{addonBefore}</span>}\n {selectElement}\n {addonAfter && <span className=\"text-base-content/70\">{addonAfter}</span>}\n </label>\n )\n }\n\n return selectElement\n }\n)\n\nSelect.displayName = 'Select'\n"],"names":["dSelect","dSelectBordered","dSelectGhost","dSelectXs","dSelectSm","dSelectMd","dSelectLg","dSelectXl","dSelectNeutral","dSelectPrimary","dSelectSecondary","dSelectAccent","dSelectInfo","dSelectSuccess","dSelectWarning","dSelectError","dFloatingLabel","Select","forwardRef","size","color","status","ghost","bordered","floatingLabel","addonBefore","addonAfter","className","children","props","ref","componentSize","useConfig","effectiveSize","innerRef","useRef","selectRef","sizeClasses","effectiveColorClass","hasExternalAddons","selectClasses","selectElement","floatingClasses","jsxs","jsx","addonClasses"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../src/components/Select.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dSelect = 'select'\nconst dSelectBordered = 'select-bordered'\nconst dSelectGhost = 'select-ghost'\nconst dSelectXs = 'select-xs'\nconst dSelectSm = 'select-sm'\nconst dSelectMd = 'select-md'\nconst dSelectLg = 'select-lg'\nconst dSelectXl = 'select-xl'\nconst dSelectNeutral = 'select-neutral'\nconst dSelectPrimary = 'select-primary'\nconst dSelectSecondary = 'select-secondary'\nconst dSelectAccent = 'select-accent'\nconst dSelectInfo = 'select-info'\nconst dSelectSuccess = 'select-success'\nconst dSelectWarning = 'select-warning'\nconst dSelectError = 'select-error'\nconst dFloatingLabel = 'floating-label'\n\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'> {\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n /** Validation status */\n status?: 'error' | 'warning'\n ghost?: boolean\n bordered?: boolean\n /** Floating label text (uses DaisyUI floating-label) */\n floatingLabel?: string\n /** Text/element before select (outside, using DaisyUI label) */\n addonBefore?: React.ReactNode\n /** Text/element after select (outside, using DaisyUI label) */\n addonAfter?: React.ReactNode\n className?: string\n children?: React.ReactNode\n 'data-testid'?: string\n}\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n size,\n color,\n status,\n ghost = false,\n bordered = true,\n floatingLabel,\n addonBefore,\n addonAfter,\n className = '',\n children,\n 'data-testid': testId,\n ...props\n },\n ref\n ) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n\n const innerRef = useRef<HTMLSelectElement>(null)\n const selectRef = (ref as React.RefObject<HTMLSelectElement>) || innerRef\n\n const sizeClasses = {\n xs: dSelectXs,\n sm: dSelectSm,\n md: dSelectMd,\n lg: dSelectLg,\n xl: dSelectXl,\n }\n\n const colorClasses = {\n neutral: dSelectNeutral,\n primary: dSelectPrimary,\n secondary: dSelectSecondary,\n accent: dSelectAccent,\n info: dSelectInfo,\n success: dSelectSuccess,\n warning: dSelectWarning,\n error: dSelectError,\n }\n\n const statusClasses = {\n error: dSelectError,\n warning: dSelectWarning,\n }\n\n // Status takes precedence over color for validation feedback\n const effectiveColorClass = status ? statusClasses[status] : (color ? colorClasses[color] : '')\n\n // When wrapped with external addons, the wrapper has the styling\n const hasExternalAddons = addonBefore || addonAfter\n const hasWrapper = hasExternalAddons || !!floatingLabel\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n const selectTestId = testId ? (hasWrapper ? getTestId('select') : testId) : undefined\n\n const selectClasses = hasExternalAddons\n ? ['grow', 'bg-transparent', 'border-0', 'outline-none', 'focus:outline-none', className].filter(Boolean).join(' ')\n : [\n dSelect,\n 'w-full',\n bordered && dSelectBordered,\n ghost && dSelectGhost,\n effectiveSize && sizeClasses[effectiveSize],\n effectiveColorClass,\n className,\n ].filter(Boolean).join(' ')\n\n // Build the core select element\n const selectElement = (\n <select ref={selectRef} className={selectClasses} data-testid={selectTestId} {...props}>\n {children}\n </select>\n )\n\n // Wrap with floating label if specified\n if (floatingLabel) {\n const floatingClasses = [\n dFloatingLabel,\n effectiveSize && sizeClasses[effectiveSize],\n ].filter(Boolean).join(' ')\n\n return (\n <label className={floatingClasses} data-testid={testId}>\n <select\n ref={selectRef}\n className={`${dSelect} ${dSelectBordered} w-full`}\n data-testid={selectTestId}\n {...props}\n >\n {children}\n </select>\n <span>{floatingLabel}</span>\n </label>\n )\n }\n\n // Wrap with external addons if specified\n if (hasExternalAddons) {\n const addonClasses = [\n dSelect,\n dSelectBordered,\n 'flex',\n 'items-center',\n 'gap-2',\n effectiveSize && sizeClasses[effectiveSize],\n effectiveColorClass,\n ].filter(Boolean).join(' ')\n\n return (\n <label className={addonClasses} data-testid={testId}>\n {addonBefore && (\n <span className=\"text-base-content/70\" data-testid={getTestId('addon-before')}>\n {addonBefore}\n </span>\n )}\n {selectElement}\n {addonAfter && (\n <span className=\"text-base-content/70\" data-testid={getTestId('addon-after')}>\n {addonAfter}\n </span>\n )}\n </label>\n )\n }\n\n return selectElement\n }\n)\n\nSelect.displayName = 'Select'\n"],"names":["dSelect","dSelectBordered","dSelectGhost","dSelectXs","dSelectSm","dSelectMd","dSelectLg","dSelectXl","dSelectNeutral","dSelectPrimary","dSelectSecondary","dSelectAccent","dSelectInfo","dSelectSuccess","dSelectWarning","dSelectError","dFloatingLabel","Select","forwardRef","size","color","status","ghost","bordered","floatingLabel","addonBefore","addonAfter","className","children","testId","props","ref","componentSize","useConfig","effectiveSize","innerRef","useRef","selectRef","sizeClasses","effectiveColorClass","hasExternalAddons","hasWrapper","getTestId","suffix","selectTestId","selectClasses","selectElement","jsx","floatingClasses","jsxs","addonClasses"],"mappings":"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"}
@@ -5,5 +5,7 @@ export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
5
5
  circle?: boolean;
6
6
  variant?: 'default' | 'text';
7
7
  children?: React.ReactNode;
8
+ /** Test ID for testing */
9
+ 'data-testid'?: string;
8
10
  }
9
11
  export declare const Skeleton: React.FC<SkeletonProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.js","sources":["../../src/components/Skeleton.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dSkeleton = 'skeleton'\nconst dSkeletonText = 'skeleton-text'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n width?: string | number\n height?: string | number\n circle?: boolean\n variant?: 'default' | 'text'\n children?: React.ReactNode\n}\n\nexport const Skeleton: React.FC<SkeletonProps> = ({\n width,\n height,\n circle = false,\n variant = 'default',\n className = '',\n children,\n style,\n ...rest\n}) => {\n const getClasses = () => {\n const classes = [dSkeleton]\n\n if (variant === 'text') {\n classes.push(dSkeletonText)\n }\n\n if (circle) {\n classes.push('rounded-full')\n }\n\n if (className) {\n classes.push(className)\n }\n\n return classes.join(' ')\n }\n\n const getStyles = () => {\n const styles: React.CSSProperties = {}\n\n if (width) {\n styles.width = typeof width === 'number' ? `${width}px` : width\n }\n\n if (height) {\n styles.height = typeof height === 'number' ? `${height}px` : height\n }\n\n return Object.keys(styles).length > 0 ? styles : undefined\n }\n\n return (\n <div className={getClasses()} style={{ ...getStyles(), ...style }} {...rest}>\n {children}\n </div>\n )\n}\n"],"names":["dSkeleton","dSkeletonText","Skeleton","width","height","circle","variant","className","children","style","rest","getClasses","classes","getStyles","styles","jsx"],"mappings":";AAGA,MAAMA,IAAY,YACZC,IAAgB,iBAUTC,IAAoC,CAAC;AAAA,EAChD,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAa,MAAM;AACvB,UAAMC,IAAU,CAACZ,CAAS;AAE1B,WAAIM,MAAY,UACdM,EAAQ,KAAKX,CAAa,GAGxBI,KACFO,EAAQ,KAAK,cAAc,GAGzBL,KACFK,EAAQ,KAAKL,CAAS,GAGjBK,EAAQ,KAAK,GAAG;AAAA,EACzB,GAEMC,IAAY,MAAM;AACtB,UAAMC,IAA8B,CAAA;AAEpC,WAAIX,MACFW,EAAO,QAAQ,OAAOX,KAAU,WAAW,GAAGA,CAAK,OAAOA,IAGxDC,MACFU,EAAO,SAAS,OAAOV,KAAW,WAAW,GAAGA,CAAM,OAAOA,IAGxD,OAAO,KAAKU,CAAM,EAAE,SAAS,IAAIA,IAAS;AAAA,EACnD;AAEA,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWJ,EAAA,GAAc,OAAO,EAAE,GAAGE,EAAA,GAAa,GAAGJ,EAAA,GAAU,GAAGC,GACpE,UAAAF,EAAA,CACH;AAEJ;"}
1
+ {"version":3,"file":"Skeleton.js","sources":["../../src/components/Skeleton.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dSkeleton = 'skeleton'\nconst dSkeletonText = 'skeleton-text'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n width?: string | number\n height?: string | number\n circle?: boolean\n variant?: 'default' | 'text'\n children?: React.ReactNode\n /** Test ID for testing */\n 'data-testid'?: string\n}\n\nexport const Skeleton: React.FC<SkeletonProps> = ({\n width,\n height,\n circle = false,\n variant = 'default',\n className = '',\n children,\n style,\n ...rest\n}) => {\n const getClasses = () => {\n const classes = [dSkeleton]\n\n if (variant === 'text') {\n classes.push(dSkeletonText)\n }\n\n if (circle) {\n classes.push('rounded-full')\n }\n\n if (className) {\n classes.push(className)\n }\n\n return classes.join(' ')\n }\n\n const getStyles = () => {\n const styles: React.CSSProperties = {}\n\n if (width) {\n styles.width = typeof width === 'number' ? `${width}px` : width\n }\n\n if (height) {\n styles.height = typeof height === 'number' ? `${height}px` : height\n }\n\n return Object.keys(styles).length > 0 ? styles : undefined\n }\n\n return (\n <div className={getClasses()} style={{ ...getStyles(), ...style }} {...rest}>\n {children}\n </div>\n )\n}\n"],"names":["dSkeleton","dSkeletonText","Skeleton","width","height","circle","variant","className","children","style","rest","getClasses","classes","getStyles","styles","jsx"],"mappings":";AAGA,MAAMA,IAAY,YACZC,IAAgB,iBAYTC,IAAoC,CAAC;AAAA,EAChD,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAa,MAAM;AACvB,UAAMC,IAAU,CAACZ,CAAS;AAE1B,WAAIM,MAAY,UACdM,EAAQ,KAAKX,CAAa,GAGxBI,KACFO,EAAQ,KAAK,cAAc,GAGzBL,KACFK,EAAQ,KAAKL,CAAS,GAGjBK,EAAQ,KAAK,GAAG;AAAA,EACzB,GAEMC,IAAY,MAAM;AACtB,UAAMC,IAA8B,CAAA;AAEpC,WAAIX,MACFW,EAAO,QAAQ,OAAOX,KAAU,WAAW,GAAGA,CAAK,OAAOA,IAGxDC,MACFU,EAAO,SAAS,OAAOV,KAAW,WAAW,GAAGA,CAAM,OAAOA,IAGxD,OAAO,KAAKU,CAAM,EAAE,SAAS,IAAIA,IAAS;AAAA,EACnD;AAEA,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWJ,EAAA,GAAc,OAAO,EAAE,GAAGE,EAAA,GAAa,GAAGJ,EAAA,GAAU,GAAGC,GACpE,UAAAF,EAAA,CACH;AAEJ;"}
@@ -7,5 +7,7 @@ export interface SpaceProps extends React.HTMLAttributes<HTMLDivElement> {
7
7
  wrap?: boolean;
8
8
  split?: React.ReactNode;
9
9
  children: React.ReactNode;
10
+ /** Test ID for testing */
11
+ 'data-testid'?: string;
10
12
  }
11
13
  export declare const Space: React.FC<SpaceProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"Space.js","sources":["../../src/components/Space.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface SpaceProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: 'horizontal' | 'vertical'\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number\n align?: 'start' | 'end' | 'center' | 'baseline' | 'stretch'\n justify?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly'\n wrap?: boolean\n split?: React.ReactNode\n children: React.ReactNode\n}\n\nconst gapClasses = {\n xs: 'gap-1',\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n} as const\n\nconst alignClasses = {\n start: 'items-start',\n end: 'items-end',\n center: 'items-center',\n baseline: 'items-baseline',\n stretch: 'items-stretch',\n} as const\n\nconst justifyClasses = {\n start: 'justify-start',\n end: 'justify-end',\n center: 'justify-center',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n} as const\n\nexport const Space: React.FC<SpaceProps> = ({\n direction = 'horizontal',\n size = 'sm',\n align,\n justify,\n wrap = false,\n split,\n className = '',\n style,\n children,\n ...rest\n}) => {\n const isNumericSize = typeof size === 'number'\n const gapClass = isNumericSize ? '' : gapClasses[size]\n const effectiveAlign = align ?? (direction === 'vertical' ? 'start' : undefined)\n const alignClass = effectiveAlign ? alignClasses[effectiveAlign] : ''\n const justifyClass = justify ? justifyClasses[justify] : ''\n const wrapClass = wrap ? 'flex-wrap' : ''\n const directionClass = direction === 'horizontal' ? 'flex-row' : 'flex-col'\n\n const classes = [\n 'flex',\n directionClass,\n gapClass,\n alignClass,\n justifyClass,\n wrapClass,\n className\n ].filter(Boolean).join(' ')\n\n const combinedStyle: React.CSSProperties = {\n ...style,\n ...(isNumericSize ? { gap: `${size}px` } : {}),\n }\n\n // If split is provided, interleave separator between children\n const renderChildren = () => {\n if (!split) return children\n\n const childArray = React.Children.toArray(children).filter(Boolean)\n if (childArray.length <= 1) return children\n\n const result: React.ReactNode[] = []\n childArray.forEach((child, index) => {\n result.push(child)\n if (index < childArray.length - 1) {\n result.push(\n <span key={`split-${index}`} className=\"flex-shrink-0\">\n {split}\n </span>\n )\n }\n })\n return result\n }\n\n return <div className={classes} style={combinedStyle} {...rest}>{renderChildren()}</div>\n}\n"],"names":["gapClasses","alignClasses","justifyClasses","Space","direction","size","align","justify","wrap","split","className","style","children","rest","isNumericSize","gapClass","effectiveAlign","alignClass","justifyClass","classes","combinedStyle","jsx","childArray","React","result","child","index"],"mappings":";;AAYA,MAAMA,IAAa;AAAA,EACjB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEMC,IAAe;AAAA,EACnB,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,SAAS;AACX,GAEMC,IAAiB;AAAA,EACrB,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AACV,GAEaC,IAA8B,CAAC;AAAA,EAC1C,WAAAC,IAAY;AAAA,EACZ,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAgB,OAAOT,KAAS,UAChCU,IAAWD,IAAgB,KAAKd,EAAWK,CAAI,GAC/CW,IAAiBV,MAAUF,MAAc,aAAa,UAAU,SAChEa,IAAaD,IAAiBf,EAAae,CAAc,IAAI,IAC7DE,IAAeX,IAAUL,EAAeK,CAAO,IAAI,IAInDY,IAAU;AAAA,IACd;AAAA,IAHqBf,MAAc,eAAe,aAAa;AAAA,IAK/DW;AAAA,IACAE;AAAA,IACAC;AAAA,IARgBV,IAAO,cAAc;AAAA,IAUrCE;AAAA,EAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG,GAEpBU,IAAqC;AAAA,IACzC,GAAGT;AAAA,IACH,GAAIG,IAAgB,EAAE,KAAK,GAAGT,CAAI,SAAS,CAAA;AAAA,EAAC;AAwB9C,SAAO,gBAAAgB,EAAC,SAAI,WAAWF,GAAS,OAAOC,GAAgB,GAAGP,GAAO,WApB1C,MAAM;AAC3B,QAAI,CAACJ,EAAO,QAAOG;AAEnB,UAAMU,IAAaC,EAAM,SAAS,QAAQX,CAAQ,EAAE,OAAO,OAAO;AAClE,QAAIU,EAAW,UAAU,EAAG,QAAOV;AAEnC,UAAMY,IAA4B,CAAA;AAClC,WAAAF,EAAW,QAAQ,CAACG,GAAOC,MAAU;AACnC,MAAAF,EAAO,KAAKC,CAAK,GACbC,IAAQJ,EAAW,SAAS,KAC9BE,EAAO;AAAA,0BACJ,QAAA,EAA4B,WAAU,iBACpC,UAAAf,KADQ,SAASiB,CAAK,EAEzB;AAAA,MAAA;AAAA,IAGN,CAAC,GACMF;AAAA,EACT,GAEiE,EAAe,CAAE;AACpF;"}
1
+ {"version":3,"file":"Space.js","sources":["../../src/components/Space.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface SpaceProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: 'horizontal' | 'vertical'\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number\n align?: 'start' | 'end' | 'center' | 'baseline' | 'stretch'\n justify?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly'\n wrap?: boolean\n split?: React.ReactNode\n children: React.ReactNode\n /** Test ID for testing */\n 'data-testid'?: string\n}\n\nconst gapClasses = {\n xs: 'gap-1',\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n} as const\n\nconst alignClasses = {\n start: 'items-start',\n end: 'items-end',\n center: 'items-center',\n baseline: 'items-baseline',\n stretch: 'items-stretch',\n} as const\n\nconst justifyClasses = {\n start: 'justify-start',\n end: 'justify-end',\n center: 'justify-center',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n} as const\n\nexport const Space: React.FC<SpaceProps> = ({\n direction = 'horizontal',\n size = 'sm',\n align,\n justify,\n wrap = false,\n split,\n className = '',\n style,\n children,\n ...rest\n}) => {\n const isNumericSize = typeof size === 'number'\n const gapClass = isNumericSize ? '' : gapClasses[size]\n const effectiveAlign = align ?? (direction === 'vertical' ? 'start' : undefined)\n const alignClass = effectiveAlign ? alignClasses[effectiveAlign] : ''\n const justifyClass = justify ? justifyClasses[justify] : ''\n const wrapClass = wrap ? 'flex-wrap' : ''\n const directionClass = direction === 'horizontal' ? 'flex-row' : 'flex-col'\n\n const classes = [\n 'flex',\n directionClass,\n gapClass,\n alignClass,\n justifyClass,\n wrapClass,\n className\n ].filter(Boolean).join(' ')\n\n const combinedStyle: React.CSSProperties = {\n ...style,\n ...(isNumericSize ? { gap: `${size}px` } : {}),\n }\n\n // If split is provided, interleave separator between children\n const renderChildren = () => {\n if (!split) return children\n\n const childArray = React.Children.toArray(children).filter(Boolean)\n if (childArray.length <= 1) return children\n\n const result: React.ReactNode[] = []\n childArray.forEach((child, index) => {\n result.push(child)\n if (index < childArray.length - 1) {\n result.push(\n <span key={`split-${index}`} className=\"flex-shrink-0\">\n {split}\n </span>\n )\n }\n })\n return result\n }\n\n return <div className={classes} style={combinedStyle} {...rest}>{renderChildren()}</div>\n}\n"],"names":["gapClasses","alignClasses","justifyClasses","Space","direction","size","align","justify","wrap","split","className","style","children","rest","isNumericSize","gapClass","effectiveAlign","alignClass","justifyClass","classes","combinedStyle","jsx","childArray","React","result","child","index"],"mappings":";;AAcA,MAAMA,IAAa;AAAA,EACjB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEMC,IAAe;AAAA,EACnB,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,SAAS;AACX,GAEMC,IAAiB;AAAA,EACrB,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AACV,GAEaC,IAA8B,CAAC;AAAA,EAC1C,WAAAC,IAAY;AAAA,EACZ,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAgB,OAAOT,KAAS,UAChCU,IAAWD,IAAgB,KAAKd,EAAWK,CAAI,GAC/CW,IAAiBV,MAAUF,MAAc,aAAa,UAAU,SAChEa,IAAaD,IAAiBf,EAAae,CAAc,IAAI,IAC7DE,IAAeX,IAAUL,EAAeK,CAAO,IAAI,IAInDY,IAAU;AAAA,IACd;AAAA,IAHqBf,MAAc,eAAe,aAAa;AAAA,IAK/DW;AAAA,IACAE;AAAA,IACAC;AAAA,IARgBV,IAAO,cAAc;AAAA,IAUrCE;AAAA,EAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG,GAEpBU,IAAqC;AAAA,IACzC,GAAGT;AAAA,IACH,GAAIG,IAAgB,EAAE,KAAK,GAAGT,CAAI,SAAS,CAAA;AAAA,EAAC;AAwB9C,SAAO,gBAAAgB,EAAC,SAAI,WAAWF,GAAS,OAAOC,GAAgB,GAAGP,GAAO,WApB1C,MAAM;AAC3B,QAAI,CAACJ,EAAO,QAAOG;AAEnB,UAAMU,IAAaC,EAAM,SAAS,QAAQX,CAAQ,EAAE,OAAO,OAAO;AAClE,QAAIU,EAAW,UAAU,EAAG,QAAOV;AAEnC,UAAMY,IAA4B,CAAA;AAClC,WAAAF,EAAW,QAAQ,CAACG,GAAOC,MAAU;AACnC,MAAAF,EAAO,KAAKC,CAAK,GACbC,IAAQJ,EAAW,SAAS,KAC9BE,EAAO;AAAA,0BACJ,QAAA,EAA4B,WAAU,iBACpC,UAAAf,KADQ,SAASiB,CAAK,EAEzB;AAAA,MAAA;AAAA,IAGN,CAAC,GACMF;AAAA,EACT,GAEiE,EAAe,CAAE;AACpF;"}
@@ -11,6 +11,7 @@ export interface SplitterPanelProps {
11
11
  onCollapse?: (collapsed: boolean) => void;
12
12
  resizable?: boolean;
13
13
  className?: string;
14
+ 'data-testid'?: string;
14
15
  }
15
16
  export interface SplitterProps {
16
17
  children: React.ReactNode;
@@ -21,6 +22,7 @@ export interface SplitterProps {
21
22
  gutterSize?: number;
22
23
  minSize?: number;
23
24
  className?: string;
25
+ 'data-testid'?: string;
24
26
  }
25
27
  declare const Panel: React.FC<SplitterPanelProps>;
26
28
  export declare const Splitter: React.FC<SplitterProps> & {
@@ -1,177 +1,181 @@
1
- import { jsx as h, jsxs as K, Fragment as ie } from "react/jsx-runtime";
2
- import T, { useRef as L, useState as J, useCallback as y, useEffect as Q } from "react";
3
- const pe = ({ children: M }) => /* @__PURE__ */ h(ie, { children: M }), ue = ({
4
- children: M,
5
- direction: z = "horizontal",
1
+ import { jsx as h, jsxs as F, Fragment as ue } from "react/jsx-runtime";
2
+ import W, { useRef as E, useState as Z, useCallback as y, useEffect as I } from "react";
3
+ const de = ({ children: D }) => /* @__PURE__ */ h(ue, { children: D }), fe = ({
4
+ children: D,
5
+ direction: b = "horizontal",
6
6
  sizes: P,
7
- defaultSizes: $,
8
- onSizesChange: F,
7
+ defaultSizes: N,
8
+ onSizesChange: X,
9
9
  gutterSize: R = 8,
10
- minSize: E = 50,
11
- className: Z = ""
10
+ minSize: j = 50,
11
+ className: ee = "",
12
+ "data-testid": A
12
13
  }) => {
13
- const D = L(null), I = L([]), x = L(null), u = T.Children.toArray(M).filter(
14
- (e) => T.isValidElement(e)
15
- ), m = u.length, [f, W] = J(
14
+ const x = E(null), te = E([]), L = E(null), u = W.Children.toArray(D).filter(
15
+ (e) => W.isValidElement(e)
16
+ ), m = u.length, [d, Y] = Z(
16
17
  () => u.map((e) => e.props.defaultCollapsed ?? e.props.collapsed ?? !1)
17
- ), X = L([]), j = y(() => {
18
- const e = u.map((s) => s.props.defaultSize), o = e.some((s) => s !== void 0);
19
- if ($ && $.length === m)
20
- return $;
21
- if (o) {
22
- const s = e.reduce((l, n) => l + (n ?? 0), 0), r = e.filter((l) => l === void 0).length, a = Math.max(0, 100 - s), t = r > 0 ? a / r : 0;
23
- return e.map((l) => l ?? t);
18
+ ), _ = E([]), T = y(() => {
19
+ const e = u.map((n) => n.props.defaultSize), t = e.some((n) => n !== void 0);
20
+ if (N && N.length === m)
21
+ return N;
22
+ if (t) {
23
+ const n = e.reduce((s, o) => s + (o ?? 0), 0), r = e.filter((s) => s === void 0).length, c = Math.max(0, 100 - n), l = r > 0 ? c / r : 0;
24
+ return e.map((s) => s ?? l);
24
25
  }
25
- const i = 100 / m;
26
- return Array(m).fill(i);
27
- }, [$, m, u]), [k, Y] = J(j), ee = y(() => {
28
- const e = u.map((t) => t.props.size);
29
- if (!e.some((t) => t !== void 0)) return null;
30
- const i = e.reduce((t, l) => t + (l ?? 0), 0), s = e.filter((t) => t === void 0).length, r = Math.max(0, 100 - i), a = s > 0 ? r / s : 0;
31
- return e.map((t, l) => t ?? k[l] ?? a);
32
- }, [u, k]), d = P || ee() || k;
33
- Q(() => {
34
- !P && k.length !== m && Y(j());
35
- }, [m, P, k.length, j]), Q(() => {
26
+ const a = 100 / m;
27
+ return Array(m).fill(a);
28
+ }, [N, m, u]), [$, q] = Z(T), oe = y(() => {
29
+ const e = u.map((l) => l.props.size);
30
+ if (!e.some((l) => l !== void 0)) return null;
31
+ const a = e.reduce((l, s) => l + (s ?? 0), 0), n = e.filter((l) => l === void 0).length, r = Math.max(0, 100 - a), c = n > 0 ? r / n : 0;
32
+ return e.map((l, s) => l ?? $[s] ?? c);
33
+ }, [u, $]), f = P || oe() || $;
34
+ I(() => {
35
+ !P && $.length !== m && q(T());
36
+ }, [m, P, $.length, T]), I(() => {
36
37
  const e = u.map(
37
- (i, s) => i.props.collapsed ?? f[s] ?? !1
38
+ (a, n) => a.props.collapsed ?? d[n] ?? !1
38
39
  );
39
- e.some((i, s) => i !== f[s]) && W(e);
40
+ e.some((a, n) => a !== d[n]) && Y(e);
40
41
  }, [u.map((e) => e.props.collapsed).join(",")]);
41
- const b = y(
42
+ const v = y(
42
43
  (e) => {
43
- P || Y(e), F?.(e);
44
+ P || q(e), X?.(e);
44
45
  },
45
- [P, F]
46
- ), _ = y(
46
+ [P, X]
47
+ ), G = y(
47
48
  (e) => {
48
- const o = u[e];
49
- if (!o?.props.collapsible) return;
50
- const s = !f[e], r = [...f];
51
- if (r[e] = s, W(r), o.props.onCollapse?.(s), s) {
52
- X.current = [...d];
53
- const a = 0, t = d[e] - a, l = d.map((n, c) => ({ size: n, index: c })).filter((n, c) => c !== e && !r[c]);
54
- if (l.length > 0) {
55
- const n = t / l.length, c = d.map((p, w) => w === e ? a : r[w] ? p : p + n);
56
- b(c);
49
+ const t = u[e];
50
+ if (!t?.props.collapsible) return;
51
+ const n = !d[e], r = [...d];
52
+ if (r[e] = n, Y(r), t.props.onCollapse?.(n), n) {
53
+ _.current = [...f];
54
+ const c = 0, l = f[e] - c, s = f.map((o, i) => ({ size: o, index: i })).filter((o, i) => i !== e && !r[i]);
55
+ if (s.length > 0) {
56
+ const o = l / s.length, i = f.map((p, z) => z === e ? c : r[z] ? p : p + o);
57
+ v(i);
57
58
  }
58
59
  } else {
59
- const a = X.current[e] || 100 / m, l = d.map((n, c) => ({ size: n, index: c })).filter((n, c) => c !== e && !r[c]).reduce((n, c) => n + c.size, 0);
60
- if (l > 0) {
61
- const n = d.map((c, p) => {
62
- if (p === e) return a;
60
+ const c = _.current[e] || 100 / m, s = f.map((o, i) => ({ size: o, index: i })).filter((o, i) => i !== e && !r[i]).reduce((o, i) => o + i.size, 0);
61
+ if (s > 0) {
62
+ const o = f.map((i, p) => {
63
+ if (p === e) return c;
63
64
  if (!r[p]) {
64
- const w = c / l;
65
- return c - a * w;
65
+ const z = i / s;
66
+ return i - c * z;
66
67
  }
67
- return c;
68
+ return i;
68
69
  });
69
- b(n);
70
+ v(o);
70
71
  }
71
72
  }
72
73
  },
73
- [u, f, d, m, b]
74
- ), te = y(
75
- (e, o) => {
76
- const i = u[e]?.props || {}, s = u[e + 1]?.props || {};
77
- if (i.resizable === !1 || s.resizable === !1 || f[e] || f[e + 1])
74
+ [u, d, f, m, v]
75
+ ), ne = y(
76
+ (e, t) => {
77
+ const a = u[e]?.props || {}, n = u[e + 1]?.props || {};
78
+ if (a.resizable === !1 || n.resizable === !1 || d[e] || d[e + 1])
78
79
  return;
79
- o.preventDefault();
80
- const r = z === "horizontal" ? o.clientX : o.clientY;
81
- x.current = {
80
+ t.preventDefault();
81
+ const r = b === "horizontal" ? t.clientX : t.clientY;
82
+ L.current = {
82
83
  index: e,
83
84
  startPos: r,
84
- startSizes: [...d]
85
+ startSizes: [...f]
85
86
  };
86
- const a = (l) => {
87
- if (!x.current || !D.current) return;
88
- const { index: n, startPos: c, startSizes: p } = x.current, w = D.current.getBoundingClientRect(), se = z === "horizontal" ? w.width : w.height, re = z === "horizontal" ? l.clientX : l.clientY, le = (m - 1) * R, N = se - le, q = (re - c) / N * 100, G = u[n]?.props || {}, H = u[n + 1]?.props || {}, ae = G.minSize ?? E, ce = H.minSize ?? E, A = ae / N * 100, B = ce / N * 100;
89
- let v = p[n] + q, C = p[n + 1] - q;
90
- v < A && (v = A, C = p[n] + p[n + 1] - A), C < B && (C = B, v = p[n] + p[n + 1] - B);
91
- const O = G.maxSize, V = H.maxSize;
92
- if (O) {
93
- const S = O / N * 100;
94
- v > S && (v = S, C = p[n] + p[n + 1] - S);
87
+ const c = (s) => {
88
+ if (!L.current || !x.current) return;
89
+ const { index: o, startPos: i, startSizes: p } = L.current, z = x.current.getBoundingClientRect(), le = b === "horizontal" ? z.width : z.height, ae = b === "horizontal" ? s.clientX : s.clientY, ce = (m - 1) * R, k = le - ce, H = (ae - i) / k * 100, O = u[o]?.props || {}, V = u[o + 1]?.props || {}, ie = O.minSize ?? j, pe = V.minSize ?? j, B = ie / k * 100, U = pe / k * 100;
90
+ let w = p[o] + H, C = p[o + 1] - H;
91
+ w < B && (w = B, C = p[o] + p[o + 1] - B), C < U && (C = U, w = p[o] + p[o + 1] - U);
92
+ const J = O.maxSize, Q = V.maxSize;
93
+ if (J) {
94
+ const S = J / k * 100;
95
+ w > S && (w = S, C = p[o] + p[o + 1] - S);
95
96
  }
96
- if (V) {
97
- const S = V / N * 100;
98
- C > S && (C = S, v = p[n] + p[n + 1] - S);
97
+ if (Q) {
98
+ const S = Q / k * 100;
99
+ C > S && (C = S, w = p[o] + p[o + 1] - S);
99
100
  }
100
- const U = [...p];
101
- U[n] = v, U[n + 1] = C, b(U);
102
- }, t = () => {
103
- x.current = null, document.removeEventListener("mousemove", a), document.removeEventListener("mouseup", t), document.body.style.cursor = "", document.body.style.userSelect = "";
101
+ const K = [...p];
102
+ K[o] = w, K[o + 1] = C, v(K);
103
+ }, l = () => {
104
+ L.current = null, document.removeEventListener("mousemove", c), document.removeEventListener("mouseup", l), document.body.style.cursor = "", document.body.style.userSelect = "";
104
105
  };
105
- document.addEventListener("mousemove", a), document.addEventListener("mouseup", t), document.body.style.cursor = z === "horizontal" ? "col-resize" : "row-resize", document.body.style.userSelect = "none";
106
+ document.addEventListener("mousemove", c), document.addEventListener("mouseup", l), document.body.style.cursor = b === "horizontal" ? "col-resize" : "row-resize", document.body.style.userSelect = "none";
106
107
  },
107
- [z, d, m, R, u, E, b, f]
108
- ), oe = y(
109
- (e, o) => {
110
- if (f[e] || f[e + 1])
108
+ [b, f, m, R, u, j, v, d]
109
+ ), se = y(
110
+ (e, t) => {
111
+ if (d[e] || d[e + 1])
111
112
  return;
112
- const i = o.shiftKey ? 10 : 1;
113
- let s = 0;
114
- if (z === "horizontal" ? o.key === "ArrowLeft" ? s = -i : o.key === "ArrowRight" && (s = i) : o.key === "ArrowUp" ? s = -i : o.key === "ArrowDown" && (s = i), s !== 0) {
115
- o.preventDefault();
116
- const r = [...d], a = 5;
117
- let t = r[e] + s, l = r[e + 1] - s;
118
- t >= a && l >= a && (r[e] = t, r[e + 1] = l, b(r));
113
+ const a = t.shiftKey ? 10 : 1;
114
+ let n = 0;
115
+ if (b === "horizontal" ? t.key === "ArrowLeft" ? n = -a : t.key === "ArrowRight" && (n = a) : t.key === "ArrowUp" ? n = -a : t.key === "ArrowDown" && (n = a), n !== 0) {
116
+ t.preventDefault();
117
+ const r = [...f], c = 5;
118
+ let l = r[e] + n, s = r[e + 1] - n;
119
+ l >= c && s >= c && (r[e] = l, r[e + 1] = s, v(r));
119
120
  }
120
121
  },
121
- [z, d, b, f]
122
- ), g = z === "horizontal", ne = (e) => {
123
- const o = u[e], i = u[e + 1], s = o?.props.collapsible, r = i?.props.collapsible, a = f[e], t = f[e + 1];
122
+ [b, f, v, d]
123
+ ), g = b === "horizontal", re = (e) => {
124
+ const t = u[e], a = u[e + 1], n = t?.props.collapsible, r = a?.props.collapsible, c = d[e], l = d[e + 1];
124
125
  return {
125
- showStart: s && !t,
126
- showEnd: r && !a,
127
- panel1Collapsed: a,
128
- panel2Collapsed: t
126
+ showStart: n && !l,
127
+ showEnd: r && !c,
128
+ panel1Collapsed: c,
129
+ panel2Collapsed: l
129
130
  };
130
- };
131
+ }, M = (e) => A ? `${A}-${e}` : void 0;
131
132
  return /* @__PURE__ */ h(
132
133
  "div",
133
134
  {
134
- ref: D,
135
- className: `flex ${g ? "flex-row" : "flex-col"} h-full w-full ${Z}`,
136
- children: u.map((e, o) => {
137
- const i = e.props, s = o === u.length - 1, r = f[o], a = i.resizable !== !1 && !r;
138
- return /* @__PURE__ */ K(T.Fragment, { children: [
135
+ ref: x,
136
+ className: `flex ${g ? "flex-row" : "flex-col"} h-full w-full ${ee}`,
137
+ "data-testid": A,
138
+ children: u.map((e, t) => {
139
+ const a = e.props, n = t === u.length - 1, r = d[t], c = a.resizable !== !1 && !r, l = a["data-testid"] ?? M(`panel-${t}`);
140
+ return /* @__PURE__ */ F(W.Fragment, { children: [
139
141
  /* @__PURE__ */ h(
140
142
  "div",
141
143
  {
142
- ref: (t) => {
143
- I.current[o] = t;
144
+ ref: (s) => {
145
+ te.current[t] = s;
144
146
  },
145
- className: `overflow-auto ${i.className || ""}`,
147
+ className: `overflow-auto ${a.className || ""}`,
146
148
  style: {
147
- [g ? "width" : "height"]: r ? "0px" : `calc(${d[o]}% - ${(m - 1) * R / m}px)`,
149
+ [g ? "width" : "height"]: r ? "0px" : `calc(${f[t]}% - ${(m - 1) * R / m}px)`,
148
150
  flexShrink: 0,
149
151
  overflow: r ? "hidden" : "auto"
150
152
  },
151
153
  "data-collapsed": r,
152
- children: i.children
154
+ "data-testid": l,
155
+ children: a.children
153
156
  }
154
157
  ),
155
- !s && /* @__PURE__ */ h(
158
+ !n && /* @__PURE__ */ h(
156
159
  "div",
157
160
  {
158
161
  role: "separator",
159
162
  "aria-orientation": g ? "vertical" : "horizontal",
160
- "aria-valuenow": Math.round(d[o]),
161
- tabIndex: a ? 0 : -1,
163
+ "aria-valuenow": Math.round(f[t]),
164
+ tabIndex: c ? 0 : -1,
162
165
  className: `
163
166
  flex-shrink-0 bg-base-300 transition-colors duration-150 relative group
164
- ${a ? "hover:bg-primary/30 active:bg-primary/50" : ""}
165
- ${a ? g ? "cursor-col-resize" : "cursor-row-resize" : "cursor-default"}
167
+ ${c ? "hover:bg-primary/30 active:bg-primary/50" : ""}
168
+ ${c ? g ? "cursor-col-resize" : "cursor-row-resize" : "cursor-default"}
166
169
  `,
167
170
  style: {
168
171
  [g ? "width" : "height"]: `${R}px`
169
172
  },
170
- onMouseDown: (t) => te(o, t),
171
- onKeyDown: (t) => oe(o, t),
173
+ "data-testid": M(`gutter-${t}`),
174
+ onMouseDown: (s) => ne(t, s),
175
+ onKeyDown: (s) => se(t, s),
172
176
  children: (() => {
173
- const { showStart: t, showEnd: l, panel1Collapsed: n, panel2Collapsed: c } = ne(o);
174
- return !t && !l ? /* @__PURE__ */ K(
177
+ const { showStart: s, showEnd: o, panel1Collapsed: i, panel2Collapsed: p } = re(t);
178
+ return !s && !o ? /* @__PURE__ */ F(
175
179
  "div",
176
180
  {
177
181
  className: `
@@ -184,7 +188,7 @@ const pe = ({ children: M }) => /* @__PURE__ */ h(ie, { children: M }), ue = ({
184
188
  /* @__PURE__ */ h("div", { className: "w-1 h-1 rounded-full bg-base-content/30 group-hover:bg-primary/60" })
185
189
  ]
186
190
  }
187
- ) : /* @__PURE__ */ K(
191
+ ) : /* @__PURE__ */ F(
188
192
  "div",
189
193
  {
190
194
  className: `
@@ -192,22 +196,23 @@ const pe = ({ children: M }) => /* @__PURE__ */ h(ie, { children: M }), ue = ({
192
196
  ${g ? "flex-col" : "flex-row"}
193
197
  `,
194
198
  children: [
195
- t && /* @__PURE__ */ h(
199
+ s && /* @__PURE__ */ h(
196
200
  "button",
197
201
  {
198
202
  type: "button",
199
- onClick: (p) => {
200
- p.stopPropagation(), _(o);
203
+ onClick: (z) => {
204
+ z.stopPropagation(), G(t);
201
205
  },
202
206
  className: `
203
207
  p-0.5 rounded hover:bg-base-content/20 transition-colors
204
208
 
205
209
  `,
206
- "aria-label": n ? "Expand panel" : "Collapse panel",
210
+ "aria-label": i ? "Expand panel" : "Collapse panel",
211
+ "data-testid": M(`collapse-${t}`),
207
212
  children: /* @__PURE__ */ h(
208
213
  "svg",
209
214
  {
210
- className: `w-3 h-3 text-base-content/50 hover:text-base-content transition-transform ${n ? g ? "rotate-180" : "-rotate-90" : g ? "rotate-0" : "rotate-90"}`,
215
+ className: `w-3 h-3 text-base-content/50 hover:text-base-content transition-transform ${i ? g ? "rotate-180" : "-rotate-90" : g ? "rotate-0" : "rotate-90"}`,
211
216
  fill: "none",
212
217
  viewBox: "0 0 24 24",
213
218
  stroke: "currentColor",
@@ -216,19 +221,20 @@ const pe = ({ children: M }) => /* @__PURE__ */ h(ie, { children: M }), ue = ({
216
221
  )
217
222
  }
218
223
  ),
219
- l && /* @__PURE__ */ h(
224
+ o && /* @__PURE__ */ h(
220
225
  "button",
221
226
  {
222
227
  type: "button",
223
- onClick: (p) => {
224
- p.stopPropagation(), _(o + 1);
228
+ onClick: (z) => {
229
+ z.stopPropagation(), G(t + 1);
225
230
  },
226
231
  className: "p-0.5 rounded hover:bg-base-content/20 transition-colors",
227
- "aria-label": c ? "Expand panel" : "Collapse panel",
232
+ "aria-label": p ? "Expand panel" : "Collapse panel",
233
+ "data-testid": M(`collapse-${t + 1}`),
228
234
  children: /* @__PURE__ */ h(
229
235
  "svg",
230
236
  {
231
- className: `w-3 h-3 text-base-content/50 hover:text-base-content transition-transform ${c ? g ? "rotate-0" : "rotate-90" : g ? "rotate-180" : "-rotate-90"}`,
237
+ className: `w-3 h-3 text-base-content/50 hover:text-base-content transition-transform ${p ? g ? "rotate-0" : "rotate-90" : g ? "rotate-180" : "-rotate-90"}`,
232
238
  fill: "none",
233
239
  viewBox: "0 0 24 24",
234
240
  stroke: "currentColor",
@@ -243,13 +249,13 @@ const pe = ({ children: M }) => /* @__PURE__ */ h(ie, { children: M }), ue = ({
243
249
  })()
244
250
  }
245
251
  )
246
- ] }, o);
252
+ ] }, t);
247
253
  })
248
254
  }
249
255
  );
250
256
  };
251
- ue.Panel = pe;
257
+ fe.Panel = de;
252
258
  export {
253
- ue as Splitter
259
+ fe as Splitter
254
260
  };
255
261
  //# sourceMappingURL=Splitter.js.map