promotional bannermobile promotional banner
premium banner
A modular, schema-driven configuration framework for WoW addons. Build modern, 'pixel-perfect' options menus with built-in theming, transactional state, and complex layouts. (Developer Library)

Description

NoobTaco-Config

CI Status Release Status Discord Buy Me A Coffee

NoobTaco-Config is a modular, schema-driven configuration framework for World of Warcraft addons. Designed with a focus on "pixel-perfect" aesthetics and ease of use, it allows developers to build complex, themed options menus using simple Lua tables.

📸 Screenshots

Overview Theme Support
Welcome Themes

[!TIP] Use the Library Showcase in-game to see the dynamic theming and all widgets in action.

✨ Features

  • 🛠️ Declarative Schemas: Define your entire UI layout in nested Lua tables.
  • 🎨 Dynamic Theming: Built-in support for NoobTaco, Nord, and Catppuccin themes.
  • 🔡 Accessible Typography: Integrated with the Poppins font family using optimized weights (Medium, Bold) for maximum readability.
  • Transactional State: Built-in commit/revert logic for user settings.
  • 🌈 Inline Color Tokens: Use |ctoken| (e.g., |chighlight|) to dynamically style text based on the active theme.
  • 📁 Nested Data: Native support for dot-notation in IDs to map directly to complex SavedVariables.
  • 🔊 Media Previewing: Specialized media widgets with built-in playback for sounds.

🚀 Quick Start

1. Initialization

Retrieve the library via LibStub.

local Lib = LibStub("NoobTaco-Config-1.0")
if not Lib then return end

2. Create a Schema

Define the layout of your settings panel.

local schema = {
    type = "group",
    label = "General Settings",
    children = {
        {
            type = "about",
            icon = [[Interface\AddOns\MyAddon\Media\Logo]],
            title = "My Addon",
            version = "1.0.0",
            description = "A powerful configuration suite.",
            links = {
                { 
                    label = "GitHub", 
                    url = "https://github.com/...",
                    onClick = function() print("Custom Click!") end
                }
            }
        },
        {
            type = "card",
            label = "Feature Settings",
            children = {
                 { id = "enableFeature", type = "checkbox", label = "Enable Magic", default = true },
                 { id = "powerLevel", type = "slider", label = "Power Level", min = 0, max = 100, default = 9000 }
            }
        }
    }
}

3. Rendering

-- Render directly to a Blizzard category frame
Lib.Renderer:Render(schema, myPanel)

🖼️ UI Showcase

Inputs & Widgets Buttons Feedback & Alerts
Inputs Buttons Feedback

🧪 Theme Engine

The library supports instant theme switching. All colors, including inline tokens, update in real-time.

NoobTaco (Standard) Nord (Frost) Catppuccin (Mocha)
NoobTaco Nord Catppuccin

📚 Documentation

❤️ Support

If you're looking for help, have questions, or want to join the community, join us on Discord!

Discord Buy Me A Coffee

📄 AI Usage

See AI_USAGE.md for more information.

📄 License

This project is licensed under the GPL-3.0-or-later License - see the LICENSE file for details.