Skip to content

FileUpload

Source: client/lib/theme/vueda-tailwind/controls/index.js

The outer container. In inline-trigger mode this is a tight flex column wrapping the picker button plus optional helper text; in dropzone mode it grows into a dashed-border target (2px input-coloured dashes, 6 spacing pad, large radius) that highlights with a primary-tinted fill when dragging. The disabled state dims the whole region and switches the cursor; the inner trigger still picks up its own disabled treatment from _ButtonBase.root.

Vue component: FileUpload

SlotDefault classesDescription
rootcallbackThe outer container. In inline-trigger mode this is a tight flex column wrapping the picker button plus optional helper text; in dropzone mode it grows into a dashed-border target (2px input-coloured dashes, 6 spacing pad, large radius) that highlights with a primary-tinted fill when dragging. The disabled state dims the whole region and switches the cursor; the inner trigger still picks up its own disabled treatment from _ButtonBase.root.
triggerh-vueda-control px-vueda-control-px has-[>svg]:px-vueda-control-px-smThe "choose file" affordance. Composes _ButtonBase.root plus _ButtonOutline.root so the trigger reads as the same neutral chip as an outline-variant Button.root, at the default control height with the icon-aware narrower padding kicking in when the trigger carries an icon.
dropMessagetext-sm text-muted-foregroundThe "or drop here" helper line below the trigger. Muted secondary text at the sm tier so it sits as ancillary copy and never competes with the trigger label or a selected-file readout.

root

The outer container. In inline-trigger mode this is a tight flex column wrapping the picker button plus optional helper text; in dropzone mode it grows into a dashed-border target (2px input-coloured dashes, 6 spacing pad, large radius) that highlights with a primary-tinted fill when dragging. The disabled state dims the whole region and switches the cursor; the inner trigger still picks up its own disabled treatment from _ButtonBase.root.

Callback:

javascript
({ dropzone, dragging, disabled }) => ({
            class: [
                // Base layout.
                "inline-flex flex-col items-center gap-1",

                // Dropzone and disabled states. The dragging branch swaps the border to
                // primary; gate the at-rest border on !dragging so only one border-color
                // is ever live (the two are mutually exclusive, not order-dependent).
                {
                    "rounded-lg border-2 border-dashed p-6 transition-colors": dropzone,
                    "border-input": dropzone && !dragging,
                    "border-primary bg-primary/5": dropzone && dragging,
                    "opacity-50 cursor-not-allowed": disabled,
                },
            ],
        })

Source: client/lib/theme/vueda-tailwind/controls/FileUpload.theme.js:19

trigger

The "choose file" affordance. Composes _ButtonBase.root plus _ButtonOutline.root so the trigger reads as the same neutral chip as an outline-variant Button.root, at the default control height with the icon-aware narrower padding kicking in when the trigger carries an icon.

Default classes:

h-vueda-control px-vueda-control-px has-[>svg]:px-vueda-control-px-sm

Composes: _ButtonBase.root _ButtonOutline.root

Source: client/lib/theme/vueda-tailwind/controls/FileUpload.theme.js:36

dropMessage

The "or drop here" helper line below the trigger. Muted secondary text at the sm tier so it sits as ancillary copy and never competes with the trigger label or a selected-file readout.

Default classes:

text-sm text-muted-foreground

Source: client/lib/theme/vueda-tailwind/controls/FileUpload.theme.js:44

Documents matching: server v3.0.0a1.post1client v3.0.0-alpha.2