Files
metabuilder/packages/forum_forge/components/ui.json
johndoe6345789 8c8f8cce8a feat: Add JSON Script Example and Lua Test Framework
- Created a new package for JSON Script Example with comprehensive examples demonstrating the full JSON script specification.
- Added permissions for viewing, executing, and modifying examples in the JSON Script Example package.
- Implemented functions for various expressions, statements, operators, and control flow in the JSON Script Example.
- Developed a Storybook configuration for showcasing JSON Script Examples with interactive components.
- Established a styles token file for consistent styling across the JSON Script Example package.
- Introduced a new Lua Test Framework package with components for running and displaying test results.
- Defined permissions for executing and viewing Lua test results, along with configuration and debugging capabilities.
- Implemented a comprehensive set of functions for the Lua testing framework, including assertions and mocks.
- Created Storybook stories for the Lua Test Framework to demonstrate the test runner and results display.
- Added a styles token file for the Lua Test Framework to ensure a cohesive design.
2026-01-02 16:42:39 +00:00

441 lines
12 KiB
JSON

{
"$schema": "https://metabuilder.dev/schemas/json-script-components.schema.json",
"schemaVersion": "2.0.0",
"package": "forum_forge",
"description": "Forum Forge UI components including category lists, thread views, and moderation panels",
"components": [
{
"id": "forum_root",
"name": "ForumRoot",
"description": "Main forum container with hero section, stats, and navigation",
"props": [
{
"name": "title",
"type": "string",
"required": false,
"default": "Forum Forge",
"description": "Forum title"
},
{
"name": "subtitle",
"type": "string",
"required": false,
"default": "A modern discussion hub with curated categories, rapid replies, and moderator-ready queues.",
"description": "Forum subtitle"
}
],
"render": {
"type": "element",
"template": {
"type": "Stack",
"direction": "column",
"gap": 3,
"className": "forum-forge-root",
"children": [
{
"type": "Card",
"variant": "outlined",
"className": "forum-hero",
"children": [
{
"type": "Stack",
"direction": "column",
"gap": 2,
"sx": { "p": 3 },
"children": [
{
"type": "Text",
"variant": "h4",
"fontWeight": "bold",
"children": "{{title}}"
},
{
"type": "Text",
"variant": "body1",
"color": "secondary",
"children": "{{subtitle}}"
},
{
"type": "Flex",
"gap": 1,
"children": [
{
"type": "Button",
"variant": "contained",
"color": "primary",
"children": "Start new thread"
},
{
"type": "Button",
"variant": "outlined",
"children": "Browse categories"
}
]
}
]
}
]
}
]
}
}
},
{
"id": "forum_stat_card",
"name": "ForumStatCard",
"description": "Stat card for forum metrics (active threads, replies, flags)",
"props": [
{
"name": "label",
"type": "string",
"required": true,
"description": "Stat label"
},
{
"name": "value",
"type": "string",
"required": true,
"description": "Stat value"
}
],
"render": {
"type": "element",
"template": {
"type": "Card",
"variant": "outlined",
"className": "forum-stat-card",
"children": [
{
"type": "Stack",
"direction": "column",
"gap": 0.5,
"sx": { "p": 2 },
"children": [
{
"type": "Text",
"variant": "caption",
"color": "secondary",
"children": "{{label}}"
},
{
"type": "Text",
"variant": "h5",
"fontWeight": "semibold",
"children": "{{value}}"
}
]
}
]
}
}
},
{
"id": "forum_stats_grid",
"name": "ForumStatsGrid",
"description": "Grid layout for forum statistics",
"props": [
{
"name": "activeThreads",
"type": "string",
"default": "246"
},
{
"name": "repliesToday",
"type": "string",
"default": "1,092"
},
{
"name": "queuedFlags",
"type": "string",
"default": "8"
}
],
"render": {
"type": "element",
"template": {
"type": "Grid",
"container": true,
"spacing": 2,
"className": "forum-stats-grid",
"children": [
{
"type": "Grid",
"item": true,
"xs": 12,
"sm": 4,
"children": [
{
"type": "ForumStatCard",
"label": "Active threads",
"value": "{{activeThreads}}"
}
]
},
{
"type": "Grid",
"item": true,
"xs": 12,
"sm": 4,
"children": [
{
"type": "ForumStatCard",
"label": "Replies today",
"value": "{{repliesToday}}"
}
]
},
{
"type": "Grid",
"item": true,
"xs": 12,
"sm": 4,
"children": [
{
"type": "ForumStatCard",
"label": "Queued flags",
"value": "{{queuedFlags}}"
}
]
}
]
}
}
},
{
"id": "category_card",
"name": "CategoryCard",
"description": "Card displaying a forum category with title and description",
"props": [
{
"name": "title",
"type": "string",
"required": true,
"description": "Category title"
},
{
"name": "description",
"type": "string",
"required": true,
"description": "Category description"
},
{
"name": "onClick",
"type": "function",
"required": false,
"description": "Click handler"
}
],
"render": {
"type": "element",
"template": {
"type": "Card",
"variant": "outlined",
"className": "forum-category-card",
"onClick": "{{onClick}}",
"children": [
{
"type": "Stack",
"direction": "column",
"gap": 0.5,
"sx": { "p": 2 },
"children": [
{
"type": "Text",
"variant": "h6",
"fontWeight": "semibold",
"children": "{{title}}"
},
{
"type": "Text",
"variant": "body2",
"color": "secondary",
"children": "{{description}}"
}
]
}
]
}
}
},
{
"id": "category_list",
"name": "CategoryList",
"description": "List of forum categories",
"props": [
{
"name": "categories",
"type": "array",
"required": false,
"default": [],
"description": "Array of category objects"
},
{
"name": "title",
"type": "string",
"default": "Featured categories"
}
],
"render": {
"type": "element",
"template": {
"type": "Card",
"variant": "outlined",
"className": "forum-categories",
"children": [
{
"type": "Stack",
"direction": "column",
"gap": 2,
"sx": { "p": 3 },
"children": [
{
"type": "Text",
"variant": "h5",
"fontWeight": "semibold",
"children": "{{title}}"
},
{
"type": "Stack",
"direction": "column",
"gap": 1.5,
"children": {
"type": "loop",
"items": "{{categories}}",
"itemKey": "id",
"template": {
"type": "CategoryCard",
"title": "{{item.title}}",
"description": "{{item.description}}"
}
}
}
]
}
]
}
}
},
{
"id": "thread_card",
"name": "ThreadCard",
"description": "Card displaying a forum thread with title and metadata",
"props": [
{
"name": "title",
"type": "string",
"required": true,
"description": "Thread title"
},
{
"name": "replyCount",
"type": "number",
"required": false,
"default": 0,
"description": "Number of replies"
},
{
"name": "lastUpdated",
"type": "string",
"required": false,
"description": "Last update time"
},
{
"name": "onClick",
"type": "function",
"required": false
}
],
"render": {
"type": "element",
"template": {
"type": "Card",
"variant": "outlined",
"className": "forum-thread-card",
"onClick": "{{onClick}}",
"children": [
{
"type": "Stack",
"direction": "column",
"gap": 0.5,
"sx": { "p": 2 },
"children": [
{
"type": "Text",
"variant": "subtitle1",
"fontWeight": "semibold",
"children": "{{title}}"
},
{
"type": "Text",
"variant": "caption",
"color": "secondary",
"children": "{{replyCount}} replies · Updated {{lastUpdated}}"
}
]
}
]
}
}
},
{
"id": "thread_list",
"name": "ThreadList",
"description": "List of forum threads",
"props": [
{
"name": "threads",
"type": "array",
"required": false,
"default": [],
"description": "Array of thread objects"
},
{
"name": "title",
"type": "string",
"default": "Trending threads"
}
],
"render": {
"type": "element",
"template": {
"type": "Card",
"variant": "outlined",
"className": "forum-threads",
"children": [
{
"type": "Stack",
"direction": "column",
"gap": 2,
"sx": { "p": 3 },
"children": [
{
"type": "Text",
"variant": "h5",
"fontWeight": "semibold",
"children": "{{title}}"
},
{
"type": "Stack",
"direction": "column",
"gap": 1.5,
"children": {
"type": "loop",
"items": "{{threads}}",
"itemKey": "id",
"template": {
"type": "ThreadCard",
"title": "{{item.title}}",
"replyCount": "{{item.replyCount}}",
"lastUpdated": "{{item.lastUpdated}}"
}
}
}
]
}
]
}
}
}
]
}