@evinvest/uikit 0.26.0 → 0.27.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.
Files changed (57) hide show
  1. package/README.md +142 -8
  2. package/dist/components/account-menu.js +70 -0
  3. package/dist/components/account-menu.js.map +1 -0
  4. package/dist/components/alert-dialog.js +4 -3
  5. package/dist/components/alert-dialog.js.map +1 -1
  6. package/dist/components/app-shell.js +11 -0
  7. package/dist/components/app-shell.js.map +1 -1
  8. package/dist/components/command.js +129 -20
  9. package/dist/components/command.js.map +1 -1
  10. package/dist/components/context-menu.js +8 -8
  11. package/dist/components/context-menu.js.map +1 -1
  12. package/dist/components/dialog.js +4 -3
  13. package/dist/components/dialog.js.map +1 -1
  14. package/dist/components/drawer.js +9 -5
  15. package/dist/components/drawer.js.map +1 -1
  16. package/dist/components/dropdown-menu.js +13 -10
  17. package/dist/components/dropdown-menu.js.map +1 -1
  18. package/dist/components/info-tip.js +2 -2
  19. package/dist/components/info-tip.js.map +1 -1
  20. package/dist/components/menubar.js +18 -5
  21. package/dist/components/menubar.js.map +1 -1
  22. package/dist/components/navigation-menu.js +2 -2
  23. package/dist/components/navigation-menu.js.map +1 -1
  24. package/dist/components/popover.js +2 -2
  25. package/dist/components/popover.js.map +1 -1
  26. package/dist/components/select.js +2 -2
  27. package/dist/components/select.js.map +1 -1
  28. package/dist/components/sheet.js +4 -3
  29. package/dist/components/sheet.js.map +1 -1
  30. package/dist/components/sonner.js +1 -0
  31. package/dist/components/sonner.js.map +1 -1
  32. package/dist/components/table.js +24 -7
  33. package/dist/components/table.js.map +1 -1
  34. package/dist/components/toggle-group.js +1 -1
  35. package/dist/components/toggle-group.js.map +1 -1
  36. package/dist/components/top-bar.js +21 -0
  37. package/dist/components/top-bar.js.map +1 -0
  38. package/dist/generated/context-menu.js +1 -1
  39. package/dist/generated/context-menu.js.map +1 -1
  40. package/dist/generated/dropdown-menu.js +1 -1
  41. package/dist/generated/dropdown-menu.js.map +1 -1
  42. package/dist/generated/menubar.js +1 -1
  43. package/dist/generated/menubar.js.map +1 -1
  44. package/dist/generated/table.js +20 -3
  45. package/dist/generated/table.js.map +1 -1
  46. package/dist/generated/toggle.js +2 -2
  47. package/dist/generated/toggle.js.map +1 -1
  48. package/dist/index.d.ts +168 -22
  49. package/dist/index.js +5 -2
  50. package/dist/primitives/dismissable-layer.js +80 -15
  51. package/dist/primitives/dismissable-layer.js.map +1 -1
  52. package/dist/primitives/use-roving-focus.js +13 -7
  53. package/dist/primitives/use-roving-focus.js.map +1 -1
  54. package/package.json +1 -1
  55. package/styles/ev.css +4 -2
  56. package/styles/theme.css +7 -0
  57. package/styles/tokens.css +15 -3
@@ -1,6 +1,6 @@
1
1
  const DROPDOWN_MENU_CONTENT = "bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border p-1 shadow-md";
2
2
  const DROPDOWN_MENU_SUB_CONTENT = "bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border border-border p-1 shadow-lg";
3
- const DROPDOWN_MENU_ITEM = "focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[variant=destructive]:text-accent-error data-[variant=destructive]:focus:bg-accent-error/10 data-[variant=destructive]:focus:text-accent-error data-[variant=destructive]:*:[svg]:!text-accent-error [&_svg:not([class*='text-'])]:text-ink-soft relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4";
3
+ const DROPDOWN_MENU_ITEM = "focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[variant=destructive]:text-accent-error-ink data-[variant=destructive]:focus:bg-accent-error/10 data-[variant=destructive]:focus:text-accent-error-ink data-[variant=destructive]:*:[svg]:!text-accent-error-ink [&_svg:not([class*='text-'])]:text-ink-soft relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4";
4
4
  const DROPDOWN_MENU_CHECK_ITEM = "focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4";
5
5
  const DROPDOWN_MENU_SUB_TRIGGER = "focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[state=open]:bg-hover data-[state=open]:text-ink [&_svg:not([class*='text-'])]:text-ink-soft flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4";
6
6
  const DROPDOWN_MENU_ITEM_INDICATOR = "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/generated/dropdown-menu.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const DROPDOWN_MENU_CONTENT = \"bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border p-1 shadow-md\";\n\nexport const DROPDOWN_MENU_SUB_CONTENT = \"bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border border-border p-1 shadow-lg\";\n\nexport const DROPDOWN_MENU_ITEM = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[variant=destructive]:text-accent-error data-[variant=destructive]:focus:bg-accent-error/10 data-[variant=destructive]:focus:text-accent-error data-[variant=destructive]:*:[svg]:!text-accent-error [&_svg:not([class*='text-'])]:text-ink-soft relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\";\n\nexport const DROPDOWN_MENU_CHECK_ITEM = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\";\n\nexport const DROPDOWN_MENU_SUB_TRIGGER = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[state=open]:bg-hover data-[state=open]:text-ink [&_svg:not([class*='text-'])]:text-ink-soft flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\";\n\nexport const DROPDOWN_MENU_ITEM_INDICATOR = \"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\";\n\nexport const DROPDOWN_MENU_LABEL = \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\";\n\nexport const DROPDOWN_MENU_SEPARATOR = \"bg-border -mx-1 my-1 h-px\";\n\nexport const DROPDOWN_MENU_SHORTCUT = \"text-ink-soft ml-auto text-xs tracking-widest\";\n"],"mappings":"AAEO,MAAM,wBAAwB;AAE9B,MAAM,4BAA4B;AAElC,MAAM,qBAAqB;AAE3B,MAAM,2BAA2B;AAEjC,MAAM,4BAA4B;AAElC,MAAM,+BAA+B;AAErC,MAAM,sBAAsB;AAE5B,MAAM,0BAA0B;AAEhC,MAAM,yBAAyB;","names":[]}
1
+ {"version":3,"sources":["../../src/generated/dropdown-menu.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const DROPDOWN_MENU_CONTENT = \"bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border p-1 shadow-md\";\n\nexport const DROPDOWN_MENU_SUB_CONTENT = \"bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border border-border p-1 shadow-lg\";\n\nexport const DROPDOWN_MENU_ITEM = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[variant=destructive]:text-accent-error-ink data-[variant=destructive]:focus:bg-accent-error/10 data-[variant=destructive]:focus:text-accent-error-ink data-[variant=destructive]:*:[svg]:!text-accent-error-ink [&_svg:not([class*='text-'])]:text-ink-soft relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\";\n\nexport const DROPDOWN_MENU_CHECK_ITEM = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\";\n\nexport const DROPDOWN_MENU_SUB_TRIGGER = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[state=open]:bg-hover data-[state=open]:text-ink [&_svg:not([class*='text-'])]:text-ink-soft flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\";\n\nexport const DROPDOWN_MENU_ITEM_INDICATOR = \"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\";\n\nexport const DROPDOWN_MENU_LABEL = \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\";\n\nexport const DROPDOWN_MENU_SEPARATOR = \"bg-border -mx-1 my-1 h-px\";\n\nexport const DROPDOWN_MENU_SHORTCUT = \"text-ink-soft ml-auto text-xs tracking-widest\";\n"],"mappings":"AAEO,MAAM,wBAAwB;AAE9B,MAAM,4BAA4B;AAElC,MAAM,qBAAqB;AAE3B,MAAM,2BAA2B;AAEjC,MAAM,4BAA4B;AAElC,MAAM,+BAA+B;AAErC,MAAM,sBAAsB;AAE5B,MAAM,0BAA0B;AAEhC,MAAM,yBAAyB;","names":[]}
@@ -1,7 +1,7 @@
1
1
  const MENUBAR_ROOT = "bg-background flex h-9 items-center gap-1 rounded-md border border-border p-1 shadow-xs";
