diff --git a/.github/workflows/publish-mcp-registry.yml b/.github/workflows/publish-mcp-registry.yml new file mode 100644 index 00000000000..ac588a730f5 --- /dev/null +++ b/.github/workflows/publish-mcp-registry.yml @@ -0,0 +1,35 @@ +name: Publish to MCP Registry + +on: + workflow_call: + workflow_dispatch: + inputs: + dry_run: + description: 'Run in dry-run mode (install and login only, no publishing)' + required: false + type: boolean + +permissions: + id-token: write + contents: read + +jobs: + publish-mcp-registry: + runs-on: ubuntu-latest + defaults: + run: + working-directory: packages/mcp-server + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Install mcp-publisher + run: | + curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher + + - name: Authenticate to MCP Registry + run: ./mcp-publisher login github-oidc + + - name: Publish server to MCP Registry + if: ${{ inputs.dry_run != true }} + run: ./mcp-publisher publish diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dca4d9f9812..6d7be645bbc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -148,3 +148,11 @@ jobs: const { default: addIssueComments } = await import('${{ github.workspace }}/.github/createIssueCommentsForRelease.mjs'); await addIssueComments({ github, context }) + + publish-mcp-registry: + needs: ['build-and-release'] + if: ${{ github.event.inputs.snapshot == 'false' && github.event.inputs.prerelease == 'false' }} + uses: './.github/workflows/publish-mcp-registry.yml' + permissions: + id-token: write + contents: read diff --git a/docs/ProjectTemplates.mdx b/docs/ProjectTemplates.mdx index 6314a1f196d..6bd1ec52a08 100644 --- a/docs/ProjectTemplates.mdx +++ b/docs/ProjectTemplates.mdx @@ -1,9 +1,18 @@ -import { Footer, LabelWithWrapping, ProjectTemplate, TableOfContent } from '@sb/components'; +import { Footer, ProjectTemplate, TableOfContent } from '@sb/components'; import NextLogo from '@sb/images/logo-nextjs.svg'; import ReactRouterLogo from '@sb/images/logo-react-router.svg'; import ViteLogo from '@sb/images/logo-vitejs.svg'; import { Meta } from '@storybook/addon-docs/blocks'; import { FlexBox, FlexBoxJustifyContent, FlexBoxWrap, Label } from '@ui5/webcomponents-react'; +import projectTemplates from './project-templates.json'; + +export const logos = { + nextjs: NextLogo, + vite: ViteLogo, + 'react-router': ReactRouterLogo, +}; + +export const repoBase = 'https://github.com/UI5/webcomponents-react/tree/main/'; @@ -18,34 +27,21 @@ A curated list of minimal project templates and examples to get started using UI
- - - + {projectTemplates + .filter((t) => t.type === 'template') + .map((t) => ( + + ))} ## Examples @@ -53,78 +49,30 @@ A curated list of minimal project templates and examples to get started using UI
- - - - - - - - - - - - + {projectTemplates + .filter((t) => t.type === 'example') + .map((t) => ( + + {t.features && ( + + )} + + ))}