@workday/canvas-kit-react 11.0.0-alpha.726-next.0 → 11.0.0-alpha.758-next.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 (181) hide show
  1. package/breadcrumbs/lib/BreadcrumbsItem.tsx +1 -1
  2. package/breadcrumbs/lib/BreadcrumbsOverflowButton.tsx +1 -1
  3. package/button/lib/BaseButton.tsx +16 -1
  4. package/button/lib/DeleteButton.tsx +12 -11
  5. package/button/lib/ExternalHyperlink.tsx +1 -1
  6. package/button/lib/PrimaryButton.tsx +52 -45
  7. package/button/lib/SecondaryButton.tsx +58 -75
  8. package/button/lib/TertiaryButton.tsx +63 -54
  9. package/collection/lib/ListBox.tsx +9 -3
  10. package/combobox/lib/ComboboxMenuList.tsx +3 -4
  11. package/dist/commonjs/badge/lib/CountBadge.js +6 -6
  12. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsItem.js +1 -1
  13. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsOverflowButton.js +1 -1
  14. package/dist/commonjs/button/lib/BaseButton.d.ts.map +1 -1
  15. package/dist/commonjs/button/lib/BaseButton.js +18 -17
  16. package/dist/commonjs/button/lib/DeleteButton.d.ts.map +1 -1
  17. package/dist/commonjs/button/lib/DeleteButton.js +2 -1
  18. package/dist/commonjs/button/lib/ExternalHyperlink.js +1 -1
  19. package/dist/commonjs/button/lib/PrimaryButton.d.ts.map +1 -1
  20. package/dist/commonjs/button/lib/PrimaryButton.js +3 -2
  21. package/dist/commonjs/button/lib/SecondaryButton.d.ts.map +1 -1
  22. package/dist/commonjs/button/lib/SecondaryButton.js +3 -2
  23. package/dist/commonjs/button/lib/TertiaryButton.d.ts.map +1 -1
  24. package/dist/commonjs/button/lib/TertiaryButton.js +16 -15
  25. package/dist/commonjs/card/lib/Card.js +1 -1
  26. package/dist/commonjs/card/lib/CardHeading.js +1 -1
  27. package/dist/commonjs/checkbox/lib/CheckBackground.js +5 -5
  28. package/dist/commonjs/checkbox/lib/CheckboxCheck.js +9 -9
  29. package/dist/commonjs/checkbox/lib/CheckboxContainer.js +1 -1
  30. package/dist/commonjs/checkbox/lib/CheckboxInput.js +11 -11
  31. package/dist/commonjs/checkbox/lib/CheckboxRipple.js +1 -1
  32. package/dist/commonjs/collection/lib/ListBox.d.ts.map +1 -1
  33. package/dist/commonjs/collection/lib/ListBox.js +14 -8
  34. package/dist/commonjs/combobox/lib/ComboboxMenuItem.js +4 -4
  35. package/dist/commonjs/combobox/lib/ComboboxMenuList.d.ts.map +1 -1
  36. package/dist/commonjs/combobox/lib/ComboboxMenuList.js +4 -5
  37. package/dist/commonjs/common/lib/AccessibleHide.js +1 -1
  38. package/dist/commonjs/common/lib/CanvasProvider.js +1 -1
  39. package/dist/commonjs/icon/index.d.ts +1 -1
  40. package/dist/commonjs/icon/index.d.ts.map +1 -1
  41. package/dist/commonjs/icon/index.js +4 -1
  42. package/dist/commonjs/icon/lib/AccentIcon.d.ts +30 -4
  43. package/dist/commonjs/icon/lib/AccentIcon.d.ts.map +1 -1
  44. package/dist/commonjs/icon/lib/AccentIcon.js +28 -4
  45. package/dist/commonjs/icon/lib/AppletIcon.d.ts +31 -2
  46. package/dist/commonjs/icon/lib/AppletIcon.d.ts.map +1 -1
  47. package/dist/commonjs/icon/lib/AppletIcon.js +27 -4
  48. package/dist/commonjs/icon/lib/Graphic.d.ts +20 -1
  49. package/dist/commonjs/icon/lib/Graphic.d.ts.map +1 -1
  50. package/dist/commonjs/icon/lib/Graphic.js +25 -3
  51. package/dist/commonjs/icon/lib/Svg.d.ts +12 -2
  52. package/dist/commonjs/icon/lib/Svg.d.ts.map +1 -1
  53. package/dist/commonjs/icon/lib/Svg.js +25 -10
  54. package/dist/commonjs/icon/lib/SystemIcon.d.ts +79 -16
  55. package/dist/commonjs/icon/lib/SystemIcon.d.ts.map +1 -1
  56. package/dist/commonjs/icon/lib/SystemIcon.js +51 -14
  57. package/dist/commonjs/icon/lib/SystemIconCircle.d.ts +2 -3
  58. package/dist/commonjs/icon/lib/SystemIconCircle.d.ts.map +1 -1
  59. package/dist/commonjs/icon/lib/SystemIconCircle.js +20 -30
  60. package/dist/commonjs/loading-dots/lib/LoadingDots.js +3 -3
  61. package/dist/commonjs/menu/lib/MenuCard.js +2 -2
  62. package/dist/commonjs/menu/lib/MenuList.js +5 -5
  63. package/dist/commonjs/select/lib/Select.js +7 -7
  64. package/dist/commonjs/select/lib/hooks/useSelectInput.d.ts +4 -1
  65. package/dist/commonjs/select/lib/hooks/useSelectInput.d.ts.map +1 -1
  66. package/dist/commonjs/select/lib/hooks/useSelectInput.js +14 -5
  67. package/dist/commonjs/switch/lib/Switch.js +13 -13
  68. package/dist/commonjs/table/lib/Table.js +2 -2
  69. package/dist/commonjs/table/lib/TableBody.js +2 -2
  70. package/dist/commonjs/table/lib/TableCaption.js +2 -2
  71. package/dist/commonjs/table/lib/TableCell.js +2 -2
  72. package/dist/commonjs/table/lib/TableFooter.js +2 -2
  73. package/dist/commonjs/table/lib/TableHead.js +2 -2
  74. package/dist/commonjs/table/lib/TableHeader.js +2 -2
  75. package/dist/commonjs/table/lib/TableRow.js +2 -2
  76. package/dist/commonjs/tabs/lib/TabsItem.d.ts.map +1 -1
  77. package/dist/commonjs/tabs/lib/TabsItem.js +4 -12
  78. package/dist/commonjs/tabs/lib/useTabsModel.d.ts.map +1 -1
  79. package/dist/commonjs/text/lib/LabelText.d.ts.map +1 -1
  80. package/dist/commonjs/text/lib/LabelText.js +11 -27
  81. package/dist/commonjs/text/lib/Text.d.ts +103 -0
  82. package/dist/commonjs/text/lib/Text.d.ts.map +1 -1
  83. package/dist/commonjs/text/lib/Text.js +30 -27
  84. package/dist/commonjs/tooltip/lib/OverflowTooltip.d.ts.map +1 -1
  85. package/dist/commonjs/tooltip/lib/OverflowTooltip.js +2 -3
  86. package/dist/es6/badge/lib/CountBadge.js +6 -6
  87. package/dist/es6/breadcrumbs/lib/BreadcrumbsItem.js +1 -1
  88. package/dist/es6/breadcrumbs/lib/BreadcrumbsOverflowButton.js +1 -1
  89. package/dist/es6/button/lib/BaseButton.d.ts.map +1 -1
  90. package/dist/es6/button/lib/BaseButton.js +18 -17
  91. package/dist/es6/button/lib/DeleteButton.d.ts.map +1 -1
  92. package/dist/es6/button/lib/DeleteButton.js +2 -1
  93. package/dist/es6/button/lib/ExternalHyperlink.js +1 -1
  94. package/dist/es6/button/lib/PrimaryButton.d.ts.map +1 -1
  95. package/dist/es6/button/lib/PrimaryButton.js +3 -2
  96. package/dist/es6/button/lib/SecondaryButton.d.ts.map +1 -1
  97. package/dist/es6/button/lib/SecondaryButton.js +3 -2
  98. package/dist/es6/button/lib/TertiaryButton.d.ts.map +1 -1
  99. package/dist/es6/button/lib/TertiaryButton.js +16 -15
  100. package/dist/es6/card/lib/Card.js +1 -1
  101. package/dist/es6/card/lib/CardHeading.js +1 -1
  102. package/dist/es6/checkbox/lib/CheckBackground.js +5 -5
  103. package/dist/es6/checkbox/lib/CheckboxCheck.js +9 -9
  104. package/dist/es6/checkbox/lib/CheckboxContainer.js +1 -1
  105. package/dist/es6/checkbox/lib/CheckboxInput.js +11 -11
  106. package/dist/es6/checkbox/lib/CheckboxRipple.js +1 -1
  107. package/dist/es6/collection/lib/ListBox.d.ts.map +1 -1
  108. package/dist/es6/collection/lib/ListBox.js +15 -9
  109. package/dist/es6/combobox/lib/ComboboxMenuItem.js +4 -4
  110. package/dist/es6/combobox/lib/ComboboxMenuList.d.ts.map +1 -1
  111. package/dist/es6/combobox/lib/ComboboxMenuList.js +5 -6
  112. package/dist/es6/common/lib/AccessibleHide.js +1 -1
  113. package/dist/es6/common/lib/CanvasProvider.js +1 -1
  114. package/dist/es6/icon/index.d.ts +1 -1
  115. package/dist/es6/icon/index.d.ts.map +1 -1
  116. package/dist/es6/icon/index.js +1 -1
  117. package/dist/es6/icon/lib/AccentIcon.d.ts +30 -4
  118. package/dist/es6/icon/lib/AccentIcon.d.ts.map +1 -1
  119. package/dist/es6/icon/lib/AccentIcon.js +27 -3
  120. package/dist/es6/icon/lib/AppletIcon.d.ts +31 -2
  121. package/dist/es6/icon/lib/AppletIcon.d.ts.map +1 -1
  122. package/dist/es6/icon/lib/AppletIcon.js +26 -3
  123. package/dist/es6/icon/lib/Graphic.d.ts +20 -1
  124. package/dist/es6/icon/lib/Graphic.d.ts.map +1 -1
  125. package/dist/es6/icon/lib/Graphic.js +24 -2
  126. package/dist/es6/icon/lib/Svg.d.ts +12 -2
  127. package/dist/es6/icon/lib/Svg.d.ts.map +1 -1
  128. package/dist/es6/icon/lib/Svg.js +25 -11
  129. package/dist/es6/icon/lib/SystemIcon.d.ts +79 -16
  130. package/dist/es6/icon/lib/SystemIcon.d.ts.map +1 -1
  131. package/dist/es6/icon/lib/SystemIcon.js +50 -13
  132. package/dist/es6/icon/lib/SystemIconCircle.d.ts +2 -3
  133. package/dist/es6/icon/lib/SystemIconCircle.d.ts.map +1 -1
  134. package/dist/es6/icon/lib/SystemIconCircle.js +23 -30
  135. package/dist/es6/loading-dots/lib/LoadingDots.js +3 -3
  136. package/dist/es6/menu/lib/MenuCard.js +2 -2
  137. package/dist/es6/menu/lib/MenuList.js +5 -5
  138. package/dist/es6/select/lib/Select.js +7 -7
  139. package/dist/es6/select/lib/hooks/useSelectInput.d.ts +4 -1
  140. package/dist/es6/select/lib/hooks/useSelectInput.d.ts.map +1 -1
  141. package/dist/es6/select/lib/hooks/useSelectInput.js +14 -5
  142. package/dist/es6/switch/lib/Switch.js +13 -13
  143. package/dist/es6/table/lib/Table.js +2 -2
  144. package/dist/es6/table/lib/TableBody.js +2 -2
  145. package/dist/es6/table/lib/TableCaption.js +2 -2
  146. package/dist/es6/table/lib/TableCell.js +2 -2
  147. package/dist/es6/table/lib/TableFooter.js +2 -2
  148. package/dist/es6/table/lib/TableHead.js +2 -2
  149. package/dist/es6/table/lib/TableHeader.js +2 -2
  150. package/dist/es6/table/lib/TableRow.js +2 -2
  151. package/dist/es6/tabs/lib/TabsItem.d.ts.map +1 -1
  152. package/dist/es6/tabs/lib/TabsItem.js +5 -13
  153. package/dist/es6/tabs/lib/useTabsModel.d.ts.map +1 -1
  154. package/dist/es6/text/lib/LabelText.d.ts.map +1 -1
  155. package/dist/es6/text/lib/LabelText.js +12 -28
  156. package/dist/es6/text/lib/Text.d.ts +103 -0
  157. package/dist/es6/text/lib/Text.d.ts.map +1 -1
  158. package/dist/es6/text/lib/Text.js +31 -28
  159. package/dist/es6/tooltip/lib/OverflowTooltip.d.ts.map +1 -1
  160. package/dist/es6/tooltip/lib/OverflowTooltip.js +2 -3
  161. package/icon/index.ts +1 -1
  162. package/icon/lib/AccentIcon.tsx +48 -10
  163. package/icon/lib/AppletIcon.tsx +53 -12
  164. package/icon/lib/Graphic.tsx +43 -10
  165. package/icon/lib/Svg.tsx +36 -19
  166. package/icon/lib/SystemIcon.tsx +134 -39
  167. package/icon/lib/SystemIconCircle.tsx +42 -47
  168. package/package.json +5 -5
  169. package/select/lib/hooks/useSelectInput.ts +24 -8
  170. package/tabs/lib/TabsItem.tsx +6 -13
  171. package/tabs/lib/useTabsModel.tsx +0 -1
  172. package/text/lib/LabelText.tsx +11 -63
  173. package/text/lib/Text.tsx +65 -62
  174. package/tooltip/lib/OverflowTooltip.tsx +2 -3
  175. package/dist/commonjs/icon/lib/Icon.d.ts +0 -9
  176. package/dist/commonjs/icon/lib/Icon.d.ts.map +0 -1
  177. package/dist/commonjs/icon/lib/Icon.js +0 -40
  178. package/dist/es6/icon/lib/Icon.d.ts +0 -9
  179. package/dist/es6/icon/lib/Icon.d.ts.map +0 -1
  180. package/dist/es6/icon/lib/Icon.js +0 -18
  181. package/icon/lib/Icon.tsx +0 -38