2
2
  const MENUBAR_TRIGGER = "focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[state=open]:bg-hover data-[state=open]:text-ink flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none";
3
3
  const MENUBAR_CONTENT = "bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 absolute z-50 min-w-[12rem] overflow-hidden rounded-md border border-border p-1 shadow-md";
4
- const MENUBAR_ITEM = "focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[variant=destructive]:text-accent-error data-[variant=destructive]:focus:bg-accent-error/10 data-[variant=destructive]:focus:text-accent-error data-[variant=destructive]:*:[svg]:!text-accent-error [&_svg:not([class*='text-'])]:text-ink-soft relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4";
4
+ const MENUBAR_ITEM = "focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[variant=destructive]:text-accent-error-ink data-[variant=destructive]:focus:bg-accent-error/10 data-[variant=destructive]:focus:text-accent-error-ink data-[variant=destructive]:*:[svg]:!text-accent-error-ink [&_svg:not([class*='text-'])]:text-ink-soft relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4";
5
5
  const MENUBAR_CHECKBOX_ITEM = "focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4";
6
6
  const MENUBAR_RADIO_ITEM = "focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4";
7
7
  const MENUBAR_ITEM_INDICATOR = "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/generated/menubar.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const MENUBAR_ROOT = \"bg-background flex h-9 items-center gap-1 rounded-md border border-border p-1 shadow-xs\";\n\nexport const MENUBAR_TRIGGER = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[state=open]:bg-hover data-[state=open]:text-ink flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none\";\n\nexport const MENUBAR_CONTENT = \"bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 absolute z-50 min-w-[12rem] overflow-hidden rounded-md border border-border p-1 shadow-md\";\n\nexport const MENUBAR_ITEM = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[variant=destructive]:text-accent-error data-[variant=destructive]:focus:bg-accent-error/10 data-[variant=destructive]:focus:text-accent-error data-[variant=destructive]:*:[svg]:!text-accent-error [&_svg:not([class*='text-'])]:text-ink-soft relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\";\n\nexport const MENUBAR_CHECKBOX_ITEM = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\";\n\nexport const MENUBAR_RADIO_ITEM = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\";\n\nexport const MENUBAR_ITEM_INDICATOR = \"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\";\n\nexport const MENUBAR_LABEL = \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\";\n\nexport const MENUBAR_SEPARATOR = \"bg-border -mx-1 my-1 h-px\";\n\nexport const MENUBAR_SHORTCUT = \"text-ink-soft ml-auto text-xs tracking-widest\";\n\nexport const MENUBAR_SUB_TRIGGER = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[state=open]:bg-hover data-[state=open]:text-ink flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\";\n\nexport const MENUBAR_SUB_CONTENT = \"bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 absolute z-50 min-w-[8rem] overflow-hidden rounded-md border border-border p-1 shadow-lg\";\n"],"mappings":"AAEO,MAAM,eAAe;AAErB,MAAM,kBAAkB;AAExB,MAAM,kBAAkB;AAExB,MAAM,eAAe;AAErB,MAAM,wBAAwB;AAE9B,MAAM,qBAAqB;AAE3B,MAAM,yBAAyB;AAE/B,MAAM,gBAAgB;AAEtB,MAAM,oBAAoB;AAE1B,MAAM,mBAAmB;AAEzB,MAAM,sBAAsB;AAE5B,MAAM,sBAAsB;","names":[]}
1
+ {"version":3,"sources":["../../src/generated/menubar.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const MENUBAR_ROOT = \"bg-background flex h-9 items-center gap-1 rounded-md border border-border p-1 shadow-xs\";\n\nexport const MENUBAR_TRIGGER = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[state=open]:bg-hover data-[state=open]:text-ink flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none\";\n\nexport const MENUBAR_CONTENT = \"bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 absolute z-50 min-w-[12rem] overflow-hidden rounded-md border border-border p-1 shadow-md\";\n\nexport const MENUBAR_ITEM = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[variant=destructive]:text-accent-error-ink data-[variant=destructive]:focus:bg-accent-error/10 data-[variant=destructive]:focus:text-accent-error-ink data-[variant=destructive]:*:[svg]:!text-accent-error-ink [&_svg:not([class*='text-'])]:text-ink-soft relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\";\n\nexport const MENUBAR_CHECKBOX_ITEM = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\";\n\nexport const MENUBAR_RADIO_ITEM = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\";\n\nexport const MENUBAR_ITEM_INDICATOR = \"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\";\n\nexport const MENUBAR_LABEL = \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\";\n\nexport const MENUBAR_SEPARATOR = \"bg-border -mx-1 my-1 h-px\";\n\nexport const MENUBAR_SHORTCUT = \"text-ink-soft ml-auto text-xs tracking-widest\";\n\nexport const MENUBAR_SUB_TRIGGER = \"focus:bg-hover focus:text-ink focus-visible:inset-ring-2 focus-visible:inset-ring-ring data-[state=open]:bg-hover data-[state=open]:text-ink flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\";\n\nexport const MENUBAR_SUB_CONTENT = \"bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 absolute z-50 min-w-[8rem] overflow-hidden rounded-md border border-border p-1 shadow-lg\";\n"],"mappings":"AAEO,MAAM,eAAe;AAErB,MAAM,kBAAkB;AAExB,MAAM,kBAAkB;AAExB,MAAM,eAAe;AAErB,MAAM,wBAAwB;AAE9B,MAAM,qBAAqB;AAE3B,MAAM,yBAAyB;AAE/B,MAAM,gBAAgB;AAEtB,MAAM,oBAAoB;AAE1B,MAAM,mBAAmB;AAEzB,MAAM,sBAAsB;AAE5B,MAAM,sBAAsB;","names":[]}
@@ -1,21 +1,38 @@
1
1
  const TABLE_CONTAINER = "relative w-full overflow-x-auto";
2
2
  const TABLE = "w-full caption-bottom text-sm";
3
+ const tableVariants = {
4
+ "default": "[--table-px:initial] [--table-py:initial] [--table-head-ink:initial] [--table-head-text:initial] [--table-head-tracking:initial] [--table-head-case:initial]",
5
+ "card": "[--table-px:calc(var(--spacing)*5)] [--table-py:calc(var(--spacing)*3)] [--table-head-ink:var(--ink-soft)] [--table-head-text:var(--text-xs)] [--table-head-tracking:var(--tracking-wide)] [--table-head-case:uppercase] [&>thead>tr:hover]:bg-transparent"
6
+ };
7
+ const tableDensities = {
8
+ "default": "[--table-dense-py:initial] [--table-head-h:initial]",
9
+ "compact": "[--table-dense-py:calc(var(--spacing)*1.5)] [--table-head-h:calc(var(--spacing)*8)]"
10
+ };
11
+ const TABLE_CARD = "bg-card text-ink overflow-hidden rounded-xl border border-border shadow-sm";
3
12
  const TABLE_HEADER = "[&_tr]:border-b";
4
13
  const TABLE_BODY = "[&_tr:last-child]:border-0";
5
14
  const TABLE_FOOTER = "bg-muted/50 border-t border-border font-medium [&>tr]:last:border-b-0";
6
15
  const TABLE_ROW = "hover:bg-muted/50 data-[state=selected]:bg-muted border-b border-border transition-colors";
7
- const TABLE_HEAD = "text-ink h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]";
8
- const TABLE_CELL = "p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]";
16
+ const TABLE_HEAD = "text-[color:var(--table-head-ink,var(--ink))] h-[var(--table-head-h,calc(var(--spacing)*10))] px-[var(--table-px,calc(var(--spacing)*2))] text-start align-middle font-medium whitespace-nowrap text-[length:var(--table-head-text)] tracking-[var(--table-head-tracking)] [text-transform:var(--table-head-case)] [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]";
17
+ const TABLE_CELL = "px-[var(--table-px,calc(var(--spacing)*2))] py-[var(--table-dense-py,var(--table-py,calc(var(--spacing)*2)))] align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]";
18
+ const tableAligns = {
19
+ "start": "text-start",
20
+ "end": "text-end tabular-nums"
21
+ };
9
22
  const TABLE_CAPTION = "text-ink-soft mt-4 text-sm";
