@primer/react-brand 0.76.0-rc.16d4997d → 0.76.0-rc.b6b9d052

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 (406) hide show
  1. package/docs/index.md +2 -2
  2. package/esm/Testimonial/Testimonial.d.ts.map +1 -1
  3. package/esm/Testimonial/Testimonial.js +72 -66
  4. package/esm/Testimonial/Testimonial.js.map +1 -1
  5. package/esm/Testimonial/{Testimonial.module-BEV0y2jl.css → Testimonial.module-_jTJvM-4.css} +1 -1
  6. package/esm/Testimonial/Testimonial.module.js +1 -1
  7. package/esm/Testimonial/Testimonial.module.js.map +1 -1
  8. package/esm/TextCursorAnimation/TextCursorAnimation.d.ts +2 -1
  9. package/esm/TextCursorAnimation/TextCursorAnimation.d.ts.map +1 -1
  10. package/esm/TextCursorAnimation/TextCursorAnimation.js +39 -36
  11. package/esm/TextCursorAnimation/TextCursorAnimation.js.map +1 -1
  12. package/esm/TextCursorAnimation/TextCursorAnimation.module-Dfn6Ar6C.css +1 -0
  13. package/esm/TextCursorAnimation/TextCursorAnimation.module.js +1 -1
  14. package/esm/TextCursorAnimation/TextCursorAnimation.module.js.map +1 -1
  15. package/esm/hooks/useCursorAnimation.d.ts +4 -1
  16. package/esm/hooks/useCursorAnimation.d.ts.map +1 -1
  17. package/esm/hooks/useCursorAnimation.js +44 -28
  18. package/esm/hooks/useCursorAnimation.js.map +1 -1
  19. package/lib/TextCursorAnimation/TextCursorAnimation.d.ts +2 -1
  20. package/lib/css/main.css +74 -82
  21. package/lib/design-tokens/css/tokens/base/colors/color-scales-with-modes.css +1 -1
  22. package/lib/design-tokens/css/tokens/base/colors/light.css +1 -1
  23. package/lib/design-tokens/css/tokens/base/size/size.css +1 -1
  24. package/lib/design-tokens/css/tokens/base/typography/typography.css +1 -1
  25. package/lib/design-tokens/css/tokens/functional/animation/base.css +1 -1
  26. package/lib/design-tokens/css/tokens/functional/colors/global-with-modes.css +1 -1
  27. package/lib/design-tokens/css/tokens/functional/colors/global.css +1 -1
  28. package/lib/design-tokens/css/tokens/functional/components/accordion/colors-with-modes.css +1 -1
  29. package/lib/design-tokens/css/tokens/functional/components/action-menu/colors-with-modes.css +1 -1
  30. package/lib/design-tokens/css/tokens/functional/components/anchor-nav/colors-with-modes.css +1 -1
  31. package/lib/design-tokens/css/tokens/functional/components/bento/base.css +1 -1
  32. package/lib/design-tokens/css/tokens/functional/components/blinking-cursor/colors-with-modes.css +1 -1
  33. package/lib/design-tokens/css/tokens/functional/components/breadcrumbs/colors-with-modes.css +1 -1
  34. package/lib/design-tokens/css/tokens/functional/components/button/colors-with-modes.css +1 -1
  35. package/lib/design-tokens/css/tokens/functional/components/card/base.css +1 -1
  36. package/lib/design-tokens/css/tokens/functional/components/card/colors-with-modes.css +1 -1
  37. package/lib/design-tokens/css/tokens/functional/components/card/colors.css +1 -1
  38. package/lib/design-tokens/css/tokens/functional/components/comparison-table/colors-with-modes.css +1 -1
  39. package/lib/design-tokens/css/tokens/functional/components/comparison-table/comparison-table.css +1 -1
  40. package/lib/design-tokens/css/tokens/functional/components/control/colors-with-modes.css +1 -1
  41. package/lib/design-tokens/css/tokens/functional/components/cta-banner/colors-with-modes.css +1 -1
  42. package/lib/design-tokens/css/tokens/functional/components/eyebrow-banner/colors-with-modes.css +1 -1
  43. package/lib/design-tokens/css/tokens/functional/components/eyebrow-banner/eyebrow-banner.css +1 -1
  44. package/lib/design-tokens/css/tokens/functional/components/faq/base.css +1 -1
  45. package/lib/design-tokens/css/tokens/functional/components/faq/colors-with-modes.css +1 -1
  46. package/lib/design-tokens/css/tokens/functional/components/faq/colors.css +1 -1
  47. package/lib/design-tokens/css/tokens/functional/components/faq/faq.css +1 -1
  48. package/lib/design-tokens/css/tokens/functional/components/footer/base.css +1 -1
  49. package/lib/design-tokens/css/tokens/functional/components/footer/colors-with-modes.css +1 -1
  50. package/lib/design-tokens/css/tokens/functional/components/footer/colors.css +1 -1
  51. package/lib/design-tokens/css/tokens/functional/components/frosted-glass-vfx/base.css +1 -1
  52. package/lib/design-tokens/css/tokens/functional/components/frosted-glass-vfx/colors-with-modes.css +1 -1
  53. package/lib/design-tokens/css/tokens/functional/components/grid/colors-with-modes.css +1 -1
  54. package/lib/design-tokens/css/tokens/functional/components/grid/colors.css +1 -1
  55. package/lib/design-tokens/css/tokens/functional/components/grid/grid.css +1 -1
  56. package/lib/design-tokens/css/tokens/functional/components/hero/base.css +1 -1
  57. package/lib/design-tokens/css/tokens/functional/components/icon/colors-with-modes.css +1 -1
  58. package/lib/design-tokens/css/tokens/functional/components/icon/colors.css +1 -1
  59. package/lib/design-tokens/css/tokens/functional/components/ide/base.css +1 -1
  60. package/lib/design-tokens/css/tokens/functional/components/ide/colors-with-modes.css +1 -1
  61. package/lib/design-tokens/css/tokens/functional/components/image/base.css +1 -1
  62. package/lib/design-tokens/css/tokens/functional/components/inline-code/colors-with-modes.css +1 -1
  63. package/lib/design-tokens/css/tokens/functional/components/inline-code/colors.css +1 -1
  64. package/lib/design-tokens/css/tokens/functional/components/inline-link/base.css +1 -1
  65. package/lib/design-tokens/css/tokens/functional/components/inline-link/colors-with-modes.css +1 -1
  66. package/lib/design-tokens/css/tokens/functional/components/inline-link/colors.css +1 -1
  67. package/lib/design-tokens/css/tokens/functional/components/label/colors-with-modes.css +1 -1
  68. package/lib/design-tokens/css/tokens/functional/components/label/colors.css +1 -1
  69. package/lib/design-tokens/css/tokens/functional/components/link/colors-with-modes.css +1 -1
  70. package/lib/design-tokens/css/tokens/functional/components/link/colors.css +1 -1
  71. package/lib/design-tokens/css/tokens/functional/components/logosuite/base.css +1 -1
  72. package/lib/design-tokens/css/tokens/functional/components/logosuite/colors-with-modes.css +1 -1
  73. package/lib/design-tokens/css/tokens/functional/components/logosuite/colors.css +1 -1
  74. package/lib/design-tokens/css/tokens/functional/components/media-playlist/colors-with-modes.css +1 -1
  75. package/lib/design-tokens/css/tokens/functional/components/media-playlist/colors.css +1 -1
  76. package/lib/design-tokens/css/tokens/functional/components/nav-list/colors-with-modes.css +1 -1
  77. package/lib/design-tokens/css/tokens/functional/components/pricing-options/colors-with-modes.css +1 -1
  78. package/lib/design-tokens/css/tokens/functional/components/pricing-options/colors.css +1 -1
  79. package/lib/design-tokens/css/tokens/functional/components/pricing-options/pricing-options.css +1 -1
  80. package/lib/design-tokens/css/tokens/functional/components/prose/base.css +1 -1
  81. package/lib/design-tokens/css/tokens/functional/components/prose/colors-with-modes.css +1 -1
  82. package/lib/design-tokens/css/tokens/functional/components/river/base.css +1 -1
  83. package/lib/design-tokens/css/tokens/functional/components/river/river.css +1 -1
  84. package/lib/design-tokens/css/tokens/functional/components/river-story-scroll/colors-with-modes.css +1 -1
  85. package/lib/design-tokens/css/tokens/functional/components/section/section.css +1 -1
  86. package/lib/design-tokens/css/tokens/functional/components/statistic/base.css +1 -1
  87. package/lib/design-tokens/css/tokens/functional/components/sub-nav/base.css +1 -1
  88. package/lib/design-tokens/css/tokens/functional/components/sub-nav/colors-with-modes.css +1 -1
  89. package/lib/design-tokens/css/tokens/functional/components/subdomain-nav-bar/colors-with-modes.css +1 -1
  90. package/lib/design-tokens/css/tokens/functional/components/tabs/base.css +1 -1
  91. package/lib/design-tokens/css/tokens/functional/components/tabs/colors-with-modes.css +1 -1
  92. package/lib/design-tokens/css/tokens/functional/components/tabs/colors.css +1 -1
  93. package/lib/design-tokens/css/tokens/functional/components/testimonial/base.css +1 -1
  94. package/lib/design-tokens/css/tokens/functional/components/testimonial/colors-with-modes.css +1 -1
  95. package/lib/design-tokens/css/tokens/functional/components/testimonial/colors.css +1 -1
  96. package/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/base.css +1 -1
  97. package/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/colors-with-modes.css +1 -1
  98. package/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/colors.css +1 -1
  99. package/lib/design-tokens/css/tokens/functional/components/tiles/colors-with-modes.css +1 -1
  100. package/lib/design-tokens/css/tokens/functional/components/timeline/base.css +1 -1
  101. package/lib/design-tokens/css/tokens/functional/components/timeline/colors-with-modes.css +1 -1
  102. package/lib/design-tokens/css/tokens/functional/components/timeline/colors.css +1 -1
  103. package/lib/design-tokens/css/tokens/functional/components/token/colors-with-modes.css +1 -1
  104. package/lib/design-tokens/css/tokens/functional/components/token/colors.css +1 -1
  105. package/lib/design-tokens/css/tokens/functional/components/tooltip/colors-with-modes.css +1 -1
  106. package/lib/design-tokens/css/tokens/functional/components/tooltip/colors.css +1 -1
  107. package/lib/design-tokens/css/tokens/functional/components/video-player/base.css +1 -1
  108. package/lib/design-tokens/css/tokens/functional/components/video-player/colors-with-modes.css +1 -1
  109. package/lib/design-tokens/css/tokens/functional/size/border.css +1 -1
  110. package/lib/design-tokens/css/tokens/functional/size/breakpoints.css +1 -1
  111. package/lib/design-tokens/css/tokens/functional/size/size-coarse.css +1 -1
  112. package/lib/design-tokens/css/tokens/functional/size/size-fine.css +1 -1
  113. package/lib/design-tokens/css/tokens/functional/size/size.css +1 -1
  114. package/lib/design-tokens/css/tokens/functional/size/viewport.css +1 -1
  115. package/lib/design-tokens/css/tokens/functional/typography/typography-responsive.css +1 -1
  116. package/lib/design-tokens/css/tokens/functional/typography/typography.css +1 -1
  117. package/lib/design-tokens/js/module/tokens/base/colors/light.js +1 -1
  118. package/lib/design-tokens/js/module/tokens/base/size/size.js +1 -1
  119. package/lib/design-tokens/js/module/tokens/base/typography/typography.js +1 -1
  120. package/lib/design-tokens/js/module/tokens/functional/animation/base.js +1 -1
  121. package/lib/design-tokens/js/module/tokens/functional/colors/global.js +1 -1
  122. package/lib/design-tokens/js/module/tokens/functional/components/bento/base.js +1 -1
  123. package/lib/design-tokens/js/module/tokens/functional/components/card/base.js +1 -1
  124. package/lib/design-tokens/js/module/tokens/functional/components/card/colors.js +1 -1
  125. package/lib/design-tokens/js/module/tokens/functional/components/comparison-table/comparison-table.js +1 -1
  126. package/lib/design-tokens/js/module/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
  127. package/lib/design-tokens/js/module/tokens/functional/components/faq/base.js +1 -1
  128. package/lib/design-tokens/js/module/tokens/functional/components/faq/colors.js +1 -1
  129. package/lib/design-tokens/js/module/tokens/functional/components/faq/faq.js +1 -1
  130. package/lib/design-tokens/js/module/tokens/functional/components/footer/base.js +1 -1
  131. package/lib/design-tokens/js/module/tokens/functional/components/footer/colors.js +1 -1
  132. package/lib/design-tokens/js/module/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
  133. package/lib/design-tokens/js/module/tokens/functional/components/grid/colors.js +1 -1
  134. package/lib/design-tokens/js/module/tokens/functional/components/grid/grid.js +1 -1
  135. package/lib/design-tokens/js/module/tokens/functional/components/hero/base.js +1 -1
  136. package/lib/design-tokens/js/module/tokens/functional/components/icon/colors.js +1 -1
  137. package/lib/design-tokens/js/module/tokens/functional/components/ide/base.js +1 -1
  138. package/lib/design-tokens/js/module/tokens/functional/components/image/base.js +1 -1
  139. package/lib/design-tokens/js/module/tokens/functional/components/inline-code/colors.js +1 -1
  140. package/lib/design-tokens/js/module/tokens/functional/components/inline-link/base.js +1 -1
  141. package/lib/design-tokens/js/module/tokens/functional/components/inline-link/colors.js +1 -1
  142. package/lib/design-tokens/js/module/tokens/functional/components/label/colors.js +1 -1
  143. package/lib/design-tokens/js/module/tokens/functional/components/link/colors.js +1 -1
  144. package/lib/design-tokens/js/module/tokens/functional/components/logosuite/base.js +1 -1
  145. package/lib/design-tokens/js/module/tokens/functional/components/logosuite/colors.js +1 -1
  146. package/lib/design-tokens/js/module/tokens/functional/components/media-playlist/colors.js +1 -1
  147. package/lib/design-tokens/js/module/tokens/functional/components/pricing-options/colors.js +1 -1
  148. package/lib/design-tokens/js/module/tokens/functional/components/pricing-options/pricing-options.js +1 -1
  149. package/lib/design-tokens/js/module/tokens/functional/components/prose/base.js +1 -1
  150. package/lib/design-tokens/js/module/tokens/functional/components/river/base.js +1 -1
  151. package/lib/design-tokens/js/module/tokens/functional/components/river/river.js +1 -1
  152. package/lib/design-tokens/js/module/tokens/functional/components/section/section.js +1 -1
  153. package/lib/design-tokens/js/module/tokens/functional/components/statistic/base.js +1 -1
  154. package/lib/design-tokens/js/module/tokens/functional/components/sub-nav/base.js +1 -1
  155. package/lib/design-tokens/js/module/tokens/functional/components/tabs/base.js +1 -1
  156. package/lib/design-tokens/js/module/tokens/functional/components/tabs/colors.js +1 -1
  157. package/lib/design-tokens/js/module/tokens/functional/components/testimonial/base.js +1 -1
  158. package/lib/design-tokens/js/module/tokens/functional/components/testimonial/colors.js +1 -1
  159. package/lib/design-tokens/js/module/tokens/functional/components/text-cursor-animation/base.js +1 -1
  160. package/lib/design-tokens/js/module/tokens/functional/components/text-cursor-animation/colors.js +1 -1
  161. package/lib/design-tokens/js/module/tokens/functional/components/timeline/base.js +1 -1
  162. package/lib/design-tokens/js/module/tokens/functional/components/timeline/colors.js +1 -1
  163. package/lib/design-tokens/js/module/tokens/functional/components/token/colors.js +1 -1
  164. package/lib/design-tokens/js/module/tokens/functional/components/tooltip/colors.js +1 -1
  165. package/lib/design-tokens/js/module/tokens/functional/components/video-player/base.js +1 -1
  166. package/lib/design-tokens/js/module/tokens/functional/size/border.js +1 -1
  167. package/lib/design-tokens/js/module/tokens/functional/size/breakpoints.js +1 -1
  168. package/lib/design-tokens/js/module/tokens/functional/size/size-coarse.js +1 -1
  169. package/lib/design-tokens/js/module/tokens/functional/size/size-fine.js +1 -1
  170. package/lib/design-tokens/js/module/tokens/functional/size/size.js +1 -1
  171. package/lib/design-tokens/js/module/tokens/functional/size/viewport.js +1 -1
  172. package/lib/design-tokens/js/module/tokens/functional/typography/typography-responsive.js +1 -1
  173. package/lib/design-tokens/js/module/tokens/functional/typography/typography.js +1 -1
  174. package/lib/design-tokens/js/tokens/base/colors/light.js +1 -1
  175. package/lib/design-tokens/js/tokens/base/size/size.js +1 -1
  176. package/lib/design-tokens/js/tokens/base/typography/typography.js +1 -1
  177. package/lib/design-tokens/js/tokens/functional/animation/base.js +1 -1
  178. package/lib/design-tokens/js/tokens/functional/colors/global.js +1 -1
  179. package/lib/design-tokens/js/tokens/functional/components/bento/base.js +1 -1
  180. package/lib/design-tokens/js/tokens/functional/components/card/base.js +1 -1
  181. package/lib/design-tokens/js/tokens/functional/components/card/colors.js +1 -1
  182. package/lib/design-tokens/js/tokens/functional/components/comparison-table/comparison-table.js +1 -1
  183. package/lib/design-tokens/js/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
  184. package/lib/design-tokens/js/tokens/functional/components/faq/base.js +1 -1
  185. package/lib/design-tokens/js/tokens/functional/components/faq/colors.js +1 -1
  186. package/lib/design-tokens/js/tokens/functional/components/faq/faq.js +1 -1
  187. package/lib/design-tokens/js/tokens/functional/components/footer/base.js +1 -1
  188. package/lib/design-tokens/js/tokens/functional/components/footer/colors.js +1 -1
  189. package/lib/design-tokens/js/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
  190. package/lib/design-tokens/js/tokens/functional/components/grid/colors.js +1 -1
  191. package/lib/design-tokens/js/tokens/functional/components/grid/grid.js +1 -1
  192. package/lib/design-tokens/js/tokens/functional/components/hero/base.js +1 -1
  193. package/lib/design-tokens/js/tokens/functional/components/icon/colors.js +1 -1
  194. package/lib/design-tokens/js/tokens/functional/components/ide/base.js +1 -1
  195. package/lib/design-tokens/js/tokens/functional/components/image/base.js +1 -1
  196. package/lib/design-tokens/js/tokens/functional/components/inline-code/colors.js +1 -1
  197. package/lib/design-tokens/js/tokens/functional/components/inline-link/base.js +1 -1
  198. package/lib/design-tokens/js/tokens/functional/components/inline-link/colors.js +1 -1
  199. package/lib/design-tokens/js/tokens/functional/components/label/colors.js +1 -1
  200. package/lib/design-tokens/js/tokens/functional/components/link/colors.js +1 -1
  201. package/lib/design-tokens/js/tokens/functional/components/logosuite/base.js +1 -1
  202. package/lib/design-tokens/js/tokens/functional/components/logosuite/colors.js +1 -1
  203. package/lib/design-tokens/js/tokens/functional/components/media-playlist/colors.js +1 -1
  204. package/lib/design-tokens/js/tokens/functional/components/pricing-options/colors.js +1 -1
  205. package/lib/design-tokens/js/tokens/functional/components/pricing-options/pricing-options.js +1 -1
  206. package/lib/design-tokens/js/tokens/functional/components/prose/base.js +1 -1
  207. package/lib/design-tokens/js/tokens/functional/components/river/base.js +1 -1
  208. package/lib/design-tokens/js/tokens/functional/components/river/river.js +1 -1
  209. package/lib/design-tokens/js/tokens/functional/components/section/section.js +1 -1
  210. package/lib/design-tokens/js/tokens/functional/components/statistic/base.js +1 -1
  211. package/lib/design-tokens/js/tokens/functional/components/sub-nav/base.js +1 -1
  212. package/lib/design-tokens/js/tokens/functional/components/tabs/base.js +1 -1
  213. package/lib/design-tokens/js/tokens/functional/components/tabs/colors.js +1 -1
  214. package/lib/design-tokens/js/tokens/functional/components/testimonial/base.js +1 -1
  215. package/lib/design-tokens/js/tokens/functional/components/testimonial/colors.js +1 -1
  216. package/lib/design-tokens/js/tokens/functional/components/text-cursor-animation/base.js +1 -1
  217. package/lib/design-tokens/js/tokens/functional/components/text-cursor-animation/colors.js +1 -1
  218. package/lib/design-tokens/js/tokens/functional/components/timeline/base.js +1 -1
  219. package/lib/design-tokens/js/tokens/functional/components/timeline/colors.js +1 -1
  220. package/lib/design-tokens/js/tokens/functional/components/token/colors.js +1 -1
  221. package/lib/design-tokens/js/tokens/functional/components/tooltip/colors.js +1 -1
  222. package/lib/design-tokens/js/tokens/functional/components/video-player/base.js +1 -1
  223. package/lib/design-tokens/js/tokens/functional/size/border.js +1 -1
  224. package/lib/design-tokens/js/tokens/functional/size/breakpoints.js +1 -1
  225. package/lib/design-tokens/js/tokens/functional/size/size-coarse.js +1 -1
  226. package/lib/design-tokens/js/tokens/functional/size/size-fine.js +1 -1
  227. package/lib/design-tokens/js/tokens/functional/size/size.js +1 -1
  228. package/lib/design-tokens/js/tokens/functional/size/viewport.js +1 -1
  229. package/lib/design-tokens/js/tokens/functional/typography/typography-responsive.js +1 -1
  230. package/lib/design-tokens/js/tokens/functional/typography/typography.js +1 -1
  231. package/lib/design-tokens/scss/tokens/base/colors/light.scss +1 -1
  232. package/lib/design-tokens/scss/tokens/base/size/size.scss +1 -1
  233. package/lib/design-tokens/scss/tokens/base/typography/typography.scss +1 -1
  234. package/lib/design-tokens/scss/tokens/functional/animation/base.scss +1 -1
  235. package/lib/design-tokens/scss/tokens/functional/colors/global.scss +1 -1
  236. package/lib/design-tokens/scss/tokens/functional/components/bento/base.scss +1 -1
  237. package/lib/design-tokens/scss/tokens/functional/components/card/base.scss +1 -1
  238. package/lib/design-tokens/scss/tokens/functional/components/card/colors.scss +1 -1
  239. package/lib/design-tokens/scss/tokens/functional/components/comparison-table/comparison-table.scss +1 -1
  240. package/lib/design-tokens/scss/tokens/functional/components/eyebrow-banner/eyebrow-banner.scss +1 -1
  241. package/lib/design-tokens/scss/tokens/functional/components/faq/base.scss +1 -1
  242. package/lib/design-tokens/scss/tokens/functional/components/faq/colors.scss +1 -1
  243. package/lib/design-tokens/scss/tokens/functional/components/faq/faq.scss +1 -1
  244. package/lib/design-tokens/scss/tokens/functional/components/footer/base.scss +1 -1
  245. package/lib/design-tokens/scss/tokens/functional/components/footer/colors.scss +1 -1
  246. package/lib/design-tokens/scss/tokens/functional/components/frosted-glass-vfx/base.scss +1 -1
  247. package/lib/design-tokens/scss/tokens/functional/components/grid/colors.scss +1 -1
  248. package/lib/design-tokens/scss/tokens/functional/components/grid/grid.scss +1 -1
  249. package/lib/design-tokens/scss/tokens/functional/components/hero/base.scss +1 -1
  250. package/lib/design-tokens/scss/tokens/functional/components/icon/colors.scss +1 -1
  251. package/lib/design-tokens/scss/tokens/functional/components/ide/base.scss +1 -1
  252. package/lib/design-tokens/scss/tokens/functional/components/image/base.scss +1 -1
  253. package/lib/design-tokens/scss/tokens/functional/components/inline-code/colors.scss +1 -1
  254. package/lib/design-tokens/scss/tokens/functional/components/inline-link/base.scss +1 -1
  255. package/lib/design-tokens/scss/tokens/functional/components/inline-link/colors.scss +1 -1
  256. package/lib/design-tokens/scss/tokens/functional/components/label/colors.scss +1 -1
  257. package/lib/design-tokens/scss/tokens/functional/components/link/colors.scss +1 -1
  258. package/lib/design-tokens/scss/tokens/functional/components/logosuite/base.scss +1 -1
  259. package/lib/design-tokens/scss/tokens/functional/components/logosuite/colors.scss +1 -1
  260. package/lib/design-tokens/scss/tokens/functional/components/media-playlist/colors.scss +1 -1
  261. package/lib/design-tokens/scss/tokens/functional/components/pricing-options/colors.scss +1 -1
  262. package/lib/design-tokens/scss/tokens/functional/components/pricing-options/pricing-options.scss +1 -1
  263. package/lib/design-tokens/scss/tokens/functional/components/prose/base.scss +1 -1
  264. package/lib/design-tokens/scss/tokens/functional/components/river/base.scss +1 -1
  265. package/lib/design-tokens/scss/tokens/functional/components/river/river.scss +1 -1
  266. package/lib/design-tokens/scss/tokens/functional/components/section/section.scss +1 -1
  267. package/lib/design-tokens/scss/tokens/functional/components/statistic/base.scss +1 -1
  268. package/lib/design-tokens/scss/tokens/functional/components/sub-nav/base.scss +1 -1
  269. package/lib/design-tokens/scss/tokens/functional/components/tabs/base.scss +1 -1
  270. package/lib/design-tokens/scss/tokens/functional/components/tabs/colors.scss +1 -1
  271. package/lib/design-tokens/scss/tokens/functional/components/testimonial/base.scss +1 -1
  272. package/lib/design-tokens/scss/tokens/functional/components/testimonial/colors.scss +1 -1
  273. package/lib/design-tokens/scss/tokens/functional/components/text-cursor-animation/base.scss +1 -1
  274. package/lib/design-tokens/scss/tokens/functional/components/text-cursor-animation/colors.scss +1 -1
  275. package/lib/design-tokens/scss/tokens/functional/components/timeline/base.scss +1 -1
  276. package/lib/design-tokens/scss/tokens/functional/components/timeline/colors.scss +1 -1
  277. package/lib/design-tokens/scss/tokens/functional/components/token/colors.scss +1 -1
  278. package/lib/design-tokens/scss/tokens/functional/components/tooltip/colors.scss +1 -1
  279. package/lib/design-tokens/scss/tokens/functional/components/video-player/base.scss +1 -1
  280. package/lib/design-tokens/scss/tokens/functional/size/border.scss +1 -1
  281. package/lib/design-tokens/scss/tokens/functional/size/breakpoints.scss +1 -1
  282. package/lib/design-tokens/scss/tokens/functional/size/size-coarse.scss +1 -1
  283. package/lib/design-tokens/scss/tokens/functional/size/size-fine.scss +1 -1
  284. package/lib/design-tokens/scss/tokens/functional/size/size.scss +1 -1
  285. package/lib/design-tokens/scss/tokens/functional/size/viewport.scss +1 -1
  286. package/lib/design-tokens/scss/tokens/functional/typography/typography-responsive.scss +1 -1
  287. package/lib/design-tokens/scss/tokens/functional/typography/typography.scss +1 -1
  288. package/lib/design-tokens/ts/tokens/base/colors/light.d.ts +1 -1
  289. package/lib/design-tokens/ts/tokens/base/colors/light.js +1 -1
  290. package/lib/design-tokens/ts/tokens/base/size/size.d.ts +1 -1
  291. package/lib/design-tokens/ts/tokens/base/size/size.js +1 -1
  292. package/lib/design-tokens/ts/tokens/base/typography/typography.d.ts +1 -1
  293. package/lib/design-tokens/ts/tokens/base/typography/typography.js +1 -1
  294. package/lib/design-tokens/ts/tokens/functional/animation/base.d.ts +1 -1
  295. package/lib/design-tokens/ts/tokens/functional/animation/base.js +1 -1
  296. package/lib/design-tokens/ts/tokens/functional/colors/global.d.ts +1 -1
  297. package/lib/design-tokens/ts/tokens/functional/colors/global.js +1 -1
  298. package/lib/design-tokens/ts/tokens/functional/components/bento/base.d.ts +1 -1
  299. package/lib/design-tokens/ts/tokens/functional/components/bento/base.js +1 -1
  300. package/lib/design-tokens/ts/tokens/functional/components/card/base.d.ts +1 -1
  301. package/lib/design-tokens/ts/tokens/functional/components/card/base.js +1 -1
  302. package/lib/design-tokens/ts/tokens/functional/components/card/colors.d.ts +1 -1
  303. package/lib/design-tokens/ts/tokens/functional/components/card/colors.js +1 -1
  304. package/lib/design-tokens/ts/tokens/functional/components/comparison-table/comparison-table.d.ts +1 -1
  305. package/lib/design-tokens/ts/tokens/functional/components/comparison-table/comparison-table.js +1 -1
  306. package/lib/design-tokens/ts/tokens/functional/components/eyebrow-banner/eyebrow-banner.d.ts +1 -1
  307. package/lib/design-tokens/ts/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
  308. package/lib/design-tokens/ts/tokens/functional/components/faq/base.d.ts +1 -1
  309. package/lib/design-tokens/ts/tokens/functional/components/faq/base.js +1 -1
  310. package/lib/design-tokens/ts/tokens/functional/components/faq/colors.d.ts +1 -1
  311. package/lib/design-tokens/ts/tokens/functional/components/faq/colors.js +1 -1
  312. package/lib/design-tokens/ts/tokens/functional/components/faq/faq.d.ts +1 -1
  313. package/lib/design-tokens/ts/tokens/functional/components/faq/faq.js +1 -1
  314. package/lib/design-tokens/ts/tokens/functional/components/footer/base.d.ts +1 -1
  315. package/lib/design-tokens/ts/tokens/functional/components/footer/base.js +1 -1
  316. package/lib/design-tokens/ts/tokens/functional/components/footer/colors.d.ts +1 -1
  317. package/lib/design-tokens/ts/tokens/functional/components/footer/colors.js +1 -1
  318. package/lib/design-tokens/ts/tokens/functional/components/frosted-glass-vfx/base.d.ts +1 -1
  319. package/lib/design-tokens/ts/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
  320. package/lib/design-tokens/ts/tokens/functional/components/grid/colors.d.ts +1 -1
  321. package/lib/design-tokens/ts/tokens/functional/components/grid/colors.js +1 -1
  322. package/lib/design-tokens/ts/tokens/functional/components/grid/grid.d.ts +1 -1
  323. package/lib/design-tokens/ts/tokens/functional/components/grid/grid.js +1 -1
  324. package/lib/design-tokens/ts/tokens/functional/components/hero/base.d.ts +1 -1
  325. package/lib/design-tokens/ts/tokens/functional/components/hero/base.js +1 -1
  326. package/lib/design-tokens/ts/tokens/functional/components/icon/colors.d.ts +1 -1
  327. package/lib/design-tokens/ts/tokens/functional/components/icon/colors.js +1 -1
  328. package/lib/design-tokens/ts/tokens/functional/components/ide/base.d.ts +1 -1
  329. package/lib/design-tokens/ts/tokens/functional/components/ide/base.js +1 -1
  330. package/lib/design-tokens/ts/tokens/functional/components/image/base.d.ts +1 -1
  331. package/lib/design-tokens/ts/tokens/functional/components/image/base.js +1 -1
  332. package/lib/design-tokens/ts/tokens/functional/components/inline-code/colors.d.ts +1 -1
  333. package/lib/design-tokens/ts/tokens/functional/components/inline-code/colors.js +1 -1
  334. package/lib/design-tokens/ts/tokens/functional/components/inline-link/base.d.ts +1 -1
  335. package/lib/design-tokens/ts/tokens/functional/components/inline-link/base.js +1 -1
  336. package/lib/design-tokens/ts/tokens/functional/components/inline-link/colors.d.ts +1 -1
  337. package/lib/design-tokens/ts/tokens/functional/components/inline-link/colors.js +1 -1
  338. package/lib/design-tokens/ts/tokens/functional/components/label/colors.d.ts +1 -1
  339. package/lib/design-tokens/ts/tokens/functional/components/label/colors.js +1 -1
  340. package/lib/design-tokens/ts/tokens/functional/components/link/colors.d.ts +1 -1
  341. package/lib/design-tokens/ts/tokens/functional/components/link/colors.js +1 -1
  342. package/lib/design-tokens/ts/tokens/functional/components/logosuite/base.d.ts +1 -1
  343. package/lib/design-tokens/ts/tokens/functional/components/logosuite/base.js +1 -1
  344. package/lib/design-tokens/ts/tokens/functional/components/logosuite/colors.d.ts +1 -1
  345. package/lib/design-tokens/ts/tokens/functional/components/logosuite/colors.js +1 -1
  346. package/lib/design-tokens/ts/tokens/functional/components/media-playlist/colors.d.ts +1 -1
  347. package/lib/design-tokens/ts/tokens/functional/components/media-playlist/colors.js +1 -1
  348. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/colors.d.ts +1 -1
  349. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/colors.js +1 -1
  350. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/pricing-options.d.ts +1 -1
  351. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/pricing-options.js +1 -1
  352. package/lib/design-tokens/ts/tokens/functional/components/prose/base.d.ts +1 -1
  353. package/lib/design-tokens/ts/tokens/functional/components/prose/base.js +1 -1
  354. package/lib/design-tokens/ts/tokens/functional/components/river/base.d.ts +1 -1
  355. package/lib/design-tokens/ts/tokens/functional/components/river/base.js +1 -1
  356. package/lib/design-tokens/ts/tokens/functional/components/river/river.d.ts +1 -1
  357. package/lib/design-tokens/ts/tokens/functional/components/river/river.js +1 -1
  358. package/lib/design-tokens/ts/tokens/functional/components/section/section.d.ts +1 -1
  359. package/lib/design-tokens/ts/tokens/functional/components/section/section.js +1 -1
  360. package/lib/design-tokens/ts/tokens/functional/components/statistic/base.d.ts +1 -1
  361. package/lib/design-tokens/ts/tokens/functional/components/statistic/base.js +1 -1
  362. package/lib/design-tokens/ts/tokens/functional/components/sub-nav/base.d.ts +1 -1
  363. package/lib/design-tokens/ts/tokens/functional/components/sub-nav/base.js +1 -1
  364. package/lib/design-tokens/ts/tokens/functional/components/tabs/base.d.ts +1 -1
  365. package/lib/design-tokens/ts/tokens/functional/components/tabs/base.js +1 -1
  366. package/lib/design-tokens/ts/tokens/functional/components/tabs/colors.d.ts +1 -1
  367. package/lib/design-tokens/ts/tokens/functional/components/tabs/colors.js +1 -1
  368. package/lib/design-tokens/ts/tokens/functional/components/testimonial/base.d.ts +1 -1
  369. package/lib/design-tokens/ts/tokens/functional/components/testimonial/base.js +1 -1
  370. package/lib/design-tokens/ts/tokens/functional/components/testimonial/colors.d.ts +1 -1
  371. package/lib/design-tokens/ts/tokens/functional/components/testimonial/colors.js +1 -1
  372. package/lib/design-tokens/ts/tokens/functional/components/text-cursor-animation/base.d.ts +1 -1
  373. package/lib/design-tokens/ts/tokens/functional/components/text-cursor-animation/base.js +1 -1
  374. package/lib/design-tokens/ts/tokens/functional/components/text-cursor-animation/colors.d.ts +1 -1
  375. package/lib/design-tokens/ts/tokens/functional/components/text-cursor-animation/colors.js +1 -1
  376. package/lib/design-tokens/ts/tokens/functional/components/timeline/base.d.ts +1 -1
  377. package/lib/design-tokens/ts/tokens/functional/components/timeline/base.js +1 -1
  378. package/lib/design-tokens/ts/tokens/functional/components/timeline/colors.d.ts +1 -1
  379. package/lib/design-tokens/ts/tokens/functional/components/timeline/colors.js +1 -1
  380. package/lib/design-tokens/ts/tokens/functional/components/token/colors.d.ts +1 -1
  381. package/lib/design-tokens/ts/tokens/functional/components/token/colors.js +1 -1
  382. package/lib/design-tokens/ts/tokens/functional/components/tooltip/colors.d.ts +1 -1
  383. package/lib/design-tokens/ts/tokens/functional/components/tooltip/colors.js +1 -1
  384. package/lib/design-tokens/ts/tokens/functional/components/video-player/base.d.ts +1 -1
  385. package/lib/design-tokens/ts/tokens/functional/components/video-player/base.js +1 -1
  386. package/lib/design-tokens/ts/tokens/functional/size/border.d.ts +1 -1
  387. package/lib/design-tokens/ts/tokens/functional/size/border.js +1 -1
  388. package/lib/design-tokens/ts/tokens/functional/size/breakpoints.d.ts +1 -1
  389. package/lib/design-tokens/ts/tokens/functional/size/breakpoints.js +1 -1
  390. package/lib/design-tokens/ts/tokens/functional/size/size-coarse.d.ts +1 -1
  391. package/lib/design-tokens/ts/tokens/functional/size/size-coarse.js +1 -1
  392. package/lib/design-tokens/ts/tokens/functional/size/size-fine.d.ts +1 -1
  393. package/lib/design-tokens/ts/tokens/functional/size/size-fine.js +1 -1
  394. package/lib/design-tokens/ts/tokens/functional/size/size.d.ts +1 -1
  395. package/lib/design-tokens/ts/tokens/functional/size/size.js +1 -1
  396. package/lib/design-tokens/ts/tokens/functional/size/viewport.d.ts +1 -1
  397. package/lib/design-tokens/ts/tokens/functional/size/viewport.js +1 -1
  398. package/lib/design-tokens/ts/tokens/functional/typography/typography-responsive.d.ts +1 -1
  399. package/lib/design-tokens/ts/tokens/functional/typography/typography-responsive.js +1 -1
  400. package/lib/design-tokens/ts/tokens/functional/typography/typography.d.ts +1 -1
  401. package/lib/design-tokens/ts/tokens/functional/typography/typography.js +1 -1
  402. package/lib/hooks/useCursorAnimation.d.ts +4 -1
  403. package/lib/index.js +1 -1
  404. package/llms.txt +2 -2
  405. package/package.json +1 -1
  406. package/esm/TextCursorAnimation/TextCursorAnimation.module-BS4hPR8H.css +0 -1
