noora-theme-and-content-customization
Noora Theme And Content Customization
Use this skill when a Swift CLI already uses Noora and needs branded colors, different selected-row styling, or custom wording for alerts and prompt instructions.
Apply Theme Customization
Create a Theme and pass it to Noora(theme:).
import Noora
let theme = Theme(
primary: "005F73",
secondary: "CA6702",
muted: "6C757D",
accent: "BB3E03",
danger: "AE2012",
success: "2A9D8F",
info: "0A9396",
selectedRowText: "FFFFFF",
selectedRowBackground: "005F73"
)
let noora = Noora(theme: theme)
Apply Content Customization
Create a Content value when the built-in wording is wrong for the product, locale, or interaction style.
let content = Content(
errorAlertTitle: "Error",
errorAlertRecommendedTitle: "What to try next",
warningAlertTitle: "Warning",
warningAlertRecommendedTitle: "Please review",
successAlertTitle: "Done",
successAlertRecommendedTitle: "Summary",
infoAlertTitle: "Info",
infoAlertRecommendedTitle: "Summary",
choicePromptFilterTitle: "Filter",
choicePromptInstructionWithoutFilter: "up/down choose • enter confirm",
choicePromptInstructionWithFilter: "up/down choose • / filter • enter confirm",
choicePromptInstructionIsFiltering: "up/down choose • esc clear • enter confirm",
multipleChoicePromptFilterTitle: "Filter",
multipleChoicePromptErrorTitle: "Selection error",
multipleChoicePromptInstructionWithoutFilter: "up/down choose • space select • enter confirm",
multipleChoicePromptInstructionWithFilter: "up/down choose • space select • / filter • enter confirm",
multipleChoicePromptInstructionIsFiltering: "up/down choose • space select • esc clear • enter confirm",
textPromptValidationErrorsTitle: "Validation errors",
yesOrNoChoicePromptInstruction: "left/right choose • enter confirm",
yesOrNoChoicePromptPositiveText: YesNoAnswerContent(fullText: "Yes", character: "y"),
yesOrNoChoicePromptNegativeText: YesNoAnswerContent(fullText: "No", character: "n")
)
let noora = Noora(theme: theme, content: content)
Guidance
- Keep all theme values as 6-character hex strings without
#. - Treat
selectedRowTextandselectedRowBackgroundas required for table legibility, not optional decoration. - Customize
Contentonly when product wording needs to be consistent across the CLI. Do not override copy ad hoc at each call site if one global wording change is cleaner. - Keep instructions short. Noora prompts already render a lot of context.
Avoid
- Mixing unrelated branding logic into each command instead of centralizing a shared
Noorainstance. - Choosing low-contrast selected-row colors that make interactive tables unreadable.
- Rewriting
Contentjust to make minor stylistic edits that could live in the alert or prompt text itself.
More from spqw/skills-noora
noora-alerts
Use when building Noora warning, success, error, or info alerts in a Swift CLI. Covers choosing alert type, structuring takeaways, and using `TerminalText` interpolation inside alert copy.
1noora-progress-step
Use when a Swift CLI needs a spinner-style Noora progress step for an async operation. Covers `progressStep`, optional status updates, success and error messages, and sequencing multiple steps.
1noora-text-formatting
Use when composing or formatting Noora `TerminalText` in a Swift CLI. Covers semantic text components such as commands, links, paths, and themed text, plus `Noora().format(...)`.
1noora-collapsible-step
Use when a Swift CLI needs Noora to stream multiple log lines during a task and collapse them on success or failure. Covers `collapsibleStep`, `visibleLines`, and writing readable progress lines.
1noora-text-prompt
Use when gathering free-form text input with Noora in a Swift CLI. Covers `textPrompt`, default values, collapse behavior, and validation rules such as `NonEmptyValidationRule`.
1noora-interactive-tables
Use when building interactive Noora tables in a Swift CLI. Covers selectable tables, paginated tables, lazy paginated loading, updating tables from async sequences, and TTY constraints.
1