@dynatrace/strato-components 1.10.0 → 1.12.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.
Files changed (192) hide show
  1. package/buttons/button/Button.css +18 -18
  2. package/buttons/button/Button.d.ts +2 -3
  3. package/buttons/button/Button.sty.js +4 -4
  4. package/content/progress/ProgressBar.css +73 -73
  5. package/content/progress/ProgressBar.js +2 -1
  6. package/content/progress/ProgressBar.sty.js +5 -5
  7. package/content/progress/ProgressBarIcon.css +2 -2
  8. package/content/progress/ProgressBarIcon.sty.js +1 -1
  9. package/content/progress/ProgressBarLabel.css +3 -3
  10. package/content/progress/ProgressBarLabel.sty.js +1 -1
  11. package/content/progress/ProgressBarValue.css +5 -5
  12. package/content/progress/ProgressBarValue.sty.js +1 -1
  13. package/content/progress/ProgressCircle.css +41 -41
  14. package/content/progress/ProgressCircle.js +2 -1
  15. package/content/progress/ProgressCircle.sty.js +5 -5
  16. package/content/skeleton/Skeleton.css +19 -25
  17. package/content/skeleton/Skeleton.js +11 -2
  18. package/content/skeleton/Skeleton.sty.d.ts +4 -0
  19. package/content/skeleton/Skeleton.sty.js +10 -2
  20. package/content/skeleton/SkeletonText.js +43 -31
  21. package/content/skeleton/utils.d.ts +19 -0
  22. package/content/skeleton/utils.js +79 -0
  23. package/core/components/app-root/AppRoot.css +32 -21
  24. package/core/hooks/useId.d.ts +24 -0
  25. package/core/hooks/useId.js +31 -0
  26. package/core/index.d.ts +1 -0
  27. package/core/index.js +3 -1
  28. package/core/styles/focusRing.css +61 -61
  29. package/core/styles/focusRing.sty.js +2 -2
  30. package/core/utils/colorUtils.css +60 -60
  31. package/core/utils/colorUtils.sty.js +2 -2
  32. package/esm/buttons/button/Button.css +18 -18
  33. package/esm/buttons/button/Button.js.map +2 -2
  34. package/esm/buttons/button/Button.sty.js +4 -4
  35. package/esm/buttons/button/Button.sty.js.map +1 -1
  36. package/esm/content/progress/ProgressBar.css +73 -73
  37. package/esm/content/progress/ProgressBar.js +1 -1
  38. package/esm/content/progress/ProgressBar.js.map +2 -2
  39. package/esm/content/progress/ProgressBar.sty.js +5 -5
  40. package/esm/content/progress/ProgressBar.sty.js.map +1 -1
  41. package/esm/content/progress/ProgressBarIcon.css +2 -2
  42. package/esm/content/progress/ProgressBarIcon.sty.js +1 -1
  43. package/esm/content/progress/ProgressBarIcon.sty.js.map +1 -1
  44. package/esm/content/progress/ProgressBarLabel.css +3 -3
  45. package/esm/content/progress/ProgressBarLabel.sty.js +1 -1
  46. package/esm/content/progress/ProgressBarLabel.sty.js.map +1 -1
  47. package/esm/content/progress/ProgressBarValue.css +5 -5
  48. package/esm/content/progress/ProgressBarValue.sty.js +1 -1
  49. package/esm/content/progress/ProgressBarValue.sty.js.map +1 -1
  50. package/esm/content/progress/ProgressCircle.css +41 -41
  51. package/esm/content/progress/ProgressCircle.js +2 -1
  52. package/esm/content/progress/ProgressCircle.js.map +2 -2
  53. package/esm/content/progress/ProgressCircle.sty.js +5 -5
  54. package/esm/content/progress/ProgressCircle.sty.js.map +1 -1
  55. package/esm/content/skeleton/Skeleton.css +19 -25
  56. package/esm/content/skeleton/Skeleton.js +13 -4
  57. package/esm/content/skeleton/Skeleton.js.map +2 -2
  58. package/esm/content/skeleton/Skeleton.sty.js +10 -2
  59. package/esm/content/skeleton/Skeleton.sty.js.map +2 -2
  60. package/esm/content/skeleton/SkeletonText.js +44 -32
  61. package/esm/content/skeleton/SkeletonText.js.map +3 -3
  62. package/esm/content/skeleton/utils.js +54 -0
  63. package/esm/content/skeleton/utils.js.map +7 -0
  64. package/esm/core/components/app-root/AppRoot.css +32 -21
  65. package/esm/core/hooks/useId.js +12 -0
  66. package/esm/core/hooks/useId.js.map +7 -0
  67. package/esm/core/index.js +3 -1
  68. package/esm/core/index.js.map +2 -2
  69. package/esm/core/styles/focusRing.css +61 -61
  70. package/esm/core/styles/focusRing.sty.js +2 -2
  71. package/esm/core/styles/focusRing.sty.js.map +1 -1
  72. package/esm/core/utils/colorUtils.css +60 -60
  73. package/esm/core/utils/colorUtils.sty.js +2 -2
  74. package/esm/core/utils/colorUtils.sty.js.map +1 -1
  75. package/esm/layouts/container/Container.css +5 -5
  76. package/esm/layouts/container/Container.sty.js +1 -1
  77. package/esm/layouts/container/Container.sty.js.map +1 -1
  78. package/esm/layouts/divider/Divider.css +6 -6
  79. package/esm/layouts/divider/Divider.sty.js +1 -1
  80. package/esm/layouts/divider/Divider.sty.js.map +1 -1
  81. package/esm/layouts/surface/Surface.css +39 -39
  82. package/esm/layouts/surface/Surface.sty.js +2 -2
  83. package/esm/layouts/surface/Surface.sty.js.map +1 -1
  84. package/esm/layouts/surface/variables.sty.js +1 -1
  85. package/esm/layouts/surface/variables.sty.js.map +1 -1
  86. package/esm/styles/colorUtils.css +60 -60
  87. package/esm/styles/colorUtils.sty.js +2 -2
  88. package/esm/styles/colorUtils.sty.js.map +1 -1
  89. package/esm/styles/container.css +47 -47
  90. package/esm/styles/container.sty.js +2 -2
  91. package/esm/styles/container.sty.js.map +1 -1
  92. package/esm/styles/ellipsis.css +1 -1
  93. package/esm/styles/ellipsis.sty.js +1 -1
  94. package/esm/styles/ellipsis.sty.js.map +1 -1
  95. package/esm/styles/field.css +153 -153
  96. package/esm/styles/field.sty.js +2 -2
  97. package/esm/styles/field.sty.js.map +1 -1
  98. package/esm/styles/sprinkles.css +262 -262
  99. package/esm/styles/sprinkles.sty.js +1 -1
  100. package/esm/styles/sprinkles.sty.js.map +1 -1
  101. package/esm/styles/textStyle.css +8 -8
  102. package/esm/styles/textStyle.sty.js +1 -1
  103. package/esm/styles/textStyle.sty.js.map +1 -1
  104. package/esm/typography/block-quote/Blockquote.css +2 -2
  105. package/esm/typography/block-quote/Blockquote.sty.js +1 -1
  106. package/esm/typography/block-quote/Blockquote.sty.js.map +1 -1
  107. package/esm/typography/code/Code.css +2 -2
  108. package/esm/typography/code/Code.sty.js +1 -1
  109. package/esm/typography/code/Code.sty.js.map +1 -1
  110. package/esm/typography/emphasis/Emphasis.css +1 -1
  111. package/esm/typography/emphasis/Emphasis.sty.js +1 -1
  112. package/esm/typography/emphasis/Emphasis.sty.js.map +1 -1
  113. package/esm/typography/external-link/ExternalLink.css +5 -5
  114. package/esm/typography/external-link/ExternalLink.sty.js +1 -1
  115. package/esm/typography/external-link/ExternalLink.sty.js.map +1 -1
  116. package/esm/typography/heading/Heading.css +7 -7
  117. package/esm/typography/heading/Heading.sty.js +1 -1
  118. package/esm/typography/heading/Heading.sty.js.map +1 -1
  119. package/esm/typography/highlight/Highlight.css +2 -2
  120. package/esm/typography/highlight/Highlight.sty.js +2 -2
  121. package/esm/typography/highlight/Highlight.sty.js.map +1 -1
  122. package/esm/typography/link/Link.css +3 -6
  123. package/esm/typography/link/Link.js +7 -4
  124. package/esm/typography/link/Link.js.map +2 -2
  125. package/esm/typography/link/Link.sty.js +2 -2
  126. package/esm/typography/link/Link.sty.js.map +2 -2
  127. package/esm/typography/list/List.css +4 -4
  128. package/esm/typography/list/List.sty.js +2 -2
  129. package/esm/typography/list/List.sty.js.map +1 -1
  130. package/esm/typography/paragraph/Paragraph.css +3 -3
  131. package/esm/typography/paragraph/Paragraph.sty.js +1 -1
  132. package/esm/typography/paragraph/Paragraph.sty.js.map +1 -1
  133. package/esm/typography/strikethrough/Strikethrough.css +1 -1
  134. package/esm/typography/strikethrough/Strikethrough.sty.js +1 -1
  135. package/esm/typography/strikethrough/Strikethrough.sty.js.map +1 -1
  136. package/esm/typography/strong/Strong.css +1 -1
  137. package/esm/typography/strong/Strong.sty.js +1 -1
  138. package/esm/typography/strong/Strong.sty.js.map +1 -1
  139. package/esm/typography/text/Text.css +3 -3
  140. package/esm/typography/text/Text.sty.js +1 -1
  141. package/esm/typography/text/Text.sty.js.map +1 -1
  142. package/esm/typography/text-ellipsis/TextEllipsis.css +6 -6
  143. package/esm/typography/text-ellipsis/TextEllipsis.sty.js +2 -2
  144. package/esm/typography/text-ellipsis/TextEllipsis.sty.js.map +1 -1
  145. package/layouts/container/Container.css +5 -5
  146. package/layouts/container/Container.sty.js +1 -1
  147. package/layouts/divider/Divider.css +6 -6
  148. package/layouts/divider/Divider.sty.js +1 -1
  149. package/layouts/surface/Surface.css +39 -39
  150. package/layouts/surface/Surface.sty.js +2 -2
  151. package/layouts/surface/variables.sty.js +1 -1
  152. package/package.json +4 -4
  153. package/styles/colorUtils.css +60 -60
  154. package/styles/colorUtils.sty.js +2 -2
  155. package/styles/container.css +47 -47
  156. package/styles/container.sty.js +2 -2
  157. package/styles/ellipsis.css +1 -1
  158. package/styles/ellipsis.sty.js +1 -1
  159. package/styles/field.css +153 -153
  160. package/styles/field.sty.js +2 -2
  161. package/styles/sprinkles.css +262 -262
  162. package/styles/sprinkles.sty.js +1 -1
  163. package/styles/textStyle.css +8 -8
  164. package/styles/textStyle.sty.js +1 -1
  165. package/typography/block-quote/Blockquote.css +2 -2
  166. package/typography/block-quote/Blockquote.sty.js +1 -1
  167. package/typography/code/Code.css +2 -2
  168. package/typography/code/Code.sty.js +1 -1
  169. package/typography/emphasis/Emphasis.css +1 -1
  170. package/typography/emphasis/Emphasis.sty.js +1 -1
  171. package/typography/external-link/ExternalLink.css +5 -5
  172. package/typography/external-link/ExternalLink.sty.js +1 -1
  173. package/typography/heading/Heading.css +7 -7
  174. package/typography/heading/Heading.sty.js +1 -1
  175. package/typography/highlight/Highlight.css +2 -2
  176. package/typography/highlight/Highlight.sty.js +2 -2
  177. package/typography/link/Link.css +3 -6
  178. package/typography/link/Link.js +7 -4
  179. package/typography/link/Link.sty.d.ts +1 -1
  180. package/typography/link/Link.sty.js +2 -2
  181. package/typography/list/List.css +4 -4
  182. package/typography/list/List.sty.js +2 -2
  183. package/typography/paragraph/Paragraph.css +3 -3
  184. package/typography/paragraph/Paragraph.sty.js +1 -1
  185. package/typography/strikethrough/Strikethrough.css +1 -1
  186. package/typography/strikethrough/Strikethrough.sty.js +1 -1
  187. package/typography/strong/Strong.css +1 -1
  188. package/typography/strong/Strong.sty.js +1 -1
  189. package/typography/text/Text.css +3 -3
  190. package/typography/text/Text.sty.js +1 -1
  191. package/typography/text-ellipsis/TextEllipsis.css +6 -6
  192. package/typography/text-ellipsis/TextEllipsis.sty.js +2 -2
