@pega/cosmos-react-core 9.27.2 → 9.27.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -55,7 +55,7 @@ export default withTestIds(forwardRef(function Banner({ testId, variant, heading
|
|
|
55
55
|
const count = messages.length;
|
|
56
56
|
const t = useI18n();
|
|
57
57
|
const theme = useTheme();
|
|
58
|
-
const [collapsed, setCollapsed] = useState(
|
|
58
|
+
const [collapsed, setCollapsed] = useState(count > 2);
|
|
59
59
|
const bannerRef = useConsolidatedRef(ref);
|
|
60
60
|
const expandCollapseBtnRef = useRef(null);
|
|
61
61
|
const showHeader = headingText !== undefined || (content ? count !== 0 : count !== 1 || firstMessageHasChildren);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Banner.js","sourceRoot":"","sources":["../../../src/components/Banner/Banner.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, forwardRef, useMemo, useImperativeHandle, useRef, Fragment } from 'react';\nimport type { PropsWithoutRef, Ref, MouseEventHandler, ReactNode } from 'react';\n\nimport type {\n ForwardProps,\n HeadingTag,\n NoChildrenProp,\n OmitStrict,\n RefElement,\n TestIdProp,\n WithAttributes\n} from '../../types';\nimport Button from '../Button';\nimport { focusHeadingOrContainer, withTestIds } from '../../utils';\nimport { useConsolidatedRef, useI18n, useTestIds, useTheme } from '../../hooks';\nimport Flex from '../Flex';\nimport Text from '../Text';\nimport Grid from '../Grid';\nimport ExpandCollapse, { ExpandCollapseButton } from '../ExpandCollapse';\nimport { Count } from '../Badges';\nimport Icon, { registerIcon } from '../Icon';\nimport * as timesIcon from '../Icon/icons/times.icon';\nimport * as caretRightIcon from '../Icon/icons/caret-right.icon';\nimport * as warnSolidIcon from '../Icon/icons/warn-solid.icon';\nimport * as diamondMinusIcon from '../Icon/icons/diamond-solid.icon';\nimport * as informationSolidIcon from '../Icon/icons/information-solid.icon';\nimport * as checkSolidIcon from '../Icon/icons/check-solid.icon';\nimport * as aiIcon from '../Icon/icons/polaris-solid.icon';\nimport VisuallyHiddenText from '../VisuallyHiddenText';\nimport HTML from '../HTML';\n\nimport { getBannerTestIds } from './Banner.test-ids';\nimport {\n StyledBanner,\n StyledBannerStatus,\n StyledBannerMessageList,\n StyledBannerMessage,\n StyledBannerMessageLabel\n} from './Banner.styles';\n\nregisterIcon(\n timesIcon,\n caretRightIcon,\n warnSolidIcon,\n diamondMinusIcon,\n informationSolidIcon,\n checkSolidIcon,\n aiIcon\n);\n\n// FIXME: Temporarily re-exporting for backward compatibility.\nexport { StyledBanner, StyledBannerMessageList };\n\nexport interface BannerHandleValue {\n /** Used to apply focus to the banner via an imperative handle. */\n focus: () => void;\n}\n\ntype Label =\n | string\n | {\n text: string;\n onClick?: MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>;\n href?: string;\n };\n\nexport interface BannerMessage {\n label: Label | Label[];\n description?: string;\n action?: {\n text: string;\n onClick?: MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>;\n href?: string;\n };\n items?: (BannerMessage | string)[];\n}\n\nexport type BannerProps = WithAttributes<\n 'div',\n TestIdProp &\n NoChildrenProp & {\n /** Controls the styling of the Banner. */\n variant: 'urgent' | 'warning' | 'success' | 'info' | 'ai';\n /** Custom heading text. Default varies by variant. */\n headingText?: string;\n /**\n * The heading tag to render the provided heading as. This is agnostic to the styling of the heading.\n * @default 'h3'\n */\n headingTag?: HeadingTag;\n /**\n * Pass one or more descriptive messages to inform the user\n * @default []\n */\n messages?: (string | BannerMessage)[];\n /** Rich text content to render within banner. */\n content?: string;\n /** Callback when user explicitly dismisses the Banner. */\n onDismiss?: MouseEventHandler;\n /** Ref that can be used to access the imperative handle. */\n handle?: Ref<BannerHandleValue>;\n }\n>;\n\nconst BannerMessageItem = forwardRef<\n HTMLLIElement,\n TestIdProp & OmitStrict<BannerMessage, 'items'> & ForwardProps\n>(function BannerMessageItem({ testId, label, description, action, ...restProps }, ref) {\n const testIds = useTestIds(testId, getBannerTestIds);\n\n const labelArray = Array.isArray(label) ? label : [label];\n\n return (\n <StyledBannerMessage {...restProps} ref={ref}>\n <StyledBannerMessageLabel data-testid={testIds.messageLabel}>\n {labelArray.map((item, idx) =>\n typeof item === 'string' ? (\n // eslint-disable-next-line react/no-array-index-key\n <Fragment key={idx}>{item}</Fragment>\n ) : (\n // eslint-disable-next-line react/no-array-index-key\n <Button variant='link' href={item.href} onClick={item.onClick} key={idx}>\n {item.text}\n </Button>\n )\n )}\n </StyledBannerMessageLabel>\n {description && (\n <>\n {' '}\n <Text data-testid={testIds.messageDescription} variant='secondary'>\n {description}\n </Text>\n </>\n )}\n {action && (\n <>\n {' '}\n <Text variant='secondary'>\n <Button\n data-testid={testIds.messageAction}\n variant='link'\n href={action.href}\n onClick={action.onClick}\n {...action}\n >\n {action.text}\n </Button>\n </Text>\n </>\n )}\n </StyledBannerMessage>\n );\n});\n\nconst prepareMessages = (\n messages: (string | BannerMessage)[],\n testId: TestIdProp['testId']\n): ReactNode[] => {\n return messages.flatMap(msg => {\n if (typeof msg === 'string') {\n return [<BannerMessageItem label={msg} />];\n }\n\n if (msg.items && msg.items.length > 0) {\n const { items, ...restMsg } = msg;\n const subMessages = prepareMessages(items, testId);\n return [<BannerMessageItem {...restMsg} testId={testId} />, subMessages];\n }\n\n return [<BannerMessageItem {...msg} testId={testId} />];\n });\n};\n\nexport default withTestIds(\n forwardRef<RefElement<BannerProps>, PropsWithoutRef<BannerProps>>(function Banner(\n {\n testId,\n variant,\n headingText,\n headingTag = 'h3',\n messages = [],\n content,\n onDismiss,\n handle,\n ...restProps\n },\n ref\n ) {\n const testIds = useTestIds(testId, getBannerTestIds);\n const messagesToRender = useMemo(() => prepareMessages(messages, testId), [messages]);\n const firstMessageHasChildren =\n messages.length > 0 &&\n typeof messages[0] === 'object' &&\n Array.isArray(messages[0].items) &&\n messages[0].items.length > 0;\n const count = messages.length;\n const t = useI18n();\n const theme = useTheme();\n const [collapsed, setCollapsed] = useState(false);\n\n const bannerRef = useConsolidatedRef(ref);\n const expandCollapseBtnRef = useRef<HTMLButtonElement>(null);\n\n const showHeader =\n headingText !== undefined || (content ? count !== 0 : count !== 1 || firstMessageHasChildren);\n const expandable = showHeader && (count !== 0 || !!content);\n const showCount = count > 0;\n\n let heading = headingText;\n let icon: string;\n let role: string;\n let ariaLive: string;\n\n switch (variant) {\n case 'urgent':\n heading ??= t('error');\n icon = 'warn-solid';\n role = 'alert';\n ariaLive = 'assertive';\n break;\n case 'warning':\n heading ??= t('warning');\n icon = 'diamond-minus';\n role = 'alert';\n ariaLive = 'assertive';\n break;\n case 'success':\n heading ??= t('success');\n icon = theme.base['icon-set'] === 'budicon' ? 'check-solid' : 'check';\n role = 'none';\n ariaLive = 'polite';\n break;\n case 'ai':\n heading ??= t('ai_generated');\n icon = 'polaris-solid';\n role = 'none';\n ariaLive = 'polite';\n break;\n case 'info':\n default:\n heading ??= t('information');\n icon = 'information-solid';\n role = 'none';\n ariaLive = 'polite';\n break;\n }\n\n useImperativeHandle(\n handle,\n () => ({\n focus: () => {\n // Empty timeout ensures that the banner will take focus after any other programmatic focus events\n setTimeout(() => {\n if (expandCollapseBtnRef.current) {\n expandCollapseBtnRef.current.focus();\n } else if (bannerRef.current) {\n focusHeadingOrContainer(bannerRef.current, heading);\n }\n });\n }\n }),\n []\n );\n\n const iconRegion = (\n <Flex as={StyledBannerStatus} container={{ alignItems: 'center' }} variant={variant}>\n <Icon name={icon} />\n </Flex>\n );\n\n const dismissButton = onDismiss ? (\n <Button\n data-testid={testIds.dismiss}\n onClick={onDismiss}\n label={t('dismiss')}\n aria-label={t('banner_dismiss_button_label_a11y')}\n variant='simple'\n icon\n >\n <Icon name='times' />\n </Button>\n ) : null;\n\n return (\n <Grid\n data-testid={testIds.root}\n {...restProps}\n as={StyledBanner}\n container={\n showHeader\n ? { cols: 'minmax(0, 1fr)' }\n : { cols: 'min-content minmax(0, 1fr) auto', gap: 1, alignItems: 'start' }\n }\n role={role}\n aria-live={ariaLive}\n headingTag={headingTag}\n variant={variant}\n ref={bannerRef}\n >\n {!showHeader ? (\n <>\n {iconRegion}\n <VisuallyHiddenText\n as={headingTag}\n >{`${heading} ${showCount ? count : ''}`}</VisuallyHiddenText>\n <Flex item={{ alignSelf: 'center', grow: 1 }} as={content ? undefined : 'ul'}>\n {(() => {\n if (content) {\n return <HTML content={content} />;\n }\n\n if (typeof messages[0] === 'string') {\n return <BannerMessageItem testId={testId} label={messages[0]} as='li' />;\n }\n\n return <BannerMessageItem {...messages[0]} testId={testId} as='li' />;\n })()}\n </Flex>\n {dismissButton}\n </>\n ) : (\n <Flex container={{ direction: 'column', justify: 'center' }}>\n <Grid\n container={{\n cols: expandable ? 'auto 1fr auto' : '1fr auto',\n areas: expandable ? '\"toggle heading dismiss\"' : '\"heading dismiss\"',\n gap: 0.5,\n alignItems: 'start'\n }}\n >\n <Grid\n container={{ cols: 'min-content auto', gap: 1 }}\n item={{ area: 'heading', alignSelf: 'center' }}\n >\n {iconRegion}\n <Grid\n data-testid={testIds.heading}\n container={{\n cols: `fit-content(100%) ${showCount ? 'max-content' : ''}`,\n gap: 0.5,\n alignItems: 'center'\n }}\n as={Text}\n forwardedAs={headingTag}\n variant='h3'\n >\n {heading} {showCount && <Count>{count}</Count>}\n </Grid>\n </Grid>\n {expandable && (\n <Grid item={{ area: 'toggle' }}>\n <ExpandCollapseButton\n data-testid={testIds.expandCollapse}\n onToggle={() => {\n setCollapsed(cur => !cur);\n }}\n label={t(collapsed ? 'expand' : 'collapse')}\n aria-label={t(collapsed ? 'expand_noun' : 'collapse_noun', [heading])}\n aria-expanded={!collapsed}\n iconOnly\n ref={expandCollapseBtnRef}\n expanded={!collapsed}\n />\n </Grid>\n )}\n <Grid item={{ area: 'dismiss' }}>{dismissButton}</Grid>\n </Grid>\n {expandable && (\n <ExpandCollapse collapsed={collapsed}>\n <Flex\n container={{\n direction: 'column',\n gap: 1,\n pad: [1, 2]\n }}\n >\n {messagesToRender.length > 0 ? (\n <StyledBannerMessageList items={messagesToRender} />\n ) : null}\n {content && <HTML content={content} />}\n </Flex>\n </ExpandCollapse>\n )}\n </Flex>\n )}\n </Grid>\n );\n }),\n getBannerTestIds\n);\n"]}
|
|
1
|
+
{"version":3,"file":"Banner.js","sourceRoot":"","sources":["../../../src/components/Banner/Banner.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, forwardRef, useMemo, useImperativeHandle, useRef, Fragment } from 'react';\nimport type { PropsWithoutRef, Ref, MouseEventHandler, ReactNode } from 'react';\n\nimport type {\n ForwardProps,\n HeadingTag,\n NoChildrenProp,\n OmitStrict,\n RefElement,\n TestIdProp,\n WithAttributes\n} from '../../types';\nimport Button from '../Button';\nimport { focusHeadingOrContainer, withTestIds } from '../../utils';\nimport { useConsolidatedRef, useI18n, useTestIds, useTheme } from '../../hooks';\nimport Flex from '../Flex';\nimport Text from '../Text';\nimport Grid from '../Grid';\nimport ExpandCollapse, { ExpandCollapseButton } from '../ExpandCollapse';\nimport { Count } from '../Badges';\nimport Icon, { registerIcon } from '../Icon';\nimport * as timesIcon from '../Icon/icons/times.icon';\nimport * as caretRightIcon from '../Icon/icons/caret-right.icon';\nimport * as warnSolidIcon from '../Icon/icons/warn-solid.icon';\nimport * as diamondMinusIcon from '../Icon/icons/diamond-solid.icon';\nimport * as informationSolidIcon from '../Icon/icons/information-solid.icon';\nimport * as checkSolidIcon from '../Icon/icons/check-solid.icon';\nimport * as aiIcon from '../Icon/icons/polaris-solid.icon';\nimport VisuallyHiddenText from '../VisuallyHiddenText';\nimport HTML from '../HTML';\n\nimport { getBannerTestIds } from './Banner.test-ids';\nimport {\n StyledBanner,\n StyledBannerStatus,\n StyledBannerMessageList,\n StyledBannerMessage,\n StyledBannerMessageLabel\n} from './Banner.styles';\n\nregisterIcon(\n timesIcon,\n caretRightIcon,\n warnSolidIcon,\n diamondMinusIcon,\n informationSolidIcon,\n checkSolidIcon,\n aiIcon\n);\n\n// FIXME: Temporarily re-exporting for backward compatibility.\nexport { StyledBanner, StyledBannerMessageList };\n\nexport interface BannerHandleValue {\n /** Used to apply focus to the banner via an imperative handle. */\n focus: () => void;\n}\n\ntype Label =\n | string\n | {\n text: string;\n onClick?: MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>;\n href?: string;\n };\n\nexport interface BannerMessage {\n label: Label | Label[];\n description?: string;\n action?: {\n text: string;\n onClick?: MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>;\n href?: string;\n };\n items?: (BannerMessage | string)[];\n}\n\nexport type BannerProps = WithAttributes<\n 'div',\n TestIdProp &\n NoChildrenProp & {\n /** Controls the styling of the Banner. */\n variant: 'urgent' | 'warning' | 'success' | 'info' | 'ai';\n /** Custom heading text. Default varies by variant. */\n headingText?: string;\n /**\n * The heading tag to render the provided heading as. This is agnostic to the styling of the heading.\n * @default 'h3'\n */\n headingTag?: HeadingTag;\n /**\n * Pass one or more descriptive messages to inform the user\n * @default []\n */\n messages?: (string | BannerMessage)[];\n /** Rich text content to render within banner. */\n content?: string;\n /** Callback when user explicitly dismisses the Banner. */\n onDismiss?: MouseEventHandler;\n /** Ref that can be used to access the imperative handle. */\n handle?: Ref<BannerHandleValue>;\n }\n>;\n\nconst BannerMessageItem = forwardRef<\n HTMLLIElement,\n TestIdProp & OmitStrict<BannerMessage, 'items'> & ForwardProps\n>(function BannerMessageItem({ testId, label, description, action, ...restProps }, ref) {\n const testIds = useTestIds(testId, getBannerTestIds);\n\n const labelArray = Array.isArray(label) ? label : [label];\n\n return (\n <StyledBannerMessage {...restProps} ref={ref}>\n <StyledBannerMessageLabel data-testid={testIds.messageLabel}>\n {labelArray.map((item, idx) =>\n typeof item === 'string' ? (\n // eslint-disable-next-line react/no-array-index-key\n <Fragment key={idx}>{item}</Fragment>\n ) : (\n // eslint-disable-next-line react/no-array-index-key\n <Button variant='link' href={item.href} onClick={item.onClick} key={idx}>\n {item.text}\n </Button>\n )\n )}\n </StyledBannerMessageLabel>\n {description && (\n <>\n {' '}\n <Text data-testid={testIds.messageDescription} variant='secondary'>\n {description}\n </Text>\n </>\n )}\n {action && (\n <>\n {' '}\n <Text variant='secondary'>\n <Button\n data-testid={testIds.messageAction}\n variant='link'\n href={action.href}\n onClick={action.onClick}\n {...action}\n >\n {action.text}\n </Button>\n </Text>\n </>\n )}\n </StyledBannerMessage>\n );\n});\n\nconst prepareMessages = (\n messages: (string | BannerMessage)[],\n testId: TestIdProp['testId']\n): ReactNode[] => {\n return messages.flatMap(msg => {\n if (typeof msg === 'string') {\n return [<BannerMessageItem label={msg} />];\n }\n\n if (msg.items && msg.items.length > 0) {\n const { items, ...restMsg } = msg;\n const subMessages = prepareMessages(items, testId);\n return [<BannerMessageItem {...restMsg} testId={testId} />, subMessages];\n }\n\n return [<BannerMessageItem {...msg} testId={testId} />];\n });\n};\n\nexport default withTestIds(\n forwardRef<RefElement<BannerProps>, PropsWithoutRef<BannerProps>>(function Banner(\n {\n testId,\n variant,\n headingText,\n headingTag = 'h3',\n messages = [],\n content,\n onDismiss,\n handle,\n ...restProps\n },\n ref\n ) {\n const testIds = useTestIds(testId, getBannerTestIds);\n const messagesToRender = useMemo(() => prepareMessages(messages, testId), [messages]);\n const firstMessageHasChildren =\n messages.length > 0 &&\n typeof messages[0] === 'object' &&\n Array.isArray(messages[0].items) &&\n messages[0].items.length > 0;\n const count = messages.length;\n const t = useI18n();\n const theme = useTheme();\n const [collapsed, setCollapsed] = useState(count > 2);\n\n const bannerRef = useConsolidatedRef(ref);\n const expandCollapseBtnRef = useRef<HTMLButtonElement>(null);\n\n const showHeader =\n headingText !== undefined || (content ? count !== 0 : count !== 1 || firstMessageHasChildren);\n const expandable = showHeader && (count !== 0 || !!content);\n const showCount = count > 0;\n\n let heading = headingText;\n let icon: string;\n let role: string;\n let ariaLive: string;\n\n switch (variant) {\n case 'urgent':\n heading ??= t('error');\n icon = 'warn-solid';\n role = 'alert';\n ariaLive = 'assertive';\n break;\n case 'warning':\n heading ??= t('warning');\n icon = 'diamond-minus';\n role = 'alert';\n ariaLive = 'assertive';\n break;\n case 'success':\n heading ??= t('success');\n icon = theme.base['icon-set'] === 'budicon' ? 'check-solid' : 'check';\n role = 'none';\n ariaLive = 'polite';\n break;\n case 'ai':\n heading ??= t('ai_generated');\n icon = 'polaris-solid';\n role = 'none';\n ariaLive = 'polite';\n break;\n case 'info':\n default:\n heading ??= t('information');\n icon = 'information-solid';\n role = 'none';\n ariaLive = 'polite';\n break;\n }\n\n useImperativeHandle(\n handle,\n () => ({\n focus: () => {\n // Empty timeout ensures that the banner will take focus after any other programmatic focus events\n setTimeout(() => {\n if (expandCollapseBtnRef.current) {\n expandCollapseBtnRef.current.focus();\n } else if (bannerRef.current) {\n focusHeadingOrContainer(bannerRef.current, heading);\n }\n });\n }\n }),\n []\n );\n\n const iconRegion = (\n <Flex as={StyledBannerStatus} container={{ alignItems: 'center' }} variant={variant}>\n <Icon name={icon} />\n </Flex>\n );\n\n const dismissButton = onDismiss ? (\n <Button\n data-testid={testIds.dismiss}\n onClick={onDismiss}\n label={t('dismiss')}\n aria-label={t('banner_dismiss_button_label_a11y')}\n variant='simple'\n icon\n >\n <Icon name='times' />\n </Button>\n ) : null;\n\n return (\n <Grid\n data-testid={testIds.root}\n {...restProps}\n as={StyledBanner}\n container={\n showHeader\n ? { cols: 'minmax(0, 1fr)' }\n : { cols: 'min-content minmax(0, 1fr) auto', gap: 1, alignItems: 'start' }\n }\n role={role}\n aria-live={ariaLive}\n headingTag={headingTag}\n variant={variant}\n ref={bannerRef}\n >\n {!showHeader ? (\n <>\n {iconRegion}\n <VisuallyHiddenText\n as={headingTag}\n >{`${heading} ${showCount ? count : ''}`}</VisuallyHiddenText>\n <Flex item={{ alignSelf: 'center', grow: 1 }} as={content ? undefined : 'ul'}>\n {(() => {\n if (content) {\n return <HTML content={content} />;\n }\n\n if (typeof messages[0] === 'string') {\n return <BannerMessageItem testId={testId} label={messages[0]} as='li' />;\n }\n\n return <BannerMessageItem {...messages[0]} testId={testId} as='li' />;\n })()}\n </Flex>\n {dismissButton}\n </>\n ) : (\n <Flex container={{ direction: 'column', justify: 'center' }}>\n <Grid\n container={{\n cols: expandable ? 'auto 1fr auto' : '1fr auto',\n areas: expandable ? '\"toggle heading dismiss\"' : '\"heading dismiss\"',\n gap: 0.5,\n alignItems: 'start'\n }}\n >\n <Grid\n container={{ cols: 'min-content auto', gap: 1 }}\n item={{ area: 'heading', alignSelf: 'center' }}\n >\n {iconRegion}\n <Grid\n data-testid={testIds.heading}\n container={{\n cols: `fit-content(100%) ${showCount ? 'max-content' : ''}`,\n gap: 0.5,\n alignItems: 'center'\n }}\n as={Text}\n forwardedAs={headingTag}\n variant='h3'\n >\n {heading} {showCount && <Count>{count}</Count>}\n </Grid>\n </Grid>\n {expandable && (\n <Grid item={{ area: 'toggle' }}>\n <ExpandCollapseButton\n data-testid={testIds.expandCollapse}\n onToggle={() => {\n setCollapsed(cur => !cur);\n }}\n label={t(collapsed ? 'expand' : 'collapse')}\n aria-label={t(collapsed ? 'expand_noun' : 'collapse_noun', [heading])}\n aria-expanded={!collapsed}\n iconOnly\n ref={expandCollapseBtnRef}\n expanded={!collapsed}\n />\n </Grid>\n )}\n <Grid item={{ area: 'dismiss' }}>{dismissButton}</Grid>\n </Grid>\n {expandable && (\n <ExpandCollapse collapsed={collapsed}>\n <Flex\n container={{\n direction: 'column',\n gap: 1,\n pad: [1, 2]\n }}\n >\n {messagesToRender.length > 0 ? (\n <StyledBannerMessageList items={messagesToRender} />\n ) : null}\n {content && <HTML content={content} />}\n </Flex>\n </ExpandCollapse>\n )}\n </Flex>\n )}\n </Grid>\n );\n }),\n getBannerTestIds\n);\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pega/cosmos-react-core",
|
|
3
|
-
"version": "9.27.
|
|
3
|
+
"version": "9.27.4",
|
|
4
4
|
"description": "Cosmos is a visual design system and UI component collection. Its goal is to empower application developers in their pursuit to create engaging and rewarding user experiences.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Pegasystems",
|