10
23
  export {
11
24
  TABLE,
12
25
  TABLE_BODY,
13
26
  TABLE_CAPTION,
27
+ TABLE_CARD,
14
28
  TABLE_CELL,
15
29
  TABLE_CONTAINER,
16
30
  TABLE_FOOTER,
17
31
  TABLE_HEAD,
18
32
  TABLE_HEADER,
19
- TABLE_ROW
33
+ TABLE_ROW,
34
+ tableAligns,
35
+ tableDensities,
36
+ tableVariants
20
37
  };
21
38
  //# sourceMappingURL=table.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/generated/table.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const TABLE_CONTAINER = \"relative w-full overflow-x-auto\";\n\nexport const TABLE = \"w-full caption-bottom text-sm\";\n\nexport const TABLE_HEADER = \"[&_tr]:border-b\";\n\nexport const TABLE_BODY = \"[&_tr:last-child]:border-0\";\n\nexport const TABLE_FOOTER = \"bg-muted/50 border-t border-border font-medium [&>tr]:last:border-b-0\";\n\nexport const TABLE_ROW = \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b border-border transition-colors\";\n\nexport const TABLE_HEAD = \"text-ink h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\";\n\nexport const TABLE_CELL = \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\";\n\nexport const TABLE_CAPTION = \"text-ink-soft mt-4 text-sm\";\n"],"mappings":"AAEO,MAAM,kBAAkB;AAExB,MAAM,QAAQ;AAEd,MAAM,eAAe;AAErB,MAAM,aAAa;AAEnB,MAAM,eAAe;AAErB,MAAM,YAAY;AAElB,MAAM,aAAa;AAEnB,MAAM,aAAa;AAEnB,MAAM,gBAAgB;","names":[]}
1
+ {"version":3,"sources":["../../src/generated/table.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const TABLE_CONTAINER = \"relative w-full overflow-x-auto\";\n\nexport const TABLE = \"w-full caption-bottom text-sm\";\n\nexport const tableVariants = {\n \"default\": \"[--table-px:initial] [--table-py:initial] [--table-head-ink:initial] [--table-head-text:initial] [--table-head-tracking:initial] [--table-head-case:initial]\",\n \"card\": \"[--table-px:calc(var(--spacing)*5)] [--table-py:calc(var(--spacing)*3)] [--table-head-ink:var(--ink-soft)] [--table-head-text:var(--text-xs)] [--table-head-tracking:var(--tracking-wide)] [--table-head-case:uppercase] [&>thead>tr:hover]:bg-transparent\",\n} as const;\nexport type TableVariant = keyof typeof tableVariants;\n\nexport const tableDensities = {\n \"default\": \"[--table-dense-py:initial] [--table-head-h:initial]\",\n \"compact\": \"[--table-dense-py:calc(var(--spacing)*1.5)] [--table-head-h:calc(var(--spacing)*8)]\",\n} as const;\nexport type TableDensity = keyof typeof tableDensities;\n\nexport const TABLE_CARD = \"bg-card text-ink overflow-hidden rounded-xl border border-border shadow-sm\";\n\nexport const TABLE_HEADER = \"[&_tr]:border-b\";\n\nexport const TABLE_BODY = \"[&_tr:last-child]:border-0\";\n\nexport const TABLE_FOOTER = \"bg-muted/50 border-t border-border font-medium [&>tr]:last:border-b-0\";\n\nexport const TABLE_ROW = \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b border-border transition-colors\";\n\nexport const TABLE_HEAD = \"text-[color:var(--table-head-ink,var(--ink))] h-[var(--table-head-h,calc(var(--spacing)*10))] px-[var(--table-px,calc(var(--spacing)*2))] text-start align-middle font-medium whitespace-nowrap text-[length:var(--table-head-text)] tracking-[var(--table-head-tracking)] [text-transform:var(--table-head-case)] [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\";\n\nexport const TABLE_CELL = \"px-[var(--table-px,calc(var(--spacing)*2))] py-[var(--table-dense-py,var(--table-py,calc(var(--spacing)*2)))] align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\";\n\nexport const tableAligns = {\n \"start\": \"text-start\",\n \"end\": \"text-end tabular-nums\",\n} as const;\nexport type TableAlign = keyof typeof tableAligns;\n\nexport const TABLE_CAPTION = \"text-ink-soft mt-4 text-sm\";\n"],"mappings":"AAEO,MAAM,kBAAkB;AAExB,MAAM,QAAQ;AAEd,MAAM,gBAAgB;AAAA,EAC3B,WAAW;AAAA,EACX,QAAQ;AACV;AAGO,MAAM,iBAAiB;AAAA,EAC5B,WAAW;AAAA,EACX,WAAW;AACb;AAGO,MAAM,aAAa;AAEnB,MAAM,eAAe;AAErB,MAAM,aAAa;AAEnB,MAAM,eAAe;AAErB,MAAM,YAAY;AAElB,MAAM,aAAa;AAEnB,MAAM,aAAa;AAEnB,MAAM,cAAc;AAAA,EACzB,SAAS;AAAA,EACT,OAAO;AACT;AAGO,MAAM,gBAAgB;","names":[]}
@@ -1,7 +1,7 @@
1
- const TOGGLE_BASE = "inline-flex items-center justify-center gap-2 rounded-[var(--control-radius)] text-sm font-medium hover:bg-muted hover:text-ink-soft disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-hover data-[state=on]:text-ink [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-accent-error/20 aria-invalid:border-accent-error whitespace-nowrap";
1
+ const TOGGLE_BASE = "inline-flex items-center justify-center gap-2 rounded-[var(--control-radius)] text-sm font-medium hover:bg-muted hover:text-ink-soft disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-primary data-[state=on]:text-on-primary [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring outline-none transition-[color,box-shadow] aria-invalid:ring-accent-error/20 aria-invalid:border-accent-error whitespace-nowrap focus-visible:ring-0 focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring";
2
2
  const toggleVariantClasses = {
3
3
  "bare": "bg-transparent",
4
- "outline": "border border-input bg-transparent shadow-xs hover:bg-hover hover:text-ink"
4
+ "outline": "border border-input bg-transparent shadow-xs hover:bg-hover hover:text-ink data-[state=on]:border-primary"
5
5
  };
6
6
  const toggleSizeClasses = {
7
7
  "md": "h-9 px-2 min-w-9",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/generated/toggle.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const TOGGLE_BASE = \"inline-flex items-center justify-center gap-2 rounded-[var(--control-radius)] text-sm font-medium hover:bg-muted hover:text-ink-soft disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-hover data-[state=on]:text-ink [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-accent-error/20 aria-invalid:border-accent-error whitespace-nowrap\";\n\nexport const toggleVariantClasses = {\n \"bare\": \"bg-transparent\",\n \"outline\": \"border border-input bg-transparent shadow-xs hover:bg-hover hover:text-ink\",\n} as const;\nexport type ToggleVariant = keyof typeof toggleVariantClasses;\n\nexport const toggleSizeClasses = {\n \"md\": \"h-9 px-2 min-w-9\",\n \"xs\": \"h-7 px-1 min-w-7\",\n \"sm\": \"h-8 px-1.5 min-w-8\",\n \"lg\": \"h-10 px-2.5 min-w-10\",\n \"xl\": \"h-12 px-3 min-w-12\",\n} as const;\nexport type ToggleSize = keyof typeof toggleSizeClasses;\n"],"mappings":"AAEO,MAAM,cAAc;AAEpB,MAAM,uBAAuB;AAAA,EAClC,QAAQ;AAAA,EACR,WAAW;AACb;AAGO,MAAM,oBAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR;","names":[]}