@@ -21,6 +21,109 @@ export interface TextProps extends BoxProps {
21
21
  */
22
22
  variant?: 'error' | 'hint' | 'inverse';
23
23
  }
24
+ export declare const textStencil: import("@workday/canvas-kit-styling").Stencil<{
25
+ typeLevel: {
26
+ 'title.large': {
27
+ color: "--cnvs-sys-color-text-strong";
28
+ fontFamily: "--cnvs-base-font-family-50";
29
+ fontWeight: "--cnvs-base-font-weight-700";
30
+ lineHeight: "--cnvs-base-line-height-600";
31
+ fontSize: "--cnvs-base-font-size-600";
32
+ };
33
+ 'title.medium': {
34
+ color: "--cnvs-sys-color-text-strong";
35
+ fontFamily: "--cnvs-base-font-family-50";
36
+ fontWeight: "--cnvs-base-font-weight-700";
37
+ lineHeight: "--cnvs-base-line-height-500";
38
+ fontSize: "--cnvs-base-font-size-500";
39
+ };
40
+ 'title.small': {
41
+ color: "--cnvs-sys-color-text-strong";
42
+ fontFamily: "--cnvs-base-font-family-50";
43
+ fontWeight: "--cnvs-base-font-weight-700";
44
+ lineHeight: "--cnvs-base-line-height-400";
45
+ fontSize: "--cnvs-base-font-size-400";
46
+ };
47
+ 'heading.large': {
48
+ color: "--cnvs-sys-color-text-strong";
49
+ fontFamily: "--cnvs-base-font-family-50";
50
+ fontWeight: "--cnvs-base-font-weight-700";
51
+ lineHeight: "--cnvs-base-line-height-350";
52
+ fontSize: "--cnvs-base-font-size-300";
53
+ };
54
+ 'heading.medium': {
55
+ color: "--cnvs-sys-color-text-strong";
56
+ fontFamily: "--cnvs-base-font-family-50";
57
+ fontWeight: "--cnvs-base-font-weight-700";
58
+ lineHeight: "--cnvs-base-line-height-300";
59
+ fontSize: "--cnvs-base-font-size-250";
60
+ };
61
+ 'heading.small': {
62
+ color: "--cnvs-sys-color-text-strong";
63
+ fontFamily: "--cnvs-base-font-family-50";
64
+ fontWeight: "--cnvs-base-font-weight-700";
65
+ lineHeight: "--cnvs-base-line-height-250";
66
+ fontSize: "--cnvs-base-font-size-200";
67
+ };
68
+ 'body.large': {
69
+ color: "--cnvs-sys-color-text-default";
70
+ fontFamily: "--cnvs-base-font-family-50";
71
+ fontWeight: "--cnvs-base-font-weight-400";
72
+ lineHeight: "--cnvs-base-line-height-200";
73
+ fontSize: "--cnvs-base-font-size-150";
74
+ };
75
+ 'body.medium': {
76
+ color: "--cnvs-sys-color-text-default";
77
+ fontFamily: "--cnvs-base-font-family-50";
78
+ fontWeight: "--cnvs-base-font-weight-400";
79
+ lineHeight: "--cnvs-base-line-height-200";
80
+ fontSize: "--cnvs-base-font-size-125";
81
+ };
82
+ 'body.small': {
83
+ color: "--cnvs-sys-color-text-default";
84
+ fontFamily: "--cnvs-base-font-family-50";
85
+ fontWeight: "--cnvs-base-font-weight-400";
86
+ lineHeight: "--cnvs-base-line-height-150";
87
+ fontSize: "--cnvs-base-font-size-100";
88
+ letterSpacing: "--cnvs-base-letter-spacing-200";
89
+ };
90
+ 'subtext.large': {
91
+ color: "--cnvs-sys-color-text-default";
92
+ fontFamily: "--cnvs-base-font-family-50";
93
+ fontWeight: "--cnvs-base-font-weight-400";
94
+ lineHeight: "--cnvs-base-line-height-100";
95
+ fontSize: "--cnvs-base-font-size-75";
96
+ letterSpacing: "--cnvs-base-letter-spacing-150";
97
+ };
98
+ 'subtext.medium': {
99
+ color: "--cnvs-sys-color-text-default";
100
+ fontFamily: "--cnvs-base-font-family-50";
101
+ fontWeight: "--cnvs-base-font-weight-400";
102
+ lineHeight: "--cnvs-base-line-height-50";
103
+ fontSize: "--cnvs-base-font-size-50";
104
+ letterSpacing: "--cnvs-base-letter-spacing-100";
105
+ };
106
+ 'subtext.small': {
107
+ color: "--cnvs-sys-color-text-default";
108
+ fontFamily: "--cnvs-base-font-family-50";
109
+ fontWeight: "--cnvs-base-font-weight-400";
110
+ lineHeight: "--cnvs-base-line-height-50";
111
+ fontSize: "--cnvs-base-font-size-25";
112
+ letterSpacing: "--cnvs-base-letter-spacing-50";
113
+ };
114
+ };
115
+ variant: {
116
+ error: {
117
+ color: "--cnvs-sys-color-text-critical-default";
118
+ };
119
+ hint: {
120
+ color: "--cnvs-sys-color-text-hint";
121
+ };
122
+ inverse: {
123
+ color: "--cnvs-sys-color-text-inverse";
124
+ };
125
+ };
126
+ }, {}, never, never>;
24
127
  /**
25
128
  * This is a generic base component intended to render any text.
26
129
  * It has `typeLevel` and `variant` style props that simplify navigating
@@ -1 +1 @@
1
- {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../text/lib/Text.tsx"],"names":[],"mappings":"AACA,OAAO,EAAO,MAAM,EAAC,MAAM,4BAA4B,CAAC;AAGxD,OAAO,EAAc,QAAQ,EAAC,MAAM,kCAAkC,CAAC;AAEvE,aAAK,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC7C,aAAK,SAAS,GAAG,GAAG,MAAM,OAAO,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;AAE3D,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CACxC;AAgED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,IAAI,gFASf,CAAC"}
1
+ {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../text/lib/Text.tsx"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,4BAA4B,CAAC;AAGlD,OAAO,EAAc,QAAQ,EAAC,MAAM,kCAAkC,CAAC;AAEvE,aAAK,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC7C,aAAK,SAAS,GAAG,GAAG,MAAM,OAAO,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;AAE3D,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CACxC;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+DtB,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,IAAI,gFASf,CAAC"}
@@ -1,33 +1,36 @@
1
1
  import * as React from 'react';
2
- import { base, system } from '@workday/canvas-tokens-web';
2
+ import { system } from '@workday/canvas-tokens-web';
3
3
  import { createComponent } from '@workday/canvas-kit-react/common';
4
- import { createModifiers, createStyles } from '@workday/canvas-kit-styling';
4
+ import { createStencil } from '@workday/canvas-kit-styling';
5
5
  import { mergeStyles } from '@workday/canvas-kit-react/layout';
6
- const textModifiers = createModifiers({
7
- typeLevel: {
8
- // Title level styles
9
- 'title.large': createStyles({ name: "cslru0", styles: "font-family:var(--cnvs-base-font-family-50, \"Roboto\");font-weight:var(--cnvs-base-font-weight-700, 700);line-height:var(--cnvs-base-line-height-600, 4rem);font-size:var(--cnvs-base-font-size-600, 3.5rem);color:var(--cnvs-base-palette-black-pepper-400, rgba(51,51,51,1));" }),
10
- 'title.medium': createStyles({ name: "12cz0zr", styles: "font-family:var(--cnvs-base-font-family-50, \"Roboto\");font-weight:var(--cnvs-base-font-weight-700, 700);line-height:var(--cnvs-base-line-height-500, 3.5rem);font-size:var(--cnvs-base-font-size-500, 3rem);color:var(--cnvs-base-palette-black-pepper-400, rgba(51,51,51,1));" }),
11
- 'title.small': createStyles({ name: "5xyzrh", styles: "font-family:var(--cnvs-base-font-family-50, \"Roboto\");font-weight:var(--cnvs-base-font-weight-700, 700);line-height:var(--cnvs-base-line-height-400, 3rem);font-size:var(--cnvs-base-font-size-400, 2.5rem);color:var(--cnvs-base-palette-black-pepper-400, rgba(51,51,51,1));" }),
12
- // Heading level styles
13
- 'heading.large': createStyles({ name: "h1czu", styles: "font-family:var(--cnvs-base-font-family-50, \"Roboto\");font-weight:var(--cnvs-base-font-weight-700, 700);line-height:var(--cnvs-base-line-height-350, 2.5rem);font-size:var(--cnvs-base-font-size-300, 2rem);color:var(--cnvs-base-palette-black-pepper-400, rgba(51,51,51,1));" }),
14
- 'heading.medium': createStyles({ name: "4wfm80", styles: "font-family:var(--cnvs-base-font-family-50, \"Roboto\");font-weight:var(--cnvs-base-font-weight-700, 700);line-height:var(--cnvs-base-line-height-300, 2.25rem);font-size:var(--cnvs-base-font-size-250, 1.75rem);color:var(--cnvs-base-palette-black-pepper-400, rgba(51,51,51,1));" }),
15
- 'heading.small': createStyles({ name: "z7qa7k", styles: "font-family:var(--cnvs-base-font-family-50, \"Roboto\");font-weight:var(--cnvs-base-font-weight-700, 700);line-height:var(--cnvs-base-line-height-250, 2rem);font-size:var(--cnvs-base-font-size-200, 1.5rem);color:var(--cnvs-base-palette-black-pepper-400, rgba(51,51,51,1));" }),
16
- // Body level styles
17
- 'body.large': createStyles({ name: "1kihtuy", styles: "font-family:var(--cnvs-base-font-family-50, \"Roboto\");font-weight:var(--cnvs-base-font-weight-400, 400);line-height:var(--cnvs-base-line-height-200, 1.75rem);font-size:var(--cnvs-base-font-size-150, 1.25rem);color:var(--cnvs-base-palette-black-pepper-300, rgba(73,73,73,1));" }),
18
- 'body.medium': createStyles({ name: "unyea3", styles: "font-family:var(--cnvs-base-font-family-50, \"Roboto\");font-weight:var(--cnvs-base-font-weight-400, 400);line-height:var(--cnvs-base-line-height-200, 1.75rem);font-size:var(--cnvs-base-font-size-125, 1.125rem);color:var(--cnvs-base-palette-black-pepper-300, rgba(73,73,73,1));" }),
19
- 'body.small': createStyles({ name: "1fs92hs", styles: "font-family:var(--cnvs-base-font-family-50, \"Roboto\");font-weight:var(--cnvs-base-font-weight-400, 400);line-height:var(--cnvs-base-line-height-150, 1.5rem);font-size:var(--cnvs-base-font-size-100, 1rem);letter-spacing:var(--cnvs-base-letter-spacing-200, 0.01rem);color:var(--cnvs-base-palette-black-pepper-300, rgba(73,73,73,1));" }),
20
- // Subtext level styles
21
- 'subtext.large': createStyles({ name: "1r9z3st", styles: "font-family:var(--cnvs-base-font-family-50, \"Roboto\");font-weight:var(--cnvs-base-font-weight-400, 400);line-height:var(--cnvs-base-line-height-100, 1.25rem);font-size:var(--cnvs-base-font-size-75, 0.875rem);letter-spacing:var(--cnvs-base-letter-spacing-150, 0.015rem);color:var(--cnvs-base-palette-black-pepper-300, rgba(73,73,73,1));" }),
22
- 'subtext.medium': createStyles({ name: "rqolil", styles: "font-family:var(--cnvs-base-font-family-50, \"Roboto\");font-weight:var(--cnvs-base-font-weight-400, 400);line-height:var(--cnvs-base-line-height-50, 1rem);font-size:var(--cnvs-base-font-size-50, 0.75rem);letter-spacing:var(--cnvs-base-letter-spacing-100, 0.02rem);color:var(--cnvs-base-palette-black-pepper-300, rgba(73,73,73,1));" }),
23
- 'subtext.small': createStyles({ name: "89gq7n", styles: "font-family:var(--cnvs-base-font-family-50, \"Roboto\");font-weight:var(--cnvs-base-font-weight-400, 400);line-height:var(--cnvs-base-line-height-50, 1rem);font-size:var(--cnvs-base-font-size-25, 0.625rem);letter-spacing:var(--cnvs-base-letter-spacing-50, 0.025rem);color:var(--cnvs-base-palette-black-pepper-300, rgba(73,73,73,1));" }),
24
- },
25
- variant: {
26
- error: createStyles({ name: "11i11uz", styles: "color:var(--cnvs-base-palette-cinnamon-500, rgba(222,46,33,1));" }),
27
- hint: createStyles({ name: "1g2oxii", styles: "color:var(--cnvs-base-palette-licorice-300, rgba(94,106,117,1));" }),
28
- inverse: createStyles({ name: "1j116kj", styles: "color:var(--cnvs-base-palette-french-vanilla-100, rgba(255,255,255,1));" }),
29
- },
30
- });
6
+ export const textStencil = createStencil({
7
+ base: { name: "474d4e", styles: "" },
8
+ modifiers: {
9
+ typeLevel: {
10
+ // Title level styles
11
+ 'title.large': { name: "ec2152", styles: "font-family:var(--cnvs-base-font-family-50);font-weight:var(--cnvs-base-font-weight-700);line-height:var(--cnvs-base-line-height-600);font-size:var(--cnvs-base-font-size-600);color:var(--cnvs-sys-color-text-strong);" },
12
+ 'title.medium': { name: "10cd08", styles: "font-family:var(--cnvs-base-font-family-50);font-weight:var(--cnvs-base-font-weight-700);line-height:var(--cnvs-base-line-height-500);font-size:var(--cnvs-base-font-size-500);color:var(--cnvs-sys-color-text-strong);" },
13
+ 'title.small': { name: "2d40bb", styles: "font-family:var(--cnvs-base-font-family-50);font-weight:var(--cnvs-base-font-weight-700);line-height:var(--cnvs-base-line-height-400);font-size:var(--cnvs-base-font-size-400);color:var(--cnvs-sys-color-text-strong);" },
14
+ // Heading level styles
15
+ 'heading.large': { name: "e7495d", styles: "font-family:var(--cnvs-base-font-family-50);font-weight:var(--cnvs-base-font-weight-700);line-height:var(--cnvs-base-line-height-350);font-size:var(--cnvs-base-font-size-300);color:var(--cnvs-sys-color-text-strong);" },
16
+ 'heading.medium': { name: "57bd0c", styles: "font-family:var(--cnvs-base-font-family-50);font-weight:var(--cnvs-base-font-weight-700);line-height:var(--cnvs-base-line-height-300);font-size:var(--cnvs-base-font-size-250);color:var(--cnvs-sys-color-text-strong);" },
17
+ 'heading.small': { name: "453f9f", styles: "font-family:var(--cnvs-base-font-family-50);font-weight:var(--cnvs-base-font-weight-700);line-height:var(--cnvs-base-line-height-250);font-size:var(--cnvs-base-font-size-200);color:var(--cnvs-sys-color-text-strong);" },
18
+ // Body level styles
19
+ 'body.large': { name: "2ecfeb", styles: "font-family:var(--cnvs-base-font-family-50);font-weight:var(--cnvs-base-font-weight-400);line-height:var(--cnvs-base-line-height-200);font-size:var(--cnvs-base-font-size-150);color:var(--cnvs-sys-color-text-default);" },
20
+ 'body.medium': { name: "72deca", styles: "font-family:var(--cnvs-base-font-family-50);font-weight:var(--cnvs-base-font-weight-400);line-height:var(--cnvs-base-line-height-200);font-size:var(--cnvs-base-font-size-125);color:var(--cnvs-sys-color-text-default);" },
21
+ 'body.small': { name: "005094", styles: "font-family:var(--cnvs-base-font-family-50);font-weight:var(--cnvs-base-font-weight-400);line-height:var(--cnvs-base-line-height-150);font-size:var(--cnvs-base-font-size-100);letter-spacing:var(--cnvs-base-letter-spacing-200);color:var(--cnvs-sys-color-text-default);" },
22
+ // Subtext level styles
23
+ 'subtext.large': { name: "3c4fca", styles: "font-family:var(--cnvs-base-font-family-50);font-weight:var(--cnvs-base-font-weight-400);line-height:var(--cnvs-base-line-height-100);font-size:var(--cnvs-base-font-size-75);letter-spacing:var(--cnvs-base-letter-spacing-150);color:var(--cnvs-sys-color-text-default);" },
24
+ 'subtext.medium': { name: "41ff51", styles: "font-family:var(--cnvs-base-font-family-50);font-weight:var(--cnvs-base-font-weight-400);line-height:var(--cnvs-base-line-height-50);font-size:var(--cnvs-base-font-size-50);letter-spacing:var(--cnvs-base-letter-spacing-100);color:var(--cnvs-sys-color-text-default);" },
25
+ 'subtext.small': { name: "6e1406", styles: "font-family:var(--cnvs-base-font-family-50);font-weight:var(--cnvs-base-font-weight-400);line-height:var(--cnvs-base-line-height-50);font-size:var(--cnvs-base-font-size-25);letter-spacing:var(--cnvs-base-letter-spacing-50);color:var(--cnvs-sys-color-text-default);" }
26
+ },
27
+ variant: {
28
+ error: { name: "0003fd", styles: "color:var(--cnvs-sys-color-text-critical-default);" },
29
+ hint: { name: "b00e72", styles: "color:var(--cnvs-sys-color-text-hint);" },
30
+ inverse: { name: "8bc750", styles: "color:var(--cnvs-sys-color-text-inverse);" }
31
+ }
32
+ }
33
+ }, "cnvs-text");
31
34
  /**
32
35
  * This is a generic base component intended to render any text.
33
36
  * It has `typeLevel` and `variant` style props that simplify navigating
@@ -62,6 +65,6 @@ const textModifiers = createModifiers({
62
65
  export const Text = createComponent('span')({
63
66
  displayName: 'Text',
64
67
  Component: ({ children, typeLevel, variant, ...elemProps }, ref, Element) => {
65
- return (React.createElement(Element, Object.assign({ ref: ref }, mergeStyles(elemProps, textModifiers({ typeLevel, variant }))), children));
68
+ return (React.createElement(Element, Object.assign({ ref: ref }, mergeStyles(elemProps, textStencil({ typeLevel, variant }))), children));
66
69
  },
67
70
  });
@@ -1 +1 @@
1
- {"version":3,"file":"OverflowTooltip.d.ts","sourceRoot":"","sources":["../../../../tooltip/lib/OverflowTooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAEL,SAAS,EAGV,MAAM,iCAAiC,CAAC;AAMzC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,YAAa,OAAO,KAAG,OAAO,GAAG,IAmBhE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,YAAa,OAAO,KAAG,OAAO,GAAG,IAahE,CAAC;AAeF,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAC/F;;;;;;;OAOG;IACH,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,SAAS,EAAE,CAAC;CAClC;AAiBD,eAAO,MAAM,eAAe,8DAKzB,oBAAoB,gBAwCtB,CAAC"}
1
+ {"version":3,"file":"OverflowTooltip.d.ts","sourceRoot":"","sources":["../../../../tooltip/lib/OverflowTooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAEL,SAAS,EAGV,MAAM,iCAAiC,CAAC;AAMzC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,YAAa,OAAO,KAAG,OAAO,GAAG,IAmBhE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,YAAa,OAAO,KAAG,OAAO,GAAG,IAahE,CAAC;AAcF,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAC/F;;;;;;;OAOG;IACH,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,SAAS,EAAE,CAAC;CAClC;AAiBD,eAAO,MAAM,eAAe,8DAKzB,oBAAoB,gBAwCtB,CAAC"}
@@ -48,9 +48,8 @@ export const findEllipsisElement = (element) => {
48
48
  const isOverflowed = (element) => {
49
49
  const overflowElement = findEllipsisElement(element) || findOverflowElement(element);
50
50
  if (overflowElement) {
51
- const clientRect = overflowElement.getBoundingClientRect();
52
- return (overflowElement.scrollWidth > clientRect.width ||
53
- overflowElement.scrollHeight > clientRect.height);
51
+ return (overflowElement.scrollWidth > overflowElement.clientWidth ||
52
+ overflowElement.scrollHeight > overflowElement.clientHeight);
54
53
  }
55
54
  return false;
56
55
  };
package/icon/index.ts CHANGED
@@ -3,4 +3,4 @@ export * from './lib/AppletIcon';
3
3
  export * from './lib/SystemIcon';
4
4
  export * from './lib/SystemIconCircle';
5
5
  export * from './lib/Graphic';
6
- export * from './lib/Svg';
6
+ export {Svg, SvgProps, svgStencil} from './lib/Svg';
@@ -2,24 +2,30 @@ import * as React from 'react';
2
2
  import {colors} from '@workday/canvas-kit-react/tokens';
3
3
  import {CanvasAccentIcon, CanvasIconTypes} from '@workday/design-assets-types';
4
4
  import {CSSObject} from '@emotion/styled';
5
- import {Icon, IconProps} from './Icon';
6
5
  import {createComponent, getColor} from '@workday/canvas-kit-react/common';
7
6
  import {SystemPropValues} from '@workday/canvas-kit-react/layout';
7
+ import {createStencil, cssVar, handleCsProp, px2rem} from '@workday/canvas-kit-styling';
8
+ import {base} from '@workday/canvas-tokens-web';
9
+ import {Svg, SvgProps, svgStencil, transformColorNameToToken} from './Svg';
8
10
 
11
+ /**
12
+ * @deprecated Interface `AccentIconStyles` will be removed in a future version. All props will be moved inside `AccentIconProps`. Consider to use the new tokens set to set `color` prop: `color={base.blueberry500}`.
13
+ */
9
14
  export interface AccentIconStyles {
10
15
  /**
11
16
  * The fill color of the AccentIcon.
12
- * @default colors.blueberry500
17
+ * @default base.blueberry500
13
18
  */
14
19
  color?: SystemPropValues['color'];
15
20
  /**
16
- * If true, set the background fill of the AccentIcon to `transparent`. If false, set the background fill of the AccentIcon to `colors.frenchVanilla100`.
21
+ * If true, set the background fill of the AccentIcon to `transparent`.
22
+ * If false, set the background fill of the AccentIcon to `base.frenchVanilla100`.
17
23
  * @default false
18
24
  */
19
25
  transparent?: boolean;
20
26
  }
