input coloring

This commit is contained in:
Ian Gulliver
2026-10-17 08:53:21 -07:00
parent 3e537c827d
commit b1eb595af1
8 changed files with 171 additions and 15 deletions
+31 -1
View File
@@ -54,6 +54,24 @@ func openAppLink(_ url: URL, _ store: Store, _ overlays: Overlays) -> OpenURLAct
return .handled
}
extension MDMark {
var color: Color {
switch self {
case .ok: Palette.ok
case .warn: Palette.warn
case .danger: Palette.danger
}
}
var tint: Color {
switch self {
case .ok: Palette.okTint
case .warn: Palette.warnTint
case .danger: Palette.dangerTint
}
}
}
private let httpLink = Re(#"^https?://"#, caseless: true)
private let taskHref = Re(#"^#/task/(\w+)(/\w+)?$"#)
private let todoHref = Re(#"^#/todo/(\w+)/(.+)$"#)
@@ -136,6 +154,10 @@ struct InlineRenderer {
}
case .link(let href, let inner):
link(href, inner, style, &out)
case .mark(let mark, let inner):
var s = style
s.color = mark.color
render(inner, s, &out)
}
}
}
@@ -421,13 +443,14 @@ private struct TableBlock: View {
GridRow {
ForEach(Array(head.enumerated()), id: \.offset) { _, cell in
cellView([.strong(cell)])
.background(Palette.surface)
.background(tint(cell) ?? Palette.surface)
}
}
ForEach(Array(rows.enumerated()), id: \.offset) { _, row in
GridRow {
ForEach(Array(row.enumerated()), id: \.offset) { _, cell in
cellView(cell)
.background(tint(cell) ?? .clear)
}
}
}
@@ -435,6 +458,13 @@ private struct TableBlock: View {
.overlay(Rectangle().stroke(Palette.border))
}
private func tint(_ cell: [MDInline]) -> Color? {
guard cell.count == 1, case .mark(let mark, _) = cell[0] else {
return nil
}
return mark.tint
}
private func cellView(_ cell: [MDInline]) -> some View {
InlineView(inlines: cell, ctx: ctx)
.padding(.horizontal, 8)