1
+ {"version":3,"sources":["../../src/generated/toggle.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const TOGGLE_BASE = \"inline-flex items-center justify-center gap-2 rounded-[var(--control-radius)] text-sm font-medium hover:bg-muted hover:text-ink-soft disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-primary data-[state=on]:text-on-primary [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring outline-none transition-[color,box-shadow] aria-invalid:ring-accent-error/20 aria-invalid:border-accent-error whitespace-nowrap focus-visible:ring-0 focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\";\n\nexport const toggleVariantClasses = {\n \"bare\": \"bg-transparent\",\n \"outline\": \"border border-input bg-transparent shadow-xs hover:bg-hover hover:text-ink data-[state=on]:border-primary\",\n} as const;\nexport type ToggleVariant = keyof typeof toggleVariantClasses;\n\nexport const toggleSizeClasses = {\n \"md\": \"h-9 px-2 min-w-9\",\n \"xs\": \"h-7 px-1 min-w-7\",\n \"sm\": \"h-8 px-1.5 min-w-8\",\n \"lg\": \"h-10 px-2.5 min-w-10\",\n \"xl\": \"h-12 px-3 min-w-12\",\n} as const;\nexport type ToggleSize = keyof typeof toggleSizeClasses;\n"],"mappings":"AAEO,MAAM,cAAc;AAEpB,MAAM,uBAAuB;AAAA,EAClC,QAAQ;AAAA,EACR,WAAW;AACb;AAGO,MAAM,oBAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR;","names":[]}
package/dist/index.d.ts CHANGED
@@ -71,6 +71,21 @@ interface PortalProviderProps {
71
71
  declare function PortalProvider({ container, children }: PortalProviderProps): React.JSX.Element;
72
72
  declare function Portal({ children, container }: PortalProps): React.ReactPortal | null;
73
73
 
74
+ type LayerRef = React.RefObject<HTMLDivElement | null>;
75
+ /**
76
+ * Elements carrying this attribute are outside every layer without being a
77
+ * click away from any: a press there dismisses nothing (the toaster).
78
+ */
79
+ declare const LAYER_IGNORE_ATTR = "data-dismissable-layer-ignore";
80
+ /**
81
+ * Marks `children` as rendered inside `layer` (the ref `useDismissableLayer`
82
+ * returned), so a layer among them always stacks above it — even when both
83
+ * open in the same commit. Wrap the overlay's content in it.
84
+ */
85
+ declare function DismissableLayerScope({ layer, children }: {
86
+ layer: LayerRef;
87
+ children?: React.ReactNode;
88
+ }): React.JSX.Element;
74
89
  /** Why a layer is being dismissed: the event itself, for a caller that treats keys and pointers apart. */
75
90
  type DismissEvent = PointerEvent | KeyboardEvent;
76
91
  /**
@@ -78,14 +93,25 @@ type DismissEvent = PointerEvent | KeyboardEvent;
78
93
  * dep-light core of every overlay's "click away to close". Pass refs to any
79
94
  * nodes that should NOT count as outside (e.g. the trigger), via `exclude`.
80
95
  *
81
- * Layers stack, in the order they opened: Escape dismisses only the topmost
82
- * layer on this stack, and a pointer-down inside a layer opened above this one
83
- * is not outside it — so a Select's list inside a Dialog closes the list, not
84
- * the Dialog. The stack knows only the overlays built on this hook: a
85
- * `Drawer` or `CommandDialog` (Escape in their own React `onKeyDown`) is not
86
- * on it, and a menu that also closes on Escape in its React `onKeyDown` lets
87
- * the key bubble through React's tree to what holds it. Moving those onto the
88
- * stack is a follow-up.
96
+ * Layers stack: a layer rendered inside another's `DismissableLayerScope`
97
+ * sits above it, the rest in the order they opened. Escape dismisses only the
98
+ * topmost layer, and a pointer-down inside a layer above this one is not
99
+ * outside it — so a Select's list inside a Dialog closes the list, not the
100
+ * Dialog. The Escape goes to the layer that was on top when the key was
101
+ * pressed, even if a handler on its way closed that layer first.
102
+ *
103
+ * `modal: true` makes the layer a barrier: while it is open, the layers below
104
+ * ignore every pointer-down — a press on its scrim closes it alone. Elements
105
+ * marked with `LAYER_IGNORE_ATTR` (the toaster) are outside no layer.
106
+ *
107
+ * `pointerOutside: false` keeps the layer on the stack (it takes Escape, and
108
+ * the layers below see a pointer-down inside it as inside) but leaves outside
109
+ * clicks to the caller — for an overlay whose own scrim is what "outside"
110
+ * means (Drawer, CommandDialog).
111
+ *
112
+ * The stack is shared through `globalThis`, so every copy of this module on
113
+ * the page sees one stack; parent links need one React context, so they hold
114
+ * within a copy only.
89
115
  *
90
116
  * Mirrors the dismiss behaviour Rust expresses with a full-screen backdrop.
91
117
  */
@@ -93,6 +119,10 @@ declare function useDismissableLayer(opts: {
93
119
  enabled: boolean;
94
120
  onDismiss: (event: DismissEvent) => void;
95
121
  exclude?: Array<React.RefObject<Element | null>>;
122
+ /** Dismiss on a pointer-down outside the layer. Default `true`. */
123
+ pointerOutside?: boolean;
124
+ /** Bar the layers below from pointer-downs while open. Default `false`. */
125
+ modal?: boolean;
96
126
  }): React.RefObject<HTMLDivElement | null>;
97
127
 
98
128
  type Side = "top" | "right" | "bottom" | "left";
@@ -196,10 +226,15 @@ declare function usePresence(present: boolean): {
196
226
  * Returns an `onKeyDown` to spread on the container and the active index; items
197
227
  * should set `tabIndex={index === activeIndex ? 0 : -1}`.
198
228
  *
229
+ * `count` may be a getter: containers whose items are only known from the DOM
230
+ * (menus with conditionally rendered or disabled items, inline sub-menus) pass
231
+ * one so the bound is read at keydown time — never during render, which keeps
232
+ * the hook safe under SSR.
233
+ *
199
234
  * Mirrors the keyboard navigation Rust drives with a focused-index signal.
200
235
  */
201
236
  declare function useRovingFocus(opts: {
202
- count: number;
237
+ count: number | (() => number);
203
238
  orientation?: "horizontal" | "vertical" | "both";
204
239
  loop?: boolean;
205
240
  initial?: number;
@@ -697,15 +732,74 @@ interface ServerErrorProps {
697
732
  /** 500 — server error. The "Try again" button runs `reset` or reloads the page. */
698
733
  declare function ServerError({ linkComponent, homeHref, reset }: ServerErrorProps): React.JSX.Element;
699
734
 
700
- declare function Table({ className, ...props }: React.ComponentProps<"table">): React.JSX.Element;
735
+ declare const tableVariants: {
736
+ readonly default: "[--table-px:initial] [--table-py:initial] [--table-head-ink:initial] [--table-head-text:initial] [--table-head-tracking:initial] [--table-head-case:initial]";
737
+ readonly card: "[--table-px:calc(var(--spacing)*5)] [--table-py:calc(var(--spacing)*3)] [--table-head-ink:var(--ink-soft)] [--table-head-text:var(--text-xs)] [--table-head-tracking:var(--tracking-wide)] [--table-head-case:uppercase] [&>thead>tr:hover]:bg-transparent";
738
+ };
739
+ type TableVariant = keyof typeof tableVariants;
740
+ declare const tableDensities: {
741
+ readonly default: "[--table-dense-py:initial] [--table-head-h:initial]";
742
+ readonly compact: "[--table-dense-py:calc(var(--spacing)*1.5)] [--table-head-h:calc(var(--spacing)*8)]";
743
+ };
744
+ type TableDensity = keyof typeof tableDensities;
745
+ declare const tableAligns: {
746
+ readonly start: "text-start";
747
+ readonly end: "text-end tabular-nums";
748
+ };
749
+ type TableAlign = keyof typeof tableAligns;
750
+
751
+ interface TableProps extends React.ComponentProps<"table"> {
752
+ variant?: TableVariant;
753
+ density?: TableDensity;
754
+ }
755
+ declare function Table({ variant, density, className, ...props }: TableProps): React.JSX.Element;
756
+ /** The surface a `variant="card"` table sits in, edge to edge. */
757
+ declare function TableCard({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
701
758
  declare function TableHeader({ className, ...props }: React.ComponentProps<"thead">): React.JSX.Element;
702
759
  declare function TableBody({ className, ...props }: React.ComponentProps<"tbody">): React.JSX.Element;
703
760
  declare function TableFooter({ className, ...props }: React.ComponentProps<"tfoot">): React.JSX.Element;
704
761
  declare function TableRow({ className, ...props }: React.ComponentProps<"tr">): React.JSX.Element;
705
- declare function TableHead({ className, ...props }: React.ComponentProps<"th">): React.JSX.Element;
706
- declare function TableCell({ className, ...props }: React.ComponentProps<"td">): React.JSX.Element;
762
+ interface TableHeadProps extends Omit<React.ComponentProps<"th">, "align"> {
763
+ align?: TableAlign;
764
+ }
765
+ declare function TableHead({ align, className, ...props }: TableHeadProps): React.JSX.Element;
766
+ interface TableCellProps extends Omit<React.ComponentProps<"td">, "align"> {
767
+ align?: TableAlign;
768
+ }
769
+ declare function TableCell({ align, className, ...props }: TableCellProps): React.JSX.Element;
707
770
  declare function TableCaption({ className, ...props }: React.ComponentProps<"caption">): React.JSX.Element;
708
771
 
772
+ type ListRowsVariant = "plain" | "card";
773
+ interface ListRowsProps extends React.ComponentProps<"ul"> {
774
+ variant?: ListRowsVariant;
775
+ }
776
+ declare function ListRows({ variant, className, ...props }: ListRowsProps): React.JSX.Element;
777
+ interface ListRowProps extends Omit<React.ComponentProps<"li">, "value"> {
778
+ /** The row's title. Omit it (and `value`) to lay the row out yourself. */
779
+ label?: React.ReactNode;
780
+ /** A caption a step down under the label. */
781
+ description?: React.ReactNode;
782
+ /** Trailing value, right-aligned and truncated rather than pushing the row wide. */
783
+ value?: React.ReactNode;
784
+ }
785
+ /**
786
+ * One row: label (and description) leading, value trailing, then `children`
787
+ * (a badge, an action). With neither `label` nor `value` the children are the
788
+ * whole row.
789
+ */
790
+ declare function ListRow({ label, description, value, className, children, ...props }: ListRowProps): React.JSX.Element;
791
+ interface ListRowLabelProps extends Omit<React.ComponentProps<"div">, "title"> {
792
+ description?: React.ReactNode;
793
+ }
794
+ /** The leading block on its own, for a row you compose by hand. */
795
+ declare function ListRowLabel({ description, className, children, ...props }: ListRowLabelProps): React.JSX.Element;
796
+ /**
797
+ * The trailing value. It shares the label's type step, so the muted tone and
798
+ * the lighter weight are what keep the label reading first; digits are tabular
799
+ * so a figure in one row lines up with the next.
800
+ */
801
+ declare function ListRowValue({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
802
+
709
803
  type AccordionType = "single" | "multiple";
710
804
  interface AccordionProps extends Omit<React.ComponentProps<"div">, "onChange"> {
711
805
  type?: AccordionType;
@@ -822,7 +916,7 @@ declare function TabsContent({ className, value, children, ...props }: TabsConte
822
916
 
823
917
  declare const toggleVariantClasses: {
824
918
  readonly bare: "bg-transparent";
825
- readonly outline: "border border-input bg-transparent shadow-xs hover:bg-hover hover:text-ink";
919
+ readonly outline: "border border-input bg-transparent shadow-xs hover:bg-hover hover:text-ink data-[state=on]:border-primary";
826
920
  };
827
921
  type ToggleVariant = keyof typeof toggleVariantClasses;
828
922
  declare const toggleSizeClasses: {
@@ -1104,15 +1198,18 @@ interface DropdownMenuTriggerProps extends React.ComponentProps<"button"> {
1104
1198
  declare function DropdownMenuTrigger({ asChild, onClick, ...props }: DropdownMenuTriggerProps): React.JSX.Element;
1105
1199
  interface DropdownMenuContentProps extends React.ComponentProps<"div"> {
1106
1200
  sideOffset?: number;
1201
+ align?: "start" | "center" | "end";
1107
1202
  }
1108
- declare function DropdownMenuContent({ className, sideOffset, children, ...props }: DropdownMenuContentProps): React.JSX.Element | null;
1203
+ declare function DropdownMenuContent({ className, sideOffset, align, children, ...props }: DropdownMenuContentProps): React.JSX.Element | null;
1109
1204
  declare function DropdownMenuGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
1110
1205
  interface DropdownMenuItemProps extends React.ComponentProps<"div"> {
1206
+ /** Render the child (a link) as the item. */
1207
+ asChild?: boolean;
1111
1208
  inset?: boolean;
1112
1209
  variant?: "neutral" | "destructive";
1113
1210
  disabled?: boolean;
1114
1211
  }
1115
- declare function DropdownMenuItem({ className, inset, variant, disabled, onClick, onKeyDown, ...props }: DropdownMenuItemProps): React.JSX.Element;
1212
+ declare function DropdownMenuItem({ asChild, className, inset, variant, disabled, onClick, onKeyDown, ...props }: DropdownMenuItemProps): React.JSX.Element;
1116
1213
  interface DropdownMenuCheckboxItemProps extends React.ComponentProps<"div"> {
1117
1214
  checked?: boolean;
1118
1215
  disabled?: boolean;
@@ -1494,16 +1591,18 @@ interface CommandProps extends React.ComponentProps<"div"> {
1494
1591
  search?: string;
1495
1592
  defaultSearch?: string;
1496
1593
  onSearchChange?: (search: string) => void;
1594
+ shouldFilter?: boolean;
1497
1595
  }
1498
- declare function Command({ className, search, defaultSearch, onSearchChange, children, ...props }: CommandProps): React.JSX.Element;
1596
+ declare function Command({ className, search, defaultSearch, onSearchChange, shouldFilter, children, ref, onKeyDown, ...props }: CommandProps): React.JSX.Element;
1499
1597
  interface CommandDialogProps {
1500
1598
  open?: boolean;
1501
1599
  defaultOpen?: boolean;
1502
1600
  onOpenChange?: (open: boolean) => void;
1601
+ shouldFilter?: boolean;
1503
1602
  className?: string;
1504
1603
  children?: React.ReactNode;
1505
1604
  }
1506
- declare function CommandDialog({ open, defaultOpen, onOpenChange, className, children, }: CommandDialogProps): React.JSX.Element | null;
1605
+ declare function CommandDialog({ open, defaultOpen, onOpenChange, shouldFilter, className, children, }: CommandDialogProps): React.JSX.Element | null;
1507
1606
  declare function CommandInput({ className, ...props }: React.ComponentProps<"input">): React.JSX.Element;
1508
1607
  declare function CommandList({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
1509
1608
  declare function CommandEmpty({ className, children, ...props }: React.ComponentProps<"div">): React.JSX.Element | null;
@@ -1516,7 +1615,7 @@ interface CommandItemProps extends Omit<React.ComponentProps<"div">, "onSelect">
1516
1615
  disabled?: boolean;
1517
1616
  onSelect?: (value: string) => void;
1518
1617
  }
1519
- declare function CommandItem({ className, value, disabled, onSelect, children, ...props }: CommandItemProps): React.JSX.Element | null;
1618
+ declare function CommandItem({ className, value, disabled, onSelect, id: idProp, onPointerMove, children, ...props }: CommandItemProps): React.JSX.Element | null;
1520
1619
  declare function CommandSeparator({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
1521
1620
  declare function CommandShortcut({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
1522
1621
 
@@ -1895,6 +1994,8 @@ interface AppShellProps extends React.ComponentProps<"div"> {
1895
1994
  rail?: React.ReactNode;
1896
1995
  /** The phone's tab bar — a `BottomTabBar`. Pinned to the viewport bottom below `breakpoint`. */
1897
1996
  tabBar?: React.ReactNode;
1997
+ /** A `TopBar`, pinned over the column from `breakpoint` up (a phone titles its screen with `MobileAppBar`). */
1998
+ topBar?: React.ReactNode;
1898
1999
  /** Strips above the page (`SystemBanner`s). An empty slot takes no room. */
1899
2000
  banner?: React.ReactNode;
1900
2001
  /** Default `lg`. */
@@ -1904,15 +2005,15 @@ interface AppShellProps extends React.ComponentProps<"div"> {
1904
2005
  }
1905
2006
  /**
1906
2007
  * The signed-in app's frame: a rail beside a content column on a wide screen, a
1907
- * bottom tab bar under it on a phone. Layout only — the nav, the banners and the
1908
- * page are slots, so the shell knows nothing about routes, roles or data.
2008
+ * bottom tab bar under it on a phone. Layout only — the nav, the top bar, the banners
2009
+ * and the page are slots, so the shell knows nothing about routes, roles or data.
1909
2010
  *
1910
2011
  * Fills the viewport less `--ev-shell-offset` (the room a host shell's own header
1911
2012
  * takes); the rail sticks under that offset at full remaining height and scrolls
1912
2013
  * by itself when it cannot fit. The column reserves the tab bar's height plus
1913
2014
  * the bottom safe area, so the bar never covers content.
1914
2015
  */
1915
- declare function AppShell({ rail, tabBar, banner, breakpoint, mainProps, className, children, ...props }: AppShellProps): React.JSX.Element;
2016
+ declare function AppShell({ rail, tabBar, topBar, banner, breakpoint, mainProps, className, children, ...props }: AppShellProps): React.JSX.Element;
1916
2017
 
1917
2018
  /**
1918
2019
  * How a {@link NavItem} decides it is the current one.
@@ -2112,6 +2213,51 @@ interface BottomTabBarProps extends Omit<React.ComponentProps<"nav">, "children"
2112
2213
  */
2113
2214
  declare function BottomTabBar({ items, pathname, linkComponent, onItemIntent, onNavigate, labels, className, ...props }: BottomTabBarProps): React.JSX.Element;
2114
2215
 
2216
+ interface TopBarProps extends React.ComponentProps<"header"> {
2217
+ /** The app switcher, or the service's name. */
2218
+ start?: React.ReactNode;
2219
+ /** Service stats, then an `AccountMenu` last. */
2220
+ end?: React.ReactNode;
2221
+ }
2222
+ /**
2223
+ * The wide screen's utility bar over the content column: who and where, never
2224
+ * product nav (that is the rail's). Layout only — `AppShell.topBar` pins it.
2225
+ */
2226
+ declare function TopBar({ start, end, className, ...props }: TopBarProps): React.JSX.Element;
2227
+
2228
+ interface AccountMenuLabels {
2229
+ /** Accessible name of the trigger. Default `"Account"`. */
2230
+ trigger?: string;
2231
+ /** Default `"Manage account"`. */
2232
+ manage?: string;
2233
+ /** Default `"Switch account"`. */
2234
+ switchAccount?: string;
2235
+ /** Default `"Sign out"`. */
2236
+ signOut?: string;
2237
+ }
2238
+ interface AccountMenuProps {
2239
+ account: {
2240
+ name?: string | null | undefined;
2241
+ email: string;
2242
+ };
2243
+ /** The account center, on the identity provider's origin; no item without it. */
2244
+ manageHref?: string | undefined;
2245
+ /** A full page load to the sign-in that offers the account chooser. */
2246
+ switchHref: string;
2247
+ /** The service's own entries, between the account center and switching. Draws `label`, `icon`, `external`. */
2248
+ groups?: readonly NavGroup[];
2249
+ onSignOut: () => void;
2250
+ linkComponent?: React.ElementType;
2251
+ labels?: AccountMenuLabels;
2252
+ className?: string;
2253
+ }
2254
+ /**
2255
+ * Who is signed in, top right. The order is fixed — the account, the account
2256
+ * center, the service's groups, switching, signing out — so every service's
2257
+ * menu reads the same; a service adds groups and nothing else.
2258
+ */
2259
+ declare function AccountMenu({ account, manageHref, switchHref, groups, onSignOut, linkComponent, labels, className, }: AccountMenuProps): React.JSX.Element;
2260
+
2115
2261
  interface MobileAppBarLabels {
2116
2262
  /** Accessible name of the back control. Default `"Back"`. */
2117
2263
  back?: string;
@@ -2307,4 +2453,4 @@ interface SettledProps extends Omit<React.ComponentProps<"div">, "children"> {
2307
2453
  */
2308
2454
  declare function Settled({ loading, skeleton, children, ...props }: SettledProps): React.JSX.Element;
2309
2455
 
2310
- export { type Accent, Accordion, AccordionContent, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, type AlertDialogActionProps, AlertDialogCancel, type AlertDialogCancelProps, AlertDialogContent, type AlertDialogContentProps, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, type AlertDialogOverlayProps, type AlertDialogProps, AlertDialogTitle, AlertDialogTrigger, type AlertDialogTriggerProps, type AlertProps, AlertTitle, type AlertVariant, type Align, AppShell, type AppShellProps, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, type BadgeVariant, type BookSide, BottomTabBar, type BottomTabBarLabels, type BottomTabBarProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, type ButtonGroupOrientation, type ButtonGroupProps, ButtonGroupSeparator, ButtonGroupText, type ButtonGroupTextProps, type ButtonProps, type ButtonSize, type ButtonVariant, type ButtonVariantsOptions, Calendar, type CalendarProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselEdgeFade, CarouselItem, CarouselNext, CarouselPrevious, type CarouselProps, type ChartConfig, ChartContainer, type ChartItem, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Check, Checkbox, type CheckboxProps, Collapsible, CollapsibleContent, type CollapsibleProps, CollapsibleTrigger, Command, CommandDialog, type CommandDialogProps, CommandEmpty, CommandGroup, type CommandGroupProps, CommandInput, CommandItem, type CommandItemProps, CommandList, type CommandProps, CommandSeparator, CommandShortcut, Container, type ContainerProps, ContextMenu, ContextMenuCheckboxItem, type ContextMenuCheckboxItemProps, ContextMenuContent, ContextMenuGroup, ContextMenuItem, type ContextMenuItemProps, ContextMenuLabel, type ContextMenuLabelProps, ContextMenuPortal, type ContextMenuProps, ContextMenuRadioGroup, type ContextMenuRadioGroupProps, ContextMenuRadioItem, type ContextMenuRadioItemProps, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, type ContextMenuSubProps, ContextMenuSubTrigger, type ContextMenuSubTriggerProps, ContextMenuTrigger, type ContextMenuTriggerProps, DateTimePicker, type DateTimePickerLabels, type DateTimePickerProps, Dialog, DialogClose, type DialogCloseProps, DialogContent, type DialogContentProps, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, type DialogOverlayProps, DialogPortal, type DialogPortalProps, type DialogProps, DialogTitle, DialogTrigger, type DialogTriggerProps, type DismissEvent, Display, Drawer, DrawerClose, type DrawerCloseProps, DrawerContent, DrawerDescription, type DrawerDirection, DrawerFooter, DrawerHeader, DrawerOverlay, type DrawerProps, DrawerTitle, DrawerTrigger, type DrawerTriggerProps, DropdownMenu, DropdownMenuCheckboxItem, type DropdownMenuCheckboxItemProps, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, type DropdownMenuLabelProps, DropdownMenuPortal, type DropdownMenuProps, DropdownMenuRadioGroup, type DropdownMenuRadioGroupProps, DropdownMenuRadioItem, type DropdownMenuRadioItemProps, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, type DropdownMenuSubProps, DropdownMenuSubTrigger, type DropdownMenuSubTriggerProps, DropdownMenuTrigger, type DropdownMenuTriggerProps, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, type EmptyMediaProps, type EmptyMediaVariant, EmptyTitle, Eyebrow, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, type FieldOrientation, FieldSeparator, FieldSet, FieldTitle, type FloatingResult, Footer, type FooterLink, type FooterLinkGroup, type FooterOffice, type FooterProps, Forbidden, Form, FormControl, FormDescription, FormItem, FormLabel, FormMessage, HoverCard, HoverCardContent, type HoverCardContentProps, type HoverCardProps, HoverCardTrigger, type HoverCardTriggerProps, type HoverIntentHandlers, InfoTip, InfoTipContent, type InfoTipContentProps, type InfoTipProps, InfoTipTrigger, type InfoTipTriggerProps, Input, InputGroup, InputGroupAddon, type InputGroupAddonAlign, type InputGroupAddonProps, InputGroupButton, type InputGroupButtonProps, type InputGroupButtonSize, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, type InputOTPProps, InputOTPSeparator, InputOTPSlot, type InputOTPSlotProps, type InputProps, type InputSize, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, type ItemMediaProps, type ItemMediaVariant, type ItemProps, ItemSeparator, type ItemSize, ItemTitle, type ItemVariant, Kbd, KbdGroup, Label, Logo, type LogoProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, type MenubarMenuProps, MenubarRadioGroup, type MenubarRadioGroupProps, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, type MenubarSubProps, MenubarSubTrigger, MenubarTrigger, MobileAppBar, type MobileAppBarBack, type MobileAppBarLabels, type MobileAppBarProps, NativeSelect, NativeSelectGroup, NativeSelectOption, type NativeSelectProps, type NativeSelectSize, NavBadge, type NavBadgeProps, type NavBadgeVariant, NavDot, type NavDotProps, type NavDotTone, type NavGroup, type NavItem, type NavItemState, type NavMatch, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, type NavigationMenuItemProps, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NotFound, OpenOrdersEmpty, OrderBook, OrderBookHead, type OrderBookHeadProps, OrderBookRow, type OrderBookRowProps, OrderBookSpread, OrderForm, OrderFormRow, type OrderFormRowProps, OrderFormSubmit, type OrderFormSubmitProps, type OrderSide, PageFrame, type PageFrameProps, type PageFrameWidth, PageHeading, type PageHeadingProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, type PaginationLinkProps, PaginationNext, PaginationPrevious, type Polarity, Popover, PopoverAnchor, type PopoverAnchorProps, PopoverContent, type PopoverContentProps, type PopoverProps, PopoverTrigger, type PopoverTriggerProps, Portal, type PortalProps, PortalProvider, type PortalProviderProps, Progress, type ProgressProps, Prose, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, type ResizableDirection, ResizableHandle, type ResizableHandleProps, ResizablePanel, ResizablePanelGroup, type ResizablePanelGroupProps, type ResizablePanelProps, ResourceError, type ResourceErrorLabels, type ResourceErrorProps, ScrollArea, ScrollBar, type ScrollBarOrientation, type ScrollBarProps, Section, SectionDescriptor, type SectionDescriptorProps, SectionHead, type SectionHeadProps, SectionLabel, type SectionLabelProps, type SectionLabelTone, SectionNav, type SectionNavGroup, type SectionNavItem, type SectionNavLabels, type SectionNavProps, type SectionProps, Select, SelectContent, type SelectContentProps, SelectGroup, SelectItem, type SelectItemProps, SelectLabel, type SelectProps, SelectSeparator, SelectTrigger, type SelectTriggerProps, type SelectTriggerSize, SelectValue, type SelectValueProps, Separator, type SeparatorOrientation, type SeparatorProps, ServerError, type ServerErrorProps, Settled, type SettledProps, Sheet, SheetClose, type SheetCloseProps, SheetContent, type SheetContentProps, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, type SheetOverlayProps, type SheetProps, SheetTitle, SheetTrigger, type SheetTriggerProps, type ShellBreakpoint, ShellNav, type ShellNavLabels, type ShellNavProps, type Side, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, type SidebarGroupLabelProps, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuButton, type SidebarMenuButtonProps, type SidebarMenuButtonSize, SidebarMenuItem, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, type SliderProps, Slot, type SlotProps, Spinner, Stat, type StatProps, type StatusLinkData, type StatusPageProps, StatusScreen, type StatusScreenProps, type Surface, Switch, type SwitchProps, SystemBanner, type SystemBannerLabels, type SystemBannerProps, type SystemBannerTone, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsProps, TabsTrigger, type TabsTriggerProps, Terminal, type TerminalArea, TerminalChart, TerminalPane, TerminalPaneBody, TerminalPaneHeader, type TerminalPaneProps, TerminalTicker, Textarea, type TextareaProps, type TextareaSize, TickerStat, type TickerStatProps, type Toast, type ToastFn, type ToastOptions, type ToastPosition, type ToastState, type ToastVariant, Toaster, type ToasterProps, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, type ToggleProps, type ToggleSize, type ToggleVariant, type ToggleVariantsOptions, Tooltip, TooltipContent, type TooltipContentProps, type TooltipProps, TooltipProvider, type TooltipProviderProps, TooltipTrigger, type TooltipTriggerProps, TradesTapeRow, type TradesTapeRowProps, buttonVariants, cn, isNavItemActive, isPlainLeftClick, mergeRefs, navItemMatch, navigationMenuTriggerStyle, resolveActiveNavItem, statusCtaClass, toast, toggleVariants, useControllableState, useDismissableLayer, useFloating, useFocusScope, useHoverIntent, usePendingNavigation, usePresence, useRovingFocus, useSidebar };
2456
+ export { type Accent, Accordion, AccordionContent, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, AccountMenu, type AccountMenuLabels, type AccountMenuProps, Alert, AlertDescription, AlertDialog, AlertDialogAction, type AlertDialogActionProps, AlertDialogCancel, type AlertDialogCancelProps, AlertDialogContent, type AlertDialogContentProps, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, type AlertDialogOverlayProps, type AlertDialogProps, AlertDialogTitle, AlertDialogTrigger, type AlertDialogTriggerProps, type AlertProps, AlertTitle, type AlertVariant, type Align, AppShell, type AppShellProps, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, type BadgeVariant, type BookSide, BottomTabBar, type BottomTabBarLabels, type BottomTabBarProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, type ButtonGroupOrientation, type ButtonGroupProps, ButtonGroupSeparator, ButtonGroupText, type ButtonGroupTextProps, type ButtonProps, type ButtonSize, type ButtonVariant, type ButtonVariantsOptions, Calendar, type CalendarProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselEdgeFade, CarouselItem, CarouselNext, CarouselPrevious, type CarouselProps, type ChartConfig, ChartContainer, type ChartItem, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Check, Checkbox, type CheckboxProps, Collapsible, CollapsibleContent, type CollapsibleProps, CollapsibleTrigger, Command, CommandDialog, type CommandDialogProps, CommandEmpty, CommandGroup, type CommandGroupProps, CommandInput, CommandItem, type CommandItemProps, CommandList, type CommandProps, CommandSeparator, CommandShortcut, Container, type ContainerProps, ContextMenu, ContextMenuCheckboxItem, type ContextMenuCheckboxItemProps, ContextMenuContent, ContextMenuGroup, ContextMenuItem, type ContextMenuItemProps, ContextMenuLabel, type ContextMenuLabelProps, ContextMenuPortal, type ContextMenuProps, ContextMenuRadioGroup, type ContextMenuRadioGroupProps, ContextMenuRadioItem, type ContextMenuRadioItemProps, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, type ContextMenuSubProps, ContextMenuSubTrigger, type ContextMenuSubTriggerProps, ContextMenuTrigger, type ContextMenuTriggerProps, DateTimePicker, type DateTimePickerLabels, type DateTimePickerProps, Dialog, DialogClose, type DialogCloseProps, DialogContent, type DialogContentProps, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, type DialogOverlayProps, DialogPortal, type DialogPortalProps, type DialogProps, DialogTitle, DialogTrigger, type DialogTriggerProps, type DismissEvent, DismissableLayerScope, Display, Drawer, DrawerClose, type DrawerCloseProps, DrawerContent, DrawerDescription, type DrawerDirection, DrawerFooter, DrawerHeader, DrawerOverlay, type DrawerProps, DrawerTitle, DrawerTrigger, type DrawerTriggerProps, DropdownMenu, DropdownMenuCheckboxItem, type DropdownMenuCheckboxItemProps, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, type DropdownMenuLabelProps, DropdownMenuPortal, type DropdownMenuProps, DropdownMenuRadioGroup, type DropdownMenuRadioGroupProps, DropdownMenuRadioItem, type DropdownMenuRadioItemProps, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, type DropdownMenuSubProps, DropdownMenuSubTrigger, type DropdownMenuSubTriggerProps, DropdownMenuTrigger, type DropdownMenuTriggerProps, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, type EmptyMediaProps, type EmptyMediaVariant, EmptyTitle, Eyebrow, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, type FieldOrientation, FieldSeparator, FieldSet, FieldTitle, type FloatingResult, Footer, type FooterLink, type FooterLinkGroup, type FooterOffice, type FooterProps, Forbidden, Form, FormControl, FormDescription, FormItem, FormLabel, FormMessage, HoverCard, HoverCardContent, type HoverCardContentProps, type HoverCardProps, HoverCardTrigger, type HoverCardTriggerProps, type HoverIntentHandlers, InfoTip, InfoTipContent, type InfoTipContentProps, type InfoTipProps, InfoTipTrigger, type InfoTipTriggerProps, Input, InputGroup, InputGroupAddon, type InputGroupAddonAlign, type InputGroupAddonProps, InputGroupButton, type InputGroupButtonProps, type InputGroupButtonSize, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, type InputOTPProps, InputOTPSeparator, InputOTPSlot, type InputOTPSlotProps, type InputProps, type InputSize, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, type ItemMediaProps, type ItemMediaVariant, type ItemProps, ItemSeparator, type ItemSize, ItemTitle, type ItemVariant, Kbd, KbdGroup, LAYER_IGNORE_ATTR, Label, ListRow, ListRowLabel, type ListRowLabelProps, type ListRowProps, ListRowValue, ListRows, type ListRowsProps, type ListRowsVariant, Logo, type LogoProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, type MenubarMenuProps, MenubarRadioGroup, type MenubarRadioGroupProps, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, type MenubarSubProps, MenubarSubTrigger, MenubarTrigger, MobileAppBar, type MobileAppBarBack, type MobileAppBarLabels, type MobileAppBarProps, NativeSelect, NativeSelectGroup, NativeSelectOption, type NativeSelectProps, type NativeSelectSize, NavBadge, type NavBadgeProps, type NavBadgeVariant, NavDot, type NavDotProps, type NavDotTone, type NavGroup, type NavItem, type NavItemState, type NavMatch, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, type NavigationMenuItemProps, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NotFound, OpenOrdersEmpty, OrderBook, OrderBookHead, type OrderBookHeadProps, OrderBookRow, type OrderBookRowProps, OrderBookSpread, OrderForm, OrderFormRow, type OrderFormRowProps, OrderFormSubmit, type OrderFormSubmitProps, type OrderSide, PageFrame, type PageFrameProps, type PageFrameWidth, PageHeading, type PageHeadingProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, type PaginationLinkProps, PaginationNext, PaginationPrevious, type Polarity, Popover, PopoverAnchor, type PopoverAnchorProps, PopoverContent, type PopoverContentProps, type PopoverProps, PopoverTrigger, type PopoverTriggerProps, Portal, type PortalProps, PortalProvider, type PortalProviderProps, Progress, type ProgressProps, Prose, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, type ResizableDirection, ResizableHandle, type ResizableHandleProps, ResizablePanel, ResizablePanelGroup, type ResizablePanelGroupProps, type ResizablePanelProps, ResourceError, type ResourceErrorLabels, type ResourceErrorProps, ScrollArea, ScrollBar, type ScrollBarOrientation, type ScrollBarProps, Section, SectionDescriptor, type SectionDescriptorProps, SectionHead, type SectionHeadProps, SectionLabel, type SectionLabelProps, type SectionLabelTone, SectionNav, type SectionNavGroup, type SectionNavItem, type SectionNavLabels, type SectionNavProps, type SectionProps, Select, SelectContent, type SelectContentProps, SelectGroup, SelectItem, type SelectItemProps, SelectLabel, type SelectProps, SelectSeparator, SelectTrigger, type SelectTriggerProps, type SelectTriggerSize, SelectValue, type SelectValueProps, Separator, type SeparatorOrientation, type SeparatorProps, ServerError, type ServerErrorProps, Settled, type SettledProps, Sheet, SheetClose, type SheetCloseProps, SheetContent, type SheetContentProps, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, type SheetOverlayProps, type SheetProps, SheetTitle, SheetTrigger, type SheetTriggerProps, type ShellBreakpoint, ShellNav, type ShellNavLabels, type ShellNavProps, type Side, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, type SidebarGroupLabelProps, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuButton, type SidebarMenuButtonProps, type SidebarMenuButtonSize, SidebarMenuItem, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, type SliderProps, Slot, type SlotProps, Spinner, Stat, type StatProps, type StatusLinkData, type StatusPageProps, StatusScreen, type StatusScreenProps, type Surface, Switch, type SwitchProps, SystemBanner, type SystemBannerLabels, type SystemBannerProps, type SystemBannerTone, Table, type TableAlign, TableBody, TableCaption, TableCard, TableCell, type TableCellProps, type TableDensity, TableFooter, TableHead, type TableHeadProps, TableHeader, type TableProps, TableRow, type TableVariant, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsProps, TabsTrigger, type TabsTriggerProps, Terminal, type TerminalArea, TerminalChart, TerminalPane, TerminalPaneBody, TerminalPaneHeader, type TerminalPaneProps, TerminalTicker, Textarea, type TextareaProps, type TextareaSize, TickerStat, type TickerStatProps, type Toast, type ToastFn, type ToastOptions, type ToastPosition, type ToastState, type ToastVariant, Toaster, type ToasterProps, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, type ToggleProps, type ToggleSize, type ToggleVariant, type ToggleVariantsOptions, Tooltip, TooltipContent, type TooltipContentProps, type TooltipProps, TooltipProvider, type TooltipProviderProps, TooltipTrigger, type TooltipTriggerProps, TopBar, type TopBarProps, TradesTapeRow, type TradesTapeRowProps, buttonVariants, cn, isNavItemActive, isPlainLeftClick, mergeRefs, navItemMatch, navigationMenuTriggerStyle, resolveActiveNavItem, statusCtaClass, toast, toggleVariants, useControllableState, useDismissableLayer, useFloating, useFocusScope, useHoverIntent, usePendingNavigation, usePresence, useRovingFocus, useSidebar };
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ export { cn } from "./lib/cn.js";
2
2
  export { Slot } from "./primitives/slot.js";
3
3
  export { useControllableState } from "./primitives/use-controllable-state.js";
4
4
  export { Portal, PortalProvider } from "./primitives/portal.js";
5
- export { useDismissableLayer } from "./primitives/dismissable-layer.js";
5
+ export { useDismissableLayer, DismissableLayerScope, LAYER_IGNORE_ATTR } from "./primitives/dismissable-layer.js";
6
6
  export { useFloating } from "./primitives/use-floating.js";
7
7
  export { useFocusScope } from "./primitives/focus-scope.js";
8
8
  export { usePresence } from "./primitives/presence.js";
@@ -33,7 +33,8 @@ export { Separator } from "./components/separator.js";
33
33
  export { Skeleton } from "./components/skeleton.js";
34
34
  export { Spinner } from "./components/spinner.js";
35
35
  export { StatusScreen, NotFound, Forbidden, ServerError, statusCtaClass, } from "./components/status-screen.js";
36
- export { Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption, } from "./components/table.js";
36
+ export { Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption, TableCard, } from "./components/table.js";
37
+ export { ListRows, ListRow, ListRowLabel, ListRowValue, } from "./components/list-rows.js";
37
38
  export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "./components/accordion.js";
38
39
  export { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "./components/collapsible.js";
39
40
  export { Container, } from "./components/container.js";
@@ -77,6 +78,8 @@ export { usePendingNavigation } from "./components/use-shell-nav.js";
77
78
  export { ShellNav } from "./components/shell-nav.js";
78
79
  export { NavBadge, NavDot } from "./components/nav-badge.js";
79
80
  export { BottomTabBar } from "./components/bottom-tab-bar.js";
81
+ export { TopBar } from "./components/top-bar.js";
82
+ export { AccountMenu } from "./components/account-menu.js";
80
83
  export { MobileAppBar } from "./components/mobile-app-bar.js";
81
84
  export { PageFrame, PageHeading, SectionLabel } from "./components/page-frame.js";
82
85
  export { SectionNav } from "./components/section-nav.js";