@dynatrace/strato-components 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/buttons/button/Button.css +18 -22
- package/buttons/button/Button.d.ts +4 -4
- package/buttons/button/Button.js +48 -34
- package/buttons/button/Button.sty.js +5 -4
- package/buttons/button/Label.d.ts +2 -2
- package/buttons/button/Label.js +7 -5
- package/buttons/button/Prefix.d.ts +2 -2
- package/buttons/button/Prefix.js +7 -15
- package/buttons/button/Suffix.d.ts +3 -3
- package/buttons/button/Suffix.js +7 -15
- package/buttons/button/types/button-aria.js +1 -0
- package/buttons/button/utils/focus-without-scrolling.js +1 -0
- package/buttons/button/utils/is-virtual-event.js +1 -0
- package/buttons/index.js +1 -0
- package/buttons/intent-button/IntentButton.d.ts +2 -2
- package/buttons/intent-button/IntentButton.js +17 -21
- package/buttons/intent-button/useIntentButton.d.ts +4 -3
- package/buttons/intent-button/useIntentButton.js +1 -0
- package/content/index.js +1 -0
- package/content/progress/ProgressBar.css +71 -71
- package/content/progress/ProgressBar.d.ts +4 -5
- package/content/progress/ProgressBar.js +50 -41
- package/content/progress/ProgressBar.sty.js +6 -5
- package/content/progress/ProgressBarIcon.css +2 -2
- package/content/progress/ProgressBarIcon.d.ts +1 -2
- package/content/progress/ProgressBarIcon.js +7 -5
- package/content/progress/ProgressBarIcon.sty.js +2 -1
- package/content/progress/ProgressBarLabel.css +3 -3
- package/content/progress/ProgressBarLabel.d.ts +1 -2
- package/content/progress/ProgressBarLabel.js +7 -5
- package/content/progress/ProgressBarLabel.sty.js +2 -1
- package/content/progress/ProgressBarValue.css +5 -5
- package/content/progress/ProgressBarValue.d.ts +1 -2
- package/content/progress/ProgressBarValue.js +7 -5
- package/content/progress/ProgressBarValue.sty.js +2 -1
- package/content/progress/ProgressCircle.css +40 -40
- package/content/progress/ProgressCircle.d.ts +1 -2
- package/content/progress/ProgressCircle.js +61 -55
- package/content/progress/ProgressCircle.sty.js +6 -5
- package/content/progress/contexts/SharedProgressBarPropsContext.d.ts +1 -2
- package/content/progress/contexts/SharedProgressBarPropsContext.js +3 -12
- package/content/progress/hooks/useProgressAriaProps.js +1 -0
- package/content/progress/hooks/useProgressBarPropsContext.js +1 -0
- package/content/skeleton/Skeleton.css +6 -6
- package/content/skeleton/Skeleton.d.ts +2 -2
- package/content/skeleton/Skeleton.js +7 -5
- package/content/skeleton/Skeleton.sty.js +2 -1
- package/content/skeleton/SkeletonText.d.ts +2 -2
- package/content/skeleton/SkeletonText.js +10 -18
- package/core/components/app-root/AppRoot.d.ts +3 -3
- package/core/components/app-root/AppRoot.js +16 -24
- package/core/components/app-root/AppRoot.sty.js +1 -0
- package/core/components/focus-scope/FocusScope.d.ts +1 -2
- package/core/components/focus-scope/FocusScope.js +7 -15
- package/core/contexts/FocusContext.js +1 -0
- package/core/hooks/useActiveElement.js +1 -0
- package/core/hooks/useAriaLabelingProps.js +1 -0
- package/core/hooks/useCurrentTheme.js +1 -0
- package/core/hooks/useFocusContext.js +1 -0
- package/core/hooks/useFontsUpdated.js +2 -1
- package/core/hooks/useId.js +1 -0
- package/core/hooks/useMergeRefs.d.ts +2 -2
- package/core/hooks/useMergeRefs.js +1 -0
- package/core/hooks/useSafeForwardProps.js +1 -0
- package/core/index.js +1 -0
- package/core/providers/FocusProvider.d.ts +1 -2
- package/core/providers/FocusProvider.js +7 -15
- package/core/styles/focusRing.css +66 -66
- package/core/styles/focusRing.sty.js +3 -2
- package/core/styles/useFocusRing.d.ts +3 -3
- package/core/styles/useFocusRing.js +1 -0
- package/core/types/a11y-props.js +1 -0
- package/core/types/data-props.js +1 -0
- package/core/types/dom.js +1 -0
- package/core/types/heading.js +1 -0
- package/core/types/masking-props.js +1 -0
- package/core/types/polymorph.d.ts +1 -1
- package/core/types/polymorph.js +1 -0
- package/core/types/styling-props.d.ts +1 -1
- package/core/types/styling-props.js +1 -0
- package/core/types/with-children.d.ts +1 -1
- package/core/types/with-children.js +1 -0
- package/core/utils/_is-string-children.d.ts +2 -2
- package/core/utils/_is-string-children.js +3 -12
- package/core/utils/colorUtils.css +60 -60
- package/core/utils/colorUtils.sty.js +3 -2
- package/core/utils/focus-management/attempt-focus.js +1 -0
- package/core/utils/focus-management/focus-first-descendant.js +1 -0
- package/core/utils/focus-management/get-first-focusable-child.js +1 -0
- package/core/utils/focus-management/get-last-focusable-child.js +1 -0
- package/core/utils/focus-management/is-focusable.js +1 -0
- package/core/utils/isBrowser.js +1 -0
- package/core/utils/merge-props.js +1 -0
- package/core/utils/parse-boolean.js +1 -0
- package/core/utils/seed-random.js +1 -0
- package/core/utils/uuidv4.js +1 -0
- package/esm/buttons/button/Button.css +18 -22
- package/esm/buttons/button/Button.js +49 -35
- package/esm/buttons/button/Button.js.map +2 -2
- package/esm/buttons/button/Button.sty.js +4 -4
- package/esm/buttons/button/Button.sty.js.map +1 -1
- package/esm/buttons/button/Label.js +6 -5
- package/esm/buttons/button/Label.js.map +2 -2
- package/esm/buttons/button/Prefix.js +6 -5
- package/esm/buttons/button/Prefix.js.map +2 -2
- package/esm/buttons/button/Suffix.js +6 -5
- package/esm/buttons/button/Suffix.js.map +2 -2
- package/esm/buttons/intent-button/IntentButton.js +16 -11
- package/esm/buttons/intent-button/IntentButton.js.map +2 -2
- package/esm/buttons/intent-button/useIntentButton.js +4 -1
- package/esm/buttons/intent-button/useIntentButton.js.map +2 -2
- package/esm/content/progress/ProgressBar.css +71 -71
- package/esm/content/progress/ProgressBar.js +53 -41
- package/esm/content/progress/ProgressBar.js.map +2 -2
- package/esm/content/progress/ProgressBar.sty.js +5 -5
- package/esm/content/progress/ProgressBar.sty.js.map +1 -1
- package/esm/content/progress/ProgressBarIcon.css +2 -2
- package/esm/content/progress/ProgressBarIcon.js +6 -5
- package/esm/content/progress/ProgressBarIcon.js.map +2 -2
- package/esm/content/progress/ProgressBarIcon.sty.js +1 -1
- package/esm/content/progress/ProgressBarIcon.sty.js.map +1 -1
- package/esm/content/progress/ProgressBarLabel.css +3 -3
- package/esm/content/progress/ProgressBarLabel.js +6 -5
- package/esm/content/progress/ProgressBarLabel.js.map +2 -2
- package/esm/content/progress/ProgressBarLabel.sty.js +1 -1
- package/esm/content/progress/ProgressBarLabel.sty.js.map +1 -1
- package/esm/content/progress/ProgressBarValue.css +5 -5
- package/esm/content/progress/ProgressBarValue.js +6 -5
- package/esm/content/progress/ProgressBarValue.js.map +2 -2
- package/esm/content/progress/ProgressBarValue.sty.js +1 -1
- package/esm/content/progress/ProgressBarValue.sty.js.map +1 -1
- package/esm/content/progress/ProgressCircle.css +40 -40
- package/esm/content/progress/ProgressCircle.js +60 -55
- package/esm/content/progress/ProgressCircle.js.map +2 -2
- package/esm/content/progress/ProgressCircle.sty.js +5 -5
- package/esm/content/progress/ProgressCircle.sty.js.map +1 -1
- package/esm/content/progress/contexts/SharedProgressBarPropsContext.js +2 -2
- package/esm/content/progress/contexts/SharedProgressBarPropsContext.js.map +2 -2
- package/esm/content/skeleton/Skeleton.css +6 -6
- package/esm/content/skeleton/Skeleton.js +6 -5
- package/esm/content/skeleton/Skeleton.js.map +2 -2
- package/esm/content/skeleton/Skeleton.sty.js +1 -1
- package/esm/content/skeleton/Skeleton.sty.js.map +1 -1
- package/esm/content/skeleton/SkeletonText.js +9 -8
- package/esm/content/skeleton/SkeletonText.js.map +2 -2
- package/esm/core/components/app-root/AppRoot.js +15 -14
- package/esm/core/components/app-root/AppRoot.js.map +2 -2
- package/esm/core/components/focus-scope/FocusScope.js +6 -5
- package/esm/core/components/focus-scope/FocusScope.js.map +2 -2
- package/esm/core/hooks/useFontsUpdated.js +1 -1
- package/esm/core/hooks/useFontsUpdated.js.map +2 -2
- package/esm/core/hooks/useMergeRefs.js +3 -1
- package/esm/core/hooks/useMergeRefs.js.map +2 -2
- package/esm/core/providers/FocusProvider.js +6 -5
- package/esm/core/providers/FocusProvider.js.map +2 -2
- package/esm/core/styles/focusRing.css +66 -66
- package/esm/core/styles/focusRing.sty.js +2 -2
- package/esm/core/styles/focusRing.sty.js.map +1 -1
- package/esm/core/styles/useFocusRing.js.map +1 -1
- package/esm/core/utils/_is-string-children.js +2 -2
- package/esm/core/utils/_is-string-children.js.map +2 -2
- package/esm/core/utils/colorUtils.css +60 -60
- package/esm/core/utils/colorUtils.sty.js +2 -2
- package/esm/core/utils/colorUtils.sty.js.map +1 -1
- package/esm/layouts/container/Container.css +4 -4
- package/esm/layouts/container/Container.js +7 -6
- package/esm/layouts/container/Container.js.map +2 -2
- package/esm/layouts/container/Container.sty.js +1 -1
- package/esm/layouts/container/Container.sty.js.map +1 -1
- package/esm/layouts/divider/Divider.css +6 -6
- package/esm/layouts/divider/Divider.js +3 -2
- package/esm/layouts/divider/Divider.js.map +2 -2
- package/esm/layouts/divider/Divider.sty.js +1 -1
- package/esm/layouts/divider/Divider.sty.js.map +1 -1
- package/esm/layouts/flex/Flex.js +6 -5
- package/esm/layouts/flex/Flex.js.map +2 -2
- package/esm/layouts/grid/Grid.js +6 -5
- package/esm/layouts/grid/Grid.js.map +2 -2
- package/esm/layouts/surface/Surface.css +39 -39
- package/esm/layouts/surface/Surface.js +17 -14
- package/esm/layouts/surface/Surface.js.map +2 -2
- package/esm/layouts/surface/Surface.sty.js +2 -2
- package/esm/layouts/surface/Surface.sty.js.map +1 -1
- package/esm/layouts/surface/variables.sty.js +1 -1
- package/esm/layouts/surface/variables.sty.js.map +1 -1
- package/esm/styles/colorUtils.css +60 -60
- package/esm/styles/colorUtils.sty.js +2 -2
- package/esm/styles/colorUtils.sty.js.map +1 -1
- package/esm/styles/container.css +47 -47
- package/esm/styles/container.sty.js +2 -2
- package/esm/styles/container.sty.js.map +1 -1
- package/esm/styles/ellipsis.css +1 -1
- package/esm/styles/ellipsis.sty.js +1 -1
- package/esm/styles/ellipsis.sty.js.map +1 -1
- package/esm/styles/field.css +153 -153
- package/esm/styles/field.sty.js +2 -2
- package/esm/styles/field.sty.js.map +1 -1
- package/esm/styles/getFlexStyles.js.map +1 -1
- package/esm/styles/getGridStyles.js.map +1 -1
- package/esm/styles/getLayoutSizeStyles.js.map +1 -1
- package/esm/styles/sprinkles.css +262 -262
- package/esm/styles/sprinkles.sty.js +1 -1
- package/esm/styles/sprinkles.sty.js.map +1 -1
- package/esm/styles/textStyle.css +8 -8
- package/esm/styles/textStyle.sty.js +1 -1
- package/esm/styles/textStyle.sty.js.map +1 -1
- package/esm/typography/block-quote/Blockquote.css +2 -2
- package/esm/typography/block-quote/Blockquote.js +6 -5
- package/esm/typography/block-quote/Blockquote.js.map +2 -2
- package/esm/typography/block-quote/Blockquote.sty.js +1 -1
- package/esm/typography/block-quote/Blockquote.sty.js.map +1 -1
- package/esm/typography/code/Code.css +1 -1
- package/esm/typography/code/Code.js +6 -5
- package/esm/typography/code/Code.js.map +2 -2
- package/esm/typography/code/Code.sty.js +1 -1
- package/esm/typography/code/Code.sty.js.map +1 -1
- package/esm/typography/emphasis/Emphasis.css +1 -1
- package/esm/typography/emphasis/Emphasis.js +6 -5
- package/esm/typography/emphasis/Emphasis.js.map +2 -2
- package/esm/typography/emphasis/Emphasis.sty.js +1 -1
- package/esm/typography/emphasis/Emphasis.sty.js.map +1 -1
- package/esm/typography/external-link/ExternalLink.css +6 -6
- package/esm/typography/external-link/ExternalLink.js +22 -16
- package/esm/typography/external-link/ExternalLink.js.map +2 -2
- package/esm/typography/external-link/ExternalLink.sty.js +1 -1
- package/esm/typography/external-link/ExternalLink.sty.js.map +1 -1
- package/esm/typography/heading/Heading.css +7 -7
- package/esm/typography/heading/Heading.js +6 -5
- package/esm/typography/heading/Heading.js.map +2 -2
- package/esm/typography/heading/Heading.sty.js +1 -1
- package/esm/typography/heading/Heading.sty.js.map +1 -1
- package/esm/typography/highlight/Highlight.css +2 -1
- package/esm/typography/highlight/Highlight.js +31 -18
- package/esm/typography/highlight/Highlight.js.map +3 -3
- package/esm/typography/highlight/Highlight.sty.js +1 -1
- package/esm/typography/highlight/Highlight.sty.js.map +1 -1
- package/esm/typography/link/Link.css +4 -4
- package/esm/typography/link/Link.js +6 -5
- package/esm/typography/link/Link.js.map +2 -2
- package/esm/typography/link/Link.sty.js +1 -1
- package/esm/typography/link/Link.sty.js.map +1 -1
- package/esm/typography/list/List.css +4 -4
- package/esm/typography/list/List.js +14 -9
- package/esm/typography/list/List.js.map +2 -2
- package/esm/typography/list/List.sty.js +2 -2
- package/esm/typography/list/List.sty.js.map +1 -1
- package/esm/typography/paragraph/Paragraph.css +3 -3
- package/esm/typography/paragraph/Paragraph.js +6 -5
- package/esm/typography/paragraph/Paragraph.js.map +2 -2
- package/esm/typography/paragraph/Paragraph.sty.js +1 -1
- package/esm/typography/paragraph/Paragraph.sty.js.map +1 -1
- package/esm/typography/strikethrough/Strikethrough.css +1 -1
- package/esm/typography/strikethrough/Strikethrough.js +6 -5
- package/esm/typography/strikethrough/Strikethrough.js.map +2 -2
- package/esm/typography/strikethrough/Strikethrough.sty.js +1 -1
- package/esm/typography/strikethrough/Strikethrough.sty.js.map +1 -1
- package/esm/typography/strong/Strong.css +1 -1
- package/esm/typography/strong/Strong.js +6 -5
- package/esm/typography/strong/Strong.js.map +2 -2
- package/esm/typography/strong/Strong.sty.js +1 -1
- package/esm/typography/strong/Strong.sty.js.map +1 -1
- package/esm/typography/text/Text.css +3 -3
- package/esm/typography/text/Text.js +6 -5
- package/esm/typography/text/Text.js.map +2 -2
- package/esm/typography/text/Text.sty.js +1 -1
- package/esm/typography/text/Text.sty.js.map +1 -1
- package/esm/typography/text-ellipsis/TextEllipsis.css +8 -5
- package/esm/typography/text-ellipsis/TextEllipsis.js +16 -15
- package/esm/typography/text-ellipsis/TextEllipsis.js.map +2 -2
- package/esm/typography/text-ellipsis/TextEllipsis.sty.js +4 -4
- package/esm/typography/text-ellipsis/TextEllipsis.sty.js.map +2 -2
- package/index.js +1 -0
- package/layouts/container/Container.css +4 -4
- package/layouts/container/Container.js +8 -6
- package/layouts/container/Container.sty.js +2 -1
- package/layouts/divider/Divider.css +6 -6
- package/layouts/divider/Divider.d.ts +1 -2
- package/layouts/divider/Divider.js +4 -2
- package/layouts/divider/Divider.sty.js +2 -1
- package/layouts/flex/Flex.js +7 -5
- package/layouts/grid/Grid.d.ts +1 -1
- package/layouts/grid/Grid.js +7 -5
- package/layouts/helpers/spacingToCss.js +1 -0
- package/layouts/hooks/useBreakpoint.js +1 -0
- package/layouts/hooks/useLayoutSizeProps.js +1 -0
- package/layouts/hooks/useLayoutStyles.js +1 -0
- package/layouts/hooks/useMarginProps.js +1 -0
- package/layouts/hooks/usePaddingProps.js +1 -0
- package/layouts/index.js +1 -0
- package/layouts/surface/Surface.css +39 -39
- package/layouts/surface/Surface.js +18 -14
- package/layouts/surface/Surface.sty.js +3 -2
- package/layouts/surface/variables.sty.js +2 -1
- package/layouts/types/layout.types.d.ts +1 -1
- package/layouts/types/layout.types.js +1 -0
- package/package.json +5 -5
- package/styles/colorUtils.css +60 -60
- package/styles/colorUtils.sty.js +3 -2
- package/styles/container.css +47 -47
- package/styles/container.sty.js +3 -2
- package/styles/ellipsis.css +1 -1
- package/styles/ellipsis.sty.js +2 -1
- package/styles/extract-util.js +1 -0
- package/styles/field.css +153 -153
- package/styles/field.sty.js +3 -2
- package/styles/getFlexStyles.d.ts +17 -17
- package/styles/getFlexStyles.js +1 -0
- package/styles/getGapSprinkles.js +1 -0
- package/styles/getGridFlexPositionSprinkles.js +1 -0
- package/styles/getGridStyles.d.ts +22 -22
- package/styles/getGridStyles.js +1 -0
- package/styles/getLayoutSizeStyles.d.ts +1 -1
- package/styles/getLayoutSizeStyles.js +1 -0
- package/styles/getSpacingSprinkles.js +1 -0
- package/styles/index.js +1 -0
- package/styles/safe-sprinkles.js +1 -0
- package/styles/sprinkle-properties.js +1 -0
- package/styles/sprinkles.css +262 -262
- package/styles/sprinkles.sty.js +2 -1
- package/styles/textStyle.css +8 -8
- package/styles/textStyle.sty.js +2 -1
- package/typography/block-quote/Blockquote.css +2 -2
- package/typography/block-quote/Blockquote.d.ts +1 -2
- package/typography/block-quote/Blockquote.js +7 -5
- package/typography/block-quote/Blockquote.sty.js +2 -1
- package/typography/code/Code.css +1 -1
- package/typography/code/Code.d.ts +1 -2
- package/typography/code/Code.js +7 -5
- package/typography/code/Code.sty.js +2 -1
- package/typography/emphasis/Emphasis.css +1 -1
- package/typography/emphasis/Emphasis.d.ts +1 -2
- package/typography/emphasis/Emphasis.js +7 -5
- package/typography/emphasis/Emphasis.sty.js +2 -1
- package/typography/external-link/ExternalLink.css +6 -6
- package/typography/external-link/ExternalLink.d.ts +2 -2
- package/typography/external-link/ExternalLink.js +23 -16
- package/typography/external-link/ExternalLink.sty.js +2 -1
- package/typography/heading/Heading.css +7 -7
- package/typography/heading/Heading.d.ts +1 -2
- package/typography/heading/Heading.js +7 -5
- package/typography/heading/Heading.sty.js +2 -1
- package/typography/highlight/Highlight.css +2 -1
- package/typography/highlight/Highlight.d.ts +1 -1
- package/typography/highlight/Highlight.js +22 -17
- package/typography/highlight/Highlight.sty.js +2 -1
- package/typography/index.js +1 -0
- package/typography/link/Link.css +4 -4
- package/typography/link/Link.d.ts +1 -1
- package/typography/link/Link.js +7 -5
- package/typography/link/Link.sty.js +2 -1
- package/typography/list/List.css +4 -4
- package/typography/list/List.d.ts +1 -2
- package/typography/list/List.js +11 -9
- package/typography/list/List.sty.js +3 -2
- package/typography/paragraph/Paragraph.css +3 -3
- package/typography/paragraph/Paragraph.d.ts +1 -2
- package/typography/paragraph/Paragraph.js +7 -5
- package/typography/paragraph/Paragraph.sty.js +2 -1
- package/typography/strikethrough/Strikethrough.css +1 -1
- package/typography/strikethrough/Strikethrough.d.ts +1 -2
- package/typography/strikethrough/Strikethrough.js +7 -5
- package/typography/strikethrough/Strikethrough.sty.js +2 -1
- package/typography/strong/Strong.css +1 -1
- package/typography/strong/Strong.d.ts +1 -2
- package/typography/strong/Strong.js +7 -5
- package/typography/strong/Strong.sty.js +2 -1
- package/typography/text/Text.css +3 -3
- package/typography/text/Text.js +7 -5
- package/typography/text/Text.sty.js +2 -1
- package/typography/text-ellipsis/TextEllipsis.css +8 -5
- package/typography/text-ellipsis/TextEllipsis.d.ts +2 -2
- package/typography/text-ellipsis/TextEllipsis.js +17 -15
- package/typography/text-ellipsis/TextEllipsis.sty.d.ts +7 -2
- package/typography/text-ellipsis/TextEllipsis.sty.js +5 -4
- package/typography/utils.js +1 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/typography/external-link/ExternalLink.tsx"],
|
|
4
|
-
"sourcesContent": ["import clsx from 'clsx';\nimport
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import clsx from 'clsx';\nimport { forwardRef, type MouseEventHandler } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport { ExternalLinkIcon } from '@dynatrace/strato-icons';\n\nimport { externalLinkCSS } from './ExternalLink.sty.js';\nimport {\n type DataTestId,\n type StylingProps,\n type WithChildren,\n _mergeProps,\n} from '../../core/index.js';\nimport { useFocusRing } from '../../core/styles/useFocusRing.js';\nimport type { MaskingProps } from '../../core/types/masking-props.js';\n\n/**\n * The props for the ExternalLink component.\n * @public\n */\nexport interface ExternalLinkProps\n extends WithChildren,\n StylingProps,\n DataTestId,\n MaskingProps {\n /** The href used for the link. */\n href: string;\n /** Callback handler called on click. */\n onClick?: MouseEventHandler;\n}\n\n/**\n * Use the `ExternalLink` component to link to external resources\n * (i.e., outside the current environment). To link to any internal resources, use the\n * {@link https://developer.dynatrace.com/design/components/typography/Link/ | `Link`}\n * component instead.\n * @public\n */\nexport const ExternalLink = /* @__PURE__ */ forwardRef<\n HTMLAnchorElement,\n ExternalLinkProps\n>((props, ref) => {\n const {\n children,\n 'data-testid': dataTestId,\n 'data-dtrum-mask': dataDtrumMask,\n 'data-dtrum-allow': dataDtrumAllow,\n className: consumerClassName,\n style: consumerStyle,\n ...remainingProps\n } = props;\n\n const { focusProps, focusClassName } = useFocusRing({\n variant: 'primary',\n isMinimal: true,\n });\n\n const intl = useIntl();\n\n return (\n <a\n ref={ref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n data-testid={dataTestId}\n data-dtrum-mask={dataDtrumMask}\n data-dtrum-allow={dataDtrumAllow}\n className={clsx(focusClassName, externalLinkCSS, consumerClassName)}\n style={consumerStyle}\n {..._mergeProps(remainingProps, focusProps)}\n >\n {children}\n <span>\n \n <ExternalLinkIcon\n aria-hidden=\"false\"\n // https://www.w3.org/WAI/tutorials/images/functional/#example-3-icon-image-conveying-information-within-link-text\n aria-label={intl.formatMessage({\n defaultMessage: 'Opening the link in a new window',\n id: 'JzYy8MUVfPcyf4l5',\n description:\n 'External link icon that describes the external link icon',\n })}\n />\n </span>\n </a>\n );\n});\n\n(ExternalLink as typeof ExternalLink & { displayName: string }).displayName =\n 'ExternalLink';\n"],
|
|
5
|
+
"mappings": "AAwEM,SAEE,KAFF;AAxEN,OAAO,UAAU;AACjB,SAAS,kBAA0C;AACnD,SAAS,eAAe;AAExB,SAAS,wBAAwB;AAEjC,SAAS,uBAAuB;AAChC;AAAA,EAIE;AAAA,OACK;AACP,SAAS,oBAAoB;AAyBtB,MAAM,eAA+B,2BAG1C,CAAC,OAAO,QAAQ;AAChB,QAAM;AAAA,IACJ;AAAA,IACA,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,IACpB,WAAW;AAAA,IACX,OAAO;AAAA,IACP,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,EAAE,YAAY,eAAe,IAAI,aAAa;AAAA,IAClD,SAAS;AAAA,IACT,WAAW;AAAA,EACb,CAAC;AAED,QAAM,OAAO,QAAQ;AAErB,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,QAAO;AAAA,MACP,KAAI;AAAA,MACJ,eAAa;AAAA,MACb,mBAAiB;AAAA,MACjB,oBAAkB;AAAA,MAClB,WAAW,KAAK,gBAAgB,iBAAiB,iBAAiB;AAAA,MAClE,OAAO;AAAA,MACN,GAAG,YAAY,gBAAgB,UAAU;AAAA,MAEzC;AAAA;AAAA,QACD,qBAAC,UAAK;AAAA;AAAA,UAEJ;AAAA,YAAC;AAAA;AAAA,cACC,eAAY;AAAA,cAEZ,cAAY,KAAK,cAAc;AAAA,gBAC7B,gBAAgB;AAAA,gBAChB,IAAI;AAAA,gBACJ,aACE;AAAA,cACJ,CAAC;AAAA;AAAA,UACH;AAAA,WACF;AAAA;AAAA;AAAA,EACF;AAEJ,CAAC;AAEA,aAA+D,cAC9D;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/typography/external-link/ExternalLink.css.ts"],
|
|
4
|
-
"sourcesContent": ["import './ExternalLink.css';\nexport var externalLinkCSS = '_1v1skpy0-1-
|
|
4
|
+
"sourcesContent": ["import './ExternalLink.css';\nexport var externalLinkCSS = '_1v1skpy0-1-6-0';"],
|
|
5
5
|
"mappings": "AAAA,OAAO;AACA,IAAI,kBAAkB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
._5ei34w0-1-
|
|
1
|
+
._5ei34w0-1-6-0 {
|
|
2
2
|
margin: 0;
|
|
3
3
|
overflow-wrap: break-word;
|
|
4
4
|
font-style: normal;
|
|
5
5
|
color: inherit;
|
|
6
6
|
}
|
|
7
|
-
._5ei34w1-1-
|
|
7
|
+
._5ei34w1-1-6-0 {
|
|
8
8
|
font-family: var(--dt-typography-heading-level-1-family, DynatraceFlow,Roboto,Helvetica,sans-serif);
|
|
9
9
|
font-size: var(--dt-typography-heading-level-1-size, 32px);
|
|
10
10
|
font-weight: var(--dt-typography-heading-level-1-weight, 600);
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
text-transform: var(--dt-typography-heading-level-1-text-transform, none);
|
|
13
13
|
text-decoration: var(--dt-typography-heading-level-1-text-decoration, none);
|
|
14
14
|
}
|
|
15
|
-
._5ei34w2-1-
|
|
15
|
+
._5ei34w2-1-6-0 {
|
|
16
16
|
font-family: var(--dt-typography-heading-level-2-family, DynatraceFlow,Roboto,Helvetica,sans-serif);
|
|
17
17
|
font-size: var(--dt-typography-heading-level-2-size, 28px);
|
|
18
18
|
font-weight: var(--dt-typography-heading-level-2-weight, 600);
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
text-transform: var(--dt-typography-heading-level-2-text-transform, none);
|
|
21
21
|
text-decoration: var(--dt-typography-heading-level-2-text-decoration, none);
|
|
22
22
|
}
|
|
23
|
-
._5ei34w3-1-
|
|
23
|
+
._5ei34w3-1-6-0 {
|
|
24
24
|
font-family: var(--dt-typography-heading-level-3-family, DynatraceFlow,Roboto,Helvetica,sans-serif);
|
|
25
25
|
font-size: var(--dt-typography-heading-level-3-size, 24px);
|
|
26
26
|
font-weight: var(--dt-typography-heading-level-3-weight, 600);
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
text-transform: var(--dt-typography-heading-level-3-text-transform, none);
|
|
29
29
|
text-decoration: var(--dt-typography-heading-level-3-text-decoration, none);
|
|
30
30
|
}
|
|
31
|
-
._5ei34w4-1-
|
|
31
|
+
._5ei34w4-1-6-0 {
|
|
32
32
|
font-family: var(--dt-typography-heading-level-4-family, DynatraceFlow,Roboto,Helvetica,sans-serif);
|
|
33
33
|
font-size: var(--dt-typography-heading-level-4-size, 20px);
|
|
34
34
|
font-weight: var(--dt-typography-heading-level-4-weight, 600);
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
text-transform: var(--dt-typography-heading-level-4-text-transform, none);
|
|
37
37
|
text-decoration: var(--dt-typography-heading-level-4-text-decoration, none);
|
|
38
38
|
}
|
|
39
|
-
._5ei34w5-1-
|
|
39
|
+
._5ei34w5-1-6-0 {
|
|
40
40
|
font-family: var(--dt-typography-heading-level-5-family, DynatraceFlow,Roboto,Helvetica,sans-serif);
|
|
41
41
|
font-size: var(--dt-typography-heading-level-5-size, 16px);
|
|
42
42
|
font-weight: var(--dt-typography-heading-level-5-weight, 600);
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
text-transform: var(--dt-typography-heading-level-5-text-transform, none);
|
|
45
45
|
text-decoration: var(--dt-typography-heading-level-5-text-decoration, none);
|
|
46
46
|
}
|
|
47
|
-
._5ei34w6-1-
|
|
47
|
+
._5ei34w6-1-6-0 {
|
|
48
48
|
font-family: var(--dt-typography-heading-level-6-family, DynatraceFlow,Roboto,Helvetica,sans-serif);
|
|
49
49
|
font-size: var(--dt-typography-heading-level-6-size, 14px);
|
|
50
50
|
font-weight: var(--dt-typography-heading-level-6-weight, 600);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
1
2
|
import clsx from "clsx";
|
|
2
|
-
import
|
|
3
|
+
import { forwardRef } from "react";
|
|
3
4
|
import { headingCSS } from "./Heading.sty.js";
|
|
4
5
|
const Heading = /* @__PURE__ */ forwardRef((props, forwardedRef) => {
|
|
5
6
|
const {
|
|
@@ -15,7 +16,7 @@ const Heading = /* @__PURE__ */ forwardRef((props, forwardedRef) => {
|
|
|
15
16
|
} = props;
|
|
16
17
|
const visualLevel = level ?? 1;
|
|
17
18
|
const HeadingTag = as ?? `h${visualLevel}`;
|
|
18
|
-
return /* @__PURE__ */
|
|
19
|
+
return /* @__PURE__ */ jsx(
|
|
19
20
|
HeadingTag,
|
|
20
21
|
{
|
|
21
22
|
ref: forwardedRef,
|
|
@@ -24,9 +25,9 @@ const Heading = /* @__PURE__ */ forwardRef((props, forwardedRef) => {
|
|
|
24
25
|
"data-dtrum-allow": dataDtrumAllow,
|
|
25
26
|
className: clsx(headingCSS({ visualLevel }), consumerClassName),
|
|
26
27
|
style: consumerStyle,
|
|
27
|
-
...remainingProps
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
...remainingProps,
|
|
29
|
+
children
|
|
30
|
+
}
|
|
30
31
|
);
|
|
31
32
|
});
|
|
32
33
|
Heading.displayName = "Heading";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/typography/heading/Heading.tsx"],
|
|
4
|
-
"sourcesContent": ["import clsx from 'clsx';\nimport
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import clsx from 'clsx';\nimport { forwardRef } from 'react';\n\nimport { headingCSS } from './Heading.sty.js';\nimport {\n type DataTestId,\n type StylingProps,\n type WithChildren,\n type MaskingProps,\n} from '../../core/index.js';\nimport type { DOMProps } from '../../core/types/dom.js';\nimport type { _HeadingTag } from '../../core/types/heading.js';\n\n/**\n * Props used for the Heading component\n * @public\n */\nexport interface HeadingProps\n extends DOMProps,\n WithChildren,\n StylingProps,\n DataTestId,\n MaskingProps {\n /**\n * The visual level of the heading.\n * @defaultValue 1\n */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n /**\n * The polymorphed HTML tag that determines the semantic level of the heading.\n * @defaultValue 'h1'\n */\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n}\n\n/**\n * Use the `Heading` to render semantic HTML heading elements (`h1`, `h2`, etc.).\n * The component allows you to independently define both the visual and the semantic level of the heading.\n * @public\n */\nexport const Heading = /* @__PURE__ */ forwardRef<\n HTMLHeadingElement,\n HeadingProps\n>((props, forwardedRef) => {\n const {\n level,\n children,\n as,\n 'data-testid': dataTestId,\n 'data-dtrum-mask': dataDtrumMask,\n 'data-dtrum-allow': dataDtrumAllow,\n className: consumerClassName,\n style: consumerStyle,\n ...remainingProps\n } = props;\n\n const visualLevel = level ?? 1;\n // semantic level\n const HeadingTag: _HeadingTag = as ?? (`h${visualLevel}` as _HeadingTag);\n\n return (\n <HeadingTag\n ref={forwardedRef}\n data-testid={dataTestId}\n data-dtrum-mask={dataDtrumMask}\n data-dtrum-allow={dataDtrumAllow}\n className={clsx(headingCSS({ visualLevel }), consumerClassName)}\n style={consumerStyle}\n {...remainingProps}\n >\n {children}\n </HeadingTag>\n );\n});\n\n(Heading as typeof Heading & { displayName: string }).displayName = 'Heading';\n"],
|
|
5
|
+
"mappings": "AA6DI;AA7DJ,OAAO,UAAU;AACjB,SAAS,kBAAkB;AAE3B,SAAS,kBAAkB;AAqCpB,MAAM,UAA0B,2BAGrC,CAAC,OAAO,iBAAiB;AACzB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,IACpB,WAAW;AAAA,IACX,OAAO;AAAA,IACP,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,cAAc,SAAS;AAE7B,QAAM,aAA0B,MAAO,IAAI,WAAW;AAEtD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,eAAa;AAAA,MACb,mBAAiB;AAAA,MACjB,oBAAkB;AAAA,MAClB,WAAW,KAAK,WAAW,EAAE,YAAY,CAAC,GAAG,iBAAiB;AAAA,MAC9D,OAAO;AAAA,MACN,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ,CAAC;AAEA,QAAqD,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./Heading.css";
|
|
2
2
|
import { createRuntimeFn as _7a468 } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
3
|
-
var headingCSS = _7a468({ defaultClassName: "_5ei34w0-1-
|
|
3
|
+
var headingCSS = _7a468({ defaultClassName: "_5ei34w0-1-6-0", variantClassNames: { visualLevel: { "1": "_5ei34w1-1-6-0", "2": "_5ei34w2-1-6-0", "3": "_5ei34w3-1-6-0", "4": "_5ei34w4-1-6-0", "5": "_5ei34w5-1-6-0", "6": "_5ei34w6-1-6-0" } }, defaultVariants: {}, compoundVariants: [] });
|
|
4
4
|
export {
|
|
5
5
|
headingCSS
|
|
6
6
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/typography/heading/Heading.css.ts"],
|
|
4
|
-
"sourcesContent": ["import './Heading.css';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var headingCSS = _7a468({defaultClassName:'_5ei34w0-1-
|
|
4
|
+
"sourcesContent": ["import './Heading.css';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var headingCSS = _7a468({defaultClassName:'_5ei34w0-1-6-0',variantClassNames:{visualLevel:{'1':'_5ei34w1-1-6-0','2':'_5ei34w2-1-6-0','3':'_5ei34w3-1-6-0','4':'_5ei34w4-1-6-0','5':'_5ei34w5-1-6-0','6':'_5ei34w6-1-6-0'}},defaultVariants:{},compoundVariants:[]});"],
|
|
5
5
|
"mappings": "AAAA,OAAO;AACP,SAAS,mBAAmB,cAAc;AACnC,IAAI,aAAa,OAAO,EAAC,kBAAiB,kBAAiB,mBAAkB,EAAC,aAAY,EAAC,KAAI,kBAAiB,KAAI,kBAAiB,KAAI,kBAAiB,KAAI,kBAAiB,KAAI,kBAAiB,KAAI,iBAAgB,EAAC,GAAE,iBAAgB,CAAC,GAAE,kBAAiB,CAAC,EAAC,CAAC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
|
+
import { Fragment, jsx } from "react/jsx-runtime";
|
|
1
2
|
import clsx from "clsx";
|
|
2
|
-
import
|
|
3
|
-
|
|
3
|
+
import {
|
|
4
|
+
Children,
|
|
5
|
+
cloneElement,
|
|
6
|
+
createElement,
|
|
7
|
+
Fragment as Fragment2,
|
|
8
|
+
isValidElement
|
|
9
|
+
} from "react";
|
|
10
|
+
import {
|
|
11
|
+
FormattedMessage,
|
|
12
|
+
useIntl
|
|
13
|
+
} from "react-intl";
|
|
4
14
|
import { isElement } from "react-is";
|
|
5
15
|
import { highlightCSS } from "./Highlight.sty.js";
|
|
6
16
|
const HTML_CHARS_OVERRIDES = [
|
|
@@ -19,7 +29,7 @@ function highlightChildren(intl, children, term, caseSensitive, dataTestId, data
|
|
|
19
29
|
}
|
|
20
30
|
return term ? [term] : [];
|
|
21
31
|
})();
|
|
22
|
-
return terms.length > 0 ?
|
|
32
|
+
return terms.length > 0 ? Children.map(
|
|
23
33
|
children,
|
|
24
34
|
(child) => highlightRecursive(
|
|
25
35
|
intl,
|
|
@@ -32,12 +42,15 @@ function highlightChildren(intl, children, term, caseSensitive, dataTestId, data
|
|
|
32
42
|
)
|
|
33
43
|
) : children;
|
|
34
44
|
}
|
|
45
|
+
function isFormattedMessageElement(node) {
|
|
46
|
+
return isElement(node) && node.type !== void 0 && node.type === FormattedMessage;
|
|
47
|
+
}
|
|
35
48
|
function highlightRecursive(intl, sourceElement, terms, caseSensitive, dataTestId, dataDtrumMask, dataDtrumAllow) {
|
|
36
49
|
if (!sourceElement) {
|
|
37
50
|
return sourceElement;
|
|
38
51
|
}
|
|
39
52
|
let elementToHighlight = sourceElement;
|
|
40
|
-
if (
|
|
53
|
+
if (isFormattedMessageElement(elementToHighlight)) {
|
|
41
54
|
const { id, description, defaultMessage, values } = elementToHighlight.props;
|
|
42
55
|
const messageDescriptor = {
|
|
43
56
|
id,
|
|
@@ -48,7 +61,7 @@ function highlightRecursive(intl, sourceElement, terms, caseSensitive, dataTestI
|
|
|
48
61
|
if (Array.isArray(elementToHighlight)) {
|
|
49
62
|
return highlightRecursive(
|
|
50
63
|
intl,
|
|
51
|
-
|
|
64
|
+
createElement(Fragment2, { children: elementToHighlight }),
|
|
52
65
|
terms,
|
|
53
66
|
caseSensitive,
|
|
54
67
|
dataTestId,
|
|
@@ -57,8 +70,8 @@ function highlightRecursive(intl, sourceElement, terms, caseSensitive, dataTestI
|
|
|
57
70
|
);
|
|
58
71
|
}
|
|
59
72
|
}
|
|
60
|
-
if (
|
|
61
|
-
const children =
|
|
73
|
+
if (isValidElement(elementToHighlight)) {
|
|
74
|
+
const children = Children.map(
|
|
62
75
|
elementToHighlight.props.children,
|
|
63
76
|
(child) => highlightRecursive(
|
|
64
77
|
intl,
|
|
@@ -70,7 +83,7 @@ function highlightRecursive(intl, sourceElement, terms, caseSensitive, dataTestI
|
|
|
70
83
|
dataDtrumAllow
|
|
71
84
|
)
|
|
72
85
|
);
|
|
73
|
-
return
|
|
86
|
+
return cloneElement(
|
|
74
87
|
elementToHighlight,
|
|
75
88
|
elementToHighlight.props,
|
|
76
89
|
children
|
|
@@ -95,24 +108,24 @@ function highlightLeafElement(textContent, terms, caseSensitive, dataTestId, dat
|
|
|
95
108
|
);
|
|
96
109
|
const termsInLowerCase = terms.map((t) => t.toLowerCase());
|
|
97
110
|
return getTextTokens(sanitizedTextContent, terms, caseSensitive).map(
|
|
98
|
-
(token) => termsInLowerCase.includes(token.toLowerCase()) ? /* @__PURE__ */
|
|
111
|
+
(token) => termsInLowerCase.includes(token.toLowerCase()) ? /* @__PURE__ */ jsx(
|
|
99
112
|
"mark",
|
|
100
113
|
{
|
|
101
114
|
role: "mark",
|
|
102
115
|
className: clsx(highlightCSS),
|
|
103
116
|
"data-dtrum-mask": dataDtrumMask,
|
|
104
|
-
"data-dtrum-allow": dataDtrumAllow
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
) : /* @__PURE__ */
|
|
117
|
+
"data-dtrum-allow": dataDtrumAllow,
|
|
118
|
+
children: token
|
|
119
|
+
}
|
|
120
|
+
) : /* @__PURE__ */ jsx(
|
|
108
121
|
"span",
|
|
109
122
|
{
|
|
110
123
|
style: {
|
|
111
124
|
whiteSpace: "pre-wrap",
|
|
112
125
|
flex: "none"
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
|
|
126
|
+
},
|
|
127
|
+
children: token
|
|
128
|
+
}
|
|
116
129
|
)
|
|
117
130
|
);
|
|
118
131
|
}
|
|
@@ -134,7 +147,7 @@ const Highlight = (props) => {
|
|
|
134
147
|
"data-dtrum-allow": dataDtrumAllow
|
|
135
148
|
} = props;
|
|
136
149
|
const intl = useIntl();
|
|
137
|
-
return /* @__PURE__ */
|
|
150
|
+
return /* @__PURE__ */ jsx(Fragment, { children: highlightChildren(
|
|
138
151
|
intl,
|
|
139
152
|
children,
|
|
140
153
|
term,
|
|
@@ -142,7 +155,7 @@ const Highlight = (props) => {
|
|
|
142
155
|
dataTestId,
|
|
143
156
|
dataDtrumMask,
|
|
144
157
|
dataDtrumAllow
|
|
145
|
-
));
|
|
158
|
+
) });
|
|
146
159
|
};
|
|
147
160
|
Highlight.displayName = "Highlight";
|
|
148
161
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/typography/highlight/Highlight.tsx"],
|
|
4
|
-
"sourcesContent": ["import clsx from 'clsx';\nimport
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["import clsx from 'clsx';\nimport {\n Children,\n cloneElement,\n createElement,\n Fragment,\n isValidElement,\n type PropsWithChildren,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport {\n FormattedMessage,\n useIntl,\n type IntlShape,\n type MessageDescriptor,\n} from 'react-intl';\nimport { isElement } from 'react-is';\n\nimport { highlightCSS } from './Highlight.sty.js';\nimport { type DataTestId, type WithChildren } from '../../core/index.js';\nimport type { MaskingProps } from '../../core/types/masking-props.js';\n\n/**\n * The props for the Heading component.\n * @public\n */\nexport interface HighlightProps extends WithChildren, DataTestId, MaskingProps {\n /**\n * Either a substring or an array of multiple different substrings that\n * should be highlighted in the projected content.\n * Every occurrence of the string(s) is highlighted accordingly.\n */\n term: string | string[];\n\n /**\n * Property that determines whether the highlighting search is case-sensitive.\n * If set to `true`, the component searches for case sensitive occurrences.\n * @defaultValue false\n */\n caseSensitive?: boolean;\n}\n\nconst HTML_CHARS_OVERRIDES: [RegExp, string][] = [\n [/</g, '<'],\n [/>/g, '>'],\n [/&/g, '&'],\n [/ /g, ' '],\n];\n\n/** Escapes all characters that could be dangerous for a regular expression */\nfunction escapeRegExp(text: string): string {\n return text.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\n\n/** Highlights all occurences of a list of terms within a ReactNode. */\nfunction highlightChildren(\n intl: IntlShape,\n children: ReactNode,\n term: string | string[],\n caseSensitive: boolean,\n dataTestId?: string,\n dataDtrumMask?: boolean,\n dataDtrumAllow?: boolean,\n) {\n const terms = (() => {\n if (Array.isArray(term)) {\n return term.filter((t) => t);\n }\n\n return term ? [term] : [];\n })();\n\n return terms.length > 0\n ? Children.map(children, (child: ReactNode) =>\n highlightRecursive(\n intl,\n child,\n terms,\n caseSensitive,\n dataTestId,\n dataDtrumMask,\n dataDtrumAllow,\n ),\n )\n : children;\n}\n\nfunction isFormattedMessageElement(\n node: ReactNode,\n // Needs to overlap with the types from the FormattedMessage function\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): node is ReactElement<MessageDescriptor & { values: Record<string, any> }> {\n return (\n isElement(node) && node.type !== undefined && node.type === FormattedMessage\n );\n}\n\n/**\n * Iterates over all children of a ReactNode recursively to look\n * for a list of terms and highlights them.\n */\nfunction highlightRecursive(\n intl: IntlShape,\n sourceElement: ReactNode,\n terms: string[],\n caseSensitive: boolean,\n dataTestId?: string,\n dataDtrumMask?: boolean,\n dataDtrumAllow?: boolean,\n): ReactNode {\n if (!sourceElement) {\n return sourceElement;\n }\n\n let elementToHighlight = sourceElement;\n\n // For `FormattedMessage` components explicitly retrieve its node(s)\n if (isFormattedMessageElement(elementToHighlight)) {\n const { id, description, defaultMessage, values } =\n elementToHighlight.props;\n\n const messageDescriptor = {\n id,\n description,\n defaultMessage,\n };\n elementToHighlight = intl.formatMessage(messageDescriptor, values);\n\n if (Array.isArray(elementToHighlight)) {\n return highlightRecursive(\n intl,\n createElement(Fragment, { children: elementToHighlight }),\n terms,\n caseSensitive,\n dataTestId,\n dataDtrumMask,\n dataDtrumAllow,\n );\n }\n }\n\n if (isValidElement(elementToHighlight)) {\n const children = Children.map(\n (elementToHighlight.props as PropsWithChildren).children,\n (child) =>\n highlightRecursive(\n intl,\n child,\n terms,\n caseSensitive,\n dataTestId,\n dataDtrumMask,\n dataDtrumAllow,\n ),\n );\n\n return cloneElement(\n elementToHighlight,\n elementToHighlight.props as PropsWithChildren,\n children,\n );\n }\n\n return highlightLeafElement(\n elementToHighlight as string | number,\n terms,\n caseSensitive,\n dataTestId,\n dataDtrumMask,\n dataDtrumAllow,\n );\n}\n\n/** Highlights parts of the text that match a certain group of terms. */\nfunction highlightLeafElement(\n textContent: string | number,\n terms: string[],\n caseSensitive: boolean,\n dataTestId?: string,\n dataDtrumMask?: boolean,\n dataDtrumAllow?: boolean,\n): ReactNode {\n if (terms.length === 0) {\n return textContent;\n }\n\n const sanitizedTextContent = HTML_CHARS_OVERRIDES.reduce(\n (text, [needle, replacement]) => text.replace(needle, replacement),\n `${textContent}`,\n );\n const termsInLowerCase = terms.map((t) => t.toLowerCase());\n\n return getTextTokens(sanitizedTextContent, terms, caseSensitive).map(\n (token: string) =>\n termsInLowerCase.includes(token.toLowerCase()) ? (\n <mark\n role=\"mark\"\n className={clsx(highlightCSS)}\n data-dtrum-mask={dataDtrumMask}\n data-dtrum-allow={dataDtrumAllow}\n >\n {token}\n </mark>\n ) : (\n <span\n style={{\n whiteSpace: 'pre-wrap',\n flex: 'none',\n }}\n >\n {token}\n </span>\n ),\n );\n}\n\n/**\n * Splits text into an array of strings where a given list of terms\n * acts as separator strings.\n */\nfunction getTextTokens(\n textContent: string | number,\n terms: string[],\n caseSensitive: boolean,\n): string[] {\n const flags = caseSensitive ? 'gm' : 'gmi';\n const regExp = new RegExp(\n `(${terms.map((t) => escapeRegExp(t)).join('|')})`,\n flags,\n );\n\n return textContent\n .toString()\n .split(regExp)\n .filter((s) => s.length > 0);\n}\n\n/**\n * Use the `Highlight` component to highlight one or more substrings within a\n * text.\n * @public\n */\nexport const Highlight = (props: HighlightProps): ReactElement => {\n const {\n children,\n term,\n caseSensitive = false,\n 'data-testid': dataTestId,\n 'data-dtrum-mask': dataDtrumMask,\n 'data-dtrum-allow': dataDtrumAllow,\n } = props;\n const intl = useIntl();\n\n return (\n <>\n {highlightChildren(\n intl,\n children,\n term,\n caseSensitive,\n dataTestId,\n dataDtrumMask,\n dataDtrumAllow,\n )}\n </>\n );\n};\n\n(Highlight as typeof Highlight & { displayName: string }).displayName =\n 'Highlight';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Fragment"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/typography/highlight/Highlight.css.ts"],
|
|
4
|
-
"sourcesContent": ["import './Highlight.css';\nexport var highlightCSS = '_lajjl30-1-
|
|
4
|
+
"sourcesContent": ["import './Highlight.css';\nexport var highlightCSS = '_lajjl30-1-6-0';"],
|
|
5
5
|
"mappings": "AAAA,OAAO;AACA,IAAI,eAAe;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
._1iksxp40-1-
|
|
1
|
+
._1iksxp40-1-6-0 {
|
|
2
2
|
display: inline;
|
|
3
3
|
color: var(--dt-colors-text-primary-default, #454cc9);
|
|
4
4
|
text-decoration: underline;
|
|
5
5
|
overflow-wrap: anywhere;
|
|
6
6
|
}
|
|
7
|
-
._1iksxp40-1-
|
|
7
|
+
._1iksxp40-1-6-0:hover {
|
|
8
8
|
color: var(--dt-colors-text-primary-default-hover, #3332ae);
|
|
9
9
|
}
|
|
10
|
-
._1iksxp40-1-
|
|
10
|
+
._1iksxp40-1-6-0:active {
|
|
11
11
|
color: var(--dt-colors-text-primary-default-active, #241193);
|
|
12
12
|
}
|
|
13
|
-
._1iksxp40-1-
|
|
13
|
+
._1iksxp40-1-6-0:focus-visible {
|
|
14
14
|
text-decoration: none;
|
|
15
15
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
1
2
|
import clsx from "clsx";
|
|
2
|
-
import
|
|
3
|
+
import { forwardRef } from "react";
|
|
3
4
|
import { linkCSS } from "./Link.sty.js";
|
|
4
5
|
import {
|
|
5
6
|
_mergeProps
|
|
@@ -21,7 +22,7 @@ const Link = /* @__PURE__ */ forwardRef(
|
|
|
21
22
|
isMinimal: true
|
|
22
23
|
});
|
|
23
24
|
const LinkTag = as || "a";
|
|
24
|
-
return /* @__PURE__ */
|
|
25
|
+
return /* @__PURE__ */ jsx(
|
|
25
26
|
LinkTag,
|
|
26
27
|
{
|
|
27
28
|
ref,
|
|
@@ -36,9 +37,9 @@ const Link = /* @__PURE__ */ forwardRef(
|
|
|
36
37
|
// polymorphic inheritance.
|
|
37
38
|
remainingProps,
|
|
38
39
|
focusProps
|
|
39
|
-
)
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
),
|
|
41
|
+
children
|
|
42
|
+
}
|
|
42
43
|
);
|
|
43
44
|
}
|
|
44
45
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/typography/link/Link.tsx"],
|
|
4
|
-
"sourcesContent": ["import clsx from 'clsx';\nimport
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import clsx from 'clsx';\nimport { type ElementType, forwardRef, type ReactElement } from 'react';\n\nimport { linkCSS } from './Link.sty.js';\nimport {\n type PolymorphicComponentProps,\n type DataTestId,\n type StylingProps,\n type WithChildren,\n _mergeProps,\n} from '../../core/index.js';\nimport { useFocusRing } from '../../core/styles/useFocusRing.js';\nimport type { MaskingProps } from '../../core/types/masking-props.js';\n\n/**\n * The props for the Link component.\n * @public\n */\nexport type LinkProps<E extends ElementType> = PolymorphicComponentProps<\n E,\n WithChildren & StylingProps & DataTestId & MaskingProps\n>;\n\n/**\n * Use the `Link` component to link to any internal resources.\n * For external resources (i.e., outside the current environment), use the\n * {@link https://developer.dynatrace.com/design/components/typography/ExternalLink/ | `ExternalLink`}\n * component instead.\n * @public\n */\nexport const Link: <E extends ElementType = 'a'>(\n props: LinkProps<E>,\n) => ReactElement | null = /* @__PURE__ */ forwardRef(\n <E extends ElementType>(\n {\n children,\n as,\n 'data-testid': dataTestId,\n 'data-dtrum-mask': dataDtrumMask,\n 'data-dtrum-allow': dataDtrumAllow,\n className: consumerClassName,\n style: consumerStyle,\n ...remainingProps\n }: LinkProps<E>,\n ref: typeof remainingProps.ref,\n ) => {\n const { focusProps, focusClassName } = useFocusRing({\n variant: 'primary',\n isMinimal: true,\n });\n const LinkTag = as || 'a';\n\n return (\n <LinkTag\n ref={ref}\n data-testid={dataTestId}\n data-dtrum-mask={dataDtrumMask}\n data-dtrum-allow={dataDtrumAllow}\n className={clsx(focusClassName, linkCSS, consumerClassName)}\n style={consumerStyle}\n {..._mergeProps(\n // Need to cast this one as the inference of mergeProps would generate\n // a not allowed overlap. The remainingProps type is too complex due to the\n // polymorphic inheritance.\n remainingProps as Record<string, unknown>,\n focusProps,\n )}\n >\n {children}\n </LinkTag>\n );\n },\n);\n\n(Link as typeof Link & { displayName: string }).displayName = 'Link';\n"],
|
|
5
|
+
"mappings": "AAqDM;AArDN,OAAO,UAAU;AACjB,SAA2B,kBAAqC;AAEhE,SAAS,eAAe;AACxB;AAAA,EAKE;AAAA,OACK;AACP,SAAS,oBAAoB;AAmBtB,MAAM,OAE8B;AAAA,EACzC,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,IACpB,WAAW;AAAA,IACX,OAAO;AAAA,IACP,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,EAAE,YAAY,eAAe,IAAI,aAAa;AAAA,MAClD,SAAS;AAAA,MACT,WAAW;AAAA,IACb,CAAC;AACD,UAAM,UAAU,MAAM;AAEtB,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,mBAAiB;AAAA,QACjB,oBAAkB;AAAA,QAClB,WAAW,KAAK,gBAAgB,SAAS,iBAAiB;AAAA,QAC1D,OAAO;AAAA,QACN,GAAG;AAAA;AAAA;AAAA;AAAA,UAIF;AAAA,UACA;AAAA,QACF;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEC,KAA+C,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/typography/link/Link.css.ts"],
|
|
4
|
-
"sourcesContent": ["import './Link.css';\nexport var linkCSS = '_1iksxp40-1-
|
|
4
|
+
"sourcesContent": ["import './Link.css';\nexport var linkCSS = '_1iksxp40-1-6-0';"],
|
|
5
5
|
"mappings": "AAAA,OAAO;AACA,IAAI,UAAU;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
._16276mt0-1-
|
|
1
|
+
._16276mt0-1-6-0 {
|
|
2
2
|
margin: 0;
|
|
3
3
|
padding-left: var(--dt-spacings-size-40, 40px);
|
|
4
4
|
}
|
|
5
|
-
._16276mt0-1-
|
|
5
|
+
._16276mt0-1-6-0 ._16276mt0-1-6-0 {
|
|
6
6
|
margin-block: var(--dt-spacings-size-4, 4px);
|
|
7
7
|
padding-left: var(--dt-spacings-size-28, 28px);
|
|
8
8
|
}
|
|
9
|
-
._16276mt1-1-
|
|
9
|
+
._16276mt1-1-6-0 {
|
|
10
10
|
position: relative;
|
|
11
11
|
overflow-wrap: break-word;
|
|
12
12
|
margin-block: var(--dt-spacings-size-2, 2px);
|
|
13
13
|
}
|
|
14
|
-
._16276mt1-1-
|
|
14
|
+
._16276mt1-1-6-0::marker {
|
|
15
15
|
font-weight: var(--dt-typography-text-base-emphasized-weight, 500);
|
|
16
16
|
}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
1
2
|
import clsx from "clsx";
|
|
2
|
-
import
|
|
3
|
+
import {
|
|
4
|
+
Children,
|
|
5
|
+
forwardRef,
|
|
6
|
+
isValidElement
|
|
7
|
+
} from "react";
|
|
3
8
|
import { listCSS, listItemCSS } from "./List.sty.js";
|
|
4
9
|
import { Text } from "../text/Text.js";
|
|
5
10
|
function interleaveListItems(listItems) {
|
|
6
11
|
const items = [];
|
|
7
|
-
|
|
8
|
-
if (
|
|
12
|
+
Children.forEach(listItems, (listItem) => {
|
|
13
|
+
if (isValidElement(listItem)) {
|
|
9
14
|
if (listItem.type === List) {
|
|
10
15
|
if (items.length === 0) {
|
|
11
16
|
items.push([listItem]);
|
|
@@ -19,13 +24,13 @@ function interleaveListItems(listItems) {
|
|
|
19
24
|
});
|
|
20
25
|
return items.map((values, index) => {
|
|
21
26
|
const itemKey = `list-item-${getItemKey(values, index)}`;
|
|
22
|
-
return /* @__PURE__ */
|
|
27
|
+
return /* @__PURE__ */ jsx("li", { className: listItemCSS, children: values }, itemKey);
|
|
23
28
|
});
|
|
24
29
|
}
|
|
25
30
|
function getItemKey(values, index) {
|
|
26
31
|
const isArray = Array.isArray(values);
|
|
27
32
|
const value = isArray ? values?.[0] : values;
|
|
28
|
-
if (
|
|
33
|
+
if (isValidElement(value)) {
|
|
29
34
|
if (value.key) {
|
|
30
35
|
return value.key;
|
|
31
36
|
} else if (value.props && value.props.children) {
|
|
@@ -53,7 +58,7 @@ const List = /* @__PURE__ */ forwardRef(
|
|
|
53
58
|
style: consumerStyle,
|
|
54
59
|
...remainingProps
|
|
55
60
|
} = props;
|
|
56
|
-
return /* @__PURE__ */
|
|
61
|
+
return /* @__PURE__ */ jsx(
|
|
57
62
|
Text,
|
|
58
63
|
{
|
|
59
64
|
ref,
|
|
@@ -68,9 +73,9 @@ const List = /* @__PURE__ */ forwardRef(
|
|
|
68
73
|
"data-dtrum-allow": dataDtrumAllow,
|
|
69
74
|
className: clsx(listCSS, consumerClassName),
|
|
70
75
|
style: consumerStyle,
|
|
71
|
-
...remainingProps
|
|
72
|
-
|
|
73
|
-
|
|
76
|
+
...remainingProps,
|
|
77
|
+
children: interleaveListItems(children)
|
|
78
|
+
}
|
|
74
79
|
);
|
|
75
80
|
}
|
|
76
81
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/typography/list/List.tsx"],
|
|
4
|
-
"sourcesContent": ["import clsx from 'clsx';\nimport
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import clsx from 'clsx';\nimport {\n Children,\n forwardRef,\n isValidElement,\n type ForwardedRef,\n type PropsWithChildren,\n type ReactNode,\n} from 'react';\n\nimport { listCSS, listItemCSS } from './List.sty.js';\nimport { type DataTestId } from '../../core/types/data-props.js';\nimport { type MaskingProps } from '../../core/types/masking-props.js';\nimport { type StylingProps } from '../../core/types/styling-props.js';\nimport { type WithChildren } from '../../core/types/with-children.js';\nimport { Text } from '../text/Text.js';\n\n/**\n * The props for the Link component.\n * @public\n */\nexport interface ListProps<TOrdered extends boolean = false>\n extends WithChildren,\n StylingProps,\n DataTestId,\n MaskingProps {\n /**\n * Whether the List is ordered or not. This changes whether numbers or bullets are used.\n * @defaultValue false\n */\n ordered?: TOrdered;\n /**\n * Sets the text style for the List.\n * @defaultValue 'base'\n */\n textStyle?: 'base' | 'base-emphasized' | 'small' | 'small-emphasized';\n /**\n * Sets the text style for the List.\n * @defaultValue 'text'\n */\n fontStyle?: 'text' | 'code';\n /**\n * Sets the starting number of the first item in an ordered list.\n * The value is always treated as an integer (floor).\n * @defaultValue 1\n */\n start?: number;\n}\n\n/** Maps a list of (potentially) nested list items to HTML list structure. */\nfunction interleaveListItems(listItems: ReactNode) {\n const items: ReactNode[][] = [];\n\n Children.forEach(listItems, (listItem) => {\n if (isValidElement(listItem)) {\n if (listItem.type === List) {\n if (items.length === 0) {\n items.push([listItem]);\n } else {\n items[items.length - 1].push(listItem);\n }\n } else {\n items.push([listItem]);\n }\n }\n });\n\n return items.map((values, index) => {\n const itemKey = `list-item-${getItemKey(values, index)}`;\n return (\n <li key={itemKey} className={listItemCSS}>\n {values}\n </li>\n );\n });\n}\n\n/**\n * Generates a key for a list item. We try to avoid\n * generating [Object object] by looking down levels\n * recursively. If there is an existing key defined in\n * a descendant uses that as part of the key otherwise\n * if we get a string value, use that. Otherwise uses\n * the index if nothing was found.\n * @param values - nodes inside the list item\n * @param index - current zero based index\n * @returns a key generated for the item\n */\nfunction getItemKey(values: ReactNode, index: number): string | number {\n const isArray = Array.isArray(values);\n const value = isArray ? values?.[0] : values;\n if (isValidElement<PropsWithChildren>(value)) {\n if (value.key) {\n return value.key;\n } else if (value.props && value.props.children) {\n return getItemKey(value.props.children, index);\n }\n return value as unknown as string | number;\n }\n\n if (value === undefined) {\n return index;\n }\n\n return value as unknown as string | number;\n}\n\n/**\n * The `List` component groups a set of related content in a list and can be arbitrarily nested.\n * List items are preceded by either a consecutive number (for ordered lists) or a bullet point\n * (for unordered lists).\n * @public\n */\nexport const List = /* @__PURE__ */ forwardRef(\n <TOrdered extends boolean = false>(\n props: ListProps<TOrdered>,\n ref: ForwardedRef<\n TOrdered extends true ? HTMLOListElement : HTMLUListElement\n >,\n ) => {\n const {\n children,\n ordered = undefined,\n textStyle,\n fontStyle,\n start = 1,\n 'data-testid': dataTestId,\n 'data-dtrum-mask': dataDtrumMask,\n 'data-dtrum-allow': dataDtrumAllow,\n className: consumerClassName,\n style: consumerStyle,\n ...remainingProps\n } = props;\n\n return (\n <Text\n ref={ref}\n as={ordered ? 'ol' : 'ul'}\n {...(ordered && {\n start,\n })}\n textStyle={textStyle}\n fontStyle={fontStyle}\n data-testid={dataTestId}\n data-dtrum-mask={dataDtrumMask}\n data-dtrum-allow={dataDtrumAllow}\n className={clsx(listCSS, consumerClassName)}\n style={consumerStyle}\n {...remainingProps}\n >\n {interleaveListItems(children)}\n </Text>\n );\n },\n);\n\n(List as typeof List & { displayName: string }).displayName = 'List';\n"],
|
|
5
|
+
"mappings": "AAsEM;AAtEN,OAAO,UAAU;AACjB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAEP,SAAS,SAAS,mBAAmB;AAKrC,SAAS,YAAY;AAmCrB,SAAS,oBAAoB,WAAsB;AACjD,QAAM,QAAuB,CAAC;AAE9B,WAAS,QAAQ,WAAW,CAAC,aAAa;AACxC,QAAI,eAAe,QAAQ,GAAG;AAC5B,UAAI,SAAS,SAAS,MAAM;AAC1B,YAAI,MAAM,WAAW,GAAG;AACtB,gBAAM,KAAK,CAAC,QAAQ,CAAC;AAAA,QACvB,OAAO;AACL,gBAAM,MAAM,SAAS,CAAC,EAAE,KAAK,QAAQ;AAAA,QACvC;AAAA,MACF,OAAO;AACL,cAAM,KAAK,CAAC,QAAQ,CAAC;AAAA,MACvB;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO,MAAM,IAAI,CAAC,QAAQ,UAAU;AAClC,UAAM,UAAU,aAAa,WAAW,QAAQ,KAAK,CAAC;AACtD,WACE,oBAAC,QAAiB,WAAW,aAC1B,oBADM,OAET;AAAA,EAEJ,CAAC;AACH;AAaA,SAAS,WAAW,QAAmB,OAAgC;AACrE,QAAM,UAAU,MAAM,QAAQ,MAAM;AACpC,QAAM,QAAQ,UAAU,SAAS,CAAC,IAAI;AACtC,MAAI,eAAkC,KAAK,GAAG;AAC5C,QAAI,MAAM,KAAK;AACb,aAAO,MAAM;AAAA,IACf,WAAW,MAAM,SAAS,MAAM,MAAM,UAAU;AAC9C,aAAO,WAAW,MAAM,MAAM,UAAU,KAAK;AAAA,IAC/C;AACA,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAQO,MAAM,OAAuB;AAAA,EAClC,CACE,OACA,QAGG;AACH,UAAM;AAAA,MACJ;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,oBAAoB;AAAA,MACpB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,GAAG;AAAA,IACL,IAAI;AAEJ,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,IAAI,UAAU,OAAO;AAAA,QACpB,GAAI,WAAW;AAAA,UACd;AAAA,QACF;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAa;AAAA,QACb,mBAAiB;AAAA,QACjB,oBAAkB;AAAA,QAClB,WAAW,KAAK,SAAS,iBAAiB;AAAA,QAC1C,OAAO;AAAA,QACN,GAAG;AAAA,QAEH,8BAAoB,QAAQ;AAAA;AAAA,IAC/B;AAAA,EAEJ;AACF;AAEC,KAA+C,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/typography/list/List.css.ts"],
|
|
4
|
-
"sourcesContent": ["import './List.css';\nexport var listCSS = '_16276mt0-1-
|
|
4
|
+
"sourcesContent": ["import './List.css';\nexport var listCSS = '_16276mt0-1-6-0';\nexport var listItemCSS = '_16276mt1-1-6-0';"],
|
|
5
5
|
"mappings": "AAAA,OAAO;AACA,IAAI,UAAU;AACd,IAAI,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|