Skip to main content

Image

Overview

The Image component uploads images (JPG, JPEG, PNG, GIF, or WebP) attached to a record and displays them directly in the interface — instead of hiding them behind a download link. It's suited to product photos, proof of work, avatars, and any visual content that makes sense to see immediately in a table, a form, or a kanban card.

The stored value is, byte for byte, the same as the File component — the same metadata JSON and the same storage bucket (attachments). Switching a column's type between File and Image preserves data already uploaded; what the Image configuration controls is only the presentation per context (form, table, kanban), never the value's format.

Configuration

SettingDescription
DefaultDisplay mode used in any context without its own choice: Inline (default) or Button + dialog.
TableCompact thumbnails in the cell (Inline) or a button that opens the viewer (Button + dialog).
FormVisible thumbnail gallery (Inline) or a button that opens the viewer (Button + dialog).
KanbanAlso applies to kiosk, POS, and cards — a single setting for all four surfaces. Inline shows the image in the card body; Button + dialog shows a "View image" chip. Only in the Kanban view can an Inline image still be promoted to a cover (see Display in views).
Allow multiple imagesAccepts more than one image in the same column. Off (default) stores a single image; on stores a list.
Max imagesOnly shown with "Allow multiple images" on. Limit on images in the column; empty = no limit.
Max file size (MB)Maximum size accepted per image; empty = no size limit.
Storage subfolderDestination subfolder inside the feature_X/column_Y/ path in the attachments bucket; the entered text is converted into a safe slug.
Accepted formatsFixed, not configurable: jpg, jpeg, png, gif, webp.

Interaction

Uploading an image opens the file picker restricted to the accepted formats; each selected image is uploaded immediately, one at a time — if an image partway through a batch fails, the ones already uploaded stay saved.

In an editable gallery, tapping the red X on the corner of a thumbnail removes that image.

Tapping any image — in the form gallery, the table thumbnails, or the card image — opens the viewer dialog: zoom with pinch/scroll (up to 5x), navigate between images with the arrows (wide screens) or by gesture, and an "X of N" indicator when there is more than one image. The viewer is always available, even in read-only views.

Once "Max images" is reached, the upload button disappears; picking more images than the remaining space trims the excess and shows a warning. An image above "Max file size (MB)" is skipped on upload, also with a warning.

Display in views

ViewRendering
Form / default viewInline: thumbnail gallery with a button to upload more; Button + dialog: "View image(s)" button
Table / List / CalendarInline: up to 3 thumbnails in a row, with a "+N" badge for the rest; Button + dialog: an icon that opens the viewer
KanbanInline: a large image on the card, promoted to cover when it's the first eligible image column (see below); Button + dialog: "View image(s)" chip
Kiosk / POS / Cards / ExecutionInline: a large image in the card body, with no promotion to cover; Button + dialog: "View image(s)" chip

Calendar and Execution use, respectively, the same compact surface as Table and the same card surface as Kanban, but neither follows the Table or Kanban setting — both always follow the Default mode.

Cover promotion is exclusive to the Kanban view. There, an image column in Inline mode that is the first eligible column among the fields shown on the card leaves the body and becomes the cover: a full-width image band at the top of the card, Trello-style. Only the first column meeting these conditions is promoted (a card has a single cover); any other image columns stay in the body like any other field. A column in Button + dialog mode is never promoted to cover, and a record with no image uploaded doesn't leave an empty band.

In kiosk, POS, and cards, Inline mode shows the same image band inside the card body, but without the edge-to-edge cover promotion — those surfaces share the display mode with Kanban (via the same setting), not the cover behavior. A kiosk tab configured to show a Kanban view inherits the real cover behavior, because it is Kanban rather than the kiosk surface itself.

This component is not filterable in views.