diff --git a/docs-ui/src/app/components/accordion/page.mdx b/docs-ui/src/app/components/accordion/page.mdx index 486c93ec80..dc9b87b55d 100644 --- a/docs-ui/src/app/components/accordion/page.mdx +++ b/docs-ui/src/app/components/accordion/page.mdx @@ -147,4 +147,11 @@ Allows multiple panels to be open simultaneously. - + diff --git a/docs-ui/src/app/components/card/page.mdx b/docs-ui/src/app/components/card/page.mdx index 8df6eccb40..eb7ea2f7e4 100644 --- a/docs-ui/src/app/components/card/page.mdx +++ b/docs-ui/src/app/components/card/page.mdx @@ -136,4 +136,6 @@ Buttons and links inside the card remain independently interactive. Clicking the - + diff --git a/docs-ui/src/app/components/dialog/page.mdx b/docs-ui/src/app/components/dialog/page.mdx index 12ce2d4135..3989b02730 100644 --- a/docs-ui/src/app/components/dialog/page.mdx +++ b/docs-ui/src/app/components/dialog/page.mdx @@ -125,4 +125,12 @@ You can also control the dialog using your own states. - + diff --git a/docs-ui/src/app/components/grid/page.mdx b/docs-ui/src/app/components/grid/page.mdx index 8862586830..488a67ca0e 100644 --- a/docs-ui/src/app/components/grid/page.mdx +++ b/docs-ui/src/app/components/grid/page.mdx @@ -61,4 +61,4 @@ Use Grid.Item to span multiple columns. - + diff --git a/docs-ui/src/app/components/header/page.mdx b/docs-ui/src/app/components/header/page.mdx index 65dd8f2ea8..0ae9b045aa 100644 --- a/docs-ui/src/app/components/header/page.mdx +++ b/docs-ui/src/app/components/header/page.mdx @@ -63,4 +63,4 @@ Use `customActions` to add a dropdown menu. - + diff --git a/docs-ui/src/app/components/list/page.mdx b/docs-ui/src/app/components/list/page.mdx index dadeb9c1ee..26353de81c 100644 --- a/docs-ui/src/app/components/list/page.mdx +++ b/docs-ui/src/app/components/list/page.mdx @@ -100,4 +100,4 @@ Individual row within a List. - + diff --git a/docs-ui/src/app/components/menu/page.mdx b/docs-ui/src/app/components/menu/page.mdx index f1de264d73..158598fe71 100644 --- a/docs-ui/src/app/components/menu/page.mdx +++ b/docs-ui/src/app/components/menu/page.mdx @@ -226,4 +226,17 @@ Set `selectionMode="multiple"` to allow multiple selections. - + diff --git a/docs-ui/src/app/components/radio-group/page.mdx b/docs-ui/src/app/components/radio-group/page.mdx index 5cc296b959..c666a1f872 100644 --- a/docs-ui/src/app/components/radio-group/page.mdx +++ b/docs-ui/src/app/components/radio-group/page.mdx @@ -115,4 +115,4 @@ Individual radio button within a group. - + diff --git a/docs-ui/src/app/components/search-autocomplete/page.mdx b/docs-ui/src/app/components/search-autocomplete/page.mdx index ecb58f3377..ed307f92e2 100644 --- a/docs-ui/src/app/components/search-autocomplete/page.mdx +++ b/docs-ui/src/app/components/search-autocomplete/page.mdx @@ -92,4 +92,6 @@ Use `onAction` on items to handle selection and reset the input. - + diff --git a/docs-ui/src/app/components/table/page.mdx b/docs-ui/src/app/components/table/page.mdx index 8d0e803bd2..fc43256adb 100644 --- a/docs-ui/src/app/components/table/page.mdx +++ b/docs-ui/src/app/components/table/page.mdx @@ -305,4 +305,17 @@ Low-level components for building custom table layouts. - + diff --git a/docs-ui/src/app/components/tabs/page.mdx b/docs-ui/src/app/components/tabs/page.mdx index 6925127943..a07b70dcd3 100644 --- a/docs-ui/src/app/components/tabs/page.mdx +++ b/docs-ui/src/app/components/tabs/page.mdx @@ -113,4 +113,4 @@ Add `href` to Tab components to enable URL-based tab selection. The active tab i - + diff --git a/docs-ui/src/app/components/tag-group/page.mdx b/docs-ui/src/app/components/tag-group/page.mdx index 1b283a8170..18551ffed7 100644 --- a/docs-ui/src/app/components/tag-group/page.mdx +++ b/docs-ui/src/app/components/tag-group/page.mdx @@ -88,4 +88,4 @@ Individual tag item within a group. - + diff --git a/docs-ui/src/app/components/tooltip/page.mdx b/docs-ui/src/app/components/tooltip/page.mdx index 8a9711d56c..feccc05225 100644 --- a/docs-ui/src/app/components/tooltip/page.mdx +++ b/docs-ui/src/app/components/tooltip/page.mdx @@ -62,4 +62,4 @@ The tooltip appears in the specified direction relative to the trigger. - + diff --git a/docs-ui/src/components/Changelog/utils.tsx b/docs-ui/src/components/Changelog/utils.tsx index d2daed1176..f39aa7bba5 100644 --- a/docs-ui/src/components/Changelog/utils.tsx +++ b/docs-ui/src/components/Changelog/utils.tsx @@ -1,4 +1,4 @@ -import type { ChangelogProps } from '@/utils/types'; +import type { ChangelogProps, Component } from '@/utils/types'; // Badge Components export const Badge = ({ @@ -83,15 +83,22 @@ export const formatPRLinks = (prs: string[]): string => { export const generateEntryMarkdown = ( entry: ChangelogProps, - options: { showComponentBadges?: boolean } = {}, + options: { + showComponentBadges?: boolean; + componentBadgeFilter?: Component[]; + } = {}, ): string => { - const { showComponentBadges = true } = options; + const { showComponentBadges = true, componentBadgeFilter } = options; const prs = formatPRLinks(entry.prs); // Prepend component names as badges if available and requested + const entryComponents = entry.components ?? []; + const badgeComponents = componentBadgeFilter + ? entryComponents.filter(c => componentBadgeFilter.includes(c)) + : entryComponents; const componentBadges = - showComponentBadges && entry.components.length > 0 - ? entry.components + showComponentBadges && badgeComponents.length > 0 + ? badgeComponents .map(c => `${toTitleCase(c)}`) .join(' ') + ' ' : ''; @@ -120,6 +127,7 @@ export const generateEntryMarkdown = ( export interface GenerateChangelogOptions { showComponentBadges?: boolean; + componentBadgeFilter?: Component[]; headingLevel?: number; } @@ -127,7 +135,11 @@ export const generateChangelogMarkdown = ( entries: ChangelogProps[], options: GenerateChangelogOptions = {}, ): string => { - const { showComponentBadges = true, headingLevel = 2 } = options; + const { + showComponentBadges = true, + componentBadgeFilter, + headingLevel = 2, + } = options; // Group changelog entries by version const groupedChangelog = groupByVersion(entries); @@ -168,7 +180,12 @@ export const generateChangelogMarkdown = ( const bumpSections = sections .map(({ title, entries: sectionEntries }) => { const entriesMarkdown = sectionEntries - .map(e => generateEntryMarkdown(e, { showComponentBadges })) + .map(e => + generateEntryMarkdown(e, { + showComponentBadges, + componentBadgeFilter, + }), + ) .join('\n\n'); return `${sectionHeading} ${title}\n\n${entriesMarkdown}`; diff --git a/docs-ui/src/components/ChangelogComponent/index.tsx b/docs-ui/src/components/ChangelogComponent/index.tsx index cca75a9515..013764dbca 100644 --- a/docs-ui/src/components/ChangelogComponent/index.tsx +++ b/docs-ui/src/components/ChangelogComponent/index.tsx @@ -9,7 +9,7 @@ import { } from '../Changelog/utils'; type ChangelogComponentProps = AtLeastOne<{ - component: Component; + component: Component | Component[]; hook: Hook; }>; @@ -17,14 +17,18 @@ export const ChangelogComponent = ({ component, hook, }: Readonly) => { + const components = Array.isArray(component) ? component : [component]; const componentChangelog = changelog.filter( - c => c.components?.includes(component) || c.hooks?.includes(hook), + c => + c.components?.some(cc => components.includes(cc)) || + c.hooks?.includes(hook), ); const content = `## Changelog ${generateChangelogMarkdown(componentChangelog, { - showComponentBadges: false, + showComponentBadges: components.length > 1, + componentBadgeFilter: components.length > 1 ? components : undefined, headingLevel: 3, })}`; diff --git a/docs-ui/src/utils/types.ts b/docs-ui/src/utils/types.ts index 5f00c5be5d..8e03a1df07 100644 --- a/docs-ui/src/utils/types.ts +++ b/docs-ui/src/utils/types.ts @@ -1,5 +1,8 @@ export type Component = | 'accordion' + | 'accordion-group' + | 'accordion-panel' + | 'accordion-trigger' | 'alert' | 'avatar' | 'box' @@ -7,35 +10,75 @@ export type Component = | 'button-icon' | 'button-link' | 'card' + | 'card-body' + | 'card-footer' + | 'card-header' + | 'cell' + | 'cell-profile' + | 'cell-text' | 'checkbox' | 'collapsible' + | 'column' | 'container' | 'datatable' | 'dialog' + | 'dialog-body' + | 'dialog-footer' + | 'dialog-header' + | 'dialog-trigger' + | 'field-error' + | 'field-label' | 'flex' + | 'full-page' | 'grid' - | 'plugin-header' + | 'grid-item' | 'header' + | 'header-page' | 'heading' | 'icon' | 'link' | 'list' | 'list-row' | 'menu' + | 'menu-autocomplete' + | 'menu-autocomplete-listbox' + | 'menu-item' + | 'menu-list-box' + | 'menu-list-box-item' + | 'menu-section' + | 'menu-separator' + | 'menu-trigger' | 'password-field' + | 'plugin-header' + | 'popover' + | 'radio' | 'radio-group' + | 'row' | 'scrollarea' | 'search-autocomplete' + | 'search-autocomplete-item' | 'searchfield' | 'select' | 'skeleton' + | 'submenu-trigger' | 'switch' + | 'tab' + | 'tab-list' + | 'tab-panel' | 'table' + | 'table-body' + | 'table-header' + | 'table-pagination' + | 'table-root' | 'tabs' + | 'tag' | 'tag-group' | 'text' | 'textfield' + | 'toggle-button' + | 'toggle-button-group' | 'tooltip' + | 'tooltip-trigger' | 'visually-hidden'; export type Hook = 'use-breakpoint';