@@ -1,7 +1,19 @@
1
- import { jsx } from "react/jsx-runtime";
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { Skeleton } from "./Skeleton.js";
4
- import { Flex } from "../../layouts/flex/Flex.js";
3
+ import { skeletonSvgCSS } from "./Skeleton.sty.js";
4
+ import { SkeletonDrawer, SkeletonGradient } from "./utils.js";
5
+ import { useId } from "../../core/index.js";
6
+ const lineHeight = 12;
7
+ const linePadding = 8;
8
+ const baseYOffset = linePadding * 0.5;
9
+ const lineCapSize = lineHeight * 0.5;
10
+ const lineStep = lineHeight + linePadding;
11
+ const getSkeletonLinesMargin = (line, lines) => {
12
+ if (lines === 1) {
13
+ return 0;
14
+ }
15
+ return (line + 2) % 3 * lineHeight;
16
+ };
5
17
  const SkeletonText = forwardRef(
6
18
  (props, forwardedRef) => {
7
19
  const {
@@ -12,41 +24,41 @@ const SkeletonText = forwardRef(
12
24
  "data-testid": dataTestId,
13
25
  ...remainingProps
14
26
  } = props;
15
- const getSkeletonLinesMargin = (line, lines2) => {
16
- if (lines2 === 1) {
17
- return 0;
18
- }
19
- return (line + 2) % 3 * 12;
20
- };
21
- const getSkeletonLines = (lines2) => {
22
- const render = [];
23
- for (let line = 0; line < lines2; line++) {
24
- const width2 = `calc(100% - ${getSkeletonLinesMargin(line, lines2)}px)`;
25
- render.push(
26
- /* @__PURE__ */ jsx(
27
- Skeleton,
28
- {
29
- width: width2,
30
- height: "12px"
31
- },
32
- `${lines2}-${line}`
33
- )
34
- );
35
- }
36
- return render;
37
- };
27
+ const maskId = useId();
28
+ const gradientId = useId();
38
29
  return /* @__PURE__ */ jsx(
39
- Flex,
30
+ "div",
40
31
  {
41
32
  "data-testid": dataTestId,
42
33
  ref: forwardedRef,
43
- flexDirection: "column",
44
- gap: 8,
45
- paddingY: 4,
46
34
  className: consumerClassName,
47
- style: { width, ...consumerStyle },
35
+ style: {
36
+ width,
37
+ height: `${lineStep * lines}px`,
38
+ ...consumerStyle
39
+ },
48
40
  ...remainingProps,
49
- children: getSkeletonLines(lines)
41
+ children: /* @__PURE__ */ jsxs("svg", { className: skeletonSvgCSS, children: [
42
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx(SkeletonGradient, { id: gradientId }) }),
43
+ /* @__PURE__ */ jsx("mask", { id: maskId, children: new Array(lines).fill(null).map((_, lineIndex) => /* @__PURE__ */ jsx(
44
+ "rect",
45
+ {
46
+ y: baseYOffset + lineStep * lineIndex,
47
+ height: lineHeight,
48
+ rx: lineCapSize,
49
+ fill: "white",
50
+ style: {
51
+ // we also substract 1px, to make sure the line cap is fully within the svg, and isn't cut
52
+ width: `calc(100% - 1px - ${getSkeletonLinesMargin(
53
+ lineIndex,
54
+ lines
55
+ )}px)`
56
+ }
57
+ },
58
+ `${lines}-${lineIndex}`
59
+ )) }),
60
+ /* @__PURE__ */ jsx("g", { mask: `url(#${maskId})`, children: /* @__PURE__ */ jsx(SkeletonDrawer, { gradientId }) })
61
+ ] })
50
62
  }
51
63
  );
52
64
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/content/skeleton/SkeletonText.tsx"],
4
- "sourcesContent": ["import { type CSSProperties, forwardRef, type ReactNode } from 'react';\n\nimport { Skeleton } from './Skeleton.js';\nimport { type DataTestId } from '../../core/types/data-props.js';\nimport { type StylingProps } from '../../core/types/styling-props.js';\nimport { Flex } from '../../layouts/flex/Flex.js';\n\n/**\n * Accepted properties for SkeletonText\n * @public\n */\nexport interface SkeletonTextProps extends StylingProps, DataTestId {\n /**\n * Width of the SkeletonText placeholder.\n * @defaultValue 100%\n */\n width?: CSSProperties['width'];\n /**\n * Number of Lines of the SkeletonText placeholder.\n * @defaultValue 3\n */\n lines?: number;\n}\n\n/**\n * The `SkeletonText` component renders a specified number of placeholder boxes for lines of text with an animated background.\n * @public\n */\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n (props, forwardedRef) => {\n const {\n width = '100%',\n lines = 3,\n className: consumerClassName,\n style: consumerStyle,\n 'data-testid': dataTestId,\n ...remainingProps\n }: SkeletonTextProps = props;\n\n const getSkeletonLinesMargin = (line: number, lines: number) => {\n if (lines === 1) {\n // do not add any margin for single-line SkeletonTexts\n return 0;\n }\n return ((line + 2) % 3) * 12;\n };\n\n const getSkeletonLines = (lines: number) => {\n const render: ReactNode[] = [];\n for (let line = 0; line < lines; line++) {\n const width = `calc(100% - ${getSkeletonLinesMargin(line, lines)}px)`;\n render.push(\n <Skeleton\n // key needs to be individual every time we render, because it resets the animation with every child drawn again.\n key={`${lines}-${line}`}\n width={width}\n height=\"12px\"\n />,\n );\n }\n return render;\n };\n\n return (\n <Flex\n data-testid={dataTestId}\n ref={forwardedRef}\n flexDirection=\"column\"\n gap={8}\n paddingY={4}\n className={consumerClassName}\n style={{ width: width, ...consumerStyle }}\n {...remainingProps}\n >\n {getSkeletonLines(lines)}\n </Flex>\n );\n },\n);\n"],
5
- "mappings": "AAoDU;AApDV,SAA6B,kBAAkC;AAE/D,SAAS,gBAAgB;AAGzB,SAAS,YAAY;AAuBd,MAAM,eAAe;AAAA,EAC1B,CAAC,OAAO,iBAAiB;AACvB,UAAM;AAAA,MACJ,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,OAAO;AAAA,MACP,eAAe;AAAA,MACf,GAAG;AAAA,IACL,IAAuB;AAEvB,UAAM,yBAAyB,CAAC,MAAcA,WAAkB;AAC9D,UAAIA,WAAU,GAAG;AAEf,eAAO;AAAA,MACT;AACA,cAAS,OAAO,KAAK,IAAK;AAAA,IAC5B;AAEA,UAAM,mBAAmB,CAACA,WAAkB;AAC1C,YAAM,SAAsB,CAAC;AAC7B,eAAS,OAAO,GAAG,OAAOA,QAAO,QAAQ;AACvC,cAAMC,SAAQ,eAAe,uBAAuB,MAAMD,MAAK,CAAC;AAChE,eAAO;AAAA,UACL;AAAA,YAAC;AAAA;AAAA,cAGC,OAAOC;AAAA,cACP,QAAO;AAAA;AAAA,YAFF,GAAGD,MAAK,IAAI,IAAI;AAAA,UAGvB;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAa;AAAA,QACb,KAAK;AAAA,QACL,eAAc;AAAA,QACd,KAAK;AAAA,QACL,UAAU;AAAA,QACV,WAAW;AAAA,QACX,OAAO,EAAE,OAAc,GAAG,cAAc;AAAA,QACvC,GAAG;AAAA,QAEH,2BAAiB,KAAK;AAAA;AAAA,IACzB;AAAA,EAEJ;AACF;",
6
- "names": ["lines", "width"]
4
+ "sourcesContent": ["import { type CSSProperties, forwardRef } from 'react';\n\nimport { skeletonSvgCSS } from './Skeleton.sty.js';\nimport { SkeletonDrawer, SkeletonGradient } from './utils.js';\nimport { useId } from '../../core/index.js';\nimport { type DataTestId } from '../../core/types/data-props.js';\nimport { type StylingProps } from '../../core/types/styling-props.js';\n\n/**\n * Accepted properties for SkeletonText\n * @public\n */\nexport interface SkeletonTextProps extends StylingProps, DataTestId {\n /**\n * Width of the SkeletonText placeholder.\n * @defaultValue 100%\n */\n width?: CSSProperties['width'];\n /**\n * Number of Lines of the SkeletonText placeholder.\n * @defaultValue 3\n */\n lines?: number;\n}\n\nconst lineHeight = 12;\nconst linePadding = 8;\n\nconst baseYOffset = linePadding * 0.5;\nconst lineCapSize = lineHeight * 0.5;\nconst lineStep = lineHeight + linePadding;\n\nconst getSkeletonLinesMargin = (line: number, lines: number) => {\n if (lines === 1) {\n // do not add any margin for single-line SkeletonTexts\n return 0;\n }\n return ((line + 2) % 3) * lineHeight;\n};\n\n/**\n * The `SkeletonText` component renders a specified number of placeholder boxes for lines of text with an animated background.\n * @public\n */\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n (props, forwardedRef) => {\n const {\n width = '100%',\n lines = 3,\n className: consumerClassName,\n style: consumerStyle,\n 'data-testid': dataTestId,\n ...remainingProps\n }: SkeletonTextProps = props;\n\n const maskId = useId();\n const gradientId = useId();\n\n return (\n <div\n data-testid={dataTestId}\n ref={forwardedRef}\n className={consumerClassName}\n style={{\n width: width,\n height: `${lineStep * lines}px`,\n ...consumerStyle,\n }}\n {...remainingProps}\n >\n <svg className={skeletonSvgCSS}>\n <defs>\n <SkeletonGradient id={gradientId} />\n </defs>\n <mask id={maskId}>\n {new Array(lines).fill(null).map((_, lineIndex) => (\n <rect\n key={`${lines}-${lineIndex}`}\n y={baseYOffset + lineStep * lineIndex}\n height={lineHeight}\n rx={lineCapSize}\n fill=\"white\"\n style={{\n // we also substract 1px, to make sure the line cap is fully within the svg, and isn't cut\n width: `calc(100% - 1px - ${getSkeletonLinesMargin(\n lineIndex,\n lines,\n )}px)`,\n }}\n />\n ))}\n </mask>\n\n <g mask={`url(#${maskId})`}>\n <SkeletonDrawer gradientId={gradientId} />\n </g>\n </svg>\n </div>\n );\n },\n);\n"],
5
+ "mappings": "AAsEQ,SAEI,KAFJ;AAtER,SAA6B,kBAAkB;AAE/C,SAAS,sBAAsB;AAC/B,SAAS,gBAAgB,wBAAwB;AACjD,SAAS,aAAa;AAqBtB,MAAM,aAAa;AACnB,MAAM,cAAc;AAEpB,MAAM,cAAc,cAAc;AAClC,MAAM,cAAc,aAAa;AACjC,MAAM,WAAW,aAAa;AAE9B,MAAM,yBAAyB,CAAC,MAAc,UAAkB;AAC9D,MAAI,UAAU,GAAG;AAEf,WAAO;AAAA,EACT;AACA,UAAS,OAAO,KAAK,IAAK;AAC5B;AAMO,MAAM,eAAe;AAAA,EAC1B,CAAC,OAAO,iBAAiB;AACvB,UAAM;AAAA,MACJ,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,OAAO;AAAA,MACP,eAAe;AAAA,MACf,GAAG;AAAA,IACL,IAAuB;AAEvB,UAAM,SAAS,MAAM;AACrB,UAAM,aAAa,MAAM;AAEzB,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAa;AAAA,QACb,KAAK;AAAA,QACL,WAAW;AAAA,QACX,OAAO;AAAA,UACL;AAAA,UACA,QAAQ,GAAG,WAAW,KAAK;AAAA,UAC3B,GAAG;AAAA,QACL;AAAA,QACC,GAAG;AAAA,QAEJ,+BAAC,SAAI,WAAW,gBACd;AAAA,8BAAC,UACC,8BAAC,oBAAiB,IAAI,YAAY,GACpC;AAAA,UACA,oBAAC,UAAK,IAAI,QACP,cAAI,MAAM,KAAK,EAAE,KAAK,IAAI,EAAE,IAAI,CAAC,GAAG,cACnC;AAAA,YAAC;AAAA;AAAA,cAEC,GAAG,cAAc,WAAW;AAAA,cAC5B,QAAQ;AAAA,cACR,IAAI;AAAA,cACJ,MAAK;AAAA,cACL,OAAO;AAAA;AAAA,gBAEL,OAAO,qBAAqB;AAAA,kBAC1B;AAAA,kBACA;AAAA,gBACF,CAAC;AAAA,cACH;AAAA;AAAA,YAXK,GAAG,KAAK,IAAI,SAAS;AAAA,UAY5B,CACD,GACH;AAAA,UAEA,oBAAC,OAAE,MAAM,QAAQ,MAAM,KACrB,8BAAC,kBAAe,YAAwB,GAC1C;AAAA,WACF;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;",
6
+ "names": []
7
7
  }
