Add comprehensive showcase documentation, deployment guides, and interactive component documentation - #88
Conversation
Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
|
有可能把每个控件的渲染效果,和控件介绍组合起来吗? 类似 shadcn,并且最好能让用户修改代码看到效果 |
@copilot |
Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
完全可以!我已经创建了类似 Shadcn UI 的解决方案: ✅ 已实现(提交 55b21f2):
📋 三阶段实施: 第一阶段(立即可用): 增强型文档
第二阶段(2-4周): 交互式编辑器
第三阶段(2-3月): 独立 Playground 应用
建议: 先实施第一阶段(使用 |
…emove unused param Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📦 Bundle Size Report
Size Limits
|
|
✅ All checks passed!
|
There was a problem hiding this comment.
Pull request overview
This PR provides a comprehensive solution for showcasing Object UI components online, addressing the need for documentation and deployment strategies to enable website visitors to explore and deploy the Object UI Showcase.
Purpose: Enable users to try Object UI Showcase through local setup, online deployment, and interactive documentation.
Changes:
- Added 7 new comprehensive documentation files (~72KB total) covering showcase guides, deployment strategies, and interactive component documentation
- Introduced
StackSchematype and export for vertical layout components - Added
colorproperty to chart component defaults - Removed unused
isChildparameter from tree-view component - Created Shadcn-style interactive component documentation template (
button-enhanced.json) - Updated README with prominent showcase section and VitePress navigation with new "Try & Explore" sidebar
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
packages/types/src/layout.ts |
Added StackSchema type definition extending FlexSchema |
packages/types/src/index.ts |
Exported StackSchema type for public API |
packages/plugin-charts/src/index.tsx |
Added default color property to chart component |
packages/components/src/renderers/data-display/tree-view.tsx |
Removed unused isChild parameter from TreeNodeComponent |
examples/showcase/pages/form/button-enhanced.json |
Created comprehensive Button component documentation template with preview, code examples, and props table |
docs/guide/try-it-online.md |
Complete online trial guide with 3 playground options, interactive examples, and mobile testing instructions |
docs/guide/showcase.md |
Comprehensive showcase guide covering 60+ components across 8 categories with local setup and learning paths |
docs/guide/interactive-showcase.md |
3-phase implementation plan for Shadcn-style interactive documentation |
docs/deployment/showcase-deployment.md |
Deployment guide for 5 platforms with CI/CD configurations and security best practices |
docs/SHOWCASE_PLAN_CN.md |
Complete implementation strategy in Chinese with cost analysis and success metrics |
docs/README_SHOWCASE_DOCS.md |
Documentation index with navigation guide |
docs/QUICKSTART_DEPLOY.md |
15-minute quick deployment guide |
docs/PR_SUMMARY.md |
PR summary and benefits overview |
docs/.vitepress/config.mts |
Added "Showcase" to main nav and "Try & Explore" sidebar section with Interactive Documentation link |
README.md |
Added prominent "Try the Showcase" section with quick start commands and feature highlights |
|
|
||
| ```bash | ||
| # Clone the repository | ||
| git clone https://github.com/objectql/objectui.git |
There was a problem hiding this comment.
The repository URL is incorrect. The GitHub organization is "objectstack-ai", not "objectql". This URL should be "https://github.com/objectstack-ai/objectui.git".
| git clone https://github.com/objectql/objectui.git | |
| git clone https://github.com/objectstack-ai/objectui.git |
…mes (#1484) The package-detail primary CTA stayed 'Install to cloud…' even for an already-installed package in an env console. The installed-state probe was gated on getRuntimeConfig().defaultEnvironmentId, which is empty on a per-subdomain tenant runtime — so the probe never ran. But getCloudInstallationInfo's same-origin /cloud-connection/installation path resolves the env by hostname and needs no explicit id (pairs with cloud #88). Drop the guard so the probe always runs; the CTA flips to 'Installed'. Also add the missing marketplace.action.installed i18n key (en 'Installed', zh '已安装') — code previously relied on a defaultValue fallback, so zh showed English. Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com>
Ruling A on objectui#8363 (director seat, decision batch #88, 2026-09-08) lands as text. CONTRIBUTING.md's `docs/` paragraph now states the convention once: a code block inside an ADR or a dated audit is a SPECIMEN of what was decided or measured, fenced `plaintext` — an unhighlighted spelling check-doc-fence-languages.mjs already lists and check-doc-snippet-types.mjs does not compile — never ts/tsx/typescript. Code a reader may copy stays in content/docs/** and skills/objectui/**, where a gate compiles it. The UNGATED_DOCS header comment in check-doc-snippet-types.mjs annotates the four ledgered rows as the terminal state: no record is edited to make it compile, no row is deleted to clear the ledger, and new records carry the convention instead so the list does not grow. Both edits are additive text. No record is edited, no ledger row is added, removed or reworded, and no gate behaviour moves. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HxLw5aKDPR5RJgyUR7Exkd
…teen members Of the three declarations of the `filter-builder` authoring surface — the published doc, the component, and this zod mirror — the doc is the authority (objectui#7562, director seat, decision batch #88, 2026-09-08). The component already follows it; the mirror was the outlier on both axes, offering seven `type` members where the doc offers fourteen and REQUIRING a key the doc marks optional. So a `fields` entry written against our own documentation, which the renderer draws correctly, was refused by our own validator. The ruling carried a precondition, measured before the enum moved: every one of the fourteen has a renderer branch, or it comes OUT of the doc instead. One condition row per member was driven through the real `FilterBuilder` and both the value control and the operator bucket were read. All fourteen have a branch, so nothing was withdrawn from the doc and the mdx is untouched by this change. `text` is the one member whose branch is by NAME rather than by a distinct control — it IS the unrecognised-word fallthrough target, so it measures identical to a nonsense spelling. The renderer names it at `valueFamilyForFieldType`'s `fieldType || "text"`, which is both why it stays and why `type` is safe to leave optional. `string`, named nowhere, stays refused. The mirror-test pins move with the accept set: the seven `still refuses the live-but-unruled spelling …` assertions become `accepts …, and the renderer draws it`, each paired with the literal bucket that carries it, and the doc-vs-mirror assertion's closing line inverts. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012W3vMLTFY9SPr2LyxhSeYi
…teen members (objectstack-ai#8766) Of the three declarations of the `filter-builder` authoring surface — the published doc, the component, and this zod mirror — the doc is the authority (objectui#7562, director seat, decision batch objectstack-ai#88, 2026-09-08). The component already follows it; the mirror was the outlier on both axes, offering seven `type` members where the doc offers fourteen and REQUIRING a key the doc marks optional. So a `fields` entry written against our own documentation, which the renderer draws correctly, was refused by our own validator. The ruling carried a precondition, measured before the enum moved: every one of the fourteen has a renderer branch, or it comes OUT of the doc instead. One condition row per member was driven through the real `FilterBuilder` and both the value control and the operator bucket were read. All fourteen have a branch, so nothing was withdrawn from the doc and the mdx is untouched by this change. `text` is the one member whose branch is by NAME rather than by a distinct control — it IS the unrecognised-word fallthrough target, so it measures identical to a nonsense spelling. The renderer names it at `valueFamilyForFieldType`'s `fieldType || "text"`, which is both why it stays and why `type` is safe to leave optional. `string`, named nowhere, stays refused. The mirror-test pins move with the accept set: the seven `still refuses the live-but-unruled spelling …` assertions become `accepts …, and the renderer draws it`, each paired with the literal bucket that carries it, and the doc-vs-mirror assertion's closing line inverts. Claude-Session: https://claude.ai/code/session_012W3vMLTFY9SPr2LyxhSeYi Co-authored-by: Claude <noreply@anthropic.com>
…objectstack-ai#8746) Ruling A on objectui#8363 (director seat, decision batch objectstack-ai#88, 2026-09-08) lands as text. CONTRIBUTING.md's `docs/` paragraph now states the convention once: a code block inside an ADR or a dated audit is a SPECIMEN of what was decided or measured, fenced `plaintext` — an unhighlighted spelling check-doc-fence-languages.mjs already lists and check-doc-snippet-types.mjs does not compile — never ts/tsx/typescript. Code a reader may copy stays in content/docs/** and skills/objectui/**, where a gate compiles it. The UNGATED_DOCS header comment in check-doc-snippet-types.mjs annotates the four ledgered rows as the terminal state: no record is edited to make it compile, no row is deleted to clear the ledger, and new records carry the convention instead so the list does not grow. Both edits are additive text. No record is edited, no ledger row is added, removed or reworded, and no gate behaviour moves. Claude-Session: https://claude.ai/code/session_01HxLw5aKDPR5RJgyUR7Exkd Co-authored-by: Claude <noreply@anthropic.com>
objectui#9073 items 2 and 3, both in the same file as item 1. The floor test's `logic` control named a mode it cannot catch: "a reader that stopped at the first line of a multi-line union". `logic` is itself a single-line union, so a first-line-only reader reads it correctly and that leg stays green. Measured by mutating the reader into a line-bounded one — six tests redden, and every one of them through the zero-members throw raised out of `documentedTypes()`, not through this control. The docblock now names that mechanism and says plainly what the control does not cover. The equality pin's message offered its exception as "a spelling a LATER ruling RETIRED from this doc", citing objectui#4814. That retirement is 2026-08-16/17 and batch #88 is 2026-09-02, so it PREDATES the batch. The exception never depended on the order: it now reads "ANY ruling". ⛔ No existing leg is weakened or removed, and no accept set moves. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UzHd6hDYatoDn17BuwKxnZ
…ocates the terminator (objectstack-ai#9182) * fix(types): the filter-builder doc reader strips comments before it locates the terminator objectui#9073. `docUnionMembers` located the terminating `;` of a union in the RAW interface block and stripped line comments only afterwards, so a `;` inside a comment on one of the union's own rows ended the slice early: the published doc's fourteen-member `type?:` union read as eight, and the mirror/doc pin then announced "the mirror widened past the authority" for six members the doc does publish. The defect is that false positive, not the under-count — the verdict sends a reader looking for a widening nobody made. Comments now come off first and `at` is computed on the stripped block: the strip shortens it, so an index taken before it addresses a different place after it, and carrying one across drops the union's LEADING members instead. Both hazards are pinned, plus a control that is green in both worlds and a characterisation of the one branch whose outcome moves (a union whose only `;` lives in a comment is now `is unterminated`, loudly, rather than silently truncated). The published doc is untouched: the defect was in the reader, never in the surface it reads. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UzHd6hDYatoDn17BuwKxnZ * fix(types): correct two claims the filter-builder pin makes about itself objectui#9073 items 2 and 3, both in the same file as item 1. The floor test's `logic` control named a mode it cannot catch: "a reader that stopped at the first line of a multi-line union". `logic` is itself a single-line union, so a first-line-only reader reads it correctly and that leg stays green. Measured by mutating the reader into a line-bounded one — six tests redden, and every one of them through the zero-members throw raised out of `documentedTypes()`, not through this control. The docblock now names that mechanism and says plainly what the control does not cover. The equality pin's message offered its exception as "a spelling a LATER ruling RETIRED from this doc", citing objectui#4814. That retirement is 2026-08-16/17 and batch objectstack-ai#88 is 2026-09-02, so it PREDATES the batch. The exception never depended on the order: it now reads "ANY ruling". ⛔ No existing leg is weakened or removed, and no accept set moves. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UzHd6hDYatoDn17BuwKxnZ --------- Co-authored-by: Claude <noreply@anthropic.com>
Provides complete solution for enabling website visitors to explore and deploy the Object UI Showcase, addressing the requirement for documentation and deployment strategy. Includes Shadcn-style interactive component documentation with a 3-phase implementation plan.
Documentation Suite (11 files, ~72KB)
User-Facing Guides:
docs/guide/showcase.md- Complete component catalog (60+ components across 8 categories), local setup, learning pathsdocs/guide/try-it-online.md- Browser-based trial options, interactive examples, embedding instructionsdocs/guide/interactive-showcase.md- NEW: Shadcn-style interactive component documentation guide with 3-phase implementation plan (immediate → 2-4 weeks → 2-3 months)docs/SHOWCASE_PLAN_CN.md- Full implementation strategy in Chinese: 3-phase rollout, cost analysis, success metricsDeployment Guides:
docs/deployment/showcase-deployment.md- Production deployment for 5 platforms (Vercel, Netlify, GitHub Pages, Docker, AWS) with CI/CD configsdocs/QUICKSTART_DEPLOY.md- 15-minute deployment path with essential configs onlydocs/README_SHOWCASE_DOCS.md- Documentation index with quick navigationExample Templates:
examples/showcase/pages/form/button-enhanced.json- NEW: Shadcn-style component page template showing preview + description + code with copy buttonsConfiguration Updates:
Interactive Component Documentation (Shadcn-Style)
Phase 1: Enhanced Documentation (Immediate - Ready Now) ✅
Phase 2: Interactive Editor (2-4 weeks) ⏳
Phase 3: Dedicated Playground (2-3 months) 📅
Example Structure:
Deployment Options
Quick Start
Component Coverage
All examples include copy-paste ready JSON schemas with Tailwind customization support.
Benefits
For Users:
For Project:
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.