diff --git a/combin.txt b/combin.txt deleted file mode 100644 index a6b3a7d..0000000 --- a/combin.txt +++ /dev/null @@ -1,321 +0,0 @@ -opus -opus/document -opus/document/letterText -opus/document/letterText/address -opus/document/letterText/address/align -opus/document/letterText/address/align/line -opus/document/letterText/address/align/line/@type -opus/document/letterText/address/align/@pos -opus/document/letterText/address/align/ul -opus/document/letterText/address/aq -opus/document/letterText/address/aq/line -opus/document/letterText/address/aq/line/@type -opus/document/letterText/address/aq/ru -opus/document/letterText/address/aq/ru/line -opus/document/letterText/address/aq/ru/line/@type -opus/document/letterText/address/aq/ul -opus/document/letterText/address/del -opus/document/letterText/address/dul -opus/document/letterText/address/line -opus/document/letterText/address/line/@type -opus/document/letterText/address/sidenote -opus/document/letterText/address/sidenote/@annotation -opus/document/letterText/address/sidenote/aq -opus/document/letterText/address/sidenote/@page -opus/document/letterText/address/sidenote/@pos -opus/document/letterText/address/tl -opus/document/letterText/address/ul -opus/document/letterText/address/ul/aq -opus/document/letterText/align -opus/document/letterText/align/align -opus/document/letterText/align/align/@pos -opus/document/letterText/align/aq -opus/document/letterText/align/aq/fn -opus/document/letterText/align/aq/fn/anchor -opus/document/letterText/align/aq/fn/@index -opus/document/letterText/align/del -opus/document/letterText/align/del/nr -opus/document/letterText/align/fn -opus/document/letterText/align/fn/anchor -opus/document/letterText/align/fn/@index -opus/document/letterText/align/gr -opus/document/letterText/align/hand -opus/document/letterText/align/hand/line -opus/document/letterText/align/hand/line/@type -opus/document/letterText/align/hand/@ref -opus/document/letterText/align/insertion -opus/document/letterText/align/insertion/@pos -opus/document/letterText/align/it -opus/document/letterText/align/line -opus/document/letterText/align/line/@tab -opus/document/letterText/align/line/@type -opus/document/letterText/align/note -opus/document/letterText/align/page -opus/document/letterText/align/page/@index -opus/document/letterText/align/@pos -opus/document/letterText/align/ru -opus/document/letterText/align/ru/line -opus/document/letterText/align/ru/line/@type -opus/document/letterText/align/ul -opus/document/letterText/aq -opus/document/letterText/aq/align -opus/document/letterText/aq/align/line -opus/document/letterText/aq/align/line/@type -opus/document/letterText/aq/align/@pos -opus/document/letterText/aq/del -opus/document/letterText/aq/del/nr -opus/document/letterText/aq/dul -opus/document/letterText/aq/gr -opus/document/letterText/aq/insertion -opus/document/letterText/aq/insertion/@pos -opus/document/letterText/aq/line -opus/document/letterText/aq/line/@tab -opus/document/letterText/aq/line/@type -opus/document/letterText/aq/note -opus/document/letterText/aq/nr -opus/document/letterText/aq/page -opus/document/letterText/aq/page/@index -opus/document/letterText/aq/pe -opus/document/letterText/aq/pe/line -opus/document/letterText/aq/pe/line/@tab -opus/document/letterText/aq/pe/note -opus/document/letterText/aq/pe/page -opus/document/letterText/aq/pe/page/@index -opus/document/letterText/aq/pe/tl -opus/document/letterText/aq/ru -opus/document/letterText/aq/ru/ul -opus/document/letterText/aq/sidenote -opus/document/letterText/aq/sidenote/@annotation -opus/document/letterText/aq/sidenote/del -opus/document/letterText/aq/sidenote/insertion -opus/document/letterText/aq/sidenote/insertion/@pos -opus/document/letterText/aq/sidenote/@page -opus/document/letterText/aq/sidenote/pe -opus/document/letterText/aq/sidenote/@pos -opus/document/letterText/aq/tl -opus/document/letterText/aq/ul -opus/document/letterText/aq/ul/ru -opus/document/letterText/b -opus/document/letterText/del -opus/document/letterText/del/del -opus/document/letterText/del/del/nr -opus/document/letterText/del/line -opus/document/letterText/del/line/@tab -opus/document/letterText/del/line/@type -opus/document/letterText/del/nr -opus/document/letterText/dul -opus/document/letterText/er -opus/document/letterText/er/nr -opus/document/letterText/fn -opus/document/letterText/fn/anchor -opus/document/letterText/fn/anchor/note -opus/document/letterText/fn/@index -opus/document/letterText/gr -opus/document/letterText/hand -opus/document/letterText/hand/address -opus/document/letterText/hand/address/aq -opus/document/letterText/hand/address/line -opus/document/letterText/hand/address/line/@type -opus/document/letterText/hand/address/ul -opus/document/letterText/hand/align -opus/document/letterText/hand/align/line -opus/document/letterText/hand/align/line/@type -opus/document/letterText/hand/align/@pos -opus/document/letterText/hand/aq -opus/document/letterText/hand/del -opus/document/letterText/hand/del/line -opus/document/letterText/hand/del/line/@type -opus/document/letterText/hand/del/nr -opus/document/letterText/hand/fn -opus/document/letterText/hand/fn/anchor -opus/document/letterText/hand/fn/@index -opus/document/letterText/hand/insertion -opus/document/letterText/hand/insertion/@pos -opus/document/letterText/hand/it -opus/document/letterText/hand/line -opus/document/letterText/hand/line/@tab -opus/document/letterText/hand/line/@type -opus/document/letterText/hand/note -opus/document/letterText/hand/nr -opus/document/letterText/hand/page -opus/document/letterText/hand/page/@index -opus/document/letterText/hand/pe -opus/document/letterText/hand/pe/aq -opus/document/letterText/hand/pe/del -opus/document/letterText/hand/pe/del/line -opus/document/letterText/hand/pe/del/line/@type -opus/document/letterText/hand/pe/del/nr -opus/document/letterText/hand/pe/line -opus/document/letterText/hand/pe/line/@type -opus/document/letterText/hand/pe/nr -opus/document/letterText/hand/pe/sidenote -opus/document/letterText/hand/pe/sidenote/@annotation -opus/document/letterText/hand/pe/sidenote/line -opus/document/letterText/hand/pe/sidenote/line/@type -opus/document/letterText/hand/pe/sidenote/@page -opus/document/letterText/hand/pe/sidenote/@pos -opus/document/letterText/hand/pe/ul -opus/document/letterText/hand/@ref -opus/document/letterText/hand/sidenote -opus/document/letterText/hand/sidenote/@annotation -opus/document/letterText/hand/sidenote/line -opus/document/letterText/hand/sidenote/line/@type -opus/document/letterText/hand/sidenote/@page -opus/document/letterText/hand/sidenote/@pos -opus/document/letterText/hand/tabs -opus/document/letterText/hand/tabs/line -opus/document/letterText/hand/tabs/line/@index -opus/document/letterText/hand/tabs/tab -opus/document/letterText/hand/tabs/tab/@value -opus/document/letterText/hand/tl -opus/document/letterText/hand/ul -opus/document/letterText/hand/ul/aq -opus/document/letterText/hb -opus/document/letterText/ink -opus/document/letterText/ink/@ref -opus/document/letterText/insertion -opus/document/letterText/insertion/del -opus/document/letterText/insertion/del/nr -opus/document/letterText/insertion/fn -opus/document/letterText/insertion/fn/anchor -opus/document/letterText/insertion/fn/@index -opus/document/letterText/insertion/line -opus/document/letterText/insertion/line/@tab -opus/document/letterText/insertion/@pos -opus/document/letterText/it -opus/document/letterText/@letter -opus/document/letterText/line -opus/document/letterText/line/@tab -opus/document/letterText/line/@type -opus/document/letterText/note -opus/document/letterText/nr -opus/document/letterText/p -opus/document/letterText/page -opus/document/letterText/page/@index -opus/document/letterText/p/align -opus/document/letterText/p/align/@pos -opus/document/letterText/pe -opus/document/letterText/pe/aq -opus/document/letterText/pe/aq/del -opus/document/letterText/pe/aq/insertion -opus/document/letterText/pe/aq/insertion/@pos -opus/document/letterText/pe/aq/line -opus/document/letterText/pe/aq/line/@tab -opus/document/letterText/pe/aq/line/@type -opus/document/letterText/pe/aq/note -opus/document/letterText/pe/aq/page -opus/document/letterText/pe/aq/page/@index -opus/document/letterText/pe/aq/ul -opus/document/letterText/pe/hand -opus/document/letterText/pe/hand/aq -opus/document/letterText/pe/hand/@ref -opus/document/letterText/pe/line -opus/document/letterText/pe/line/@tab -opus/document/letterText/pe/line/@type -opus/document/letterText/pe/nr -opus/document/letterText/pe/page -opus/document/letterText/pe/page/@index -opus/document/letterText/pe/ul -opus/document/letterText/p/line -opus/document/letterText/p/line/@tab -opus/document/letterText/p/line/@type -opus/document/letterText/p/page -opus/document/letterText/p/page/@index -opus/document/letterText/p/sidenote -opus/document/letterText/p/sidenote/@annotation -opus/document/letterText/p/sidenote/line -opus/document/letterText/p/sidenote/line/@tab -opus/document/letterText/p/sidenote/@page -opus/document/letterText/p/sidenote/@pos -opus/document/letterText/ru -opus/document/letterText/ru/line -opus/document/letterText/ru/line/@type -opus/document/letterText/sidenote -opus/document/letterText/sidenote/align -opus/document/letterText/sidenote/align/gr -opus/document/letterText/sidenote/align/@pos -opus/document/letterText/sidenote/@annotation -opus/document/letterText/sidenote/aq -opus/document/letterText/sidenote/aq/ru -opus/document/letterText/sidenote/del -opus/document/letterText/sidenote/dul -opus/document/letterText/sidenote/fn -opus/document/letterText/sidenote/fn/anchor -opus/document/letterText/sidenote/fn/anchor/note -opus/document/letterText/sidenote/fn/@index -opus/document/letterText/sidenote/gr -opus/document/letterText/sidenote/hand -opus/document/letterText/sidenote/hand/aq -opus/document/letterText/sidenote/hand/aq/line -opus/document/letterText/sidenote/hand/aq/line/@type -opus/document/letterText/sidenote/hand/insertion -opus/document/letterText/sidenote/hand/insertion/nr -opus/document/letterText/sidenote/hand/insertion/@pos -opus/document/letterText/sidenote/hand/line -opus/document/letterText/sidenote/hand/line/@type -opus/document/letterText/sidenote/hand/@ref -opus/document/letterText/sidenote/ink -opus/document/letterText/sidenote/ink/line -opus/document/letterText/sidenote/ink/line/@type -opus/document/letterText/sidenote/ink/@ref -opus/document/letterText/sidenote/ink/ul -opus/document/letterText/sidenote/insertion -opus/document/letterText/sidenote/insertion/@pos -opus/document/letterText/sidenote/line -opus/document/letterText/sidenote/line/@tab -opus/document/letterText/sidenote/line/@type -opus/document/letterText/sidenote/note -opus/document/letterText/sidenote/@page -opus/document/letterText/sidenote/page -opus/document/letterText/sidenote/page/@index -opus/document/letterText/sidenote/pe -opus/document/letterText/sidenote/@pos -opus/document/letterText/sidenote/ru -opus/document/letterText/sidenote/ru/aq -opus/document/letterText/sidenote/ru/aq/ul -opus/document/letterText/sidenote/ul -opus/document/letterText/sidenote/ul/line -opus/document/letterText/sidenote/ul/line/@tab -opus/document/letterText/subst -opus/document/letterText/subst/del -opus/document/letterText/subst/del/nr -opus/document/letterText/subst/del/nr/@extent -opus/document/letterText/subst/insertion -opus/document/letterText/tabs -opus/document/letterText/tabs/line -opus/document/letterText/tabs/line/@index -opus/document/letterText/tabs/line/@tab -opus/document/letterText/tabs/line/@type -opus/document/letterText/tabs/note -opus/document/letterText/tabs/page -opus/document/letterText/tabs/page/@index -opus/document/letterText/tabs/tab -opus/document/letterText/tabs/tab/align -opus/document/letterText/tabs/tab/align/aq -opus/document/letterText/tabs/tab/align/@pos -opus/document/letterText/tabs/tab/aq -opus/document/letterText/tabs/tab/del -opus/document/letterText/tabs/tab/fn -opus/document/letterText/tabs/tab/fn/anchor -opus/document/letterText/tabs/tab/fn/@index -opus/document/letterText/tabs/tab/insertion -opus/document/letterText/tabs/tab/insertion/@pos -opus/document/letterText/tabs/tab/line -opus/document/letterText/tabs/tab/line/@tab -opus/document/letterText/tabs/tab/line/@type -opus/document/letterText/tabs/tab/note -opus/document/letterText/tabs/tab/ul -opus/document/letterText/tabs/tab/ul/aq -opus/document/letterText/tabs/tab/@value -opus/document/letterText/tl -opus/document/letterText/ul -opus/document/letterText/ul/aq -opus/document/letterText/ul/del -opus/document/letterText/ul/fn -opus/document/letterText/ul/fn/anchor -opus/document/letterText/ul/fn/@index -opus/document/letterText/ul/inc -opus/document/letterText/ul/inc/@ref -opus/document/letterText/ul/insertion -opus/document/letterText/ul/insertion/@pos -opus/document/letterText/ul/ru diff --git a/controllers/brief.go b/controllers/brief.go index c3b0658..8e5ff79 100644 --- a/controllers/brief.go +++ b/controllers/brief.go @@ -26,11 +26,19 @@ func GetLetter(c *fiber.Ctx) error { return c.SendStatus(fiber.StatusNotFound) } - html := "" + text := fiber.Map{ + "count": "", + "notes": "", + "pages": []*xmlmodels.PageRender{}, + "html": "", + } if state := letterData.HTML.Data(); state != nil { - html = state.String() + text["html"] = state.String() + text["count"] = state.CountHTML() + text["notes"] = state.NotesHTML() + text["pages"] = state.Pages } tradition := lib.Traditions.Item(letter) - return c.Render("/brief/", fiber.Map{"meta": meta, "text": html, "tradition": tradition, "next": np.Next, "prev": np.Prev}) + return c.Render("/brief/", fiber.Map{"meta": meta, "text": text, "tradition": tradition, "next": np.Next, "prev": np.Prev}) } diff --git a/controllers/uebersicht.go b/controllers/uebersicht.go index 5fc44c9..8a7e6b4 100644 --- a/controllers/uebersicht.go +++ b/controllers/uebersicht.go @@ -1,14 +1,136 @@ package controllers import ( + "encoding/json" + "sort" + "strconv" + "strings" + "github.com/Theodor-Springmann-Stiftung/lenz-web/xmlmodels" "github.com/gofiber/fiber/v2" ) +type filterItem struct { + ID int `json:"id"` + Name string `json:"name"` +} + func GetLetters(c *fiber.Ctx) error { lib := xmlmodels.Get() _, yearmap := lib.Years() rangeParam := c.Query("range", "") + personParam := strings.TrimSpace(c.Query("person", "")) + placeParam := strings.TrimSpace(c.Query("ort", "")) + + personID := 0 + if personParam != "" { + if id, err := strconv.Atoi(personParam); err == nil && id > 0 { + personID = id + } else { + personParam = "" + } + } + + placeID := 0 + if placeParam != "" { + if id, err := strconv.Atoi(placeParam); err == nil && id > 0 { + placeID = id + } else { + placeParam = "" + } + } + + rawQuery := string(c.Context().URI().QueryString()) + lastPerson := strings.LastIndex(rawQuery, "person=") + lastPlace := strings.LastIndex(rawQuery, "ort=") + if lastPerson >= 0 && lastPlace >= 0 { + if lastPlace > lastPerson { + personID = 0 + personParam = "" + } else { + placeID = 0 + placeParam = "" + } + } + + if personID > 0 && placeID > 0 { + // Fallback if we couldn't determine query order. + placeID = 0 + placeParam = "" + } + + personOptions := make(map[int]filterItem) + placeOptions := make(map[int]filterItem) + + addPerson := func(id int) { + if id <= 0 { + return + } + if _, ok := personOptions[id]; ok { + return + } + if def := lib.Person(id); def != nil { + name := strings.TrimSpace(def.Name) + if name == "" { + name = strings.TrimSpace(def.FirstName + " " + def.LastName) + } + if name == "" { + name = strings.TrimSpace(def.Ref) + } + if name == "" { + name = "Person " + strconv.Itoa(id) + } + personOptions[id] = filterItem{ID: id, Name: name} + } + } + + addPlace := func(id int) { + if id <= 0 { + return + } + if _, ok := placeOptions[id]; ok { + return + } + if def := lib.Place(id); def != nil { + name := strings.TrimSpace(def.Name) + if name == "" { + name = strings.TrimSpace(def.Ref) + } + if name == "" { + name = "Ort " + strconv.Itoa(id) + } + placeOptions[id] = filterItem{ID: id, Name: name} + } + } + + collectRefs := func(meta xmlmodels.Meta) { + for _, action := range meta.Sent { + for _, ref := range action.Persons { + addPerson(ref.Reference) + } + for _, ref := range action.Places { + addPlace(ref.Reference) + } + } + for _, action := range meta.Recieved { + for _, ref := range action.Persons { + addPerson(ref.Reference) + } + for _, ref := range action.Places { + addPlace(ref.Reference) + } + } + } + + filterLetter := func(meta xmlmodels.Meta) bool { + if personID > 0 && !meta.HasPerson(personID) { + return false + } + if placeID > 0 && !meta.HasPlace(placeID) { + return false + } + return true + } // TODO: does not work ATM c.Locals("path", c.Path()) @@ -25,12 +147,21 @@ func GetLetters(c *fiber.Ctx) error { for year, letters := range yearmap { for i := range ranges { if year >= ranges[i].Start && year <= ranges[i].End { - ranges[i].Letters = append(ranges[i].Letters, letters...) + for _, letter := range letters { + collectRefs(letter) + if filterLetter(letter) { + ranges[i].Letters = append(ranges[i].Letters, letter) + } + } break } } } + if personID > 0 || placeID > 0 { + rangeParam = "all" + } + // Handle specific range selection selectedRange := -1 for i, r := range ranges { @@ -40,9 +171,41 @@ func GetLetters(c *fiber.Ctx) error { } } + querySuffix := "" + if personParam != "" { + querySuffix += "&person=" + personParam + } + if placeParam != "" { + querySuffix += "&ort=" + placeParam + } + + personList := make([]filterItem, 0, len(personOptions)) + for _, item := range personOptions { + personList = append(personList, item) + } + sort.Slice(personList, func(i, j int) bool { + return strings.ToLower(personList[i].Name) < strings.ToLower(personList[j].Name) + }) + + placeList := make([]filterItem, 0, len(placeOptions)) + for _, item := range placeOptions { + placeList = append(placeList, item) + } + sort.Slice(placeList, func(i, j int) bool { + return strings.ToLower(placeList[i].Name) < strings.ToLower(placeList[j].Name) + }) + + personJSON, _ := json.Marshal(personList) + placeJSON, _ := json.Marshal(placeList) + return c.Render(LETTERS_URL+"/", fiber.Map{ - "ranges": ranges, + "ranges": ranges, "selectedRange": selectedRange, - "all": rangeParam == "all", + "all": rangeParam == "all", + "person": personParam, + "ort": placeParam, + "query": querySuffix, + "personJSON": string(personJSON), + "placeJSON": string(placeJSON), }) } diff --git a/out.pdf b/out.pdf deleted file mode 100644 index c45d17a..0000000 Binary files a/out.pdf and /dev/null differ diff --git a/views/assets/style.css b/views/assets/style.css index 38a5a8e..3e812b5 100644 --- a/views/assets/style.css +++ b/views/assets/style.css @@ -11,7 +11,10 @@ --color-blue-900: oklch(37.9% 0.146 265.522); --color-blue-950: oklch(28.2% 0.091 267.935); --color-slate-50: oklch(98.4% 0.003 247.858); + --color-slate-100: oklch(96.8% 0.007 247.896); --color-slate-200: oklch(92.9% 0.013 255.508); + --color-slate-400: oklch(70.4% 0.04 256.788); + --color-slate-500: oklch(55.4% 0.046 257.417); --color-slate-600: oklch(44.6% 0.043 257.281); --color-slate-700: oklch(37.2% 0.044 257.287); --color-slate-800: oklch(27.9% 0.041 260.031); @@ -43,10 +46,13 @@ --text-2xl--line-height: calc(2 / 1.5); --text-6xl: 3.75rem; --text-6xl--line-height: 1; + --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-bold: 700; + --tracking-wide: 0.025em; --leading-normal: 1.5; --radius-md: 0.375rem; + --radius-lg: 0.5rem; --ease-in: cubic-bezier(0.4, 0, 1, 1); --ease-out: cubic-bezier(0, 0, 0.2, 1); --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); @@ -211,9 +217,23 @@ .collapse { visibility: collapse; } + .invisible { + visibility: hidden; + } .visible { visibility: visible; } + .sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip-path: inset(50%); + white-space: nowrap; + border-width: 0; + } .absolute { position: absolute; } @@ -423,6 +443,9 @@ .h-full { height: 100%; } + .max-h-64 { + max-height: calc(var(--spacing) * 64); + } .min-h-screen { min-height: 100vh; } @@ -435,9 +458,15 @@ .max-w-none { max-width: none; } + .flex-1 { + flex: 1; + } .flex-shrink { flex-shrink: 1; } + .shrink-0 { + flex-shrink: 0; + } .flex-grow { flex-grow: 1; } @@ -481,9 +510,53 @@ .flex-wrap { flex-wrap: wrap; } + .items-center { + align-items: center; + } .justify-between { justify-content: space-between; } + .gap-2 { + gap: calc(var(--spacing) * 2); + } + .gap-8 { + gap: calc(var(--spacing) * 8); + } + .space-y-1 { + :where(& > :not(:last-child)) { + --tw-space-y-reverse: 0; + margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse)); + margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse))); + } + } + .space-y-1\.5 { + :where(& > :not(:last-child)) { + --tw-space-y-reverse: 0; + margin-block-start: calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse)); + margin-block-end: calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse))); + } + } + .space-y-2 { + :where(& > :not(:last-child)) { + --tw-space-y-reverse: 0; + margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse)); + margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse))); + } + } + .space-y-4 { + :where(& > :not(:last-child)) { + --tw-space-y-reverse: 0; + margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse)); + margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse))); + } + } + .space-y-5 { + :where(& > :not(:last-child)) { + --tw-space-y-reverse: 0; + margin-block-start: calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse)); + margin-block-end: calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse))); + } + } .space-y-6 { :where(& > :not(:last-child)) { --tw-space-y-reverse: 0; @@ -504,6 +577,20 @@ .gap-x-1\.5 { column-gap: calc(var(--spacing) * 1.5); } + .divide-y { + :where(& > :not(:last-child)) { + --tw-divide-y-reverse: 0; + border-bottom-style: var(--tw-border-style); + border-top-style: var(--tw-border-style); + border-top-width: calc(1px * var(--tw-divide-y-reverse)); + border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); + } + } + .divide-slate-100 { + :where(& > :not(:last-child)) { + border-color: var(--color-slate-100); + } + } .self-end { align-self: flex-end; } @@ -513,6 +600,9 @@ .justify-self-end { justify-self: flex-end; } + .overflow-y-auto { + overflow-y: auto; + } .rounded { border-radius: 0.25rem; } @@ -542,6 +632,15 @@ .border-gray-300 { border-color: var(--color-gray-300); } + .border-slate-100 { + border-color: var(--color-slate-100); + } + .border-slate-200 { + border-color: var(--color-slate-200); + } + .border-slate-900 { + border-color: var(--color-slate-900); + } .border-t-gray-200 { border-top-color: var(--color-gray-200); } @@ -551,18 +650,30 @@ .bg-gray-900 { background-color: var(--color-gray-900); } + .bg-slate-900 { + background-color: var(--color-slate-900); + } + .bg-white { + background-color: var(--color-white); + } .mask-repeat { mask-repeat: repeat; } .p-2 { padding: calc(var(--spacing) * 2); } + .p-3 { + padding: calc(var(--spacing) * 3); + } .px-0\.5 { padding-inline: calc(var(--spacing) * 0.5); } .px-2 { padding-inline: calc(var(--spacing) * 2); } + .px-3 { + padding-inline: calc(var(--spacing) * 3); + } .px-8 { padding-inline: calc(var(--spacing) * 8); } @@ -581,6 +692,9 @@ .pb-0 { padding-bottom: calc(var(--spacing) * 0); } + .pb-1 { + padding-bottom: calc(var(--spacing) * 1); + } .pb-1\.5 { padding-bottom: calc(var(--spacing) * 1.5); } @@ -593,6 +707,9 @@ .text-justify { text-align: justify; } + .text-left { + text-align: left; + } .align-bottom { vertical-align: bottom; } @@ -632,6 +749,19 @@ font-size: var(--text-xl); line-height: var(--tw-leading, var(--text-xl--line-height)); } + .text-xs { + font-size: var(--text-xs); + line-height: var(--tw-leading, var(--text-xs--line-height)); + } + .text-\[0\.7rem\] { + font-size: 0.7rem; + } + .text-\[0\.65rem\] { + font-size: 0.65rem; + } + .text-\[0\.75rem\] { + font-size: 0.75rem; + } .leading-none { --tw-leading: 1; line-height: 1; @@ -640,10 +770,18 @@ --tw-font-weight: var(--font-weight-bold); font-weight: var(--font-weight-bold); } + .font-medium { + --tw-font-weight: var(--font-weight-medium); + font-weight: var(--font-weight-medium); + } .font-semibold { --tw-font-weight: var(--font-weight-semibold); font-weight: var(--font-weight-semibold); } + .tracking-wide { + --tw-tracking: var(--tracking-wide); + letter-spacing: var(--tracking-wide); + } .text-wrap { text-wrap: wrap; } @@ -669,6 +807,15 @@ .text-gray-800 { color: var(--color-gray-800); } + .text-slate-500 { + color: var(--color-slate-500); + } + .text-slate-600 { + color: var(--color-slate-600); + } + .text-slate-700 { + color: var(--color-slate-700); + } .text-white { color: var(--color-white); } @@ -733,9 +880,17 @@ -webkit-font-smoothing: auto; -moz-osx-font-smoothing: auto; } + .placeholder-slate-400 { + &::placeholder { + color: var(--color-slate-400); + } + } .opacity-0 { opacity: 0%; } + .opacity-70 { + opacity: 70%; + } .opacity-100 { opacity: 100%; } @@ -797,6 +952,20 @@ -webkit-user-select: all; user-select: all; } + .hover\:border-slate-400 { + &:hover { + @media (hover: hover) { + border-color: var(--color-slate-400); + } + } + } + .hover\:bg-slate-100 { + &:hover { + @media (hover: hover) { + background-color: var(--color-slate-100); + } + } + } .hover\:text-slate-900 { &:hover { @media (hover: hover) { @@ -811,6 +980,38 @@ } } } + .focus\:border-slate-400 { + &:focus { + border-color: var(--color-slate-400); + } + } + .focus\:ring-1 { + &:focus { + --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + } + .focus\:ring-slate-400 { + &:focus { + --tw-ring-color: var(--color-slate-400); + } + } + .focus\:outline-none { + &:focus { + --tw-outline-style: none; + outline-style: none; + } + } + .lg\:w-72 { + @media (width >= 64rem) { + width: calc(var(--spacing) * 72); + } + } + .lg\:flex-row { + @media (width >= 64rem) { + flex-direction: row; + } + } .print\:hidden { @media print { display: none; @@ -1293,7 +1494,8 @@ line-height: var(--tw-leading, var(--text-sm--line-height)); color: var(--color-slate-800); } - .text .page { + .text .count .page, + .text .notes .page { visibility: hidden; font-family: var(--font-sans); font-size: var(--text-sm); @@ -1392,6 +1594,11 @@ inherits: false; initial-value: 0; } +@property --tw-divide-y-reverse { + syntax: "*"; + inherits: false; + initial-value: 0; +} @property --tw-border-style { syntax: "*"; inherits: false; @@ -1405,6 +1612,10 @@ syntax: "*"; inherits: false; } +@property --tw-tracking { + syntax: "*"; + inherits: false; +} @property --tw-ordinal { syntax: "*"; inherits: false; @@ -1604,9 +1815,11 @@ --tw-skew-x: initial; --tw-skew-y: initial; --tw-space-y-reverse: 0; + --tw-divide-y-reverse: 0; --tw-border-style: solid; --tw-leading: initial; --tw-font-weight: initial; + --tw-tracking: initial; --tw-ordinal: initial; --tw-slashed-zero: initial; --tw-numeric-figure: initial; diff --git a/views/routes/brief/body.gohtml b/views/routes/brief/body.gohtml index 2d93a02..452fc3d 100644 --- a/views/routes/brief/body.gohtml +++ b/views/routes/brief/body.gohtml @@ -30,7 +30,26 @@