Module Bushel_web

Bushel Web UI - dense debug-style knowledge base browser

module H = Tw_html
module Entry = Bushel.Entry

Helpers

val format_date : (int * int * int) -> string
val format_ptime : Ptime.t -> string
val type_string : Entry.entry -> string
val type_url : [< `Idea of 'a | `Note of 'b | `Paper of 'c | `Project of 'd | `Video of 'e ] -> string
val entry_url : Entry.entry -> string
val opt_str : string option -> string
val opt_str_raw : string option -> string
val bool_str : bool -> string

Styles

val mono : Tw.t list

Layout

val tab_item : active_tab:string -> string -> string -> H.t
val navbar : active_tab:string -> H.t
val layout : title:string -> active_tab:string -> H.t list -> H.page

Common UI components

val kv_row : string -> string -> H.t
val kv_row_html : string -> H.t list -> H.t
val section_row : string -> H.t
val kv_table : H.t list -> H.t
val entry_link : Entry.entry -> H.t
val entry_link_with_title : Entry.entry -> H.t
val tag_pill : string -> H.t
val tag_list : string list -> H.t list

Tags section

val tags_section : entries:Entry.t -> Entry.entry -> H.t

Type-specific detail tables

val note_metadata : Bushel.Note.t -> H.t
val paper_metadata : Bushel.Paper.t -> H.t
val project_metadata : Bushel.Project.t -> H.t
val idea_metadata : Bushel.Idea.t -> H.t
val video_metadata : Bushel.Video.t -> H.t

List Views

val list_header : string list -> H.t
val cell : ?tw_extra:H.tw list -> H.t list -> H.t
val cell_text : ?tw_extra:H.tw list -> string -> H.t
val notes_page : Entry.t -> H.page
val papers_page : Entry.t -> H.page
val projects_page : Entry.t -> H.page
val ideas_page : Entry.t -> H.page
val videos_page : Entry.t -> H.page

Detail Views

val render_markdown : entries:Bushel__.Bushel_entry.t -> string -> string
val detail_page : entries:Bushel__.Bushel_entry.t -> Entry.entry -> view:[< `Rendered | `Source ] -> H.page

CSS Generation

val reference_page : Entry.t -> H.page
val generate_css : Entry.t -> string

Response Helpers

val send_css : (status:Httpz.Res.status -> (headers:(Httpz.Header_name.t * string) list -> (R.body -> 'a) @ local) @ local) @ local -> (string -> 'a) @ local
val mime_of_path : string -> string
val send_file : (status:Httpz.Res.status -> (headers:(Httpz.Header_name.t * 'a) list -> (R.body -> 'b) @ local) @ local) @ local -> (mime:'a -> (string -> 'b) @ local) @ local
val send_not_found : (status:Httpz.Res.status -> (headers:'a list -> (R.body -> 'b) @ local) @ local) @ local -> 'b
val static_file : dir:string -> string -> 'a -> (status:Httpz.Res.status -> headers:(Httpz.Header_name.t * string) list @ local -> (R.body -> 'b) @ local) @ local -> 'b

Route Handlers

val routes : ?image_dir:string -> Entry.t -> R.t