About this set
A file list with per-row actions and a bulk action bar. Each row ends with a download button and a more actions button that opens a small menu with Rename, Duplicate, Share and Delete. The two icon buttons fade in when the row is hovered or when anything in it has keyboard focus, stay visible while the row’s menu is open, and are always visible on touch screens that cannot hover. Above the table, a tinted bar holds a select-all checkbox, a live count such as 2 rows selected, and Export, Move and Delete buttons. The select-all box shows checked, cleared or the mixed state to match the row checkboxes, and clicking it selects or clears them all. The menus use the HTML popover attribute, so they open in the top layer and are never clipped by the scrolling table, close on Escape or an outside click, and return focus to their button. A few lines of script place each menu under its button and close it if the page scrolls. The Bootstrap version styles the menus with .dropdown-menu and .dropdown-item without loading Bootstrap’s JavaScript.
What’s included
- Row actions revealed on hover and on keyboard focus
- Always visible on touch screens
- Popover menus that a scrolling table cannot clip
- Select-all checkbox with a mixed state
- Live selected-row count in the bulk bar
Accessibility
Every checkbox and icon button has an accessible name that includes the file name, the empty header cells have hidden text, and the selected count is a role="status" region. Menus open with the native popover behaviour, so Escape closes them and focus returns to the button. All controls show a 2px indigo focus outline, icon colours reach 3:1, and the fade is removed under prefers-reduced-motion.
Customise it
The accent is #4f46e5 on the checkboxes, focus rings and bulk bar text; the bulk bar background is #eef2ff. Menu width, radius and shadow are on .pop (plain CSS), the --bs-dropdown-* variables on .row-menu (Bootstrap) or the classes on each popover (Tailwind).




















