@primer/primitives 11.4.1-rc.eb8ee149 → 11.5.0-rc.14eaeb12

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 (190) hide show
  1. package/DESIGN_TOKENS_GUIDE.md +185 -0
  2. package/DESIGN_TOKENS_SPEC.md +136 -8
  3. package/dist/build/formats/jsonFigma.js +8 -1
  4. package/dist/build/formats/markdownLlmGuidelines.js +349 -0
  5. package/dist/build/schemas/borderToken.d.ts +61 -5
  6. package/dist/build/schemas/borderToken.js +2 -1
  7. package/dist/build/schemas/colorToken.d.ts +639 -30
  8. package/dist/build/schemas/colorToken.js +3 -2
  9. package/dist/build/schemas/colorW3cValue.d.ts +28 -0
  10. package/dist/build/schemas/colorW3cValue.js +42 -0
  11. package/dist/build/schemas/cubicBezierToken.d.ts +1 -1
  12. package/dist/build/schemas/dimensionToken.d.ts +9 -2
  13. package/dist/build/schemas/dimensionValue.d.ts +12 -1
  14. package/dist/build/schemas/dimensionValue.js +10 -13
  15. package/dist/build/schemas/durationToken.d.ts +8 -2
  16. package/dist/build/schemas/durationValue.d.ts +11 -1
  17. package/dist/build/schemas/durationValue.js +13 -3
  18. package/dist/build/schemas/fontFamilyToken.d.ts +1 -1
  19. package/dist/build/schemas/fontWeightToken.d.ts +1 -1
  20. package/dist/build/schemas/gradientToken.d.ts +23 -2
  21. package/dist/build/schemas/gradientToken.js +2 -1
  22. package/dist/build/schemas/numberToken.d.ts +1 -1
  23. package/dist/build/schemas/shadowToken.d.ts +1751 -127
  24. package/dist/build/schemas/shadowToken.js +8 -2
  25. package/dist/build/schemas/stringToken.d.ts +1 -1
  26. package/dist/build/schemas/stringToken.js +1 -1
  27. package/dist/build/schemas/tokenType.d.ts +1 -1
  28. package/dist/build/schemas/transitionToken.d.ts +15 -3
  29. package/dist/build/schemas/typographyToken.d.ts +19 -5
  30. package/dist/build/schemas/typographyToken.js +1 -1
  31. package/dist/build/schemas/validTokenType.d.ts +1 -1
  32. package/dist/build/schemas/validTokenType.js +1 -1
  33. package/dist/build/schemas/viewportRangeToken.d.ts +1 -1
  34. package/dist/build/transformers/borderToCss.js +19 -1
  35. package/dist/build/transformers/colorAlphaToCss.js +6 -3
  36. package/dist/build/transformers/colorToHex.js +5 -2
  37. package/dist/build/transformers/colorToRgbAlpha.js +5 -2
  38. package/dist/build/transformers/colorToRgbaFloat.js +5 -0
  39. package/dist/build/transformers/dimensionToPixelUnitless.d.ts +3 -2
  40. package/dist/build/transformers/dimensionToPixelUnitless.js +22 -26
  41. package/dist/build/transformers/dimensionToRem.d.ts +2 -1
  42. package/dist/build/transformers/dimensionToRem.js +21 -22
  43. package/dist/build/transformers/dimensionToRemPxArray.d.ts +2 -1
  44. package/dist/build/transformers/dimensionToRemPxArray.js +21 -22
  45. package/dist/build/transformers/durationToCss.d.ts +2 -1
  46. package/dist/build/transformers/durationToCss.js +19 -12
  47. package/dist/build/transformers/gradientToCss.js +2 -1
  48. package/dist/build/transformers/shadowToCss.js +15 -1
  49. package/dist/build/transformers/utilities/normalizeColorValue.d.ts +23 -0
  50. package/dist/build/transformers/utilities/normalizeColorValue.js +74 -0
  51. package/dist/build/transformers/utilities/parseDimension.d.ts +12 -0
  52. package/dist/build/transformers/utilities/parseDimension.js +31 -0
  53. package/dist/build/types/borderTokenValue.d.ts +5 -2
  54. package/dist/build/types/dimensionTokenValue.d.ts +9 -0
  55. package/dist/build/types/shadowTokenValue.d.ts +8 -5
  56. package/dist/css/base/motion/motion.css +1 -1
  57. package/dist/css/functional/size/radius.css +1 -1
  58. package/dist/css/functional/size/size-coarse.css +1 -0
  59. package/dist/css/functional/size/size-fine.css +1 -0
  60. package/dist/css/functional/size/size.css +5 -0
  61. package/dist/css/functional/themes/dark-colorblind-high-contrast.css +42 -30
  62. package/dist/css/functional/themes/dark-colorblind.css +42 -30
  63. package/dist/css/functional/themes/dark-dimmed-high-contrast.css +42 -30
  64. package/dist/css/functional/themes/dark-dimmed.css +42 -30
  65. package/dist/css/functional/themes/dark-high-contrast.css +42 -30
  66. package/dist/css/functional/themes/dark-tritanopia-high-contrast.css +42 -30
  67. package/dist/css/functional/themes/dark-tritanopia.css +42 -30
  68. package/dist/css/functional/themes/dark.css +42 -30
  69. package/dist/css/functional/themes/light-colorblind-high-contrast.css +42 -30
  70. package/dist/css/functional/themes/light-colorblind.css +42 -30
  71. package/dist/css/functional/themes/light-high-contrast.css +42 -30
  72. package/dist/css/functional/themes/light-tritanopia-high-contrast.css +42 -30
  73. package/dist/css/functional/themes/light-tritanopia.css +42 -30
  74. package/dist/css/functional/themes/light.css +42 -30
  75. package/dist/docs/base/motion/motion.json +96 -24
  76. package/dist/docs/base/size/size.json +76 -19
  77. package/dist/docs/base/typography/typography.json +24 -6
  78. package/dist/docs/functional/size/border.json +26 -11
  79. package/dist/docs/functional/size/breakpoints.json +24 -6
  80. package/dist/docs/functional/size/radius.json +18 -6
  81. package/dist/docs/functional/size/size-coarse.json +55 -2
  82. package/dist/docs/functional/size/size-fine.json +55 -2
  83. package/dist/docs/functional/size/size.json +195 -15
  84. package/dist/docs/functional/themes/dark-colorblind-high-contrast.json +3921 -714
  85. package/dist/docs/functional/themes/dark-colorblind.json +3911 -712
  86. package/dist/docs/functional/themes/dark-dimmed-high-contrast.json +3774 -547
  87. package/dist/docs/functional/themes/dark-dimmed.json +3801 -554
  88. package/dist/docs/functional/themes/dark-high-contrast.json +3926 -715
  89. package/dist/docs/functional/themes/dark-tritanopia-high-contrast.json +3936 -717
  90. package/dist/docs/functional/themes/dark-tritanopia.json +3769 -546
  91. package/dist/docs/functional/themes/dark.json +3920 -713
  92. package/dist/docs/functional/themes/light-colorblind-high-contrast.json +3780 -553
  93. package/dist/docs/functional/themes/light-colorblind.json +3767 -548
  94. package/dist/docs/functional/themes/light-high-contrast.json +3785 -554
  95. package/dist/docs/functional/themes/light-tritanopia-high-contrast.json +3785 -554
  96. package/dist/docs/functional/themes/light-tritanopia.json +3777 -550
  97. package/dist/docs/functional/themes/light.json +3782 -551
  98. package/dist/docs/functional/typography/typography.json +8 -2
  99. package/dist/fallbacks/base/motion/motion.json +48 -12
  100. package/dist/fallbacks/functional/size/size-coarse.json +2 -1
  101. package/dist/fallbacks/functional/size/size-fine.json +2 -1
  102. package/dist/fallbacks/functional/size/size.json +5 -0
  103. package/dist/figma/dimension/dimension.json +56 -1
  104. package/dist/figma/themes/dark-colorblind.json +49 -1
  105. package/dist/figma/themes/dark-dimmed.json +51 -3
  106. package/dist/figma/themes/dark-high-contrast.json +49 -1
  107. package/dist/figma/themes/dark-tritanopia.json +49 -1
  108. package/dist/figma/themes/dark.json +49 -1
  109. package/dist/figma/themes/light-colorblind.json +53 -5
  110. package/dist/figma/themes/light-high-contrast.json +53 -5
  111. package/dist/figma/themes/light-tritanopia.json +53 -5
  112. package/dist/figma/themes/light.json +53 -5
  113. package/dist/internalCss/dark-colorblind-high-contrast.css +42 -30
  114. package/dist/internalCss/dark-colorblind.css +42 -30
  115. package/dist/internalCss/dark-dimmed-high-contrast.css +42 -30
  116. package/dist/internalCss/dark-dimmed.css +42 -30
  117. package/dist/internalCss/dark-high-contrast.css +42 -30
  118. package/dist/internalCss/dark-tritanopia-high-contrast.css +42 -30
  119. package/dist/internalCss/dark-tritanopia.css +42 -30
  120. package/dist/internalCss/dark.css +42 -30
  121. package/dist/internalCss/light-colorblind-high-contrast.css +42 -30
  122. package/dist/internalCss/light-colorblind.css +42 -30
  123. package/dist/internalCss/light-high-contrast.css +42 -30
  124. package/dist/internalCss/light-tritanopia-high-contrast.css +42 -30
  125. package/dist/internalCss/light-tritanopia.css +42 -30
  126. package/dist/internalCss/light.css +42 -30
  127. package/dist/styleLint/base/motion/motion.json +96 -24
  128. package/dist/styleLint/base/size/size.json +76 -19
  129. package/dist/styleLint/base/typography/typography.json +30 -12
  130. package/dist/styleLint/functional/size/border.json +27 -12
  131. package/dist/styleLint/functional/size/breakpoints.json +24 -6
  132. package/dist/styleLint/functional/size/radius.json +19 -7
  133. package/dist/styleLint/functional/size/size-coarse.json +60 -7
  134. package/dist/styleLint/functional/size/size-fine.json +60 -7
  135. package/dist/styleLint/functional/size/size.json +246 -66
  136. package/dist/styleLint/functional/themes/dark-colorblind-high-contrast.json +4060 -733
  137. package/dist/styleLint/functional/themes/dark-colorblind.json +4050 -731
  138. package/dist/styleLint/functional/themes/dark-dimmed-high-contrast.json +3914 -567
  139. package/dist/styleLint/functional/themes/dark-dimmed.json +3941 -574
  140. package/dist/styleLint/functional/themes/dark-high-contrast.json +4065 -734
  141. package/dist/styleLint/functional/themes/dark-tritanopia-high-contrast.json +4075 -736
  142. package/dist/styleLint/functional/themes/dark-tritanopia.json +4079 -736
  143. package/dist/styleLint/functional/themes/dark.json +4059 -732
  144. package/dist/styleLint/functional/themes/light-colorblind-high-contrast.json +4091 -744
  145. package/dist/styleLint/functional/themes/light-colorblind.json +4078 -739
  146. package/dist/styleLint/functional/themes/light-high-contrast.json +4096 -745
  147. package/dist/styleLint/functional/themes/light-tritanopia-high-contrast.json +4096 -745
  148. package/dist/styleLint/functional/themes/light-tritanopia.json +4088 -741
  149. package/dist/styleLint/functional/themes/light.json +4093 -742
  150. package/dist/styleLint/functional/typography/typography.json +28 -22
  151. package/package.json +5 -4
  152. package/src/tokens/base/color/dark/dark.dimmed.json5 +405 -81
  153. package/src/tokens/base/color/dark/dark.high-contrast.json5 +405 -81
  154. package/src/tokens/base/color/dark/dark.json5 +475 -95
  155. package/src/tokens/base/color/dark/display-dark.json5 +960 -192
  156. package/src/tokens/base/color/light/display-light.json5 +960 -192
  157. package/src/tokens/base/color/light/light.high-contrast.json5 +405 -81
  158. package/src/tokens/base/color/light/light.json5 +475 -95
  159. package/src/tokens/base/motion/timing.json5 +12 -12
  160. package/src/tokens/base/size/size.json5 +194 -194
  161. package/src/tokens/base/typography/typography.json5 +6 -6
  162. package/src/tokens/component/avatar.json5 +72 -44
  163. package/src/tokens/component/button.json5 +1846 -1191
  164. package/src/tokens/component/reactionButton.json5 +20 -4
  165. package/src/tokens/functional/border/border.json5 +33 -2
  166. package/src/tokens/functional/color/bgColor.json5 +18 -2
  167. package/src/tokens/functional/color/borderColor.json5 +8 -1
  168. package/src/tokens/functional/color/control.json5 +160 -32
  169. package/src/tokens/functional/color/display.json5 +7 -0
  170. package/src/tokens/functional/color/fgColor.json5 +13 -1
  171. package/src/tokens/functional/color/syntax.json5 +24 -2
  172. package/src/tokens/functional/shadow/shadow.json5 +1254 -163
  173. package/src/tokens/functional/size/border.json5 +8 -8
  174. package/src/tokens/functional/size/breakpoints.json5 +6 -6
  175. package/src/tokens/functional/size/radius.json5 +5 -5
  176. package/src/tokens/functional/size/size-coarse.json5 +15 -0
  177. package/src/tokens/functional/size/size-fine.json5 +15 -0
  178. package/src/tokens/functional/size/size.json5 +65 -15
  179. package/src/tokens/functional/typography/typography.json5 +8 -4
  180. package/dist/build/parsers/index.d.ts +0 -1
  181. package/dist/build/parsers/index.js +0 -1
  182. package/dist/build/parsers/w3cJsonParser.d.ts +0 -6
  183. package/dist/build/parsers/w3cJsonParser.js +0 -25
  184. package/dist/removed/testing.json5 +0 -4
  185. package/guidelines/color.llm.md +0 -16
  186. package/guidelines/guidelines.llm.md +0 -34
  187. package/guidelines/motion.llm.md +0 -41
  188. package/guidelines/spacing.llm.md +0 -20
  189. package/guidelines/typography.llm.md +0 -14
  190. package/src/tokens/removed/testing.json5 +0 -4
