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,20 @@
|
|
|
1
|
+
# Accessibility
|
|
2
|
+
|
|
3
|
+
Target WCAG 2.2 AA where applicable.
|
|
4
|
+
|
|
5
|
+
## Baseline
|
|
6
|
+
|
|
7
|
+
- Visible keyboard focus and logical focus order.
|
|
8
|
+
- Native elements before custom semantics.
|
|
9
|
+
- Names, labels, descriptions and error associations.
|
|
10
|
+
- Dialog and approval semantics.
|
|
11
|
+
- Status and progress announcements.
|
|
12
|
+
- Contrast in light and dark themes.
|
|
13
|
+
- Reflow at 400% zoom and representative mobile widths.
|
|
14
|
+
- Reduced motion and adequate touch targets.
|
|
15
|
+
|
|
16
|
+
## Critical manual review
|
|
17
|
+
|
|
18
|
+
Dialog, drawer, tabs, tables, command interfaces, agent composer, approvals, workflow canvas and error recovery require keyboard review. Automated accessibility output is necessary evidence but is not complete proof.
|
|
19
|
+
|
|
20
|
+
RTL must not alter reading, focus or action order in a way that contradicts the DOM.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Coding-agent guide
|
|
2
|
+
|
|
3
|
+
1. Read `AGENTS.md` and the affected package documentation.
|
|
4
|
+
2. Search `@noe` before generating code.
|
|
5
|
+
3. Prefer existing product patterns, then approved foundations, then 21st.dev discovery.
|
|
6
|
+
4. Use semantic tokens and logical CSS.
|
|
7
|
+
5. Keep user-facing copy in the message system.
|
|
8
|
+
6. Exercise English, Persian, pseudo-LTR and pseudo-RTL.
|
|
9
|
+
7. Test portal direction, keyboard behavior and technical-value isolation.
|
|
10
|
+
8. Update stories, tests, registry metadata and docs in the same change.
|
|
11
|
+
9. State evidence precisely; never convert intended work into completed work.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Agentic UI
|
|
2
|
+
|
|
3
|
+
## State model
|
|
4
|
+
|
|
5
|
+
Tool calls cover pending, approval-required, running, streaming, success, failure, retry and denied. Runs cover queued, planning, running, waiting, approval, paused, completed, failed and cancelled.
|
|
6
|
+
|
|
7
|
+
## Progressive disclosure
|
|
8
|
+
|
|
9
|
+
Normal users see intent, status, consequence, result and available action. Model identifiers, raw parameters, trace spans and JSON are secondary disclosure.
|
|
10
|
+
|
|
11
|
+
## Human in the loop
|
|
12
|
+
|
|
13
|
+
Sensitive calls present what will happen, target, scope, parameters, consequence and bounded actions: allow once, allow for session, edit and approve, deny, cancel, retry, escalate or clarify.
|
|
14
|
+
|
|
15
|
+
## Tool results
|
|
16
|
+
|
|
17
|
+
Prefer a human summary and structured fields. Raw data is an expandable debugging capability, never the default result presentation.
|
|
18
|
+
|
|
19
|
+
## Reference surface
|
|
20
|
+
|
|
21
|
+
The static agent workspace combines conversation, plan, tool state, approval, artifact and run inspection in English/Persian and light/dark modes.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
## Layers
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
NOE public identity and product behavior
|
|
7
|
+
→ semantic tokens
|
|
8
|
+
→ direction-safe primitives
|
|
9
|
+
→ data, agentic and workflow patterns
|
|
10
|
+
→ product surfaces
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Product code consumes `@noe/*` components. Capability libraries such as TanStack Table, Recharts, React Flow, Base UI, coss, Motion and assistant-ui belong behind adapters; their raw visual output must not escape into product screens.
|
|
14
|
+
|
|
15
|
+
## Package boundaries
|
|
16
|
+
|
|
17
|
+
- `@noe/design-tokens`: the only source for design values.
|
|
18
|
+
- `@noe/i18n`: locale metadata, direction, `Intl` formatting and pseudo-locales.
|
|
19
|
+
- `@noe/ui`: interaction primitives, portals, fields and bidi-safe content.
|
|
20
|
+
- `@noe/data-ui`: first-party data composition contracts.
|
|
21
|
+
- `@noe/ai-ui`: agent state, tool state, approval and run-inspection contracts.
|
|
22
|
+
- `@noe/workflow-ui`: workflow canvas and node contracts.
|
|
23
|
+
- `@noe/icons`: icon ownership and mirroring policy.
|
|
24
|
+
- `@noe/registry`: agent-facing install metadata.
|
|
25
|
+
|
|
26
|
+
## Runtime integration
|
|
27
|
+
|
|
28
|
+
The static reference app is dependency-free and uses the production token and locale contracts. React packages are source-complete but require a connected environment to install React and Storybook dependencies. The intended integration is React 19+ with a Vite/Tailwind CSS v4 application shell.
|
|
29
|
+
|
|
30
|
+
## Decisions
|
|
31
|
+
|
|
32
|
+
- One canonical message architecture and centralized locale metadata.
|
|
33
|
+
- HTML `lang` and `dir` set before first paint.
|
|
34
|
+
- Portals receive active direction explicitly.
|
|
35
|
+
- Logical CSS and logical motion concepts are mandatory.
|
|
36
|
+
- No custom MCP server while the official shadcn MCP satisfies registry discovery.
|
|
37
|
+
- Registry publication and package release are separate operational gates (ADR 0007).
|
|
38
|
+
- `@noe/*` is the single package namespace for packages, registry items, diagrams and agent instructions (ADR 0005).
|
|
39
|
+
- Icons8 is the only third-party icon family; NOE brand marks never mirror (ADR 0006).
|
|
40
|
+
- Capability libraries stay behind adapters; NOE tokens and `@noe/*` own product markup, style, RTL behavior and approval states (ADR 0008).
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# NOEcosystem Brand Architecture
|
|
2
|
+
|
|
3
|
+
Source: `NOEcosystem Brand Architecture Matrix` (product marketing, 2026-08).
|
|
4
|
+
This page normalizes that matrix for engineering use and states how the
|
|
5
|
+
design system applies it. Where this page and the marketing document disagree,
|
|
6
|
+
the marketing document wins for brand facts; this page wins for implementation
|
|
7
|
+
rules.
|
|
8
|
+
|
|
9
|
+
## Core brands
|
|
10
|
+
|
|
11
|
+
| # | Classification | Brand | Product path | Domain / Role |
|
|
12
|
+
|---|----------------|-------|--------------|---------------|
|
|
13
|
+
| 1 | Parent brand | **NOEcosystem** | [noecosystem.com](https://noecosystem.com/) | Operating model, architecture, ecosystem umbrella |
|
|
14
|
+
| 2 | Shared infrastructure & services | **NOCloud** | [/cloud](https://noecosystem.com/cloud) | Hosting, deployment, observability, reliability |
|
|
15
|
+
| 2 | Shared infrastructure & services | **NOrchestration** | [/orchestration](https://noecosystem.com/orchestration) | Integration and operational coordination |
|
|
16
|
+
| 2 | Shared infrastructure & services | **NOsist** | [/ai](https://noecosystem.com/ai) | Shared AI assistants, agents and knowledge services |
|
|
17
|
+
| 2 | Shared infrastructure & services | **NOChain** | [/chain](https://noecosystem.com/chain) | Conditional ledger and verifiable records |
|
|
18
|
+
| 3 | Unified experience & access | **NOrbit** | [/orbit](https://noecosystem.com/orbit) | Superapp and unified access layer |
|
|
19
|
+
| 4 | Business products | **NOrganization** | [/hr](https://noecosystem.com/hr) | Human capital and organizational operations |
|
|
20
|
+
| 4 | Business products | **NOFinix** | [/cfo](https://noecosystem.com/cfo) | Finance, accounting and control |
|
|
21
|
+
| 4 | Business products | **NOBank** | [/bank](https://noecosystem.com/bank) | Digital banking |
|
|
22
|
+
| 4 | Business products | **NOTradex** | [/trade](https://noecosystem.com/trade) | Advisory, investment and trading |
|
|
23
|
+
| 5 | Executive intelligence layer | **NOCEO** | [/ceo](https://noecosystem.com/ceo) | Executive KPIs, alerts and decision support |
|
|
24
|
+
| 6 | Venture investment & development | **NOCVC** | [/cvc](https://noecosystem.com/cvc) | Venture capital and venture building |
|
|
25
|
+
|
|
26
|
+
Total brands: 12 (1 parent + 4 infrastructure + 1 access + 4 business +
|
|
27
|
+
1 executive + 1 venture). Note that brand names and URL slugs are independent
|
|
28
|
+
(`NOsist` serves `/ai`, `NOrganization` serves `/hr`, `NOFinix` serves `/cfo`,
|
|
29
|
+
`NOTradex` serves `/trade`); never derive one from the other in code or copy.
|
|
30
|
+
|
|
31
|
+
## Complementary shared capabilities
|
|
32
|
+
|
|
33
|
+
Seven capabilities are reusable functions, not brands: **Identity**, **Billing**,
|
|
34
|
+
**Compliance**, **Documents**, **Service Catalog & Marketplace**, **Analytics**,
|
|
35
|
+
**Data Management**. They are applied across brands according to each brand's
|
|
36
|
+
requirements.
|
|
37
|
+
|
|
38
|
+
The design system itself behaves like an eighth shared capability: one UI
|
|
39
|
+
foundation consumed by every brand and capability surface.
|
|
40
|
+
|
|
41
|
+
## How the design system applies this
|
|
42
|
+
|
|
43
|
+
- **One parent identity.** Product UI uses the short form `NOE` where space is
|
|
44
|
+
constrained and `NOEcosystem` elsewhere; the `NoeMark` glyph is the parent
|
|
45
|
+
brand mark, never mirrors in RTL, and its accessible name is `NOEcosystem`.
|
|
46
|
+
- **No brand forks.** Components are not duplicated per brand. All twelve
|
|
47
|
+
brands consume the same `@noe/*` primitives, patterns and page blocks.
|
|
48
|
+
- **Per-brand theming goes through tokens only.** Any brand-specific palette
|
|
49
|
+
or emphasis change must land in `@noe/design-tokens` semantic layers through
|
|
50
|
+
a token decision; hardcoding brand colors inside components or screens is a
|
|
51
|
+
review failure.
|
|
52
|
+
- **Brand names are technical identifiers.** Inside Persian or Arabic copy,
|
|
53
|
+
Latin brand names such as `NOFinix` keep their direction and casing; embed
|
|
54
|
+
them with the bidi isolation primitives instead of raw interpolation.
|
|
55
|
+
- **Capability surfaces reuse the pattern layer.** Analytics dashboards use
|
|
56
|
+
`dashboard-shell`; Documents and Compliance lists use the data patterns;
|
|
57
|
+
NOrbit's unified navigation composes `header-navigation`,
|
|
58
|
+
`sidebar-navigation` and `bottom-navigation` rather than inventing new
|
|
59
|
+
navigation systems.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# CI/CD
|
|
2
|
+
|
|
3
|
+
## Pipeline shape
|
|
4
|
+
|
|
5
|
+
The `ci` workflow runs six independent gates on every pull request, merge-queue
|
|
6
|
+
entry and push to the default branch:
|
|
7
|
+
|
|
8
|
+
| Job | Content |
|
|
9
|
+
| --------------------- | ------------------------------------------------------------------ |
|
|
10
|
+
| `ci / quality` | Biome format check, lint, strict TypeScript |
|
|
11
|
+
| `ci / unit` | Offline node audits + Vitest unit project |
|
|
12
|
+
| `ci / component` | Vitest browser component tests on Chromium |
|
|
13
|
+
| `ci / storybook` | Storybook interaction/a11y tests + static build artifact |
|
|
14
|
+
| `ci / build-and-verify` | Workspace build + registry/i18n/RTL/governance audits |
|
|
15
|
+
| `ci / e2e-critical` | Playwright matrix: chromium en/fa/pseudo + firefox/webkit smoke |
|
|
16
|
+
|
|
17
|
+
The `security` workflow adds CodeQL analysis, scheduled CodeQL runs and
|
|
18
|
+
dependency review on pull requests.
|
|
19
|
+
|
|
20
|
+
## Security controls
|
|
21
|
+
|
|
22
|
+
- Minimal `GITHUB_TOKEN` permissions (`contents: read`; `security-events: write`
|
|
23
|
+
only where CodeQL needs it).
|
|
24
|
+
- All third-party actions pinned to immutable full commit SHAs with the
|
|
25
|
+
upstream version documented beside them; Dependabot keeps SHAs updated.
|
|
26
|
+
- No secrets in logs; no privileged secrets available to untrusted PR code.
|
|
27
|
+
- Concurrency groups cancel superseded PR runs; deployments are never cancelled
|
|
28
|
+
mid-run because none run from CI yet.
|
|
29
|
+
|
|
30
|
+
## Artifacts
|
|
31
|
+
|
|
32
|
+
Storybook static build, dist outputs, Playwright reports/traces/screenshots are
|
|
33
|
+
uploaded with 14-day retention on relevant outcomes.
|
|
34
|
+
|
|
35
|
+
## Deployment
|
|
36
|
+
|
|
37
|
+
No deployment provider is invented. Storybook artifacts are produced on every
|
|
38
|
+
run; hosted delivery must reuse discovered organization infrastructure.
|
|
39
|
+
External cloud deployment should use OIDC/workload identity rather than
|
|
40
|
+
long-lived credentials.
|
|
41
|
+
|
|
42
|
+
## Required checks
|
|
43
|
+
|
|
44
|
+
Recommended required status checks once branch protection is active:
|
|
45
|
+
`ci / quality`, `ci / unit`, `ci / component`, `ci / storybook`,
|
|
46
|
+
`ci / build-and-verify`, `ci / e2e-critical`, `security / codeql`.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Components
|
|
2
|
+
|
|
3
|
+
## NOE Design System Catalog
|
|
4
|
+
|
|
5
|
+
Every public NOE component is inventoried in
|
|
6
|
+
`packages/registry/component-audit.json` (id, owning package, category, maturity
|
|
7
|
+
status, Storybook story id, and registry item where installable) and rendered
|
|
8
|
+
live in two places:
|
|
9
|
+
|
|
10
|
+
- `pnpm dev` (`apps/showcase`) — a searchable, filterable grid of every
|
|
11
|
+
`available` component rendered from its real public export, with theme,
|
|
12
|
+
locale and direction controls, category/status filters, a component-level
|
|
13
|
+
search box, and shareable deep links (`?component=<id>`, `?category=<name>`,
|
|
14
|
+
`?locale=<code>`, `?theme=<light|dark>`).
|
|
15
|
+
- `pnpm storybook` (`apps/storybook/stories/catalog/*.stories.tsx`) — one
|
|
16
|
+
Storybook title per catalog entry, grouped under `Catalog/<Category>/<Name>`,
|
|
17
|
+
with interaction (`play`) coverage for the overlay, keyboard and
|
|
18
|
+
approval-decision primitives (Button, Tabs, Dialog, Drawer, Menu, Approval
|
|
19
|
+
Request).
|
|
20
|
+
|
|
21
|
+
`node --test tests/catalog-audit.test.mjs` (also run by `pnpm test` and
|
|
22
|
+
reported by `pnpm verify`) enforces parity: every `available` audit entry must
|
|
23
|
+
have a unique story id that resolves to a real story in
|
|
24
|
+
`apps/storybook/stories/catalog/`, and every `registryItem` it names must exist
|
|
25
|
+
in `packages/registry/registry.json`. An item cannot be marked `available`
|
|
26
|
+
without both.
|
|
27
|
+
|
|
28
|
+
## Composition layers
|
|
29
|
+
|
|
30
|
+
The catalog is organized in three layers, mirroring the Untitled UI React
|
|
31
|
+
taxonomy that NOE uses as a visual-language reference for page organization:
|
|
32
|
+
|
|
33
|
+
1. **Primitives** (`registry:ui`) — buttons, fields, dialogs, bidi text.
|
|
34
|
+
2. **Application patterns** — reusable page fragments composed only from NOE
|
|
35
|
+
primitives and semantic tokens.
|
|
36
|
+
3. **Page blocks** (`registry:block`) — full page scaffolds that compose
|
|
37
|
+
patterns, primitives and domain regions.
|
|
38
|
+
|
|
39
|
+
Pattern and page-block items ship with logical-property layouts so column
|
|
40
|
+
order, text alignment and spacing mirror under RTL without variant classes,
|
|
41
|
+
matching the direction contract in `rtl.md`. Products consume the highest
|
|
42
|
+
layer that fits; screens should not reassemble primitives into ad-hoc page
|
|
43
|
+
scaffolds when a registered block exists.
|
|
44
|
+
|
|
45
|
+
Mapping to the Untitled UI reference taxonomy (honest as of 2026-08-27 — foundation stabilization):
|
|
46
|
+
|
|
47
|
+
| Untitled UI category | NOE coverage |
|
|
48
|
+
| ------------------------- | ------------------------------------------------------------------- |
|
|
49
|
+
| Header navigations | `header-navigation` (collapses to a menu trigger slot on mobile) |
|
|
50
|
+
| Application UI components | `page-header`, `sidebar-navigation`, `section-header`, `bottom-navigation`, `filter-bar`, `pagination`, `activity-feed` |
|
|
51
|
+
| Shared page examples | `sign-in-form`; error and empty states under Feedback |
|
|
52
|
+
| Application UI examples | `app-frame`, `agent-workspace`, `dashboard-shell`, `settings-page`, `workflow-canvas` |
|
|
53
|
+
| Base components | 66 available / 61 planned / 2 partial / 5 experimental (manifest honest count, not 107 Full) |
|
|
54
|
+
| Marketing components | 61 planned scaffolds from `generate-phase4.mjs` — not production-ready; deferred until tokens/i18n/a11y/tests are real |
|
|
55
|
+
|
|
56
|
+
States contract: every interactive block must remain perceivable and honest in
|
|
57
|
+
loading (`aria-busy`, `Skeleton`, `Spinner`), disabled, empty (`EmptyState`),
|
|
58
|
+
recoverable error (`ErrorState`) and permission-denied messaging; responsive
|
|
59
|
+
behavior is owned by the frame layer (`app-frame` plus `header-navigation`,
|
|
60
|
+
`bottom-navigation`) so inner patterns stay breakpoint-agnostic.
|
|
61
|
+
|
|
62
|
+
## Coss adoption matrix
|
|
63
|
+
|
|
64
|
+
`packages/registry/coss-adoption.json` tracks every primitive in the live
|
|
65
|
+
coss.com/ui catalog against one of four states — `adopted`, `compose-only`,
|
|
66
|
+
`deferred`, `blocked` — each with a rationale. `pnpm verify` reports the
|
|
67
|
+
current counts. As of this audit: 16 adopted, 8 compose-only, 29 deferred, 0
|
|
68
|
+
blocked — Calendar and DatePicker moved from `blocked` to `partial` (Jalali leap fix via Intl,
|
|
69
|
+
weekday offset (Sat=0), `<table>` semantics, `DirectionPortal` with explicit `dir`,
|
|
70
|
+
locale-driven i18n via `t(locale, key)` not `document.lang`, but still not Full: missing full keyboard/RTL/pseudo-locale stories and consumer build evidence). Toast remains `deferred`.
|
|
71
|
+
|
|
72
|
+
## Core primitives
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
Implemented source includes Button, Input, Field, Dialog, Drawer, Tabs, auto-direction text, bidi isolation, technical values, localized values, CodeBlock and Terminal.
|
|
76
|
+
|
|
77
|
+
## Interaction contracts
|
|
78
|
+
|
|
79
|
+
- Disabled controls remain perceivable and non-interactive.
|
|
80
|
+
- Loading uses `aria-busy` and preserves control dimensions.
|
|
81
|
+
- Dialog cancel behavior is explicit.
|
|
82
|
+
- Drawer sides are logical `start` and `end`.
|
|
83
|
+
- Tab arrow behavior resolves against active direction.
|
|
84
|
+
- Email, URL, telephone, numeric, code and identifier content preserve technical direction.
|
|
85
|
+
|
|
86
|
+
## Product adapters
|
|
87
|
+
|
|
88
|
+
Data, chart, agent and workflow packages own the NOE composition. Product screens should never import an unnormalized marketplace component directly.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Design-system contribution workflow
|
|
2
|
+
|
|
3
|
+
Use a feature branch and a reviewable pull request. PRs describe summary, design rationale, brand impact, i18n/RTL impact, accessibility impact, testing evidence, screenshots, risks and migration notes.
|
|
4
|
+
|
|
5
|
+
Breaking public API changes require a migration note, version impact, updated stories, tests, registry metadata and agent documentation. Do not modify a public component contract silently.
|
|
6
|
+
|
|
7
|
+
Substantial changes should use small conventional commits and pass the offline verification before remote CI is requested.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Foundations
|
|
2
|
+
|
|
3
|
+
## Principles
|
|
4
|
+
|
|
5
|
+
1. **Calm hierarchy:** one dominant action and one dominant reading path per region.
|
|
6
|
+
2. **Quiet structure:** borders and spacing express grouping before shadows do.
|
|
7
|
+
3. **Connected composition:** shared baselines and signal paths connect related capabilities.
|
|
8
|
+
4. **Technical clarity:** identifiers remain precise without competing with user intent.
|
|
9
|
+
5. **Human control:** approvals, consequences and recovery actions are explicit.
|
|
10
|
+
|
|
11
|
+
## Typography
|
|
12
|
+
|
|
13
|
+
Typography is a language-aware semantic contract, not a per-component choice.
|
|
14
|
+
|
|
15
|
+
- English and other Latin UI copy uses `--noe-font-family-sans` (SF Pro Text) and
|
|
16
|
+
`--noe-font-family-heading` (SF Pro Display) as the primary faces, with the
|
|
17
|
+
self-hosted `IRANYekanXFaNum` as a same-script fallback. SF Pro is referenced as a
|
|
18
|
+
system-font target with documented platform fallbacks; no proprietary SF Pro binary
|
|
19
|
+
is added to the repository.
|
|
20
|
+
- Persian and Arabic UI copy uses the locally supplied, licensed `IRANYekanXFaNum`
|
|
21
|
+
(regular/medium/semibold/bold, see `packages/design-tokens/src/fonts/`) as the
|
|
22
|
+
primary face. `html[lang="fa"]`, `html[lang="ar"]`, and nested matching `[lang]`
|
|
23
|
+
scopes override `--noe-font-family-sans` and `--noe-font-family-heading` explicitly
|
|
24
|
+
in `packages/design-tokens/src/base.css` rather than relying on glyph-level font-stack
|
|
25
|
+
fallback, so a mixed Persian/English run (labels, digits, punctuation) shares one
|
|
26
|
+
face's metrics instead of silently splitting glyphs across two fonts.
|
|
27
|
+
- Technical values (`TechnicalValue`, `CodeBlock`, identifiers, URLs, model names)
|
|
28
|
+
always use the semantic mono stack (`--noe-font-family-mono`) and `dir=ltr`
|
|
29
|
+
isolation regardless of the surrounding language scope.
|
|
30
|
+
- Contract tests: `packages/design-tokens/src/index.test.ts` asserts both the
|
|
31
|
+
Latin-first default stack and the Persian/Arabic language-scope override exist and
|
|
32
|
+
keep IRANYekanXFaNum as the primary face in `[lang="fa"]`/`[lang="ar"]`.
|
|
33
|
+
|
|
34
|
+
## Geometry
|
|
35
|
+
|
|
36
|
+
Radii are compact and semantic. Controls use shared heights. Cards are not nested merely to create hierarchy. Dense professional surfaces may use tighter spacing than consumer surfaces but share the same token scale.
|
|
37
|
+
|
|
38
|
+
## Responsive behavior
|
|
39
|
+
|
|
40
|
+
The reference app validates 390, 768, 1024, 1280 and 1440 pixel widths. Sidebars collapse by capability; data remains in logical DOM order; tables scroll rather than reverse data; agent artifacts progressively disclose on smaller layouts.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Internationalization
|
|
2
|
+
|
|
3
|
+
## Canonical architecture
|
|
4
|
+
|
|
5
|
+
`packages/i18n` is the single locale-capability layer. It centralizes locale, language, script, direction, numbering system, calendar and pseudo-locale behavior.
|
|
6
|
+
|
|
7
|
+
Representative locales:
|
|
8
|
+
|
|
9
|
+
- `en`: English, LTR, Latin digits, Gregorian calendar.
|
|
10
|
+
- `fa`: Persian, RTL, extended Arabic digits, Persian calendar.
|
|
11
|
+
- `en-XA`: expanded pseudo-LTR.
|
|
12
|
+
- `ar-XB`: bidi-stressing pseudo-RTL.
|
|
13
|
+
|
|
14
|
+
## Messages
|
|
15
|
+
|
|
16
|
+
Reusable components receive labels through props; product surfaces use message keys. English and Persian catalogs must have exact key parity. Sentence fragments must not be concatenated when grammar may vary.
|
|
17
|
+
|
|
18
|
+
## Formatting
|
|
19
|
+
|
|
20
|
+
Use `Intl.NumberFormat`, `Intl.DateTimeFormat`, `Intl.RelativeTimeFormat`, `Intl.ListFormat` and `Intl.PluralRules` through the canonical layer. Do not hand-build locale-specific dates, currencies or percentages.
|
|
21
|
+
|
|
22
|
+
## Initial render
|
|
23
|
+
|
|
24
|
+
SSR applications resolve locale, `lang` and `dir` server-side. Client applications apply them before rendering the main tree. A visible direction flip or hydration mismatch is a release blocker.
|