framework/front

Types

pub type Area {
  Area(
    name: String,
    flow: css.Flow,
    pin: css.Pin,
    style: List(css.Style),
  )
}

Constructors

pub type Cell {
  Flow
  Span(cols: Int, rows: Int)
  At(col: Int, row: Int, span: CellSpan)
}

Constructors

  • Flow
  • Span(cols: Int, rows: Int)
  • At(col: Int, row: Int, span: CellSpan)
pub type CellSpan {
  CellSpan(cols: Int, rows: Int)
}

Constructors

  • CellSpan(cols: Int, rows: Int)
pub type Frame(service, block) {
  Frame(
    areas: List(Area),
    placements: List(Placement(service, block)),
    cols: List(track.Track),
    rows: List(track.Track),
    template: List(List(String)),
  )
  StyledFrame(
    areas: List(Area),
    placements: List(Placement(service, block)),
    cols: List(track.Track),
    rows: List(track.Track),
    template: List(List(String)),
    style: List(css.Style),
  )
}

Constructors

  • Frame(
      areas: List(Area),
      placements: List(Placement(service, block)),
      cols: List(track.Track),
      rows: List(track.Track),
      template: List(List(String)),
    )
  • StyledFrame(
      areas: List(Area),
      placements: List(Placement(service, block)),
      cols: List(track.Track),
      rows: List(track.Track),
      template: List(List(String)),
      style: List(css.Style),
    )

    格子の要素(data-yumemi-grid)そのものに Style を掛ける Frame。他の欄は Frame と同じ。style: [style.shell] に css.Space(MinHeight, Dvh(100.0)) を 書き rows に Fr(1) を置けば、格子が画面の高さまで伸び本文の行が残りを埋める。 sp の style は全幅に、pc・tablet の style はその幅の media の中に効く。Area の style と同じく style の定数で書く。列・行・gap は Frame の欄が書く(生成の CSS が 先に持つ)ので、style では他の性質を書く。

pub type From {
  Path(String)
  Query(String)
  Session(SessionKey)
  Origin(face: String)
  AuthOrigin
  CurrentRoute
}

Constructors

  • Path(String)
  • Query(String)
  • Session(SessionKey)
  • Origin(face: String)
  • AuthOrigin
  • CurrentRoute

    今描いている Page の route の綴り(例 /rosters/:id)。生成器が Page ごとに 知っている定数で、要求の URL の字(引数の実値・query)は入らない。Layout にも Page にも置ける ── Layout の帯の block がナビの今いる所を出すため。

pub type Layout(service, block) {
  Layout(
    vars: List(Var),
    sp: Frame(service, block),
    pc: option.Option(Frame(service, block)),
    tablet: option.Option(Frame(service, block)),
  )
}

Constructors

pub type Page(service, block) {
  Page(
    of: option.Option(service),
    layout: Layout(service, block),
    theme: option.Option(String),
    vars: List(Var),
    sp: Frame(service, block),
    pc: option.Option(Frame(service, block)),
    tablet: option.Option(Frame(service, block)),
  )
}

Constructors

pub type Placement(service, block) {
  Fixed(area: String, block: block, cell: Cell)
  Widget(area: String, of: service, render: Render(block))
}

Constructors

  • Fixed(area: String, block: block, cell: Cell)
  • Widget(area: String, of: service, render: Render(block))
pub type Render(block) {
  One(block: block)
  ByKind(by: String, table: List(#(String, block)))
}

Constructors

  • One(block: block)
  • ByKind(by: String, table: List(#(String, block)))
pub type SessionKey {
  SubjectHandle
  SubjectId
}

Constructors

  • SubjectHandle
  • SubjectId
pub type Target(service, attached) {
  Of(service)
  Entry(attached)
}

Constructors

  • Of(service)
  • Entry(attached)
pub type Var {
  Var(name: String, from: From)
}

Constructors

  • Var(name: String, from: From)

Values

pub fn area_flow_css(flow: css.Flow) -> List(String)

Area の flow を、生成される grid の CSS(その Area の規則)に書く宣言にする。 Stack は縦の flex で、中の block は幅いっぱいのまま(align-items: stretch)。 各 variant は並びの向きまで書き切る ── pc・tablet の Frame で別の flow に替えても、 sp の規則の向きが残らない。

pub const default_sp_cols: List(track.Track)
pub const default_wide_cols: List(track.Track)
pub fn frame_style(
  frame: Frame(service, block),
) -> List(css.Style)

Frame の格子の要素に掛ける Style。Frame は空。

pub fn resolved_cols(
  frame: Frame(service, block),
  at: css.Breakpoint,
) -> List(track.Track)
pub fn resolved_template(
  sp: Frame(service, block),
  frame: Frame(service, block),
  at: css.Breakpoint,
) -> List(List(String))
✨ Search Document