noecosystem-design 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +12 -0
- package/.github/CODEOWNERS +10 -0
- package/.github/dependabot.yml +12 -0
- package/.github/pull_request_template.md +17 -0
- package/.github/workflows/ci.yml +173 -0
- package/.github/workflows/security.yml +40 -0
- package/.mcp.json +8 -0
- package/.node-version +1 -0
- package/AGENTS.md +62 -0
- package/CONTRIBUTING.md +9 -0
- package/README.md +48 -0
- package/SECURITY.md +7 -0
- package/apps/showcase/index.html +28 -0
- package/apps/showcase/package.json +30 -0
- package/apps/showcase/src/app.css +8 -0
- package/apps/showcase/src/app.tsx +10 -0
- package/apps/showcase/src/catalog/agent-composer-preview.tsx +17 -0
- package/apps/showcase/src/catalog/catalog-index.tsx +2676 -0
- package/apps/showcase/src/catalog/catalog-shell.browser.test.tsx +73 -0
- package/apps/showcase/src/catalog/catalog-shell.tsx +506 -0
- package/apps/showcase/src/main.tsx +17 -0
- package/apps/showcase/tsconfig.json +11 -0
- package/apps/showcase/vite.config.ts +15 -0
- package/apps/storybook/.storybook/main.ts +21 -0
- package/apps/storybook/.storybook/preview.tsx +87 -0
- package/apps/storybook/.storybook/vitest.setup.ts +26 -0
- package/apps/storybook/README.md +5 -0
- package/apps/storybook/package.json +31 -0
- package/apps/storybook/stories/AgentStates.stories.tsx +72 -0
- package/apps/storybook/stories/Bidi.stories.tsx +31 -0
- package/apps/storybook/stories/Button.stories.tsx +19 -0
- package/apps/storybook/stories/Surfaces.stories.tsx +28 -0
- package/apps/storybook/stories/catalog/about-page.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/activity-feed.stories.tsx +50 -0
- package/apps/storybook/stories/catalog/activity-gauge.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/agent-composer.stories.tsx +49 -0
- package/apps/storybook/stories/catalog/agent-message.stories.tsx +37 -0
- package/apps/storybook/stories/catalog/agent-plan.stories.tsx +35 -0
- package/apps/storybook/stories/catalog/agent-workspace.stories.tsx +60 -0
- package/apps/storybook/stories/catalog/alert.stories.tsx +41 -0
- package/apps/storybook/stories/catalog/app-frame.stories.tsx +47 -0
- package/apps/storybook/stories/catalog/approval-request.stories.tsx +30 -0
- package/apps/storybook/stories/catalog/avatar.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/badge-group.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/badge.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/banner.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/bidi-text.stories.tsx +47 -0
- package/apps/storybook/stories/catalog/blog-index-page.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/blog-post-page.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/blog-section.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/bottom-navigation.stories.tsx +27 -0
- package/apps/storybook/stories/catalog/button-group.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/button.stories.tsx +27 -0
- package/apps/storybook/stories/catalog/calendar.stories.tsx +47 -0
- package/apps/storybook/stories/catalog/card.stories.tsx +40 -0
- package/apps/storybook/stories/catalog/careers-section.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/carousel.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/chart-frame.stories.tsx +34 -0
- package/apps/storybook/stories/catalog/chart.stories.tsx +43 -0
- package/apps/storybook/stories/catalog/checkbox.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/code-and-terminal.stories.tsx +39 -0
- package/apps/storybook/stories/catalog/color-picker.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/command-menu.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/contact-page.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/contact-section.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/content-divider.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/content-section.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/context-menu.stories.tsx +66 -0
- package/apps/storybook/stories/catalog/credit-card.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/cta-section.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/dashboard-01.stories.tsx +28 -0
- package/apps/storybook/stories/catalog/dashboard-02.stories.tsx +28 -0
- package/apps/storybook/stories/catalog/dashboard-shell.stories.tsx +65 -0
- package/apps/storybook/stories/catalog/data-list.stories.tsx +37 -0
- package/apps/storybook/stories/catalog/data-table.stories.tsx +51 -0
- package/apps/storybook/stories/catalog/date-picker.stories.tsx +31 -0
- package/apps/storybook/stories/catalog/dialog.stories.tsx +68 -0
- package/apps/storybook/stories/catalog/direction-provider.stories.tsx +36 -0
- package/apps/storybook/stories/catalog/drawer.stories.tsx +58 -0
- package/apps/storybook/stories/catalog/dropdown.stories.tsx +67 -0
- package/apps/storybook/stories/catalog/email-template.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/empty-state.stories.tsx +19 -0
- package/apps/storybook/stories/catalog/error-state.stories.tsx +19 -0
- package/apps/storybook/stories/catalog/fab.stories.tsx +22 -0
- package/apps/storybook/stories/catalog/faq-page.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/faq-section.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/feature-section.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/featured-icon.stories.tsx +45 -0
- package/apps/storybook/stories/catalog/field.stories.tsx +35 -0
- package/apps/storybook/stories/catalog/file-uploader.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/filter-bar.stories.tsx +33 -0
- package/apps/storybook/stories/catalog/footer.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/forgot-password-page.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/gradient-picker.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/header-navigation.stories.tsx +46 -0
- package/apps/storybook/stories/catalog/hero-header.stories.tsx +36 -0
- package/apps/storybook/stories/catalog/icon-system.stories.tsx +48 -0
- package/apps/storybook/stories/catalog/illustration.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/image-picker.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/informational-page-01.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/informational-page-02.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/inline-cta.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/input.stories.tsx +21 -0
- package/apps/storybook/stories/catalog/landing-page.stories.tsx +28 -0
- package/apps/storybook/stories/catalog/legal-page.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/login-page.stories.tsx +42 -0
- package/apps/storybook/stories/catalog/marketing-404-page.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/marketing-header.stories.tsx +35 -0
- package/apps/storybook/stories/catalog/menu.stories.tsx +46 -0
- package/apps/storybook/stories/catalog/messaging.stories.tsx +33 -0
- package/apps/storybook/stories/catalog/metric-card.stories.tsx +20 -0
- package/apps/storybook/stories/catalog/metrics-section.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/mobile-screen.stories.tsx +56 -0
- package/apps/storybook/stories/catalog/multi-select.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/newsletter.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/not-found.stories.tsx +30 -0
- package/apps/storybook/stories/catalog/notification.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/page-header.stories.tsx +37 -0
- package/apps/storybook/stories/catalog/pagination.stories.tsx +27 -0
- package/apps/storybook/stories/catalog/pie-chart.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/pricing-page.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/pricing-section.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/progress-indicator.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/progress-steps.stories.tsx +33 -0
- package/apps/storybook/stories/catalog/qr-code.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/radar-chart.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/radio-group.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/rating.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/rich-text-editor.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/run-inspector.stories.tsx +23 -0
- package/apps/storybook/stories/catalog/section-footer.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/section-header.stories.tsx +31 -0
- package/apps/storybook/stories/catalog/select.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/settings-01.stories.tsx +24 -0
- package/apps/storybook/stories/catalog/settings-02.stories.tsx +24 -0
- package/apps/storybook/stories/catalog/settings-page.stories.tsx +48 -0
- package/apps/storybook/stories/catalog/sidebar-navigation.stories.tsx +40 -0
- package/apps/storybook/stories/catalog/sign-in-form.stories.tsx +28 -0
- package/apps/storybook/stories/catalog/sign-up-page.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/skeleton.stories.tsx +21 -0
- package/apps/storybook/stories/catalog/slider.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/social-button.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/social-proof.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/spinner.stories.tsx +15 -0
- package/apps/storybook/stories/catalog/store-button.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/tabs.stories.tsx +38 -0
- package/apps/storybook/stories/catalog/tags.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/team-page.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/team-section.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/testimonial-section.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/textarea.stories.tsx +22 -0
- package/apps/storybook/stories/catalog/toggle.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/tool-call.stories.tsx +40 -0
- package/apps/storybook/stories/catalog/tooltip.stories.tsx +30 -0
- package/apps/storybook/stories/catalog/tree-view.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/utility-button.stories.tsx +60 -0
- package/apps/storybook/stories/catalog/verification-code.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/verification-page.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/video-player.stories.tsx +18 -0
- package/apps/storybook/stories/catalog/workflow-canvas.stories.tsx +45 -0
- package/apps/storybook/stories/catalog/workflow-node.stories.tsx +24 -0
- package/apps/storybook/vitest.config.ts +39 -0
- package/apps/web/README.md +13 -0
- package/apps/web/app.js +483 -0
- package/apps/web/favicon.svg +6 -0
- package/apps/web/index.html +205 -0
- package/apps/web/styles.css +1823 -0
- package/artifacts/original-delivery/NOE-Design-System-Delivery/README-FIRST.txt +20 -0
- package/artifacts/original-delivery/NOE-Design-System-Delivery/SHA256SUMS.txt +11 -0
- package/artifacts/original-delivery/NOE-Design-System-Delivery/noe-delivery-metadata.json +25 -0
- package/artifacts/original-delivery/NOE-Design-System-Delivery/noe-design-system-evidence.zip +0 -0
- package/artifacts/original-delivery/NOE-Design-System-Delivery/noe-design-system-execution-report.md +60 -0
- package/artifacts/original-delivery/NOE-Design-System-Delivery/noe-design-system-manifest.json +106 -0
- package/artifacts/original-delivery/NOE-Design-System-Delivery/noe-design-system-source.tar.gz +0 -0
- package/artifacts/original-delivery/NOE-Design-System-Delivery/noe-design-system-source.zip +0 -0
- package/artifacts/original-delivery/NOE-Design-System-Delivery/noe-design-system.bundle +0 -0
- package/artifacts/original-delivery/NOE-Design-System-Delivery/noe-evidence-index.html +38 -0
- package/artifacts/original-delivery/NOE-Design-System-Delivery/noe-verification-status.txt +15 -0
- package/artifacts/original-delivery/NOE-Design-System-Delivery/noe-visual-contact-sheet.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/README.txt +13 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/browser-console.json +4 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/layout-audit.json +4 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/review/contact-sheet.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-en-dark-1024.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-en-dark-1280.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-en-dark-1440.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-en-dark-390.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-en-dark-768.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-en-light-1024.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-en-light-1280.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-en-light-1440.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-en-light-390.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-en-light-768.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-fa-dark-1024.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-fa-dark-1280.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-fa-dark-1440.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-fa-dark-390.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-fa-dark-768.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-fa-light-1024.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-fa-light-1280.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-fa-light-1440.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-fa-light-390.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-fa-light-768.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-pseudo-ltr-1024.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/agent-pseudo-rtl-1024.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/consumer-en-light-1440.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/consumer-fa-dark-1440.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/dashboard-en-light-1440.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/dashboard-fa-dark-1440.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/workflow-en-light-1440.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots/workflow-fa-dark-1440.png +0 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/screenshots-manifest.json +203 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/verification-result.json +165 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/verification-result.txt +32 -0
- package/artifacts/original-delivery/noe-design-system-evidence/evidence/visual-index.html +1 -0
- package/artifacts/original-delivery/noe-design-system-evidence/noe-delivery-metadata.json +25 -0
- package/artifacts/original-delivery/noe-design-system-evidence/noe-design-system-execution-report.md +60 -0
- package/artifacts/original-delivery/noe-design-system-evidence/noe-design-system-manifest.json +106 -0
- package/artifacts/original-delivery/noe-design-system-evidence/noe-verification-status.txt +15 -0
- package/artifacts/original-delivery/noe-design-system.bundle +0 -0
- package/artifacts/original-delivery/source-evidence/verification-result.json +165 -0
- package/artifacts/original-delivery/source-evidence/verification-result.txt +32 -0
- package/artifacts/registry-consumer-report.json +153 -0
- package/artifacts/source-inputs/persian-fonts/Woff/IRANYekanXFaNum-Black.woff +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff/IRANYekanXFaNum-Bold.woff +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff/IRANYekanXFaNum-DemiBold.woff +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff/IRANYekanXFaNum-ExtraBlack.woff +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff/IRANYekanXFaNum-ExtraBold.woff +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff/IRANYekanXFaNum-Heavy.woff +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff/IRANYekanXFaNum-Light.woff +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff/IRANYekanXFaNum-Medium.woff +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff/IRANYekanXFaNum-Regular.woff +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff/IRANYekanXFaNum-Thin.woff +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff/IRANYekanXFaNum-UltraLight.woff +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff2/IRANYekanXFaNum-Black.woff2 +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff2/IRANYekanXFaNum-Bold.woff2 +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff2/IRANYekanXFaNum-DemiBold.woff2 +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff2/IRANYekanXFaNum-ExtraBlack.woff2 +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff2/IRANYekanXFaNum-ExtraBold.woff2 +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff2/IRANYekanXFaNum-Heavy.woff2 +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff2/IRANYekanXFaNum-Light.woff2 +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff2/IRANYekanXFaNum-Medium.woff2 +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff2/IRANYekanXFaNum-Regular.woff2 +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff2/IRANYekanXFaNum-Thin.woff2 +0 -0
- package/artifacts/source-inputs/persian-fonts/Woff2/IRANYekanXFaNum-UltraLight.woff2 +0 -0
- package/biome.json +170 -0
- package/components.json +23 -0
- package/docs/adr/0001-semantic-foundation.md +5 -0
- package/docs/adr/0002-locale-direction.md +5 -0
- package/docs/adr/0003-registry-mcp.md +5 -0
- package/docs/adr/0004-testing-evidence.md +5 -0
- package/docs/adr/0005-noe-package-namespace.md +9 -0
- package/docs/adr/0006-icons8-icon-policy.md +9 -0
- package/docs/adr/0007-registry-publication-contract.md +9 -0
- package/docs/adr/0008-capability-library-adapter-boundaries.md +16 -0
- package/docs/adr/0009-calendar-system-jalali.md +29 -0
- package/docs/adr/0010-canonical-manifest-ownership.md +29 -0
- package/docs/adr/0011-palette-graphite-governance.md +27 -0
- package/docs/adr/0012-persian-font-gating.md +25 -0
- package/docs/adr/0013-cinematic-token-exception.md +32 -0
- package/docs/design-system/README.md +16 -0
- package/docs/design-system/accessibility.md +20 -0
- package/docs/design-system/agent-guide.md +11 -0
- package/docs/design-system/agentic-ui.md +21 -0
- package/docs/design-system/architecture.md +40 -0
- package/docs/design-system/brand.md +59 -0
- package/docs/design-system/ci-cd.md +46 -0
- package/docs/design-system/components.md +88 -0
- package/docs/design-system/contributing.md +7 -0
- package/docs/design-system/foundations.md +40 -0
- package/docs/design-system/i18n.md +24 -0
- package/docs/design-system/inventory.md +389 -0
- package/docs/design-system/mcp.md +7 -0
- package/docs/design-system/motion.md +7 -0
- package/docs/design-system/noe-brand-audit.md +33 -0
- package/docs/design-system/registry.md +16 -0
- package/docs/design-system/rtl.md +27 -0
- package/docs/design-system/security.md +16 -0
- package/docs/design-system/testing.md +39 -0
- package/docs/design-system/tokens.md +38 -0
- package/docs/design-system/visual-qa.md +10 -0
- package/docs/superpowers/plans/2026-08-25-noe-design-system-development-ready.md +833 -0
- package/docs/superpowers/plans/2026-08-26-noe-complete-catalog.md +422 -0
- package/docs/superpowers/specs/2026-08-25-noe-design-system-development-ready-design.md +260 -0
- package/docs/superpowers/specs/2026-08-26-noe-complete-catalog-design.md +187 -0
- package/llms.txt +20 -0
- package/package.json +68 -0
- package/packages/ai-ui/package.json +15 -0
- package/packages/ai-ui/src/activity-feed.tsx +60 -0
- package/packages/ai-ui/src/agent-composer.tsx +54 -0
- package/packages/ai-ui/src/agent-message.tsx +50 -0
- package/packages/ai-ui/src/agent-plan.tsx +69 -0
- package/packages/ai-ui/src/agent-workspace.tsx +63 -0
- package/packages/ai-ui/src/approval-request.tsx +93 -0
- package/packages/ai-ui/src/index.ts +8 -0
- package/packages/ai-ui/src/run-inspector.tsx +54 -0
- package/packages/ai-ui/src/tool-call.tsx +71 -0
- package/packages/data-ui/package.json +16 -0
- package/packages/data-ui/src/activity-gauge.tsx +38 -0
- package/packages/data-ui/src/chart-frame.tsx +41 -0
- package/packages/data-ui/src/chart.tsx +131 -0
- package/packages/data-ui/src/dashboard-01.tsx +39 -0
- package/packages/data-ui/src/dashboard-02.tsx +33 -0
- package/packages/data-ui/src/dashboard-shell.tsx +56 -0
- package/packages/data-ui/src/data-table.tsx +99 -0
- package/packages/data-ui/src/filter-bar.tsx +28 -0
- package/packages/data-ui/src/index.ts +12 -0
- package/packages/data-ui/src/metric-card.tsx +43 -0
- package/packages/data-ui/src/pagination.tsx +67 -0
- package/packages/data-ui/src/pie-chart.tsx +38 -0
- package/packages/data-ui/src/radar-chart.tsx +38 -0
- package/packages/design-tokens/package.json +23 -0
- package/packages/design-tokens/src/base.css +255 -0
- package/packages/design-tokens/src/fonts/IRANYekanXFaNum-Bold.woff2 +0 -0
- package/packages/design-tokens/src/fonts/IRANYekanXFaNum-DemiBold.woff2 +0 -0
- package/packages/design-tokens/src/fonts/IRANYekanXFaNum-Medium.woff2 +0 -0
- package/packages/design-tokens/src/fonts/IRANYekanXFaNum-Regular.woff2 +0 -0
- package/packages/design-tokens/src/fonts/IRANYekanXVF.ttf +0 -0
- package/packages/design-tokens/src/fonts/README.md +13 -0
- package/packages/design-tokens/src/fonts.css +49 -0
- package/packages/design-tokens/src/index.test.ts +36 -0
- package/packages/design-tokens/src/index.ts +5 -0
- package/packages/design-tokens/src/palette.ts +27 -0
- package/packages/design-tokens/src/tailwind.css +3 -0
- package/packages/design-tokens/src/theme.css +67 -0
- package/packages/design-tokens/src/tokens.css +251 -0
- package/packages/design-tokens/src/tokens.json +275 -0
- package/packages/design-tokens/src/tokens.mjs +276 -0
- package/packages/i18n/package.json +13 -0
- package/packages/i18n/src/index.ts +17 -0
- package/packages/i18n/src/messages/en.json +116 -0
- package/packages/i18n/src/messages/fa.json +116 -0
- package/packages/i18n/src/runtime.d.mts +42 -0
- package/packages/i18n/src/runtime.mjs +113 -0
- package/packages/i18n/src/translate.test.ts +50 -0
- package/packages/i18n/src/translate.ts +29 -0
- package/packages/icons/package.json +12 -0
- package/packages/icons/src/adapters.tsx +167 -0
- package/packages/icons/src/index.tsx +103 -0
- package/packages/registry/README.md +7 -0
- package/packages/registry/catalog-index.json +1345 -0
- package/packages/registry/component-audit.json +1038 -0
- package/packages/registry/coss-adoption.json +281 -0
- package/packages/registry/docs-index.json +1881 -0
- package/packages/registry/manifest.json +11081 -0
- package/packages/registry/manifest.schema.json +135 -0
- package/packages/registry/package.json +10 -0
- package/packages/registry/r/activity-feed.json +67 -0
- package/packages/registry/r/agent-composer.json +79 -0
- package/packages/registry/r/agent-message.json +72 -0
- package/packages/registry/r/agent-plan.json +67 -0
- package/packages/registry/r/agent-workspace.json +67 -0
- package/packages/registry/r/alert.json +68 -0
- package/packages/registry/r/app-frame.json +67 -0
- package/packages/registry/r/approval-request.json +84 -0
- package/packages/registry/r/badge.json +68 -0
- package/packages/registry/r/bidi-text.json +70 -0
- package/packages/registry/r/bottom-navigation.json +67 -0
- package/packages/registry/r/button.json +83 -0
- package/packages/registry/r/calendar.json +97 -0
- package/packages/registry/r/card.json +67 -0
- package/packages/registry/r/chart-frame.json +67 -0
- package/packages/registry/r/chart.json +67 -0
- package/packages/registry/r/code-block.json +67 -0
- package/packages/registry/r/context-menu.json +81 -0
- package/packages/registry/r/dashboard-01.json +86 -0
- package/packages/registry/r/dashboard-02.json +84 -0
- package/packages/registry/r/dashboard-shell.json +67 -0
- package/packages/registry/r/data-list.json +67 -0
- package/packages/registry/r/data-table.json +72 -0
- package/packages/registry/r/date-picker.json +117 -0
- package/packages/registry/r/dialog.json +84 -0
- package/packages/registry/r/direction-provider.json +54 -0
- package/packages/registry/r/drawer.json +80 -0
- package/packages/registry/r/dropdown.json +78 -0
- package/packages/registry/r/empty-state.json +67 -0
- package/packages/registry/r/error-state.json +67 -0
- package/packages/registry/r/fab.json +80 -0
- package/packages/registry/r/featured-icon.json +71 -0
- package/packages/registry/r/filter-bar.json +69 -0
- package/packages/registry/r/gradient-picker.json +62 -0
- package/packages/registry/r/header-navigation.json +67 -0
- package/packages/registry/r/hero-header.json +63 -0
- package/packages/registry/r/icon-system.json +59 -0
- package/packages/registry/r/image-picker.json +62 -0
- package/packages/registry/r/inline-cta.json +73 -0
- package/packages/registry/r/input.json +73 -0
- package/packages/registry/r/landing-page.json +70 -0
- package/packages/registry/r/login-page.json +71 -0
- package/packages/registry/r/marketing-header.json +63 -0
- package/packages/registry/r/menu.json +74 -0
- package/packages/registry/r/messaging.json +69 -0
- package/packages/registry/r/metric-card.json +67 -0
- package/packages/registry/r/mobile-screen.json +67 -0
- package/packages/registry/r/not-found.json +63 -0
- package/packages/registry/r/page-header.json +67 -0
- package/packages/registry/r/pagination.json +91 -0
- package/packages/registry/r/progress-steps.json +69 -0
- package/packages/registry/r/run-inspector.json +72 -0
- package/packages/registry/r/section-header.json +67 -0
- package/packages/registry/r/settings-01.json +94 -0
- package/packages/registry/r/settings-02.json +99 -0
- package/packages/registry/r/settings-page.json +67 -0
- package/packages/registry/r/sidebar-navigation.json +67 -0
- package/packages/registry/r/sign-in-form.json +89 -0
- package/packages/registry/r/skeleton.json +67 -0
- package/packages/registry/r/spinner.json +67 -0
- package/packages/registry/r/tabs.json +69 -0
- package/packages/registry/r/textarea.json +73 -0
- package/packages/registry/r/tool-call.json +72 -0
- package/packages/registry/r/tooltip.json +73 -0
- package/packages/registry/r/utility-button.json +83 -0
- package/packages/registry/r/workflow-canvas.json +67 -0
- package/packages/registry/r/workflow-node.json +72 -0
- package/packages/registry/r-planned-backup/about-page.json +14 -0
- package/packages/registry/r-planned-backup/activity-gauge.json +14 -0
- package/packages/registry/r-planned-backup/avatar.json +14 -0
- package/packages/registry/r-planned-backup/badge-group.json +14 -0
- package/packages/registry/r-planned-backup/banner.json +14 -0
- package/packages/registry/r-planned-backup/blog-index-page.json +14 -0
- package/packages/registry/r-planned-backup/blog-post-page.json +14 -0
- package/packages/registry/r-planned-backup/blog-section.json +14 -0
- package/packages/registry/r-planned-backup/button-group.json +14 -0
- package/packages/registry/r-planned-backup/careers-section.json +14 -0
- package/packages/registry/r-planned-backup/carousel.json +14 -0
- package/packages/registry/r-planned-backup/checkbox.json +14 -0
- package/packages/registry/r-planned-backup/color-picker.json +14 -0
- package/packages/registry/r-planned-backup/command-menu.json +14 -0
- package/packages/registry/r-planned-backup/contact-page.json +14 -0
- package/packages/registry/r-planned-backup/contact-section.json +14 -0
- package/packages/registry/r-planned-backup/content-divider.json +14 -0
- package/packages/registry/r-planned-backup/content-section.json +14 -0
- package/packages/registry/r-planned-backup/credit-card.json +14 -0
- package/packages/registry/r-planned-backup/cta-section.json +14 -0
- package/packages/registry/r-planned-backup/email-template.json +14 -0
- package/packages/registry/r-planned-backup/faq-page.json +14 -0
- package/packages/registry/r-planned-backup/faq-section.json +14 -0
- package/packages/registry/r-planned-backup/feature-section.json +14 -0
- package/packages/registry/r-planned-backup/file-uploader.json +14 -0
- package/packages/registry/r-planned-backup/footer.json +14 -0
- package/packages/registry/r-planned-backup/forgot-password-page.json +14 -0
- package/packages/registry/r-planned-backup/illustration.json +14 -0
- package/packages/registry/r-planned-backup/informational-page-01.json +14 -0
- package/packages/registry/r-planned-backup/informational-page-02.json +14 -0
- package/packages/registry/r-planned-backup/legal-page.json +14 -0
- package/packages/registry/r-planned-backup/marketing-404-page.json +14 -0
- package/packages/registry/r-planned-backup/metrics-section.json +14 -0
- package/packages/registry/r-planned-backup/multi-select.json +14 -0
- package/packages/registry/r-planned-backup/newsletter.json +14 -0
- package/packages/registry/r-planned-backup/notification.json +14 -0
- package/packages/registry/r-planned-backup/pie-chart.json +14 -0
- package/packages/registry/r-planned-backup/pricing-page.json +14 -0
- package/packages/registry/r-planned-backup/pricing-section.json +14 -0
- package/packages/registry/r-planned-backup/progress-indicator.json +14 -0
- package/packages/registry/r-planned-backup/qr-code.json +14 -0
- package/packages/registry/r-planned-backup/radar-chart.json +14 -0
- package/packages/registry/r-planned-backup/radio-group.json +14 -0
- package/packages/registry/r-planned-backup/rating.json +14 -0
- package/packages/registry/r-planned-backup/rich-text-editor.json +14 -0
- package/packages/registry/r-planned-backup/section-footer.json +14 -0
- package/packages/registry/r-planned-backup/select.json +14 -0
- package/packages/registry/r-planned-backup/sign-up-page.json +14 -0
- package/packages/registry/r-planned-backup/slider.json +14 -0
- package/packages/registry/r-planned-backup/social-button.json +14 -0
- package/packages/registry/r-planned-backup/social-proof.json +14 -0
- package/packages/registry/r-planned-backup/store-button.json +14 -0
- package/packages/registry/r-planned-backup/tags.json +14 -0
- package/packages/registry/r-planned-backup/team-page.json +14 -0
- package/packages/registry/r-planned-backup/team-section.json +14 -0
- package/packages/registry/r-planned-backup/testimonial-section.json +14 -0
- package/packages/registry/r-planned-backup/toggle.json +14 -0
- package/packages/registry/r-planned-backup/tree-view.json +14 -0
- package/packages/registry/r-planned-backup/verification-code.json +14 -0
- package/packages/registry/r-planned-backup/verification-page.json +14 -0
- package/packages/registry/r-planned-backup/video-player.json +14 -0
- package/packages/registry/registry.json +1997 -0
- package/packages/registry/search-index.json +3942 -0
- package/packages/testing/package.json +9 -0
- package/packages/testing/src/index.mjs +10 -0
- package/packages/ui/package.json +26 -0
- package/packages/ui/src/about-page.tsx +19 -0
- package/packages/ui/src/alert.tsx +67 -0
- package/packages/ui/src/app-frame.tsx +63 -0
- package/packages/ui/src/avatar.tsx +19 -0
- package/packages/ui/src/badge-group.tsx +19 -0
- package/packages/ui/src/badge.tsx +35 -0
- package/packages/ui/src/banner.tsx +19 -0
- package/packages/ui/src/bidi.tsx +80 -0
- package/packages/ui/src/blog-index-page.tsx +19 -0
- package/packages/ui/src/blog-post-page.tsx +19 -0
- package/packages/ui/src/blog-section.tsx +19 -0
- package/packages/ui/src/bottom-navigation.tsx +60 -0
- package/packages/ui/src/button-group.tsx +19 -0
- package/packages/ui/src/button.browser.test.tsx +38 -0
- package/packages/ui/src/button.tsx +81 -0
- package/packages/ui/src/calendar-system.test.ts +103 -0
- package/packages/ui/src/calendar-system.ts +120 -0
- package/packages/ui/src/calendar.browser.test.tsx +52 -0
- package/packages/ui/src/calendar.tsx +339 -0
- package/packages/ui/src/card.tsx +63 -0
- package/packages/ui/src/careers-section.tsx +19 -0
- package/packages/ui/src/carousel.tsx +19 -0
- package/packages/ui/src/checkbox.tsx +17 -0
- package/packages/ui/src/cinematic/cinematic.css +2020 -0
- package/packages/ui/src/cinematic/ecosystem-motion-showcase.tsx +265 -0
- package/packages/ui/src/cinematic/ecosystem-sphere.tsx +627 -0
- package/packages/ui/src/cinematic/index.ts +5 -0
- package/packages/ui/src/cinematic/kinetic-experience.tsx +207 -0
- package/packages/ui/src/cinematic/portfolio.ts +132 -0
- package/packages/ui/src/cinematic/system-anatomy.tsx +173 -0
- package/packages/ui/src/code.tsx +119 -0
- package/packages/ui/src/color-picker.tsx +22 -0
- package/packages/ui/src/command-menu.tsx +19 -0
- package/packages/ui/src/contact-page.tsx +19 -0
- package/packages/ui/src/contact-section.tsx +19 -0
- package/packages/ui/src/content-divider.tsx +19 -0
- package/packages/ui/src/content-section.tsx +19 -0
- package/packages/ui/src/context-menu.tsx +208 -0
- package/packages/ui/src/credit-card.tsx +19 -0
- package/packages/ui/src/cta-section.tsx +19 -0
- package/packages/ui/src/data-list.tsx +81 -0
- package/packages/ui/src/date-picker.browser.test.tsx +48 -0
- package/packages/ui/src/date-picker.tsx +248 -0
- package/packages/ui/src/dialog.browser.test.tsx +32 -0
- package/packages/ui/src/dialog.tsx +144 -0
- package/packages/ui/src/direction.tsx +46 -0
- package/packages/ui/src/drawer.tsx +179 -0
- package/packages/ui/src/dropdown.tsx +200 -0
- package/packages/ui/src/email-template.tsx +19 -0
- package/packages/ui/src/empty-state.tsx +43 -0
- package/packages/ui/src/error-state.tsx +44 -0
- package/packages/ui/src/fab.tsx +32 -0
- package/packages/ui/src/faq-page.tsx +19 -0
- package/packages/ui/src/faq-section.tsx +19 -0
- package/packages/ui/src/feature-section.tsx +19 -0
- package/packages/ui/src/featured-icon.tsx +63 -0
- package/packages/ui/src/field.browser.test.tsx +33 -0
- package/packages/ui/src/field.tsx +117 -0
- package/packages/ui/src/file-uploader.tsx +19 -0
- package/packages/ui/src/footer.tsx +19 -0
- package/packages/ui/src/forgot-password-page.tsx +19 -0
- package/packages/ui/src/gradient-picker.tsx +65 -0
- package/packages/ui/src/header-navigation.tsx +71 -0
- package/packages/ui/src/hero-header.tsx +57 -0
- package/packages/ui/src/illustration.tsx +19 -0
- package/packages/ui/src/image-picker.tsx +56 -0
- package/packages/ui/src/index.ts +110 -0
- package/packages/ui/src/informational-page-01.tsx +19 -0
- package/packages/ui/src/informational-page-02.tsx +19 -0
- package/packages/ui/src/inline-cta.tsx +29 -0
- package/packages/ui/src/input.tsx +44 -0
- package/packages/ui/src/landing-page.tsx +56 -0
- package/packages/ui/src/legal-page.tsx +19 -0
- package/packages/ui/src/lib/cn.ts +6 -0
- package/packages/ui/src/lib/i18n-messages.ts +40 -0
- package/packages/ui/src/login-page.tsx +78 -0
- package/packages/ui/src/marketing-404-page.tsx +19 -0
- package/packages/ui/src/marketing-header.tsx +53 -0
- package/packages/ui/src/menu.tsx +220 -0
- package/packages/ui/src/messaging.tsx +62 -0
- package/packages/ui/src/metrics-section.tsx +19 -0
- package/packages/ui/src/mobile-screen.tsx +37 -0
- package/packages/ui/src/multi-select.tsx +16 -0
- package/packages/ui/src/newsletter.tsx +19 -0
- package/packages/ui/src/not-found.tsx +60 -0
- package/packages/ui/src/notification.tsx +19 -0
- package/packages/ui/src/page-header.tsx +80 -0
- package/packages/ui/src/pricing-page.tsx +19 -0
- package/packages/ui/src/pricing-section.tsx +19 -0
- package/packages/ui/src/progress-indicator.tsx +19 -0
- package/packages/ui/src/progress-steps.tsx +85 -0
- package/packages/ui/src/qr-code.tsx +19 -0
- package/packages/ui/src/radio-group.tsx +26 -0
- package/packages/ui/src/rating.tsx +19 -0
- package/packages/ui/src/rich-text-editor.tsx +18 -0
- package/packages/ui/src/section-footer.tsx +19 -0
- package/packages/ui/src/section-header.tsx +37 -0
- package/packages/ui/src/select.tsx +27 -0
- package/packages/ui/src/settings-01.tsx +49 -0
- package/packages/ui/src/settings-02.tsx +58 -0
- package/packages/ui/src/settings-page.tsx +62 -0
- package/packages/ui/src/sidebar-navigation.tsx +77 -0
- package/packages/ui/src/sign-in-form.tsx +60 -0
- package/packages/ui/src/sign-up-page.tsx +19 -0
- package/packages/ui/src/skeleton.tsx +14 -0
- package/packages/ui/src/slider.tsx +13 -0
- package/packages/ui/src/social-button.tsx +19 -0
- package/packages/ui/src/social-proof.tsx +19 -0
- package/packages/ui/src/spinner.tsx +26 -0
- package/packages/ui/src/store-button.tsx +19 -0
- package/packages/ui/src/tabs.browser.test.tsx +33 -0
- package/packages/ui/src/tabs.tsx +175 -0
- package/packages/ui/src/tags.tsx +11 -0
- package/packages/ui/src/team-page.tsx +19 -0
- package/packages/ui/src/team-section.tsx +19 -0
- package/packages/ui/src/testimonial-section.tsx +19 -0
- package/packages/ui/src/textarea.tsx +45 -0
- package/packages/ui/src/theme-provider.browser.test.tsx +90 -0
- package/packages/ui/src/theme-provider.tsx +417 -0
- package/packages/ui/src/theme-toggle.tsx +107 -0
- package/packages/ui/src/toggle.tsx +34 -0
- package/packages/ui/src/tooltip.tsx +50 -0
- package/packages/ui/src/tree-view.tsx +19 -0
- package/packages/ui/src/utility-button.tsx +33 -0
- package/packages/ui/src/utils.ts +13 -0
- package/packages/ui/src/verification-code.tsx +27 -0
- package/packages/ui/src/verification-page.tsx +19 -0
- package/packages/ui/src/video-player.tsx +19 -0
- package/packages/workflow-ui/package.json +15 -0
- package/packages/workflow-ui/src/index.ts +2 -0
- package/packages/workflow-ui/src/workflow-canvas.tsx +51 -0
- package/packages/workflow-ui/src/workflow-node.tsx +61 -0
- package/playwright.config.ts +58 -0
- package/pnpm-workspace.yaml +5 -0
- package/registry.json +216 -0
- package/scripts/build-static.mjs +68 -0
- package/scripts/capture-visuals.py +106 -0
- package/scripts/capture-visuals.sh +10 -0
- package/scripts/create-visual-index.mjs +16 -0
- package/scripts/enrich-registry-payloads.mjs +83 -0
- package/scripts/fix-noe-imports.mjs +134 -0
- package/scripts/fix-registry-closure.mjs +110 -0
- package/scripts/fix-registry-deps-cleanup.mjs +149 -0
- package/scripts/fix-relative-for-registry.mjs +103 -0
- package/scripts/generate-design-tokens.mjs +134 -0
- package/scripts/generate-inventory.mjs +62 -0
- package/scripts/generate-manifest.mjs +1149 -0
- package/scripts/generate-phase4.mjs +875 -0
- package/scripts/validate-manifest.mjs +477 -0
- package/scripts/validate-pngs.mjs +31 -0
- package/scripts/verify-registry-consumer.mjs +319 -0
- package/scripts/verify-registry-dependencies.mjs +162 -0
- package/scripts/verify.mjs +316 -0
- package/tests/catalog-audit.test.mjs +156 -0
- package/tests/e2e/capture-visuals.mjs +34 -0
- package/tests/e2e/catalog-typography.spec.ts +110 -0
- package/tests/e2e/catalog.spec.ts +68 -0
- package/tests/e2e/direction.spec.ts +60 -0
- package/tests/e2e/responsive.spec.ts +30 -0
- package/tests/e2e/surfaces.spec.ts +51 -0
- package/tests/i18n.test.mjs +36 -0
- package/tests/icons.test.mjs +21 -0
- package/tests/registry-publication.test.mjs +88 -0
- package/tests/registry.test.mjs +51 -0
- package/tests/rtl.test.mjs +21 -0
- package/tests/static-app.test.mjs +49 -0
- package/tests/tokens.test.mjs +24 -0
- package/tests/workspace.test.mjs +25 -0
- package/tsconfig.base.json +69 -0
- package/tsconfig.json +27 -0
- package/tsconfig.verify.json +19 -0
- package/types/offline-react.d.ts +73 -0
- package/vitest.config.ts +91 -0
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
# NOE Inventory
|
|
2
|
+
|
|
3
|
+
Generated by `pnpm gen:inventory` from `component-audit.json` and
|
|
4
|
+
`registry.json`. Do not edit this file by hand; run the generator after
|
|
5
|
+
catalog changes.
|
|
6
|
+
|
|
7
|
+
Total catalog entries: **129** · registry items: **67**
|
|
8
|
+
|
|
9
|
+
## Agentic
|
|
10
|
+
|
|
11
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
12
|
+
|---|---|---|---|---|
|
|
13
|
+
| agent-composer | @noe/ai-ui | available | agent-composer | primitive |
|
|
14
|
+
| agent-message | @noe/ai-ui | available | agent-message | primitive |
|
|
15
|
+
| agent-plan | @noe/ai-ui | available | agent-plan | primitive |
|
|
16
|
+
| run-inspector | @noe/ai-ui | available | run-inspector | primitive |
|
|
17
|
+
| tool-call | @noe/ai-ui | available | tool-call | primitive |
|
|
18
|
+
| approval-request | @noe/ai-ui | available | approval-request | primitive |
|
|
19
|
+
|
|
20
|
+
## Application Components
|
|
21
|
+
|
|
22
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
23
|
+
|---|---|---|---|---|
|
|
24
|
+
| gradient-picker | @noe/ui | available | gradient-picker | primitive |
|
|
25
|
+
| image-picker | @noe/ui | available | image-picker | primitive |
|
|
26
|
+
| inline-cta | @noe/ui | available | inline-cta | primitive |
|
|
27
|
+
|
|
28
|
+
## Application Examples
|
|
29
|
+
|
|
30
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
31
|
+
|---|---|---|---|---|
|
|
32
|
+
| dashboard-01 | @noe/data-ui | available | dashboard-01 | pattern/page block |
|
|
33
|
+
| dashboard-02 | @noe/data-ui | available | dashboard-02 | pattern/page block |
|
|
34
|
+
| settings-01 | @noe/ui | available | settings-01 | pattern/page block |
|
|
35
|
+
| settings-02 | @noe/ui | available | settings-02 | pattern/page block |
|
|
36
|
+
| informational-page-01 | @noe/ui | planned | — | — |
|
|
37
|
+
| informational-page-02 | @noe/ui | planned | — | — |
|
|
38
|
+
|
|
39
|
+
## Base / Actions
|
|
40
|
+
|
|
41
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
42
|
+
|---|---|---|---|---|
|
|
43
|
+
| button-group | @noe/ui | planned | — | — |
|
|
44
|
+
|
|
45
|
+
## Base / Feedback
|
|
46
|
+
|
|
47
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
48
|
+
|---|---|---|---|---|
|
|
49
|
+
| progress-indicator | @noe/ui | planned | — | — |
|
|
50
|
+
|
|
51
|
+
## Base / Forms
|
|
52
|
+
|
|
53
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
54
|
+
|---|---|---|---|---|
|
|
55
|
+
| checkbox | @noe/ui | planned | — | — |
|
|
56
|
+
| radio-group | @noe/ui | planned | — | — |
|
|
57
|
+
| toggle | @noe/ui | planned | — | — |
|
|
58
|
+
| select | @noe/ui | planned | — | — |
|
|
59
|
+
| multi-select | @noe/ui | planned | — | — |
|
|
60
|
+
| slider | @noe/ui | planned | — | — |
|
|
61
|
+
| tags | @noe/ui | planned | — | — |
|
|
62
|
+
| verification-code | @noe/ui | planned | — | — |
|
|
63
|
+
|
|
64
|
+
## Base / Identity
|
|
65
|
+
|
|
66
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
67
|
+
|---|---|---|---|---|
|
|
68
|
+
| avatar | @noe/ui | planned | — | — |
|
|
69
|
+
| badge-group | @noe/ui | planned | — | — |
|
|
70
|
+
| credit-card | @noe/ui | planned | — | — |
|
|
71
|
+
| qr-code | @noe/ui | planned | — | — |
|
|
72
|
+
| rating | @noe/ui | planned | — | — |
|
|
73
|
+
| store-button | @noe/ui | planned | — | — |
|
|
74
|
+
| social-button | @noe/ui | planned | — | — |
|
|
75
|
+
|
|
76
|
+
## Base / Media
|
|
77
|
+
|
|
78
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
79
|
+
|---|---|---|---|---|
|
|
80
|
+
| video-player | @noe/ui | planned | — | — |
|
|
81
|
+
| illustration | @noe/ui | planned | — | — |
|
|
82
|
+
|
|
83
|
+
## Base / Pickers
|
|
84
|
+
|
|
85
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
86
|
+
|---|---|---|---|---|
|
|
87
|
+
| calendar | @noe/ui | partial | calendar | primitive |
|
|
88
|
+
| date-picker | @noe/ui | partial | date-picker | primitive |
|
|
89
|
+
| color-picker | @noe/ui | planned | — | — |
|
|
90
|
+
| file-uploader | @noe/ui | planned | — | — |
|
|
91
|
+
| rich-text-editor | @noe/ui | planned | — | — |
|
|
92
|
+
|
|
93
|
+
## Communication / Messaging
|
|
94
|
+
|
|
95
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
96
|
+
|---|---|---|---|---|
|
|
97
|
+
| messaging | @noe/ui | available | messaging | primitive |
|
|
98
|
+
|
|
99
|
+
## Data / Visualization
|
|
100
|
+
|
|
101
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
102
|
+
|---|---|---|---|---|
|
|
103
|
+
| chart | @noe/data-ui | available | chart | primitive |
|
|
104
|
+
| activity-gauge | @noe/data-ui | planned | — | — |
|
|
105
|
+
| pie-chart | @noe/data-ui | planned | — | — |
|
|
106
|
+
| radar-chart | @noe/data-ui | planned | — | — |
|
|
107
|
+
|
|
108
|
+
## Data
|
|
109
|
+
|
|
110
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
111
|
+
|---|---|---|---|---|
|
|
112
|
+
| data-table | @noe/data-ui | available | data-table | primitive |
|
|
113
|
+
| metric-card | @noe/data-ui | available | metric-card | primitive |
|
|
114
|
+
| chart-frame | @noe/data-ui | available | chart-frame | primitive |
|
|
115
|
+
|
|
116
|
+
## Feedback / Notifications
|
|
117
|
+
|
|
118
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
119
|
+
|---|---|---|---|---|
|
|
120
|
+
| notification | @noe/ui | planned | — | — |
|
|
121
|
+
|
|
122
|
+
## Feedback
|
|
123
|
+
|
|
124
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
125
|
+
|---|---|---|---|---|
|
|
126
|
+
| alert | @noe/ui | available | alert | primitive |
|
|
127
|
+
| badge | @noe/ui | available | badge | primitive |
|
|
128
|
+
| skeleton | @noe/ui | available | skeleton | primitive |
|
|
129
|
+
| spinner | @noe/ui | available | spinner | primitive |
|
|
130
|
+
| empty-state | @noe/ui | available | empty-state | primitive |
|
|
131
|
+
| error-state | @noe/ui | available | error-state | primitive |
|
|
132
|
+
|
|
133
|
+
## Foundations / Direction & Bidi
|
|
134
|
+
|
|
135
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
136
|
+
|---|---|---|---|---|
|
|
137
|
+
| bidi-text | @noe/ui | available | bidi-text | primitive |
|
|
138
|
+
| direction-provider | @noe/ui | available | direction-provider | primitive |
|
|
139
|
+
|
|
140
|
+
## Foundations / Icons
|
|
141
|
+
|
|
142
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
143
|
+
|---|---|---|---|---|
|
|
144
|
+
| icon-system | @noe/icons | available | icon-system | primitive |
|
|
145
|
+
| featured-icon | @noe/ui | available | featured-icon | primitive |
|
|
146
|
+
|
|
147
|
+
## Foundations / Technical Content
|
|
148
|
+
|
|
149
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
150
|
+
|---|---|---|---|---|
|
|
151
|
+
| code-and-terminal | @noe/ui | available | code-block | primitive |
|
|
152
|
+
|
|
153
|
+
## Marketing / Banner
|
|
154
|
+
|
|
155
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
156
|
+
|---|---|---|---|---|
|
|
157
|
+
| banner | @noe/ui | planned | — | — |
|
|
158
|
+
|
|
159
|
+
## Marketing / Blog
|
|
160
|
+
|
|
161
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
162
|
+
|---|---|---|---|---|
|
|
163
|
+
| blog-section | @noe/ui | planned | — | — |
|
|
164
|
+
|
|
165
|
+
## Marketing / CTA
|
|
166
|
+
|
|
167
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
168
|
+
|---|---|---|---|---|
|
|
169
|
+
| cta-section | @noe/ui | planned | — | — |
|
|
170
|
+
|
|
171
|
+
## Marketing / Careers
|
|
172
|
+
|
|
173
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
174
|
+
|---|---|---|---|---|
|
|
175
|
+
| careers-section | @noe/ui | planned | — | — |
|
|
176
|
+
|
|
177
|
+
## Marketing / Contact
|
|
178
|
+
|
|
179
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
180
|
+
|---|---|---|---|---|
|
|
181
|
+
| contact-section | @noe/ui | planned | — | — |
|
|
182
|
+
|
|
183
|
+
## Marketing / Content
|
|
184
|
+
|
|
185
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
186
|
+
|---|---|---|---|---|
|
|
187
|
+
| content-section | @noe/ui | planned | — | — |
|
|
188
|
+
|
|
189
|
+
## Marketing / FAQ
|
|
190
|
+
|
|
191
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
192
|
+
|---|---|---|---|---|
|
|
193
|
+
| faq-section | @noe/ui | planned | — | — |
|
|
194
|
+
|
|
195
|
+
## Marketing / Features
|
|
196
|
+
|
|
197
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
198
|
+
|---|---|---|---|---|
|
|
199
|
+
| feature-section | @noe/ui | planned | — | — |
|
|
200
|
+
|
|
201
|
+
## Marketing / Footer
|
|
202
|
+
|
|
203
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
204
|
+
|---|---|---|---|---|
|
|
205
|
+
| footer | @noe/ui | planned | — | — |
|
|
206
|
+
|
|
207
|
+
## Marketing / Header
|
|
208
|
+
|
|
209
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
210
|
+
|---|---|---|---|---|
|
|
211
|
+
| marketing-header | @noe/ui | available | marketing-header | pattern/page block |
|
|
212
|
+
|
|
213
|
+
## Marketing / Hero
|
|
214
|
+
|
|
215
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
216
|
+
|---|---|---|---|---|
|
|
217
|
+
| hero-header | @noe/ui | available | hero-header | pattern/page block |
|
|
218
|
+
|
|
219
|
+
## Marketing / Metrics
|
|
220
|
+
|
|
221
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
222
|
+
|---|---|---|---|---|
|
|
223
|
+
| metrics-section | @noe/ui | planned | — | — |
|
|
224
|
+
|
|
225
|
+
## Marketing / Newsletter
|
|
226
|
+
|
|
227
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
228
|
+
|---|---|---|---|---|
|
|
229
|
+
| newsletter | @noe/ui | planned | — | — |
|
|
230
|
+
|
|
231
|
+
## Marketing / Pages
|
|
232
|
+
|
|
233
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
234
|
+
|---|---|---|---|---|
|
|
235
|
+
| landing-page | @noe/ui | available | landing-page | pattern/page block |
|
|
236
|
+
| about-page | @noe/ui | planned | — | — |
|
|
237
|
+
| blog-post-page | @noe/ui | planned | — | — |
|
|
238
|
+
| blog-index-page | @noe/ui | planned | — | — |
|
|
239
|
+
| contact-page | @noe/ui | planned | — | — |
|
|
240
|
+
| faq-page | @noe/ui | planned | — | — |
|
|
241
|
+
| legal-page | @noe/ui | planned | — | — |
|
|
242
|
+
| pricing-page | @noe/ui | planned | — | — |
|
|
243
|
+
| team-page | @noe/ui | planned | — | — |
|
|
244
|
+
| marketing-404-page | @noe/ui | planned | — | — |
|
|
245
|
+
|
|
246
|
+
## Marketing / Pricing
|
|
247
|
+
|
|
248
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
249
|
+
|---|---|---|---|---|
|
|
250
|
+
| pricing-section | @noe/ui | planned | — | — |
|
|
251
|
+
|
|
252
|
+
## Marketing / Social
|
|
253
|
+
|
|
254
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
255
|
+
|---|---|---|---|---|
|
|
256
|
+
| social-proof | @noe/ui | planned | — | — |
|
|
257
|
+
|
|
258
|
+
## Marketing / Team
|
|
259
|
+
|
|
260
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
261
|
+
|---|---|---|---|---|
|
|
262
|
+
| team-section | @noe/ui | planned | — | — |
|
|
263
|
+
|
|
264
|
+
## Marketing / Testimonial
|
|
265
|
+
|
|
266
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
267
|
+
|---|---|---|---|---|
|
|
268
|
+
| testimonial-section | @noe/ui | planned | — | — |
|
|
269
|
+
|
|
270
|
+
## Navigation / Disclosure
|
|
271
|
+
|
|
272
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
273
|
+
|---|---|---|---|---|
|
|
274
|
+
| tree-view | @noe/ui | planned | — | — |
|
|
275
|
+
| carousel | @noe/ui | planned | — | — |
|
|
276
|
+
|
|
277
|
+
## Navigation / Progress
|
|
278
|
+
|
|
279
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
280
|
+
|---|---|---|---|---|
|
|
281
|
+
| progress-steps | @noe/ui | available | progress-steps | primitive |
|
|
282
|
+
|
|
283
|
+
## Navigation
|
|
284
|
+
|
|
285
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
286
|
+
|---|---|---|---|---|
|
|
287
|
+
| tabs | @noe/ui | available | tabs | primitive |
|
|
288
|
+
|
|
289
|
+
## Overlays / Navigation
|
|
290
|
+
|
|
291
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
292
|
+
|---|---|---|---|---|
|
|
293
|
+
| command-menu | @noe/ui | planned | — | — |
|
|
294
|
+
|
|
295
|
+
## Overlays
|
|
296
|
+
|
|
297
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
298
|
+
|---|---|---|---|---|
|
|
299
|
+
| dialog | @noe/ui | available | dialog | primitive |
|
|
300
|
+
| drawer | @noe/ui | available | drawer | primitive |
|
|
301
|
+
| menu | @noe/ui | available | menu | primitive |
|
|
302
|
+
| tooltip | @noe/ui | available | tooltip | primitive |
|
|
303
|
+
| context-menu | @noe/ui | available | context-menu | primitive |
|
|
304
|
+
| dropdown | @noe/ui | available | dropdown | primitive |
|
|
305
|
+
|
|
306
|
+
## Patterns / Application
|
|
307
|
+
|
|
308
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
309
|
+
|---|---|---|---|---|
|
|
310
|
+
| page-header | @noe/ui | available | page-header | pattern/page block |
|
|
311
|
+
| sidebar-navigation | @noe/ui | available | sidebar-navigation | pattern/page block |
|
|
312
|
+
| section-header | @noe/ui | available | section-header | pattern/page block |
|
|
313
|
+
| activity-feed | @noe/ai-ui | available | activity-feed | pattern/page block |
|
|
314
|
+
| header-navigation | @noe/ui | available | header-navigation | pattern/page block |
|
|
315
|
+
| bottom-navigation | @noe/ui | available | bottom-navigation | pattern/page block |
|
|
316
|
+
| section-footer | @noe/ui | planned | — | — |
|
|
317
|
+
|
|
318
|
+
## Patterns / Data
|
|
319
|
+
|
|
320
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
321
|
+
|---|---|---|---|---|
|
|
322
|
+
| filter-bar | @noe/data-ui | available | filter-bar | pattern/page block |
|
|
323
|
+
| pagination | @noe/data-ui | available | pagination | pattern/page block |
|
|
324
|
+
|
|
325
|
+
## Patterns / Mobile
|
|
326
|
+
|
|
327
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
328
|
+
|---|---|---|---|---|
|
|
329
|
+
| data-list | @noe/ui | available | data-list | pattern/page block |
|
|
330
|
+
| fab | @noe/ui | available | fab | pattern/page block |
|
|
331
|
+
|
|
332
|
+
## Patterns / Pages
|
|
333
|
+
|
|
334
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
335
|
+
|---|---|---|---|---|
|
|
336
|
+
| agent-workspace | @noe/ai-ui | available | agent-workspace | pattern/page block |
|
|
337
|
+
| sign-in-form | @noe/ui | available | sign-in-form | pattern/page block |
|
|
338
|
+
| app-frame | @noe/ui | available | app-frame | pattern/page block |
|
|
339
|
+
| dashboard-shell | @noe/data-ui | available | dashboard-shell | pattern/page block |
|
|
340
|
+
| settings-page | @noe/ui | available | settings-page | pattern/page block |
|
|
341
|
+
| mobile-screen | @noe/ui | available | mobile-screen | pattern/page block |
|
|
342
|
+
|
|
343
|
+
## Primitives / Actions
|
|
344
|
+
|
|
345
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
346
|
+
|---|---|---|---|---|
|
|
347
|
+
| button | @noe/ui | available | button | primitive |
|
|
348
|
+
| utility-button | @noe/ui | available | utility-button | primitive |
|
|
349
|
+
|
|
350
|
+
## Primitives / Forms
|
|
351
|
+
|
|
352
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
353
|
+
|---|---|---|---|---|
|
|
354
|
+
| input | @noe/ui | available | input | primitive |
|
|
355
|
+
| field | @noe/ui | available | input | primitive |
|
|
356
|
+
| textarea | @noe/ui | available | textarea | primitive |
|
|
357
|
+
|
|
358
|
+
## Primitives / Layout
|
|
359
|
+
|
|
360
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
361
|
+
|---|---|---|---|---|
|
|
362
|
+
| card | @noe/ui | available | card | primitive |
|
|
363
|
+
| content-divider | @noe/ui | planned | — | — |
|
|
364
|
+
|
|
365
|
+
## Shared / Auth
|
|
366
|
+
|
|
367
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
368
|
+
|---|---|---|---|---|
|
|
369
|
+
| login-page | @noe/ui | available | login-page | pattern/page block |
|
|
370
|
+
| not-found | @noe/ui | available | not-found | pattern/page block |
|
|
371
|
+
| sign-up-page | @noe/ui | planned | — | — |
|
|
372
|
+
| verification-page | @noe/ui | planned | — | — |
|
|
373
|
+
| forgot-password-page | @noe/ui | planned | — | — |
|
|
374
|
+
| email-template | @noe/ui | planned | — | — |
|
|
375
|
+
|
|
376
|
+
## Workflow
|
|
377
|
+
|
|
378
|
+
| Entry | Package | Status | Registry item | Layer |
|
|
379
|
+
|---|---|---|---|---|
|
|
380
|
+
| workflow-canvas | @noe/workflow-ui | available | workflow-canvas | pattern/page block |
|
|
381
|
+
| workflow-node | @noe/workflow-ui | available | workflow-node | primitive |
|
|
382
|
+
|
|
383
|
+
## Mobile coverage
|
|
384
|
+
|
|
385
|
+
- `data-list`: Touch-friendly mobile list rows with leading media slot, title and subtitle, trailing meta or chevron slot and current-page state; rows meet minimum touch height.
|
|
386
|
+
- `fab`: Mobile-only floating action button anchored to the logical end edge above the bottom navigation, with safe-area padding and required accessible label.
|
|
387
|
+
- `mobile-screen`: Single-column mobile page scaffold composing an app bar, scrollable content region, optional floating action button and bottom navigation.
|
|
388
|
+
- `bottom-navigation`: Mobile-only bottom tab bar with current-page state, badges, icon slots and safe-area padding; hidden from the medium breakpoint upward.
|
|
389
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# MCP
|
|
2
|
+
|
|
3
|
+
The repository uses the official shadcn MCP process rather than creating a duplicate server. `.mcp.json` starts `shadcn@latest mcp`; `components.json` declares the `@noe` namespace.
|
|
4
|
+
|
|
5
|
+
Agent lookup order is encoded in `AGENTS.md`. A custom MCP server is justified only when production evidence shows a concrete gap such as full-text Storybook search, token rule queries or policy retrieval that the official registry interface cannot provide.
|
|
6
|
+
|
|
7
|
+
21st.dev is a discovery source. Every candidate requires provenance/license review, comparison with `@noe`, normalization, accessibility, RTL/LTR, stories, tests and registry metadata before adoption.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Motion
|
|
2
|
+
|
|
3
|
+
Motion communicates state and spatial relation; it is not decoration.
|
|
4
|
+
|
|
5
|
+
Durations are semantic: fast for control feedback, normal for local state transitions, slow for overlays and major workspace changes. Directional transitions accept logical `start`, `end`, `forward` and `backward`, resolved at runtime.
|
|
6
|
+
|
|
7
|
+
Reduced-motion mode collapses non-essential animation to near-zero duration while preserving state changes. Loading indicators may continue when necessary to communicate ongoing work.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# NOE public brand audit
|
|
2
|
+
|
|
3
|
+
Source inspected: `https://noecosystem.com/` on 2026-08-25 through a live text crawl. The restricted execution environment did not expose browser computed-style inspection, so exact production CSS values are not presented as observed facts.
|
|
4
|
+
|
|
5
|
+
## OBSERVED
|
|
6
|
+
|
|
7
|
+
- The primary proposition is “Shared foundations. Connected experiences.”
|
|
8
|
+
- The public site describes a shared core, connected layers, evolving experiences, deliberate orchestration, clear surfaces, and a human-centered control model.
|
|
9
|
+
- Repeated language includes shared core, connected with intent, clear at the surface, reusable building field, live signal, control centered, coral signal, and evolving without fragmentation.
|
|
10
|
+
- Content structure uses numbered systems, technical labels, short declarative headings, capability maps, and deliberate system diagrams.
|
|
11
|
+
- The brand relationship is ecosystem-first: individual capabilities remain distinct while sharing foundations and orchestration.
|
|
12
|
+
|
|
13
|
+
## DERIVED
|
|
14
|
+
|
|
15
|
+
- Visual hierarchy should feel architectural rather than decorative.
|
|
16
|
+
- Layout should use lines, fields, node relationships, measured whitespace, and disciplined labels.
|
|
17
|
+
- Coral is a live signal and decision accent, not a page-wide gradient.
|
|
18
|
+
- Product surfaces should expose complexity progressively and preserve calm defaults.
|
|
19
|
+
- Geometry should be precise and moderately rounded; large pill and glass treatments would weaken the system language.
|
|
20
|
+
- Technical identifiers may be visible, but they should be subordinate and deliberately isolated.
|
|
21
|
+
|
|
22
|
+
## DESIGN-SYSTEM DECISION
|
|
23
|
+
|
|
24
|
+
- Warm neutral background and surface tokens, with independently designed dark surfaces.
|
|
25
|
+
- Coral semantic accent for active signal, primary action, focus and selected workflow state.
|
|
26
|
+
- Hairline borders and restrained elevation instead of stacked cards.
|
|
27
|
+
- Compact uppercase eyebrows and technical metadata paired with human-readable headings.
|
|
28
|
+
- Connected-system diagrams, workflow nodes and status signals use the same token family.
|
|
29
|
+
- Responsive layouts preserve composition and DOM order rather than reversing entire trees for RTL.
|
|
30
|
+
|
|
31
|
+
## Validation boundary
|
|
32
|
+
|
|
33
|
+
A future unrestricted audit should capture computed typography, color, spacing, radius, shadow and motion values at 390, 768, 1024, 1280, 1440 and wide desktop widths. That work remains a validation input, not a precondition for using the implemented semantic system.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# First-party registry
|
|
2
|
+
|
|
3
|
+
`packages/registry/registry.json` and `packages/registry/r/*.json` form the source for the `@noe` shadcn-compatible registry.
|
|
4
|
+
|
|
5
|
+
`pnpm build:static` publishes this source into the deployable static layout and embeds each declared source file in its installable item payload:
|
|
6
|
+
|
|
7
|
+
- `dist/r/registry.json`
|
|
8
|
+
- `dist/r/{name}.json`
|
|
9
|
+
|
|
10
|
+
When this output is mounted under the NOE site, its public paths are `https://noecosystem.com/design-system/r/registry.json` and `https://noecosystem.com/design-system/r/{name}.json`. The local publication test starts a static HTTP server against this output and verifies every declared URL. This proves the build layout, not the external deployment.
|
|
11
|
+
|
|
12
|
+
Run `pnpm test:registry:consumer` to install `@noe/button` into a temporary consumer with the official shadcn CLI against the locally served registry. This is a pre-deployment protocol check; ADR 0007 still requires the same flow through the official MCP against the deployed domain before the registry can be described as agent-installable.
|
|
13
|
+
|
|
14
|
+
Descriptions tell coding agents when to use an item and encode direction, accessibility and progressive-disclosure expectations. CI validates unique names, required metadata, valid referenced files and JSON parsing.
|
|
15
|
+
|
|
16
|
+
The publication URL in `components.json` is an intended target. Publication is complete only when a deployment produces observable HTTP artifacts and a consumer installation test succeeds through the official shadcn MCP process.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# RTL and bidi
|
|
2
|
+
|
|
3
|
+
## Document direction
|
|
4
|
+
|
|
5
|
+
Persian pages render with `<html lang="fa" dir="rtl">`; English pages use `<html lang="en" dir="ltr">`. Direction is a writing-system capability, not an inline `locale === "fa"` branch.
|
|
6
|
+
|
|
7
|
+
## Layout
|
|
8
|
+
|
|
9
|
+
Use logical margin, padding, inset, border and text alignment. Maintain semantic DOM order. Do not apply global `row-reverse` fixes.
|
|
10
|
+
|
|
11
|
+
## Portals
|
|
12
|
+
|
|
13
|
+
`DirectionPortal` wraps portalled content with the active direction. Dialog, drawer, popover, tooltip, select, dropdown and toast adapters must use the same contract.
|
|
14
|
+
|
|
15
|
+
## Icons
|
|
16
|
+
|
|
17
|
+
Forward/backward, next/previous, chevron, indent/outdent and panel-opening icons may mirror. Brand, play, pause, upload, download, search, settings, check, close, charts, code and service logos do not mirror automatically.
|
|
18
|
+
|
|
19
|
+
The shared `ChevronIcon` uses `icons8Source` and opts into this policy through the scoped `.noe-logical-icon` class. `NoeMark` remains a NOE brand asset and never mirrors.
|
|
20
|
+
|
|
21
|
+
## Mixed content
|
|
22
|
+
|
|
23
|
+
Use `dir=auto` for unpredictable prose, `bdi` for isolated runtime spans, and `dir=ltr` for URLs, emails, UUIDs, hashes, IP addresses, paths, package names, commands, code and model identifiers.
|
|
24
|
+
|
|
25
|
+
## Tables and charts
|
|
26
|
+
|
|
27
|
+
Do not reverse datasets. Table chrome respects interface direction while semantic column order follows product meaning. Chart labels and controls localize; axes follow the meaning of the data rather than page direction by default.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Security
|
|
2
|
+
|
|
3
|
+
## Assets and boundaries
|
|
4
|
+
|
|
5
|
+
Assets include registry source, release packages, component consumers, CI credentials, deployment identities and agent/tool approval semantics. Trust boundaries exist at pull requests, package installation, MCP registry access, runtime tool calls and publication.
|
|
6
|
+
|
|
7
|
+
## Key threats and controls
|
|
8
|
+
|
|
9
|
+
- Supply-chain substitution: first-party namespace, review, lockfiles, dependency review and pinned Actions.
|
|
10
|
+
- Malicious pull-request execution: no privileged `pull_request_target` checkout and least-privilege tokens.
|
|
11
|
+
- Secret exposure: no credentials in repository or logs; environment-scoped secrets and OIDC.
|
|
12
|
+
- Unsafe agent action: visible consequence, bounded permission, explicit approval and audit-friendly target/parameters.
|
|
13
|
+
- XSS from runtime content: React escaping by default and no raw HTML rendering in primitives.
|
|
14
|
+
- Bidi spoofing: semantic isolation for technical values and no injected Unicode controls in application data.
|
|
15
|
+
|
|
16
|
+
Production deployment, security-control reduction, IAM changes and irreversible data operations require explicit scoped approval.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Testing
|
|
2
|
+
|
|
3
|
+
## Layers
|
|
4
|
+
|
|
5
|
+
| Layer | Tool | Scope |
|
|
6
|
+
| -------------------- | --------------------------- | ------------------------------------------------------------ |
|
|
7
|
+
| Static audits | `scripts/verify.mjs` | Registry integrity, i18n parity, physical-CSS scan, secrets |
|
|
8
|
+
| Offline unit | `node --test tests/*.mjs` | Locale resolution, pseudo-locales, formatters, direction |
|
|
9
|
+
| Unit | Vitest (`unit` project) | Token contracts and pure behavior in Node |
|
|
10
|
+
| Component | Vitest browser project | Real Chromium: rendering, focus, disabled/loading, portals |
|
|
11
|
+
| Storybook | addon-vitest + a11y | Every story renders; axe violations fail the run |
|
|
12
|
+
| E2E | Playwright | Surfaces × locales × themes × viewports across 3 browsers |
|
|
13
|
+
|
|
14
|
+
## Commands
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
pnpm test # offline audits + unit
|
|
18
|
+
pnpm test:components # browser component tests
|
|
19
|
+
pnpm test:storybook # story interaction + accessibility
|
|
20
|
+
pnpm test:e2e # full Playwright matrix
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## E2E matrix
|
|
24
|
+
|
|
25
|
+
- Projects: `chromium-en-ltr`, `chromium-fa-rtl`, `chromium-pseudo`,
|
|
26
|
+
`firefox-en-smoke`, `webkit-en-smoke`.
|
|
27
|
+
- Coverage: all four product surfaces render their landmarks; theme toggling;
|
|
28
|
+
skip-link focus; Persian document `lang`/`dir`; pseudo-LTR/pseudo-RTL string
|
|
29
|
+
expansion; LTR-isolated technical values inside RTL dashboards; keyboard
|
|
30
|
+
scroll regions; no horizontal overflow at 390/768/1024/1280/1440.
|
|
31
|
+
- State is URL-driven (`?surface=&locale=&theme=`), keeping scenarios
|
|
32
|
+
deterministic and parallel-safe.
|
|
33
|
+
|
|
34
|
+
## Policy
|
|
35
|
+
|
|
36
|
+
Failures are never hidden with `continue-on-error` or shell fallbacks. Retries
|
|
37
|
+
diagnose infrastructure instability; they do not normalize flaky tests. New
|
|
38
|
+
user-facing components require component tests plus at least one story with
|
|
39
|
+
a11y verification before merge.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Tokens
|
|
2
|
+
|
|
3
|
+
`packages/design-tokens/src/tokens.json` is the only editable source of truth.
|
|
4
|
+
`tokens.css` and `tokens.mjs` are generated artifacts and must be updated with
|
|
5
|
+
`pnpm --filter @noe/design-tokens build`.
|
|
6
|
+
|
|
7
|
+
## Architecture
|
|
8
|
+
|
|
9
|
+
Tokens follow three layers: raw primitives, purpose-based semantic aliases, and
|
|
10
|
+
component customization seams. Product code consumes semantic utilities such as
|
|
11
|
+
`bg-background` and `text-muted-foreground`; it does not consume primitive palette
|
|
12
|
+
names.
|
|
13
|
+
|
|
14
|
+
## Naming
|
|
15
|
+
|
|
16
|
+
Application semantics use `background`, `surface`, `surface-raised`, `surface-sunken`, `foreground`, `muted-foreground`, `border`, `border-strong`, `accent`, `signal`, `success`, `warning`, `destructive`, `info`, and `focus-ring`.
|
|
17
|
+
|
|
18
|
+
Raw scale names such as `gray-300` and `blue-500` are prohibited in product semantics.
|
|
19
|
+
|
|
20
|
+
## Themes
|
|
21
|
+
|
|
22
|
+
Light and dark modes have separately chosen surface relationships, borders, foregrounds, accents and elevation. Dark mode is not an inversion filter.
|
|
23
|
+
|
|
24
|
+
## Typography
|
|
25
|
+
|
|
26
|
+
English interface text uses the operating system's SF Pro Text and SF Pro Display
|
|
27
|
+
families with platform fallbacks. Persian interface text uses the self-hosted
|
|
28
|
+
IRANYekanXFaNum WOFF2 subset in weights 400, 500, 600, and 700. Unicode ranges keep
|
|
29
|
+
the Persian download conditional while allowing mixed-script text to select the
|
|
30
|
+
correct face automatically.
|
|
31
|
+
|
|
32
|
+
The supplied IRANYekan archive did not include a license file. Its license must be
|
|
33
|
+
confirmed and added before the package is published outside the authorized NOE
|
|
34
|
+
development environment.
|
|
35
|
+
|
|
36
|
+
## Extension rule
|
|
37
|
+
|
|
38
|
+
A new token requires a repeated semantic need, contrast validation in both themes, RTL neutrality where applicable, documentation, and a migration path. One-off values stay local only when their meaning is truly non-reusable and documented.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Visual QA
|
|
2
|
+
|
|
3
|
+
The capture script generates deterministic PNG evidence for:
|
|
4
|
+
|
|
5
|
+
- Agent workspace at 390, 768, 1024, 1280 and 1440 widths.
|
|
6
|
+
- English/light, English/dark, Persian/light and Persian/dark.
|
|
7
|
+
- Consumer, dashboard, agent and workflow surfaces at representative desktop conditions.
|
|
8
|
+
- Pseudo-LTR and pseudo-RTL stress views.
|
|
9
|
+
|
|
10
|
+
Review checks include overflow, clipped Persian, bidi corruption, arrow direction, sidebar collapse, technical-value isolation, table scrolling, excessive cards, random shadows, coral overuse, mirrored brand marks, focus order and mobile composition.
|