← Back to list
k-fenui
by Falkicon
In-game development hub for World of Warcraft addon developers. Centralizes debugging, testing, error capture, and performance monitoring with universal copy support.
⭐ 8🍴 1📅 Jan 24, 2026
SKILL.md
name: k-fenui description: > Context for FenUI - the UI widget library for WoW addons. Covers frames, layouts, buttons, panels, and theming. Load this when building addon UI or working with FenUI widgets. Triggers: fenui, ui, widget, frame, layout, panel, button, tabs.
FenUI Library
FenUI is a UI widget library for WoW addons - pre-built components with consistent styling and behavior.
Design Philosophy
- Composable: Build complex UIs from simple widgets
- Themeable: Consistent look across all widgets
- Declarative: Describe what you want, not how to build it
- Accessible: Proper focus handling and keyboard navigation
Widget Categories
| Category | Widgets | Purpose |
|---|---|---|
| Containers | Panel, Frame, Window | Hold other widgets |
| Layout | Layout, Grid, Stack | Arrange children |
| Input | Button, EditBox, Slider, Checkbox | User interaction |
| Display | Label, Icon, ProgressBar, Texture | Show information |
| Navigation | Tabs, ScrollFrame, Dropdown | Navigate content |
Usage Pattern
local FenUI = LibStub("FenUI")
-- Create a panel with children
local panel = FenUI.Panel:Create(parent, {
width = 300,
height = 200,
title = "My Panel",
})
-- Add a button
local button = FenUI.Button:Create(panel, {
text = "Click Me",
onClick = function() print("Clicked!") end,
})
Layout System
FenUI uses a declarative layout system:
local layout = FenUI.Layout:Create(parent, {
direction = "vertical", -- or "horizontal"
spacing = 8,
padding = { top = 10, bottom = 10, left = 10, right = 10 },
})
-- Children are automatically arranged
layout:AddChild(widget1)
layout:AddChild(widget2)
layout:AddChild(widget3)
Common Widgets
Panel
FenUI.Panel:Create(parent, {
width = 300,
height = 200,
title = "Title", -- Optional header
closable = true, -- Show close button
movable = true, -- Allow dragging
})
Button
FenUI.Button:Create(parent, {
text = "Click Me",
width = 100,
height = 24,
onClick = function() end,
onEnter = function() end, -- Hover
onLeave = function() end,
})
Tabs
FenUI.Tabs:Create(parent, {
tabs = {
{ id = "tab1", label = "First", content = frame1 },
{ id = "tab2", label = "Second", content = frame2 },
},
defaultTab = "tab1",
onTabChanged = function(tabId) end,
})
Grid
FenUI.Grid:Create(parent, {
columns = 3,
rowHeight = 30,
columnWidth = 100,
spacing = 4,
})
Theming
FenUI supports theming via a theme table:
FenUI:SetTheme({
colors = {
background = { 0.1, 0.1, 0.1, 0.9 },
text = { 1, 1, 1, 1 },
accent = { 0.2, 0.6, 1, 1 },
},
fonts = {
normal = "GameFontNormal",
header = "GameFontNormalLarge",
},
})
Best Practices
- Use Layout - Don't manually position widgets; use Layout containers
- Prefer FenUI widgets - Don't create raw frames when a FenUI widget exists
- Keep View layer thin - UI code should just display data from Bridge layer
- Test at different scales - Check UI at various UI scale settings
Score
Total Score
70/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
✓説明文
100文字以上の説明がある
+10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon