gitoriaLog in with ident

gitoria

All repositories: gitoria

ReadmeCodePull requestsReleasesTicketsSettings
Commit8d9450fd8d9450fdantcolony#40: history (LOG.md), worker briefs (missions/) and reports moved here from antcolony, numbered per project; old numbers in antcolony docs/mission-map.mdmre8d9450fd/styles.hl

14.8 KB

  1. // styles.hl — ALL of the app's CSS, served as /__hl/app.css. Components carry no Style blocks:
  2. // markup is domain tags (<repo-page>, <repo-meta>, …), this file lays them out. Tokens: shared/tokens.hl
  3. // (verbatim copy of loreana worldapi-tokens/tokens.hl); the app sets only its accent (blue).
  4. // In a styles file a bare name is a TAG (camelCase → kebab), a quoted name is a selector written
  5. // verbatim. MOBILE FIRST: every rule is the phone's; the one min-width block adds the wide layout.
  6. import { var } from 'hl:web/css'
  7. import { blueDark, colorText, colorBackground, colorTextStrong, colorTextMuted, colorBackgroundSunken, colorAccentText, colorSurface, colorBorder, colorDanger, colorSuccess } from './shared/tokens.hl'
  8. colorAccent = var(blueDark) // the app's accent: the only token this app sets
  9. '*,
  10. *::before,
  11. *::after' { boxSizing = 'border-box' }
  12. html { colorScheme = 'dark' }
  13. body { margin = '0' font = '16px/1.5 system-ui, sans-serif' color = colorText background = colorBackground }
  14. a { color = colorAccent textDecoration = 'none' }
  15. 'a:hover' { textDecoration = 'underline' }
  16. h1 { margin = '0' fontSize = '1.3rem' lineHeight = '1.3' color = colorTextStrong overflowWrap = 'anywhere' }
  17. h2 { margin = '0 0 .5rem' fontSize = '1rem' color = colorTextStrong }
  18. time { color = colorTextMuted fontSize = '.85rem' whiteSpace = 'nowrap' }
  19. dl { display = 'grid' gridTemplateColumns = 'auto 1fr' gap = '.3rem 1rem' margin = '0' }
  20. dt { color = colorTextMuted }
  21. dd { margin = '0' overflowWrap = 'anywhere' }
  22. 'input,
  23. textarea,
  24. select' { font = 'inherit' width = '100%' padding = '.5rem .7rem' color = colorTextStrong background = colorBackgroundSunken border = '1px solid ' + colorBorder borderRadius = '.4rem' }
  25. 'input:focus' { outline = '2px solid ' + colorAccent outlineOffset = '1px' }
  26. label { display = 'grid' gap = '.25rem' fontSize = '.9rem' color = colorTextMuted }
  27. button { font = 'inherit' fontWeight = '600' padding = '.55rem 1.1rem' color = colorAccentText background = colorAccent border = '0' borderRadius = '.4rem' cursor = 'pointer' justifySelf = 'start' }
  28. 'button:hover' { filter = 'brightness(1.1)' }
  29. 'button.quiet' { color = colorText background = 'transparent' border = '1px solid ' + colorBorder padding = '.35rem .8rem' fontSize = '.9rem' }
  30. // ---- the shell ---------------------------------------------------------------------------
  31. applicationHeader { position = 'sticky' top = '0' zIndex = '5' display = 'flex' flexWrap = 'wrap' alignItems = 'center' gap = '.5rem 1rem' padding = '.6rem 1rem' background = colorBackgroundSunken borderBottom = '1px solid ' + colorBorder }
  32. 'application-header .brand' { fontWeight = '800' fontSize = '1.15rem' color = colorAccent marginRight = 'auto' }
  33. main { display = 'block' maxWidth = '60rem' margin = '0 auto' padding = '1rem' }
  34. userBox { display = 'flex' flexWrap = 'wrap' alignItems = 'center' justifyContent = 'flex-end' gap = '.4rem .6rem' marginLeft = 'auto' maxWidth = '100%' }
  35. // the identity selector (gitoria#14): ident's shadow DOM, restyled to the accent; hidden on a repo address (class onrepo, main.hl)
  36. identSelector { '--ident-accent' = colorAccent '--ident-accent-text' = colorAccentText '--ident-background' = colorSurface '--ident-border' = colorBorder '--ident-font' = '600 .9rem/1.4 system-ui, sans-serif' }
  37. 'ident-selector::part(button)' { padding = '.35rem .8rem' }
  38. 'ident-selector::part(status)' { padding = '.35rem .8rem' }
  39. 'ident-selector.onrepo' { display = 'none' }
  40. '#whoami' { fontWeight = '600' color = colorTextStrong overflowWrap = 'anywhere' }
  41. 'a.button' { display = 'inline-block' fontWeight = '600' fontSize = '.9rem' padding = '.35rem .8rem' color = colorAccent border = '1px solid ' + colorAccent borderRadius = '.4rem' }
  42. 'a.button:hover' { textDecoration = 'none' background = colorSurface }
  43. namePrompt { display = 'block' maxWidth = '60rem' margin = '1rem auto 0' padding = '0 1rem' }
  44. 'name-prompt form' { display = 'grid' gap = '.6rem' padding = '1rem' background = colorSurface border = '1px solid ' + colorBorder borderRadius = '.5rem' }
  45. // ---- offline (mission 046, components/main.hl): the note under the header, and the probe whose endless animation is
  46. // the shell's 1 s tick (it must be rendered for the animation to run — not display none — so: invisible)
  47. offlineNote { display = 'block' padding = '.5rem 1rem' color = colorTextStrong background = colorSurface }
  48. netProbe { position = 'fixed' left = '0' top = '0' width = '1px' height = '1px' opacity = '0' pointerEvents = 'none' animation = 'gitoria-net-tick 1s linear infinite' }
  49. '@keyframes gitoria-net-tick' = {
  50. 'from' = { opacity = '0' }
  51. to = { opacity = '0' }
  52. }
  53. // ---- the repositories ----------------------------------------------------------------------
  54. repoHome { display = 'grid' gap = '1rem' }
  55. repoPage { display = 'grid' gap = '1rem' }
  56. repoHead { display = 'grid' gap = '1rem' }
  57. repoList { display = 'grid' gap = '1rem' }
  58. codeView { display = 'grid' gap = '1rem' minWidth = '0' }
  59. '#createform' { display = 'grid' gap = '.6rem' padding = '1rem' background = colorSurface border = '1px solid ' + colorBorder borderRadius = '.5rem' }
  60. '#repos' { display = 'grid' gap = '.5rem' margin = '0' padding = '0' listStyle = 'none' }
  61. '#repos li' { display = 'grid' gap = '.15rem' padding = '.7rem 1rem' background = colorSurface border = '1px solid ' + colorBorder borderRadius = '.5rem' }
  62. '#repos .slug' { fontWeight = '700' fontSize = '1.05rem' overflowWrap = 'anywhere' }
  63. '#repos .about' { color = colorText }
  64. repoMeta { display = 'flex' flexWrap = 'wrap' gap = '.2rem 1rem' fontSize = '.85rem' color = colorTextMuted }
  65. '.empty' { margin = '0' padding = '1rem' textAlign = 'center' color = colorTextMuted border = '1px dashed ' + colorBorder borderRadius = '.5rem' }
  66. '.muted' { margin = '0' fontSize = '.9rem' color = colorTextMuted }
  67. '.message' { margin = '0' minHeight = '1.5em' color = colorDanger }
  68. '.notice' { margin = '0' color = colorSuccess }
  69. // ---- the repo homepage (gitoria#8): README.md / $docs as rendered Markdown (components/markdown.hl) ----
  70. repoHomepage { display = 'grid' gap = '1.5rem' }
  71. homepageFile { display = 'grid' gap = '.5rem' minWidth = '0' }
  72. 'homepage-file > .path' { color = colorTextMuted fontSize = '.85rem' background = 'transparent' padding = '0' }
  73. markdownText { display = 'block' minWidth = '0' }
  74. 'markdown-text > :first-child' { marginTop = '0' }
  75. 'markdown-text > :last-child' { marginBottom = '0' }
  76. 'markdown-text p,
  77. markdown-text li' { margin = '.5rem 0' overflowWrap = 'anywhere' }
  78. 'markdown-text h2,
  79. markdown-text h3,
  80. markdown-text h4' { margin = '1.2rem 0 .5rem' lineHeight = '1.3' color = colorTextStrong }
  81. 'markdown-text h2' { fontSize = '1.25rem' paddingBottom = '.25rem' borderBottom = '1px solid ' + colorBorder }
  82. 'markdown-text h3' { fontSize = '1.08rem' }
  83. 'markdown-text h4' { fontSize = '1rem' }
  84. 'markdown-text ul,
  85. markdown-text ol' { margin = '.5rem 0' paddingLeft = '1.4rem' }
  86. 'markdown-text li' { margin = '.15rem 0' }
  87. 'markdown-text ul' { listStyleType = 'disc' }
  88. 'markdown-text ol' { listStyleType = 'decimal' }
  89. 'markdown-text strong' { color = colorTextStrong }
  90. 'markdown-text a' { color = colorAccent textDecoration = 'underline' textUnderlineOffset = '.15em' }
  91. 'markdown-text code' { font = '.88em/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace' padding = '.05em .3em' color = colorTextStrong background = colorBackgroundSunken borderRadius = '.25rem' }
  92. 'markdown-text pre' { margin = '.5rem 0' padding = '.6rem .7rem' overflowX = 'auto' background = colorBackgroundSunken border = '1px solid ' + colorBorder borderRadius = '.4rem' }
  93. 'markdown-text pre code' { padding = '0' background = 'transparent' whiteSpace = 'pre' }
  94. 'markdown-text blockquote' { margin = '.5rem 0' padding = '.1rem .9rem' color = colorTextMuted borderLeft = '3px solid ' + colorBorder }
  95. 'markdown-text hr' { border = '0' borderTop = '1px solid ' + colorBorder margin = '1rem 0' }
  96. 'markdown-text table-scroll' { display = 'block' overflowX = 'auto' margin = '.5rem 0' }
  97. 'markdown-text table' { borderCollapse = 'collapse' }
  98. 'markdown-text th,
  99. markdown-text td' { padding = '.35rem .7rem' border = '1px solid ' + colorBorder textAlign = 'left' verticalAlign = 'top' }
  100. 'markdown-text th' { color = colorTextStrong background = colorBackgroundSunken }
  101. // ---- adding code + access tokens (gitoria#7, plain text on the Code page of an empty repo: gitoria#20) ----
  102. '#addcode' { padding = '.6rem 1rem' background = colorSurface border = '1px solid ' + colorBorder borderRadius = '.5rem' }
  103. addCode { display = 'grid' gap = '.5rem' marginTop = '.6rem' minWidth = '0' }
  104. '#addcode pre,
  105. #tokensecret' { margin = '0' padding = '.6rem .7rem' overflowX = 'auto' font = '.88em/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace' color = colorTextStrong background = colorBackgroundSunken border = '1px solid ' + colorBorder borderRadius = '.4rem' }
  106. accessTokens { display = 'grid' gap = '.6rem' }
  107. sshKeys { display = 'grid' gap = '.6rem' }
  108. '#tokenform,
  109. #keyform' { display = 'grid' gap = '.6rem' padding = '1rem' background = colorSurface border = '1px solid ' + colorBorder borderRadius = '.5rem' }
  110. '#tokenlist,
  111. #keylist' { display = 'grid' gap = '.5rem' margin = '0' padding = '0' listStyle = 'none' }
  112. '#tokenlist li,
  113. #keylist li' { display = 'flex' flexWrap = 'wrap' alignItems = 'center' gap = '.3rem 1rem' padding = '.5rem 1rem' background = colorSurface border = '1px solid ' + colorBorder borderRadius = '.5rem' }
  114. '#tokenlist .slug,
  115. #keylist .slug' { fontWeight = '700' marginRight = 'auto' overflowWrap = 'anywhere' }
  116. // ---- browsing code (gitoria#9): /code, /branch/<name>, /commit/<id> ----
  117. repoNav { display = 'flex' gap = '1rem' borderBottom = '1px solid ' + colorBorder paddingBottom = '.4rem' }
  118. codeBrowser { display = 'grid' gap = '1rem' minWidth = '0' }
  119. codeHead { display = 'grid' gap = '.3rem' }
  120. latestCommit { display = 'flex' flexWrap = 'wrap' gap = '.2rem .8rem' alignItems = 'baseline' padding = '.5rem .8rem' background = colorSurface border = '1px solid ' + colorBorder borderRadius = '.4rem' }
  121. 'latest-commit a,
  122. code-side a.sha' { font = '.88em/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace' }
  123. pathCrumbs { display = 'flex' flexWrap = 'wrap' gap = '.3rem' overflowWrap = 'anywhere' }
  124. '#entries,
  125. code-side ul' { margin = '0' padding = '0' listStyle = 'none' display = 'grid' }
  126. '#entries li' { display = 'flex' justifyContent = 'space-between' gap = '1rem' padding = '.4rem .8rem' borderBottom = '1px solid ' + colorBorder }
  127. '#entries a.dir' { fontWeight = '700' }
  128. '#entries a.dir::after' { content = '"/"' }
  129. '#entries li > :first-child' { overflowWrap = 'anywhere' }
  130. codeFile { display = 'grid' gap = '.5rem' minWidth = '0' }
  131. '#lines' { margin = '0' padding = '.5rem 0' overflowX = 'auto' listStyle = 'none' counterReset = 'line' background = colorBackgroundSunken border = '1px solid ' + colorBorder borderRadius = '.4rem' font = '.85rem/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace' }
  132. '#lines li' { counterIncrement = 'line' whiteSpace = 'pre' minHeight = '1.5em' padding = '0 .8rem 0 0' width = 'max-content' minWidth = '100%' }
  133. '#lines li::before' { content = 'counter(line)' display = 'inline-block' width = '3.5rem' padding = '0 .8rem' textAlign = 'right' color = colorTextMuted userSelect = 'none' }
  134. '#lines code' { font = 'inherit' color = colorTextStrong }
  135. codeSide { display = 'grid' gap = '1rem' minWidth = '0' }
  136. 'code-side section' { display = 'grid' gap = '.4rem' minWidth = '0' }
  137. 'code-side li' { display = 'flex' flexWrap = 'wrap' alignItems = 'baseline' gap = '.2rem .8rem' padding = '.3rem 0' overflowWrap = 'anywhere' }
  138. 'button.setmain' { padding = '.1rem .5rem' fontSize = '.8rem' }
  139. // ---- the repo's tickets (gitoria#10): the list of tickets.worldapi.org's project ----
  140. repoTickets { display = 'grid' gap = '1rem' minWidth = '0' }
  141. '#newticket' { padding = '.7rem 1rem' background = colorSurface border = '1px solid ' + colorBorder borderRadius = '.5rem' }
  142. '#newticket summary' { cursor = 'pointer' fontWeight = '600' color = colorAccent }
  143. '#newticketform' { display = 'grid' gap = '.6rem' marginTop = '.6rem' }
  144. '#ticketlist' { display = 'grid' gap = '.4rem' margin = '0' padding = '0' listStyle = 'none' }
  145. '#ticketlist li' { display = 'flex' flexWrap = 'wrap' alignItems = 'baseline' gap = '.2rem .8rem' padding = '.6rem 1rem' background = colorSurface border = '1px solid ' + colorBorder borderRadius = '.5rem' }
  146. '#ticketlist .number' { color = colorTextMuted }
  147. '#ticketlist .subject' { flex = '1 1 14rem' fontWeight = '600' overflowWrap = 'anywhere' }
  148. '#ticketlist .state' { fontSize = '.85rem' color = colorTextMuted }
  149. // ---- the repo's pull requests (gitoria#11) ----
  150. repoPulls { display = 'grid' gap = '1rem' minWidth = '0' }
  151. '#pulllist' { display = 'grid' gap = '.4rem' margin = '0' padding = '0' listStyle = 'none' }
  152. '#pulllist li' { display = 'flex' flexWrap = 'wrap' alignItems = 'baseline' gap = '.2rem .8rem' padding = '.6rem 1rem' background = colorSurface border = '1px solid ' + colorBorder borderRadius = '.5rem' overflowWrap = 'anywhere' }
  153. '#pulllist .subject' { flex = '1 1 14rem' fontWeight = '600' }
  154. '#pulllist .open' { fontSize = '.85rem' color = colorAccent }
  155. '#pulllist .nomerge' { display = 'none' }
  156. '#pulllist .merged' { fontSize = '.85rem' color = colorTextMuted }
  157. '#pulllist .branches' { display = 'inline-flex' flexWrap = 'wrap' gap = '.2rem .5rem' }
  158. // ---- the repo's settings (gitoria#18) and "#12" links to tickets ----
  159. repoSettings { display = 'grid' gap = '1rem' minWidth = '0' }
  160. '#ticketsettings' { display = 'grid' gap = '.6rem' justifyItems = 'start' }
  161. '#disconnecttickets.nomerge' { display = 'none' }
  162. 'a.ticketref' { fontWeight = '600' }
  163. // ---- the repo's releases (gitoria#12) ----
  164. repoReleases { display = 'grid' gap = '1rem' minWidth = '0' }
  165. '#releaselist' { display = 'grid' gap = '.4rem' margin = '0' padding = '0' listStyle = 'none' }
  166. '#releaselist li' { display = 'flex' flexWrap = 'wrap' alignItems = 'baseline' gap = '.2rem .8rem' padding = '.6rem 1rem' background = colorSurface border = '1px solid ' + colorBorder borderRadius = '.5rem' overflowWrap = 'anywhere' }
  167. '#releaselist .version' { fontSize = '1.05rem' color = colorAccent }
  168. '#releaselist .latest' { fontSize = '.85rem' color = colorTextMuted }
  169. '#releaselist .subject' { flex = '1 1 14rem' }
  170. '@media (min-width: 45rem)' = {
  171. 'code-browser' { gridTemplateColumns = 'minmax(0, 1fr) 18rem' alignItems = 'start' }
  172. 'code-browser > *' { gridColumn = '1' }
  173. 'code-browser > code-side' { gridColumn = '2' gridRow = '1 / span 4' }
  174. main { padding = '1.5rem 1rem' }
  175. '#repos li' { gridTemplateColumns = 'minmax(10rem, 16rem) 1fr auto' alignItems = 'center' gap = '.15rem 1rem' }
  176. }
  177. '#keylist .fingerprint' { overflowWrap = 'anywhere' color = colorTextMuted }
  178. '#keytext' { font = '.88em/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace' }

Branches

Latest commits

  • 8d9450fdantcolony#40: history (LOG.md), worker briefs (missions/) and reports moved here from antcolony, numbered per project; old numbers in antcolony docs/mission-map.mdmre
  • 205d5fe4gitoria: Hybriel master ff51cf46; ssh keys/tokens no double rows (session sync); gates follow #20mre
  • 9b27cb26gitoria#21: installable app (manifest, service worker, offline start page), own iconmre
  • 68dcb603deploy.sh: back up live storage/.sessions/.env before every deploy (newest 5 kept)mre
  • e2deed6dgitoria#20: "Add code" only on the Code page of an empty repository, no collapsiblemre
  • 8bb97ffddeploy.sh: never send .git or .gitignore to Byrodinmre
  • fd981932State of 2026-09-27; bin/ no longer tracked (Hybriel commit is in README)mre
  • 4a2d7125initial commitmre