21
27
 
22
- export interface AccentIconProps extends AccentIconStyles, Omit<IconProps, 'src' | 'type'> {
28
+ export interface AccentIconProps extends AccentIconStyles, Omit<SvgProps, 'src' | 'type'> {
23
29
  /**
24
30
  * The icon to display from `@workday/canvas-accent-icons-web`.
25
31
  */
@@ -31,6 +37,9 @@ export interface AccentIconProps extends AccentIconStyles, Omit<IconProps, 'src'
31
37
  size?: number;
32
38
  }
33
39
 
40
+ /**
41
+ * @deprecated `accentIconStyles` will be removed in in a future version as a part of implementation of stencils and new tokens. Consider to use `accentIconStencil` instead.
42
+ */
34
43
  export const accentIconStyles = ({
35
44
  color = colors.blueberry500,
36
45
  transparent = false,
@@ -43,23 +52,52 @@ export const accentIconStyles = ({
43
52
  },
44
53
  });
45
54
 
55
+ export const accentIconStencil = createStencil({
56
+ extends: svgStencil,
57
+ vars: {
58
+ color: '',
59
+ },
60
+ base: ({color, size}) => ({
61
+ [size]: px2rem(56),
62
+ '& .color-500': {
63
+ fill: cssVar(color, base.blueberry500),
64
+ },
65
+ '& .french-vanilla-100': {
66
+ fill: base.frenchVanilla100,
67
+ },
68
+ }),
69
+ modifiers: {
70
+ transparent: {
71
+ true: {
72
+ '& .french-vanilla-100': {
73
+ fill: 'transparent',
74
+ },
75
+ },
76
+ },
77
+ },
78
+ });
79
+
46
80
  export const AccentIcon = createComponent('span')({
47
81
  displayName: 'AccentIcon',
48
82
  Component: (
49
- {transparent = false, size = 56, icon, color, shouldMirror, ...elemProps}: AccentIconProps,
83
+ {transparent, size, icon, color, shouldMirror, ...elemProps}: AccentIconProps,
50
84
  ref,
51
85
  Element
52
86
  ) => {
53
87
  return (
54
- <Icon
88
+ <Svg
55
89
  src={icon}
56
90
  type={CanvasIconTypes.Accent}
57
- styles={accentIconStyles({color, transparent})}
58
- size={size}
59
91
  as={Element}
60
92
  ref={ref}
61
- shouldMirror={shouldMirror}
62
- {...elemProps}
93
+ {...handleCsProp(elemProps, [
94
+ accentIconStencil({
95
+ color: transformColorNameToToken(color),
96
+ size: typeof size === 'number' ? px2rem(size) : undefined,
97
+ shouldMirror,
98
+ transparent,
99
+ }),
100
+ ])}
63
101
  />
64
102
  );
65
103
  },
@@ -2,9 +2,14 @@ import * as React from 'react';
2
2
  import {colors, BrandingColor, CanvasColor} from '@workday/canvas-kit-react/tokens';
3
3
  import {CanvasAppletIcon, CanvasIconTypes} from '@workday/design-assets-types';
4
4
  import {CSSObject} from '@emotion/styled';
5
- import {Icon, IconProps} from './Icon';
5
+ import {Svg, SvgProps, svgStencil} from './Svg';
6
6
  import {createComponent} from '@workday/canvas-kit-react/common';
7
+ import {handleCsProp, createStencil, px2rem, cssVar} from '@workday/canvas-kit-styling';
8
+ import {base} from '@workday/canvas-tokens-web';
7
9
 
10
+ /**
11
+ * @deprecated Interface `AppletIconStyles` will be removed in a future version. All props will be moved inside `AppletIconProps`.
12
+ */
8
13
  export interface AppletIconStyles {
9
14
  /**
10
15
  * The icon color hue. Must use a member of the `AppletIcon.Colors` static enum.
@@ -13,6 +18,9 @@ export interface AppletIconStyles {
13
18
  color?: BrandingColor;
14
19
  }
15
20
 
21
+ /**
22
+ * @deprecated `appletIconStyles` will be removed in in a future version as a part of implementation of stencils and new tokens. Consider to use `appletIconStencil` instead.
23
+ */
16
24
  export const appletIconStyles = ({
17
25
  color = BrandingColor.Blueberry,
18
26
  }: AppletIconStyles): CSSObject => {
@@ -55,7 +63,7 @@ export const appletIconStyles = ({
55
63
  };
56
64
  };
57
65
 
58
- export interface AppletIconProps extends AppletIconStyles, Pick<IconProps, 'shouldMirror'> {
66
+ export interface AppletIconProps extends AppletIconStyles, Pick<SvgProps, 'shouldMirror' | 'cs'> {
59
67
  /**
60
68
  * The icon to display from `@workday/canvas-applet-icons-web`.
61
69
  */
@@ -67,23 +75,56 @@ export interface AppletIconProps extends AppletIconStyles, Pick<IconProps, 'shou
67
75
  size?: number;
68
76
  }
69
77
 
78
+ export const appletIconStencil = createStencil({
79
+ extends: svgStencil,
80
+ vars: {
81
+ color200: '',
82
+ color300: '',
83
+ color400: '',
84
+ color500: '',
85
+ },
86
+ base: ({color200, color300, color400, color500, size}) => ({
87
+ [size]: px2rem(92),
88
+ '& .color-100': {
89
+ fill: base.frenchVanilla100,
90
+ },
91
+ '& .color-200': {
92
+ fill: cssVar(color200, base.blueberry200),
93
+ },
94
+ '& .color-300': {
95
+ fill: cssVar(color300, base.blueberry300),
96
+ },
97
+ '& .color-400': {
98
+ fill: cssVar(color400, base.blueberry400),
99
+ },
100
+ '& .color-400-alpha-20': {
101
+ fill: cssVar(color400, base.blueberry400),
102
+ },
103
+ '& .color-500': {
104
+ fill: cssVar(color500, base.blueberry400),
105
+ },
106
+ }),
107
+ });
108
+
70
109
  export const AppletIcon = createComponent('span')({
71
110
  displayName: 'AppletIcon',
72
- Component: (
73
- {size = 92, icon, color, shouldMirror, ...elemProps}: AppletIconProps,
74
- ref,
75
- Element
76
- ) => {
111
+ Component: ({size, icon, color, ...elemProps}: AppletIconProps, ref, Element) => {
112
+ const colors = color && {
113
+ color200: base[`${color}200` as const],
114
+ color300: base[`${color}300` as const],
115
+ color400: base[`${color}400` as const],
116
+ color500: base[`${color}500` as const],
117
+ };
118
+
77
119
  return (
78
- <Icon
120
+ <Svg
79
121
  src={icon}
80
122
  type={CanvasIconTypes.Applet}
81
- styles={appletIconStyles({color})}
82
123
  as={Element}
83
- size={size}
84
124
  ref={ref}
85
- shouldMirror={shouldMirror}
86
- {...elemProps}
125
+ {...handleCsProp(elemProps, [
126
+ appletIconStencil({...colors, size: size ? px2rem(size) : undefined}),
127
+ ])}
87
128
  />
88
129
  );
89
130
  },
@@ -3,16 +3,22 @@ import {CanvasGraphic, CanvasIconTypes} from '@workday/design-assets-types';
3
3
  import {CSSObject} from '@emotion/styled';
4
4
  import {Svg, SvgProps} from './Svg';
5
5
  import {createComponent} from '@workday/canvas-kit-react/common';
6
+ import {createStencil, createVars, cssVar, handleCsProp, px2rem} from '@workday/canvas-kit-styling';
6
7
 
8
+ /**
9
+ * @deprecated Interface `GraphicStyles` will be removed in a future version. `grow` prop will be moved inside `GraphicProps`.
10
+ */
7
11
  export interface GraphicStyles {
8
12
  /**
9
13
  * The width of the Graphic in `px`. The Graphic's `width` takes precedence over its `height` in order to preserve its proportions.
10
14
  * @default width of graphic
15
+ * @deprecated Use `cs` to set width, `cs={{"& svg": {width: '1rem'}}}`
11
16
  */
12
17
  width?: number | string;
13
18
  /**
14
19
  * The height of the Graphic in `px`. If the Graphic's `height` is set, its `width` will be set to `100%`.
15
20
  * @default height of graphic
21
+ * @deprecated Use `cs` to set height, `cs={{"& svg": {height: '1rem'}}}`
16
22
  */
17
23
  height?: number | string;
18
24
  /**
@@ -22,13 +28,16 @@ export interface GraphicStyles {
22
28
  grow?: boolean;
23
29
  }
24
30
 
25
- export interface GraphicProps extends GraphicStyles, Pick<SvgProps, 'shouldMirror'> {
31
+ export interface GraphicProps extends GraphicStyles, Pick<SvgProps, 'shouldMirror' | 'cs'> {
26
32
  /**
27
33
  * The graphic to display from `@workday/canvas-graphics-web`.
28
34
  */
29
35
  src: CanvasGraphic;
30
36
  }
31
37
 
38
+ /**
39
+ * @deprecated `graphicStyles` will be removed in in a future version as a part of implementation of stencils and new tokens. Consider to use `graphicStencil` instead.
40
+ */
32
41
  export const graphicStyles = ({width, height, grow}: GraphicStyles): CSSObject => {
33
42
  if (grow) {
34
43
  return {
@@ -59,22 +68,46 @@ export const graphicStyles = ({width, height, grow}: GraphicStyles): CSSObject =
59
68
  return {};
60
69
  };
61
70
 
71
+ /**
72
+ * @deprecated Part of supporting deprecated `height` and `width` props
73
+ */
74
+ const graphicVars = createVars('height', 'width');
75
+
76
+ export const graphicStencil = createStencil({
77
+ base: {
78
+ '& svg': {
79
+ width: cssVar(graphicVars.width, '100%'),
80
+ height: cssVar(graphicVars.height, '100%'),
81
+ },
82
+ },
83
+ modifiers: {
84
+ grow: {
85
+ true: {
86
+ width: '100%',
87
+ '& svg': {
88
+ width: '100%',
89
+ height: '100%',
90
+ },
91
+ },
92
+ },
93
+ },
94
+ });
95
+
62
96
  export const Graphic = createComponent('span')({
63
97
  displayName: 'Graphic',
64
- Component: (
65
- {grow = false, src, width, height, shouldMirror, ...elemProps}: GraphicProps,
66
- ref,
67
- Element
68
- ) => {
98
+ Component: ({grow, width, height, ...elemProps}: GraphicProps, ref, Element) => {
69
99
  return (
70
100
  <Svg
71
- src={src}
72
- styles={graphicStyles({width, height, grow})}
73
101
  type={CanvasIconTypes.Graphic}
74
102
  as={Element}
75
103
  ref={ref}
76
- shouldMirror={shouldMirror}
77
- {...elemProps}
104
+ {...handleCsProp(elemProps, [
105
+ graphicStencil({grow}),
106
+ {
107
+ [graphicVars.height]: typeof height === 'number' ? px2rem(height) : height,
108
+ [graphicVars.width]: typeof width === 'number' ? px2rem(width) : width,
109
+ },
110
+ ])}
78
111
  />
79
112
  );
80
113
  },
package/icon/lib/Svg.tsx CHANGED
@@ -1,13 +1,13 @@
1
- import {CSSObject} from '@emotion/styled';
2
1
  import * as React from 'react';
3
2
  import {CanvasIcon, CanvasIconTypes} from '@workday/design-assets-types';
4
3
  import {validateIconType} from './utils';
5
- import {createComponent, styled, StyledType} from '@workday/canvas-kit-react/common';
6
- import {Box, BoxProps} from '@workday/canvas-kit-react/layout';
4
+ import {createComponent} from '@workday/canvas-kit-react/common';
5
+ import {BoxProps, mergeStyles} from '@workday/canvas-kit-react/layout';
6
+ import {createStencil} from '@workday/canvas-kit-styling';
7
+ import {base} from '@workday/canvas-tokens-web';
7
8
 
8
9
  export interface SvgProps extends BoxProps {
9
10
  src: CanvasIcon;
10
- styles?: CSSObject;
11
11
  type: CanvasIconTypes;
12
12
  /**
13
13
  * If set to `true`, transform the SVG's x-axis to mirror the graphic
@@ -16,22 +16,40 @@ export interface SvgProps extends BoxProps {
16
16
  shouldMirror?: boolean;
17
17
  }
18
18
 
19
- const StyledIconSpan = styled(Box.as('span'))<
20
- StyledType & Pick<SvgProps, 'shouldMirror' | 'styles'>
21
- >(
22
- {
19
+ export const svgStencil = createStencil({
20
+ vars: {
21
+ /** set width and height of svg element */
22
+ size: '',
23
+ },
24
+ base: ({size}) => ({
25
+ boxSizing: 'border-box',
23
26
  display: 'inline-block',
24
- '> svg': {display: 'block'},
27
+ '> svg': {
28
+ display: 'block',
29
+ width: size,
30
+ height: size,
31
+ },
32
+ }),
33
+ modifiers: {
34
+ shouldMirror: {
35
+ true: {
36
+ transform: 'scaleX(-1)',
37
+ },
38
+ },
25
39
  },
26
- ({shouldMirror, styles}) => ({
27
- ...styles,
28
- transform: shouldMirror ? 'scaleX(-1)' : undefined,
29
- })
30
- );
40
+ });
41
+
42
+ /** @deprecated */
43
+ export const transformColorNameToToken = (color?: string) => {
44
+ if (color && color in base) {
45
+ return base[color as keyof typeof base];
46
+ }
47
+ return color;
48
+ };
31
49
 
32
50
  export const Svg = createComponent('span')({
33
51
  displayName: 'Svg',
34
- Component: ({src, type, ...elemProps}: SvgProps, ref, Element) => {
52
+ Component: ({shouldMirror, src, type, ...elemProps}: SvgProps, ref, Element) => {
35
53
  try {
36
54
  validateIconType(src, type);
37
55
  } catch (e) {
@@ -40,11 +58,10 @@ export const Svg = createComponent('span')({
40
58
  }
41
59
 
42
60
  return (
43
- <StyledIconSpan
44
- as={Element}
45
- dangerouslySetInnerHTML={{__html: src.svg}}
46
- {...elemProps}
61
+ <Element
47
62
  ref={ref}
63
+ dangerouslySetInnerHTML={{__html: src.svg}}
64
+ {...mergeStyles(elemProps, svgStencil({shouldMirror}))}
48
65
  />
49
66
  );
50
67
  },