@primer/react-brand 0.72.1-rc.c5f3a3b5 → 0.73.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (412) hide show
  1. package/docs/components/Card/react.md +62 -13
  2. package/docs/components/MinimalVideoPlayer/index.md +117 -0
  3. package/docs/components/index.md +1 -0
  4. package/docs/index.md +3 -2
  5. package/esm/Card/Card.d.ts +6 -3
  6. package/esm/Card/Card.d.ts.map +1 -1
  7. package/esm/Card/Card.js +28 -28
  8. package/esm/Card/Card.js.map +1 -1
  9. package/esm/Card/Card.module-4GGxtM9r.css +1 -0
  10. package/esm/Card/Card.module.js +4 -1
  11. package/esm/Card/Card.module.js.map +1 -1
  12. package/esm/FAQ/FAQ.module-BFCs33mw.css +1 -0
  13. package/esm/FAQ/FAQ.module.js +1 -1
  14. package/esm/FAQ/FAQ.module.js.map +1 -1
  15. package/esm/MinimalVideoPlayer/MinimalVideoPlayer.d.ts +65 -0
  16. package/esm/MinimalVideoPlayer/MinimalVideoPlayer.d.ts.map +1 -0
  17. package/esm/MinimalVideoPlayer/MinimalVideoPlayer.js +76 -0
  18. package/esm/MinimalVideoPlayer/MinimalVideoPlayer.js.map +1 -0
  19. package/esm/MinimalVideoPlayer/MinimalVideoPlayer.module-Bcv4-Y5D.css +1 -0
  20. package/esm/MinimalVideoPlayer/MinimalVideoPlayer.module.js +9 -0
  21. package/esm/MinimalVideoPlayer/MinimalVideoPlayer.module.js.map +1 -0
  22. package/esm/MinimalVideoPlayer/index.d.ts +2 -0
  23. package/esm/MinimalVideoPlayer/index.d.ts.map +1 -0
  24. package/esm/MinimalVideoPlayer/useMinimalVideoPlayback.d.ts +16 -0
  25. package/esm/MinimalVideoPlayer/useMinimalVideoPlayback.d.ts.map +1 -0
  26. package/esm/MinimalVideoPlayer/useMinimalVideoPlayback.js +73 -0
  27. package/esm/MinimalVideoPlayer/useMinimalVideoPlayback.js.map +1 -0
  28. package/esm/Testimonial/Testimonial.d.ts.map +1 -1
  29. package/esm/Testimonial/Testimonial.js +20 -16
  30. package/esm/Testimonial/Testimonial.js.map +1 -1
  31. package/esm/Testimonial/Testimonial.module-BEV0y2jl.css +1 -0
  32. package/esm/Testimonial/Testimonial.module.js +3 -1
  33. package/esm/Testimonial/Testimonial.module.js.map +1 -1
  34. package/esm/index.d.ts +1 -0
  35. package/esm/index.d.ts.map +1 -1
  36. package/esm/index.esm.js +26 -25
  37. package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/components/card/base-DgOt50dE.css +1 -0
  38. package/lib/Card/Card.d.ts +6 -3
  39. package/lib/MinimalVideoPlayer/MinimalVideoPlayer.d.ts +64 -0
  40. package/lib/MinimalVideoPlayer/index.d.ts +1 -0
  41. package/lib/MinimalVideoPlayer/useMinimalVideoPlayback.d.ts +15 -0
  42. package/lib/css/main.css +365 -139
  43. package/lib/design-tokens/css/tokens/base/colors/color-scales-with-modes.css +1 -1
  44. package/lib/design-tokens/css/tokens/base/colors/light.css +1 -1
  45. package/lib/design-tokens/css/tokens/base/size/size.css +1 -1
  46. package/lib/design-tokens/css/tokens/base/typography/typography.css +1 -1
  47. package/lib/design-tokens/css/tokens/functional/animation/base.css +1 -1
  48. package/lib/design-tokens/css/tokens/functional/colors/global-with-modes.css +1 -1
  49. package/lib/design-tokens/css/tokens/functional/colors/global.css +1 -1
  50. package/lib/design-tokens/css/tokens/functional/components/accordion/colors-with-modes.css +1 -1
  51. package/lib/design-tokens/css/tokens/functional/components/action-menu/colors-with-modes.css +1 -1
  52. package/lib/design-tokens/css/tokens/functional/components/anchor-nav/colors-with-modes.css +1 -1
  53. package/lib/design-tokens/css/tokens/functional/components/bento/base.css +1 -1
  54. package/lib/design-tokens/css/tokens/functional/components/blinking-cursor/colors-with-modes.css +1 -1
  55. package/lib/design-tokens/css/tokens/functional/components/breadcrumbs/colors-with-modes.css +1 -1
  56. package/lib/design-tokens/css/tokens/functional/components/button/colors-with-modes.css +1 -1
  57. package/lib/design-tokens/css/tokens/functional/components/card/base.css +3 -1
  58. package/lib/design-tokens/css/tokens/functional/components/card/colors-with-modes.css +1 -1
  59. package/lib/design-tokens/css/tokens/functional/components/card/colors.css +1 -1
  60. package/lib/design-tokens/css/tokens/functional/components/comparison-table/colors-with-modes.css +1 -1
  61. package/lib/design-tokens/css/tokens/functional/components/comparison-table/comparison-table.css +1 -1
  62. package/lib/design-tokens/css/tokens/functional/components/control/colors-with-modes.css +1 -1
  63. package/lib/design-tokens/css/tokens/functional/components/cta-banner/colors-with-modes.css +1 -1
  64. package/lib/design-tokens/css/tokens/functional/components/eyebrow-banner/colors-with-modes.css +1 -1
  65. package/lib/design-tokens/css/tokens/functional/components/eyebrow-banner/eyebrow-banner.css +1 -1
  66. package/lib/design-tokens/css/tokens/functional/components/faq/base.css +1 -1
  67. package/lib/design-tokens/css/tokens/functional/components/faq/colors-with-modes.css +1 -1
  68. package/lib/design-tokens/css/tokens/functional/components/faq/colors.css +1 -1
  69. package/lib/design-tokens/css/tokens/functional/components/faq/faq.css +1 -1
  70. package/lib/design-tokens/css/tokens/functional/components/footer/colors-with-modes.css +1 -1
  71. package/lib/design-tokens/css/tokens/functional/components/footer/colors.css +1 -1
  72. package/lib/design-tokens/css/tokens/functional/components/frosted-glass-vfx/base.css +1 -1
  73. package/lib/design-tokens/css/tokens/functional/components/frosted-glass-vfx/colors-with-modes.css +1 -1
  74. package/lib/design-tokens/css/tokens/functional/components/grid/colors-with-modes.css +1 -1
  75. package/lib/design-tokens/css/tokens/functional/components/grid/colors.css +1 -1
  76. package/lib/design-tokens/css/tokens/functional/components/grid/grid.css +1 -1
  77. package/lib/design-tokens/css/tokens/functional/components/hero/base.css +1 -1
  78. package/lib/design-tokens/css/tokens/functional/components/icon/colors-with-modes.css +1 -1
  79. package/lib/design-tokens/css/tokens/functional/components/icon/colors.css +1 -1
  80. package/lib/design-tokens/css/tokens/functional/components/ide/base.css +1 -1
  81. package/lib/design-tokens/css/tokens/functional/components/ide/colors-with-modes.css +1 -1
  82. package/lib/design-tokens/css/tokens/functional/components/image/base.css +1 -1
  83. package/lib/design-tokens/css/tokens/functional/components/inline-link/base.css +1 -1
  84. package/lib/design-tokens/css/tokens/functional/components/inline-link/colors-with-modes.css +1 -1
  85. package/lib/design-tokens/css/tokens/functional/components/inline-link/colors.css +1 -1
  86. package/lib/design-tokens/css/tokens/functional/components/label/colors-with-modes.css +1 -1
  87. package/lib/design-tokens/css/tokens/functional/components/label/colors.css +1 -1
  88. package/lib/design-tokens/css/tokens/functional/components/link/colors-with-modes.css +1 -1
  89. package/lib/design-tokens/css/tokens/functional/components/link/colors.css +1 -1
  90. package/lib/design-tokens/css/tokens/functional/components/logosuite/base.css +1 -1
  91. package/lib/design-tokens/css/tokens/functional/components/logosuite/colors-with-modes.css +1 -1
  92. package/lib/design-tokens/css/tokens/functional/components/logosuite/colors.css +1 -1
  93. package/lib/design-tokens/css/tokens/functional/components/media-playlist/colors-with-modes.css +1 -1
  94. package/lib/design-tokens/css/tokens/functional/components/media-playlist/colors.css +1 -1
  95. package/lib/design-tokens/css/tokens/functional/components/nav-list/colors-with-modes.css +1 -1
  96. package/lib/design-tokens/css/tokens/functional/components/pricing-options/colors-with-modes.css +1 -1
  97. package/lib/design-tokens/css/tokens/functional/components/pricing-options/colors.css +1 -1
  98. package/lib/design-tokens/css/tokens/functional/components/pricing-options/pricing-options.css +1 -1
  99. package/lib/design-tokens/css/tokens/functional/components/prose/base.css +1 -1
  100. package/lib/design-tokens/css/tokens/functional/components/prose/colors-with-modes.css +1 -1
  101. package/lib/design-tokens/css/tokens/functional/components/river/base.css +1 -1
  102. package/lib/design-tokens/css/tokens/functional/components/river/river.css +1 -1
  103. package/lib/design-tokens/css/tokens/functional/components/river-story-scroll/colors-with-modes.css +1 -1
  104. package/lib/design-tokens/css/tokens/functional/components/section/section.css +1 -1
  105. package/lib/design-tokens/css/tokens/functional/components/statistic/base.css +1 -1
  106. package/lib/design-tokens/css/tokens/functional/components/sub-nav/base.css +1 -1
  107. package/lib/design-tokens/css/tokens/functional/components/sub-nav/colors-with-modes.css +1 -1
  108. package/lib/design-tokens/css/tokens/functional/components/subdomain-nav-bar/colors-with-modes.css +1 -1
  109. package/lib/design-tokens/css/tokens/functional/components/tabs/base.css +1 -1
  110. package/lib/design-tokens/css/tokens/functional/components/tabs/colors-with-modes.css +1 -1
  111. package/lib/design-tokens/css/tokens/functional/components/tabs/colors.css +1 -1
  112. package/lib/design-tokens/css/tokens/functional/components/testimonial/base.css +1 -1
  113. package/lib/design-tokens/css/tokens/functional/components/testimonial/colors-with-modes.css +1 -1
  114. package/lib/design-tokens/css/tokens/functional/components/testimonial/colors.css +1 -1
  115. package/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/colors-with-modes.css +1 -1
  116. package/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/colors.css +1 -1
  117. package/lib/design-tokens/css/tokens/functional/components/tiles/colors-with-modes.css +1 -1
  118. package/lib/design-tokens/css/tokens/functional/components/timeline/base.css +1 -1
  119. package/lib/design-tokens/css/tokens/functional/components/timeline/colors-with-modes.css +1 -1
  120. package/lib/design-tokens/css/tokens/functional/components/timeline/colors.css +1 -1
  121. package/lib/design-tokens/css/tokens/functional/components/token/colors-with-modes.css +1 -1
  122. package/lib/design-tokens/css/tokens/functional/components/token/colors.css +1 -1
  123. package/lib/design-tokens/css/tokens/functional/components/tooltip/colors-with-modes.css +1 -1
  124. package/lib/design-tokens/css/tokens/functional/components/tooltip/colors.css +1 -1
  125. package/lib/design-tokens/css/tokens/functional/components/video-player/base.css +1 -1
  126. package/lib/design-tokens/css/tokens/functional/components/video-player/colors-with-modes.css +1 -1
  127. package/lib/design-tokens/css/tokens/functional/size/border.css +1 -1
  128. package/lib/design-tokens/css/tokens/functional/size/breakpoints.css +1 -1
  129. package/lib/design-tokens/css/tokens/functional/size/size-coarse.css +1 -1
  130. package/lib/design-tokens/css/tokens/functional/size/size-fine.css +1 -1
  131. package/lib/design-tokens/css/tokens/functional/size/size.css +1 -1
  132. package/lib/design-tokens/css/tokens/functional/size/viewport.css +1 -1
  133. package/lib/design-tokens/css/tokens/functional/typography/typography-responsive.css +1 -1
  134. package/lib/design-tokens/css/tokens/functional/typography/typography.css +1 -1
  135. package/lib/design-tokens/js/module/tokens/base/colors/light.js +1 -1
  136. package/lib/design-tokens/js/module/tokens/base/size/size.js +1 -1
  137. package/lib/design-tokens/js/module/tokens/base/typography/typography.js +1 -1
  138. package/lib/design-tokens/js/module/tokens/functional/animation/base.js +1 -1
  139. package/lib/design-tokens/js/module/tokens/functional/colors/global.js +1 -1
  140. package/lib/design-tokens/js/module/tokens/functional/components/bento/base.js +1 -1
  141. package/lib/design-tokens/js/module/tokens/functional/components/card/base.js +5 -1
  142. package/lib/design-tokens/js/module/tokens/functional/components/card/colors.js +1 -1
  143. package/lib/design-tokens/js/module/tokens/functional/components/comparison-table/comparison-table.js +1 -1
  144. package/lib/design-tokens/js/module/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
  145. package/lib/design-tokens/js/module/tokens/functional/components/faq/base.js +1 -1
  146. package/lib/design-tokens/js/module/tokens/functional/components/faq/colors.js +1 -1
  147. package/lib/design-tokens/js/module/tokens/functional/components/faq/faq.js +1 -1
  148. package/lib/design-tokens/js/module/tokens/functional/components/footer/colors.js +1 -1
  149. package/lib/design-tokens/js/module/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
  150. package/lib/design-tokens/js/module/tokens/functional/components/grid/colors.js +1 -1
  151. package/lib/design-tokens/js/module/tokens/functional/components/grid/grid.js +1 -1
  152. package/lib/design-tokens/js/module/tokens/functional/components/hero/base.js +1 -1
  153. package/lib/design-tokens/js/module/tokens/functional/components/icon/colors.js +1 -1
  154. package/lib/design-tokens/js/module/tokens/functional/components/ide/base.js +1 -1
  155. package/lib/design-tokens/js/module/tokens/functional/components/image/base.js +1 -1
  156. package/lib/design-tokens/js/module/tokens/functional/components/inline-link/base.js +1 -1
  157. package/lib/design-tokens/js/module/tokens/functional/components/inline-link/colors.js +1 -1
  158. package/lib/design-tokens/js/module/tokens/functional/components/label/colors.js +1 -1
  159. package/lib/design-tokens/js/module/tokens/functional/components/link/colors.js +1 -1
  160. package/lib/design-tokens/js/module/tokens/functional/components/logosuite/base.js +1 -1
  161. package/lib/design-tokens/js/module/tokens/functional/components/logosuite/colors.js +1 -1
  162. package/lib/design-tokens/js/module/tokens/functional/components/media-playlist/colors.js +1 -1
  163. package/lib/design-tokens/js/module/tokens/functional/components/pricing-options/colors.js +1 -1
  164. package/lib/design-tokens/js/module/tokens/functional/components/pricing-options/pricing-options.js +1 -1
  165. package/lib/design-tokens/js/module/tokens/functional/components/prose/base.js +1 -1
  166. package/lib/design-tokens/js/module/tokens/functional/components/river/base.js +1 -1
  167. package/lib/design-tokens/js/module/tokens/functional/components/river/river.js +1 -1
  168. package/lib/design-tokens/js/module/tokens/functional/components/section/section.js +1 -1
  169. package/lib/design-tokens/js/module/tokens/functional/components/statistic/base.js +1 -1
  170. package/lib/design-tokens/js/module/tokens/functional/components/sub-nav/base.js +1 -1
  171. package/lib/design-tokens/js/module/tokens/functional/components/tabs/base.js +1 -1
  172. package/lib/design-tokens/js/module/tokens/functional/components/tabs/colors.js +1 -1
  173. package/lib/design-tokens/js/module/tokens/functional/components/testimonial/base.js +1 -1
  174. package/lib/design-tokens/js/module/tokens/functional/components/testimonial/colors.js +1 -1
  175. package/lib/design-tokens/js/module/tokens/functional/components/text-cursor-animation/colors.js +1 -1
  176. package/lib/design-tokens/js/module/tokens/functional/components/timeline/base.js +1 -1
  177. package/lib/design-tokens/js/module/tokens/functional/components/timeline/colors.js +1 -1
  178. package/lib/design-tokens/js/module/tokens/functional/components/token/colors.js +1 -1
  179. package/lib/design-tokens/js/module/tokens/functional/components/tooltip/colors.js +1 -1
  180. package/lib/design-tokens/js/module/tokens/functional/components/video-player/base.js +1 -1
  181. package/lib/design-tokens/js/module/tokens/functional/size/border.js +1 -1
  182. package/lib/design-tokens/js/module/tokens/functional/size/breakpoints.js +1 -1
  183. package/lib/design-tokens/js/module/tokens/functional/size/size-coarse.js +1 -1
  184. package/lib/design-tokens/js/module/tokens/functional/size/size-fine.js +1 -1
  185. package/lib/design-tokens/js/module/tokens/functional/size/size.js +1 -1
  186. package/lib/design-tokens/js/module/tokens/functional/size/viewport.js +1 -1
  187. package/lib/design-tokens/js/module/tokens/functional/typography/typography-responsive.js +1 -1
  188. package/lib/design-tokens/js/module/tokens/functional/typography/typography.js +1 -1
  189. package/lib/design-tokens/js/tokens/base/colors/light.js +1 -1
  190. package/lib/design-tokens/js/tokens/base/size/size.js +1 -1
  191. package/lib/design-tokens/js/tokens/base/typography/typography.js +1 -1
  192. package/lib/design-tokens/js/tokens/functional/animation/base.js +1 -1
  193. package/lib/design-tokens/js/tokens/functional/colors/global.js +1 -1
  194. package/lib/design-tokens/js/tokens/functional/components/bento/base.js +1 -1
  195. package/lib/design-tokens/js/tokens/functional/components/card/base.js +3 -1
  196. package/lib/design-tokens/js/tokens/functional/components/card/colors.js +1 -1
  197. package/lib/design-tokens/js/tokens/functional/components/comparison-table/comparison-table.js +1 -1
  198. package/lib/design-tokens/js/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
  199. package/lib/design-tokens/js/tokens/functional/components/faq/base.js +1 -1
  200. package/lib/design-tokens/js/tokens/functional/components/faq/colors.js +1 -1
  201. package/lib/design-tokens/js/tokens/functional/components/faq/faq.js +1 -1
  202. package/lib/design-tokens/js/tokens/functional/components/footer/colors.js +1 -1
  203. package/lib/design-tokens/js/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
  204. package/lib/design-tokens/js/tokens/functional/components/grid/colors.js +1 -1
  205. package/lib/design-tokens/js/tokens/functional/components/grid/grid.js +1 -1
  206. package/lib/design-tokens/js/tokens/functional/components/hero/base.js +1 -1
  207. package/lib/design-tokens/js/tokens/functional/components/icon/colors.js +1 -1
  208. package/lib/design-tokens/js/tokens/functional/components/ide/base.js +1 -1
  209. package/lib/design-tokens/js/tokens/functional/components/image/base.js +1 -1
  210. package/lib/design-tokens/js/tokens/functional/components/inline-link/base.js +1 -1
  211. package/lib/design-tokens/js/tokens/functional/components/inline-link/colors.js +1 -1
  212. package/lib/design-tokens/js/tokens/functional/components/label/colors.js +1 -1
  213. package/lib/design-tokens/js/tokens/functional/components/link/colors.js +1 -1
  214. package/lib/design-tokens/js/tokens/functional/components/logosuite/base.js +1 -1
  215. package/lib/design-tokens/js/tokens/functional/components/logosuite/colors.js +1 -1
  216. package/lib/design-tokens/js/tokens/functional/components/media-playlist/colors.js +1 -1
  217. package/lib/design-tokens/js/tokens/functional/components/pricing-options/colors.js +1 -1
  218. package/lib/design-tokens/js/tokens/functional/components/pricing-options/pricing-options.js +1 -1
  219. package/lib/design-tokens/js/tokens/functional/components/prose/base.js +1 -1
  220. package/lib/design-tokens/js/tokens/functional/components/river/base.js +1 -1
  221. package/lib/design-tokens/js/tokens/functional/components/river/river.js +1 -1
  222. package/lib/design-tokens/js/tokens/functional/components/section/section.js +1 -1
  223. package/lib/design-tokens/js/tokens/functional/components/statistic/base.js +1 -1
  224. package/lib/design-tokens/js/tokens/functional/components/sub-nav/base.js +1 -1
  225. package/lib/design-tokens/js/tokens/functional/components/tabs/base.js +1 -1
  226. package/lib/design-tokens/js/tokens/functional/components/tabs/colors.js +1 -1
  227. package/lib/design-tokens/js/tokens/functional/components/testimonial/base.js +1 -1
  228. package/lib/design-tokens/js/tokens/functional/components/testimonial/colors.js +1 -1
  229. package/lib/design-tokens/js/tokens/functional/components/text-cursor-animation/colors.js +1 -1
  230. package/lib/design-tokens/js/tokens/functional/components/timeline/base.js +1 -1
  231. package/lib/design-tokens/js/tokens/functional/components/timeline/colors.js +1 -1
  232. package/lib/design-tokens/js/tokens/functional/components/token/colors.js +1 -1
  233. package/lib/design-tokens/js/tokens/functional/components/tooltip/colors.js +1 -1
  234. package/lib/design-tokens/js/tokens/functional/components/video-player/base.js +1 -1
  235. package/lib/design-tokens/js/tokens/functional/size/border.js +1 -1
  236. package/lib/design-tokens/js/tokens/functional/size/breakpoints.js +1 -1
  237. package/lib/design-tokens/js/tokens/functional/size/size-coarse.js +1 -1
  238. package/lib/design-tokens/js/tokens/functional/size/size-fine.js +1 -1
  239. package/lib/design-tokens/js/tokens/functional/size/size.js +1 -1
  240. package/lib/design-tokens/js/tokens/functional/size/viewport.js +1 -1
  241. package/lib/design-tokens/js/tokens/functional/typography/typography-responsive.js +1 -1
  242. package/lib/design-tokens/js/tokens/functional/typography/typography.js +1 -1
  243. package/lib/design-tokens/scss/tokens/base/colors/light.scss +1 -1
  244. package/lib/design-tokens/scss/tokens/base/size/size.scss +1 -1
  245. package/lib/design-tokens/scss/tokens/base/typography/typography.scss +1 -1
  246. package/lib/design-tokens/scss/tokens/functional/animation/base.scss +1 -1
  247. package/lib/design-tokens/scss/tokens/functional/colors/global.scss +1 -1
  248. package/lib/design-tokens/scss/tokens/functional/components/bento/base.scss +1 -1
  249. package/lib/design-tokens/scss/tokens/functional/components/card/base.scss +3 -1
  250. package/lib/design-tokens/scss/tokens/functional/components/card/colors.scss +1 -1
  251. package/lib/design-tokens/scss/tokens/functional/components/comparison-table/comparison-table.scss +1 -1
  252. package/lib/design-tokens/scss/tokens/functional/components/eyebrow-banner/eyebrow-banner.scss +1 -1
  253. package/lib/design-tokens/scss/tokens/functional/components/faq/base.scss +1 -1
  254. package/lib/design-tokens/scss/tokens/functional/components/faq/colors.scss +1 -1
  255. package/lib/design-tokens/scss/tokens/functional/components/faq/faq.scss +1 -1
  256. package/lib/design-tokens/scss/tokens/functional/components/footer/colors.scss +1 -1
  257. package/lib/design-tokens/scss/tokens/functional/components/frosted-glass-vfx/base.scss +1 -1
  258. package/lib/design-tokens/scss/tokens/functional/components/grid/colors.scss +1 -1
  259. package/lib/design-tokens/scss/tokens/functional/components/grid/grid.scss +1 -1
  260. package/lib/design-tokens/scss/tokens/functional/components/hero/base.scss +1 -1
  261. package/lib/design-tokens/scss/tokens/functional/components/icon/colors.scss +1 -1
  262. package/lib/design-tokens/scss/tokens/functional/components/ide/base.scss +1 -1
  263. package/lib/design-tokens/scss/tokens/functional/components/image/base.scss +1 -1
  264. package/lib/design-tokens/scss/tokens/functional/components/inline-link/base.scss +1 -1
  265. package/lib/design-tokens/scss/tokens/functional/components/inline-link/colors.scss +1 -1
  266. package/lib/design-tokens/scss/tokens/functional/components/label/colors.scss +1 -1
  267. package/lib/design-tokens/scss/tokens/functional/components/link/colors.scss +1 -1
  268. package/lib/design-tokens/scss/tokens/functional/components/logosuite/base.scss +1 -1
  269. package/lib/design-tokens/scss/tokens/functional/components/logosuite/colors.scss +1 -1
  270. package/lib/design-tokens/scss/tokens/functional/components/media-playlist/colors.scss +1 -1
  271. package/lib/design-tokens/scss/tokens/functional/components/pricing-options/colors.scss +1 -1
  272. package/lib/design-tokens/scss/tokens/functional/components/pricing-options/pricing-options.scss +1 -1
  273. package/lib/design-tokens/scss/tokens/functional/components/prose/base.scss +1 -1
  274. package/lib/design-tokens/scss/tokens/functional/components/river/base.scss +1 -1
  275. package/lib/design-tokens/scss/tokens/functional/components/river/river.scss +1 -1
  276. package/lib/design-tokens/scss/tokens/functional/components/section/section.scss +1 -1
  277. package/lib/design-tokens/scss/tokens/functional/components/statistic/base.scss +1 -1
  278. package/lib/design-tokens/scss/tokens/functional/components/sub-nav/base.scss +1 -1
  279. package/lib/design-tokens/scss/tokens/functional/components/tabs/base.scss +1 -1
  280. package/lib/design-tokens/scss/tokens/functional/components/tabs/colors.scss +1 -1
  281. package/lib/design-tokens/scss/tokens/functional/components/testimonial/base.scss +1 -1
  282. package/lib/design-tokens/scss/tokens/functional/components/testimonial/colors.scss +1 -1
  283. package/lib/design-tokens/scss/tokens/functional/components/text-cursor-animation/colors.scss +1 -1
  284. package/lib/design-tokens/scss/tokens/functional/components/timeline/base.scss +1 -1
  285. package/lib/design-tokens/scss/tokens/functional/components/timeline/colors.scss +1 -1
  286. package/lib/design-tokens/scss/tokens/functional/components/token/colors.scss +1 -1
  287. package/lib/design-tokens/scss/tokens/functional/components/tooltip/colors.scss +1 -1
  288. package/lib/design-tokens/scss/tokens/functional/components/video-player/base.scss +1 -1
  289. package/lib/design-tokens/scss/tokens/functional/size/border.scss +1 -1
  290. package/lib/design-tokens/scss/tokens/functional/size/breakpoints.scss +1 -1
  291. package/lib/design-tokens/scss/tokens/functional/size/size-coarse.scss +1 -1
  292. package/lib/design-tokens/scss/tokens/functional/size/size-fine.scss +1 -1
  293. package/lib/design-tokens/scss/tokens/functional/size/size.scss +1 -1
  294. package/lib/design-tokens/scss/tokens/functional/size/viewport.scss +1 -1
  295. package/lib/design-tokens/scss/tokens/functional/typography/typography-responsive.scss +1 -1
  296. package/lib/design-tokens/scss/tokens/functional/typography/typography.scss +1 -1
  297. package/lib/design-tokens/ts/tokens/base/colors/light.d.ts +1 -1
  298. package/lib/design-tokens/ts/tokens/base/colors/light.js +1 -1
  299. package/lib/design-tokens/ts/tokens/base/size/size.d.ts +1 -1
  300. package/lib/design-tokens/ts/tokens/base/size/size.js +1 -1
  301. package/lib/design-tokens/ts/tokens/base/typography/typography.d.ts +1 -1
  302. package/lib/design-tokens/ts/tokens/base/typography/typography.js +1 -1
  303. package/lib/design-tokens/ts/tokens/functional/animation/base.d.ts +1 -1
  304. package/lib/design-tokens/ts/tokens/functional/animation/base.js +1 -1
  305. package/lib/design-tokens/ts/tokens/functional/colors/global.d.ts +1 -1
  306. package/lib/design-tokens/ts/tokens/functional/colors/global.js +1 -1
  307. package/lib/design-tokens/ts/tokens/functional/components/bento/base.d.ts +1 -1
  308. package/lib/design-tokens/ts/tokens/functional/components/bento/base.js +1 -1
  309. package/lib/design-tokens/ts/tokens/functional/components/card/base.d.ts +5 -1
  310. package/lib/design-tokens/ts/tokens/functional/components/card/base.js +5 -1
  311. package/lib/design-tokens/ts/tokens/functional/components/card/colors.d.ts +1 -1
  312. package/lib/design-tokens/ts/tokens/functional/components/card/colors.js +1 -1
  313. package/lib/design-tokens/ts/tokens/functional/components/comparison-table/comparison-table.d.ts +1 -1
  314. package/lib/design-tokens/ts/tokens/functional/components/comparison-table/comparison-table.js +1 -1
  315. package/lib/design-tokens/ts/tokens/functional/components/eyebrow-banner/eyebrow-banner.d.ts +1 -1
  316. package/lib/design-tokens/ts/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
  317. package/lib/design-tokens/ts/tokens/functional/components/faq/base.d.ts +1 -1
  318. package/lib/design-tokens/ts/tokens/functional/components/faq/base.js +1 -1
  319. package/lib/design-tokens/ts/tokens/functional/components/faq/colors.d.ts +1 -1
  320. package/lib/design-tokens/ts/tokens/functional/components/faq/colors.js +1 -1
  321. package/lib/design-tokens/ts/tokens/functional/components/faq/faq.d.ts +1 -1
  322. package/lib/design-tokens/ts/tokens/functional/components/faq/faq.js +1 -1
  323. package/lib/design-tokens/ts/tokens/functional/components/footer/colors.d.ts +1 -1
  324. package/lib/design-tokens/ts/tokens/functional/components/footer/colors.js +1 -1
  325. package/lib/design-tokens/ts/tokens/functional/components/frosted-glass-vfx/base.d.ts +1 -1
  326. package/lib/design-tokens/ts/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
  327. package/lib/design-tokens/ts/tokens/functional/components/grid/colors.d.ts +1 -1
  328. package/lib/design-tokens/ts/tokens/functional/components/grid/colors.js +1 -1
  329. package/lib/design-tokens/ts/tokens/functional/components/grid/grid.d.ts +1 -1
  330. package/lib/design-tokens/ts/tokens/functional/components/grid/grid.js +1 -1
  331. package/lib/design-tokens/ts/tokens/functional/components/hero/base.d.ts +1 -1
  332. package/lib/design-tokens/ts/tokens/functional/components/hero/base.js +1 -1
  333. package/lib/design-tokens/ts/tokens/functional/components/icon/colors.d.ts +1 -1
  334. package/lib/design-tokens/ts/tokens/functional/components/icon/colors.js +1 -1
  335. package/lib/design-tokens/ts/tokens/functional/components/ide/base.d.ts +1 -1
  336. package/lib/design-tokens/ts/tokens/functional/components/ide/base.js +1 -1
  337. package/lib/design-tokens/ts/tokens/functional/components/image/base.d.ts +1 -1
  338. package/lib/design-tokens/ts/tokens/functional/components/image/base.js +1 -1
  339. package/lib/design-tokens/ts/tokens/functional/components/inline-link/base.d.ts +1 -1
  340. package/lib/design-tokens/ts/tokens/functional/components/inline-link/base.js +1 -1
  341. package/lib/design-tokens/ts/tokens/functional/components/inline-link/colors.d.ts +1 -1
  342. package/lib/design-tokens/ts/tokens/functional/components/inline-link/colors.js +1 -1
  343. package/lib/design-tokens/ts/tokens/functional/components/label/colors.d.ts +1 -1
  344. package/lib/design-tokens/ts/tokens/functional/components/label/colors.js +1 -1
  345. package/lib/design-tokens/ts/tokens/functional/components/link/colors.d.ts +1 -1
  346. package/lib/design-tokens/ts/tokens/functional/components/link/colors.js +1 -1
  347. package/lib/design-tokens/ts/tokens/functional/components/logosuite/base.d.ts +1 -1
  348. package/lib/design-tokens/ts/tokens/functional/components/logosuite/base.js +1 -1
  349. package/lib/design-tokens/ts/tokens/functional/components/logosuite/colors.d.ts +1 -1
  350. package/lib/design-tokens/ts/tokens/functional/components/logosuite/colors.js +1 -1
  351. package/lib/design-tokens/ts/tokens/functional/components/media-playlist/colors.d.ts +1 -1
  352. package/lib/design-tokens/ts/tokens/functional/components/media-playlist/colors.js +1 -1
  353. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/colors.d.ts +1 -1
  354. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/colors.js +1 -1
  355. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/pricing-options.d.ts +1 -1
  356. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/pricing-options.js +1 -1
  357. package/lib/design-tokens/ts/tokens/functional/components/prose/base.d.ts +1 -1
  358. package/lib/design-tokens/ts/tokens/functional/components/prose/base.js +1 -1
  359. package/lib/design-tokens/ts/tokens/functional/components/river/base.d.ts +1 -1
  360. package/lib/design-tokens/ts/tokens/functional/components/river/base.js +1 -1
  361. package/lib/design-tokens/ts/tokens/functional/components/river/river.d.ts +1 -1
  362. package/lib/design-tokens/ts/tokens/functional/components/river/river.js +1 -1
  363. package/lib/design-tokens/ts/tokens/functional/components/section/section.d.ts +1 -1
  364. package/lib/design-tokens/ts/tokens/functional/components/section/section.js +1 -1
  365. package/lib/design-tokens/ts/tokens/functional/components/statistic/base.d.ts +1 -1
  366. package/lib/design-tokens/ts/tokens/functional/components/statistic/base.js +1 -1
  367. package/lib/design-tokens/ts/tokens/functional/components/sub-nav/base.d.ts +1 -1
  368. package/lib/design-tokens/ts/tokens/functional/components/sub-nav/base.js +1 -1
  369. package/lib/design-tokens/ts/tokens/functional/components/tabs/base.d.ts +1 -1
  370. package/lib/design-tokens/ts/tokens/functional/components/tabs/base.js +1 -1
  371. package/lib/design-tokens/ts/tokens/functional/components/tabs/colors.d.ts +1 -1
  372. package/lib/design-tokens/ts/tokens/functional/components/tabs/colors.js +1 -1
  373. package/lib/design-tokens/ts/tokens/functional/components/testimonial/base.d.ts +1 -1
  374. package/lib/design-tokens/ts/tokens/functional/components/testimonial/base.js +1 -1
  375. package/lib/design-tokens/ts/tokens/functional/components/testimonial/colors.d.ts +1 -1
  376. package/lib/design-tokens/ts/tokens/functional/components/testimonial/colors.js +1 -1
  377. package/lib/design-tokens/ts/tokens/functional/components/text-cursor-animation/colors.d.ts +1 -1
  378. package/lib/design-tokens/ts/tokens/functional/components/text-cursor-animation/colors.js +1 -1
  379. package/lib/design-tokens/ts/tokens/functional/components/timeline/base.d.ts +1 -1
  380. package/lib/design-tokens/ts/tokens/functional/components/timeline/base.js +1 -1
  381. package/lib/design-tokens/ts/tokens/functional/components/timeline/colors.d.ts +1 -1
  382. package/lib/design-tokens/ts/tokens/functional/components/timeline/colors.js +1 -1
  383. package/lib/design-tokens/ts/tokens/functional/components/token/colors.d.ts +1 -1
  384. package/lib/design-tokens/ts/tokens/functional/components/token/colors.js +1 -1
  385. package/lib/design-tokens/ts/tokens/functional/components/tooltip/colors.d.ts +1 -1
  386. package/lib/design-tokens/ts/tokens/functional/components/tooltip/colors.js +1 -1
  387. package/lib/design-tokens/ts/tokens/functional/components/video-player/base.d.ts +1 -1
  388. package/lib/design-tokens/ts/tokens/functional/components/video-player/base.js +1 -1
  389. package/lib/design-tokens/ts/tokens/functional/size/border.d.ts +1 -1
  390. package/lib/design-tokens/ts/tokens/functional/size/border.js +1 -1
  391. package/lib/design-tokens/ts/tokens/functional/size/breakpoints.d.ts +1 -1
  392. package/lib/design-tokens/ts/tokens/functional/size/breakpoints.js +1 -1
  393. package/lib/design-tokens/ts/tokens/functional/size/size-coarse.d.ts +1 -1
  394. package/lib/design-tokens/ts/tokens/functional/size/size-coarse.js +1 -1
  395. package/lib/design-tokens/ts/tokens/functional/size/size-fine.d.ts +1 -1
  396. package/lib/design-tokens/ts/tokens/functional/size/size-fine.js +1 -1
  397. package/lib/design-tokens/ts/tokens/functional/size/size.d.ts +1 -1
  398. package/lib/design-tokens/ts/tokens/functional/size/size.js +1 -1
  399. package/lib/design-tokens/ts/tokens/functional/size/viewport.d.ts +1 -1
  400. package/lib/design-tokens/ts/tokens/functional/size/viewport.js +1 -1
  401. package/lib/design-tokens/ts/tokens/functional/typography/typography-responsive.d.ts +1 -1
  402. package/lib/design-tokens/ts/tokens/functional/typography/typography-responsive.js +1 -1
  403. package/lib/design-tokens/ts/tokens/functional/typography/typography.d.ts +1 -1
  404. package/lib/design-tokens/ts/tokens/functional/typography/typography.js +1 -1
  405. package/lib/index.d.ts +1 -0
  406. package/lib/index.js +1 -1
  407. package/llms.txt +3 -2
  408. package/package.json +1 -1
  409. package/esm/Card/Card.module-B41BqbuX.css +0 -1
  410. package/esm/FAQ/FAQ.module-C8rxdU0Z.css +0 -1
  411. package/esm/Testimonial/Testimonial.module-BEBpUSD7.css +0 -1
  412. package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/components/card/base-BRKNIzyd.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Card.module.js","names":[],"sources":["../../src/Card/Card.module.css"],"sourcesContent":[".Card {\n /* Keeps the dynamic height row on the description slot in the default layout so variable-height content fills the card body. */\n --Card-grid-template-rows: auto auto auto auto auto auto 1fr auto;\n\n text-decoration: none;\n color: var(--brand-color-text-default);\n\n transition: transform var(--brand-Card-animation-duration) var(--brand-Card-animation-easing);\n padding: var(--base-size-32);\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-areas:\n 'image image'\n 'leadingVisual leadingVisual'\n 'icon icon'\n 'tokens tokens'\n 'label label'\n 'heading heading'\n 'description description'\n 'action action';\n flex: auto;\n grid-template-rows: var(--Card-grid-template-rows);\n position: relative;\n height: 100%;\n border-radius: var(--brand-borderRadius-medium);\n}\n\n.Card--align-center .Card {\n text-align: center;\n padding: var(--base-size-64) var(--base-size-40);\n}\n\n@media screen and (min-width: 64rem) {\n .Card--align-center .Card {\n padding: var(--base-size-64) var(--base-size-80);\n }\n}\n\n.Card--align-center .Card {\n grid-template-columns: 1fr;\n grid-template-areas:\n 'image'\n 'leadingVisual'\n 'icon'\n 'tokens'\n 'label'\n 'heading'\n 'description'\n 'action';\n justify-items: center;\n}\n\n.Card--backgroundColor-default {\n background-color: var(--brand-Card-background-default);\n}\n\n.Card--backgroundColor-subtle {\n background-color: var(--brand-color-canvas-subtle);\n}\n\n.Card--backgroundColor-none {\n background-color: transparent;\n}\n\n.Card--tokensPosition-block-end {\n /* Moves the dynamic height row from tokens back to description because the block-end layout places tokens below the body copy. */\n --Card-grid-template-rows: auto auto auto auto auto 1fr auto auto;\n\n grid-template-areas:\n 'image image'\n 'leadingVisual leadingVisual'\n 'icon icon'\n 'label label'\n 'heading heading'\n 'description description'\n 'tokens tokens'\n 'action action';\n}\n\n.Card--align-center .Card--tokensPosition-block-end {\n grid-template-areas:\n 'image'\n 'leadingVisual'\n 'icon'\n 'label'\n 'heading'\n 'description'\n 'tokens'\n 'action';\n}\n\n/** Block end image position option */\n.Card--imagePos-block-end {\n /* Moves the dynamic height row from action back to description because the image is rendered after the content in this layout. */\n --Card-grid-template-rows: auto auto auto auto auto 1fr auto auto;\n\n grid-template-areas:\n 'leadingVisual leadingVisual'\n 'icon icon'\n 'tokens tokens'\n 'label label'\n 'heading heading'\n 'description description'\n 'action action'\n 'image image';\n}\n\n.Card--align-center .Card--imagePos-block-end {\n grid-template-areas:\n 'leadingVisual'\n 'icon'\n 'tokens'\n 'label'\n 'heading'\n 'description'\n 'action'\n 'image';\n}\n\n.Card--imagePos-block-end.Card--tokensPosition-block-end {\n /* Moves the dynamic height row from tokens back to description because both the tokens and image are rendered after the body copy here. */\n --Card-grid-template-rows: auto auto auto auto 1fr auto auto auto;\n\n grid-template-areas:\n 'leadingVisual leadingVisual'\n 'icon icon'\n 'label label'\n 'heading heading'\n 'description description'\n 'tokens tokens'\n 'action action'\n 'image image';\n}\n\n.Card--align-center .Card--imagePos-block-end.Card--tokensPosition-block-end {\n grid-template-areas:\n 'leadingVisual'\n 'icon'\n 'label'\n 'heading'\n 'description'\n 'tokens'\n 'action'\n 'image';\n}\n\n.Card--hasLeadingVisual {\n padding: var(--base-size-64) var(--base-size-40);\n}\n\n.Card--imagePos-block-end .Card__image {\n margin-bottom: 0;\n margin-top: var(--base-size-28);\n}\n\n.Card--maxWidth {\n max-width: var(--brand-Card-maxWidth);\n}\n\n.Card--fullWidth {\n max-width: unset;\n}\n\n.Card--variant-minimal {\n padding: 0;\n}\n\n.Card--align-center .Card--variant-minimal {\n padding: 0;\n}\n\n.Card--ctaVariant-arrow {\n --Card-arrowAction-endInset: var(--base-size-40);\n}\n\n.Card:hover {\n text-decoration: none;\n}\n\n.Card__link {\n color: currentColor;\n text-decoration: none !important;\n}\n\n.Card__link code,\n.Card__description code {\n font-size: inherit;\n font-family: var(--brand-fontStack-monospace);\n background-color: var(--brand-color-canvas-subtle);\n padding: 0 var(--base-size-4) var(--base-size-2);\n margin-inline: var(--base-size-2);\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-default);\n border-radius: var(--brand-borderRadius-small);\n box-shadow: var(--brand-borderWidth-thin) var(--brand-borderWidth-thin) 0 0 var(--brand-color-border-default);\n}\n\n.Card__description code {\n padding: var(--base-size-2) var(--base-size-4) 0;\n}\n.Card__link:has(code) {\n line-height: calc(1lh * 1.4);\n}\n\n.Card__description.Card__description:has(code) {\n line-height: calc(1lh * 1.25);\n}\n\n.Card--disableAnimation:hover .Card__link {\n text-decoration: underline !important;\n}\n\n/* The focus outline will appear around the entire card, not just the title */\n.Card__link:focus {\n outline: none;\n}\n\n.Card__link::before {\n content: '';\n position: absolute;\n inset: 0;\n}\n\n.Card--border {\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-default);\n border-radius: var(--brand-borderRadius-medium);\n}\n\n.Card__outer {\n height: 100%;\n}\n\n.Card__outer:has(.Card--variant-minimal) {\n border-radius: var(--brand-borderRadius-small);\n}\n\n.Card__outer:focus-within {\n outline: var(--brand-borderWidth-thick) solid var(--brand-color-focus);\n border-radius: var(--brand-borderRadius-medium);\n}\n\n.Card__outer:has(.Card--variant-minimal):focus-within {\n outline-offset: var(\n --base-size-12\n ); /* This value is adjusted so that, when combined with the container's border radius, the total border radius equals `var(--brand-borderRadius-medium)` */\n}\n\n.Card:not(.Card--disableAnimation):hover {\n transform: scale3d(1.025, 1.025, 1);\n}\n\n.Card__image {\n margin-block-end: var(--base-size-28);\n border-radius: var(--brand-borderRadius-medium);\n overflow: hidden;\n grid-area: image;\n}\n\n.Card__image img,\n.Card__image picture,\n.Card__image span {\n display: block;\n}\n\n.Card__leadingVisual {\n margin-block-end: var(--base-size-36);\n display: flex;\n align-items: center;\n grid-area: leadingVisual;\n}\n\n.Card--align-center .Card__leadingVisual {\n justify-content: center;\n}\n\n.Card__leadingVisualItem {\n display: block;\n max-width: 100%;\n height: var(--base-size-40);\n width: auto;\n}\n\n.Card__icon {\n margin-bottom: var(--base-size-24);\n grid-area: icon;\n}\n\n.Card__tokens {\n display: flex;\n flex-wrap: wrap;\n gap: var(--base-size-8);\n grid-area: tokens;\n margin-bottom: var(--base-size-20);\n}\n\n.Card--align-center .Card__tokens {\n justify-content: center;\n}\n\n.Card__tokens--position-block-end {\n margin-block-start: var(--base-size-20);\n margin-block-end: 0;\n}\n\n.Card__label {\n margin-block-end: var(--base-size-20);\n grid-area: label;\n inline-size: fit-content;\n max-inline-size: 100%;\n}\n\n.Card__heading {\n margin-block-end: var(--base-size-12);\n grid-area: heading;\n}\n\n.Card__description {\n margin-block-end: var(--base-size-24);\n grid-area: description;\n}\n\n.Card__action {\n grid-area: action;\n margin-block-start: auto;\n display: inline-flex;\n align-items: center;\n max-inline-size: 100%;\n pointer-events: none;\n}\n\n.Card__actionIcon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.Card__actionLabel {\n display: block;\n min-inline-size: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.Card:not(.Card--ctaVariant-arrow) .Card__action {\n inline-size: 100%;\n min-inline-size: 0;\n}\n\n.Card:not(.Card--ctaVariant-arrow) .Card__action > span:first-child {\n min-inline-size: 0;\n}\n\n.Card:not(.Card--ctaVariant-arrow) .Card__actionLabel {\n overflow: visible;\n text-overflow: clip;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.Card--align-center:not(.Card--ctaVariant-arrow) .Card__actionLabel {\n text-align: center;\n}\n\n.Card__actionLabelClip {\n --actionLabelClip-duration: 400ms;\n display: inline-flex;\n flex: 1 1 auto;\n align-items: center;\n align-self: stretch;\n min-inline-size: 0;\n overflow: hidden;\n max-inline-size: 0;\n background-color: transparent;\n opacity: 0;\n transform: translateX(calc(var(--base-size-12) * -1));\n transition: max-inline-size var(--actionLabelClip-duration) var(--brand-Card-animation-easing),\n opacity var(--actionLabelClip-duration) ease-out, transform var(--actionLabelClip-duration) ease-out,\n margin-inline var(--actionLabelClip-duration) ease-out, padding-inline var(--actionLabelClip-duration) ease-out;\n}\n\n.Card--tokensPosition-block-end .Card__action {\n margin-block-start: var(--base-size-20);\n}\n\n.Card__action--arrowOnly {\n --actionArrow-duration: 300ms;\n\n margin-block-start: var(--base-size-20);\n min-height: var(--base-size-40);\n width: auto;\n min-inline-size: 0;\n max-inline-size: calc(100% - var(--Card-arrowAction-endInset));\n justify-content: flex-start;\n column-gap: 0;\n padding-block: var(--base-size-4);\n padding-inline: 0;\n border: var(--brand-borderWidth-thin) solid transparent;\n border-radius: var(--brand-borderRadius-full);\n background-color: transparent;\n flex-shrink: 0;\n overflow: hidden;\n transition: border-color var(--actionArrow-duration) ease-out, background-color var(--actionArrow-duration) ease-out,\n column-gap var(--actionArrow-duration) ease-out, padding-inline var(--actionArrow-duration) ease-out;\n}\n\n.Card__actionIcon--arrowOnly {\n width: var(--base-size-32);\n min-width: var(--base-size-32);\n height: var(--base-size-32);\n min-height: var(--base-size-32);\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-default);\n border-radius: var(--brand-borderRadius-full);\n background-color: var(--brand-color-canvas-default);\n}\n\n.Card--align-center .Card__action {\n justify-content: center;\n}\n\n.Card__action,\n.Card__action span {\n color: var(--brand-Link-color-accent);\n}\n\n.Card__action,\n.Card__action * {\n cursor: inherit;\n}\n\n.Card--skew:focus-within {\n outline: var(--brand-borderWidth-thick) solid var(--brand-color-focus);\n}\n\n.Card--skew:hover .Card__torch {\n opacity: 0.85;\n}\n\n.Card__skew-bounding {\n border-radius: var(--brand-borderRadius-medium);\n position: relative;\n overflow: hidden;\n z-index: 1;\n height: 100%;\n background-color: var(--brand-Card-background-default);\n}\n\n.Card__torch {\n width: 650px;\n height: 650px;\n background-color: var(--brand-color-accent-primary);\n filter: blur(180px);\n border-radius: 300px;\n opacity: 0;\n transition: opacity 1.2s cubic-bezier(0.16, 1, 0.3, 1);\n mix-blend-mode: soft-light;\n will-change: transform;\n pointer-events: none;\n position: absolute;\n bottom: 0;\n right: 0;\n z-index: -1;\n}\n\n.Card--expandableArrow {\n margin-inline-start: var(--base-size-4);\n}\n\n.Card--ctaVariant-arrow .Card--expandableArrow {\n --ExpandableArrow-duration: var(--brand-Card-animation-duration);\n --ExpandableArrow-easing: var(--brand-Card-animation-easing);\n}\n\n.Card__actionIcon--arrowOnly .Card--expandableArrow {\n margin-inline-start: 0;\n}\n\n.Card--ctaVariant-arrow .Card__description {\n margin-bottom: var(--base-size-12);\n}\n\n.Card--ctaVariant-arrow:not(.Card--disableAnimation):hover {\n transform: none;\n}\n\n.Card--ctaVariant-arrow .Card__action {\n min-inline-size: 0;\n justify-self: start;\n}\n\n.Card--align-center .Card--ctaVariant-arrow .Card__action {\n justify-self: center;\n}\n\n.Card--ctaVariant-arrow:is(:hover, :focus-within) .Card__action--arrowOnly {\n column-gap: var(--base-size-8);\n padding-inline-start: var(--base-size-12);\n padding-inline-end: var(--base-size-4);\n border-color: var(--brand-color-border-default);\n background-color: var(--brand-Card-background-overlay);\n}\n\n.Card--ctaVariant-arrow:is(:hover, :focus-within) .Card__actionLabelClip {\n max-inline-size: 100%;\n opacity: 1;\n transform: translateX(0);\n margin-inline-start: calc(var(--base-size-12) * -1);\n margin-inline-end: 0;\n padding-inline-start: var(--base-size-12);\n padding-inline-end: var(--base-size-4);\n}\n\n.Card:is(:hover, :focus-within) .Card--expandableArrow {\n transform: translateX(var(--base-size-2));\n}\n\n.Card:is(:hover, :focus-within) .Card--expandableArrow path:nth-of-type(2) {\n stroke-dashoffset: 20;\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n .Card,\n .Card::before,\n .Card::after,\n .Card * {\n animation: none !important;\n transition: none !important;\n scroll-behavior: auto !important;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Card.module.js","names":[],"sources":["../../src/Card/Card.module.css"],"sourcesContent":[".Card {\n /* Keeps the dynamic height row on the description slot in the default layout so variable-height content fills the card body. */\n --Card-grid-template-rows: auto auto auto auto auto auto 1fr auto;\n\n text-decoration: none;\n color: var(--brand-color-text-default);\n\n padding: var(--brand-Card-padding-block) var(--brand-Card-padding-inline);\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-areas:\n 'image image'\n 'leadingVisual leadingVisual'\n 'icon icon'\n 'tokens tokens'\n 'label label'\n 'heading heading'\n 'description description'\n 'action action';\n flex: auto;\n grid-template-rows: var(--Card-grid-template-rows);\n position: relative;\n height: 100%;\n border-radius: var(--brand-borderRadius-medium);\n}\n\n@media screen and (min-width: 64rem) {\n .Card {\n --brand-Card-padding-inline: var(--base-size-32);\n }\n}\n\n.Card--align-center .Card {\n --brand-Card-padding-block: var(--base-size-64);\n --brand-Card-padding-inline: var(--base-size-40);\n\n text-align: center;\n}\n\n@media screen and (min-width: 64rem) {\n .Card--align-center .Card {\n --brand-Card-padding-inline: var(--base-size-80);\n }\n}\n\n.Card--align-center .Card {\n grid-template-columns: 1fr;\n grid-template-areas:\n 'image'\n 'leadingVisual'\n 'icon'\n 'tokens'\n 'label'\n 'heading'\n 'description'\n 'action';\n justify-items: center;\n}\n\n.Card--backgroundColor-default {\n background-color: var(--brand-Card-background-default);\n}\n\n.Card--backgroundColor-subtle {\n background-color: var(--brand-color-canvas-subtle);\n}\n\n.Card--backgroundColor-none {\n background-color: transparent;\n}\n\n.Card--tokensPosition-block-end {\n /* Moves the dynamic height row from tokens back to description because the block-end layout places tokens below the body copy. */\n --Card-grid-template-rows: auto auto auto auto auto 1fr auto auto;\n\n grid-template-areas:\n 'image image'\n 'leadingVisual leadingVisual'\n 'icon icon'\n 'label label'\n 'heading heading'\n 'description description'\n 'tokens tokens'\n 'action action';\n}\n\n.Card--align-center .Card--tokensPosition-block-end {\n grid-template-areas:\n 'image'\n 'leadingVisual'\n 'icon'\n 'label'\n 'heading'\n 'description'\n 'tokens'\n 'action';\n}\n\n/** Block end image position option */\n.Card--imagePos-block-end {\n /* Moves the dynamic height row from action back to description because the image is rendered after the content in this layout. */\n --Card-grid-template-rows: auto auto auto auto auto 1fr auto auto;\n\n grid-template-areas:\n 'leadingVisual leadingVisual'\n 'icon icon'\n 'tokens tokens'\n 'label label'\n 'heading heading'\n 'description description'\n 'action action'\n 'image image';\n}\n\n.Card--align-center .Card--imagePos-block-end {\n grid-template-areas:\n 'leadingVisual'\n 'icon'\n 'tokens'\n 'label'\n 'heading'\n 'description'\n 'action'\n 'image';\n}\n\n.Card--imagePos-block-end.Card--tokensPosition-block-end {\n /* Moves the dynamic height row from tokens back to description because both the tokens and image are rendered after the body copy here. */\n --Card-grid-template-rows: auto auto auto auto 1fr auto auto auto;\n\n grid-template-areas:\n 'leadingVisual leadingVisual'\n 'icon icon'\n 'label label'\n 'heading heading'\n 'description description'\n 'tokens tokens'\n 'action action'\n 'image image';\n}\n\n.Card--align-center .Card--imagePos-block-end.Card--tokensPosition-block-end {\n grid-template-areas:\n 'leadingVisual'\n 'icon'\n 'label'\n 'heading'\n 'description'\n 'tokens'\n 'action'\n 'image';\n}\n\n.Card--hasLeadingVisual {\n --brand-Card-padding-block: var(--base-size-64);\n --brand-Card-padding-inline: var(--base-size-40);\n}\n\n.Card--imagePos-block-end .Card__image {\n margin-bottom: 0;\n margin-top: var(--base-size-28);\n}\n\n.Card--maxWidth {\n max-width: var(--brand-Card-maxWidth);\n}\n\n.Card--fullWidth {\n max-width: unset;\n}\n\n.Card--variant-minimal {\n padding: 0;\n}\n\n.Card--align-center .Card--variant-minimal {\n padding: 0;\n}\n\n.Card--ctaVariant-arrow {\n --Card-arrowAction-endInset: var(--base-size-40);\n}\n\n.Card:hover {\n text-decoration: none;\n}\n\n.Card__link {\n color: currentColor;\n text-decoration: none !important;\n}\n\n.Card__link code,\n.Card__description code {\n font-size: inherit;\n font-family: var(--brand-fontStack-monospace);\n background-color: var(--brand-color-canvas-subtle);\n padding: 0 var(--base-size-4) var(--base-size-2);\n margin-inline: var(--base-size-2);\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-default);\n border-radius: var(--brand-borderRadius-small);\n box-shadow: var(--brand-borderWidth-thin) var(--brand-borderWidth-thin) 0 0 var(--brand-color-border-default);\n}\n\n.Card__description code {\n padding: var(--base-size-2) var(--base-size-4) 0;\n}\n.Card__link:has(code) {\n line-height: calc(1lh * 1.4);\n}\n\n.Card__description.Card__description:has(code) {\n line-height: calc(1lh * 1.25);\n}\n\n.Card--disableAnimation:hover .Card__link {\n text-decoration: underline !important;\n}\n\n/* The focus outline will appear around the entire card, not just the title */\n.Card__link:focus {\n outline: none;\n}\n\n.Card__link::before {\n content: '';\n position: absolute;\n inset: 0;\n}\n\n.Card--border {\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-default);\n border-radius: var(--brand-borderRadius-medium);\n}\n\n.Card__outer {\n height: 100%;\n}\n\n.Card__outer:has(.Card--variant-minimal) {\n border-radius: var(--brand-borderRadius-small);\n}\n\n.Card__outer:focus-within {\n outline: var(--brand-borderWidth-thick) solid var(--brand-color-focus);\n border-radius: var(--brand-borderRadius-medium);\n}\n\n.Card__outer:has(.Card--variant-minimal):focus-within {\n outline-offset: var(\n --base-size-12\n ); /* This value is adjusted so that, when combined with the container's border radius, the total border radius equals `var(--brand-borderRadius-medium)` */\n}\n\n.Card__image {\n margin-block-end: var(--base-size-28);\n border-radius: var(--brand-borderRadius-medium);\n overflow: hidden;\n grid-area: image;\n}\n\n.Card__image--padding-none {\n margin-inline: calc(var(--brand-Card-padding-inline) * -1);\n}\n\n.Card__image--position-block-start.Card__image--padding-none {\n margin-block-start: calc(var(--brand-Card-padding-block) * -1);\n}\n\n.Card__image--position-block-end.Card__image--padding-none {\n margin-block-end: calc(var(--brand-Card-padding-block) * -1);\n}\n\n.Card--border .Card__image--position-block-start.Card__image--padding-none {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n}\n\n.Card--border .Card__image--position-block-end.Card__image--padding-none {\n border-block-start: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n}\n\n.Card--variant-minimal .Card__image--padding-none {\n margin-inline: 0;\n}\n\n.Card--variant-minimal .Card__image--position-block-start.Card__image--padding-none {\n margin-block-start: 0;\n}\n\n.Card--variant-minimal .Card__image--position-block-end.Card__image--padding-none {\n margin-block-end: 0;\n}\n\n.Card__image img,\n.Card__image picture,\n.Card__image span {\n display: block;\n}\n\n.Card__leadingVisual {\n margin-block-end: var(--base-size-36);\n display: flex;\n align-items: center;\n grid-area: leadingVisual;\n}\n\n.Card--align-center .Card__leadingVisual {\n justify-content: center;\n}\n\n.Card__leadingVisualItem {\n display: block;\n max-width: 100%;\n height: var(--base-size-40);\n width: auto;\n}\n\n.Card__icon {\n margin-bottom: var(--base-size-24);\n grid-area: icon;\n}\n\n.Card__tokens {\n display: flex;\n flex-wrap: wrap;\n gap: var(--base-size-8);\n grid-area: tokens;\n margin-bottom: var(--base-size-20);\n}\n\n.Card--align-center .Card__tokens {\n justify-content: center;\n}\n\n.Card__tokens--position-block-end {\n margin-block-start: var(--base-size-20);\n margin-block-end: 0;\n}\n\n.Card__label {\n margin-block-end: var(--base-size-20);\n grid-area: label;\n inline-size: fit-content;\n max-inline-size: 100%;\n}\n\n.Card__heading {\n margin-block-end: var(--base-size-12);\n grid-area: heading;\n}\n\n.Card__description {\n margin-block-end: var(--base-size-24);\n grid-area: description;\n}\n\n.Card__action {\n grid-area: action;\n margin-block-start: auto;\n display: inline-flex;\n align-items: center;\n max-inline-size: 100%;\n pointer-events: none;\n}\n\n.Card__actionIcon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.Card__actionLabel {\n display: block;\n min-inline-size: 0;\n overflow: visible;\n text-overflow: clip;\n white-space: normal;\n}\n\n.Card:not(.Card--ctaVariant-arrow) .Card__action {\n inline-size: 100%;\n min-inline-size: 0;\n}\n\n.Card:not(.Card--ctaVariant-arrow) .Card__action > span:first-child {\n min-inline-size: 0;\n}\n\n.Card:not(.Card--ctaVariant-arrow) .Card__actionLabel {\n overflow: visible;\n text-overflow: clip;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.Card--align-center:not(.Card--ctaVariant-arrow) .Card__actionLabel {\n text-align: center;\n}\n\n.Card__actionLabelClip {\n display: contents;\n}\n\n.Card--tokensPosition-block-end .Card__action {\n margin-block-start: var(--base-size-20);\n}\n\n.Card__action--arrowOnly {\n --actionArrow-duration: 300ms;\n\n margin-block-start: var(--base-size-20);\n min-height: var(--base-size-40);\n width: auto;\n min-inline-size: 0;\n max-inline-size: calc(100% - var(--Card-arrowAction-endInset));\n justify-content: flex-start;\n column-gap: var(--base-size-8);\n padding-block: var(--base-size-4);\n padding-inline-start: var(--base-size-12);\n padding-inline-end: var(--base-size-4);\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-default);\n border-radius: var(--brand-borderRadius-full);\n background-color: var(--brand-Card-background-overlay);\n flex-shrink: 0;\n overflow: hidden;\n}\n\n.Card__actionIcon--arrowOnly {\n width: var(--base-size-32);\n min-width: var(--base-size-32);\n height: var(--base-size-32);\n min-height: var(--base-size-32);\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-default);\n border-radius: var(--brand-borderRadius-full);\n background-color: var(--brand-color-canvas-default);\n}\n\n.Card--align-center .Card__action {\n justify-content: center;\n}\n\n.Card__action,\n.Card__action span {\n color: var(--brand-Link-color-accent);\n}\n\n.Card__action,\n.Card__action * {\n cursor: inherit;\n}\n\n.Card--skew:focus-within {\n outline: var(--brand-borderWidth-thick) solid var(--brand-color-focus);\n}\n\n.Card--skew:hover .Card__torch {\n opacity: 0.85;\n}\n\n.Card__skew-bounding {\n border-radius: var(--brand-borderRadius-medium);\n position: relative;\n overflow: hidden;\n z-index: 1;\n height: 100%;\n background-color: var(--brand-Card-background-default);\n}\n\n.Card__torch {\n width: 650px;\n height: 650px;\n background-color: var(--brand-color-accent-primary);\n filter: blur(180px);\n border-radius: 300px;\n opacity: 0;\n transition: opacity 1.2s cubic-bezier(0.16, 1, 0.3, 1);\n mix-blend-mode: soft-light;\n will-change: transform;\n pointer-events: none;\n position: absolute;\n bottom: 0;\n right: 0;\n z-index: -1;\n}\n\n.Card--expandableArrow {\n margin-inline-start: var(--base-size-4);\n}\n\n.Card--ctaVariant-arrow .Card--expandableArrow {\n --ExpandableArrow-duration: var(--brand-Card-animation-duration);\n --ExpandableArrow-easing: var(--brand-Card-animation-easing);\n}\n\n.Card__actionIcon--arrowOnly .Card--expandableArrow {\n margin-inline-start: 0;\n}\n\n.Card--ctaVariant-arrow .Card__description {\n margin-bottom: var(--base-size-12);\n}\n\n.Card--ctaVariant-arrow .Card__action {\n min-inline-size: 0;\n justify-self: start;\n}\n\n@media (hover: hover) {\n .Card__action--arrowOnly {\n column-gap: 0;\n padding-inline: 0;\n border-color: transparent;\n background-color: transparent;\n transition: border-color var(--actionArrow-duration) ease-out, background-color var(--actionArrow-duration) ease-out,\n column-gap var(--actionArrow-duration) ease-out, padding-inline var(--actionArrow-duration) ease-out;\n }\n\n .Card__actionLabelClip {\n --actionLabelClip-duration: 400ms;\n\n display: inline-flex;\n flex: 1 1 auto;\n align-items: center;\n align-self: stretch;\n min-inline-size: 0;\n overflow: hidden;\n max-inline-size: 0;\n background-color: transparent;\n opacity: 0;\n transform: translateX(calc(var(--base-size-12) * -1));\n margin-inline: 0;\n padding-inline: 0;\n transition: max-inline-size var(--actionLabelClip-duration) var(--brand-Card-animation-easing),\n opacity var(--actionLabelClip-duration) ease-out, transform var(--actionLabelClip-duration) ease-out,\n margin-inline var(--actionLabelClip-duration) ease-out, padding-inline var(--actionLabelClip-duration) ease-out;\n }\n\n .Card--ctaVariant-arrow .Card__actionLabel {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.Card--align-center .Card--ctaVariant-arrow .Card__action {\n justify-self: center;\n}\n\n.Card--ctaVariant-arrow:is(:hover, :focus-within) .Card__action--arrowOnly {\n column-gap: var(--base-size-8);\n padding-inline-start: var(--base-size-12);\n padding-inline-end: var(--base-size-4);\n border-color: var(--brand-color-border-default);\n background-color: var(--brand-Card-background-overlay);\n}\n\n.Card--ctaVariant-arrow:is(:hover, :focus-within) .Card__actionLabelClip {\n max-inline-size: 100%;\n opacity: 1;\n transform: translateX(0);\n margin-inline-start: calc(var(--base-size-12) * -1);\n margin-inline-end: 0;\n padding-inline-start: var(--base-size-12);\n padding-inline-end: var(--base-size-4);\n}\n\n.Card:is(:hover, :focus-within) .Card--expandableArrow {\n transform: translateX(var(--base-size-2));\n}\n\n.Card:is(:hover, :focus-within) .Card--expandableArrow path:nth-of-type(2) {\n stroke-dashoffset: 20;\n}\n\n.Card--disableAnimation,\n.Card--disableAnimation * {\n animation: none;\n transition: none;\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n .Card,\n .Card::before,\n .Card::after,\n .Card * {\n animation: none !important;\n transition: none !important;\n scroll-behavior: auto !important;\n }\n}\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ .Primer_Brand__FAQ-module__FAQ___fhKat{max-width:var(--brand-FAQ-maxWidth-list);margin:0 auto}.Primer_Brand__FAQ-module__FAQ--variant-gridline___oIn0f{border-block-end:var(--brand-color-border-muted) var(--brand-borderWidth-thin) solid;max-width:100%;padding-block-end:var(--base-size-40)}.Primer_Brand__FAQ-module__FAQ__content-wrapper--gridline___AWSUU{padding-inline:var(--base-size-20);max-width:var(--brand-FAQ-maxWidth-list);margin:0 auto}.Primer_Brand__FAQ-module__FAQ__heading-wrapper--gridline___c4m3j{padding-inline:var(--base-size-20);border-block-end:var(--brand-color-border-muted) var(--brand-borderWidth-thin) solid;margin-block-end:var(--base-size-40)}.Primer_Brand__FAQ-module__FAQ__heading___8eTS4{color:var(--brand-FAQ-color-heading);margin-bottom:var(--brand-FAQ-heading-marginBottom)}.Primer_Brand__FAQ-module__FAQ__subheading___AVw7m{margin-bottom:var(--base-size-16);color:var(--brand-color-text-muted);text-transform:uppercase;font-size:var(--brand-text-size-100);line-height:var(--brand-text-lineHeight-100)}.Primer_Brand__FAQ-module__FAQ__heading--start___frhvf{text-align:left}.Primer_Brand__FAQ-module__FAQ__heading--center___dED8A{text-align:center;max-width:18ch;margin-left:auto;margin-right:auto}.Primer_Brand__FAQ-module__FAQ__heading--large___v8f53{font-weight:var(--brand-text-weight-normal);font-size:var(--brand-text-size-800);line-height:var(--brand-text-lineHeight-800);letter-spacing:var(--brand-text-letterSpacing-800)}.Primer_Brand__FAQ-module__FAQ___fhKat details+.Primer_Brand__FAQ-module__FAQ__subheading___AVw7m{margin-top:var(--base-size-48)}.Primer_Brand__FAQ-module__FAQ___fhKat.Primer_Brand__FAQ-module__details__summary___1sVQ4{font-weight:var(--brand-text-weight-normal);font-size:var(--brand-text-size-800);line-height:var(--brand-text-lineHeight-800);letter-spacing:var(--brand-text-letterSpacing-800);color:var(--brand-FAQ-color-heading);cursor:pointer;background:0 0;border:none;outline:none;margin:0;padding:0}@media screen and (width>=48rem){.Primer_Brand__FAQ-module__FAQ__content-wrapper--gridline___AWSUU,.Primer_Brand__FAQ-module__FAQ__heading-wrapper--gridline___c4m3j{padding-inline:var(--base-size-36)}}@media screen and (width>=63.25rem){.Primer_Brand__FAQ-module__FAQ__content-wrapper--gridline___AWSUU,.Primer_Brand__FAQ-module__FAQ__heading-wrapper--gridline___c4m3j{padding-inline:0}.Primer_Brand__FAQ-module__FAQ__heading-wrapper--gridline___c4m3j{margin-block-end:var(--base-size-48)}.Primer_Brand__FAQ-module__FAQ--variant-gridline___oIn0f{padding-block-end:var(--base-size-64)}}
@@ -1,4 +1,4 @@
1
- import './FAQ.module-C8rxdU0Z.css';var e = {
1
+ import './FAQ.module-BFCs33mw.css';var e = {
2
2
  FAQ: "Primer_Brand__FAQ-module__FAQ___fhKat",
3
3
  "FAQ--variant-gridline": "Primer_Brand__FAQ-module__FAQ--variant-gridline___oIn0f",
4
4
  "FAQ__content-wrapper--gridline": "Primer_Brand__FAQ-module__FAQ__content-wrapper--gridline___AWSUU",
@@ -1 +1 @@
1
- {"version":3,"file":"FAQ.module.js","names":[],"sources":["../../src/FAQ/FAQ.module.css"],"sourcesContent":[".FAQ {\n max-width: var(--brand-FAQ-maxWidth-list);\n margin: 0 auto;\n}\n\n.FAQ--variant-gridline {\n padding-block-end: var(--base-size-40);\n border-block-end: var(--brand-color-border-muted) var(--brand-borderWidth-thin) solid;\n max-width: 100%;\n}\n\n.FAQ__content-wrapper--gridline {\n max-width: var(--brand-FAQ-maxWidth-list);\n margin: 0 auto;\n}\n\n.FAQ__heading-wrapper--gridline {\n border-block-end: var(--brand-color-border-muted) var(--brand-borderWidth-thin) solid;\n margin-block-end: var(--base-size-40);\n}\n\n.FAQ__heading {\n color: var(--brand-FAQ-color-heading);\n margin-bottom: var(--brand-FAQ-heading-marginBottom);\n}\n\n.FAQ__subheading {\n margin-bottom: var(--base-size-16);\n color: var(--brand-color-text-muted);\n text-transform: uppercase;\n font-size: var(--brand-text-size-100);\n line-height: var(--brand-text-lineHeight-100);\n}\n\n.FAQ__heading--start {\n text-align: left;\n}\n\n.FAQ__heading--center {\n text-align: center;\n max-width: 18ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n.FAQ__heading--large {\n /*Visual appearance as a h2*/\n font-weight: var(--brand-text-weight-normal);\n font-size: var(--brand-text-size-800);\n line-height: var(--brand-text-lineHeight-800);\n letter-spacing: var(--brand-text-letterSpacing-800);\n}\n\n.FAQ details + .FAQ__subheading {\n margin-top: var(--base-size-48);\n}\n\n.FAQ.details__summary {\n font-weight: var(--brand-text-weight-normal);\n font-size: var(--brand-text-size-800);\n line-height: var(--brand-text-lineHeight-800);\n letter-spacing: var(--brand-text-letterSpacing-800);\n color: var(--brand-FAQ-color-heading);\n cursor: pointer;\n outline: none;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n}\n\n@media screen and (min-width: 63.25rem) {\n .FAQ__heading-wrapper--gridline {\n margin-block-end: var(--base-size-48);\n }\n\n .FAQ--variant-gridline {\n padding-block-end: var(--base-size-64);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"FAQ.module.js","names":[],"sources":["../../src/FAQ/FAQ.module.css"],"sourcesContent":[".FAQ {\n max-width: var(--brand-FAQ-maxWidth-list);\n margin: 0 auto;\n}\n\n.FAQ--variant-gridline {\n padding-block-end: var(--base-size-40);\n border-block-end: var(--brand-color-border-muted) var(--brand-borderWidth-thin) solid;\n max-width: 100%;\n}\n\n.FAQ__content-wrapper--gridline {\n padding-inline: var(--base-size-20);\n max-width: var(--brand-FAQ-maxWidth-list);\n margin: 0 auto;\n}\n\n.FAQ__heading-wrapper--gridline {\n padding-inline: var(--base-size-20);\n border-block-end: var(--brand-color-border-muted) var(--brand-borderWidth-thin) solid;\n margin-block-end: var(--base-size-40);\n}\n\n.FAQ__heading {\n color: var(--brand-FAQ-color-heading);\n margin-bottom: var(--brand-FAQ-heading-marginBottom);\n}\n\n.FAQ__subheading {\n margin-bottom: var(--base-size-16);\n color: var(--brand-color-text-muted);\n text-transform: uppercase;\n font-size: var(--brand-text-size-100);\n line-height: var(--brand-text-lineHeight-100);\n}\n\n.FAQ__heading--start {\n text-align: left;\n}\n\n.FAQ__heading--center {\n text-align: center;\n max-width: 18ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n.FAQ__heading--large {\n /*Visual appearance as a h2*/\n font-weight: var(--brand-text-weight-normal);\n font-size: var(--brand-text-size-800);\n line-height: var(--brand-text-lineHeight-800);\n letter-spacing: var(--brand-text-letterSpacing-800);\n}\n\n.FAQ details + .FAQ__subheading {\n margin-top: var(--base-size-48);\n}\n\n.FAQ.details__summary {\n font-weight: var(--brand-text-weight-normal);\n font-size: var(--brand-text-size-800);\n line-height: var(--brand-text-lineHeight-800);\n letter-spacing: var(--brand-text-letterSpacing-800);\n color: var(--brand-FAQ-color-heading);\n cursor: pointer;\n outline: none;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n}\n\n@media screen and (min-width: 48rem) {\n .FAQ__content-wrapper--gridline,\n .FAQ__heading-wrapper--gridline {\n padding-inline: var(--base-size-36);\n }\n}\n\n@media screen and (min-width: 63.25rem) {\n .FAQ__content-wrapper--gridline,\n .FAQ__heading-wrapper--gridline {\n padding-inline: 0;\n }\n\n .FAQ__heading-wrapper--gridline {\n margin-block-end: var(--base-size-48);\n }\n\n .FAQ--variant-gridline {\n padding-block-end: var(--base-size-64);\n }\n}\n"],"mappings":""}
@@ -0,0 +1,65 @@
1
+ import React, { type ComponentPropsWithoutRef } from 'react';
2
+ export type MinimalVideoPlayerProps = Omit<ComponentPropsWithoutRef<'video'>, 'autoPlay' | 'controls' | 'defaultMuted' | 'muted' | 'onVolumeChange' | 'playsInline' | 'title'> & {
3
+ /**
4
+ * Plays the video when it is visible.
5
+ * @default true
6
+ */
7
+ autoPlay?: boolean;
8
+ /**
9
+ * Provides an accessible name for the video.
10
+ */
11
+ title: string;
12
+ /**
13
+ * Customizable labels for the internal play and pause control.
14
+ */
15
+ internalAccessibleLabels?: {
16
+ play: string;
17
+ pause: string;
18
+ };
19
+ ['data-testid']?: string;
20
+ };
21
+ export declare const _MinimalVideoPlayer: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, "ref">, "title" | "autoPlay" | "controls" | "muted" | "playsInline" | "onVolumeChange" | "defaultMuted"> & {
22
+ /**
23
+ * Plays the video when it is visible.
24
+ * @default true
25
+ */
26
+ autoPlay?: boolean;
27
+ /**
28
+ * Provides an accessible name for the video.
29
+ */
30
+ title: string;
31
+ /**
32
+ * Customizable labels for the internal play and pause control.
33
+ */
34
+ internalAccessibleLabels?: {
35
+ play: string;
36
+ pause: string;
37
+ };
38
+ "data-testid"?: string;
39
+ } & React.RefAttributes<HTMLVideoElement>>;
40
+ export declare const MinimalVideoPlayer: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, "ref">, "title" | "autoPlay" | "controls" | "muted" | "playsInline" | "onVolumeChange" | "defaultMuted"> & {
41
+ /**
42
+ * Plays the video when it is visible.
43
+ * @default true
44
+ */
45
+ autoPlay?: boolean;
46
+ /**
47
+ * Provides an accessible name for the video.
48
+ */
49
+ title: string;
50
+ /**
51
+ * Customizable labels for the internal play and pause control.
52
+ */
53
+ internalAccessibleLabels?: {
54
+ play: string;
55
+ pause: string;
56
+ };
57
+ "data-testid"?: string;
58
+ } & React.RefAttributes<HTMLVideoElement>> & {
59
+ testIds: {
60
+ root: string;
61
+ readonly video: string;
62
+ readonly control: string;
63
+ };
64
+ };
65
+ //# sourceMappingURL=MinimalVideoPlayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MinimalVideoPlayer.d.ts","sourceRoot":"","sources":["../../src/MinimalVideoPlayer/MinimalVideoPlayer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAa,KAAK,wBAAwB,EAAC,MAAM,OAAO,CAAA;AAMtE,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,wBAAwB,CAAC,OAAO,CAAC,EACjC,UAAU,GAAG,UAAU,GAAG,cAAc,GAAG,OAAO,GAAG,gBAAgB,GAAG,aAAa,GAAG,OAAO,CAChG,GAAG;IACF;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,wBAAwB,CAAC,EAAE;QACzB,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAiBD,eAAO,MAAM,mBAAmB;IAlC9B;;;OAGG;eACQ,OAAO;IAClB;;OAEG;WACI,MAAM;IACb;;OAEG;+BACwB;QACzB,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;KACd;oBACiB,MAAM;0CAiGzB,CAAA;AAED,eAAO,MAAM,kBAAkB;IAnH7B;;;OAGG;eACQ,OAAO;IAClB;;OAEG;WACI,MAAM;IACb;;OAEG;+BACwB;QACzB,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;KACd;oBACiB,MAAM;;;;;;;CAmGqD,CAAA"}
@@ -0,0 +1,76 @@
1
+ import e from "../node_modules/clsx/dist/clsx.js";
2
+ import { useReducedMotion as t } from "../hooks/useReducedMotion.js";
3
+ import { PauseIcon as n } from "../node_modules/@primer/octicons-react/dist/index.esm.js";
4
+ import { useMinimalVideoPlayback as r } from "./useMinimalVideoPlayback.js";
5
+ import i from "./MinimalVideoPlayer.module.js";
6
+ import { forwardRef as a } from "react";
7
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
8
+ //#region src/MinimalVideoPlayer/MinimalVideoPlayer.tsx
9
+ var c = {
10
+ play: "Play video",
11
+ pause: "Pause video"
12
+ }, l = {
13
+ root: "MinimalVideoPlayer",
14
+ get video() {
15
+ return `${this.root}-video`;
16
+ },
17
+ get control() {
18
+ return `${this.root}-control`;
19
+ }
20
+ }, u = a(({ autoPlay: a = !0, children: u, className: d, "data-testid": f, internalAccessibleLabels: p = c, loop: m = !0, onEnded: h, onPause: g, onPlay: _, onPlaying: v, title: y, ...b }, x) => {
21
+ let { handlePlaybackEnded: S, handlePlaybackPaused: C, handlePlaybackStarted: w, isPlaying: T, togglePlayback: E, videoRef: D } = r({
22
+ autoPlay: a,
23
+ forwardedRef: x,
24
+ prefersReducedMotion: t()
25
+ });
26
+ return /* @__PURE__ */ s("div", {
27
+ className: i.MinimalVideoPlayer,
28
+ "data-testid": f || l.root,
29
+ children: [/* @__PURE__ */ o("video", {
30
+ ...b,
31
+ ref: D,
32
+ autoPlay: !1,
33
+ className: e(i.MinimalVideoPlayer__video, d),
34
+ controls: !1,
35
+ "data-testid": l.video,
36
+ loop: m,
37
+ muted: !0,
38
+ onEnded: (e) => {
39
+ S(), h?.(e);
40
+ },
41
+ onPause: (e) => {
42
+ C(), g?.(e);
43
+ },
44
+ onPlay: (e) => {
45
+ w(), _?.(e);
46
+ },
47
+ onPlaying: (e) => {
48
+ w(), v?.(e);
49
+ },
50
+ playsInline: !0,
51
+ title: y,
52
+ children: u
53
+ }), /* @__PURE__ */ o("button", {
54
+ "aria-label": T ? p.pause : p.play,
55
+ className: i.MinimalVideoPlayer__control,
56
+ "data-testid": l.control,
57
+ onClick: E,
58
+ type: "button",
59
+ children: T ? /* @__PURE__ */ o(n, { "aria-hidden": "true" }) : /* @__PURE__ */ o("svg", {
60
+ width: "16",
61
+ height: "16",
62
+ viewBox: "0 0 16 16",
63
+ fill: "none",
64
+ xmlns: "http://www.w3.org/2000/svg",
65
+ children: /* @__PURE__ */ o("path", {
66
+ d: "M13.3777 6.94756C14.2069 7.40341 14.2069 8.59489 13.3777 9.05073L5.37808 13.4483C4.57834 13.8879 3.60001 13.3093 3.60001 12.3967L3.60001 3.60161C3.60001 2.689 4.57834 2.1104 5.37808 2.55003L13.3777 6.94756Z",
67
+ fill: "currentColor"
68
+ })
69
+ })
70
+ })]
71
+ });
72
+ }), d = Object.assign(u, { testIds: l });
73
+ //#endregion
74
+ export { d as MinimalVideoPlayer, u as _MinimalVideoPlayer };
75
+
76
+ //# sourceMappingURL=MinimalVideoPlayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MinimalVideoPlayer.js","names":[],"sources":["../../src/MinimalVideoPlayer/MinimalVideoPlayer.tsx"],"sourcesContent":["import {clsx} from 'clsx'\nimport {PauseIcon} from '@primer/octicons-react'\nimport React, {forwardRef, type ComponentPropsWithoutRef} from 'react'\n\nimport {useReducedMotion} from '../hooks/useReducedMotion'\nimport {useMinimalVideoPlayback} from './useMinimalVideoPlayback'\nimport styles from './MinimalVideoPlayer.module.css'\n\nexport type MinimalVideoPlayerProps = Omit<\n ComponentPropsWithoutRef<'video'>,\n 'autoPlay' | 'controls' | 'defaultMuted' | 'muted' | 'onVolumeChange' | 'playsInline' | 'title'\n> & {\n /**\n * Plays the video when it is visible.\n * @default true\n */\n autoPlay?: boolean\n /**\n * Provides an accessible name for the video.\n */\n title: string\n /**\n * Customizable labels for the internal play and pause control.\n */\n internalAccessibleLabels?: {\n play: string\n pause: string\n }\n ['data-testid']?: string\n}\n\nconst defaultInternalAccessibleLabels = {\n play: 'Play video',\n pause: 'Pause video',\n}\n\nconst testIds = {\n root: 'MinimalVideoPlayer',\n get video() {\n return `${this.root}-video`\n },\n get control() {\n return `${this.root}-control`\n },\n}\n\nexport const _MinimalVideoPlayer = forwardRef<HTMLVideoElement, MinimalVideoPlayerProps>(\n (\n {\n autoPlay = true,\n children,\n className,\n 'data-testid': testId,\n internalAccessibleLabels = defaultInternalAccessibleLabels,\n loop = true,\n onEnded,\n onPause,\n onPlay,\n onPlaying,\n title,\n ...rest\n },\n forwardedRef,\n ) => {\n const prefersReducedMotion = useReducedMotion()\n const {handlePlaybackEnded, handlePlaybackPaused, handlePlaybackStarted, isPlaying, togglePlayback, videoRef} =\n useMinimalVideoPlayback({\n autoPlay,\n forwardedRef,\n prefersReducedMotion,\n })\n\n return (\n <div className={styles.MinimalVideoPlayer} data-testid={testId || testIds.root}>\n <video\n {...rest}\n ref={videoRef}\n autoPlay={false}\n className={clsx(styles.MinimalVideoPlayer__video, className)}\n controls={false}\n data-testid={testIds.video}\n loop={loop}\n muted\n onEnded={event => {\n handlePlaybackEnded()\n onEnded?.(event)\n }}\n onPause={event => {\n handlePlaybackPaused()\n onPause?.(event)\n }}\n onPlay={event => {\n handlePlaybackStarted()\n onPlay?.(event)\n }}\n onPlaying={event => {\n handlePlaybackStarted()\n onPlaying?.(event)\n }}\n playsInline\n title={title}\n >\n {children}\n </video>\n <button\n aria-label={isPlaying ? internalAccessibleLabels.pause : internalAccessibleLabels.play}\n className={styles.MinimalVideoPlayer__control}\n data-testid={testIds.control}\n onClick={togglePlayback}\n type=\"button\"\n >\n {isPlaying ? (\n <PauseIcon aria-hidden=\"true\" />\n ) : (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M13.3777 6.94756C14.2069 7.40341 14.2069 8.59489 13.3777 9.05073L5.37808 13.4483C4.57834 13.8879 3.60001 13.3093 3.60001 12.3967L3.60001 3.60161C3.60001 2.689 4.57834 2.1104 5.37808 2.55003L13.3777 6.94756Z\"\n fill=\"currentColor\"\n />\n </svg>\n )}\n </button>\n </div>\n )\n },\n)\n\nexport const MinimalVideoPlayer = Object.assign(_MinimalVideoPlayer, {testIds})\n"],"mappings":";;;;;;;;AA+BA,IAAM,IAAkC;CACtC,MAAM;CACN,OAAO;CACR,EAEK,IAAU;CACd,MAAM;CACN,IAAI,QAAQ;AACV,SAAO,GAAG,KAAK,KAAK;;CAEtB,IAAI,UAAU;AACZ,SAAO,GAAG,KAAK,KAAK;;CAEvB,EAEY,IAAsB,GAE/B,EACE,cAAW,IACX,aACA,cACA,eAAe,GACf,8BAA2B,GAC3B,UAAO,IACP,YACA,YACA,WACA,cACA,UACA,GAAG,KAEL,MACG;CAEH,IAAM,EAAC,wBAAqB,yBAAsB,0BAAuB,cAAW,mBAAgB,gBAClG,EAAwB;EACtB;EACA;EACA,sBALyB,GAKzB;EACD,CAAC;AAEJ,QACE,kBAAC,OAAD;EAAK,WAAW,EAAO;EAAoB,eAAa,KAAU,EAAQ;YAA1E,CACE,kBAAC,SAAD;GACE,GAAI;GACJ,KAAK;GACL,UAAU;GACV,WAAW,EAAK,EAAO,2BAA2B,EAAU;GAC5D,UAAU;GACV,eAAa,EAAQ;GACf;GACN,OAAA;GACA,UAAS,MAAS;AAEhB,IADA,GAAqB,EACrB,IAAU,EAAM;;GAElB,UAAS,MAAS;AAEhB,IADA,GAAsB,EACtB,IAAU,EAAM;;GAElB,SAAQ,MAAS;AAEf,IADA,GAAuB,EACvB,IAAS,EAAM;;GAEjB,YAAW,MAAS;AAElB,IADA,GAAuB,EACvB,IAAY,EAAM;;GAEpB,aAAA;GACO;GAEN;GACK,CAAA,EACR,kBAAC,UAAD;GACE,cAAY,IAAY,EAAyB,QAAQ,EAAyB;GAClF,WAAW,EAAO;GAClB,eAAa,EAAQ;GACrB,SAAS;GACT,MAAK;aAEJ,IACC,kBAAC,GAAD,EAAW,eAAY,QAAS,CAAA,GAEhC,kBAAC,OAAD;IAAK,OAAM;IAAK,QAAO;IAAK,SAAQ;IAAY,MAAK;IAAO,OAAM;cAChE,kBAAC,QAAD;KACE,GAAE;KACF,MAAK;KACL,CAAA;IACE,CAAA;GAED,CAAA,CACL;;EAGX,EAEY,IAAqB,OAAO,OAAO,GAAqB,EAAC,YAAQ,CAAC"}
@@ -0,0 +1 @@
1
+ .Primer_Brand__MinimalVideoPlayer-module__MinimalVideoPlayer___s8ncI{width:100%;position:relative}.Primer_Brand__MinimalVideoPlayer-module__MinimalVideoPlayer__video___f5cBj{width:100%;display:block}.Primer_Brand__MinimalVideoPlayer-module__MinimalVideoPlayer__control___w7dA_{right:var(--base-size-24);bottom:var(--base-size-24);width:var(--base-size-36);height:var(--base-size-36);color:var(--brand-color-text-muted);cursor:pointer;background-color:var(--brand-color-canvas-muted);border:var(--brand-borderWidth-thin) solid var(--brand-color-border-subtle);border-radius:var(--brand-borderRadius-full);justify-content:center;align-items:center;padding:0;display:flex;position:absolute}.Primer_Brand__MinimalVideoPlayer-module__MinimalVideoPlayer__control___w7dA_:focus-visible{outline:var(--brand-borderWidth-thick) solid var(--brand-color-focus);outline-offset:var(--base-size-2)}.Primer_Brand__MinimalVideoPlayer-module__MinimalVideoPlayer__video___f5cBj[controls]+.Primer_Brand__MinimalVideoPlayer-module__MinimalVideoPlayer__control___w7dA_{display:none}@media (forced-colors:active){.Primer_Brand__MinimalVideoPlayer-module__MinimalVideoPlayer___s8ncI{border:var(--brand-borderWidth-thin) solid CanvasText}.Primer_Brand__MinimalVideoPlayer-module__MinimalVideoPlayer__control___w7dA_{color:buttontext;background-color:buttonface;border-color:buttontext}.Primer_Brand__MinimalVideoPlayer-module__MinimalVideoPlayer__control___w7dA_:focus-visible{outline-color:highlight}}
@@ -0,0 +1,9 @@
1
+ import './MinimalVideoPlayer.module-Bcv4-Y5D.css';var e = {
2
+ MinimalVideoPlayer: "Primer_Brand__MinimalVideoPlayer-module__MinimalVideoPlayer___s8ncI",
3
+ MinimalVideoPlayer__video: "Primer_Brand__MinimalVideoPlayer-module__MinimalVideoPlayer__video___f5cBj",
4
+ MinimalVideoPlayer__control: "Primer_Brand__MinimalVideoPlayer-module__MinimalVideoPlayer__control___w7dA_"
5
+ };
6
+ //#endregion
7
+ export { e as default };
8
+
9
+ //# sourceMappingURL=MinimalVideoPlayer.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MinimalVideoPlayer.module.js","names":[],"sources":["../../src/MinimalVideoPlayer/MinimalVideoPlayer.module.css"],"sourcesContent":[".MinimalVideoPlayer {\n position: relative;\n width: 100%;\n}\n\n.MinimalVideoPlayer__video {\n display: block;\n width: 100%;\n}\n\n.MinimalVideoPlayer__control {\n position: absolute;\n right: var(--base-size-24);\n bottom: var(--base-size-24);\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--base-size-36);\n height: var(--base-size-36);\n padding: 0;\n color: var(--brand-color-text-muted);\n cursor: pointer;\n background-color: var(--brand-color-canvas-muted);\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-subtle);\n border-radius: var(--brand-borderRadius-full);\n}\n\n.MinimalVideoPlayer__control:focus-visible {\n outline: var(--brand-borderWidth-thick) solid var(--brand-color-focus);\n outline-offset: var(--base-size-2);\n}\n\n/* Progressive enhancement that hides the custom control when native controls are visible. */\n.MinimalVideoPlayer__video[controls] + .MinimalVideoPlayer__control {\n display: none;\n}\n\n@media (forced-colors: active) {\n .MinimalVideoPlayer {\n border: var(--brand-borderWidth-thin) solid CanvasText;\n }\n\n .MinimalVideoPlayer__control {\n color: ButtonText;\n background-color: ButtonFace;\n border-color: ButtonText;\n }\n\n .MinimalVideoPlayer__control:focus-visible {\n outline-color: Highlight;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './MinimalVideoPlayer';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/MinimalVideoPlayer/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { type Ref } from 'react';
2
+ type UseMinimalVideoPlaybackOptions = {
3
+ autoPlay: boolean;
4
+ forwardedRef: Ref<HTMLVideoElement>;
5
+ prefersReducedMotion: boolean;
6
+ };
7
+ export declare function useMinimalVideoPlayback({ autoPlay, forwardedRef, prefersReducedMotion, }: UseMinimalVideoPlaybackOptions): {
8
+ handlePlaybackEnded: () => void;
9
+ handlePlaybackPaused: () => void;
10
+ handlePlaybackStarted: () => void;
11
+ isPlaying: boolean;
12
+ togglePlayback: () => void;
13
+ videoRef: import("react").RefObject<HTMLVideoElement | null>;
14
+ };
15
+ export {};
16
+ //# sourceMappingURL=useMinimalVideoPlayback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMinimalVideoPlayback.d.ts","sourceRoot":"","sources":["../../src/MinimalVideoPlayer/useMinimalVideoPlayback.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,KAAK,GAAG,EAAC,MAAM,OAAO,CAAA;AAIxE,KAAK,8BAA8B,GAAG;IACpC,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACnC,oBAAoB,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,YAAY,EACZ,oBAAoB,GACrB,EAAE,8BAA8B;;;;;;;EA0GhC"}
@@ -0,0 +1,73 @@
1
+ import { useProvidedRefOrCreate as e } from "../hooks/useRef.js";
2
+ import { useCallback as t, useEffect as n, useRef as r, useState as i } from "react";
3
+ //#region src/MinimalVideoPlayer/useMinimalVideoPlayback.ts
4
+ function a({ autoPlay: a, forwardedRef: o, prefersReducedMotion: s }) {
5
+ let c = e(o), l = r(!1), u = r(!1), [d, f] = i(!1), p = t(async () => {
6
+ let e = c.current;
7
+ if (e) try {
8
+ await e.play();
9
+ } catch {
10
+ e.paused && f(!1);
11
+ }
12
+ }, [c]), m = t(() => f(!0), []), h = t(() => f(!1), []), g = t(() => {
13
+ l.current = !1, f(!1);
14
+ }, []);
15
+ return n(() => {
16
+ let e = c.current;
17
+ if (!e) return;
18
+ let t = (t) => {
19
+ if (t) {
20
+ if (l.current) {
21
+ l.current = !1, a && !s && p();
22
+ return;
23
+ }
24
+ if (!u.current && s) {
25
+ u.current = !0;
26
+ return;
27
+ }
28
+ !u.current && a && (u.current = !0, p());
29
+ return;
30
+ }
31
+ e.paused || (l.current = a && !s, e.pause());
32
+ };
33
+ if (typeof IntersectionObserver > "u") {
34
+ t(!0);
35
+ return;
36
+ }
37
+ let n = new IntersectionObserver(([e]) => {
38
+ t(e.intersectionRatio > 0);
39
+ });
40
+ return n.observe(e), () => n.disconnect();
41
+ }, [
42
+ a,
43
+ s,
44
+ p,
45
+ c
46
+ ]), n(() => {
47
+ s && (u.current = !0, l.current = !1, c.current?.pause());
48
+ }, [s, c]), {
49
+ handlePlaybackEnded: g,
50
+ handlePlaybackPaused: h,
51
+ handlePlaybackStarted: m,
52
+ isPlaying: d,
53
+ togglePlayback: t(() => {
54
+ let e = c.current;
55
+ if (e) {
56
+ if (u.current = !0, l.current = !1, d) {
57
+ f(!1), e.pause();
58
+ return;
59
+ }
60
+ p();
61
+ }
62
+ }, [
63
+ d,
64
+ p,
65
+ c
66
+ ]),
67
+ videoRef: c
68
+ };
69
+ }
70
+ //#endregion
71
+ export { a as useMinimalVideoPlayback };
72
+
73
+ //# sourceMappingURL=useMinimalVideoPlayback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMinimalVideoPlayback.js","names":[],"sources":["../../src/MinimalVideoPlayer/useMinimalVideoPlayback.ts"],"sourcesContent":["import {useCallback, useEffect, useRef, useState, type Ref} from 'react'\n\nimport {useProvidedRefOrCreate} from '../hooks/useRef'\n\ntype UseMinimalVideoPlaybackOptions = {\n autoPlay: boolean\n forwardedRef: Ref<HTMLVideoElement>\n prefersReducedMotion: boolean\n}\n\nexport function useMinimalVideoPlayback({\n autoPlay,\n forwardedRef,\n prefersReducedMotion,\n}: UseMinimalVideoPlaybackOptions) {\n const videoRef = useProvidedRefOrCreate<HTMLVideoElement | null>(forwardedRef)\n const pausedByViewportRef = useRef(false)\n const initialAutoPlayHandledRef = useRef(false)\n const [isPlaying, setIsPlaying] = useState(false)\n\n const requestPlayback = useCallback(async () => {\n const video = videoRef.current\n\n if (!video) return\n\n try {\n await video.play()\n } catch {\n if (video.paused) {\n setIsPlaying(false)\n }\n }\n }, [videoRef])\n\n const handlePlaybackStarted = useCallback(() => setIsPlaying(true), [])\n const handlePlaybackPaused = useCallback(() => setIsPlaying(false), [])\n const handlePlaybackEnded = useCallback(() => {\n pausedByViewportRef.current = false\n setIsPlaying(false)\n }, [])\n\n useEffect(() => {\n const video = videoRef.current\n\n if (!video) return\n\n const handleVisibilityChange = (isVisible: boolean) => {\n if (isVisible) {\n if (pausedByViewportRef.current) {\n pausedByViewportRef.current = false\n if (autoPlay && !prefersReducedMotion) {\n requestPlayback()\n }\n return\n }\n\n if (!initialAutoPlayHandledRef.current && prefersReducedMotion) {\n initialAutoPlayHandledRef.current = true\n return\n }\n\n if (!initialAutoPlayHandledRef.current && autoPlay) {\n initialAutoPlayHandledRef.current = true\n requestPlayback()\n }\n return\n }\n\n if (!video.paused) {\n pausedByViewportRef.current = autoPlay && !prefersReducedMotion\n video.pause()\n }\n }\n\n if (typeof IntersectionObserver === 'undefined') {\n handleVisibilityChange(true)\n return\n }\n\n const observer = new IntersectionObserver(([entry]) => {\n handleVisibilityChange(entry.intersectionRatio > 0)\n })\n\n observer.observe(video)\n return () => observer.disconnect()\n }, [autoPlay, prefersReducedMotion, requestPlayback, videoRef])\n\n useEffect(() => {\n if (!prefersReducedMotion) return\n\n initialAutoPlayHandledRef.current = true\n pausedByViewportRef.current = false\n videoRef.current?.pause()\n }, [prefersReducedMotion, videoRef])\n\n const togglePlayback = useCallback(() => {\n const video = videoRef.current\n\n if (!video) return\n\n initialAutoPlayHandledRef.current = true\n pausedByViewportRef.current = false\n\n if (isPlaying) {\n setIsPlaying(false)\n video.pause()\n return\n }\n\n requestPlayback()\n }, [isPlaying, requestPlayback, videoRef])\n\n return {\n handlePlaybackEnded,\n handlePlaybackPaused,\n handlePlaybackStarted,\n isPlaying,\n togglePlayback,\n videoRef,\n }\n}\n"],"mappings":";;;AAUA,SAAgB,EAAwB,EACtC,aACA,iBACA,2BACiC;CACjC,IAAM,IAAW,EAAgD,EAAa,EACxE,IAAsB,EAAO,GAAM,EACnC,IAA4B,EAAO,GAAM,EACzC,CAAC,GAAW,KAAgB,EAAS,GAAM,EAE3C,IAAkB,EAAY,YAAY;EAC9C,IAAM,IAAQ,EAAS;AAElB,QAEL,KAAI;AACF,SAAM,EAAM,MAAM;UACZ;AACN,GAAI,EAAM,UACR,EAAa,GAAM;;IAGtB,CAAC,EAAS,CAAC,EAER,IAAwB,QAAkB,EAAa,GAAK,EAAE,EAAE,CAAC,EACjE,IAAuB,QAAkB,EAAa,GAAM,EAAE,EAAE,CAAC,EACjE,IAAsB,QAAkB;AAE5C,EADA,EAAoB,UAAU,IAC9B,EAAa,GAAM;IAClB,EAAE,CAAC;AAyEN,QAvEA,QAAgB;EACd,IAAM,IAAQ,EAAS;AAEvB,MAAI,CAAC,EAAO;EAEZ,IAAM,KAA0B,MAAuB;AACrD,OAAI,GAAW;AACb,QAAI,EAAoB,SAAS;AAE/B,KADA,EAAoB,UAAU,IAC1B,KAAY,CAAC,KACf,GAAiB;AAEnB;;AAGF,QAAI,CAAC,EAA0B,WAAW,GAAsB;AAC9D,OAA0B,UAAU;AACpC;;AAGF,IAAI,CAAC,EAA0B,WAAW,MACxC,EAA0B,UAAU,IACpC,GAAiB;AAEnB;;AAGF,GAAK,EAAM,WACT,EAAoB,UAAU,KAAY,CAAC,GAC3C,EAAM,OAAO;;AAIjB,MAAI,OAAO,uBAAyB,KAAa;AAC/C,KAAuB,GAAK;AAC5B;;EAGF,IAAM,IAAW,IAAI,sBAAsB,CAAC,OAAW;AACrD,KAAuB,EAAM,oBAAoB,EAAE;IACnD;AAGF,SADA,EAAS,QAAQ,EAAM,QACV,EAAS,YAAY;IACjC;EAAC;EAAU;EAAsB;EAAiB;EAAS,CAAC,EAE/D,QAAgB;AACT,QAEL,EAA0B,UAAU,IACpC,EAAoB,UAAU,IAC9B,EAAS,SAAS,OAAO;IACxB,CAAC,GAAsB,EAAS,CAAC,EAmB7B;EACL;EACA;EACA;EACA;EACA,gBAtBqB,QAAkB;GACvC,IAAM,IAAQ,EAAS;AAElB,UAKL;QAHA,EAA0B,UAAU,IACpC,EAAoB,UAAU,IAE1B,GAAW;AAEb,KADA,EAAa,GAAM,EACnB,EAAM,OAAO;AACb;;AAGF,OAAiB;;KAChB;GAAC;GAAW;GAAiB;GAAS,CAOvC;EACA;EACD"}
@@ -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;AAiFnC;;;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,2CAE5C;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;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,2CAE5C;AAcD;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;CAMtB,CAAA"}
@@ -27,28 +27,32 @@ function g({ quoteMarkColor: t, animate: n, className: i, children: a, variant:
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
28
  return /* @__PURE__ */ d("figure", {
29
29
  ref: h,
30
- className: e(g, s.Testimonial, s[`Testimonial--variant-${o}`], f && s[`Testimonial--size-${f}`], l && s["Testimonial--border"], i),
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),
31
31
  style: {
32
32
  ..._,
33
33
  ...p,
34
34
  "--testimonial-accent-color": v
35
35
  },
36
36
  ...m,
37
- children: [/* @__PURE__ */ d("div", {
38
- className: s.Testimonial__quoteWrapper,
39
- children: [
40
- b,
41
- E,
42
- O
43
- ]
44
- }), /* @__PURE__ */ d("div", {
45
- className: s.Testimonial__media,
46
- children: [
47
- k,
48
- A,
49
- j
50
- ]
51
- })]
37
+ children: [
38
+ /* @__PURE__ */ d("div", {
39
+ className: s.Testimonial__quoteWrapper,
40
+ children: [
41
+ b,
42
+ E,
43
+ o !== "expressive" && O
44
+ ]
45
+ }),
46
+ /* @__PURE__ */ d("div", {
47
+ className: s.Testimonial__media,
48
+ children: [
49
+ k,
50
+ A,
51
+ j
52
+ ]
53
+ }),
54
+ o === "expressive" && O
55
+ ]
52
56
  });
53
57
  }
54
58
  var _ = l(g);
@@ -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 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 {actionChild}\n </div>\n <div className={styles['Testimonial__media']}>\n {avatarChild}\n {logoChild}\n {nameChild}\n </div>\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,EAAiB,EAC7D,IAAwB,EAA2B,IAEnD,IAAsB;CAAC;CAAU;CAAW;CAAW;CAAa,EAEpE,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,EAAQ,EAElF,IAAyB,MAAmB,MAAY,eAAe,UAAU,YAEjF,IACJ,kBAAC,OAAD;EACE,eAAY;EACZ,WAAW,EACT,EAAO,wBACP,EAAO,2BAA2B,MAClC,MAAY,gBAAgB,EAAO,yCACpC;YAED,kBAAC,QAAD;GAAM,WAAW,EAAO;aAAgC;GAAc,CAAA;EAClE,CAAA,EAGF,IAAgB,EAAM,SAAS,QAAQ,EAAS,EAChD,KAAa,MACjB,EAAc,MAAK,MAAS,EAAM,eAAe,EAAM,IAAI,EAAM,SAAS,EAAK,EAE3E,IAAa,EAAU,EAAM,EAC7B,IAAc,EAAU,EAAM,EAC9B,IAAc,EAAU,EAAO,EAC/B,IAAY,EAAU,EAAK,EAC3B,IAAY,EAAU,EAAK;AAEjC,QACE,kBAAC,UAAD;EACO;EACL,WAAW,EACT,GACA,EAAO,aACP,EAAO,wBAAwB,MAC/B,KAAQ,EAAO,qBAAqB,MACpC,KAAa,EAAO,wBACpB,EACD;EACD,OAAO;GACL,GAAG;GACH,GAAG;GACF,8BAAsD;GACxD;EACD,GAAI;YAfN,CAiBE,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB;IACG;IACA;IACA;IACG;MACN,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB;IACG;IACA;IACA;IACG;KACC;;;AAIb,IAAM,IAAO,EAAW,EAAgB;AAQxC,SAAS,EAAU,EAAC,aAAU,gBAAwB,GAAK;AACzD,QACE,kBAAC,cAAD;EAAiB;YACf,kBAAC,GAAD;GAAM,WAAW,EAAK,EAAO,sBAAsB,EAAU;GAAG;GAAgB,CAAA;EACrE,CAAA;;AAIjB,IAAM,IAAQ,EAAW,EAAU;AAWnC,SAAS,EAAM,EAAC,aAAU,cAAW,eAAsB,GAAK;AAC9D,QACE,kBAAC,cAAD;EAAiB;EAAK,WAAW,EAAK,EAAO,wBAAwB,EAAU;YAA/E,CACE,kBAAC,GAAD;GAAM,MAAK;GAAM,WAAW,EAAK,EAAO,oBAAoB;GAAE,MAAK;GAChE;GACI,CAAA,EACN,KACC,kBAAC,GAAD;GAAM,MAAK;GAAM,WAAW,EAAK,EAAO,wBAAwB;GAAE,SAAQ;aACvE;GACI,CAAA,CAEE;;;AAIjB,IAAM,IAAO,EAAW,EAAM;AAW9B,SAAS,EAAM,EAAC,aAAU,GAAG,KAAkB,GAAK;AAClD,QACE,kBAAC,OAAD;EAAK,WAAW,EAAO;EAAqB,GAAI;YAC7C,EAAM,SAAS,IAAI,IAAU,MAAS;AACrC,OAAI,EAAM,eAAe,EAAM,IACzB,EAAM,SAAS,OAAO;IACxB,IAAM,IAAa,GACb,IAA2C;KAC/C,WAAW,EAAK,EAAO,2BAA2B,EAAW,MAAM,UAAU;KACxE;KACN;AAED,WAAO,EAAM,aAAa,GAAY,EAAW;;IAGrD;EACE,CAAA;;AAIV,IAAM,IAAO,EAAW,EAAM;AAO9B,SAAS,EAAQ,EAAC,SAAM,GAAG,KAAoB;AAC7C,QAAO,kBAAC,GAAD;EAAY,WAAW,EAAK,EAAO,sBAAsB;EAAE,MAAM;EAAI,GAAI;EAAQ,CAAA;;AAG1F,IAAM,IAAS;AAMf,SAAS,EAAU,EAAC,cAAW,GAAG,KAAkB,GAAM;AACxD,QAAO,kBAAC,GAAD;EAAM,WAAW,EAAK,EAAO,qBAAqB,EAAU;EAAE,GAAI;EAAM,MAAK;EAAS,SAAQ;EAAW,CAAA;;AAGlH,IAAM,IAAQ,EAAW,EAAU,EAMtB,IAAc,OAAO,OAAO,GAAM;CAC7C;CACA;CACA;CACA;CACA,MAAM;CACP,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'\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,EAAiB,EAC7D,IAAwB,EAA2B,IAEnD,IAAsB;CAAC;CAAU;CAAW;CAAW;CAAa,EAEpE,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,EAAQ,EAElF,IAAyB,MAAmB,MAAY,eAAe,UAAU,YAEjF,IACJ,kBAAC,OAAD;EACE,eAAY;EACZ,WAAW,EACT,EAAO,wBACP,EAAO,2BAA2B,MAClC,MAAY,gBAAgB,EAAO,yCACpC;YAED,kBAAC,QAAD;GAAM,WAAW,EAAO;aAAgC;GAAc,CAAA;EAClE,CAAA,EAGF,IAAgB,EAAM,SAAS,QAAQ,EAAS,EAChD,KAAa,MACjB,EAAc,MAAK,MAAS,EAAM,eAAe,EAAM,IAAI,EAAM,SAAS,EAAK,EAE3E,IAAa,EAAU,EAAM,EAC7B,IAAc,EAAU,EAAM,EAC9B,IAAc,EAAU,EAAO,EAC/B,IAAY,EAAU,EAAK,EAC3B,IAAY,EAAU,EAAK;AAEjC,QACE,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,EACD;EACD,OAAO;GACL,GAAG;GACH,GAAG;GACF,8BAAsD;GACxD;EACD,GAAI;YAhBN;GAkBE,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB;KACG;KACA;KACA,MAAY,gBAAgB;KACzB;;GACN,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB;KACG;KACA;KACA;KACG;;GACL,MAAY,gBAAgB;GACtB;;;AAIb,IAAM,IAAO,EAAW,EAAgB;AAQxC,SAAS,EAAU,EAAC,aAAU,gBAAwB,GAAK;AACzD,QACE,kBAAC,cAAD;EAAiB;YACf,kBAAC,GAAD;GAAM,WAAW,EAAK,EAAO,sBAAsB,EAAU;GAAG;GAAgB,CAAA;EACrE,CAAA;;AAIjB,IAAM,IAAQ,EAAW,EAAU;AAWnC,SAAS,EAAM,EAAC,aAAU,cAAW,eAAsB,GAAK;AAC9D,QACE,kBAAC,cAAD;EAAiB;EAAK,WAAW,EAAK,EAAO,wBAAwB,EAAU;YAA/E,CACE,kBAAC,GAAD;GAAM,MAAK;GAAM,WAAW,EAAK,EAAO,oBAAoB;GAAE,MAAK;GAChE;GACI,CAAA,EACN,KACC,kBAAC,GAAD;GAAM,MAAK;GAAM,WAAW,EAAK,EAAO,wBAAwB;GAAE,SAAQ;aACvE;GACI,CAAA,CAEE;;;AAIjB,IAAM,IAAO,EAAW,EAAM;AAW9B,SAAS,EAAM,EAAC,aAAU,GAAG,KAAkB,GAAK;AAClD,QACE,kBAAC,OAAD;EAAK,WAAW,EAAO;EAAqB,GAAI;YAC7C,EAAM,SAAS,IAAI,IAAU,MAAS;AACrC,OAAI,EAAM,eAAe,EAAM,IACzB,EAAM,SAAS,OAAO;IACxB,IAAM,IAAa,GACb,IAA2C;KAC/C,WAAW,EAAK,EAAO,2BAA2B,EAAW,MAAM,UAAU;KACxE;KACN;AAED,WAAO,EAAM,aAAa,GAAY,EAAW;;IAGrD;EACE,CAAA;;AAIV,IAAM,IAAO,EAAW,EAAM;AAO9B,SAAS,EAAQ,EAAC,SAAM,GAAG,KAAoB;AAC7C,QAAO,kBAAC,GAAD;EAAY,WAAW,EAAK,EAAO,sBAAsB;EAAE,MAAM;EAAI,GAAI;EAAQ,CAAA;;AAG1F,IAAM,IAAS;AAMf,SAAS,EAAU,EAAC,cAAW,GAAG,KAAkB,GAAM;AACxD,QAAO,kBAAC,GAAD;EAAM,WAAW,EAAK,EAAO,qBAAqB,EAAU;EAAE,GAAI;EAAM,MAAK;EAAS,SAAQ;EAAW,CAAA;;AAGlH,IAAM,IAAQ,EAAW,EAAU,EAMtB,IAAc,OAAO,OAAO,GAAM;CAC7C;CACA;CACA;CACA;CACA,MAAM;CACP,CAAC"}
@@ -0,0 +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,4 +1,4 @@
1
- import './Testimonial.module-BEBpUSD7.css';var e = {
1
+ import './Testimonial.module-BEV0y2jl.css';var e = {
2
2
  Testimonial: "Primer_Brand__Testimonial-module__Testimonial___kxB6R",
3
3
  "Testimonial--variant-subtle": "Primer_Brand__Testimonial-module__Testimonial--variant-subtle___rmjBe",
4
4
  "Testimonial--variant-default": "Primer_Brand__Testimonial-module__Testimonial--variant-default___uNm5S",
@@ -15,6 +15,8 @@ import './Testimonial.module-BEBpUSD7.css';var e = {
15
15
  "Testimonial-from": "Primer_Brand__Testimonial-module__Testimonial-from___XLpqj",
16
16
  "Testimonial--variant-expressive": "Primer_Brand__Testimonial-module__Testimonial--variant-expressive___J1PIY",
17
17
  Testimonial__quoteWrapper: "Primer_Brand__Testimonial-module__Testimonial__quoteWrapper___vcgUf",
18
+ "Testimonial-position": "Primer_Brand__Testimonial-module__Testimonial-position____jQ17",
19
+ "Testimonial--hasLink": "Primer_Brand__Testimonial-module__Testimonial--hasLink___U6yF2",
18
20
  "Testimonial-link": "Primer_Brand__Testimonial-module__Testimonial-link___kK8cZ",
19
21
  "Testimonial__quoteMark--default": "Primer_Brand__Testimonial-module__Testimonial__quoteMark--default___wRFiA",
20
22
  "Testimonial__quoteMark--blue": "Primer_Brand__Testimonial-module__Testimonial__quoteMark--blue___65lEG",