Sub-Pages¶
Guide for creating “sub-pages” (detail views) in the FreeIPA Modern WebUI. A sub-page is accessed by clicking a row in a main page table.
Sub-Page Types¶
Type |
Description |
Example |
|---|---|---|
Settings |
Edit entity properties via form fields |
|
Membership Tabs |
Tabs showing related entities (Members, Member Of) |
|
Independent |
Entity-specific table with Add/Delete |
|
See 11-visual-reference.md for ASCII diagrams and 10-prompt-writing-guide.md for how to write effective prompts.
CRITICAL: Read Best Practices First¶
⚠️ MANDATORY: Before creating any sub-page, read 00-best-practices.md.
Key rules:
Never create disabled buttons or empty handlers without asking
Always use absolute imports (starting with
src/)Always ask for missing information before implementing
Always run post-generation validation commands
See 00-best-practices.md for the complete guide.
Contextual Help Panel¶
Every Settings page must include Help link. Add entry in documentation-links.json:
{ "entity-settings": [] }
⚠️ Missing entries cause runtime crash. See 12-settings-patterns.md.
Post-Generation Checks¶
npm run prettier:fix && npm run lint && npm run knip && npm run build
See 08-checklist.md for full validation.
Guide Files¶
Core¶
File |
Contents |
|---|---|
Read first — Golden rules, anti-patterns, required practices |
|
Required inputs, inference rules |
|
Data hook pattern |
|
Tabs anatomy, URL params |
|
Settings form, toolbar |
|
Kebab menu actions, modals |
|
Form components, field config |
|
Custom table tabs |
|
Membership tabs |
|
Custom membership implementation |
|
Generic membership tables |
|
Creating new membership components |
|
Route patterns |
|
Validation checklist |
|
Common implementation issues |
Supplementary¶
File |
Contents |
|---|---|
Add/Delete modals |
|
Prompt guidelines |
|
ASCII layout diagrams |
|
UI patterns |
|
Troubleshooting overview |
|
Form issues |
|
API issues |
|
Save/Revert issues |
|
TypeScript interfaces, metadata |
|
Category toggle overview |
|
RPC mutations, hook config |
|
Clearing members, API naming |
|
Reusable components (inputs, lists, layouts) — shared with main-pages |
|
Independent sub-pages |