@@ -0,0 +1,54 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import TimingsJs from "@dynatrace/strato-design-tokens/timings-js";
3
+ import {
4
+ skeletonSvgBackgroundFillCSS,
5
+ skeletonSvgGradientCSS,
6
+ skeletonSvgGradientRectCSS
7
+ } from "./Skeleton.sty.js";
8
+ const gradientWidth = 400;
9
+ const SkeletonGradient = (props) => /* @__PURE__ */ jsxs(
10
+ "linearGradient",
11
+ {
12
+ className: skeletonSvgGradientCSS,
13
+ id: props.id,
14
+ x1: "0",
15
+ x2: "1",
16
+ children: [
17
+ /* @__PURE__ */ jsx("stop", { offset: "0%", stopOpacity: "0.0" }),
18
+ /* @__PURE__ */ jsx("stop", { offset: "50%", stopOpacity: "1.0" }),
19
+ /* @__PURE__ */ jsx("stop", { offset: "100%", stopOpacity: "0.0" })
20
+ ]
21
+ }
22
+ );
23
+ const SkeletonBackgroundFill = () => /* @__PURE__ */ jsx("rect", { className: skeletonSvgBackgroundFillCSS });
24
+ const SkeletonDrawer = (props) => /* @__PURE__ */ jsxs(Fragment, { children: [
25
+ /* @__PURE__ */ jsx(SkeletonBackgroundFill, {}),
26
+ /* @__PURE__ */ jsx(
27
+ "rect",
28
+ {
29
+ className: skeletonSvgGradientRectCSS,
30
+ width: `${gradientWidth}px`,
31
+ height: "100%",
32
+ fill: `url(#${props.gradientId})`,
33
+ children: /* @__PURE__ */ jsx(
34
+ "animate",
35
+ {
36
+ attributeName: "x",
37
+ from: `-${gradientWidth}px`,
38
+ to: "100%",
39
+ dur: `${TimingsJs.Slowest.Gentle}s`,
40
+ repeatCount: "indefinite",
41
+ keyTimes: "0; 1",
42
+ calcMode: "spline",
43
+ keySplines: "0.4, 0, 0.2, 1"
44
+ }
45
+ )
46
+ }
47
+ )
48
+ ] });
49
+ export {
50
+ SkeletonBackgroundFill,
51
+ SkeletonDrawer,
52
+ SkeletonGradient
53
+ };
54
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/content/skeleton/utils.tsx"],
4
+ "sourcesContent": ["import TimingsJs from '@dynatrace/strato-design-tokens/timings-js';\n\nimport {\n skeletonSvgBackgroundFillCSS,\n skeletonSvgGradientCSS,\n skeletonSvgGradientRectCSS,\n} from './Skeleton.sty.js';\n\nconst gradientWidth = 400;\n\n/**\n * Renders the svg gradient used by the skeleton animations.\n * @internal\n */\nexport const SkeletonGradient = (props: { id: string }) => (\n <linearGradient\n className={skeletonSvgGradientCSS}\n id={props.id}\n x1=\"0\"\n x2=\"1\"\n >\n <stop offset=\"0%\" stopOpacity=\"0.0\" />\n <stop offset=\"50%\" stopOpacity=\"1.0\" />\n <stop offset=\"100%\" stopOpacity=\"0.0\" />\n </linearGradient>\n);\n\n/**\n * Renders the svg base background in skeleton animations.\n * @internal\n */\nexport const SkeletonBackgroundFill = () => (\n <rect className={skeletonSvgBackgroundFillCSS} />\n);\n\n/**\n * Renders the animated skeleton svg contents.\n * @internal\n */\nexport const SkeletonDrawer = (props: { gradientId: string }) => (\n <>\n <SkeletonBackgroundFill />\n\n {/* gradient */}\n <rect\n className={skeletonSvgGradientRectCSS}\n width={`${gradientWidth}px`}\n height=\"100%\"\n fill={`url(#${props.gradientId})`}\n >\n <animate\n attributeName=\"x\"\n from={`-${gradientWidth}px`}\n to=\"100%\"\n dur={`${TimingsJs.Slowest.Gentle}s`}\n repeatCount=\"indefinite\"\n keyTimes=\"0; 1\"\n calcMode=\"spline\"\n // this uses the Easing.FastInSlowOut values\n keySplines=\"0.4, 0, 0.2, 1\"\n />\n </rect>\n </>\n);\n"],
5
+ "mappings": "AAeE,SAyBA,UAnBE,KANF;AAfF,OAAO,eAAe;AAEtB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,MAAM,gBAAgB;AAMf,MAAM,mBAAmB,CAAC,UAC/B;AAAA,EAAC;AAAA;AAAA,IACC,WAAW;AAAA,IACX,IAAI,MAAM;AAAA,IACV,IAAG;AAAA,IACH,IAAG;AAAA,IAEH;AAAA,0BAAC,UAAK,QAAO,MAAK,aAAY,OAAM;AAAA,MACpC,oBAAC,UAAK,QAAO,OAAM,aAAY,OAAM;AAAA,MACrC,oBAAC,UAAK,QAAO,QAAO,aAAY,OAAM;AAAA;AAAA;AACxC;AAOK,MAAM,yBAAyB,MACpC,oBAAC,UAAK,WAAW,8BAA8B;AAO1C,MAAM,iBAAiB,CAAC,UAC7B,iCACE;AAAA,sBAAC,0BAAuB;AAAA,EAGxB;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,OAAO,GAAG,aAAa;AAAA,MACvB,QAAO;AAAA,MACP,MAAM,QAAQ,MAAM,UAAU;AAAA,MAE9B;AAAA,QAAC;AAAA;AAAA,UACC,eAAc;AAAA,UACd,MAAM,IAAI,aAAa;AAAA,UACvB,IAAG;AAAA,UACH,KAAK,GAAG,UAAU,QAAQ,MAAM;AAAA,UAChC,aAAY;AAAA,UACZ,UAAS;AAAA,UACT,UAAS;AAAA,UAET,YAAW;AAAA;AAAA,MACb;AAAA;AAAA,EACF;AAAA,GACF;",
6
+ "names": []
7
+ }
@@ -123,12 +123,12 @@
123
123
  --dt-borders-style-dashed: dashed;
