@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.cjs CHANGED
@@ -1510,10 +1510,10 @@ function resolveSlotClasses(recipe, slot, variants = {}) {
1510
1510
 
1511
1511
  // src/recipes/button.recipe.ts
1512
1512
  var buttonVariantClass = {
1513
- primary: "border-refineui-none border border-transparent bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed",
1514
- secondary: "border-refineui-none border border-transparent bg-refineui-alias-background-surface-hover text-refineui-alias-foreground-primary",
1515
- outline: "border-refineui-thin border-refineui-alias-border-default bg-transparent text-refineui-alias-foreground-primary",
1516
- ghost: "border-refineui-none border border-transparent bg-transparent text-refineui-alias-foreground-primary"
1513
+ 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",
1514
+ 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",
1515
+ 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",
1516
+ 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"
1517
1517
  };
1518
1518
  var buttonLabelSizeClass = {
1519
1519
  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")}`,
@@ -1527,7 +1527,7 @@ var buttonIconSizeClass = {
1527
1527
  };
1528
1528
  var buttonRecipe = defineRecipe({
1529
1529
  name: "button",
1530
- 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)]",
1530
+ 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",
1531
1531
  variants: {
1532
1532
  variant: buttonVariantClass,
1533
1533
  layout: {
@@ -1543,7 +1543,7 @@ var buttonRecipe = defineRecipe({
1543
1543
  compoundVariants: [
1544
1544
  {
1545
1545
  match: { variant: "ghost", layout: "icon" },
1546
- className: "border-refineui-none border border-transparent bg-transparent text-refineui-alias-foreground-secondary hover:text-refineui-alias-foreground-primary-hover"
1546
+ 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"
1547
1547
  },
1548
1548
  {
1549
1549
  match: { layout: "icon", variant: "primary" },
@@ -1677,7 +1677,7 @@ var formControlShellHeightClass = {
1677
1677
 
1678
1678
  // src/components/Input/style.ts
1679
1679
  var inputStyles = {
1680
- base: "box-border appearance-none outline-none transition-[border-color,box-shadow,background-color] duration-[var(--refineui-motion-duration-fast)]",
1680
+ 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",
1681
1681
  text: "text-refineui-alias-foreground-primary placeholder:text-refineui-alias-foreground-placeholder",
1682
1682
  disabledText: "disabled:text-refineui-alias-foreground-disabled",
1683
1683
  disabledBg: "bg-refineui-alias-background-surface-disabled",
@@ -1756,6 +1756,13 @@ var inputOtpStyles = {
1756
1756
  "transition-[background-color,border-color]",
1757
1757
  "duration-[var(--refineui-motion-duration-fast)]",
1758
1758
  "ease-[var(--refineui-motion-easing-emphasized)]",
1759
+ // Empty slots retain the staggered soft pulse until they receive focus or a digit.
1760
+ "[&:not(:disabled):not(:focus):not([data-filled])]:animate-pulse",
1761
+ "[&:not(:disabled):not(:focus):not([data-filled])]:[animation-duration:var(--refineui-motion-duration-skeleton)]",
1762
+ "[&:not(:disabled):not(:focus):not([data-filled])]:[animation-timing-function:var(--refineui-motion-easing-ease-in-out)]",
1763
+ "[&:not(:disabled):not(:focus):not([data-filled])]:[animation-delay:calc(var(--refineui-input-otp-slot-index,0)*var(--refineui-motion-duration-fast)*-1)]",
1764
+ "motion-reduce:animate-none",
1765
+ "caret-refineui-alias-foreground-primary hover:bg-refineui-alias-background-surface-active focus:border-refineui-alias-border-default",
1759
1766
  "disabled:cursor-not-allowed",
1760
1767
  "disabled:border-refineui-alias-border-disabled",
1761
1768
  "disabled:bg-refineui-alias-background-surface-disabled",
@@ -1763,9 +1770,9 @@ var inputOtpStyles = {
1763
1770
  )
1764
1771
  };
1765
1772
  var inputOtpSlotSizeClass = {
1766
- sm: "size-refineui-control-height-sm rounded-refineui-large p-0",
1767
- md: "size-refineui-control-height-md rounded-refineui-x-large p-0",
1768
- lg: "size-refineui-control-height-lg rounded-refineui-xx-large p-0"
1773
+ 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)]",
1774
+ 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)]",
1775
+ 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)]"
1769
1776
  };
1770
1777
 
1771
1778
  // src/components/InputOTP/InputOTP.tsx
@@ -2046,7 +2053,7 @@ var searchFieldStyles = {
2046
2053
  "box-border flex w-full min-w-0 items-center gap-refineui-size-x-small overflow-hidden outline-none",
2047
2054
  "transition-[background-color,border-color]",
2048
2055
  "duration-[var(--refineui-motion-duration-fast)]",
2049
- "ease-[var(--refineui-motion-easing-emphasized)]"
2056
+ "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"
2050
2057
  ].join(" "),
2051
2058
  rootFilled: [
2052
2059
  "border-refineui-thin border-transparent",
@@ -2054,14 +2061,14 @@ var searchFieldStyles = {
2054
2061
  "bg-refineui-alias-background-surface-hover"
2055
2062
  ].join(" "),
2056
2063
  rootPlain: [
2057
- "h-auto min-h-0 rounded-none border-none bg-transparent px-0 py-0"
2064
+ "h-auto min-h-0 rounded-none border-none bg-transparent px-0 py-0 hover:bg-transparent focus-within:border-transparent"
2058
2065
  ].join(" "),
2059
2066
  rootDisabled: "border-refineui-alias-border-disabled bg-refineui-alias-background-surface-disabled",
2060
2067
  rootPlainDisabled: "bg-transparent",
2061
2068
  icon: "inline-flex shrink-0 items-center justify-center text-refineui-alias-foreground-tertiary",
2062
2069
  iconDisabled: "text-refineui-alias-foreground-disabled",
2063
- 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",
2064
- clear: "inline-flex shrink-0 cursor-pointer items-center justify-center border-none bg-transparent p-0 leading-none text-refineui-alias-foreground-tertiary",
2070
+ 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",
2071
+ 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",
2065
2072
  clearDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled"
2066
2073
  };
2067
2074
  var searchFieldFilledSizeClass = formControlRowShellSizeClass;
@@ -2292,7 +2299,7 @@ var import_clsx9 = require("clsx");
2292
2299
  // src/components/Textarea/style.ts
2293
2300
  var import_clsx8 = require("clsx");
2294
2301
  var textareaStyles = {
2295
- base: "box-border appearance-none outline-none transition-[border-color,box-shadow,background-color] duration-[var(--refineui-motion-duration-fast)]",
2302
+ 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",
2296
2303
  field: (0, import_clsx8.clsx)(
2297
2304
  componentTextClass(componentTypographyTokens.textarea),
2298
2305
  "min-h-refineui-control-textarea-min resize-y rounded-refineui-large px-refineui-size-x-small py-refineui-size-medium"
@@ -2349,18 +2356,18 @@ var import_clsx11 = require("clsx");
2349
2356
  // src/recipes/badge.recipe.ts
2350
2357
  var import_clsx10 = require("clsx");
2351
2358
  var badgeVariantClass = {
2352
- default: "bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed",
2353
- neutral: "bg-refineui-alias-background-brand-subtle text-refineui-alias-foreground-brand-strong",
2354
- outline: "border-refineui-thin border-refineui-alias-border-default border bg-transparent text-refineui-alias-foreground-primary box-border",
2355
- success: "bg-refineui-alias-background-success text-refineui-alias-foreground-inversed",
2356
- warning: "bg-refineui-alias-background-warning text-refineui-alias-foreground-inversed",
2357
- danger: "bg-refineui-alias-background-error text-refineui-alias-foreground-inversed"
2359
+ 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",
2360
+ 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",
2361
+ 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",
2362
+ 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",
2363
+ 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",
2364
+ 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"
2358
2365
  };
2359
2366
  var badgeRecipe = defineRecipe({
2360
2367
  name: "badge",
2361
2368
  base: (0, import_clsx10.clsx)(
2362
2369
  componentTextClass(componentTypographyTokens.badge),
2363
- "inline-flex items-center justify-center py-refineui-size-xxsmall px-refineui-size-small"
2370
+ "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)]"
2364
2371
  ),
2365
2372
  variants: {
2366
2373
  variant: badgeVariantClass,
@@ -2406,26 +2413,27 @@ var import_clsx13 = require("clsx");
2406
2413
  // src/components/Card/style.ts
2407
2414
  var import_clsx12 = require("clsx");
2408
2415
  var cardStyles = {
2409
- root: "box-border flex h-full flex-col gap-refineui-size-none overflow-hidden rounded-refineui-xx-large bg-refineui-alias-background-primary",
2410
- elevated: "border-refineui-none shadow-refineui-4",
2416
+ 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)]",
2417
+ 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)]",
2411
2418
  outlined: "border-refineui-thin border-refineui-alias-border-default shadow-none",
2412
2419
  stateDefault: "bg-refineui-alias-background-primary",
2413
2420
  stateHover: "bg-refineui-alias-background-primary-hover",
2414
2421
  statePressed: "bg-refineui-alias-background-surface-active",
2415
2422
  stateDisabled: "bg-refineui-alias-background-surface-disabled",
2416
- 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)]",
2423
+ 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",
2424
+ interactiveOutlined: "hover:border-refineui-alias-border-default active:border-refineui-alias-border-strong",
2417
2425
  headerMain: "flex min-w-0 flex-1 flex-col gap-refineui-size-xx-small",
2418
2426
  header: "flex flex-row flex-wrap items-start justify-between gap-refineui-size-medium px-refineui-size-x-large py-refineui-size-large",
2419
2427
  title: (0, import_clsx12.clsx)(
2420
2428
  componentTextClass(componentTypographyTokens.card.title),
2421
- "text-refineui-alias-foreground-primary"
2429
+ "text-refineui-alias-foreground-primary group-aria-disabled:text-refineui-alias-foreground-disabled"
2422
2430
  ),
2423
2431
  description: (0, import_clsx12.clsx)(
2424
2432
  componentTextClass(componentTypographyTokens.card.description),
2425
- "text-refineui-alias-foreground-tertiary"
2433
+ "text-refineui-alias-foreground-tertiary group-aria-disabled:text-refineui-alias-foreground-disabled"
2426
2434
  ),
2427
2435
  action: "flex shrink-0 items-center justify-end",
2428
- content: "flex flex-1 flex-col px-refineui-size-x-large pb-refineui-size-large",
2436
+ content: "flex flex-1 flex-col px-refineui-size-x-large pb-refineui-size-large group-aria-disabled:text-refineui-alias-foreground-disabled",
2429
2437
  footer: "mt-auto flex shrink-0 items-center justify-end gap-refineui-size-x-small px-refineui-size-x-large py-refineui-size-medium"
2430
2438
  };
2431
2439
 
@@ -2455,6 +2463,7 @@ function Card({
2455
2463
  state === "pressed" && cardStyles.statePressed,
2456
2464
  state === "disabled" && cardStyles.stateDisabled,
2457
2465
  interactive && !isDisabled && cardStyles.interactive,
2466
+ interactive && !isDisabled && variant === "outlined" && cardStyles.interactiveOutlined,
2458
2467
  className
2459
2468
  ),
2460
2469
  ...props
@@ -2539,16 +2548,16 @@ var labelCompanionStyles = {
2539
2548
 
2540
2549
  // src/components/Checkbox/style.ts
2541
2550
  var checkboxStyles = {
2542
- root: "inline-flex gap-refineui-size-x-small",
2551
+ root: "group inline-flex gap-refineui-size-x-small",
2543
2552
  textTop: "items-start",
2544
2553
  textCenter: "items-center",
2545
2554
  disabledCursor: "cursor-not-allowed",
2546
2555
  enabledCursor: "cursor-pointer",
2547
2556
  controlWrap: "relative h-[var(--refineui-size-control-checkbox,20px)] w-[var(--refineui-size-control-checkbox,20px)] shrink-0",
2548
2557
  controlWrapDesc: "mt-refineui-size-xxx-small",
2549
- input: "absolute inset-0 z-1 m-0 h-full w-full cursor-pointer opacity-0 outline-none",
2558
+ input: "peer absolute inset-0 z-1 m-0 h-full w-full cursor-pointer opacity-0 outline-none",
2550
2559
  inputDisabled: "cursor-not-allowed",
2551
- visual: "pointer-events-none absolute inset-0 box-border flex items-center justify-center overflow-hidden",
2560
+ 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",
2552
2561
  textCol: "flex min-w-0 flex-col gap-refineui-size-x-small",
2553
2562
  label: labelCompanionStyles.label,
2554
2563
  desc: labelCompanionStyles.description,
@@ -2682,7 +2691,7 @@ var radioStyles = {
2682
2691
  rootWithoutDescription: "items-center",
2683
2692
  rootDisabled: "cursor-not-allowed",
2684
2693
  rootEnabled: "cursor-pointer",
2685
- input: "h-[var(--refineui-size-control-checkbox-radio,20px)] w-[var(--refineui-size-control-checkbox-radio,20px)] shrink-0 cursor-pointer",
2694
+ 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",
2686
2695
  inputWithDescriptionOffset: "mt-refineui-size-xxx-small",
2687
2696
  textWrap: "flex min-w-0 flex-col gap-refineui-size-x-small",
2688
2697
  label: labelCompanionStyles.label,
@@ -2809,7 +2818,7 @@ var import_tokens7 = require("@refineui/tokens");
2809
2818
  var SCROLL_AREA_THUMB_MIN_PX = Number.parseFloat(import_tokens7.spacings.sizeXLarge);
2810
2819
  var SCROLL_EDGE_FALLOFF_RATIO = 0.25;
2811
2820
  var scrollAreaStyles = {
2812
- root: "box-border min-h-0 min-w-0 overflow-hidden outline-none",
2821
+ root: "relative box-border min-h-0 min-w-0 overflow-hidden outline-none",
2813
2822
  /**
2814
2823
  * Overflow and scroll chaining are per axis: an axis only becomes scrollable
2815
2824
  * when its scrollbar is declared, so a horizontal-only area lets vertical
@@ -2818,26 +2827,31 @@ var scrollAreaStyles = {
2818
2827
  viewport: (0, import_clsx24.clsx)(
2819
2828
  "size-full min-h-0 min-w-0 rounded-[inherit]",
2820
2829
  "overflow-hidden",
2821
- "outline-none",
2830
+ "outline-none [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
2822
2831
  "data-[overflow-x=true]:overflow-x-auto data-[overflow-x=true]:overscroll-x-contain",
2823
2832
  "data-[overflow-y=true]:overflow-y-auto data-[overflow-y=true]:overscroll-y-contain"
2824
2833
  ),
2825
2834
  scrollbar: (0, import_clsx24.clsx)(
2826
2835
  "z-refineui-content box-border touch-none select-none",
2827
- "transition-opacity duration-[var(--refineui-motion-duration-fast)]",
2828
- "ease-[var(--refineui-motion-easing-ease-out)]"
2836
+ "transition-opacity duration-[var(--refineui-motion-duration-normal)]",
2837
+ "ease-[var(--refineui-motion-easing-ease-out)]",
2838
+ "data-[state=hidden]:pointer-events-none data-[state=hidden]:opacity-0",
2839
+ "data-[visibility=always]:data-[state=visible]:opacity-100",
2840
+ "data-[visibility=hover]:data-[state=visible]:pointer-events-none data-[visibility=hover]:data-[state=visible]:opacity-0",
2841
+ "data-[visibility=scroll]:data-[state=visible]:pointer-events-none data-[visibility=scroll]:data-[state=visible]:opacity-0",
2842
+ "data-[active=true]:!pointer-events-auto data-[active=true]:!opacity-100"
2829
2843
  ),
2830
- scrollbarVertical: "",
2831
- scrollbarHorizontal: "",
2844
+ scrollbarVertical: "absolute inset-y-refineui-size-xxx-small end-refineui-size-xxx-small w-refineui-size-medium overflow-hidden",
2845
+ scrollbarHorizontal: "absolute inset-x-refineui-size-xxx-small bottom-refineui-size-xxx-small h-refineui-size-medium overflow-hidden",
2832
2846
  /** Inner rail — thumb is absolutely positioned here (padding lives on the outer scrollbar). */
2833
- track: "relative size-full min-h-0 min-w-0 overflow-hidden rounded-refineui-circle",
2847
+ track: "relative size-full min-h-0 min-w-0 overflow-hidden rounded-refineui-circle bg-refineui-alias-background-surface-selected",
2834
2848
  thumb: (0, import_clsx24.clsx)(
2835
2849
  "absolute rounded-refineui-circle",
2836
2850
  "bg-refineui-alias-border-strong",
2837
2851
  "transition-[background-color] duration-[var(--refineui-motion-duration-fast)]",
2838
2852
  "ease-[var(--refineui-motion-easing-ease-out)]",
2839
2853
  "hover:bg-refineui-alias-foreground-secondary",
2840
- "data-[dragging=true]:bg-refineui-alias-foreground-secondary"
2854
+ "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"
2841
2855
  )
2842
2856
  };
2843
2857
  var scrollAreaScrollbarOrientationClass = {
@@ -2919,6 +2933,8 @@ var ScrollArea = (0, import_react8.forwardRef)(function ScrollArea2({
2919
2933
  const [vertical, setVertical] = (0, import_react8.useState)(EMPTY_METRICS);
2920
2934
  const [horizontal, setHorizontal] = (0, import_react8.useState)(EMPTY_METRICS);
2921
2935
  const [scrolling, setScrolling] = (0, import_react8.useState)(false);
2936
+ const [hovering, setHovering] = (0, import_react8.useState)(false);
2937
+ const [focused, setFocused] = (0, import_react8.useState)(false);
2922
2938
  const [interacting, setInteracting] = (0, import_react8.useState)(false);
2923
2939
  const [axes, setAxes] = (0, import_react8.useState)(NO_AXES);
2924
2940
  const hideTimerRef = (0, import_react8.useRef)(null);
@@ -2986,6 +3002,14 @@ var ScrollArea = (0, import_react8.forwardRef)(function ScrollArea2({
2986
3002
  if (hideTimerRef.current != null) window.clearTimeout(hideTimerRef.current);
2987
3003
  };
2988
3004
  }, [sync, markScrolling, viewportEpoch]);
3005
+ (0, import_react8.useEffect)(() => {
3006
+ if (!hovering) return;
3007
+ const clearHoverAfterAncestorScroll = (event) => {
3008
+ if (event.target !== viewportRef.current) setHovering(false);
3009
+ };
3010
+ window.addEventListener("scroll", clearHoverAfterAncestorScroll, true);
3011
+ return () => window.removeEventListener("scroll", clearHoverAfterAncestorScroll, true);
3012
+ }, [hovering]);
2989
3013
  const ctx = (0, import_react8.useMemo)(
2990
3014
  () => ({
2991
3015
  type,
@@ -2996,6 +3020,10 @@ var ScrollArea = (0, import_react8.forwardRef)(function ScrollArea2({
2996
3020
  vertical,
2997
3021
  horizontal,
2998
3022
  scrolling,
3023
+ hovering,
3024
+ setHovering,
3025
+ focused,
3026
+ setFocused,
2999
3027
  interacting,
3000
3028
  setInteracting
3001
3029
  }),
@@ -3007,6 +3035,8 @@ var ScrollArea = (0, import_react8.forwardRef)(function ScrollArea2({
3007
3035
  vertical,
3008
3036
  horizontal,
3009
3037
  scrolling,
3038
+ hovering,
3039
+ focused,
3010
3040
  interacting
3011
3041
  ]
3012
3042
  );
@@ -3017,6 +3047,7 @@ var ScrollArea = (0, import_react8.forwardRef)(function ScrollArea2({
3017
3047
  "data-refineui": "scroll-area",
3018
3048
  "data-type": type,
3019
3049
  "data-scrolling": scrolling || void 0,
3050
+ "data-hovering": hovering || void 0,
3020
3051
  "data-interacting": interacting || void 0,
3021
3052
  className: (0, import_clsx25.clsx)(scrollAreaStyles.root, className),
3022
3053
  ...props,
@@ -3025,8 +3056,8 @@ var ScrollArea = (0, import_react8.forwardRef)(function ScrollArea2({
3025
3056
  ) });
3026
3057
  });
3027
3058
  var ScrollAreaViewport = (0, import_react8.forwardRef)(
3028
- function ScrollAreaViewport2({ className, children, ...props }, forwardedRef) {
3029
- const { setViewportNode, axes, vertical, horizontal } = useScrollAreaContext("ScrollAreaViewport");
3059
+ function ScrollAreaViewport2({ className, children, onPointerEnter, onPointerLeave, onFocus, onBlur, ...props }, forwardedRef) {
3060
+ const { setViewportNode, axes, vertical, horizontal, setHovering, setFocused } = useScrollAreaContext("ScrollAreaViewport");
3030
3061
  const composedRef = (0, import_react9.useComposedRefs)(setViewportNode, forwardedRef);
3031
3062
  const scrollable = isScrollable(vertical) || isScrollable(horizontal);
3032
3063
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
@@ -3038,6 +3069,23 @@ var ScrollAreaViewport = (0, import_react8.forwardRef)(
3038
3069
  "data-overflow-y": axes.vertical ? "true" : void 0,
3039
3070
  tabIndex: scrollable ? 0 : void 0,
3040
3071
  className: (0, import_clsx25.clsx)(scrollAreaStyles.viewport, className),
3072
+ onPointerEnter: (event) => {
3073
+ onPointerEnter?.(event);
3074
+ setHovering(true);
3075
+ },
3076
+ onPointerLeave: (event) => {
3077
+ onPointerLeave?.(event);
3078
+ setHovering(false);
3079
+ },
3080
+ onFocus: (event) => {
3081
+ onFocus?.(event);
3082
+ setFocused(true);
3083
+ },
3084
+ onBlur: (event) => {
3085
+ onBlur?.(event);
3086
+ const next = event.relatedTarget;
3087
+ if (!next || !event.currentTarget.contains(next)) setFocused(false);
3088
+ },
3041
3089
  ...props,
3042
3090
  children
3043
3091
  }
@@ -3049,6 +3097,8 @@ function ScrollAreaScrollbar({
3049
3097
  className,
3050
3098
  children,
3051
3099
  onPointerDown,
3100
+ onPointerEnter,
3101
+ onPointerLeave,
3052
3102
  ...props
3053
3103
  }) {
3054
3104
  const {
@@ -3058,12 +3108,15 @@ function ScrollAreaScrollbar({
3058
3108
  vertical,
3059
3109
  horizontal,
3060
3110
  scrolling,
3061
- interacting
3111
+ hovering,
3112
+ focused,
3113
+ interacting,
3114
+ setHovering
3062
3115
  } = useScrollAreaContext("ScrollAreaScrollbar");
3063
3116
  const trackRef = (0, import_react8.useRef)(null);
3064
3117
  const metrics = orientation === "vertical" ? vertical : horizontal;
3065
3118
  const visible = isScrollable(metrics);
3066
- const active = scrolling || interacting;
3119
+ const active = type === "hover" ? hovering || focused || scrolling || interacting : type === "scroll" ? focused || scrolling || interacting : false;
3067
3120
  (0, import_react8.useLayoutEffect)(() => {
3068
3121
  setAxisEnabled(orientation, true);
3069
3122
  return () => setAxisEnabled(orientation, false);
@@ -3113,6 +3166,14 @@ function ScrollAreaScrollbar({
3113
3166
  className
3114
3167
  ),
3115
3168
  onPointerDown: onTrackPointerDown,
3169
+ onPointerEnter: (event) => {
3170
+ onPointerEnter?.(event);
3171
+ setHovering(true);
3172
+ },
3173
+ onPointerLeave: (event) => {
3174
+ onPointerLeave?.(event);
3175
+ setHovering(false);
3176
+ },
3116
3177
  ...props,
3117
3178
  children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3118
3179
  "div",
@@ -3261,7 +3322,7 @@ var selectStyles = {
3261
3322
  "border-refineui-hairline border-refineui-alias-border-default",
3262
3323
  "bg-refineui-alias-background-primary px-refineui-size-medium py-refineui-size-x-small",
3263
3324
  "text-refineui-alias-foreground-primary outline-none",
3264
- "transition-[color,background-color,border-color,transform] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
3325
+ "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"
3265
3326
  ),
3266
3327
  /** Ghost plate — same gap/radius as filled, no field border (Button ghost-like). */
3267
3328
  triggerGhost: (0, import_clsx27.clsx)(
@@ -3270,7 +3331,7 @@ var selectStyles = {
3270
3331
  "border-refineui-none border-transparent bg-transparent",
3271
3332
  "px-refineui-size-x-small py-refineui-size-xx-small",
3272
3333
  "text-refineui-alias-foreground-primary outline-none",
3273
- "transition-[color,background-color,transform] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
3334
+ "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"
3274
3335
  ),
3275
3336
  /** Flush shell — consumer / parent owns padding, radius, surface. */
3276
3337
  triggerPlain: (0, import_clsx27.clsx)(
@@ -3288,13 +3349,14 @@ var selectStyles = {
3288
3349
  chevronOpen: "rotate-180",
3289
3350
  /* No overflow-hidden — it isolates descendants and kills panel `backdrop-filter`. */
3290
3351
  positioner: "z-refineui-popup flex flex-col",
3291
- 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",
3352
+ 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",
3292
3353
  contentPopper: "h-auto max-h-[var(--refineui-select-content-available-height,100dvh)]",
3293
- contentItemAligned: "max-h-full",
3354
+ /** The positioner owns alignment height; the frosted surface only covers its content. */
3355
+ contentItemAligned: "h-fit max-h-full self-start",
3294
3356
  viewportPopper: "relative flex max-h-full min-h-0 min-w-full w-full flex-col",
3295
- viewportItemAligned: "relative flex min-h-0 min-w-full w-full max-h-full flex-1 flex-col",
3357
+ viewportItemAligned: "relative flex h-auto min-h-0 min-w-full w-full max-h-full flex-none flex-col",
3296
3358
  scrollAreaRootPopper: "relative flex max-h-full min-h-0 flex-col",
3297
- scrollAreaRootItemAligned: "relative flex h-full min-h-0 flex-1 flex-col",
3359
+ scrollAreaRootItemAligned: "relative flex h-auto min-h-0 max-h-full flex-none flex-col",
3298
3360
  group: "flex flex-col gap-px",
3299
3361
  label: (0, import_clsx27.clsx)(
3300
3362
  componentTextClass(componentTypographyTokens.select.label),
@@ -3303,7 +3365,7 @@ var selectStyles = {
3303
3365
  separator: "my-refineui-size-x-small h-px bg-refineui-alias-border-default",
3304
3366
  item: (0, import_clsx27.clsx)(
3305
3367
  componentTextClass(componentTypographyTokens.select.item),
3306
- "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"
3368
+ "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"
3307
3369
  ),
3308
3370
  itemActive: "bg-refineui-alias-background-primary-hover",
3309
3371
  itemDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
@@ -3436,32 +3498,6 @@ function Select({
3436
3498
  document.addEventListener("mousedown", onOutside);
3437
3499
  return () => document.removeEventListener("mousedown", onOutside);
3438
3500
  }, [open, setOpen]);
3439
- (0, import_react11.useEffect)(() => {
3440
- if (!open) return;
3441
- const releaseBodyLock = (0, import_react12.acquireBodyScrollLock)();
3442
- const ancestors = getScrollableAncestors(triggerRef.current).filter(
3443
- (el) => el !== document.body && el !== document.documentElement
3444
- );
3445
- const prevStyles = ancestors.map((el) => ({
3446
- el,
3447
- overflow: el.style.overflow,
3448
- overflowX: el.style.overflowX,
3449
- overflowY: el.style.overflowY
3450
- }));
3451
- for (const { el } of prevStyles) {
3452
- el.style.overflow = "hidden";
3453
- el.style.overflowX = "hidden";
3454
- el.style.overflowY = "hidden";
3455
- }
3456
- return () => {
3457
- for (const { el, overflow, overflowX, overflowY } of prevStyles) {
3458
- el.style.overflow = overflow;
3459
- el.style.overflowX = overflowX;
3460
- el.style.overflowY = overflowY;
3461
- }
3462
- releaseBodyLock();
3463
- };
3464
- }, [open]);
3465
3501
  const onKeyDown = (0, import_react11.useCallback)(
3466
3502
  (event) => {
3467
3503
  if (disabled) return;
@@ -3649,7 +3685,7 @@ function SelectValue({ placeholder, className, ...props }) {
3649
3685
  className
3650
3686
  ),
3651
3687
  ...props,
3652
- children: label || placeholder || rootPlaceholder || "Select..."
3688
+ children: label || placeholder || rootPlaceholder || value || "Select..."
3653
3689
  }
3654
3690
  );
3655
3691
  }
@@ -4005,7 +4041,7 @@ function SelectItem({
4005
4041
  const [pressed, setPressed] = (0, import_react11.useState)(false);
4006
4042
  const isSelected = value === itemValue;
4007
4043
  const label = (textValue || (typeof children === "string" ? children : String(itemValue))).trim();
4008
- (0, import_react11.useEffect)(() => {
4044
+ useIsomorphicLayoutEffect(() => {
4009
4045
  return registerItem({ value: itemValue, label, disabled, ref });
4010
4046
  }, [registerItem, itemValue, label, disabled]);
4011
4047
  const enabledItems = itemsRef.current.filter((item) => !item.disabled);
@@ -4123,16 +4159,17 @@ var import_clsx29 = require("clsx");
4123
4159
 
4124
4160
  // src/components/Toggle/style.ts
4125
4161
  var toggleStyles = {
4126
- 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)]",
4162
+ 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",
4127
4163
  /** OFF rest — Web Kit track fill off */
4128
- unchecked: "cursor-pointer bg-refineui-alias-background-primary-active",
4164
+ unchecked: "cursor-pointer bg-refineui-alias-background-primary-active hover:bg-refineui-alias-background-surface-selected active:bg-refineui-alias-background-brand-subtle",
4129
4165
  /** ON rest */
4130
- checked: "cursor-pointer bg-refineui-alias-background-brand",
4166
+ checked: "cursor-pointer bg-refineui-alias-background-brand hover:bg-refineui-alias-background-brand-hover active:bg-refineui-alias-background-brand-active",
4131
4167
  /** Disabled OFF — muted empty track */
4132
4168
  disabledUnchecked: "cursor-not-allowed bg-refineui-alias-background-surface-disabled",
4133
4169
  /** Disabled ON — muted brand so on/off stay distinguishable */
4134
4170
  disabledChecked: "cursor-not-allowed bg-refineui-alias-background-brand-subtle",
4135
- 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)]",
4171
+ 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)]",
4172
+ thumbChecked: "translate-x-refineui-switch-thumb rtl:-translate-x-refineui-switch-thumb",
4136
4173
  thumbDefault: "bg-refineui-alias-background-primary",
4137
4174
  /** Disabled OFF thumb — slightly darker than track */
4138
4175
  thumbDisabledUnchecked: "bg-refineui-alias-background-brand-subtle shadow-none",
@@ -4167,7 +4204,7 @@ function Toggle({
4167
4204
  },
4168
4205
  disabled,
4169
4206
  ...props,
4170
- children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: (0, import_clsx29.clsx)(toggleStyles.thumb, thumbClass) })
4207
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: (0, import_clsx29.clsx)(toggleStyles.thumb, checked && toggleStyles.thumbChecked, thumbClass) })
4171
4208
  }
4172
4209
  );
4173
4210
  }
@@ -4178,14 +4215,14 @@ var import_clsx30 = require("clsx");
4178
4215
  // src/recipes/chip.recipe.ts
4179
4216
  var import_tokens9 = require("@refineui/tokens");
4180
4217
  var chipVariantClass = {
4181
- default: "border-none bg-refineui-alias-background-surface-selected text-refineui-alias-foreground-brand",
4182
- outline: "border border-refineui-thin border-refineui-alias-border-default box-border bg-transparent text-refineui-alias-foreground-brand",
4183
- filled: "border-none bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed"
4218
+ 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",
4219
+ 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",
4220
+ 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"
4184
4221
  };
4185
4222
  var chipDisabledVariantClass = {
4186
- default: "border-none bg-refineui-alias-background-surface-disabled text-refineui-alias-foreground-disabled",
4187
- outline: "border border-refineui-thin border-refineui-alias-border-disabled box-border bg-transparent text-refineui-alias-foreground-disabled",
4188
- filled: "border-none bg-refineui-alias-background-surface-disabled text-refineui-alias-foreground-disabled"
4223
+ default: "pointer-events-none cursor-not-allowed border-none bg-refineui-alias-background-surface-disabled text-refineui-alias-foreground-disabled",
4224
+ 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",
4225
+ filled: "pointer-events-none cursor-not-allowed border-none bg-refineui-alias-background-surface-disabled text-refineui-alias-foreground-disabled"
4189
4226
  };
4190
4227
  var chipSizeClass = {
4191
4228
  sm: "min-h-refineui-chip-min-height-sm px-refineui-size-x-small",
@@ -4200,7 +4237,7 @@ var chipSizeIcon = {
4200
4237
  };
4201
4238
  var chipRecipe = defineRecipe({
4202
4239
  name: "chip",
4203
- base: "box-border inline-flex max-w-full items-center gap-refineui-size-xx-small rounded-refineui-medium",
4240
+ 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)]",
4204
4241
  variants: {
4205
4242
  variant: chipVariantClass,
4206
4243
  size: chipSizeClass
@@ -4343,7 +4380,7 @@ var dialogRecipe = defineSlotRecipe({
4343
4380
  slots: ["root", "scrim", "panel", "panelScrollWrap", "header", "headerMain", "title", "description"],
4344
4381
  base: {
4345
4382
  root: "fixed inset-0 z-refineui-messages flex items-center justify-center p-refineui-size-large",
4346
- scrim: "absolute inset-0 cursor-pointer transition-opacity",
4383
+ scrim: "absolute inset-0 cursor-pointer transition-opacity backdrop-blur-[var(--refineui-blur-overlay-scrim)]",
4347
4384
  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",
4348
4385
  panelScrollWrap: "flex min-h-0 min-w-0 flex-1 flex-col",
4349
4386
  header: "flex shrink-0 items-start justify-between gap-refineui-size-x-small",
@@ -4604,7 +4641,7 @@ var import_tokens11 = require("@refineui/tokens");
4604
4641
  var COMMAND_LIST_MAX_HEIGHT = `min(60vh, ${import_tokens11.foundationSizes.foundationSize3200})`;
4605
4642
  var commandStyles = {
4606
4643
  /** Detached layout: the search field and the results panel are separate surfaces, so the root has none. */
4607
- root: "flex w-full flex-col gap-refineui-size-small text-refineui-alias-foreground-primary outline-none",
4644
+ 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)]",
4608
4645
  rootInDialog: "min-h-0 w-full",
4609
4646
  /** Dialog panel stays transparent — the field and results panel float on the scrim themselves. */
4610
4647
  dialogContentPanel: {
@@ -4621,21 +4658,21 @@ var commandStyles = {
4621
4658
  * Radius comes from `--refineui-command-list-radius` (per size, refineui.css) so the scrollbar inset can share it.
4622
4659
  */
4623
4660
  listShell: (0, import_clsx33.clsx)(
4624
- "box-border w-full overflow-hidden",
4661
+ "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",
4625
4662
  "border-refineui-hairline border-refineui-alias-border-default",
4626
4663
  "bg-refineui-alias-background-primary shadow-refineui-2"
4627
4664
  ),
4628
- list: "h-full min-h-0 w-full",
4665
+ 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)]",
4629
4666
  listShellMaxHeight: {
4630
4667
  maxHeight: COMMAND_LIST_MAX_HEIGHT
4631
4668
  },
4632
4669
  listViewport: "outline-none",
4633
4670
  listInner: "relative flex flex-col gap-refineui-size-xxx-small px-refineui-size-medium py-refineui-size-small",
4634
4671
  /** Sliding highlight behind the selected item; geometry is measured, so physical `left`/`top` (inline) are intentional. */
4635
- indicator: "pointer-events-none absolute rounded-refineui-large bg-refineui-alias-background-surface-hover",
4672
+ 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",
4636
4673
  empty: (0, import_clsx33.clsx)(
4637
4674
  componentTextClass(componentTypographyTokens.command.empty),
4638
- "px-refineui-size-medium py-refineui-size-xx-large text-center text-refineui-alias-foreground-tertiary"
4675
+ "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"
4639
4676
  ),
4640
4677
  /** `overflow-clip`, not hidden: a hidden group would become the scroll container the edge effect tracks. */
4641
4678
  group: "flex flex-col gap-refineui-size-xxx-small overflow-clip",
@@ -4647,7 +4684,7 @@ var commandStyles = {
4647
4684
  separatorLine: "h-px w-full shrink-0 bg-refineui-alias-border-default",
4648
4685
  itemBase: (0, import_clsx33.clsx)(
4649
4686
  "relative flex w-full items-center gap-refineui-size-x-small rounded-refineui-large border-none bg-transparent",
4650
- "px-refineui-size-x-small text-start outline-none"
4687
+ "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"
4651
4688
  ),
4652
4689
  itemDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
4653
4690
  itemEnabled: "cursor-pointer text-refineui-alias-foreground-primary",
@@ -5754,7 +5791,7 @@ function AvatarGroup({
5754
5791
  "data-avatar-stack-size": normalizedSize,
5755
5792
  className: (0, import_clsx36.clsx)(
5756
5793
  avatarStyles.groupRoot,
5757
- layout === "stack" ? "gap-0" : avatarSpreadGap[normalizedSize],
5794
+ layout === "stack" ? "gap-0 pe-[var(--avatar-stack-overlap)]" : avatarSpreadGap[normalizedSize],
5758
5795
  className
5759
5796
  ),
5760
5797
  style: {
@@ -5765,9 +5802,9 @@ function AvatarGroup({
5765
5802
  const isCount = (0, import_react17.isValidElement)(child) && child.type === AvatarGroupCount;
5766
5803
  const z = layout === "stack" ? index : void 0;
5767
5804
  if (isCount) {
5768
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: avatarStyles.groupCountWrap, style: { zIndex: z }, children: child }, `count-${index}`);
5805
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: (0, import_clsx36.clsx)(avatarStyles.groupCountWrap, layout === "stack" && index > 0 && "-ms-[var(--avatar-stack-overlap)]"), style: { zIndex: z }, children: child }, `count-${index}`);
5769
5806
  }
5770
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: avatarStyles.groupAvatarWrap, style: { zIndex: z }, children: child }, `avatar-${index}`);
5807
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: (0, import_clsx36.clsx)(avatarStyles.groupAvatarWrap, layout === "stack" && index > 0 && "-ms-[var(--avatar-stack-overlap)]"), style: { zIndex: z }, children: child }, `avatar-${index}`);
5771
5808
  })
5772
5809
  }
5773
5810
  ) });
@@ -5838,14 +5875,23 @@ function Avatars({
5838
5875
  ...style
5839
5876
  },
5840
5877
  children: [
5841
- display.map((a, i) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: avatarsStyles.avatarWrap, style: isStack ? { zIndex: i } : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Avatar, { src: a.src, alt: a.alt, size }) }, i)),
5878
+ display.map((a, i) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
5879
+ "div",
5880
+ {
5881
+ className: (0, import_clsx37.clsx)(avatarsStyles.avatarWrap, isStack && i > 0 && "-ms-[var(--avatar-stack-overlap)]"),
5882
+ style: isStack ? { zIndex: i } : void 0,
5883
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Avatar, { src: a.src, alt: a.alt, size })
5884
+ },
5885
+ i
5886
+ )),
5842
5887
  remainder > 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
5843
5888
  "div",
5844
5889
  {
5845
5890
  className: (0, import_clsx37.clsx)(
5846
5891
  avatarsStyles.overflowCount,
5847
5892
  avatarsCountSizeBySize[normalizedSize],
5848
- avatarsCountTypoBySize[normalizedSize]
5893
+ avatarsCountTypoBySize[normalizedSize],
5894
+ isStack && display.length > 0 && "-ms-[var(--avatar-stack-overlap)]"
5849
5895
  ),
5850
5896
  style: isStack ? { zIndex: display.length } : void 0,
5851
5897
  children: [
@@ -5926,7 +5972,7 @@ var alertRecipe = defineSlotRecipe({
5926
5972
  "close"
5927
5973
  ],
5928
5974
  base: {
5929
- root: "box-border flex items-start border-refineui-thin border-refineui-alias-border-default px-refineui-size-large py-refineui-size-medium",
5975
+ 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",
5930
5976
  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",
5931
5977
  content: "flex min-w-0 flex-1 flex-col gap-refineui-size-medium",
5932
5978
  row: "flex w-full flex-row items-start gap-refineui-size-medium",
@@ -6465,7 +6511,7 @@ var import_clsx44 = require("clsx");
6465
6511
 
6466
6512
  // src/components/Spinner/style.ts
6467
6513
  var spinnerStyles = {
6468
- ringBase: "box-border rounded-refineui-circle border-solid border-refineui-alias-background-brand-subtle border-t-refineui-alias-background-brand",
6514
+ 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)]",
6469
6515
  label: "text-refineui-alias-foreground-primary",
6470
6516
  withLabel: "inline-flex items-center justify-center gap-refineui-size-x-small"
6471
6517
  };
@@ -6542,23 +6588,23 @@ var tabsStyles = {
6542
6588
  list: (0, import_clsx45.clsx)(
6543
6589
  "relative flex w-full min-w-0 flex-nowrap items-stretch overflow-x-auto",
6544
6590
  "after:pointer-events-none after:absolute after:inset-inline-0 after:bottom-0",
6545
- "after:h-(--refineui-stroke-width-thin) after:bg-refineui-alias-border-default"
6591
+ "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"
6546
6592
  ),
6547
6593
  indicator: (0, import_clsx45.clsx)(
6548
6594
  "pointer-events-none absolute bottom-0 start-0 z-[1] block",
6549
6595
  "h-(--refineui-stroke-width-thick) bg-refineui-alias-background-brand",
6550
- "will-change-[transform,width]"
6596
+ "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"
6551
6597
  ),
6552
6598
  trigger: (0, import_clsx45.clsx)(
6553
6599
  componentTextClass(componentTypographyTokens.tabs),
6554
6600
  "relative z-[1] box-border inline-flex min-h-0 min-w-0 shrink-0 items-center justify-center",
6555
6601
  "gap-refineui-size-x-small border-none bg-transparent",
6556
6602
  "px-refineui-size-medium py-refineui-size-x-small outline-none",
6557
- "transition-colors duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
6603
+ "transition-colors duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)] active:transform-none"
6558
6604
  ),
6559
6605
  triggerDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
6560
- triggerEnabled: "cursor-pointer",
6561
- triggerSelectedEnabled: "text-refineui-alias-foreground-primary",
6606
+ triggerEnabled: "cursor-pointer hover:text-refineui-alias-foreground-primary-hover",
6607
+ triggerSelectedEnabled: "text-refineui-alias-foreground-primary hover:text-refineui-alias-foreground-primary",
6562
6608
  triggerSelectedDisabled: "text-refineui-alias-foreground-disabled",
6563
6609
  triggerUnselected: "text-refineui-alias-foreground-tertiary"
6564
6610
  };
@@ -6672,6 +6718,7 @@ function TabsList({ className, children, ...props }) {
6672
6718
  {
6673
6719
  ref: tabListRef,
6674
6720
  "data-refineui": "tabs-list",
6721
+ "data-ready": indicator.ready ? "true" : "false",
6675
6722
  role: "tablist",
6676
6723
  "aria-orientation": "horizontal",
6677
6724
  className: (0, import_clsx46.clsx)(tabsStyles.list, className),
@@ -6821,19 +6868,19 @@ var segmentedControlRecipe = defineSlotRecipe({
6821
6868
  * so at narrow widths `overflow-hidden` would make trailing options
6822
6869
  * unreachable. Scrollbar chrome is suppressed in `refineui.css`.
6823
6870
  */
6824
- "overflow-x-auto overflow-y-hidden rounded-refineui-circle border-refineui-thin border-refineui-alias-border-default",
6825
- "bg-refineui-alias-background-brand-subtle"
6871
+ "overflow-x-auto overflow-y-hidden rounded-refineui-circle border-refineui-thin border-refineui-alias-border-default [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
6872
+ "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"
6826
6873
  ),
6827
6874
  indicator: (0, import_clsx47.clsx)(
6828
- "pointer-events-none absolute inset-y-0 start-0 z-0 block h-full",
6875
+ "pointer-events-none absolute inset-y-0 start-0 z-0 block h-full opacity-0 data-[ready=true]:opacity-100",
6829
6876
  "rounded-refineui-circle bg-refineui-alias-background-brand shadow-refineui-2",
6830
- "will-change-[transform,width]"
6877
+ "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"
6831
6878
  ),
6832
6879
  item: (0, import_clsx47.clsx)(
6833
6880
  componentTextClass(componentTypographyTokens.segmentedControl),
6834
6881
  "relative z-[1] box-border inline-flex min-h-0 min-w-0 shrink-0 items-center justify-center gap-refineui-size-xx-small",
6835
6882
  "rounded-refineui-circle border-none bg-transparent px-refineui-size-medium py-refineui-size-x-small outline-none",
6836
- "transition-colors duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
6883
+ "transition-colors duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)] active:transform-none"
6837
6884
  )
6838
6885
  }
6839
6886
  });
@@ -6842,7 +6889,7 @@ var segmentedControlStyles = {
6842
6889
  indicator: segmentedControlRecipe.base.indicator,
6843
6890
  item: segmentedControlRecipe.base.item,
6844
6891
  itemDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
6845
- itemEnabled: "cursor-pointer",
6892
+ itemEnabled: "cursor-pointer hover:text-refineui-alias-foreground-primary",
6846
6893
  itemSelectedEnabled: "text-refineui-alias-foreground-on-brand",
6847
6894
  itemSelectedDisabled: "text-refineui-alias-foreground-disabled",
6848
6895
  itemUnselected: "text-refineui-alias-foreground-secondary"
@@ -6950,6 +6997,7 @@ function SegmentedControl({
6950
6997
  {
6951
6998
  ref: groupRef,
6952
6999
  "data-refineui": "segmented-control",
7000
+ "data-ready": indicator.ready ? "true" : "false",
6953
7001
  role: "radiogroup",
6954
7002
  "aria-orientation": "horizontal",
6955
7003
  className: (0, import_clsx48.clsx)(segmentedControlStyles.root, className),
@@ -7072,14 +7120,14 @@ var tableStyles = {
7072
7120
  "relative box-border w-full min-w-0",
7073
7121
  "px-refineui-size-small pb-refineui-size-small"
7074
7122
  ),
7075
- table: "w-full caption-bottom border-separate text-start",
7076
- header: "",
7123
+ table: "w-full border-separate border-spacing-y-refineui-size-xx-small caption-bottom text-start",
7124
+ 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",
7077
7125
  body: "",
7078
- footer: "",
7126
+ 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",
7079
7127
  row: (0, import_clsx49.clsx)(
7080
7128
  "transition-[background-color,box-shadow,border-radius]",
7081
7129
  "duration-[var(--refineui-motion-duration-fast)]",
7082
- "ease-[var(--refineui-motion-easing-ease-out)]"
7130
+ "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"
7083
7131
  ),
7084
7132
  head: (0, import_clsx49.clsx)(
7085
7133
  componentTextClass(componentTypographyTokens.table.head),
@@ -7165,7 +7213,7 @@ var accordionRecipe = defineSlotRecipe({
7165
7213
  base: {
7166
7214
  root: "flex flex-col gap-refineui-size-x-small",
7167
7215
  item: "overflow-hidden rounded-refineui-x-large transition-[background-color] duration-[var(--refineui-motion-duration-fast)]",
7168
- 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)]",
7216
+ 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)]",
7169
7217
  triggerRow: "flex min-w-0 flex-1 items-center gap-refineui-size-medium",
7170
7218
  chevron: "shrink-0 transition-transform duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]",
7171
7219
  panel: "min-h-0 overflow-hidden",
@@ -7442,13 +7490,13 @@ var breadcrumbStyles = {
7442
7490
  root: "py-refineui-size-x-small",
7443
7491
  list: "m-0 flex flex-wrap list-none items-center gap-refineui-size-medium p-0",
7444
7492
  item: "inline-flex items-center",
7445
- 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)]",
7493
+ 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)]",
7446
7494
  page: "inline-flex items-center px-refineui-size-medium py-refineui-size-x-small font-medium text-refineui-alias-foreground-primary",
7447
7495
  separator: "inline-flex shrink-0 items-center",
7448
7496
  separatorText: "inline-flex items-center text-refineui-alias-foreground-tertiary select-none",
7449
7497
  ellipsis: `${ellipsisChip} text-refineui-alias-foreground-tertiary`,
7450
7498
  /** Color only — size/layout come from Button `layout="icon" size="sm"`. */
7451
- ellipsisTrigger: "text-refineui-alias-foreground-tertiary"
7499
+ 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)]"
7452
7500
  };
7453
7501
 
7454
7502
  // src/components/Breadcrumb/Breadcrumb.tsx
@@ -7592,7 +7640,7 @@ var footerStyles = {
7592
7640
  "m-0 text-refineui-alias-foreground-tertiary"
7593
7641
  ),
7594
7642
  nav: (0, import_clsx56.clsx)(
7595
- "grid w-full items-start",
7643
+ "grid w-full grid-cols-[repeat(auto-fit,minmax(var(--refineui-size-foundation-size-2000),1fr))] items-start",
7596
7644
  "gap-x-refineui-size-xxx-large gap-y-refineui-size-xx-large"
7597
7645
  ),
7598
7646
  group: "flex min-w-0 flex-col gap-refineui-size-large",
@@ -7604,7 +7652,7 @@ var footerStyles = {
7604
7652
  componentTextClass(componentTypographyTokens.footer.link),
7605
7653
  /** `min-h` carries the WCAG 2.2 Target Size (Minimum) 24px floor — the 20px line box alone is under it. */
7606
7654
  "box-border inline-flex w-fit min-h-refineui-foundation-size-240 cursor-pointer items-center",
7607
- "text-refineui-alias-foreground-tertiary no-underline outline-none",
7655
+ "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",
7608
7656
  "transition-[color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
7609
7657
  ),
7610
7658
  meta: (0, import_clsx56.clsx)(
@@ -7613,11 +7661,15 @@ var footerStyles = {
7613
7661
  "md:grid-cols-[1fr_auto_1fr] md:justify-items-stretch md:gap-refineui-size-x-large"
7614
7662
  ),
7615
7663
  metaEnd: "flex shrink-0 items-center md:col-start-3 md:justify-self-end",
7616
- locale: "flex shrink-0 items-center",
7664
+ locale: (0, import_clsx56.clsx)(
7665
+ "flex shrink-0 items-center",
7666
+ "[&_[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",
7667
+ "[&_[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"
7668
+ ),
7617
7669
  localeLink: (0, import_clsx56.clsx)(
7618
7670
  componentTextClass(componentTypographyTokens.footer.copyright),
7619
7671
  "box-border inline-flex w-fit cursor-pointer items-center",
7620
- "text-refineui-alias-foreground-tertiary no-underline outline-none",
7672
+ "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",
7621
7673
  "transition-[color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
7622
7674
  ),
7623
7675
  /** Select trigger chrome — Button `outline` / `sm` recipe (plain Select). */
@@ -7638,7 +7690,7 @@ var footerStyles = {
7638
7690
  /** Box is the 24px tap target; the glyph inside stays 16px (see `refineui.css`). */
7639
7691
  socialLink: (0, import_clsx56.clsx)(
7640
7692
  "box-border inline-flex size-refineui-foundation-size-240 shrink-0 cursor-pointer items-center justify-center",
7641
- "text-refineui-alias-foreground-tertiary no-underline outline-none",
7693
+ "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",
7642
7694
  "transition-[color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
7643
7695
  )
7644
7696
  };
@@ -7820,7 +7872,7 @@ var calendarStyles = {
7820
7872
  grid7: "[grid-template-columns:repeat(7,var(--refineui-size-calendar-day-size))]",
7821
7873
  dayBase: (0, import_clsx58.clsx)(
7822
7874
  componentTextClass(componentTypographyTokens.calendar.day),
7823
- "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"
7875
+ "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"
7824
7876
  ),
7825
7877
  daySelected: "rounded-refineui-large bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed",
7826
7878
  dayRangeMiddle: "rounded-refineui-none bg-refineui-alias-background-primary-hover text-refineui-alias-foreground-primary",
@@ -8627,7 +8679,7 @@ var drawerStyles = {
8627
8679
  inlineRoot: "relative z-auto flex",
8628
8680
  rootLeft: "justify-start",
8629
8681
  rootRight: "justify-end",
8630
- scrim: "absolute inset-0 cursor-pointer transition-opacity",
8682
+ scrim: "absolute inset-0 cursor-pointer transition-opacity backdrop-blur-[var(--refineui-blur-overlay-scrim)]",
8631
8683
  panel: "relative box-border flex h-full flex-col overflow-hidden bg-refineui-alias-background-primary outline-none",
8632
8684
  panelOverlay: "shadow-refineui-16",
8633
8685
  panelInline: "shadow-none",
@@ -8973,13 +9025,16 @@ var import_color8 = require("@refineui/utilities/color");
8973
9025
 
8974
9026
  // src/components/Dropdown/style.ts
8975
9027
  var import_clsx69 = require("clsx");
8976
- 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";
9028
+ 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";
8977
9029
  var dropdownStyles = {
8978
9030
  menuShell: (0, import_clsx69.clsx)(
8979
9031
  dropdownPanelChrome,
8980
9032
  "max-w-[min(100vw-16px,calc(100vw-2rem))]"
8981
9033
  ),
8982
- submenuShell: dropdownPanelChrome,
9034
+ submenuShell: (0, import_clsx69.clsx)(
9035
+ dropdownPanelChrome,
9036
+ "data-[state=open]:[animation:refineui-fade-enter_var(--refineui-motion-duration-fast)_var(--refineui-motion-easing-standard)] motion-reduce:animation-none"
9037
+ ),
8983
9038
  menuViewport: "box-border flex flex-col gap-px p-refineui-size-xx-small",
8984
9039
  label: (0, import_clsx69.clsx)(
8985
9040
  componentTextClass(componentTypographyTokens.dropdown.label),
@@ -8987,7 +9042,7 @@ var dropdownStyles = {
8987
9042
  ),
8988
9043
  item: (0, import_clsx69.clsx)(
8989
9044
  componentTextClass(componentTypographyTokens.dropdown.item),
8990
- "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"
9045
+ "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"
8991
9046
  ),
8992
9047
  shortcut: (0, import_clsx69.clsx)(
8993
9048
  componentTextClass(componentTypographyTokens.dropdown.shortcut),
@@ -9806,10 +9861,10 @@ var import_tokens20 = require("@refineui/tokens");
9806
9861
 
9807
9862
  // src/components/Link/style.ts
9808
9863
  var linkStyles = {
9809
- base: componentTextClass(componentTypographyTokens.link),
9864
+ 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)]`,
9810
9865
  withIcon: "inline-flex items-center gap-refineui-size-xx-small",
9811
9866
  inline: "inline",
9812
- disabled: "cursor-not-allowed"
9867
+ disabled: "pointer-events-none cursor-not-allowed !text-refineui-alias-foreground-disabled !no-underline"
9813
9868
  };
9814
9869
 
9815
9870
  // src/components/Link/Link.tsx
@@ -9856,18 +9911,18 @@ var import_react37 = require("@refineui/utilities/react");
9856
9911
 
9857
9912
  // src/components/Menu/style.ts
9858
9913
  var import_clsx75 = require("clsx");
9859
- 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";
9914
+ 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";
9860
9915
  var menuStyles = {
9861
9916
  /** Panel chrome — Web Kit Menu `633:4268` (fill/blur: `surfaceFrosted` + `surfaceFrost`) */
9862
9917
  panel: (0, import_clsx75.clsx)(menuPanelChrome, "w-refineui-menu-panel-width"),
9863
9918
  root: "relative inline-flex items-center leading-none",
9864
9919
  triggerFallback: "cursor-pointer border-none bg-transparent p-0 font-inherit text-inherit",
9865
9920
  /** Portal shell — position/z-index from `MenuPopover` fixed style */
9866
- popover: "z-refineui-messages",
9921
+ 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",
9867
9922
  list: (0, import_clsx75.clsx)(menuPanelChrome, "w-full min-w-refineui-menu-panel-width outline-none"),
9868
9923
  subPanel: (0, import_clsx75.clsx)(
9869
9924
  menuPanelChrome,
9870
- "w-refineui-menu-panel-width min-w-refineui-menu-panel-width outline-none"
9925
+ "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"
9871
9926
  ),
9872
9927
  /** Vertical density matches Sidebar `groupLabel` (`py-xxx-small`). */
9873
9928
  section: "flex w-full items-center overflow-hidden px-refineui-size-x-small py-refineui-size-xxx-small",
@@ -9877,7 +9932,7 @@ var menuStyles = {
9877
9932
  ),
9878
9933
  dividerWrap: "flex w-full items-center px-refineui-size-x-small py-refineui-size-xxx-small",
9879
9934
  dividerLine: "h-px w-full shrink-0 bg-refineui-alias-border-default",
9880
- itemBase: "block w-full rounded-refineui-large border-none bg-transparent p-refineui-size-x-small text-start outline-none",
9935
+ 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",
9881
9936
  itemDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
9882
9937
  itemEnabled: "cursor-pointer text-refineui-alias-foreground-primary",
9883
9938
  row: "flex items-center gap-refineui-size-x-small",
@@ -10469,7 +10524,7 @@ var topLevelItem = (0, import_clsx77.clsx)(
10469
10524
  componentTextClass(componentTypographyTokens.navigationMenu.trigger),
10470
10525
  "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",
10471
10526
  "rounded-refineui-x-large border-none bg-transparent px-refineui-size-medium py-refineui-size-x-small",
10472
- "text-refineui-alias-foreground-tertiary outline-none leading-none",
10527
+ "text-refineui-alias-foreground-primary outline-none leading-none",
10473
10528
  "transition-[color,background-color,box-shadow] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
10474
10529
  );
10475
10530
  var chevron = (0, import_clsx77.clsx)(
@@ -10479,22 +10534,52 @@ var navigationMenuStyles = {
10479
10534
  root: "relative isolate z-refineui-messages flex w-full max-w-max items-center",
10480
10535
  list: "relative m-0 flex list-none flex-wrap items-center gap-refineui-size-xxx-small p-0",
10481
10536
  item: "relative inline-flex items-center",
10482
- trigger: (0, import_clsx77.clsx)(topLevelItem, "m-0 appearance-none font-inherit"),
10537
+ trigger: (0, import_clsx77.clsx)(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)]"),
10483
10538
  triggerOpen: "bg-refineui-alias-background-primary-hover text-refineui-alias-foreground-primary",
10484
10539
  triggerDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
10485
10540
  chevron,
10486
10541
  chevronOpen: "rotate-180",
10487
10542
  content: (0, import_clsx77.clsx)(
10488
- /** Flush under trigger so pointer does not leave the item while moving into the panel. */
10489
- "absolute start-0 top-full z-refineui-messages pt-refineui-size-xx-small",
10490
- "box-border min-w-refineui-navigation-menu-panel-width",
10491
- "outline-none"
10543
+ "box-border outline-none",
10544
+ "transition-opacity duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
10545
+ ),
10546
+ /** Default compact panel, anchored to the triggering navigation item. */
10547
+ contentDropdown: "min-w-refineui-dropdown-menu-width",
10548
+ /**
10549
+ * Wide, viewport-aware panel. Width and inner composition stay with the
10550
+ * consuming navigation so this remains a content-agnostic primitive.
10551
+ */
10552
+ contentFloating: (0, import_clsx77.clsx)(
10553
+ "max-w-full origin-top will-change-[opacity,translate]",
10554
+ "transition-[opacity,translate] duration-[var(--refineui-motion-duration-normal)] ease-[var(--refineui-motion-easing-emphasized)]"
10555
+ ),
10556
+ /** Header-connected, full-width product navigation surface. */
10557
+ contentOverlay: (0, import_clsx77.clsx)(
10558
+ "fixed inset-x-0 bottom-0 origin-top"
10559
+ ),
10560
+ /** Optional boundary for demos and embedded navigation experiences. */
10561
+ contentContained: "absolute",
10562
+ contentOverlayContained: "absolute inset-x-0 bottom-0",
10563
+ overlayBackdrop: (0, import_clsx77.clsx)(
10564
+ "absolute inset-0 bg-refineui-alias-surface-overlay",
10565
+ "transition-[opacity,backdrop-filter] duration-[var(--refineui-motion-duration-panel)] ease-[var(--refineui-motion-easing-panel)]"
10492
10566
  ),
10493
- contentPanel: (0, import_clsx77.clsx)(
10494
- "box-border flex flex-col gap-px overflow-hidden rounded-refineui-xx-large border-refineui-hairline border-refineui-alias-border-default",
10495
- "p-refineui-size-xx-small shadow-refineui-2"
10567
+ overlayBackdropEnter: "[animation:refineui-navigation-overlay-backdrop-enter_var(--refineui-motion-duration-panel)_var(--refineui-motion-easing-panel)_both] motion-reduce:animation-none",
10568
+ overlayBackdropExit: "[animation:refineui-navigation-overlay-backdrop-exit_var(--refineui-motion-duration-panel)_var(--refineui-motion-easing-panel)_both] motion-reduce:animation-none",
10569
+ 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",
10570
+ /** Compact dropdowns retain the Menu's translucent frosted material. */
10571
+ contentPanelDropdown: "bg-refineui-alias-surface-frosted backdrop-blur-refineui-surface-frost",
10572
+ /** Wide panels prioritize readable product navigation over glass transparency. */
10573
+ contentPanelFloating: (0, import_clsx77.clsx)(
10574
+ "bg-refineui-alias-background-primary backdrop-blur-refineui-surface-frost"
10496
10575
  ),
10497
- link: (0, import_clsx77.clsx)(topLevelItem, "no-underline"),
10576
+ contentPanelOverlay: (0, import_clsx77.clsx)(
10577
+ "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",
10578
+ "transition-[height,opacity] duration-[var(--refineui-motion-duration-panel)] ease-[var(--refineui-motion-easing-panel)]",
10579
+ "data-[state=open]:[animation:refineui-navigation-overlay-enter_var(--refineui-motion-duration-panel)_var(--refineui-motion-easing-panel)_both] motion-reduce:animation-none"
10580
+ ),
10581
+ contentPanelOverlayExit: "[animation:refineui-navigation-overlay-exit_var(--refineui-motion-duration-panel)_var(--refineui-motion-easing-panel)_both] motion-reduce:animation-none",
10582
+ link: (0, import_clsx77.clsx)(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"),
10498
10583
  linkActive: "bg-refineui-alias-background-primary-hover text-refineui-alias-foreground-primary",
10499
10584
  linkDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
10500
10585
  /** Dense row inside a content panel — same density as Menu item. */
@@ -10503,7 +10588,7 @@ var navigationMenuStyles = {
10503
10588
  "box-border flex w-full cursor-pointer items-center gap-refineui-size-x-small",
10504
10589
  "rounded-refineui-large border-none bg-transparent p-refineui-size-x-small text-start no-underline outline-none",
10505
10590
  "text-refineui-alias-foreground-primary",
10506
- "transition-[background-color,color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
10591
+ "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"
10507
10592
  ),
10508
10593
  /** Optional — prefer omitting; kept for API compatibility. */
10509
10594
  indicator: "hidden"
@@ -10553,12 +10638,17 @@ function NavigationMenu({
10553
10638
  ...props
10554
10639
  }) {
10555
10640
  const [value, setValue] = useControllableOpen(valueControlled, defaultValue, onValueChange);
10641
+ const idPrefix = `refineui-nav-menu-${(0, import_react38.useId)().replaceAll(":", "")}`;
10556
10642
  const listRef = (0, import_react38.useRef)(null);
10557
10643
  const triggerMapRef = (0, import_react38.useRef)(/* @__PURE__ */ new Map());
10558
10644
  const contentMapRef = (0, import_react38.useRef)(/* @__PURE__ */ new Map());
10559
10645
  const openTimerRef = (0, import_react38.useRef)(null);
10560
10646
  const closeTimerRef = (0, import_react38.useRef)(null);
10647
+ const switchTimerRef = (0, import_react38.useRef)(null);
10561
10648
  const rootRef = (0, import_react38.useRef)(null);
10649
+ const [isSwitching, setIsSwitching] = (0, import_react38.useState)(false);
10650
+ const overlayContentRef = (0, import_react38.useRef)(/* @__PURE__ */ new Map());
10651
+ const [overlayVersion, setOverlayVersion] = (0, import_react38.useState)(0);
10562
10652
  const delayDuration = delayDurationProp ?? (0, import_animation5.motionMsToNumber)(import_tokens22.semanticInteraction.duration.normal);
10563
10653
  const skipDelayDuration = skipDelayDurationProp ?? (0, import_animation5.motionMsToNumber)(import_tokens22.semanticInteraction.duration.fast);
10564
10654
  const clearTimers = (0, import_react38.useCallback)(() => {
@@ -10574,24 +10664,36 @@ function NavigationMenu({
10574
10664
  const setValueSafe = (0, import_react38.useCallback)(
10575
10665
  (next) => {
10576
10666
  clearTimers();
10667
+ if (switchTimerRef.current != null) {
10668
+ window.clearTimeout(switchTimerRef.current);
10669
+ switchTimerRef.current = null;
10670
+ }
10671
+ const switching = Boolean(value && next && value !== next);
10672
+ setIsSwitching(switching);
10673
+ if (switching) {
10674
+ switchTimerRef.current = window.setTimeout(() => {
10675
+ setIsSwitching(false);
10676
+ switchTimerRef.current = null;
10677
+ }, (0, import_animation5.motionMsToNumber)(import_tokens22.semanticInteraction.duration.normal));
10678
+ }
10577
10679
  setValue(next);
10578
10680
  },
10579
- [clearTimers, setValue]
10681
+ [clearTimers, setValue, value]
10580
10682
  );
10581
10683
  const openItem = (0, import_react38.useCallback)(
10582
10684
  (itemValue, options) => {
10583
10685
  clearTimers();
10584
10686
  const delay = options?.immediate || value !== "" ? skipDelayDuration : delayDuration;
10585
10687
  if (delay <= 0 || options?.immediate) {
10586
- setValue(itemValue);
10688
+ setValueSafe(itemValue);
10587
10689
  return;
10588
10690
  }
10589
10691
  openTimerRef.current = window.setTimeout(() => {
10590
- setValue(itemValue);
10692
+ setValueSafe(itemValue);
10591
10693
  openTimerRef.current = null;
10592
10694
  }, delay);
10593
10695
  },
10594
- [clearTimers, delayDuration, setValue, skipDelayDuration, value]
10696
+ [clearTimers, delayDuration, setValueSafe, skipDelayDuration, value]
10595
10697
  );
10596
10698
  const close = (0, import_react38.useCallback)(
10597
10699
  (options) => {
@@ -10621,6 +10723,36 @@ function NavigationMenu({
10621
10723
  contentMapRef.current.delete(itemValue);
10622
10724
  }
10623
10725
  }, []);
10726
+ const registerOverlayContent = (0, import_react38.useCallback)((itemValue, content) => {
10727
+ overlayContentRef.current.set(itemValue, content);
10728
+ setOverlayVersion((version) => version + 1);
10729
+ }, []);
10730
+ const unregisterOverlayContent = (0, import_react38.useCallback)((itemValue) => {
10731
+ if (!overlayContentRef.current.delete(itemValue)) return;
10732
+ setOverlayVersion((version) => version + 1);
10733
+ }, []);
10734
+ const getOverlayContent = (0, import_react38.useCallback)(
10735
+ (itemValue) => overlayContentRef.current.get(itemValue),
10736
+ []
10737
+ );
10738
+ const focusFirstContent = (0, import_react38.useCallback)((itemValue) => {
10739
+ const focus = () => {
10740
+ const content = contentMapRef.current.get(itemValue);
10741
+ const firstFocusable = content?.querySelector(
10742
+ 'a[href]:not([aria-disabled="true"]), button:not(:disabled), [tabindex]:not([tabindex="-1"])'
10743
+ );
10744
+ if (firstFocusable) {
10745
+ firstFocusable.focus();
10746
+ return;
10747
+ }
10748
+ requestAnimationFrame(() => {
10749
+ contentMapRef.current.get(itemValue)?.querySelector(
10750
+ 'a[href]:not([aria-disabled="true"]), button:not(:disabled), [tabindex]:not([tabindex="-1"])'
10751
+ )?.focus();
10752
+ });
10753
+ };
10754
+ requestAnimationFrame(focus);
10755
+ }, []);
10624
10756
  const isContentTarget = (0, import_react38.useCallback)((itemValue, target) => {
10625
10757
  return target instanceof Node && contentMapRef.current.get(itemValue)?.contains(target) === true;
10626
10758
  }, []);
@@ -10628,7 +10760,10 @@ function NavigationMenu({
10628
10760
  if (!(target instanceof Node)) return false;
10629
10761
  return rootRef.current?.contains(target) === true || Array.from(contentMapRef.current.values()).some((content) => content.contains(target));
10630
10762
  }, []);
10631
- (0, import_react38.useEffect)(() => () => clearTimers(), [clearTimers]);
10763
+ (0, import_react38.useEffect)(() => () => {
10764
+ clearTimers();
10765
+ if (switchTimerRef.current != null) window.clearTimeout(switchTimerRef.current);
10766
+ }, [clearTimers]);
10632
10767
  (0, import_react38.useEffect)(() => {
10633
10768
  if (!value) return;
10634
10769
  const onPointerDown = (event) => {
@@ -10657,19 +10792,31 @@ function NavigationMenu({
10657
10792
  close,
10658
10793
  delayDuration,
10659
10794
  skipDelayDuration,
10795
+ idPrefix,
10660
10796
  listRef,
10661
10797
  registerTrigger,
10662
10798
  registerContent,
10799
+ focusFirstContent,
10663
10800
  isContentTarget,
10664
10801
  isMenuTarget,
10665
- isInsideContent: false
10802
+ isInsideContent: false,
10803
+ isSwitching,
10804
+ registerOverlayContent,
10805
+ unregisterOverlayContent,
10806
+ getOverlayContent
10666
10807
  }),
10667
10808
  [
10668
10809
  close,
10669
10810
  delayDuration,
10670
10811
  isContentTarget,
10671
10812
  isMenuTarget,
10813
+ isSwitching,
10814
+ registerOverlayContent,
10815
+ unregisterOverlayContent,
10816
+ getOverlayContent,
10817
+ idPrefix,
10672
10818
  openItem,
10819
+ focusFirstContent,
10673
10820
  registerContent,
10674
10821
  registerTrigger,
10675
10822
  setValueSafe,
@@ -10677,7 +10824,7 @@ function NavigationMenu({
10677
10824
  value
10678
10825
  ]
10679
10826
  );
10680
- return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(NavigationMenuContext.Provider, { value: ctx, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
10827
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(NavigationMenuContext.Provider, { value: ctx, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(
10681
10828
  "nav",
10682
10829
  {
10683
10830
  ref: rootRef,
@@ -10685,7 +10832,10 @@ function NavigationMenu({
10685
10832
  "aria-label": ariaLabel,
10686
10833
  className: (0, import_clsx78.clsx)(navigationMenuStyles.root, className),
10687
10834
  ...props,
10688
- children
10835
+ children: [
10836
+ children,
10837
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(NavigationMenuOverlayViewport, { version: overlayVersion })
10838
+ ]
10689
10839
  }
10690
10840
  ) });
10691
10841
  }
@@ -10737,8 +10887,8 @@ function NavigationMenuItem({
10737
10887
  const reactId = (0, import_react38.useId)();
10738
10888
  const value = valueProp ?? reactId;
10739
10889
  const open = menu.value === value;
10740
- const triggerId = `refineui-nav-menu-trigger-${value}`;
10741
- const contentId = `refineui-nav-menu-content-${value}`;
10890
+ const triggerId = `${menu.idPrefix}-trigger-${value}`;
10891
+ const contentId = `${menu.idPrefix}-content-${value}`;
10742
10892
  const itemCtx = (0, import_react38.useMemo)(
10743
10893
  () => ({ value, open, triggerId, contentId }),
10744
10894
  [contentId, open, triggerId, value]
@@ -10825,9 +10975,10 @@ function NavigationMenuTrigger({
10825
10975
  } else {
10826
10976
  menu.openItem(item.value, { immediate: true });
10827
10977
  }
10828
- } else if (event.key === "ArrowDown" && !item.open) {
10978
+ } else if (event.key === "ArrowDown") {
10829
10979
  event.preventDefault();
10830
10980
  menu.openItem(item.value, { immediate: true });
10981
+ menu.focusFirstContent(item.value);
10831
10982
  }
10832
10983
  },
10833
10984
  ...props,
@@ -10849,9 +11000,44 @@ function NavigationMenuTrigger({
10849
11000
  }
10850
11001
  );
10851
11002
  }
10852
- function NavigationMenuContent({
11003
+ function NavigationMenuContent(props) {
11004
+ return props.layout === "overlay" ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(NavigationMenuOverlayContent, { ...props }) : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(NavigationMenuContentPanel, { ...props });
11005
+ }
11006
+ function NavigationMenuOverlayContent({
11007
+ children,
11008
+ className,
11009
+ portalContainer,
11010
+ onKeyDown,
11011
+ style
11012
+ }) {
11013
+ const menu = useNavigationMenu("NavigationMenuContent");
11014
+ const item = useNavigationMenuItem("NavigationMenuContent");
11015
+ const { registerOverlayContent, unregisterOverlayContent } = menu;
11016
+ const registrationRef = (0, import_react38.useRef)({
11017
+ children,
11018
+ className,
11019
+ portalContainer,
11020
+ onKeyDown,
11021
+ style
11022
+ });
11023
+ registrationRef.current = {
11024
+ children,
11025
+ className,
11026
+ portalContainer,
11027
+ onKeyDown,
11028
+ style
11029
+ };
11030
+ (0, import_react38.useEffect)(() => {
11031
+ registerOverlayContent(item.value, registrationRef.current);
11032
+ return () => unregisterOverlayContent(item.value);
11033
+ }, [item.value, registerOverlayContent, unregisterOverlayContent]);
11034
+ return null;
11035
+ }
11036
+ function NavigationMenuContentPanel({
10853
11037
  children,
10854
11038
  className,
11039
+ layout = "dropdown",
11040
+ portalContainer,
10855
11041
  onKeyDown,
10856
11042
  style,
10857
11043
  ...props
@@ -10880,9 +11066,11 @@ function NavigationMenuContent({
10880
11066
  const timeout = window.setTimeout(() => {
10881
11067
  setShouldRender(false);
10882
11068
  setIsClosing(false);
10883
- }, (0, import_animation5.motionMsToNumber)(import_tokens22.semanticInteraction.duration.fast));
11069
+ }, (0, import_animation5.motionMsToNumber)(
11070
+ layout === "overlay" ? import_tokens22.semanticInteraction.duration.normal : import_tokens22.semanticInteraction.duration.fast
11071
+ ));
10884
11072
  return () => window.clearTimeout(timeout);
10885
- }, [item.open, shouldRender]);
11073
+ }, [item.open, layout, menu.isSwitching]);
10886
11074
  useIsomorphicLayoutEffect5(() => {
10887
11075
  if (!shouldRender || !item.open || typeof document === "undefined") return;
10888
11076
  const trigger = document.getElementById(item.triggerId);
@@ -10892,14 +11080,21 @@ function NavigationMenuContent({
10892
11080
  if (!content2) return;
10893
11081
  const triggerRect = trigger.getBoundingClientRect();
10894
11082
  const contentWidth = content2.offsetWidth;
11083
+ const portalRect = portalContainer?.getBoundingClientRect();
11084
+ const boundaryWidth = portalRect?.width ?? window.innerWidth;
10895
11085
  const edge = Number.parseFloat(import_tokens22.spacings.sizeMedium) || 8;
10896
- const left = Math.max(
10897
- edge,
10898
- Math.min(triggerRect.left, window.innerWidth - contentWidth - edge)
10899
- );
11086
+ const floatingOffset = Number.parseFloat(import_tokens22.spacings.sizeXXSmall) || 4;
11087
+ 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));
11088
+ if (layout === "overlay") {
11089
+ setPositionStyle({
11090
+ top: portalRect ? triggerRect.bottom - portalRect.top : triggerRect.bottom,
11091
+ zIndex: Number.parseInt(String(import_tokens22.zIndex.zIndexMessages), 10) || 1e4
11092
+ });
11093
+ return;
11094
+ }
10900
11095
  setPositionStyle({
10901
- position: "fixed",
10902
- top: triggerRect.bottom,
11096
+ position: portalRect ? "absolute" : "fixed",
11097
+ top: triggerRect.bottom + (layout === "floating" ? floatingOffset : 0) - (portalRect?.top ?? 0),
10903
11098
  left,
10904
11099
  zIndex: Number.parseInt(String(import_tokens22.zIndex.zIndexMessages), 10) || 1e4
10905
11100
  });
@@ -10913,13 +11108,13 @@ function NavigationMenuContent({
10913
11108
  window.removeEventListener("resize", updatePosition);
10914
11109
  unsubscribe();
10915
11110
  };
10916
- }, [item.open, item.triggerId, shouldRender]);
11111
+ }, [item.open, item.triggerId, layout, portalContainer, shouldRender]);
10917
11112
  const contentCtx = (0, import_react38.useMemo)(
10918
11113
  () => ({ ...menu, isInsideContent: true }),
10919
11114
  [menu]
10920
11115
  );
10921
11116
  if (!shouldRender) return null;
10922
- const content = /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(NavigationMenuContext.Provider, { value: contentCtx, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
11117
+ const content = /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(NavigationMenuContext.Provider, { value: contentCtx, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(
10923
11118
  "div",
10924
11119
  {
10925
11120
  ref: setContentRef,
@@ -10927,8 +11122,15 @@ function NavigationMenuContent({
10927
11122
  role: "region",
10928
11123
  "aria-labelledby": item.triggerId,
10929
11124
  "data-refineui": "navigation-menu-content",
11125
+ "data-layout": layout,
10930
11126
  "data-state": isClosing || !item.open ? "closed" : "open",
10931
- className: (0, import_clsx78.clsx)(navigationMenuStyles.content, className),
11127
+ className: (0, import_clsx78.clsx)(
11128
+ navigationMenuStyles.content,
11129
+ layout === "overlay" ? portalContainer ? navigationMenuStyles.contentOverlayContained : navigationMenuStyles.contentOverlay : layout === "floating" ? navigationMenuStyles.contentFloating : navigationMenuStyles.contentDropdown,
11130
+ layout !== "overlay" && portalContainer && navigationMenuStyles.contentContained,
11131
+ 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",
11132
+ className
11133
+ ),
10932
11134
  style: { ...positionStyle, ...style },
10933
11135
  onPointerEnter: () => menu.openItem(item.value, { immediate: true }),
10934
11136
  onPointerLeave: (event) => {
@@ -10941,13 +11143,226 @@ function NavigationMenuContent({
10941
11143
  if (event.key === "Escape") {
10942
11144
  event.preventDefault();
10943
11145
  menu.setValue("");
11146
+ document.getElementById(item.triggerId)?.focus();
10944
11147
  }
10945
11148
  },
10946
11149
  ...props,
10947
- children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { "data-refineui": "navigation-menu-content-panel", className: navigationMenuStyles.contentPanel, children })
11150
+ children: [
11151
+ layout === "overlay" ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
11152
+ "div",
11153
+ {
11154
+ "aria-hidden": true,
11155
+ "data-state": isClosing || !item.open ? "closed" : "open",
11156
+ className: (0, import_clsx78.clsx)(
11157
+ navigationMenuStyles.overlayBackdrop,
11158
+ isClosing || !item.open ? "backdrop-blur-none opacity-0" : "backdrop-blur-[var(--refineui-blur-overlay-scrim)] opacity-100",
11159
+ !menu.isSwitching && item.open ? navigationMenuStyles.overlayBackdropEnter : void 0,
11160
+ isClosing && !menu.isSwitching ? navigationMenuStyles.overlayBackdropExit : void 0
11161
+ ),
11162
+ onPointerDown: (event) => {
11163
+ event.preventDefault();
11164
+ menu.setValue("");
11165
+ },
11166
+ onPointerEnter: () => menu.close()
11167
+ }
11168
+ ) : null,
11169
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
11170
+ "div",
11171
+ {
11172
+ "data-refineui": "navigation-menu-content-panel",
11173
+ "data-layout": layout,
11174
+ "data-state": isClosing || !item.open ? "closed" : "open",
11175
+ className: (0, import_clsx78.clsx)(
11176
+ layout === "overlay" ? navigationMenuStyles.contentPanelOverlay : navigationMenuStyles.contentPanel,
11177
+ layout === "overlay" ? void 0 : layout === "floating" ? navigationMenuStyles.contentPanelFloating : navigationMenuStyles.contentPanelDropdown,
11178
+ layout === "overlay" && (isClosing || !item.open) ? "translate-y-refineui-size-xxx-small opacity-0" : void 0,
11179
+ layout === "overlay" && isClosing && !menu.isSwitching ? navigationMenuStyles.contentPanelOverlayExit : void 0
11180
+ ),
11181
+ children
11182
+ }
11183
+ )
11184
+ ]
10948
11185
  }
10949
11186
  ) });
10950
- return typeof document === "undefined" ? content : (0, import_react_dom6.createPortal)(content, document.body);
11187
+ return typeof document === "undefined" ? content : (0, import_react_dom6.createPortal)(content, portalContainer ?? document.body);
11188
+ }
11189
+ function NavigationMenuOverlayViewport({ version: _version }) {
11190
+ const menu = useNavigationMenu("NavigationMenuContent");
11191
+ const [presentValue, setPresentValue] = (0, import_react38.useState)(menu.value);
11192
+ const [isClosing, setIsClosing] = (0, import_react38.useState)(false);
11193
+ const [positionStyle, setPositionStyle] = (0, import_react38.useState)(null);
11194
+ const [panelHeight, setPanelHeight] = (0, import_react38.useState)(null);
11195
+ const rootRef = (0, import_react38.useRef)(null);
11196
+ const innerRef = (0, import_react38.useRef)(null);
11197
+ const heightRef = (0, import_react38.useRef)(null);
11198
+ const heightTimerRef = (0, import_react38.useRef)(null);
11199
+ const isClosingRef = (0, import_react38.useRef)(false);
11200
+ const registration = presentValue ? menu.getOverlayContent(presentValue) : void 0;
11201
+ useIsomorphicLayoutEffect5(() => {
11202
+ if (menu.value) {
11203
+ isClosingRef.current = false;
11204
+ setPresentValue(menu.value);
11205
+ setIsClosing(false);
11206
+ return;
11207
+ }
11208
+ if (!presentValue) return;
11209
+ isClosingRef.current = true;
11210
+ setIsClosing(true);
11211
+ if (heightTimerRef.current != null) {
11212
+ window.clearTimeout(heightTimerRef.current);
11213
+ heightTimerRef.current = null;
11214
+ }
11215
+ const currentHeight = innerRef.current?.scrollHeight ?? heightRef.current;
11216
+ let frame;
11217
+ let settleFrame;
11218
+ if (currentHeight != null) {
11219
+ setPanelHeight(currentHeight);
11220
+ frame = requestAnimationFrame(() => {
11221
+ settleFrame = requestAnimationFrame(() => setPanelHeight(0));
11222
+ });
11223
+ }
11224
+ const timeout = window.setTimeout(() => {
11225
+ setPresentValue("");
11226
+ setIsClosing(false);
11227
+ setPanelHeight(null);
11228
+ heightRef.current = null;
11229
+ isClosingRef.current = false;
11230
+ }, (0, import_animation5.motionMsToNumber)(import_tokens22.semanticInteraction.duration.panel));
11231
+ return () => {
11232
+ if (frame != null) cancelAnimationFrame(frame);
11233
+ if (settleFrame != null) cancelAnimationFrame(settleFrame);
11234
+ window.clearTimeout(timeout);
11235
+ };
11236
+ }, [menu.value, presentValue]);
11237
+ useIsomorphicLayoutEffect5(() => {
11238
+ if (!presentValue || !registration || typeof document === "undefined") return;
11239
+ const trigger = document.getElementById(`${menu.idPrefix}-trigger-${CSS.escape(presentValue)}`);
11240
+ if (!trigger) return;
11241
+ const updatePosition = () => {
11242
+ const triggerRect = trigger.getBoundingClientRect();
11243
+ const portalRect = registration.portalContainer?.getBoundingClientRect();
11244
+ const headerBottom = trigger.closest("header")?.getBoundingClientRect().bottom;
11245
+ const overlayTop = headerBottom ?? triggerRect.bottom;
11246
+ setPositionStyle({
11247
+ top: portalRect ? overlayTop - portalRect.top : overlayTop,
11248
+ zIndex: Number.parseInt(String(import_tokens22.zIndex.zIndexMessages), 10) || 1e4
11249
+ });
11250
+ };
11251
+ updatePosition();
11252
+ window.addEventListener("resize", updatePosition);
11253
+ const unsubscribe = subscribeScrollAndScrollableAncestors2(trigger, updatePosition);
11254
+ return () => {
11255
+ window.removeEventListener("resize", updatePosition);
11256
+ unsubscribe();
11257
+ };
11258
+ }, [presentValue, registration]);
11259
+ useIsomorphicLayoutEffect5(() => {
11260
+ if (!presentValue || !innerRef.current) return;
11261
+ const nextHeight = innerRef.current.scrollHeight;
11262
+ const previousHeight = heightRef.current;
11263
+ heightRef.current = nextHeight;
11264
+ if (previousHeight === nextHeight) {
11265
+ setPanelHeight(null);
11266
+ return;
11267
+ }
11268
+ if (heightTimerRef.current != null) window.clearTimeout(heightTimerRef.current);
11269
+ setPanelHeight(previousHeight ?? 0);
11270
+ let settleFrame;
11271
+ const frame = requestAnimationFrame(() => {
11272
+ settleFrame = requestAnimationFrame(() => setPanelHeight(nextHeight));
11273
+ });
11274
+ heightTimerRef.current = window.setTimeout(
11275
+ () => {
11276
+ if (!isClosingRef.current) setPanelHeight(null);
11277
+ },
11278
+ (0, import_animation5.motionMsToNumber)(import_tokens22.semanticInteraction.duration.panel)
11279
+ );
11280
+ return () => {
11281
+ cancelAnimationFrame(frame);
11282
+ if (settleFrame != null) cancelAnimationFrame(settleFrame);
11283
+ if (heightTimerRef.current != null) window.clearTimeout(heightTimerRef.current);
11284
+ };
11285
+ }, [presentValue, registration?.children]);
11286
+ (0, import_react38.useEffect)(() => {
11287
+ menu.registerContent(presentValue, rootRef.current);
11288
+ return () => menu.registerContent(presentValue, null);
11289
+ }, [menu, presentValue]);
11290
+ (0, import_react38.useEffect)(() => {
11291
+ if (!presentValue || typeof document === "undefined") return;
11292
+ const trigger = document.getElementById(`${menu.idPrefix}-trigger-${CSS.escape(presentValue)}`);
11293
+ const header = trigger?.closest("header");
11294
+ if (!header) return;
11295
+ header.setAttribute("data-refineui-navigation-menu-overlay-open", "");
11296
+ return () => header.removeAttribute("data-refineui-navigation-menu-overlay-open");
11297
+ }, [presentValue]);
11298
+ if (!presentValue || !registration) return null;
11299
+ const state = isClosing ? "closed" : "open";
11300
+ const contentCtx = { ...menu, isInsideContent: true };
11301
+ const root = /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(NavigationMenuContext.Provider, { value: contentCtx, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(
11302
+ "div",
11303
+ {
11304
+ ref: rootRef,
11305
+ id: `${menu.idPrefix}-content-${presentValue}`,
11306
+ role: "region",
11307
+ "aria-labelledby": `${menu.idPrefix}-trigger-${presentValue}`,
11308
+ "data-refineui": "navigation-menu-content",
11309
+ "data-layout": "overlay",
11310
+ "data-state": state,
11311
+ className: (0, import_clsx78.clsx)(
11312
+ registration.portalContainer ? navigationMenuStyles.contentOverlayContained : navigationMenuStyles.contentOverlay,
11313
+ isClosing && "pointer-events-none",
11314
+ registration.className
11315
+ ),
11316
+ style: { ...positionStyle, ...registration.style },
11317
+ onPointerEnter: () => menu.openItem(presentValue, { immediate: true }),
11318
+ onPointerLeave: (event) => {
11319
+ if (menu.isMenuTarget(event.relatedTarget)) return;
11320
+ menu.close();
11321
+ },
11322
+ onKeyDown: (event) => {
11323
+ registration.onKeyDown?.(event);
11324
+ if (event.defaultPrevented || event.key !== "Escape") return;
11325
+ event.preventDefault();
11326
+ menu.setValue("");
11327
+ document.getElementById(`${menu.idPrefix}-trigger-${presentValue}`)?.focus();
11328
+ },
11329
+ children: [
11330
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
11331
+ "div",
11332
+ {
11333
+ "aria-hidden": true,
11334
+ "data-state": state,
11335
+ className: (0, import_clsx78.clsx)(
11336
+ navigationMenuStyles.overlayBackdrop,
11337
+ isClosing ? "backdrop-blur-none opacity-0" : "backdrop-blur-[var(--refineui-blur-overlay-scrim)] opacity-100",
11338
+ !isClosing && navigationMenuStyles.overlayBackdropEnter,
11339
+ isClosing && navigationMenuStyles.overlayBackdropExit
11340
+ ),
11341
+ onPointerDown: (event) => {
11342
+ event.preventDefault();
11343
+ menu.setValue("");
11344
+ },
11345
+ onPointerEnter: () => menu.close()
11346
+ }
11347
+ ),
11348
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
11349
+ "div",
11350
+ {
11351
+ "data-refineui": "navigation-menu-content-panel",
11352
+ "data-layout": "overlay",
11353
+ "data-state": state,
11354
+ className: (0, import_clsx78.clsx)(
11355
+ navigationMenuStyles.contentPanelOverlay,
11356
+ isClosing && navigationMenuStyles.contentPanelOverlayExit
11357
+ ),
11358
+ style: panelHeight == null ? void 0 : { height: panelHeight },
11359
+ children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { ref: innerRef, className: "w-full", children: registration.children })
11360
+ }
11361
+ )
11362
+ ]
11363
+ }
11364
+ ) });
11365
+ return typeof document === "undefined" ? root : (0, import_react_dom6.createPortal)(root, registration.portalContainer ?? document.body);
10951
11366
  }
10952
11367
  function NavigationMenuLink({
10953
11368
  children,
@@ -10996,7 +11411,7 @@ function NavigationMenuLink({
10996
11411
  );
10997
11412
  }
10998
11413
  function NavigationMenuIndicator({ className, style, ...props }) {
10999
- const { value, listRef } = useNavigationMenu("NavigationMenuIndicator");
11414
+ const { value, listRef, idPrefix } = useNavigationMenu("NavigationMenuIndicator");
11000
11415
  const [box, setBox] = (0, import_react38.useState)(null);
11001
11416
  const measure = (0, import_react38.useCallback)(() => {
11002
11417
  const list = listRef.current;
@@ -11005,7 +11420,7 @@ function NavigationMenuIndicator({ className, style, ...props }) {
11005
11420
  return;
11006
11421
  }
11007
11422
  const trigger = list.querySelector(
11008
- `[data-refineui="navigation-menu-trigger"][id="refineui-nav-menu-trigger-${CSS.escape(value)}"]`
11423
+ `[data-refineui="navigation-menu-trigger"][id="${CSS.escape(idPrefix)}-trigger-${CSS.escape(value)}"]`
11009
11424
  );
11010
11425
  if (!trigger) {
11011
11426
  setBox(null);
@@ -11076,9 +11491,9 @@ var sidebarStyles = {
11076
11491
  "box-border flex w-full min-w-0 cursor-pointer items-center gap-refineui-size-x-small",
11077
11492
  "rounded-refineui-large border-none bg-transparent px-refineui-size-medium py-refineui-size-x-small",
11078
11493
  "text-refineui-alias-foreground-tertiary no-underline outline-none",
11079
- "transition-[color,background-color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
11494
+ "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"
11080
11495
  ),
11081
- linkActive: "font-medium text-refineui-alias-foreground-primary",
11496
+ linkActive: "font-medium bg-refineui-alias-background-primary-hover text-refineui-alias-foreground-primary",
11082
11497
  linkDisabled: "cursor-not-allowed text-refineui-alias-foreground-disabled",
11083
11498
  footer: (0, import_clsx79.clsx)(
11084
11499
  "mt-auto flex shrink-0 flex-col",
@@ -11213,17 +11628,43 @@ var import_clsx81 = require("clsx");
11213
11628
  var sidebarPeekStyles = {
11214
11629
  root: "relative h-full w-full min-h-0 min-w-0",
11215
11630
  edgeContained: (0, import_clsx81.clsx)(
11216
- "absolute inset-y-0 inset-inline-start-0 z-[calc(var(--refineui-z-floating)-1)]",
11631
+ "absolute inset-y-0 inset-inline-start-0 z-[calc(var(--refineui-z-floating)-1)] data-[sidebar-peek-edge-suspended]:pointer-events-none",
11217
11632
  "w-refineui-foundation-size-120"
11218
11633
  ),
11219
11634
  edgeViewport: (0, import_clsx81.clsx)(
11220
- "fixed inset-inline-start-0 inset-block-end-0 z-[calc(var(--refineui-z-floating)-1)]",
11635
+ "fixed inset-inline-start-0 inset-block-end-0 z-[calc(var(--refineui-z-floating)-1)] data-[sidebar-peek-edge-suspended]:pointer-events-none",
11221
11636
  "w-refineui-foundation-size-120",
11222
11637
  "top-[var(--refineui-sidebar-peek-viewport-offset,0px)]"
11223
11638
  ),
11224
- surfaceContained: (0, import_clsx81.clsx)("absolute z-refineui-floating flex min-h-0"),
11225
- surfaceViewport: (0, import_clsx81.clsx)("fixed z-refineui-floating flex min-h-0"),
11226
- panel: (0, import_clsx81.clsx)("box-border flex min-h-0 w-full flex-1 flex-col overflow-hidden"),
11639
+ surfaceContained: (0, import_clsx81.clsx)(
11640
+ "group/sidebar-peek-surface absolute z-refineui-floating flex min-h-0 box-border pointer-events-none invisible",
11641
+ "inset-y-[calc(var(--refineui-spacing-size-small)-var(--refineui-spacing-size-x-small))]",
11642
+ "start-[calc(var(--refineui-size-foundation-size-120)-var(--refineui-spacing-size-x-small))]",
11643
+ "w-[calc(var(--refineui-sidebar-peek-panel-width)+2*var(--refineui-spacing-size-x-small))]",
11644
+ "p-refineui-size-x-small",
11645
+ "translate-x-[calc(-100%-var(--refineui-size-foundation-size-120)+var(--refineui-spacing-size-x-small))]",
11646
+ "transition-[translate,visibility] duration-refineui-overlay ease-refineui-standard motion-reduce:transition-none",
11647
+ "data-[sidebar-peek-panel-open]:pointer-events-auto data-[sidebar-peek-panel-open]:visible data-[sidebar-peek-panel-open]:translate-x-0"
11648
+ ),
11649
+ surfaceViewport: (0, import_clsx81.clsx)(
11650
+ "group/sidebar-peek-surface fixed z-refineui-floating flex min-h-0 box-border pointer-events-none invisible",
11651
+ "bottom-[calc(var(--refineui-spacing-size-small)-var(--refineui-spacing-size-x-small))]",
11652
+ "start-[calc(var(--refineui-size-foundation-size-120)-var(--refineui-spacing-size-x-small))]",
11653
+ "top-[calc(var(--refineui-sidebar-peek-viewport-offset,0px)+var(--refineui-spacing-size-small)-var(--refineui-spacing-size-x-small))]",
11654
+ "w-[calc(var(--refineui-sidebar-peek-panel-width)+2*var(--refineui-spacing-size-x-small))]",
11655
+ "p-refineui-size-x-small",
11656
+ "translate-x-[calc(-100%-var(--refineui-size-foundation-size-120)+var(--refineui-spacing-size-x-small))]",
11657
+ "transition-[translate,visibility] duration-refineui-overlay ease-refineui-standard motion-reduce:transition-none",
11658
+ "data-[sidebar-peek-panel-open]:pointer-events-auto data-[sidebar-peek-panel-open]:visible data-[sidebar-peek-panel-open]:translate-x-0"
11659
+ ),
11660
+ panel: (0, import_clsx81.clsx)(
11661
+ "box-border flex h-full min-h-0 w-full flex-1 flex-col overflow-hidden pointer-events-auto",
11662
+ "rounded-refineui-xx-large border-refineui-hairline border-refineui-alias-border-default",
11663
+ "bg-refineui-alias-surface-frosted backdrop-blur-refineui-surface-frost",
11664
+ "shadow-refineui-16 transition-shadow duration-refineui-overlay ease-refineui-standard motion-reduce:transition-none",
11665
+ "group-data-[sidebar-peek-panel-open]/sidebar-peek-surface:shadow-refineui-24",
11666
+ "[&_[data-refineui=sidebar]]:h-full [&_[data-refineui=sidebar]]:border-e-0 [&_[data-refineui=sidebar]]:rounded-inherit [&_[data-refineui=sidebar]]:bg-transparent"
11667
+ ),
11227
11668
  toolbar: "flex shrink-0 justify-end px-refineui-size-x-small pt-refineui-size-x-small",
11228
11669
  panelBody: "flex min-h-0 w-full flex-1 flex-col",
11229
11670
  inset: "relative flex min-h-0 min-w-0 flex-1 flex-col"
@@ -11568,7 +12009,7 @@ var import_clsx83 = require("clsx");
11568
12009
  var paginationStyles = {
11569
12010
  root: "flex flex-wrap items-center gap-refineui-size-medium",
11570
12011
  listWrap: "flex flex-wrap items-center gap-refineui-size-medium",
11571
- 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)]",
12012
+ 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",
11572
12013
  page: (0, import_clsx83.clsx)(
11573
12014
  componentTextClass(componentTypographyTokens.pagination),
11574
12015
  "border-refineui-alias-border-default bg-refineui-alias-background-primary font-medium text-refineui-alias-foreground-primary no-underline"
@@ -11863,8 +12304,8 @@ function FloatingSurface({
11863
12304
  };
11864
12305
  const clip = `path("${shape}")`;
11865
12306
  return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { "data-refineui": "floating-chrome", "aria-hidden": true, className: "pointer-events-none absolute -z-1", style: rootStyle, children: [
11866
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "absolute", style: shadowStyle, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { "data-refineui": "floating-shadow", className: "absolute", style: { inset: SHADOW_BLEED }, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "absolute inset-0", style: { clipPath: clip, backgroundColor: borderColor } }) }) }),
11867
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { "data-refineui": "floating-surface", className: "absolute inset-0", style: surfaceStyle }),
12307
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "absolute", style: shadowStyle, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { "data-refineui": "floating-shadow", className: "absolute [filter:var(--refineui-elevation-floating-filter)]", style: { inset: SHADOW_BLEED }, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "absolute inset-0", style: { clipPath: clip, backgroundColor: borderColor } }) }) }),
12308
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { "data-refineui": "floating-surface", className: "absolute inset-0 bg-refineui-alias-surface-frosted backdrop-blur-refineui-surface-frost", style: surfaceStyle }),
11868
12309
  /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
11869
12310
  "svg",
11870
12311
  {
@@ -12135,9 +12576,9 @@ var import_clsx86 = require("clsx");
12135
12576
  // src/components/Skeleton/style.ts
12136
12577
  var skeletonStyles = {
12137
12578
  /** Line / block placeholder */
12138
- rectangle: "block rounded-refineui-large",
12579
+ 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)]",
12139
12580
  /** Avatar-style placeholder */
12140
- circle: "block shrink-0 rounded-refineui-circle"
12581
+ 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)]"
12141
12582
  };
12142
12583
 
12143
12584
  // src/components/Skeleton/Skeleton.tsx
@@ -12195,7 +12636,7 @@ var import_react46 = require("react");
12195
12636
 
12196
12637
  // src/components/Slider/style.ts
12197
12638
  var sliderStyles = {
12198
- root: "h-refineui-slider-interaction-height w-full cursor-pointer"
12639
+ 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"
12199
12640
  };
12200
12641
 
12201
12642
  // src/components/Slider/Slider.tsx
@@ -12264,15 +12705,16 @@ var import_react47 = require("react");
12264
12705
  // src/components/Carousel/style.ts
12265
12706
  var import_clsx88 = require("clsx");
12266
12707
  var carouselStyles = {
12267
- root: "box-border flex w-full flex-col gap-refineui-size-large outline-none",
12708
+ 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)]",
12268
12709
  viewport: (0, import_clsx88.clsx)(
12269
12710
  "relative w-full cursor-grab overflow-hidden rounded-refineui-xx-large",
12270
12711
  "border-refineui-thin border-refineui-alias-border-default bg-refineui-alias-background-primary",
12271
12712
  "shadow-refineui-2 select-none",
12272
- "active:cursor-grabbing"
12713
+ "touch-pan-y active:cursor-grabbing data-[dragging=true]:cursor-grabbing"
12273
12714
  ),
12274
12715
  track: "flex will-change-transform",
12275
- trackAnimated: "transition-transform duration-[var(--refineui-motion-duration-panel)] ease-[var(--refineui-motion-easing-emphasized)]",
12716
+ trackAnimated: "transition-transform duration-[var(--refineui-motion-duration-panel)] ease-[var(--refineui-motion-easing-emphasized)] motion-reduce:transition-none",
12717
+ 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)]",
12276
12718
  item: "box-border min-w-0 shrink-0 grow-0 basis-full",
12277
12719
  controls: "flex w-full items-center justify-center gap-refineui-size-medium",
12278
12720
  /** Sliding-pill meter (SegmentedControl-like), not a row of dots */
@@ -12283,11 +12725,10 @@ var carouselStyles = {
12283
12725
  ),
12284
12726
  indicatorThumb: (0, import_clsx88.clsx)(
12285
12727
  "pointer-events-none absolute top-refineui-size-xxx-small bottom-refineui-size-xxx-small start-refineui-size-xxx-small z-0",
12286
- /* Motion lives in refineui.css, gated by `data-animate`. */
12287
- "rounded-refineui-circle bg-refineui-alias-background-brand shadow-refineui-2"
12728
+ "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"
12288
12729
  ),
12289
12730
  indicatorHitRow: "relative z-[1] flex h-full w-full",
12290
- indicatorHit: "h-full min-w-0 flex-1 cursor-pointer border-none bg-transparent p-0 outline-none"
12731
+ 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)]"
12291
12732
  };
12292
12733
 
12293
12734
  // src/components/Carousel/Carousel.tsx
@@ -12303,6 +12744,14 @@ function clampIndex(i, count) {
12303
12744
  if (count <= 0) return 0;
12304
12745
  return Math.min(count - 1, Math.max(0, i));
12305
12746
  }
12747
+ function getInitialSlideCount(children) {
12748
+ let slideCount = 0;
12749
+ import_react47.Children.forEach(children, (child) => {
12750
+ if (!(0, import_react47.isValidElement)(child) || child.type !== CarouselContent) return;
12751
+ slideCount = import_react47.Children.toArray(child.props.children).filter(import_react47.isValidElement).length;
12752
+ });
12753
+ return slideCount;
12754
+ }
12306
12755
  function Carousel({
12307
12756
  children,
12308
12757
  className,
@@ -12315,7 +12764,7 @@ function Carousel({
12315
12764
  }) {
12316
12765
  const isControlled = indexControlled !== void 0;
12317
12766
  const [internalIndex, setInternalIndex] = (0, import_react47.useState)(defaultIndex);
12318
- const [count, setCount] = (0, import_react47.useState)(0);
12767
+ const [count, setCount] = (0, import_react47.useState)(() => getInitialSlideCount(children));
12319
12768
  const [trackIndex, setTrackIndex] = (0, import_react47.useState)(defaultIndex);
12320
12769
  const [instant, setInstant] = (0, import_react47.useState)(false);
12321
12770
  const index = isControlled ? indexControlled : internalIndex;
@@ -12595,7 +13044,7 @@ function CarouselPrevious({ className, disabled, onClick, ...props }) {
12595
13044
  "data-dir": "prev",
12596
13045
  "aria-label": "Previous slide",
12597
13046
  disabled: isDisabled,
12598
- className,
13047
+ className: (0, import_clsx89.clsx)(carouselStyles.navFocus, className),
12599
13048
  ...props,
12600
13049
  onClick: (e) => {
12601
13050
  onClick?.(e);
@@ -12627,7 +13076,7 @@ function CarouselNext({ className, disabled, onClick, ...props }) {
12627
13076
  "data-dir": "next",
12628
13077
  "aria-label": "Next slide",
12629
13078
  disabled: isDisabled,
12630
- className,
13079
+ className: (0, import_clsx89.clsx)(carouselStyles.navFocus, className),
12631
13080
  ...props,
12632
13081
  onClick: (e) => {
12633
13082
  onClick?.(e);
@@ -12648,33 +13097,10 @@ function CarouselNext({ className, disabled, onClick, ...props }) {
12648
13097
  }
12649
13098
  function CarouselIndicators({ className, ...props }) {
12650
13099
  const { count, index, scrollTo } = useCarouselContext("CarouselIndicators");
12651
- const trackRef = (0, import_react47.useRef)(null);
12652
- const [thumb, setThumb] = (0, import_react47.useState)({ width: 0, x: 0, ready: false });
12653
13100
  const [animate, setAnimate] = (0, import_react47.useState)(false);
12654
- const updateThumb = (0, import_react47.useCallback)(() => {
12655
- const el = trackRef.current;
12656
- if (!el || count <= 0) {
12657
- setThumb({ width: 0, x: 0, ready: false });
12658
- return;
12659
- }
12660
- const hits = el.querySelector("[data-refineui='carousel-indicator-hits']");
12661
- const inner = hits?.clientWidth ?? el.clientWidth;
12662
- const width = inner / count;
12663
- setThumb({
12664
- width,
12665
- x: width * index,
12666
- ready: true
12667
- });
12668
- }, [count, index]);
12669
- (0, import_react47.useLayoutEffect)(() => {
12670
- updateThumb();
12671
- }, [updateThumb]);
12672
13101
  (0, import_react47.useEffect)(() => {
12673
- if (!thumb.ready) {
12674
- setAnimate(false);
12675
- return;
12676
- }
12677
- if (animate) return;
13102
+ setAnimate(false);
13103
+ if (count <= 0) return;
12678
13104
  let raf2 = 0;
12679
13105
  const raf1 = requestAnimationFrame(() => {
12680
13106
  raf2 = requestAnimationFrame(() => setAnimate(true));
@@ -12683,23 +13109,16 @@ function CarouselIndicators({ className, ...props }) {
12683
13109
  cancelAnimationFrame(raf1);
12684
13110
  cancelAnimationFrame(raf2);
12685
13111
  };
12686
- }, [thumb.ready, animate]);
12687
- (0, import_react47.useEffect)(() => {
12688
- const el = trackRef.current;
12689
- if (!el) return;
12690
- const ro = new ResizeObserver(() => updateThumb());
12691
- ro.observe(el);
12692
- return () => ro.disconnect();
12693
- }, [updateThumb]);
13112
+ }, [count]);
12694
13113
  if (count <= 0) return null;
13114
+ const selectedIndex = clampIndex(index, count);
12695
13115
  const thumbStyle = {
12696
- width: thumb.width,
12697
- transform: `translate3d(${thumb.x}px, 0, 0)`
13116
+ width: `${100 / count}%`,
13117
+ transform: `translate3d(${selectedIndex * 100}%, 0, 0)`
12698
13118
  };
12699
13119
  return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
12700
13120
  "div",
12701
13121
  {
12702
- ref: trackRef,
12703
13122
  "data-refineui": "carousel-indicators",
12704
13123
  role: "tablist",
12705
13124
  "aria-label": "Slides",
@@ -12710,7 +13129,6 @@ function CarouselIndicators({ className, ...props }) {
12710
13129
  "span",
12711
13130
  {
12712
13131
  "data-refineui": "carousel-indicator-thumb",
12713
- "data-ready": thumb.ready ? "true" : void 0,
12714
13132
  "data-animate": animate ? "true" : void 0,
12715
13133
  "aria-hidden": true,
12716
13134
  className: carouselStyles.indicatorThumb,
@@ -12746,10 +13164,14 @@ var BUBBLE_MAX_WIDTH = "80%";
12746
13164
  var bubbleStyles = {
12747
13165
  group: (0, import_clsx90.clsx)(
12748
13166
  "flex min-w-0 flex-col gap-refineui-size-xx-small",
12749
- // Connected corners for consecutive bubbles
12750
- "[&>[data-refineui=bubble]:first-child:not(:only-child)_[data-refineui=bubble-content]]:rounded-b-[var(--refineui-radius-rounded-medium)]",
12751
- "[&>[data-refineui=bubble]:last-child:not(:only-child)_[data-refineui=bubble-content]]:rounded-t-[var(--refineui-radius-rounded-medium)]",
12752
- "[&>[data-refineui=bubble]:not(:first-child):not(:last-child)_[data-refineui=bubble-content]]:rounded-[var(--refineui-radius-rounded-medium)]",
13167
+ // Connected corners only flatten along the sender edge. The opposite
13168
+ // edge keeps the outer bubble radius, including in RTL layouts.
13169
+ "[&>[data-refineui=bubble][data-align=start]:first-child:not(:only-child)_[data-refineui=bubble-content]]:[border-end-start-radius:var(--refineui-radius-rounded-medium)]",
13170
+ "[&>[data-refineui=bubble][data-align=end]:first-child:not(:only-child)_[data-refineui=bubble-content]]:[border-end-end-radius:var(--refineui-radius-rounded-medium)]",
13171
+ "[&>[data-refineui=bubble][data-align=start]:last-child:not(:only-child)_[data-refineui=bubble-content]]:[border-start-start-radius:var(--refineui-radius-rounded-medium)]",
13172
+ "[&>[data-refineui=bubble][data-align=end]:last-child:not(:only-child)_[data-refineui=bubble-content]]:[border-start-end-radius:var(--refineui-radius-rounded-medium)]",
13173
+ "[&>[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)]",
13174
+ "[&>[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)]",
12753
13175
  // Room for overlapping reactions on the last bubble in a group
12754
13176
  "[&>[data-refineui=bubble][data-has-reactions-bottom]:not(:last-child)]:mb-refineui-size-xx-large"
12755
13177
  ),
@@ -12945,7 +13367,10 @@ var stepperStyles = {
12945
13367
  "hover:[&_[data-refineui=stepper-indicator][data-state=upcoming]]:bg-refineui-alias-background-primary-hover",
12946
13368
  "hover:[&_[data-refineui=stepper-indicator][data-state=upcoming]]:border-refineui-alias-border-strong",
12947
13369
  "hover:[&_[data-refineui=stepper-indicator][data-state=upcoming]]:text-refineui-alias-foreground-primary-hover",
12948
- "hover:[&_[data-refineui=stepper-title][data-state=upcoming]]:text-refineui-alias-foreground-primary"
13370
+ "hover:[&_[data-refineui=stepper-title][data-state=upcoming]]:text-refineui-alias-foreground-primary",
13371
+ "active:[&_[data-refineui=stepper-indicator][data-state=upcoming]]:bg-refineui-alias-background-primary-active",
13372
+ "active:[&_[data-refineui=stepper-indicator][data-state=upcoming]]:border-refineui-alias-border-strong",
13373
+ "active:[&_[data-refineui=stepper-indicator][data-state=upcoming]]:text-refineui-alias-foreground-primary"
12949
13374
  ),
12950
13375
  itemDisabled: "cursor-not-allowed opacity-50",
12951
13376
  indicator: (0, import_clsx92.clsx)(
@@ -13796,7 +14221,7 @@ var import_tokens29 = require("@refineui/tokens");
13796
14221
 
13797
14222
  // src/components/SpinButton/style.ts
13798
14223
  var spinButtonStyles = {
13799
- root: "box-border flex w-full min-w-0 items-stretch overflow-hidden outline-none",
14224
+ 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",
13800
14225
  borderDisabled: "border-refineui-thin border-refineui-alias-border-disabled",
13801
14226
  borderDefault: "border-refineui-thin border-refineui-alias-border-default",
13802
14227
  bgDisabled: "bg-refineui-alias-background-surface-disabled",
@@ -13807,9 +14232,9 @@ var spinButtonStyles = {
13807
14232
  valueTextDefault: "text-refineui-alias-foreground-primary",
13808
14233
  stepper: "flex h-full min-h-0 w-refineui-spin-stepper-width shrink-0 flex-col",
13809
14234
  /** Split column evenly inside shared `controlHeight*` shell */
13810
- stepButtonBase: "box-border flex min-h-0 w-full flex-1 items-center justify-center border-none p-0 text-refineui-alias-foreground-secondary",
13811
- stepButtonDisabled: "cursor-not-allowed bg-refineui-alias-background-surface-disabled opacity-50",
13812
- stepButtonEnabled: "cursor-pointer bg-refineui-alias-background-primary opacity-100"
14235
+ 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",
14236
+ stepButtonDisabled: "cursor-not-allowed bg-refineui-alias-background-surface-disabled opacity-50 text-refineui-alias-foreground-disabled",
14237
+ 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"
13813
14238
  };
13814
14239
  var spinButtonShellClass = formControlShellHeightClass;
13815
14240
  var spinButtonValueTypo = formControlTypoClass;
@@ -14068,7 +14493,7 @@ var toastRecipe = defineRecipe({
14068
14493
  dataStates: ["default"]
14069
14494
  });
14070
14495
  var toastStyles = {
14071
- card: toastRecipe.base,
14496
+ 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)]`,
14072
14497
  iconWrap: "flex shrink-0 items-center justify-center self-center",
14073
14498
  contentWrap: "flex min-h-px min-w-0 flex-1 items-center",
14074
14499
  message: (0, import_clsx97.clsx)(
@@ -14076,7 +14501,9 @@ var toastStyles = {
14076
14501
  "text-refineui-alias-foreground-primary"
14077
14502
  ),
14078
14503
  actionButton: "shrink-0 whitespace-nowrap",
14079
- toasterRoot: "refineui-toaster group"
14504
+ 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))]",
14505
+ 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)]",
14506
+ 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"
14080
14507
  };
14081
14508
 
14082
14509
  // src/components/Toast/Toast.tsx
@@ -14307,7 +14734,20 @@ var Toast = (0, import_react52.forwardRef)(function Toast2(props, ref) {
14307
14734
  style: { ...tokenStyle, ...style },
14308
14735
  className: (0, import_clsx98.clsx)(toastStyles.card, className),
14309
14736
  children: [
14310
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { "data-refineui": "toast-icon", className: toastStyles.iconWrap, children: iconContent }),
14737
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
14738
+ "div",
14739
+ {
14740
+ "data-refineui": "toast-icon",
14741
+ className: (0, import_clsx98.clsx)(
14742
+ toastStyles.iconWrap,
14743
+ variant === "success" && "text-refineui-alias-foreground-success",
14744
+ variant === "error" && "text-refineui-alias-foreground-error",
14745
+ variant === "warning" && "text-refineui-alias-foreground-warning",
14746
+ variant === "default" && "text-refineui-alias-foreground-primary"
14747
+ ),
14748
+ children: iconContent
14749
+ }
14750
+ ),
14311
14751
  /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { className: toastStyles.contentWrap, children: message != null && message !== "" ? /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { className: toastStyles.message, children: message }) : null }),
14312
14752
  action != null && actionEl
14313
14753
  ]
@@ -14558,11 +14998,12 @@ function Toaster({
14558
14998
  "data-toast-id": rec.id,
14559
14999
  "data-index": index,
14560
15000
  "data-front": index === 0 ? "true" : "false",
15001
+ className: toastStyles.stackItem,
14561
15002
  style: {
14562
15003
  ["--refineui-toast-z-index"]: String(STACK_Z_BASE - index),
14563
15004
  ["--refineui-toast-stack-index"]: String(index)
14564
15005
  },
14565
- children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { "data-refineui": "toast-scale-layer", children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
15006
+ children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { "data-refineui": "toast-scale-layer", className: toastStyles.scaleLayer, children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
14566
15007
  SwipeableToast,
14567
15008
  {
14568
15009
  record: rec,
@@ -14625,9 +15066,9 @@ var treeStyles = {
14625
15066
  "rounded-refineui-large border-none bg-transparent",
14626
15067
  "px-refineui-size-medium py-refineui-size-x-small",
14627
15068
  "text-refineui-alias-foreground-tertiary outline-none",
14628
- "transition-[color,background-color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]"
15069
+ "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"
14629
15070
  ),
14630
- rowSelected: "font-medium text-refineui-alias-foreground-primary",
15071
+ rowSelected: "font-medium bg-refineui-alias-background-primary-hover text-refineui-alias-foreground-primary",
14631
15072
  rowDisabled: "cursor-not-allowed",
14632
15073
  rowMain: "flex min-w-0 flex-1 items-center gap-refineui-size-x-small",
14633
15074
  chevronButton: (0, import_clsx99.clsx)(
@@ -15252,7 +15693,7 @@ var chartStyles = {
15252
15693
  root: "flex w-full min-w-0 flex-col gap-refineui-size-medium",
15253
15694
  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",
15254
15695
  plotColumn: "contents",
15255
- plotFrame: "relative col-start-2 row-start-1 min-w-0",
15696
+ plotFrame: "group/chart-plot relative col-start-2 row-start-1 min-w-0",
15256
15697
  plot: "block h-auto w-full min-w-0 aspect-[5/2] overflow-visible",
15257
15698
  yAxis: "relative col-start-1 row-start-1 min-w-refineui-foundation-size-400 pe-refineui-size-x-small",
15258
15699
  yAxisTick: (0, import_clsx106.clsx)(
@@ -15284,7 +15725,12 @@ var chartStyles = {
15284
15725
  componentTextClass(componentTypographyTokens.chart.legendLabel),
15285
15726
  "flex items-center gap-refineui-size-x-small text-refineui-alias-foreground-secondary"
15286
15727
  ),
15287
- legendSwatch: "size-refineui-foundation-size-80 shrink-0 rounded-refineui-small"
15728
+ legendSwatch: "size-refineui-foundation-size-80 shrink-0 rounded-refineui-small",
15729
+ 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)]",
15730
+ barTrack: "pointer-events-none",
15731
+ lineStroke: "[stroke-dasharray:1] [stroke-dashoffset:1] [animation:refineui-chart-line-enter_var(--refineui-motion-duration-panel)_var(--refineui-motion-easing-emphasized)_both]",
15732
+ lineArea: "[animation:refineui-chart-point-enter_var(--refineui-motion-duration-panel)_var(--refineui-motion-easing-emphasized)_both]",
15733
+ point: "[animation:refineui-chart-point-enter_var(--refineui-motion-duration-fast)_var(--refineui-motion-easing-emphasized)_both]"
15288
15734
  };
15289
15735
 
15290
15736
  // src/components/Chart/utils.ts
@@ -15761,7 +16207,8 @@ function ChartBars({
15761
16207
  trackHeight,
15762
16208
  barRadius
15763
16209
  ),
15764
- fill: track
16210
+ fill: track,
16211
+ className: chartStyles.barTrack
15765
16212
  },
15766
16213
  `track-${index}`
15767
16214
  );
@@ -15778,7 +16225,8 @@ function ChartBars({
15778
16225
  "data-refineui": "chart-bar",
15779
16226
  "data-state": state,
15780
16227
  d: barPathTopRounded(x, y, barWidth, height, barRadius),
15781
- fill
16228
+ fill,
16229
+ className: chartStyles.bar
15782
16230
  },
15783
16231
  index
15784
16232
  );
@@ -15823,7 +16271,8 @@ function ChartLine({
15823
16271
  {
15824
16272
  "data-refineui": "chart-line-area",
15825
16273
  d: monotoneAreaPath(coords, baselineY),
15826
- fill: `url(#${gradientId})`
16274
+ fill: `url(#${gradientId})`,
16275
+ className: chartStyles.lineArea
15827
16276
  }
15828
16277
  )
15829
16278
  ] }) : null,
@@ -15838,7 +16287,8 @@ function ChartLine({
15838
16287
  strokeWidth: "var(--refineui-stroke-width-thick)",
15839
16288
  vectorEffect: "non-scaling-stroke",
15840
16289
  strokeLinejoin: "round",
15841
- strokeLinecap: "round"
16290
+ strokeLinecap: "round",
16291
+ className: chartStyles.lineStroke
15842
16292
  }
15843
16293
  ),
15844
16294
  coords.map(({ x, y }, index) => {
@@ -15855,7 +16305,8 @@ function ChartLine({
15855
16305
  r: CHART_POINT_RADIUS,
15856
16306
  fill: stroke,
15857
16307
  stroke: pointRing,
15858
- strokeWidth: CHART_POINT_STROKE
16308
+ strokeWidth: CHART_POINT_STROKE,
16309
+ className: chartStyles.point
15859
16310
  },
15860
16311
  index
15861
16312
  );