@@ -3,6 +3,18 @@ import { isShadow } from '../filters/index.js';
3
3
  import { alpha } from './utilities/alpha.js';
4
4
  import { checkRequiredTokenProperties } from './utilities/checkRequiredTokenProperties.js';
5
5
  import { getTokenValue } from './utilities/getTokenValue.js';
6
+ import { normalizeColorValue } from './utilities/normalizeColorValue.js';
7
+ /**
8
+ * @description Converts a W3C dimension object to CSS string
9
+ * @param dim - The dimension value in W3C object format
10
+ * @returns CSS dimension string (e.g., "16px", "1rem", "0")
11
+ */
12
+ const dimensionToCss = (dim) => {
13
+ if (dim.value === 0) {
14
+ return '0';
15
+ }
16
+ return `${dim.value}${dim.unit}`;
17
+ };
6
18
  /**
7
19
  * @description converts w3c shadow tokens in css shadow string
8
20
  * @type value transformer — [StyleDictionary.ValueTransform](https://github.com/amzn/style-dictionary/blob/main/types/Transform.d.ts)
@@ -27,7 +39,9 @@ export const shadowToCss = {
27
39
  return shadow;
28
40
  checkRequiredTokenProperties(shadow, ['color', 'offsetX', 'offsetY', 'blur', 'spread']);
29
41
  /*css box shadow: inset? | offset-x | offset-y | blur-radius | spread-radius | color */