124
124
  --dt-borders-width-default: 1px;
125
125
  --dt-borders-width-emphasized: 2px;
126
- --dt-borders-radius-surface-subdued: 12px;
127
- --dt-borders-radius-surface-default: 16px;
128
- --dt-borders-radius-container-subdued: 8px;
129
- --dt-borders-radius-container-default: 12px;
130
- --dt-borders-radius-field-subdued: 4px;
131
- --dt-borders-radius-field-default: 8px;
126
+ --dt-borders-radius-surface-subdued: 9px;
127
+ --dt-borders-radius-surface-default: 12px;
128
+ --dt-borders-radius-container-subdued: 6px;
129
+ --dt-borders-radius-container-default: 9px;
130
+ --dt-borders-radius-field-subdued: 3px;
131
+ --dt-borders-radius-field-default: 6px;
132
132
  --dt-borders-radius-field-emphasized: 9999px;
133
133
  --dt-box-shadows-surface-flat-rest: 0px 0px 0px 1px #2d2e4e0d;
134
134
  --dt-box-shadows-surface-flat-hover: 0px 0px 0px 1px #2d2e4e08, 0px 1px 2px #2d2e4e0d, 0px 4px 8px -2px #2d2e4e12;
@@ -928,6 +928,7 @@
928
928
  --dt-easings-slow-in-fast-out: cubic-bezier(0.8, 0, 0.5, 1);
929
929
  --dt-easings-fast-in-slow-out: cubic-bezier(0.4, 0, 0.2, 1);
930
930
  --dt-easings-out-back: cubic-bezier(0.4, 1.6, 0.7, 1);
931
+ --dt-easings-rotate-elastic: cubic-bezier(0.8, 0.3, 0.3, 0.8);
931
932
  --dt-timings-instant-default: 0ms;
932
933
  --dt-timings-offset-short: 20ms;
