Asking
A Tacit app does not open a box to ask. A name is edited in its row, what can be undone is done and offers Undo, and what cannot be undone is confirmed by the action itself.

An app asks three kinds of question: what should this be called, did you mean it, and are you sure. Each is answered where it was asked, with the page still in view and nothing dimmed.
A name is edited in its row
Rename in the row. The name becomes a line to type in, where the name is. The text does not move. Only the name is chosen, not its type, so typing replaces "dune-light" and leaves ".jpg". Enter keeps the new name and Esc goes back to the old one. The size and time stay in view, so the person still sees which file this is.

A new thing arrives with a name. A new folder is put in the list at once, as a row named "Untitled folder", and all of the name is chosen. Enter keeps the name as it stands, even when it was not changed. Esc cancels, and the app takes the new row away again.

The parts are ListRow, which edits, and RowList, whose F2 asks the app to start it.
What can be undone is done
Do it, then say so, with Undo. Moving files to the trash, archiving, renaming, moving: the step is taken at once and a notice says what happened and offers the way back. The person never has to read a question to get on, and a mistaken press costs one more press.

The notice stays for 6 seconds and holds while the pointer or the keyboard is on it. Give the same Undo a shortcut in the app, Ctrl Z, so it can be reached after the notice has gone.
What cannot be undone is confirmed by the action
The action asks. Emptying the trash cannot be taken back. The Slab that says "Empty trash" is the thing that is pressed, so it is also the thing that asks. The first press changes its words to the question, "Delete 12 files for good", in the risk tone with the warning symbol. The second press does it.

After one press the same control asks.

The question names what will happen and how many things it touches, so it reads as a fact, not as "Are you sure?". It goes back to the words it had when Esc is pressed, when the keyboard leaves it, when a pointer that pressed it leaves, or when it has waited 4 seconds (motion.confirmWait). The part says confirmCancelled() then. A Slab and an action as words both do this with their confirm property.
Why there is no dialog
The kit has no part that opens a box over the window, and no scrim that dims the page. There are three reasons.
- The page stays live and in view. A person who is asked "delete these?" can still see what "these" are. A dialog hides or dims them.
- Nothing takes the window over. A box over the window is one more thing to find, read and close before the person can go on. A control that changes its words costs nothing to ignore.
- The answer is given where the question came from. The pointer and the eyes are already on the row or the control. The question is there too.
For the rare case that truly blocks, such as a folder that cannot be read, say it in the page itself with a page state: a sentence and, if there is one, the one action that helps. Do not put a window over the window.
Do and don't




Writing
Name the thing and the result: "Delete 12 files for good", not "Are you sure?" and not "Confirm". The count is the app's to put in. Say "for good" or "forever" when the step cannot be undone, and use it only then. In a notice, write what happened in the past tense: "Moved 3 files to the trash".
Accessibility
- A row being edited is an editable text, named by the row's
label, or "Name". Enter and Esc work from the keyboard, and so does F2. - A confirming action is a button whose name becomes the question, so a screen reader hears "Delete 12 files for good" after the first press.
- The risk is shown by the warning symbol and a faint fill as well as the ink. With reduced motion the words change at once.
What the kit does not do
- The kit does not check a name. If the new name is taken or not allowed, the app says so in a notice and sets
editingagain. - A row whose keyboard focus moves away while it is edited keeps what was typed, as Enter does (
renamed), unless the text is empty or unchanged. Only Esc cancels. - The question on a confirming action is one line. The kit has no place for a second line of explanation.
Experimental, in Tacit.Kit 0.1.
Text and figures: CC BY 4.0. Tacit.Kit: LGPL-3.0 code, OFL fonts. The Tacit name.