Merge branch 'master' into add-topics-to-notification-settings

Signed-off-by: billyatroadie <bstalnaker@roadie.com>
This commit is contained in:
billyatroadie
2025-04-01 10:17:31 -04:00
committed by GitHub
384 changed files with 11085 additions and 1831 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-auth-backend-module-bitbucket-provider': patch
---
Enabled persistency of scopes for Bitbucket Cloud.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog': minor
---
Added support of filtering based on system columns in catalog table
+9
View File
@@ -0,0 +1,9 @@
---
'@backstage/plugin-catalog-backend-module-github': minor
---
**BREAKING**: Explicitly rejects branch names containing a slash character.
The module now rejects any configuration that contains slashes in branch names. The reason for this is that the ingestion will run into downstream problems if they were let through. If you had configuration with a slash in the branch name in `filters.branch`, your application may fail to start up.
If you are affected by this, please move over to using branches that do not have slashes in them.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-techdocs-react': patch
---
Fix catalog entity docs page not loading due to multiple addons data attachment in the New Frontend System.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend-module-gitlab': patch
---
Updated the path field in the `gitlab:group:ensureExists` action to support also strings with multiple segments (e.g. `group/subgroup`)
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/create-app': patch
---
Bumped create-app version.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/create-app': patch
---
Bumped create-app version.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-unprocessed-entities': patch
---
Added confirmation popup for delete entities in Catalog Unprocessed Entities plugin
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-kubernetes': patch
---
Added New Frontend System filter for the Kubernetes tab to use `isKubernetesAvailable` to control its visibility
+17
View File
@@ -0,0 +1,17 @@
---
'@backstage/plugin-auth-backend-module-oidc-provider': patch
---
Added custom timeout setting for oidc provider
Here is an example of how to use a custom timeout with the configuration:
```yaml
auth:
oidc:
production:
clientId: ${AUTH_GOOGLE_CLIENT_ID}
clientSecret: ${AUTH_GOOGLE_CLIENT_SECRET}
timeout:
seconds: 30
```
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-backend-module-gitlab': patch
---
add filter for repos by membership and topics
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/canon': patch
---
Internal refactor and fixes to the prop extraction logic for layout components.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/core-components': patch
---
Fixed the messaging in the `AlertDisplay` where it was claiming that there were older messages available rather than newer.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-import': patch
---
Expose the `UnpackNestedValue` type as it's been removed from `react-hook-form`
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/canon': patch
---
Add global CSS reset for anchor tags.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-notifications-backend-module-slack': minor
---
Added a new Slack NotificationProcessor for use with the notifications plugin
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-import': patch
---
adding translation for `Register an existing component` text
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-catalog-backend-module-bitbucket-server': minor
'@backstage/plugin-events-backend-module-bitbucket-server': minor
---
Added the ability for the plugin to receive events coming from Bitbucket Server push webhooks. It then performs a delta mutation on the catalog.
+56 -2
View File
@@ -194,7 +194,61 @@
"@backstage/plugin-techdocs-react": "1.2.15",
"@backstage/plugin-user-settings": "0.8.20",
"@backstage/plugin-user-settings-backend": "0.3.0",
"@backstage/plugin-user-settings-common": "0.0.1"
"@backstage/plugin-user-settings-common": "0.0.1",
"@backstage/plugin-events-backend-module-bitbucket-server": "0.0.0",
"@backstage/plugin-notifications-backend-module-slack": "0.0.0"
},
"changesets": []
"changesets": [
"chatty-days-wonder",
"chilly-sheep-scream",
"clear-pigs-share",
"clever-tomatoes-jump",
"common-parrots-wink",
"crazy-hands-film",
"create-app-1742907012",
"create-app-1743513781",
"cuddly-dodos-allow",
"cuddly-kids-sell",
"cuddly-mirrors-ask",
"deep-flies-vanish",
"dry-cars-build",
"early-feet-lay",
"every-ties-wink",
"famous-dragons-bake",
"famous-eggs-dance",
"funny-hotels-cut",
"funny-lizards-clean",
"giant-donkeys-punch",
"honest-ties-worry",
"huge-toys-beam",
"itchy-times-behave",
"large-kings-protect",
"lemon-shoes-enter",
"light-cameras-fold",
"metal-animals-notice",
"moody-eagles-smile",
"nine-falcons-repeat",
"odd-bobcats-hang",
"orange-queens-grin",
"quick-carrots-open",
"rotten-bobcats-notice",
"sad-pots-try",
"serious-guests-tan",
"silver-rocks-invite",
"spotty-towns-show",
"stale-tables-stick",
"strange-planes-kneel",
"sweet-maps-invent",
"swift-boats-add",
"tame-sloths-brake",
"tame-worms-do",
"thin-snails-judge",
"tiny-swans-warn",
"twenty-forks-cheat",
"twenty-walls-join",
"unlucky-carrots-shave",
"wet-penguins-beg",
"wide-planets-camp",
"witty-planets-sing"
]
}
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/canon': patch
---
Fix types on the Icon component.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-notifications-backend': patch
---
Allow throttling notification sending not to block the system with huge amount of receiving users
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/integration-react': patch
---
Added scope `project` for Bitbucket Cloud.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/integration': patch
---
Mark GitHub `webhookSecret` config property as optional. A `webhookSecret` is not required when creating a GitHub App.
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-scaffolder-react': minor
'@backstage/plugin-scaffolder': minor
---
add api to retrieve template extensions info from scaffolder-backend
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-unprocessed-entities': patch
---
Fixed the `convertTimeToLocalTimezone` function in the FailedEntities component to correctly parse ISO 8601 date strings and set the timezone to the current local timezone.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch
---
Fixed bug in event-based discovery that caused unnecessary API calls to Bitbucket Cloud
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-techdocs-module-addons-contrib': patch
---
Fixed rendering issues in `ReportIssue` addon for unsupported repository types and improved shadow DOM event handling. The addon now properly prevents initialization when encountering unsupported repository types and correctly handles selection events within the shadow DOM.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch
---
fixed misleading example location annotations in docs
@@ -74,7 +74,7 @@ jobs:
- name: Cache Comment
if: ${{ steps.event.outputs.ACTION != 'closed' }}
uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: comment.md
key: ${{ steps.hash.outputs.COMMENT_FILE_HASH }}
@@ -103,7 +103,7 @@ jobs:
- name: Fetch cached Manifests File
id: cache
uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4
with:
path: comment.md
key: ${{ needs.setup.outputs.comment-cache-key }}
+2 -2
View File
@@ -239,7 +239,7 @@ jobs:
# Use the lower-level cache actions for the success cache, so that we can store the cache even on failed builds
- name: restore backstage-cli cache
uses: actions/cache/restore@d4323d4df104b026a6aa633fdb11d772146be0bf # v4
uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4
with:
path: .cache/backstage-cli
key: ${{ runner.os }}-v${{ matrix.node-version }}-backstage-cli-${{ github.run_id }}
@@ -260,7 +260,7 @@ jobs:
# Always save success cache even if there were failures, that way it can be used in re-triggered builds
- name: save backstage-cli cache
uses: actions/cache/save@d4323d4df104b026a6aa633fdb11d772146be0bf # v4
uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4
if: always()
with:
path: .cache/backstage-cli
+5 -5
View File
@@ -92,7 +92,7 @@ jobs:
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: stable-openapi-docs
path: docs/**/*.api.mdx
path: docs/**/api/**/*
if-no-files-found: error
retention-days: 1
@@ -165,7 +165,7 @@ jobs:
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: next-openapi-docs
path: docs/**/*.api.mdx
path: docs/**/api/**/*
if-no-files-found: error
retention-days: 1
@@ -220,7 +220,7 @@ jobs:
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4
with:
name: stable-openapi-docs
path: docs/**/*.api.mdx
path: docs
- name: grab lastest releases docs
run: |
@@ -235,7 +235,7 @@ jobs:
run: rm -r docs/reference
- name: clear OpenAPI reference
run: find . -name '*.api.mdx' -type f -delete
run: find ./docs -name '*.api.mdx' -type f -delete
# Next docs
- name: checkout master
@@ -257,7 +257,7 @@ jobs:
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4
with:
name: next-openapi-docs
path: docs/**/*.api.mdx
path: docs
- name: build microsite
run: yarn build
+1 -1
View File
@@ -94,7 +94,7 @@ jobs:
run: yarn backstage-cli config:check --lax
- name: backstage-cli cache
uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4
with:
path: .cache/backstage-cli
key: ${{ runner.os }}-v${{ matrix.node-version }}-backstage-cli-${{ github.run_id }}
+218 -10
View File
@@ -13,14 +13,178 @@ permissions:
contents: read
jobs:
stable:
runs-on: ubuntu-latest
concurrency:
group: stable-reference-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
CI: true
NODE_OPTIONS: --max-old-space-size=8192
outputs:
release: ${{ steps.find-release.outputs.result }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
with:
egress-policy: audit
- name: find latest release
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
id: find-release
with:
script: |
const { data } = await github.rest.repos.listTags({
owner: context.repo.owner,
repo: context.repo.repo,
per_page: 100,
})
const [{tag}] = data
.map(i => i.name)
.filter(tag => tag.match(/^v\d+\.\d+\.\d+$/))
.map(tag => ({
tag,
val: tag
.slice(1)
.split('.')
.reduce((val, part) => Number(val) * 1000 + Number(part))
}))
.sort((a, b) => b.val - a.val)
return tag
result-encoding: string
- name: checkout latest release
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: refs/tags/${{ steps.find-release.outputs.result }}
- name: Use Node.js 20.x
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
with:
node-version: 20.x
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
uses: backstage/actions/yarn-install@b3c1841fd69e1658ac631afafd0fb140a2309024 # v0.6.17
with:
cache-prefix: ${{ runner.os }}-v20.x
- name: build API reference
run: yarn build:api-docs
- name: upload API reference
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: stable-reference
path: docs/reference/
if-no-files-found: error
retention-days: 1
- name: microsite yarn install
run: yarn install --immutable
working-directory: microsite
- name: build OpenAPI API docs
working-directory: microsite
run: yarn docusaurus gen-api-docs all
- name: upload OpenAPI API docs
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: stable-openapi-docs
path: docs/**/api/**/*
if-no-files-found: error
retention-days: 1
next:
runs-on: ubuntu-latest
concurrency:
group: next-reference-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
CI: true
NODE_OPTIONS: --max-old-space-size=8192
steps:
- name: Harden Runner
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
with:
egress-policy: audit
- name: checkout master
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Use Node.js 20.x
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
with:
node-version: 20.x
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
uses: backstage/actions/yarn-install@b3c1841fd69e1658ac631afafd0fb140a2309024 # v0.6.17
with:
cache-prefix: ${{ runner.os }}-v20.x
- name: build API reference
run: yarn build:api-docs
- name: upload API reference
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: next-reference
path: docs/reference/
if-no-files-found: error
retention-days: 1
# Also build and upload storybook
- name: storybook yarn install
run: yarn install --immutable
working-directory: storybook
- name: storybook build
run: yarn build-storybook
working-directory: storybook
- name: storybook upload
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: storybook
path: storybook/dist/
if-no-files-found: error
retention-days: 1
- name: microsite yarn install
run: yarn install --immutable
working-directory: microsite
- name: build OpenAPI API docs
working-directory: microsite
run: yarn docusaurus gen-api-docs all
- name: upload OpenAPI API docs
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: next-openapi-docs
path: docs/**/api/**/*
if-no-files-found: error
retention-days: 1
build-microsite:
runs-on: ubuntu-latest
env:
CI: true
NODE_OPTIONS: --max-old-space-size=8192
NODE_OPTIONS: --max-old-space-size=16384
DOCUSAURUS_SSR_CONCURRENCY: 5
needs:
- stable
- next
name: Microsite
steps:
- name: Harden Runner
@@ -50,19 +214,63 @@ jobs:
run: yarn install --immutable
working-directory: microsite
- name: build API reference
run: yarn build:api-docs
- name: Build MkDocs for TechDocs
run: mkdocs build --strict
- name: verify yarn dependency duplicates
run: node scripts/verify-lockfile-duplicates.js
- name: prettier
run: yarn prettier:check
working-directory: microsite
- name: verify yarn dependency duplicates
run: node scripts/verify-lockfile-duplicates.js
- name: download stable reference
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4
with:
name: stable-reference
path: docs/reference
- name: download stable OpenAPI API docs
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4
with:
name: stable-openapi-docs
path: docs
- name: grab lastest releases docs
run: |
git fetch origin master --depth 1
git checkout FETCH_HEAD -- docs/releases
- name: generate stable docs
run: yarn docusaurus docs:version stable
working-directory: microsite
- name: clear API reference
run: rm -r docs/reference
- name: clear OpenAPI reference
run: find ./docs -name '*.api.mdx' -type f -delete
- name: build API reference
run: yarn build:api-docs
- name: checkout master
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
clean: false
- name: Build MkDocs for TechDocs
run: mkdocs build --strict
- name: download next reference
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4
with:
name: next-reference
path: docs/reference
- name: download next OpenAPI API docs
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4
with:
name: next-openapi-docs
path: docs
- name: build microsite
run: yarn build
working-directory: microsite
+3 -3
View File
@@ -14,16 +14,16 @@
"@mdx-js/loader": "^3.1.0",
"@mdx-js/react": "^3.1.0",
"@next/mdx": "^15.1.4",
"@storybook/react": "^8.4.7",
"@storybook/react": "^8.6.8",
"@uiw/codemirror-themes": "^4.23.7",
"@uiw/react-codemirror": "^4.23.7",
"motion": "^12.4.1",
"next": "14.2.23",
"next": "14.2.25",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-frame-component": "^5.2.7",
"shiki": "^1.26.1",
"storybook": "^8.4.7"
"storybook": "^8.6.8"
},
"devDependencies": {
"@types/mdx": "^2.0.13",
@@ -2,7 +2,7 @@ import { CodeBlock } from '@/components/CodeBlock';
import { PropsTable } from '@/components/PropsTable';
import { Tabs } from '@/components/Tabs';
import { Snippet } from '@/components/Snippet';
import { BoxPreview } from '@/snippets/box';
import { BoxSnippet } from '@/snippets/stories-snippets';
import { boxPropDefs } from './props';
import { spacingPropDefs } from '../../../../utils/propDefs';
@@ -12,7 +12,7 @@ Box is the lowest-level component in Canon. It provides a consistent API for sty
<Snippet
py={4}
preview={<BoxPreview />}
preview={<BoxSnippet story="Preview" />}
code={`<Box>
<DecorativeBox />
</Box>`}
@@ -2,15 +2,8 @@ import { PropsTable } from '@/components/PropsTable';
import { Snippet } from '@/components/Snippet';
import { Tabs } from '@/components/Tabs';
import { CodeBlock } from '@/components/CodeBlock';
import {
ButtonPreview,
ButtonSizes,
ButtonWithIcons,
ButtonFullWidth,
ButtonDisabled,
ButtonResponsive,
} from '@/snippets/button';
import { buttonVariants } from '@/snippets/_snippets';
import { ButtonSnippet } from '@/snippets/stories-snippets';
import { buttonVariants } from '@/snippets/code-snippets';
import { buttonPropDefs } from './props';
# Button
@@ -20,7 +13,7 @@ A button component that can be used to trigger actions.
<Snippet
align="center"
py={4}
preview={<ButtonPreview />}
preview={<ButtonSnippet story="Variants" />}
code={`<Inline alignY="center">
<Button iconStart="cloud" variant="primary">
Button
@@ -71,7 +64,7 @@ Here's a view when buttons have different variants.
align="center"
py={4}
open
preview={<ButtonPreview />}
preview={<ButtonSnippet story="Variants" />}
code={buttonVariants}
/>
@@ -83,7 +76,7 @@ Here's a view when buttons have different sizes.
align="center"
py={4}
open
preview={<ButtonSizes />}
preview={<ButtonSnippet story="Sizes" />}
code={`<Inline alignY="center">
<Button size="small">Small</Button>
<Button size="medium">Medium</Button>
@@ -98,7 +91,7 @@ Here's a view when buttons have icons.
align="center"
py={4}
open
preview={<ButtonWithIcons />}
preview={<ButtonSnippet story="WithIcons" />}
code={`<Inline alignY="center">
<Button iconStart="cloud">Button</Button>
<Button iconEnd="chevronRight">Button</Button>
@@ -114,7 +107,7 @@ Here's a view when buttons are full width.
align="center"
py={4}
open
preview={<ButtonFullWidth />}
preview={<ButtonSnippet story="FullWidth" />}
code={`<Flex style={{ width: '300px' }}>
<Button fullWidth>Full width</Button>
</Flex>`}
@@ -128,7 +121,7 @@ Here's a view when buttons are disabled.
align="center"
py={4}
open
preview={<ButtonDisabled />}
preview={<ButtonSnippet story="Disabled" />}
code={`<Button disabled>Button</Button>`}
/>
@@ -136,11 +129,7 @@ Here's a view when buttons are disabled.
Here's a view when buttons are responsive.
<Snippet
align="center"
py={4}
open
preview={<ButtonResponsive />}
<CodeBlock
code={`<Button variant={{ initial: 'primary', lg: 'secondary' }}>
Responsive Button
</Button>`}
@@ -1,5 +1,5 @@
import { PropsTable } from '@/components/PropsTable';
import { CheckboxPreview, CheckboxAllVariants } from '@/snippets/checkbox';
import { CheckboxSnippet } from '@/snippets/stories-snippets';
import { Snippet } from '@/components/Snippet';
import { Tabs } from '@/components/Tabs';
import { CodeBlock } from '@/components/CodeBlock';
@@ -11,8 +11,9 @@ import { checkboxPropDefs } from './props';
A checkbox component that can be used to trigger actions.
<Snippet
align="center"
py={4}
preview={<CheckboxPreview />}
preview={<CheckboxSnippet story="Default" />}
code={`<Checkbox label="Accept terms and conditions" />`}
/>
@@ -55,7 +56,7 @@ Here's a view when checkboxes have different variants.
align="center"
py={4}
open
preview={<CheckboxAllVariants />}
preview={<CheckboxSnippet story="AllVariants" />}
code={`<Inline alignY="center">
<Checkbox />
<Checkbox checked />
@@ -2,7 +2,7 @@ import { CodeBlock } from '@/components/CodeBlock';
import { PropsTable } from '@/components/PropsTable';
import { Tabs } from '@/components/Tabs';
import { Snippet } from '@/components/Snippet';
import { ContainerPreview } from '@/snippets/container';
import { ContainerSnippet } from '@/snippets/stories-snippets';
import { containerPropDefs } from './props';
# Container
@@ -12,7 +12,7 @@ content on the page.
<Snippet
py={4}
preview={<ContainerPreview />}
preview={<ContainerSnippet story="Preview" />}
code={`<Container>
<DecorativeBox />
</Container>`}
@@ -2,7 +2,7 @@ import { PropsTable } from '@/components/PropsTable';
import { Snippet } from '@/components/Snippet';
import { Tabs } from '@/components/Tabs';
import { CodeBlock } from '@/components/CodeBlock';
import { FieldPreview } from '@/snippets/field';
import { FieldSnippet } from '@/snippets/stories-snippets';
import { BaseUI } from '@/components/HeadlessBanners/BaseUI';
import {
fieldRootPropDefs,
@@ -15,7 +15,12 @@ import {
A wrapper around `Input` or `Select` component to add label, description and error messages..
<Snippet align="center" py={4} preview={<FieldPreview />} code={`<Field />`} />
<Snippet
align="center"
py={4}
preview={<FieldSnippet story="Default" />}
code={`<Field />`}
/>
<Tabs.Root>
<Tabs.List>
@@ -85,7 +90,7 @@ Here's a simple input with a label and description.
align="center"
py={4}
open
preview={<FieldPreview />}
preview={<FieldSnippet story="WithLabelAndDescription" />}
code={`<Field>
<Field.Label>Name</Field.Label>
<Field.Description>Visible on your profile</Field.Description>
@@ -6,9 +6,9 @@ import {
flexSimple,
flexResponsive,
flexAlign,
} from '@/snippets/_snippets';
} from '@/snippets/code-snippets';
import { Snippet } from '@/components/Snippet';
import { FlexPreview } from '@/snippets/flex';
import { FlexSnippet } from '@/snippets/stories-snippets';
import { flexPropDefs } from './props';
import { spacingPropDefs } from '../../../../utils/propDefs';
@@ -21,7 +21,7 @@ columns. All values are responsive.
<Snippet
py={4}
align="center"
preview={<FlexPreview />}
preview={<FlexSnippet story="Default" />}
code={`<Flex>
<DecorativeBox />
<DecorativeBox />
@@ -1,9 +1,9 @@
import { CodeBlock } from '@/components/CodeBlock';
import { PropsTable } from '@/components/PropsTable';
import { Tabs } from '@/components/Tabs';
import { grid } from '@/snippets/_snippets';
import { grid } from '@/snippets/code-snippets';
import { Snippet } from '@/components/Snippet';
import { GridPreview } from '@/snippets/grid';
import { GridSnippet } from '@/snippets/stories-snippets';
import { spacingPropDefs } from '../../../../utils/propDefs';
import { gridPropDefs, gridItemPropDefs } from './props';
@@ -14,7 +14,7 @@ more complex ones.
<Snippet
py={4}
preview={<GridPreview />}
preview={<GridSnippet story="Default" />}
code={`<Grid>
<DecorativeBox />
<DecorativeBox />
@@ -1,9 +1,5 @@
import { PropsTable } from '@/components/PropsTable';
import {
HeadingPreview,
HeadingAllVariants,
HeadingResponsive,
} from '@/snippets/heading';
import { HeadingSnippet } from '@/snippets/stories-snippets';
import { Snippet } from '@/components/Snippet';
import { Tabs } from '@/components/Tabs';
import { CodeBlock } from '@/components/CodeBlock';
@@ -15,7 +11,7 @@ Headings are used to structure the content of your page.
<Snippet
py={4}
preview={<HeadingPreview />}
preview={<HeadingSnippet story="Title1" />}
code={`<Heading variant="title1">Hello World!</Heading>`}
/>
@@ -56,7 +52,7 @@ appearance of the heading.
<Snippet
py={2}
open
preview={<HeadingAllVariants />}
preview={<HeadingSnippet story="AllVariants" />}
code={`<Flex direction="column" gap="4">
<Heading variant="display">Display</Heading>
<Heading variant="title1">Title 1</Heading>
@@ -71,10 +67,7 @@ appearance of the heading.
You can also use the `variant` prop to change the appearance of the text based
on the screen size.
<Snippet
py={4}
open
preview={<HeadingResponsive />}
<CodeBlock
code={`<Heading variant={{ initial: 'title2', lg: 'title1' }}>
Responsive heading
</Heading>`}
@@ -2,13 +2,8 @@ import { PropsTable } from '@/components/PropsTable';
import { Snippet } from '@/components/Snippet';
import { Tabs } from '@/components/Tabs';
import { CodeBlock } from '@/components/CodeBlock';
import {
IconButtonPreview,
IconButtonSizes,
IconButtonDisabled,
IconButtonResponsive,
} from '@/snippets/icon-button';
import { iconButtonVariants } from '@/snippets/_snippets';
import { IconButtonSnippet } from '@/snippets/stories-snippets';
import { iconButtonVariants } from '@/snippets/code-snippets';
import { iconButtonPropDefs } from './props';
# Icon Button
@@ -18,11 +13,11 @@ A button component with a single icon that can be used to trigger actions.
<Snippet
align="center"
py={4}
preview={<IconButtonPreview />}
preview={<IconButtonSnippet story="Variants" />}
code={`<Flex align="center">
<IconButton icon="cloud" variant="primary" />
<IconButton icon="cloud" variant="secondary" />
</Flex>`}
</Flex>`}
/>
<Tabs.Root>
@@ -62,7 +57,7 @@ Here's a view when buttons have different variants.
align="center"
py={4}
open
preview={<IconButtonPreview />}
preview={<IconButtonSnippet story="Variants" />}
code={iconButtonVariants}
/>
@@ -74,7 +69,7 @@ Here's a view when buttons have different sizes.
align="center"
py={4}
open
preview={<IconButtonSizes />}
preview={<IconButtonSnippet story="Sizes" />}
code={`<Flex align="center">
<IconButton icon="cloud" size="small" />
<IconButton icon="cloud" size="medium" />
@@ -89,7 +84,7 @@ Here's a view when buttons are disabled.
align="center"
py={4}
open
preview={<IconButtonDisabled />}
preview={<IconButtonSnippet story="Disabled" />}
code={`<IconButton icon="cloud" disabled />`}
/>
@@ -97,10 +92,6 @@ Here's a view when buttons are disabled.
Here's a view when buttons are responsive.
<Snippet
align="center"
py={4}
open
preview={<IconButtonResponsive />}
<CodeBlock
code={`<IconButton icon="cloud" variant={{ initial: 'primary', lg: 'secondary' }} />`}
/>
@@ -1,5 +1,5 @@
import { PropsTable } from '@/components/PropsTable';
import { IconPreview } from '@/snippets/icon';
import { IconSnippet } from '@/snippets/stories-snippets';
import { Snippet } from '@/components/Snippet';
import { Tabs } from '@/components/Tabs';
import { CodeBlock } from '@/components/CodeBlock';
@@ -12,7 +12,7 @@ Icons are used to represent an action or a state.
<Snippet
py={4}
align="center"
preview={<IconPreview />}
preview={<IconSnippet story="Default" />}
code={`<Icon name="heart" />`}
/>
@@ -2,7 +2,7 @@ import { PropsTable } from '@/components/PropsTable';
import { Snippet } from '@/components/Snippet';
import { Tabs } from '@/components/Tabs';
import { CodeBlock } from '@/components/CodeBlock';
import { InputPreview, InputSizes } from '@/snippets/input';
import { InputSnippet } from '@/snippets/stories-snippets';
import { BaseUI } from '@/components/HeadlessBanners/BaseUI';
import { inputPropDefs } from './props';
@@ -13,7 +13,7 @@ A input component tfor your forms.
<Snippet
align="center"
py={4}
preview={<InputPreview />}
preview={<InputSnippet story="Primary" />}
code={`<Input label="Name" placeholder="Enter your name" />`}
/>
@@ -55,7 +55,7 @@ Here's a simple input with a label and description.
align="center"
py={4}
open
preview={<InputSizes />}
preview={<InputSnippet story="Sizes" />}
code={`<Grid>
<Input size="sm" placeholder="Small" />
<Input size="md" placeholder="Medium" />
@@ -1,10 +1,5 @@
import { PropsTable } from '@/components/PropsTable';
import {
TextPreview,
TextAllVariants,
TextResponsive,
TextAllWeights,
} from '@/snippets/text';
import { TextSnippet } from '@/snippets/stories-snippets';
import { Snippet } from '@/components/Snippet';
import { Tabs } from '@/components/Tabs';
import { CodeBlock } from '@/components/CodeBlock';
@@ -16,7 +11,7 @@ The `Text` component is used to display content on your page.
<Snippet
py={4}
preview={<TextPreview />}
preview={<TextSnippet story="Default" />}
code={`<Text style={{ maxWidth: '600px' }}>
A man looks at a painting in a museum and says, “Brothers and sisters I
have none, but that man&apos;s father is my father&apos;s son.” Who is in
@@ -60,7 +55,7 @@ appearance of the text.
<Snippet
open
preview={<TextAllVariants />}
preview={<TextSnippet story="AllVariants" />}
code={`<Flex direction="column" gap="4">
<Text variant="subtitle" style={{ maxWidth: '600px' }}>
A man looks at a painting in a museum and says, “Brothers and sisters I
@@ -92,7 +87,7 @@ appearance of the text.
<Snippet
open
preview={<TextAllWeights />}
preview={<TextSnippet story="AllWeights" />}
code={`<Flex direction="column" gap="4">
<Text weight="regular" style={{ maxWidth: '600px' }}>
A man looks at a painting in a museum and says, “Brothers and sisters I
@@ -112,9 +107,7 @@ appearance of the text.
You can also use the `variant` prop to change the appearance of the text based
on the screen size.
<Snippet
open
preview={<TextResponsive />}
<CodeBlock
code={`<Text variant={{ initial: 'body', lg: 'subtitle' }}>
Responsive text
</Text>`}
@@ -1,7 +1,7 @@
import { CodeBlock } from '@/components/CodeBlock';
import * as Table from '@/components/Table';
import { Chip } from '@/components/Chip';
import { customTheme } from '@/snippets/_snippets';
import { customTheme } from '@/snippets/code-snippets';
# Theming
@@ -1,5 +1,4 @@
import { HeadingAllVariants } from '@/snippets/heading';
import { TextAllVariants } from '@/snippets/text';
import { HeadingSnippet, TextSnippet } from '@/snippets/stories-snippets';
import { Snippet } from '@/components/Snippet';
# Typography
@@ -20,7 +19,7 @@ component](?path=/docs/components-heading--docs).
<Snippet
py={2}
open
preview={<HeadingAllVariants />}
preview={<HeadingSnippet story="AllVariants" />}
code={`<Flex direction="column" gap="4">
<Heading variant="display">Display</Heading>
<Heading variant="title1">Title 1</Heading>
@@ -40,7 +39,7 @@ page.
<Snippet
open
preview={<TextAllVariants />}
preview={<TextSnippet story="AllVariants" />}
code={`<Flex direction="column" gap="4">
<Text variant="subtitle" style={{ maxWidth: '600px' }}>
A man looks at a painting in a museum and says, “Brothers and sisters I
@@ -5,10 +5,12 @@ import { Grid, Flex, Text } from '../../../../../packages/canon';
import { screenSizes } from '@/utils/data';
import { Frame } from '@/components/Frame';
import { usePlayground } from '@/utils/playground-context';
import { ButtonPlayground } from '@/snippets/button';
import { CheckboxPlayground } from '@/snippets/checkbox';
import { HeadingPlayground } from '@/snippets/heading';
import { TextPlayground } from '@/snippets/text';
import {
ButtonSnippet,
CheckboxSnippet,
HeadingSnippet,
TextSnippet,
} from '@/snippets/stories-snippets';
import styles from './styles.module.css';
@@ -55,16 +57,19 @@ const Content = () => {
return (
<Flex direction="column" gap="4">
{selectedComponents.find(c => c === 'button') && (
<Line content={<ButtonPlayground />} title="Button" />
<Line content={<ButtonSnippet story="Playground" />} title="Button" />
)}
{selectedComponents.find(c => c === 'checkbox') && (
<Line content={<CheckboxPlayground />} title="Checkbox" />
<Line
content={<CheckboxSnippet story="Playground" />}
title="Checkbox"
/>
)}
{selectedComponents.find(c => c === 'heading') && (
<Line content={<HeadingPlayground />} title="Heading" />
<Line content={<HeadingSnippet story="Playground" />} title="Heading" />
)}
{selectedComponents.find(c => c === 'text') && (
<Line content={<TextPlayground />} title="Text" />
<Line content={<TextSnippet story="Playground" />} title="Text" />
)}
{/* {selectedComponents.find(c => c === 'input') && (
<Line content={<InputPlayground />} title="Input" />
-20
View File
@@ -1,20 +0,0 @@
'use client';
import { Box } from '../../../packages/canon';
export const BoxPreview = () => {
return (
<Box
style={{
width: '64px',
height: '64px',
background: '#eaf2fd',
borderRadius: '4px',
border: '1px solid #2563eb',
color: '#2563eb',
backgroundImage:
'url("data:image/svg+xml,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22%232563eb%22%20fill-opacity%3D%220.3%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M5%200h1L0%206V5zM6%205v1H5z%22/%3E%3C/g%3E%3C/svg%3E")',
}}
/>
);
};
-102
View File
@@ -1,102 +0,0 @@
'use client';
import { Button, Flex, ButtonProps, Text } from '../../../packages/canon';
export const ButtonPreview = () => {
return (
<Flex align="center">
<Button iconStart="cloud" variant="primary">
Button
</Button>
<Button iconStart="cloud" variant="secondary">
Button
</Button>
</Flex>
);
};
export const ButtonSizes = () => {
return (
<Flex align="center">
<Button size="medium">Medium</Button>
<Button size="small">Small</Button>
</Flex>
);
};
export const ButtonWithIcons = () => {
return (
<Flex align="center">
<Button iconStart="cloud">Button</Button>
<Button iconEnd="chevron-right">Button</Button>
<Button iconStart="cloud" iconEnd="chevron-right">
Button
</Button>
</Flex>
);
};
export const ButtonFullWidth = () => {
return (
<Flex direction="column" style={{ width: '300px' }}>
<Button iconStart="cloud">Button</Button>
<Button iconEnd="chevron-right">Button</Button>
<Button iconStart="cloud" iconEnd="chevron-right">
Button
</Button>
</Flex>
);
};
export const ButtonDisabled = () => {
return <Button disabled>Button</Button>;
};
export const ButtonResponsive = () => {
return (
<Button variant={{ initial: 'primary', lg: 'secondary' }}>
Responsive Button
</Button>
);
};
export const ButtonPlayground = () => {
const variants: string[] = ['primary', 'secondary', 'tertiary'];
return (
<Flex direction="column">
{variants.map(variant => (
<Flex direction="column" key={variant}>
<Text>{variant}</Text>
{['small', 'medium'].map(size => (
<Flex align="center" key={size}>
<Button
iconStart="cloud"
variant={variant as ButtonProps['variant']}
size={size as ButtonProps['size']}
>
Button
</Button>
<Button
iconEnd="chevron-right"
variant={variant as ButtonProps['variant']}
size={size as ButtonProps['size']}
>
Button
</Button>
<Button
iconStart="cloud"
iconEnd="chevron-right"
style={{ width: '200px' }}
variant={variant as ButtonProps['variant']}
size={size as ButtonProps['size']}
>
Button
</Button>
</Flex>
))}
</Flex>
))}
</Flex>
);
};
-32
View File
@@ -1,32 +0,0 @@
'use client';
import { Checkbox, Flex, Text } from '../../../packages/canon';
export const CheckboxPreview = () => {
return <Checkbox label="Accept terms and conditions" />;
};
export const CheckboxAllVariants = () => {
return (
<Flex align="center">
<Checkbox />
<Checkbox checked />
<Checkbox label="Checkbox" />
<Checkbox label="Checkbox" checked />
</Flex>
);
};
export const CheckboxPlayground = () => {
return (
<Flex direction="column">
<Text>All variants</Text>
<Flex align="center">
<Checkbox />
<Checkbox checked />
<Checkbox label="Checkbox" />
<Checkbox label="Checkbox" checked />
</Flex>
</Flex>
);
};
-24
View File
@@ -1,24 +0,0 @@
'use client';
import { Box, Container } from '../../../packages/canon';
const DecorativeBox = () => (
<Box
style={{
height: '64px',
background: '#eaf2fd',
borderRadius: '4px',
border: '1px solid #2563eb',
backgroundImage:
'url("data:image/svg+xml,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22%232563eb%22%20fill-opacity%3D%220.3%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M5%200h1L0%206V5zM6%205v1H5z%22/%3E%3C/g%3E%3C/svg%3E")',
}}
/>
);
export const ContainerPreview = () => {
return (
<Container>
<DecorativeBox />
</Container>
);
};
-23
View File
@@ -1,23 +0,0 @@
'use client';
import { Input, Field } from '../../../packages/canon';
export const FieldPreview = () => {
return (
<div style={{ width: '300px' }}>
<Field.Root>
<Field.Label>Name</Field.Label>
<Input placeholder="Enter your name" />
<Field.Description>Visible on your profile</Field.Description>
</Field.Root>
</div>
);
};
export const InputPlayground = () => {
return (
<div style={{ maxWidth: '300px' }}>
<Input placeholder="Enter your name" />
</div>
);
};
-31
View File
@@ -1,31 +0,0 @@
'use client';
import { Flex } from '../../../packages/canon';
const DecorativeBox = () => {
return (
<div
style={{
background: '#eaf2fd',
borderRadius: '4px',
boxShadow: '0 0 0 1px #2563eb',
height: '32px',
minWidth: '100px',
backgroundImage:
'url("data:image/svg+xml,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22%232563eb%22%20fill-opacity%3D%220.3%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M5%200h1L0%206V5zM6%205v1H5z%22/%3E%3C/g%3E%3C/svg%3E")',
}}
/>
);
};
export const FlexPreview = () => {
return (
<div style={{ width: '320px' }}>
<Flex>
<DecorativeBox />
<DecorativeBox />
<DecorativeBox />
</Flex>
</div>
);
};
-26
View File
@@ -1,26 +0,0 @@
'use client';
import { Box, Grid } from '../../../packages/canon';
const FakeBox = () => (
<Box
style={{
background: '#eaf2fd',
borderRadius: '4px',
boxShadow: '0 0 0 1px #2563eb',
height: '64px',
backgroundImage:
'url("data:image/svg+xml,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22%232563eb%22%20fill-opacity%3D%220.3%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M5%200h1L0%206V5zM6%205v1H5z%22/%3E%3C/g%3E%3C/svg%3E")',
}}
/>
);
export const GridPreview = () => {
return (
<Grid>
<FakeBox />
<FakeBox />
<FakeBox />
</Grid>
);
};
-42
View File
@@ -1,42 +0,0 @@
'use client';
import { Heading, Flex, Text } from '../../../packages/canon';
export const HeadingPreview = () => {
return <Heading>Look mum, no hands!</Heading>;
};
export const HeadingAllVariants = () => {
return (
<Flex direction="column">
<Heading variant="display">Display</Heading>
<Heading variant="title1">Title 1</Heading>
<Heading variant="title2">Title 2</Heading>
<Heading variant="title3">Title 3</Heading>
<Heading variant="title4">Title 4</Heading>
</Flex>
);
};
export const HeadingResponsive = () => {
return (
<Flex direction="column">
<Heading variant={{ initial: 'title2', lg: 'title1' }}>
Responsive heading
</Heading>
</Flex>
);
};
export const HeadingPlayground = () => {
return (
<Flex direction="column">
<Text>All variants</Text>
<Heading variant="display">Display</Heading>
<Heading variant="title1">Title 1</Heading>
<Heading variant="title2">Title 2</Heading>
<Heading variant="title3">Title 3</Heading>
<Heading variant="title4">Title 4</Heading>
</Flex>
);
};
-57
View File
@@ -1,57 +0,0 @@
'use client';
import { IconButton, Flex, ButtonProps, Text } from '../../../packages/canon';
export const IconButtonPreview = () => {
return (
<Flex align="center">
<IconButton icon="cloud" variant="primary" />
<IconButton icon="cloud" variant="secondary" />
</Flex>
);
};
export const IconButtonSizes = () => {
return (
<Flex align="center">
<IconButton icon="cloud" size="medium" />
<IconButton icon="cloud" size="small" />
</Flex>
);
};
export const IconButtonDisabled = () => {
return <IconButton icon="cloud" disabled />;
};
export const IconButtonResponsive = () => {
return (
<IconButton
icon="cloud"
variant={{ initial: 'primary', lg: 'secondary' }}
/>
);
};
export const IconButtonPlayground = () => {
const variants: string[] = ['primary', 'secondary'];
return (
<Flex direction="column">
{variants.map(variant => (
<Flex direction="column" key={variant}>
<Text>{variant}</Text>
{['small', 'medium'].map(size => (
<Flex align="center" key={size}>
<IconButton
icon="cloud"
variant={variant as ButtonProps['variant']}
size={size as ButtonProps['size']}
/>
</Flex>
))}
</Flex>
))}
</Flex>
);
};
-7
View File
@@ -1,7 +0,0 @@
'use client';
import { Icon } from '../../../packages/canon';
export const IconPreview = () => {
return <Icon name="heart" />;
};
-47
View File
@@ -1,47 +0,0 @@
'use client';
import { Box, Flex } from '../../../packages/canon';
const fakeBlockList = [
{ width: 45, height: 60 },
{ width: 150, height: 75 },
{ width: 80, height: 50 },
{ width: 120, height: 70 },
{ width: 95, height: 65 },
{ width: 80, height: 32 },
{ width: 130, height: 60 },
{ width: 100, height: 80 },
{ width: 140, height: 45 },
{ width: 85, height: 70 },
{ width: 125, height: 50 },
];
const FakeBox = ({
width = 120,
height = 80,
}: {
width?: number;
height?: number;
}) => (
<Box
style={{
background: '#eaf2fd',
borderRadius: '4px',
boxShadow: '0 0 0 1px #2563eb',
width,
height,
backgroundImage:
'url("data:image/svg+xml,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22%232563eb%22%20fill-opacity%3D%220.3%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M5%200h1L0%206V5zM6%205v1H5z%22/%3E%3C/g%3E%3C/svg%3E")',
}}
/>
);
export const InlinePreview = () => {
return (
<Flex>
{fakeBlockList.map((block, index) => (
<FakeBox key={index} width={block.width} height={block.height} />
))}
</Flex>
);
};
-36
View File
@@ -1,36 +0,0 @@
'use client';
import { Input, Grid } from '../../../packages/canon';
export const InputPreview = () => {
return (
<div style={{ width: '300px' }}>
<Input placeholder="Enter your name" />
</div>
);
};
export const InputSizes = () => {
return (
<Grid style={{ width: '300px' }}>
<Input size="sm" placeholder="Small" />
<Input size="md" placeholder="Medium" />
</Grid>
);
};
export const InputError = () => {
return (
<div style={{ width: '300px' }}>
<Input required />
</div>
);
};
export const InputPlayground = () => {
return (
<div style={{ maxWidth: '300px' }}>
<Input placeholder="Enter your name" />
</div>
);
};
@@ -0,0 +1,127 @@
'use client';
import { composeStories } from '@storybook/react';
import * as BoxStories from '../../../packages/canon/src/components/Box/Box.stories';
import * as ButtonStories from '../../../packages/canon/src/components/Button/Button.stories';
import * as CheckboxStories from '../../../packages/canon/src/components/Checkbox/Checkbox.stories';
import * as ContainerStories from '../../../packages/canon/src/components/Container/Container.stories';
import * as FieldStories from '../../../packages/canon/src/components/Field/Field.stories';
import * as GridStories from '../../../packages/canon/src/components/Grid/Grid.stories';
import * as HeadingStories from '../../../packages/canon/src/components/Heading/Heading.stories';
import * as IconButtonStories from '../../../packages/canon/src/components/IconButton/IconButton.stories';
import * as IconStories from '../../../packages/canon/src/components/Icon/Icon.stories';
import * as InputStories from '../../../packages/canon/src/components/Input/Input.stories';
import * as TextStories from '../../../packages/canon/src/components/Text/Text.stories';
import * as FlexStories from '../../../packages/canon/src/components/Flex/Flex.stories';
export const BoxSnippet = ({ story }: { story: keyof typeof BoxStories }) => {
const stories = composeStories(BoxStories);
const StoryComponent = stories[story as keyof typeof stories];
return StoryComponent ? <StoryComponent /> : null;
};
export const ButtonSnippet = ({
story,
}: {
story: keyof typeof ButtonStories;
}) => {
const stories = composeStories(ButtonStories);
const StoryComponent = stories[story as keyof typeof stories];
return StoryComponent ? <StoryComponent /> : null;
};
export const CheckboxSnippet = ({
story,
}: {
story: keyof typeof CheckboxStories;
}) => {
const stories = composeStories(CheckboxStories);
const StoryComponent = stories[story as keyof typeof stories];
return StoryComponent ? <StoryComponent /> : null;
};
export const ContainerSnippet = ({
story,
}: {
story: keyof typeof ContainerStories;
}) => {
const stories = composeStories(ContainerStories);
const StoryComponent = stories[story as keyof typeof stories];
return StoryComponent ? <StoryComponent /> : null;
};
export const FlexSnippet = ({ story }: { story: keyof typeof FlexStories }) => {
const stories = composeStories(FlexStories);
const StoryComponent = stories[story as keyof typeof stories];
return StoryComponent ? <StoryComponent /> : null;
};
export const FieldSnippet = ({
story,
}: {
story: keyof typeof FieldStories;
}) => {
const stories = composeStories(FieldStories);
const StoryComponent = stories[story as keyof typeof stories];
return StoryComponent ? <StoryComponent /> : null;
};
export const GridSnippet = ({ story }: { story: keyof typeof GridStories }) => {
const stories = composeStories(GridStories);
const StoryComponent = stories[story as keyof typeof stories];
return StoryComponent ? <StoryComponent /> : null;
};
export const HeadingSnippet = ({
story,
}: {
story: keyof typeof HeadingStories;
}) => {
const stories = composeStories(HeadingStories);
const StoryComponent = stories[story as keyof typeof stories];
return StoryComponent ? <StoryComponent /> : null;
};
export const IconButtonSnippet = ({
story,
}: {
story: keyof typeof IconButtonStories;
}) => {
const stories = composeStories(IconButtonStories);
const StoryComponent = stories[story as keyof typeof stories];
return StoryComponent ? <StoryComponent /> : null;
};
export const IconSnippet = ({ story }: { story: keyof typeof IconStories }) => {
const stories = composeStories(IconStories);
const StoryComponent = stories[story as keyof typeof stories];
return StoryComponent ? <StoryComponent /> : null;
};
export const InputSnippet = ({
story,
}: {
story: keyof typeof InputStories;
}) => {
const stories = composeStories(InputStories);
const StoryComponent = stories[story as keyof typeof stories];
return StoryComponent ? <StoryComponent /> : null;
};
export const TextSnippet = ({ story }: { story: keyof typeof TextStories }) => {
const stories = composeStories(TextStories);
const StoryComponent = stories[story as keyof typeof stories];
return StoryComponent ? <StoryComponent /> : null;
};
-94
View File
@@ -1,94 +0,0 @@
'use client';
import { Flex, Text } from '../../../packages/canon';
export const TextPreview = () => {
return (
<Text style={{ maxWidth: '600px' }}>
A man looks at a painting in a museum and says, Brothers and sisters I
have none, but that man&apos;s father is my father&apos;s son. Who is in
the painting?
</Text>
);
};
export const TextAllVariants = () => {
return (
<Flex direction="column">
<Text variant="subtitle" style={{ maxWidth: '600px' }}>
A man looks at a painting in a museum and says, Brothers and sisters I
have none, but that man&apos;s father is my father&apos;s son. Who is
in the painting?
</Text>
<Text variant="body" style={{ maxWidth: '600px' }}>
A man looks at a painting in a museum and says, Brothers and sisters I
have none, but that man&apos;s father is my father&apos;s son. Who is
in the painting?
</Text>
<Text variant="caption" style={{ maxWidth: '600px' }}>
A man looks at a painting in a museum and says, Brothers and sisters I
have none, but that man&apos;s father is my father&apos;s son. Who is
in the painting?
</Text>
<Text variant="label" style={{ maxWidth: '600px' }}>
A man looks at a painting in a museum and says, Brothers and sisters I
have none, but that man&apos;s father is my father&apos;s son. Who is
in the painting?
</Text>
</Flex>
);
};
export const TextAllWeights = () => {
return (
<Flex direction="column">
<Text weight="regular" style={{ maxWidth: '600px' }}>
A man looks at a painting in a museum and says, Brothers and sisters I
have none, but that man&apos;s father is my father&apos;s son. Who is
in the painting?
</Text>
<Text weight="bold" style={{ maxWidth: '600px' }}>
A man looks at a painting in a museum and says, Brothers and sisters I
have none, but that man&apos;s father is my father&apos;s son. Who is
in the painting?
</Text>
</Flex>
);
};
export const TextResponsive = () => {
return (
<Text variant={{ initial: 'body', lg: 'subtitle' }}>Responsive text</Text>
);
};
export const TextPlayground = () => {
return (
<Flex direction="column">
<Text>Subtitle</Text>
<Text variant="subtitle" style={{ maxWidth: '600px' }}>
A man looks at a painting in a museum and says, Brothers and sisters I
have none, but that man&apos;s father is my father&apos;s son. Who is
in the painting?
</Text>
<Text>Body</Text>
<Text variant="body" style={{ maxWidth: '600px' }}>
A man looks at a painting in a museum and says, Brothers and sisters I
have none, but that man&apos;s father is my father&apos;s son. Who is
in the painting?
</Text>
<Text>Caption</Text>
<Text variant="caption" style={{ maxWidth: '600px' }}>
A man looks at a painting in a museum and says, Brothers and sisters I
have none, but that man&apos;s father is my father&apos;s son. Who is
in the painting?
</Text>
<Text>Label</Text>
<Text variant="label" style={{ maxWidth: '600px' }}>
A man looks at a painting in a museum and says, Brothers and sisters I
have none, but that man&apos;s father is my father&apos;s son. Who is
in the painting?
</Text>
</Flex>
);
};
+129 -128
View File
@@ -6,11 +6,11 @@ __metadata:
cacheKey: 8
"@babel/runtime@npm:^7.18.6":
version: 7.26.0
resolution: "@babel/runtime@npm:7.26.0"
version: 7.26.10
resolution: "@babel/runtime@npm:7.26.10"
dependencies:
regenerator-runtime: ^0.14.0
checksum: c8e2c0504ab271b3467a261a8f119bf2603eb857a0d71e37791f4e3fae00f681365073cc79f141ddaa90c6077c60ba56448004ad5429d07ac73532be9f7cf28a
checksum: 22d2e0abb86e90de489ab16bb578db6fe2b63a88696db431198b24963749820c723f1982298cdbbea187f7b2b80fb4d98a514faf114ddb2fdc14a4b96277b955
languageName: node
linkType: hard
@@ -501,10 +501,10 @@ __metadata:
languageName: node
linkType: hard
"@next/env@npm:14.2.23":
version: 14.2.23
resolution: "@next/env@npm:14.2.23"
checksum: dad74ff7de68992a0753f728a5b926ed6eb0af8a62deece6bbb32ba254b1f7d870e256b61db8d4c40fa811695cfc5e69ba964339f3cb8b40237cf9c28dfe747f
"@next/env@npm:14.2.25":
version: 14.2.25
resolution: "@next/env@npm:14.2.25"
checksum: c937d4e8b62c7ae9c74bd607888e791b78445e93d523d22d0838e816c3fbeb7b1b62766d110ef235229e4c4ca8587f493e6ec761eb0a2c774dabaee2b58f581b
languageName: node
linkType: hard
@@ -534,65 +534,65 @@ __metadata:
languageName: node
linkType: hard
"@next/swc-darwin-arm64@npm:14.2.23":
version: 14.2.23
resolution: "@next/swc-darwin-arm64@npm:14.2.23"
"@next/swc-darwin-arm64@npm:14.2.25":
version: 14.2.25
resolution: "@next/swc-darwin-arm64@npm:14.2.25"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@next/swc-darwin-x64@npm:14.2.23":
version: 14.2.23
resolution: "@next/swc-darwin-x64@npm:14.2.23"
"@next/swc-darwin-x64@npm:14.2.25":
version: 14.2.25
resolution: "@next/swc-darwin-x64@npm:14.2.25"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@next/swc-linux-arm64-gnu@npm:14.2.23":
version: 14.2.23
resolution: "@next/swc-linux-arm64-gnu@npm:14.2.23"
"@next/swc-linux-arm64-gnu@npm:14.2.25":
version: 14.2.25
resolution: "@next/swc-linux-arm64-gnu@npm:14.2.25"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@next/swc-linux-arm64-musl@npm:14.2.23":
version: 14.2.23
resolution: "@next/swc-linux-arm64-musl@npm:14.2.23"
"@next/swc-linux-arm64-musl@npm:14.2.25":
version: 14.2.25
resolution: "@next/swc-linux-arm64-musl@npm:14.2.25"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"@next/swc-linux-x64-gnu@npm:14.2.23":
version: 14.2.23
resolution: "@next/swc-linux-x64-gnu@npm:14.2.23"
"@next/swc-linux-x64-gnu@npm:14.2.25":
version: 14.2.25
resolution: "@next/swc-linux-x64-gnu@npm:14.2.25"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@next/swc-linux-x64-musl@npm:14.2.23":
version: 14.2.23
resolution: "@next/swc-linux-x64-musl@npm:14.2.23"
"@next/swc-linux-x64-musl@npm:14.2.25":
version: 14.2.25
resolution: "@next/swc-linux-x64-musl@npm:14.2.25"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@next/swc-win32-arm64-msvc@npm:14.2.23":
version: 14.2.23
resolution: "@next/swc-win32-arm64-msvc@npm:14.2.23"
"@next/swc-win32-arm64-msvc@npm:14.2.25":
version: 14.2.25
resolution: "@next/swc-win32-arm64-msvc@npm:14.2.25"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@next/swc-win32-ia32-msvc@npm:14.2.23":
version: 14.2.23
resolution: "@next/swc-win32-ia32-msvc@npm:14.2.23"
"@next/swc-win32-ia32-msvc@npm:14.2.25":
version: 14.2.25
resolution: "@next/swc-win32-ia32-msvc@npm:14.2.25"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
"@next/swc-win32-x64-msvc@npm:14.2.23":
version: 14.2.23
resolution: "@next/swc-win32-x64-msvc@npm:14.2.23"
"@next/swc-win32-x64-msvc@npm:14.2.25":
version: 14.2.25
resolution: "@next/swc-win32-x64-msvc@npm:14.2.25"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
@@ -722,20 +722,20 @@ __metadata:
languageName: node
linkType: hard
"@storybook/components@npm:8.6.7":
version: 8.6.7
resolution: "@storybook/components@npm:8.6.7"
"@storybook/components@npm:8.6.8":
version: 8.6.8
resolution: "@storybook/components@npm:8.6.8"
peerDependencies:
storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
checksum: cb20f8baa76deef1af1739d6c1b1a9f57eb22d158fa046d9919a91840e7a00f1b48e96b7ffe7994365b60808f864c963a3476ee98b4c8b63968a3a877068da3a
checksum: fb69c6d7804f91fffd3fc7d42ba5b144c7b808af6e6b764c14cdef11263897e551e5cc8a0fa379b9ed73f5c0438ed32d355c7ed63801046e1cb078c479d4cecf
languageName: node
linkType: hard
"@storybook/core@npm:8.6.7":
version: 8.6.7
resolution: "@storybook/core@npm:8.6.7"
"@storybook/core@npm:8.6.8":
version: 8.6.8
resolution: "@storybook/core@npm:8.6.8"
dependencies:
"@storybook/theming": 8.6.7
"@storybook/theming": 8.6.8
better-opn: ^3.0.2
browser-assert: ^1.2.1
esbuild: ^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0
@@ -751,7 +751,7 @@ __metadata:
peerDependenciesMeta:
prettier:
optional: true
checksum: b150b7472766fccbbc1dec74cba3c16e009a9f24c13f01198923f553d12e2a2070ee2a35f5514f9af350b79e34577946ea65a4a495fd1fa18a27655f897c013a
checksum: d67dea27c021b51f17a0d5807b72a29ea174bb8c945fb41092fbf3698002810da0a510aa7e0e23e1682634362f9b52590ba1a09ef6dd40a2ad5653988b0b0e14
languageName: node
linkType: hard
@@ -762,66 +762,66 @@ __metadata:
languageName: node
linkType: hard
"@storybook/manager-api@npm:8.6.7":
version: 8.6.7
resolution: "@storybook/manager-api@npm:8.6.7"
"@storybook/manager-api@npm:8.6.8":
version: 8.6.8
resolution: "@storybook/manager-api@npm:8.6.8"
peerDependencies:
storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
checksum: 6bb0860c3795945189832613da5866e5159b2adb376478a2b596c113928c64f5962efc325f927a6bcb7a48d7257f42cf6489b0c44397876129626ac68c44aa28
checksum: ee575781572898fc2fa734750ccb4bad09fc021bd0878ca9a05d9668cb336610d53e8110f4ff3c2c180573a64e9caba8f50f59d0bd3f0398a5c98e2eafdd91ae
languageName: node
linkType: hard
"@storybook/preview-api@npm:8.6.7":
version: 8.6.7
resolution: "@storybook/preview-api@npm:8.6.7"
"@storybook/preview-api@npm:8.6.8":
version: 8.6.8
resolution: "@storybook/preview-api@npm:8.6.8"
peerDependencies:
storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
checksum: 0d24d62444b7b153bde89d3949ab6539a163e15bc80c5bfcc73b7d49bbb34fb02eb74a99434793b8a6446aeec491e07f006c0f4e404f98486c6d1d614d01defa
checksum: ac923a342d09c9e51f67734acaea19a41dc87cfc6cb22aea262591396d41cd4b69896417b618c55f17a9d64660b659813475c30d338c9bb6aa45391cfe8328f0
languageName: node
linkType: hard
"@storybook/react-dom-shim@npm:8.6.7":
version: 8.6.7
resolution: "@storybook/react-dom-shim@npm:8.6.7"
"@storybook/react-dom-shim@npm:8.6.8":
version: 8.6.8
resolution: "@storybook/react-dom-shim@npm:8.6.8"
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
storybook: ^8.6.7
checksum: 51c20259ac4485d9a996266341a4d9898c949049e2a9af9a08bec58c2ace3a40be1a534005c52fc2db2c81bb010dbd36030bb70581b36c05cf4b34d58f140d3a
storybook: ^8.6.8
checksum: d48ba28fefe0bbe0bde02de6a99629d84ba9436fb539ffc6d779173f7b8f6ec466e26018e943d95fa079d73ace2d96d5911def0221754262782e8a5e8b20882d
languageName: node
linkType: hard
"@storybook/react@npm:^8.4.7":
version: 8.6.7
resolution: "@storybook/react@npm:8.6.7"
"@storybook/react@npm:^8.6.8":
version: 8.6.8
resolution: "@storybook/react@npm:8.6.8"
dependencies:
"@storybook/components": 8.6.7
"@storybook/components": 8.6.8
"@storybook/global": ^5.0.0
"@storybook/manager-api": 8.6.7
"@storybook/preview-api": 8.6.7
"@storybook/react-dom-shim": 8.6.7
"@storybook/theming": 8.6.7
"@storybook/manager-api": 8.6.8
"@storybook/preview-api": 8.6.8
"@storybook/react-dom-shim": 8.6.8
"@storybook/theming": 8.6.8
peerDependencies:
"@storybook/test": 8.6.7
"@storybook/test": 8.6.8
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
storybook: ^8.6.7
storybook: ^8.6.8
typescript: ">= 4.2.x"
peerDependenciesMeta:
"@storybook/test":
optional: true
typescript:
optional: true
checksum: c98438ddfd764300e1a805623fab976f9ef94a2d939984d6caf98ce92ed29d8a7307389b98e2df2d1302b302dc549c7c95050464731d9c588347cd154c360834
checksum: ebbfb2bed68d4ca8c8777769e5b752b1becf9cc1c3fd6f051df9a8eb012d209526b9e188812f3bf8ecf337a331c5049afa2236d2b073fbcafafd35e79cc3ed78
languageName: node
linkType: hard
"@storybook/theming@npm:8.6.7":
version: 8.6.7
resolution: "@storybook/theming@npm:8.6.7"
"@storybook/theming@npm:8.6.8":
version: 8.6.8
resolution: "@storybook/theming@npm:8.6.8"
peerDependencies:
storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
checksum: 747a2377df65d5f0962dc8606d06247ad89fb7ecabab0bd9611055d599b5bd0fa15769e4c76e948ae34ae232ba756bf6795ccb3467b1adf35ff961db7350f4de
checksum: 1be0dea23178af562133f1047165e170f7e90bec4c3cedbdcb59df22685f314273a06a4677835ab84e6dbc682b803590adad6963217971c8136b076ce69800aa
languageName: node
linkType: hard
@@ -1436,13 +1436,13 @@ __metadata:
languageName: node
linkType: hard
"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1":
version: 1.0.1
resolution: "call-bind-apply-helpers@npm:1.0.1"
"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2":
version: 1.0.2
resolution: "call-bind-apply-helpers@npm:1.0.2"
dependencies:
es-errors: ^1.3.0
function-bind: ^1.1.2
checksum: 3c55343261bb387c58a4762d15ad9d42053659a62681ec5eb50690c6b52a4a666302a01d557133ce6533e8bd04530ee3b209f23dd06c9577a1925556f8fcccdf
checksum: b2863d74fcf2a6948221f65d95b91b4b2d90cfe8927650b506141e669f7d5de65cea191bf788838bc40d13846b7886c5bc5c84ab96c3adbcf88ad69a72fcdc6b
languageName: node
linkType: hard
@@ -1458,13 +1458,13 @@ __metadata:
languageName: node
linkType: hard
"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3":
version: 1.0.3
resolution: "call-bound@npm:1.0.3"
"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4":
version: 1.0.4
resolution: "call-bound@npm:1.0.4"
dependencies:
call-bind-apply-helpers: ^1.0.1
get-intrinsic: ^1.2.6
checksum: a93bbe0f2d0a2d6c144a4349ccd0593d5d0d5d9309b69101710644af8964286420062f2cc3114dca120b9bc8cc07507952d4b1b3ea7672e0d7f6f1675efedb32
call-bind-apply-helpers: ^1.0.2
get-intrinsic: ^1.3.0
checksum: 2f6399488d1c272f56306ca60ff696575e2b7f31daf23bc11574798c84d9f2759dceb0cb1f471a85b77f28962a7ac6411f51d283ea2e45319009a19b6ccab3b2
languageName: node
linkType: hard
@@ -1491,7 +1491,7 @@ __metadata:
"@mdx-js/loader": ^3.1.0
"@mdx-js/react": ^3.1.0
"@next/mdx": ^15.1.4
"@storybook/react": ^8.4.7
"@storybook/react": ^8.6.8
"@types/mdx": ^2.0.13
"@types/node": ^20
"@types/react": ^18.0.0
@@ -1502,12 +1502,12 @@ __metadata:
eslint-config-next: 14.2.23
lightningcss: ^1.28.2
motion: ^12.4.1
next: 14.2.23
next: 14.2.25
react: ^18.0.2
react-dom: ^18.0.2
react-frame-component: ^5.2.7
shiki: ^1.26.1
storybook: ^8.4.7
storybook: ^8.6.8
typescript: ^5
languageName: unknown
linkType: soft
@@ -1934,12 +1934,12 @@ __metadata:
languageName: node
linkType: hard
"es-object-atoms@npm:^1.0.0":
version: 1.0.0
resolution: "es-object-atoms@npm:1.0.0"
"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1":
version: 1.1.1
resolution: "es-object-atoms@npm:1.1.1"
dependencies:
es-errors: ^1.3.0
checksum: 26f0ff78ab93b63394e8403c353842b2272836968de4eafe97656adfb8a7c84b9099bf0fe96ed58f4a4cddc860f6e34c77f91649a58a5daa4a9c40b902744e3c
checksum: 214d3767287b12f36d3d7267ef342bbbe1e89f899cfd67040309fc65032372a8e60201410a99a1645f2f90c1912c8c49c8668066f6bdd954bcd614dda2e3da97
languageName: node
linkType: hard
@@ -2555,12 +2555,12 @@ __metadata:
languageName: node
linkType: hard
"for-each@npm:^0.3.3":
version: 0.3.3
resolution: "for-each@npm:0.3.3"
"for-each@npm:^0.3.3, for-each@npm:^0.3.5":
version: 0.3.5
resolution: "for-each@npm:0.3.5"
dependencies:
is-callable: ^1.1.3
checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28
is-callable: ^1.2.7
checksum: 3c986d7e11f4381237cc98baa0a2f87eabe74719eee65ed7bed275163082b940ede19268c61d04c6260e0215983b12f8d885e3c8f9aa8c2113bf07c37051745c
languageName: node
linkType: hard
@@ -2631,21 +2631,21 @@ __metadata:
languageName: node
linkType: hard
"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7":
version: 1.2.7
resolution: "get-intrinsic@npm:1.2.7"
"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0":
version: 1.3.0
resolution: "get-intrinsic@npm:1.3.0"
dependencies:
call-bind-apply-helpers: ^1.0.1
call-bind-apply-helpers: ^1.0.2
es-define-property: ^1.0.1
es-errors: ^1.3.0
es-object-atoms: ^1.0.0
es-object-atoms: ^1.1.1
function-bind: ^1.1.2
get-proto: ^1.0.0
get-proto: ^1.0.1
gopd: ^1.2.0
has-symbols: ^1.1.0
hasown: ^2.0.2
math-intrinsics: ^1.1.0
checksum: a1597b3b432074f805b6a0ba1182130dd6517c0ea0c4eecc4b8834c803913e1ea62dfc412865be795b3dacb1555a21775b70cf9af7a18b1454ff3414e5442d4a
checksum: 301008e4482bb9a9cb49e132b88fee093bff373b4e6def8ba219b1e96b60158a6084f273ef5cafe832e42cd93462f4accb46a618d35fe59a2b507f2388c5b79d
languageName: node
linkType: hard
@@ -3042,7 +3042,7 @@ __metadata:
languageName: node
linkType: hard
"is-callable@npm:^1.1.3, is-callable@npm:^1.2.7":
"is-callable@npm:^1.2.7":
version: 1.2.7
resolution: "is-callable@npm:1.2.7"
checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac
@@ -4176,20 +4176,20 @@ __metadata:
languageName: node
linkType: hard
"next@npm:14.2.23":
version: 14.2.23
resolution: "next@npm:14.2.23"
"next@npm:14.2.25":
version: 14.2.25
resolution: "next@npm:14.2.25"
dependencies:
"@next/env": 14.2.23
"@next/swc-darwin-arm64": 14.2.23
"@next/swc-darwin-x64": 14.2.23
"@next/swc-linux-arm64-gnu": 14.2.23
"@next/swc-linux-arm64-musl": 14.2.23
"@next/swc-linux-x64-gnu": 14.2.23
"@next/swc-linux-x64-musl": 14.2.23
"@next/swc-win32-arm64-msvc": 14.2.23
"@next/swc-win32-ia32-msvc": 14.2.23
"@next/swc-win32-x64-msvc": 14.2.23
"@next/env": 14.2.25
"@next/swc-darwin-arm64": 14.2.25
"@next/swc-darwin-x64": 14.2.25
"@next/swc-linux-arm64-gnu": 14.2.25
"@next/swc-linux-arm64-musl": 14.2.25
"@next/swc-linux-x64-gnu": 14.2.25
"@next/swc-linux-x64-musl": 14.2.25
"@next/swc-win32-arm64-msvc": 14.2.25
"@next/swc-win32-ia32-msvc": 14.2.25
"@next/swc-win32-x64-msvc": 14.2.25
"@swc/helpers": 0.5.5
busboy: 1.6.0
caniuse-lite: ^1.0.30001579
@@ -4230,7 +4230,7 @@ __metadata:
optional: true
bin:
next: dist/bin/next
checksum: 4f9f744439fb860ba7c64ae1c61bc361bdd36e41d56760c52eabb404f4143c854b78ba9a79b7aefc322d93edbbd66d966cbdaf86772a88a8bf2e6b289987f14f
checksum: ca47d0f1d41351adaf75a37c8e8ce39dd76ebc62b054266ef84b5fc1ea41241ad5f16ab7a1ca47b6613b2c3e4c6f48b179f8cd3b0f087912ec7164c4e72981f0
languageName: node
linkType: hard
@@ -5051,11 +5051,11 @@ __metadata:
languageName: node
linkType: hard
"storybook@npm:^8.4.7":
version: 8.6.7
resolution: "storybook@npm:8.6.7"
"storybook@npm:^8.6.8":
version: 8.6.8
resolution: "storybook@npm:8.6.8"
dependencies:
"@storybook/core": 8.6.7
"@storybook/core": 8.6.8
peerDependencies:
prettier: ^2 || ^3
peerDependenciesMeta:
@@ -5065,7 +5065,7 @@ __metadata:
getstorybook: ./bin/index.cjs
sb: ./bin/index.cjs
storybook: ./bin/index.cjs
checksum: fe21ce4d9cd17069a5b409ed518603f97ec6ec421b7f41cff3e43b409820fcbc2c8dbcb3aed99dd7d0a99a0c6138c7576ddf72f78186b6f86085d503b3c8b32f
checksum: 93b92e53c00ff29b4864932c26c52dd4a45e76b3d46811a2bcdc0271ef37c96e2f8d1833982569ab6a6348d6e84d8348aecf74ee72164744459de4c78d0f6759
languageName: node
linkType: hard
@@ -5616,16 +5616,17 @@ __metadata:
linkType: hard
"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.18, which-typed-array@npm:^1.1.2":
version: 1.1.18
resolution: "which-typed-array@npm:1.1.18"
version: 1.1.19
resolution: "which-typed-array@npm:1.1.19"
dependencies:
available-typed-arrays: ^1.0.7
call-bind: ^1.0.8
call-bound: ^1.0.3
for-each: ^0.3.3
call-bound: ^1.0.4
for-each: ^0.3.5
get-proto: ^1.0.1
gopd: ^1.2.0
has-tostringtag: ^1.0.2
checksum: d2feea7f51af66b3a240397aa41c796585033e1069f18e5b6d4cd3878538a1e7780596fd3ea9bf347c43d9e98e13be09b37d9ea3887cef29b11bc291fd47bb52
checksum: 162d2a07f68ea323f88ed9419861487ce5d02cb876f2cf9dd1e428d04a63133f93a54f89308f337b27cabd312ee3d027cae4a79002b2f0a85b79b9ef4c190670
languageName: node
linkType: hard
@@ -5677,8 +5678,8 @@ __metadata:
linkType: hard
"ws@npm:^8.2.3":
version: 8.18.0
resolution: "ws@npm:8.18.0"
version: 8.18.1
resolution: "ws@npm:8.18.1"
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: ">=5.0.2"
@@ -5687,7 +5688,7 @@ __metadata:
optional: true
utf-8-validate:
optional: true
checksum: 91d4d35bc99ff6df483bdf029b9ea4bfd7af1f16fc91231a96777a63d263e1eabf486e13a2353970efc534f9faa43bdbf9ee76525af22f4752cbc5ebda333975
checksum: 4658357185d891bc45cc2d42a84f9e192d047e8476fb5cba25b604f7d75ca87ca0dd54cd0b2cc49aeee57c79045a741cb7d0b14501953ac60c790cd105c42f23
languageName: node
linkType: hard
@@ -1157,13 +1157,21 @@ export class MyIncrementalEntityProvider
The last step is to implement the actual `next` method that will accept the cursor, call the API, process the result and return the result.
```ts
import {
ANNOTATION_LOCATION,
ANNOTATION_ORIGIN_LOCATION,
} from '@backstage/catalog-model';
import { IncrementalEntityProvider } from '@backstage/plugin-catalog-backend-module-incremental-ingestion';
export class MyIncrementalEntityProvider
implements IncrementalEntityProvider<Cursor, Context>
{
private readonly token: string;
private readonly mySource: string;
constructor(token: string) {
constructor(token: string, mySource: string) {
this.token = token;
this.mySource = mySource;
}
getProviderName() {
@@ -1181,6 +1189,7 @@ export class MyIncrementalEntityProvider
cursor: Cursor = { page: 1 },
): Promise<EntityIteratorResult<Cursor>> {
const { apiClient } = context;
const location = `${this.getProviderName()}:${this.mySource}`;
// call your API with the current cursor
const data = await apiClient.getServices(cursor);
@@ -1200,8 +1209,8 @@ export class MyIncrementalEntityProvider
name: item.name,
annotations: {
// You need to define these, otherwise they'll fail validation
[ANNOTATION_LOCATION]: this.getProviderName(),
[ANNOTATION_ORIGIN_LOCATION]: this.getProviderName(),
[ANNOTATION_LOCATION]: location,
[ANNOTATION_ORIGIN_LOCATION]: location,
},
},
spec: {
+18 -5
View File
@@ -26,17 +26,30 @@ dependency to `@backstage/plugin-catalog-backend-module-bitbucket-server` to you
yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-bitbucket-server
```
And update your backend by adding the following line:
### Installation with New Backend System
```ts title="packages/backend/src/index.ts"
backend.add(import('@backstage/plugin-catalog-backend'));
/* highlight-add-start */
```ts
// optional if you want HTTP endpojnts to receive external events
// backend.add(import('@backstage/plugin-events-backend'));
// optional if you want to use AWS SQS instead of HTTP endpoints to receive external events
// backend.add(import('@backstage/plugin-events-backend-module-aws-sqs'));
backend.add(import('@backstage/plugin-events-backend-module-bitbucket-server'));
backend.add(
import('@backstage/plugin-catalog-backend-module-bitbucket-server'),
);
/* highlight-add-end */
```
You need to decide how you want to receive events from external sources like
- [via HTTP endpoint](https://github.com/backstage/backstage/tree/master/plugins/events-backend/README.md)
- [via an AWS SQS queue](https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-aws-sqs/README.md)
Further documentation:
- <https://github.com/backstage/backstage/tree/master/plugins/events-backend/README.md>
- <https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-aws-sqs/README.md>
- <https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-bitbucket-server/README.md>
## Configuration
To use the entity provider, you'll need a [Bitbucket Server integration set up](locations.md).
+1 -1
View File
@@ -152,7 +152,7 @@ If you do so, `default` will be used as provider ID.
Wildcards cannot be used if the `validateLocationsExist` option is set to `true`.
- **`filters`** _(optional)_:
- **`branch`** _(optional)_:
String used to filter results based on the branch name.
String used to filter results based on the branch name. Branch name cannot have any slash (`/`) characters.
Defaults to the default Branch of the repository.
- **`repository`** _(optional)_:
Regular expression used to filter results based on the repository name.
+8 -7
View File
@@ -86,13 +86,14 @@ catalog:
These config blocks have a lot of options in them, so we will describe each "root" key within the block separately.
> NOTE:
>
> If you want to import users and groups from different LDAP servers, you can define multiple providers with different names.
> If they should come from the same server, you can define multiple users and groups blocks within the same provider using an array of users / groups.
> Entries coming from the same block will be able to detect group memberships based on the `memberOf` attribute.
>
> If you want only to import users or groups, you can omit the groups or users block.
:::note Note
If you want to import users and groups from different LDAP servers, you can define multiple providers with different names.
If they should come from the same server, you can define multiple users and groups blocks within the same provider using an array of users / groups.
Entries coming from the same block will be able to detect group memberships based on the `memberOf` attribute.
If you want only to import users or groups, you can omit the groups or users block.
:::
### target
+66 -1
View File
@@ -104,4 +104,69 @@ Apart from STMP, the email processor also supports the following transmissions:
- sendmail
- stream (only for debugging purposes)
See more information at https://github.com/backstage/backstage/blob/master/plugins/notifications-backend-module-email/README.md
See more information at <https://github.com/backstage/backstage/blob/master/plugins/notifications-backend-module-email/README.md>
### Slack Processor
Slack processor is used to send notifications to users and channels in Slack.
### Slack Configuration
To use this you'll need to create a Slack App or use an existing one. It should have at least the following scopes:
`chat:write`, `users:read`, `im:write` (for direct message support).
Additionally you may include scopes `chat:write.public` in order to send messages to public channels your app is not
a member of.
These scopes are under OAuth & Permissions. You will also want to save the Bot User OAuth Token. This will be needed
in the following step to configure `app-config.yaml`.
### Configure Backstage
To install the Slack processor, add the `@backstage/plugin-notifications-backend-module-slack` package to your backend.
```bash
yarn workspace backend add @backstage/plugin-notifications-backend-module-slack
```
Add the Slack processor to your backend:
```ts
// packages/backend/src/index.ts
import { createBackend } from '@backstage/plugin-notifications-backend';
const backend = createBackend();
// ...
backend.add(import('@backstage/plugin-notifications-backend-module-slack'));
```
Using the token you obtained from your Slack App, configure the Slack module in your `app-config.yaml`.
```yaml
notifications:
processors:
slack:
- token: xoxb-XXXXXXXXX
broadcastChannels: # Optional, if you wish to support broadcast notifications.
- C12345678
```
Multiple instances can be added in the `slack` array, allowing you to have multiple configurations if you need to send
messages to more than one Slack workspace. Org-Wide App installation is not currently supported.
### Entity Requirements
Entities must be annotated with the following annotation:
- `slack.com/bot-notify`
The value may be any Slack ID supported by [chat.postMessage](https://api.slack.com/methods/chat.postMessage), for example a user (U12345678), channel (C12345678), group, or direct message chat.
It's also possible to use a user's email address or channel name, however IDs are recommended by Slack.
Private channels/chats must use an ID.
### Observability
The processor includes the following counter metrics if you are exporting metrics using OpenTelemetry:
- `notifications.processors.slack.sent.count` - The number of messages sent
- `notifications.processors.slack.error.count` - The number of messages that failed to send
+6 -56
View File
@@ -11,23 +11,9 @@ public roadmap. This not a complete list of all work happening in and around the
project, it only highlights the highest priority initiatives worked on by the
core maintainers.
## 2024 Fall Roadmap
## 2025 Spring Roadmap
The initiatives listed below are planned for release within the next half-year, starting in May 2024. The roadmap is updated every 6 months, and the next update is planned for November 2024.
### Backend System 1.0
The goal of this initiative is the stable 1.0 release of the [new backend system](../backend-system/index.md).
This includes ensuring that all documentation is up to date, and includes API
reviews and refactoring efforts to ensure that what is released is both stable
and evolvable. You can follow along with this work in the [meta issue](https://github.com/backstage/backstage/issues/24493).
As part of this initiative, there will also be an exploration on how to
simplify extension of backend services. It is not currently possible to augment
backend services through declarative integration, they are instead only
customizable through complete replacement. This also limits the ability to
modularize services and scale ownership of the implementations. The goal is to
provide a more flexible and scalable way to extend backend services.
The initiatives listed below are planned for release within the next half-year, starting in November 2024. The roadmap is updated every 6 months, and the next update is planned for April 2024.
### New Frontend System - Ready for Adoption
@@ -40,53 +26,17 @@ This milestone also includes reaching and executing [rollout phase 2](https://gi
Once the initial milestone is reached, the goal is to also build out broader
support for the new frontend system in the core plugins.
### Backstage Security Audit
This is the second security audit of the Backstage project. It is done together,
and with the support of the [Cloud Native Computing Foundation (CNCF)](https://www.cncf.io/).
This time the audit will in particular focus on the recently introduced
[authentication system](https://github.com/backstage/backstage/tree/master/beps/0003-auth-architecture-evolution),
but also cover other parts of the project.
### Plugin Metadata
The goal of this initiative is to provide better machine readable metadata for
Backstage packages, available both at runtime, at build-time and as part of
package registries. We want to surface information such as what packages make up
a particular plugin, what features it provides, and more generally laying the
foundation for an evolvable plugin metadata system.
### MUI v5 Green-light
Material-UI v4 is still the officially supported version of MUI in Backstage.
While we have heard that adopters have had success using MUI 5, this is still an
untested path with known bugs. The goal of this initiative is to iron out any
remaining issues or gaps, and then provide a green light for migration to MUI 5.
### Configuration Improvements
This initiative aims to improve the configuration experience and reliability in
Backstage. Areas for improvement include the way that configuration schema is
loaded, the way that plugins access configuration that is not owned by them, how
plugins read configuration, and how configuration visibility is handled.
### Versioned Documentation
The goal of this initiative is to provide versioned documentation at
[backstage.io](https://backstage.io). This lets us provide documentation that is
both up-to-date while at the same time not ahead of the latest release.
### Rework Pull Request & Issue Process
Our current review and issue triage process is centered around either core- or
project area maintainers. The goal of this initiative is to make it simpler for
more members of the community to be involved and contribute to this process.
### Catalog Observability
### Catalog Performance
The goal of this initiative is to provide better tools for debugging catalog
ingestion issues and to more generally reduce friction for setting up and
maintaining the software catalog.
The goal of this initiative is to improve the performance of the Software
Catalog, both in terms of speeding up the read API and improving the ingestion
process.
## How to influence the roadmap
+1 -1
View File
@@ -21,7 +21,7 @@ The backend supplies a central logging service,
[`rootLogger`](../backend-system/core-services/root-logger.md), as well as a plugin
based logger, [`logger`](../backend-system/core-services/logger.md) from `coreServices`.
To add additional granularity to your logs, you can create children from the plugin
based logger, using the `.child()` method and provide is with JSON data. For example,
based logger, using the `.child()` method and provide it with JSON data. For example,
if you wanted to log items for a specific span in your plugin, you could do
```ts
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -11,6 +11,8 @@ authorURL: https://www.linkedin.com/in/emmamckeewhite/
What an action-packed and memorable week for the Backstage community meeting up IRL at KubeCon North America 2022 in (unseasonably warm and sunny) Detroit. Lets see what the community was up to:
{/* truncate */}
### BackstageCon: A full day of nothing but Backstage
![BackstageCon group](assets/2022-10-28/groupimage.jpg)
@@ -0,0 +1,9 @@
---
title: Renovate Hoster
author: secustor
authorUrl: https://github.com/secustor
category: Quality
description: This plugin enables you to host Renovate CLI yourself inside of Backstage and extract data from it.
documentation: https://github.com/secustor/backstage-plugins/tree/main/plugins/renovate
npmPackageName: '@backstage/backstage-plugin-renovate'
addedDate: '2025-03-31'
+5 -5
View File
@@ -123,6 +123,11 @@ const config: Config = {
},
blog: {
path: 'blog',
// Gets rid of the following:
// Warning: Some blog authors used in "2024-12-18-backstage-wrapped-2024.mdx" are not defined in "authors.yml":
// - {"name":"Patrik Oldsberg, Spotify & Ben Lambert, Spotify","key":null,"page":null}
// Note that we recommend to declare authors once in a "authors.yml" file and reference them by key in blog posts front matter to avoid author info duplication.
onInlineAuthors: 'ignore',
},
theme: {
customCss: 'src/theme/customTheme.scss',
@@ -299,11 +304,6 @@ const config: Config = {
themes: ['docusaurus-theme-openapi-docs'],
themeConfig: {
languageTabs: [
{
highlight: 'javascript',
language: 'nodejs',
logoClass: 'nodejs',
},
{
highlight: 'javascript',
language: 'javascript',
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "root",
"version": "1.37.0",
"version": "1.38.0-next.1",
"backstage": {
"cli": {
"new": {
+11
View File
@@ -1,5 +1,16 @@
# @backstage/app-defaults
## 1.6.1-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.17.1-next.0
- @backstage/core-app-api@1.16.0
- @backstage/core-plugin-api@1.10.5
- @backstage/theme@0.6.4
- @backstage/plugin-permission-react@0.4.32
## 1.6.0
### Minor Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/app-defaults",
"version": "1.6.0",
"version": "1.6.1-next.0",
"description": "Provides the default wiring of a Backstage App",
"backstage": {
"role": "web-library"
@@ -1,5 +1,13 @@
# app-next-example-plugin
## 0.0.22-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.17.1-next.0
- @backstage/frontend-plugin-api@0.10.1-next.0
## 0.0.21
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "app-next-example-plugin",
"version": "0.0.21",
"version": "0.0.22-next.0",
"description": "Backstage internal example plugin",
"backstage": {
"role": "frontend-plugin",
+92
View File
@@ -1,5 +1,97 @@
# example-app-next
## 0.0.22-next.1
### Patch Changes
- Updated dependencies
- @backstage/plugin-techdocs-react@1.2.16-next.0
- @backstage/plugin-kubernetes@0.12.6-next.1
- @backstage/canon@0.2.1-next.1
- @backstage/core-components@0.17.1-next.0
- @backstage/plugin-catalog-import@0.12.12-next.1
- @backstage/integration-react@1.2.6-next.0
- @backstage/plugin-techdocs-module-addons-contrib@1.1.23-next.0
- @backstage/plugin-techdocs@1.12.5-next.1
- @backstage/app-defaults@1.6.1-next.0
- @backstage/cli@0.32.0-next.1
- @backstage/frontend-plugin-api@0.10.1-next.0
- @backstage/plugin-api-docs@0.12.6-next.1
- @backstage/plugin-app@0.1.8-next.0
- @backstage/plugin-app-visualizer@0.1.18-next.0
- @backstage/plugin-auth-react@0.1.14-next.0
- @backstage/plugin-catalog@1.29.0-next.1
- @backstage/plugin-catalog-graph@0.4.18-next.1
- @backstage/plugin-catalog-react@1.16.1-next.1
- @backstage/plugin-catalog-unprocessed-entities@0.2.16-next.1
- @backstage/plugin-home@0.8.7-next.1
- @backstage/plugin-kubernetes-cluster@0.0.24-next.1
- @backstage/plugin-notifications@0.5.4-next.1
- @backstage/plugin-org@0.6.38-next.1
- @backstage/plugin-scaffolder@1.30.0-next.1
- @backstage/plugin-scaffolder-react@1.15.0-next.1
- @backstage/plugin-search@1.4.25-next.1
- @backstage/plugin-search-react@1.8.8-next.0
- @backstage/plugin-signals@0.0.18-next.0
- @backstage/plugin-user-settings@0.8.21-next.1
- @backstage/core-compat-api@0.4.1-next.1
- @backstage/frontend-app-api@0.11.1-next.0
- @backstage/frontend-defaults@0.2.1-next.0
- @backstage/catalog-model@1.7.3
- @backstage/config@1.3.2
- @backstage/core-app-api@1.16.0
- @backstage/core-plugin-api@1.10.5
- @backstage/theme@0.6.4
- @backstage/plugin-catalog-common@1.1.3
- @backstage/plugin-permission-react@0.4.32
- @backstage/plugin-search-common@1.2.17
## 0.0.22-next.0
### Patch Changes
- Updated dependencies
- @backstage/plugin-catalog@1.29.0-next.0
- @backstage/cli@0.32.0-next.0
- @backstage/canon@0.2.1-next.0
- @backstage/plugin-catalog-unprocessed-entities@0.2.16-next.0
- @backstage/plugin-scaffolder-react@1.15.0-next.0
- @backstage/plugin-catalog-react@1.16.1-next.0
- @backstage/plugin-scaffolder@1.30.0-next.0
- @backstage/core-compat-api@0.4.1-next.0
- @backstage/plugin-api-docs@0.12.6-next.0
- @backstage/plugin-catalog-graph@0.4.18-next.0
- @backstage/plugin-catalog-import@0.12.12-next.0
- @backstage/plugin-org@0.6.38-next.0
- @backstage/plugin-techdocs@1.12.5-next.0
- @backstage/plugin-user-settings@0.8.21-next.0
- @backstage/app-defaults@1.6.0
- @backstage/catalog-model@1.7.3
- @backstage/config@1.3.2
- @backstage/core-app-api@1.16.0
- @backstage/core-components@0.17.0
- @backstage/core-plugin-api@1.10.5
- @backstage/frontend-app-api@0.11.0
- @backstage/frontend-defaults@0.2.0
- @backstage/frontend-plugin-api@0.10.0
- @backstage/integration-react@1.2.5
- @backstage/theme@0.6.4
- @backstage/plugin-app@0.1.7
- @backstage/plugin-app-visualizer@0.1.17
- @backstage/plugin-auth-react@0.1.13
- @backstage/plugin-catalog-common@1.1.3
- @backstage/plugin-home@0.8.7-next.0
- @backstage/plugin-kubernetes@0.12.6-next.0
- @backstage/plugin-kubernetes-cluster@0.0.24-next.0
- @backstage/plugin-notifications@0.5.4-next.0
- @backstage/plugin-permission-react@0.4.32
- @backstage/plugin-search@1.4.25-next.0
- @backstage/plugin-search-common@1.2.17
- @backstage/plugin-search-react@1.8.7
- @backstage/plugin-signals@0.0.17
- @backstage/plugin-techdocs-module-addons-contrib@1.1.22
- @backstage/plugin-techdocs-react@1.2.15
## 0.0.21
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "example-app-next",
"version": "0.0.21",
"version": "0.0.22-next.1",
"backstage": {
"role": "frontend"
},
+84
View File
@@ -1,5 +1,89 @@
# example-app
## 0.2.108-next.1
### Patch Changes
- Updated dependencies
- @backstage/plugin-techdocs-react@1.2.16-next.0
- @backstage/plugin-kubernetes@0.12.6-next.1
- @backstage/canon@0.2.1-next.1
- @backstage/core-components@0.17.1-next.0
- @backstage/plugin-catalog-import@0.12.12-next.1
- @backstage/integration-react@1.2.6-next.0
- @backstage/plugin-techdocs-module-addons-contrib@1.1.23-next.0
- @backstage/plugin-techdocs@1.12.5-next.1
- @backstage/app-defaults@1.6.1-next.0
- @backstage/cli@0.32.0-next.1
- @backstage/plugin-api-docs@0.12.6-next.1
- @backstage/plugin-auth-react@0.1.14-next.0
- @backstage/plugin-catalog@1.29.0-next.1
- @backstage/plugin-catalog-graph@0.4.18-next.1
- @backstage/plugin-catalog-react@1.16.1-next.1
- @backstage/plugin-catalog-unprocessed-entities@0.2.16-next.1
- @backstage/plugin-devtools@0.1.26-next.1
- @backstage/plugin-home@0.8.7-next.1
- @backstage/plugin-kubernetes-cluster@0.0.24-next.1
- @backstage/plugin-notifications@0.5.4-next.1
- @backstage/plugin-org@0.6.38-next.1
- @backstage/plugin-scaffolder@1.30.0-next.1
- @backstage/plugin-scaffolder-react@1.15.0-next.1
- @backstage/plugin-search@1.4.25-next.1
- @backstage/plugin-search-react@1.8.8-next.0
- @backstage/plugin-signals@0.0.18-next.0
- @backstage/plugin-user-settings@0.8.21-next.1
- @backstage/frontend-app-api@0.11.1-next.0
- @backstage/catalog-model@1.7.3
- @backstage/config@1.3.2
- @backstage/core-app-api@1.16.0
- @backstage/core-plugin-api@1.10.5
- @backstage/theme@0.6.4
- @backstage/plugin-catalog-common@1.1.3
- @backstage/plugin-permission-react@0.4.32
- @backstage/plugin-search-common@1.2.17
## 0.2.108-next.0
### Patch Changes
- Updated dependencies
- @backstage/plugin-catalog@1.29.0-next.0
- @backstage/cli@0.32.0-next.0
- @backstage/canon@0.2.1-next.0
- @backstage/plugin-catalog-unprocessed-entities@0.2.16-next.0
- @backstage/plugin-scaffolder-react@1.15.0-next.0
- @backstage/plugin-catalog-react@1.16.1-next.0
- @backstage/plugin-scaffolder@1.30.0-next.0
- @backstage/plugin-api-docs@0.12.6-next.0
- @backstage/plugin-catalog-graph@0.4.18-next.0
- @backstage/plugin-catalog-import@0.12.12-next.0
- @backstage/plugin-org@0.6.38-next.0
- @backstage/plugin-techdocs@1.12.5-next.0
- @backstage/plugin-user-settings@0.8.21-next.0
- @backstage/app-defaults@1.6.0
- @backstage/catalog-model@1.7.3
- @backstage/config@1.3.2
- @backstage/core-app-api@1.16.0
- @backstage/core-components@0.17.0
- @backstage/core-plugin-api@1.10.5
- @backstage/frontend-app-api@0.11.0
- @backstage/integration-react@1.2.5
- @backstage/theme@0.6.4
- @backstage/plugin-auth-react@0.1.13
- @backstage/plugin-catalog-common@1.1.3
- @backstage/plugin-devtools@0.1.26-next.0
- @backstage/plugin-home@0.8.7-next.0
- @backstage/plugin-kubernetes@0.12.6-next.0
- @backstage/plugin-kubernetes-cluster@0.0.24-next.0
- @backstage/plugin-notifications@0.5.4-next.0
- @backstage/plugin-permission-react@0.4.32
- @backstage/plugin-search@1.4.25-next.0
- @backstage/plugin-search-common@1.2.17
- @backstage/plugin-search-react@1.8.7
- @backstage/plugin-signals@0.0.17
- @backstage/plugin-techdocs-module-addons-contrib@1.1.22
- @backstage/plugin-techdocs-react@1.2.15
## 0.2.107
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "example-app",
"version": "0.2.107",
"version": "0.2.108-next.1",
"backstage": {
"role": "frontend"
},
+42
View File
@@ -1,5 +1,47 @@
# @backstage/backend-defaults
## 0.9.0-next.1
### Patch Changes
- Updated dependencies
- @backstage/integration@1.16.3-next.0
- @backstage/backend-app-api@1.2.1
- @backstage/plugin-auth-node@0.6.1
- @backstage/plugin-permission-node@0.9.0
- @backstage/backend-dev-utils@0.1.5
- @backstage/backend-plugin-api@1.2.1
- @backstage/cli-node@0.2.13
- @backstage/config@1.3.2
- @backstage/config-loader@1.10.0
- @backstage/errors@1.2.7
- @backstage/integration-aws-node@0.1.15
- @backstage/types@1.2.1
- @backstage/plugin-events-node@0.4.9
## 0.9.0-next.0
### Minor Changes
- 01edf6e: Allow pass through of redis client and cluster options to Cache core service
### Patch Changes
- Updated dependencies
- @backstage/backend-app-api@1.2.1
- @backstage/plugin-auth-node@0.6.1
- @backstage/plugin-permission-node@0.9.0
- @backstage/backend-dev-utils@0.1.5
- @backstage/backend-plugin-api@1.2.1
- @backstage/cli-node@0.2.13
- @backstage/config@1.3.2
- @backstage/config-loader@1.10.0
- @backstage/errors@1.2.7
- @backstage/integration@1.16.2
- @backstage/integration-aws-node@0.1.15
- @backstage/types@1.2.1
- @backstage/plugin-events-node@0.4.9
## 0.8.2
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/backend-defaults",
"version": "0.8.2",
"version": "0.9.0-next.1",
"description": "Backend defaults used by Backstage backend apps",
"backstage": {
"role": "node-library"
@@ -1,5 +1,53 @@
# @backstage/backend-dynamic-feature-service
## 0.6.2-next.1
### Patch Changes
- Updated dependencies
- @backstage/backend-defaults@0.9.0-next.1
- @backstage/plugin-catalog-backend@1.32.1-next.0
- @backstage/plugin-scaffolder-node@0.8.1-next.1
- @backstage/plugin-auth-node@0.6.1
- @backstage/plugin-events-backend@0.5.0
- @backstage/plugin-permission-node@0.9.0
- @backstage/plugin-search-backend-node@1.3.9
- @backstage/backend-plugin-api@1.2.1
- @backstage/cli-common@0.1.15
- @backstage/cli-node@0.2.13
- @backstage/config@1.3.2
- @backstage/config-loader@1.10.0
- @backstage/errors@1.2.7
- @backstage/types@1.2.1
- @backstage/plugin-app-node@0.1.31
- @backstage/plugin-events-node@0.4.9
- @backstage/plugin-permission-common@0.8.4
- @backstage/plugin-search-common@1.2.17
## 0.6.2-next.0
### Patch Changes
- Updated dependencies
- @backstage/backend-defaults@0.9.0-next.0
- @backstage/plugin-scaffolder-node@0.8.1-next.0
- @backstage/plugin-auth-node@0.6.1
- @backstage/plugin-catalog-backend@1.32.0
- @backstage/plugin-events-backend@0.5.0
- @backstage/plugin-permission-node@0.9.0
- @backstage/plugin-search-backend-node@1.3.9
- @backstage/backend-plugin-api@1.2.1
- @backstage/cli-common@0.1.15
- @backstage/cli-node@0.2.13
- @backstage/config@1.3.2
- @backstage/config-loader@1.10.0
- @backstage/errors@1.2.7
- @backstage/types@1.2.1
- @backstage/plugin-app-node@0.1.31
- @backstage/plugin-events-node@0.4.9
- @backstage/plugin-permission-common@0.8.4
- @backstage/plugin-search-common@1.2.17
## 0.6.1
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@backstage/backend-dynamic-feature-service",
"version": "0.6.1",
"version": "0.6.2-next.1",
"description": "Backstage dynamic feature service",
"backstage": {
"role": "node-library"
+76
View File
@@ -1,5 +1,81 @@
# example-backend-legacy
## 0.2.109-next.1
### Patch Changes
- Updated dependencies
- @backstage/plugin-scaffolder-backend-module-gitlab@0.8.2-next.1
- @backstage/integration@1.16.3-next.0
- @backstage/plugin-auth-backend@0.24.5-next.1
- @backstage/plugin-scaffolder-backend@1.32.0-next.1
- @backstage/backend-defaults@0.9.0-next.1
- @backstage/plugin-catalog-backend@1.32.1-next.0
- @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.8-next.1
- @backstage/plugin-scaffolder-backend-module-rails@0.5.8-next.1
- @backstage/plugin-techdocs-backend@2.0.1-next.1
- @backstage/plugin-signals-backend@0.3.2
- @backstage/plugin-auth-node@0.6.1
- @backstage/plugin-events-backend@0.5.0
- @backstage/plugin-kubernetes-backend@0.19.4
- @backstage/plugin-permission-backend@0.5.55
- @backstage/plugin-permission-node@0.9.0
- @backstage/plugin-search-backend@2.0.1-next.1
- @backstage/plugin-search-backend-node@1.3.9
- @backstage/backend-plugin-api@1.2.1
- @backstage/catalog-client@1.9.1
- @backstage/catalog-model@1.7.3
- @backstage/config@1.3.2
- @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.6
- @backstage/plugin-catalog-backend-module-unprocessed@0.5.6
- @backstage/plugin-catalog-node@1.16.1
- @backstage/plugin-events-node@0.4.9
- @backstage/plugin-permission-common@0.8.4
- @backstage/plugin-search-backend-module-catalog@0.3.2
- @backstage/plugin-search-backend-module-elasticsearch@1.7.0
- @backstage/plugin-search-backend-module-explore@0.3.0
- @backstage/plugin-search-backend-module-pg@0.5.42
- @backstage/plugin-search-backend-module-techdocs@0.4.1-next.1
- @backstage/plugin-signals-node@0.1.18
## 0.2.109-next.0
### Patch Changes
- Updated dependencies
- @backstage/backend-defaults@0.9.0-next.0
- @backstage/plugin-scaffolder-backend@1.32.0-next.0
- @backstage/plugin-auth-backend@0.24.5-next.0
- @backstage/plugin-auth-node@0.6.1
- @backstage/plugin-catalog-backend@1.32.0
- @backstage/plugin-events-backend@0.5.0
- @backstage/plugin-kubernetes-backend@0.19.4
- @backstage/plugin-permission-backend@0.5.55
- @backstage/plugin-permission-node@0.9.0
- @backstage/plugin-search-backend@2.0.1-next.0
- @backstage/plugin-search-backend-node@1.3.9
- @backstage/plugin-signals-backend@0.3.2
- @backstage/plugin-techdocs-backend@2.0.1-next.0
- @backstage/plugin-search-backend-module-techdocs@0.4.1-next.0
- @backstage/backend-plugin-api@1.2.1
- @backstage/catalog-client@1.9.1
- @backstage/catalog-model@1.7.3
- @backstage/config@1.3.2
- @backstage/integration@1.16.2
- @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.6
- @backstage/plugin-catalog-backend-module-unprocessed@0.5.6
- @backstage/plugin-catalog-node@1.16.1
- @backstage/plugin-events-node@0.4.9
- @backstage/plugin-permission-common@0.8.4
- @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.8-next.0
- @backstage/plugin-scaffolder-backend-module-gitlab@0.8.2-next.0
- @backstage/plugin-scaffolder-backend-module-rails@0.5.8-next.0
- @backstage/plugin-search-backend-module-catalog@0.3.2
- @backstage/plugin-search-backend-module-elasticsearch@1.7.0
- @backstage/plugin-search-backend-module-explore@0.3.0
- @backstage/plugin-search-backend-module-pg@0.5.42
- @backstage/plugin-signals-node@0.1.18
## 0.2.108
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "example-backend-legacy",
"version": "0.2.108",
"version": "0.2.109-next.1",
"backstage": {
"role": "backend"
},
+28
View File
@@ -1,5 +1,33 @@
# @backstage/backend-test-utils
## 1.3.2-next.1
### Patch Changes
- Updated dependencies
- @backstage/backend-defaults@0.9.0-next.1
- @backstage/backend-app-api@1.2.1
- @backstage/plugin-auth-node@0.6.1
- @backstage/backend-plugin-api@1.2.1
- @backstage/config@1.3.2
- @backstage/errors@1.2.7
- @backstage/types@1.2.1
- @backstage/plugin-events-node@0.4.9
## 1.3.2-next.0
### Patch Changes
- Updated dependencies
- @backstage/backend-defaults@0.9.0-next.0
- @backstage/backend-app-api@1.2.1
- @backstage/plugin-auth-node@0.6.1
- @backstage/backend-plugin-api@1.2.1
- @backstage/config@1.3.2
- @backstage/errors@1.2.7
- @backstage/types@1.2.1
- @backstage/plugin-events-node@0.4.9
## 1.3.1
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/backend-test-utils",
"version": "1.3.1",
"version": "1.3.2-next.1",
"description": "Test helpers library for Backstage backends",
"backstage": {
"role": "node-library"
+76
View File
@@ -1,5 +1,81 @@
# example-backend
## 0.0.37-next.1
### Patch Changes
- Updated dependencies
- @backstage/plugin-notifications-backend@0.5.5-next.0
- @backstage/plugin-auth-backend@0.24.5-next.1
- @backstage/plugin-scaffolder-backend@1.32.0-next.1
- @backstage/backend-defaults@0.9.0-next.1
- @backstage/plugin-catalog-backend@1.32.1-next.0
- @backstage/plugin-catalog-backend-module-openapi@0.2.9-next.0
- @backstage/plugin-scaffolder-backend-module-github@0.6.2-next.1
- @backstage/plugin-techdocs-backend@2.0.1-next.1
- @backstage/plugin-auth-backend-module-github-provider@0.3.1
- @backstage/plugin-signals-backend@0.3.2
- @backstage/plugin-app-backend@0.5.0
- @backstage/plugin-auth-node@0.6.1
- @backstage/plugin-devtools-backend@0.5.4-next.1
- @backstage/plugin-events-backend@0.5.0
- @backstage/plugin-kubernetes-backend@0.19.4
- @backstage/plugin-permission-backend@0.5.55
- @backstage/plugin-permission-node@0.9.0
- @backstage/plugin-proxy-backend@0.6.0
- @backstage/plugin-search-backend@2.0.1-next.1
- @backstage/plugin-search-backend-node@1.3.9
- @backstage/backend-plugin-api@1.2.1
- @backstage/catalog-model@1.7.3
- @backstage/plugin-auth-backend-module-guest-provider@0.2.6
- @backstage/plugin-catalog-backend-module-backstage-openapi@0.5.0
- @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.6
- @backstage/plugin-catalog-backend-module-unprocessed@0.5.6
- @backstage/plugin-permission-backend-module-allow-all-policy@0.2.6
- @backstage/plugin-permission-common@0.8.4
- @backstage/plugin-scaffolder-backend-module-notifications@0.1.9-next.1
- @backstage/plugin-search-backend-module-catalog@0.3.2
- @backstage/plugin-search-backend-module-explore@0.3.0
- @backstage/plugin-search-backend-module-techdocs@0.4.1-next.1
## 0.0.37-next.0
### Patch Changes
- Updated dependencies
- @backstage/backend-defaults@0.9.0-next.0
- @backstage/plugin-scaffolder-backend-module-github@0.6.2-next.0
- @backstage/plugin-scaffolder-backend@1.32.0-next.0
- @backstage/plugin-scaffolder-backend-module-notifications@0.1.9-next.0
- @backstage/plugin-app-backend@0.5.0
- @backstage/plugin-auth-backend@0.24.5-next.0
- @backstage/plugin-auth-backend-module-github-provider@0.3.1
- @backstage/plugin-auth-node@0.6.1
- @backstage/plugin-catalog-backend@1.32.0
- @backstage/plugin-devtools-backend@0.5.4-next.0
- @backstage/plugin-events-backend@0.5.0
- @backstage/plugin-kubernetes-backend@0.19.4
- @backstage/plugin-notifications-backend@0.5.4
- @backstage/plugin-permission-backend@0.5.55
- @backstage/plugin-permission-node@0.9.0
- @backstage/plugin-proxy-backend@0.6.0
- @backstage/plugin-search-backend@2.0.1-next.0
- @backstage/plugin-search-backend-node@1.3.9
- @backstage/plugin-signals-backend@0.3.2
- @backstage/plugin-techdocs-backend@2.0.1-next.0
- @backstage/plugin-search-backend-module-techdocs@0.4.1-next.0
- @backstage/backend-plugin-api@1.2.1
- @backstage/catalog-model@1.7.3
- @backstage/plugin-auth-backend-module-guest-provider@0.2.6
- @backstage/plugin-catalog-backend-module-backstage-openapi@0.5.0
- @backstage/plugin-catalog-backend-module-openapi@0.2.8
- @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.6
- @backstage/plugin-catalog-backend-module-unprocessed@0.5.6
- @backstage/plugin-permission-backend-module-allow-all-policy@0.2.6
- @backstage/plugin-permission-common@0.8.4
- @backstage/plugin-search-backend-module-catalog@0.3.2
- @backstage/plugin-search-backend-module-explore@0.3.0
## 0.0.36
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "example-backend",
"version": "0.0.36",
"version": "0.0.37-next.1",
"backstage": {
"role": "backend"
},
-12
View File
@@ -1,12 +0,0 @@
import { addons } from '@storybook/manager-api';
import { create } from '@storybook/theming';
const theme = create({
base: 'light',
brandTitle: 'Canon',
brandImage: 'logo.svg',
});
addons.setConfig({
theme,
});
+15
View File
@@ -1,5 +1,20 @@
# @backstage/canon
## 0.2.1-next.1
### Patch Changes
- f7cb538: Internal refactor and fixes to the prop extraction logic for layout components.
- 5e80f0b: Fix types on the Icon component.
## 0.2.1-next.0
### Patch Changes
- 6af7b16: Updated styles for the Menu component in Canon.
- 513477f: Add global CSS reset for anchor tags.
- 05a5003: Fix the Icon component when the name is not found to return null instead of an empty SVG.
## 0.2.0
### Minor Changes
+5
View File
@@ -9083,6 +9083,11 @@
}
}
:where(a) {
color: inherit;
text-decoration: none;
}
:root {
--canon-font-regular: system-ui;
--canon-font-monospace: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;
+5
View File
@@ -9083,6 +9083,11 @@
}
}
:where(a) {
color: inherit;
text-decoration: none;
}
:root {
--canon-font-regular: system-ui;
--canon-font-monospace: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;

Some files were not shown because too many files have changed in this diff Show More