933
934
  --dt-timings-offset-medium: 30ms;
@@ -942,6 +943,9 @@
942
943
  --dt-timings-slow-default: 400ms;
943
944
  --dt-timings-slow-moderate: 600ms;
944
945
  --dt-timings-slow-gentle: 800ms;
946
+ --dt-timings-slowest-default: 1000ms;
947
+ --dt-timings-slowest-moderate: 1200ms;
948
+ --dt-timings-slowest-gentle: 1500ms;
945
949
  --scrollbar-track: transparent;
946
950
  --scrollbar-thumb: var(--dt-colors-background-field-neutral-emphasized, #e4e5eb);
947
951
  --scrollbar-thumb--hover: var(--dt-colors-background-field-neutral-emphasized-hover, #dadbe4);
@@ -952,12 +956,12 @@
952
956
  --dt-borders-style-dashed: dashed;
953
957
  --dt-borders-width-default: 1px;
954
958
  --dt-borders-width-emphasized: 2px;
955
- --dt-borders-radius-surface-subdued: 12px;
956
- --dt-borders-radius-surface-default: 16px;
957
- --dt-borders-radius-container-subdued: 8px;
958
- --dt-borders-radius-container-default: 12px;
959
- --dt-borders-radius-field-subdued: 4px;
960
- --dt-borders-radius-field-default: 8px;
959
+ --dt-borders-radius-surface-subdued: 9px;
960
+ --dt-borders-radius-surface-default: 12px;
961
+ --dt-borders-radius-container-subdued: 6px;
962
+ --dt-borders-radius-container-default: 9px;
963
+ --dt-borders-radius-field-subdued: 3px;
964
+ --dt-borders-radius-field-default: 6px;
961
965
  --dt-borders-radius-field-emphasized: 9999px;
962
966
  --dt-box-shadows-surface-flat-rest: 0px 0px 0px 1px #f0f0f514;
963
967
  --dt-box-shadows-surface-flat-hover: 0px 0px 0px 1px #f0f0f514, 0px 1px 2px #112, 0px 4px 8px #112c;
@@ -1757,6 +1761,7 @@
1757
1761
  --dt-easings-slow-in-fast-out: cubic-bezier(0.8, 0, 0.5, 1);
1758
1762
  --dt-easings-fast-in-slow-out: cubic-bezier(0.4, 0, 0.2, 1);
1759
1763
  --dt-easings-out-back: cubic-bezier(0.4, 1.6, 0.7, 1);
1764
+ --dt-easings-rotate-elastic: cubic-bezier(0.8, 0.3, 0.3, 0.8);
1760
1765
  --dt-timings-instant-default: 0ms;
1761
1766
  --dt-timings-offset-short: 20ms;
1762
1767
  --dt-timings-offset-medium: 30ms;
@@ -1771,6 +1776,9 @@
1771
1776
  --dt-timings-slow-default: 400ms;
1772
1777
  --dt-timings-slow-moderate: 600ms;
1773
1778
  --dt-timings-slow-gentle: 800ms;
1779
+ --dt-timings-slowest-default: 1000ms;
1780
+ --dt-timings-slowest-moderate: 1200ms;
1781
+ --dt-timings-slowest-gentle: 1500ms;
1774
1782
  }
1775
1783
  html, body {
1776
1784
  margin: 0;
@@ -1816,12 +1824,12 @@ body {
1816
1824
  --dt-borders-style-dashed: dashed;
1817
1825
  --dt-borders-width-default: 1px;
1818
1826
  --dt-borders-width-emphasized: 2px;
1819
- --dt-borders-radius-surface-subdued: 12px;
1820
- --dt-borders-radius-surface-default: 16px;
1821
- --dt-borders-radius-container-subdued: 8px;
1822
- --dt-borders-radius-container-default: 12px;
1823
- --dt-borders-radius-field-subdued: 4px;
1824
- --dt-borders-radius-field-default: 8px;
1827
+ --dt-borders-radius-surface-subdued: 9px;
1828
+ --dt-borders-radius-surface-default: 12px;
1829
+ --dt-borders-radius-container-subdued: 6px;
1830
+ --dt-borders-radius-container-default: 9px;
1831
+ --dt-borders-radius-field-subdued: 3px;
1832
+ --dt-borders-radius-field-default: 6px;
1825
1833
  --dt-borders-radius-field-emphasized: 9999px;
1826
1834
  --dt-box-shadows-surface-flat-rest: 0px 0px 0px 1px #2d2e4e0d;
1827
1835
  --dt-box-shadows-surface-flat-hover: 0px 0px 0px 1px #2d2e4e08, 0px 1px 2px #2d2e4e0d, 0px 4px 8px -2px #2d2e4e12;
@@ -2621,6 +2629,7 @@ body {
2621
2629
  --dt-easings-slow-in-fast-out: cubic-bezier(0.8, 0, 0.5, 1);
2622
2630
  --dt-easings-fast-in-slow-out: cubic-bezier(0.4, 0, 0.2, 1);
2623
2631
  --dt-easings-out-back: cubic-bezier(0.4, 1.6, 0.7, 1);
2632
+ --dt-easings-rotate-elastic: cubic-bezier(0.8, 0.3, 0.3, 0.8);
2624
2633
  --dt-timings-instant-default: 0ms;
2625
2634
  --dt-timings-offset-short: 20ms;
2626
2635
  --dt-timings-offset-medium: 30ms;
@@ -2635,14 +2644,16 @@ body {
2635
2644
  --dt-timings-slow-default: 400ms;
2636
2645
  --dt-timings-slow-moderate: 600ms;
2637
2646
  --dt-timings-slow-gentle: 800ms;
2647
+ --dt-timings-slowest-default: 1000ms;
2648
+ --dt-timings-slowest-moderate: 1200ms;
2649
+ --dt-timings-slowest-gentle: 1500ms;
2638
2650
  }
2639
2651
  html, body {
2640
2652
  background-color: transparent;
2641
2653
  }
2642
2654
  }
2643
2655
  @supports (-moz-appearance:none) {
2644
- html, body {
2645
- scrollbar-color: var(--dt-colors-background-field-neutral-emphasized, #e4e5eb) var(--dt-colors-background-base-default, #f9f9fa);
2646
- scrollbar-width: thin;
2656
+ * {
2657
+ scrollbar-color: var(--dt-colors-border-neutral-default, #dadbe4) transparent;
2647
2658
  }
2648
2659
  }
@@ -0,0 +1,12 @@
1
+ import { useMemo, useId as useReactId } from "react";
2
+ function useId() {
3
+ const id = useReactId();
4
+ const sanitizedId = useMemo(() => {
5
+ return id.replace(":", "\xAB").replace(":", "\xBB");
6
+ }, [id]);
7
+ return sanitizedId;
8
+ }
9
+ export {
10
+ useId
11
+ };
12
+ //# sourceMappingURL=useId.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/core/hooks/useId.ts"],
4
+ "sourcesContent": ["// The one place where we actually need to use this import.\n// eslint-disable-next-line no-restricted-imports\nimport { useMemo, useId as useReactId } from 'react';\n\n/**\n * Custom hook to generate a sanitized react useId for use in DOM selectors.\n *\n * React's `useId()` may return IDs containing colons (e.g., `:r1:`), which are valid in HTML\n * but **not valid CSS identifiers**. This can cause issues when using `querySelector` or when\n * libraries like `nwsapi` attempt to parse selectors, especially in test environments like jest\n * with jsdom.\n *\n * This hook replaces colons with a safe, reversible encoding (`\u00AB` and `\u00BB`) to ensure the ID\n * remains unique and usable in CSS selectors. The characters are chosen to be the same as in the\n * react 19.2+ implementation.\n *\n * Background:\n * - React previously used colons in generated IDs to avoid collisions.\n * - This caused parsing errors in selector engines like `nwsapi` when used in test environments.\n * - React addressed this in [facebook/react#32001](https://github.com/facebook/react/pull/32001) in React 19.2+.\n *\n * This hook provides a workaround for environments still using older React versions or needing\n * compatibility with selector engines that strictly enforce CSS syntax.\n *\n * @returns A sanitized ID string safe for use in `querySelector` and CSS selectors.\n * @public\n */\nexport function useId() {\n const id = useReactId();\n\n const sanitizedId = useMemo(() => {\n return id.replace(':', '\\u00AB').replace(':', '\\u00BB');\n }, [id]);\n\n return sanitizedId;\n}\n"],
5
+ "mappings": "AAEA,SAAS,SAAS,SAAS,kBAAkB;AAyBtC,SAAS,QAAQ;AACtB,QAAM,KAAK,WAAW;AAEtB,QAAM,cAAc,QAAQ,MAAM;AAChC,WAAO,GAAG,QAAQ,KAAK,MAAQ,EAAE,QAAQ,KAAK,MAAQ;AAAA,EACxD,GAAG,CAAC,EAAE,CAAC;AAEP,SAAO;AACT;",
6
+ "names": []
7
+ }
package/esm/core/index.js CHANGED
@@ -17,6 +17,7 @@ import {
17
17
  mergeProps
18
18
  } from "./utils/merge-props.js";
19
19
  import { useAriaLabelingProps } from "./hooks/useAriaLabelingProps.js";
20
+ import { useId } from "./hooks/useId.js";
20
21
  import { useSafeForwardProps } from "./hooks/useSafeForwardProps.js";
21
22
  import { canReceiveDefaultTextFormat } from "./utils/can-receive-default-text-format.js";
22
23
  import { parseBoolean } from "./utils/parse-boolean.js";
@@ -36,6 +37,7 @@ export {
36
37
  useAriaLabelingProps as _useAriaLabelingProps,
37
38
  useFocusContext as _useFocusContext,
38
39
  useSafeForwardProps as _useSafeForwardProps,
39
- useCurrentTheme
40
+ useCurrentTheme,
41
+ useId
40
42
  };
41
43
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/core/index.ts"],
4
- "sourcesContent": ["export { AppRoot, type AppRootProps } from './components/app-root/AppRoot.js';\nexport {\n FocusScope,\n type FocusScopeProps,\n} from './components/focus-scope/FocusScope.js';\n\nexport { type FocusContextProps as _FocusContextProps } from './contexts/FocusContext.js';\n\nexport { useCurrentTheme } from './hooks/useCurrentTheme.js';\nexport { useFocusContext as _useFocusContext } from './hooks/useFocusContext.js';\nexport {\n FocusProvider as _FocusProvider,\n type Modality as _Modality,\n} from './providers/FocusProvider.js';\nexport type { MaskingProps } from './types/masking-props.js';\nexport type { DataTestId } from './types/data-props.js';\nexport type { StylingProps } from './types/styling-props.js';\nexport type { WithChildren } from './types/with-children.js';\nexport type {\n PolymorphOwnProps,\n PolymorphProps,\n PolymorphicComponentProps,\n} from './types/polymorph.js';\nexport { attemptFocus as _attemptFocus } from './utils/focus-management/attempt-focus.js';\nexport { focusFirstDescendant as _focusFirstDescendant } from './utils/focus-management/focus-first-descendant.js';\nexport { getFirstFocusableChild as _getFirstFocusableChild } from './utils/focus-management/get-first-focusable-child.js';\nexport { getLastFocusableChild as _getLastFocusableChild } from './utils/focus-management/get-last-focusable-child.js';\nexport { isFocusable as _isFocusable } from './utils/focus-management/is-focusable.js';\nexport { isBrowser as _isBrowser } from './utils/isBrowser.js';\nexport {\n mergeProps as _mergeProps,\n type NullToObject as _NullToObject,\n type TupleTypes as _TupleTypes,\n type UnionToIntersection as _UnionToIntersection,\n} from './utils/merge-props.js';\nexport { type _HeadingLevel, type _HeadingTag } from './types/heading.js';\nexport { useAriaLabelingProps as _useAriaLabelingProps } from './hooks/useAriaLabelingProps.js';\nexport { useSafeForwardProps as _useSafeForwardProps } from './hooks/useSafeForwardProps.js';\nexport type { UseSafeForwardReturnProps as _UseSafeForwardReturnProps } from './hooks/useSafeForwardProps.js';\nexport type {\n AriaDisabledProps,\n AriaLabelingProps,\n} from './types/a11y-props.js';\nexport type { DOMProps } from './types/dom.js';\nexport { canReceiveDefaultTextFormat as _canReceiveDefaultTextFormat } from './utils/can-receive-default-text-format.js';\nexport { parseBoolean as _parseBoolean } from './utils/parse-boolean.js';\n"],
5
- "mappings": "AAAA,SAAS,eAAkC;AAC3C;AAAA,EACE;AAAA,OAEK;AAIP,SAAS,uBAAuB;AAChC,SAA4B,uBAAwB;AACpD;AAAA,EACmB;AAAA,OAEZ;AAUP,SAAyB,oBAAqB;AAC9C,SAAiC,4BAA6B;AAC9D,SAAmC,8BAA+B;AAClE,SAAkC,6BAA8B;AAChE,SAAwB,mBAAoB;AAC5C,SAAsB,iBAAkB;AACxC;AAAA,EACgB;AAAA,OAIT;AAEP,SAAiC,4BAA6B;AAC9D,SAAgC,2BAA4B;AAO5D,SAAwC,mCAAoC;AAC5E,SAAyB,oBAAqB;",
4
+ "sourcesContent": ["export { AppRoot, type AppRootProps } from './components/app-root/AppRoot.js';\nexport {\n FocusScope,\n type FocusScopeProps,\n} from './components/focus-scope/FocusScope.js';\n\nexport { type FocusContextProps as _FocusContextProps } from './contexts/FocusContext.js';\n\nexport { useCurrentTheme } from './hooks/useCurrentTheme.js';\nexport { useFocusContext as _useFocusContext } from './hooks/useFocusContext.js';\nexport {\n FocusProvider as _FocusProvider,\n type Modality as _Modality,\n} from './providers/FocusProvider.js';\nexport type { MaskingProps } from './types/masking-props.js';\nexport type { DataTestId } from './types/data-props.js';\nexport type { StylingProps } from './types/styling-props.js';\nexport type { WithChildren } from './types/with-children.js';\nexport type {\n PolymorphOwnProps,\n PolymorphProps,\n PolymorphicComponentProps,\n} from './types/polymorph.js';\nexport { attemptFocus as _attemptFocus } from './utils/focus-management/attempt-focus.js';\nexport { focusFirstDescendant as _focusFirstDescendant } from './utils/focus-management/focus-first-descendant.js';\nexport { getFirstFocusableChild as _getFirstFocusableChild } from './utils/focus-management/get-first-focusable-child.js';\nexport { getLastFocusableChild as _getLastFocusableChild } from './utils/focus-management/get-last-focusable-child.js';\nexport { isFocusable as _isFocusable } from './utils/focus-management/is-focusable.js';\nexport { isBrowser as _isBrowser } from './utils/isBrowser.js';\nexport {\n mergeProps as _mergeProps,\n type NullToObject as _NullToObject,\n type TupleTypes as _TupleTypes,\n type UnionToIntersection as _UnionToIntersection,\n} from './utils/merge-props.js';\nexport { type _HeadingLevel, type _HeadingTag } from './types/heading.js';\nexport { useAriaLabelingProps as _useAriaLabelingProps } from './hooks/useAriaLabelingProps.js';\nexport { useId } from './hooks/useId.js';\nexport { useSafeForwardProps as _useSafeForwardProps } from './hooks/useSafeForwardProps.js';\nexport type { UseSafeForwardReturnProps as _UseSafeForwardReturnProps } from './hooks/useSafeForwardProps.js';\nexport type {\n AriaDisabledProps,\n AriaLabelingProps,\n} from './types/a11y-props.js';\nexport type { DOMProps } from './types/dom.js';\nexport { canReceiveDefaultTextFormat as _canReceiveDefaultTextFormat } from './utils/can-receive-default-text-format.js';\nexport { parseBoolean as _parseBoolean } from './utils/parse-boolean.js';\n"],
5
+ "mappings": "AAAA,SAAS,eAAkC;AAC3C;AAAA,EACE;AAAA,OAEK;AAIP,SAAS,uBAAuB;AAChC,SAA4B,uBAAwB;AACpD;AAAA,EACmB;AAAA,OAEZ;AAUP,SAAyB,oBAAqB;AAC9C,SAAiC,4BAA6B;AAC9D,SAAmC,8BAA+B;AAClE,SAAkC,6BAA8B;AAChE,SAAwB,mBAAoB;AAC5C,SAAsB,iBAAkB;AACxC;AAAA,EACgB;AAAA,OAIT;AAEP,SAAiC,4BAA6B;AAC9D,SAAS,aAAa;AACtB,SAAgC,2BAA4B;AAO5D,SAAwC,mCAAoC;AAC5E,SAAyB,oBAAqB;",
6
6
  "names": []
7
7
  }
@@ -1,75 +1,75 @@
1
- ._z2r50s3-1-10-0 {
1
+ ._z2r50s3-1-12-0 {
2
2
  outline: none;
3
3
  }
4
- ._z2r50s3-1-10-0:focus-visible {
4
+ ._z2r50s3-1-12-0:focus-visible {
5
5
  outline: none;
6
6
  }
7
- ._z2r50s4-1-10-0 {
8
- border-radius: var(--dt-borders-radius-field-subdued, 4px);
9
- box-shadow: inset 0 0 0 var(--dt-borders-width-default, 1px) var(--_z2r50s0-1-10-0);
10
- background-color: var(--_z2r50s2-1-10-0);
7
+ ._z2r50s4-1-12-0 {
8
+ border-radius: var(--dt-borders-radius-field-subdued, 3px);
9
+ box-shadow: inset 0 0 0 var(--dt-borders-width-default, 1px) var(--_z2r50s0-1-12-0);
10
+ background-color: var(--_z2r50s2-1-12-0);
11
11
  }
12
- ._z2r50s5-1-10-0._z2r50s5-1-10-0 {
13
- box-shadow: inset 0 0 0 var(--dt-borders-width-emphasized, 2px) var(--_z2r50s0-1-10-0), inset 0 0 0 calc(var(--dt-borders-width-emphasized, 2px) + 1px) var(--_z2r50s1-1-10-0);
12
+ ._z2r50s5-1-12-0._z2r50s5-1-12-0 {
13
+ box-shadow: inset 0 0 0 var(--dt-borders-width-emphasized, 2px) var(--_z2r50s0-1-12-0), inset 0 0 0 calc(var(--dt-borders-width-emphasized, 2px) + 1px) var(--_z2r50s1-1-12-0);
14
14
  }
15
- ._z2r50s6-1-10-0 {
16
- --_z2r50s0-1-10-0: var(--dt-colors-border-neutral-accent, #595a7d);
17
- --_z2r50s1-1-10-0: var(--dt-colors-border-neutral-default, #dadbe4);
18
- --_z2r50s2-1-10-0: var(--dt-colors-background-field-neutral-emphasized, #e4e5eb);
15
+ ._z2r50s6-1-12-0 {
16
+ --_z2r50s0-1-12-0: var(--dt-colors-border-neutral-accent, #595a7d);
17
+ --_z2r50s1-1-12-0: var(--dt-colors-border-neutral-default, #dadbe4);
18
+ --_z2r50s2-1-12-0: var(--dt-colors-background-field-neutral-emphasized, #e4e5eb);
19
19
  }
20
- ._z2r50s7-1-10-0 {
21
- --_z2r50s0-1-10-0: var(--dt-colors-border-primary-accent, #464cce);
22
- --_z2r50s1-1-10-0: var(--dt-colors-border-primary-default, #d5dbf6);
23
- --_z2r50s2-1-10-0: var(--dt-colors-background-field-primary-emphasized, #e1e5f7);
20
+ ._z2r50s7-1-12-0 {
21
+ --_z2r50s0-1-12-0: var(--dt-colors-border-primary-accent, #464cce);
22
+ --_z2r50s1-1-12-0: var(--dt-colors-border-primary-default, #d5dbf6);
23
+ --_z2r50s2-1-12-0: var(--dt-colors-background-field-primary-emphasized, #e1e5f7);
24
24
  }
25
- ._z2r50s8-1-10-0 {
26
- --_z2r50s0-1-10-0: var(--dt-colors-border-success-accent, #2d6761);
27
- --_z2r50s1-1-10-0: var(--dt-colors-border-success-default, #d3dedd);
28
- --_z2r50s2-1-10-0: var(--dt-colors-background-field-success-emphasized, #e0e7e6);
25
+ ._z2r50s8-1-12-0 {
26
+ --_z2r50s0-1-12-0: var(--dt-colors-border-success-accent, #2d6761);
27
+ --_z2r50s1-1-12-0: var(--dt-colors-border-success-default, #d3dedd);
28
+ --_z2r50s2-1-12-0: var(--dt-colors-background-field-success-emphasized, #e0e7e6);
29
29
  }
30
- ._z2r50s9-1-10-0 {
31
- --_z2r50s0-1-10-0: var(--dt-colors-border-warning-accent, #855400);
32
- --_z2r50s1-1-10-0: var(--dt-colors-border-warning-default, #f9ebdb);
33
- --_z2r50s2-1-10-0: var(--dt-colors-background-field-warning-emphasized, #f9f0e5);
30
+ ._z2r50s9-1-12-0 {
31
+ --_z2r50s0-1-12-0: var(--dt-colors-border-warning-accent, #855400);
32
+ --_z2r50s1-1-12-0: var(--dt-colors-border-warning-default, #f9ebdb);
33
+ --_z2r50s2-1-12-0: var(--dt-colors-background-field-warning-emphasized, #f9f0e5);
34
34
  }
35
- ._z2r50sa-1-10-0 {
36
- --_z2r50s0-1-10-0: var(--dt-colors-border-critical-accent, #bb0731);
37
- --_z2r50s1-1-10-0: var(--dt-colors-border-critical-default, #f6d6d5);
38
- --_z2r50s2-1-10-0: var(--dt-colors-background-field-critical-emphasized, #f8e1e1);
35
+ ._z2r50sa-1-12-0 {
36
+ --_z2r50s0-1-12-0: var(--dt-colors-border-critical-accent, #bb0731);
37
+ --_z2r50s1-1-12-0: var(--dt-colors-border-critical-default, #f6d6d5);
38
+ --_z2r50s2-1-12-0: var(--dt-colors-background-field-critical-emphasized, #f8e1e1);
39
39
  }
40
- ._z2r50sb-1-10-0:focus-within {
40
+ ._z2r50sb-1-12-0:focus-within {
41
41
  outline: none;
42
42
  }
43
- ._z2r50sc-1-10-0:focus-within {
44
- border-radius: var(--dt-borders-radius-field-subdued, 4px);
45
- box-shadow: inset 0 0 0 var(--dt-borders-width-default, 1px) var(--_z2r50s0-1-10-0);
46
- background-color: var(--_z2r50s2-1-10-0);
47
- }
48
- ._z2r50sd-1-10-0:focus-within {
49
- box-shadow: inset 0 0 0 var(--dt-borders-width-emphasized, 2px) var(--_z2r50s0-1-10-0), inset 0 0 0 calc(var(--dt-borders-width-emphasized, 2px) + 1px) var(--_z2r50s1-1-10-0);
50
- }
51
- ._z2r50se-1-10-0 {
52
- --_z2r50s0-1-10-0: var(--dt-colors-border-neutral-accent, #595a7d);
53
- --_z2r50s1-1-10-0: var(--dt-colors-border-neutral-default, #dadbe4);
54
- --_z2r50s2-1-10-0: var(--dt-colors-background-field-neutral-emphasized, #e4e5eb);
55
- }
56
- ._z2r50sf-1-10-0 {
57
- --_z2r50s0-1-10-0: var(--dt-colors-border-primary-accent, #464cce);
58
- --_z2r50s1-1-10-0: var(--dt-colors-border-primary-default, #d5dbf6);
59
- --_z2r50s2-1-10-0: var(--dt-colors-background-field-primary-emphasized, #e1e5f7);
60
- }
61
- ._z2r50sg-1-10-0 {
62
- --_z2r50s0-1-10-0: var(--dt-colors-border-success-accent, #2d6761);
63
- --_z2r50s1-1-10-0: var(--dt-colors-border-success-default, #d3dedd);
64
- --_z2r50s2-1-10-0: var(--dt-colors-background-field-success-emphasized, #e0e7e6);
65
- }
66
- ._z2r50sh-1-10-0 {
67
- --_z2r50s0-1-10-0: var(--dt-colors-border-warning-accent, #855400);
68
- --_z2r50s1-1-10-0: var(--dt-colors-border-warning-default, #f9ebdb);
69
- --_z2r50s2-1-10-0: var(--dt-colors-background-field-warning-emphasized, #f9f0e5);
70
- }
71
- ._z2r50si-1-10-0 {
72
- --_z2r50s0-1-10-0: var(--dt-colors-border-critical-accent, #bb0731);
73
- --_z2r50s1-1-10-0: var(--dt-colors-border-critical-default, #f6d6d5);
74
- --_z2r50s2-1-10-0: var(--dt-colors-background-field-critical-emphasized, #f8e1e1);
43
+ ._z2r50sc-1-12-0:focus-within {
44
+ border-radius: var(--dt-borders-radius-field-subdued, 3px);
45
+ box-shadow: inset 0 0 0 var(--dt-borders-width-default, 1px) var(--_z2r50s0-1-12-0);
46
+ background-color: var(--_z2r50s2-1-12-0);
47
+ }
48
+ ._z2r50sd-1-12-0:focus-within {
49
+ box-shadow: inset 0 0 0 var(--dt-borders-width-emphasized, 2px) var(--_z2r50s0-1-12-0), inset 0 0 0 calc(var(--dt-borders-width-emphasized, 2px) + 1px) var(--_z2r50s1-1-12-0);
50
+ }
51
+ ._z2r50se-1-12-0 {
52
+ --_z2r50s0-1-12-0: var(--dt-colors-border-neutral-accent, #595a7d);
53
+ --_z2r50s1-1-12-0: var(--dt-colors-border-neutral-default, #dadbe4);
54
+ --_z2r50s2-1-12-0: var(--dt-colors-background-field-neutral-emphasized, #e4e5eb);
55
+ }
56
+ ._z2r50sf-1-12-0 {
57
+ --_z2r50s0-1-12-0: var(--dt-colors-border-primary-accent, #464cce);
58
+ --_z2r50s1-1-12-0: var(--dt-colors-border-primary-default, #d5dbf6);
59
+ --_z2r50s2-1-12-0: var(--dt-colors-background-field-primary-emphasized, #e1e5f7);
60
+ }
61
+ ._z2r50sg-1-12-0 {
62
+ --_z2r50s0-1-12-0: var(--dt-colors-border-success-accent, #2d6761);
63
+ --_z2r50s1-1-12-0: var(--dt-colors-border-success-default, #d3dedd);
64
+ --_z2r50s2-1-12-0: var(--dt-colors-background-field-success-emphasized, #e0e7e6);
65
+ }
66
+ ._z2r50sh-1-12-0 {
67
+ --_z2r50s0-1-12-0: var(--dt-colors-border-warning-accent, #855400);
68
+ --_z2r50s1-1-12-0: var(--dt-colors-border-warning-default, #f9ebdb);
69
+ --_z2r50s2-1-12-0: var(--dt-colors-background-field-warning-emphasized, #f9f0e5);
70
+ }
71
+ ._z2r50si-1-12-0 {
72
+ --_z2r50s0-1-12-0: var(--dt-colors-border-critical-accent, #bb0731);
73
+ --_z2r50s1-1-12-0: var(--dt-colors-border-critical-default, #f6d6d5);
74
+ --_z2r50s2-1-12-0: var(--dt-colors-background-field-critical-emphasized, #f8e1e1);
75
75
  }
@@ -1,7 +1,7 @@
1
1
  import "./focusRing.css";
2
2
  import { createRuntimeFn as _7a468 } from "@vanilla-extract/recipes/createRuntimeFn";
3
- var focusRingCSS = _7a468({ defaultClassName: "_z2r50s3-1-10-0", variantClassNames: { minimal: { true: "_z2r50s4-1-10-0", false: "_z2r50s5-1-10-0" }, variant: { neutral: "_z2r50s6-1-10-0", primary: "_z2r50s7-1-10-0", success: "_z2r50s8-1-10-0", warning: "_z2r50s9-1-10-0", critical: "_z2r50sa-1-10-0" } }, defaultVariants: {}, compoundVariants: [] });
4
- var focusRingFocusWithinCSS = _7a468({ defaultClassName: "_z2r50sb-1-10-0", variantClassNames: { minimal: { true: "_z2r50sc-1-10-0", false: "_z2r50sd-1-10-0" }, variant: { neutral: "_z2r50se-1-10-0", primary: "_z2r50sf-1-10-0", success: "_z2r50sg-1-10-0", warning: "_z2r50sh-1-10-0", critical: "_z2r50si-1-10-0" } }, defaultVariants: {}, compoundVariants: [] });
3
+ var focusRingCSS = _7a468({ defaultClassName: "_z2r50s3-1-12-0", variantClassNames: { minimal: { true: "_z2r50s4-1-12-0", false: "_z2r50s5-1-12-0" }, variant: { neutral: "_z2r50s6-1-12-0", primary: "_z2r50s7-1-12-0", success: "_z2r50s8-1-12-0", warning: "_z2r50s9-1-12-0", critical: "_z2r50sa-1-12-0" } }, defaultVariants: {}, compoundVariants: [] });
4
+ var focusRingFocusWithinCSS = _7a468({ defaultClassName: "_z2r50sb-1-12-0", variantClassNames: { minimal: { true: "_z2r50sc-1-12-0", false: "_z2r50sd-1-12-0" }, variant: { neutral: "_z2r50se-1-12-0", primary: "_z2r50sf-1-12-0", success: "_z2r50sg-1-12-0", warning: "_z2r50sh-1-12-0", critical: "_z2r50si-1-12-0" } }, defaultVariants: {}, compoundVariants: [] });
5
5
  export {
6
6
  focusRingCSS,
7
7
  focusRingFocusWithinCSS
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/core/styles/focusRing.css.ts"],
4
- "sourcesContent": ["import './focusRing.css';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var focusRingCSS = _7a468({defaultClassName:'_z2r50s3-1-10-0',variantClassNames:{minimal:{true:'_z2r50s4-1-10-0',false:'_z2r50s5-1-10-0'},variant:{neutral:'_z2r50s6-1-10-0',primary:'_z2r50s7-1-10-0',success:'_z2r50s8-1-10-0',warning:'_z2r50s9-1-10-0',critical:'_z2r50sa-1-10-0'}},defaultVariants:{},compoundVariants:[]});\nexport var focusRingFocusWithinCSS = _7a468({defaultClassName:'_z2r50sb-1-10-0',variantClassNames:{minimal:{true:'_z2r50sc-1-10-0',false:'_z2r50sd-1-10-0'},variant:{neutral:'_z2r50se-1-10-0',primary:'_z2r50sf-1-10-0',success:'_z2r50sg-1-10-0',warning:'_z2r50sh-1-10-0',critical:'_z2r50si-1-10-0'}},defaultVariants:{},compoundVariants:[]});"],
4
+ "sourcesContent": ["import './focusRing.css';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var focusRingCSS = _7a468({defaultClassName:'_z2r50s3-1-12-0',variantClassNames:{minimal:{true:'_z2r50s4-1-12-0',false:'_z2r50s5-1-12-0'},variant:{neutral:'_z2r50s6-1-12-0',primary:'_z2r50s7-1-12-0',success:'_z2r50s8-1-12-0',warning:'_z2r50s9-1-12-0',critical:'_z2r50sa-1-12-0'}},defaultVariants:{},compoundVariants:[]});\nexport var focusRingFocusWithinCSS = _7a468({defaultClassName:'_z2r50sb-1-12-0',variantClassNames:{minimal:{true:'_z2r50sc-1-12-0',false:'_z2r50sd-1-12-0'},variant:{neutral:'_z2r50se-1-12-0',primary:'_z2r50sf-1-12-0',success:'_z2r50sg-1-12-0',warning:'_z2r50sh-1-12-0',critical:'_z2r50si-1-12-0'}},defaultVariants:{},compoundVariants:[]});"],
5
5
  "mappings": "AAAA,OAAO;AACP,SAAS,mBAAmB,cAAc;AACnC,IAAI,eAAe,OAAO,EAAC,kBAAiB,mBAAkB,mBAAkB,EAAC,SAAQ,EAAC,MAAK,mBAAkB,OAAM,kBAAiB,GAAE,SAAQ,EAAC,SAAQ,mBAAkB,SAAQ,mBAAkB,SAAQ,mBAAkB,SAAQ,mBAAkB,UAAS,kBAAiB,EAAC,GAAE,iBAAgB,CAAC,GAAE,kBAAiB,CAAC,EAAC,CAAC;AAC/T,IAAI,0BAA0B,OAAO,EAAC,kBAAiB,mBAAkB,mBAAkB,EAAC,SAAQ,EAAC,MAAK,mBAAkB,OAAM,kBAAiB,GAAE,SAAQ,EAAC,SAAQ,mBAAkB,SAAQ,mBAAkB,SAAQ,mBAAkB,SAAQ,mBAAkB,UAAS,kBAAiB,EAAC,GAAE,iBAAgB,CAAC,GAAE,kBAAiB,CAAC,EAAC,CAAC;",
6
6
  "names": []
7
7
  }