30
- return `${shadow.inset === true ? 'inset ' : ''}${shadow.offsetX} ${shadow.offsetY} ${shadow.blur} ${shadow.spread} ${toHex(alpha(getTokenValue(Object.assign(Object.assign({}, token), { [valueProp]: shadow }), 'color'), shadow.alpha || 1, token, config))}`;
42
+ const colorString = normalizeColorValue(getTokenValue(Object.assign(Object.assign({}, token), { [valueProp]: shadow }), 'color'));
43
+ const colorHex = shadow.alpha !== undefined ? toHex(alpha(colorString, shadow.alpha, token, config)) : toHex(colorString);
44
+ return `${shadow.inset === true ? 'inset ' : ''}${dimensionToCss(shadow.offsetX)} ${dimensionToCss(shadow.offsetY)} ${dimensionToCss(shadow.blur)} ${dimensionToCss(shadow.spread)} ${colorHex}`;
31
45
  })
32
46
  .join(', ');
33
47
  },
@@ -0,0 +1,23 @@
1
+ import Color from 'colorjs.io';
2
+ import type { ColorW3cValue } from '../../schemas/colorW3cValue.js';
3
+ export type ColorValue = string | ColorW3cValue;
4
+ /**
5
+ * Type guard to check if value is a valid W3C color object.
6
+ * Validates structure: colorSpace is a string, components is a 3-element array
7
+ * of numbers or 'none' keywords.
8
+ */
9
+ export declare function isW3cColorValue(value: unknown): value is ColorW3cValue;
10
+ /**
11
+ * Converts a W3C DTCG color object to a colorjs.io Color instance.
12
+ * The 'none' keyword is replaced with 0 per CSS Color 4 rules for color computation.
13
+ */
14
+ export declare function w3cToColor(value: ColorW3cValue): Color;
15
+ /**
16
+ * Normalizes a color value for use in transformers.
17
+ * String values (hex, rgb, rgba, references) are returned as-is.
18
+ * W3C DTCG color objects are converted to hex via colorjs.io,
19
+ * correctly handling all color spaces (sRGB, display-p3, lab, etc.).
20
+ * @param value - color string or W3C color object
21
+ * @returns color string usable by downstream transformers
22
+ */
23
+ export declare function normalizeColorValue(value: ColorValue): string;
@@ -0,0 +1,74 @@
1
+ import Color from 'colorjs.io';
2
+ /**
3
+ * Type guard to check if value is a valid W3C color object.
4
+ * Validates structure: colorSpace is a string, components is a 3-element array
5
+ * of numbers or 'none' keywords.
6
+ */
7
+ export function isW3cColorValue(value) {
8
+ if (typeof value !== 'object' || value === null)
9
+ return false;
10
+ if (!('colorSpace' in value) || typeof value.colorSpace !== 'string')
11
+ return false;
12
+ if (!('components' in value))
13
+ return false;
14
+ const components = value.components;
15
+ if (!Array.isArray(components) || components.length !== 3)
16
+ return false;
17
+ return components.every(c => typeof c === 'number' || c === 'none');
18
+ }
19
+ /**
20
+ * Maps W3C DTCG color space names to colorjs.io space identifiers
21
+ */
22
+ const getColorSpace = (colorSpace) => {
23
+ switch (colorSpace) {
24
+ case 'display-p3':
25
+ return 'p3';
26
+ case 'a98-rgb':
27
+ return 'a98rgb';
28
+ case 'prophoto-rgb':
29
+ return 'prophoto';
30
+ default:
31
+ return colorSpace;
32
+ }
33
+ };
34
+ /**
35
+ * Converts a W3C DTCG color object to a colorjs.io Color instance.
36
+ * The 'none' keyword is replaced with 0 per CSS Color 4 rules for color computation.
37
+ */
38
+ export function w3cToColor(value) {
39
+ var _a;
40
+ const coords = value.components.map(c => (c === 'none' ? 0 : c));
41
+ return new Color({
42
+ space: getColorSpace(value.colorSpace),
43
+ coords,
44
+ alpha: (_a = value.alpha) !== null && _a !== void 0 ? _a : 1,
45
+ });
46
+ }
47
+ /**
48
+ * Normalizes a color value for use in transformers.
49
+ * String values (hex, rgb, rgba, references) are returned as-is.
50
+ * W3C DTCG color objects are converted to hex via colorjs.io,
51
+ * correctly handling all color spaces (sRGB, display-p3, lab, etc.).
52
+ * @param value - color string or W3C color object
53
+ * @returns color string usable by downstream transformers
54
+ */
55
+ export function normalizeColorValue(value) {
56
+ // String value (hex, rgb, rgba, reference, etc.) - return as-is
57
+ if (typeof value === 'string') {
58
+ return value;
59
+ }
60
+ // W3C object with hex property and sRGB color space - use hex directly
61
+ if (value.hex && value.colorSpace === 'srgb' && (value.alpha === undefined || value.alpha === 1)) {
62
+ return value.hex;
63
+ }
64
+ // Convert via colorjs.io for correct color space handling
65
+ const color = w3cToColor(value);
66
+ const rgb = color.toGamut('srgb').to('srgb');
67
+ const [r, g, b] = rgb.coords.map(x => Math.round(Math.max(0, Math.min(1, x !== null && x !== void 0 ? x : 0)) * 255));
68
+ const hex = `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;
69
+ if (rgb.alpha < 1) {
70
+ const a = Math.round(rgb.alpha * 255);
71
+ return hex + a.toString(16).padStart(2, '0');
72
+ }
73
+ return hex;
74
+ }
@@ -0,0 +1,12 @@
1
+ import type { DimensionTokenValue } from '../../types/dimensionTokenValue.js';
2
+ /**
3
+ * @description Parses and validates a dimension value in W3C DTCG object format
4
+ * @param input - The dimension value in W3C object format { value: number, unit: "px" | "rem" | "em" }
5
+ * @returns Validated DimensionTokenValue
6
+ * @throws Error if the input is not a valid W3C dimension object
7
+ *
8
+ * W3C DTCG format: { value: 16, unit: "px" }
9
+ * @note `em` is not in the W3C spec but is supported for practical use
10
+ * @link https://www.designtokens.org/tr/drafts/format/#dimension
11
+ */
12
+ export declare const parseDimension: (input: DimensionTokenValue) => DimensionTokenValue;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @description Parses and validates a dimension value in W3C DTCG object format
3
+ * @param input - The dimension value in W3C object format { value: number, unit: "px" | "rem" | "em" }
4
+ * @returns Validated DimensionTokenValue
5
+ * @throws Error if the input is not a valid W3C dimension object
6
+ *
7
+ * W3C DTCG format: { value: 16, unit: "px" }
8
+ * @note `em` is not in the W3C spec but is supported for practical use
9
+ * @link https://www.designtokens.org/tr/drafts/format/#dimension
10
+ */
11
+ export const parseDimension = (input) => {
12
+ // Runtime validation for W3C DTCG object format
13
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
14
+ if (typeof input !== 'object' || input === null) {
15
+ throw new Error(`Invalid dimension value: ${JSON.stringify(input)} - must be a W3C DTCG dimension object with "value" and "unit" properties`);
16
+ }
17
+ const inputObj = input;
18
+ if (!('value' in inputObj) || !('unit' in inputObj)) {
19
+ throw new Error(`Invalid dimension value: ${JSON.stringify(input)} - must be a W3C DTCG dimension object with "value" and "unit" properties`);
20
+ }
21
+ const { value, unit } = input;
22
+ if (typeof value !== 'number' || !Number.isFinite(value)) {
23
+ throw new Error(`Invalid dimension value: ${JSON.stringify(input)} - value must be a finite number`);
24
+ }
25
+ // Runtime check - unit could be invalid at runtime even if types say otherwise
26
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
27
+ if (unit !== 'px' && unit !== 'rem' && unit !== 'em') {
28
+ throw new Error(`Invalid dimension unit: ${String(unit)} - must be "px", "rem", or "em"`);
29
+ }
30
+ return { value, unit };
31
+ };
@@ -1,10 +1,13 @@
1
+ import type {DimensionTokenValue} from './dimensionTokenValue.js'
2
+ import type {ColorW3cValue} from '../schemas/colorW3cValue.js'
3
+
1
4
  /**
2
5
  * Type definition for w3c border composite token value
3
6
  * @link https://design-tokens.github.io/community-group/format/#border
4
7
  */
5
8
  export type StrokeStyleString = 'solid' | 'dashed' | 'dotted' | 'double' | 'groove' | 'ridge' | 'outset' | 'inset'
6
9
  export type BorderTokenValue = {
7
- color: string
8
- width: string
10
+ color: string | ColorW3cValue
11
+ width: string | DimensionTokenValue
9
12
  style: StrokeStyleString
10
13
  }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * W3C DTCG dimension token value format
3
+ * @link https://www.designtokens.org/tr/drafts/format/#dimension
4
+ * @note `em` is not in the W3C spec but is supported for practical use
5
+ */
6
+ export type DimensionTokenValue = {
7
+ value: number
8
+ unit: 'px' | 'rem' | 'em'
9
+ }
@@ -1,13 +1,16 @@
1
+ import type {DimensionTokenValue} from './dimensionTokenValue.js'
2
+ import type {ColorW3cValue} from '../schemas/colorW3cValue.js'
3
+
1
4
  /**
2
5
  * Type definition for w3c shadow composite token value
3
6
  * @link https://design-tokens.github.io/community-group/format/#shadow
4
7
  */
5
8
  export type ShadowTokenValue = {
6
- color: string
7
- offsetX: string
8
- offsetY: string
9
- blur: string
10
- spread: string
9
+ color: string | ColorW3cValue
10
+ offsetX: DimensionTokenValue
11
+ offsetY: DimensionTokenValue
12
+ blur: DimensionTokenValue
13
+ spread: DimensionTokenValue
11
14
  // custom non w3c values
12
15
  inset?: boolean
13
16
  alpha?: number
@@ -1,7 +1,7 @@
1
1
  :root {
2
2
  --base-duration-0: 0ms;
3
3
  --base-duration-100: 100ms;
4
- --base-duration-1000: 1s;
4
+ --base-duration-1000: 1000ms;
5
5
  --base-duration-200: 200ms;
6
6
  --base-duration-300: 300ms;
7
7
  --base-duration-400: 400ms;
@@ -1,6 +1,6 @@
1
1
  :root {
2
2
  --borderRadius-full: 624.9375rem; /** Use this border radius for pill shaped elements */
3
- --borderRadius-large: 0.75rem; /** Large border radius (12px). Use for larger containers, dialogs, or when more visual softness is desired. Always use this for buttons. */
3
+ --borderRadius-large: 0.75rem; /** Large border radius (12px). Use for larger containers, dialogs, or when more visual softness is desired. */
4
4
  --borderRadius-medium: 0.375rem; /** Medium border radius (6px). The default choice for most buttons, cards, and containers */
5
5
  --borderRadius-small: 0.1875rem; /** Small border radius (3px). Use for small variants of components or small UI elements like badges, tags, or anything below 16px in height */
6
6
  --borderRadius-default: var(--borderRadius-medium); /** Default border radius for most UI elements. Alias of borderRadius.medium (6px). Use when in doubt */
@@ -1,6 +1,7 @@
1
1
  @media (pointer: coarse) {
2
2
  :root {
3
3
  --control-minTarget-auto: 2.75rem; /** Minimum touch target size for coarse pointer devices (touch screens) */
4
+ --controlStack-large-gap-auto: 0.75rem; /** Gap between stacked controls in large density layouts for touch devices */
4
5
  --controlStack-medium-gap-auto: 0.75rem; /** Gap between stacked controls in medium density layouts for touch devices */
5
6
  --controlStack-small-gap-auto: 1rem; /** Gap between stacked controls in small density layouts for touch devices */
6
7
  }
@@ -1,6 +1,7 @@
1
1
  @media (pointer: fine) {
2
2
  :root {
3
3
  --control-minTarget-auto: 1rem; /** Minimum target size for fine pointer devices (mouse) */
4
+ --controlStack-large-gap-auto: 0.5rem; /** Gap between stacked controls in large density layouts for mouse interfaces */
4
5
  --controlStack-medium-gap-auto: 0.5rem; /** Gap between stacked controls in medium density layouts for mouse interfaces */
5
6
  --controlStack-small-gap-auto: 0.5rem; /** Gap between stacked controls in small density layouts for mouse interfaces */
6
7
  }
@@ -16,6 +16,7 @@
16
16
  --spinner-strokeWidth-default: 0.125rem;
17
17
  --control-large-gap: 0.5rem;
18
18
  --control-large-lineBoxHeight: 1.25rem;
19
+ --control-large-paddingInline-condensed: 0.5rem;
19
20
  --control-large-paddingInline-normal: 0.75rem;
20
21
  --control-large-paddingInline-spacious: 1rem;
21
22
  --control-large-size: 2.5rem;
@@ -32,9 +33,11 @@
32
33
  --control-small-paddingBlock: 0.25rem;
33
34
  --control-small-paddingInline-condensed: 0.5rem;
34
35
  --control-small-paddingInline-normal: 0.75rem;
36
+ --control-small-paddingInline-spacious: 1rem;
35
37
  --control-small-size: 1.75rem;
36
38
  --control-xlarge-gap: 0.5rem;
37
39
  --control-xlarge-lineBoxHeight: 1.25rem;
40
+ --control-xlarge-paddingInline-condensed: 0.5rem;
38
41
  --control-xlarge-paddingInline-normal: 0.75rem;
39
42
  --control-xlarge-paddingInline-spacious: 1rem;
40
43
  --control-xlarge-size: 3rem;
@@ -47,8 +50,10 @@
47
50
  --controlStack-large-gap-auto: 0.5rem;
48
51
  --controlStack-large-gap-condensed: 0.5rem;
49
52
  --controlStack-large-gap-spacious: 0.75rem;
53
+ --controlStack-medium-gap-auto: 0.5rem;
50
54
  --controlStack-medium-gap-condensed: 0.5rem;
51
55
  --controlStack-medium-gap-spacious: 0.75rem;
56
+ --controlStack-small-gap-auto: 0.5rem;
52
57
  --controlStack-small-gap-condensed: 0.5rem;
53
58
  --controlStack-small-gap-spacious: 1rem;
54
59
  --overlay-borderRadius: 0.375rem;
@@ -15,7 +15,7 @@
15
15
  --fgColor-done: #d3abff; /** Text color for completed/done state indicators */
16
16
  --fgColor-sponsors: #ff90c8; /** Text color for GitHub Sponsors content */
17
17
  --reactionButton-selected-bgColor-hover: #3a8cfd5c;
18
- --avatar-shadow: 0px 0px 0px 2px #0d1117;
18
+ --avatar-shadow: 0 0 0 2px #0d1117;
19
19
  --avatarStack-fade-bgColor-default: #3d444d;
20
20
  --avatarStack-fade-bgColor-muted: #2a313c;
21
21
  --bgColor-accent-emphasis: #194fb1; /** Strong accent background for active states and focused states */
@@ -58,13 +58,13 @@
58
58
  --borderColor-sponsors-muted: #f87cbd; /** Subtle border for GitHub Sponsors content */
59
59
  --borderColor-success-emphasis: #409eff; /** Strong success border for prominent positive elements */
60
60
  --borderColor-success-muted: #5cacff; /** Subtle success border for positive feedback elements */
61
- --borderColor-translucent: #9198a1; /** Semi-transparent border for overlays and layered elements */
61
+ --borderColor-translucent: #9198a1; /** Semi-transparent border for overlays and layered elements. Border-specific token — no bgColor-translucent counterpart exists by design. */
62
62
  --borderColor-transparent: #00000000; /** Fully transparent border */
63
63
  --button-danger-bgColor-hover: #8f3c00;
64
64
  --button-danger-borderColor-hover: #ffb757;
65
65
  --button-danger-fgColor-rest: #ffb757;
66
- --button-danger-shadow-selected: 0px 0px 0px 0px #000000;
67
- --button-default-shadow-resting: 0px 0px 0px 0px #000000;
66
+ --button-danger-shadow-selected: 0 0 0 0 #00000000;
67
+ --button-default-shadow-resting: 0 0 0 0 #00000000;
68
68
  --button-inactive-bgColor: #262c36;
69
69
  --button-inactive-fgColor: #b7bdc8;
70
70
  --button-invisible-bgColor-active: #212830;
@@ -78,10 +78,10 @@
78
78
  --button-outline-fgColor-disabled: #74b9ff80;
79
79
  --button-outline-fgColor-hover: #71b7ff;
80
80
  --button-outline-fgColor-rest: #5cacff;
81
- --button-outline-shadow-selected: 0px 0px 0px 0px #000000;
81
+ --button-outline-shadow-selected: 0 0 0 0 #00000000;
82
82
  --button-primary-bgColor-disabled: #318bf8;
83
83
  --button-primary-borderColor-rest: #91cbff;
84
- --button-primary-shadow-selected: 0px 0px 0px 0px #000000;
84
+ --button-primary-shadow-selected: 0 0 0 0 #00000000;
85
85
  --button-star-iconColor: #f7c843;
86
86
  --buttonCounter-default-bgColor-rest: #2f3742;
87
87
  --buttonCounter-outline-bgColor-hover: #194fb133;
@@ -668,6 +668,7 @@
668
668
  --border-sponsors-muted: 0.0625rem solid #f87cbd;
669
669
  --border-success-emphasis: 0.0625rem solid #409eff;
670
670
  --border-success-muted: 0.0625rem solid #5cacff;
671
+ --border-translucent: 0.0625rem solid #9198a1; /** Semi-transparent border shorthand for overlays and layered elements. Border-specific token — no bgColor-translucent counterpart exists by design. */
671
672
  --border-transparent: 0.0625rem solid #00000000;
672
673
  --borderColor-closed-muted: var(--borderColor-default); /** Subtle border for closed state indicators */
673
674
  --borderColor-draft-muted: var(--borderColor-default); /** Subtle border for draft state indicators */
@@ -796,17 +797,18 @@
796
797
  --reactionButton-selected-fgColor-rest: var(--fgColor-link);
797
798
  --selectMenu-borderColor: var(--borderColor-default);
798
799
  --selection-bgColor: #194fb1b3; /** Background color for text selection highlights */
799
- --shadow-floating-legacy: 0px 6px 12px -3px #01040966, 0px 6px 18px 0px #01040966;
800
- --shadow-inset: inset 0px 1px 0px 0px #0104093d;
801
- --shadow-resting-medium: 0px 1px 1px 0px #01040966, 0px 3px 6px 0px #010409cc;
802
- --shadow-resting-small: 0px 1px 1px 0px #01040999, 0px 1px 3px 0px #01040999;
803
- --shadow-resting-xsmall: 0px 1px 1px 0px #010409cc;
800
+ --shadow-floating-legacy: 0 6px 12px -3px #01040966, 0 6px 18px 0 #01040966; /** Legacy floating shadow for backward compatibility */
801
+ --shadow-inset: inset 0 1px 0 0 #0104093d; /** Inset shadow for recessed elements */
802
+ --shadow-resting-medium: 0 1px 1px 0 #01040966, 0 3px 6px 0 #010409cc; /** Medium resting shadow for cards and elevated surfaces */
803
+ --shadow-resting-small: 0 1px 1px 0 #01040999, 0 1px 3px 0 #01040999; /** Small resting shadow for buttons and interactive elements */
804
+ --shadow-resting-xsmall: 0 1px 1px 0 #010409cc; /** Extra small resting shadow for minimal elevation */
804
805
  --topicTag-borderColor: var(--borderColor-accent-emphasis);
805
806
  --treeViewItem-leadingVisual-iconColor-rest: var(--fgColor-muted);
806
807
  --underlineNav-iconColor-rest: var(--fgColor-muted);
807
808
  --avatar-borderColor: var(--borderColor-emphasis);
808
809
  --border-closed-emphasis: var(--border-danger-emphasis);
809
810
  --border-closed-muted: var(--border-danger-muted);
811
+ --border-draft-muted: 0.0625rem solid #b7bdc8;
810
812
  --border-emphasis: 0.0625rem solid #b7bdc8;
811
813
  --border-muted: 0.0625rem solid #b7bdc8;
812
814
  --border-open-emphasis: var(--border-success-emphasis);
@@ -818,14 +820,17 @@
818
820
  --borderColor-neutral-muted: var(--borderColor-muted); /** Subtle neutral semantic border */
819
821
  --button-danger-bgColor-disabled: var(--control-bgColor-disabled);
820
822
  --button-danger-borderColor-rest: var(--control-borderColor-rest);
823
+ --button-danger-iconColor-disabled: var(--button-danger-fgColor-disabled);
821
824
  --button-default-bgColor-disabled: var(--control-bgColor-disabled);
822
825
  --button-default-borderColor-disabled: var(--control-borderColor-disabled);
823
826
  --button-default-borderColor-rest: var(--control-borderColor-rest);
827
+ --button-default-fgColor-disabled: var(--control-fgColor-disabled);
824
828
  --button-invisible-borderColor-hover: var(--control-transparent-borderColor-hover);
825
829
  --button-invisible-fgColor-disabled: var(--control-fgColor-disabled);
826
830
  --button-invisible-iconColor-disabled: var(--control-fgColor-disabled);
827
831
  --button-outline-bgColor-disabled: var(--control-bgColor-disabled);
828
832
  --button-primary-fgColor-rest: var(--fgColor-white);
833
+ --button-primary-iconColor-disabled: var(--button-primary-fgColor-disabled);
829
834
  --button-primary-iconColor-rest: var(--fgColor-white);
830
835
  --buttonKeybindingHint-danger-bgColor-disabled: var(--buttonKeybindingHint-default-bgColor-disabled);
831
836
  --buttonKeybindingHint-danger-fgColor-active: var(--fgColor-onEmphasis);
@@ -875,10 +880,10 @@
875
880
  --focus-outline: 2px solid #409eff; /** Focus ring outline for keyboard navigation and accessibility. */
876
881
  --page-header-bgColor: var(--bgColor-default);
877
882
  --progressBar-track-bgColor: var(--bgColor-inverse);
878
- --shadow-floating-large: 0px 0px 0px 1px #b7bdc8, 0px 24px 48px 0px #010409; /** Large floating shadow for modals and dialogs */
879
- --shadow-floating-medium: 0px 0px 0px 1px #b7bdc8, 0px 8px 16px -4px #01040966, 0px 4px 32px -4px #01040966, 0px 24px 48px -12px #01040966, 0px 48px 96px -24px #01040966;
880
- --shadow-floating-small: 0px 0px 0px 1px #b7bdc8, 0px 6px 12px -3px #01040966, 0px 6px 18px 0px #01040966; /** Small floating shadow for dropdowns, tooltips, and small overlays */
881
- --shadow-floating-xlarge: 0px 0px 0px 1px #b7bdc8, 0px 32px 64px 0px #010409;
883
+ --shadow-floating-large: 0 0 0 1px #b7bdc8, 0 24px 48px 0 #010409; /** Large floating shadow for modals and dialogs */
884
+ --shadow-floating-medium: 0 0 0 1px #b7bdc8, 0 8px 16px -4px #01040966, 0 4px 32px -4px #01040966, 0 24px 48px -12px #01040966, 0 48px 96px -24px #01040966; /** Medium floating shadow for popovers and action menus */
885
+ --shadow-floating-small: 0 0 0 1px #b7bdc8, 0 6px 12px -3px #01040966, 0 6px 18px 0 #01040966; /** Small floating shadow for dropdowns, tooltips, and small overlays */
886
+ --shadow-floating-xlarge: 0 0 0 1px #b7bdc8, 0 32px 64px 0 #010409; /** Extra large floating shadow for full-screen overlays and sheets */
882
887
  --tooltip-bgColor: var(--bgColor-inverse);
883
888
  --tooltip-fgColor: var(--fgColor-onInverse);
884
889
  --border-neutral-emphasis: 0.0625rem solid #b7bdc8;
@@ -896,6 +901,7 @@
896
901
  --controlKnob-borderColor-rest: var(--control-borderColor-emphasis);
897
902
  --progressBar-track-borderColor: var(--progressBar-track-bgColor);
898
903
  --underlineNav-borderColor-hover: var(--borderColor-neutral-muted);
904
+ --border-draft-emphasis: 0.0625rem solid #b7bdc8;
899
905
  --button-outline-borderColor-hover: var(--button-default-borderColor-hover);
900
906
  --button-outline-borderColor-active: var(--button-outline-borderColor-hover);
901
907
  }
@@ -912,7 +918,7 @@
912
918
  --fgColor-done: #d3abff; /** Text color for completed/done state indicators */
913
919
  --fgColor-sponsors: #ff90c8; /** Text color for GitHub Sponsors content */
914
920
  --reactionButton-selected-bgColor-hover: #3a8cfd5c;
915
- --avatar-shadow: 0px 0px 0px 2px #0d1117;
921
+ --avatar-shadow: 0 0 0 2px #0d1117;
916
922
  --avatarStack-fade-bgColor-default: #3d444d;
917
923
  --avatarStack-fade-bgColor-muted: #2a313c;
918
924
  --bgColor-accent-emphasis: #194fb1; /** Strong accent background for active states and focused states */
@@ -955,13 +961,13 @@
955
961
  --borderColor-sponsors-muted: #f87cbd; /** Subtle border for GitHub Sponsors content */
956
962
  --borderColor-success-emphasis: #409eff; /** Strong success border for prominent positive elements */
957
963
  --borderColor-success-muted: #5cacff; /** Subtle success border for positive feedback elements */
958
- --borderColor-translucent: #9198a1; /** Semi-transparent border for overlays and layered elements */
964
+ --borderColor-translucent: #9198a1; /** Semi-transparent border for overlays and layered elements. Border-specific token — no bgColor-translucent counterpart exists by design. */
959
965
  --borderColor-transparent: #00000000; /** Fully transparent border */
960
966
  --button-danger-bgColor-hover: #8f3c00;
961
967
  --button-danger-borderColor-hover: #ffb757;
962
968
  --button-danger-fgColor-rest: #ffb757;
963
- --button-danger-shadow-selected: 0px 0px 0px 0px #000000;
964
- --button-default-shadow-resting: 0px 0px 0px 0px #000000;
969
+ --button-danger-shadow-selected: 0 0 0 0 #00000000;
970
+ --button-default-shadow-resting: 0 0 0 0 #00000000;
965
971
  --button-inactive-bgColor: #262c36;
966
972
  --button-inactive-fgColor: #b7bdc8;
967
973
  --button-invisible-bgColor-active: #212830;
@@ -975,10 +981,10 @@
975
981
  --button-outline-fgColor-disabled: #74b9ff80;
976
982
  --button-outline-fgColor-hover: #71b7ff;
977
983
  --button-outline-fgColor-rest: #5cacff;
978
- --button-outline-shadow-selected: 0px 0px 0px 0px #000000;
984
+ --button-outline-shadow-selected: 0 0 0 0 #00000000;
979
985
  --button-primary-bgColor-disabled: #318bf8;
980
986
  --button-primary-borderColor-rest: #91cbff;
981
- --button-primary-shadow-selected: 0px 0px 0px 0px #000000;
987
+ --button-primary-shadow-selected: 0 0 0 0 #00000000;
982
988
  --button-star-iconColor: #f7c843;
983
989
  --buttonCounter-default-bgColor-rest: #2f3742;
984
990
  --buttonCounter-outline-bgColor-hover: #194fb133;
@@ -1565,6 +1571,7 @@
1565
1571
  --border-sponsors-muted: 0.0625rem solid #f87cbd;
1566
1572
  --border-success-emphasis: 0.0625rem solid #409eff;
1567
1573
  --border-success-muted: 0.0625rem solid #5cacff;
1574
+ --border-translucent: 0.0625rem solid #9198a1; /** Semi-transparent border shorthand for overlays and layered elements. Border-specific token — no bgColor-translucent counterpart exists by design. */
1568
1575
  --border-transparent: 0.0625rem solid #00000000;
1569
1576
  --borderColor-closed-muted: var(--borderColor-default); /** Subtle border for closed state indicators */
1570
1577
  --borderColor-draft-muted: var(--borderColor-default); /** Subtle border for draft state indicators */
@@ -1693,17 +1700,18 @@
1693
1700
  --reactionButton-selected-fgColor-rest: var(--fgColor-link);
1694
1701
  --selectMenu-borderColor: var(--borderColor-default);
1695
1702
  --selection-bgColor: #194fb1b3; /** Background color for text selection highlights */
1696
- --shadow-floating-legacy: 0px 6px 12px -3px #01040966, 0px 6px 18px 0px #01040966;
1697
- --shadow-inset: inset 0px 1px 0px 0px #0104093d;
1698
- --shadow-resting-medium: 0px 1px 1px 0px #01040966, 0px 3px 6px 0px #010409cc;
1699
- --shadow-resting-small: 0px 1px 1px 0px #01040999, 0px 1px 3px 0px #01040999;
1700
- --shadow-resting-xsmall: 0px 1px 1px 0px #010409cc;
1703
+ --shadow-floating-legacy: 0 6px 12px -3px #01040966, 0 6px 18px 0 #01040966; /** Legacy floating shadow for backward compatibility */
1704
+ --shadow-inset: inset 0 1px 0 0 #0104093d; /** Inset shadow for recessed elements */
1705
+ --shadow-resting-medium: 0 1px 1px 0 #01040966, 0 3px 6px 0 #010409cc; /** Medium resting shadow for cards and elevated surfaces */
1706
+ --shadow-resting-small: 0 1px 1px 0 #01040999, 0 1px 3px 0 #01040999; /** Small resting shadow for buttons and interactive elements */
1707
+ --shadow-resting-xsmall: 0 1px 1px 0 #010409cc; /** Extra small resting shadow for minimal elevation */
1701
1708
  --topicTag-borderColor: var(--borderColor-accent-emphasis);
1702
1709
  --treeViewItem-leadingVisual-iconColor-rest: var(--fgColor-muted);
1703
1710
  --underlineNav-iconColor-rest: var(--fgColor-muted);
1704
1711
  --avatar-borderColor: var(--borderColor-emphasis);
1705
1712
  --border-closed-emphasis: var(--border-danger-emphasis);
1706
1713
  --border-closed-muted: var(--border-danger-muted);
1714
+ --border-draft-muted: 0.0625rem solid #b7bdc8;
1707
1715
  --border-emphasis: 0.0625rem solid #b7bdc8;
1708
1716
  --border-muted: 0.0625rem solid #b7bdc8;
1709
1717
  --border-open-emphasis: var(--border-success-emphasis);
@@ -1715,14 +1723,17 @@
1715
1723
  --borderColor-neutral-muted: var(--borderColor-muted); /** Subtle neutral semantic border */
1716
1724
  --button-danger-bgColor-disabled: var(--control-bgColor-disabled);
1717
1725
  --button-danger-borderColor-rest: var(--control-borderColor-rest);
1726
+ --button-danger-iconColor-disabled: var(--button-danger-fgColor-disabled);
1718
1727
  --button-default-bgColor-disabled: var(--control-bgColor-disabled);
1719
1728
  --button-default-borderColor-disabled: var(--control-borderColor-disabled);
1720
1729
  --button-default-borderColor-rest: var(--control-borderColor-rest);
1730
+ --button-default-fgColor-disabled: var(--control-fgColor-disabled);
1721
1731
  --button-invisible-borderColor-hover: var(--control-transparent-borderColor-hover);
1722
1732
  --button-invisible-fgColor-disabled: var(--control-fgColor-disabled);
1723
1733
  --button-invisible-iconColor-disabled: var(--control-fgColor-disabled);
1724
1734
  --button-outline-bgColor-disabled: var(--control-bgColor-disabled);
1725
1735
  --button-primary-fgColor-rest: var(--fgColor-white);
1736
+ --button-primary-iconColor-disabled: var(--button-primary-fgColor-disabled);
1726
1737
  --button-primary-iconColor-rest: var(--fgColor-white);
1727
1738
  --buttonKeybindingHint-danger-bgColor-disabled: var(--buttonKeybindingHint-default-bgColor-disabled);
1728
1739
  --buttonKeybindingHint-danger-fgColor-active: var(--fgColor-onEmphasis);
@@ -1772,10 +1783,10 @@
1772
1783
  --focus-outline: 2px solid #409eff; /** Focus ring outline for keyboard navigation and accessibility. */
1773
1784
  --page-header-bgColor: var(--bgColor-default);
1774
1785
  --progressBar-track-bgColor: var(--bgColor-inverse);
1775
- --shadow-floating-large: 0px 0px 0px 1px #b7bdc8, 0px 24px 48px 0px #010409; /** Large floating shadow for modals and dialogs */
1776
- --shadow-floating-medium: 0px 0px 0px 1px #b7bdc8, 0px 8px 16px -4px #01040966, 0px 4px 32px -4px #01040966, 0px 24px 48px -12px #01040966, 0px 48px 96px -24px #01040966;
1777
- --shadow-floating-small: 0px 0px 0px 1px #b7bdc8, 0px 6px 12px -3px #01040966, 0px 6px 18px 0px #01040966; /** Small floating shadow for dropdowns, tooltips, and small overlays */
1778
- --shadow-floating-xlarge: 0px 0px 0px 1px #b7bdc8, 0px 32px 64px 0px #010409;
1786
+ --shadow-floating-large: 0 0 0 1px #b7bdc8, 0 24px 48px 0 #010409; /** Large floating shadow for modals and dialogs */
1787
+ --shadow-floating-medium: 0 0 0 1px #b7bdc8, 0 8px 16px -4px #01040966, 0 4px 32px -4px #01040966, 0 24px 48px -12px #01040966, 0 48px 96px -24px #01040966; /** Medium floating shadow for popovers and action menus */
1788
+ --shadow-floating-small: 0 0 0 1px #b7bdc8, 0 6px 12px -3px #01040966, 0 6px 18px 0 #01040966; /** Small floating shadow for dropdowns, tooltips, and small overlays */
1789
+ --shadow-floating-xlarge: 0 0 0 1px #b7bdc8, 0 32px 64px 0 #010409; /** Extra large floating shadow for full-screen overlays and sheets */
1779
1790
  --tooltip-bgColor: var(--bgColor-inverse);
1780
1791
  --tooltip-fgColor: var(--fgColor-onInverse);
1781
1792
  --border-neutral-emphasis: 0.0625rem solid #b7bdc8;
@@ -1793,6 +1804,7 @@
1793
1804
  --controlKnob-borderColor-rest: var(--control-borderColor-emphasis);
1794
1805
  --progressBar-track-borderColor: var(--progressBar-track-bgColor);
1795
1806
  --underlineNav-borderColor-hover: var(--borderColor-neutral-muted);
1807
+ --border-draft-emphasis: 0.0625rem solid #b7bdc8;
1796
1808
  --button-outline-borderColor-hover: var(--button-default-borderColor-hover);
1797
1809
  --button-outline-borderColor-active: var(--button-outline-borderColor-hover);
1798
1810
  }