@refineui/react 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1201,10 +1201,10 @@ function resolveSlotClasses(recipe, slot, variants = {}) {
1201
1201
 
1202
1202
  // src/recipes/button.recipe.ts
1203
1203
  var buttonVariantClass = {
1204
- primary: "border-refineui-none border border-transparent bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed",
1205
- secondary: "border-refineui-none border border-transparent bg-refineui-alias-background-surface-hover text-refineui-alias-foreground-primary",
1206
- outline: "border-refineui-thin border-refineui-alias-border-default bg-transparent text-refineui-alias-foreground-primary",
1207
- ghost: "border-refineui-none border border-transparent bg-transparent text-refineui-alias-foreground-primary"
1204
+ primary: "border-refineui-none border border-transparent bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed hover:bg-refineui-alias-background-brand-hover active:bg-refineui-alias-background-brand-active data-[inactive=true]:border-transparent data-[inactive=true]:bg-refineui-alias-background-brand-disabled data-[inactive=true]:text-refineui-alias-foreground-disabled",
1205
+ secondary: "border-refineui-none border border-transparent bg-refineui-alias-background-surface-hover text-refineui-alias-foreground-primary hover:bg-refineui-alias-background-surface-active hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-surface-active active:text-refineui-alias-foreground-primary data-[inactive=true]:border-transparent data-[inactive=true]:bg-refineui-alias-background-surface-disabled data-[inactive=true]:text-refineui-alias-foreground-disabled",
1206
+ outline: "border-refineui-thin border-refineui-alias-border-default bg-transparent text-refineui-alias-foreground-primary hover:border-refineui-alias-border-strong hover:text-refineui-alias-foreground-primary-hover active:border-refineui-alias-border-strong data-[inactive=true]:border-refineui-alias-border-disabled data-[inactive=true]:text-refineui-alias-foreground-disabled",
1207
+ ghost: "border-refineui-none border border-transparent bg-transparent text-refineui-alias-foreground-primary hover:bg-refineui-alias-background-primary-hover hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-primary-active active:text-refineui-alias-foreground-primary data-[inactive=true]:border-transparent data-[inactive=true]:text-refineui-alias-foreground-disabled"
1208
1208
  };
1209
1209
  var buttonLabelSizeClass = {
1210
1210
  sm: `min-h-refineui-button-min-height-sm gap-refineui-size-xx-small rounded-refineui-large px-refineui-size-medium py-refineui-size-xx-small ${sizedComponentTextClass(componentTypographyTokens.button, "sm")}`,
@@ -1218,7 +1218,7 @@ var buttonIconSizeClass = {
1218
1218
  };
1219
1219
  var buttonRecipe = defineRecipe({
1220
1220
  name: "button",
1221
- base: "box-border inline-flex cursor-pointer items-center justify-center border transition-[opacity,background-color,border-color,color,transform] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]",
1221
+ base: "box-border inline-flex cursor-pointer items-center justify-center border transition-[opacity,background-color,border-color,color,transform] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)] focus-visible:outline-none active:scale-[var(--refineui-motion-scale-press)] data-[inactive=true]:opacity-100 data-[inactive=true]:transform-none data-[inactive=true]:active:scale-100",
1222
1222
  variants: {
1223
1223
  variant: buttonVariantClass,
1224
1224
  layout: {
@@ -1234,7 +1234,7 @@ var buttonRecipe = defineRecipe({
1234
1234
  compoundVariants: [
1235
1235
  {
1236
1236
  match: { variant: "ghost", layout: "icon" },
1237
- className: "border-refineui-none border border-transparent bg-transparent text-refineui-alias-foreground-secondary hover:text-refineui-alias-foreground-primary-hover"
1237
+ className: "border-refineui-none border border-transparent bg-transparent text-refineui-alias-foreground-secondary hover:bg-refineui-alias-background-primary-hover hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-primary-active active:text-refineui-alias-foreground-primary data-[inactive=true]:border-transparent data-[inactive=true]:text-refineui-alias-foreground-disabled"
1238
1238
  },
1239
1239
  {
1240
1240
  match: { layout: "icon", variant: "primary" },
@@ -1368,7 +1368,7 @@ var formControlShellHeightClass = {
1368
1368
 
1369
1369
  // src/components/Input/style.ts
1370
1370
  var inputStyles = {
1371
- base: "box-border appearance-none outline-none transition-[border-color,box-shadow,background-color] duration-[var(--refineui-motion-duration-fast)]",
1371
+ base: "box-border appearance-none outline-none transition-[border-color,box-shadow,background-color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)] hover:border-refineui-alias-border-hover focus:border-refineui-alias-border-focus focus:shadow-[0_0_0_0.5px_var(--refineui-color-alias-border-focus)] data-[error=true]:focus:border-refineui-alias-background-error-hover data-[error=true]:focus:shadow-[0_0_0_0.5px_var(--refineui-color-alias-background-error-hover)] data-[success=true]:focus:border-refineui-alias-background-success-hover data-[success=true]:focus:shadow-[0_0_0_0.5px_var(--refineui-color-alias-background-success-hover)] disabled:cursor-not-allowed disabled:opacity-100",
1372
1372
  text: "text-refineui-alias-foreground-primary placeholder:text-refineui-alias-foreground-placeholder",
1373
1373
  disabledText: "disabled:text-refineui-alias-foreground-disabled",
1374
1374
  disabledBg: "bg-refineui-alias-background-surface-disabled",
@@ -1455,6 +1455,13 @@ var inputOtpStyles = {
1455
1455
  "transition-[background-color,border-color]",
1456
1456
  "duration-[var(--refineui-motion-duration-fast)]",
1457
1457
  "ease-[var(--refineui-motion-easing-emphasized)]",
1458
+ // Empty slots retain the staggered soft pulse until they receive focus or a digit.
1459
+ "[&:not(:disabled):not(:focus):not([data-filled])]:animate-pulse",
1460
+ "[&:not(:disabled):not(:focus):not([data-filled])]:[animation-duration:var(--refineui-motion-duration-skeleton)]",
1461
+ "[&:not(:disabled):not(:focus):not([data-filled])]:[animation-timing-function:var(--refineui-motion-easing-ease-in-out)]",
1462
+ "[&:not(:disabled):not(:focus):not([data-filled])]:[animation-delay:calc(var(--refineui-input-otp-slot-index,0)*var(--refineui-motion-duration-fast)*-1)]",
1463
+ "motion-reduce:animate-none",
1464
+ "caret-refineui-alias-foreground-primary hover:bg-refineui-alias-background-surface-active focus:border-refineui-alias-border-default",
1458
1465
  "disabled:cursor-not-allowed",
1459
1466
  "disabled:border-refineui-alias-border-disabled",
1460
1467
  "disabled:bg-refineui-alias-background-surface-disabled",
@@ -1462,9 +1469,9 @@ var inputOtpStyles = {
1462
1469
  )
1463
1470
  };
1464
1471
  var inputOtpSlotSizeClass = {
1465
- sm: "size-refineui-control-height-sm rounded-refineui-large p-0",
1466
- md: "size-refineui-control-height-md rounded-refineui-x-large p-0",
1467
- lg: "size-refineui-control-height-lg rounded-refineui-xx-large p-0"
1472
+ sm: "size-refineui-control-height-sm rounded-refineui-large p-0 [font-family:var(--refineui-typography-sub-title-1-font-family)] text-[length:var(--refineui-typography-sub-title-1-font-size)] font-[var(--refineui-typography-sub-title-1-font-weight)] leading-[var(--refineui-typography-sub-title-1-line-height)]",
1473
+ md: "size-refineui-control-height-md rounded-refineui-x-large p-0 [font-family:var(--refineui-typography-title-3-font-family)] text-[length:var(--refineui-typography-title-3-font-size)] font-[var(--refineui-typography-title-3-font-weight)] leading-[var(--refineui-typography-title-3-line-height)]",
1474
+ lg: "size-refineui-control-height-lg rounded-refineui-xx-large p-0 [font-family:var(--refineui-typography-title-2-font-family)] text-[length:var(--refineui-typography-title-2-font-size)] font-[var(--refineui-typography-title-2-font-weight)] leading-[var(--refineui-typography-title-2-line-height)]"
1468
1475
  };
1469
1476
 
1470
1477
  // src/components/InputOTP/InputOTP.tsx
@@ -1754,7 +1761,7 @@ var searchFieldStyles = {
1754
1761
  "box-border flex w-full min-w-0 items-center gap-refineui-size-x-small overflow-hidden outline-none",
1755
1762
  "transition-[background-color,border-color]",
1756
1763
  "duration-[var(--refineui-motion-duration-fast)]",
1757
- "ease-[var(--refineui-motion-easing-emphasized)]"
1764
+ "ease-[var(--refineui-motion-easing-emphasized)] caret-refineui-alias-foreground-primary hover:bg-refineui-alias-background-surface-active focus-within:border-refineui-alias-border-default data-[disabled=true]:cursor-not-allowed data-[disabled=true]:border-refineui-alias-border-disabled data-[disabled=true]:bg-refineui-alias-background-surface-disabled"
1758
1765
  ].join(" "),
1759
1766
  rootFilled: [
1760
1767
  "border-refineui-thin border-transparent",
@@ -1762,14 +1769,14 @@ var searchFieldStyles = {
1762
1769
  "bg-refineui-alias-background-surface-hover"
1763
1770
  ].join(" "),
1764
1771
  rootPlain: [
1765
- "h-auto min-h-0 rounded-none border-none bg-transparent px-0 py-0"
1772
+ "h-auto min-h-0 rounded-none border-none bg-transparent px-0 py-0 hover:bg-transparent focus-within:border-transparent"
1766
1773
  ].join(" "),
1767
1774
  rootDisabled: "border-refineui-alias-border-disabled bg-refineui-alias-background-surface-disabled",
1768
1775
  rootPlainDisabled: "bg-transparent",
1769
1776
  icon: "inline-flex shrink-0 items-center justify-center text-refineui-alias-foreground-tertiary",
1770
1777
  iconDisabled: "text-refineui-alias-foreground-disabled",
1771
- input: "min-w-0 flex-1 appearance-none border-none bg-transparent p-0 text-refineui-alias-foreground-primary outline-none placeholder:text-refineui-alias-foreground-placeholder disabled:cursor-not-allowed disabled:text-refineui-alias-foreground-disabled",
1772
- clear: "inline-flex shrink-0 cursor-pointer items-center justify-center border-none bg-transparent p-0 leading-none text-refineui-alias-foreground-tertiary",
1778
+ input: "min-w-0 flex-1 appearance-none border-none bg-transparent p-0 text-refineui-alias-foreground-primary outline-none placeholder:text-refineui-alias-foreground-placeholder disabled:cursor-not-allowed disabled:text-refineui-alias-foreground-disabled [&::-webkit-search-decoration]:appearance-none [&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-results-button]:appearance-none [&::-webkit-search-results-decoration]:appearance-none",
1779
+ clear: "inline-flex shrink-0 cursor-pointer items-center justify-center border-none bg-transparent p-0 leading-none text-refineui-alias-foreground-tertiary hover:text-refineui-alias-foreground-primary active:transform-none",
1773
1780
  clearDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled"
1774
1781
  };
1775
1782
  var searchFieldFilledSizeClass = formControlRowShellSizeClass;
@@ -2000,7 +2007,7 @@ import { clsx as clsx9 } from "clsx";
2000
2007
  // src/components/Textarea/style.ts
2001
2008
  import { clsx as clsx8 } from "clsx";
2002
2009
  var textareaStyles = {
2003
- base: "box-border appearance-none outline-none transition-[border-color,box-shadow,background-color] duration-[var(--refineui-motion-duration-fast)]",
2010
+ base: "box-border appearance-none outline-none transition-[border-color,box-shadow,background-color] duration-[var(--refineui-motion-duration-fast)] hover:border-refineui-alias-border-hover focus:border-refineui-alias-border-focus focus:shadow-[0_0_0_0.5px_var(--refineui-color-alias-border-focus)] data-[error=true]:focus:border-refineui-alias-background-error-hover data-[error=true]:focus:shadow-[0_0_0_0.5px_var(--refineui-color-alias-background-error-hover)] data-[success=true]:focus:border-refineui-alias-background-success-hover data-[success=true]:focus:shadow-[0_0_0_0.5px_var(--refineui-color-alias-background-success-hover)] disabled:cursor-not-allowed disabled:opacity-100",
2004
2011
  field: clsx8(
2005
2012
  componentTextClass(componentTypographyTokens.textarea),
2006
2013
  "min-h-refineui-control-textarea-min resize-y rounded-refineui-large px-refineui-size-x-small py-refineui-size-medium"
@@ -2057,18 +2064,18 @@ import { clsx as clsx11 } from "clsx";
2057
2064
  // src/recipes/badge.recipe.ts
2058
2065
  import { clsx as clsx10 } from "clsx";
2059
2066
  var badgeVariantClass = {
2060
- default: "bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed",
2061
- neutral: "bg-refineui-alias-background-brand-subtle text-refineui-alias-foreground-brand-strong",
2062
- outline: "border-refineui-thin border-refineui-alias-border-default border bg-transparent text-refineui-alias-foreground-primary box-border",
2063
- success: "bg-refineui-alias-background-success text-refineui-alias-foreground-inversed",
2064
- warning: "bg-refineui-alias-background-warning text-refineui-alias-foreground-inversed",
2065
- danger: "bg-refineui-alias-background-error text-refineui-alias-foreground-inversed"
2067
+ default: "bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed hover:bg-refineui-alias-background-brand-hover active:bg-refineui-alias-background-brand-active",
2068
+ neutral: "bg-refineui-alias-background-brand-subtle text-refineui-alias-foreground-brand-strong hover:bg-refineui-alias-background-primary-hover active:bg-refineui-alias-background-primary-active",
2069
+ outline: "border-refineui-thin border-refineui-alias-border-default border bg-transparent text-refineui-alias-foreground-primary box-border active:border-refineui-alias-border-strong",
2070
+ success: "bg-refineui-alias-background-success text-refineui-alias-foreground-inversed hover:bg-refineui-alias-background-success-hover active:bg-refineui-alias-background-success-subtle",
2071
+ warning: "bg-refineui-alias-background-warning text-refineui-alias-foreground-inversed hover:bg-refineui-alias-background-warning-hover active:bg-refineui-alias-background-warning-subtle",
2072
+ danger: "bg-refineui-alias-background-error text-refineui-alias-foreground-inversed hover:bg-refineui-alias-background-error-hover active:bg-refineui-alias-background-error-subtle"
2066
2073
  };
2067
2074
  var badgeRecipe = defineRecipe({
2068
2075
  name: "badge",
2069
2076
  base: clsx10(
2070
2077
  componentTextClass(componentTypographyTokens.badge),
2071
- "inline-flex items-center justify-center py-refineui-size-xxsmall px-refineui-size-small"
2078
+ "inline-flex items-center justify-center py-refineui-size-xxsmall px-refineui-size-small transition-[background-color,border-color] duration-[var(--refineui-motion-duration-fast)]"
2072
2079
  ),
2073
2080
  variants: {
2074
2081
  variant: badgeVariantClass,
@@ -2114,26 +2121,27 @@ import { clsx as clsx13 } from "clsx";
2114
2121
  // src/components/Card/style.ts
2115
2122
  import { clsx as clsx12 } from "clsx";
2116
2123
  var cardStyles = {
2117
- root: "box-border flex h-full flex-col gap-refineui-size-none overflow-hidden rounded-refineui-xx-large bg-refineui-alias-background-primary",
2118
- elevated: "border-refineui-none shadow-refineui-4",
2124
+ root: "group box-border flex h-full flex-col gap-refineui-size-none overflow-hidden rounded-[var(--refineui-radius-rounded-xx-large)] bg-refineui-alias-background-primary data-[selected=true]:shadow-[inset_0_0_0_var(--refineui-stroke-width-thick)_var(--refineui-color-alias-border-focus)]",
2125
+ elevated: "border-refineui-none shadow-refineui-4 data-[selected=true]:shadow-[var(--refineui-elevation-4),inset_0_0_0_var(--refineui-stroke-width-thick)_var(--refineui-color-alias-border-focus)]",
2119
2126
  outlined: "border-refineui-thin border-refineui-alias-border-default shadow-none",
2120
2127
  stateDefault: "bg-refineui-alias-background-primary",
2121
2128
  stateHover: "bg-refineui-alias-background-primary-hover",
2122
2129
  statePressed: "bg-refineui-alias-background-surface-active",
2123
2130
  stateDisabled: "bg-refineui-alias-background-surface-disabled",
2124
- interactive: "cursor-pointer transition-[background-color,border-color,box-shadow,outline-color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]",
2131
+ interactive: "cursor-pointer transition-[background-color,border-color,box-shadow,outline-color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)] hover:bg-refineui-alias-background-primary-hover active:bg-refineui-alias-background-surface-selected",
2132
+ interactiveOutlined: "hover:border-refineui-alias-border-default active:border-refineui-alias-border-strong",
2125
2133
  headerMain: "flex min-w-0 flex-1 flex-col gap-refineui-size-xx-small",
2126
2134
  header: "flex flex-row flex-wrap items-start justify-between gap-refineui-size-medium px-refineui-size-x-large py-refineui-size-large",
2127
2135
  title: clsx12(
2128
2136
  componentTextClass(componentTypographyTokens.card.title),
2129
- "text-refineui-alias-foreground-primary"
2137
+ "text-refineui-alias-foreground-primary group-aria-disabled:text-refineui-alias-foreground-disabled"
2130
2138
  ),
2131
2139
  description: clsx12(
2132
2140
  componentTextClass(componentTypographyTokens.card.description),
2133
- "text-refineui-alias-foreground-tertiary"
2141
+ "text-refineui-alias-foreground-tertiary group-aria-disabled:text-refineui-alias-foreground-disabled"
2134
2142
  ),
2135
2143
  action: "flex shrink-0 items-center justify-end",
2136
- content: "flex flex-1 flex-col px-refineui-size-x-large pb-refineui-size-large",
2144
+ content: "flex flex-1 flex-col px-refineui-size-x-large pb-refineui-size-large group-aria-disabled:text-refineui-alias-foreground-disabled",
2137
2145
  footer: "mt-auto flex shrink-0 items-center justify-end gap-refineui-size-x-small px-refineui-size-x-large py-refineui-size-medium"
2138
2146
  };
2139
2147
 
@@ -2163,6 +2171,7 @@ function Card({
2163
2171
  state === "pressed" && cardStyles.statePressed,
2164
2172
  state === "disabled" && cardStyles.stateDisabled,
2165
2173
  interactive && !isDisabled && cardStyles.interactive,
2174
+ interactive && !isDisabled && variant === "outlined" && cardStyles.interactiveOutlined,
2166
2175
  className
2167
2176
  ),
2168
2177
  ...props
@@ -2247,16 +2256,16 @@ var labelCompanionStyles = {
2247
2256
 
2248
2257
  // src/components/Checkbox/style.ts
2249
2258
  var checkboxStyles = {
2250
- root: "inline-flex gap-refineui-size-x-small",
2259
+ root: "group inline-flex gap-refineui-size-x-small",
2251
2260
  textTop: "items-start",
2252
2261
  textCenter: "items-center",
2253
2262
  disabledCursor: "cursor-not-allowed",
2254
2263
  enabledCursor: "cursor-pointer",
2255
2264
  controlWrap: "relative h-[var(--refineui-size-control-checkbox,20px)] w-[var(--refineui-size-control-checkbox,20px)] shrink-0",
2256
2265
  controlWrapDesc: "mt-refineui-size-xxx-small",
2257
- input: "absolute inset-0 z-1 m-0 h-full w-full cursor-pointer opacity-0 outline-none",
2266
+ input: "peer absolute inset-0 z-1 m-0 h-full w-full cursor-pointer opacity-0 outline-none",
2258
2267
  inputDisabled: "cursor-not-allowed",
2259
- visual: "pointer-events-none absolute inset-0 box-border flex items-center justify-center overflow-hidden",
2268
+ visual: "pointer-events-none absolute inset-0 box-border flex size-[var(--refineui-size-control-checkbox,20px)] min-h-[var(--refineui-size-control-checkbox,20px)] min-w-[var(--refineui-size-control-checkbox,20px)] items-center justify-center overflow-hidden rounded-[var(--refineui-radius-rounded-large)] border border-refineui-alias-border-default bg-refineui-alias-background-primary transition-[background-color,border-color,border-width] duration-[var(--refineui-motion-duration-fast)] data-[variant=circular]:rounded-refineui-circle data-[checked=true]:border-refineui-alias-background-brand data-[checked=true]:bg-refineui-alias-background-brand group-hover:data-[checked=false]:border-refineui-alias-border-subtle group-active:data-[checked=false]:border-refineui-alias-border-strong group-hover:data-[checked=true]:border-refineui-alias-background-brand-hover group-hover:data-[checked=true]:bg-refineui-alias-background-brand-hover group-active:data-[checked=true]:border-refineui-alias-background-brand-active group-active:data-[checked=true]:bg-refineui-alias-background-brand-active peer-focus-visible:border-2 peer-focus-visible:border-refineui-alias-border-strong peer-focus-visible:bg-refineui-alias-background-primary peer-focus-visible:data-[checked=true]:border-refineui-alias-border-focus peer-focus-visible:data-[checked=true]:bg-refineui-alias-background-brand-active data-[disabled=true]:border-refineui-alias-border-disabled data-[disabled=true]:bg-refineui-alias-background-primary-hover [&[data-disabled=true][data-checked=true]]:border-refineui-alias-background-surface-selected [&[data-disabled=true][data-checked=true]]:bg-refineui-alias-background-surface-selected",
2260
2269
  textCol: "flex min-w-0 flex-col gap-refineui-size-x-small",
2261
2270
  label: labelCompanionStyles.label,
2262
2271
  desc: labelCompanionStyles.description,
@@ -2390,7 +2399,7 @@ var radioStyles = {
2390
2399
  rootWithoutDescription: "items-center",
2391
2400
  rootDisabled: "cursor-not-allowed",
2392
2401
  rootEnabled: "cursor-pointer",
2393
- input: "h-[var(--refineui-size-control-checkbox-radio,20px)] w-[var(--refineui-size-control-checkbox-radio,20px)] shrink-0 cursor-pointer",
2402
+ input: "relative m-0 inline-grid size-[var(--refineui-size-control-checkbox-radio,20px)] min-h-[var(--refineui-size-control-checkbox-radio,20px)] min-w-[var(--refineui-size-control-checkbox-radio,20px)] shrink-0 cursor-pointer appearance-none place-content-center rounded-full border border-refineui-alias-border-default bg-refineui-alias-background-primary shadow-none outline-none transition-[border-color,background-color,box-shadow,opacity] duration-[var(--refineui-motion-duration-fast)] after:size-refineui-size-medium after:scale-0 after:rounded-full after:bg-refineui-alias-background-primary after:content-[''] after:transition-transform after:duration-[var(--refineui-motion-duration-fast)] after:ease-[var(--refineui-motion-easing-ease-out)] focus-visible:shadow-[0_0_0_var(--refineui-stroke-width-thick)_var(--refineui-color-alias-border-strong)] checked:border-refineui-alias-foreground-primary checked:bg-refineui-alias-foreground-primary checked:after:scale-100 checked:focus-visible:shadow-[0_0_0_var(--refineui-stroke-width-thick)_var(--refineui-color-alias-border-strong)] disabled:cursor-not-allowed disabled:border-refineui-alias-border-disabled disabled:opacity-100 disabled:checked:border-refineui-alias-foreground-disabled disabled:checked:bg-refineui-alias-foreground-disabled disabled:checked:after:scale-100",
2394
2403
  inputWithDescriptionOffset: "mt-refineui-size-xxx-small",
2395
2404
  textWrap: "flex min-w-0 flex-col gap-refineui-size-x-small",
2396
2405
  label: labelCompanionStyles.label,
@@ -2512,7 +2521,7 @@ import {
2512
2521
  } from "react";
2513
2522
  import { createPortal } from "react-dom";
2514
2523
  import { iconSizes as iconSizes4 } from "@refineui/tokens";
2515
- import { acquireBodyScrollLock, composeRefs } from "@refineui/utilities/react";
2524
+ import { composeRefs } from "@refineui/utilities/react";
2516
2525
 
2517
2526
  // src/components/ScrollArea/ScrollAreaRegion.tsx
2518
2527
  import { clsx as clsx26 } from "clsx";
@@ -2539,7 +2548,7 @@ import { spacings } from "@refineui/tokens";
2539
2548
  var SCROLL_AREA_THUMB_MIN_PX = Number.parseFloat(spacings.sizeXLarge);
2540
2549
  var SCROLL_EDGE_FALLOFF_RATIO = 0.25;
2541
2550
  var scrollAreaStyles = {
2542
- root: "box-border min-h-0 min-w-0 overflow-hidden outline-none",
2551
+ root: "relative box-border min-h-0 min-w-0 overflow-hidden outline-none",
2543
2552
  /**
2544
2553
  * Overflow and scroll chaining are per axis: an axis only becomes scrollable
2545
2554
  * when its scrollbar is declared, so a horizontal-only area lets vertical
@@ -2548,26 +2557,31 @@ var scrollAreaStyles = {
2548
2557
  viewport: clsx24(
2549
2558
  "size-full min-h-0 min-w-0 rounded-[inherit]",
2550
2559
  "overflow-hidden",
2551
- "outline-none",
2560
+ "outline-none [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
2552
2561
  "data-[overflow-x=true]:overflow-x-auto data-[overflow-x=true]:overscroll-x-contain",
2553
2562
  "data-[overflow-y=true]:overflow-y-auto data-[overflow-y=true]:overscroll-y-contain"
2554
2563
  ),
2555
2564
  scrollbar: clsx24(
2556
2565
  "z-refineui-content box-border touch-none select-none",
2557
- "transition-opacity duration-[var(--refineui-motion-duration-fast)]",
2558
- "ease-[var(--refineui-motion-easing-ease-out)]"
2566
+ "transition-opacity duration-[var(--refineui-motion-duration-normal)]",
2567
+ "ease-[var(--refineui-motion-easing-ease-out)]",
2568
+ "data-[state=hidden]:pointer-events-none data-[state=hidden]:opacity-0",
2569
+ "data-[visibility=always]:data-[state=visible]:opacity-100",
2570
+ "data-[visibility=hover]:data-[state=visible]:pointer-events-none data-[visibility=hover]:data-[state=visible]:opacity-0",
2571
+ "data-[visibility=scroll]:data-[state=visible]:pointer-events-none data-[visibility=scroll]:data-[state=visible]:opacity-0",
2572
+ "data-[active=true]:!pointer-events-auto data-[active=true]:!opacity-100"
2559
2573
  ),
2560
- scrollbarVertical: "",
2561
- scrollbarHorizontal: "",
2574
+ scrollbarVertical: "absolute inset-y-refineui-size-xxx-small end-refineui-size-xxx-small w-refineui-size-medium overflow-hidden",
2575
+ scrollbarHorizontal: "absolute inset-x-refineui-size-xxx-small bottom-refineui-size-xxx-small h-refineui-size-medium overflow-hidden",
2562
2576
  /** Inner rail — thumb is absolutely positioned here (padding lives on the outer scrollbar). */
2563
- track: "relative size-full min-h-0 min-w-0 overflow-hidden rounded-refineui-circle",
2577
+ track: "relative size-full min-h-0 min-w-0 overflow-hidden rounded-refineui-circle bg-refineui-alias-background-surface-selected",
2564
2578
  thumb: clsx24(
2565
2579
  "absolute rounded-refineui-circle",
2566
2580
  "bg-refineui-alias-border-strong",
2567
2581
  "transition-[background-color] duration-[var(--refineui-motion-duration-fast)]",
2568
2582
  "ease-[var(--refineui-motion-easing-ease-out)]",
2569
2583
  "hover:bg-refineui-alias-foreground-secondary",
2570
- "data-[dragging=true]:bg-refineui-alias-foreground-secondary"
2584
+ "data-[dragging=true]:bg-refineui-alias-foreground-secondary data-[orientation=vertical]:start-0 data-[orientation=vertical]:w-full data-[orientation=horizontal]:top-0 data-[orientation=horizontal]:h-full"
2571
2585
  )
2572
2586
  };
2573
2587
  var scrollAreaScrollbarOrientationClass = {
@@ -2649,6 +2663,8 @@ var ScrollArea = forwardRef4(function ScrollArea2({
2649
2663
  const [vertical, setVertical] = useState4(EMPTY_METRICS);
2650
2664
  const [horizontal, setHorizontal] = useState4(EMPTY_METRICS);
2651
2665
  const [scrolling, setScrolling] = useState4(false);
2666
+ const [hovering, setHovering] = useState4(false);
2667
+ const [focused, setFocused] = useState4(false);
2652
2668
  const [interacting, setInteracting] = useState4(false);
2653
2669
  const [axes, setAxes] = useState4(NO_AXES);
2654
2670
  const hideTimerRef = useRef4(null);
@@ -2716,6 +2732,14 @@ var ScrollArea = forwardRef4(function ScrollArea2({
2716
2732
  if (hideTimerRef.current != null) window.clearTimeout(hideTimerRef.current);
2717
2733
  };
2718
2734
  }, [sync, markScrolling, viewportEpoch]);
2735
+ useEffect(() => {
2736
+ if (!hovering) return;
2737
+ const clearHoverAfterAncestorScroll = (event) => {
2738
+ if (event.target !== viewportRef.current) setHovering(false);
2739
+ };
2740
+ window.addEventListener("scroll", clearHoverAfterAncestorScroll, true);
2741
+ return () => window.removeEventListener("scroll", clearHoverAfterAncestorScroll, true);
2742
+ }, [hovering]);
2719
2743
  const ctx = useMemo3(
2720
2744
  () => ({
2721
2745
  type,
@@ -2726,6 +2750,10 @@ var ScrollArea = forwardRef4(function ScrollArea2({
2726
2750
  vertical,
2727
2751
  horizontal,
2728
2752
  scrolling,
2753
+ hovering,
2754
+ setHovering,
2755
+ focused,
2756
+ setFocused,
2729
2757
  interacting,
2730
2758
  setInteracting
2731
2759
  }),
@@ -2737,6 +2765,8 @@ var ScrollArea = forwardRef4(function ScrollArea2({
2737
2765
  vertical,
2738
2766
  horizontal,
2739
2767
  scrolling,
2768
+ hovering,
2769
+ focused,
2740
2770
  interacting
2741
2771
  ]
2742
2772
  );
@@ -2747,6 +2777,7 @@ var ScrollArea = forwardRef4(function ScrollArea2({
2747
2777
  "data-refineui": "scroll-area",
2748
2778
  "data-type": type,
2749
2779
  "data-scrolling": scrolling || void 0,
2780
+ "data-hovering": hovering || void 0,
2750
2781
  "data-interacting": interacting || void 0,
2751
2782
  className: clsx25(scrollAreaStyles.root, className),
2752
2783
  ...props,
@@ -2755,8 +2786,8 @@ var ScrollArea = forwardRef4(function ScrollArea2({
2755
2786
  ) });
2756
2787
  });
2757
2788
  var ScrollAreaViewport = forwardRef4(
2758
- function ScrollAreaViewport2({ className, children, ...props }, forwardedRef) {
2759
- const { setViewportNode, axes, vertical, horizontal } = useScrollAreaContext("ScrollAreaViewport");
2789
+ function ScrollAreaViewport2({ className, children, onPointerEnter, onPointerLeave, onFocus, onBlur, ...props }, forwardedRef) {
2790
+ const { setViewportNode, axes, vertical, horizontal, setHovering, setFocused } = useScrollAreaContext("ScrollAreaViewport");
2760
2791
  const composedRef = useComposedRefs(setViewportNode, forwardedRef);
2761
2792
  const scrollable = isScrollable(vertical) || isScrollable(horizontal);
2762
2793
  return /* @__PURE__ */ jsx20(
@@ -2768,6 +2799,23 @@ var ScrollAreaViewport = forwardRef4(
2768
2799
  "data-overflow-y": axes.vertical ? "true" : void 0,
2769
2800
  tabIndex: scrollable ? 0 : void 0,
2770
2801
  className: clsx25(scrollAreaStyles.viewport, className),
2802
+ onPointerEnter: (event) => {
2803
+ onPointerEnter?.(event);
2804
+ setHovering(true);
2805
+ },
2806
+ onPointerLeave: (event) => {
2807
+ onPointerLeave?.(event);
2808
+ setHovering(false);
2809
+ },
2810
+ onFocus: (event) => {
2811
+ onFocus?.(event);
2812
+ setFocused(true);
2813
+ },
2814
+ onBlur: (event) => {
2815
+ onBlur?.(event);
2816
+ const next = event.relatedTarget;
2817
+ if (!next || !event.currentTarget.contains(next)) setFocused(false);
2818
+ },
2771
2819
  ...props,
2772
2820
  children
2773
2821
  }
@@ -2779,6 +2827,8 @@ function ScrollAreaScrollbar({
2779
2827
  className,
2780
2828
  children,
2781
2829
  onPointerDown,
2830
+ onPointerEnter,
2831
+ onPointerLeave,
2782
2832
  ...props
2783
2833
  }) {
2784
2834
  const {
@@ -2788,12 +2838,15 @@ function ScrollAreaScrollbar({
2788
2838
  vertical,
2789
2839
  horizontal,
2790
2840
  scrolling,
2791
- interacting
2841
+ hovering,
2842
+ focused,
2843
+ interacting,
2844
+ setHovering
2792
2845
  } = useScrollAreaContext("ScrollAreaScrollbar");
2793
2846
  const trackRef = useRef4(null);
2794
2847
  const metrics = orientation === "vertical" ? vertical : horizontal;
2795
2848
  const visible = isScrollable(metrics);
2796
- const active = scrolling || interacting;
2849
+ const active = type === "hover" ? hovering || focused || scrolling || interacting : type === "scroll" ? focused || scrolling || interacting : false;
2797
2850
  useLayoutEffect(() => {
2798
2851
  setAxisEnabled(orientation, true);
2799
2852
  return () => setAxisEnabled(orientation, false);
@@ -2843,6 +2896,14 @@ function ScrollAreaScrollbar({
2843
2896
  className
2844
2897
  ),
2845
2898
  onPointerDown: onTrackPointerDown,
2899
+ onPointerEnter: (event) => {
2900
+ onPointerEnter?.(event);
2901
+ setHovering(true);
2902
+ },
2903
+ onPointerLeave: (event) => {
2904
+ onPointerLeave?.(event);
2905
+ setHovering(false);
2906
+ },
2846
2907
  ...props,
2847
2908
  children: /* @__PURE__ */ jsx20(
2848
2909
  "div",
@@ -2991,7 +3052,7 @@ var selectStyles = {
2991
3052
  "border-refineui-hairline border-refineui-alias-border-default",
2992
3053
  "bg-refineui-alias-background-primary px-refineui-size-medium py-refineui-size-x-small",
2993
3054
  "text-refineui-alias-foreground-primary outline-none",
2994
- "transition-[color,background-color,border-color,transform] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
3055
+ "transition-[color,background-color,border-color,transform] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)] hover:!bg-refineui-alias-background-primary-hover hover:!text-refineui-alias-foreground-primary-hover active:!bg-refineui-alias-background-primary-active active:!text-refineui-alias-foreground-primary data-[state=open]:!bg-refineui-alias-background-primary-hover data-[state=open]:!text-refineui-alias-foreground-primary-hover data-[pressed]:!bg-refineui-alias-background-primary-active data-[pressed]:!text-refineui-alias-foreground-primary focus-visible:!bg-refineui-alias-background-primary-hover focus-visible:!text-refineui-alias-foreground-primary-hover"
2995
3056
  ),
2996
3057
  /** Ghost plate — same gap/radius as filled, no field border (Button ghost-like). */
2997
3058
  triggerGhost: clsx27(
@@ -3000,7 +3061,7 @@ var selectStyles = {
3000
3061
  "border-refineui-none border-transparent bg-transparent",
3001
3062
  "px-refineui-size-x-small py-refineui-size-xx-small",
3002
3063
  "text-refineui-alias-foreground-primary outline-none",
3003
- "transition-[color,background-color,transform] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
3064
+ "transition-[color,background-color,transform] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)] hover:bg-refineui-alias-background-primary-hover hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-primary-active active:text-refineui-alias-foreground-primary data-[state=open]:bg-refineui-alias-background-primary-hover data-[state=open]:text-refineui-alias-foreground-primary-hover data-[pressed]:bg-refineui-alias-background-primary-active data-[pressed]:text-refineui-alias-foreground-primary focus-visible:bg-refineui-alias-background-primary-hover focus-visible:text-refineui-alias-foreground-primary-hover"
3004
3065
  ),
3005
3066
  /** Flush shell — consumer / parent owns padding, radius, surface. */
3006
3067
  triggerPlain: clsx27(
@@ -3018,13 +3079,14 @@ var selectStyles = {
3018
3079
  chevronOpen: "rotate-180",
3019
3080
  /* No overflow-hidden — it isolates descendants and kills panel `backdrop-filter`. */
3020
3081
  positioner: "z-refineui-popup flex flex-col",
3021
- contentShell: "box-border flex w-full min-h-0 flex-col overflow-hidden rounded-refineui-xx-large border-refineui-hairline border-refineui-alias-border-default p-refineui-size-xx-small shadow-refineui-2 outline-none",
3082
+ contentShell: "box-border flex w-full min-h-0 flex-col overflow-hidden rounded-refineui-xx-large border-refineui-hairline border-refineui-alias-border-default bg-refineui-alias-surface-frosted p-refineui-size-xx-small shadow-refineui-2 outline-none backdrop-blur-refineui-surface-frost",
3022
3083
  contentPopper: "h-auto max-h-[var(--refineui-select-content-available-height,100dvh)]",
3023
- contentItemAligned: "max-h-full",
3084
+ /** The positioner owns alignment height; the frosted surface only covers its content. */
3085
+ contentItemAligned: "h-fit max-h-full self-start",
3024
3086
  viewportPopper: "relative flex max-h-full min-h-0 min-w-full w-full flex-col",
3025
- viewportItemAligned: "relative flex min-h-0 min-w-full w-full max-h-full flex-1 flex-col",
3087
+ viewportItemAligned: "relative flex h-auto min-h-0 min-w-full w-full max-h-full flex-none flex-col",
3026
3088
  scrollAreaRootPopper: "relative flex max-h-full min-h-0 flex-col",
3027
- scrollAreaRootItemAligned: "relative flex h-full min-h-0 flex-1 flex-col",
3089
+ scrollAreaRootItemAligned: "relative flex h-auto min-h-0 max-h-full flex-none flex-col",
3028
3090
  group: "flex flex-col gap-px",
3029
3091
  label: clsx27(
3030
3092
  componentTextClass(componentTypographyTokens.select.label),
@@ -3033,7 +3095,7 @@ var selectStyles = {
3033
3095
  separator: "my-refineui-size-x-small h-px bg-refineui-alias-border-default",
3034
3096
  item: clsx27(
3035
3097
  componentTextClass(componentTypographyTokens.select.item),
3036
- "relative flex cursor-pointer items-center gap-refineui-size-x-small rounded-refineui-large border-refineui-none bg-transparent p-refineui-size-x-small text-refineui-alias-foreground-primary outline-none transition-colors data-[disabled]:cursor-not-allowed data-[disabled]:text-refineui-alias-foreground-disabled"
3098
+ "relative flex cursor-pointer items-center gap-refineui-size-x-small rounded-refineui-large border-refineui-none bg-transparent p-refineui-size-x-small text-refineui-alias-foreground-primary outline-none transition-[background-color,transform] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)] hover:bg-refineui-alias-background-primary-hover hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-primary-active active:text-refineui-alias-foreground-primary data-[selected=true]:bg-refineui-alias-background-primary-hover data-[selected=true]:text-refineui-alias-foreground-primary data-[state=selected]:bg-refineui-alias-background-primary-hover data-[state=selected]:text-refineui-alias-foreground-primary data-[state=hover]:bg-refineui-alias-background-primary-hover data-[state=hover]:text-refineui-alias-foreground-primary-hover data-[state=pressed]:bg-refineui-alias-background-primary-active data-[state=pressed]:text-refineui-alias-foreground-primary aria-disabled:cursor-not-allowed aria-disabled:bg-refineui-alias-background-surface-disabled aria-disabled:!text-refineui-alias-foreground-disabled aria-disabled:transform-none"
3037
3099
  ),
3038
3100
  itemActive: "bg-refineui-alias-background-primary-hover",
3039
3101
  itemDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
@@ -3166,32 +3228,6 @@ function Select({
3166
3228
  document.addEventListener("mousedown", onOutside);
3167
3229
  return () => document.removeEventListener("mousedown", onOutside);
3168
3230
  }, [open, setOpen]);
3169
- useEffect2(() => {
3170
- if (!open) return;
3171
- const releaseBodyLock = acquireBodyScrollLock();
3172
- const ancestors = getScrollableAncestors(triggerRef.current).filter(
3173
- (el) => el !== document.body && el !== document.documentElement
3174
- );
3175
- const prevStyles = ancestors.map((el) => ({
3176
- el,
3177
- overflow: el.style.overflow,
3178
- overflowX: el.style.overflowX,
3179
- overflowY: el.style.overflowY
3180
- }));
3181
- for (const { el } of prevStyles) {
3182
- el.style.overflow = "hidden";
3183
- el.style.overflowX = "hidden";
3184
- el.style.overflowY = "hidden";
3185
- }
3186
- return () => {
3187
- for (const { el, overflow, overflowX, overflowY } of prevStyles) {
3188
- el.style.overflow = overflow;
3189
- el.style.overflowX = overflowX;
3190
- el.style.overflowY = overflowY;
3191
- }
3192
- releaseBodyLock();
3193
- };
3194
- }, [open]);
3195
3231
  const onKeyDown = useCallback4(
3196
3232
  (event) => {
3197
3233
  if (disabled) return;
@@ -3379,7 +3415,7 @@ function SelectValue({ placeholder, className, ...props }) {
3379
3415
  className
3380
3416
  ),
3381
3417
  ...props,
3382
- children: label || placeholder || rootPlaceholder || "Select..."
3418
+ children: label || placeholder || rootPlaceholder || value || "Select..."
3383
3419
  }
3384
3420
  );
3385
3421
  }
@@ -3735,7 +3771,7 @@ function SelectItem({
3735
3771
  const [pressed, setPressed] = useState5(false);
3736
3772
  const isSelected = value === itemValue;
3737
3773
  const label = (textValue || (typeof children === "string" ? children : String(itemValue))).trim();
3738
- useEffect2(() => {
3774
+ useIsomorphicLayoutEffect(() => {
3739
3775
  return registerItem({ value: itemValue, label, disabled, ref });
3740
3776
  }, [registerItem, itemValue, label, disabled]);
3741
3777
  const enabledItems = itemsRef.current.filter((item) => !item.disabled);
@@ -3853,16 +3889,17 @@ import { clsx as clsx29 } from "clsx";
3853
3889
 
3854
3890
  // src/components/Toggle/style.ts
3855
3891
  var toggleStyles = {
3856
- root: "box-border flex w-refineui-switch-width items-center rounded-refineui-x-large border-none p-refineui-switch-padding transition-colors duration-[var(--refineui-motion-duration-medium)]",
3892
+ root: "box-border flex w-refineui-switch-width items-center rounded-refineui-x-large border-none p-refineui-switch-padding transition-colors duration-[var(--refineui-motion-duration-medium)] focus-visible:outline-[length:var(--refineui-stroke-width-thick)] focus-visible:outline-refineui-alias-border-focus focus-visible:outline-offset-refineui-size-xxx-small",
3857
3893
  /** OFF rest — Web Kit track fill off */
3858
- unchecked: "cursor-pointer bg-refineui-alias-background-primary-active",
3894
+ unchecked: "cursor-pointer bg-refineui-alias-background-primary-active hover:bg-refineui-alias-background-surface-selected active:bg-refineui-alias-background-brand-subtle",
3859
3895
  /** ON rest */
3860
- checked: "cursor-pointer bg-refineui-alias-background-brand",
3896
+ checked: "cursor-pointer bg-refineui-alias-background-brand hover:bg-refineui-alias-background-brand-hover active:bg-refineui-alias-background-brand-active",
3861
3897
  /** Disabled OFF — muted empty track */
3862
3898
  disabledUnchecked: "cursor-not-allowed bg-refineui-alias-background-surface-disabled",
3863
3899
  /** Disabled ON — muted brand so on/off stay distinguishable */
3864
3900
  disabledChecked: "cursor-not-allowed bg-refineui-alias-background-brand-subtle",
3865
- thumb: "block h-refineui-switch-thumb w-refineui-switch-thumb rounded-refineui-x-large shadow-refineui-2 transition-[transform,background-color] duration-[var(--refineui-motion-duration-medium)]",
3901
+ thumb: "block h-refineui-switch-thumb w-refineui-switch-thumb rounded-refineui-x-large shadow-refineui-2 transition-[translate,background-color] duration-[var(--refineui-motion-duration-medium)] ease-[var(--refineui-motion-easing-ease-out)]",
3902
+ thumbChecked: "translate-x-refineui-switch-thumb rtl:-translate-x-refineui-switch-thumb",
3866
3903
  thumbDefault: "bg-refineui-alias-background-primary",
3867
3904
  /** Disabled OFF thumb — slightly darker than track */
3868
3905
  thumbDisabledUnchecked: "bg-refineui-alias-background-brand-subtle shadow-none",
@@ -3897,7 +3934,7 @@ function Toggle({
3897
3934
  },
3898
3935
  disabled,
3899
3936
  ...props,
3900
- children: /* @__PURE__ */ jsx23("span", { className: clsx29(toggleStyles.thumb, thumbClass) })
3937
+ children: /* @__PURE__ */ jsx23("span", { className: clsx29(toggleStyles.thumb, checked && toggleStyles.thumbChecked, thumbClass) })
3901
3938
  }
3902
3939
  );
3903
3940
  }
@@ -3908,14 +3945,14 @@ import { clsx as clsx30 } from "clsx";
3908
3945
  // src/recipes/chip.recipe.ts
3909
3946
  import { iconSizes as iconSizes5 } from "@refineui/tokens";
3910
3947
  var chipVariantClass = {
3911
- default: "border-none bg-refineui-alias-background-surface-selected text-refineui-alias-foreground-brand",
3912
- outline: "border border-refineui-thin border-refineui-alias-border-default box-border bg-transparent text-refineui-alias-foreground-brand",
3913
- filled: "border-none bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed"
3948
+ default: "border-none bg-refineui-alias-background-surface-selected text-refineui-alias-foreground-brand hover:bg-refineui-alias-background-primary-hover active:bg-refineui-alias-background-primary-active",
3949
+ outline: "border border-refineui-thin border-refineui-alias-border-default box-border bg-transparent text-refineui-alias-foreground-brand hover:border-refineui-alias-border-hover active:border-refineui-alias-border-focus",
3950
+ filled: "border-none bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed hover:bg-refineui-alias-background-brand-hover active:bg-refineui-alias-background-brand-active"
3914
3951
  };
3915
3952
  var chipDisabledVariantClass = {
3916
- default: "border-none bg-refineui-alias-background-surface-disabled text-refineui-alias-foreground-disabled",
3917
- outline: "border border-refineui-thin border-refineui-alias-border-disabled box-border bg-transparent text-refineui-alias-foreground-disabled",
3918
- filled: "border-none bg-refineui-alias-background-surface-disabled text-refineui-alias-foreground-disabled"
3953
+ default: "pointer-events-none cursor-not-allowed border-none bg-refineui-alias-background-surface-disabled text-refineui-alias-foreground-disabled",
3954
+ outline: "pointer-events-none cursor-not-allowed border border-refineui-thin border-refineui-alias-border-disabled box-border bg-transparent text-refineui-alias-foreground-disabled",
3955
+ filled: "pointer-events-none cursor-not-allowed border-none bg-refineui-alias-background-surface-disabled text-refineui-alias-foreground-disabled"
3919
3956
  };
3920
3957
  var chipSizeClass = {
3921
3958
  sm: "min-h-refineui-chip-min-height-sm px-refineui-size-x-small",
@@ -3930,7 +3967,7 @@ var chipSizeIcon = {
3930
3967
  };
3931
3968
  var chipRecipe = defineRecipe({
3932
3969
  name: "chip",
3933
- base: "box-border inline-flex max-w-full items-center gap-refineui-size-xx-small rounded-refineui-medium",
3970
+ base: "box-border inline-flex max-w-full items-center gap-refineui-size-xx-small rounded-refineui-medium transition-[background-color,border-color] duration-[var(--refineui-motion-duration-fast)]",
3934
3971
  variants: {
3935
3972
  variant: chipVariantClass,
3936
3973
  size: chipSizeClass
@@ -4096,7 +4133,7 @@ var dialogRecipe = defineSlotRecipe({
4096
4133
  slots: ["root", "scrim", "panel", "panelScrollWrap", "header", "headerMain", "title", "description"],
4097
4134
  base: {
4098
4135
  root: "fixed inset-0 z-refineui-messages flex items-center justify-center p-refineui-size-large",
4099
- scrim: "absolute inset-0 cursor-pointer transition-opacity",
4136
+ scrim: "absolute inset-0 cursor-pointer transition-opacity backdrop-blur-[var(--refineui-blur-overlay-scrim)]",
4100
4137
  panel: "relative box-border flex max-h-refineui-dialog-max-height-viewport w-full flex-col overflow-hidden rounded-refineui-xx-large bg-refineui-alias-background-primary p-refineui-size-xx-large shadow-refineui-8 outline-none",
4101
4138
  panelScrollWrap: "flex min-h-0 min-w-0 flex-1 flex-col",
4102
4139
  header: "flex shrink-0 items-start justify-between gap-refineui-size-x-small",
@@ -4357,7 +4394,7 @@ import { foundationSizes as foundationSizes2, iconSizes as iconSizes7 } from "@r
4357
4394
  var COMMAND_LIST_MAX_HEIGHT = `min(60vh, ${foundationSizes2.foundationSize3200})`;
4358
4395
  var commandStyles = {
4359
4396
  /** Detached layout: the search field and the results panel are separate surfaces, so the root has none. */
4360
- root: "flex w-full flex-col gap-refineui-size-small text-refineui-alias-foreground-primary outline-none",
4397
+ root: "flex w-full flex-col gap-refineui-size-small text-refineui-alias-foreground-primary outline-none [--refineui-command-list-radius:var(--refineui-radius-rounded-x-large)] data-[size=sm]:[--refineui-command-list-radius:var(--refineui-radius-rounded-large)] data-[size=lg]:[--refineui-command-list-radius:var(--refineui-radius-rounded-xx-large)]",
4361
4398
  rootInDialog: "min-h-0 w-full",
4362
4399
  /** Dialog panel stays transparent — the field and results panel float on the scrim themselves. */
4363
4400
  dialogContentPanel: {
@@ -4374,21 +4411,21 @@ var commandStyles = {
4374
4411
  * Radius comes from `--refineui-command-list-radius` (per size, refineui.css) so the scrollbar inset can share it.
4375
4412
  */
4376
4413
  listShell: clsx33(
4377
- "box-border w-full overflow-hidden",
4414
+ "box-border w-full overflow-hidden rounded-[var(--refineui-command-list-radius)] data-[animate=true]:transition-[height] data-[animate=true]:duration-[var(--refineui-motion-duration-medium)] data-[animate=true]:ease-[var(--refineui-motion-easing-emphasized)] motion-reduce:data-[animate=true]:transition-none",
4378
4415
  "border-refineui-hairline border-refineui-alias-border-default",
4379
4416
  "bg-refineui-alias-background-primary shadow-refineui-2"
4380
4417
  ),
4381
- list: "h-full min-h-0 w-full",
4418
+ list: "h-full min-h-0 w-full [&>[data-refineui=scroll-area]]:h-full [&>[data-refineui=scroll-area]]:min-h-0 [&>[data-refineui=scroll-area]>[data-refineui=scroll-area-scrollbar][data-orientation=vertical]]:inset-y-[calc(var(--refineui-command-list-radius)/2)]",
4382
4419
  listShellMaxHeight: {
4383
4420
  maxHeight: COMMAND_LIST_MAX_HEIGHT
4384
4421
  },
4385
4422
  listViewport: "outline-none",
4386
4423
  listInner: "relative flex flex-col gap-refineui-size-xxx-small px-refineui-size-medium py-refineui-size-small",
4387
4424
  /** Sliding highlight behind the selected item; geometry is measured, so physical `left`/`top` (inline) are intentional. */
4388
- indicator: "pointer-events-none absolute rounded-refineui-large bg-refineui-alias-background-surface-hover",
4425
+ indicator: "pointer-events-none absolute rounded-refineui-large bg-refineui-alias-background-surface-hover opacity-0 transition-none data-[ready=true]:opacity-100 data-[animate=true]:transition-[top,left,height,width,opacity,background-color] data-[animate=true]:duration-[var(--refineui-motion-duration-medium)] data-[animate=true]:ease-[var(--refineui-motion-easing-emphasized)] motion-reduce:transition-none",
4389
4426
  empty: clsx33(
4390
4427
  componentTextClass(componentTypographyTokens.command.empty),
4391
- "px-refineui-size-medium py-refineui-size-xx-large text-center text-refineui-alias-foreground-tertiary"
4428
+ "px-refineui-size-medium py-refineui-size-xx-large text-center text-refineui-alias-foreground-tertiary [animation:refineui-fade-enter_var(--refineui-motion-duration-normal)_var(--refineui-motion-easing-standard)] motion-reduce:animation-none"
4392
4429
  ),
4393
4430
  /** `overflow-clip`, not hidden: a hidden group would become the scroll container the edge effect tracks. */
4394
4431
  group: "flex flex-col gap-refineui-size-xxx-small overflow-clip",
@@ -4400,7 +4437,7 @@ var commandStyles = {
4400
4437
  separatorLine: "h-px w-full shrink-0 bg-refineui-alias-border-default",
4401
4438
  itemBase: clsx33(
4402
4439
  "relative flex w-full items-center gap-refineui-size-x-small rounded-refineui-large border-none bg-transparent",
4403
- "px-refineui-size-x-small text-start outline-none"
4440
+ "px-refineui-size-x-small text-start outline-none transition-[background-color,transform] duration-[var(--refineui-motion-duration-fast)] hover:bg-refineui-alias-background-surface-hover hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-surface-active active:text-refineui-alias-foreground-primary active:scale-[var(--refineui-motion-scale-press)] data-[selected=true]:bg-refineui-alias-background-surface-hover data-[selected=true]:text-refineui-alias-foreground-primary-hover data-[state=hover]:bg-refineui-alias-background-surface-hover data-[state=hover]:text-refineui-alias-foreground-primary-hover data-[state=pressed]:bg-refineui-alias-background-surface-active data-[state=pressed]:text-refineui-alias-foreground-primary data-[state=active]:bg-refineui-alias-background-surface-hover data-[state=active]:text-refineui-alias-foreground-primary data-[state=disabled]:bg-transparent data-[state=disabled]:text-refineui-alias-foreground-disabled"
4404
4441
  ),
4405
4442
  itemDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
4406
4443
  itemEnabled: "cursor-pointer text-refineui-alias-foreground-primary",
@@ -5507,7 +5544,7 @@ function AvatarGroup({
5507
5544
  "data-avatar-stack-size": normalizedSize,
5508
5545
  className: clsx36(
5509
5546
  avatarStyles.groupRoot,
5510
- layout === "stack" ? "gap-0" : avatarSpreadGap[normalizedSize],
5547
+ layout === "stack" ? "gap-0 pe-[var(--avatar-stack-overlap)]" : avatarSpreadGap[normalizedSize],
5511
5548
  className
5512
5549
  ),
5513
5550
  style: {
@@ -5518,9 +5555,9 @@ function AvatarGroup({
5518
5555
  const isCount = isValidElement3(child) && child.type === AvatarGroupCount;
5519
5556
  const z = layout === "stack" ? index : void 0;
5520
5557
  if (isCount) {
5521
- return /* @__PURE__ */ jsx28("div", { className: avatarStyles.groupCountWrap, style: { zIndex: z }, children: child }, `count-${index}`);
5558
+ return /* @__PURE__ */ jsx28("div", { className: clsx36(avatarStyles.groupCountWrap, layout === "stack" && index > 0 && "-ms-[var(--avatar-stack-overlap)]"), style: { zIndex: z }, children: child }, `count-${index}`);
5522
5559
  }
5523
- return /* @__PURE__ */ jsx28("div", { className: avatarStyles.groupAvatarWrap, style: { zIndex: z }, children: child }, `avatar-${index}`);
5560
+ return /* @__PURE__ */ jsx28("div", { className: clsx36(avatarStyles.groupAvatarWrap, layout === "stack" && index > 0 && "-ms-[var(--avatar-stack-overlap)]"), style: { zIndex: z }, children: child }, `avatar-${index}`);
5524
5561
  })
5525
5562
  }
5526
5563
  ) });
@@ -5591,14 +5628,23 @@ function Avatars({
5591
5628
  ...style
5592
5629
  },
5593
5630
  children: [
5594
- display.map((a, i) => /* @__PURE__ */ jsx29("div", { className: avatarsStyles.avatarWrap, style: isStack ? { zIndex: i } : void 0, children: /* @__PURE__ */ jsx29(Avatar, { src: a.src, alt: a.alt, size }) }, i)),
5631
+ display.map((a, i) => /* @__PURE__ */ jsx29(
5632
+ "div",
5633
+ {
5634
+ className: clsx37(avatarsStyles.avatarWrap, isStack && i > 0 && "-ms-[var(--avatar-stack-overlap)]"),
5635
+ style: isStack ? { zIndex: i } : void 0,
5636
+ children: /* @__PURE__ */ jsx29(Avatar, { src: a.src, alt: a.alt, size })
5637
+ },
5638
+ i
5639
+ )),
5595
5640
  remainder > 0 && /* @__PURE__ */ jsxs10(
5596
5641
  "div",
5597
5642
  {
5598
5643
  className: clsx37(
5599
5644
  avatarsStyles.overflowCount,
5600
5645
  avatarsCountSizeBySize[normalizedSize],
5601
- avatarsCountTypoBySize[normalizedSize]
5646
+ avatarsCountTypoBySize[normalizedSize],
5647
+ isStack && display.length > 0 && "-ms-[var(--avatar-stack-overlap)]"
5602
5648
  ),
5603
5649
  style: isStack ? { zIndex: display.length } : void 0,
5604
5650
  children: [
@@ -5679,7 +5725,7 @@ var alertRecipe = defineSlotRecipe({
5679
5725
  "close"
5680
5726
  ],
5681
5727
  base: {
5682
- root: "box-border flex items-start border-refineui-thin border-refineui-alias-border-default px-refineui-size-large py-refineui-size-medium",
5728
+ root: "box-border flex items-start rounded-[var(--refineui-radius-rounded-x-large)] border-refineui-thin border-refineui-alias-border-default px-refineui-size-large py-refineui-size-medium",
5683
5729
  icon: "relative box-border flex size-refineui-size-xx-large min-w-refineui-size-xx-large shrink-0 items-center justify-center overflow-hidden rounded-refineui-circle",
5684
5730
  content: "flex min-w-0 flex-1 flex-col gap-refineui-size-medium",
5685
5731
  row: "flex w-full flex-row items-start gap-refineui-size-medium",
@@ -6226,7 +6272,7 @@ import { clsx as clsx44 } from "clsx";
6226
6272
 
6227
6273
  // src/components/Spinner/style.ts
6228
6274
  var spinnerStyles = {
6229
- ringBase: "box-border rounded-refineui-circle border-solid border-refineui-alias-background-brand-subtle border-t-refineui-alias-background-brand",
6275
+ ringBase: "box-border shrink-0 animate-spin rounded-refineui-circle border-solid border-refineui-alias-background-brand-subtle border-t-refineui-alias-background-brand [animation-duration:var(--refineui-motion-duration-spinner)] [animation-timing-function:var(--refineui-motion-easing-linear)]",
6230
6276
  label: "text-refineui-alias-foreground-primary",
6231
6277
  withLabel: "inline-flex items-center justify-center gap-refineui-size-x-small"
6232
6278
  };
@@ -6314,23 +6360,23 @@ var tabsStyles = {
6314
6360
  list: clsx45(
6315
6361
  "relative flex w-full min-w-0 flex-nowrap items-stretch overflow-x-auto",
6316
6362
  "after:pointer-events-none after:absolute after:inset-inline-0 after:bottom-0",
6317
- "after:h-(--refineui-stroke-width-thin) after:bg-refineui-alias-border-default"
6363
+ "after:h-(--refineui-stroke-width-thin) after:bg-refineui-alias-border-default data-[ready=false]:[&_[data-refineui=tab][data-selected=true]]:after:block data-[ready=false]:[&_[data-refineui=tab][data-selected=true]]:after:h-(--refineui-stroke-width-thick) data-[ready=false]:[&_[data-refineui=tab][data-selected=true]]:after:bg-refineui-alias-background-brand"
6318
6364
  ),
6319
6365
  indicator: clsx45(
6320
6366
  "pointer-events-none absolute bottom-0 start-0 z-[1] block",
6321
6367
  "h-(--refineui-stroke-width-thick) bg-refineui-alias-background-brand",
6322
- "will-change-[transform,width]"
6368
+ "will-change-[transform,width] opacity-0 data-[ready=true]:opacity-100 transition-none data-[animate=true]:transition-[transform,width] data-[animate=true]:duration-[var(--refineui-motion-duration-medium)] data-[animate=true]:ease-[var(--refineui-motion-easing-emphasized)] motion-reduce:transition-none"
6323
6369
  ),
6324
6370
  trigger: clsx45(
6325
6371
  componentTextClass(componentTypographyTokens.tabs),
6326
6372
  "relative z-[1] box-border inline-flex min-h-0 min-w-0 shrink-0 items-center justify-center",
6327
6373
  "gap-refineui-size-x-small border-none bg-transparent",
6328
6374
  "px-refineui-size-medium py-refineui-size-x-small outline-none",
6329
- "transition-colors duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
6375
+ "transition-colors duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)] active:transform-none"
6330
6376
  ),
6331
6377
  triggerDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
6332
- triggerEnabled: "cursor-pointer",
6333
- triggerSelectedEnabled: "text-refineui-alias-foreground-primary",
6378
+ triggerEnabled: "cursor-pointer hover:text-refineui-alias-foreground-primary-hover",
6379
+ triggerSelectedEnabled: "text-refineui-alias-foreground-primary hover:text-refineui-alias-foreground-primary",
6334
6380
  triggerSelectedDisabled: "text-refineui-alias-foreground-disabled",
6335
6381
  triggerUnselected: "text-refineui-alias-foreground-tertiary"
6336
6382
  };
@@ -6444,6 +6490,7 @@ function TabsList({ className, children, ...props }) {
6444
6490
  {
6445
6491
  ref: tabListRef,
6446
6492
  "data-refineui": "tabs-list",
6493
+ "data-ready": indicator.ready ? "true" : "false",
6447
6494
  role: "tablist",
6448
6495
  "aria-orientation": "horizontal",
6449
6496
  className: clsx46(tabsStyles.list, className),
@@ -6603,19 +6650,19 @@ var segmentedControlRecipe = defineSlotRecipe({
6603
6650
  * so at narrow widths `overflow-hidden` would make trailing options
6604
6651
  * unreachable. Scrollbar chrome is suppressed in `refineui.css`.
6605
6652
  */
6606
- "overflow-x-auto overflow-y-hidden rounded-refineui-circle border-refineui-thin border-refineui-alias-border-default",
6607
- "bg-refineui-alias-background-brand-subtle"
6653
+ "overflow-x-auto overflow-y-hidden rounded-refineui-circle border-refineui-thin border-refineui-alias-border-default [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
6654
+ "bg-refineui-alias-background-brand-subtle data-[ready=false]:[&_[data-refineui=segmented-control-item][data-selected=true]]:bg-refineui-alias-background-brand data-[ready=false]:[&_[data-refineui=segmented-control-item][data-selected=true]]:shadow-refineui-2"
6608
6655
  ),
6609
6656
  indicator: clsx47(
6610
- "pointer-events-none absolute inset-y-0 start-0 z-0 block h-full",
6657
+ "pointer-events-none absolute inset-y-0 start-0 z-0 block h-full opacity-0 data-[ready=true]:opacity-100",
6611
6658
  "rounded-refineui-circle bg-refineui-alias-background-brand shadow-refineui-2",
6612
- "will-change-[transform,width]"
6659
+ "will-change-[transform,width] transition-none data-[animate=true]:transition-[transform,width] data-[animate=true]:duration-[var(--refineui-motion-duration-medium)] data-[animate=true]:ease-[var(--refineui-motion-easing-emphasized)] motion-reduce:transition-none"
6613
6660
  ),
6614
6661
  item: clsx47(
6615
6662
  componentTextClass(componentTypographyTokens.segmentedControl),
6616
6663
  "relative z-[1] box-border inline-flex min-h-0 min-w-0 shrink-0 items-center justify-center gap-refineui-size-xx-small",
6617
6664
  "rounded-refineui-circle border-none bg-transparent px-refineui-size-medium py-refineui-size-x-small outline-none",
6618
- "transition-colors duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
6665
+ "transition-colors duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)] active:transform-none"
6619
6666
  )
6620
6667
  }
6621
6668
  });
@@ -6624,7 +6671,7 @@ var segmentedControlStyles = {
6624
6671
  indicator: segmentedControlRecipe.base.indicator,
6625
6672
  item: segmentedControlRecipe.base.item,
6626
6673
  itemDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
6627
- itemEnabled: "cursor-pointer",
6674
+ itemEnabled: "cursor-pointer hover:text-refineui-alias-foreground-primary",
6628
6675
  itemSelectedEnabled: "text-refineui-alias-foreground-on-brand",
6629
6676
  itemSelectedDisabled: "text-refineui-alias-foreground-disabled",
6630
6677
  itemUnselected: "text-refineui-alias-foreground-secondary"
@@ -6732,6 +6779,7 @@ function SegmentedControl({
6732
6779
  {
6733
6780
  ref: groupRef,
6734
6781
  "data-refineui": "segmented-control",
6782
+ "data-ready": indicator.ready ? "true" : "false",
6735
6783
  role: "radiogroup",
6736
6784
  "aria-orientation": "horizontal",
6737
6785
  className: clsx48(segmentedControlStyles.root, className),
@@ -6854,14 +6902,14 @@ var tableStyles = {
6854
6902
  "relative box-border w-full min-w-0",
6855
6903
  "px-refineui-size-small pb-refineui-size-small"
6856
6904
  ),
6857
- table: "w-full caption-bottom border-separate text-start",
6858
- header: "",
6905
+ table: "w-full border-separate border-spacing-y-refineui-size-xx-small caption-bottom text-start",
6906
+ header: "[&_th]:bg-refineui-alias-background-surface-active [&_th]:shadow-[inset_0_calc(-1*var(--refineui-stroke-width-thin))_0_0_var(--refineui-color-alias-border-subtle)] [&_th:first-child]:rounded-s-refineui-large [&_th:last-child]:rounded-e-refineui-large",
6859
6907
  body: "",
6860
- footer: "",
6908
+ footer: "[&_td]:bg-refineui-alias-background-surface-active [&_td]:font-medium [&_td]:text-refineui-alias-foreground-secondary [&_td:first-child]:rounded-s-refineui-large [&_td:last-child]:rounded-e-refineui-large",
6861
6909
  row: clsx49(
6862
6910
  "transition-[background-color,box-shadow,border-radius]",
6863
6911
  "duration-[var(--refineui-motion-duration-fast)]",
6864
- "ease-[var(--refineui-motion-easing-ease-out)]"
6912
+ "ease-[var(--refineui-motion-easing-ease-out)] hover:[&>td]:bg-refineui-alias-background-surface-hover hover:[&>td:first-child]:rounded-s-refineui-large hover:[&>td:last-child]:rounded-e-refineui-large data-[state=selected]:[&>td]:bg-refineui-alias-background-surface-selected data-[state=selected]:[&>td:first-child]:rounded-s-refineui-large data-[state=selected]:[&>td:last-child]:rounded-e-refineui-large"
6865
6913
  ),
6866
6914
  head: clsx49(
6867
6915
  componentTextClass(componentTypographyTokens.table.head),
@@ -6947,7 +6995,7 @@ var accordionRecipe = defineSlotRecipe({
6947
6995
  base: {
6948
6996
  root: "flex flex-col gap-refineui-size-x-small",
6949
6997
  item: "overflow-hidden rounded-refineui-x-large transition-[background-color] duration-[var(--refineui-motion-duration-fast)]",
6950
- trigger: "flex min-h-refineui-control-touch-min w-full cursor-pointer items-center justify-between gap-refineui-size-medium rounded-refineui-x-large border-none bg-transparent px-refineui-size-medium py-refineui-size-x-small text-start text-refineui-alias-foreground-primary outline-none transition-[background-color,transform] duration-[var(--refineui-motion-duration-fast)]",
6998
+ trigger: "flex min-h-refineui-control-touch-min w-full cursor-pointer items-center justify-between gap-refineui-size-medium rounded-refineui-x-large border-none bg-transparent px-refineui-size-medium py-refineui-size-x-small text-start text-refineui-alias-foreground-primary outline-none transition-[background-color,transform] duration-[var(--refineui-motion-duration-fast)] active:bg-refineui-alias-background-primary-active active:scale-[var(--refineui-motion-scale-press)]",
6951
6999
  triggerRow: "flex min-w-0 flex-1 items-center gap-refineui-size-medium",
6952
7000
  chevron: "shrink-0 transition-transform duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]",
6953
7001
  panel: "min-h-0 overflow-hidden",
@@ -7224,13 +7272,13 @@ var breadcrumbStyles = {
7224
7272
  root: "py-refineui-size-x-small",
7225
7273
  list: "m-0 flex flex-wrap list-none items-center gap-refineui-size-medium p-0",
7226
7274
  item: "inline-flex items-center",
7227
- link: "box-border inline-flex min-h-refineui-button-min-height-sm items-center justify-center rounded-refineui-large px-refineui-size-medium py-refineui-size-x-small text-refineui-alias-foreground-tertiary no-underline outline-none transition-[color,background-color] duration-[var(--refineui-motion-duration-fast)]",
7275
+ link: "box-border inline-flex min-h-refineui-button-min-height-sm items-center justify-center rounded-refineui-large px-refineui-size-medium py-refineui-size-x-small text-refineui-alias-foreground-tertiary no-underline outline-none transition-[color,background-color] duration-[var(--refineui-motion-duration-fast)] hover:bg-refineui-alias-background-primary-hover hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-primary-active focus-visible:outline-[length:var(--refineui-stroke-width-thick)] focus-visible:[outline-color:var(--refineui-focus-color)] focus-visible:[outline-offset:var(--refineui-focus-offset)]",
7228
7276
  page: "inline-flex items-center px-refineui-size-medium py-refineui-size-x-small font-medium text-refineui-alias-foreground-primary",
7229
7277
  separator: "inline-flex shrink-0 items-center",
7230
7278
  separatorText: "inline-flex items-center text-refineui-alias-foreground-tertiary select-none",
7231
7279
  ellipsis: `${ellipsisChip} text-refineui-alias-foreground-tertiary`,
7232
7280
  /** Color only — size/layout come from Button `layout="icon" size="sm"`. */
7233
- ellipsisTrigger: "text-refineui-alias-foreground-tertiary"
7281
+ ellipsisTrigger: "text-refineui-alias-foreground-tertiary hover:bg-refineui-alias-background-primary-hover hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-primary-active focus-visible:outline-[length:var(--refineui-stroke-width-thick)] focus-visible:[outline-color:var(--refineui-focus-color)] focus-visible:[outline-offset:var(--refineui-focus-offset)]"
7234
7282
  };
7235
7283
 
7236
7284
  // src/components/Breadcrumb/Breadcrumb.tsx
@@ -7374,7 +7422,7 @@ var footerStyles = {
7374
7422
  "m-0 text-refineui-alias-foreground-tertiary"
7375
7423
  ),
7376
7424
  nav: clsx56(
7377
- "grid w-full items-start",
7425
+ "grid w-full grid-cols-[repeat(auto-fit,minmax(var(--refineui-size-foundation-size-2000),1fr))] items-start",
7378
7426
  "gap-x-refineui-size-xxx-large gap-y-refineui-size-xx-large"
7379
7427
  ),
7380
7428
  group: "flex min-w-0 flex-col gap-refineui-size-large",
@@ -7386,7 +7434,7 @@ var footerStyles = {
7386
7434
  componentTextClass(componentTypographyTokens.footer.link),
7387
7435
  /** `min-h` carries the WCAG 2.2 Target Size (Minimum) 24px floor — the 20px line box alone is under it. */
7388
7436
  "box-border inline-flex w-fit min-h-refineui-foundation-size-240 cursor-pointer items-center",
7389
- "text-refineui-alias-foreground-tertiary no-underline outline-none",
7437
+ "text-refineui-alias-foreground-tertiary no-underline outline-none hover:text-refineui-alias-foreground-primary focus-visible:outline-[length:var(--refineui-stroke-width-thick)] focus-visible:[outline-color:var(--refineui-focus-color)] focus-visible:[outline-offset:var(--refineui-focus-offset)] aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:!text-refineui-alias-foreground-disabled",
7390
7438
  "transition-[color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
7391
7439
  ),
7392
7440
  meta: clsx56(
@@ -7395,11 +7443,15 @@ var footerStyles = {
7395
7443
  "md:grid-cols-[1fr_auto_1fr] md:justify-items-stretch md:gap-refineui-size-x-large"
7396
7444
  ),
7397
7445
  metaEnd: "flex shrink-0 items-center md:col-start-3 md:justify-self-end",
7398
- locale: "flex shrink-0 items-center",
7446
+ locale: clsx56(
7447
+ "flex shrink-0 items-center",
7448
+ "[&_[data-refineui-select-trigger-value]]:inline-flex [&_[data-refineui-select-trigger-value]]:flex-none [&_[data-refineui-select-trigger-value]]:items-center [&_[data-refineui-select-trigger-value]]:gap-refineui-size-xx-small",
7449
+ "[&_[data-refineui=select-trigger]]:hover:border-refineui-alias-border-strong [&_[data-refineui=select-trigger]]:active:border-refineui-alias-border-strong [&_[data-refineui=select-trigger][data-state=open]]:border-refineui-alias-border-strong"
7450
+ ),
7399
7451
  localeLink: clsx56(
7400
7452
  componentTextClass(componentTypographyTokens.footer.copyright),
7401
7453
  "box-border inline-flex w-fit cursor-pointer items-center",
7402
- "text-refineui-alias-foreground-tertiary no-underline outline-none",
7454
+ "text-refineui-alias-foreground-tertiary no-underline outline-none hover:text-refineui-alias-foreground-primary aria-[current]:text-refineui-alias-foreground-primary focus-visible:outline-[length:var(--refineui-stroke-width-thick)] focus-visible:[outline-color:var(--refineui-focus-color)] focus-visible:[outline-offset:var(--refineui-focus-offset)] aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:!text-refineui-alias-foreground-disabled",
7403
7455
  "transition-[color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
7404
7456
  ),
7405
7457
  /** Select trigger chrome — Button `outline` / `sm` recipe (plain Select). */
@@ -7420,7 +7472,7 @@ var footerStyles = {
7420
7472
  /** Box is the 24px tap target; the glyph inside stays 16px (see `refineui.css`). */
7421
7473
  socialLink: clsx56(
7422
7474
  "box-border inline-flex size-refineui-foundation-size-240 shrink-0 cursor-pointer items-center justify-center",
7423
- "text-refineui-alias-foreground-tertiary no-underline outline-none",
7475
+ "text-refineui-alias-foreground-tertiary no-underline outline-none hover:text-refineui-alias-foreground-primary focus-visible:outline-[length:var(--refineui-stroke-width-thick)] focus-visible:[outline-color:var(--refineui-focus-color)] focus-visible:[outline-offset:var(--refineui-focus-offset)] aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:!text-refineui-alias-foreground-disabled [&_svg]:block [&_svg]:size-refineui-foundation-size-160",
7424
7476
  "transition-[color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
7425
7477
  )
7426
7478
  };
@@ -7602,7 +7654,7 @@ var calendarStyles = {
7602
7654
  grid7: "[grid-template-columns:repeat(7,var(--refineui-size-calendar-day-size))]",
7603
7655
  dayBase: clsx58(
7604
7656
  componentTextClass(componentTypographyTokens.calendar.day),
7605
- "box-border inline-flex size-refineui-calendar-day-size min-h-refineui-calendar-day-size min-w-refineui-calendar-day-size cursor-pointer items-center justify-center border-none p-0"
7657
+ "box-border inline-flex size-refineui-calendar-day-size min-h-refineui-calendar-day-size min-w-refineui-calendar-day-size cursor-pointer items-center justify-center border-none p-0 hover:bg-refineui-alias-background-primary-hover hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-primary-active active:text-refineui-alias-foreground-primary active:scale-[var(--refineui-motion-scale-press)] disabled:cursor-not-allowed disabled:hover:bg-transparent disabled:hover:text-refineui-alias-foreground-disabled data-[inactive=true]:cursor-default data-[inactive=true]:hover:bg-transparent data-[inactive=true]:hover:text-refineui-alias-foreground-disabled"
7606
7658
  ),
7607
7659
  daySelected: "rounded-refineui-large bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed",
7608
7660
  dayRangeMiddle: "rounded-refineui-none bg-refineui-alias-background-primary-hover text-refineui-alias-foreground-primary",
@@ -8411,7 +8463,7 @@ import { createPortal as createPortal3 } from "react-dom";
8411
8463
  import { semanticInteraction as semanticInteraction4 } from "@refineui/tokens";
8412
8464
  import { motionMsToNumber as motionMsToNumber2 } from "@refineui/utilities/animation";
8413
8465
  import { resolveColorTokenValue as resolveColorTokenValue6 } from "@refineui/utilities/color";
8414
- import { acquireBodyScrollLock as acquireBodyScrollLock2 } from "@refineui/utilities/react";
8466
+ import { acquireBodyScrollLock } from "@refineui/utilities/react";
8415
8467
 
8416
8468
  // src/components/Drawer/style.ts
8417
8469
  import { clsx as clsx67 } from "clsx";
@@ -8420,7 +8472,7 @@ var drawerStyles = {
8420
8472
  inlineRoot: "relative z-auto flex",
8421
8473
  rootLeft: "justify-start",
8422
8474
  rootRight: "justify-end",
8423
- scrim: "absolute inset-0 cursor-pointer transition-opacity",
8475
+ scrim: "absolute inset-0 cursor-pointer transition-opacity backdrop-blur-[var(--refineui-blur-overlay-scrim)]",
8424
8476
  panel: "relative box-border flex h-full flex-col overflow-hidden bg-refineui-alias-background-primary outline-none",
8425
8477
  panelOverlay: "shadow-refineui-16",
8426
8478
  panelInline: "shadow-none",
@@ -8585,7 +8637,7 @@ function DrawerContent({
8585
8637
  }, [open]);
8586
8638
  useEffect9(() => {
8587
8639
  if (!isOverlay || !rendering) return;
8588
- return acquireBodyScrollLock2();
8640
+ return acquireBodyScrollLock();
8589
8641
  }, [isOverlay, rendering]);
8590
8642
  useEffect9(() => {
8591
8643
  if (!isOverlay || !rendering || !entered) return;
@@ -8775,13 +8827,16 @@ import { resolveColorTokenValue as resolveColorTokenValue7 } from "@refineui/uti
8775
8827
 
8776
8828
  // src/components/Dropdown/style.ts
8777
8829
  import { clsx as clsx69 } from "clsx";
8778
- var dropdownPanelChrome = "box-border flex w-refineui-dropdown-menu-width min-w-refineui-dropdown-menu-width flex-col overflow-hidden rounded-refineui-xx-large border-refineui-hairline border-refineui-alias-border-default shadow-refineui-2 outline-none";
8830
+ var dropdownPanelChrome = "box-border flex w-refineui-dropdown-menu-width min-w-refineui-dropdown-menu-width flex-col overflow-hidden rounded-refineui-xx-large border-refineui-hairline border-refineui-alias-border-default bg-refineui-alias-surface-frosted shadow-refineui-2 outline-none backdrop-blur-refineui-surface-frost";
8779
8831
  var dropdownStyles = {
8780
8832
  menuShell: clsx69(
8781
8833
  dropdownPanelChrome,
8782
8834
  "max-w-[min(100vw-16px,calc(100vw-2rem))]"
8783
8835
  ),
8784
- submenuShell: dropdownPanelChrome,
8836
+ submenuShell: clsx69(
8837
+ dropdownPanelChrome,
8838
+ "data-[state=open]:[animation:refineui-fade-enter_var(--refineui-motion-duration-fast)_var(--refineui-motion-easing-standard)] motion-reduce:animation-none"
8839
+ ),
8785
8840
  menuViewport: "box-border flex flex-col gap-px p-refineui-size-xx-small",
8786
8841
  label: clsx69(
8787
8842
  componentTextClass(componentTypographyTokens.dropdown.label),
@@ -8789,7 +8844,7 @@ var dropdownStyles = {
8789
8844
  ),
8790
8845
  item: clsx69(
8791
8846
  componentTextClass(componentTypographyTokens.dropdown.item),
8792
- "flex w-full cursor-pointer items-center justify-between gap-refineui-size-x-small rounded-refineui-large border-none bg-transparent p-refineui-size-x-small text-start text-refineui-alias-foreground-primary outline-none disabled:cursor-not-allowed disabled:text-refineui-alias-foreground-disabled"
8847
+ "flex w-full cursor-pointer items-center justify-between gap-refineui-size-x-small rounded-refineui-large border-none bg-transparent p-refineui-size-x-small text-start text-refineui-alias-foreground-primary outline-none transition-[background-color,transform] duration-[var(--refineui-motion-duration-fast)] hover:bg-refineui-alias-background-primary-hover hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-primary-active active:text-refineui-alias-foreground-primary data-[selected=true]:bg-refineui-alias-background-primary-hover data-[selected=true]:text-refineui-alias-foreground-primary data-[state=selected]:bg-refineui-alias-background-primary-hover data-[state=selected]:text-refineui-alias-foreground-primary data-[state=pressed]:bg-refineui-alias-background-primary-active data-[state=pressed]:text-refineui-alias-foreground-primary disabled:cursor-not-allowed disabled:text-refineui-alias-foreground-disabled"
8793
8848
  ),
8794
8849
  shortcut: clsx69(
8795
8850
  componentTextClass(componentTypographyTokens.dropdown.shortcut),
@@ -8798,7 +8853,7 @@ var dropdownStyles = {
8798
8853
  };
8799
8854
 
8800
8855
  // src/components/Dropdown/Dropdown.tsx
8801
- import { Slot, acquireBodyScrollLock as acquireBodyScrollLock3, getMergeableTriggerChild } from "@refineui/utilities/react";
8856
+ import { Slot, acquireBodyScrollLock as acquireBodyScrollLock2, getMergeableTriggerChild } from "@refineui/utilities/react";
8802
8857
 
8803
8858
  // src/components/Dropdown/positioning.ts
8804
8859
  import { useEffect as useEffect10, useLayoutEffect as useLayoutEffect6 } from "react";
@@ -8954,7 +9009,7 @@ function Dropdown({
8954
9009
  }, [open]);
8955
9010
  useEffect11(() => {
8956
9011
  if (!open) return;
8957
- return acquireBodyScrollLock3();
9012
+ return acquireBodyScrollLock2();
8958
9013
  }, [open]);
8959
9014
  return /* @__PURE__ */ jsx53(DropdownCtx.Provider, { value: ctx, children: /* @__PURE__ */ jsx53(
8960
9015
  "div",
@@ -9608,10 +9663,10 @@ import { iconSizes as iconSizes14 } from "@refineui/tokens";
9608
9663
 
9609
9664
  // src/components/Link/style.ts
9610
9665
  var linkStyles = {
9611
- base: componentTextClass(componentTypographyTokens.link),
9666
+ base: `${componentTextClass(componentTypographyTokens.link)} text-refineui-alias-foreground-link no-underline transition-[color,text-decoration-color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)] visited:text-refineui-alias-foreground-link-visited hover:text-refineui-alias-foreground-link-hover hover:underline hover:decoration-current hover:underline-offset-refineui-size-xx-small focus-visible:text-refineui-alias-foreground-link-active focus-visible:underline focus-visible:decoration-current focus-visible:underline-offset-refineui-size-xx-small active:text-refineui-alias-foreground-link-visited active:underline active:decoration-current active:underline-offset-refineui-size-xx-small focus-visible:outline-[length:var(--refineui-stroke-width-thick)] focus-visible:[outline-color:var(--refineui-focus-color)] focus-visible:[outline-offset:var(--refineui-focus-offset)]`,
9612
9667
  withIcon: "inline-flex items-center gap-refineui-size-xx-small",
9613
9668
  inline: "inline",
9614
- disabled: "cursor-not-allowed"
9669
+ disabled: "pointer-events-none cursor-not-allowed !text-refineui-alias-foreground-disabled !no-underline"
9615
9670
  };
9616
9671
 
9617
9672
  // src/components/Link/Link.tsx
@@ -9667,18 +9722,18 @@ import { Slot as Slot2, getMergeableTriggerChild as getMergeableTriggerChild2 }
9667
9722
 
9668
9723
  // src/components/Menu/style.ts
9669
9724
  import { clsx as clsx75 } from "clsx";
9670
- var menuPanelChrome = "box-border flex flex-col gap-px overflow-hidden rounded-refineui-xx-large border-refineui-hairline border-refineui-alias-border-default p-refineui-size-xx-small shadow-refineui-2";
9725
+ var menuPanelChrome = "box-border flex flex-col gap-px overflow-hidden rounded-refineui-xx-large border-refineui-hairline border-refineui-alias-border-default bg-refineui-alias-surface-frosted p-refineui-size-xx-small shadow-refineui-2 backdrop-blur-refineui-surface-frost";
9671
9726
  var menuStyles = {
9672
9727
  /** Panel chrome — Web Kit Menu `633:4268` (fill/blur: `surfaceFrosted` + `surfaceFrost`) */
9673
9728
  panel: clsx75(menuPanelChrome, "w-refineui-menu-panel-width"),
9674
9729
  root: "relative inline-flex items-center leading-none",
9675
9730
  triggerFallback: "cursor-pointer border-none bg-transparent p-0 font-inherit text-inherit",
9676
9731
  /** Portal shell — position/z-index from `MenuPopover` fixed style */
9677
- popover: "z-refineui-messages",
9732
+ popover: "z-refineui-messages data-[state=open]:[animation:refineui-fade-enter_var(--refineui-motion-duration-normal)_var(--refineui-motion-easing-standard)] data-[state=closed]:pointer-events-none data-[state=closed]:[animation:refineui-fade-exit_var(--refineui-motion-duration-normal)_var(--refineui-motion-easing-standard)] motion-reduce:animation-none",
9678
9733
  list: clsx75(menuPanelChrome, "w-full min-w-refineui-menu-panel-width outline-none"),
9679
9734
  subPanel: clsx75(
9680
9735
  menuPanelChrome,
9681
- "w-refineui-menu-panel-width min-w-refineui-menu-panel-width outline-none"
9736
+ "w-refineui-menu-panel-width min-w-refineui-menu-panel-width outline-none data-[state=open]:[animation:refineui-fade-enter_var(--refineui-motion-duration-fast)_var(--refineui-motion-easing-standard)] motion-reduce:animation-none"
9682
9737
  ),
9683
9738
  /** Vertical density matches Sidebar `groupLabel` (`py-xxx-small`). */
9684
9739
  section: "flex w-full items-center overflow-hidden px-refineui-size-x-small py-refineui-size-xxx-small",
@@ -9688,7 +9743,7 @@ var menuStyles = {
9688
9743
  ),
9689
9744
  dividerWrap: "flex w-full items-center px-refineui-size-x-small py-refineui-size-xxx-small",
9690
9745
  dividerLine: "h-px w-full shrink-0 bg-refineui-alias-border-default",
9691
- itemBase: "block w-full rounded-refineui-large border-none bg-transparent p-refineui-size-x-small text-start outline-none",
9746
+ itemBase: "block w-full rounded-refineui-large border-none bg-transparent p-refineui-size-x-small text-start outline-none transition-[background-color,transform] duration-[var(--refineui-motion-duration-fast)] hover:bg-refineui-alias-background-primary-hover hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-primary-active active:text-refineui-alias-foreground-primary active:scale-[var(--refineui-motion-scale-press)] data-[state=hover]:bg-refineui-alias-background-primary-hover data-[state=hover]:text-refineui-alias-foreground-primary-hover data-[state=pressed]:bg-refineui-alias-background-primary-active data-[state=pressed]:text-refineui-alias-foreground-primary data-[state=active]:bg-refineui-alias-background-primary-hover data-[state=active]:text-refineui-alias-foreground-primary data-[state=disabled]:bg-transparent data-[state=disabled]:text-refineui-alias-foreground-disabled",
9692
9747
  itemDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
9693
9748
  itemEnabled: "cursor-pointer text-refineui-alias-foreground-primary",
9694
9749
  row: "flex items-center gap-refineui-size-x-small",
@@ -10290,7 +10345,7 @@ var topLevelItem = clsx77(
10290
10345
  componentTextClass(componentTypographyTokens.navigationMenu.trigger),
10291
10346
  "box-border inline-flex h-refineui-button-min-height-md min-w-refineui-navigation-menu-item-min-width cursor-pointer items-center justify-center gap-refineui-size-x-small",
10292
10347
  "rounded-refineui-x-large border-none bg-transparent px-refineui-size-medium py-refineui-size-x-small",
10293
- "text-refineui-alias-foreground-tertiary outline-none leading-none",
10348
+ "text-refineui-alias-foreground-primary outline-none leading-none",
10294
10349
  "transition-[color,background-color,box-shadow] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
10295
10350
  );
10296
10351
  var chevron = clsx77(
@@ -10300,22 +10355,52 @@ var navigationMenuStyles = {
10300
10355
  root: "relative isolate z-refineui-messages flex w-full max-w-max items-center",
10301
10356
  list: "relative m-0 flex list-none flex-wrap items-center gap-refineui-size-xxx-small p-0",
10302
10357
  item: "relative inline-flex items-center",
10303
- trigger: clsx77(topLevelItem, "m-0 appearance-none font-inherit"),
10358
+ trigger: clsx77(topLevelItem, "m-0 appearance-none font-inherit hover:bg-refineui-alias-background-primary-hover hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-primary-active active:text-refineui-alias-foreground-primary focus-visible:outline-[length:var(--refineui-stroke-width-thick)] focus-visible:[outline-color:var(--refineui-focus-color)] focus-visible:[outline-offset:var(--refineui-focus-offset)]"),
10304
10359
  triggerOpen: "bg-refineui-alias-background-primary-hover text-refineui-alias-foreground-primary",
10305
10360
  triggerDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
10306
10361
  chevron,
10307
10362
  chevronOpen: "rotate-180",
10308
10363
  content: clsx77(
10309
- /** Flush under trigger so pointer does not leave the item while moving into the panel. */
10310
- "absolute start-0 top-full z-refineui-messages pt-refineui-size-xx-small",
10311
- "box-border min-w-refineui-navigation-menu-panel-width",
10312
- "outline-none"
10364
+ "box-border outline-none",
10365
+ "transition-opacity duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
10366
+ ),
10367
+ /** Default compact panel, anchored to the triggering navigation item. */
10368
+ contentDropdown: "min-w-refineui-dropdown-menu-width",
10369
+ /**
10370
+ * Wide, viewport-aware panel. Width and inner composition stay with the
10371
+ * consuming navigation so this remains a content-agnostic primitive.
10372
+ */
10373
+ contentFloating: clsx77(
10374
+ "max-w-full origin-top will-change-[opacity,translate]",
10375
+ "transition-[opacity,translate] duration-[var(--refineui-motion-duration-normal)] ease-[var(--refineui-motion-easing-emphasized)]"
10376
+ ),
10377
+ /** Header-connected, full-width product navigation surface. */
10378
+ contentOverlay: clsx77(
10379
+ "fixed inset-x-0 bottom-0 origin-top"
10313
10380
  ),
10314
- contentPanel: clsx77(
10315
- "box-border flex flex-col gap-px overflow-hidden rounded-refineui-xx-large border-refineui-hairline border-refineui-alias-border-default",
10316
- "p-refineui-size-xx-small shadow-refineui-2"
10381
+ /** Optional boundary for demos and embedded navigation experiences. */
10382
+ contentContained: "absolute",
10383
+ contentOverlayContained: "absolute inset-x-0 bottom-0",
10384
+ overlayBackdrop: clsx77(
10385
+ "absolute inset-0 bg-refineui-alias-surface-overlay",
10386
+ "transition-[opacity,backdrop-filter] duration-[var(--refineui-motion-duration-panel)] ease-[var(--refineui-motion-easing-panel)]"
10317
10387
  ),
10318
- link: clsx77(topLevelItem, "no-underline"),
10388
+ overlayBackdropEnter: "[animation:refineui-navigation-overlay-backdrop-enter_var(--refineui-motion-duration-panel)_var(--refineui-motion-easing-panel)_both] motion-reduce:animation-none",
10389
+ overlayBackdropExit: "[animation:refineui-navigation-overlay-backdrop-exit_var(--refineui-motion-duration-panel)_var(--refineui-motion-easing-panel)_both] motion-reduce:animation-none",
10390
+ contentPanel: "box-border flex flex-col gap-px overflow-hidden rounded-refineui-xx-large border-refineui-hairline border-refineui-alias-border-default p-refineui-size-xx-small shadow-refineui-2",
10391
+ /** Compact dropdowns retain the Menu's translucent frosted material. */
10392
+ contentPanelDropdown: "bg-refineui-alias-surface-frosted backdrop-blur-refineui-surface-frost",
10393
+ /** Wide panels prioritize readable product navigation over glass transparency. */
10394
+ contentPanelFloating: clsx77(
10395
+ "bg-refineui-alias-background-primary backdrop-blur-refineui-surface-frost"
10396
+ ),
10397
+ contentPanelOverlay: clsx77(
10398
+ "relative flex w-full justify-center overflow-hidden rounded-none border-x-0 border-b-refineui-hairline border-t-0 p-0 border-refineui-alias-border-default bg-refineui-alias-background-primary shadow-refineui-2",
10399
+ "transition-[height,opacity] duration-[var(--refineui-motion-duration-panel)] ease-[var(--refineui-motion-easing-panel)]",
10400
+ "data-[state=open]:[animation:refineui-navigation-overlay-enter_var(--refineui-motion-duration-panel)_var(--refineui-motion-easing-panel)_both] motion-reduce:animation-none"
10401
+ ),
10402
+ contentPanelOverlayExit: "[animation:refineui-navigation-overlay-exit_var(--refineui-motion-duration-panel)_var(--refineui-motion-easing-panel)_both] motion-reduce:animation-none",
10403
+ link: clsx77(topLevelItem, "no-underline hover:bg-refineui-alias-background-primary-hover hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-primary-active active:text-refineui-alias-foreground-primary focus-visible:outline-[length:var(--refineui-stroke-width-thick)] focus-visible:[outline-color:var(--refineui-focus-color)] focus-visible:[outline-offset:var(--refineui-focus-offset)] aria-disabled:pointer-events-none"),
10319
10404
  linkActive: "bg-refineui-alias-background-primary-hover text-refineui-alias-foreground-primary",
10320
10405
  linkDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
10321
10406
  /** Dense row inside a content panel — same density as Menu item. */
@@ -10324,7 +10409,7 @@ var navigationMenuStyles = {
10324
10409
  "box-border flex w-full cursor-pointer items-center gap-refineui-size-x-small",
10325
10410
  "rounded-refineui-large border-none bg-transparent p-refineui-size-x-small text-start no-underline outline-none",
10326
10411
  "text-refineui-alias-foreground-primary",
10327
- "transition-[background-color,color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
10412
+ "transition-[background-color,color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)] hover:bg-refineui-alias-background-primary-hover hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-primary-active active:text-refineui-alias-foreground-primary aria-disabled:pointer-events-none"
10328
10413
  ),
10329
10414
  /** Optional — prefer omitting; kept for API compatibility. */
10330
10415
  indicator: "hidden"
@@ -10374,12 +10459,17 @@ function NavigationMenu({
10374
10459
  ...props
10375
10460
  }) {
10376
10461
  const [value, setValue] = useControllableOpen(valueControlled, defaultValue, onValueChange);
10462
+ const idPrefix = `refineui-nav-menu-${useId12().replaceAll(":", "")}`;
10377
10463
  const listRef = useRef15(null);
10378
10464
  const triggerMapRef = useRef15(/* @__PURE__ */ new Map());
10379
10465
  const contentMapRef = useRef15(/* @__PURE__ */ new Map());
10380
10466
  const openTimerRef = useRef15(null);
10381
10467
  const closeTimerRef = useRef15(null);
10468
+ const switchTimerRef = useRef15(null);
10382
10469
  const rootRef = useRef15(null);
10470
+ const [isSwitching, setIsSwitching] = useState18(false);
10471
+ const overlayContentRef = useRef15(/* @__PURE__ */ new Map());
10472
+ const [overlayVersion, setOverlayVersion] = useState18(0);
10383
10473
  const delayDuration = delayDurationProp ?? motionMsToNumber4(semanticInteraction6.duration.normal);
10384
10474
  const skipDelayDuration = skipDelayDurationProp ?? motionMsToNumber4(semanticInteraction6.duration.fast);
10385
10475
  const clearTimers = useCallback14(() => {
@@ -10395,24 +10485,36 @@ function NavigationMenu({
10395
10485
  const setValueSafe = useCallback14(
10396
10486
  (next) => {
10397
10487
  clearTimers();
10488
+ if (switchTimerRef.current != null) {
10489
+ window.clearTimeout(switchTimerRef.current);
10490
+ switchTimerRef.current = null;
10491
+ }
10492
+ const switching = Boolean(value && next && value !== next);
10493
+ setIsSwitching(switching);
10494
+ if (switching) {
10495
+ switchTimerRef.current = window.setTimeout(() => {
10496
+ setIsSwitching(false);
10497
+ switchTimerRef.current = null;
10498
+ }, motionMsToNumber4(semanticInteraction6.duration.normal));
10499
+ }
10398
10500
  setValue(next);
10399
10501
  },
10400
- [clearTimers, setValue]
10502
+ [clearTimers, setValue, value]
10401
10503
  );
10402
10504
  const openItem = useCallback14(
10403
10505
  (itemValue, options) => {
10404
10506
  clearTimers();
10405
10507
  const delay = options?.immediate || value !== "" ? skipDelayDuration : delayDuration;
10406
10508
  if (delay <= 0 || options?.immediate) {
10407
- setValue(itemValue);
10509
+ setValueSafe(itemValue);
10408
10510
  return;
10409
10511
  }
10410
10512
  openTimerRef.current = window.setTimeout(() => {
10411
- setValue(itemValue);
10513
+ setValueSafe(itemValue);
10412
10514
  openTimerRef.current = null;
10413
10515
  }, delay);
10414
10516
  },
10415
- [clearTimers, delayDuration, setValue, skipDelayDuration, value]
10517
+ [clearTimers, delayDuration, setValueSafe, skipDelayDuration, value]
10416
10518
  );
10417
10519
  const close = useCallback14(
10418
10520
  (options) => {
@@ -10442,6 +10544,36 @@ function NavigationMenu({
10442
10544
  contentMapRef.current.delete(itemValue);
10443
10545
  }
10444
10546
  }, []);
10547
+ const registerOverlayContent = useCallback14((itemValue, content) => {
10548
+ overlayContentRef.current.set(itemValue, content);
10549
+ setOverlayVersion((version) => version + 1);
10550
+ }, []);
10551
+ const unregisterOverlayContent = useCallback14((itemValue) => {
10552
+ if (!overlayContentRef.current.delete(itemValue)) return;
10553
+ setOverlayVersion((version) => version + 1);
10554
+ }, []);
10555
+ const getOverlayContent = useCallback14(
10556
+ (itemValue) => overlayContentRef.current.get(itemValue),
10557
+ []
10558
+ );
10559
+ const focusFirstContent = useCallback14((itemValue) => {
10560
+ const focus = () => {
10561
+ const content = contentMapRef.current.get(itemValue);
10562
+ const firstFocusable = content?.querySelector(
10563
+ 'a[href]:not([aria-disabled="true"]), button:not(:disabled), [tabindex]:not([tabindex="-1"])'
10564
+ );
10565
+ if (firstFocusable) {
10566
+ firstFocusable.focus();
10567
+ return;
10568
+ }
10569
+ requestAnimationFrame(() => {
10570
+ contentMapRef.current.get(itemValue)?.querySelector(
10571
+ 'a[href]:not([aria-disabled="true"]), button:not(:disabled), [tabindex]:not([tabindex="-1"])'
10572
+ )?.focus();
10573
+ });
10574
+ };
10575
+ requestAnimationFrame(focus);
10576
+ }, []);
10445
10577
  const isContentTarget = useCallback14((itemValue, target) => {
10446
10578
  return target instanceof Node && contentMapRef.current.get(itemValue)?.contains(target) === true;
10447
10579
  }, []);
@@ -10449,7 +10581,10 @@ function NavigationMenu({
10449
10581
  if (!(target instanceof Node)) return false;
10450
10582
  return rootRef.current?.contains(target) === true || Array.from(contentMapRef.current.values()).some((content) => content.contains(target));
10451
10583
  }, []);
10452
- useEffect13(() => () => clearTimers(), [clearTimers]);
10584
+ useEffect13(() => () => {
10585
+ clearTimers();
10586
+ if (switchTimerRef.current != null) window.clearTimeout(switchTimerRef.current);
10587
+ }, [clearTimers]);
10453
10588
  useEffect13(() => {
10454
10589
  if (!value) return;
10455
10590
  const onPointerDown = (event) => {
@@ -10478,19 +10613,31 @@ function NavigationMenu({
10478
10613
  close,
10479
10614
  delayDuration,
10480
10615
  skipDelayDuration,
10616
+ idPrefix,
10481
10617
  listRef,
10482
10618
  registerTrigger,
10483
10619
  registerContent,
10620
+ focusFirstContent,
10484
10621
  isContentTarget,
10485
10622
  isMenuTarget,
10486
- isInsideContent: false
10623
+ isInsideContent: false,
10624
+ isSwitching,
10625
+ registerOverlayContent,
10626
+ unregisterOverlayContent,
10627
+ getOverlayContent
10487
10628
  }),
10488
10629
  [
10489
10630
  close,
10490
10631
  delayDuration,
10491
10632
  isContentTarget,
10492
10633
  isMenuTarget,
10634
+ isSwitching,
10635
+ registerOverlayContent,
10636
+ unregisterOverlayContent,
10637
+ getOverlayContent,
10638
+ idPrefix,
10493
10639
  openItem,
10640
+ focusFirstContent,
10494
10641
  registerContent,
10495
10642
  registerTrigger,
10496
10643
  setValueSafe,
@@ -10498,7 +10645,7 @@ function NavigationMenu({
10498
10645
  value
10499
10646
  ]
10500
10647
  );
10501
- return /* @__PURE__ */ jsx59(NavigationMenuContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx59(
10648
+ return /* @__PURE__ */ jsx59(NavigationMenuContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxs23(
10502
10649
  "nav",
10503
10650
  {
10504
10651
  ref: rootRef,
@@ -10506,7 +10653,10 @@ function NavigationMenu({
10506
10653
  "aria-label": ariaLabel,
10507
10654
  className: clsx78(navigationMenuStyles.root, className),
10508
10655
  ...props,
10509
- children
10656
+ children: [
10657
+ children,
10658
+ /* @__PURE__ */ jsx59(NavigationMenuOverlayViewport, { version: overlayVersion })
10659
+ ]
10510
10660
  }
10511
10661
  ) });
10512
10662
  }
@@ -10558,8 +10708,8 @@ function NavigationMenuItem({
10558
10708
  const reactId = useId12();
10559
10709
  const value = valueProp ?? reactId;
10560
10710
  const open = menu.value === value;
10561
- const triggerId = `refineui-nav-menu-trigger-${value}`;
10562
- const contentId = `refineui-nav-menu-content-${value}`;
10711
+ const triggerId = `${menu.idPrefix}-trigger-${value}`;
10712
+ const contentId = `${menu.idPrefix}-content-${value}`;
10563
10713
  const itemCtx = useMemo14(
10564
10714
  () => ({ value, open, triggerId, contentId }),
10565
10715
  [contentId, open, triggerId, value]
@@ -10646,9 +10796,10 @@ function NavigationMenuTrigger({
10646
10796
  } else {
10647
10797
  menu.openItem(item.value, { immediate: true });
10648
10798
  }
10649
- } else if (event.key === "ArrowDown" && !item.open) {
10799
+ } else if (event.key === "ArrowDown") {
10650
10800
  event.preventDefault();
10651
10801
  menu.openItem(item.value, { immediate: true });
10802
+ menu.focusFirstContent(item.value);
10652
10803
  }
10653
10804
  },
10654
10805
  ...props,
@@ -10670,9 +10821,44 @@ function NavigationMenuTrigger({
10670
10821
  }
10671
10822
  );
10672
10823
  }
10673
- function NavigationMenuContent({
10824
+ function NavigationMenuContent(props) {
10825
+ return props.layout === "overlay" ? /* @__PURE__ */ jsx59(NavigationMenuOverlayContent, { ...props }) : /* @__PURE__ */ jsx59(NavigationMenuContentPanel, { ...props });
10826
+ }
10827
+ function NavigationMenuOverlayContent({
10828
+ children,
10829
+ className,
10830
+ portalContainer,
10831
+ onKeyDown,
10832
+ style
10833
+ }) {
10834
+ const menu = useNavigationMenu("NavigationMenuContent");
10835
+ const item = useNavigationMenuItem("NavigationMenuContent");
10836
+ const { registerOverlayContent, unregisterOverlayContent } = menu;
10837
+ const registrationRef = useRef15({
10838
+ children,
10839
+ className,
10840
+ portalContainer,
10841
+ onKeyDown,
10842
+ style
10843
+ });
10844
+ registrationRef.current = {
10845
+ children,
10846
+ className,
10847
+ portalContainer,
10848
+ onKeyDown,
10849
+ style
10850
+ };
10851
+ useEffect13(() => {
10852
+ registerOverlayContent(item.value, registrationRef.current);
10853
+ return () => unregisterOverlayContent(item.value);
10854
+ }, [item.value, registerOverlayContent, unregisterOverlayContent]);
10855
+ return null;
10856
+ }
10857
+ function NavigationMenuContentPanel({
10674
10858
  children,
10675
10859
  className,
10860
+ layout = "dropdown",
10861
+ portalContainer,
10676
10862
  onKeyDown,
10677
10863
  style,
10678
10864
  ...props
@@ -10701,9 +10887,11 @@ function NavigationMenuContent({
10701
10887
  const timeout = window.setTimeout(() => {
10702
10888
  setShouldRender(false);
10703
10889
  setIsClosing(false);
10704
- }, motionMsToNumber4(semanticInteraction6.duration.fast));
10890
+ }, motionMsToNumber4(
10891
+ layout === "overlay" ? semanticInteraction6.duration.normal : semanticInteraction6.duration.fast
10892
+ ));
10705
10893
  return () => window.clearTimeout(timeout);
10706
- }, [item.open, shouldRender]);
10894
+ }, [item.open, layout, menu.isSwitching]);
10707
10895
  useIsomorphicLayoutEffect5(() => {
10708
10896
  if (!shouldRender || !item.open || typeof document === "undefined") return;
10709
10897
  const trigger = document.getElementById(item.triggerId);
@@ -10713,14 +10901,21 @@ function NavigationMenuContent({
10713
10901
  if (!content2) return;
10714
10902
  const triggerRect = trigger.getBoundingClientRect();
10715
10903
  const contentWidth = content2.offsetWidth;
10904
+ const portalRect = portalContainer?.getBoundingClientRect();
10905
+ const boundaryWidth = portalRect?.width ?? window.innerWidth;
10716
10906
  const edge = Number.parseFloat(spacings4.sizeMedium) || 8;
10717
- const left = Math.max(
10718
- edge,
10719
- Math.min(triggerRect.left, window.innerWidth - contentWidth - edge)
10720
- );
10907
+ const floatingOffset = Number.parseFloat(spacings4.sizeXXSmall) || 4;
10908
+ const left = layout === "floating" ? Math.max(edge, Math.min((boundaryWidth - contentWidth) / 2, boundaryWidth - contentWidth - edge)) : Math.max(edge, Math.min(triggerRect.left - (portalRect?.left ?? 0), boundaryWidth - contentWidth - edge));
10909
+ if (layout === "overlay") {
10910
+ setPositionStyle({
10911
+ top: portalRect ? triggerRect.bottom - portalRect.top : triggerRect.bottom,
10912
+ zIndex: Number.parseInt(String(zIndex3.zIndexMessages), 10) || 1e4
10913
+ });
10914
+ return;
10915
+ }
10721
10916
  setPositionStyle({
10722
- position: "fixed",
10723
- top: triggerRect.bottom,
10917
+ position: portalRect ? "absolute" : "fixed",
10918
+ top: triggerRect.bottom + (layout === "floating" ? floatingOffset : 0) - (portalRect?.top ?? 0),
10724
10919
  left,
10725
10920
  zIndex: Number.parseInt(String(zIndex3.zIndexMessages), 10) || 1e4
10726
10921
  });
@@ -10734,13 +10929,13 @@ function NavigationMenuContent({
10734
10929
  window.removeEventListener("resize", updatePosition);
10735
10930
  unsubscribe();
10736
10931
  };
10737
- }, [item.open, item.triggerId, shouldRender]);
10932
+ }, [item.open, item.triggerId, layout, portalContainer, shouldRender]);
10738
10933
  const contentCtx = useMemo14(
10739
10934
  () => ({ ...menu, isInsideContent: true }),
10740
10935
  [menu]
10741
10936
  );
10742
10937
  if (!shouldRender) return null;
10743
- const content = /* @__PURE__ */ jsx59(NavigationMenuContext.Provider, { value: contentCtx, children: /* @__PURE__ */ jsx59(
10938
+ const content = /* @__PURE__ */ jsx59(NavigationMenuContext.Provider, { value: contentCtx, children: /* @__PURE__ */ jsxs23(
10744
10939
  "div",
10745
10940
  {
10746
10941
  ref: setContentRef,
@@ -10748,8 +10943,15 @@ function NavigationMenuContent({
10748
10943
  role: "region",
10749
10944
  "aria-labelledby": item.triggerId,
10750
10945
  "data-refineui": "navigation-menu-content",
10946
+ "data-layout": layout,
10751
10947
  "data-state": isClosing || !item.open ? "closed" : "open",
10752
- className: clsx78(navigationMenuStyles.content, className),
10948
+ className: clsx78(
10949
+ navigationMenuStyles.content,
10950
+ layout === "overlay" ? portalContainer ? navigationMenuStyles.contentOverlayContained : navigationMenuStyles.contentOverlay : layout === "floating" ? navigationMenuStyles.contentFloating : navigationMenuStyles.contentDropdown,
10951
+ layout !== "overlay" && portalContainer && navigationMenuStyles.contentContained,
10952
+ isClosing || !item.open ? layout === "overlay" ? "pointer-events-none" : layout === "floating" ? "pointer-events-none translate-y-refineui-size-x-small opacity-0" : "pointer-events-none opacity-0" : layout === "floating" ? "translate-y-0 opacity-100" : "opacity-100",
10953
+ className
10954
+ ),
10753
10955
  style: { ...positionStyle, ...style },
10754
10956
  onPointerEnter: () => menu.openItem(item.value, { immediate: true }),
10755
10957
  onPointerLeave: (event) => {
@@ -10762,13 +10964,226 @@ function NavigationMenuContent({
10762
10964
  if (event.key === "Escape") {
10763
10965
  event.preventDefault();
10764
10966
  menu.setValue("");
10967
+ document.getElementById(item.triggerId)?.focus();
10765
10968
  }
10766
10969
  },
10767
10970
  ...props,
10768
- children: /* @__PURE__ */ jsx59("div", { "data-refineui": "navigation-menu-content-panel", className: navigationMenuStyles.contentPanel, children })
10971
+ children: [
10972
+ layout === "overlay" ? /* @__PURE__ */ jsx59(
10973
+ "div",
10974
+ {
10975
+ "aria-hidden": true,
10976
+ "data-state": isClosing || !item.open ? "closed" : "open",
10977
+ className: clsx78(
10978
+ navigationMenuStyles.overlayBackdrop,
10979
+ isClosing || !item.open ? "backdrop-blur-none opacity-0" : "backdrop-blur-[var(--refineui-blur-overlay-scrim)] opacity-100",
10980
+ !menu.isSwitching && item.open ? navigationMenuStyles.overlayBackdropEnter : void 0,
10981
+ isClosing && !menu.isSwitching ? navigationMenuStyles.overlayBackdropExit : void 0
10982
+ ),
10983
+ onPointerDown: (event) => {
10984
+ event.preventDefault();
10985
+ menu.setValue("");
10986
+ },
10987
+ onPointerEnter: () => menu.close()
10988
+ }
10989
+ ) : null,
10990
+ /* @__PURE__ */ jsx59(
10991
+ "div",
10992
+ {
10993
+ "data-refineui": "navigation-menu-content-panel",
10994
+ "data-layout": layout,
10995
+ "data-state": isClosing || !item.open ? "closed" : "open",
10996
+ className: clsx78(
10997
+ layout === "overlay" ? navigationMenuStyles.contentPanelOverlay : navigationMenuStyles.contentPanel,
10998
+ layout === "overlay" ? void 0 : layout === "floating" ? navigationMenuStyles.contentPanelFloating : navigationMenuStyles.contentPanelDropdown,
10999
+ layout === "overlay" && (isClosing || !item.open) ? "translate-y-refineui-size-xxx-small opacity-0" : void 0,
11000
+ layout === "overlay" && isClosing && !menu.isSwitching ? navigationMenuStyles.contentPanelOverlayExit : void 0
11001
+ ),
11002
+ children
11003
+ }
11004
+ )
11005
+ ]
11006
+ }
11007
+ ) });
11008
+ return typeof document === "undefined" ? content : createPortal6(content, portalContainer ?? document.body);
11009
+ }
11010
+ function NavigationMenuOverlayViewport({ version: _version }) {
11011
+ const menu = useNavigationMenu("NavigationMenuContent");
11012
+ const [presentValue, setPresentValue] = useState18(menu.value);
11013
+ const [isClosing, setIsClosing] = useState18(false);
11014
+ const [positionStyle, setPositionStyle] = useState18(null);
11015
+ const [panelHeight, setPanelHeight] = useState18(null);
11016
+ const rootRef = useRef15(null);
11017
+ const innerRef = useRef15(null);
11018
+ const heightRef = useRef15(null);
11019
+ const heightTimerRef = useRef15(null);
11020
+ const isClosingRef = useRef15(false);
11021
+ const registration = presentValue ? menu.getOverlayContent(presentValue) : void 0;
11022
+ useIsomorphicLayoutEffect5(() => {
11023
+ if (menu.value) {
11024
+ isClosingRef.current = false;
11025
+ setPresentValue(menu.value);
11026
+ setIsClosing(false);
11027
+ return;
11028
+ }
11029
+ if (!presentValue) return;
11030
+ isClosingRef.current = true;
11031
+ setIsClosing(true);
11032
+ if (heightTimerRef.current != null) {
11033
+ window.clearTimeout(heightTimerRef.current);
11034
+ heightTimerRef.current = null;
11035
+ }
11036
+ const currentHeight = innerRef.current?.scrollHeight ?? heightRef.current;
11037
+ let frame;
11038
+ let settleFrame;
11039
+ if (currentHeight != null) {
11040
+ setPanelHeight(currentHeight);
11041
+ frame = requestAnimationFrame(() => {
11042
+ settleFrame = requestAnimationFrame(() => setPanelHeight(0));
11043
+ });
11044
+ }
11045
+ const timeout = window.setTimeout(() => {
11046
+ setPresentValue("");
11047
+ setIsClosing(false);
11048
+ setPanelHeight(null);
11049
+ heightRef.current = null;
11050
+ isClosingRef.current = false;
11051
+ }, motionMsToNumber4(semanticInteraction6.duration.panel));
11052
+ return () => {
11053
+ if (frame != null) cancelAnimationFrame(frame);
11054
+ if (settleFrame != null) cancelAnimationFrame(settleFrame);
11055
+ window.clearTimeout(timeout);
11056
+ };
11057
+ }, [menu.value, presentValue]);
11058
+ useIsomorphicLayoutEffect5(() => {
11059
+ if (!presentValue || !registration || typeof document === "undefined") return;
11060
+ const trigger = document.getElementById(`${menu.idPrefix}-trigger-${CSS.escape(presentValue)}`);
11061
+ if (!trigger) return;
11062
+ const updatePosition = () => {
11063
+ const triggerRect = trigger.getBoundingClientRect();
11064
+ const portalRect = registration.portalContainer?.getBoundingClientRect();
11065
+ const headerBottom = trigger.closest("header")?.getBoundingClientRect().bottom;
11066
+ const overlayTop = headerBottom ?? triggerRect.bottom;
11067
+ setPositionStyle({
11068
+ top: portalRect ? overlayTop - portalRect.top : overlayTop,
11069
+ zIndex: Number.parseInt(String(zIndex3.zIndexMessages), 10) || 1e4
11070
+ });
11071
+ };
11072
+ updatePosition();
11073
+ window.addEventListener("resize", updatePosition);
11074
+ const unsubscribe = subscribeScrollAndScrollableAncestors2(trigger, updatePosition);
11075
+ return () => {
11076
+ window.removeEventListener("resize", updatePosition);
11077
+ unsubscribe();
11078
+ };
11079
+ }, [presentValue, registration]);
11080
+ useIsomorphicLayoutEffect5(() => {
11081
+ if (!presentValue || !innerRef.current) return;
11082
+ const nextHeight = innerRef.current.scrollHeight;
11083
+ const previousHeight = heightRef.current;
11084
+ heightRef.current = nextHeight;
11085
+ if (previousHeight === nextHeight) {
11086
+ setPanelHeight(null);
11087
+ return;
11088
+ }
11089
+ if (heightTimerRef.current != null) window.clearTimeout(heightTimerRef.current);
11090
+ setPanelHeight(previousHeight ?? 0);
11091
+ let settleFrame;
11092
+ const frame = requestAnimationFrame(() => {
11093
+ settleFrame = requestAnimationFrame(() => setPanelHeight(nextHeight));
11094
+ });
11095
+ heightTimerRef.current = window.setTimeout(
11096
+ () => {
11097
+ if (!isClosingRef.current) setPanelHeight(null);
11098
+ },
11099
+ motionMsToNumber4(semanticInteraction6.duration.panel)
11100
+ );
11101
+ return () => {
11102
+ cancelAnimationFrame(frame);
11103
+ if (settleFrame != null) cancelAnimationFrame(settleFrame);
11104
+ if (heightTimerRef.current != null) window.clearTimeout(heightTimerRef.current);
11105
+ };
11106
+ }, [presentValue, registration?.children]);
11107
+ useEffect13(() => {
11108
+ menu.registerContent(presentValue, rootRef.current);
11109
+ return () => menu.registerContent(presentValue, null);
11110
+ }, [menu, presentValue]);
11111
+ useEffect13(() => {
11112
+ if (!presentValue || typeof document === "undefined") return;
11113
+ const trigger = document.getElementById(`${menu.idPrefix}-trigger-${CSS.escape(presentValue)}`);
11114
+ const header = trigger?.closest("header");
11115
+ if (!header) return;
11116
+ header.setAttribute("data-refineui-navigation-menu-overlay-open", "");
11117
+ return () => header.removeAttribute("data-refineui-navigation-menu-overlay-open");
11118
+ }, [presentValue]);
11119
+ if (!presentValue || !registration) return null;
11120
+ const state = isClosing ? "closed" : "open";
11121
+ const contentCtx = { ...menu, isInsideContent: true };
11122
+ const root = /* @__PURE__ */ jsx59(NavigationMenuContext.Provider, { value: contentCtx, children: /* @__PURE__ */ jsxs23(
11123
+ "div",
11124
+ {
11125
+ ref: rootRef,
11126
+ id: `${menu.idPrefix}-content-${presentValue}`,
11127
+ role: "region",
11128
+ "aria-labelledby": `${menu.idPrefix}-trigger-${presentValue}`,
11129
+ "data-refineui": "navigation-menu-content",
11130
+ "data-layout": "overlay",
11131
+ "data-state": state,
11132
+ className: clsx78(
11133
+ registration.portalContainer ? navigationMenuStyles.contentOverlayContained : navigationMenuStyles.contentOverlay,
11134
+ isClosing && "pointer-events-none",
11135
+ registration.className
11136
+ ),
11137
+ style: { ...positionStyle, ...registration.style },
11138
+ onPointerEnter: () => menu.openItem(presentValue, { immediate: true }),
11139
+ onPointerLeave: (event) => {
11140
+ if (menu.isMenuTarget(event.relatedTarget)) return;
11141
+ menu.close();
11142
+ },
11143
+ onKeyDown: (event) => {
11144
+ registration.onKeyDown?.(event);
11145
+ if (event.defaultPrevented || event.key !== "Escape") return;
11146
+ event.preventDefault();
11147
+ menu.setValue("");
11148
+ document.getElementById(`${menu.idPrefix}-trigger-${presentValue}`)?.focus();
11149
+ },
11150
+ children: [
11151
+ /* @__PURE__ */ jsx59(
11152
+ "div",
11153
+ {
11154
+ "aria-hidden": true,
11155
+ "data-state": state,
11156
+ className: clsx78(
11157
+ navigationMenuStyles.overlayBackdrop,
11158
+ isClosing ? "backdrop-blur-none opacity-0" : "backdrop-blur-[var(--refineui-blur-overlay-scrim)] opacity-100",
11159
+ !isClosing && navigationMenuStyles.overlayBackdropEnter,
11160
+ isClosing && navigationMenuStyles.overlayBackdropExit
11161
+ ),
11162
+ onPointerDown: (event) => {
11163
+ event.preventDefault();
11164
+ menu.setValue("");
11165
+ },
11166
+ onPointerEnter: () => menu.close()
11167
+ }
11168
+ ),
11169
+ /* @__PURE__ */ jsx59(
11170
+ "div",
11171
+ {
11172
+ "data-refineui": "navigation-menu-content-panel",
11173
+ "data-layout": "overlay",
11174
+ "data-state": state,
11175
+ className: clsx78(
11176
+ navigationMenuStyles.contentPanelOverlay,
11177
+ isClosing && navigationMenuStyles.contentPanelOverlayExit
11178
+ ),
11179
+ style: panelHeight == null ? void 0 : { height: panelHeight },
11180
+ children: /* @__PURE__ */ jsx59("div", { ref: innerRef, className: "w-full", children: registration.children })
11181
+ }
11182
+ )
11183
+ ]
10769
11184
  }
10770
11185
  ) });
10771
- return typeof document === "undefined" ? content : createPortal6(content, document.body);
11186
+ return typeof document === "undefined" ? root : createPortal6(root, registration.portalContainer ?? document.body);
10772
11187
  }
10773
11188
  function NavigationMenuLink({
10774
11189
  children,
@@ -10817,7 +11232,7 @@ function NavigationMenuLink({
10817
11232
  );
10818
11233
  }
10819
11234
  function NavigationMenuIndicator({ className, style, ...props }) {
10820
- const { value, listRef } = useNavigationMenu("NavigationMenuIndicator");
11235
+ const { value, listRef, idPrefix } = useNavigationMenu("NavigationMenuIndicator");
10821
11236
  const [box, setBox] = useState18(null);
10822
11237
  const measure = useCallback14(() => {
10823
11238
  const list = listRef.current;
@@ -10826,7 +11241,7 @@ function NavigationMenuIndicator({ className, style, ...props }) {
10826
11241
  return;
10827
11242
  }
10828
11243
  const trigger = list.querySelector(
10829
- `[data-refineui="navigation-menu-trigger"][id="refineui-nav-menu-trigger-${CSS.escape(value)}"]`
11244
+ `[data-refineui="navigation-menu-trigger"][id="${CSS.escape(idPrefix)}-trigger-${CSS.escape(value)}"]`
10830
11245
  );
10831
11246
  if (!trigger) {
10832
11247
  setBox(null);
@@ -10897,9 +11312,9 @@ var sidebarStyles = {
10897
11312
  "box-border flex w-full min-w-0 cursor-pointer items-center gap-refineui-size-x-small",
10898
11313
  "rounded-refineui-large border-none bg-transparent px-refineui-size-medium py-refineui-size-x-small",
10899
11314
  "text-refineui-alias-foreground-tertiary no-underline outline-none",
10900
- "transition-[color,background-color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
11315
+ "transition-[color,background-color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)] hover:bg-refineui-alias-background-primary-hover hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-primary-active active:text-refineui-alias-foreground-primary focus-visible:outline-[length:var(--refineui-stroke-width-thick)] focus-visible:[outline-color:var(--refineui-focus-color)] focus-visible:[outline-offset:var(--refineui-focus-offset)] aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:!text-refineui-alias-foreground-disabled"
10901
11316
  ),
10902
- linkActive: "font-medium text-refineui-alias-foreground-primary",
11317
+ linkActive: "font-medium bg-refineui-alias-background-primary-hover text-refineui-alias-foreground-primary",
10903
11318
  linkDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
10904
11319
  footer: clsx79(
10905
11320
  "mt-auto flex shrink-0 flex-col",
@@ -11042,17 +11457,43 @@ import { clsx as clsx81 } from "clsx";
11042
11457
  var sidebarPeekStyles = {
11043
11458
  root: "relative h-full w-full min-h-0 min-w-0",
11044
11459
  edgeContained: clsx81(
11045
- "absolute inset-y-0 inset-inline-start-0 z-[calc(var(--refineui-z-floating)-1)]",
11460
+ "absolute inset-y-0 inset-inline-start-0 z-[calc(var(--refineui-z-floating)-1)] data-[sidebar-peek-edge-suspended]:pointer-events-none",
11046
11461
  "w-refineui-foundation-size-120"
11047
11462
  ),
11048
11463
  edgeViewport: clsx81(
11049
- "fixed inset-inline-start-0 inset-block-end-0 z-[calc(var(--refineui-z-floating)-1)]",
11464
+ "fixed inset-inline-start-0 inset-block-end-0 z-[calc(var(--refineui-z-floating)-1)] data-[sidebar-peek-edge-suspended]:pointer-events-none",
11050
11465
  "w-refineui-foundation-size-120",
11051
11466
  "top-[var(--refineui-sidebar-peek-viewport-offset,0px)]"
11052
11467
  ),
11053
- surfaceContained: clsx81("absolute z-refineui-floating flex min-h-0"),
11054
- surfaceViewport: clsx81("fixed z-refineui-floating flex min-h-0"),
11055
- panel: clsx81("box-border flex min-h-0 w-full flex-1 flex-col overflow-hidden"),
11468
+ surfaceContained: clsx81(
11469
+ "group/sidebar-peek-surface absolute z-refineui-floating flex min-h-0 box-border pointer-events-none invisible",
11470
+ "inset-y-[calc(var(--refineui-spacing-size-small)-var(--refineui-spacing-size-x-small))]",
11471
+ "start-[calc(var(--refineui-size-foundation-size-120)-var(--refineui-spacing-size-x-small))]",
11472
+ "w-[calc(var(--refineui-sidebar-peek-panel-width)+2*var(--refineui-spacing-size-x-small))]",
11473
+ "p-refineui-size-x-small",
11474
+ "translate-x-[calc(-100%-var(--refineui-size-foundation-size-120)+var(--refineui-spacing-size-x-small))]",
11475
+ "transition-[translate,visibility] duration-refineui-overlay ease-refineui-standard motion-reduce:transition-none",
11476
+ "data-[sidebar-peek-panel-open]:pointer-events-auto data-[sidebar-peek-panel-open]:visible data-[sidebar-peek-panel-open]:translate-x-0"
11477
+ ),
11478
+ surfaceViewport: clsx81(
11479
+ "group/sidebar-peek-surface fixed z-refineui-floating flex min-h-0 box-border pointer-events-none invisible",
11480
+ "bottom-[calc(var(--refineui-spacing-size-small)-var(--refineui-spacing-size-x-small))]",
11481
+ "start-[calc(var(--refineui-size-foundation-size-120)-var(--refineui-spacing-size-x-small))]",
11482
+ "top-[calc(var(--refineui-sidebar-peek-viewport-offset,0px)+var(--refineui-spacing-size-small)-var(--refineui-spacing-size-x-small))]",
11483
+ "w-[calc(var(--refineui-sidebar-peek-panel-width)+2*var(--refineui-spacing-size-x-small))]",
11484
+ "p-refineui-size-x-small",
11485
+ "translate-x-[calc(-100%-var(--refineui-size-foundation-size-120)+var(--refineui-spacing-size-x-small))]",
11486
+ "transition-[translate,visibility] duration-refineui-overlay ease-refineui-standard motion-reduce:transition-none",
11487
+ "data-[sidebar-peek-panel-open]:pointer-events-auto data-[sidebar-peek-panel-open]:visible data-[sidebar-peek-panel-open]:translate-x-0"
11488
+ ),
11489
+ panel: clsx81(
11490
+ "box-border flex h-full min-h-0 w-full flex-1 flex-col overflow-hidden pointer-events-auto",
11491
+ "rounded-refineui-xx-large border-refineui-hairline border-refineui-alias-border-default",
11492
+ "bg-refineui-alias-surface-frosted backdrop-blur-refineui-surface-frost",
11493
+ "shadow-refineui-16 transition-shadow duration-refineui-overlay ease-refineui-standard motion-reduce:transition-none",
11494
+ "group-data-[sidebar-peek-panel-open]/sidebar-peek-surface:shadow-refineui-24",
11495
+ "[&_[data-refineui=sidebar]]:h-full [&_[data-refineui=sidebar]]:border-e-0 [&_[data-refineui=sidebar]]:rounded-inherit [&_[data-refineui=sidebar]]:bg-transparent"
11496
+ ),
11056
11497
  toolbar: "flex shrink-0 justify-end px-refineui-size-x-small pt-refineui-size-x-small",
11057
11498
  panelBody: "flex min-h-0 w-full flex-1 flex-col",
11058
11499
  inset: "relative flex min-h-0 min-w-0 flex-1 flex-col"
@@ -11405,7 +11846,7 @@ import { clsx as clsx83 } from "clsx";
11405
11846
  var paginationStyles = {
11406
11847
  root: "flex flex-wrap items-center gap-refineui-size-medium",
11407
11848
  listWrap: "flex flex-wrap items-center gap-refineui-size-medium",
11408
- itemShell: "box-border inline-flex h-refineui-pagination-button-min-width min-h-refineui-pagination-button-min-width w-refineui-pagination-button-min-width min-w-refineui-pagination-button-min-width shrink-0 items-center justify-center rounded-refineui-x-large border-refineui-thin p-refineui-size-x-small outline-none transition-[background-color,border-color,box-shadow,transform,color] duration-[var(--refineui-motion-duration-fast)]",
11849
+ itemShell: "box-border inline-flex h-refineui-pagination-button-min-width min-h-refineui-pagination-button-min-width w-refineui-pagination-button-min-width min-w-refineui-pagination-button-min-width shrink-0 items-center justify-center rounded-refineui-x-large border-refineui-thin p-refineui-size-x-small outline-none transition-[background-color,border-color,box-shadow,transform,color] duration-[var(--refineui-motion-duration-fast)] hover:bg-refineui-alias-background-surface-hover hover:border-refineui-alias-border-hover active:scale-[var(--refineui-motion-scale-press)] [&[data-page=true][data-selected=true]]:border-2 [&[data-page=true][data-selected=true]]:border-refineui-alias-border-focus [&[data-page=true][data-selected=true]]:bg-refineui-alias-background-surface-selected [&[data-page=true][data-selected=true]]:font-semibold disabled:cursor-not-allowed disabled:border-refineui-alias-border-disabled disabled:bg-refineui-alias-background-surface-disabled disabled:text-refineui-alias-foreground-disabled disabled:opacity-100 disabled:transform-none",
11409
11850
  page: clsx83(
11410
11851
  componentTextClass(componentTypographyTokens.pagination),
11411
11852
  "border-refineui-alias-border-default bg-refineui-alias-background-primary font-medium text-refineui-alias-foreground-primary no-underline"
@@ -11709,8 +12150,8 @@ function FloatingSurface({
11709
12150
  };
11710
12151
  const clip = `path("${shape}")`;
11711
12152
  return /* @__PURE__ */ jsxs24("div", { "data-refineui": "floating-chrome", "aria-hidden": true, className: "pointer-events-none absolute -z-1", style: rootStyle, children: [
11712
- /* @__PURE__ */ jsx64("div", { className: "absolute", style: shadowStyle, children: /* @__PURE__ */ jsx64("div", { "data-refineui": "floating-shadow", className: "absolute", style: { inset: SHADOW_BLEED }, children: /* @__PURE__ */ jsx64("div", { className: "absolute inset-0", style: { clipPath: clip, backgroundColor: borderColor } }) }) }),
11713
- /* @__PURE__ */ jsx64("div", { "data-refineui": "floating-surface", className: "absolute inset-0", style: surfaceStyle }),
12153
+ /* @__PURE__ */ jsx64("div", { className: "absolute", style: shadowStyle, children: /* @__PURE__ */ jsx64("div", { "data-refineui": "floating-shadow", className: "absolute [filter:var(--refineui-elevation-floating-filter)]", style: { inset: SHADOW_BLEED }, children: /* @__PURE__ */ jsx64("div", { className: "absolute inset-0", style: { clipPath: clip, backgroundColor: borderColor } }) }) }),
12154
+ /* @__PURE__ */ jsx64("div", { "data-refineui": "floating-surface", className: "absolute inset-0 bg-refineui-alias-surface-frosted backdrop-blur-refineui-surface-frost", style: surfaceStyle }),
11714
12155
  /* @__PURE__ */ jsx64(
11715
12156
  "svg",
11716
12157
  {
@@ -11981,9 +12422,9 @@ import { clsx as clsx86 } from "clsx";
11981
12422
  // src/components/Skeleton/style.ts
11982
12423
  var skeletonStyles = {
11983
12424
  /** Line / block placeholder */
11984
- rectangle: "block rounded-refineui-large",
12425
+ rectangle: "block animate-pulse rounded-refineui-large bg-refineui-alias-background-surface-selected motion-reduce:animate-none motion-reduce:opacity-100 [animation-duration:var(--refineui-motion-duration-skeleton)] [animation-timing-function:var(--refineui-motion-easing-ease-in-out)]",
11985
12426
  /** Avatar-style placeholder */
11986
- circle: "block shrink-0 rounded-refineui-circle"
12427
+ circle: "block shrink-0 animate-pulse rounded-refineui-circle bg-refineui-alias-background-surface-selected motion-reduce:animate-none motion-reduce:opacity-100 [animation-duration:var(--refineui-motion-duration-skeleton)] [animation-timing-function:var(--refineui-motion-easing-ease-in-out)]"
11987
12428
  };
11988
12429
 
11989
12430
  // src/components/Skeleton/Skeleton.tsx
@@ -12041,7 +12482,7 @@ import { useState as useState23 } from "react";
12041
12482
 
12042
12483
  // src/components/Slider/style.ts
12043
12484
  var sliderStyles = {
12044
- root: "h-refineui-slider-interaction-height w-full cursor-pointer"
12485
+ root: "h-refineui-slider-interaction-height w-full cursor-grab appearance-none bg-transparent outline-none touch-none [--refineui-slider-rail:var(--refineui-color-alias-background-brand-subtle)] [--refineui-slider-fill-color:var(--refineui-color-alias-background-brand)] [--refineui-slider-thumb-size:var(--refineui-size-foundation-size-200)] active:cursor-grabbing disabled:cursor-not-allowed disabled:[--refineui-slider-rail:var(--refineui-color-alias-background-surface-disabled)] disabled:[--refineui-slider-fill-color:var(--refineui-color-alias-foreground-disabled)] data-[size=md]:[&::-webkit-slider-runnable-track]:h-refineui-slider-track-height-md data-[size=sm]:[&::-webkit-slider-runnable-track]:h-refineui-slider-track-height-sm data-[size=md]:[&::-moz-range-track]:h-refineui-slider-track-height-md data-[size=sm]:[&::-moz-range-track]:h-refineui-slider-track-height-sm data-[size=md]:[&::-moz-range-progress]:h-refineui-slider-track-height-md data-[size=sm]:[&::-moz-range-progress]:h-refineui-slider-track-height-sm [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:[background:linear-gradient(to_right,var(--refineui-slider-fill-color)_0%,var(--refineui-slider-fill-color)_var(--refineui-slider-fill,0%),var(--refineui-slider-rail)_var(--refineui-slider-fill,0%),var(--refineui-slider-rail)_100%)] [&::-moz-range-track]:rounded-full [&::-moz-range-track]:bg-[var(--refineui-slider-rail)] [&::-moz-range-progress]:rounded-full [&::-moz-range-progress]:bg-[var(--refineui-slider-fill-color)] [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:size-[var(--refineui-slider-thumb-size)] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border [&::-webkit-slider-thumb]:border-refineui-alias-border-default [&::-webkit-slider-thumb]:bg-refineui-alias-background-primary [&::-webkit-slider-thumb]:shadow-refineui-2lighter [&::-webkit-slider-thumb]:transition-[transform,box-shadow,border-color,background-color] data-[size=md]:[&::-webkit-slider-thumb]:mt-[calc((var(--refineui-slider-thumb-size)-var(--refineui-size-slider-track-height-md))/-2)] data-[size=sm]:[&::-webkit-slider-thumb]:mt-[calc((var(--refineui-slider-thumb-size)-var(--refineui-size-slider-track-height-sm))/-2)] [&::-moz-range-thumb]:size-[var(--refineui-slider-thumb-size)] [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border [&::-moz-range-thumb]:border-refineui-alias-border-default [&::-moz-range-thumb]:bg-refineui-alias-background-primary [&::-moz-range-thumb]:shadow-refineui-2lighter [&::-moz-range-thumb]:transition-[transform,box-shadow,border-color,background-color] hover:[&::-webkit-slider-thumb]:border-refineui-alias-border-strong hover:[&::-webkit-slider-thumb]:shadow-refineui-2 hover:[&::-webkit-slider-thumb]:scale-[var(--refineui-motion-scale-hover-grow)] hover:[&::-moz-range-thumb]:border-refineui-alias-border-strong hover:[&::-moz-range-thumb]:shadow-refineui-2 hover:[&::-moz-range-thumb]:scale-[var(--refineui-motion-scale-hover-grow)] active:[&::-webkit-slider-thumb]:border-refineui-alias-border-strong active:[&::-webkit-slider-thumb]:shadow-refineui-2lighter active:[&::-webkit-slider-thumb]:scale-[var(--refineui-motion-scale-press)] active:[&::-moz-range-thumb]:border-refineui-alias-border-strong active:[&::-moz-range-thumb]:shadow-refineui-2lighter active:[&::-moz-range-thumb]:scale-[var(--refineui-motion-scale-press)] focus-visible:[&::-webkit-slider-thumb]:border-refineui-alias-border-focus focus-visible:[&::-webkit-slider-thumb]:shadow-[0_0_0_var(--refineui-stroke-width-thick)_var(--refineui-color-alias-border-focus),var(--refineui-elevation-2lighter)] focus-visible:[&::-moz-range-thumb]:border-refineui-alias-border-focus focus-visible:[&::-moz-range-thumb]:shadow-[0_0_0_var(--refineui-stroke-width-thick)_var(--refineui-color-alias-border-focus),var(--refineui-elevation-2lighter)] disabled:[&::-webkit-slider-thumb]:bg-refineui-alias-background-surface-disabled disabled:[&::-webkit-slider-thumb]:border-refineui-alias-border-disabled disabled:[&::-webkit-slider-thumb]:shadow-none disabled:[&::-webkit-slider-thumb]:transform-none disabled:[&::-moz-range-thumb]:bg-refineui-alias-background-surface-disabled disabled:[&::-moz-range-thumb]:border-refineui-alias-border-disabled disabled:[&::-moz-range-thumb]:shadow-none disabled:[&::-moz-range-thumb]:transform-none"
12045
12486
  };
12046
12487
 
12047
12488
  // src/components/Slider/Slider.tsx
@@ -12123,15 +12564,16 @@ import {
12123
12564
  // src/components/Carousel/style.ts
12124
12565
  import { clsx as clsx88 } from "clsx";
12125
12566
  var carouselStyles = {
12126
- root: "box-border flex w-full flex-col gap-refineui-size-large outline-none",
12567
+ root: "box-border flex w-full flex-col gap-refineui-size-large outline-none focus-visible:outline-[length:var(--refineui-stroke-width-thick)] focus-visible:[outline-color:var(--refineui-focus-color)] focus-visible:[outline-offset:var(--refineui-focus-offset)]",
12127
12568
  viewport: clsx88(
12128
12569
  "relative w-full cursor-grab overflow-hidden rounded-refineui-xx-large",
12129
12570
  "border-refineui-thin border-refineui-alias-border-default bg-refineui-alias-background-primary",
12130
12571
  "shadow-refineui-2 select-none",
12131
- "active:cursor-grabbing"
12572
+ "touch-pan-y active:cursor-grabbing data-[dragging=true]:cursor-grabbing"
12132
12573
  ),
12133
12574
  track: "flex will-change-transform",
12134
- trackAnimated: "transition-transform duration-[var(--refineui-motion-duration-panel)] ease-[var(--refineui-motion-easing-emphasized)]",
12575
+ trackAnimated: "transition-transform duration-[var(--refineui-motion-duration-panel)] ease-[var(--refineui-motion-easing-emphasized)] motion-reduce:transition-none",
12576
+ navFocus: "focus-visible:outline-[length:var(--refineui-stroke-width-thick)] focus-visible:[outline-color:var(--refineui-focus-color)] focus-visible:[outline-offset:var(--refineui-focus-offset)]",
12135
12577
  item: "box-border min-w-0 shrink-0 grow-0 basis-full",
12136
12578
  controls: "flex w-full items-center justify-center gap-refineui-size-medium",
12137
12579
  /** Sliding-pill meter (SegmentedControl-like), not a row of dots */
@@ -12142,11 +12584,10 @@ var carouselStyles = {
12142
12584
  ),
12143
12585
  indicatorThumb: clsx88(
12144
12586
  "pointer-events-none absolute top-refineui-size-xxx-small bottom-refineui-size-xxx-small start-refineui-size-xxx-small z-0",
12145
- /* Motion lives in refineui.css, gated by `data-animate`. */
12146
- "rounded-refineui-circle bg-refineui-alias-background-brand shadow-refineui-2"
12587
+ "rounded-refineui-circle bg-refineui-alias-background-brand shadow-refineui-2 transition-none data-[animate=true]:transition-[transform,width] data-[animate=true]:duration-[var(--refineui-motion-duration-medium)] data-[animate=true]:ease-[var(--refineui-motion-easing-emphasized)] motion-reduce:transition-none"
12147
12588
  ),
12148
12589
  indicatorHitRow: "relative z-[1] flex h-full w-full",
12149
- indicatorHit: "h-full min-w-0 flex-1 cursor-pointer border-none bg-transparent p-0 outline-none"
12590
+ indicatorHit: "h-full min-w-0 flex-1 cursor-pointer border-none bg-transparent p-0 outline-none focus-visible:outline-[length:var(--refineui-stroke-width-thick)] focus-visible:[outline-color:var(--refineui-focus-color)] focus-visible:[outline-offset:var(--refineui-focus-offset)]"
12150
12591
  };
12151
12592
 
12152
12593
  // src/components/Carousel/Carousel.tsx
@@ -12162,6 +12603,14 @@ function clampIndex(i, count) {
12162
12603
  if (count <= 0) return 0;
12163
12604
  return Math.min(count - 1, Math.max(0, i));
12164
12605
  }
12606
+ function getInitialSlideCount(children) {
12607
+ let slideCount = 0;
12608
+ Children6.forEach(children, (child) => {
12609
+ if (!isValidElement5(child) || child.type !== CarouselContent) return;
12610
+ slideCount = Children6.toArray(child.props.children).filter(isValidElement5).length;
12611
+ });
12612
+ return slideCount;
12613
+ }
12165
12614
  function Carousel({
12166
12615
  children,
12167
12616
  className,
@@ -12174,7 +12623,7 @@ function Carousel({
12174
12623
  }) {
12175
12624
  const isControlled = indexControlled !== void 0;
12176
12625
  const [internalIndex, setInternalIndex] = useState24(defaultIndex);
12177
- const [count, setCount] = useState24(0);
12626
+ const [count, setCount] = useState24(() => getInitialSlideCount(children));
12178
12627
  const [trackIndex, setTrackIndex] = useState24(defaultIndex);
12179
12628
  const [instant, setInstant] = useState24(false);
12180
12629
  const index = isControlled ? indexControlled : internalIndex;
@@ -12454,7 +12903,7 @@ function CarouselPrevious({ className, disabled, onClick, ...props }) {
12454
12903
  "data-dir": "prev",
12455
12904
  "aria-label": "Previous slide",
12456
12905
  disabled: isDisabled,
12457
- className,
12906
+ className: clsx89(carouselStyles.navFocus, className),
12458
12907
  ...props,
12459
12908
  onClick: (e) => {
12460
12909
  onClick?.(e);
@@ -12486,7 +12935,7 @@ function CarouselNext({ className, disabled, onClick, ...props }) {
12486
12935
  "data-dir": "next",
12487
12936
  "aria-label": "Next slide",
12488
12937
  disabled: isDisabled,
12489
- className,
12938
+ className: clsx89(carouselStyles.navFocus, className),
12490
12939
  ...props,
12491
12940
  onClick: (e) => {
12492
12941
  onClick?.(e);
@@ -12507,33 +12956,10 @@ function CarouselNext({ className, disabled, onClick, ...props }) {
12507
12956
  }
12508
12957
  function CarouselIndicators({ className, ...props }) {
12509
12958
  const { count, index, scrollTo } = useCarouselContext("CarouselIndicators");
12510
- const trackRef = useRef18(null);
12511
- const [thumb, setThumb] = useState24({ width: 0, x: 0, ready: false });
12512
12959
  const [animate, setAnimate] = useState24(false);
12513
- const updateThumb = useCallback18(() => {
12514
- const el = trackRef.current;
12515
- if (!el || count <= 0) {
12516
- setThumb({ width: 0, x: 0, ready: false });
12517
- return;
12518
- }
12519
- const hits = el.querySelector("[data-refineui='carousel-indicator-hits']");
12520
- const inner = hits?.clientWidth ?? el.clientWidth;
12521
- const width = inner / count;
12522
- setThumb({
12523
- width,
12524
- x: width * index,
12525
- ready: true
12526
- });
12527
- }, [count, index]);
12528
- useLayoutEffect10(() => {
12529
- updateThumb();
12530
- }, [updateThumb]);
12531
12960
  useEffect17(() => {
12532
- if (!thumb.ready) {
12533
- setAnimate(false);
12534
- return;
12535
- }
12536
- if (animate) return;
12961
+ setAnimate(false);
12962
+ if (count <= 0) return;
12537
12963
  let raf2 = 0;
12538
12964
  const raf1 = requestAnimationFrame(() => {
12539
12965
  raf2 = requestAnimationFrame(() => setAnimate(true));
@@ -12542,23 +12968,16 @@ function CarouselIndicators({ className, ...props }) {
12542
12968
  cancelAnimationFrame(raf1);
12543
12969
  cancelAnimationFrame(raf2);
12544
12970
  };
12545
- }, [thumb.ready, animate]);
12546
- useEffect17(() => {
12547
- const el = trackRef.current;
12548
- if (!el) return;
12549
- const ro = new ResizeObserver(() => updateThumb());
12550
- ro.observe(el);
12551
- return () => ro.disconnect();
12552
- }, [updateThumb]);
12971
+ }, [count]);
12553
12972
  if (count <= 0) return null;
12973
+ const selectedIndex = clampIndex(index, count);
12554
12974
  const thumbStyle = {
12555
- width: thumb.width,
12556
- transform: `translate3d(${thumb.x}px, 0, 0)`
12975
+ width: `${100 / count}%`,
12976
+ transform: `translate3d(${selectedIndex * 100}%, 0, 0)`
12557
12977
  };
12558
12978
  return /* @__PURE__ */ jsxs26(
12559
12979
  "div",
12560
12980
  {
12561
- ref: trackRef,
12562
12981
  "data-refineui": "carousel-indicators",
12563
12982
  role: "tablist",
12564
12983
  "aria-label": "Slides",
@@ -12569,7 +12988,6 @@ function CarouselIndicators({ className, ...props }) {
12569
12988
  "span",
12570
12989
  {
12571
12990
  "data-refineui": "carousel-indicator-thumb",
12572
- "data-ready": thumb.ready ? "true" : void 0,
12573
12991
  "data-animate": animate ? "true" : void 0,
12574
12992
  "aria-hidden": true,
12575
12993
  className: carouselStyles.indicatorThumb,
@@ -12610,10 +13028,14 @@ var BUBBLE_MAX_WIDTH = "80%";
12610
13028
  var bubbleStyles = {
12611
13029
  group: clsx90(
12612
13030
  "flex min-w-0 flex-col gap-refineui-size-xx-small",
12613
- // Connected corners for consecutive bubbles
12614
- "[&>[data-refineui=bubble]:first-child:not(:only-child)_[data-refineui=bubble-content]]:rounded-b-[var(--refineui-radius-rounded-medium)]",
12615
- "[&>[data-refineui=bubble]:last-child:not(:only-child)_[data-refineui=bubble-content]]:rounded-t-[var(--refineui-radius-rounded-medium)]",
12616
- "[&>[data-refineui=bubble]:not(:first-child):not(:last-child)_[data-refineui=bubble-content]]:rounded-[var(--refineui-radius-rounded-medium)]",
13031
+ // Connected corners only flatten along the sender edge. The opposite
13032
+ // edge keeps the outer bubble radius, including in RTL layouts.
13033
+ "[&>[data-refineui=bubble][data-align=start]:first-child:not(:only-child)_[data-refineui=bubble-content]]:[border-end-start-radius:var(--refineui-radius-rounded-medium)]",
13034
+ "[&>[data-refineui=bubble][data-align=end]:first-child:not(:only-child)_[data-refineui=bubble-content]]:[border-end-end-radius:var(--refineui-radius-rounded-medium)]",
13035
+ "[&>[data-refineui=bubble][data-align=start]:last-child:not(:only-child)_[data-refineui=bubble-content]]:[border-start-start-radius:var(--refineui-radius-rounded-medium)]",
13036
+ "[&>[data-refineui=bubble][data-align=end]:last-child:not(:only-child)_[data-refineui=bubble-content]]:[border-start-end-radius:var(--refineui-radius-rounded-medium)]",
13037
+ "[&>[data-refineui=bubble][data-align=start]:not(:first-child):not(:last-child)_[data-refineui=bubble-content]]:[border-start-start-radius:var(--refineui-radius-rounded-medium)] [&>[data-refineui=bubble][data-align=start]:not(:first-child):not(:last-child)_[data-refineui=bubble-content]]:[border-end-start-radius:var(--refineui-radius-rounded-medium)]",
13038
+ "[&>[data-refineui=bubble][data-align=end]:not(:first-child):not(:last-child)_[data-refineui=bubble-content]]:[border-start-end-radius:var(--refineui-radius-rounded-medium)] [&>[data-refineui=bubble][data-align=end]:not(:first-child):not(:last-child)_[data-refineui=bubble-content]]:[border-end-end-radius:var(--refineui-radius-rounded-medium)]",
12617
13039
  // Room for overlapping reactions on the last bubble in a group
12618
13040
  "[&>[data-refineui=bubble][data-has-reactions-bottom]:not(:last-child)]:mb-refineui-size-xx-large"
12619
13041
  ),
@@ -12816,7 +13238,10 @@ var stepperStyles = {
12816
13238
  "hover:[&_[data-refineui=stepper-indicator][data-state=upcoming]]:bg-refineui-alias-background-primary-hover",
12817
13239
  "hover:[&_[data-refineui=stepper-indicator][data-state=upcoming]]:border-refineui-alias-border-strong",
12818
13240
  "hover:[&_[data-refineui=stepper-indicator][data-state=upcoming]]:text-refineui-alias-foreground-primary-hover",
12819
- "hover:[&_[data-refineui=stepper-title][data-state=upcoming]]:text-refineui-alias-foreground-primary"
13241
+ "hover:[&_[data-refineui=stepper-title][data-state=upcoming]]:text-refineui-alias-foreground-primary",
13242
+ "active:[&_[data-refineui=stepper-indicator][data-state=upcoming]]:bg-refineui-alias-background-primary-active",
13243
+ "active:[&_[data-refineui=stepper-indicator][data-state=upcoming]]:border-refineui-alias-border-strong",
13244
+ "active:[&_[data-refineui=stepper-indicator][data-state=upcoming]]:text-refineui-alias-foreground-primary"
12820
13245
  ),
12821
13246
  itemDisabled: "cursor-not-allowed opacity-50",
12822
13247
  indicator: clsx92(
@@ -13676,7 +14101,7 @@ import { iconSizes as iconSizes20 } from "@refineui/tokens";
13676
14101
 
13677
14102
  // src/components/SpinButton/style.ts
13678
14103
  var spinButtonStyles = {
13679
- root: "box-border flex w-full min-w-0 items-stretch overflow-hidden outline-none",
14104
+ root: "box-border flex w-full min-w-0 items-stretch overflow-hidden outline-none transition-[border-color,background-color] duration-[var(--refineui-motion-duration-fast)] focus-within:border-refineui-alias-border-focus active:transform-none",
13680
14105
  borderDisabled: "border-refineui-thin border-refineui-alias-border-disabled",
13681
14106
  borderDefault: "border-refineui-thin border-refineui-alias-border-default",
13682
14107
  bgDisabled: "bg-refineui-alias-background-surface-disabled",
@@ -13687,9 +14112,9 @@ var spinButtonStyles = {
13687
14112
  valueTextDefault: "text-refineui-alias-foreground-primary",
13688
14113
  stepper: "flex h-full min-h-0 w-refineui-spin-stepper-width shrink-0 flex-col",
13689
14114
  /** Split column evenly inside shared `controlHeight*` shell */
13690
- stepButtonBase: "box-border flex min-h-0 w-full flex-1 items-center justify-center border-none p-0 text-refineui-alias-foreground-secondary",
13691
- stepButtonDisabled: "cursor-not-allowed bg-refineui-alias-background-surface-disabled opacity-50",
13692
- stepButtonEnabled: "cursor-pointer bg-refineui-alias-background-primary opacity-100"
14115
+ stepButtonBase: "box-border flex min-h-0 w-full flex-1 items-center justify-center border-none p-0 text-refineui-alias-foreground-secondary outline-none transition-[background-color,color,opacity] duration-[var(--refineui-motion-duration-fast)] active:transform-none focus-visible:outline-none",
14116
+ stepButtonDisabled: "cursor-not-allowed bg-refineui-alias-background-surface-disabled opacity-50 text-refineui-alias-foreground-disabled",
14117
+ stepButtonEnabled: "cursor-pointer bg-refineui-alias-background-primary opacity-100 hover:bg-refineui-alias-background-surface-hover hover:text-refineui-alias-foreground-primary active:bg-refineui-alias-background-surface-active active:text-refineui-alias-foreground-primary"
13693
14118
  };
13694
14119
  var spinButtonShellClass = formControlShellHeightClass;
13695
14120
  var spinButtonValueTypo = formControlTypoClass;
@@ -13956,7 +14381,7 @@ var toastRecipe = defineRecipe({
13956
14381
  dataStates: ["default"]
13957
14382
  });
13958
14383
  var toastStyles = {
13959
- card: toastRecipe.base,
14384
+ card: `${toastRecipe.base} touch-none [--refineui-toast-swipe-x:0] [--refineui-toast-swipe-y:0] [--refineui-toast-motion-duration:var(--refineui-motion-duration-toast-enter)] [--refineui-toast-motion-easing:var(--refineui-motion-easing-emphasized)] [transform:translate3d(var(--refineui-toast-swipe-x),var(--refineui-toast-swipe-y),0)] transition-[opacity,transform] duration-[var(--refineui-toast-motion-duration)] ease-[var(--refineui-toast-motion-easing)] shadow-refineui-toast will-change-[transform,opacity] motion-reduce:duration-[var(--refineui-motion-duration-instant)] motion-reduce:data-[stack-state=entering]:transform-none motion-reduce:[&[data-stack-state=leaving]:not([data-swipe-out])]:transform-none data-[swiping=true]:cursor-grabbing data-[swiping=true]:transition-none data-[swipe-out=left]:[--refineui-toast-swipe-x:-120%] data-[swipe-out=left]:opacity-0 data-[swipe-out=right]:[--refineui-toast-swipe-x:120%] data-[swipe-out=right]:opacity-0 data-[swipe-out=top]:[--refineui-toast-swipe-y:-120%] data-[swipe-out=top]:opacity-0 data-[swipe-out=bottom]:[--refineui-toast-swipe-y:120%] data-[swipe-out=bottom]:opacity-0 data-[stack-state=entering]:opacity-0 data-[stack-state=entering]:[transform:translate3d(var(--refineui-toast-swipe-x),var(--refineui-toast-slide-in-y,-100%),0)] data-[stack-state=leaving]:[--refineui-toast-motion-duration:var(--refineui-motion-duration-toast-leave)] data-[stack-state=leaving]:[--refineui-toast-motion-easing:var(--refineui-motion-easing-standard)] [&[data-stack-state=leaving]:not([data-swipe-out])]:opacity-0 [&[data-stack-state=leaving]:not([data-swipe-out])]:[transform:translate3d(var(--refineui-toast-swipe-x),var(--refineui-toast-slide-out-y,-100%),0)]`,
13960
14385
  iconWrap: "flex shrink-0 items-center justify-center self-center",
13961
14386
  contentWrap: "flex min-h-px min-w-0 flex-1 items-center",
13962
14387
  message: clsx97(
@@ -13964,7 +14389,9 @@ var toastStyles = {
13964
14389
  "text-refineui-alias-foreground-primary"
13965
14390
  ),
13966
14391
  actionButton: "shrink-0 whitespace-nowrap",
13967
- toasterRoot: "refineui-toaster group"
14392
+ toasterRoot: "group/toaster fixed start-1/2 top-[calc(var(--refineui-spacing-size-xxx-large)+var(--refineui-spacing-size-large)+env(safe-area-inset-top,0px))] z-refineui-messages box-border min-h-[var(--refineui-toast-collapsed-stack-height,var(--refineui-toast-front-height,0))] w-[min(calc(100%-env(safe-area-inset-left,0px)-env(safe-area-inset-right,0px)-2*var(--refineui-spacing-size-large)),var(--refineui-size-toast-max-width))] max-w-refineui-toast-max-width -translate-x-1/2 list-none p-0 pointer-events-none transition-[min-height] duration-[var(--refineui-motion-duration-panel)] ease-[var(--refineui-motion-easing-emphasized)] motion-reduce:duration-[var(--refineui-motion-duration-instant)] before:absolute before:inset-0 before:z-0 before:content-[''] before:pointer-events-auto group-hover/toaster:min-h-[var(--refineui-toast-expanded-stack-height,var(--refineui-toast-collapsed-stack-height,0))] max-[480px]:top-[calc(var(--refineui-spacing-size-xxx-large)+env(safe-area-inset-top,0px))] max-[480px]:w-[min(calc(100%-env(safe-area-inset-left,0px)-env(safe-area-inset-right,0px)-2*var(--refineui-spacing-size-medium)),var(--refineui-size-toast-max-width))]",
14393
+ stackItem: "absolute inset-x-0 top-0 z-[var(--refineui-toast-z-index,100)] flex justify-center overflow-visible pointer-events-auto translate-y-[var(--refineui-toast-offset-collapsed,0)] transition-[transform,height] duration-[var(--refineui-motion-duration-panel)] ease-[var(--refineui-motion-easing-emphasized)] group-hover/toaster:translate-y-[var(--refineui-toast-offset-expanded,0)]",
14394
+ scaleLayer: "relative box-border w-fit max-w-full origin-top scale-[calc(1-(var(--refineui-toast-stack-index,0)*0.018))] opacity-[calc(1-(var(--refineui-toast-stack-index,0)*0.12))] transition-[transform,opacity] duration-[var(--refineui-motion-duration-panel)] ease-[var(--refineui-motion-easing-emphasized)] group-hover/toaster:scale-100 group-hover/toaster:opacity-100"
13968
14395
  };
13969
14396
 
13970
14397
  // src/components/Toast/Toast.tsx
@@ -14195,7 +14622,20 @@ var Toast = forwardRef16(function Toast2(props, ref) {
14195
14622
  style: { ...tokenStyle, ...style },
14196
14623
  className: clsx98(toastStyles.card, className),
14197
14624
  children: [
14198
- /* @__PURE__ */ jsx73("div", { "data-refineui": "toast-icon", className: toastStyles.iconWrap, children: iconContent }),
14625
+ /* @__PURE__ */ jsx73(
14626
+ "div",
14627
+ {
14628
+ "data-refineui": "toast-icon",
14629
+ className: clsx98(
14630
+ toastStyles.iconWrap,
14631
+ variant === "success" && "text-refineui-alias-foreground-success",
14632
+ variant === "error" && "text-refineui-alias-foreground-error",
14633
+ variant === "warning" && "text-refineui-alias-foreground-warning",
14634
+ variant === "default" && "text-refineui-alias-foreground-primary"
14635
+ ),
14636
+ children: iconContent
14637
+ }
14638
+ ),
14199
14639
  /* @__PURE__ */ jsx73("div", { className: toastStyles.contentWrap, children: message != null && message !== "" ? /* @__PURE__ */ jsx73("div", { className: toastStyles.message, children: message }) : null }),
14200
14640
  action != null && actionEl
14201
14641
  ]
@@ -14446,11 +14886,12 @@ function Toaster({
14446
14886
  "data-toast-id": rec.id,
14447
14887
  "data-index": index,
14448
14888
  "data-front": index === 0 ? "true" : "false",
14889
+ className: toastStyles.stackItem,
14449
14890
  style: {
14450
14891
  ["--refineui-toast-z-index"]: String(STACK_Z_BASE - index),
14451
14892
  ["--refineui-toast-stack-index"]: String(index)
14452
14893
  },
14453
- children: /* @__PURE__ */ jsx73("div", { "data-refineui": "toast-scale-layer", children: /* @__PURE__ */ jsx73(
14894
+ children: /* @__PURE__ */ jsx73("div", { "data-refineui": "toast-scale-layer", className: toastStyles.scaleLayer, children: /* @__PURE__ */ jsx73(
14454
14895
  SwipeableToast,
14455
14896
  {
14456
14897
  record: rec,
@@ -14518,9 +14959,9 @@ var treeStyles = {
14518
14959
  "rounded-refineui-large border-none bg-transparent",
14519
14960
  "px-refineui-size-medium py-refineui-size-x-small",
14520
14961
  "text-refineui-alias-foreground-tertiary outline-none",
14521
- "transition-[color,background-color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
14962
+ "transition-[color,background-color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)] hover:bg-refineui-alias-background-primary-hover hover:text-refineui-alias-foreground-primary-hover active:bg-refineui-alias-background-primary-active active:text-refineui-alias-foreground-primary focus-visible:outline-[length:var(--refineui-stroke-width-thick)] focus-visible:[outline-color:var(--refineui-focus-color)] focus-visible:[outline-offset:var(--refineui-focus-offset)] aria-disabled:pointer-events-none"
14522
14963
  ),
14523
- rowSelected: "font-medium text-refineui-alias-foreground-primary",
14964
+ rowSelected: "font-medium bg-refineui-alias-background-primary-hover text-refineui-alias-foreground-primary",
14524
14965
  rowDisabled: "cursor-not-allowed",
14525
14966
  rowMain: "flex min-w-0 flex-1 items-center gap-refineui-size-x-small",
14526
14967
  chevronButton: clsx99(
@@ -15157,7 +15598,7 @@ var chartStyles = {
15157
15598
  root: "flex w-full min-w-0 flex-col gap-refineui-size-medium",
15158
15599
  body: "grid w-full min-w-0 grid-cols-[auto_minmax(0,1fr)] grid-rows-[minmax(0,1fr)_auto_auto] items-stretch gap-x-refineui-size-medium",
15159
15600
  plotColumn: "contents",
15160
- plotFrame: "relative col-start-2 row-start-1 min-w-0",
15601
+ plotFrame: "group/chart-plot relative col-start-2 row-start-1 min-w-0",
15161
15602
  plot: "block h-auto w-full min-w-0 aspect-[5/2] overflow-visible",
15162
15603
  yAxis: "relative col-start-1 row-start-1 min-w-refineui-foundation-size-400 pe-refineui-size-x-small",
15163
15604
  yAxisTick: clsx106(
@@ -15189,7 +15630,12 @@ var chartStyles = {
15189
15630
  componentTextClass(componentTypographyTokens.chart.legendLabel),
15190
15631
  "flex items-center gap-refineui-size-x-small text-refineui-alias-foreground-secondary"
15191
15632
  ),
15192
- legendSwatch: "size-refineui-foundation-size-80 shrink-0 rounded-refineui-small"
15633
+ legendSwatch: "size-refineui-foundation-size-80 shrink-0 rounded-refineui-small",
15634
+ bar: "[transform-box:fill-box] origin-bottom [animation:refineui-chart-bar-enter_var(--refineui-motion-duration-panel)_var(--refineui-motion-easing-emphasized)_both] transition-opacity duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)] group-data-[hover]/chart-plot:data-[state=default]:opacity-[var(--refineui-opacity-disabled)] data-[state=hover]:opacity-[var(--refineui-opacity-full)] data-[state=selected]:opacity-[var(--refineui-opacity-full)]",
15635
+ barTrack: "pointer-events-none",
15636
+ lineStroke: "[stroke-dasharray:1] [stroke-dashoffset:1] [animation:refineui-chart-line-enter_var(--refineui-motion-duration-panel)_var(--refineui-motion-easing-emphasized)_both]",
15637
+ lineArea: "[animation:refineui-chart-point-enter_var(--refineui-motion-duration-panel)_var(--refineui-motion-easing-emphasized)_both]",
15638
+ point: "[animation:refineui-chart-point-enter_var(--refineui-motion-duration-fast)_var(--refineui-motion-easing-emphasized)_both]"
15193
15639
  };
15194
15640
 
15195
15641
  // src/components/Chart/utils.ts
@@ -15666,7 +16112,8 @@ function ChartBars({
15666
16112
  trackHeight,
15667
16113
  barRadius
15668
16114
  ),
15669
- fill: track
16115
+ fill: track,
16116
+ className: chartStyles.barTrack
15670
16117
  },
15671
16118
  `track-${index}`
15672
16119
  );
@@ -15683,7 +16130,8 @@ function ChartBars({
15683
16130
  "data-refineui": "chart-bar",
15684
16131
  "data-state": state,
15685
16132
  d: barPathTopRounded(x, y, barWidth, height, barRadius),
15686
- fill
16133
+ fill,
16134
+ className: chartStyles.bar
15687
16135
  },
15688
16136
  index
15689
16137
  );
@@ -15728,7 +16176,8 @@ function ChartLine({
15728
16176
  {
15729
16177
  "data-refineui": "chart-line-area",
15730
16178
  d: monotoneAreaPath(coords, baselineY),
15731
- fill: `url(#${gradientId})`
16179
+ fill: `url(#${gradientId})`,
16180
+ className: chartStyles.lineArea
15732
16181
  }
15733
16182
  )
15734
16183
  ] }) : null,
@@ -15743,7 +16192,8 @@ function ChartLine({
15743
16192
  strokeWidth: "var(--refineui-stroke-width-thick)",
15744
16193
  vectorEffect: "non-scaling-stroke",
15745
16194
  strokeLinejoin: "round",
15746
- strokeLinecap: "round"
16195
+ strokeLinecap: "round",
16196
+ className: chartStyles.lineStroke
15747
16197
  }
15748
16198
  ),
15749
16199
  coords.map(({ x, y }, index) => {
@@ -15760,7 +16210,8 @@ function ChartLine({
15760
16210
  r: CHART_POINT_RADIUS,
15761
16211
  fill: stroke,
15762
16212
  stroke: pointRing,
15763
- strokeWidth: CHART_POINT_STROKE
16213
+ strokeWidth: CHART_POINT_STROKE,
16214
+ className: chartStyles.point
15764
16215
  },
15765
16216
  index
15766
16217
  );