shadcn.io is not affiliated with official shadcn/ui
Firewall Block Log Monitoring Block for Radix UI
A table of 60 typed blocked requests that a Collapse repeats switch folds into one row per run from the same source on the same rule, with Block, Challenge and Log toggles and a status that says how many rows stand for how many lines.
Installation
Overview
Read a firewall log without ten thousand copies of the same line, with this block log for React with Radix UI. It is Moatline, a web application firewall, and it stopped 60 requests between 14:00 and 14:09 UTC in this typed sample. In a hairline frame with a plus mark on each corner, a toolbar holds a Collapse repeats switch (on by default) and three toggles for Block, Challenge and Log, each with its count. Collapsed, consecutive lines from one source on one rule with one action become a single row with the count and the time span ("203.0.113.9, rule R-1042, x14, 14:00:52 to 14:01:18"); with the switch off every raw line shows. The table keeps a fixed height and scrolls inside itself, so flipping the switch never moves the panel, and the foot says how many rows stand for how many lines. Sources use documentation address ranges. Guides draw the frame and its bands; the entrance is CSS only.
FAQ
How do I use my own blocks?
Edit SAMPLE: each entry is time|source|rule|path|action, in time order, and RULES names the rule ids. The rows, the counts on the toggles and the status line are worked out from them; folding is a single pass that merges neighbours with the same source, rule and action.
What counts as a repeat?
Only neighbours: two lines fold when they follow each other and share the source, the rule and the action. The same source on the same rule later in the log is a new row, so a pause between two bursts stays visible.
What do the action toggles do?
They keep Block, Challenge or Log lines in the table; the folding runs after the filter, so the status "rows stand for lines" always describes what is on screen. Turning every action off shows an empty state and nothing else changes.