> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dirtview.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Field settings: Required, Visible To, Edited By

> Per-field permissions are how you keep labor rates off the foreman's copy while the PM still sees them.

export const Video = ({id, title, runtime, url}) => {
  const meta = VIDEOS[id] || ({});
  const label = title || meta.title || "Tutorial video";
  const length = runtime || meta.runtime || "";
  const track = meta.track || "";
  const src = toEmbedUrl(url || meta.url);
  const frame = {
    position: "relative",
    width: "100%",
    paddingTop: "56.25%",
    borderRadius: "10px",
    overflow: "hidden",
    background: "rgba(127,127,127,0.09)",
    border: src ? "1px solid rgba(127,127,127,0.24)" : "1px dashed rgba(127,127,127,0.42)"
  };
  const fill = {
    position: "absolute",
    inset: 0,
    width: "100%",
    height: "100%",
    border: 0
  };
  const center = {
    position: "absolute",
    inset: 0,
    display: "flex",
    flexDirection: "column",
    alignItems: "center",
    justifyContent: "center",
    gap: "10px",
    padding: "24px",
    textAlign: "center"
  };
  const idBadge = {
    fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
    fontSize: "12px",
    letterSpacing: "0.06em",
    padding: "2px 8px",
    borderRadius: "4px",
    background: "rgba(184,82,40,0.14)",
    color: "#B85228",
    fontWeight: 600
  };
  const caption = {
    display: "flex",
    flexWrap: "wrap",
    alignItems: "center",
    gap: "8px",
    marginTop: "8px",
    fontSize: "13px",
    opacity: 0.66,
    fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace"
  };
  return <div style={{
    margin: "0 0 28px"
  }}>
      <div style={frame}>
        {src ? <iframe style={fill} src={src} title={label} frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" allowFullScreen /> : <div style={center}>
            <svg width="44" height="44" viewBox="0 0 44 44" fill="none" aria-hidden="true">
              <circle cx="22" cy="22" r="20" stroke="currentColor" strokeOpacity="0.28" strokeWidth="2" />
              <path d="M18 15.5L29 22L18 28.5V15.5Z" fill="currentColor" fillOpacity="0.32" />
            </svg>
            <div style={{
    fontWeight: 600,
    fontSize: "15px",
    maxWidth: "36ch",
    lineHeight: 1.35
  }}>{label}</div>
            <div style={{
    fontSize: "13px",
    opacity: 0.6
  }}>
              Video coming soon{length ? " · " + length : ""}
            </div>
          </div>}
      </div>
      <div style={caption}>
        {id ? <span style={idBadge}>{id}</span> : null}
        {length ? <span>{length}</span> : null}
        {track ? <span>{track} track</span> : null}
      </div>
    </div>;
};

<Video id="40.4" />

<Note>
  **The short version.** Permissions are set per **field**, not just per form. One form can show different things to different roles.
</Note>

## The three settings

<CardGroup cols={3}>
  <Card title="Required" icon="asterisk">
    The form can't be submitted without it. Use it sparingly — every required field is one more reason somebody leaves the form as a draft.
  </Card>

  <Card title="Visible To" icon="eye">
    Which roles can **see** the field at all. Invisible fields aren't greyed out; they aren't there.
  </Card>

  <Card title="Edited By" icon="pen">
    Which roles can **change** it. A field can be visible to everyone and editable by the PM only.
  </Card>
</CardGroup>

## The case this exists for

A T\&M-style form with a labor table: the foreman fills in names, trades and hours. The billing rate column is visible and editable to the PM and the office, and invisible to the foreman. One form, one submission, one record — and nobody in the field is looking at rates.

<Warning>
  Test it. Log in as — or sit with — someone in the restricted role and open the form before you rely on it. Assumed permissions are how rate sheets end up in the wrong hands.
</Warning>

## Next

<CardGroup cols={2}>
  <Card title="Scope and versions" icon="code-branch" href="/forms/scope-and-versions">
    What changes when you edit a published template.
  </Card>

  <Card title="Roles" icon="shield-halved" href="/people/built-in-roles">
    The six built-in roles these settings refer to.
  </Card>
</CardGroup>
