Pickers
All pickers live in src/lib/ui/pickers/. They cover entity selection, colour and date input, file upload, and locale switching.
| Component | File | Purpose |
|---|---|---|
ActivityPicker | ActivityPicker.tsx | Single or multi-select picker for activities. Supports template-type filtering (org-level vs activity-specific). Accepts a custom trigger element and surfaces selected items as chips. |
ColorPicker | ColorPicker.tsx | Icon button that opens a Popover containing a SketchPicker. Returns a hex colour string via onChangeComplete. Highlights the button when the field is compulsory and empty. |
DatePicker | DatePicker.tsx | Locale-aware MUI date picker with dynamic dayjs locale loading. Enforces a 6-month minimum selectable range. Wraps standard MUI DatePicker props. |
FilePicker | FilePicker.tsx | Drop-zone + file selector dialog. Supports async file verification, configurable accept and maxSize, a custom confirm button slot, and extra action items alongside the standard Choose / Cancel controls. |
LanguagePicker | LanguagePicker.tsx | Locale switcher in the app navbar. Renders the current locale's flag and label. Org admins get an additional "edit supported languages" modal. Reads org and locale context — accepts no props. |
OrganizationPicker | OrganizationPicker.tsx | Multi-select picker for contract partner organisations. Items render with a coloured header. Accepts a custom trigger element and closes the menu after each selection. |
OuPicker | OuPicker.tsx | Single-select picker for organisational units. Shows a confirmation dialog when changing the OU of an existing activity. Skips confirmation for new activities. |
PartnerDnDPicker | PartnerDnDPicker.tsx | Dialog-based drag-and-drop configurator with three droppable zones: Available, Processors, and Controllers. Validates that at least one processor or controller is assigned before applying. |