feat: fully dynamic custom field badges (auto-style by value, not key name)
CI / typecheck + build (turbo) (push) Canceled after 0s

- CustomFieldBadges now auto-detects styling based on VALUE TYPE+CONTENT
  (number→purple points style, difficulty strings→color-coded, event-like
  strings→purple, categories→orange, status→color-coded)
- DocForm help text made generic (no hardcoded field examples)
- Removed typed CTF fields from DocumentMeta (event/challenge/etc) —
  everything flows through extraFields JSONB for true dynamic behavior
This commit is contained in:
asepharyana
2026-08-21 00:31:36 +07:00
parent b31948faba
commit edbd812c30
2 changed files with 73 additions and 31 deletions
+4 -8
View File
@@ -244,14 +244,10 @@ export default function DocForm({ mode, slug, secret, initial }: DocFormProps) {
Custom metadata fields
</label>
<p className="text-xs text-[#62666d] mb-3">
Add extra frontmatter fields. These will be stored in the document's
YAML frontmatter and rendered as badges on the doc page. Examples for
CTF writeups: <code className="text-[#7170ff]">event</code>,{" "}
<code className="text-[#7170ff]">challenge</code>,{" "}
<code className="text-[#7170ff]">category</code>,{" "}
<code className="text-[#7170ff]">difficulty</code>,{" "}
<code className="text-[#7170ff]">points</code>.
</p>
Add extra frontmatter fields. Content creators name and define their own
metadata here — the system auto-renders any field as a badge on the doc
page based on its value (e.g. numbers → points style, "easy" → green
difficulty badge, etc.).{" "}</p>
{customFields.length > 0 && (
<div className="space-y-3 mb-3">
{customFields.map((field, i) => (