Instructor finder

A React block (a whole screen) in Beamline's Salon & fitness app.

Finding a flight instructor. Search by name or airfield, filter by what you want to learn (each subject with how many teach it nearby), by distance, and sort by nearest or free soonest. Each instructor shows where they fly from and how far, what they teach with the subjects you asked for marked, the hourly rate and the next free time; one who doesn't share a calendar reads as unknown, and one with nothing free in the window says so, never shown as free. One opens with their story, subjects, aircraft and the days ahead (free times to ask for, booked, unknown), and asking for a time says it isn't booked until they confirm; with no calendar you ask them to suggest one. With a map base (map, home and each instructor's position), the airfields are pinned on a real map with how many of the matching instructors fly from each, the open one's airfield ringed and the distance searched within drawn round home; the open instructor's next days sit under it as a week of columns (free times to ask for, booked, unknown hatched).

Use it for

  • A student pilot finding an instructor by subject, distance and how soon they're free.
  • Any directory of people booked by skill and time where some don't share availability (tutors, coaches, clinicians).

Not for

Anatomy

  • search: name or airfield; what you want to learn; Within; Sort; the count
  • each instructor: avatar, name, base and distance, subjects (asked-for marked), rate, next free or unknown or booked
  • panel: avatar, name, base, rate; story; teaches, aircraft; the days ahead with free times, booked or unknown; the request and what it means
  • map (with map and home): the base, the distance ring round home with its km, a pin per airfield with the matching count (the open one ringed), airfield chips as buttons; the open instructor under it with the week as columns

States

  • free soon
  • booked through the window
  • calendar not shared
  • requested
  • asked to suggest
  • nobody matches

Keyboard

  • Tab through the search, subjects, distance, sort and the list; the panel's times are buttons

Props

PropTypeDefaultDescription
instructors (required)Instructor[]—
subjects (required)string[]—Everything that can be learned, for the filter.
today (required)string—"Today" as YYYY-MM-DD.
daysnumber—How many days ahead availability looks.
onRequest((instructorId: string, slot: { day: string; time: string; } | null) => void)—
defaultLearnstring[]—
openstring | null—Controlled open state; omit to use defaultOpen.
defaultOpenstring | null—Initial open state when uncontrolled; defaults to false.
onOpenChange((id: string | null) => void)—Reports an open-state change; no callback by default.
classNamestring—Classes on the documented visual root; no override by default.
styleCSSProperties—Inline styles on the documented visual root; no overrides by default.
refRef<HTMLDivElement>—Receives the documented native target or imperative handle; omitted by default.
mapMapBase—A map base to pin the instructors' airfields on, with the distance you search within drawn round `home`; omitted: no map.
home{ name: string; lon: number; lat: number; }—Where you are, the centre of the distance ring ("Lisbon", with its longitude and latitude).

Built from

Dependencies

lucide-react

Import

import { InstructorFinder } from "@beamline/instructor-finder";

Get it

Instructor finder is part of Beamline UI. Install the parts you need in your React app as compiled packages or editable source. Get Beamline · Connect your agent

More in Salon & fitness

  • Workout planner: A training plan a person lives in: the program's next session with its estimate and Start, an exercise replaced for this session only or for every later…
  • Workout logger: A live training session: every exercise's sets as target-table rows with a done column; marking a set done fills its shape and starts the rest by itself…
  • Training progress: A person's training history: the headline counts (weeks in a row, days since the last workout, workouts this month), a month calendar that names each…
  • Program setup: A training program's setup and living settings: the intake (one question per step, the week drawn as you answer, a failed generation keeping every…
  • Protocol builder: A practitioner's reusable protocol and the client copies made from it. Foods and habits each carry a written intent (Include, Reduce, Exclude) in its…
  • Nutrition library: A nutrition practice's library. Recipes: ingredients with grams and servings, nutrients per serving summed (energy, protein, carbohydrate, fat, fibre), a…
  • Packages & memberships: Prepaid packages and series, built: the packages down the side (version and how many sold, or not on sale yet), the open one beside them. Its price is a…
  • Client forms: A salon's or spa's client forms and who they ask: the forms down the side with where each stands (on, set up and off, not set up yet), the open one…
  • Flight logbook: A pilot's logbook. Total time (with hours brought forward from earlier logbooks), PIC, night, the last 90 days and how many entries are still incomplete…

Part of Beamline UI: polished, editable React components and complete screens for custom applications. Build your own style from any look; tokens, fonts, radii, motion; not only colours.