package/docs/index.md CHANGED
@@ -1,6 +1,6 @@
1
- # Primer Brand docs (v0.76.0-rc.16d4997d)
1
+ # Primer Brand docs (v0.76.0-rc.b6b9d052)
2
2
 
3
- These docs are bundled with `@primer/react-brand@0.76.0-rc.16d4997d` and match your installed version.
3
+ These docs are bundled with `@primer/react-brand@0.76.0-rc.b6b9d052` and match your installed version.
4
4
 
5
5
  New here? Start with [Getting started](getting-started/index.md) for installation, global
6
6
  stylesheet and font setup. Component directories are named after their import (e.g.
@@ -1 +1 @@
1
- {"version":3,"file":"Testimonial.d.ts","sourceRoot":"","sources":["../../src/Testimonial/Testimonial.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,cAAc,EAGd,QAAQ,EAGT,MAAM,OAAO,CAAA;AAEd,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAA;AAE9C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,KAAK,CAAA;AAGpC,OAAO,kGAAkG,CAAA;AACzG,OAAO,+GAA+G,CAAA;AAKtH,KAAK,eAAe,GAAG,OAAO,GAAG,OAAO,CAAA;AAExC,eAAO,MAAM,0BAA0B,8MAA4C,CAAA;AACnF,eAAO,MAAM,qBAAqB,WAAgC,CAAA;AAElE,eAAO,MAAM,mBAAmB,yDAA0D,CAAA;AAC1F,KAAK,kBAAkB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAC9D,eAAO,MAAM,yBAAyB,EAAE,kBAA8B,CAAA;AAEtE,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,QAAQ,EACJ,KAAK,CAAC,SAAS,GACf,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,GAC9B,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,GAC7B,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,GAC/B,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAA;IACnC;;OAEG;IACH,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,uCAAuC;IACvC,cAAc,CAAC,EAAE,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAA;CAC7D,GAAG,SAAS,CAAC,WAAW,CAAC,GACxB,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;AAmFnC;;;GAGG;AACH,KAAK,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,CAAA;AAY5E;;;GAGG;AACH,KAAK,SAAS,GAAG;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,GACnC,SAAS,CAAC,WAAW,CAAC,CAAA;AAmBxB;;;GAGG;AACH,KAAK,SAAS,GAAG;IACf,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAA;CAC7G,GAAG,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,GACxC,SAAS,CAAC,gBAAgB,CAAC,CAAA;AAwB7B;;;GAGG;AAEH,iBAAS,OAAO,CAAC,EAAC,IAAI,EAAE,GAAG,IAAI,EAAC,EAAE,WAAW,qBAE5C;AAcD;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;CAMtB,CAAA"}
1
+ {"version":3,"file":"Testimonial.d.ts","sourceRoot":"","sources":["../../src/Testimonial/Testimonial.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,cAAc,EAGd,QAAQ,EAGT,MAAM,OAAO,CAAA;AAEd,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAA;AAE9C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,KAAK,CAAA;AAIpC,OAAO,kGAAkG,CAAA;AACzG,OAAO,+GAA+G,CAAA;AAKtH,KAAK,eAAe,GAAG,OAAO,GAAG,OAAO,CAAA;AAExC,eAAO,MAAM,0BAA0B,8MAA4C,CAAA;AACnF,eAAO,MAAM,qBAAqB,WAAgC,CAAA;AAElE,eAAO,MAAM,mBAAmB,yDAA0D,CAAA;AAC1F,KAAK,kBAAkB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAC9D,eAAO,MAAM,yBAAyB,EAAE,kBAA8B,CAAA;AAEtE,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,QAAQ,EACJ,KAAK,CAAC,SAAS,GACf,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,GAC9B,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,GAC7B,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,GAC/B,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAA;IACnC;;OAEG;IACH,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,uCAAuC;IACvC,cAAc,CAAC,EAAE,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAA;CAC7D,GAAG,SAAS,CAAC,WAAW,CAAC,GACxB,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;AAgGnC;;;GAGG;AACH,KAAK,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,CAAA;AAY5E;;;GAGG;AACH,KAAK,SAAS,GAAG;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,GACnC,SAAS,CAAC,WAAW,CAAC,CAAA;AAmBxB;;;GAGG;AACH,KAAK,SAAS,GAAG;IACf,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAA;CAC7G,GAAG,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,GACxC,SAAS,CAAC,gBAAgB,CAAC,CAAA;AAwB7B;;;GAGG;AAEH,iBAAS,OAAO,CAAC,EAAC,IAAI,EAAE,GAAG,IAAI,EAAC,EAAE,WAAW,qBAE5C;AAcD;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;CAMtB,CAAA"}
@@ -2,128 +2,134 @@ import { clsx as e } from "../node_modules/clsx/dist/clsx.js";
2
2
  import { BiColorGradients as t, Colors as n } from "../constants.js";
3
3
  import { useAnimation as r } from "../animation/useAnimation.js";
4
4
  import { Text as i } from "../Text/Text.js";
5
- import { Link as a } from "../Link/Link.js";
6
- import { Avatar as o } from "../Avatar/Avatar.js";
5
+ import { TextCursorAnimation as a } from "../TextCursorAnimation/TextCursorAnimation.js";
6
+ import { Link as o } from "../Link/Link.js";
7
+ import { Avatar as s } from "../Avatar/Avatar.js";
7
8
  import '../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/testimonial/colors-with-modes-8ryG-BX6.css';import '../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/testimonial/base-CAG7koNB.css';/* empty css */
8
9
  /* empty css */
9
- import s from "./Testimonial.module.js";
10
- import c, { forwardRef as l } from "react";
11
- import { jsx as u, jsxs as d } from "react/jsx-runtime";
10
+ import c from "./Testimonial.module.js";
11
+ import l, { forwardRef as u } from "react";
12
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
12
13
  //#region src/Testimonial/Testimonial.tsx
13
- var f = [...n, ...t], p = f[0], m = [
14
+ var p = [...n, ...t], m = p[0], h = [
14
15
  "subtle",
15
16
  "default",
16
17
  "minimal",
17
18
  "expressive"
18
- ], h = "minimal";
19
- function g({ quoteMarkColor: t, animate: n, className: i, children: a, variant: o = "minimal", hasBorder: l = !0, size: f, style: p, ...m }, h) {
20
- let { classes: g, styles: _ } = r(n), v = t ?? (o === "expressive" ? "green" : "default"), b = /* @__PURE__ */ u("div", {
19
+ ], g = "minimal";
20
+ function _({ quoteMarkColor: t, animate: n, className: i, children: o, variant: s = "minimal", hasBorder: u = !0, size: p, style: m, ...h }, g) {
21
+ let { classes: _, styles: v } = r(n), y = t ?? (s === "expressive" ? "green" : "default"), x = /* @__PURE__ */ d("div", {
21
22
  "aria-hidden": "true",
22
- className: e(s.Testimonial__quoteMark, s[`Testimonial__quoteMark--${v}`], o === "expressive" && s["Testimonial__quoteMark--hasBackground"]),
23
- children: /* @__PURE__ */ u("span", {
24
- className: s.Testimonial__quoteMarkGlyph,
23
+ className: e(c.Testimonial__quoteMark, c[`Testimonial__quoteMark--${y}`], s === "expressive" && c["Testimonial__quoteMark--hasBackground"]),
24
+ children: /* @__PURE__ */ d("span", {
25
+ className: c.Testimonial__quoteMarkGlyph,
25
26
  children: "“"
26
27
  })
27
- }), S = c.Children.toArray(a), w = (e) => S.find((t) => c.isValidElement(t) && t.type === e), E = w(y), O = w(D), k = w(T), A = w(C), j = w(x);
28
- return /* @__PURE__ */ d("figure", {
29
- ref: h,
30
- className: e(g, s.Testimonial, s[`Testimonial--variant-${o}`], f && s[`Testimonial--size-${f}`], l && s["Testimonial--border"], o === "expressive" && O && s["Testimonial--hasLink"], i),
28
+ }), C = l.Children.toArray(o), T = (e) => C.find((t) => l.isValidElement(t) && t.type === e), D = T(b), k = T(O), A = T(E), j = T(w), M = T(S), N = M && s === "expressive" && typeof M.props.children == "string" ? l.cloneElement(M, { children: /* @__PURE__ */ d(a, {
29
+ animate: !0,
30
+ animationTrigger: "on-visible",
31
+ variant: "default",
32
+ children: M.props.children
33
+ }) }) : M;
34
+ return /* @__PURE__ */ f("figure", {
35
+ ref: g,
36
+ className: e(_, c.Testimonial, c[`Testimonial--variant-${s}`], p && c[`Testimonial--size-${p}`], u && c["Testimonial--border"], s === "expressive" && k && c["Testimonial--hasLink"], i),
31
37
  style: {
32
- ..._,
33
- ...p,
34
- "--testimonial-accent-color": v
38
+ ...v,
39
+ ...m,
40
+ "--testimonial-accent-color": y
35
41
  },
36
- ...m,
42
+ ...h,
37
43
  children: [
38
- /* @__PURE__ */ d("div", {
39
- className: s.Testimonial__quoteWrapper,
44
+ /* @__PURE__ */ f("div", {
45
+ className: c.Testimonial__quoteWrapper,
40
46
  children: [
41
- b,
42
- E,
43
- o !== "expressive" && O
47
+ x,
48
+ D,
49
+ s !== "expressive" && k
44
50
  ]
45
51
  }),
46
- /* @__PURE__ */ d("div", {
47
- className: s.Testimonial__media,
52
+ /* @__PURE__ */ f("div", {
53
+ className: c.Testimonial__media,
48
54
  children: [
49
- k,
50
55
  A,
51
- j
56
+ j,
57
+ N
52
58
  ]
53
59
  }),
54
- o === "expressive" && O
60
+ s === "expressive" && k
55
61
  ]
56
62
  });
57
63
  }
58
- var _ = l(g);
59
- function v({ children: t, className: n }, r) {
60
- return /* @__PURE__ */ u("blockquote", {
64
+ var v = u(_);
65
+ function y({ children: t, className: n }, r) {
66
+ return /* @__PURE__ */ d("blockquote", {
61
67
  ref: r,
62
- children: /* @__PURE__ */ u(i, {
63
- className: e(s["Testimonial-quote"], n),
68
+ children: /* @__PURE__ */ d(i, {
69
+ className: e(c["Testimonial-quote"], n),
64
70
  children: t
65
71
  })
66
72
  });
67
73
  }
68
- var y = l(v);
69
- function b({ children: t, className: n, position: r }, a) {
70
- return /* @__PURE__ */ d("figcaption", {
74
+ var b = u(y);
75
+ function x({ children: t, className: n, position: r }, a) {
76
+ return /* @__PURE__ */ f("figcaption", {
71
77
  ref: a,
72
- className: e(s["Testimonial-caption"], n),
73
- children: [/* @__PURE__ */ u(i, {
78
+ className: e(c["Testimonial-caption"], n),
79
+ children: [/* @__PURE__ */ d(i, {
74
80
  size: "200",
75
- className: e(s["Testimonial-from"]),
81
+ className: c["Testimonial-from"],
76
82
  font: "monospace",
77
83
  children: t
78
- }), r && /* @__PURE__ */ u(i, {
84
+ }), r && /* @__PURE__ */ d(i, {
79
85
  size: "200",
80
- className: e(s["Testimonial-position"]),
86
+ className: e(c["Testimonial-position"]),
81
87
  variant: "muted",
82
88
  children: r
83
89
  })]
84
90
  });
85
91
  }
86
- var x = l(b);
87
- function S({ children: t, ...n }, r) {
88
- return /* @__PURE__ */ u("div", {
89
- className: s["Testimonial-logo"],
92
+ var S = u(x);
93
+ function C({ children: t, ...n }, r) {
94
+ return /* @__PURE__ */ d("div", {
95
+ className: c["Testimonial-logo"],
90
96
  ...n,
91
- children: c.Children.map(t, (t) => {
92
- if (c.isValidElement(t) && t.type === "img") {
97
+ children: l.Children.map(t, (t) => {
98
+ if (l.isValidElement(t) && t.type === "img") {
93
99
  let n = t, i = {
94
- className: e(s["Testimonial-logo-image"], n.props.className),
100
+ className: e(c["Testimonial-logo-image"], n.props.className),
95
101
  ref: r
96
102
  };
97
- return c.cloneElement(n, i);
103
+ return l.cloneElement(n, i);
98
104
  }
99
105
  })
100
106
  });
101
107
  }
102
- var C = l(S);
103
- function w({ size: t, ...n }) {
104
- return /* @__PURE__ */ u(o, {
105
- className: e(s["Testimonial-avatar"]),
108
+ var w = u(C);
109
+ function T({ size: t, ...n }) {
110
+ return /* @__PURE__ */ d(s, {
111
+ className: e(c["Testimonial-avatar"]),
106
112
  size: 48,
107
113
  ...n
108
114
  });
109
115
  }
110
- var T = w;
111
- function E({ className: t, ...n }, r) {
112
- return /* @__PURE__ */ u(a, {
113
- className: e(s["Testimonial-link"], t),
116
+ var E = T;
117
+ function D({ className: t, ...n }, r) {
118
+ return /* @__PURE__ */ d(o, {
119
+ className: e(c["Testimonial-link"], t),
114
120
  ...n,
115
121
  size: "medium",
116
122
  variant: "accent"
117
123
  });
118
124
  }
119
- var D = l(E), O = Object.assign(_, {
120
- Quote: y,
121
- Name: x,
122
- Avatar: T,
123
- Logo: C,
124
- Link: D
125
+ var O = u(D), k = Object.assign(v, {
126
+ Quote: b,
127
+ Name: S,
128
+ Avatar: E,
129
+ Logo: w,
130
+ Link: O
125
131
  });
126
132
  //#endregion
127
- export { O as Testimonial, f as TestimonialQuoteMarkColors, m as TestimonialVariants, p as defaultQuoteMarkColor, h as defaultTestimonialVariant };
133
+ export { k as Testimonial, p as TestimonialQuoteMarkColors, h as TestimonialVariants, m as defaultQuoteMarkColor, g as defaultTestimonialVariant };
128
134
 
129
135
  //# sourceMappingURL=Testimonial.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Testimonial.js","names":[],"sources":["../../src/Testimonial/Testimonial.tsx"],"sourcesContent":["import React, {\n HTMLAttributes,\n PropsWithChildren,\n forwardRef,\n SVGProps,\n CSSProperties,\n ComponentPropsWithRef,\n} from 'react'\nimport {clsx} from 'clsx'\nimport {BaseProps} from '../component-helpers'\nimport {Text, Avatar as BaseAvatar, useAnimation} from '../'\nimport type {AvatarProps} from '../'\nimport {Link, type LinkProps} from '../Link'\n\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/testimonial/base.css'\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/testimonial/colors-with-modes.css'\n\nimport styles from './Testimonial.module.css'\nimport {Colors, BiColorGradients} from '../constants'\n\ntype TestimonialSize = 'small' | 'large'\n\nexport const TestimonialQuoteMarkColors = [...Colors, ...BiColorGradients] as const\nexport const defaultQuoteMarkColor = TestimonialQuoteMarkColors[0]\n\nexport const TestimonialVariants = ['subtle', 'default', 'minimal', 'expressive'] as const\ntype TestimonialVariant = (typeof TestimonialVariants)[number]\nexport const defaultTestimonialVariant: TestimonialVariant = 'minimal'\n\nexport type TestimonialProps = {\n /**\n * Sets alternative appearance for the testimonial\n */\n variant?: TestimonialVariant\n /**\n * Applies an optional border where a variant supports it\n */\n hasBorder?: boolean\n /**\n * Valid children include Testimonial.Name, Testimonial.Avatar, and Testimonial.Name\n */\n children:\n | React.ReactNode\n | React.ReactElement<QuoteProps>\n | React.ReactElement<NameProps>\n | React.ReactElement<AvatarProps>\n | React.ReactElement<LogoProps>[]\n /**\n * Sets the testimonial text size\n */\n size?: TestimonialSize\n /** Sets the color of the quote mark */\n quoteMarkColor?: (typeof TestimonialQuoteMarkColors)[number]\n} & BaseProps<HTMLElement> &\n React.HTMLAttributes<HTMLElement>\n\n/**\n * Testimonial parent element\n * <Testimonial>\n */\nfunction TestimonialBase(\n {\n quoteMarkColor,\n animate,\n className,\n children,\n variant = 'minimal',\n hasBorder = true,\n size,\n style,\n ...rest\n }: PropsWithChildren<TestimonialProps>,\n ref,\n) {\n const {classes: animationClasses, styles: animationInlineStyles} = useAnimation(animate)\n\n const resolvedQuoteMarkColor = quoteMarkColor ?? (variant === 'expressive' ? 'green' : 'default')\n\n const quoteMark = (\n <div\n aria-hidden=\"true\"\n className={clsx(\n styles['Testimonial__quoteMark'],\n styles[`Testimonial__quoteMark--${resolvedQuoteMarkColor}`],\n variant === 'expressive' && styles['Testimonial__quoteMark--hasBackground'],\n )}\n >\n <span className={styles['Testimonial__quoteMarkGlyph']}>&ldquo;</span>\n </div>\n )\n\n const childrenArray = React.Children.toArray(children)\n const findChild = (type: React.ElementType) =>\n childrenArray.find(child => React.isValidElement(child) && child.type === type)\n\n const quoteChild = findChild(Quote)\n const actionChild = findChild(_Link)\n const avatarChild = findChild(Avatar)\n const logoChild = findChild(Logo)\n const nameChild = findChild(Name)\n\n return (\n <figure\n ref={ref}\n className={clsx(\n animationClasses,\n styles['Testimonial'],\n styles[`Testimonial--variant-${variant}`],\n size && styles[`Testimonial--size-${size}`],\n hasBorder && styles['Testimonial--border'],\n variant === 'expressive' && actionChild && styles['Testimonial--hasLink'],\n className,\n )}\n style={{\n ...animationInlineStyles,\n ...style,\n ['--testimonial-accent-color' as keyof CSSProperties]: resolvedQuoteMarkColor,\n }}\n {...rest}\n >\n <div className={styles['Testimonial__quoteWrapper']}>\n {quoteMark}\n {quoteChild}\n {variant !== 'expressive' && actionChild}\n </div>\n <div className={styles['Testimonial__media']}>\n {avatarChild}\n {logoChild}\n {nameChild}\n </div>\n {variant === 'expressive' && actionChild}\n </figure>\n )\n}\n\nconst Root = forwardRef(TestimonialBase)\n\n/**\n * Testimonial quote child element\n * <Testimonial.Quote>\n */\ntype QuoteProps = React.HTMLAttributes<HTMLElement> & BaseProps<HTMLElement>\n\nfunction QuoteBase({children, className}: QuoteProps, ref) {\n return (\n <blockquote ref={ref}>\n <Text className={clsx(styles['Testimonial-quote'], className)}>{children}</Text>\n </blockquote>\n )\n}\n\nconst Quote = forwardRef(QuoteBase)\n\n/**\n * Testimonial name child element\n * <Testimonial.Name>\n */\ntype NameProps = {\n position?: string\n} & React.HTMLAttributes<HTMLElement> &\n BaseProps<HTMLElement>\n\nfunction _Name({children, className, position}: NameProps, ref) {\n return (\n <figcaption ref={ref} className={clsx(styles['Testimonial-caption'], className)}>\n <Text size=\"200\" className={clsx(styles['Testimonial-from'])} font=\"monospace\">\n {children}\n </Text>\n {position && (\n <Text size=\"200\" className={clsx(styles['Testimonial-position'])} variant=\"muted\">\n {position}\n </Text>\n )}\n </figcaption>\n )\n}\n\nconst Name = forwardRef(_Name)\n\n/**\n * Testimonial logo child element\n * <Testimonial.Logo>\n */\ntype LogoProps = {\n children: React.ReactElement<SVGProps<SVGSVGElement>> | React.ReactElement<HTMLAttributes<HTMLImageElement>>\n} & React.HTMLAttributes<HTMLImageElement> &\n BaseProps<HTMLImageElement>\n\nfunction _Logo({children, ...rest}: LogoProps, ref) {\n return (\n <div className={styles['Testimonial-logo']} {...rest}>\n {React.Children.map(children, child => {\n if (React.isValidElement(child)) {\n if (child.type === 'img') {\n const imageChild = child as React.ReactElement<ComponentPropsWithRef<'img'>>\n const imageProps: ComponentPropsWithRef<'img'> = {\n className: clsx(styles['Testimonial-logo-image'], imageChild.props.className),\n ref: ref as ComponentPropsWithRef<'img'>['ref'],\n }\n\n return React.cloneElement(imageChild, imageProps)\n }\n }\n })}\n </div>\n )\n}\n\nconst Logo = forwardRef(_Logo)\n\n/**\n * Testimonial avatar child element\n * <Testimonial.Avatar>\n */\n\nfunction _Avatar({size, ...rest}: AvatarProps) {\n return <BaseAvatar className={clsx(styles['Testimonial-avatar'])} size={48} {...rest} />\n}\n\nconst Avatar = _Avatar\n\n/**\n * Testimonial link child element\n * <Testimonial.Link>\n */\nfunction _LinkBase({className, ...rest}: LinkProps, _ref) {\n return <Link className={clsx(styles['Testimonial-link'], className)} {...rest} size=\"medium\" variant=\"accent\" />\n}\n\nconst _Link = forwardRef(_LinkBase)\n\n/**\n * Use Testimonial to display a quote from a customer or user.\n * @see https://primer.style/brand/components/Testimonial\n */\nexport const Testimonial = Object.assign(Root, {\n Quote,\n Name,\n Avatar,\n Logo,\n Link: _Link,\n})\n"],"mappings":";;;;;;;;;;;;AAsBA,IAAa,IAA6B,CAAC,GAAG,GAAQ,GAAG,CAAgB,GAC5D,IAAwB,EAA2B,IAEnD,IAAsB;CAAC;CAAU;CAAW;CAAW;AAAY,GAEnE,IAAgD;AAiC7D,SAAS,EACP,EACE,mBACA,YACA,cACA,aACA,aAAU,WACV,eAAY,IACZ,SACA,UACA,GAAG,KAEL,GACA;CACA,IAAM,EAAC,SAAS,GAAkB,QAAQ,MAAyB,EAAa,CAAO,GAEjF,IAAyB,MAAmB,MAAY,eAAe,UAAU,YAEjF,IACJ,kBAAC,OAAD;EACE,eAAY;EACZ,WAAW,EACT,EAAO,wBACP,EAAO,2BAA2B,MAClC,MAAY,gBAAgB,EAAO,wCACrC;YAEA,kBAAC,QAAD;GAAM,WAAW,EAAO;aAAgC;EAAa,CAAA;CAClE,CAAA,GAGD,IAAgB,EAAM,SAAS,QAAQ,CAAQ,GAC/C,KAAa,MACjB,EAAc,MAAK,MAAS,EAAM,eAAe,CAAK,KAAK,EAAM,SAAS,CAAI,GAE1E,IAAa,EAAU,CAAK,GAC5B,IAAc,EAAU,CAAK,GAC7B,IAAc,EAAU,CAAM,GAC9B,IAAY,EAAU,CAAI,GAC1B,IAAY,EAAU,CAAI;CAEhC,OACE,kBAAC,UAAD;EACO;EACL,WAAW,EACT,GACA,EAAO,aACP,EAAO,wBAAwB,MAC/B,KAAQ,EAAO,qBAAqB,MACpC,KAAa,EAAO,wBACpB,MAAY,gBAAgB,KAAe,EAAO,yBAClD,CACF;EACA,OAAO;GACL,GAAG;GACH,GAAG;GACF,8BAAsD;EACzD;EACA,GAAI;YAhBN;GAkBE,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB;KACG;KACA;KACA,MAAY,gBAAgB;IAC1B;;GACL,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB;KACG;KACA;KACA;IACE;;GACJ,MAAY,gBAAgB;EACvB;;AAEZ;AAEA,IAAM,IAAO,EAAW,CAAe;AAQvC,SAAS,EAAU,EAAC,aAAU,gBAAwB,GAAK;CACzD,OACE,kBAAC,cAAD;EAAiB;YACf,kBAAC,GAAD;GAAM,WAAW,EAAK,EAAO,sBAAsB,CAAS;GAAI;EAAe,CAAA;CACrE,CAAA;AAEhB;AAEA,IAAM,IAAQ,EAAW,CAAS;AAWlC,SAAS,EAAM,EAAC,aAAU,cAAW,eAAsB,GAAK;CAC9D,OACE,kBAAC,cAAD;EAAiB;EAAK,WAAW,EAAK,EAAO,wBAAwB,CAAS;YAA9E,CACE,kBAAC,GAAD;GAAM,MAAK;GAAM,WAAW,EAAK,EAAO,mBAAmB;GAAG,MAAK;GAChE;EACG,CAAA,GACL,KACC,kBAAC,GAAD;GAAM,MAAK;GAAM,WAAW,EAAK,EAAO,uBAAuB;GAAG,SAAQ;aACvE;EACG,CAAA,CAEE;;AAEhB;AAEA,IAAM,IAAO,EAAW,CAAK;AAW7B,SAAS,EAAM,EAAC,aAAU,GAAG,KAAkB,GAAK;CAClD,OACE,kBAAC,OAAD;EAAK,WAAW,EAAO;EAAqB,GAAI;YAC7C,EAAM,SAAS,IAAI,IAAU,MAAS;GACrC,IAAI,EAAM,eAAe,CAAK,KACxB,EAAM,SAAS,OAAO;IACxB,IAAM,IAAa,GACb,IAA2C;KAC/C,WAAW,EAAK,EAAO,2BAA2B,EAAW,MAAM,SAAS;KACvE;IACP;IAEA,OAAO,EAAM,aAAa,GAAY,CAAU;GAClD;EAEJ,CAAC;CACE,CAAA;AAET;AAEA,IAAM,IAAO,EAAW,CAAK;AAO7B,SAAS,EAAQ,EAAC,SAAM,GAAG,KAAoB;CAC7C,OAAO,kBAAC,GAAD;EAAY,WAAW,EAAK,EAAO,qBAAqB;EAAG,MAAM;EAAI,GAAI;CAAO,CAAA;AACzF;AAEA,IAAM,IAAS;AAMf,SAAS,EAAU,EAAC,cAAW,GAAG,KAAkB,GAAM;CACxD,OAAO,kBAAC,GAAD;EAAM,WAAW,EAAK,EAAO,qBAAqB,CAAS;EAAG,GAAI;EAAM,MAAK;EAAS,SAAQ;CAAU,CAAA;AACjH;AAEA,IAAM,IAAQ,EAAW,CAAS,GAMrB,IAAc,OAAO,OAAO,GAAM;CAC7C;CACA;CACA;CACA;CACA,MAAM;AACR,CAAC"}
1
+ {"version":3,"file":"Testimonial.js","names":[],"sources":["../../src/Testimonial/Testimonial.tsx"],"sourcesContent":["import React, {\n HTMLAttributes,\n PropsWithChildren,\n forwardRef,\n SVGProps,\n CSSProperties,\n ComponentPropsWithRef,\n} from 'react'\nimport {clsx} from 'clsx'\nimport {BaseProps} from '../component-helpers'\nimport {Text, Avatar as BaseAvatar, useAnimation} from '../'\nimport type {AvatarProps} from '../'\nimport {Link, type LinkProps} from '../Link'\nimport {TextCursorAnimation} from '../TextCursorAnimation'\n\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/testimonial/base.css'\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/testimonial/colors-with-modes.css'\n\nimport styles from './Testimonial.module.css'\nimport {Colors, BiColorGradients} from '../constants'\n\ntype TestimonialSize = 'small' | 'large'\n\nexport const TestimonialQuoteMarkColors = [...Colors, ...BiColorGradients] as const\nexport const defaultQuoteMarkColor = TestimonialQuoteMarkColors[0]\n\nexport const TestimonialVariants = ['subtle', 'default', 'minimal', 'expressive'] as const\ntype TestimonialVariant = (typeof TestimonialVariants)[number]\nexport const defaultTestimonialVariant: TestimonialVariant = 'minimal'\n\nexport type TestimonialProps = {\n /**\n * Sets alternative appearance for the testimonial\n */\n variant?: TestimonialVariant\n /**\n * Applies an optional border where a variant supports it\n */\n hasBorder?: boolean\n /**\n * Valid children include Testimonial.Name, Testimonial.Avatar, and Testimonial.Name\n */\n children:\n | React.ReactNode\n | React.ReactElement<QuoteProps>\n | React.ReactElement<NameProps>\n | React.ReactElement<AvatarProps>\n | React.ReactElement<LogoProps>[]\n /**\n * Sets the testimonial text size\n */\n size?: TestimonialSize\n /** Sets the color of the quote mark */\n quoteMarkColor?: (typeof TestimonialQuoteMarkColors)[number]\n} & BaseProps<HTMLElement> &\n React.HTMLAttributes<HTMLElement>\n\n/**\n * Testimonial parent element\n * <Testimonial>\n */\nfunction TestimonialBase(\n {\n quoteMarkColor,\n animate,\n className,\n children,\n variant = 'minimal',\n hasBorder = true,\n size,\n style,\n ...rest\n }: PropsWithChildren<TestimonialProps>,\n ref,\n) {\n const {classes: animationClasses, styles: animationInlineStyles} = useAnimation(animate)\n\n const resolvedQuoteMarkColor = quoteMarkColor ?? (variant === 'expressive' ? 'green' : 'default')\n\n const quoteMark = (\n <div\n aria-hidden=\"true\"\n className={clsx(\n styles['Testimonial__quoteMark'],\n styles[`Testimonial__quoteMark--${resolvedQuoteMarkColor}`],\n variant === 'expressive' && styles['Testimonial__quoteMark--hasBackground'],\n )}\n >\n <span className={styles['Testimonial__quoteMarkGlyph']}>&ldquo;</span>\n </div>\n )\n\n const childrenArray = React.Children.toArray(children)\n const findChild = <Props,>(type: React.ElementType): React.ReactElement<Props> | undefined =>\n childrenArray.find(\n (child): child is React.ReactElement<Props> => React.isValidElement<Props>(child) && child.type === type,\n )\n\n const quoteChild = findChild<QuoteProps>(Quote)\n const actionChild = findChild<LinkProps>(_Link)\n const avatarChild = findChild<AvatarProps>(Avatar)\n const logoChild = findChild<LogoProps>(Logo)\n const nameChild = findChild<NameProps>(Name)\n\n const name =\n nameChild && variant === 'expressive' && typeof nameChild.props.children === 'string'\n ? React.cloneElement(nameChild, {\n children: (\n <TextCursorAnimation animate animationTrigger=\"on-visible\" variant=\"default\">\n {nameChild.props.children}\n </TextCursorAnimation>\n ),\n })\n : nameChild\n\n return (\n <figure\n ref={ref}\n className={clsx(\n animationClasses,\n styles['Testimonial'],\n styles[`Testimonial--variant-${variant}`],\n size && styles[`Testimonial--size-${size}`],\n hasBorder && styles['Testimonial--border'],\n variant === 'expressive' && actionChild && styles['Testimonial--hasLink'],\n className,\n )}\n style={{\n ...animationInlineStyles,\n ...style,\n ['--testimonial-accent-color' as keyof CSSProperties]: resolvedQuoteMarkColor,\n }}\n {...rest}\n >\n <div className={styles['Testimonial__quoteWrapper']}>\n {quoteMark}\n {quoteChild}\n {variant !== 'expressive' && actionChild}\n </div>\n <div className={styles['Testimonial__media']}>\n {avatarChild}\n {logoChild}\n {name}\n </div>\n {variant === 'expressive' && actionChild}\n </figure>\n )\n}\n\nconst Root = forwardRef(TestimonialBase)\n\n/**\n * Testimonial quote child element\n * <Testimonial.Quote>\n */\ntype QuoteProps = React.HTMLAttributes<HTMLElement> & BaseProps<HTMLElement>\n\nfunction QuoteBase({children, className}: QuoteProps, ref) {\n return (\n <blockquote ref={ref}>\n <Text className={clsx(styles['Testimonial-quote'], className)}>{children}</Text>\n </blockquote>\n )\n}\n\nconst Quote = forwardRef(QuoteBase)\n\n/**\n * Testimonial name child element\n * <Testimonial.Name>\n */\ntype NameProps = {\n position?: string\n} & React.HTMLAttributes<HTMLElement> &\n BaseProps<HTMLElement>\n\nfunction _Name({children, className, position}: NameProps, ref) {\n return (\n <figcaption ref={ref} className={clsx(styles['Testimonial-caption'], className)}>\n <Text size=\"200\" className={styles['Testimonial-from']} font=\"monospace\">\n {children}\n </Text>\n {position && (\n <Text size=\"200\" className={clsx(styles['Testimonial-position'])} variant=\"muted\">\n {position}\n </Text>\n )}\n </figcaption>\n )\n}\n\nconst Name = forwardRef(_Name)\n\n/**\n * Testimonial logo child element\n * <Testimonial.Logo>\n */\ntype LogoProps = {\n children: React.ReactElement<SVGProps<SVGSVGElement>> | React.ReactElement<HTMLAttributes<HTMLImageElement>>\n} & React.HTMLAttributes<HTMLImageElement> &\n BaseProps<HTMLImageElement>\n\nfunction _Logo({children, ...rest}: LogoProps, ref) {\n return (\n <div className={styles['Testimonial-logo']} {...rest}>\n {React.Children.map(children, child => {\n if (React.isValidElement(child)) {\n if (child.type === 'img') {\n const imageChild = child as React.ReactElement<ComponentPropsWithRef<'img'>>\n const imageProps: ComponentPropsWithRef<'img'> = {\n className: clsx(styles['Testimonial-logo-image'], imageChild.props.className),\n ref: ref as ComponentPropsWithRef<'img'>['ref'],\n }\n\n return React.cloneElement(imageChild, imageProps)\n }\n }\n })}\n </div>\n )\n}\n\nconst Logo = forwardRef(_Logo)\n\n/**\n * Testimonial avatar child element\n * <Testimonial.Avatar>\n */\n\nfunction _Avatar({size, ...rest}: AvatarProps) {\n return <BaseAvatar className={clsx(styles['Testimonial-avatar'])} size={48} {...rest} />\n}\n\nconst Avatar = _Avatar\n\n/**\n * Testimonial link child element\n * <Testimonial.Link>\n */\nfunction _LinkBase({className, ...rest}: LinkProps, _ref) {\n return <Link className={clsx(styles['Testimonial-link'], className)} {...rest} size=\"medium\" variant=\"accent\" />\n}\n\nconst _Link = forwardRef(_LinkBase)\n\n/**\n * Use Testimonial to display a quote from a customer or user.\n * @see https://primer.style/brand/components/Testimonial\n */\nexport const Testimonial = Object.assign(Root, {\n Quote,\n Name,\n Avatar,\n Logo,\n Link: _Link,\n})\n"],"mappings":";;;;;;;;;;;;;AAuBA,IAAa,IAA6B,CAAC,GAAG,GAAQ,GAAG,CAAgB,GAC5D,IAAwB,EAA2B,IAEnD,IAAsB;CAAC;CAAU;CAAW;CAAW;AAAY,GAEnE,IAAgD;AAiC7D,SAAS,EACP,EACE,mBACA,YACA,cACA,aACA,aAAU,WACV,eAAY,IACZ,SACA,UACA,GAAG,KAEL,GACA;CACA,IAAM,EAAC,SAAS,GAAkB,QAAQ,MAAyB,EAAa,CAAO,GAEjF,IAAyB,MAAmB,MAAY,eAAe,UAAU,YAEjF,IACJ,kBAAC,OAAD;EACE,eAAY;EACZ,WAAW,EACT,EAAO,wBACP,EAAO,2BAA2B,MAClC,MAAY,gBAAgB,EAAO,wCACrC;YAEA,kBAAC,QAAD;GAAM,WAAW,EAAO;aAAgC;EAAa,CAAA;CAClE,CAAA,GAGD,IAAgB,EAAM,SAAS,QAAQ,CAAQ,GAC/C,KAAqB,MACzB,EAAc,MACX,MAA8C,EAAM,eAAsB,CAAK,KAAK,EAAM,SAAS,CACtG,GAEI,IAAa,EAAsB,CAAK,GACxC,IAAc,EAAqB,CAAK,GACxC,IAAc,EAAuB,CAAM,GAC3C,IAAY,EAAqB,CAAI,GACrC,IAAY,EAAqB,CAAI,GAErC,IACJ,KAAa,MAAY,gBAAgB,OAAO,EAAU,MAAM,YAAa,WACzE,EAAM,aAAa,GAAW,EAC5B,UACE,kBAAC,GAAD;EAAqB,SAAA;EAAQ,kBAAiB;EAAa,SAAQ;YAChE,EAAU,MAAM;CACE,CAAA,EAEzB,CAAC,IACD;CAEN,OACE,kBAAC,UAAD;EACO;EACL,WAAW,EACT,GACA,EAAO,aACP,EAAO,wBAAwB,MAC/B,KAAQ,EAAO,qBAAqB,MACpC,KAAa,EAAO,wBACpB,MAAY,gBAAgB,KAAe,EAAO,yBAClD,CACF;EACA,OAAO;GACL,GAAG;GACH,GAAG;GACF,8BAAsD;EACzD;EACA,GAAI;YAhBN;GAkBE,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB;KACG;KACA;KACA,MAAY,gBAAgB;IAC1B;;GACL,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB;KACG;KACA;KACA;IACE;;GACJ,MAAY,gBAAgB;EACvB;;AAEZ;AAEA,IAAM,IAAO,EAAW,CAAe;AAQvC,SAAS,EAAU,EAAC,aAAU,gBAAwB,GAAK;CACzD,OACE,kBAAC,cAAD;EAAiB;YACf,kBAAC,GAAD;GAAM,WAAW,EAAK,EAAO,sBAAsB,CAAS;GAAI;EAAe,CAAA;CACrE,CAAA;AAEhB;AAEA,IAAM,IAAQ,EAAW,CAAS;AAWlC,SAAS,EAAM,EAAC,aAAU,cAAW,eAAsB,GAAK;CAC9D,OACE,kBAAC,cAAD;EAAiB;EAAK,WAAW,EAAK,EAAO,wBAAwB,CAAS;YAA9E,CACE,kBAAC,GAAD;GAAM,MAAK;GAAM,WAAW,EAAO;GAAqB,MAAK;GAC1D;EACG,CAAA,GACL,KACC,kBAAC,GAAD;GAAM,MAAK;GAAM,WAAW,EAAK,EAAO,uBAAuB;GAAG,SAAQ;aACvE;EACG,CAAA,CAEE;;AAEhB;AAEA,IAAM,IAAO,EAAW,CAAK;AAW7B,SAAS,EAAM,EAAC,aAAU,GAAG,KAAkB,GAAK;CAClD,OACE,kBAAC,OAAD;EAAK,WAAW,EAAO;EAAqB,GAAI;YAC7C,EAAM,SAAS,IAAI,IAAU,MAAS;GACrC,IAAI,EAAM,eAAe,CAAK,KACxB,EAAM,SAAS,OAAO;IACxB,IAAM,IAAa,GACb,IAA2C;KAC/C,WAAW,EAAK,EAAO,2BAA2B,EAAW,MAAM,SAAS;KACvE;IACP;IAEA,OAAO,EAAM,aAAa,GAAY,CAAU;GAClD;EAEJ,CAAC;CACE,CAAA;AAET;AAEA,IAAM,IAAO,EAAW,CAAK;AAO7B,SAAS,EAAQ,EAAC,SAAM,GAAG,KAAoB;CAC7C,OAAO,kBAAC,GAAD;EAAY,WAAW,EAAK,EAAO,qBAAqB;EAAG,MAAM;EAAI,GAAI;CAAO,CAAA;AACzF;AAEA,IAAM,IAAS;AAMf,SAAS,EAAU,EAAC,cAAW,GAAG,KAAkB,GAAM;CACxD,OAAO,kBAAC,GAAD;EAAM,WAAW,EAAK,EAAO,qBAAqB,CAAS;EAAG,GAAI;EAAM,MAAK;EAAS,SAAQ;CAAU,CAAA;AACjH;AAEA,IAAM,IAAQ,EAAW,CAAS,GAMrB,IAAc,OAAO,OAAO,GAAM;CAC7C;CACA;CACA;CACA;CACA,MAAM;AACR,CAAC"}
@@ -1 +1 @@
1
- .Primer_Brand__Testimonial-module__Testimonial___kxB6R{color:var(--brand-color-text-default);font-family:var(--brand-fontStack-sansSerif)}.Primer_Brand__Testimonial-module__Testimonial--variant-subtle___rmjBe,.Primer_Brand__Testimonial-module__Testimonial--variant-default___uNm5S{border-radius:var(--brand-borderRadius-xlarge);padding:var(--base-size-48) var(--base-size-32);position:relative}@media screen and (width>=48rem){.Primer_Brand__Testimonial-module__Testimonial--variant-subtle___rmjBe,.Primer_Brand__Testimonial-module__Testimonial--variant-default___uNm5S{padding:var(--base-size-48)}}@media screen and (width>=63.25rem){.Primer_Brand__Testimonial-module__Testimonial--variant-subtle___rmjBe.Primer_Brand__Testimonial-module__Testimonial--size-large___NH7Vg,.Primer_Brand__Testimonial-module__Testimonial--variant-default___uNm5S.Primer_Brand__Testimonial-module__Testimonial--size-large___NH7Vg{padding:var(--base-size-96) var(--base-size-128)}}.Primer_Brand__Testimonial-module__Testimonial--variant-subtle___rmjBe{background-color:var(--brand-color-canvas-subtle)}.Primer_Brand__Testimonial-module__Testimonial--variant-default___uNm5S{background-color:var(--brand-color-canvas-default)}.Primer_Brand__Testimonial-module__Testimonial--variant-subtle___rmjBe:before,.Primer_Brand__Testimonial-module__Testimonial--variant-default___uNm5S:before{pointer-events:none;content:"";border-radius:inherit;position:absolute;inset:0}.Primer_Brand__Testimonial-module__Testimonial--variant-subtle___rmjBe.Primer_Brand__Testimonial-module__Testimonial--border___pbUPS:before{-webkit-mask-image:var(--brand-Testimonial-borderMask-subtle);-webkit-mask-image:var(--brand-Testimonial-borderMask-subtle);mask-image:var(--brand-Testimonial-borderMask-subtle);border:var(--brand-borderWidth-thin) solid var(--brand-color-border-default)}.Primer_Brand__Testimonial-module__Testimonial--variant-default___uNm5S.Primer_Brand__Testimonial-module__Testimonial--border___pbUPS:before{-webkit-mask-image:var(--brand-Testimonial-borderMask-default);-webkit-mask-image:var(--brand-Testimonial-borderMask-default);mask-image:var(--brand-Testimonial-borderMask-default);border:var(--brand-borderWidth-thin) solid var(--brand-color-border-default)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark___sC3I2{--brand-Testimonial-quoteMarkColor-gradient:radial-gradient(circle at top left, var(--brand-Testimonial-quoteMarkColor-start), var(--brand-Testimonial-quoteMarkColor-end));--brand-Testimonial-quoteMarkColor-background:var(--brand-Testimonial-quoteMarkColor-gradient,var(--brand-Testimonial-quoteMarkColor,currentColor));color:var(--brand-Testimonial-quoteMarkColor-start,var(--brand-Testimonial-quoteMarkColor,currentColor));font-size:var(--base-size-48);line-height:var(--base-size-48);font-weight:var(--base-text-weight-extrabold);position:relative}.Primer_Brand__Testimonial-module__Testimonial__quoteMark___sC3I2:before{content:"";background:var(--brand-Testimonial-quoteMarkColor-background);-webkit-mask:linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default)) content-box, linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default));-webkit-mask:linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default)) content-box, linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default));mask:linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default)) content-box, linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default));-webkit-mask-composite:xor;position:absolute;inset:0;-webkit-mask-composite:xor;mask-composite:exclude}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--hasBackground___AUVX2{width:calc(var(--base-size-48) + var(--base-size-8));height:calc(var(--base-size-48) + var(--base-size-8));border-radius:var(--base-size-12);background-color:var(--brand-Testimonial-quoteMarkBackground,var(--base-color-scale-gray-0));font-size:var(--base-size-64);justify-content:center;align-items:center;line-height:1;display:inline-flex}.Primer_Brand__Testimonial-module__Testimonial--size-large___NH7Vg .Primer_Brand__Testimonial-module__Testimonial__quoteMark___sC3I2:not(.Primer_Brand__Testimonial-module__Testimonial__quoteMark--hasBackground___AUVX2){font-size:7.5rem;line-height:1}.Primer_Brand__Testimonial-module__Testimonial__quoteMarkGlyph___1eZ5L{display:block}.Primer_Brand__Testimonial-module__Testimonial-quote___xbxri{font-family:var(--brand-fontStack-sansSerif);font-size:var(--brand-Testimonial-quote-fontSize-default);font-weight:var(--brand-Testimonial-quote-fontWeight-default);letter-spacing:var(--brand-Testimonial-quote-letterSpacing-default);line-height:1.2;display:block}.Primer_Brand__Testimonial-module__Testimonial--size-large___NH7Vg .Primer_Brand__Testimonial-module__Testimonial-quote___xbxri{font-size:var(--brand-Testimonial-quote-fontSize-large);font-weight:var(--brand-Testimonial-quote-fontWeight-large);letter-spacing:var(--brand-Testimonial-quote-letterSpacing-large)}.Primer_Brand__Testimonial-module__Testimonial-quote___xbxri em,.Primer_Brand__Testimonial-module__Testimonial-quote___xbxri b{color:var(--brand-Testimonial-quote-color-emphasis);font-style:normal;font-weight:inherit}.Primer_Brand__Testimonial-module__Testimonial__media___rvn7k{gap:var(--base-size-16);margin-top:var(--base-size-24);align-items:center;display:flex}.Primer_Brand__Testimonial-module__Testimonial-logo-image___rpGVd{display:block}.Primer_Brand__Testimonial-module__Testimonial--size-large___NH7Vg .Primer_Brand__Testimonial-module__Testimonial__media___rvn7k{margin-top:var(--base-size-64)}.Primer_Brand__Testimonial-module__Testimonial-caption___8c_KF{flex-direction:column;display:flex}.Primer_Brand__Testimonial-module__Testimonial-avatar___kWqMQ{flex:none}.Primer_Brand__Testimonial-module__Testimonial-from___XLpqj{font-weight:var(--base-text-weight-normal);text-transform:uppercase}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY{gap:var(--base-size-36);width:100%;max-width:1176px;padding-inline:var(--base-size-20);padding-block:var(--base-size-40);flex-direction:column;display:flex}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__quoteWrapper___vcgUf{align-items:flex-start;gap:var(--base-size-36);flex-direction:column;min-width:0;display:flex}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__media___rvn7k{align-items:flex-start;gap:var(--base-size-28);flex-direction:column;width:100%;margin-block-start:0}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-avatar___kWqMQ{width:var(--base-size-40);height:var(--base-size-40)}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-caption___8c_KF{border-block-start:var(--brand-borderWidth-thin) solid var(--brand-color-border-default);gap:var(--base-size-6);width:100%;padding-block-start:var(--base-size-20)}@media screen and (width>=48rem){.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__quoteWrapper___vcgUf{gap:var(--base-size-40)}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__media___rvn7k{width:356px}}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-from___XLpqj{align-items:center;gap:calc(var(--base-size-8) + var(--base-size-2));font-family:var(--brand-fontStack-monospace);font-size:var(--brand-text-size-100);font-weight:var(--brand-heading-weight-500);line-height:var(--brand-text-lineHeight-100);text-transform:uppercase;letter-spacing:.0107em;display:flex}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-from___XLpqj:before{content:"";background-color:var(--brand-color-text-emphasized);flex-shrink:0;width:.5625rem;height:.875rem;display:inline-block}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-position____jQ17{font-size:var(--brand-text-size-200);font-weight:var(--base-text-weight-normal);letter-spacing:.01em;line-height:1.6}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__quoteMark___sC3I2{font-family:var(--brand-fontStack-monospace);font-weight:var(--brand-fontWeight-300)}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__quoteMarkGlyph___1eZ5L{transform:translateY(var(--base-size-12))}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__quoteMark___sC3I2:not(.Primer_Brand__Testimonial-module__Testimonial__quoteMark--hasBackground___AUVX2){margin-left:-.18em}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-quote___xbxri{font-family:var(--brand-fontStack-monospace);letter-spacing:-.01em;font-size:1.5rem;font-weight:425;line-height:var(--brand-text-lineHeight-100);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media screen and (width>=48rem){.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY{max-width:618px;padding-inline:var(--base-size-36);padding-block:var(--base-size-44);margin-inline:auto}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-quote___xbxri{letter-spacing:-.02em;font-size:1.625rem}}@media screen and (width>=63.25rem){.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY{grid-column-gap:calc(var(--base-size-96) + var(--base-size-24));-moz-column-gap:calc(var(--base-size-96) + var(--base-size-24));column-gap:calc(var(--base-size-96) + var(--base-size-24));max-width:1176px;padding-inline:var(--base-size-48);padding-block:var(--base-size-88);grid-template-columns:minmax(0,744px) 312px;align-items:end;margin-inline:auto;display:grid}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY.Primer_Brand__Testimonial-module__Testimonial--hasLink___U6yF2{row-gap:var(--base-size-48)}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__quoteWrapper___vcgUf{gap:var(--base-size-48);grid-area:1/1}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__media___rvn7k{gap:var(--base-size-32);grid-area:1/2;width:312px}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY.Primer_Brand__Testimonial-module__Testimonial--hasLink___U6yF2 .Primer_Brand__Testimonial-module__Testimonial__media___rvn7k{grid-row:1/span 2}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-caption___8c_KF{padding-block-start:var(--base-size-24)}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-quote___xbxri{font-size:var(--base-size-32)}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-link___kK8cZ{grid-area:2/1}}@media screen and (width>=80rem){.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY{padding-inline:0}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-avatar___kWqMQ{width:var(--base-size-48);height:var(--base-size-48)}}.Primer_Brand__Testimonial-module__Testimonial-link___kK8cZ{margin-top:var(--base-size-8)}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-link___kK8cZ{align-self:flex-start;width:fit-content;margin-top:0}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--default___wRFiA{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-default);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-default)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--blue___65lEG{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-blue);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-blue)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--blue-purple___HZ6wp{--brand-Testimonial-quoteMarkColor-start:var(--brand-Testimonial-quoteMarkColor-blue-purple-start);--brand-Testimonial-quoteMarkColor-end:var(--brand-Testimonial-quoteMarkColor-blue-purple-end);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-blue-purple)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--coral___zCLpT{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-coral);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-coral)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--green___zmlvZ{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-green);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-green)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--green-blue___Q0gxM{--brand-Testimonial-quoteMarkColor-start:var(--brand-Testimonial-quoteMarkColor-green-blue-start);--brand-Testimonial-quoteMarkColor-end:var(--brand-Testimonial-quoteMarkColor-green-blue-end);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-green-blue)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--gray___18cS4{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-gray);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-gray)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--indigo___GDdwu{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-indigo);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-indigo)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--lemon___SbBQ4{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-lemon);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-lemon)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--lime___jzEWj{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-lime);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-lime)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--orange___Mk2Ix{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-orange);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-orange)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--pink____Y7MC{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-pink);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-pink)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--pink-blue___VQftN{--brand-Testimonial-quoteMarkColor-start:var(--brand-Testimonial-quoteMarkColor-pink-blue-start);--brand-Testimonial-quoteMarkColor-end:var(--brand-Testimonial-quoteMarkColor-pink-blue-end);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-pink-blue)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--purple___TMw0P{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-purple);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-purple)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--purple-red___f1bgK{--brand-Testimonial-quoteMarkColor-start:var(--brand-Testimonial-quoteMarkColor-purple-red-start);--brand-Testimonial-quoteMarkColor-end:var(--brand-Testimonial-quoteMarkColor-purple-red-end);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-purple-red)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--red___rbO_z{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-red);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-red)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--red-orange___pm_dh{--brand-Testimonial-quoteMarkColor-start:var(--brand-Testimonial-quoteMarkColor-red-orange-start);--brand-Testimonial-quoteMarkColor-end:var(--brand-Testimonial-quoteMarkColor-red-orange-end);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-red-orange)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--teal___S_1eT{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-teal);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-teal)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--yellow___W8v__{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-yellow);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-yellow)}
1
+ .Primer_Brand__Testimonial-module__Testimonial___kxB6R{color:var(--brand-color-text-default);font-family:var(--brand-fontStack-sansSerif)}.Primer_Brand__Testimonial-module__Testimonial--variant-subtle___rmjBe,.Primer_Brand__Testimonial-module__Testimonial--variant-default___uNm5S{border-radius:var(--brand-borderRadius-xlarge);padding:var(--base-size-48) var(--base-size-32);position:relative}@media screen and (width>=48rem){.Primer_Brand__Testimonial-module__Testimonial--variant-subtle___rmjBe,.Primer_Brand__Testimonial-module__Testimonial--variant-default___uNm5S{padding:var(--base-size-48)}}@media screen and (width>=63.25rem){.Primer_Brand__Testimonial-module__Testimonial--variant-subtle___rmjBe.Primer_Brand__Testimonial-module__Testimonial--size-large___NH7Vg,.Primer_Brand__Testimonial-module__Testimonial--variant-default___uNm5S.Primer_Brand__Testimonial-module__Testimonial--size-large___NH7Vg{padding:var(--base-size-96) var(--base-size-128)}}.Primer_Brand__Testimonial-module__Testimonial--variant-subtle___rmjBe{background-color:var(--brand-color-canvas-subtle)}.Primer_Brand__Testimonial-module__Testimonial--variant-default___uNm5S{background-color:var(--brand-color-canvas-default)}.Primer_Brand__Testimonial-module__Testimonial--variant-subtle___rmjBe:before,.Primer_Brand__Testimonial-module__Testimonial--variant-default___uNm5S:before{pointer-events:none;content:"";border-radius:inherit;position:absolute;inset:0}.Primer_Brand__Testimonial-module__Testimonial--variant-subtle___rmjBe.Primer_Brand__Testimonial-module__Testimonial--border___pbUPS:before{-webkit-mask-image:var(--brand-Testimonial-borderMask-subtle);-webkit-mask-image:var(--brand-Testimonial-borderMask-subtle);mask-image:var(--brand-Testimonial-borderMask-subtle);border:var(--brand-borderWidth-thin) solid var(--brand-color-border-default)}.Primer_Brand__Testimonial-module__Testimonial--variant-default___uNm5S.Primer_Brand__Testimonial-module__Testimonial--border___pbUPS:before{-webkit-mask-image:var(--brand-Testimonial-borderMask-default);-webkit-mask-image:var(--brand-Testimonial-borderMask-default);mask-image:var(--brand-Testimonial-borderMask-default);border:var(--brand-borderWidth-thin) solid var(--brand-color-border-default)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark___sC3I2{--brand-Testimonial-quoteMarkColor-gradient:radial-gradient(circle at top left, var(--brand-Testimonial-quoteMarkColor-start), var(--brand-Testimonial-quoteMarkColor-end));--brand-Testimonial-quoteMarkColor-background:var(--brand-Testimonial-quoteMarkColor-gradient,var(--brand-Testimonial-quoteMarkColor,currentColor));color:var(--brand-Testimonial-quoteMarkColor-start,var(--brand-Testimonial-quoteMarkColor,currentColor));font-size:var(--base-size-48);line-height:var(--base-size-48);font-weight:var(--base-text-weight-extrabold);position:relative}.Primer_Brand__Testimonial-module__Testimonial__quoteMark___sC3I2:before{content:"";background:var(--brand-Testimonial-quoteMarkColor-background);-webkit-mask:linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default)) content-box, linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default));-webkit-mask:linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default)) content-box, linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default));mask:linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default)) content-box, linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default));-webkit-mask-composite:xor;position:absolute;inset:0;-webkit-mask-composite:xor;mask-composite:exclude}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--hasBackground___AUVX2{width:calc(var(--base-size-48) + var(--base-size-8));height:calc(var(--base-size-48) + var(--base-size-8));border-radius:var(--base-size-12);background-color:var(--brand-Testimonial-quoteMarkBackground,var(--base-color-scale-gray-0));font-size:var(--base-size-64);justify-content:center;align-items:center;line-height:1;display:inline-flex}.Primer_Brand__Testimonial-module__Testimonial--size-large___NH7Vg .Primer_Brand__Testimonial-module__Testimonial__quoteMark___sC3I2:not(.Primer_Brand__Testimonial-module__Testimonial__quoteMark--hasBackground___AUVX2){font-size:7.5rem;line-height:1}.Primer_Brand__Testimonial-module__Testimonial__quoteMarkGlyph___1eZ5L{display:block}.Primer_Brand__Testimonial-module__Testimonial-quote___xbxri{font-family:var(--brand-fontStack-sansSerif);font-size:var(--brand-Testimonial-quote-fontSize-default);font-weight:var(--brand-Testimonial-quote-fontWeight-default);letter-spacing:var(--brand-Testimonial-quote-letterSpacing-default);line-height:1.2;display:block}.Primer_Brand__Testimonial-module__Testimonial--size-large___NH7Vg .Primer_Brand__Testimonial-module__Testimonial-quote___xbxri{font-size:var(--brand-Testimonial-quote-fontSize-large);font-weight:var(--brand-Testimonial-quote-fontWeight-large);letter-spacing:var(--brand-Testimonial-quote-letterSpacing-large)}.Primer_Brand__Testimonial-module__Testimonial-quote___xbxri em,.Primer_Brand__Testimonial-module__Testimonial-quote___xbxri b{color:var(--brand-Testimonial-quote-color-emphasis);font-style:normal;font-weight:inherit}.Primer_Brand__Testimonial-module__Testimonial__media___rvn7k{gap:var(--base-size-16);margin-top:var(--base-size-24);align-items:center;display:flex}.Primer_Brand__Testimonial-module__Testimonial-logo-image___rpGVd{display:block}.Primer_Brand__Testimonial-module__Testimonial--size-large___NH7Vg .Primer_Brand__Testimonial-module__Testimonial__media___rvn7k{margin-top:var(--base-size-64)}.Primer_Brand__Testimonial-module__Testimonial-caption___8c_KF{flex-direction:column;display:flex}.Primer_Brand__Testimonial-module__Testimonial-avatar___kWqMQ{flex:none}.Primer_Brand__Testimonial-module__Testimonial-from___XLpqj{font-weight:var(--base-text-weight-normal);text-transform:uppercase}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY{gap:var(--base-size-36);width:100%;max-width:1176px;padding-inline:var(--base-size-20);padding-block:var(--base-size-40);flex-direction:column;display:flex}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__quoteWrapper___vcgUf{align-items:flex-start;gap:var(--base-size-36);flex-direction:column;min-width:0;display:flex}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__media___rvn7k{align-items:flex-start;gap:var(--base-size-28);flex-direction:column;width:100%;margin-block-start:0}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-avatar___kWqMQ{width:var(--base-size-40);height:var(--base-size-40)}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-caption___8c_KF{border-block-start:var(--brand-borderWidth-thin) solid var(--brand-color-border-default);gap:var(--base-size-6);width:100%;padding-block-start:var(--base-size-20)}@media screen and (width>=48rem){.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__quoteWrapper___vcgUf{gap:var(--base-size-40)}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__media___rvn7k{width:356px}}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-from___XLpqj{font-family:var(--brand-fontStack-monospace);font-size:var(--brand-text-size-100);font-weight:var(--brand-heading-weight-500);line-height:var(--brand-text-lineHeight-100);text-transform:uppercase;letter-spacing:.0107em;align-items:center;display:flex}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-position____jQ17{font-size:var(--brand-text-size-200);font-weight:var(--base-text-weight-normal);letter-spacing:.01em;line-height:1.6}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__quoteMark___sC3I2{font-family:var(--brand-fontStack-monospace);font-weight:var(--brand-fontWeight-300)}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__quoteMarkGlyph___1eZ5L{transform:translateY(var(--base-size-12))}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__quoteMark___sC3I2:not(.Primer_Brand__Testimonial-module__Testimonial__quoteMark--hasBackground___AUVX2){margin-left:-.18em}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-quote___xbxri{font-family:var(--brand-fontStack-monospace);letter-spacing:-.01em;font-size:1.5rem;font-weight:425;line-height:var(--brand-text-lineHeight-100);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media screen and (width>=48rem){.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY{max-width:618px;padding-inline:var(--base-size-36);padding-block:var(--base-size-44);margin-inline:auto}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-quote___xbxri{letter-spacing:-.02em;font-size:1.625rem}}@media screen and (width>=63.25rem){.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY{grid-column-gap:calc(var(--base-size-96) + var(--base-size-24));-moz-column-gap:calc(var(--base-size-96) + var(--base-size-24));column-gap:calc(var(--base-size-96) + var(--base-size-24));max-width:1176px;padding-inline:var(--base-size-48);padding-block:var(--base-size-88);grid-template-columns:minmax(0,744px) 312px;align-items:end;margin-inline:auto;display:grid}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY.Primer_Brand__Testimonial-module__Testimonial--hasLink___U6yF2{row-gap:var(--base-size-48)}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__quoteWrapper___vcgUf{gap:var(--base-size-48);grid-area:1/1}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial__media___rvn7k{gap:var(--base-size-32);grid-area:1/2;width:312px}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY.Primer_Brand__Testimonial-module__Testimonial--hasLink___U6yF2 .Primer_Brand__Testimonial-module__Testimonial__media___rvn7k{grid-row:1/span 2}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-caption___8c_KF{padding-block-start:var(--base-size-24)}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-quote___xbxri{font-size:var(--base-size-32)}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-link___kK8cZ{grid-area:2/1}}@media screen and (width>=80rem){.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY{padding-inline:0}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-avatar___kWqMQ{width:var(--base-size-48);height:var(--base-size-48)}}.Primer_Brand__Testimonial-module__Testimonial-link___kK8cZ{margin-top:var(--base-size-8)}.Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY .Primer_Brand__Testimonial-module__Testimonial-link___kK8cZ{align-self:flex-start;width:fit-content;margin-top:0}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--default___wRFiA{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-default);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-default)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--blue___65lEG{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-blue);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-blue)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--blue-purple___HZ6wp{--brand-Testimonial-quoteMarkColor-start:var(--brand-Testimonial-quoteMarkColor-blue-purple-start);--brand-Testimonial-quoteMarkColor-end:var(--brand-Testimonial-quoteMarkColor-blue-purple-end);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-blue-purple)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--coral___zCLpT{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-coral);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-coral)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--green___zmlvZ{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-green);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-green)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--green-blue___Q0gxM{--brand-Testimonial-quoteMarkColor-start:var(--brand-Testimonial-quoteMarkColor-green-blue-start);--brand-Testimonial-quoteMarkColor-end:var(--brand-Testimonial-quoteMarkColor-green-blue-end);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-green-blue)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--gray___18cS4{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-gray);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-gray)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--indigo___GDdwu{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-indigo);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-indigo)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--lemon___SbBQ4{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-lemon);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-lemon)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--lime___jzEWj{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-lime);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-lime)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--orange___Mk2Ix{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-orange);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-orange)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--pink____Y7MC{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-pink);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-pink)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--pink-blue___VQftN{--brand-Testimonial-quoteMarkColor-start:var(--brand-Testimonial-quoteMarkColor-pink-blue-start);--brand-Testimonial-quoteMarkColor-end:var(--brand-Testimonial-quoteMarkColor-pink-blue-end);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-pink-blue)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--purple___TMw0P{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-purple);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-purple)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--purple-red___f1bgK{--brand-Testimonial-quoteMarkColor-start:var(--brand-Testimonial-quoteMarkColor-purple-red-start);--brand-Testimonial-quoteMarkColor-end:var(--brand-Testimonial-quoteMarkColor-purple-red-end);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-purple-red)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--red___rbO_z{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-red);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-red)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--red-orange___pm_dh{--brand-Testimonial-quoteMarkColor-start:var(--brand-Testimonial-quoteMarkColor-red-orange-start);--brand-Testimonial-quoteMarkColor-end:var(--brand-Testimonial-quoteMarkColor-red-orange-end);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-red-orange)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--teal___S_1eT{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-teal);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-teal)}.Primer_Brand__Testimonial-module__Testimonial__quoteMark--yellow___W8v__{--brand-Testimonial-quoteMarkColor:var(--brand-Testimonial-quoteMarkColor-yellow);--brand-Testimonial-quoteMarkBackground:var(--brand-Testimonial-quoteMarkBackground-yellow)}
@@ -1,4 +1,4 @@
1
- import './Testimonial.module-BEV0y2jl.css';//#region src/Testimonial/Testimonial.module.css
1
+ import './Testimonial.module-_jTJvM-4.css';//#region src/Testimonial/Testimonial.module.css
2
2
  var e = "Primer_Brand__Testimonial-module__Testimonial___kxB6R", t = "Primer_Brand__Testimonial-module__Testimonial__quoteMark___sC3I2", n = "Primer_Brand__Testimonial-module__Testimonial__quoteMarkGlyph___1eZ5L", r = "Primer_Brand__Testimonial-module__Testimonial__media___rvn7k", i = "Primer_Brand__Testimonial-module__Testimonial__quoteWrapper___vcgUf", a = {
3
3
  Testimonial: e,
4
4
  "Testimonial--variant-subtle": "Primer_Brand__Testimonial-module__Testimonial--variant-subtle___rmjBe",
@@ -1 +1 @@
1
- {"version":3,"file":"Testimonial.module.js","names":[],"sources":["../../src/Testimonial/Testimonial.module.css"],"sourcesContent":[".Testimonial {\n color: var(--brand-color-text-default);\n font-family: var(--brand-fontStack-sansSerif);\n}\n\n.Testimonial--variant-subtle,\n.Testimonial--variant-default {\n position: relative;\n border-radius: var(--brand-borderRadius-xlarge);\n padding: var(--base-size-48) var(--base-size-32);\n}\n\n@media screen and (min-width: 48rem) {\n .Testimonial--variant-subtle,\n .Testimonial--variant-default {\n padding: var(--base-size-48);\n }\n}\n\n@media screen and (min-width: 63.25rem) {\n .Testimonial--variant-subtle.Testimonial--size-large,\n .Testimonial--variant-default.Testimonial--size-large {\n padding: var(--base-size-96) var(--base-size-128);\n }\n}\n\n.Testimonial--variant-subtle {\n background-color: var(--brand-color-canvas-subtle);\n}\n\n.Testimonial--variant-default {\n background-color: var(--brand-color-canvas-default);\n}\n\n.Testimonial--variant-subtle::before,\n.Testimonial--variant-default::before {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n pointer-events: none;\n content: '';\n border-radius: inherit;\n}\n\n.Testimonial--variant-subtle.Testimonial--border::before {\n mask-image: var(--brand-Testimonial-borderMask-subtle);\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-default);\n}\n\n.Testimonial--variant-default.Testimonial--border::before {\n mask-image: var(--brand-Testimonial-borderMask-default);\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-default);\n}\n\n.Testimonial__quoteMark {\n --brand-Testimonial-quoteMarkColor-gradient: radial-gradient(\n circle at top left,\n var(--brand-Testimonial-quoteMarkColor-start),\n var(--brand-Testimonial-quoteMarkColor-end)\n );\n --brand-Testimonial-quoteMarkColor-background: var(\n --brand-Testimonial-quoteMarkColor-gradient,\n var(--brand-Testimonial-quoteMarkColor, currentColor)\n );\n color: var(--brand-Testimonial-quoteMarkColor-start, var(--brand-Testimonial-quoteMarkColor, currentColor));\n font-size: var(--base-size-48);\n line-height: var(--base-size-48);\n font-weight: var(--base-text-weight-extrabold);\n position: relative;\n}\n\n.Testimonial__quoteMark::before {\n content: '';\n position: absolute;\n inset: 0;\n background: var(--brand-Testimonial-quoteMarkColor-background);\n -webkit-mask: linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default)) content-box,\n linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default));\n mask: linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default)) content-box,\n linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default));\n -webkit-mask-composite: xor;\n mask-composite: exclude;\n}\n\n.Testimonial__quoteMark--hasBackground {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: calc(var(--base-size-48) + var(--base-size-8));\n height: calc(var(--base-size-48) + var(--base-size-8));\n border-radius: var(--base-size-12);\n background-color: var(--brand-Testimonial-quoteMarkBackground, var(--base-color-scale-gray-0));\n font-size: var(--base-size-64);\n line-height: 1;\n}\n\n.Testimonial--size-large .Testimonial__quoteMark:not(.Testimonial__quoteMark--hasBackground) {\n font-size: 7.5rem; /* 120px */\n line-height: 1;\n}\n\n.Testimonial__quoteMarkGlyph {\n display: block;\n}\n\n.Testimonial-quote {\n font-family: var(--brand-fontStack-sansSerif);\n font-size: var(--brand-Testimonial-quote-fontSize-default);\n font-weight: var(--brand-Testimonial-quote-fontWeight-default);\n letter-spacing: var(--brand-Testimonial-quote-letterSpacing-default);\n line-height: 1.2; /* requires custom line-height */\n display: block;\n}\n\n.Testimonial--size-large .Testimonial-quote {\n font-size: var(--brand-Testimonial-quote-fontSize-large);\n font-weight: var(--brand-Testimonial-quote-fontWeight-large);\n letter-spacing: var(--brand-Testimonial-quote-letterSpacing-large);\n}\n\n.Testimonial-quote em,\n.Testimonial-quote b {\n color: var(--brand-Testimonial-quote-color-emphasis);\n font-style: normal;\n font-weight: inherit;\n}\n\n.Testimonial__media {\n display: flex;\n gap: var(--base-size-16);\n align-items: center;\n margin-top: var(--base-size-24);\n}\n\n.Testimonial-logo-image {\n display: block;\n}\n\n.Testimonial--size-large .Testimonial__media {\n margin-top: var(--base-size-64);\n}\n\n.Testimonial-caption {\n display: flex;\n flex-direction: column;\n}\n\n.Testimonial-avatar {\n flex: none;\n}\n\n.Testimonial-from {\n font-weight: var(--base-text-weight-normal);\n text-transform: uppercase;\n}\n\n/* Expressive variant */\n.Testimonial--variant-expressive {\n display: flex;\n flex-direction: column;\n gap: var(--base-size-36);\n width: 100%;\n max-width: 1176px;\n padding-inline: var(--base-size-20);\n padding-block: var(--base-size-40);\n}\n\n.Testimonial--variant-expressive .Testimonial__quoteWrapper {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--base-size-36);\n min-width: 0;\n}\n\n.Testimonial--variant-expressive .Testimonial__media {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--base-size-28);\n margin-block-start: 0;\n width: 100%;\n}\n\n.Testimonial--variant-expressive .Testimonial-avatar {\n width: var(--base-size-40);\n height: var(--base-size-40);\n}\n\n.Testimonial--variant-expressive .Testimonial-caption {\n border-block-start: var(--brand-borderWidth-thin) solid var(--brand-color-border-default);\n padding-block-start: var(--base-size-20);\n width: 100%;\n gap: var(--base-size-6);\n}\n\n@media screen and (min-width: 48rem) {\n .Testimonial--variant-expressive .Testimonial__quoteWrapper {\n gap: var(--base-size-40);\n }\n\n .Testimonial--variant-expressive .Testimonial__media {\n width: 356px;\n }\n}\n\n.Testimonial--variant-expressive .Testimonial-from {\n display: flex;\n align-items: center;\n gap: calc(var(--base-size-8) + var(--base-size-2));\n font-family: var(--brand-fontStack-monospace);\n font-size: var(--brand-text-size-100);\n font-weight: var(--brand-heading-weight-500);\n line-height: var(--brand-text-lineHeight-100);\n text-transform: uppercase;\n letter-spacing: 0.0107em;\n}\n\n.Testimonial--variant-expressive .Testimonial-from::before {\n content: '';\n display: inline-block;\n width: 0.5625rem;\n height: 0.875rem;\n background-color: var(--brand-color-text-emphasized);\n flex-shrink: 0;\n}\n\n.Testimonial--variant-expressive .Testimonial-position {\n font-size: var(--brand-text-size-200);\n font-weight: var(--base-text-weight-normal);\n line-height: 1.6;\n letter-spacing: 0.01em;\n}\n\n.Testimonial--variant-expressive .Testimonial__quoteMark {\n font-family: var(--brand-fontStack-monospace);\n font-weight: var(--brand-fontWeight-300);\n}\n\n.Testimonial--variant-expressive .Testimonial__quoteMarkGlyph {\n transform: translateY(var(--base-size-12));\n}\n\n.Testimonial--variant-expressive .Testimonial__quoteMark:not(.Testimonial__quoteMark--hasBackground) {\n margin-left: -0.18em;\n}\n\n.Testimonial--variant-expressive .Testimonial-quote {\n font-family: var(--brand-fontStack-monospace);\n font-size: 1.5rem;\n font-weight: 425;\n letter-spacing: -0.01em;\n line-height: var(--brand-text-lineHeight-100);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n@media screen and (min-width: 48rem) {\n .Testimonial--variant-expressive {\n max-width: 618px;\n margin-inline: auto;\n padding-inline: var(--base-size-36);\n padding-block: var(--base-size-44);\n }\n .Testimonial--variant-expressive .Testimonial-quote {\n font-size: 1.625rem;\n letter-spacing: -0.02em;\n }\n}\n\n@media screen and (min-width: 63.25rem) {\n .Testimonial--variant-expressive {\n display: grid;\n grid-template-columns: minmax(0, 744px) 312px;\n column-gap: calc(var(--base-size-96) + var(--base-size-24));\n align-items: end;\n max-width: 1176px;\n margin-inline: auto;\n padding-inline: var(--base-size-48);\n padding-block: var(--base-size-88);\n }\n\n .Testimonial--variant-expressive.Testimonial--hasLink {\n row-gap: var(--base-size-48);\n }\n\n .Testimonial--variant-expressive .Testimonial__quoteWrapper {\n grid-column: 1;\n grid-row: 1;\n gap: var(--base-size-48);\n }\n\n .Testimonial--variant-expressive .Testimonial__media {\n grid-column: 2;\n grid-row: 1;\n width: 312px;\n gap: var(--base-size-32);\n }\n\n .Testimonial--variant-expressive.Testimonial--hasLink .Testimonial__media {\n grid-row: 1 / span 2;\n }\n\n .Testimonial--variant-expressive .Testimonial-caption {\n padding-block-start: var(--base-size-24);\n }\n\n .Testimonial--variant-expressive .Testimonial-quote {\n font-size: var(--base-size-32);\n }\n\n .Testimonial--variant-expressive .Testimonial-link {\n grid-column: 1;\n grid-row: 2;\n }\n}\n\n@media screen and (min-width: 80rem) {\n .Testimonial--variant-expressive {\n padding-inline: 0;\n }\n\n .Testimonial--variant-expressive .Testimonial-avatar {\n width: var(--base-size-48);\n height: var(--base-size-48);\n }\n}\n\n.Testimonial-link {\n margin-top: var(--base-size-8);\n}\n\n.Testimonial--variant-expressive .Testimonial-link {\n align-self: flex-start;\n width: fit-content;\n margin-top: 0;\n}\n\n.Testimonial__quoteMark--default {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-default);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-default);\n}\n\n.Testimonial__quoteMark--blue {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-blue);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-blue);\n}\n\n.Testimonial__quoteMark--blue-purple {\n --brand-Testimonial-quoteMarkColor-start: var(--brand-Testimonial-quoteMarkColor-blue-purple-start);\n --brand-Testimonial-quoteMarkColor-end: var(--brand-Testimonial-quoteMarkColor-blue-purple-end);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-blue-purple);\n}\n\n.Testimonial__quoteMark--coral {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-coral);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-coral);\n}\n\n.Testimonial__quoteMark--green {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-green);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-green);\n}\n\n.Testimonial__quoteMark--green-blue {\n --brand-Testimonial-quoteMarkColor-start: var(--brand-Testimonial-quoteMarkColor-green-blue-start);\n --brand-Testimonial-quoteMarkColor-end: var(--brand-Testimonial-quoteMarkColor-green-blue-end);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-green-blue);\n}\n\n.Testimonial__quoteMark--gray {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-gray);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-gray);\n}\n\n.Testimonial__quoteMark--indigo {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-indigo);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-indigo);\n}\n\n.Testimonial__quoteMark--lemon {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-lemon);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-lemon);\n}\n\n.Testimonial__quoteMark--lime {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-lime);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-lime);\n}\n\n.Testimonial__quoteMark--orange {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-orange);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-orange);\n}\n\n.Testimonial__quoteMark--pink {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-pink);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-pink);\n}\n\n.Testimonial__quoteMark--pink-blue {\n --brand-Testimonial-quoteMarkColor-start: var(--brand-Testimonial-quoteMarkColor-pink-blue-start);\n --brand-Testimonial-quoteMarkColor-end: var(--brand-Testimonial-quoteMarkColor-pink-blue-end);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-pink-blue);\n}\n\n.Testimonial__quoteMark--purple {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-purple);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-purple);\n}\n\n.Testimonial__quoteMark--purple-red {\n --brand-Testimonial-quoteMarkColor-start: var(--brand-Testimonial-quoteMarkColor-purple-red-start);\n --brand-Testimonial-quoteMarkColor-end: var(--brand-Testimonial-quoteMarkColor-purple-red-end);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-purple-red);\n}\n\n.Testimonial__quoteMark--red {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-red);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-red);\n}\n\n.Testimonial__quoteMark--red-orange {\n --brand-Testimonial-quoteMarkColor-start: var(--brand-Testimonial-quoteMarkColor-red-orange-start);\n --brand-Testimonial-quoteMarkColor-end: var(--brand-Testimonial-quoteMarkColor-red-orange-end);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-red-orange);\n}\n\n.Testimonial__quoteMark--teal {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-teal);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-teal);\n}\n\n.Testimonial__quoteMark--yellow {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-yellow);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-yellow);\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Testimonial.module.js","names":[],"sources":["../../src/Testimonial/Testimonial.module.css"],"sourcesContent":[".Testimonial {\n color: var(--brand-color-text-default);\n font-family: var(--brand-fontStack-sansSerif);\n}\n\n.Testimonial--variant-subtle,\n.Testimonial--variant-default {\n position: relative;\n border-radius: var(--brand-borderRadius-xlarge);\n padding: var(--base-size-48) var(--base-size-32);\n}\n\n@media screen and (min-width: 48rem) {\n .Testimonial--variant-subtle,\n .Testimonial--variant-default {\n padding: var(--base-size-48);\n }\n}\n\n@media screen and (min-width: 63.25rem) {\n .Testimonial--variant-subtle.Testimonial--size-large,\n .Testimonial--variant-default.Testimonial--size-large {\n padding: var(--base-size-96) var(--base-size-128);\n }\n}\n\n.Testimonial--variant-subtle {\n background-color: var(--brand-color-canvas-subtle);\n}\n\n.Testimonial--variant-default {\n background-color: var(--brand-color-canvas-default);\n}\n\n.Testimonial--variant-subtle::before,\n.Testimonial--variant-default::before {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n pointer-events: none;\n content: '';\n border-radius: inherit;\n}\n\n.Testimonial--variant-subtle.Testimonial--border::before {\n mask-image: var(--brand-Testimonial-borderMask-subtle);\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-default);\n}\n\n.Testimonial--variant-default.Testimonial--border::before {\n mask-image: var(--brand-Testimonial-borderMask-default);\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-default);\n}\n\n.Testimonial__quoteMark {\n --brand-Testimonial-quoteMarkColor-gradient: radial-gradient(\n circle at top left,\n var(--brand-Testimonial-quoteMarkColor-start),\n var(--brand-Testimonial-quoteMarkColor-end)\n );\n --brand-Testimonial-quoteMarkColor-background: var(\n --brand-Testimonial-quoteMarkColor-gradient,\n var(--brand-Testimonial-quoteMarkColor, currentColor)\n );\n color: var(--brand-Testimonial-quoteMarkColor-start, var(--brand-Testimonial-quoteMarkColor, currentColor));\n font-size: var(--base-size-48);\n line-height: var(--base-size-48);\n font-weight: var(--base-text-weight-extrabold);\n position: relative;\n}\n\n.Testimonial__quoteMark::before {\n content: '';\n position: absolute;\n inset: 0;\n background: var(--brand-Testimonial-quoteMarkColor-background);\n -webkit-mask: linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default)) content-box,\n linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default));\n mask: linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default)) content-box,\n linear-gradient(var(--brand-color-canvas-default), var(--brand-color-canvas-default));\n -webkit-mask-composite: xor;\n mask-composite: exclude;\n}\n\n.Testimonial__quoteMark--hasBackground {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: calc(var(--base-size-48) + var(--base-size-8));\n height: calc(var(--base-size-48) + var(--base-size-8));\n border-radius: var(--base-size-12);\n background-color: var(--brand-Testimonial-quoteMarkBackground, var(--base-color-scale-gray-0));\n font-size: var(--base-size-64);\n line-height: 1;\n}\n\n.Testimonial--size-large .Testimonial__quoteMark:not(.Testimonial__quoteMark--hasBackground) {\n font-size: 7.5rem; /* 120px */\n line-height: 1;\n}\n\n.Testimonial__quoteMarkGlyph {\n display: block;\n}\n\n.Testimonial-quote {\n font-family: var(--brand-fontStack-sansSerif);\n font-size: var(--brand-Testimonial-quote-fontSize-default);\n font-weight: var(--brand-Testimonial-quote-fontWeight-default);\n letter-spacing: var(--brand-Testimonial-quote-letterSpacing-default);\n line-height: 1.2; /* requires custom line-height */\n display: block;\n}\n\n.Testimonial--size-large .Testimonial-quote {\n font-size: var(--brand-Testimonial-quote-fontSize-large);\n font-weight: var(--brand-Testimonial-quote-fontWeight-large);\n letter-spacing: var(--brand-Testimonial-quote-letterSpacing-large);\n}\n\n.Testimonial-quote em,\n.Testimonial-quote b {\n color: var(--brand-Testimonial-quote-color-emphasis);\n font-style: normal;\n font-weight: inherit;\n}\n\n.Testimonial__media {\n display: flex;\n gap: var(--base-size-16);\n align-items: center;\n margin-top: var(--base-size-24);\n}\n\n.Testimonial-logo-image {\n display: block;\n}\n\n.Testimonial--size-large .Testimonial__media {\n margin-top: var(--base-size-64);\n}\n\n.Testimonial-caption {\n display: flex;\n flex-direction: column;\n}\n\n.Testimonial-avatar {\n flex: none;\n}\n\n.Testimonial-from {\n font-weight: var(--base-text-weight-normal);\n text-transform: uppercase;\n}\n\n/* Expressive variant */\n.Testimonial--variant-expressive {\n display: flex;\n flex-direction: column;\n gap: var(--base-size-36);\n width: 100%;\n max-width: 1176px;\n padding-inline: var(--base-size-20);\n padding-block: var(--base-size-40);\n}\n\n.Testimonial--variant-expressive .Testimonial__quoteWrapper {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--base-size-36);\n min-width: 0;\n}\n\n.Testimonial--variant-expressive .Testimonial__media {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--base-size-28);\n margin-block-start: 0;\n width: 100%;\n}\n\n.Testimonial--variant-expressive .Testimonial-avatar {\n width: var(--base-size-40);\n height: var(--base-size-40);\n}\n\n.Testimonial--variant-expressive .Testimonial-caption {\n border-block-start: var(--brand-borderWidth-thin) solid var(--brand-color-border-default);\n padding-block-start: var(--base-size-20);\n width: 100%;\n gap: var(--base-size-6);\n}\n\n@media screen and (min-width: 48rem) {\n .Testimonial--variant-expressive .Testimonial__quoteWrapper {\n gap: var(--base-size-40);\n }\n\n .Testimonial--variant-expressive .Testimonial__media {\n width: 356px;\n }\n}\n\n.Testimonial--variant-expressive .Testimonial-from {\n display: flex;\n align-items: center;\n font-family: var(--brand-fontStack-monospace);\n font-size: var(--brand-text-size-100);\n font-weight: var(--brand-heading-weight-500);\n line-height: var(--brand-text-lineHeight-100);\n text-transform: uppercase;\n letter-spacing: 0.0107em;\n}\n\n.Testimonial--variant-expressive .Testimonial-position {\n font-size: var(--brand-text-size-200);\n font-weight: var(--base-text-weight-normal);\n line-height: 1.6;\n letter-spacing: 0.01em;\n}\n\n.Testimonial--variant-expressive .Testimonial__quoteMark {\n font-family: var(--brand-fontStack-monospace);\n font-weight: var(--brand-fontWeight-300);\n}\n\n.Testimonial--variant-expressive .Testimonial__quoteMarkGlyph {\n transform: translateY(var(--base-size-12));\n}\n\n.Testimonial--variant-expressive .Testimonial__quoteMark:not(.Testimonial__quoteMark--hasBackground) {\n margin-left: -0.18em;\n}\n\n.Testimonial--variant-expressive .Testimonial-quote {\n font-family: var(--brand-fontStack-monospace);\n font-size: 1.5rem;\n font-weight: 425;\n letter-spacing: -0.01em;\n line-height: var(--brand-text-lineHeight-100);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n@media screen and (min-width: 48rem) {\n .Testimonial--variant-expressive {\n max-width: 618px;\n margin-inline: auto;\n padding-inline: var(--base-size-36);\n padding-block: var(--base-size-44);\n }\n .Testimonial--variant-expressive .Testimonial-quote {\n font-size: 1.625rem;\n letter-spacing: -0.02em;\n }\n}\n\n@media screen and (min-width: 63.25rem) {\n .Testimonial--variant-expressive {\n display: grid;\n grid-template-columns: minmax(0, 744px) 312px;\n column-gap: calc(var(--base-size-96) + var(--base-size-24));\n align-items: end;\n max-width: 1176px;\n margin-inline: auto;\n padding-inline: var(--base-size-48);\n padding-block: var(--base-size-88);\n }\n\n .Testimonial--variant-expressive.Testimonial--hasLink {\n row-gap: var(--base-size-48);\n }\n\n .Testimonial--variant-expressive .Testimonial__quoteWrapper {\n grid-column: 1;\n grid-row: 1;\n gap: var(--base-size-48);\n }\n\n .Testimonial--variant-expressive .Testimonial__media {\n grid-column: 2;\n grid-row: 1;\n width: 312px;\n gap: var(--base-size-32);\n }\n\n .Testimonial--variant-expressive.Testimonial--hasLink .Testimonial__media {\n grid-row: 1 / span 2;\n }\n\n .Testimonial--variant-expressive .Testimonial-caption {\n padding-block-start: var(--base-size-24);\n }\n\n .Testimonial--variant-expressive .Testimonial-quote {\n font-size: var(--base-size-32);\n }\n\n .Testimonial--variant-expressive .Testimonial-link {\n grid-column: 1;\n grid-row: 2;\n }\n}\n\n@media screen and (min-width: 80rem) {\n .Testimonial--variant-expressive {\n padding-inline: 0;\n }\n\n .Testimonial--variant-expressive .Testimonial-avatar {\n width: var(--base-size-48);\n height: var(--base-size-48);\n }\n}\n\n.Testimonial-link {\n margin-top: var(--base-size-8);\n}\n\n.Testimonial--variant-expressive .Testimonial-link {\n align-self: flex-start;\n width: fit-content;\n margin-top: 0;\n}\n\n.Testimonial__quoteMark--default {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-default);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-default);\n}\n\n.Testimonial__quoteMark--blue {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-blue);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-blue);\n}\n\n.Testimonial__quoteMark--blue-purple {\n --brand-Testimonial-quoteMarkColor-start: var(--brand-Testimonial-quoteMarkColor-blue-purple-start);\n --brand-Testimonial-quoteMarkColor-end: var(--brand-Testimonial-quoteMarkColor-blue-purple-end);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-blue-purple);\n}\n\n.Testimonial__quoteMark--coral {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-coral);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-coral);\n}\n\n.Testimonial__quoteMark--green {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-green);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-green);\n}\n\n.Testimonial__quoteMark--green-blue {\n --brand-Testimonial-quoteMarkColor-start: var(--brand-Testimonial-quoteMarkColor-green-blue-start);\n --brand-Testimonial-quoteMarkColor-end: var(--brand-Testimonial-quoteMarkColor-green-blue-end);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-green-blue);\n}\n\n.Testimonial__quoteMark--gray {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-gray);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-gray);\n}\n\n.Testimonial__quoteMark--indigo {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-indigo);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-indigo);\n}\n\n.Testimonial__quoteMark--lemon {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-lemon);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-lemon);\n}\n\n.Testimonial__quoteMark--lime {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-lime);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-lime);\n}\n\n.Testimonial__quoteMark--orange {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-orange);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-orange);\n}\n\n.Testimonial__quoteMark--pink {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-pink);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-pink);\n}\n\n.Testimonial__quoteMark--pink-blue {\n --brand-Testimonial-quoteMarkColor-start: var(--brand-Testimonial-quoteMarkColor-pink-blue-start);\n --brand-Testimonial-quoteMarkColor-end: var(--brand-Testimonial-quoteMarkColor-pink-blue-end);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-pink-blue);\n}\n\n.Testimonial__quoteMark--purple {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-purple);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-purple);\n}\n\n.Testimonial__quoteMark--purple-red {\n --brand-Testimonial-quoteMarkColor-start: var(--brand-Testimonial-quoteMarkColor-purple-red-start);\n --brand-Testimonial-quoteMarkColor-end: var(--brand-Testimonial-quoteMarkColor-purple-red-end);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-purple-red);\n}\n\n.Testimonial__quoteMark--red {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-red);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-red);\n}\n\n.Testimonial__quoteMark--red-orange {\n --brand-Testimonial-quoteMarkColor-start: var(--brand-Testimonial-quoteMarkColor-red-orange-start);\n --brand-Testimonial-quoteMarkColor-end: var(--brand-Testimonial-quoteMarkColor-red-orange-end);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-red-orange);\n}\n\n.Testimonial__quoteMark--teal {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-teal);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-teal);\n}\n\n.Testimonial__quoteMark--yellow {\n --brand-Testimonial-quoteMarkColor: var(--brand-Testimonial-quoteMarkColor-yellow);\n --brand-Testimonial-quoteMarkBackground: var(--brand-Testimonial-quoteMarkBackground-yellow);\n}\n"],"mappings":""}
@@ -19,6 +19,7 @@ export type TextCursorAnimationProps = {
19
19
  ['data-testid']?: string;
20
20
  delay?: number;
21
21
  waitForPageLoad?: boolean;
22
+ animationTrigger?: 'immediate' | 'on-visible';
22
23
  } & React.HTMLAttributes<HTMLSpanElement> & Omit<TextProps, 'animate' | 'as'>;
23
- export declare function TextCursorAnimation({ children, className, animate, initialText, 'data-testid': testId, delay, waitForPageLoad, variant, }: PropsWithChildren<TextCursorAnimationProps>): React.JSX.Element;
24
+ export declare function TextCursorAnimation({ children, className, animate, initialText, 'data-testid': testId, delay, waitForPageLoad, animationTrigger, variant, }: PropsWithChildren<TextCursorAnimationProps>): React.JSX.Element;
24
25
  //# sourceMappingURL=TextCursorAnimation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextCursorAnimation.d.ts","sourceRoot":"","sources":["../../src/TextCursorAnimation/TextCursorAnimation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,iBAAiB,EAAC,MAAM,OAAO,CAAA;AAI9C,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAA;AAEtC,OAAO,4GAA4G,CAAA;AACnH,OAAO,yHAAyH,CAAA;AAIhI,eAAO,MAAM,OAAO;;;;CAQnB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,GAAG,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,GACvC,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC,CAAA;AAEnC,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,SAAS,EACT,OAAO,EACP,WAAW,EACX,aAAa,EAAE,MAAM,EACrB,KAAK,EACL,eAAsB,EACtB,OAAiB,GAClB,EAAE,iBAAiB,CAAC,wBAAwB,CAAC,qBA+E7C"}
1
+ {"version":3,"file":"TextCursorAnimation.d.ts","sourceRoot":"","sources":["../../src/TextCursorAnimation/TextCursorAnimation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,iBAAiB,EAAS,MAAM,OAAO,CAAA;AAItD,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAA;AAEtC,OAAO,4GAA4G,CAAA;AACnH,OAAO,yHAAyH,CAAA;AAIhI,eAAO,MAAM,OAAO;;;;CAQnB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,gBAAgB,CAAC,EAAE,WAAW,GAAG,YAAY,CAAA;CAC9C,GAAG,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,GACvC,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC,CAAA;AAEnC,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,SAAS,EACT,OAAO,EACP,WAAW,EACX,aAAa,EAAE,MAAM,EACrB,KAAK,EACL,eAAsB,EACtB,gBAA8B,EAC9B,OAAiB,GAClB,EAAE,iBAAiB,CAAC,wBAAwB,CAAC,qBAoF7C"}
@@ -4,10 +4,10 @@ import { EyebrowText as n } from "../EyebrowText/EyebrowText.js";
4
4
  import '../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/colors-with-modes-BucKYl1n.css';import '../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/base-DKbXhPKv.css';/* empty css */
5
5
  /* empty css */
6
6
  import r from "./TextCursorAnimation.module.js";
7
- import "react";
8
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
7
+ import { useRef as i } from "react";
8
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
9
9
  //#region src/TextCursorAnimation/TextCursorAnimation.tsx
10
- var o = {
10
+ var s = {
11
11
  root: "TextCursorAnimation",
12
12
  get text() {
13
13
  return `${this.root}-text`;
@@ -16,63 +16,66 @@ var o = {
16
16
  return `${this.root}-cursor`;
17
17
  }
18
18
  };
19
- function s({ children: s, className: c, animate: l, initialText: u, "data-testid": d, delay: f, waitForPageLoad: p = !0, variant: m = "muted" }) {
20
- let h = typeof s == "string" ? s : "", { showCursor: g, visibleText: _, cursorPhase: v } = t({
21
- text: h,
22
- initialText: u,
23
- animate: l,
24
- delay: f,
25
- waitForPageLoad: p
26
- }), y = l === !0 && h.length > 0, b = h || s, x = {
19
+ function c({ children: c, className: l, animate: u, initialText: d, "data-testid": f, delay: p, waitForPageLoad: m = !0, animationTrigger: h = "immediate", variant: g = "muted" }) {
20
+ let _ = i(null), v = typeof c == "string" ? c : "", { showCursor: y, visibleText: b, cursorPhase: x } = t({
21
+ text: v,
22
+ initialText: d,
23
+ animate: u,
24
+ delay: p,
25
+ waitForPageLoad: m,
26
+ startOnIntersection: h === "on-visible",
27
+ intersectionRef: _
28
+ }), S = u === !0 && v.length > 0, C = v || c, w = {
27
29
  initial: r["TextCursorAnimation__cursor--initial"],
28
30
  correction: r["TextCursorAnimation__cursor--correction"],
29
31
  final: r["TextCursorAnimation__cursor--final"],
30
32
  complete: r["TextCursorAnimation__cursor--complete"]
31
- }[y ? v : "complete"];
32
- return /* @__PURE__ */ i("span", {
33
- className: e(r.TextCursorAnimation, c),
34
- "data-testid": d || o.root,
35
- children: /* @__PURE__ */ a("span", {
33
+ }[S ? x : "complete"], T = y ? /* @__PURE__ */ a("span", {
34
+ className: e(r.TextCursorAnimation__cursor, S && r["TextCursorAnimation__cursor--animated"], w),
35
+ "aria-hidden": "true",
36
+ "data-testid": s.cursor
37
+ }) : null;
38
+ return /* @__PURE__ */ a("span", {
39
+ ref: _,
40
+ className: e(r.TextCursorAnimation, l),
41
+ "data-testid": f || s.root,
42
+ children: /* @__PURE__ */ o("span", {
36
43
  className: r.TextCursorAnimation__inner,
37
- children: [y && /* @__PURE__ */ a("span", {
44
+ children: [S && /* @__PURE__ */ o("span", {
38
45
  className: r.TextCursorAnimation__sizingContainer,
39
- children: [/* @__PURE__ */ i(n, {
46
+ children: [/* @__PURE__ */ a(n, {
40
47
  size: "100",
41
- variant: m,
48
+ variant: g,
42
49
  font: "monospace",
43
50
  weight: "medium",
44
51
  className: e(r.TextCursorAnimation__text, r.TextCursorAnimation__sizingText),
45
- children: h
46
- }), u && u !== h && /* @__PURE__ */ i(n, {
52
+ children: v
53
+ }), d && d !== v && /* @__PURE__ */ a(n, {
47
54
  size: "100",
48
- variant: m,
55
+ variant: g,
49
56
  font: "monospace",
50
57
  weight: "medium",
51
58
  className: e(r.TextCursorAnimation__text, r.TextCursorAnimation__sizingText),
52
59
  "aria-hidden": "true",
53
- children: u
60
+ children: d
54
61
  })]
55
- }), /* @__PURE__ */ a("span", {
56
- className: e(r.TextCursorAnimation__content, y && r["TextCursorAnimation__content--animated"]),
57
- "aria-hidden": y ? "true" : void 0,
58
- children: [/* @__PURE__ */ i(n, {
62
+ }), /* @__PURE__ */ o("span", {
63
+ className: e(r.TextCursorAnimation__content, S && r["TextCursorAnimation__content--animated"]),
64
+ "aria-hidden": S ? "true" : void 0,
65
+ children: [/* @__PURE__ */ a(n, {
59
66
  size: "100",
60
- variant: m,
67
+ variant: g,
61
68
  font: "monospace",
62
69
  weight: "medium",
63
70
  className: r.TextCursorAnimation__text,
64
- "data-testid": o.text,
65
- children: y ? _ : b
66
- }), g && /* @__PURE__ */ i("span", {
67
- className: e(r.TextCursorAnimation__cursor, y && r["TextCursorAnimation__cursor--animated"], x),
68
- "aria-hidden": "true",
69
- "data-testid": o.cursor
70
- })]
71
+ "data-testid": s.text,
72
+ children: S ? b : C
73
+ }), T]
71
74
  })]
72
75
  })
73
76
  });
74
77
  }
75
78
  //#endregion
76
- export { s as TextCursorAnimation, o as testIds };
79
+ export { c as TextCursorAnimation, s as testIds };
77
80
 
78
81
  //# sourceMappingURL=TextCursorAnimation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextCursorAnimation.js","names":[],"sources":["../../src/TextCursorAnimation/TextCursorAnimation.tsx"],"sourcesContent":["import React, {PropsWithChildren} from 'react'\nimport {clsx} from 'clsx'\nimport {useCursorAnimation} from '../hooks/useCursorAnimation'\nimport {EyebrowText} from '../EyebrowText'\nimport {TextProps} from '../Text/Text'\n\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/base.css'\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/colors-with-modes.css'\n\nimport styles from './TextCursorAnimation.module.css'\n\nexport const testIds = {\n root: 'TextCursorAnimation',\n get text() {\n return `${this.root}-text`\n },\n get cursor() {\n return `${this.root}-cursor`\n },\n}\n\nexport type TextCursorAnimationProps = {\n /**\n * Whether to animate the text with a typing effect.\n */\n animate?: boolean\n /**\n * Optional text to type before transitioning to the final text\n */\n initialText?: string\n ['data-testid']?: string\n delay?: number\n waitForPageLoad?: boolean\n} & React.HTMLAttributes<HTMLSpanElement> &\n Omit<TextProps, 'animate' | 'as'>\n\nexport function TextCursorAnimation({\n children,\n className,\n animate,\n initialText,\n 'data-testid': testId,\n delay,\n waitForPageLoad = true,\n variant = 'muted',\n}: PropsWithChildren<TextCursorAnimationProps>) {\n const text = typeof children === 'string' ? children : ''\n const {showCursor, visibleText, cursorPhase} = useCursorAnimation({\n text,\n initialText,\n animate,\n delay,\n waitForPageLoad,\n })\n\n const hasAnimation = animate === true && text.length > 0\n const content = text || children\n const cursorPhaseClassName = {\n initial: styles['TextCursorAnimation__cursor--initial'],\n correction: styles['TextCursorAnimation__cursor--correction'],\n final: styles['TextCursorAnimation__cursor--final'],\n complete: styles['TextCursorAnimation__cursor--complete'],\n }[hasAnimation ? cursorPhase : 'complete']\n\n return (\n <span className={clsx(styles.TextCursorAnimation, className)} data-testid={testId || testIds.root}>\n <span className={styles.TextCursorAnimation__inner}>\n {hasAnimation && (\n <span className={styles.TextCursorAnimation__sizingContainer}>\n <EyebrowText\n size=\"100\"\n variant={variant}\n font=\"monospace\"\n weight=\"medium\"\n className={clsx(styles.TextCursorAnimation__text, styles.TextCursorAnimation__sizingText)}\n >\n {text}\n </EyebrowText>\n {initialText && initialText !== text && (\n <EyebrowText\n size=\"100\"\n variant={variant}\n font=\"monospace\"\n weight=\"medium\"\n className={clsx(styles.TextCursorAnimation__text, styles.TextCursorAnimation__sizingText)}\n aria-hidden=\"true\"\n >\n {initialText}\n </EyebrowText>\n )}\n </span>\n )}\n <span\n className={clsx(\n styles.TextCursorAnimation__content,\n hasAnimation && styles['TextCursorAnimation__content--animated'],\n )}\n aria-hidden={hasAnimation ? 'true' : undefined}\n >\n <EyebrowText\n size=\"100\"\n variant={variant}\n font=\"monospace\"\n weight=\"medium\"\n className={styles.TextCursorAnimation__text}\n data-testid={testIds.text}\n >\n {hasAnimation ? visibleText : content}\n </EyebrowText>\n {showCursor && (\n <span\n className={clsx(\n styles.TextCursorAnimation__cursor,\n hasAnimation && styles['TextCursorAnimation__cursor--animated'],\n cursorPhaseClassName,\n )}\n aria-hidden=\"true\"\n data-testid={testIds.cursor}\n />\n )}\n </span>\n </span>\n </span>\n )\n}\n"],"mappings":";;;;;;;;;AAWA,IAAa,IAAU;CACrB,MAAM;CACN,IAAI,OAAO;EACT,OAAO,GAAG,KAAK,KAAK;CACtB;CACA,IAAI,SAAS;EACX,OAAO,GAAG,KAAK,KAAK;CACtB;AACF;AAiBA,SAAgB,EAAoB,EAClC,aACA,cACA,YACA,gBACA,eAAe,GACf,UACA,qBAAkB,IAClB,aAAU,WACoC;CAC9C,IAAM,IAAO,OAAO,KAAa,WAAW,IAAW,IACjD,EAAC,eAAY,gBAAa,mBAAe,EAAmB;EAChE;EACA;EACA;EACA;EACA;CACF,CAAC,GAEK,IAAe,MAAY,MAAQ,EAAK,SAAS,GACjD,IAAU,KAAQ,GAClB,IAAuB;EAC3B,SAAS,EAAO;EAChB,YAAY,EAAO;EACnB,OAAO,EAAO;EACd,UAAU,EAAO;CACnB,EAAE,IAAe,IAAc;CAE/B,OACE,kBAAC,QAAD;EAAM,WAAW,EAAK,EAAO,qBAAqB,CAAS;EAAG,eAAa,KAAU,EAAQ;YAC3F,kBAAC,QAAD;GAAM,WAAW,EAAO;aAAxB,CACG,KACC,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAxB,CACE,kBAAC,GAAD;KACE,MAAK;KACI;KACT,MAAK;KACL,QAAO;KACP,WAAW,EAAK,EAAO,2BAA2B,EAAO,+BAA+B;eAEvF;IACU,CAAA,GACZ,KAAe,MAAgB,KAC9B,kBAAC,GAAD;KACE,MAAK;KACI;KACT,MAAK;KACL,QAAO;KACP,WAAW,EAAK,EAAO,2BAA2B,EAAO,+BAA+B;KACxF,eAAY;eAEX;IACU,CAAA,CAEX;OAER,kBAAC,QAAD;IACE,WAAW,EACT,EAAO,8BACP,KAAgB,EAAO,yCACzB;IACA,eAAa,IAAe,SAAS,KAAA;cALvC,CAOE,kBAAC,GAAD;KACE,MAAK;KACI;KACT,MAAK;KACL,QAAO;KACP,WAAW,EAAO;KAClB,eAAa,EAAQ;eAEpB,IAAe,IAAc;IACnB,CAAA,GACZ,KACC,kBAAC,QAAD;KACE,WAAW,EACT,EAAO,6BACP,KAAgB,EAAO,0CACvB,CACF;KACA,eAAY;KACZ,eAAa,EAAQ;IACtB,CAAA,CAEC;KACF;;CACF,CAAA;AAEV"}
1
+ {"version":3,"file":"TextCursorAnimation.js","names":[],"sources":["../../src/TextCursorAnimation/TextCursorAnimation.tsx"],"sourcesContent":["import React, {PropsWithChildren, useRef} from 'react'\nimport {clsx} from 'clsx'\nimport {useCursorAnimation} from '../hooks/useCursorAnimation'\nimport {EyebrowText} from '../EyebrowText'\nimport {TextProps} from '../Text/Text'\n\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/base.css'\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/colors-with-modes.css'\n\nimport styles from './TextCursorAnimation.module.css'\n\nexport const testIds = {\n root: 'TextCursorAnimation',\n get text() {\n return `${this.root}-text`\n },\n get cursor() {\n return `${this.root}-cursor`\n },\n}\n\nexport type TextCursorAnimationProps = {\n /**\n * Whether to animate the text with a typing effect.\n */\n animate?: boolean\n /**\n * Optional text to type before transitioning to the final text\n */\n initialText?: string\n ['data-testid']?: string\n delay?: number\n waitForPageLoad?: boolean\n animationTrigger?: 'immediate' | 'on-visible'\n} & React.HTMLAttributes<HTMLSpanElement> &\n Omit<TextProps, 'animate' | 'as'>\n\nexport function TextCursorAnimation({\n children,\n className,\n animate,\n initialText,\n 'data-testid': testId,\n delay,\n waitForPageLoad = true,\n animationTrigger = 'immediate',\n variant = 'muted',\n}: PropsWithChildren<TextCursorAnimationProps>) {\n const rootRef = useRef<HTMLSpanElement>(null)\n const text = typeof children === 'string' ? children : ''\n const {showCursor, visibleText, cursorPhase} = useCursorAnimation({\n text,\n initialText,\n animate,\n delay,\n waitForPageLoad,\n startOnIntersection: animationTrigger === 'on-visible',\n intersectionRef: rootRef,\n })\n\n const hasAnimation = animate === true && text.length > 0\n const content = text || children\n const cursorPhaseClassName = {\n initial: styles['TextCursorAnimation__cursor--initial'],\n correction: styles['TextCursorAnimation__cursor--correction'],\n final: styles['TextCursorAnimation__cursor--final'],\n complete: styles['TextCursorAnimation__cursor--complete'],\n }[hasAnimation ? cursorPhase : 'complete']\n\n const cursor = showCursor ? (\n <span\n className={clsx(\n styles.TextCursorAnimation__cursor,\n hasAnimation && styles['TextCursorAnimation__cursor--animated'],\n cursorPhaseClassName,\n )}\n aria-hidden=\"true\"\n data-testid={testIds.cursor}\n />\n ) : null\n\n return (\n <span ref={rootRef} className={clsx(styles.TextCursorAnimation, className)} data-testid={testId || testIds.root}>\n <span className={styles.TextCursorAnimation__inner}>\n {hasAnimation && (\n <span className={styles.TextCursorAnimation__sizingContainer}>\n <EyebrowText\n size=\"100\"\n variant={variant}\n font=\"monospace\"\n weight=\"medium\"\n className={clsx(styles.TextCursorAnimation__text, styles.TextCursorAnimation__sizingText)}\n >\n {text}\n </EyebrowText>\n {initialText && initialText !== text && (\n <EyebrowText\n size=\"100\"\n variant={variant}\n font=\"monospace\"\n weight=\"medium\"\n className={clsx(styles.TextCursorAnimation__text, styles.TextCursorAnimation__sizingText)}\n aria-hidden=\"true\"\n >\n {initialText}\n </EyebrowText>\n )}\n </span>\n )}\n <span\n className={clsx(\n styles.TextCursorAnimation__content,\n hasAnimation && styles['TextCursorAnimation__content--animated'],\n )}\n aria-hidden={hasAnimation ? 'true' : undefined}\n >\n <EyebrowText\n size=\"100\"\n variant={variant}\n font=\"monospace\"\n weight=\"medium\"\n className={styles.TextCursorAnimation__text}\n data-testid={testIds.text}\n >\n {hasAnimation ? visibleText : content}\n </EyebrowText>\n {cursor}\n </span>\n </span>\n </span>\n )\n}\n"],"mappings":";;;;;;;;;AAWA,IAAa,IAAU;CACrB,MAAM;CACN,IAAI,OAAO;EACT,OAAO,GAAG,KAAK,KAAK;CACtB;CACA,IAAI,SAAS;EACX,OAAO,GAAG,KAAK,KAAK;CACtB;AACF;AAkBA,SAAgB,EAAoB,EAClC,aACA,cACA,YACA,gBACA,eAAe,GACf,UACA,qBAAkB,IAClB,sBAAmB,aACnB,aAAU,WACoC;CAC9C,IAAM,IAAU,EAAwB,IAAI,GACtC,IAAO,OAAO,KAAa,WAAW,IAAW,IACjD,EAAC,eAAY,gBAAa,mBAAe,EAAmB;EAChE;EACA;EACA;EACA;EACA;EACA,qBAAqB,MAAqB;EAC1C,iBAAiB;CACnB,CAAC,GAEK,IAAe,MAAY,MAAQ,EAAK,SAAS,GACjD,IAAU,KAAQ,GAClB,IAAuB;EAC3B,SAAS,EAAO;EAChB,YAAY,EAAO;EACnB,OAAO,EAAO;EACd,UAAU,EAAO;CACnB,EAAE,IAAe,IAAc,aAEzB,IAAS,IACb,kBAAC,QAAD;EACE,WAAW,EACT,EAAO,6BACP,KAAgB,EAAO,0CACvB,CACF;EACA,eAAY;EACZ,eAAa,EAAQ;CACtB,CAAA,IACC;CAEJ,OACE,kBAAC,QAAD;EAAM,KAAK;EAAS,WAAW,EAAK,EAAO,qBAAqB,CAAS;EAAG,eAAa,KAAU,EAAQ;YACzG,kBAAC,QAAD;GAAM,WAAW,EAAO;aAAxB,CACG,KACC,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAxB,CACE,kBAAC,GAAD;KACE,MAAK;KACI;KACT,MAAK;KACL,QAAO;KACP,WAAW,EAAK,EAAO,2BAA2B,EAAO,+BAA+B;eAEvF;IACU,CAAA,GACZ,KAAe,MAAgB,KAC9B,kBAAC,GAAD;KACE,MAAK;KACI;KACT,MAAK;KACL,QAAO;KACP,WAAW,EAAK,EAAO,2BAA2B,EAAO,+BAA+B;KACxF,eAAY;eAEX;IACU,CAAA,CAEX;OAER,kBAAC,QAAD;IACE,WAAW,EACT,EAAO,8BACP,KAAgB,EAAO,yCACzB;IACA,eAAa,IAAe,SAAS,KAAA;cALvC,CAOE,kBAAC,GAAD;KACE,MAAK;KACI;KACT,MAAK;KACL,QAAO;KACP,WAAW,EAAO;KAClB,eAAa,EAAQ;eAEpB,IAAe,IAAc;IACnB,CAAA,GACZ,CACG;KACF;;CACF,CAAA;AAEV"}
@@ -0,0 +1 @@
1
+ .Primer_Brand__TextCursorAnimation-module__TextCursorAnimation___fMZNu{align-items:center;display:inline-flex}.Primer_Brand__TextCursorAnimation-module__TextCursorAnimation__inner____uwkl{align-items:center;display:inline-flex;position:relative}.Primer_Brand__TextCursorAnimation-module__TextCursorAnimation__text___t1rcc{font-weight:var(--brand-text-weight-500);white-space:pre}.Primer_Brand__TextCursorAnimation-module__TextCursorAnimation__sizingContainer___7_wcg{clip-path:inset(50%);display:inline-grid}.Primer_Brand__TextCursorAnimation-module__TextCursorAnimation__sizingText___Mhr64{grid-area:1/1}.Primer_Brand__TextCursorAnimation-module__TextCursorAnimation__content___M_K3E{align-items:center;gap:var(--base-size-6);display:inline-flex}.Primer_Brand__TextCursorAnimation-module__TextCursorAnimation__content--animated___Zmg8H{position:absolute;inset-block-start:0;inset-inline-start:0}.Primer_Brand__TextCursorAnimation-module__TextCursorAnimation__cursor___suzWD{width:calc(var(--base-size-8) + var(--base-size-2) / 2);height:calc(var(--base-size-12) + var(--base-size-2));flex:0 0 calc(var(--base-size-8) + var(--base-size-2) / 2);position:relative;top:-.5px}.Primer_Brand__TextCursorAnimation-module__TextCursorAnimation__cursor--initial___Ozy64{background-color:var(--brand-TextCursorAnimation-cursor-color)}.Primer_Brand__TextCursorAnimation-module__TextCursorAnimation__cursor--animated___EfpR4{animation:Primer_Brand__TextCursorAnimation-module__TextCursorAnimation-cursor-blink___cTxPh var(--brand-TextCursorAnimation-cursor-animationDuration) steps(1, end) .25s 3 forwards}.Primer_Brand__TextCursorAnimation-module__TextCursorAnimation__cursor--correction___y1c10{background-color:var(--brand-TextCursorAnimation-cursor-deleteColor)}.Primer_Brand__TextCursorAnimation-module__TextCursorAnimation__cursor--final___fBBsR,.Primer_Brand__TextCursorAnimation-module__TextCursorAnimation__cursor--complete___gufWv{background-color:var(--brand-TextCursorAnimation-cursor-finalColor)}@keyframes Primer_Brand__TextCursorAnimation-module__TextCursorAnimation-cursor-blink___cTxPh{0%,79%{opacity:1}80%,99%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.Primer_Brand__TextCursorAnimation-module__TextCursorAnimation__cursor___suzWD{animation:none}}